peterreilly    2004/09/10 01:50:25

  Modified:    .        WHATSNEW CONTRIBUTORS
               src/main/org/apache/tools/ant/taskdefs XmlProperty.java
               docs/manual/CoreTasks xmlproperty.html
               src/etc/testcases/taskdefs xmlproperty.xml
               src/testcases/org/apache/tools/ant/taskdefs
                        XmlPropertyTest.java
  Added:       src/etc/testcases/taskdefs xmlproperty_needscat.xml
                        skinconfig.dtd
  Log:
  add xmlcatalog nested element to the xmlproperty task
  PR: 27053
  Obtained from: David Crossley and Dave Brondsema
  
  Revision  Changes    Path
  1.658     +2 -0      ant/WHATSNEW
  
  Index: WHATSNEW
  ===================================================================
  RCS file: /home/cvs/ant/WHATSNEW,v
  retrieving revision 1.657
  retrieving revision 1.658
  diff -u -r1.657 -r1.658
  --- WHATSNEW  6 Sep 2004 09:14:41 -0000       1.657
  +++ WHATSNEW  10 Sep 2004 08:50:25 -0000      1.658
  @@ -69,6 +69,8 @@
   * Allow file attribute of <move> to rename a directory.
     Bugzilla Report 22863.
   
  +* Add xmlcatalog nested element to XmlProperty. Bugzilla report 27053.
  +
   Fixed bugs:
   -----------
   
  
  
  
  1.30      +1 -0      ant/CONTRIBUTORS
  
  Index: CONTRIBUTORS
  ===================================================================
  RCS file: /home/cvs/ant/CONTRIBUTORS,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- CONTRIBUTORS      2 Aug 2004 14:32:43 -0000       1.29
  +++ CONTRIBUTORS      10 Sep 2004 08:50:25 -0000      1.30
  @@ -39,6 +39,7 @@
   Davanum Srinivas
   Dave Brondsema
   David A. Herman
  +David Crossley
   David Kavanagh
   David Maclean
   David Rees
  
  
  
  1.23      +66 -4     
ant/src/main/org/apache/tools/ant/taskdefs/XmlProperty.java
  
  Index: XmlProperty.java
  ===================================================================
  RCS file: 
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/XmlProperty.java,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- XmlProperty.java  9 Mar 2004 16:48:07 -0000       1.22
  +++ XmlProperty.java  10 Sep 2004 08:50:25 -0000      1.23
  @@ -21,10 +21,12 @@
   import java.io.IOException;
   import java.util.Hashtable;
   import javax.xml.parsers.DocumentBuilderFactory;
  +import javax.xml.parsers.DocumentBuilder;
   import javax.xml.parsers.ParserConfigurationException;
   import org.apache.tools.ant.BuildException;
   import org.apache.tools.ant.Project;
   import org.apache.tools.ant.types.Path;
  +import org.apache.tools.ant.types.XMLCatalog;
   import org.apache.tools.ant.util.FileUtils;
   import org.w3c.dom.Document;
   import org.w3c.dom.Element;
  @@ -32,6 +34,7 @@
   import org.w3c.dom.Node;
   import org.w3c.dom.NodeList;
   import org.xml.sax.SAXException;
  +import org.xml.sax.EntityResolver;
   
   /**
    * Loads property values from a valid XML file, generating the
  @@ -178,6 +181,7 @@
       private File rootDirectory = null;
       private FileUtils fileUtils = FileUtils.newFileUtils();
       private Hashtable addedAttributes = new Hashtable();
  +    private XMLCatalog xmlCatalog = new XMLCatalog();
   
       private static final String ID = "id";
       private static final String REF_ID = "refid";
  @@ -202,6 +206,15 @@
   
       public void init() {
           super.init();
  +        xmlCatalog.setProject(getProject());
  +    }
  +
  +
  +    /**
  +     * @return the xmlCatalog as the entityresolver.
  +     */
  +    protected EntityResolver getEntityResolver() {
  +        return xmlCatalog;
       }
   
       /**
  @@ -226,7 +239,9 @@
                 DocumentBuilderFactory factory = 
DocumentBuilderFactory.newInstance();
                 factory.setValidating(validate);
                 factory.setNamespaceAware(false);
  -              Document document = factory.newDocumentBuilder().parse(src);
  +              DocumentBuilder builder = factory.newDocumentBuilder();
  +              builder.setEntityResolver(getEntityResolver());
  +              Document document = builder.parse(src);
                 Element topElement = document.getDocumentElement();
   
                 // Keep a hashtable of attributes added by this task.
  @@ -571,48 +586,95 @@
           this.collapseAttributes = collapseAttributes;
       }
   
  -    public void setSemanticAttributes (boolean semanticAttributes) {
  +    /**
  +     * Attribute to enable special handling of attributes - see ant manual.
  +     * @param semanticAttributes if true enable the special handling.
  +     */
  +    public void setSemanticAttributes(boolean semanticAttributes) {
           this.semanticAttributes = semanticAttributes;
       }
   
  -    public void setRootDirectory (File rootDirectory) {
  +    /**
  +     * The directory to use for resolving file references.
  +     * Ignored if semanticAttributes is not set to true.
  +     * @param rootDirectory the directory.
  +     */
  +    public void setRootDirectory(File rootDirectory) {
           this.rootDirectory = rootDirectory;
       }
   
  -    public void setIncludeSemanticAttribute (boolean 
includeSemanticAttribute) {
  +    /**
  +     * Include the semantic attribute name as part of the property name.
  +     * Ignored if semanticAttributes is not set to true.
  +     * @param includeSemanticAttribute if true include the sematic attribute
  +     *                                 name.
  +     */
  +    public void setIncludeSemanticAttribute(boolean 
includeSemanticAttribute) {
           this.includeSemanticAttribute = includeSemanticAttribute;
       }
   
  +    /**
  +     * add an XMLCatalog as a nested element; optional.
  +     * @param catalog the XMLCatalog to use
  +     */
  +    public void addConfiguredXMLCatalog(XMLCatalog catalog) {
  +        xmlCatalog.addConfiguredXMLCatalog(catalog);
  +    }
  +
       /* Expose members for extensibility */
   
  +    /**
  +     * @return the file attribute.
  +     */
       protected File getFile () {
           return this.src;
       }
   
  +    /**
  +     * @return the prefix attribute.
  +     */
       protected String getPrefix () {
           return this.prefix;
       }
   
  +    /**
  +     * @return the keeproot attribute.
  +     */
       protected boolean getKeeproot () {
           return this.keepRoot;
       }
   
  +    /**
  +     * @return the validate attribute.
  +     */
       protected boolean getValidate () {
           return this.validate;
       }
   
  +    /**
  +     * @return the collapse attributes attribute.
  +     */
       protected boolean getCollapseAttributes () {
           return this.collapseAttributes;
       }
   
  +    /**
  +     * @return the semantic attributes attribute.
  +     */
       protected boolean getSemanticAttributes () {
           return this.semanticAttributes;
       }
   
  +    /**
  +     * @return the root directory attribute.
  +     */
       protected File getRootDirectory () {
           return this.rootDirectory;
       }
   
  +    /**
  +     * @return the include semantic attribute.
  +     */
       protected boolean getIncludeSementicAttribute () {
           return this.includeSemanticAttribute;
       }
  
  
  
  1.8       +6 -1      ant/docs/manual/CoreTasks/xmlproperty.html
  
  Index: xmlproperty.html
  ===================================================================
  RCS file: /home/cvs/ant/docs/manual/CoreTasks/xmlproperty.html,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- xmlproperty.html  9 Feb 2004 21:50:06 -0000       1.7
  +++ xmlproperty.html  10 Sep 2004 08:50:25 -0000      1.8
  @@ -131,6 +131,11 @@
     </tr>
   </table>
   
  +<h3><a name="nested">Nested Elements</a></h3>
  +<h4>xmlcatalog</h4>
  +<p>The <a href="../CoreTypes/xmlcatalog.html"><tt>&lt;xmlcatalog&gt;</tt></a>
  +element is used to perform entity resolution.</p>
  +
   <a name="examples">
   <h3>Examples</h3>
   </a>
  @@ -257,4 +262,4 @@
   Reserved.</p>
   
   </body>
  -</html>
  \ No newline at end of file
  +</html>
  
  
  
  1.3       +10 -0     ant/src/etc/testcases/taskdefs/xmlproperty.xml
  
  Index: xmlproperty.xml
  ===================================================================
  RCS file: /home/cvs/ant/src/etc/testcases/taskdefs/xmlproperty.xml,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- xmlproperty.xml   23 Jul 2003 12:11:09 -0000      1.2
  +++ xmlproperty.xml   10 Sep 2004 08:50:25 -0000      1.3
  @@ -7,4 +7,14 @@
     <target name="testdtd">
       <xmlproperty file="xmlproperty_withdtd.xml"/>
     </target>
  +
  +  <target name="testneedscat">
  +    <xmlproperty file="xmlproperty_needscat.xml">
  +      <xmlcatalog>
  +        <dtd publicId="-//FOO//DTD Skin Configuration V0.1//EN"
  +             location="skinconfig.dtd"/>
  +      </xmlcatalog>
  +    </xmlproperty>
  +  </target>
  +
   </project>
  
  
  
  1.1                  ant/src/etc/testcases/taskdefs/xmlproperty_needscat.xml
  
  Index: xmlproperty_needscat.xml
  ===================================================================
  <?xml version="1.0"?>
  <!DOCTYPE skinconfig PUBLIC "-//FOO//DTD Skin Configuration V0.1//EN" 
"http://example-no-dtd.com/dtd/skinconfig.dtd";>
  <skinconfig>
    <foo>true</foo>
    <bar>false</bar>
  </skinconfig>
  
  
  
  1.1                  ant/src/etc/testcases/taskdefs/skinconfig.dtd
  
  Index: skinconfig.dtd
  ===================================================================
  <!ELEMENT skinconfig (foo, bar?)>
  <!ELEMENT foo (#PCDATA)>
  <!ELEMENT bar (#PCDATA)>
  
  
  
  1.13      +5 -0      
ant/src/testcases/org/apache/tools/ant/taskdefs/XmlPropertyTest.java
  
  Index: XmlPropertyTest.java
  ===================================================================
  RCS file: 
/home/cvs/ant/src/testcases/org/apache/tools/ant/taskdefs/XmlPropertyTest.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- XmlPropertyTest.java      9 Mar 2004 16:48:57 -0000       1.12
  +++ XmlPropertyTest.java      10 Sep 2004 08:50:25 -0000      1.13
  @@ -104,6 +104,11 @@
           doTest("testSemanticInclude", false, false, true, false, true);
       }
   
  +    public void testNeedsCatalog() {
  +        executeTarget("testneedscat");
  +        assertEquals("true", getProject().getProperty("skinconfig.foo"));
  +    }
  +
       /**
        * Actually run a test, finding all input files (and corresponding
        * goldfile)
  
  
  

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

Reply via email to