private void writeExecutable(ExecutableRuleType executableRuleType, ExecutableRule executableRule) { Executable<?> executable = executableRule.getExecutable(); SourceType sourceType = new SourceType(); sourceType.setLanguage(executable.getLanguage()); sourceType.setValue(executable.getSource().toString()); executableRuleType.setSource(sourceType); }
@Override public <T extends ExecutableRule<?>> boolean accepts(T executableRule) { return executableRule.getExecutable() instanceof SourceExecutable && String.class.equals(executableRule.getExecutable().getType()); }
@Override public <T extends ExecutableRule<?>> Result<T> execute(T executableRule, Map<String, Object> parameters, Severity severity, AnalyzerContext context) throws RuleException { Executable<String> executable = executableRule.getExecutable(); String cypher = executable.getSource(); return execute(cypher, executableRule, parameters, severity, context); }
private <T extends ExecutableRule> Result<T> execute(T executableRule, Severity severity) throws RuleException { Map<String, Object> ruleParameters = getRuleParameters(executableRule); Executable<?> executable = executableRule.getExecutable(); Collection<RuleInterpreterPlugin> languagePlugins = ruleInterpreterPlugins.get(executable.getLanguage()); if (languagePlugins == null) { throw new RuleException("Could not determine plugin to execute " + executableRule); } for (RuleInterpreterPlugin languagePlugin : languagePlugins) { if (languagePlugin.accepts(executableRule)) { Result<T> result = languagePlugin.execute(executableRule, ruleParameters, severity, analyzerContext); if (result != null) { return result; } } } throw new RuleException("No plugin for language '" + executable.getLanguage() + "' returned a result for " + executableRule); }
throws RuleException { Executable<String> executable = executableRule.getExecutable(); String language = executable.getLanguage(); ScriptEngine scriptEngine = scriptEngineManager.getEngineByName(language); if (scriptEngine == null) { scriptResult = scriptEngine.eval(executable.getSource()); } catch (ScriptException e) { throw new RuleException("Cannot execute script.", e);