bodewig     2003/09/23 07:33:43

  Modified:    .        WHATSNEW
               src/etc/testcases/taskdefs/optional xmlvalidate.xml
               src/main/org/apache/tools/ant/types XMLCatalog.java
               src/testcases/org/apache/tools/ant/taskdefs/optional
                        XmlValidateTest.java
  Log:
  Defer expansion of reference until the catalog gets used.
  
  PR: 20965
  
  Revision  Changes    Path
  1.505     +3 -0      ant/WHATSNEW
  
  Index: WHATSNEW
  ===================================================================
  RCS file: /home/cvs/ant/WHATSNEW,v
  retrieving revision 1.504
  retrieving revision 1.505
  diff -u -r1.504 -r1.505
  --- WHATSNEW  22 Sep 2003 15:05:21 -0000      1.504
  +++ WHATSNEW  23 Sep 2003 14:33:43 -0000      1.505
  @@ -248,6 +248,9 @@
   * <splash> could fail on JVMs that use null to indicate the system 
classloader.
     Bugzilla Report 23320.
   
  +* <xmlcatalog>s only worked when defined inside of tasks.  Bugzilla
  +  Report 20965.
  +
   Other changes:
   --------------
   * All tasks can be used outside of <target>s.  Note that some tasks
  
  
  
  1.12      +10 -0     ant/src/etc/testcases/taskdefs/optional/xmlvalidate.xml
  
  Index: xmlvalidate.xml
  ===================================================================
  RCS file: /home/cvs/ant/src/etc/testcases/taskdefs/optional/xmlvalidate.xml,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- xmlvalidate.xml   10 Dec 2002 07:39:22 -0000      1.11
  +++ xmlvalidate.xml   23 Sep 2003 14:33:43 -0000      1.12
  @@ -25,6 +25,16 @@
       </xmlvalidate>
     </target>
   
  +  <target name="xmlcatalogViaRefid">
  +    <xmlcatalog classpath="xml" id="cat">
  +      <dtd publicID="-//stevo//DTD doc 1.0//EN" location="doc.dtd"/>
  +    </xmlcatalog>
  +    <xmlvalidate warn="false">
  +      <xmlcatalog refid="cat"/>
  +      <fileset dir="xml" includes="**/about.xml"/>
  +    </xmlvalidate>
  +  </target>
  +
     <target name="xmlcatalognested">
       <xmlvalidate warn="false">
         <fileset dir="xml" includes="**/about.xml"/>
  
  
  
  1.33      +23 -17    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
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- XMLCatalog.java   13 Aug 2003 15:14:31 -0000      1.32
  +++ XMLCatalog.java   23 Sep 2003 14:33:43 -0000      1.33
  @@ -208,7 +208,7 @@
        * @return the elements of the catalog - ResourceLocation objects
        */
       private Vector getElements() {
  -        return elements;
  +        return getRef().elements;
       }
   
       /**
  @@ -217,7 +217,7 @@
        * @return the classpath
        */
       private Path getClasspath() {
  -        return classpath;
  +        return getRef().classpath;
       }
   
       /**
  @@ -335,7 +335,7 @@
        * @return the catalog path
        */
       public Path getCatalogPath() {
  -        return this.catalogPath;
  +        return getRef().catalogPath;
       }
   
   
  @@ -421,17 +421,6 @@
           if (!elements.isEmpty()) {
               throw tooManyAttributes();
           }
  -        // change this to get the objects from the other reference
  -        Object o = r.getReferencedObject(getProject());
  -        // we only support references to other XMLCatalogs
  -        if (o instanceof XMLCatalog) {
  -            // set all elements from referenced catalog to this one
  -            XMLCatalog catalog = (XMLCatalog) o;
  -            setElements(catalog.getElements());
  -        } else {
  -            String msg = r.getRefId() + " does not refer to an XMLCatalog";
  -            throw new BuildException(msg);
  -        }
           super.setRefid(r);
       }
   
  @@ -443,6 +432,10 @@
       public InputSource resolveEntity(String publicId, String systemId)
           throws SAXException, IOException {
   
  +        if (isReference()) {
  +            return getRef().resolveEntity(publicId, systemId);
  +        }
  +
           if (!isChecked()) {
               // make sure we don't have a circular reference here
               Stack stk = new Stack();
  @@ -472,6 +465,10 @@
       public Source resolve(String href, String base)
           throws TransformerException {
   
  +        if (isReference()) {
  +            return getRef().resolve(href, base);
  +        }
  +
           if (!isChecked()) {
               // make sure we don't have a circular reference here
               Stack stk = new Stack();
  @@ -516,6 +513,16 @@
       }
   
       /**
  +     * @since Ant 1.6
  +     */
  +    private XMLCatalog getRef() {
  +        if (!isReference()) {
  +            return this;
  +        }
  +        return (XMLCatalog) getCheckedRef(XMLCatalog.class, "xmlcatalog");
  +    }
  +
  +    /**
        * The instance of the CatalogResolver strategy to use.
        */
       private CatalogResolver catalogResolver = null;
  @@ -576,9 +583,8 @@
                       && getCatalogPath().list().length != 0) {
                           log("Warning: catalogpath listing external catalogs"
                               + " will be ignored", Project.MSG_WARN);
  -                        log("Failed to load Apache resolver: "
  -                            + ex, Project.MSG_DEBUG);
                       }
  +                log("Failed to load Apache resolver: " + ex, 
Project.MSG_DEBUG);
               }
           }
           return catalogResolver;
  
  
  
  1.12      +8 -1      
ant/src/testcases/org/apache/tools/ant/taskdefs/optional/XmlValidateTest.java
  
  Index: XmlValidateTest.java
  ===================================================================
  RCS file: 
/home/cvs/ant/src/testcases/org/apache/tools/ant/taskdefs/optional/XmlValidateTest.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- XmlValidateTest.java      10 Feb 2003 14:14:52 -0000      1.11
  +++ XmlValidateTest.java      23 Sep 2003 14:33:43 -0000      1.12
  @@ -1,7 +1,7 @@
   /*
    *  The Apache Software License, Version 1.1
    *
  - *  Copyright (c) 2002 The Apache Software Foundation.  All rights
  + *  Copyright (c) 2002-2003 The Apache Software Foundation.  All rights
    *  reserved.
    *
    *  Redistribution and use in source and binary forms, with or without
  @@ -123,6 +123,13 @@
        */
       public void testXmlCatalog() {
           executeTarget("xmlcatalog");
  +    }
  +
  +    /**
  +     *
  +     */
  +    public void testXmlCatalogViaRefid() {
  +        executeTarget("xmlcatalogViaRefid");
       }
   
       /**
  
  
  

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

Reply via email to