You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ant.apache.org by "Jack J. Woehr" <ja...@purematrix.com> on 2004/01/12 06:53:44 UTC

Re: DIFF attached, Should Solve It

koji_sekiguchi@excite.co.jp wrote:

> Can you look for the above properties file from ant.jar
> by using <whichresource> task?
> It seems same bug for me..
> I think "adding leading slash" is ant user's option.

Ok, I *THINK* I have it all solved and figured out:

  1. A class in a jar can't have the leading slash.
  2. A resource in a jar can't have the leading slash.

So, here is a diff that removes both leading slash concatenations, along with a test
case that succeeds all ways. The test case:

  1. Finds a class from the file system
  2. Finds a class from a jar
  3. Finds a resource from the file system
  4. Finds a resource from a jar

Its output is:

     dotest:
          [echo] Class search in filesystem yields: file:/usr/local/src/apache/apache_src/ant-antidote/build/classes/org/apache/tools/ant/gui/Antidote.class
          [echo] Class search in jar yields: jar:file:/usr/local/src/apache/apache_src/ant-antidote/build/lib/antidote.jar!/org/apache/tools/ant/gui/Antidote.class
          [echo] Resource search in filesystem yields: file:/usr/local/src/apache/apache_src/ant-antidote/build/classes/org/apache/tools/ant/gui/resources/About.gif
          [echo] Resource search in jar yields: jar:file:/usr/local/src/apache/apache_src/ant-antidote/build/lib/antidote.jar!/org/apache/tools/ant/gui/resources/About.gif

Here's the test case:


     <?xml version="1.0" standalone="yes"?>

     <project name="test-whichresource" default="dotest">
         <target name="dotest">

       <whichresource property="testresult.antidote.class.filesystem"
      class="org.apache.tools.ant.gui.Antidote" classpath="/usr/local/src/apache/apache_src/ant-antidote/build/classes"/>
      <echo message="Class search in filesystem yields: ${testresult.antidote.class.filesystem}"/>

      <whichresource property="testresult.antidote.class.jar"
      class="org.apache.tools.ant.gui.Antidote" classpath="/usr/local/src/apache/apache_src/ant-antidote/build/lib/antidote.jar"/>
      <echo message="Class search in jar yields: ${testresult.antidote.class.jar}"/>

       <whichresource property="testresult.antidote.resource.filesystem"
      resource="org/apache/tools/ant/gui/resources/About.gif" classpath="/usr/local/src/apache/apache_src/ant-antidote/build/classes"/>
      <echo message="Resource search in filesystem yields: ${testresult.antidote.resource.filesystem}"/>

      <whichresource property="testresult.antidote.resource.jar"
      resource="org/apache/tools/ant/gui/resources/About.gif" classpath="/usr/local/src/apache/apache_src/ant-antidote/build/lib/antidote.jar"/>
      <echo message="Resource search in jar yields: ${testresult.antidote.resource.jar}"/>

         </target>

     </project>

The diff that makes this work is attached.

NOW have we got it right? :-)

--
Jack J. Woehr      # We have gone from the horse and buggy
Senior Consultant  # to the moon rocket in one lifetime, but
Purematrix, Inc.   # there has not been a corresponding moral
www.purematrix.com # growth in mankind. - Dwight D. Eisenhower