/** * Get a parsed value. * Handles values, which may be parsed or unparsed, * and always returns a parsed value. * @param value The value. * @return The parsed and evaluated value. */ public static Object getParsedValue(Object value, String[] imports, IValueFetcher fetcher, ClassLoader classloader) { if(value instanceof UnparsedExpression) { // todo: language UnparsedExpression upe = (UnparsedExpression)value; IParsedExpression pe = parseExpression(upe, imports, classloader); value = pe!=null ? pe.getValue(fetcher) : null; } return value; }
/** * Parses the expression if possible. * * @param exp The expression. * @param imports The imports. * @param cl The class loader. * @return Parsed expression or unparsed if class loader is unavailable. */ protected static final UnparsedExpression parseExp(UnparsedExpression exp, String[] imports, ClassLoader cl) { if(cl != null) { try { SJavaParser.parseExpression(exp, imports, cl); } catch(Exception e) { System.err.println("Error parsing expression, name="+exp.getName()+", expstring="+exp.getValue()); throw new RuntimeException(e); } } return exp; }
/** * */ public IParsedExpression getParsedExpression() { return SJavaParser.parseExpression(uexp, agent.getModel().getAllImports(), agent.getClassLoader()); } }
public Object postProcess(IContext context, Object object) { ModelInfo cm = (ModelInfo)context.getRootObject(); UnparsedExpression exp = (UnparsedExpression)object; SJavaParser.parseExpression(exp, cm.getAllImports(), context.getClassLoader()); return object; }
public Object postProcess(IContext context, Object object) { ModelInfo cm = (ModelInfo)context.getRootObject(); UnparsedExpression exp = (UnparsedExpression)object; SJavaParser.parseExpression(exp, cm.getAllImports(), context.getClassLoader()); return object; }
/** * Add a simple string-based property. * @param name Property name. * @param value The string value. */ public void addProperty(String name, String value) { MProperty mprop = new MProperty(); mprop.setName(name); UnparsedExpression uexp = new UnparsedExpression(name, String.class, "\"" + value + "\"", null); SJavaParser.parseExpression(uexp, null, MActivity.class.getClassLoader()); mprop.setInitialValue(uexp); addProperty(mprop); }
/** * Get/Evaluate the updaterate value. * @param agent The agent. * @return The update rate. */ public long getUpdaterateValue(IInternalAccess agent) { long ret = -1; if(updaterate!=null) ret = ((Number)SJavaParser.parseExpression(updaterate, agent.getModel().getAllImports(), agent.getClassLoader()) .getValue(CapabilityWrapper.getFetcher(agent, updaterate.getLanguage()))).longValue(); return ret; }
/** * Get/Evaluate the updaterate value. * @param agent The agent. * @return The update rate. */ public long getUpdaterateValue(IInternalAccess agent) { long ret = -1; if(updaterate!=null) ret = ((Number)SJavaParser.parseExpression(updaterate, agent.getModel().getAllImports(), agent.getClassLoader()).getValue(CapabilityWrapper.getFetcher(agent, updaterate.getLanguage()))).longValue(); return ret; }
/** * Parse the expression. * The result is cached for later accesses. */ public static IParsedExpression parseExpression(UnparsedExpression ue, String[] imports, ClassLoader classloader) { IParsedExpression ret = (IParsedExpression)ue.getParsed(); // todo: language if(ret==null && ue.getValue()!=null) { ret = SJavaParser.parseExpression(ue.getValue(), imports, classloader); ue.setParsedExp(ret); } return ret; }
public IFuture<Tuple2<Boolean, Object>> evaluate(IEvent event) { UnparsedExpression uexp = mcond.getExpression(); Boolean ret = (Boolean)SJavaParser.parseExpression(uexp, component.getModel().getAllImports(), component.getClassLoader()).getValue(CapabilityWrapper.getFetcher(component, uexp.getLanguage())); return new Future<Tuple2<Boolean, Object>>(ret!=null && ret.booleanValue()? TRUE: FALSE); } }}), createplan);
/** * Evaluate the condition. */ public IFuture<Tuple2<Boolean, Object>> evaluate(IEvent event) { IFuture<Tuple2<Boolean, Object>> ret = null; try { fetcher.setValue("$event", event); IParsedExpression exp = SJavaParser.parseExpression(expression, null, null); // todo: classloader? Object res = exp.getValue(fetcher); ret = CommandCondition.evaluateResult(res); } catch(Exception e) { ret = new Future<Tuple2<Boolean, Object>>(e); // throw new RuntimeException(e); } return ret; }
SJavaParser.parseExpression(getDefaultFact(), model.getModelInfo().getAllImports(), cl); BDIAgentFeature.addExpressionEvents(getDefaultFact(), events, null);
public IFuture<Tuple2<Boolean, Object>> evaluate(IEvent event) { UnparsedExpression uexp = mcond.getExpression(); Boolean ret = (Boolean)SJavaParser.parseExpression(uexp, getAgent().getModel().getAllImports(), getAgent().getClassLoader()).getValue(CapabilityWrapper.getFetcher(getAgent(), uexp.getLanguage(), values)); return new Future<Tuple2<Boolean, Object>>(ret!=null && ret.booleanValue()? TRUE: FALSE); } }, new IAction<Void>()
if(mbel.getDefaultFact()!=null) Object tmp = SJavaParser.parseExpression(mbel.getDefaultFact(), agent.getModel().getAllImports(), agent.getClassLoader()) .getValue(CapabilityWrapper.getFetcher(getAgent(), mbel.getDefaultFact().getLanguage())); Iterator<?> it = SReflect.getIterator(tmp); Object fact = SJavaParser.parseExpression(uexp, agent.getModel().getAllImports(), agent.getClassLoader()) .getValue(CapabilityWrapper.getFetcher(getAgent(), uexp.getLanguage())); tmpfacts.add(fact);
/** * Legacy conversion to unparsed expression. * * @param name Name * @param exp */ public void setPropertyValue(String name, IParsedExpression exp) { if(exp != null) { MProperty mprop = new MProperty(); mprop.setName(name); UnparsedExpression uexp = new UnparsedExpression(name, (String) null, exp.getExpressionText(), null); uexp.setParsedExp(exp); mprop.setInitialValue(uexp); addProperty(mprop); } else { MProperty mprop = new MProperty(); mprop.setName(name); UnparsedExpression uexp = new UnparsedExpression(name, (String) null, null, null); SJavaParser.parseExpression(uexp, null, MActivity.class.getClassLoader()); mprop.setInitialValue(uexp); addProperty(mprop); } }
/** * Evaluate the (initial or default or pull) value. */ protected Object evaluateValue(UnparsedExpression inival) { UnparsedExpression uexp = inival!=null ? inival : getModelElement()!=null ? ((MParameter)getModelElement()).getDefaultValue() : null; return uexp!=null ? SJavaParser.parseExpression(uexp, getAgent().getModel().getAllImports(), getAgent().getClassLoader()).getValue( wrapFetcher(CapabilityWrapper.getFetcher(getAgent(), uexp.getLanguage()))) : null; }
/** * Create a new parameter. * @param modelelement The model element. * @param name The name. */ public RBelief(MBelief modelelement, IInternalAccess agent) { super(modelelement, agent); String name = getModelElement().getName(); this.publisher = new EventPublisher(agent, ChangeEvent.FACTCHANGED+"."+name, (MBelief)getModelElement()); if(modelelement.getDefaultFact()!=null) setFact(SJavaParser.parseExpression(modelelement.getDefaultFact(), agent.getModel().getAllImports(), agent.getClassLoader()) .getValue(CapabilityWrapper.getFetcher(getAgent(), modelelement.getDefaultFact().getLanguage()))); }
public void run() { // To schedule a step an implicit activity is created. // In order to put the step parameter value it is necessary // to have an edge with a mapping. Otherwise the parameter // value with be deleted in process thread updateParametersBeforeStep(). MActivity act = new MActivity(); act.setName("External Step Activity: "+(cnt++)); act.setClazz(new ClassInfo(ExecuteStepTask.class)); act.addParameter(new MParameter(MParameter.DIRECTION_IN, new ClassInfo(Object[].class), "step", null)); act.setActivityType(MBpmnModel.TASK); MSequenceEdge edge = new MSequenceEdge(); edge.setTarget(act); UnparsedExpression exp = new UnparsedExpression(null, (Class<?>) null, "step", null); SJavaParser.parseExpression(exp, null, null); // edge.addParameterMapping("step", SJavaParser.parseExpression("step", null, null), null); edge.addParameterMapping("step", exp, null); act.addIncomingSequenceEdge(edge); MPool pl = pool!=null? bpmnmodel.getPool(pool): (MPool)bpmnmodel.getPools().get(0); act.setPool(pl); ProcessThread thread = new ProcessThread(""+idcnt++, act, context, BpmnInterpreter.this); thread.setLastEdge(edge); thread.setParameterValue("step", new Object[]{step, ret}); context.addExternalThread(thread); } });
/** * Get the value of a parameter. * @return The value. */ public Object getFact() { Object ret = value; // In case of push the last evaluated value is returned if(((MBelief)getModelElement()).getDefaultFact()!=null && MParameter.EvaluationMode.PULL.equals(((MBelief)getModelElement()).getEvaluationMode())) { ret = SJavaParser.parseExpression(((MBelief)getModelElement()).getDefaultFact(), getAgent().getModel().getAllImports(), getAgent().getClassLoader()) .getValue(CapabilityWrapper.getFetcher(getAgent(), ((MBelief)getModelElement()).getDefaultFact().getLanguage())); } return ret; }
SJavaParser.parseExpression(value, null, null);