Author: xavier
Date: Fri Feb 29 04:03:19 2008
New Revision: 632301

URL: http://svn.apache.org/viewvc?rev=632301&view=rev
Log:
FIX: XML entity parsing does not work properly (IVY-737) (thanks to Patrick 
Woodworth)

Added:
    ant/ivy/core/trunk/test/repositories/xml-entities/
    ant/ivy/core/trunk/test/repositories/xml-entities/bar.txt   (with props)
    ant/ivy/core/trunk/test/repositories/xml-entities/foo.txt   (with props)
    ant/ivy/core/trunk/test/repositories/xml-entities/ivy.xml   (with props)
    ant/ivy/core/trunk/test/repositories/xml-entities/ivysettings.xml   (with 
props)
    ant/ivy/core/trunk/test/repositories/xml-entities/module1/
    ant/ivy/core/trunk/test/repositories/xml-entities/module1/ivy-1.0.xml   
(with props)
    ant/ivy/core/trunk/test/repositories/xml-entities/module2/
    ant/ivy/core/trunk/test/repositories/xml-entities/module2/ivy-2.0.xml   
(with props)
Modified:
    ant/ivy/core/trunk/CHANGES.txt
    
ant/ivy/core/trunk/src/java/org/apache/ivy/core/settings/XmlSettingsParser.java
    
ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorUpdater.java
    ant/ivy/core/trunk/src/java/org/apache/ivy/util/XMLHelper.java
    ant/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java

Modified: ant/ivy/core/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/CHANGES.txt?rev=632301&r1=632300&r2=632301&view=diff
==============================================================================
--- ant/ivy/core/trunk/CHANGES.txt (original)
+++ ant/ivy/core/trunk/CHANGES.txt Fri Feb 29 04:03:19 2008
@@ -59,11 +59,13 @@
        Jason Trump
        Tjeerd Verhagen
        John Williams
+       Patrick Woodworth
        Jaroslaw Wypychowski
 
    trunk version
 =====================================
 - FIX: PublishEventsTest fails when Ivy sources are located in a directory 
with a + (IVY-755)
+- FIX: XML entity parsing does not work properly (IVY-737) (thanks to Patrick 
Woodworth)
 
    2.0.0-beta2
 =====================================

Modified: 
ant/ivy/core/trunk/src/java/org/apache/ivy/core/settings/XmlSettingsParser.java
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/core/settings/XmlSettingsParser.java?rev=632301&r1=632300&r2=632301&view=diff
==============================================================================
--- 
ant/ivy/core/trunk/src/java/org/apache/ivy/core/settings/XmlSettingsParser.java 
(original)
+++ 
ant/ivy/core/trunk/src/java/org/apache/ivy/core/settings/XmlSettingsParser.java 
Fri Feb 29 04:03:19 2008
@@ -43,6 +43,7 @@
 import org.apache.ivy.util.url.URLHandlerRegistry;
 import org.xml.sax.Attributes;
 import org.xml.sax.SAXException;
+import org.xml.sax.InputSource;
 import org.xml.sax.helpers.DefaultHandler;
 
 /**
@@ -96,7 +97,9 @@
         InputStream stream = null;
         try {
             stream = URLHandlerRegistry.getDefault().openStream(settingsUrl);
-            SAXParserFactory.newInstance().newSAXParser().parse(stream, this);
+            InputSource inSrc = new InputSource(stream);
+            inSrc.setSystemId(settingsUrl.toExternalForm());
+            
SAXParserFactory.newInstance().newSAXParser().parse(settingsUrl.toExternalForm(),
 this);
         } catch (IOException e) {
             throw e;
         } catch (Exception e) {

Modified: 
ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorUpdater.java
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorUpdater.java?rev=632301&r1=632300&r2=632301&view=diff
==============================================================================
--- 
ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorUpdater.java
 (original)
+++ 
ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorUpdater.java
 Fri Feb 29 04:03:19 2008
@@ -57,6 +57,7 @@
 import org.xml.sax.Attributes;
 import org.xml.sax.SAXException;
 import org.xml.sax.SAXParseException;
+import org.xml.sax.InputSource;
 import org.xml.sax.ext.LexicalHandler;
 import org.xml.sax.helpers.DefaultHandler;
 
@@ -738,7 +739,10 @@
         try {
             UpdaterHandler updaterHandler = new UpdaterHandler(settings, out, 
resolvedRevisions,
                     status, revision, pubdate, ns, replaceInclude, 
confsToExclude, inStreamCtx);
-            XMLHelper.parse(in, null, updaterHandler, updaterHandler);
+            InputSource inSrc = new InputSource(in);
+            if (inStreamCtx != null)
+                inSrc.setSystemId(inStreamCtx.toExternalForm());
+            XMLHelper.parse(inSrc, null, updaterHandler, updaterHandler);
         } catch (ParserConfigurationException e) {
             IllegalStateException ise = new IllegalStateException(
                     "impossible to update Ivy files: parser problem");

Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/util/XMLHelper.java
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/util/XMLHelper.java?rev=632301&r1=632300&r2=632301&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/util/XMLHelper.java (original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/util/XMLHelper.java Fri Feb 29 
04:03:19 2008
@@ -32,6 +32,7 @@
 import org.w3c.dom.Document;
 import org.xml.sax.SAXException;
 import org.xml.sax.SAXNotRecognizedException;
+import org.xml.sax.InputSource;
 import org.xml.sax.ext.LexicalHandler;
 import org.xml.sax.helpers.DefaultHandler;
 
@@ -94,7 +95,9 @@
             throws SAXException, IOException, ParserConfigurationException {
         InputStream xmlStream = 
URLHandlerRegistry.getDefault().openStream(xmlURL);
         try {
-            parse(xmlStream, schema, handler, lHandler);
+            InputSource inSrc = new InputSource(xmlStream);
+            inSrc.setSystemId(xmlURL.toExternalForm());
+            parse(inSrc, schema, handler, lHandler);
         } finally {
             try {
                 xmlStream.close();
@@ -106,6 +109,12 @@
 
     public static void parse(
             InputStream xmlStream, URL schema, DefaultHandler handler, 
LexicalHandler lHandler) 
+            throws SAXException, IOException, ParserConfigurationException {
+        parse(new InputSource(xmlStream), schema, handler, lHandler );
+    }
+
+    public static void parse(
+            InputSource xmlStream, URL schema, DefaultHandler handler, 
LexicalHandler lHandler)
             throws SAXException, IOException, ParserConfigurationException {
         InputStream schemaStream = null;
         try {

Modified: 
ant/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java?rev=632301&r1=632300&r2=632301&view=diff
==============================================================================
--- ant/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java 
(original)
+++ ant/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java 
Fri Feb 29 04:03:19 2008
@@ -235,6 +235,21 @@
         assertTrue(report.hasError());
     }
 
+    public void testResolveWithXmlEntities() throws Exception {
+        Ivy ivy = new Ivy();
+        Throwable th = null;
+        try {
+            ivy.configure(new 
File("test/repositories/xml-entities/ivysettings.xml").toURL());
+            ResolveReport report = ivy.resolve(new 
File("test/repositories/xml-entities/ivy.xml").toURL(),
+                getResolveOptions(new String[] {"*"}));
+            assertNotNull(report);
+            assertFalse(report.hasError());
+        } catch(Throwable e) {
+            th = e;
+        }
+        assertNull(th);
+    }
+
     public void testResolveNoRevisionInPattern() throws Exception {
         // module1 depends on latest version of module2, for which there is no 
revision in the
         // pattern

Added: ant/ivy/core/trunk/test/repositories/xml-entities/bar.txt
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/repositories/xml-entities/bar.txt?rev=632301&view=auto
==============================================================================
--- ant/ivy/core/trunk/test/repositories/xml-entities/bar.txt (added)
+++ ant/ivy/core/trunk/test/repositories/xml-entities/bar.txt Fri Feb 29 
04:03:19 2008
@@ -0,0 +1 @@
+    <settings defaultResolver="myresolver"/>

Propchange: ant/ivy/core/trunk/test/repositories/xml-entities/bar.txt
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: ant/ivy/core/trunk/test/repositories/xml-entities/foo.txt
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/repositories/xml-entities/foo.txt?rev=632301&view=auto
==============================================================================
--- ant/ivy/core/trunk/test/repositories/xml-entities/foo.txt (added)
+++ ant/ivy/core/trunk/test/repositories/xml-entities/foo.txt Fri Feb 29 
04:03:19 2008
@@ -0,0 +1,3 @@
+    <dependencies>
+        <dependency conf="myconf->*" org="myorg" name="module2" 
rev="latest.integration" />
+    </dependencies>

Propchange: ant/ivy/core/trunk/test/repositories/xml-entities/foo.txt
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: ant/ivy/core/trunk/test/repositories/xml-entities/ivy.xml
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/repositories/xml-entities/ivy.xml?rev=632301&view=auto
==============================================================================
--- ant/ivy/core/trunk/test/repositories/xml-entities/ivy.xml (added)
+++ ant/ivy/core/trunk/test/repositories/xml-entities/ivy.xml Fri Feb 29 
04:03:19 2008
@@ -0,0 +1,29 @@
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on an
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied.  See the License for the
+   specific language governing permissions and limitations
+   under the License.
+-->
+<!DOCTYPE ivy-module [
+       <!ENTITY foo SYSTEM "foo.txt">
+]>
+<ivy-module version="1.3">
+    <info organisation="myorg" module="moduleB" revision="1.0"/>
+    <configurations>
+       <conf name="myconf"/>
+    </configurations>
+    <publications/>
+    &foo;
+</ivy-module>

Propchange: ant/ivy/core/trunk/test/repositories/xml-entities/ivy.xml
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: ant/ivy/core/trunk/test/repositories/xml-entities/ivysettings.xml
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/repositories/xml-entities/ivysettings.xml?rev=632301&view=auto
==============================================================================
--- ant/ivy/core/trunk/test/repositories/xml-entities/ivysettings.xml (added)
+++ ant/ivy/core/trunk/test/repositories/xml-entities/ivysettings.xml Fri Feb 
29 04:03:19 2008
@@ -0,0 +1,33 @@
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on an
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied.  See the License for the
+   specific language governing permissions and limitations
+   under the License.    
+-->
+<!DOCTYPE ivysettings [
+       <!ENTITY bar SYSTEM "bar.txt">
+]>
+<ivysettings>
+    &bar;
+    <resolvers>
+        <url name="myresolver">
+            <ivy pattern="${ivy.settings.dir}/[module]/ivy-[revision].xml"/>
+            <artifact 
pattern="${ivy.settings.dir}/[module]/[artifact]-[revision].[ext]"/>
+        </url>
+    </resolvers>
+    <modules>
+        <module organisation="myorg" name=".*" resolver="myresolver"/>
+    </modules>
+</ivysettings>

Propchange: ant/ivy/core/trunk/test/repositories/xml-entities/ivysettings.xml
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: ant/ivy/core/trunk/test/repositories/xml-entities/module1/ivy-1.0.xml
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/repositories/xml-entities/module1/ivy-1.0.xml?rev=632301&view=auto
==============================================================================
--- ant/ivy/core/trunk/test/repositories/xml-entities/module1/ivy-1.0.xml 
(added)
+++ ant/ivy/core/trunk/test/repositories/xml-entities/module1/ivy-1.0.xml Fri 
Feb 29 04:03:19 2008
@@ -0,0 +1,25 @@
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on an
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied.  See the License for the
+   specific language governing permissions and limitations
+   under the License.
+-->
+<ivy-module version="1.3">
+    <info organisation="myorg" module="module1" revision="1.0"/>
+    <configurations>
+       <conf name="myconf"/>
+    </configurations>
+    <publications/>
+</ivy-module>

Propchange: 
ant/ivy/core/trunk/test/repositories/xml-entities/module1/ivy-1.0.xml
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: ant/ivy/core/trunk/test/repositories/xml-entities/module2/ivy-2.0.xml
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/repositories/xml-entities/module2/ivy-2.0.xml?rev=632301&view=auto
==============================================================================
--- ant/ivy/core/trunk/test/repositories/xml-entities/module2/ivy-2.0.xml 
(added)
+++ ant/ivy/core/trunk/test/repositories/xml-entities/module2/ivy-2.0.xml Fri 
Feb 29 04:03:19 2008
@@ -0,0 +1,28 @@
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on an
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied.  See the License for the
+   specific language governing permissions and limitations
+   under the License.    
+-->
+<ivy-module version="1.3">
+    <info organisation="myorg" module="module2" revision="2.0"/>
+    <configurations>
+       <conf name="myconf"/>
+    </configurations>
+    <publications/>
+    <dependencies>
+        <dependency conf="myconf->*" org="myorg" name="module1" rev="1.0" />
+    </dependencies>
+</ivy-module>

Propchange: 
ant/ivy/core/trunk/test/repositories/xml-entities/module2/ivy-2.0.xml
------------------------------------------------------------------------------
    svn:mime-type = text/plain


Reply via email to