X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Facr%2FTypesManager.java;h=c5c3fd12833235a56cd956d881c3b46cc96d9c07;hb=eb4cc3db3bf141c229f0f7ff929daff108bee6d2;hp=f9077f0a6da9414b016caa25d0a6142c461cb376;hpb=d01c0151201161462367dc240a1e6903c830de87;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/acr/TypesManager.java b/org.argeo.cms/src/org/argeo/cms/acr/TypesManager.java index f9077f0a6..c5c3fd128 100644 --- a/org.argeo.cms/src/org/argeo/cms/acr/TypesManager.java +++ b/org.argeo.cms/src/org/argeo/cms/acr/TypesManager.java @@ -10,6 +10,7 @@ import java.util.Set; import java.util.SortedMap; import java.util.TreeMap; +import javax.xml.XMLConstants; import javax.xml.namespace.QName; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; @@ -22,6 +23,7 @@ import javax.xml.validation.Validator; import org.apache.xerces.impl.xs.XSImplementationImpl; import org.apache.xerces.impl.xs.util.StringListImpl; +import org.apache.xerces.jaxp.DocumentBuilderFactoryImpl; import org.apache.xerces.xs.StringList; import org.apache.xerces.xs.XSAttributeDeclaration; import org.apache.xerces.xs.XSAttributeUse; @@ -58,14 +60,16 @@ class TypesManager { // cached private Schema schema; - DocumentBuilderFactory documentBuilderFactory; + private DocumentBuilderFactory documentBuilderFactory; private XSModel xsModel; private SortedMap> types; private boolean validating = true; + private final static boolean limited = true; + public TypesManager() { - schemaFactory = SchemaFactory.newDefaultInstance(); + schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); // types types = new TreeMap<>((qn1, qn2) -> { @@ -122,11 +126,14 @@ class TypesManager { schema = schemaFactory.newSchema(sources.toArray(new Source[sources.size()])); // document builder factory - documentBuilderFactory = DocumentBuilderFactory.newInstance(); + // we force usage of Xerces for predictability + documentBuilderFactory = limited ? DocumentBuilderFactory.newInstance() : new DocumentBuilderFactoryImpl(); documentBuilderFactory.setNamespaceAware(true); - documentBuilderFactory.setXIncludeAware(true); - documentBuilderFactory.setSchema(getSchema()); - documentBuilderFactory.setValidating(validating); + if (!limited) { + documentBuilderFactory.setXIncludeAware(true); + documentBuilderFactory.setSchema(getSchema()); + documentBuilderFactory.setValidating(validating); + } // XS model // TODO use JVM implementation?