00001
00025 package org.objectweb.jonas_ws.deployment.lib.wrapper;
00026
00027 import java.io.File;
00028 import java.io.InputStream;
00029 import java.lang.reflect.InvocationTargetException;
00030 import java.lang.reflect.Method;
00031
00032 import org.objectweb.jonas_ws.deployment.api.MappingFile;
00033 import org.objectweb.jonas_ws.deployment.api.WSDeploymentDescException;
00034
00035 import org.objectweb.jonas.server.LoaderManager;
00036
00037
00044 public class MappingFileManagerWrapper {
00045
00049 private static final String MAPPINGFILEMANAGER_CLASSNAME = "org.objectweb.jonas_ws.deployment.lib.MappingFileManager";
00050
00054 private MappingFileManagerWrapper() { }
00055
00066 public static MappingFile getMappingFile(File module, String filename)
00067 throws WSDeploymentDescException {
00068 LoaderManager lm = LoaderManager.getInstance();
00069 MappingFile mf = null;
00070
00071 try {
00072 ClassLoader tools = lm.getToolsLoader();
00073 Class manager = tools.loadClass(MAPPINGFILEMANAGER_CLASSNAME);
00074 Method m = manager.getDeclaredMethod("getInstance", new Class[] {File.class, String.class});
00075 mf = (MappingFile) m.invoke(null, new Object[] {module, filename});
00076 } catch (InvocationTargetException ite) {
00077 Throwable t = ite.getTargetException();
00078 if (WSDeploymentDescException.class.isInstance(t)) {
00079 throw (WSDeploymentDescException) ite.getTargetException();
00080 } else {
00081 throw new WSDeploymentDescException("MappingFileManager.getInstance fails", t);
00082 }
00083 } catch (Exception e) {
00084
00085 throw new WSDeploymentDescException("Problems when using reflection on MappingFileManager", e);
00086 }
00087
00088 return mf;
00089 }
00090
00101 public static MappingFile getMappingFile(InputStream is, String filename)
00102 throws WSDeploymentDescException {
00103 LoaderManager lm = LoaderManager.getInstance();
00104 MappingFile mf = null;
00105
00106 try {
00107 ClassLoader tools = lm.getToolsLoader();
00108 Class manager = tools.loadClass(MAPPINGFILEMANAGER_CLASSNAME);
00109 Method m = manager.getDeclaredMethod("getInstance", new Class[] {InputStream.class, String.class});
00110 mf = (MappingFile) m.invoke(null, new Object[] {is, filename});
00111 } catch (InvocationTargetException ite) {
00112 Throwable t = ite.getTargetException();
00113 if (WSDeploymentDescException.class.isInstance(t)) {
00114 throw (WSDeploymentDescException) ite.getTargetException();
00115 } else {
00116 throw new WSDeploymentDescException("MappingFileManager.getInstance fails", t);
00117 }
00118 } catch (Exception e) {
00119
00120 throw new WSDeploymentDescException("Problems when using reflection on MappingFileManager", e);
00121 }
00122
00123 return mf;
00124 }
00125 }