ant-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bode...@apache.org
Subject svn commit: r1001756 - in /ant/core/trunk: WHATSNEW src/main/org/apache/tools/ant/helper/ProjectHelper2.java src/main/org/apache/tools/ant/launch/Locator.java src/tests/antunit/taskdefs/taskdef-test.xml
Date Mon, 27 Sep 2010 14:33:08 GMT
Author: bodewig
Date: Mon Sep 27 14:33:08 2010
New Revision: 1001756

URL: http://svn.apache.org/viewvc?rev=1001756&view=rev
Log:
according to the javadocs of JarURLConnection the separator is !/ not ! - this allows dealing
with jars in directories that contain a ! in their name, as long as it is not at the end of
the directory name.  PR 50007

Added:
    ant/core/trunk/src/tests/antunit/taskdefs/taskdef-test.xml   (with props)
Modified:
    ant/core/trunk/WHATSNEW
    ant/core/trunk/src/main/org/apache/tools/ant/helper/ProjectHelper2.java
    ant/core/trunk/src/main/org/apache/tools/ant/launch/Locator.java

Modified: ant/core/trunk/WHATSNEW
URL: http://svn.apache.org/viewvc/ant/core/trunk/WHATSNEW?rev=1001756&r1=1001755&r2=1001756&view=diff
==============================================================================
--- ant/core/trunk/WHATSNEW (original)
+++ ant/core/trunk/WHATSNEW Mon Sep 27 14:33:08 2010
@@ -153,6 +153,10 @@ Fixed bugs:
  * runant.py would swallow the first argument if CLASSPATH wasn't set.
    Bugzilla Report 49963.
 
+ * <taskdef> failed to load resources from jar files contained in a
+   directory that has a "!" in its name.
+   Bugzilla Report 50007.
+
 Other changes:
 --------------
 

Modified: ant/core/trunk/src/main/org/apache/tools/ant/helper/ProjectHelper2.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/helper/ProjectHelper2.java?rev=1001756&r1=1001755&r2=1001756&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/helper/ProjectHelper2.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/helper/ProjectHelper2.java Mon Sep 27 14:33:08
2010
@@ -279,7 +279,7 @@ public class ProjectHelper2 extends Proj
                 uri = url.toString();
                 int pling = -1;
                 if (uri.startsWith("jar:file")
-                    && (pling = uri.indexOf("!")) > -1) {
+                    && (pling = uri.indexOf("!/")) > -1) {
                     zf = new ZipFile(org.apache.tools.ant.launch.Locator
                                      .fromJarURI(uri), "UTF-8");
                     inputStream =

Modified: ant/core/trunk/src/main/org/apache/tools/ant/launch/Locator.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/launch/Locator.java?rev=1001756&r1=1001755&r2=1001756&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/launch/Locator.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/launch/Locator.java Mon Sep 27 14:33:08 2010
@@ -281,7 +281,7 @@ public final class Locator {
      * @since Ant1.7.1
      */
     public static String fromJarURI(String uri) {
-        int pling = uri.indexOf('!');
+        int pling = uri.indexOf("!/");
         String jarName = uri.substring("jar:".length(), pling);
         return fromURI(jarName);
     }

Added: ant/core/trunk/src/tests/antunit/taskdefs/taskdef-test.xml
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/tests/antunit/taskdefs/taskdef-test.xml?rev=1001756&view=auto
==============================================================================
--- ant/core/trunk/src/tests/antunit/taskdefs/taskdef-test.xml (added)
+++ ant/core/trunk/src/tests/antunit/taskdefs/taskdef-test.xml Mon Sep 27 14:33:08 2010
@@ -0,0 +1,107 @@
+<?xml version="1.0"?>
+<!--
+  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.
+-->
+<project default="antunit" xmlns:au="antlib:org.apache.ant.antunit">
+  <import file="../antunit-base.xml" />
+
+  <target name="setUp">
+    <mkdir dir="${input}/org/example"/>
+    <echoxml file="${input}/org/example/antlib.xml">
+      <antlib>
+        <taskdef name="echooo"
+                 classname="org.apache.tools.ant.taskdefs.Echo"/>
+      </antlib>
+    </echoxml>
+  </target>
+
+  <target name="testPlainDir" depends="setUp">
+    <tempfile property="jar" deleteonexit="true"
+              destdir="${java.io.tmpdir}" prefix="test" suffix=".jar"/>
+    <jar destfile="${jar}">
+      <fileset dir="${input}"/>
+    </jar>
+    <taskdef resource="org/example/antlib.xml"
+             classpath="${jar}"
+             uri="urn:test:plain"/>
+    <echooo xmlns="urn:test:plain">Hello</echooo>
+    <au:assertLogContains text="Hello"/>
+  </target>
+
+  <target name="testDirWithPling" depends="setUp"
+          description="https://issues.apache.org/bugzilla/show_bug.cgi?id=50007">
+    <property name="dir" location="${java.io.tmpdir}/pl!ng"/>
+    <mkdir dir="${dir}"/>
+    <tempfile property="jar" deleteonexit="true" destdir="${dir}"
+              prefix="test" suffix=".jar"/>
+    <jar destfile="${jar}">
+      <fileset dir="${input}"/>
+    </jar>
+    <taskdef resource="org/example/antlib.xml"
+             classpath="${jar}"
+             uri="urn:test:indir"/>
+    <echooo xmlns="urn:test:indir">Hello</echooo>
+    <au:assertLogContains text="Hello"/>
+  </target>
+
+  <!-- fails because URLConnection.connect() fails on the JAR URL returned
+       by ClassLoader.getResources() -->
+  <target name="NOtestDirWithPlingAtEnd" depends="setUp"
+          description="https://issues.apache.org/bugzilla/show_bug.cgi?id=50007">
+    <property name="dir" location="${java.io.tmpdir}/pling!"/>
+    <mkdir dir="${dir}"/>
+    <tempfile property="jar" deleteonexit="true" destdir="${dir}"
+              prefix="test" suffix=".jar"/>
+    <jar destfile="${jar}">
+      <fileset dir="${input}"/>
+    </jar>
+    <taskdef resource="org/example/antlib.xml"
+             classpath="${jar}"
+             uri="urn:test:atend"/>
+    <echooo xmlns="urn:test:atend">Hello</echooo>
+    <au:assertLogContains text="Hello"/>
+  </target>
+
+  <target name="testPlingInJar" depends="setUp">
+    <tempfile property="jar" deleteonexit="true"
+              destdir="${java.io.tmpdir}" prefix="test" suffix=".jar"/>
+    <move file="${input}/org/example/antlib.xml"
+          tofile="${input}/org/examp!e/antlib.xml"/>
+    <jar destfile="${jar}">
+      <fileset dir="${input}"/>
+    </jar>
+    <taskdef resource="org/examp!e/antlib.xml"
+             classpath="${jar}"
+             uri="urn:test:injar"/>
+    <echooo xmlns="urn:test:injar">Hello</echooo>
+    <au:assertLogContains text="Hello"/>
+  </target>
+
+  <target name="testPlingInJarAtEnd" depends="setUp">
+    <tempfile property="jar" deleteonexit="true"
+              destdir="${java.io.tmpdir}" prefix="test" suffix=".jar"/>
+    <move file="${input}/org/example/antlib.xml"
+          tofile="${input}/org/example!/antlib.xml"/>
+    <jar destfile="${jar}">
+      <fileset dir="${input}"/>
+    </jar>
+    <taskdef resource="org/example!/antlib.xml"
+             classpath="${jar}"
+             uri="urn:test:injaratend"/>
+    <echooo xmlns="urn:test:injaratend">Hello</echooo>
+    <au:assertLogContains text="Hello"/>
+  </target>
+</project>

Propchange: ant/core/trunk/src/tests/antunit/taskdefs/taskdef-test.xml
------------------------------------------------------------------------------
    svn:eol-style = native



Mime
View raw message