Not sure I follow. Those preventer adapters should now allow the same
element or schema to be added more than once... so I am curious as to
how the back references are accumulating. So while maybe right away
the objects won't be deferenced but eventually hey should be. Although
if you are building up multiple different schemas I can see how this
could be an issue.
Well, what I meant to say is that even if the preventers were working,
it wouldn't be enough. Say for example that an app-schema test builds a
schema for a "blahblah" namespace, the preventers wouldn't remove it
until another "blahblah" schema is built. However, I want it to be gone
at the end of the test, no matter what, there is no point in keeping it
around forever. That's why I concluded I should follow the path of
active disposal of schema's rather than just preventing duplicates.
The consequences for App-schema are big though. In the current
setup, you specify your schema's for each datastore (for each
mapping). So even in one single test, multiple versions of the
GSML schema are alive. All of them accumulate to multiple
references in the substitution groups of GML for the same
element. It just does not make any possible sense to link
multiple versions of the GSML schema to one single GML schema in
memory! Because of the backwards links and substitution groups it
becomes one big clutter.
Right... but is that not the problem that the preventers "prevent" :).
I am curious as to why they are not working on this case.
My solution is to keep a registry that maps schema locations to
schema's and reuse schema's that have already been built.
Performance and memory improvement at the same time.
In that case, the only way there could still be cluttering in the
XSD schema's in memory, if for some reason someone is using the
same schema in different file locations, or different versions of
the same schema, in different datastores of the same instance of
app-schema. I don't see a way to avoid that.
Another possible solution would be to create some sort of wrapper, or
a registry in which every time client code builds a schema they should
register it. And when the schema object is not required any longer
there is some dispose method called. When that occurs the schema
removes itself from any schemas that it imported or referenced via
substitution group.
I think what you are saying is basically what I am doing.
Regards
Niels
------------------------------------------------------------------------------
Enable your software for Intel(R) Active Management Technology to meet the
growing manageability and security demands of your customers. Businesses
are taking advantage of Intel(R) vPro (TM) technology - will your software
be a part of the solution? Download the Intel(R) Manageability Checker
today! http://p.sf.net/sfu/intel-dev2devmar
_______________________________________________
Geotools-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geotools-devel