1 25 26 package org.objectweb.jonas_ws.wsgen.generator.axis; 27 28 import java.io.File ; 29 import java.util.Iterator ; 30 import java.util.List ; 31 import java.util.Vector ; 32 33 import org.apache.velocity.VelocityContext; 34 35 import org.objectweb.jonas_lib.genbase.GenBaseException; 36 import org.objectweb.jonas_lib.genbase.archive.Archive; 37 import org.objectweb.jonas_lib.genbase.archive.WebApp; 38 import org.objectweb.jonas_lib.genbase.generator.Config; 39 40 import org.objectweb.jonas_ws.deployment.api.JaxRpcPortComponentDesc; 41 import org.objectweb.jonas_ws.deployment.api.PortComponentDesc; 42 import org.objectweb.jonas_ws.deployment.api.ServiceDesc; 43 import org.objectweb.jonas_ws.wsgen.WsGenException; 44 import org.objectweb.jonas_ws.wsgen.ddmodifier.WebServicesDDModifier; 45 import org.objectweb.jonas_ws.wsgen.ddmodifier.WsEndpointDDModifier; 46 import org.objectweb.jonas_ws.wsgen.generator.WsEndpointGenerator; 47 48 import org.objectweb.jonas.common.Log; 49 50 import org.objectweb.util.monolog.api.BasicLevel; 51 import org.objectweb.util.monolog.api.Logger; 52 53 58 public class AxisWsEndpointGenerator extends WsEndpointGenerator { 59 60 63 private static JVelocity jvelocity = null; 64 65 68 private static Logger logger = Log.getLogger(Log.JONAS_WSGEN_PREFIX); 69 70 73 private static final String AXIS_SERVLET_CLASS = "org.objectweb.jonas.ws.axis.JAxisServlet"; 74 75 78 private static final String SERVER_CONFIG = "axis.serverConfigFile"; 79 80 83 private static final String WSDD_SUFFIX = ".wsdd"; 84 85 88 private static final String WSDD_PREFIX = "deploy-server-"; 89 90 93 private static int count = 0; 94 95 98 private File generatedServerConfig; 99 100 111 public AxisWsEndpointGenerator(Config config, ServiceDesc serviceDesc, WsEndpointDDModifier ddm, 112 WebServicesDDModifier wsddm, Archive arch) throws GenBaseException, WsGenException { 113 super(config, serviceDesc, ddm, wsddm, arch); 114 115 if (jvelocity == null) { 117 jvelocity = new JVelocity("deploy_endpoint.vm"); 118 } 119 } 120 121 126 public void generate() throws WsGenException { 127 String sName = getService().getName(); 128 129 VelocityContext vc = VContextFactory.getContext(getService()); 131 132 String filename = WSDD_PREFIX + (count++) + WSDD_SUFFIX; 134 generatedServerConfig = new File (getSources(), filename); 135 jvelocity.generate(generatedServerConfig, vc); 136 137 for (Iterator i = getService().getPortComponents().iterator(); i.hasNext();) { 139 Object obj = i.next(); 140 if (obj instanceof JaxRpcPortComponentDesc) { 141 JaxRpcPortComponentDesc jax = (JaxRpcPortComponentDesc) obj; 142 143 if (logger.isLoggable(BasicLevel.DEBUG)) { 144 logger.log(BasicLevel.DEBUG, "Removing servlet '" + jax.getSibLink() + "'"); 145 } 146 147 getModifier().removeServletMapping(jax.getSibLink()); 149 getModifier().removeServlet(jax.getSibLink()); 151 getWsModifier().changeServletLink(sName, jax.getSibLink(), sName); 153 } 154 } 155 156 getModifier().addServlet(sName, AXIS_SERVLET_CLASS); 158 getModifier().addServletParam(sName, SERVER_CONFIG, filename); 159 160 boolean requireDefaultMapping = false; 162 List usedServletMappings = new Vector (); 163 for (Iterator i = getService().getPortComponents().iterator(); i.hasNext();) { 164 PortComponentDesc pcd = (PortComponentDesc) i.next(); 165 String mapping = pcd.getMapping(); 166 if (mapping != null) { 167 if (!usedServletMappings.contains(mapping)) { 170 usedServletMappings.add(mapping); 171 172 if (logger.isLoggable(BasicLevel.DEBUG)) { 173 logger.log(BasicLevel.DEBUG, "Adding servlet-mapping for '" + sName + "' -> '" + mapping + "'"); 174 } 175 176 getModifier().addServletMapping(sName, mapping); 177 } 178 } else { 179 requireDefaultMapping = true; 181 } 182 } 183 if (requireDefaultMapping) { 184 String defaultEndpointURI = getService().getEndpointURI(); 186 if (defaultEndpointURI == null) { 187 getModifier().addServletMapping(sName, "/" + sName + "/*"); 189 } else { 190 getModifier().addServletMapping(sName, defaultEndpointURI); 192 } 193 } 194 195 } 196 197 204 public void addFiles(Archive archive) throws WsGenException { 205 if (!(archive instanceof WebApp)) { 207 String err = getI18n().getMessage("AxisWsEndpointGenerator.addFiles.illegal", archive.getRootFile()); 208 throw new IllegalArgumentException (err); 209 } 210 211 WebApp web = (WebApp) archive; 212 web.addFileIn("WEB-INF/", generatedServerConfig); 213 214 } 215 } | Popular Tags |