3)What is meaning of below code in XMLDocumentImpl? if (options instanceof Map) { Class resourceFactoryClass = (Class)((Map)options).get("GENERATED_LOADER"); if (resourceFactoryClass != null) { try { Object resourceFactory = resourceFactoryClass.newInstance(); resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("*", resourceFactory); } catch (Exception e) { e.printStackTrace(); } } }
I looked back at the svn history, and this code has been there since the original contribution of code to Apache. My guess from the name of the option and other brushes with topics of a similar nature is that this allows optimised loads of XML documents of a specific nature by employing a generated Factory which loads only documents conforming to s specific XML schema. It would be good to get a test in place to exercise this code if it is still relevant. I know for sure that neither the unit tests nor the CTS exercises it. This is standard EMF stuff, but I'm not sure whether we ever put it to good use in SDO, so all I can do is translate the meaning of the code to the best of my understanding, which you may already understand anyway. In an EMF resource set, there can be a set of Factories that know how to create java objects from resources. The resource set holds a mapping from file extensions for the resources to factories. If a request is made to load a resource file with a given extension then the map is used to look up the factory that will be used to load the resource. There is scope for using wildcards in the file extensions in the mapping. If you want to override existing behaviour or add new file extensions you can add another factory to the mapping. So here the one option that seems to be permitted for this operation is the "GENERATED_LOADER" option, for which the value must be a class which is a Factory that knows how to load all resources that the resource set is going to encounter. A new instance of this factory is created and lodged in the resource set's map against the "*" wildcard. So whenever the resource set needs to load a resource, the Factory it uses to attempt to do the load will always be an instance of the class that was provided in the option. If the option is not provided or the construction of the specified instance fails then the resource set relies on whatever factories if already knew about to create resources. Regards, Kelvin. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]