RarManagerWrapper.java

00001 
00025 package org.objectweb.jonas_rar.deployment.lib.wrapper;
00026 
00027 import java.lang.reflect.InvocationTargetException;
00028 import java.lang.reflect.Method;
00029 
00030 import javax.naming.Context;
00031 
00032 import org.objectweb.jonas_lib.deployment.api.DeploymentDescException;
00033 
00034 import org.objectweb.jonas_rar.deployment.api.RarDeploymentDesc;
00035 import org.objectweb.jonas_rar.deployment.api.RarDeploymentDescException;
00036 
00037 import org.objectweb.jonas.common.Log;
00038 import org.objectweb.jonas.server.LoaderManager;
00039 
00040 import org.objectweb.util.monolog.api.BasicLevel;
00041 import org.objectweb.util.monolog.api.Logger;
00042 
00043 
00049 public class RarManagerWrapper {
00050 
00054     private static final String RAR_MANAGER_CLASSNAME = "org.objectweb.jonas_rar.deployment.lib.RarDeploymentDescManager";
00055 
00059     private static Logger logger = Log.getLogger(Log.JONAS_EAR_PREFIX);
00060 
00064     private RarManagerWrapper() {
00065     }
00066 
00077     public static RarDeploymentDesc getRarDeploymentDesc(String rar, ClassLoader cl)
00078     throws DeploymentDescException {
00079         LoaderManager lm = LoaderManager.getInstance();
00080         RarDeploymentDesc rarDD = null;
00081         try {
00082             ClassLoader tools = lm.getToolsLoader();
00083             Class manager = tools.loadClass(RAR_MANAGER_CLASSNAME);
00084             Method m = manager.getDeclaredMethod("getInstance", new Class[] {java.lang.String.class, java.lang.ClassLoader.class});
00085             rarDD = (RarDeploymentDesc) m.invoke(null, new Object[] {rar, cl});
00086         } catch (InvocationTargetException ite) {
00087             Throwable t = ite.getTargetException();
00088             if (RarDeploymentDescException.class.isInstance(t)) {
00089                 throw (RarDeploymentDescException) ite.getTargetException();
00090             } else {
00091                 throw new RarDeploymentDescException("RarDeploymentDescManager.getInstance fails", t);
00092             }
00093         } catch (Exception e) {
00094             // TODO add i18n here
00095             throw new RarDeploymentDescException("Problems when using reflection on RarDeploymentDescManager", e);
00096         }
00097         return rarDD;
00098     }
00099 
00105     public static void setParsingWithValidation(boolean b) {
00106         LoaderManager lm = LoaderManager.getInstance();
00107 
00108         try {
00109             ClassLoader tools = lm.getToolsLoader();
00110             Class manager = tools.loadClass(RAR_MANAGER_CLASSNAME);
00111             Method m = manager.getDeclaredMethod("setParsingWithValidation", new Class[] {boolean.class});
00112             m.invoke(null, new Object[] {new Boolean(b)});
00113         } catch (Exception e) {
00114             // Should never occurs
00115             logger.log(BasicLevel.ERROR, e);
00116         }
00117     }
00118 
00128     public static RarDeploymentDesc getInstance(Context ctx) throws DeploymentDescException {
00129         LoaderManager lm = LoaderManager.getInstance();
00130         RarDeploymentDesc rarDD = null;
00131 
00132         try {
00133             ClassLoader tools = lm.getToolsLoader();
00134             Class manager = tools.loadClass(RAR_MANAGER_CLASSNAME);
00135             Method m = manager.getDeclaredMethod("getInstance", new Class[] {javax.naming.Context.class});
00136             rarDD = (RarDeploymentDesc) m.invoke(null, new Object[] {ctx});
00137         } catch (InvocationTargetException ite) {
00138             Throwable t = ite.getTargetException();
00139             if (RarDeploymentDescException.class.isInstance(t)) {
00140                 throw (RarDeploymentDescException) ite.getTargetException();
00141             } else {
00142                 throw new RarDeploymentDescException("RarDeploymentDescManager.getInstance fails", t);
00143             }
00144         } catch (Exception e) {
00145             // TODO add i18n here
00146             throw new RarDeploymentDescException("Problems when using reflection on RarDeploymentDescManager", e);
00147         }
00148 
00149         return rarDD;
00150     }
00151 
00152 }

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