/******************************************************************************* * Copyright (c) 2011 Subgraph. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Subgraph - initial API and implementation ******************************************************************************/ package com.subgraph.vega.impl.scanner.modules.scripting; import org.mozilla.javascript.Context; import org.mozilla.javascript.Function; import org.mozilla.javascript.Scriptable; import com.subgraph.vega.api.scanner.modules.ModuleScriptType; public class ScriptedModule { private final ScriptFile scriptFile; private String categoryName; private String moduleName; private ModuleScriptType moduleType; private Function runFunction; private boolean isDisabledInScript; private boolean isDefaultEnabled; public ScriptedModule(ScriptFile scriptFile, String category, ModuleValidator validator) { this.scriptFile = scriptFile; updateFromValidator(validator); categoryName = category; } public ScriptedModule(ScriptFile scriptFile, ModuleValidator validator) { this.scriptFile = scriptFile; updateFromValidator(validator); } public void updateFromValidator(ModuleValidator validator) { categoryName = validator.getCategoryName(); moduleName = validator.getName(); moduleType = validator.getType(); runFunction = validator.getRunFunction(); isDisabledInScript = validator.isDisabled(); isDefaultEnabled = validator.isDefaultEnabled(); } public Scriptable createInstanceScope(Context cx) { Scriptable scope = cx.newObject(scriptFile.getCompiledScript()); scope.setPrototype(scriptFile.getCompiledScript()); scope.setParentScope(null); return scope; } public void runModule(Context cx, Scriptable instanceScope) { runModule(cx, instanceScope, new Object[0]); } public void runModule(Context cx, Scriptable instanceScope, Object[] arguments) { runFunction.call(cx, instanceScope, instanceScope, arguments); } public ScriptFile getScriptFile() { return scriptFile; } public String getCategoryName() { return categoryName; } public String getModuleName() { return moduleName; } public ModuleScriptType getModuleType() { return moduleType; } public Scriptable getModuleScope() { return scriptFile.getCompiledScript(); } public boolean isDefaultEnabled() { return isDefaultEnabled; } public boolean isDisabled() { return isDisabledInScript; } }