/** * Set the value without check. */ protected void internalSetValue(Object value) { if(value!=null && getModelElement()!=null) { Class<?> clazz = ((MParameter)getModelElement()).getClazz().getType(getAgent().getClassLoader(), getAgent().getModel().getAllImports()); if(!SReflect.isSupertype(clazz, value.getClass())) { throw new IllegalArgumentException("Incompatible value for parameter "+getName()+": "+value); } value = SReflect.convertWrappedValue(value, clazz); } Object oldvalue = this.value; this.value = value; publisher.entryChanged(oldvalue, value, -1); }
/** * Create a new parameter. * @param modelelement The model element. * @param name The name. */ public RParameter(MParameter modelelement, String name, IInternalAccess agent, UnparsedExpression inival, String pename) { super(modelelement, agent); this.name = name!=null? name: modelelement.getName(); this.publisher = new EventPublisher(agent, ChangeEvent.VALUECHANGED+"."+pename+"."+getName(), (MParameter)getModelElement()); if(modelelement!=null && modelelement.getEvaluationMode()==EvaluationMode.PULL) { this.inival = inival; } setValue(evaluateValue(inival)); }
/** * Create a new parameter. * @param modelelement The model element. * @param name The name. */ public RParameter(MParameter modelelement, String name, IInternalAccess agent, Object value, String pename) { super(modelelement, agent); this.name = name!=null? name: modelelement.getName(); // RParameterElement.this.getName() this.publisher = new EventPublisher(agent, ChangeEvent.VALUECHANGED+"."+pename+"."+getName(), (MParameter)getModelElement()); setValue(value); }
/** * 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; }
/** * Get the value of a parameter. * @return The value. */ public Object getValue() { return ((MParameter)getModelElement()).getEvaluationMode()==EvaluationMode.PULL ? evaluateValue(inival) : value; }
/** * Set a value of a parameter. * @param value The new value. */ public void setValue(Object value) { testWriteOK((MParameter)getModelElement()); internalSetValue(value); }
/** * Create a new parameter. * @param modelelement The model element. * @param name The name. */ public RParameter(MParameter modelelement, String name, IInternalAccess agent, String pename) { super(modelelement, agent); this.name = name!=null? name: modelelement.getName(); this.publisher = new EventPublisher(agent, ChangeEvent.VALUECHANGED+"."+pename+"."+getName(), (MParameter)getModelElement()); }
/** * Test if this parameter has a default value. */ protected boolean hasDefaultValue() { return getModelElement()!=null && ((MParameter)getModelElement()).getDefaultValue()!=null; } }