/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.apache.ode.bpel.runtime; import org.apache.ode.bpel.evt.EventContext; import org.apache.ode.bpel.o.OScope; import org.apache.ode.bpel.o.OScope.Variable; import org.apache.ode.utils.DOMUtils; import org.w3c.dom.Node; import java.util.Iterator; /** * Bpel Event Context Implementation. * @author Raja Balasubramanian */ public class EventContextImpl implements EventContext { /** * Scope Object used in this scope instance. */ private OScope __scope; /** * Scope Instance ID */ private Long __scopeInstanceId; /** * BPEL Runtime Context */ private BpelRuntimeContext __runtimeContext; /** * Constructor * @param __scope Scope Object used in this scope instance. * @param __scopeInstanceId Scope Instance ID * @param __runtimeContext BPEL Runtime Context */ public EventContextImpl(OScope __scope, Long __scopeInstanceId, BpelRuntimeContext __runtimeContext) { this.__scope = __scope; this.__scopeInstanceId = __scopeInstanceId; this.__runtimeContext = __runtimeContext; } /** * Get Variable data for the given variable name, for this scope instance * @param varName Variable Name * @return DOM Node as XML String. If no value exists or variable not initialized, NULL will be returnrd. */ public String getVariableData(String varName) { String value = null; try { Variable var = __scope.getVisibleVariable(varName); VariableInstance varInstance = new VariableInstance(__scopeInstanceId, var); Node varNode = __runtimeContext.readVariable(varInstance.scopeInstance, varInstance.declaration.name, false); value = DOMUtils.domToString(varNode); } catch(Throwable e) { //Don't throw any exception back to the caller. Just return null as value. } return value; } /** * Get All variable names used in this scope Instance * @return Array of Variable Names. If no variable(s) exists, null will be returned. */ public String[] getVariableNames() { String[] __varNames = null; try { int varSize = __scope.variables.size(); __varNames = new String[varSize]; Iterator<String> _varNames = __scope.variables.keySet().iterator(); int i = 0; while(_varNames.hasNext()) { __varNames[i++] = _varNames.next(); } } catch(Throwable e) { //Don't throw any exception back to the caller. Just return null as value. } return __varNames; } /** * Get ScopeInstanceId * @return scopeInstanceId */ public Long getScopeInstanceId() { return __scopeInstanceId; } }