antoine     2003/12/09 07:36:53

  Modified:    .        Tag: ANT_16_BRANCH WHATSNEW
               src/main/org/apache/tools/ant/types Tag: ANT_16_BRANCH
                        XMLCatalog.java
               src/testcases/org/apache/tools/ant/types Tag: ANT_16_BRANCH
                        XMLCatalogTest.java
  Log:
  Merge from HEAD
  PR: 20965
  PR: 23913
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.503.2.19 +14 -2     ant/WHATSNEW
  
  Index: WHATSNEW
  ===================================================================
  RCS file: /home/cvs/ant/WHATSNEW,v
  retrieving revision 1.503.2.18
  retrieving revision 1.503.2.19
  diff -u -r1.503.2.18 -r1.503.2.19
  --- WHATSNEW  8 Dec 2003 02:25:42 -0000       1.503.2.18
  +++ WHATSNEW  9 Dec 2003 15:36:52 -0000       1.503.2.19
  @@ -1,12 +1,24 @@
  -Changes from Ant 1.6.B3 to CVS
  -=====================================
  +Changes from Ant 1.6.B3 to Ant 1.6
  +==================================
   
   Changes that could break older environments:
   --------------------------------------------
  +
   * Attempts to read input in <java> and <exec> tasks will now receive an EOF
     rather than blocking. If you run such a process and rely on it blocking, as
     it would do in Ant 1.5, you may have problem.
   
  +Fixed bugs:
  +-----------
  +
  +* <xmlcatalog>s only worked when defined inside of tasks.  Bugzilla
  +  Report 20965.
  +
  +* <xmlcatalog> Wrong file location to URL conversion in XMLCatalog.
  +  Bugzilla Report 23913.
  +
  +Other changes:
  +--------------
   
   Changes from Ant 1.6.B2 to Ant 1.6.B3
   =====================================
  
  
  
  No                   revision
  No                   revision
  1.32.2.2  +18 -3     ant/src/main/org/apache/tools/ant/types/XMLCatalog.java
  
  Index: XMLCatalog.java
  ===================================================================
  RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/types/XMLCatalog.java,v
  retrieving revision 1.32.2.1
  retrieving revision 1.32.2.2
  diff -u -r1.32.2.1 -r1.32.2.2
  --- XMLCatalog.java   23 Sep 2003 15:03:36 -0000      1.32.2.1
  +++ XMLCatalog.java   9 Dec 2003 15:36:53 -0000       1.32.2.2
  @@ -156,7 +156,6 @@
    * @author Erik Hatcher
    * @author <a href="mailto:[EMAIL PROTECTED]">Craeg Strong</a>
    * @author Jeff Turner
  - * @version $Id$
    */
   public class XMLCatalog extends DataType
       implements Cloneable, EntityResolver, URIResolver {
  @@ -678,6 +677,8 @@
       private InputSource filesystemLookup(ResourceLocation matchingEntry) {
   
           String uri = matchingEntry.getLocation();
  +        // the following line seems to be necessary on Windows under JDK 1.2
  +        uri = uri.replace(File.separatorChar, '/');
           URL baseURL = null;
   
           //
  @@ -697,11 +698,25 @@
   
           InputSource source = null;
           URL url = null;
  -
           try {
               url = new URL(baseURL, uri);
           } catch (MalformedURLException ex) {
  -            // ignore
  +            // this processing is useful under Windows when the location of 
the DTD has been given as an absolute path
  +            // see Bugzilla Report 23913
  +            File testFile = new File(uri);
  +            if (testFile.exists() && testFile.canRead()) {
  +                log("uri : '"
  +                    + uri + "' matches a readable file", Project.MSG_DEBUG);
  +                try {
  +                    url = fileUtils.getFileURL(testFile);
  +                } catch (MalformedURLException ex1) {
  +                    throw new BuildException("could not find an URL for :" + 
testFile.getAbsolutePath());
  +                }
  +            } else {
  +                log("uri : '"
  +                    + uri + "' does not match a readable file", 
Project.MSG_DEBUG);
  +
  +            }
           }
   
           if (url != null) {
  
  
  
  No                   revision
  No                   revision
  1.4.2.3   +36 -14    
ant/src/testcases/org/apache/tools/ant/types/XMLCatalogTest.java
  
  Index: XMLCatalogTest.java
  ===================================================================
  RCS file: 
/home/cvs/ant/src/testcases/org/apache/tools/ant/types/XMLCatalogTest.java,v
  retrieving revision 1.4.2.2
  retrieving revision 1.4.2.3
  diff -u -r1.4.2.2 -r1.4.2.3
  --- XMLCatalogTest.java       25 Sep 2003 07:44:27 -0000      1.4.2.2
  +++ XMLCatalogTest.java       9 Dec 2003 15:36:53 -0000       1.4.2.3
  @@ -76,8 +76,7 @@
   /**
    * JUnit testcases for org.apache.tools.ant.types.XMLCatalog
    *
  - * @author <a href="mailto:[EMAIL PROTECTED]">Craeg Strong</a> 
  - * @version $Id$
  + * @author <a href="mailto:[EMAIL PROTECTED]">Craeg Strong</a>
    */
   public class XMLCatalogTest extends TestCase {
   
  @@ -110,7 +109,7 @@
           // logger.setOutputPrintStream(System.out);
           // logger.setErrorPrintStream(System.err);
           // project.addBuildListener(logger);
  -        
  +
           catalog = newCatalog();
       }
   
  @@ -118,10 +117,10 @@
         project = null;
         catalog = null;
      }
  -   
  +
      public void testEmptyCatalog() {
          try {
  -           InputSource result = catalog.resolveEntity("PUBLIC ID ONE", 
  +           InputSource result = catalog.resolveEntity("PUBLIC ID ONE",
                                                         "i/dont/exist.dtd");
              assertNull("Empty catalog should return null", result);
          } catch (Exception e) {
  @@ -136,9 +135,9 @@
              // These shenanigans are necessary b/c Norm Walsh's resolver
              // has a different idea of how file URLs are created on windoze
              // ie file://c:/foo instead of file:///c:/foo
  -           // 
  +           //
              String resultStr = new 
URL(((SAXSource)result).getInputSource().getSystemId()).getFile();
  -           assertTrue("Empty catalog should return input", 
  +           assertTrue("Empty catalog should return input",
                         expected.endsWith(resultStr));
          } catch (Exception e) {
              fail("resolve() failed!" + e.toString());
  @@ -152,7 +151,7 @@
           dtd.setLocation("i/dont/exist.dtd");
   
           try {
  -            InputSource result = catalog.resolveEntity("PUBLIC ID ONE", 
  +            InputSource result = catalog.resolveEntity("PUBLIC ID ONE",
                                                          "i/dont/exist.dtd");
               assertNull("Nonexistent Catalog entry should not be returned", 
result);
           } catch (Exception e) {
  @@ -177,15 +176,15 @@
           dtd.setLocation("i/dont/exist.dtd");
           catalog.addDTD(dtd);
           project.addReference("catalog", catalog);
  -        
  +
           try {
               catalog.setRefid(new Reference("dummyref"));
               fail("Can add reference to nonexistent XMLCatalog");
           } catch (BuildException be) {
  -            assertEquals("You must not specify more than one " 
  +            assertEquals("You must not specify more than one "
                            + "attribute when using refid", be.getMessage());
           }
  -        
  +
           XMLCatalog catalog2 = newCatalog();
           catalog2.setRefid(new Reference("catalog"));
   
  @@ -205,7 +204,7 @@
           catalog.setRefid(new Reference("catalog"));
   
           try {
  -            InputSource result = catalog.resolveEntity("PUBLIC ID ONE", 
  +            InputSource result = catalog.resolveEntity("PUBLIC ID ONE",
                                                          "i/dont/exist.dtd");
               fail("Can make XMLCatalog a Reference to itself.");
           } catch (BuildException be) {
  @@ -228,7 +227,7 @@
           catalog1.setRefid(new Reference("catalog2"));
   
           try {
  -            InputSource result = catalog1.resolveEntity("PUBLIC ID ONE", 
  +            InputSource result = catalog1.resolveEntity("PUBLIC ID ONE",
                                                           "i/dont/exist.dtd");
               fail("Can make circular reference");
           } catch (BuildException be) {
  @@ -238,6 +237,29 @@
               fail("resolveEntity() failed!" + e.toString());
           }
       }
  +    // inspired by Bugzilla Report 23913
  +    // a problem used to happen under Windows when the location of the DTD 
was given as an absolute path
  +    // possibly with a mixture of file separators
  +    public void testAbsolutePath() {
  +        ResourceLocation dtd = new ResourceLocation();
  +        dtd.setPublicId("-//stevo//DTD doc 1.0//EN");
  +
  +        String sysid = System.getProperty("user.dir") + File.separator + 
"src/etc/testcases/taskdefs/optional/xml/doc.dtd";
  +        dtd.setLocation(sysid);
  +        catalog.addDTD(dtd);
  +        File dtdFile = project.resolveFile(sysid);
  +
  +        try {
  +            InputSource result = catalog.resolveEntity("-//stevo//DTD doc 
1.0//EN",
  +                                                       
"nap:chemical+brothers");
  +            assertNotNull(result);
  +            assertEquals(toURLString(dtdFile),
  +                         result.getSystemId());
  +        } catch (Exception e) {
  +            fail("resolveEntity() failed!" + e.toString());
  +        }
  +
  +    }
   
       public void testSimpleEntry() {
   
  @@ -247,7 +269,7 @@
           dtd.setLocation(sysid);
           catalog.addDTD(dtd);
           File dtdFile = project.resolveFile(sysid);
  -        
  +
           try {
               InputSource result = catalog.resolveEntity("-//stevo//DTD doc 
1.0//EN",
                                                          
"nap:chemical+brothers");
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to