WebManagerWrapper.java

00001 
00025 package org.objectweb.jonas_web.deployment.lib.wrapper;
00026 
00027 import java.lang.reflect.InvocationTargetException;
00028 import java.lang.reflect.Method;
00029 import java.net.URL;
00030 import java.net.URLClassLoader;
00031 
00032 import org.objectweb.jonas_web.deployment.api.WebContainerDeploymentDesc;
00033 import org.objectweb.jonas_web.deployment.api.WebContainerDeploymentDescException;
00034 
00035 import org.objectweb.jonas.common.Log;
00036 import org.objectweb.jonas.server.LoaderManager;
00037 
00038 import org.objectweb.util.monolog.api.BasicLevel;
00039 import org.objectweb.util.monolog.api.Logger;
00040 
00047 public class WebManagerWrapper {
00048 
00052     private static Logger logger = Log.getLogger(Log.JONAS_EAR_PREFIX);
00053 
00057     private static final String WEBMANAGER_CLASSNAME = "org.objectweb.jonas_web.deployment.lib.WebDeploymentDescManager";
00058 
00062     private WebManagerWrapper() { }
00063 
00075     public static WebContainerDeploymentDesc getDeploymentDesc(URL url, ClassLoader moduleCL, ClassLoader earCL)
00076             throws WebContainerDeploymentDescException {
00077         LoaderManager lm = LoaderManager.getInstance();
00078         WebContainerDeploymentDesc webDD = null;
00079 
00080         try {
00081             ClassLoader tools = lm.getToolsLoader();
00082             Class manager = tools.loadClass(WEBMANAGER_CLASSNAME);
00083             Method m = manager.getDeclaredMethod("getInstance", new Class[] {});
00084             Object instance = m.invoke(null, new Object[] {});
00085             m = manager.getDeclaredMethod("getDeploymentDesc", new Class[] {URL.class, ClassLoader.class,
00086                     ClassLoader.class});
00087             webDD = (WebContainerDeploymentDesc) m.invoke(instance, new Object[] {url, moduleCL, earCL});
00088         } catch (InvocationTargetException ite) {
00089             Throwable t = ite.getTargetException();
00090             if (WebContainerDeploymentDescException.class.isInstance(t)) {
00091                 throw (WebContainerDeploymentDescException) ite.getTargetException();
00092             } else {
00093                 throw new WebContainerDeploymentDescException("WebDeploymentDescManager.getDeploymentDesc fails", t);
00094             }
00095         } catch (Exception e) {
00096             // TODO add i18n here
00097             throw new WebContainerDeploymentDescException("Problems when using reflection on WebDeploymentDescManager", e);
00098         }
00099 
00100         return webDD;
00101     }
00102 
00110     public static void setAltDD(URLClassLoader earClassLoader, URL[] warUrls, URL[] warsAltDDs) {
00111         LoaderManager lm = LoaderManager.getInstance();
00112 
00113         try {
00114             ClassLoader tools = lm.getToolsLoader();
00115             Class manager = tools.loadClass(WEBMANAGER_CLASSNAME);
00116             Method m = manager.getDeclaredMethod("getInstance", new Class[] {});
00117             Object instance = m.invoke(null, new Object[] {});
00118             m = manager.getDeclaredMethod("setAltDD", new Class[] {ClassLoader.class, URL[].class, URL[].class});
00119             m.invoke(instance, new Object[] {earClassLoader, warUrls, warsAltDDs});
00120         } catch (Exception e) {
00121             // Should never occurs
00122             logger.log(BasicLevel.ERROR, e);
00123         }
00124     }
00125 
00131     public static void setParsingWithValidation(boolean b) {
00132         LoaderManager lm = LoaderManager.getInstance();
00133 
00134         try {
00135             ClassLoader tools = lm.getToolsLoader();
00136             Class manager = tools.loadClass(WEBMANAGER_CLASSNAME);
00137             Method m = manager.getDeclaredMethod("setParsingWithValidation", new Class[] {boolean.class});
00138             m.invoke(null, new Object[] {new Boolean(b)});
00139         } catch (Exception e) {
00140             // Should never occurs
00141             logger.log(BasicLevel.ERROR, e);
00142         }
00143     }
00144 
00150     public static void removeCache(ClassLoader classLoader) {
00151         LoaderManager lm = LoaderManager.getInstance();
00152 
00153         try {
00154             ClassLoader tools = lm.getToolsLoader();
00155             Class manager = tools.loadClass(WEBMANAGER_CLASSNAME);
00156             Method m = manager.getDeclaredMethod("getInstance", new Class[] {});
00157             Object instance = m.invoke(null, new Object[] {});
00158             m = manager.getDeclaredMethod("removeCache", new Class[] {ClassLoader.class});
00159             m.invoke(instance, new Object[] {classLoader});
00160         } catch (Exception e) {
00161             // Should never occurs
00162             logger.log(BasicLevel.ERROR, e);
00163         }
00164     }
00165 
00176     public static WebContainerDeploymentDesc getDeploymentDesc(String warName, ClassLoader cl)
00177             throws WebContainerDeploymentDescException {
00178         LoaderManager lm = LoaderManager.getInstance();
00179         WebContainerDeploymentDesc desc = null;
00180 
00181         try {
00182             ClassLoader tools = lm.getToolsLoader();
00183             Class manager = tools.loadClass(WEBMANAGER_CLASSNAME);
00184             Method m = manager.getDeclaredMethod("getDeploymentDesc", new Class[] {String.class, ClassLoader.class});
00185             desc = (WebContainerDeploymentDesc) m.invoke(null, new Object[] {warName, cl});
00186         } catch (InvocationTargetException ite) {
00187             Throwable t = ite.getTargetException();
00188             if (WebContainerDeploymentDescException.class.isInstance(t)) {
00189                 throw (WebContainerDeploymentDescException) ite.getTargetException();
00190             } else {
00191                 throw new WebContainerDeploymentDescException("WebDeploymentDescManager.getDeploymentDesc fails", t);
00192             }
00193         } catch (Exception e) {
00194             // TODO add i18n here
00195             throw new WebContainerDeploymentDescException("Problems when using reflection on WebDeploymentDescManager", e);
00196         }
00197 
00198         return desc;
00199     }
00200 
00201 }

Generated on Tue Feb 15 15:05:58 2005 for JOnAS by  doxygen 1.3.9.1