Return-Path: Delivered-To: apmail-geronimo-scm-archive@www.apache.org Received: (qmail 19343 invoked from network); 21 Apr 2005 05:03:42 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 21 Apr 2005 05:03:42 -0000 Received: (qmail 73243 invoked by uid 500); 21 Apr 2005 05:03:51 -0000 Delivered-To: apmail-geronimo-scm-archive@geronimo.apache.org Received: (qmail 73222 invoked by uid 500); 21 Apr 2005 05:03:50 -0000 Mailing-List: contact scm-help@geronimo.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: dev@geronimo.apache.org Delivered-To: mailing list scm@geronimo.apache.org Received: (qmail 73207 invoked by uid 99); 21 Apr 2005 05:03:50 -0000 X-ASF-Spam-Status: No, hits=0.2 required=10.0 tests=NO_REAL_NAME X-Spam-Check-By: apache.org Received: from minotaur.apache.org (HELO minotaur.apache.org) (209.237.227.194) by apache.org (qpsmtpd/0.28) with SMTP; Wed, 20 Apr 2005 22:03:49 -0700 Received: (qmail 19320 invoked by uid 65534); 21 Apr 2005 05:03:38 -0000 Message-ID: <20050421050338.19319.qmail@minotaur.apache.org> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Subject: svn commit: r164004 - in /geronimo/trunk/modules/axis-builder/src: java/org/apache/geronimo/axis/builder/ test/org/apache/geronimo/axis/builder/ Date: Thu, 21 Apr 2005 05:03:37 -0000 To: scm@geronimo.apache.org From: djencks@apache.org X-Mailer: svnmailer-1.0.0-dev X-Virus-Checked: Checked X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Author: djencks Date: Wed Apr 20 22:03:36 2005 New Revision: 164004 URL: http://svn.apache.org/viewcvs?rev=3D164004&view=3Drev Log: clean up use of SchemaInfoBuilder and allow use of restrictions of simple t= ypes in faults/exception constructors Modified: geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/b= uilder/AxisBuilder.java geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/b= uilder/AxisServiceBuilder.java geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/b= uilder/HeavyweightOperationDescBuilder.java geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/b= uilder/SchemaInfoBuilder.java geronimo/trunk/modules/axis-builder/src/test/org/apache/geronimo/axis/b= uilder/ParsingTest.java Modified: geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/= axis/builder/AxisBuilder.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/axis-builder/src/= java/org/apache/geronimo/axis/builder/AxisBuilder.java?rev=3D164004&r1=3D16= 4003&r2=3D164004&view=3Ddiff =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D --- geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/b= uilder/AxisBuilder.java (original) +++ geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/b= uilder/AxisBuilder.java Wed Apr 20 22:03:36 2005 @@ -240,9 +240,9 @@ } =20 Map exceptionMap =3D WSDescriptorParser.getExceptionMap(mapping); - Map schemaTypeKeyToSchemaTypeMap =3D schemaInfoBuilder.getSchemaTy= peKeyToSchemaTypeMap(); - Map complexTypeMap =3D schemaInfoBuilder.getComplexTypesInWsdl(); - Map elementMap =3D schemaInfoBuilder.getElementToTypeMap(); +// Map schemaTypeKeyToSchemaTypeMap =3D schemaInfoBuilder.getSchema= TypeKeyToSchemaTypeMap(); +// Map complexTypeMap =3D schemaInfoBuilder.getComplexTypesInWsdl(); +// Map elementMap =3D schemaInfoBuilder.getElementToTypeMap(); =20 Map wsdlPortMap =3D service.getPorts(); for (Iterator iterator =3D wsdlPortMap.entrySet().iterator(); iter= ator.hasNext();) { @@ -266,9 +266,9 @@ List operations =3D portType.getOperations(); OperationInfo[] operationInfos =3D new OperationInfo[operation= s=2Esize()]; if (endpointMappings.length =3D=3D 0) { - doLightweightMapping(service.getQName(), portType, mapping= , classLoader, context, module, operations, binding, portStyle, soapVersion= , operationInfos, schemaTypeKeyToSchemaTypeMap, portName, serviceImpl, loca= tion, handlerInfos, seiPortNameToFactoryMap, seiClassNameToFactoryMap, cred= entialsName); + doLightweightMapping(service.getQName(), portType, mapping= , classLoader, context, module, operations, binding, portStyle, soapVersion= , operationInfos, schemaInfoBuilder, portName, serviceImpl, location, handl= erInfos, seiPortNameToFactoryMap, seiClassNameToFactoryMap, credentialsName= ); } else { - doHeavyweightMapping(service.getQName(), portType, endpoin= tMappings, classLoader, context, module, operations, binding, portStyle, so= apVersion, exceptionMap, complexTypeMap, elementMap, mapping, operationInfo= s, schemaTypeKeyToSchemaTypeMap, portName, serviceImpl, location, handlerIn= fos, seiPortNameToFactoryMap, seiClassNameToFactoryMap, credentialsName); + doHeavyweightMapping(service.getQName(), portType, endpoin= tMappings, classLoader, context, module, operations, binding, portStyle, so= apVersion, exceptionMap, schemaInfoBuilder, mapping, operationInfos, portNa= me, serviceImpl, location, handlerInfos, seiPortNameToFactoryMap, seiClassN= ameToFactoryMap, credentialsName); } } } @@ -310,7 +310,7 @@ return location; } =20 - private void doHeavyweightMapping(QName serviceName, PortType portType= , ServiceEndpointInterfaceMappingType[] endpointMappings, ClassLoader class= Loader, DeploymentContext context, Module module, List operations, Binding = binding, Style portStyle, SOAPConstants soapVersion, Map exceptionMap, Map = complexTypeMap, Map elementMap, JavaWsdlMappingType mapping, OperationInfo[= ] operationInfos, Map schemaTypeKeyToSchemaTypeMap, String portName, Object= serviceImpl, URL location, List handlerInfos, Map seiPortNameToFactoryMap,= Map seiClassNameToFactoryMap, String credentialsName) throws DeploymentExc= eption { + private void doHeavyweightMapping(QName serviceName, PortType portType= , ServiceEndpointInterfaceMappingType[] endpointMappings, ClassLoader class= Loader, DeploymentContext context, Module module, List operations, Binding = binding, Style portStyle, SOAPConstants soapVersion, Map exceptionMap, Sche= maInfoBuilder schemaInfoBuilder, JavaWsdlMappingType mapping, OperationInfo= [] operationInfos, String portName, Object serviceImpl, URL location, List = handlerInfos, Map seiPortNameToFactoryMap, Map seiClassNameToFactoryMap, St= ring credentialsName) throws DeploymentException { Class serviceEndpointInterface; SEIFactory seiFactory; //complete jaxrpc mapping file supplied @@ -346,20 +346,20 @@ throw new DeploymentException("No BindingOperation for ope= ration: " + operationName + ", input: " + operation.getInput().getName() + = ", output: " + (operation.getOutput() =3D=3D null ? "" : operation.ge= tOutput().getName())); } ServiceEndpointMethodMappingType methodMapping =3D WSDescripto= rParser.getMethodMappingForOperation(operationName, methodMappings); - HeavyweightOperationDescBuilder operationDescBuilder =3D new H= eavyweightOperationDescBuilder(bindingOperation, mapping, methodMapping, po= rtStyle, exceptionMap, complexTypeMap, elementMap, javaXmlTypeMappings, cla= ssLoader, enhancedServiceEndpointClass); + HeavyweightOperationDescBuilder operationDescBuilder =3D new H= eavyweightOperationDescBuilder(bindingOperation, mapping, methodMapping, po= rtStyle, exceptionMap, schemaInfoBuilder, javaXmlTypeMappings, classLoader,= enhancedServiceEndpointClass); OperationInfo operationInfo =3D operationDescBuilder.buildOper= ationInfo(soapVersion); operationInfos[i++] =3D operationInfo; wrapperElementQNames.addAll(operationDescBuilder.getWrapperEle= mentQNames()); } List typeMappings =3D new ArrayList(); Map typeDescriptors =3D new HashMap(); - buildTypeInfoHeavyweight(wrapperElementQNames, javaXmlTypeMappings= , schemaTypeKeyToSchemaTypeMap, classLoader, typeMappings, typeDescriptors); + buildTypeInfoHeavyweight(wrapperElementQNames, javaXmlTypeMappings= , schemaInfoBuilder.getSchemaTypeKeyToSchemaTypeMap(), classLoader, typeMap= pings, typeDescriptors); seiFactory =3D createSEIFactory(serviceName, portName, enhancedSer= viceEndpointClass, serviceImpl, typeMappings, typeDescriptors, location, op= erationInfos, handlerInfos, credentialsName, context, classLoader); seiPortNameToFactoryMap.put(portName, seiFactory); seiClassNameToFactoryMap.put(serviceEndpointInterface.getName(), s= eiFactory); } =20 - private void doLightweightMapping(QName serviceName, PortType portType= , JavaWsdlMappingType mapping, ClassLoader classLoader, DeploymentContext c= ontext, Module module, List operations, Binding binding, Style portStyle, S= OAPConstants soapVersion, OperationInfo[] operationInfos, Map schemaTypeKey= ToSchemaTypeMap, String portName, Object serviceImpl, URL location, List ha= ndlerInfos, Map seiPortNameToFactoryMap, Map seiClassNameToFactoryMap, Stri= ng credentialsName) throws DeploymentException { + private void doLightweightMapping(QName serviceName, PortType portType= , JavaWsdlMappingType mapping, ClassLoader classLoader, DeploymentContext c= ontext, Module module, List operations, Binding binding, Style portStyle, S= OAPConstants soapVersion, OperationInfo[] operationInfos, SchemaInfoBuilder= schemaInfoBuilder, String portName, Object serviceImpl, URL location, List= handlerInfos, Map seiPortNameToFactoryMap, Map seiClassNameToFactoryMap, S= tring credentialsName) throws DeploymentException { Class serviceEndpointInterface; SEIFactory seiFactory; //lightweight jaxrpc mapping supplied @@ -376,13 +376,14 @@ } List typeMappings =3D new ArrayList(); Map typeDescriptors =3D new HashMap(); - buildTypeInfoLightWeight(schemaTypeKeyToSchemaTypeMap, mapping, cl= assLoader, typeMappings, typeDescriptors); + buildTypeInfoLightWeight(schemaInfoBuilder, mapping, classLoader, = typeMappings, typeDescriptors); seiFactory =3D createSEIFactory(serviceName, portName, enhancedSer= viceEndpointClass, serviceImpl, typeMappings, typeDescriptors, location, op= erationInfos, handlerInfos, credentialsName, context, classLoader); seiPortNameToFactoryMap.put(portName, seiFactory); seiClassNameToFactoryMap.put(serviceEndpointInterface.getName(), s= eiFactory); } =20 - private void buildTypeInfoLightWeight(Map schemaTypeKeyToSchemaTypeMap= , JavaWsdlMappingType mapping, ClassLoader classLoader, List typeMappings, = Map typeDescriptors) throws DeploymentException { + private void buildTypeInfoLightWeight(SchemaInfoBuilder schemaInfoBuil= der, JavaWsdlMappingType mapping, ClassLoader classLoader, List typeMapping= s, Map typeDescriptors) throws DeploymentException { + Map schemaTypeKeyToSchemaTypeMap =3D schemaInfoBuilder.getSchemaTy= peKeyToSchemaTypeMap(); for (Iterator iterator =3D schemaTypeKeyToSchemaTypeMap.entrySet()= .iterator(); iterator.hasNext();) { Map.Entry entry =3D (Map.Entry) iterator.next(); SchemaTypeKey key =3D (SchemaTypeKey) entry.getKey(); Modified: geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/= axis/builder/AxisServiceBuilder.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/axis-builder/src/= java/org/apache/geronimo/axis/builder/AxisServiceBuilder.java?rev=3D164004&= r1=3D164003&r2=3D164004&view=3Ddiff =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D --- geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/b= uilder/AxisServiceBuilder.java (original) +++ geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/b= uilder/AxisServiceBuilder.java Wed Apr 20 22:03:36 2005 @@ -28,7 +28,6 @@ import java.util.Map; import java.util.Set; import java.util.jar.JarFile; - import javax.wsdl.Binding; import javax.wsdl.BindingInput; import javax.wsdl.BindingOperation; @@ -139,8 +138,6 @@ Map exceptionMap =3D WSDescriptorParser.getExceptionMap(portInfo.g= etJavaWsdlMapping()); SchemaInfoBuilder schemaInfoBuilder =3D portInfo.getSchemaInfoBuil= der(); Map schemaTypeKeyToSchemaTypeMap =3D schemaInfoBuilder.getSchemaTy= peKeyToSchemaTypeMap(); - Map complexTypeMap =3D schemaInfoBuilder.getComplexTypesInWsdl(); - Map elementMap =3D schemaInfoBuilder.getElementToTypeMap(); =20 JavaServiceDesc serviceDesc =3D new JavaServiceDesc(); =20 @@ -169,7 +166,7 @@ validateLightweightMapping(portInfo.getDefinition()); } =20 - Set wrapperElementQNames =3D buildOperations(binding, serviceEndpo= intInterface, isLightweight, portInfo, exceptionMap, complexTypeMap, elemen= tMap, classLoader, serviceDesc); + Set wrapperElementQNames =3D buildOperations(binding, serviceEndpo= intInterface, isLightweight, portInfo, exceptionMap, classLoader, serviceDe= sc); =20 TypeMappingRegistryImpl tmr =3D new TypeMappingRegistryImpl(); tmr.doRegisterFromVersion("1.3"); @@ -180,7 +177,7 @@ serviceDesc.setTypeMapping(typeMapping); =20 Map classToTypeDescInfo =3D new HashMap(); - =20 + if (isLightweight) { buildLightweightTypes(schemaTypeKeyToSchemaTypeMap, portInfo, = classLoader, typeMapping, classToTypeDescInfo); } else { @@ -301,13 +298,13 @@ } } =20 - private static Set buildOperations(Binding binding, Class serviceEndpo= intInterface, boolean lightweight, PortInfo portInfo, Map exceptionMap, Map= complexTypeMap, Map elementMap, ClassLoader classLoader, JavaServiceDesc s= erviceDesc) throws DeploymentException { + private static Set buildOperations(Binding binding, Class serviceEndpo= intInterface, boolean lightweight, PortInfo portInfo, Map exceptionMap, Cla= ssLoader classLoader, JavaServiceDesc serviceDesc) throws DeploymentExcepti= on { Set wrappedElementQNames =3D new HashSet(); =20 SOAPBinding soapBinding =3D (SOAPBinding) SchemaInfoBuilder.getExt= ensibilityElement(SOAPBinding.class, binding.getExtensibilityElements()); String portStyleString =3D soapBinding.getStyle(); Style portStyle =3D Style.getStyle(portStyleString); - =20 + List bindingOperations =3D binding.getBindingOperations(); for (int i =3D 0; i < bindingOperations.size(); i++) { BindingOperation bindingOperation =3D (BindingOperation) bindi= ngOperations.get(i); @@ -321,7 +318,7 @@ ServiceEndpointMethodMappingType[] methodMappings =3D port= Info.getServiceEndpointInterfaceMapping().getServiceEndpointMethodMappingAr= ray(); ServiceEndpointMethodMappingType methodMapping =3D WSDescr= iptorParser.getMethodMappingForOperation(operationName, methodMappings); JavaXmlTypeMappingType[] javaXmlTypeMappingTypes =3D portI= nfo.getJavaWsdlMapping().getJavaXmlTypeMappingArray(); - operationDescBuilder =3D new HeavyweightOperationDescBuild= er(bindingOperation, portInfo.getJavaWsdlMapping(), methodMapping, portStyl= e, exceptionMap, complexTypeMap, elementMap, javaXmlTypeMappingTypes, class= Loader, serviceEndpointInterface); + operationDescBuilder =3D new HeavyweightOperationDescBuild= er(bindingOperation, portInfo.getJavaWsdlMapping(), methodMapping, portStyl= e, exceptionMap, portInfo.getSchemaInfoBuilder(), javaXmlTypeMappingTypes, = classLoader, serviceEndpointInterface); Set wrappedElementQNamesForOper =3D ((HeavyweightOperation= DescBuilder) operationDescBuilder).getWrapperElementQNames(); wrappedElementQNames.addAll(wrappedElementQNamesForOper); } Modified: geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/= axis/builder/HeavyweightOperationDescBuilder.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/axis-builder/src/= java/org/apache/geronimo/axis/builder/HeavyweightOperationDescBuilder.java?= rev=3D164004&r1=3D164003&r2=3D164004&view=3Ddiff =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D --- geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/b= uilder/HeavyweightOperationDescBuilder.java (original) +++ geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/b= uilder/HeavyweightOperationDescBuilder.java Wed Apr 20 22:03:36 2005 @@ -68,8 +68,7 @@ =20 =20 private final Map exceptionMap; - private final Map complexTypeMap; - private final Map elementMap; + private final SchemaInfoBuilder schemaInfoBuilder; private final ClassLoader classLoader; private final boolean rpcStyle; private final boolean documentStyle; @@ -89,13 +88,12 @@ */ private final Set wrapperElementQNames =3D new HashSet(); =20 - public HeavyweightOperationDescBuilder(BindingOperation bindingOperati= on, JavaWsdlMappingType mapping, ServiceEndpointMethodMappingType methodMap= ping, Style defaultStyle, Map exceptionMap, Map complexTypeMap, Map element= Map, JavaXmlTypeMappingType[] javaXmlTypeMappingTypes, ClassLoader classLoa= der, Class serviceEndpointInterface) throws DeploymentException { + public HeavyweightOperationDescBuilder(BindingOperation bindingOperati= on, JavaWsdlMappingType mapping, ServiceEndpointMethodMappingType methodMap= ping, Style defaultStyle, Map exceptionMap, SchemaInfoBuilder schemaInfoBui= lder, JavaXmlTypeMappingType[] javaXmlTypeMappingTypes, ClassLoader classLo= ader, Class serviceEndpointInterface) throws DeploymentException { super(bindingOperation); this.mapping =3D mapping; this.methodMapping =3D methodMapping; this.exceptionMap =3D exceptionMap; - this.complexTypeMap =3D complexTypeMap; - this.elementMap =3D elementMap; + this.schemaInfoBuilder =3D schemaInfoBuilder; for (int i =3D 0; i < javaXmlTypeMappingTypes.length; i++) { JavaXmlTypeMappingType javaXmlTypeMappingType =3D javaXmlTypeM= appingTypes[i]; String javaClassName =3D javaXmlTypeMappingType.getJavaType().= getStringValue().trim(); @@ -200,7 +198,7 @@ if (wrappedStyle) { Part inputPart =3D getWrappedPart(input); QName name =3D inputPart.getElementName(); - SchemaType operationType =3D (SchemaType) complexTypeMap.get(n= ame); + SchemaType operationType =3D (SchemaType) schemaInfoBuilder.ge= tComplexTypesInWsdl().get(name); =20 Set expectedInParams =3D new HashSet(); =20 @@ -261,7 +259,7 @@ if (null !=3D output && wrappedStyle) { Part inputPart =3D getWrappedPart(output); QName name =3D inputPart.getElementName(); - SchemaType operationType =3D (SchemaType) complexTypeMap.get(n= ame); + SchemaType operationType =3D (SchemaType) schemaInfoBuilder.ge= tComplexTypesInWsdl().get(name); =20 Set expectedOutParams =3D new HashSet(); =20 @@ -349,12 +347,12 @@ throw new DeploymentException("Neither type nor element na= me supplied for part: " + part); } } else { - faultTypeQName =3D (QName) elementMap.get(part.getElementName(= )); + faultTypeQName =3D (QName) schemaInfoBuilder.getElementToTypeM= ap().get(part.getElementName()); if (faultTypeQName =3D=3D null) { - throw new DeploymentException("Can not find type for: elem= ent: " + part.getElementName() + ", known elements: " + elementMap); + throw new DeploymentException("Can not find type for: elem= ent: " + part.getElementName() + ", known elements: " + schemaInfoBuilder.g= etElementToTypeMap()); } } - SchemaType complexType =3D (SchemaType) complexTypeMap.get(faultTy= peQName); + SchemaType complexType =3D (SchemaType) schemaInfoBuilder.getCompl= exTypesInWsdl().get(faultTypeQName); boolean isComplex =3D complexType !=3D null; FaultDesc faultDesc =3D new FaultDesc(faultQName, className, fault= TypeQName, isComplex); =20 @@ -380,8 +378,11 @@ =20 QName elementTypeQName =3D elementType.getName(); if (elementTypeQName !=3D null) { - if (complexTypeMap.containsKey(elementType)) { + if (schemaInfoBuilder.getComplexTypesInWsdl().contains= Key(elementType)) { String javaClassName =3D (String) publicTypes.get(= elementTypeQName); + if (javaClassName =3D=3D null) { + throw new DeploymentException("No class mapped= for element type: " + elementType); + } javaElementType =3D getJavaClass(javaClassName); } else { javaElementType =3D (Class) qnameToClassMap.get(el= ementTypeQName); @@ -394,7 +395,21 @@ //anonymous type qname is constructed using rules 1.b = and 2.b String anonymousQName =3D complexType.getName().getNam= espaceURI() + ":>" + complexType.getName().getLocalPart() + ">" + elementNa= me; String javaClassName =3D (String) anonymousTypes.get(a= nonymousQName); - javaElementType =3D getJavaClass(javaClassName); + if (javaClassName =3D=3D null) { + if (elementType.isSimpleType()) { + //maybe it's a restriction of a built in simpl= e type + SchemaType baseType =3D elementType.getBaseTyp= e(); + QName simpleTypeQName =3D baseType.getName(); + javaElementType =3D (Class) qnameToClassMap.ge= t(simpleTypeQName); + if (javaElementType =3D=3D null) { + throw new DeploymentException("Unknown sim= ple type: " + elementType + " of name: " + elementName + " and QName: " + s= impleTypeQName); + } + } else { + throw new DeploymentException("No class mapped= for anonymous type: " + anonymousQName); + } + } else { + javaElementType =3D getJavaClass(javaClassName); + } } //todo faultTypeQName is speculative //todo outheader might be true! @@ -607,7 +622,7 @@ } =20 //use complexTypeMap - boolean isComplexType =3D complexTypeMap.containsKey(paramTypeQNam= e); + boolean isComplexType =3D schemaInfoBuilder.getComplexTypesInWsdl(= )=2EcontainsKey(paramTypeQName); String paramJavaTypeName =3D paramMapping.getParamType().getString= Value().trim(); boolean isInOnly =3D mode =3D=3D ParameterDesc.IN; Class actualParamJavaType =3D WSDescriptorParser.getHolderType(par= amJavaTypeName, isInOnly, paramTypeQName, isComplexType, mapping, classLoad= er); @@ -632,7 +647,7 @@ =20 wrapperElementQNames.add(name); =20 - SchemaType operationType =3D (SchemaType) complexTypeMap.get(name); + SchemaType operationType =3D (SchemaType) schemaInfoBuilder.getCom= plexTypesInWsdl().get(name); if (null =3D=3D operationType) { throw new DeploymentException("No global element named " + nam= e + " for operation " + operationName); } Modified: geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/= axis/builder/SchemaInfoBuilder.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/axis-builder/src/= java/org/apache/geronimo/axis/builder/SchemaInfoBuilder.java?rev=3D164004&r= 1=3D164003&r2=3D164004&view=3Ddiff =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D --- geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/b= uilder/SchemaInfoBuilder.java (original) +++ geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/b= uilder/SchemaInfoBuilder.java Wed Apr 20 22:03:36 2005 @@ -75,6 +75,7 @@ public class SchemaInfoBuilder { private static final Log log =3D LogFactory.getLog(SchemaInfoBuilder.c= lass); private static final SchemaTypeSystem basicTypeSystem; + private static final String[] errorNames =3D {"Error", "Warning", "Inf= o"}; =20 static { URL url =3D WSDescriptorParser.class.getClassLoader().getResource(= "soap_encoding_1_1.xsd"); @@ -100,35 +101,52 @@ private final JarFile moduleFile; private final Definition definition; private final Stack uris =3D new Stack(); - private final Map schemaTypeKeyToSchemaTypeMap; private final Map wsdlMap =3D new HashMap(); + private final Map schemaTypeKeyToSchemaTypeMap; + private final Map complexTypeMap; + private final Map elementMap; + private final Map simpleTypeMap; + private final Map portMap; + =20 public SchemaInfoBuilder(JarFile moduleFile, URI wsdlUri) throws Deplo= ymentException { - this.moduleFile =3D moduleFile; - uris.push(wsdlUri); - definition =3D readWsdl(moduleFile, wsdlUri); - SchemaTypeSystem schemaTypeSystem =3D compileSchemaTypeSystem(defi= nition); - schemaTypeKeyToSchemaTypeMap =3D buildSchemaTypeKeyToSchemaTypeMap= (schemaTypeSystem); + this(moduleFile, wsdlUri, null, null); } =20 public SchemaInfoBuilder(JarFile moduleFile, Definition definition) th= rows DeploymentException { - this.definition =3D definition; - this.moduleFile =3D moduleFile; - try { - URI uri =3D new URI(definition.getDocumentBaseURI()); - uris.push(uri); - } catch (URISyntaxException e) { - throw new DeploymentException("Could not locate definition", e= ); - } - SchemaTypeSystem schemaTypeSystem =3D compileSchemaTypeSystem(defi= nition); - schemaTypeKeyToSchemaTypeMap =3D buildSchemaTypeKeyToSchemaTypeMap= (schemaTypeSystem); + this(moduleFile, null, definition, null); + } + + SchemaInfoBuilder(JarFile moduleFile, URI uri, SchemaTypeSystem schema= TypeSystem) throws DeploymentException { + this(moduleFile, uri, null, schemaTypeSystem); } =20 - SchemaInfoBuilder(JarFile moduleFile, URI uri, SchemaTypeSystem schema= TypeSystem) { - this.definition =3D null; + SchemaInfoBuilder(JarFile moduleFile, URI uri, Definition definition, = SchemaTypeSystem schemaTypeSystem) throws DeploymentException { this.moduleFile =3D moduleFile; - uris.push(uri); + if (uri !=3D null) { + uris.push(uri); + if (definition =3D=3D null && schemaTypeSystem =3D=3D null) { + definition =3D readWsdl(moduleFile, uri); + } + } else if (definition !=3D null) { + try { + uri =3D new URI(definition.getDocumentBaseURI()); + uris.push(uri); + } catch (URISyntaxException e) { + throw new DeploymentException("Could not locate definition= ", e); + } + } else { + throw new DeploymentException("You must supply uri or definiti= on"); + } + if (schemaTypeSystem =3D=3D null) { + schemaTypeSystem =3D compileSchemaTypeSystem(definition); + } + this.definition =3D definition; schemaTypeKeyToSchemaTypeMap =3D buildSchemaTypeKeyToSchemaTypeMap= (schemaTypeSystem); + complexTypeMap =3D buildComplexTypeMap(); + simpleTypeMap =3D buildSimpleTypeMap(); + elementMap =3D buildElementMap(); + portMap =3D buildPortMap(); } =20 public Map getSchemaTypeKeyToSchemaTypeMap() { @@ -143,9 +161,90 @@ return wsdlMap; } =20 - private static final String[] errorNames =3D { - "Error", "Warning", "Info" - }; + /** + * Find all the complex types in the previously constructed schema ana= lysis. + * Put them in a map from complex type QName to schema fragment. + * + * @return + */ + public Map getComplexTypesInWsdl() { + return complexTypeMap; + } + + private Map buildComplexTypeMap() { + Map complexTypeMap =3D new HashMap(); + for (Iterator iterator =3D schemaTypeKeyToSchemaTypeMap.entrySet()= .iterator(); iterator.hasNext();) { + Map.Entry entry =3D (Map.Entry) iterator.next(); + SchemaTypeKey key =3D (SchemaTypeKey) entry.getKey(); + if (!key.isSimpleType() && !key.isAnonymous()) { + QName qName =3D key.getqName(); + SchemaType schemaType =3D (SchemaType) entry.getValue(); + complexTypeMap.put(qName, schemaType); + } + } + return complexTypeMap; + } + + public Map getElementToTypeMap() { + return elementMap; + } + + private Map buildElementMap() { + Map elementToTypeMap =3D new HashMap(); + for (Iterator iterator =3D schemaTypeKeyToSchemaTypeMap.entrySet()= .iterator(); iterator.hasNext();) { + Map.Entry entry =3D (Map.Entry) iterator.next(); + SchemaTypeKey key =3D (SchemaTypeKey) entry.getKey(); + if (key.isElement()) { + QName elementQName =3D key.getqName(); + SchemaType schemaType =3D (SchemaType) entry.getValue(); + QName typeQName =3D schemaType.getName(); + elementToTypeMap.put(elementQName, typeQName); + } + } + return elementToTypeMap; + } + + /** + * Gets a map of all the javax.wsdl.Port instance in the WSDL definiti= on keyed by the port's QName + *

+ * WSDL 1.1 spec: 2.6 "The name attribute provides a unique name among= all ports defined within in the enclosing WSDL document." + * + * @return + */ + + public Map getPortMap() { + return portMap; + } + + private Map buildPortMap() { + HashMap ports =3D new HashMap(); + if (definition !=3D null) { + Collection services =3D definition.getServices().values(); + for (Iterator iterator =3D services.iterator(); iterator.hasNe= xt();) { + Service service =3D (Service) iterator.next(); + ports.putAll(service.getPorts()); + } + } + return ports; + } + + public Map getSimpleTypeMap() { + return simpleTypeMap; + } + + private Map buildSimpleTypeMap() { + Map simpleTypeMap =3D new HashMap(); + for (Iterator iterator =3D schemaTypeKeyToSchemaTypeMap.entrySet()= .iterator(); iterator.hasNext();) { + Map.Entry entry =3D (Map.Entry) iterator.next(); + SchemaTypeKey key =3D (SchemaTypeKey) entry.getKey(); + if (key.isSimpleType() && !key.isAnonymous()) { + QName qName =3D key.getqName(); + SchemaType schemaType =3D (SchemaType) entry.getValue(); + simpleTypeMap.put(qName, schemaType); + } + } + return simpleTypeMap; + } =20 public SchemaTypeSystem compileSchemaTypeSystem(Definition definition)= throws DeploymentException { List schemaList =3D new ArrayList(); @@ -265,7 +364,7 @@ * @param schemaTypeSystem * @return */ - public Map buildSchemaTypeKeyToSchemaTypeMap(SchemaTypeSystem schemaTy= peSystem) { + private Map buildSchemaTypeKeyToSchemaTypeMap(SchemaTypeSystem schemaT= ypeSystem) { Map qnameMap =3D new HashMap(); SchemaType[] globalTypes =3D schemaTypeSystem.globalTypes(); for (int i =3D 0; i < globalTypes.length; i++) { @@ -351,10 +450,14 @@ addArrayForms(schemaParticle, elementName, qnameMap, eleme= ntType); } } else { - SchemaParticle[] children =3D schemaParticle.getParticleChildr= en(); - for (int i =3D 0; i < children.length; i++) { - SchemaParticle child =3D children[i]; - addSchemaParticle(child, key, qnameMap); + try { + SchemaParticle[] children =3D schemaParticle.getParticleCh= ildren(); + for (int i =3D 0; i < children.length; i++) { + SchemaParticle child =3D children[i]; + addSchemaParticle(child, key, qnameMap); + } + } catch (NullPointerException e) { + //ignore xmlbeans bug } } } @@ -385,58 +488,6 @@ } } =20 - /** - * Find all the complex types in the previously constructed schema ana= lysis. - * Put them in a map from complex type QName to schema fragment. - * - * @return - */ - public Map getComplexTypesInWsdl() { - Map complexTypeMap =3D new HashMap(); - for (Iterator iterator =3D schemaTypeKeyToSchemaTypeMap.entrySet()= .iterator(); iterator.hasNext();) { - Map.Entry entry =3D (Map.Entry) iterator.next(); - SchemaTypeKey key =3D (SchemaTypeKey) entry.getKey(); - if (!key.isSimpleType() && !key.isAnonymous()) { - QName qName =3D key.getqName(); - SchemaType schemaType =3D (SchemaType) entry.getValue(); - complexTypeMap.put(qName, schemaType); - } - } - return complexTypeMap; - } - - public Map getElementToTypeMap() { - Map elementToTypeMap =3D new HashMap(); - for (Iterator iterator =3D schemaTypeKeyToSchemaTypeMap.entrySet()= .iterator(); iterator.hasNext();) { - Map.Entry entry =3D (Map.Entry) iterator.next(); - SchemaTypeKey key =3D (SchemaTypeKey) entry.getKey(); - if (key.isElement()) { - QName elementQName =3D key.getqName(); - SchemaType schemaType =3D (SchemaType) entry.getValue(); - QName typeQName =3D schemaType.getName(); - elementToTypeMap.put(elementQName, typeQName); - } - } - return elementToTypeMap; - } - - /** - * Gets a map of all the javax.wsdl.Port instance in the WSDL definiti= on keyed by the port's QName - *

- * WSDL 1.1 spec: 2.6 "The name attribute provides a unique name among= all ports defined within in the enclosing WSDL document." - * - * @return - */ - - public Map getPortMap() { - HashMap ports =3D new HashMap(); - Collection services =3D definition.getServices().values(); - for (Iterator iterator =3D services.iterator(); iterator.hasNext()= ;) { - Service service =3D (Service) iterator.next(); - ports.putAll(service.getPorts()); - } - return ports; - } =20 public Definition readWsdl(JarFile moduleFile, URI wsdlURI) throws Dep= loymentException { Definition definition; Modified: geronimo/trunk/modules/axis-builder/src/test/org/apache/geronimo/= axis/builder/ParsingTest.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/axis-builder/src/= test/org/apache/geronimo/axis/builder/ParsingTest.java?rev=3D164004&r1=3D16= 4003&r2=3D164004&view=3Ddiff =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D --- geronimo/trunk/modules/axis-builder/src/test/org/apache/geronimo/axis/b= uilder/ParsingTest.java (original) +++ geronimo/trunk/modules/axis-builder/src/test/org/apache/geronimo/axis/b= uilder/ParsingTest.java Wed Apr 20 22:03:36 2005 @@ -22,6 +22,8 @@ import java.util.ArrayList; import java.util.Map; import java.util.Iterator; +import java.net.URI; +import java.net.URISyntaxException; =20 import junit.framework.TestCase; import org.apache.xmlbeans.XmlObject; @@ -61,7 +63,7 @@ assertEquals(3, map.size()); } =20 - private Map parse(File schema1) throws IOException, XmlException, Depl= oymentException { + private Map parse(File schema1) throws IOException, XmlException, Depl= oymentException, URISyntaxException { XmlObject xmlObject =3D SchemaConversionUtils.parse(schema1.toURL(= )); Collection errors =3D new ArrayList(); XmlOptions xmlOptions =3D new XmlOptions(); @@ -77,7 +79,7 @@ } catch (XmlException e) { throw new DeploymentException("Could not compile schema type s= ystem", e); } - schemaInfoBuilder =3D new SchemaInfoBuilder(null, null, schemaType= System); + schemaInfoBuilder =3D new SchemaInfoBuilder(null, new URI(""), sch= emaTypeSystem); Map map =3D schemaInfoBuilder.getSchemaTypeKeyToSchemaTypeMap(); for (Iterator iterator =3D map.entrySet().iterator(); iterator.has= Next();) { Map.Entry entry =3D (Map.Entry) iterator.next();