ModifierFactory.java

00001 
00025 package org.objectweb.jonas_ws.wsgen.modifier;
00026 
00027 import java.io.File;
00028 import java.io.IOException;
00029 import java.util.jar.JarFile;
00030 
00031 import org.objectweb.jonas_lib.I18n;
00032 import org.objectweb.jonas_lib.genbase.GenBaseException;
00033 import org.objectweb.jonas_lib.genbase.archive.Application;
00034 import org.objectweb.jonas_lib.genbase.archive.Archive;
00035 import org.objectweb.jonas_lib.genbase.archive.Client;
00036 import org.objectweb.jonas_lib.genbase.archive.EjbJar;
00037 import org.objectweb.jonas_lib.genbase.archive.FileArchive;
00038 import org.objectweb.jonas_lib.genbase.archive.J2EEArchive;
00039 import org.objectweb.jonas_lib.genbase.archive.JarArchive;
00040 import org.objectweb.jonas_lib.genbase.archive.WebApp;
00041 import org.objectweb.jonas_lib.genbase.modifier.AbsModifierFactory;
00042 import org.objectweb.jonas_lib.genbase.modifier.ArchiveModifier;
00043 
00044 import org.objectweb.jonas_ws.wsgen.WsGenException;
00045 
00046 
00053 public class ModifierFactory extends AbsModifierFactory {
00054 
00056     private static I18n i18n = I18n.getInstance(ModifierFactory.class);
00057 
00061     private ModifierFactory() {
00062     }
00063 
00075     public static ArchiveModifier getModifier(String filename) throws GenBaseException, WsGenException {
00076         Archive archive = null;
00077         J2EEArchive j2eeArchive = null;
00078         ArchiveModifier modifier = null;
00079         int mode;
00080 
00081         File file = new File(filename);
00082 
00083         if (file.exists()) {
00084             if (file.isFile()) {
00085                 // should be a jar file
00086                 // test jar file
00087                 JarFile jarfile;
00088 
00089                 try {
00090                     jarfile = new JarFile(file);
00091                 } catch (IOException ioe) {
00092                     // not a jar file
00093                     String err = i18n.getMessage("ModifierFactory.getModifier.notjar", filename);
00094                     throw new WsGenException(err);
00095                 }
00096 
00097                 // Create the inner Archive
00098                 archive = new JarArchive(file);
00099 
00100                 // now we are sure that filename is a correct jar
00101                 if (isApplication(jarfile)) {
00102                     // Application J2EE Archive
00103                     j2eeArchive = new Application(archive);
00104                     mode = APPLICATION;
00105 
00106                 } else if (isEjbJar(jarfile)) {
00107                     // EjbJar J2EE Archive
00108                     j2eeArchive = new EjbJar(archive);
00109                     mode = EJBJAR;
00110 
00111                 } else if (isWebApp(jarfile)) {
00112                     // WebApp J2EE Archive
00113                     j2eeArchive = new WebApp(archive);
00114                     mode = WEBAPP;
00115 
00116                 } else if (isClient(jarfile)) {
00117                     // Client J2EE Archive
00118                     j2eeArchive = new Client(archive);
00119                     mode = CLIENT;
00120 
00121                 } else {
00122                     // unsupported archive type
00123                     String err = i18n.getMessage("ModifierFactory.getModifier.unsupported", filename);
00124                     throw new WsGenException(err);
00125                 }
00126             } else {
00127                 // directory unpacked
00128                 // Create the inner Archive
00129                 archive = new FileArchive(file);
00130 
00131                 // now we are sure that filename is a correct jar
00132                 if (isApplication(file)) {
00133                     // Application J2EE Archive
00134                     j2eeArchive = new Application(archive);
00135                     mode = APPLICATION;
00136 
00137                 } else if (isEjbJar(file)) {
00138                     // EjbJar J2EE Archive
00139                     j2eeArchive = new EjbJar(archive);
00140                     mode = EJBJAR;
00141 
00142                 } else if (isWebApp(file)) {
00143                     // WebApp J2EE Archive
00144                     j2eeArchive = new WebApp(archive);
00145                     mode = WEBAPP;
00146 
00147                 } else if (isClient(file)) {
00148                     // Client J2EE Archive
00149                     j2eeArchive = new Client(archive);
00150                     mode = CLIENT;
00151 
00152                 } else {
00153                     // unsupported archive type
00154                     String err = i18n.getMessage("ModifierFactory.getModifier.unsupported", filename);
00155                     throw new WsGenException(err);
00156                 }
00157             }
00158         } else {
00159             String err = i18n.getMessage("ModifierFactory.getModifier.notfound", filename);
00160             throw new WsGenException(err);
00161         }
00162 
00163         // init the archive
00164         j2eeArchive.initialize();
00165 
00166         //create the modifier
00167         switch (mode) {
00168             case APPLICATION:
00169                 modifier = new ApplicationModifier((Application) j2eeArchive);
00170 
00171                 break;
00172 
00173             case EJBJAR:
00174                 modifier = new EjbJarModifier((EjbJar) j2eeArchive);
00175 
00176                 break;
00177 
00178             case WEBAPP:
00179                 modifier = new WebAppModifier((WebApp) j2eeArchive);
00180 
00181                 break;
00182 
00183             case CLIENT:
00184                 modifier = new ClientModifier((Client) j2eeArchive);
00185 
00186                 break;
00187 
00188             default:
00189                 // cannot happen
00190         }
00191 
00192         return modifier;
00193 
00194     }
00195 }

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