WSManagerWrapper.java

00001 
00025 package org.objectweb.jonas_ws.deployment.lib.wrapper;
00026 
00027 import java.lang.reflect.InvocationTargetException;
00028 import java.lang.reflect.Method;
00029 import java.net.URL;
00030 
00031 import org.objectweb.jonas_ws.deployment.api.WSDeploymentDesc;
00032 import org.objectweb.jonas_ws.deployment.api.WSDeploymentDescException;
00033 
00034 import org.objectweb.jonas.common.Log;
00035 import org.objectweb.jonas.server.LoaderManager;
00036 
00037 import org.objectweb.util.monolog.api.BasicLevel;
00038 import org.objectweb.util.monolog.api.Logger;
00039 
00040 
00047 public class WSManagerWrapper {
00048 
00052     private static final String WS_MANAGER_CLASSNAME = "org.objectweb.jonas_ws.deployment.lib.WSDeploymentDescManager";
00053 
00057     private static Logger logger = Log.getLogger(Log.JONAS_EAR_PREFIX);
00058 
00062     private WSManagerWrapper() { }
00063 
00075     public static WSDeploymentDesc getDeploymentDesc(URL url, ClassLoader moduleCL, ClassLoader earCL)
00076     throws WSDeploymentDescException {
00077         LoaderManager lm = LoaderManager.getInstance();
00078         WSDeploymentDesc wsDD = null;
00079 
00080         try {
00081             ClassLoader tools = lm.getToolsLoader();
00082             Class manager = tools.loadClass(WS_MANAGER_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             wsDD = (WSDeploymentDesc) m.invoke(instance, new Object[] {url, moduleCL, earCL});
00088         } catch (InvocationTargetException ite) {
00089             Throwable t = ite.getTargetException();
00090             if (WSDeploymentDescException.class.isInstance(t)) {
00091                 throw (WSDeploymentDescException) ite.getTargetException();
00092             } else {
00093                 throw new WSDeploymentDescException("WSDeploymentDescManager.getDeploymentDesc fails", t);
00094             }
00095         } catch (Exception e) {
00096             // TODO add i18n here
00097             throw new WSDeploymentDescException("Problems when using reflection on WSDeploymentDescManager", e);
00098         }
00099 
00100         return wsDD;
00101     }
00102 
00115     public static WSDeploymentDesc getDeploymentDesc(URL url, URL unpackedURL, ClassLoader moduleCL, ClassLoader earCL)
00116     throws WSDeploymentDescException {
00117         LoaderManager lm = LoaderManager.getInstance();
00118         WSDeploymentDesc wsDD = null;
00119 
00120         try {
00121             ClassLoader tools = lm.getToolsLoader();
00122             Class manager = tools.loadClass(WS_MANAGER_CLASSNAME);
00123             Method m = manager.getDeclaredMethod("getInstance", new Class[] {});
00124             Object instance = m.invoke(null, new Object[] {});
00125             m = manager.getDeclaredMethod("getDeploymentDesc", new Class[] {URL.class, URL.class, ClassLoader.class,
00126                     ClassLoader.class});
00127             wsDD = (WSDeploymentDesc) m.invoke(instance, new Object[] {url, unpackedURL, moduleCL, earCL});
00128         } catch (InvocationTargetException ite) {
00129             Throwable t = ite.getTargetException();
00130             if (WSDeploymentDescException.class.isInstance(t)) {
00131                 throw (WSDeploymentDescException) ite.getTargetException();
00132             } else {
00133                 throw new WSDeploymentDescException("WSDeploymentDescManager.getDeploymentDesc fails", t);
00134             }
00135         } catch (Exception e) {
00136             // TODO add i18n here
00137             throw new WSDeploymentDescException("Problems when using reflection on WSDeploymentDescManager", e);
00138         }
00139 
00140         return wsDD;
00141     }
00142 
00148     public static void setParsingWithValidation(boolean b) {
00149         LoaderManager lm = LoaderManager.getInstance();
00150 
00151         try {
00152             ClassLoader tools = lm.getToolsLoader();
00153             Class manager = tools.loadClass(WS_MANAGER_CLASSNAME);
00154             Method m = manager.getDeclaredMethod("setParsingWithValidation", new Class[] {boolean.class});
00155             m.invoke(null, new Object[] {new Boolean(b)});
00156         } catch (Exception e) {
00157             // Should never occurs
00158             logger.log(BasicLevel.ERROR, e);
00159         }
00160     }
00161 
00167     public static void removeCache(ClassLoader cl) {
00168         LoaderManager lm = LoaderManager.getInstance();
00169 
00170         try {
00171             ClassLoader tools = lm.getToolsLoader();
00172             Class manager = tools.loadClass(WS_MANAGER_CLASSNAME);
00173             Method m = manager.getDeclaredMethod("getInstance", new Class[] {});
00174             Object instance = m.invoke(null, new Object[] {});
00175             m = manager.getDeclaredMethod("removeCache", new Class[] {ClassLoader.class});
00176             m.invoke(instance, new Object[] {cl});
00177         } catch (Exception e) {
00178             // Should never occurs
00179             logger.log(BasicLevel.ERROR, e);
00180         }
00181     }
00182 
00183 }

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