View Javadoc

1   package org.apache.maven.artifact.ant;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *  http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  
22  import org.apache.tools.ant.BuildException;
23  import org.apache.tools.ant.Project;
24  import org.apache.tools.ant.Task;
25  
26  /**
27   * Task to test context classloader.
28   * 
29   * @author <a href="mailto:hboutemy@apache.org">Herve Boutemy</a>
30   * @version $Id$
31   */
32  public class ClassLoaderTask
33      extends Task
34  {
35      private String set;
36  
37      private String check;
38  
39      public String getSet()
40      {
41          return set;
42      }
43  
44      public void setSet( String set )
45      {
46          this.set = set;
47      }
48  
49      public String getCheck()
50      {
51          return check;
52      }
53  
54      public void setCheck( String check )
55      {
56          this.check = check;
57      }
58  
59      public void execute()
60      {
61          if ( set != null )
62          {
63              getProject().addReference( set, Thread.currentThread().getContextClassLoader() );
64              log( "context classloader stored in " + set, Project.MSG_INFO );
65          }
66  
67          if ( check != null )
68          {
69              ClassLoader classLoader = (ClassLoader) getProject().getReference( check );
70              ClassLoader found = Thread.currentThread().getContextClassLoader();
71  
72              if ( classLoader != found )
73              {
74                  throw new BuildException( "found bad context classloader: " + found + " instead of " + classLoader );
75              }
76  
77              log( "context classloader " + check + " correctly switched back", Project.MSG_INFO );
78          }
79      }
80  }