You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by co...@apache.org on 2002/05/30 04:56:23 UTC

cvs commit: jakarta-ant/src/testcases/org/apache/tools/ant AntClassLoaderTest.java

conor       02/05/29 19:56:23

  Modified:    src/main/org/apache/tools/ant Tag: ANT_15_BRANCH
                        AntClassLoader.java Project.java
  Added:       src/testcases/org/apache/tools/ant Tag: ANT_15_BRANCH
                        AntClassLoaderTest.java
  Log:
  Handle case where class loader is still active after it has been cleaned up
  or the project has ended.
  
  PR:	9138
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.52.2.2  +5 -5      jakarta-ant/src/main/org/apache/tools/ant/AntClassLoader.java
  
  Index: AntClassLoader.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/AntClassLoader.java,v
  retrieving revision 1.52.2.1
  retrieving revision 1.52.2.2
  diff -u -w -u -r1.52.2.1 -r1.52.2.2
  --- AntClassLoader.java	1 May 2002 06:18:37 -0000	1.52.2.1
  +++ AntClassLoader.java	30 May 2002 02:56:23 -0000	1.52.2.2
  @@ -391,7 +391,8 @@
           if (LoaderUtils.isContextLoaderAvailable()) {
               savedContextLoader = LoaderUtils.getContextClassLoader();
               ClassLoader loader = this;
  -            if ("only".equals(project.getProperty("build.sysclasspath"))) {
  +            if (project != null 
  +                && "only".equals(project.getProperty("build.sysclasspath"))) {
                   loader = this.getClass().getClassLoader();
               }
               LoaderUtils.setContextClassLoader(loader);
  @@ -1103,10 +1104,7 @@
        * Cleans up any resources held by this classloader. Any open archive
        * files are closed.
        */
  -    public void cleanup() {
  -        project.removeBuildListener(this);
  -        pathComponents = null;
  -        project = null;
  +    public synchronized void cleanup() {
           for (Enumeration e = zipFiles.elements(); e.hasMoreElements();) {
               ZipFile zipFile = (ZipFile)e.nextElement();
               try {
  @@ -1133,6 +1131,8 @@
        * @param event the buildFinished event
        */
       public void buildFinished(BuildEvent event) {
  +        project.removeBuildListener(this);
  +        project = null;
           cleanup();
       }
   
  
  
  
  1.108.2.2 +3 -3      jakarta-ant/src/main/org/apache/tools/ant/Project.java
  
  Index: Project.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/Project.java,v
  retrieving revision 1.108.2.1
  retrieving revision 1.108.2.2
  diff -u -w -u -r1.108.2.1 -r1.108.2.2
  --- Project.java	28 May 2002 13:53:13 -0000	1.108.2.1
  +++ Project.java	30 May 2002 02:56:23 -0000	1.108.2.2
  @@ -83,7 +83,7 @@
    *
    * @author duncan@x180.com
    *
  - * @version $Revision: 1.108.2.1 $
  + * @version $Revision: 1.108.2.2 $
    */
   
   public class Project {
  @@ -1755,7 +1755,7 @@
       /**
        * Sends a "build started" event to the build listeners for this project.
        */
  -    protected void fireBuildStarted() {
  +    public void fireBuildStarted() {
           BuildEvent event = new BuildEvent(this);
           for (int i = 0; i < listeners.size(); i++) {
               BuildListener listener = (BuildListener) listeners.elementAt(i);
  @@ -1769,7 +1769,7 @@
        *                  failure. May be <code>null</code>, indicating
        *                  a successful build.
        */
  -    protected void fireBuildFinished(Throwable exception) {
  +    public void fireBuildFinished(Throwable exception) {
           BuildEvent event = new BuildEvent(this);
           event.setException(exception);
           for (int i = 0; i < listeners.size(); i++) {
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.1   +112 -0    jakarta-ant/src/testcases/org/apache/tools/ant/Attic/AntClassLoaderTest.java
  
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>


Re: cvs commit: jakarta-ant/src/testcases/org/apache/tools/ant AntClassLoaderTest.java

Posted by Conor MacNeill <co...@cortexebusiness.com.au>.
conor@apache.org wrote:
> conor       02/05/29 19:56:23
> 
>   Modified:    src/main/org/apache/tools/ant Tag: ANT_15_BRANCH
>                         AntClassLoader.java Project.java
>   Added:       src/testcases/org/apache/tools/ant Tag: ANT_15_BRANCH
>                         AntClassLoaderTest.java
>   Log:
>   Handle case where class loader is still active after it has been cleaned up
>   or the project has ended.
>   
>   PR:	9138
>   

One thing to note in this change. I have made the fireBuildStarted and 
fireBuilkdFinished methods public in Project. I think this is overdue to 
all people to more easily embed Project without trying to embed Main 
too. It was necessary in the test case I added.

Conor




>   Revision  Changes    Path
>   No                   revision
>   
>   
>   No                   revision
>   
>   
>   1.52.2.2  +5 -5      jakarta-ant/src/main/org/apache/tools/ant/AntClassLoader.java
>   
>   Index: AntClassLoader.java
>   ===================================================================
>   RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/AntClassLoader.java,v
>   retrieving revision 1.52.2.1
>   retrieving revision 1.52.2.2
>   diff -u -w -u -r1.52.2.1 -r1.52.2.2
>   --- AntClassLoader.java	1 May 2002 06:18:37 -0000	1.52.2.1
>   +++ AntClassLoader.java	30 May 2002 02:56:23 -0000	1.52.2.2
>   @@ -391,7 +391,8 @@
>            if (LoaderUtils.isContextLoaderAvailable()) {
>                savedContextLoader = LoaderUtils.getContextClassLoader();
>                ClassLoader loader = this;
>   -            if ("only".equals(project.getProperty("build.sysclasspath"))) {
>   +            if (project != null 
>   +                && "only".equals(project.getProperty("build.sysclasspath"))) {
>                    loader = this.getClass().getClassLoader();
>                }
>                LoaderUtils.setContextClassLoader(loader);
>   @@ -1103,10 +1104,7 @@
>         * Cleans up any resources held by this classloader. Any open archive
>         * files are closed.
>         */
>   -    public void cleanup() {
>   -        project.removeBuildListener(this);
>   -        pathComponents = null;
>   -        project = null;
>   +    public synchronized void cleanup() {
>            for (Enumeration e = zipFiles.elements(); e.hasMoreElements();) {
>                ZipFile zipFile = (ZipFile)e.nextElement();
>                try {
>   @@ -1133,6 +1131,8 @@
>         * @param event the buildFinished event
>         */
>        public void buildFinished(BuildEvent event) {
>   +        project.removeBuildListener(this);
>   +        project = null;
>            cleanup();
>        }
>    
>   
>   
>   
>   1.108.2.2 +3 -3      jakarta-ant/src/main/org/apache/tools/ant/Project.java
>   
>   Index: Project.java
>   ===================================================================
>   RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/Project.java,v
>   retrieving revision 1.108.2.1
>   retrieving revision 1.108.2.2
>   diff -u -w -u -r1.108.2.1 -r1.108.2.2
>   --- Project.java	28 May 2002 13:53:13 -0000	1.108.2.1
>   +++ Project.java	30 May 2002 02:56:23 -0000	1.108.2.2
>   @@ -83,7 +83,7 @@
>     *
>     * @author duncan@x180.com
>     *
>   - * @version $Revision: 1.108.2.1 $
>   + * @version $Revision: 1.108.2.2 $
>     */
>    
>    public class Project {
>   @@ -1755,7 +1755,7 @@
>        /**
>         * Sends a "build started" event to the build listeners for this project.
>         */
>   -    protected void fireBuildStarted() {
>   +    public void fireBuildStarted() {
>            BuildEvent event = new BuildEvent(this);
>            for (int i = 0; i < listeners.size(); i++) {
>                BuildListener listener = (BuildListener) listeners.elementAt(i);
>   @@ -1769,7 +1769,7 @@
>         *                  failure. May be <code>null</code>, indicating
>         *                  a successful build.
>         */
>   -    protected void fireBuildFinished(Throwable exception) {
>   +    public void fireBuildFinished(Throwable exception) {
>            BuildEvent event = new BuildEvent(this);
>            event.setException(exception);
>            for (int i = 0; i < listeners.size(); i++) {
>   
>   
>   
>   No                   revision
>   
>   
>   No                   revision
>   
>   
>   1.1.2.1   +112 -0    jakarta-ant/src/testcases/org/apache/tools/ant/Attic/AntClassLoaderTest.java
>   
>   
>   
>   
> 
> --
> To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
> For additional commands, e-mail: <ma...@jakarta.apache.org>
> 
> 
> 



--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>