/* Licensed 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.activiti.engine.impl.cfg; import java.util.Map; import org.activiti.engine.delegate.VariableScope; import org.activiti.engine.impl.el.ExpressionManager; import org.activiti.engine.impl.el.VariableScopeElResolver; import org.activiti.engine.impl.javax.el.ArrayELResolver; import org.activiti.engine.impl.javax.el.BeanELResolver; import org.activiti.engine.impl.javax.el.CompositeELResolver; import org.activiti.engine.impl.javax.el.ELResolver; import org.activiti.engine.impl.javax.el.ListELResolver; import org.activiti.engine.impl.javax.el.MapELResolver; /** * {@link ExpressionManager} that exposes the full application-context or a limited set * of beans in expressions. * * @author biaoping.yin */ public class BBossExpressionManager extends ExpressionManager { protected Map<Object, Object> beans; /** * @param applicationContext * the applicationContext to use. Ignored when 'beans' parameter is * not null. * @param beans * a map of custom beans to expose. If null, all beans in the * application-context will be exposed. */ public BBossExpressionManager( Map<Object, Object> beans) { this.beans = beans; } @Override protected ELResolver createElResolver(VariableScope variableScope) { CompositeELResolver compositeElResolver = new CompositeELResolver(); compositeElResolver.add(new VariableScopeElResolver(variableScope)); if(beans != null) { // Only expose limited set of beans in expressions compositeElResolver.add(new ReadOnlyMapELResolver(beans)); } compositeElResolver.add(new ArrayELResolver()); compositeElResolver.add(new ListELResolver()); compositeElResolver.add(new MapELResolver()); compositeElResolver.add(new BeanELResolver()); return compositeElResolver; } }