[infinispan-dev] Schema algorithm
Manik Surtani
manik at jboss.org
Fri Aug 14 04:51:45 EDT 2009
On 14 Aug 2009, at 09:42, Vladimir Blagojevic wrote:
> On 13/08/09 5:27 PM, Manik Surtani wrote:
>>
>> I've mentioned these in a previous email, reiterating here for the
>> record:
>>
>> 1. XSD should be generated before the test suite is run. Perhaps
>> in the pre-test or post-compile phase.
>> 2. The code should skip loading the schema if schema validation is
>> disabled, following this algorithm:
>>
>>> validating = system property "infinispan.config.validate",
>>> defaults to true.
>>> schema file = system property "infinispan.config.schema", defaults
>>> to schemas/infinispan-config-4.0.xsd
>>> schema URL = system property "infinispan.config.schema.url"
>>> defaults to http://www.jboss.org/infinispan/infinispan-config-4.0.xsd
>>>
>>> if (validating) {
>>> 1. try and load schema file from classpath
>>> 2. else, try and load schema file on file system
>>> 3. else, try and load from schema URL
>>> 4. else, throw an exception!
>>> }
>>
>> 3. The unit test suite should *not* attempt to skip schema
>> validation. This will, on one level, test schema validation code,
>> and on another, ensure all sample cfg files we ship with are valid.
>> 4. We should document the above system properties. Javadoc for
>> Configuration could be one place, but also on the wiki.
>>
> Ok let me get this right this time. We should keep both static
> factories in Infinispan configuration, right? The first one where
> only configuration file reference is provided and the other where
> both configuration and schema file reference are provided. Call them
> factory 1 and factory 2 respectively.
>
> Now, for factory 1, you are saying that even though schema reference
> is not provided the above mentioned schema lookup algorithm would be
> run? What about factory 2? Should only provided reference be looked
> up and/or if it fails should the default be looked up? Or should we
> just have a factory without possibility to provided reference for
> schema file?
>
> Is there some JBoss standard to follow?
>
> Let me know
Hmm, no I didn't mean > 1 factory. Quite simply, DefaultCacheManager:
210 could do something like:
initialize
(InfinispanConfiguration.newInfinispanConfiguration(configurationFile,
InfinispanConfiguration.locateSchema()));
and InfinispanConfiguration.locateSchema() would follow a few simple
steps in trying to locate a schema:
1. Initialise system vars: validating = system property
"infinispan.config.validate", defaults to true. schema file = system
property "infinispan.config.schema", defaults to schemas/infinispan-
config-4.0.xsd. schema URL = system property
"infinispan.config.schema.url" defaults to http://www.jboss.org/infinispan/infinispan-config-4.0.xsd
2. if ! validating, return null.
3. if (stream = FileLookup.lookupFile(schema file) != null) return
stream
4. if (stream = new URL(schema url).openStream() != null) return stream
5. return null
HTH
--
Manik Surtani
manik at jboss.org
Lead, Infinispan
Lead, JBoss Cache
http://www.infinispan.org
http://www.jbosscache.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/infinispan-dev/attachments/20090814/014022d7/attachment-0002.html
More information about the infinispan-dev
mailing list