/** * Create a BDI parser helper. * @param condition The predefined condition. * @param mcapa The local scope (mcapability). * @param melement The local element, if any (e.g. mgoal or mplan). * @param state The state. * @param returnvar The return value variable (if return value condition). */ public BDIParserHelper(ICondition condition, Object mcapa, Object melement, IOAVState state) { super(condition, state.getTypeModel()); this.state = state; this.mcapa = mcapa; this.melement = melement; }
public void run() { object = getState().getTypeModel().getClassLoader(); } };
/** * Get the class loader of the agent. * The agent class loader is required to avoid incompatible class issues, * when changing the platform class loader while agents are running. * This may occur e.g. when decoding messages and instantiating parameter values. * @return The agent class loader. */ public ClassLoader getClassLoader() { // return model.getModelInfo().getClassLoader(); return model.getState().getTypeModel().getClassLoader(); }
/** * Parse an expression in the given scope. * @param expression The expression. * @param language The language or null for default java-like language. * @param state The state. * @param scope The scope. * @return The parsed expression */ public static IParsedExpression parseExpression(String expression, String language, IOAVState state, Object scope) { if(language!=null && !"java".equals(language)) { throw new UnsupportedOperationException("Only java currently supported."); } IExpressionParser exp_parser = new JavaCCExpressionParser(); // Hack!!! Map language to parser somewhere? IParsedExpression pexp = exp_parser.parseExpression(expression, null, null, state.getTypeModel().getClassLoader()); return pexp; }
/** * */ public static Object createExpression(IOAVState state, Object scope, final String expression, final String[] paramnames, final Class[] paramtypes) { // Hack!!! Should be configurable. IExpressionParser exp_parser = new JavaCCExpressionParser(); // Object mcapa = state.getAttributeValue(scope, OAVBDIRuntimeModel.element_has_model); // String[] imports = OAVBDIMetaModel.getImports(state, mcapa); Map params = null; if(paramnames!=null) { params = new HashMap(); for(int i=0; i<paramnames.length; i++) { params.put(paramnames[i], state.getTypeModel().getJavaType(paramtypes[i])); } } IParsedExpression pex = exp_parser.parseExpression(expression, null, params, Thread.currentThread().getContextClassLoader()); return new ExpressionNoModel(state, scope, pex); }
/** * Create a precompiled expression. * @param expression The expression string. * @return The precompiled expression. */ public IExpression createExpression(String expression, String[] paramnames, Class[] paramtypes) { // Hack!!! Should be configurable. IExpressionParser exp_parser = new JavaCCExpressionParser(); String[] imports = getInterpreter().getModel(rcapa).getAllImports(); Map params = null; if(paramnames!=null) { params = new HashMap(); for(int i=0; i<paramnames.length; i++) { params.put(paramnames[i], state.getTypeModel().getJavaType(paramtypes[i])); } } IParsedExpression pex = exp_parser.parseExpression(expression, imports, params, Thread.currentThread().getContextClassLoader()); return new ExpressionNoModel(state, rcapa, pex); }
/** * Load class. */ public Object postProcess(IContext context, Object object) { Map ouc = (Map)context.getUserContext(); IOAVState state = (IOAVState)ouc.get(OAVObjectReaderHandler.CONTEXT_STATE); String value = (String)state.getAttributeValue(object, classnameattr); if(value!=null) { try { Class clazz = SReflect.findClass(value, ((IModelInfo)context.getRootObject()).getAllImports(), state.getTypeModel().getClassLoader()); state.setAttributeValue(object, classattr, clazz); } catch(Exception e) { reportError(context, e.toString()); } } return null; }
/** * Get the classloader. * @return The classloader. */ public ClassLoader getClassLoader() { if(getInterpreter().getComponentAdapter().isExternalThread()) { AgentInvocation invoc = new AgentInvocation() { public void run() { object = getState().getTypeModel().getClassLoader(); } }; return (ClassLoader)invoc.object; } else { return getState().getTypeModel().getClassLoader(); } }
if(clname!=null) Class clazz = SReflect.findClass(clname, interpreter.getModel(rcapability).getAllImports(), state.getTypeModel().getClassLoader());
Set ins = getIndirectNodes(attr, state.getTypeModel()); if(ins!=null)
Set ins = getIndirectNodes(attr, state.getTypeModel()); if(ins!=null)
var = new Variable(varname, state.getTypeModel().getJavaType(clazz));
var = new Variable(varname, state.getTypeModel().getJavaType(clazz));
OAVObjectType oavtype = state.getTypeModel().getObjectType(tag.getLocalPart()); if(oavtype!=null)
/** * Create a component instance. * @param adapter The component adapter. * @param model The component model. * @param config The name of the configuration (or null for default configuration) * @param arguments The arguments for the agent as name/value pairs. * @param parent The parent component (if any). * @return An instance of a component. */ public Tuple2<IComponentInstance, IComponentAdapter> createComponentInstance(IComponentDescription desc, IComponentAdapterFactory factory, OAVAgentModel amodel, String config, Map<String, Object> arguments, IExternalAccess parent, RequiredServiceBinding[] bindings, boolean copy, boolean realtime, IIntermediateResultListener<Tuple2<String, Object>> resultlistener, Future<Void> ret) { // Create type model for agent instance (e.g. holding dynamically loaded java classes). OAVTypeModel tmodel = new OAVTypeModel(desc.getName().getLocalName()+"_typemodel", amodel.getState().getTypeModel().getClassLoader()); // OAVTypeModel tmodel = new OAVTypeModel(model.getName()+"_typemodel", ((OAVAgentModel)model).getTypeModel().getClassLoader()); tmodel.addTypeModel(amodel.getState().getTypeModel()); tmodel.addTypeModel(OAVBDIRuntimeModel.bdi_rt_model); IOAVState state = OAVStateFactory.createOAVState(tmodel); state.addSubstate(amodel.getState()); // BDIInterpreter bdii = new BDIInterpreter(desc, factory, state, amodel, config, arguments, parent, bindings, getPropertyMap(), copy, realtime, resultlistener, ret); BDIInterpreter bdii = new BDIInterpreter(desc, factory, state, amodel, config, arguments, parent, bindings, myprops, copy, realtime, resultlistener, ret); return new Tuple2<IComponentInstance, IComponentAdapter>(bdii, bdii.getAgentAdapter()); }
OAVObjectType oavtype = state.getTypeModel().getObjectType(tag.getLocalPart()); if(oavtype!=null)
public void customResultAvailable(ClassLoader cl) { try { // OAVAgentModel amodel = (OAVAgentModel)model; OAVAgentModel amodel = (OAVAgentModel)loader.loadModel(modelinfo.getFilename(), null, cl, new Object[]{modelinfo.getResourceIdentifier(), root}); // Create type model for agent instance (e.g. holding dynamically loaded java classes). OAVTypeModel tmodel = new OAVTypeModel(desc.getName().getLocalName()+"_typemodel", amodel.getState().getTypeModel().getClassLoader()); // OAVTypeModel tmodel = new OAVTypeModel(model.getName()+"_typemodel", ((OAVAgentModel)model).getTypeModel().getClassLoader()); tmodel.addTypeModel(amodel.getState().getTypeModel()); tmodel.addTypeModel(OAVBDIRuntimeModel.bdi_rt_model); IOAVState state = OAVStateFactory.createOAVState(tmodel); state.addSubstate(amodel.getState()); // BDIInterpreter bdii = new BDIInterpreter(desc, factory, state, amodel, config, arguments, parent, bindings, getPropertyMap(), copy, realtime, resultlistener, init); BDIInterpreter bdii = new BDIInterpreter(desc, factory, state, amodel, config, arguments, parent, bindings, myprops, copy, realtime, resultlistener, init); ret.setResult(new Tuple2<IComponentInstance, IComponentAdapter>(bdii, bdii.getAgentAdapter())); } catch(Exception e) { ret.setException(e); } } });
OAVTypeModel tmodel = new OAVTypeModel(desc.getName().getLocalName()+"_typemodel", amodel.getState().getTypeModel().getClassLoader()); tmodel.addTypeModel(amodel.getState().getTypeModel()); tmodel.addTypeModel(OAVBDIRuntimeModel.bdi_rt_model); IOAVState state = OAVStateFactory.createOAVState(tmodel);
parcon.addConstraint(new LiteralConstraint(OAVBDIRuntimeModel.parameter_has_name, pname)); parcon.addConstraint(new BoundConstraint(OAVBDIRuntimeModel.parameter_has_value, new Variable(pexp.getExpressionText().trim(), state.getTypeModel().getJavaType(clazz)))); parcons.add(parcon);
String language = (String)state.getAttributeValue(mcondition, OAVBDIMetaModel.expression_has_language); IParserHelper helper = new BDIParserHelper((ICondition)tmp[0], mcapa, melement, state); ICondition cond = ParserHelper.parseCondition((ICondition)tmp[0], text, language, state.getTypeModel(), imports, null, helper, tmp.length>=4 ? (Variable)tmp[3] : null, invert); ret = tmp.length==2 ? new Rule(rulename, cond, (IAction)tmp[1])