1 16 40 package org.objectweb.jonas_ws.wsgen.generator.ews.wsdltoj2ee.writer; 41 42 import java.io.IOException ; 43 import java.io.PrintWriter ; 44 import java.util.Iterator ; 45 import java.util.List ; 46 47 import javax.wsdl.Definition; 48 import javax.wsdl.Port; 49 import javax.wsdl.Service; 50 import javax.wsdl.extensions.UnknownExtensibilityElement; 51 import javax.wsdl.extensions.soap.SOAPBinding; 52 import javax.xml.namespace.QName ; 53 54 import org.apache.axis.Constants; 55 import org.apache.axis.constants.Style; 56 import org.apache.axis.constants.Use; 57 import org.apache.axis.utils.Messages; 58 import org.apache.axis.wsdl.symbolTable.BindingEntry; 59 import org.apache.axis.wsdl.symbolTable.SymbolTable; 60 import org.apache.axis.wsdl.toJava.Emitter; 61 import org.apache.axis.wsdl.toJava.Utils; 62 import org.apache.geronimo.ews.ws4j2ee.context.webservices.client.interfaces.ServiceReferanceContext; 63 import org.apache.geronimo.ews.ws4j2ee.context.webservices.server.interfaces.WSCFHandler; 64 import org.apache.geronimo.ews.ws4j2ee.context.webservices.server.interfaces.WSCFInitParam; 65 import org.apache.geronimo.ews.ws4j2ee.context.webservices.server.interfaces.WSCFSOAPHeader; 66 67 import org.objectweb.jonas_ws.wsgen.generator.ews.wsdltoj2ee.wscf.JOnASWSCFHandler; 68 69 74 public class J2EEClientDeployWriter extends JOnASDeployWriter { 75 76 79 private static final String WSDD_PREFIX = "deploy-client-"; 80 81 87 public J2EEClientDeployWriter(Emitter emitter, Definition definition, SymbolTable symbolTable) { 88 super(emitter, definition, symbolTable); 89 } 90 91 96 public void generate() throws IOException { 97 98 if (!emitter.isServerSide()) { 99 super.generate(); 100 } 101 } 102 103 108 protected void writeDeployServices(PrintWriter pw) throws IOException { 109 110 int sRefIndex = getJonasWSContext().getServiceReferanceContextCount(); 111 if (sRefIndex == 1) { 113 114 ServiceReferanceContext ctx = getJonasWSContext().getServiceReferanceContext(0); 115 QName desiredServiceQName = ctx.getServcieQName(); 116 117 Service myService = getDefinition().getService(desiredServiceQName); 118 119 if (myService != null) { 121 pw.println(); 122 pw.println(" <!-- " + Messages.getMessage("wsdlService00", myService.getQName().getLocalPart()) + " -->"); 123 pw.println(); 124 125 for (Iterator portIterator = myService.getPorts().values().iterator(); portIterator.hasNext();) { 126 Port myPort = (Port) portIterator.next(); 127 BindingEntry bEntry = getSymbolTable().getBindingEntry(myPort.getBinding().getQName()); 128 129 if (bEntry.getBindingType() != BindingEntry.TYPE_SOAP) { 131 continue; 132 } 133 134 writeDeployPort(pw, myPort, bEntry, ctx); 135 } 136 } 137 } 138 } 139 140 147 protected void writeDeployPort(PrintWriter pw, Port port, BindingEntry bEntry, ServiceReferanceContext ctx) { 148 149 String serviceName = port.getName(); 150 boolean hasLiteral = bEntry.hasLiteral(); 151 boolean hasMIME = Utils.hasMIME(bEntry); 152 153 154 Use use = Use.DEFAULT; 155 String styleStr = ""; 156 Iterator iterator = bEntry.getBinding().getExtensibilityElements().iterator(); 157 158 while (iterator.hasNext()) { 160 Object obj = iterator.next(); 161 162 if (obj instanceof SOAPBinding) { 163 use = Use.ENCODED; 164 } else if (obj instanceof UnknownExtensibilityElement) { 165 166 UnknownExtensibilityElement unkElement = (UnknownExtensibilityElement) obj; 168 QName name = unkElement.getElementType(); 169 170 if (name.getNamespaceURI().equals(Constants.URI_WSDL12_SOAP) && name.getLocalPart().equals("binding")) { 171 use = Use.ENCODED; 172 } 173 } 174 } 175 176 if (getSymbolTable().isWrapped()) { 177 styleStr = " style=\"" + Style.WRAPPED + "\""; 178 use = Use.LITERAL; 179 } else { 180 styleStr = " style=\"" + bEntry.getBindingStyle().getName() + "\""; 181 if (hasLiteral) { 182 use = Use.LITERAL; 183 } 184 } 185 186 String useStr = " use=\"" + use + "\""; 187 188 pw.println(" <service name=\"" + serviceName + "\" " + styleStr + useStr + " provider=\"java:Noop\">"); 189 190 if (hasMIME) { 192 pw.println(" <parameter name=\"sendMultiRefs\" value=\"false\"/>"); 193 } 194 pw.println(" <parameter name=\"typeMappingVersion\" value=\"" + emitter.getTypeMappingVersion() + "\"/>"); 196 197 200 WSCFHandler[] handlers = ctx.getHandlers(); 201 if (handlers != null && handlers.length != 0) { 202 pw.println(" <handlerInfoChain>"); 203 for (int i = 0; i < handlers.length; i++) { 204 writeHandlerForPort(pw, (JOnASWSCFHandler) handlers[i], port); 205 } 206 pw.println(" </handlerInfoChain>"); 207 } 208 pw.println(" </service>"); 209 } 210 211 217 private void writeHandlerForPort(PrintWriter pw, JOnASWSCFHandler handler, Port port) { 218 219 223 List ports = handler.getPortNames(); 224 if (ports.isEmpty()) { 225 writeHandler(pw, handler); 227 } else if (ports.contains(port.getName())) { 228 writeHandler(pw, handler); 230 } 231 } 232 237 private void writeHandler(PrintWriter pw, JOnASWSCFHandler handler) { 238 239 pw.println(" <handlerInfo classname=\"" + handler.getHandlerClass() + "\">"); 240 WSCFInitParam[] param = handler.getInitParam(); 241 for (int i = 0; i < param.length; i++) { 242 pw.println(" <parameter name=\"" + param[i].getParamName() + "\" value=\"" + param[i].getParamValue() 243 + "\"/>"); 244 } 245 WSCFSOAPHeader[] headers = handler.getSoapHeader(); 246 for (int i = 0; i < headers.length; i++) { 247 pw.println(" <header xmlns:ns=\"" + headers[i].getNamespaceURI() + "\" qname=\"ns:" + headers[i].getLocalpart() 248 + "\"/>"); 249 } 250 pw.println(" </handlerInfo>"); 251 String [] roles = handler.getSoapRole(); 252 for (int i = 0; i < roles.length; i++) { 253 pw.println(" <role soapActorName=\"" + roles[i] + "\"/>"); 254 } 255 } 256 257 260 protected String getPrefix() { 261 return WSDD_PREFIX; 262 } 263 } 264 | Popular Tags |