Author: jas...@jb... Date: 2006-07-05 21:20:41 -0400 (Wed, 05 Jul 2006) New Revision: 568 Added: branches/jbossws-1.0/src/test/resources/samples/jsr181pojo/docwrapped/ branches/jbossws-1.0/src/test/resources/samples/jsr181pojo/docwrapped/META-INF/ branches/jbossws-1.0/src/test/resources/samples/jsr181pojo/docwrapped/META-INF/application-client.xml branches/jbossws-1.0/src/test/resources/samples/jsr181pojo/docwrapped/META-INF/jboss-client.xml branches/jbossws-1.0/src/test/resources/samples/jsr181pojo/docwrapped/META-INF/wsdl/ branches/jbossws-1.0/src/test/resources/samples/jsr181pojo/docwrapped/META-INF/wsdl/TestService.wsdl branches/jbossws-1.0/src/test/resources/samples/jsr181pojo/docwrapped/WEB-INF/ branches/jbossws-1.0/src/test/resources/samples/jsr181pojo/docwrapped/WEB-INF/web.xml branches/jbossws-1.0/src/test/resources/samples/jsr181pojo/docwrapped/wstools-config.xml Modified: branches/jbossws-1.0/build-samples.xml branches/jbossws-1.0/src/main/java/org/jboss/ws/tools/Configuration.java branches/jbossws-1.0/src/main/java/org/jboss/ws/tools/WSDLToJava.java branches/jbossws-1.0/src/main/java/org/jboss/ws/tools/config/ToolsSchemaConfigReader.java branches/jbossws-1.0/src/main/java/org/jboss/ws/tools/helpers/MappingFileGeneratorHelper.java branches/jbossws-1.0/src/main/java/org/jboss/ws/tools/helpers/ToolsHelper.java branches/jbossws-1.0/src/main/java/org/jboss/ws/tools/interfaces/WSDLToJavaIntf.java branches/jbossws-1.0/src/main/java/org/jboss/ws/tools/mapping/MappingFileGenerator.java branches/jbossws-1.0/src/main/resources/samples/jsr181pojo/build.xml branches/jbossws-1.0/src/main/resources/schema/jbossws-tool_1_0.xsd branches/jbossws-1.0/src/test/ant/build-jars.xml branches/jbossws-1.0/src/test/build.xml Log: Add tools support for doc/lit parameter unwrapping JBWS-750 Modified: branches/jbossws-1.0/build-samples.xml =================================================================== --- branches/jbossws-1.0/build-samples.xml 2006-07-05 14:36:17 UTC (rev 567) +++ branches/jbossws-1.0/build-samples.xml 2006-07-06 01:20:41 UTC (rev 568) @@ -145,7 +145,7 @@ <copy todir="${build.src.samples.dir}/jsr109pojo/java"> <fileset dir="${test.java.dir}"> - <include name="org/jboss/test/ws/samples/jsr109pojo/**"/> + <include name="org/jboss/test/ws/samples/jsr109pojo/**/*"/> </fileset> </copy> <copy todir="${build.src.samples.dir}/jsr109pojo/resources"> @@ -301,4 +301,4 @@ </target> -</project> \ No newline at end of file +</project> Modified: branches/jbossws-1.0/src/main/java/org/jboss/ws/tools/Configuration.java =================================================================== --- branches/jbossws-1.0/src/main/java/org/jboss/ws/tools/Configuration.java 2006-07-05 14:36:17 UTC (rev 567) +++ branches/jbossws-1.0/src/main/java/org/jboss/ws/tools/Configuration.java 2006-07-06 01:20:41 UTC (rev 568) @@ -159,8 +159,7 @@ public class WSDLToJavaConfig { public String wsdlLocation = null; - public boolean disableUnwrap = false; - public boolean useJavaAnnotations = false; + public boolean unwrap = false; public boolean mappingFileNeeded = false; public String mappingFileName = null; } Modified: branches/jbossws-1.0/src/main/java/org/jboss/ws/tools/WSDLToJava.java =================================================================== --- branches/jbossws-1.0/src/main/java/org/jboss/ws/tools/WSDLToJava.java 2006-07-05 14:36:17 UTC (rev 567) +++ branches/jbossws-1.0/src/main/java/org/jboss/ws/tools/WSDLToJava.java 2006-07-06 01:20:41 UTC (rev 568) @@ -35,7 +35,12 @@ import org.apache.xerces.xs.XSComplexTypeDefinition; import org.apache.xerces.xs.XSElementDeclaration; +import org.apache.xerces.xs.XSModelGroup; +import org.apache.xerces.xs.XSObject; +import org.apache.xerces.xs.XSObjectList; +import org.apache.xerces.xs.XSParticle; import org.apache.xerces.xs.XSSimpleTypeDefinition; +import org.apache.xerces.xs.XSTerm; import org.apache.xerces.xs.XSTypeDefinition; import org.jboss.ws.Constants; import org.jboss.ws.WSException; @@ -100,6 +105,8 @@ private String style; + private boolean unwrap = false; + public WSDLToJava() { } @@ -112,7 +119,7 @@ checkTypeMapping(); WSDLDefinitionsFactory wsdlFactory = WSDLDefinitionsFactory.newInstance(); wsdl = wsdlFactory.parse(wsdlfileurl); - style = utils.getWSDLStyle(wsdl); + return wsdl; } @@ -162,7 +169,9 @@ checkTypeMapping(); this.directoryToGenerate = dir.getAbsolutePath(); this.wsdl = wsdl; - //wsdlStyle = utils.getWSDLStyle(wsdl); + style = utils.getWSDLStyle(wsdl); + + //TODO: Handle annotations flag, as per JAX-WS 2.0 Spec. //Given the WSDL Object Tree, generate the SEI //Also take in the location where the SEI should be written @@ -244,6 +253,108 @@ // PRIVATE METHODS //*************************************************************************** + private boolean shouldUnwrap() + { + return unwrap && Constants.DOCUMENT_LITERAL.equals(style); + } + + private void unwrapRequest(StringBuilder buf, XSTypeDefinition xt) throws IOException + { + if (xt instanceof XSComplexTypeDefinition == false) + throw new WSException("Tried to unwrap a non-complex type."); + + XSComplexTypeDefinition wrapper = (XSComplexTypeDefinition)xt; + XSParticle particle = wrapper.getParticle(); + XSTerm term = particle.getTerm(); + if (term instanceof XSModelGroup == false) + throw new WSException("Expected model group, could not unwrap"); + unwrapRequestParticles(buf, (XSModelGroup)term); + + // We need a wrapper class generated + generateJavaSource(wrapper, wsdl.getWsdlTypes().getSchemaModel(), wrapper.getName()); + } + + private int unwrapRequestParticles(StringBuilder buf, XSModelGroup group) throws IOException + { + if (group.getCompositor() != XSModelGroup.COMPOSITOR_SEQUENCE) + throw new WSException("Only a sequence type can be unwrapped."); + + int elementCount = 0; + XSObjectList particles = group.getParticles(); + for (int i = 0; i < particles.getLength(); i++) + { + XSParticle particle = (XSParticle) particles.item(i); + XSTerm term = particle.getTerm(); + if (term instanceof XSModelGroup) + { + elementCount += unwrapRequestParticles(buf, (XSModelGroup)term); + } + else if (term instanceof XSElementDeclaration) + { + if (elementCount++ > 0) + buf.append(", "); + XSElementDeclaration element = (XSElementDeclaration)term; + QName xmlName = new QName(element.getNamespace(), element.getName()); + QName xmlType = new QName(element.getTypeDefinition().getNamespace(), element.getTypeDefinition().getName()); + JBossXSModel xsmodel = wsdl.getWsdlTypes().getSchemaModel(); + boolean array = particle.getMaxOccursUnbounded() || particle.getMaxOccurs() > 1; + generateParameter(buf, null, xmlName, xmlType, xsmodel, element.getTypeDefinition(), array, !element.getNillable()); + buf.append(" ").append(getMethodParam(xmlName)); + } + } + + return elementCount; + } + + private String unwrapResponse(XSTypeDefinition xt) throws IOException + { + if (xt instanceof XSComplexTypeDefinition == false) + throw new WSException("Tried to unwrap a non-complex type."); + + XSComplexTypeDefinition wrapper = (XSComplexTypeDefinition)xt; + XSParticle particle = wrapper.getParticle(); + XSTerm term = particle.getTerm(); + if (term instanceof XSModelGroup == false) + throw new WSException("Expected model group, could not unwrap"); + String returnType = unwrapResponseParticles((XSModelGroup)term); + // We need a wrapper class generated + generateJavaSource(wrapper, wsdl.getWsdlTypes().getSchemaModel(), wrapper.getName()); + return returnType; + } + + private String unwrapResponseParticles(XSModelGroup group) throws IOException + { + if (group.getCompositor() != XSModelGroup.COMPOSITOR_SEQUENCE) + throw new WSException("Only a sequence type can be unwrapped."); + + XSObjectList particles = group.getParticles(); + String returnType = null; + for (int i = 0; i < particles.getLength(); i++) + { + XSParticle particle = (XSParticle) particles.item(i); + XSTerm term = particle.getTerm(); + if (term instanceof XSModelGroup) + { + returnType = unwrapResponseParticles((XSModelGroup)term); + if (returnType != null) + return returnType; + } + else if (term instanceof XSElementDeclaration) + { + XSElementDeclaration element = (XSElementDeclaration)term; + QName xmlName = new QName(element.getNamespace(), element.getName()); + QName xmlType = new QName(element.getTypeDefinition().getNamespace(), element.getTypeDefinition().getName()); + JBossXSModel xsmodel = wsdl.getWsdlTypes().getSchemaModel(); + boolean array = particle.getMaxOccursUnbounded() || particle.getMaxOccurs() > 1; + StringBuilder buf = new StringBuilder(); + generateParameter(buf, null, xmlName, xmlType, xsmodel, element.getTypeDefinition(), array, !element.getNillable()); + return buf.toString(); + } + } + + return null; + } + private void appendMethods(WSDLInterface intf, StringBuilder buf ) throws IOException { buf.append(newline); @@ -273,52 +384,29 @@ JBossXSModel xsmodel = wsdl.getWsdlTypes().getSchemaModel(); XSTypeDefinition xt = xsmodel.getTypeDefinition(xmlType.getLocalPart(),xmlType.getNamespaceURI()); - boolean primitive = true; - WrappedArray wrappedArray = new WrappedArray(xt); - String arraySuffix = ""; - if (wrappedArray.unwrap()) + if (shouldUnwrap()) { - xt = wrappedArray.xt; - xmlType = wrappedArray.xmlType; - primitive = !wrappedArray.nillable; - arraySuffix = wrappedArray.suffix; + unwrapRequest(buf, xt); + break; } - if (xt instanceof XSSimpleTypeDefinition) - xmlType = SchemaUtils.handleSimpleType((XSSimpleTypeDefinition) xt); - - Class cl = getJavaType(xmlType, primitive); - //Class cl = typeMapping.getJavaType(inqname,true); - cl = this.checkNeedHolder(in,cl); - if(cl != null) - { - buf.append( cl.getName() + arraySuffix + " " + getMethodParam(xmlName)); - } - else - { - //buf.append(inqname.getLocalPart() + " " + inqname.getLocalPart().toLowerCase()); - String className = xmlType.getLocalPart(); - if (className.charAt(0) == '>') - className = className.substring(1); - className = utils.firstLetterUpperCase(className); - buf.append(seiPkgName + "." + className + arraySuffix + " " + getMethodParam(xmlName)); - - if(xt instanceof XSComplexTypeDefinition) - generateJavaSource((XSComplexTypeDefinition)xt, xsmodel, xmlName.getLocalPart()); - } - } + generateParameter(buf, in, xmlName, xmlType, xsmodel, xt, false, true); + buf.append(" ").append(getMethodParam(xmlName)); + } //Check for out holder only int lenOuts = outs != null ? outs.length : 0; - if(lenOuts > 1) - for(int m=1; m < lenOuts; m++) + if ((!shouldUnwrap()) && lenOuts > 1) + { + // This needs to be rewritten, custom types, and custom holders should be supported + for (int m = 1; m < lenOuts; m++) { - if(this.isInOutHolder(outs[m])) + if (this.isInOutHolder(outs[m])) continue; buf.append(","); QName xmlName = outs[m].getElement(); QName xmlType = outs[m].getXMLType(); JBossXSModel xsmodel = wsdl.getWsdlTypes().getSchemaModel(); - XSTypeDefinition xt = xsmodel.getTypeDefinition(xmlType.getLocalPart(),xmlType.getNamespaceURI()); + XSTypeDefinition xt = xsmodel.getTypeDefinition(xmlType.getLocalPart(), xmlType.getNamespaceURI()); boolean primitive = true; WrappedArray wrappedArray = new WrappedArray(xt); @@ -332,11 +420,12 @@ } if (xt instanceof XSSimpleTypeDefinition) - xmlType = SchemaUtils.handleSimpleType((XSSimpleTypeDefinition) xt); + xmlType = SchemaUtils.handleSimpleType((XSSimpleTypeDefinition)xt); Class cls = this.getJavaType(xmlType, primitive); buf.append(utils.getHolder(cls).getName()).append(" ").append(getMethodParam(xmlName)); } + } buf.append(") throws "); //Generate the Exception Types @@ -346,7 +435,6 @@ WSDLInterfaceOperationOutfault fault = outfaults[k]; QName faultqname = fault.getRef(); - //Get the main fault from the wsdlInterface WSDLInterfaceFault intfFault = fault.getWsdlInterfaceOperation().getWsdlInterface().getFault(new NCName(faultqname.getLocalPart())); JBossXSModel xsmodel = wsdl.getWsdlTypes().getSchemaModel(); @@ -373,6 +461,43 @@ } } + private void generateParameter(StringBuilder buf, WSDLInterfaceOperationInput in, QName xmlName, QName xmlType, JBossXSModel xsmodel, XSTypeDefinition xt, boolean array, boolean primitive) throws IOException + { + WrappedArray wrappedArray = new WrappedArray(xt); + String arraySuffix = (array) ? "[]" : ""; + if (wrappedArray.unwrap()) + { + xt = wrappedArray.xt; + xmlType = wrappedArray.xmlType; + primitive = !wrappedArray.nillable; + arraySuffix = wrappedArray.suffix; + } + + if (xt instanceof XSSimpleTypeDefinition) + xmlType = SchemaUtils.handleSimpleType((XSSimpleTypeDefinition) xt); + + Class cl = getJavaType(xmlType, primitive); + //Class cl = typeMapping.getJavaType(inqname,true); + if (in != null) + cl = this.checkNeedHolder(in,cl); + if(cl != null) + { + buf.append(cl.getName() + arraySuffix); + } + else + { + //buf.append(inqname.getLocalPart() + " " + inqname.getLocalPart().toLowerCase()); + String className = xmlType.getLocalPart(); + if (className.charAt(0) == '>') + className = className.substring(1); + className = utils.firstLetterUpperCase(className); + buf.append(seiPkgName + "." + className + arraySuffix); + + if(xt instanceof XSComplexTypeDefinition) + generateJavaSource((XSComplexTypeDefinition)xt, xsmodel, xmlName.getLocalPart()); + } + } + private void createSEIFile(WSDLInterface intf, File loc) throws IOException { String fname = utils.chopPortType(intf.getName().toString()); @@ -426,6 +551,9 @@ JBossXSModel xsmodel = wsdl.getWsdlTypes().getSchemaModel(); XSTypeDefinition xt = xsmodel.getTypeDefinition(xmlType.getLocalPart(),xmlType.getNamespaceURI()); + if (shouldUnwrap()) + return unwrapResponse(xt); + boolean primitive = true; WrappedArray wrappedArray = new WrappedArray(xt); String arraySuffix = ""; @@ -572,4 +700,14 @@ xtj.setTypeMapping(this.typeMapping); xtj.createJavaFile((XSComplexTypeDefinition)xt, containingElement, getLocationForJavaGeneration(), seiPkgName, xsmodel, exception); } -} \ No newline at end of file + + public boolean isUnwrap() + { + return unwrap; + } + + public void setUnwrap(boolean unwrap) + { + this.unwrap = unwrap; + } +} Modified: branches/jbossws-1.0/src/main/java/org/jboss/ws/tools/config/ToolsSchemaConfigReader.java =================================================================== --- branches/jbossws-1.0/src/main/java/org/jboss/ws/tools/config/ToolsSchemaConfigReader.java 2006-07-05 14:36:17 UTC (rev 567) +++ branches/jbossws-1.0/src/main/java/org/jboss/ws/tools/config/ToolsSchemaConfigReader.java 2006-07-06 01:20:41 UTC (rev 568) @@ -84,10 +84,12 @@ private static final String ENDPOINT_ATTRIBUTE = "endpoint"; private static final String NAME_ATTRIBUTE = "name"; private static final String FILE_ATTRIBUTE = "file"; + private static final String UNWRAP_ATTRIBUTE = "unwrap"; // provide logging private static final Logger log = Logger.getLogger(ToolsSchemaConfigReader.class); + public ToolsSchemaConfigReader() { } @@ -174,6 +176,10 @@ { WSDLToJavaConfig wsdl2jc = config.getWSDLToJavaConfig(true); wsdl2jc.wsdlLocation = attrs.getValue(FILE_ATTRIBUTE); + String unwrap = attrs.getValue(UNWRAP_ATTRIBUTE); + if (unwrap != null) + wsdl2jc.unwrap = "true".equals(unwrap) || "1".equals(unwrap); + return wsdl2jc; } else if (GLOBAL_TAG.equals(localName)) Modified: branches/jbossws-1.0/src/main/java/org/jboss/ws/tools/helpers/MappingFileGeneratorHelper.java =================================================================== --- branches/jbossws-1.0/src/main/java/org/jboss/ws/tools/helpers/MappingFileGeneratorHelper.java 2006-07-05 14:36:17 UTC (rev 567) +++ branches/jbossws-1.0/src/main/java/org/jboss/ws/tools/helpers/MappingFileGeneratorHelper.java 2006-07-06 01:20:41 UTC (rev 568) @@ -22,6 +22,7 @@ package org.jboss.ws.tools.helpers; import java.beans.Introspector; +import java.io.IOException; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.ArrayList; @@ -103,6 +104,7 @@ private WSDLUtils utils = WSDLUtils.getInstance(); + private boolean unwrap = false; /** * A list of types that need java-xml type generation @@ -110,7 +112,7 @@ private List<XSTypeDefinition> queueTypes = new ArrayList<XSTypeDefinition>(); public MappingFileGeneratorHelper(WSDLDefinitions wsdl, String sname, - String pname, Class seiClass, String tns,LiteralTypeMapping ltm ) + String pname, Class seiClass, String tns,LiteralTypeMapping ltm, boolean unwrap) { this.wsdlDefinitions = wsdl; this.serviceName = sname; @@ -120,6 +122,7 @@ this.typeMapping = ltm; this.wsdlStyle = utils.getWSDLStyle(wsdl); + this.unwrap = unwrap; checkEssentials(); } @@ -194,9 +197,6 @@ javaPortName += "_PortType"; ServiceEndpointInterfaceMapping seim = new ServiceEndpointInterfaceMapping(jwm); - /* if(isDocStyle() && serviceEndpointInterface != null ) - seim.setServiceEndpointInterface(packageName + "." + portName + "Wrapped"); - else*/ seim.setServiceEndpointInterface(packageName + "." + javaPortName); seim.setWsdlPortType(new QName(targetNS,portName,"portTypeNS")); seim.setWsdlBinding(new QName(targetNS,bindName,"bindingNS")); @@ -224,6 +224,7 @@ ServiceEndpointMethodMapping semm = new ServiceEndpointMethodMapping(seim); semm.setJavaMethodName(ToolsUtils.firstLetterLowerCase(opname)); semm.setWsdlOperation(opname); + semm.setWrappedElement(shouldUnwrap()); constructMethodParamPartsMapping(semm,wiop ); @@ -245,44 +246,32 @@ QName xmlName = wiout.getElement(); QName xmlType = wiout.getXMLType(); + WSDLProperty wprop = wiout.getProperty(Constants.WSDL_PROPERTY_MESSAGE_NAME); + QName messageName = new QName(targetNS, wprop.getValue(), WSToolsConstants.WSTOOLS_CONSTANT_MAPPING_WSDL_MESSAGE_NS); + + if (shouldUnwrap()) + { + JBossXSModel schemaModel = wsdlDefinitions.getWsdlTypes().getSchemaModel(); + XSTypeDefinition xt = schemaModel.getTypeDefinition(xmlType.getLocalPart(),xmlType.getNamespaceURI()); + unwrapResponse(semm, messageName, xt); + + continue; + } + //Check it is a holder. If it is, return if( wiop.getInputByPartName(xmlName.getLocalPart()) != null) continue; - String javaType = ""; - if(isDocStyle() && serviceEndpointInterface != null) - javaType = serviceEndpointInterface.getName() + "_" + opname + "_ResponseStruct"; - else - { - if(isDocStyle() ) - xmlType = wiout.getXMLType(); - javaType = getJavaTypeAsStringForReturnType(xmlName,xmlType,wiout); - } + String javaType = getJavaTypeAsString(xmlName,xmlType, false, true); if(isDocStyle() == false && "void".equals(javaType)) continue; WsdlReturnValueMapping wrvm = new WsdlReturnValueMapping(semm); wrvm.setMethodReturnValue(javaType); - if(isDocStyle() && serviceEndpointInterface == null) - { - WSDLProperty wprop = wiout.getProperty(Constants.WSDL_PROPERTY_MESSAGE_NAME); - wrvm.setWsdlMessage(new QName(targetNS,wprop.getValue(), - WSToolsConstants.WSTOOLS_CONSTANT_MAPPING_WSDL_MESSAGE_NS)); - } - else - wrvm.setWsdlMessage(new QName(targetNS,portName + "_" + opname + "Response", - WSToolsConstants.WSTOOLS_CONSTANT_MAPPING_WSDL_MESSAGE_NS)); - if(isDocStyle() && serviceEndpointInterface == null ) - { - WSDLProperty wprop = wiout.getProperty(Constants.WSDL_PROPERTY_PART_NAME); - if(wprop != null) - wrvm.setWsdlMessagePartName(wprop.getValue()); - } - else - { - wrvm.setWsdlMessagePartName(Constants.DEFAULT_RPC_RETURN_NAME); - } + wrvm.setWsdlMessage(messageName); + wprop = wiout.getProperty(Constants.WSDL_PROPERTY_PART_NAME); + wrvm.setWsdlMessagePartName(wprop.getValue()); semm.setWsdlReturnValueMapping(wrvm); } } @@ -302,27 +291,26 @@ QName xmlName = win.getElement(); QName xmlType = win.getXMLType(); String wsdlMessageName = ""; - if(isDocStyle() && serviceEndpointInterface == null) - wsdlMessageName = win.getProperty(Constants.WSDL_PROPERTY_MESSAGE_NAME).getValue(); - else - wsdlMessageName = portName + "_" + opname; - String partName = xmlName.getLocalPart(); - if(isDocStyle()) - { - partName = "parameters"; - if(serviceEndpointInterface == null) - partName = win.getProperty(Constants.WSDL_PROPERTY_PART_NAME).getValue(); - } + wsdlMessageName = win.getProperty(Constants.WSDL_PROPERTY_MESSAGE_NAME).getValue(); + String partName = win.getProperty(Constants.WSDL_PROPERTY_PART_NAME).getValue(); String paramMode = ""; - if(wiop.getOutputByPartName(xmlName.getLocalPart()) != null) + if(wiop.getOutputByPartName(partName) != null) paramMode = WSToolsConstants.WSTOOLS_CONSTANT_MAPPING_IN_OUT_HOLDER_PARAM_MODE; else paramMode = WSToolsConstants.WSTOOLS_CONSTANT_MAPPING_IN_PARAM_MODE; + if (shouldUnwrap()) + { + JBossXSModel schemaModel = wsdlDefinitions.getWsdlTypes().getSchemaModel(); + XSTypeDefinition xt = schemaModel.getTypeDefinition(xmlType.getLocalPart(),xmlType.getNamespaceURI()); + unwrapRequest(semm, wsdlMessageName, xt); + break; + } + MethodParamPartsMapping mpin = getMethodParamPartsMapping(semm,xmlName, xmlType, - k, wsdlMessageName, paramMode, partName); + k, wsdlMessageName, paramMode, partName, false, true); semm.addMethodParamPartsMapping(mpin); } //Take care of out holders @@ -338,7 +326,7 @@ QName xmlType = out.getXMLType(); MethodParamPartsMapping mpm = getMethodParamPartsMapping(semm,xmlName, xmlType, lenwiopin + m -1, out.getProperty(Constants.WSDL_PROPERTY_MESSAGE_NAME).getValue(), - WSToolsConstants.WSTOOLS_CONSTANT_MAPPING_OUT_HOLDER_PARAM_MODE, xmlName.getLocalPart()); + WSToolsConstants.WSTOOLS_CONSTANT_MAPPING_OUT_HOLDER_PARAM_MODE, xmlName.getLocalPart(), false, true); semm.addMethodParamPartsMapping(mpm); } } @@ -387,7 +375,7 @@ addJavaXMLTypeMap(xt, xmlName.getLocalPart(), jwm, true); ExceptionMapping exceptionMapping = new ExceptionMapping(jwm); - exceptionMapping.setExceptionType(getJavaTypeAsString(null, xmlType)); + exceptionMapping.setExceptionType(getJavaTypeAsString(null, xmlType, false, true)); exceptionMapping.setWsdlMessage(new QName(wsdlDefinitions.getTargetNamespace(), fault.getName().toString())); jwm.addExceptionMappings(exceptionMapping); } @@ -395,7 +383,104 @@ } } - //PRIVATE METHODS + private void unwrapRequest(ServiceEndpointMethodMapping methodMapping, String messageName, XSTypeDefinition xt) + { + if (xt instanceof XSComplexTypeDefinition == false) + throw new WSException("Tried to unwrap a non-complex type."); + + XSComplexTypeDefinition wrapper = (XSComplexTypeDefinition)xt; + XSParticle particle = wrapper.getParticle(); + XSTerm term = particle.getTerm(); + if (term instanceof XSModelGroup == false) + throw new WSException("Expected model group, could not unwrap"); + unwrapRequestParticles(methodMapping, messageName, (XSModelGroup)term); + } + + private int unwrapRequestParticles(ServiceEndpointMethodMapping methodMapping, String messageName, XSModelGroup group) + { + if (group.getCompositor() != XSModelGroup.COMPOSITOR_SEQUENCE) + throw new WSException("Only a sequence type can be unwrapped."); + + int elementCount = 0; + XSObjectList particles = group.getParticles(); + for (int i = 0; i < particles.getLength(); i++) + { + XSParticle particle = (XSParticle) particles.item(i); + XSTerm term = particle.getTerm(); + if (term instanceof XSModelGroup) + { + elementCount += unwrapRequestParticles(methodMapping, messageName, (XSModelGroup)term); + } + else if (term instanceof XSElementDeclaration) + { + XSElementDeclaration element = (XSElementDeclaration)term; + QName xmlName = new QName(element.getNamespace(), element.getName()); + QName xmlType = new QName(element.getTypeDefinition().getNamespace(), element.getTypeDefinition().getName()); + boolean array = particle.getMaxOccursUnbounded() || particle.getMaxOccurs() > 1; + MethodParamPartsMapping parts = getMethodParamPartsMapping(methodMapping, xmlName, xmlType, elementCount, messageName, "IN", xmlName.getLocalPart(), array, + !element.getNillable()); + methodMapping.addMethodParamPartsMapping(parts); + elementCount++; + } + } + + return elementCount; + } + + private void unwrapResponse(ServiceEndpointMethodMapping methodMapping, QName messageName, XSTypeDefinition xt) + { + if (xt instanceof XSComplexTypeDefinition == false) + throw new WSException("Tried to unwrap a non-complex type."); + + XSComplexTypeDefinition wrapper = (XSComplexTypeDefinition)xt; + XSParticle particle = wrapper.getParticle(); + XSTerm term = particle.getTerm(); + if (term instanceof XSModelGroup == false) + throw new WSException("Expected model group, could not unwrap"); + unwrapResponseParticles(methodMapping, messageName, (XSModelGroup)term); + } + + private boolean unwrapResponseParticles(ServiceEndpointMethodMapping methodMapping, QName messageName, XSModelGroup group) + { + if (group.getCompositor() != XSModelGroup.COMPOSITOR_SEQUENCE) + throw new WSException("Only a sequence type can be unwrapped."); + + XSObjectList particles = group.getParticles(); + String returnType = null; + for (int i = 0; i < particles.getLength(); i++) + { + XSParticle particle = (XSParticle) particles.item(i); + XSTerm term = particle.getTerm(); + if (term instanceof XSModelGroup) + { + if (unwrapResponseParticles(methodMapping, messageName, (XSModelGroup)term)) + return true; + } + else if (term instanceof XSElementDeclaration) + { + XSElementDeclaration element = (XSElementDeclaration)term; + QName xmlName = new QName(element.getNamespace(), element.getName()); + QName xmlType = new QName(element.getTypeDefinition().getNamespace(), element.getTypeDefinition().getName()); + boolean array = particle.getMaxOccursUnbounded() || particle.getMaxOccurs() > 1; + StringBuilder buf = new StringBuilder(); + + String javaType = getJavaTypeAsString(xmlName, xmlType, array, !element.getNillable()); + + WsdlReturnValueMapping wrvm = new WsdlReturnValueMapping(methodMapping); + wrvm.setMethodReturnValue(javaType); + wrvm.setWsdlMessage(messageName); + wrvm.setWsdlMessagePartName(xmlName.getLocalPart()); + methodMapping.setWsdlReturnValueMapping(wrvm); + + return true; + } + } + + return false; + } + + + private void checkEssentials() { if(typeMapping == null) @@ -452,13 +537,13 @@ // Anonymous if (localName == null) { - javaType = getJavaTypeAsString(null, new QName(containingElement)); + javaType = getJavaTypeAsString(null, new QName(containingElement), false, true); localName = ">" + containingElement; jxtm.setAnonymousTypeQName(new QName(xt.getNamespace(), localName, "typeNS")); } else { - javaType = getJavaTypeAsString(null, new QName(localName)); + javaType = getJavaTypeAsString(null, new QName(localName), false, true); jxtm.setRootTypeQName(new QName(xt.getNamespace(), xt.getName(), "typeNS")); } @@ -572,12 +657,11 @@ return marr; } - private String getJavaTypeAsString( QName xmlName, QName xmlType) + private String getJavaTypeAsString(QName xmlName, QName xmlType, boolean array, boolean primitive) { String jtype = null; - String arraySuffix = ""; - boolean primitive = true; + String arraySuffix = (array) ? "[]" : ""; if (! isDocStyle()) { JBossXSModel xsmodel = wsdlDefinitions.getWsdlTypes().getSchemaModel(); @@ -634,30 +718,6 @@ return jtype + arraySuffix; } - private String getJavaTypeAsStringForReturnType( QName xmlName, QName xmlType, - WSDLInterfaceOperationOutput wiout) - { - /** - * NOTE: There is no way, we can figure out whether the JavaType - * should be a wrapper or a primitive for a given xmlType, when - * dealing with return types. The only option is to peek inside the - * SEI (if available) - */ - //Check if we have the SEI - if(serviceEndpointInterface != null) - { - String opname = wiout.getWsdlOperation().getName().toString(); - Method[] marr = getMethodsGivenOperationName(serviceEndpointInterface,opname); - if(marr != null && marr.length == 1)//If we have just one method - { - Class retType = marr[0].getReturnType(); - return retType.isArray()? JavaUtils.getSourceName(retType): retType.getName(); - } - } - return getJavaTypeAsString(xmlName,xmlType); - } - - private boolean isDocStyle() { return Constants.DOCUMENT_LITERAL.equals(wsdlStyle); @@ -729,6 +789,11 @@ return javaType; } + private boolean shouldUnwrap() + { + return unwrap && Constants.DOCUMENT_LITERAL.equals(wsdlStyle); + } + private boolean isInOutHolder(WSDLInterfaceOperationOutput wout) { //Now check if the part exists in both input and output => Need Holder @@ -741,20 +806,12 @@ private MethodParamPartsMapping getMethodParamPartsMapping(ServiceEndpointMethodMapping semm, QName xmlName, QName xmlType, - int paramPosition, String wsdlMessageName, String paramMode, String wsdlMessagePartName) + int paramPosition, String wsdlMessageName, String paramMode, String wsdlMessagePartName, boolean array, boolean primitive) { String targetNS = wsdlDefinitions.getTargetNamespace(); MethodParamPartsMapping mppm = new MethodParamPartsMapping(semm); mppm.setParamPosition(paramPosition); - String javaType = ""; - if(isDocStyle() && serviceEndpointInterface != null) - { - //javaType = this.serviceEndpointInterface.getName()+"_"+xmlType.getLocalPart()+"_RequestStruct"; - javaType = this.serviceEndpointInterface.getName()+"_" + xmlName.getLocalPart() + "_RequestStruct"; - } - else - javaType = this.getJavaTypeAsString(xmlName, xmlType ); - + String javaType = getJavaTypeAsString(xmlName, xmlType, array, primitive); mppm.setParamType(javaType); //WSDL Message Mapping Modified: branches/jbossws-1.0/src/main/java/org/jboss/ws/tools/helpers/ToolsHelper.java =================================================================== --- branches/jbossws-1.0/src/main/java/org/jboss/ws/tools/helpers/ToolsHelper.java 2006-07-05 14:36:17 UTC (rev 567) +++ branches/jbossws-1.0/src/main/java/org/jboss/ws/tools/helpers/ToolsHelper.java 2006-07-06 01:20:41 UTC (rev 568) @@ -288,6 +288,7 @@ WSDLToJava wsdlToJava = new WSDLToJava(); wsdlToJava.setTypeMapping(new LiteralTypeMapping()); + WSDLDefinitions wsdl = null; try { @@ -323,6 +324,7 @@ if (glc != null) wsdlToJava.setPackageNamespaceMap(glc.packageNamespaceMap); + wsdlToJava.setUnwrap(w2jc.unwrap); wsdlToJava.generateSEI(wsdl, new File(outDir)); //Generate the Service File @@ -333,6 +335,7 @@ MappingFileGenerator mgf = new MappingFileGenerator(wsdl, new LiteralTypeMapping()); mgf.setPackageName(getPackageName(wsdl, glc)); mgf.setServiceName(wsdl.getServices()[0].getName().toString()); + mgf.setUnwrap(w2jc.unwrap); //mgf.generate(); JavaWsdlMapping jwm = mgf.generate(); Modified: branches/jbossws-1.0/src/main/java/org/jboss/ws/tools/interfaces/WSDLToJavaIntf.java =================================================================== --- branches/jbossws-1.0/src/main/java/org/jboss/ws/tools/interfaces/WSDLToJavaIntf.java 2006-07-05 14:36:17 UTC (rev 567) +++ branches/jbossws-1.0/src/main/java/org/jboss/ws/tools/interfaces/WSDLToJavaIntf.java 2006-07-06 01:20:41 UTC (rev 568) @@ -29,11 +29,11 @@ import org.jboss.ws.jaxrpc.LiteralTypeMapping; import org.jboss.ws.metadata.wsdl.WSDLDefinitions; import org.jboss.ws.metadata.wsdl.WSDLException; - + /** - * Defines the contract for WSDL To Java Converters + * Defines the contract for WSDL To Java Converters * @author <mailto:Ani...@jb...>Anil Saldhana - * @since Jul 23, 2005 + * @since Jul 23, 2005 */ public interface WSDLToJavaIntf @@ -81,22 +81,26 @@ * Generate the SEI * @param wsdl The WSDL20Definitions (root of the object tree) * @param dir The directory where the SEI files will be written - * @throws IOException + * @throws IOException * @throws Exception */ - public void generateSEI(WSDLDefinitions wsdl, File dir) throws IOException; - + public void generateSEI(WSDLDefinitions wsdl, File dir) throws IOException; + /** * Global configuration from user that defines a map of package->Namespace - * + * * @param map */ public void setPackageNamespaceMap(Map<String,String> map); - + /** - * The client can provide a type mapping + * The client can provide a type mapping * @param typeMapping */ public void setTypeMapping(LiteralTypeMapping typeMapping); + public boolean isUnwrap(); + + public void setUnwrap(boolean unwrap); + } Modified: branches/jbossws-1.0/src/main/java/org/jboss/ws/tools/mapping/MappingFileGenerator.java =================================================================== --- branches/jbossws-1.0/src/main/java/org/jboss/ws/tools/mapping/MappingFileGenerator.java 2006-07-05 14:36:17 UTC (rev 567) +++ branches/jbossws-1.0/src/main/java/org/jboss/ws/tools/mapping/MappingFileGenerator.java 2006-07-06 01:20:41 UTC (rev 568) @@ -93,6 +93,8 @@ */ protected LiteralTypeMapping typeMapping = null; + protected boolean unwrap = false; + public MappingFileGenerator(WSDLDefinitions wsdl, TypeMapping typeM) { this.wsdlDefinitions = wsdl; @@ -154,6 +156,16 @@ this.typeNamespace = typeNamespace; } + public boolean isUnwrap() + { + return unwrap; + } + + public void setUnwrap(boolean unwrap) + { + this.unwrap = unwrap; + } + /** * Method that generates the jaxrpc mapping metadata * <dt>Guidance:<dd> @@ -166,7 +178,7 @@ public JavaWsdlMapping generate() throws IOException { MappingFileGeneratorHelper helper = new MappingFileGeneratorHelper(this.wsdlDefinitions, this.serviceName, this.packageName, this.serviceEndpointInterface, - this.typeNamespace, this.typeMapping); + this.typeNamespace, this.typeMapping, this.unwrap); String targetNS = wsdlDefinitions.getTargetNamespace(); if (typeNamespace == null) typeNamespace = targetNS; Modified: branches/jbossws-1.0/src/main/resources/samples/jsr181pojo/build.xml =================================================================== --- branches/jbossws-1.0/src/main/resources/samples/jsr181pojo/build.xml 2006-07-05 14:36:17 UTC (rev 567) +++ branches/jbossws-1.0/src/main/resources/samples/jsr181pojo/build.xml 2006-07-06 01:20:41 UTC (rev 568) @@ -23,6 +23,12 @@ <!-- samples/jsr181pojo --> <wstools dest="${build.test.dir}/wstools/resources/samples/jsr181pojo/META-INF" config="${resources.dir}/wstools-config.xml"/> + + <!-- samples/jsr181pojo/docwrapped --> + <wstools dest="${build.test.dir}/wstools/resources/samples/jsr181pojo/docwrapped/META-INF" config="${resources.dir}/docwrapped/wstools-config.xml"/> + <move todir="${build.test.dir}/wstools/java"> + <fileset dir="${build.test.dir}/wstools/resources/samples/jsr181pojo/docwrapped/META-INF" includes="org/**"/> + </move> </target> @@ -49,7 +55,26 @@ <include name="wsdl/**"/> </metainf> </jar> - + + <!-- jbossws-samples-jsr181pojo-docwrapped --> + <war warfile="${build.test.dir}/libs/jbossws-samples-jsr181pojo-docwrapped.war" webxml="${build.test.dir}/resources/samples/jsr181pojo/docwrapped/WEB-INF/web.xml"> + <classes dir="${build.test.dir}/classes"> + <include name="org/jboss/test/ws/samples/jsr181pojo/docwrapped/JSEBean01.class"/> + </classes> + </war> + <jar jarfile="${build.test.dir}/libs/jbossws-samples-jsr181pojo-docwrapped-client.jar"> + <fileset dir="${build.test.dir}/classes"> + <include name="org/jboss/test/ws/samples/jsr181pojo/docwrapped/EndpointInterface.class"/> + <include name="org/jboss/test/ws/samples/jsr181pojo/docwrapped/Concat.class"/> + <include name="org/jboss/test/ws/samples/jsr181pojo/docwrapped/ConcatResponse.class"/> + </fileset> + <metainf dir="${build.test.dir}/resources/samples/jsr181pojo/docwrapped/META-INF"> + <include name="application-client.xml"/> + <include name="jboss-client.xml"/> + <include name="jaxrpc-mapping.xml"/> + <include name="wsdl/**"/> + </metainf> + </jar> </target> <!-- @@ -62,4 +87,4 @@ </antcall> </target> -</project> \ No newline at end of file +</project> Modified: branches/jbossws-1.0/src/main/resources/schema/jbossws-tool_1_0.xsd =================================================================== --- branches/jbossws-1.0/src/main/resources/schema/jbossws-tool_1_0.xsd 2006-07-05 14:36:17 UTC (rev 567) +++ branches/jbossws-1.0/src/main/resources/schema/jbossws-tool_1_0.xsd 2006-07-06 01:20:41 UTC (rev 568) @@ -230,6 +230,11 @@ <xs:documentation>Specifies the location of the WSDL file as a URL. The URL may be either absolute or relative to the current directory. Remote protocols such as http are supported.</xs:documentation> </xs:annotation> </xs:attribute> + <xs:attribute name="unwrap" type="xs:boolean" use="optional" default="false"> + <xs:annotation> + <xs:documentation>Whether to unwrap a document/literal webservice reques and response message. This is intended to be used on a service that follows the "wrapped" convention.</xs:documentation> + </xs:annotation> + </xs:attribute> </xs:complexType> <xs:complexType name="parameterType"> <xs:attribute name="type" use="required"> Modified: branches/jbossws-1.0/src/test/ant/build-jars.xml =================================================================== --- branches/jbossws-1.0/src/test/ant/build-jars.xml 2006-07-05 14:36:17 UTC (rev 567) +++ branches/jbossws-1.0/src/test/ant/build-jars.xml 2006-07-06 01:20:41 UTC (rev 568) @@ -1303,6 +1303,26 @@ </metainf> </jar> + <!-- jbossws-samples-jsr181pojo-docwrapped --> + <war warfile="${build.test.dir}/libs/jbossws-samples-jsr181pojo-docwrapped.war" webxml="${build.test.dir}/resources/samples/jsr181pojo/docwrapped/WEB-INF/web.xml"> + <classes dir="${build.test.dir}/classes"> + <include name="org/jboss/test/ws/samples/jsr181pojo/docwrapped/JSEBean01.class"/> + </classes> + </war> + <jar jarfile="${build.test.dir}/libs/jbossws-samples-jsr181pojo-docwrapped-client.jar"> + <fileset dir="${build.test.dir}/classes"> + <include name="org/jboss/test/ws/samples/jsr181pojo/docwrapped/EndpointInterface.class"/> + <include name="org/jboss/test/ws/samples/jsr181pojo/docwrapped/Concat.class"/> + <include name="org/jboss/test/ws/samples/jsr181pojo/docwrapped/ConcatResponse.class"/> + </fileset> + <metainf dir="${build.test.dir}/resources/samples/jsr181pojo/docwrapped/META-INF"> + <include name="application-client.xml"/> + <include name="jboss-client.xml"/> + <include name="jaxrpc-mapping.xml"/> + <include name="wsdl/**"/> + </metainf> + </jar> + <!-- jbossws-samples-message --> <war warfile="${build.test.dir}/libs/jbossws-samples-message.war" webxml="${build.test.dir}/resources/samples/message/WEB-INF/web.xml"> <classes dir="${build.test.dir}/classes"> Modified: branches/jbossws-1.0/src/test/build.xml =================================================================== --- branches/jbossws-1.0/src/test/build.xml 2006-07-05 14:36:17 UTC (rev 567) +++ branches/jbossws-1.0/src/test/build.xml 2006-07-06 01:20:41 UTC (rev 568) @@ -269,6 +269,10 @@ <wstools dest="${build.test.dir}/wstools/resources/samples/jsr109pojo/rpclit/WEB-INF" config="${test.resources.dir}/samples/jsr109pojo/rpclit/wstools-config.xml"/> <wstools dest="${build.test.dir}/wstools/resources/samples/jsr181ejb/META-INF" config="${test.resources.dir}/samples/jsr181ejb/wstools-config.xml"/> <wstools dest="${build.test.dir}/wstools/resources/samples/jsr181pojo/META-INF" config="${test.resources.dir}/samples/jsr181pojo/wstools-config.xml"/> + <wstools dest="${build.test.dir}/wstools/resources/samples/jsr181pojo/docwrapped/META-INF" config="${test.resources.dir}/samples/jsr181pojo/docwrapped/wstools-config.xml"/> + <move todir="${build.test.dir}/wstools/java"> + <fileset dir="${build.test.dir}/wstools/resources/samples/jsr181pojo/docwrapped/META-INF" includes="org/**"/> + </move> <wstools dest="${build.test.dir}/wstools/resources/samples/message/WEB-INF" config="${test.resources.dir}/samples/message/wstools-config.xml"/> <!-- wstools dest="${build.test.dir}/wstools/resources/samples/mtom/WEB-INF" config="${test.resources.dir}/samples/mtom/wstools-config.xml"/ --> <wstools dest="${build.test.dir}/wstools/resources/samples/oneway/WEB-INF" config="${test.resources.dir}/samples/oneway/wstools-config.xml"/> @@ -450,4 +454,4 @@ <delete dir="${build.test.dir}"/> </target> -</project> \ No newline at end of file +</project> Added: branches/jbossws-1.0/src/test/resources/samples/jsr181pojo/docwrapped/META-INF/application-client.xml =================================================================== --- branches/jbossws-1.0/src/test/resources/samples/jsr181pojo/docwrapped/META-INF/application-client.xml 2006-07-05 14:36:17 UTC (rev 567) +++ branches/jbossws-1.0/src/test/resources/samples/jsr181pojo/docwrapped/META-INF/application-client.xml 2006-07-06 01:20:41 UTC (rev 568) @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<application-client xmlns="http://java.sun.com/xml/ns/j2ee" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/application-client_1_4.xsd" + version="1.4"> + + <display-name>JSR-181 Annotation test</display-name> + + <service-ref> + <service-ref-name>service/TestService</service-ref-name> + <service-interface>javax.xml.rpc.Service</service-interface> + <wsdl-file>META-INF/wsdl/TestService.wsdl</wsdl-file> + <jaxrpc-mapping-file>META-INF/jaxrpc-mapping.xml</jaxrpc-mapping-file> + <port-component-ref> + <service-endpoint-interface>org.jboss.test.ws.samples.jsr181pojo.docwrapped.EndpointInterface</service-endpoint-interface> + </port-component-ref> + </service-ref> + +</application-client> + Property changes on: branches/jbossws-1.0/src/test/resources/samples/jsr181pojo/docwrapped/META-INF/application-client.xml ___________________________________________________________________ Name: svn:keywords + Id Revision Name: svn:eol-style + LF Added: branches/jbossws-1.0/src/test/resources/samples/jsr181pojo/docwrapped/META-INF/jboss-client.xml =================================================================== --- branches/jbossws-1.0/src/test/resources/samples/jsr181pojo/docwrapped/META-INF/jboss-client.xml 2006-07-05 14:36:17 UTC (rev 567) +++ branches/jbossws-1.0/src/test/resources/samples/jsr181pojo/docwrapped/META-INF/jboss-client.xml 2006-07-06 01:20:41 UTC (rev 568) @@ -0,0 +1,9 @@ +<?xml version='1.0' encoding='UTF-8' ?> + +<!DOCTYPE jboss-client PUBLIC + "-//JBoss//DTD Application Client 4.0//EN" + "http://www.jboss.org/j2ee/dtd/jboss-client_4_0.dtd"> + +<jboss-client> + <jndi-name>jbossws-client</jndi-name> +</jboss-client> Property changes on: branches/jbossws-1.0/src/test/resources/samples/jsr181pojo/docwrapped/META-INF/jboss-client.xml ___________________________________________________________________ Name: svn:keywords + Id Revision Name: svn:eol-style + LF Added: branches/jbossws-1.0/src/test/resources/samples/jsr181pojo/docwrapped/META-INF/wsdl/TestService.wsdl =================================================================== --- branches/jbossws-1.0/src/test/resources/samples/jsr181pojo/docwrapped/META-INF/wsdl/TestService.wsdl 2006-07-05 14:36:17 UTC (rev 567) +++ branches/jbossws-1.0/src/test/resources/samples/jsr181pojo/docwrapped/META-INF/wsdl/TestService.wsdl 2006-07-06 01:20:41 UTC (rev 568) @@ -0,0 +1,48 @@ +<definitions name='TestService' targetNamespace='http://org.jboss.ws/samples/jsr181pojo/docwrapped' xmlns='http://schemas.xmlsoap.org/wsdl/' xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' xmlns:tns='http://org.jboss.ws/samples/jsr181pojo/docwrapped' xmlns:xsd='http://www.w3.org/2001/XMLSchema'> + <types> + <schema elementFormDefault='qualified' targetNamespace='http://org.jboss.ws/samples/jsr181pojo/docwrapped' xmlns='http://www.w3.org/2001/XMLSchema' xmlns:soap11-enc='http://schemas.xmlsoap.org/soap/encoding/' xmlns:tns='http://org.jboss.ws/samples/jsr181pojo/docwrapped' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'> + <complexType name='concat'> + <sequence> + <element name='String_1' nillable='true' type='string'/> + <element name='long_1' type='long'/> + </sequence> + </complexType> + <complexType name='concatResponse'> + <sequence> + <element name='result' nillable='true' type='string'/> + </sequence> + </complexType> + <element name='concat' type='tns:concat'/> + <element name='concatResponse' type='tns:concatResponse'/> + </schema> + </types> + <message name='EndpointInterface_concat'> + <part element='tns:concat' name='parameters'/> + </message> + <message name='EndpointInterface_concatResponse'> + <part element='tns:concatResponse' name='result'/> + </message> + <portType name='EndpointInterface'> + <operation name='concat'> + <input message='tns:EndpointInterface_concat'/> + <output message='tns:EndpointInterface_concatResponse'/> + </operation> + </portType> + <binding name='EndpointInterfaceBinding' type='tns:EndpointInterface'> + <soap:binding style='document' transport='http://schemas.xmlsoap.org/soap/http'/> + <operation name='concat'> + <soap:operation soapAction=''/> + <input> + <soap:body use='literal'/> + </input> + <output> + <soap:body use='literal'/> + </output> + </operation> + </binding> + <service name='TestService'> + <port binding='tns:EndpointInterfaceBinding' name='EndpointInterfacePort'> + <soap:address location='http://draught:8080/jbossws-samples-jsr181pojo-docwrapped/TestService'/> + </port> + </service> +</definitions> \ No newline at end of file Property changes on: branches/jbossws-1.0/src/test/resources/samples/jsr181pojo/docwrapped/META-INF/wsdl/TestService.wsdl ___________________________________________________________________ Name: svn:keywords + Id Revision Name: svn:eol-style + LF Added: branches/jbossws-1.0/src/test/resources/samples/jsr181pojo/docwrapped/WEB-INF/web.xml =================================================================== --- branches/jbossws-1.0/src/test/resources/samples/jsr181pojo/docwrapped/WEB-INF/web.xml 2006-07-05 14:36:17 UTC (rev 567) +++ branches/jbossws-1.0/src/test/resources/samples/jsr181pojo/docwrapped/WEB-INF/web.xml 2006-07-06 01:20:41 UTC (rev 568) @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<web-app xmlns="http://java.sun.com/xml/ns/j2ee" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" + version="2.4"> + + <servlet> + <servlet-name>TestService</servlet-name> + <servlet-class>org.jboss.test.ws.samples.jsr181pojo.docwrapped.JSEBean01</servlet-class> + </servlet> + + <servlet-mapping> + <servlet-name>TestService</servlet-name> + <url-pattern>/*</url-pattern> + </servlet-mapping> + +</web-app> + Property changes on: branches/jbossws-1.0/src/test/resources/samples/jsr181pojo/docwrapped/WEB-INF/web.xml ___________________________________________________________________ Name: svn:keywords + Id Revision Name: svn:eol-style + LF Added: branches/jbossws-1.0/src/test/resources/samples/jsr181pojo/docwrapped/wstools-config.xml =================================================================== --- branches/jbossws-1.0/src/test/resources/samples/jsr181pojo/docwrapped/wstools-config.xml 2006-07-05 14:36:17 UTC (rev 567) +++ branches/jbossws-1.0/src/test/resources/samples/jsr181pojo/docwrapped/wstools-config.xml 2006-07-06 01:20:41 UTC (rev 568) @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + wstools -config wstools-config.xml +--> + +<configuration xmlns="http://www.jboss.org/jbossws-tools" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.jboss.org/jbossws-tools http://www.jboss.org/jbossws-tools/schema/jbossws-tool_1_0.xsd"> + + <global> + <package-namespace package="org.jboss.test.ws.samples.jsr181pojo.docwrapped" namespace="http://org.jboss.ws/samples/jsr181pojo/docwrapped"/> + </global> + <wsdl-java unwrap="true" file="resources/samples/jsr181pojo/docwrapped/META-INF/wsdl/TestService.wsdl"> + <mapping file="jaxrpc-mapping.xml" /> + </wsdl-java> + +</configuration> Property changes on: branches/jbossws-1.0/src/test/resources/samples/jsr181pojo/docwrapped/wstools-config.xml ___________________________________________________________________ Name: svn:keywords + Id Revision Name: svn:eol-style + LF |