/** * Get a copy of the typemodel without contained models. */ public OAVTypeModel getDirectTypeModel() { OAVTypeModel newmodel = new OAVTypeModel(name+"_direct", classloader); newmodel.types.putAll(types); return newmodel; }
/** * Create a new model. * @param name The name. */ public OAVTypeModel(String name, ClassLoader classloader, OAVTypeModel[] subtypemodels) { this.name = name; this.types = new HashMap(); this.classloader = classloader; if(subtypemodels!=null) { for(int i=0; i<subtypemodels.length; i++) { addTypeModel(subtypemodels[i]); } } }
/** * Check if an object is a java object but not a value. */ protected boolean isJavaNonValue(Object obj) { return obj!=null && types.get(obj)==null && !tmodel.getJavaType(obj.getClass()).getKind().equals(OAVJavaType.KIND_VALUE); }
/** * Create a java type if it does not already exist. * Required because some (user) Java types are created * on the fly when loading agent models * (e.g. Map in TranslationC1). */ protected static OAVJavaType createJavaType(Class clazz, String kind) { OAVJavaType ret; if(bdi_rt_model.contains(new OAVJavaType(clazz, kind, bdi_rt_model))) { ret = bdi_rt_model.getJavaType(clazz); } else { ret = bdi_rt_model.createJavaType(clazz, kind); } return ret; } }
/** * Get an object type while considering imports for Java types. * @param tmodel The type model. * @param typename The name of the type to search for. * @param imports The imports (if any). * @param loader The class loader. * @return The type. */ protected static OAVObjectType getObjectType(OAVTypeModel tmodel, String typename, String[] imports) { OAVObjectType ret = null; try { ret = tmodel.getObjectType(typename); } catch(Exception e){} // If not found, search for class in imports. if(ret==null) { Class clazz = SReflect.findClass0(typename, imports, tmodel.getClassLoader()); if(clazz==null) throw new RuntimeException("Type not found in type model: "+typename); ret = tmodel.getJavaType(clazz); } return ret; } }
/** * 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()); }
OAVTypeModel helloworld_type_model = new OAVTypeModel("helloworld_type_model"); helloworld_type_model.addTypeModel(OAVJavaType.java_type_model); OAVObjectType message_type = helloworld_type_model.createType("message"); final OAVAttributeType message_has_text = message_type.createAttributeType("message_has_text", OAVJavaType.java_string_type);
OAVTypeModel helloworld_type_model = new OAVTypeModel("helloworld_type_model"); helloworld_type_model.addTypeModel(OAVJavaType.java_type_model); /*OAVObjectType message_type = */helloworld_type_model.createJavaType(Message.class,OAVJavaType.KIND_BEAN);
/** * Test if a type is contained. * @param type The type. * @return True, if type is part of type model. */ public boolean contains(OAVObjectType type) { boolean ret = types.values().contains(type); for(int i=0; !ret && tmodels!=null && i<tmodels.length; i++) ret = tmodels[i].contains(type); return ret; }
public void run() { object = getState().getTypeModel().getClassLoader(); } };
OAVTypeModel tmodel = new OAVTypeModel("cleanertypes", cl); OAVObjectType locatype = tmodel.getObjectType("jadex.bdi.examples.cleanerworld.Location"); ObjectCondition locacon = new ObjectCondition(locatype); locacon.addConstraint(new BoundConstraint(null, new Variable("$location", locatype))); OAVObjectType wastetype = tmodel.getObjectType("jadex.bdi.examples.cleanerworld.Waste"); ObjectCondition wastecon = new ObjectCondition(wastetype); wastecon.addConstraint(new BoundConstraint(null, new Variable("$waste", wastetype)));
OAVTypeModel typemodel = new OAVTypeModel(name+"_typemodel", classloader); typemodel.addTypeModel(OAVBDIRuntimeModel.bdi_rt_model); final IOAVState state = OAVStateFactory.createOAVState(typemodel);
try OAVCapabilityModel cmodel = loadCapabilityModel(file, imports, model.getState().getTypeModel().getClassLoader(), new Object[]{info.getResourceIdentifier(), root}); model.addSubcapabilityModel(cmodel); if(cmodel.getModelInfo().getReport()!=null) var = new Variable(varname, state.getTypeModel().getJavaType(clazz)); var = new Variable(varname, state.getTypeModel().getJavaType(clazz));
/** * Search for a type in this model and all submodels. * @return null if not found. */ protected OAVObjectType getDeepType(String typename) { OAVObjectType ret = (OAVObjectType)types.get(typename); for(int i=0; ret==null && tmodels!=null && i<tmodels.length; i++) ret = tmodels[i].getDeepType(typename); return ret; } }
/** * Create a type. * Creates a type that can be used to create objects. * @param name The type name. * @return The type. */ public OAVObjectType createType(String name) { return createType(name, null); }
/** * Test if two types are equal. * @return True if equal. */ public boolean equals(Object object) { return object instanceof OAVTypeModel && ((OAVTypeModel)object).getName().equals(name); }
/** * Get an object type while considering imports for Java types. * @param tmodel The type model. * @param typename The name of the type to search for. * @param imports The imports (if any). * @param loader The class loader. * @return The type. */ protected static OAVObjectType getObjectType(OAVTypeModel tmodel, String typename, String[] imports) { OAVObjectType ret = null; try { ret = tmodel.getObjectType(typename); } catch(Exception e){} // If not found, search for class in imports. if(ret==null) { Class clazz = SReflect.findClass0(typename, imports, tmodel.getClassLoader()); if(clazz==null) throw new RuntimeException("Type not found in type model: "+typename); ret = tmodel.getJavaType(clazz); } return ret; } }
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 fibonacci_type_model = new OAVTypeModel("fibonacci_type_model"); fibonacci_type_model.addTypeModel(OAVJavaType.java_type_model); final OAVObjectType fibo_type = fibonacci_type_model.createType("fibo_type"); final OAVAttributeType fibo_has_value = fibo_type.createAttributeType("fibo_has_value", OAVJavaType.java_long_type); final OAVAttributeType fibo_has_sequence = fibo_type.createAttributeType("fibo_has_sequence", OAVJavaType.java_integer_type);