@Override public <T extends ExecutableRule<?>> boolean accepts(T executableRule) { return executableRule.getExecutable() instanceof SourceExecutable; }
@Override public <T extends ExecutableRule<?>> boolean accepts(T executableRule) { return executableRule.getExecutable() instanceof SourceExecutable; }
@Override public <T extends ExecutableRule<?>> boolean accepts(T executableRule) { return executableRule.getExecutable() instanceof SourceExecutable && String.class.equals(executableRule.getExecutable().getType()); }
private String getCypher(ExecutableRule executableRule) { Executable executable = executableRule.getExecutable(); if (executable instanceof CypherExecutable) { return ((CypherExecutable) executable).getStatement(); } return null; } }
@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); }
@Override public <T extends ExecutableRule<?>> Result<T> execute(T executableRule, Map<String, Object> ruleParameters, Severity severity, AnalyzerContext context) throws RuleException { Executable<String> executable = executableRule.getExecutable(); String language = executable.getLanguage(); ScriptEngine scriptEngine = scriptEngineManager.getEngineByName(language);
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<?>> Result<T> execute(T executableRule, Map<String, Object> ruleParameters, Severity severity, AnalyzerContext context) throws RuleException { SourceExecutable<String> executable = (SourceExecutable<String>) executableRule.getExecutable(); String source = executable.getSource(); Constructor c = new Constructor(YamlRuleSource.class); c.setPropertyUtils(new PropertyUtils() { @Override public Property getProperty(Class<? extends Object> type, String name) { return super.getProperty(type, LOWER_HYPHEN.to(LOWER_CAMEL, name)); } }); YamlRuleSource yamlRuleSource = new Yaml(c).loadAs(source, YamlRuleSource.class); String javaRuleClass = yamlRuleSource.getJavaRule(); if (javaRuleClass == null) { throw new RuleException("'java-rule-class' is required."); } JavaRule javaRule = getJavaRule(javaRuleClass); return javaRule.execute(executableRule, yamlRuleSource.getConfiguration(), ruleParameters, 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); }