You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by pe...@apache.org on 2004/12/10 16:18:57 UTC

cvs commit: ant/src/testcases/org/apache/tools/ant/util ClasspathUtilsTest.java

peterreilly    2004/12/10 07:18:57

  Modified:    .        WHATSNEW
               src/main/org/apache/tools/ant/util ClasspathUtils.java
  Added:       src/testcases/org/apache/tools/ant/util
                        ClasspathUtilsTest.java
  Log:
  with the bugzilla change 30161 it is not necessary to place
   Path.systemClasspath in the antclassloader
  Doing so causes resources to appear twice
  
  Revision  Changes    Path
  1.693     +4 -0      ant/WHATSNEW
  
  Index: WHATSNEW
  ===================================================================
  RCS file: /home/cvs/ant/WHATSNEW,v
  retrieving revision 1.692
  retrieving revision 1.693
  diff -u -r1.692 -r1.693
  --- WHATSNEW	7 Dec 2004 10:29:32 -0000	1.692
  +++ WHATSNEW	10 Dec 2004 15:18:57 -0000	1.693
  @@ -174,6 +174,10 @@
   * Incorrect classloader parent in junittask when using with ant-junit.jar and junit.jar
     not in the project classloader. Bugzilla report 28474.
   
  +* getResources() on the classloader returned by ClasspathUtils would see each resource
  +  twice - if the resource is in the project classpath and if the classloader is requested
  +  with a null path.
  +
   Changes from Ant 1.6.1 to Ant 1.6.2
   ===================================
   
  
  
  
  1.13      +7 -9      ant/src/main/org/apache/tools/ant/util/ClasspathUtils.java
  
  Index: ClasspathUtils.java
  ===================================================================
  RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/util/ClasspathUtils.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- ClasspathUtils.java	14 Apr 2004 15:42:08 -0000	1.12
  +++ ClasspathUtils.java	10 Dec 2004 15:18:57 -0000	1.13
  @@ -156,13 +156,13 @@
        * 'ant.reuse.loader' this will try to reuse the perviously
        * created loader with that id, and of course store it there upon
        * creation.</p>
  -     * @param path Path object to be used as classpath for this classloader
  -     * @param loaderId identification for this Loader,
  +     * @param path          Path object to be used as classpath for this classloader
  +     * @param loaderId      identification for this Loader,
        * @param reverseLoader if set to true this new loader will take
  -     * precedence over it's parent (which is contra the regular
  -     * @param p Ant Project where the handled components are living in.
  -     * classloader behaviour)
  -     * @return ClassLoader that uses the Path as its classpath.
  +     *                      precedence over it's parent (which is contra the regular
  +     *                      classloader behaviour)
  +     * @param p             Ant Project where the handled components are living in.
  +     * @return              ClassLoader that uses the Path as its classpath.
        */
       public static ClassLoader getClassLoaderForPath(
           Project p, Path path, String loaderId, boolean reverseLoader,
  @@ -205,9 +205,7 @@
           Project p,
           Path path,
           boolean reverseLoader) {
  -
  -        AntClassLoader acl = p.createClassLoader(path != null
  -                                                 ? path : Path.systemClasspath);
  +        AntClassLoader acl = p.createClassLoader(path);
           if (reverseLoader) {
               acl.setParentFirst(false);
               acl.addJavaLibraries();
  
  
  
  1.1                  ant/src/testcases/org/apache/tools/ant/util/ClasspathUtilsTest.java
  
  Index: ClasspathUtilsTest.java
  ===================================================================
  /*
   * Copyright  2000-2002,2004 The Apache Software Foundation
   *
   *  Licensed 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.
   *
   */
  
  package org.apache.tools.ant.util;
  
  import java.io.File;
  import java.io.IOException;
  import java.util.Enumeration;
  import junit.framework.TestCase;
  
  import org.apache.tools.ant.BuildException;
  import org.apache.tools.ant.Project;
  import org.apache.tools.ant.types.Path;
  
  
  /**
   * Test case for ClasspathUtils
   *
   */
  public class ClasspathUtilsTest extends TestCase {
  
      private Project p;
  
      public ClasspathUtilsTest(String name) {
          super(name);
      }
  
      public void setUp() {
          p = new Project();
          p.init();
      }
  
  
      public void testOnlyOneInstance() {
          Enumeration enumeration;
          String list = "";
          ClassLoader c = ClasspathUtils.getUniqueClassLoaderForPath(p, (Path) null, false);
          try {
              enumeration = c.getResources(
                  "org/apache/tools/ant/taskdefs/defaults.properties");
          } catch (IOException e) {
              throw new BuildException(
                  "Could not get the defaults.properties resource");
          }
          int count = 0;
          while (enumeration.hasMoreElements()) {
              list = list + " " + enumeration.nextElement();
              count++;
          }
          assertTrue("Should be only one and not " + count + " " + list, count == 1);
      }
  }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org