Author: fanningpj
Date: Sun Mar 17 18:27:24 2024
New Revision: 1916370

URL: http://svn.apache.org/viewvc?rev=1916370&view=rev
Log:
[XMLBEANS-648] issue with compiling XSDs when using modularized runtimes. 
Thanks to Rodrigo Merino. This closes #13

Modified:
    
xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/common/DefaultClassLoaderResourceLoader.java
    
xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeLoaderImpl.java
    
xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeSystemImpl.java
    xmlbeans/trunk/src/main/java9/module-info.class
    xmlbeans/trunk/src/test/java/xmlobject/detailed/TestsFromBugs.java

Modified: 
xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/common/DefaultClassLoaderResourceLoader.java
URL: 
http://svn.apache.org/viewvc/xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/common/DefaultClassLoaderResourceLoader.java?rev=1916370&r1=1916369&r2=1916370&view=diff
==============================================================================
--- 
xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/common/DefaultClassLoaderResourceLoader.java
 (original)
+++ 
xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/common/DefaultClassLoaderResourceLoader.java
 Sun Mar 17 18:27:24 2024
@@ -30,7 +30,7 @@ public class DefaultClassLoaderResourceL
             in = 
getResourceAsStream(DefaultClassLoaderResourceLoader.class.getClassLoader(), 
resourceName);
         }
         if (in == null) {
-            in = 
DefaultClassLoaderResourceLoader.class.getResourceAsStream(resourceName);
+            in = 
DefaultClassLoaderResourceLoader.class.getResourceAsStream("/" + resourceName);
         }
         return in;
     }

Modified: 
xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeLoaderImpl.java
URL: 
http://svn.apache.org/viewvc/xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeLoaderImpl.java?rev=1916370&r1=1916369&r2=1916370&view=diff
==============================================================================
--- 
xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeLoaderImpl.java
 (original)
+++ 
xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeLoaderImpl.java
 Sun Mar 17 18:27:24 2024
@@ -265,7 +265,7 @@ public class SchemaTypeLoaderImpl extend
             tsname = crackEntry(_resourceLoader, searchfor);
         }
 
-        if (_classLoader != null) {
+        if (tsname == null && _classLoader != null) {
             tsname = crackEntry(_classLoader, searchfor);
         }
 

Modified: 
xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeSystemImpl.java
URL: 
http://svn.apache.org/viewvc/xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeSystemImpl.java?rev=1916370&r1=1916369&r2=1916370&view=diff
==============================================================================
--- 
xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeSystemImpl.java
 (original)
+++ 
xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeSystemImpl.java
 Sun Mar 17 18:27:24 2024
@@ -16,6 +16,7 @@
 package org.apache.xmlbeans.impl.schema;
 
 import org.apache.xmlbeans.*;
+import org.apache.xmlbeans.impl.common.DefaultClassLoaderResourceLoader;
 import org.apache.xmlbeans.impl.common.QNameHelper;
 import org.apache.xmlbeans.impl.common.XBeanDebug;
 import org.apache.xmlbeans.impl.util.ExceptionUtil;
@@ -196,7 +197,7 @@ public class SchemaTypeSystemImpl extend
         _name = fullname.substring(0, fullname.lastIndexOf('.'));
         XBeanDebug.LOG.atTrace().log("Loading type system {}", _name);
         _classloader = indexclass.getClassLoader();
-        _linker = SchemaTypeLoaderImpl.build(null, null, _classloader, 
getMetadataPath());
+        _linker = SchemaTypeLoaderImpl.build(null, new 
DefaultClassLoaderResourceLoader(), _classloader, getMetadataPath());
         _resourceLoader = new ClassLoaderResourceLoader(_classloader);
         try {
             initFromHeader();

Modified: xmlbeans/trunk/src/main/java9/module-info.class
URL: 
http://svn.apache.org/viewvc/xmlbeans/trunk/src/main/java9/module-info.class?rev=1916370&r1=1916369&r2=1916370&view=diff
==============================================================================
Binary files - no diff available.

Modified: xmlbeans/trunk/src/test/java/xmlobject/detailed/TestsFromBugs.java
URL: 
http://svn.apache.org/viewvc/xmlbeans/trunk/src/test/java/xmlobject/detailed/TestsFromBugs.java?rev=1916370&r1=1916369&r2=1916370&view=diff
==============================================================================
--- xmlbeans/trunk/src/test/java/xmlobject/detailed/TestsFromBugs.java 
(original)
+++ xmlbeans/trunk/src/test/java/xmlobject/detailed/TestsFromBugs.java Sun Mar 
17 18:27:24 2024
@@ -20,9 +20,13 @@ import com.mytest.Foo;
 import com.mytest.Info;
 import com.mytest.TestDocument;
 import org.apache.xmlbeans.*;
+import org.apache.xmlbeans.impl.schema.BuiltinSchemaTypeSystem;
+import org.apache.xmlbeans.impl.schema.SchemaTypeLoaderImpl;
+
 import org.junit.jupiter.api.Test;
 import test.xmlobject.test36510.Test36510AppDocument;
 
+import static org.apache.xmlbeans.XmlBeans.compileXmlBeans;
 import static org.junit.jupiter.api.Assertions.*;
 
 /**
@@ -152,4 +156,49 @@ public class TestsFromBugs {
         assertEquals(1, ats.length);
         assertDoesNotThrow(ats[0]::getSourceName);
     }
+    
+    /**
+     * https://issues.apache.org/jira/browse/XMLBEANS-648
+     */
+    @Test
+    void test648() throws Exception {
+        final XmlOptions options = new XmlOptions();
+        options.setCompileNoUpaRule();
+        options.setCompileNoValidation();
+        options.setCompileDownloadUrls();
+    
+        /* Load the schema */
+        final SchemaTypeLoader contextTypeLoader =
+            SchemaTypeLoaderImpl.build(new SchemaTypeLoader[] 
{BuiltinSchemaTypeSystem.get()}, null,
+                                       Object.class.getClassLoader());
+    
+        String schemaString = "<schema 
xmlns=\"http://www.w3.org/2001/XMLSchema\"; 
xmlns:tns=\"http://validationnamespace.raml.org\"; 
attributeFormDefault=\"unqualified\" elementFormDefault=\"qualified\" 
targetNamespace=\"http://validationnamespace.raml.org\";>\n"
+            + "    <element name=\"__DataType_Fragment__\">\n"
+            + "        <complexType>\n"
+            + "            <sequence>\n"
+            + "                <element name=\"firstname\">\n"
+            + "                    <simpleType>\n"
+            + "                        <restriction base=\"string\"/>\n"
+            + "                    </simpleType>\n"
+            + "                </element>\n"
+            + "                <element name=\"lastname\">\n"
+            + "                    <simpleType>\n"
+            + "                        <restriction base=\"string\"/>\n"
+            + "                    </simpleType>\n"
+            + "                </element>\n"
+            + "                <element name=\"age\">\n"
+            + "                    <simpleType>\n"
+            + "                        <restriction base=\"double\"/>\n"
+            + "                    </simpleType>\n"
+            + "                </element>\n"
+            + "                <any maxOccurs=\"unbounded\" minOccurs=\"0\" 
processContents=\"skip\"/>\n"
+            + "            </sequence>\n"
+            + "        </complexType>\n"
+            + "    </element>\n"
+            + "</schema>\n"
+            + "";
+        final XmlObject[] schemaRepresentation = new XmlObject[] 
{contextTypeLoader.parse(schemaString, null, null)};
+    
+        XmlBeans.compileXmlBeans(null, null, schemaRepresentation, null, 
contextTypeLoader, null, options);
+    }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to