@Override public Object getInstance(ObjectModel model, ClassLoader cl, Map<String, Object> contextParams) { Object instance = null; InternalRuntimeManager manager = null; if (contextParams.containsKey("runtimeManager")) { manager = (InternalRuntimeManager) contextParams.get("runtimeManager"); instance = manager.getCacheManager().get(model.getIdentifier()); if (instance != null) { return instance; } } ParserConfiguration config = new ParserConfiguration(); config.setClassLoader(cl); ParserContext ctx = new ParserContext(config); if (contextParams != null) { for (Map.Entry<String, Object> entry : contextParams.entrySet()) { ctx.addVariable(entry.getKey(), entry.getValue().getClass()); } } Object compiledExpression = MVEL.compileExpression(model.getIdentifier(), ctx); instance = MVELSafeHelper.getEvaluator().executeExpression( compiledExpression, contextParams ); if (manager != null && instance instanceof Cacheable) { manager.getCacheManager().add(model.getIdentifier(), instance); } return instance; }
@Override public void addVariable(String name, Class type, boolean failIfNewAssignment) { if ((parent.variables != null && parent.variables.containsKey(name)) || (parent.inputs != null && parent.inputs.containsKey(name))) { this.variablesEscape = true; } super.addVariable(name, type, failIfNewAssignment); }
@Override public void addVariable(String name, Class type, boolean failIfNewAssignment) { if ((parent.variables != null && parent.variables.containsKey(name)) || (parent.inputs != null && parent.inputs.containsKey(name))) { this.variablesEscape = true; } super.addVariable(name, type, failIfNewAssignment); }
@Override public void addVariable(String name, Class type) { if ((parent.variables != null && parent.variables.containsKey(name)) || (parent.inputs != null && parent.inputs.containsKey(name))) { this.variablesEscape = true; } super.addVariable(name, type); }
@Override public void addVariable(String name, Class type) { if ((parent.variables != null && parent.variables.containsKey(name)) || (parent.inputs != null && parent.inputs.containsKey(name))) { this.variablesEscape = true; } super.addVariable(name, type); }
public DeclTypedVarNode(String name, char[] expr, int start, int offset, Class type, int fields, ParserContext pCtx) { super(pCtx); this.egressType = type; checkNameSafety(this.name = name); this.expr = expr; this.start = start; this.offset = offset; if ((fields & COMPILE_IMMEDIATE) != 0) { pCtx.addVariable(name, egressType, true); } }
public void addVariables(Map<String, Class> variables) { if (variables == null) return; initializeTables(); for (Map.Entry<String, Class> entry : variables.entrySet()) { addVariable(entry.getKey(), entry.getValue()); } }
public void addVariables(Map<String, Class> variables) { if (variables == null) return; initializeTables(); for (Map.Entry<String, Class> entry : variables.entrySet()) { addVariable(entry.getKey(), entry.getValue()); } }
public void addVariables(Map<String, Class> variables) { if (variables == null) return; initializeTables(); for (Map.Entry<String, Class> entry : variables.entrySet()) { addVariable(entry.getKey(), entry.getValue()); } }
public DeclTypedVarNode(String name, char[] expr, int start, int offset, Class type, int fields, ParserContext pCtx) { super(pCtx); this.egressType = type; checkNameSafety(this.name = name); this.expr = expr; this.start = start; this.offset = offset; if ((fields & COMPILE_IMMEDIATE) != 0) { pCtx.addVariable(name, egressType, true); } }
public DeclProtoVarNode(String name, Proto type, int fields, ParserContext pCtx) { super(pCtx); this.egressType = Proto.ProtoInstance.class; checkNameSafety(this.name = name); if ((fields & COMPILE_IMMEDIATE) != 0) { pCtx.addVariable(name, egressType, true); } }
public DeclProtoVarNode(String name, Proto type, int fields, ParserContext pCtx) { super(pCtx); this.egressType = Proto.ProtoInstance.class; checkNameSafety(this.name = name); if ((fields & COMPILE_IMMEDIATE) != 0) { pCtx.addVariable(name, egressType, true); } }
public DeclProtoVarNode(String name, Proto type, int fields, ParserContext pCtx) { this.egressType = Proto.ProtoInstance.class; checkNameSafety(this.name = name); if ((fields & COMPILE_IMMEDIATE) != 0) { pCtx.addVariable(name, egressType, true); } }
public DeclTypedVarNode(String name, Class type, int fields, ParserContext pCtx) { this.egressType = type; checkNameSafety(this.name = name); if ((fields & COMPILE_IMMEDIATE) != 0) { pCtx.addVariable(name, egressType, true); } }
public TypedVarNode(char[] expr, int start, int offset, int fields, Class type, ParserContext pCtx) { super(pCtx); this.egressType = type; this.fields = fields; this.expr = expr; this.start = start; this.offset = offset; int assignStart; if ((assignStart = find(this.expr = expr, start, offset, '=')) != -1) { checkNameSafety(name = createStringTrimmed(expr, start, assignStart - start)); this.offset -= (assignStart - start); this.start = assignStart + 1; if (((fields |= ASSIGN) & COMPILE_IMMEDIATE) != 0) { statement = (ExecutableStatement) subCompileExpression(expr, this.start, this.offset, pCtx); } } else { checkNameSafety(name = new String(expr, start, offset)); } if ((fields & COMPILE_IMMEDIATE) != 0) { Class x = pCtx.getVarOrInputType(name); if (x != null && x != Object.class && !x.isAssignableFrom(egressType)) { throw new RuntimeException("statically-typed variable already defined in scope: " + name); } pCtx.addVariable(name, egressType, false); } }
public TypedVarNode(char[] expr, int start, int offset, int fields, Class type, ParserContext pCtx) { super(pCtx); this.egressType = type; this.fields = fields; this.expr = expr; this.start = start; this.offset = offset; int assignStart; if ((assignStart = find(this.expr = expr, start, offset, '=')) != -1) { checkNameSafety(name = createStringTrimmed(expr, start, assignStart - start)); this.offset -= (assignStart - start); this.start = assignStart + 1; if (((fields |= ASSIGN) & COMPILE_IMMEDIATE) != 0) { statement = (ExecutableStatement) subCompileExpression(expr, this.start, this.offset, pCtx); } } else { checkNameSafety(name = new String(expr, start, offset)); } if ((fields & COMPILE_IMMEDIATE) != 0) { Class x = pCtx.getVarOrInputType(name); if (x != null && x != Object.class && !x.isAssignableFrom(egressType)) { throw new RuntimeException("statically-typed variable already defined in scope: " + name); } pCtx.addVariable(name, egressType, false); } }
public ProtoVarNode(char[] expr, int start, int offset, int fields, Proto type, ParserContext pCtx) { super(pCtx); this.egressType = Proto.ProtoInstance.class; this.expr = expr; this.start = start; this.offset = offset; this.fields = fields; int assignStart; if ((assignStart = find(super.expr = expr, start, offset, '=')) != -1) { checkNameSafety(name = createStringTrimmed(expr, 0, assignStart)); if (((fields |= ASSIGN) & COMPILE_IMMEDIATE) != 0) { statement = (ExecutableStatement) subCompileExpression(expr, assignStart + 1, offset, pCtx); } } else { checkNameSafety(name = new String(expr, start, offset)); } if ((fields & COMPILE_IMMEDIATE) != 0) { pCtx.addVariable(name, egressType, true); } }
public ProtoVarNode(char[] expr, int start, int offset, int fields, Proto type, ParserContext pCtx) { super(pCtx); this.egressType = Proto.ProtoInstance.class; this.expr = expr; this.start = start; this.offset = offset; this.fields = fields; int assignStart; if ((assignStart = find(super.expr = expr, start, offset, '=')) != -1) { checkNameSafety(name = createStringTrimmed(expr, 0, assignStart)); if (((fields |= ASSIGN) & COMPILE_IMMEDIATE) != 0) { statement = (ExecutableStatement) subCompileExpression(expr, assignStart + 1, offset, pCtx); } } else { checkNameSafety(name = new String(expr, start, offset)); } if ((fields & COMPILE_IMMEDIATE) != 0) { pCtx.addVariable(name, egressType, true); } }
public ProtoVarNode(char[] expr, int fields, Proto type, ParserContext pCtx) { this.egressType = Proto.ProtoInstance.class; this.fields = fields; int assignStart; if ((assignStart = find(super.name = expr, '=')) != -1) { checkNameSafety(name = createStringTrimmed(expr, 0, assignStart)); if (((fields |= ASSIGN) & COMPILE_IMMEDIATE) != 0) { statement = (ExecutableStatement) subCompileExpression(stmt = subset(expr, assignStart + 1), pCtx); } else { stmt = subset(expr, assignStart + 1); } } else { checkNameSafety(name = new String(expr)); } if ((fields & COMPILE_IMMEDIATE) != 0) { pCtx.addVariable(name, egressType, true); } }
public TypedVarNode(char[] expr, int fields, Class type, ParserContext pCtx) { this.egressType = type; this.fields = fields; int assignStart; if ((assignStart = find(super.name = expr, '=')) != -1) { checkNameSafety(name = createStringTrimmed(expr, 0, assignStart)); if (((fields |= ASSIGN) & COMPILE_IMMEDIATE) != 0) { statement = (ExecutableStatement) subCompileExpression(stmt = subset(expr, assignStart + 1), pCtx); } else { stmt = subset(expr, assignStart + 1); } } else { checkNameSafety(name = new String(expr)); } if ((fields & COMPILE_IMMEDIATE) != 0) { pCtx.addVariable(name, egressType, true); } }