01: package org.kohsuke.rngom.dt.builtin;
02:
03: import org.relaxng.datatype.DatatypeLibrary;
04: import org.relaxng.datatype.DatatypeLibraryFactory;
05:
06: import org.kohsuke.rngom.xml.util.WellKnownNamespaces;
07:
08: /**
09: * {@link DatatypeLibraryFactory} for
10: * RELAX NG Built-in datatype library and compatibility datatype library.
11: */
12: public class BuiltinDatatypeLibraryFactory implements
13: DatatypeLibraryFactory {
14: private final DatatypeLibrary builtinDatatypeLibrary;
15: private final DatatypeLibrary compatibilityDatatypeLibrary;
16: /**
17: * Target of delegation.
18: */
19: private final DatatypeLibraryFactory core;
20:
21: public BuiltinDatatypeLibraryFactory(
22: DatatypeLibraryFactory coreFactory) {
23: builtinDatatypeLibrary = new BuiltinDatatypeLibrary(coreFactory);
24: compatibilityDatatypeLibrary = new CompatibilityDatatypeLibrary(
25: coreFactory);
26: this .core = coreFactory;
27: }
28:
29: public DatatypeLibrary createDatatypeLibrary(String uri) {
30: if (uri.equals(""))
31: return builtinDatatypeLibrary;
32: if (uri
33: .equals(WellKnownNamespaces.RELAX_NG_COMPATIBILITY_DATATYPES))
34: return compatibilityDatatypeLibrary;
35: return core.createDatatypeLibrary(uri);
36: }
37: }
|