00001
00025 package org.objectweb.jonas_ear.deployment.lib.wrapper;
00026
00027 import java.lang.reflect.InvocationTargetException;
00028 import java.lang.reflect.Method;
00029
00030 import org.objectweb.jonas_ear.deployment.api.EarDeploymentDesc;
00031 import org.objectweb.jonas_ear.deployment.api.EarDeploymentDescException;
00032
00033 import org.objectweb.jonas.common.Log;
00034 import org.objectweb.jonas.server.LoaderManager;
00035
00036 import org.objectweb.util.monolog.api.BasicLevel;
00037 import org.objectweb.util.monolog.api.Logger;
00038
00039
00045 public class EarManagerWrapper {
00046
00050 private static final String EAR_MANAGER_CLASSNAME = "org.objectweb.jonas_ear.deployment.lib.EarDeploymentDescManager";
00051
00055 private static Logger logger = Log.getLogger(Log.JONAS_EAR_PREFIX);
00056
00060 private EarManagerWrapper() { }
00061
00072 public static EarDeploymentDesc getDeploymentDesc(String ear, ClassLoader cl)
00073 throws EarDeploymentDescException {
00074 LoaderManager lm = LoaderManager.getInstance();
00075 EarDeploymentDesc earDD = null;
00076 try {
00077 ClassLoader tools = lm.getToolsLoader();
00078 Class manager = tools.loadClass(EAR_MANAGER_CLASSNAME);
00079 Method m = manager.getDeclaredMethod("getDeploymentDesc", new Class[] {String.class, ClassLoader.class});
00080 earDD = (EarDeploymentDesc) m.invoke(null, new Object[] {ear, cl});
00081 } catch (InvocationTargetException ite) {
00082 Throwable t = ite.getTargetException();
00083 if (EarDeploymentDescException.class.isInstance(t)) {
00084 throw (EarDeploymentDescException) ite.getTargetException();
00085 } else {
00086 throw new EarDeploymentDescException("EarDeploymentDescManager.getDeploymentDesc fails", t);
00087 }
00088 } catch (Exception e) {
00089
00090 throw new EarDeploymentDescException("Problems when using reflection on EarDeploymentDescManager", e);
00091 }
00092
00093 return earDD;
00094 }
00095
00101 public static void setParsingWithValidation(boolean b) {
00102 LoaderManager lm = LoaderManager.getInstance();
00103
00104 try {
00105 ClassLoader tools = lm.getToolsLoader();
00106 Class manager = tools.loadClass(EAR_MANAGER_CLASSNAME);
00107 Method m = manager.getDeclaredMethod("setParsingWithValidation", new Class[] {boolean.class});
00108 m.invoke(null, new Object[] {new Boolean(b)});
00109 } catch (Exception e) {
00110
00111 logger.log(BasicLevel.ERROR, e);
00112 }
00113 }
00114
00115 }