1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 package org.apache.commons.scxml2.env.javascript; 18 19 import java.io.Serializable; 20 21 import org.apache.commons.scxml2.Builtin; 22 import org.apache.commons.scxml2.Context; 23 import org.apache.commons.scxml2.SCXMLExpressionException; 24 import org.apache.commons.scxml2.XPathBuiltin; 25 26 /** 27 * Custom Javascript engine function providing the SCXML In() predicate and the Commons SCXML extensions 28 * for Data() and Location() to support XPath datamodel access. 29 */ 30 public class JSFunctions implements Serializable { 31 32 /** 33 * The context currently in use for evaluation. 34 */ 35 private Context ctx; 36 37 /** 38 * Creates a new instance, wraps the context. 39 * @param ctx the context in use 40 */ 41 public JSFunctions(Context ctx) { 42 this.ctx = ctx; 43 } 44 45 /** 46 * Provides the SCXML standard In() predicate for SCXML documents. 47 * @param state The State ID to compare with 48 * @return true if this state is currently active 49 */ 50 public boolean In(final String state) { 51 return Builtin.isMember(ctx, state); 52 } 53 54 /** 55 * Provides the Commons SCXML Data() predicate extension for SCXML documents. 56 * @param expression the XPath expression 57 * @return the data matching the expression 58 */ 59 public Object Data(String expression) throws SCXMLExpressionException { 60 return XPathBuiltin.eval(ctx, expression); 61 } 62 63 /** 64 * Provides the Commons SCXML Location() predicate extension for SCXML documents. 65 * @param expression the XPath expression 66 * @return the location matching the expression 67 */ 68 public Object Location(String expression) throws SCXMLExpressionException { 69 return XPathBuiltin.evalLocation(ctx, expression); 70 } 71 }