You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by am...@apache.org on 2003/09/29 21:34:10 UTC

cvs commit: incubator-geronimo/modules/core/src/java/org/apache/geronimo/xml/deployment LoaderUtil.java LocalEntityResolver.java

ammulder    2003/09/29 12:34:10

  Modified:    modules/core maven.xml project.xml
               modules/core/src/java/org/apache/geronimo/xml/deployment
                        LoaderUtil.java LocalEntityResolver.java
  Log:
   - If a schema can't be resolved by its file path, try to load it from
     the classpath
   - Put the J2EE & Geronimo schemas on the classpath during testing, and
     put them into a JAR for runtime
  
  Revision  Changes    Path
  1.18      +7 -1      incubator-geronimo/modules/core/maven.xml
  
  Index: maven.xml
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/core/maven.xml,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- maven.xml	1 Sep 2003 20:38:48 -0000	1.17
  +++ maven.xml	29 Sep 2003 19:34:10 -0000	1.18
  @@ -41,6 +41,12 @@
                includes="org/apache/geronimo/rmi/RMIClassLoaderSpiImpl.class"/>
     </postGoal>
     
  +  <postGoal name="jar:jar">
  +    <ant:jar destfile="${basedir}/target/geronimo-schemas.jar"
  +             basedir="${basedir}/src/schema"
  +             includes="*.xsd"/>
  +  </postGoal>
  +  
     <!-- Set up the test files -->
     <postGoal name="test:test-resources">
       
  
  
  
  1.24      +17 -2     incubator-geronimo/modules/core/project.xml
  
  Index: project.xml
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/core/project.xml,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- project.xml	8 Sep 2003 04:55:00 -0000	1.23
  +++ project.xml	29 Sep 2003 19:34:10 -0000	1.24
  @@ -298,6 +298,21 @@
                   </includes>
               </resource>
           </resources>
  +        <unitTest>
  +            <includes>
  +                <include>**/*Test.java</include>
  +            </includes>
  +            <excludes>
  +                <exclude>**/Abstract*.java</exclude>
  +            </excludes>
  +            <resources>
  +                <resource>
  +                    <directory>${basedir}/src/schema</directory>
  +                    <includes>
  +                        <include>*.xsd</include>
  +                    </includes>
  +                </resource>
  +            </resources>
  +        </unitTest>
       </build>
  -
   </project>
  
  
  
  1.7       +2 -2      incubator-geronimo/modules/core/src/java/org/apache/geronimo/xml/deployment/LoaderUtil.java
  
  Index: LoaderUtil.java
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/core/src/java/org/apache/geronimo/xml/deployment/LoaderUtil.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- LoaderUtil.java	29 Sep 2003 14:00:56 -0000	1.6
  +++ LoaderUtil.java	29 Sep 2003 19:34:10 -0000	1.7
  @@ -189,7 +189,7 @@
           factory.setAttribute("http://java.sun.com/xml/jaxp/properties/schemaLanguage", "http://www.w3.org/2001/XMLSchema");
           try {
               DocumentBuilder builder = factory.newDocumentBuilder();
  -            builder.setEntityResolver(new LocalEntityResolver(new File("modules/core/src/schema"))); // @todo get this from resource
  +            builder.setEntityResolver(new LocalEntityResolver());
               return builder.parse(new InputSource(new BufferedReader(reader)));
           } catch (ParserConfigurationException e) {
               throw new AssertionError("Unable to obtain suitable DocumentBuilder");
  
  
  
  1.4       +32 -9     incubator-geronimo/modules/core/src/java/org/apache/geronimo/xml/deployment/LocalEntityResolver.java
  
  Index: LocalEntityResolver.java
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/core/src/java/org/apache/geronimo/xml/deployment/LocalEntityResolver.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- LocalEntityResolver.java	29 Sep 2003 14:14:42 -0000	1.3
  +++ LocalEntityResolver.java	29 Sep 2003 19:34:10 -0000	1.4
  @@ -59,6 +59,7 @@
   import java.io.File;
   import java.io.FileInputStream;
   import java.io.IOException;
  +import java.io.InputStream;
   
   import org.xml.sax.EntityResolver;
   import org.xml.sax.InputSource;
  @@ -79,24 +80,46 @@
           this.root = root;
       }
   
  +    public LocalEntityResolver() {
  +        root = null;
  +    }
  +
       public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException {
           //todo: resolve the core XML Schema schemas locally so no network connection is required
  -        if (log.isDebugEnabled()) {
  -            log.debug("Resolving entity S="+systemId+" P="+publicId);
  -        }
           if (publicId != null || systemId == null) {
  +            if (log.isDebugEnabled()) {
  +                log.debug("Not attempting to locally resolve entity S="+systemId+" P="+publicId);
  +            }
               return null;
           }
  +        String message = null;
  +        if(log.isDebugEnabled()) {
  +            message = "Resolving entity S="+systemId+" P="+publicId+": ";
  +        }
           int index = systemId.lastIndexOf("/");
           String fileName = systemId.substring(index+1);
  -        File file = new File(root, fileName);
  -        if (log.isDebugEnabled()) {
  -            log.debug("File "+file.getAbsolutePath()+" exists: "+file.exists());
  +        if(root != null) {
  +            File file = new File(root, fileName);
  +            if (file.exists()) {
  +                if (log.isDebugEnabled()) {
  +                    log.debug(message+"found file relative to "+root);
  +                }
  +                InputSource is = new InputSource(new BufferedInputStream(new FileInputStream(file)));
  +                is.setSystemId(systemId);
  +                return is;
  +            }
           }
  -        if (file.exists()) {
  -            InputSource is = new InputSource(new BufferedInputStream(new FileInputStream(file)));
  +        InputStream in = getClass().getClassLoader().getResourceAsStream(fileName);
  +        if(in != null) {
  +            if (log.isDebugEnabled()) {
  +                log.debug(message+"found file on classpath");
  +            }
  +            InputSource is = new InputSource(new BufferedInputStream(in));
               is.setSystemId(systemId);
               return is;
  +        }
  +        if (log.isDebugEnabled()) {
  +            log.debug(message+"not found");
           }
           return null;
       }