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
00086
00087 JarFile jarfile;
00088
00089 try {
00090 jarfile = new JarFile(file);
00091 } catch (IOException ioe) {
00092
00093 String err = i18n.getMessage("ModifierFactory.getModifier.notjar", filename);
00094 throw new WsGenException(err);
00095 }
00096
00097
00098 archive = new JarArchive(file);
00099
00100
00101 if (isApplication(jarfile)) {
00102
00103 j2eeArchive = new Application(archive);
00104 mode = APPLICATION;
00105
00106 } else if (isEjbJar(jarfile)) {
00107
00108 j2eeArchive = new EjbJar(archive);
00109 mode = EJBJAR;
00110
00111 } else if (isWebApp(jarfile)) {
00112
00113 j2eeArchive = new WebApp(archive);
00114 mode = WEBAPP;
00115
00116 } else if (isClient(jarfile)) {
00117
00118 j2eeArchive = new Client(archive);
00119 mode = CLIENT;
00120
00121 } else {
00122
00123 String err = i18n.getMessage("ModifierFactory.getModifier.unsupported", filename);
00124 throw new WsGenException(err);
00125 }
00126 } else {
00127
00128
00129 archive = new FileArchive(file);
00130
00131
00132 if (isApplication(file)) {
00133
00134 j2eeArchive = new Application(archive);
00135 mode = APPLICATION;
00136
00137 } else if (isEjbJar(file)) {
00138
00139 j2eeArchive = new EjbJar(archive);
00140 mode = EJBJAR;
00141
00142 } else if (isWebApp(file)) {
00143
00144 j2eeArchive = new WebApp(archive);
00145 mode = WEBAPP;
00146
00147 } else if (isClient(file)) {
00148
00149 j2eeArchive = new Client(archive);
00150 mode = CLIENT;
00151
00152 } else {
00153
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
00164 j2eeArchive.initialize();
00165
00166
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
00190 }
00191
00192 return modifier;
00193
00194 }
00195 }