Is this a bug/weird coding/am I reading this wrong?
pjodev Apr 14, 2007 8:24 PMI am looking at the code for JbpmConfiguration.java, specifically the getInstance(String resource) method. It appears that even if you pass in a specific resource (filename) it will STILL attempt to use the defaults at first.
public static JbpmConfiguration getInstance(String resource) { JbpmConfiguration instance = null; synchronized(instances) { if (resource==null) { resource = "jbpm.cfg.xml"; } instance = (JbpmConfiguration) instances.get(resource); if (instance==null) { if (defaultObjectFactory!=null) { log.debug("creating jbpm configuration from given default object factory '"+defaultObjectFactory+"'"); instance = new JbpmConfiguration(defaultObjectFactory); } else { try { log.info("using jbpm configuration resource '"+resource+"'"); InputStream jbpmCfgXmlStream = ClassLoaderUtil.getStream(resource); ObjectFactory objectFactory = parseObjectFactory(jbpmCfgXmlStream); instance = createJbpmConfiguration(objectFactory); } catch (RuntimeException e) { throw new JbpmException("couldn't parse jbpm configuration from resource '"+resource+"'", e); } } instances.put(resource, instance); } } return instance; }
this line
ObjectFactory objectFactory = parseObjectFactory(jbpmCfgXmlStream);
Goes to the method
protected static ObjectFactory parseObjectFactory(InputStream inputStream) { log.debug("loading defaults in jbpm configuration"); ObjectFactoryParser objectFactoryParser = new ObjectFactoryParser(); ObjectFactoryImpl objectFactoryImpl = new ObjectFactoryImpl(); objectFactoryParser.parseElementsFromResource("org/jbpm/default.jbpm.cfg.xml", objectFactoryImpl); if (inputStream!=null) { log.debug("loading specific configuration..."); objectFactoryParser.parseElementsStream(inputStream, objectFactoryImpl); } return objectFactoryImpl; }
Now it looks like it attempts to build the entire configuration from the default.jbpm.cfg.xml file which is giving me that Message.hbm.xml error What the hell is Message.hbm.xml? WHERE DO I USE IT? (see my other post!!!)
Wouldn't it be better form to try the inputStream first, then if that fails, try to load the default?