View Javadoc

1   package org.apache.maven.xdoc;
2   
3   /* ====================================================================
4    *   Licensed to the Apache Software Foundation (ASF) under one or more
5    *   contributor license agreements.  See the NOTICE file distributed with
6    *   this work for additional information regarding copyright ownership.
7    *   The ASF licenses this file to You under the Apache License, Version 2.0
8    *   (the "License"); you may not use this file except in compliance with
9    *   the License.  You may obtain a copy of the License at
10   *
11   *       http://www.apache.org/licenses/LICENSE-2.0
12   *
13   *   Unless required by applicable law or agreed to in writing, software
14   *   distributed under the License is distributed on an "AS IS" BASIS,
15   *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16   *   See the License for the specific language governing permissions and
17   *   limitations under the License.
18   * ====================================================================
19   */
20  
21  import org.apache.commons.jelly.JellyTagException;
22  import org.apache.commons.jelly.MissingAttributeException;
23  import org.apache.commons.jelly.TagSupport;
24  import org.apache.commons.jelly.XMLOutput;
25  
26  import com.werken.forehead.ForeheadClassLoader;
27  
28  /**
29   * Return to the old classloader
30   * 
31   * @see GrabClassLoaderTag
32   * 
33   * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton </a>
34   * @version 1.0
35   */
36  public class UnGrabClassLoaderTag extends TagSupport {
37      /* 
38       * @see org.apache.commons.jelly.Tag#doTag(org.apache.commons.jelly.XMLOutput)
39       */
40      public void doTag(XMLOutput arg0) throws MissingAttributeException, JellyTagException {
41          if (getContext() == null) {
42              throw new JellyTagException("The current MavenContext is null!");
43          }
44          
45          ForeheadClassLoader currentClassLoader = null;
46          try {
47              currentClassLoader = (ForeheadClassLoader) getContext().getClassLoader();
48          } catch (ClassCastException e) {
49              throw new JellyTagException("The current classloader in the MavenContext is not an instance of ForeheadClassLoader");
50          }
51          
52          if (currentClassLoader == null) {
53              throw new JellyTagException("No classloader found in the current MavenContext");
54          }
55          
56          ClassLoader oldClassLoader = currentClassLoader.getParent();
57          getContext().setClassLoader(oldClassLoader);
58      }
59  }