/* 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.scripting.secure.impl;
import java.util.Map;
import org.activiti.engine.delegate.DelegateExecution;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.VariableScope;
import org.mozilla.javascript.Scriptable;
/**
* @author Joram Barrez
* @author Bassam Al-Sarori
*/
public class SecureScriptScope implements Scriptable {
private static final String KEYWORD_EXECUTION = "execution";
private static final String KEYWORD_TASK = "task";
protected VariableScope variableScope;
protected Map<Object, Object> beans;
public SecureScriptScope(VariableScope variableScope, Map<Object, Object> beans) {
this.variableScope = variableScope;
this.beans = beans;
}
@Override
public String getClassName() {
return variableScope.getClass().getName();
}
@Override
public Object get(String s, Scriptable scriptable) {
if (KEYWORD_EXECUTION.equals(s) && variableScope instanceof DelegateExecution) {
return variableScope;
} else if (KEYWORD_TASK.equals(s) && variableScope instanceof DelegateTask) {
return variableScope;
} else if (variableScope.hasVariable(s)) {
return variableScope.getVariable(s);
} else if (beans != null) {
return beans.get(s);
}
return null;
}
@Override
public Object get(int i, Scriptable scriptable) {
return null;
}
@Override
public boolean has(String s, Scriptable scriptable) {
return variableScope.hasVariable(s);
}
@Override
public boolean has(int i, Scriptable scriptable) {
return false;
}
@Override
public void put(String s, Scriptable scriptable, Object o) {
}
@Override
public void put(int i, Scriptable scriptable, Object o) {
}
@Override
public void delete(String s) {
}
@Override
public void delete(int i) {
}
@Override
public Scriptable getPrototype() {
return null;
}
@Override
public void setPrototype(Scriptable scriptable) {
}
@Override
public Scriptable getParentScope() {
return null;
}
@Override
public void setParentScope(Scriptable scriptable) {
}
@Override
public Object[] getIds() {
return null;
}
@Override
public Object getDefaultValue(Class<?> aClass) {
return null;
}
@Override
public boolean hasInstance(Scriptable scriptable) {
return false;
}
}