001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017: package org.apache.commons.scxml.model;
018:
019: import java.util.Collection;
020:
021: import org.apache.commons.scxml.Context;
022: import org.apache.commons.scxml.ErrorReporter;
023: import org.apache.commons.scxml.Evaluator;
024: import org.apache.commons.scxml.EventDispatcher;
025: import org.apache.commons.scxml.SCInstance;
026: import org.apache.commons.scxml.SCXMLExpressionException;
027:
028: /**
029: * The class in this SCXML object model that corresponds to the
030: * <log> SCXML element.
031: *
032: */
033: public class Log extends Action {
034:
035: /**
036: * Serial version UID.
037: */
038: private static final long serialVersionUID = 1L;
039:
040: /**
041: * An expression evaluating to a string to be logged.
042: */
043: private String expr;
044:
045: /**
046: * An expression which returns string which may be used, for example,
047: * to indicate the purpose of the log.
048: */
049: private String label;
050:
051: /**
052: * Constructor.
053: */
054: public Log() {
055: super ();
056: }
057:
058: /**
059: * Get the log expression.
060: *
061: * @return Returns the expression.
062: */
063: public final String getExpr() {
064: return expr;
065: }
066:
067: /**
068: * Set the log expression.
069: *
070: * @param expr The expr to set.
071: */
072: public final void setExpr(final String expr) {
073: this .expr = expr;
074: }
075:
076: /**
077: * Get the log label.
078: *
079: * @return Returns the label.
080: */
081: public final String getLabel() {
082: return label;
083: }
084:
085: /**
086: * Set the log label.
087: *
088: * @param label The label to set.
089: */
090: public final void setLabel(final String label) {
091: this .label = label;
092: }
093:
094: /**
095: * {@inheritDoc}
096: */
097: public void execute(final EventDispatcher evtDispatcher,
098: final ErrorReporter errRep, final SCInstance scInstance,
099: final org.apache.commons.logging.Log appLog,
100: final Collection derivedEvents) throws ModelException,
101: SCXMLExpressionException {
102: Context ctx = scInstance.getContext(getParentState());
103: Evaluator eval = scInstance.getEvaluator();
104: ctx.setLocal(getNamespacesKey(), getNamespaces());
105: appLog
106: .info(label + ": "
107: + String.valueOf(eval.eval(ctx, expr)));
108: ctx.setLocal(getNamespacesKey(), null);
109: }
110: }
|