Return-Path: Delivered-To: apmail-ws-axis-dev-archive@www.apache.org Received: (qmail 30293 invoked from network); 22 Jul 2006 14:20:19 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 22 Jul 2006 14:20:19 -0000 Received: (qmail 85271 invoked by uid 500); 22 Jul 2006 14:20:18 -0000 Delivered-To: apmail-ws-axis-dev-archive@ws.apache.org Received: (qmail 85177 invoked by uid 500); 22 Jul 2006 14:20:18 -0000 Mailing-List: contact axis-cvs-help@ws.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: List-Id: Delivered-To: mailing list axis-cvs@ws.apache.org Received: (qmail 85164 invoked by uid 99); 22 Jul 2006 14:20:18 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 22 Jul 2006 07:20:18 -0700 X-ASF-Spam-Status: No, hits=-9.4 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received-SPF: pass (asf.osuosl.org: local policy) Received: from [140.211.166.113] (HELO eris.apache.org) (140.211.166.113) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 22 Jul 2006 07:20:16 -0700 Received: by eris.apache.org (Postfix, from userid 65534) id 880161A981D; Sat, 22 Jul 2006 07:19:56 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r424580 - in /webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws: CUtils.java WSDL2Ws.java c/AllParamWriter.java cpp/AllParamWriter.java info/Type.java Date: Sat, 22 Jul 2006 14:19:55 -0000 To: axis-cvs@ws.apache.org From: nadiramra@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20060722141956.880161A981D@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Author: nadiramra Date: Sat Jul 22 07:19:55 2006 New Revision: 424580 URL: http://svn.apache.org/viewvc?rev=424580&view=rev Log: Consistent use of sanitiseClassName() for generate type names. Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/CUtils.java webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/WSDL2Ws.java webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/AllParamWriter.java webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/AllParamWriter.java webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/info/Type.java Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/CUtils.java URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/CUtils.java?rev=424580&r1=424579&r2=424580&view=diff ============================================================================== --- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/CUtils.java (original) +++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/CUtils.java Sat Jul 22 07:19:55 2006 @@ -78,6 +78,7 @@ private static Hashtable isPointerBasedType = new Hashtable(); private static boolean cpp = true; + // following in support of generating unique names private static Hashtable uniqueNameMapper = new Hashtable(); private static Vector uniqueNamesGenerated = new Vector(); @@ -935,11 +936,7 @@ if((cpp && !qname2classmapCpp.containsKey(qname)) || (!cpp && !qname2classmapC.containsKey(qname))) { - /* arrayName = qname.getLocalPart()+"_Array"; - * This avoid compilation issue for wsdl SimpleTypeInnerUnboundedInOutput.wsdl - * See : malling list. - */ - arrayName = qname.getLocalPart().replace('>','_')+"_Array"; + arrayName = CUtils.sanitiseClassName(qname.getLocalPart()) + "_Array"; } return arrayName; } @@ -1055,13 +1052,20 @@ public static String sanitiseClassName( String name) { - String sanitisedName = name; + int i; + String sanitisedName=name; + + // Anonymous names start with '>'. For example, '>Type'. However, if it was + // nested, then it would be something like '>>Type>Type2'. + // We should really be nice and get the name after last '>', but will wait and + // simply remove starting '>'. + for (i=0; i") - && !(type.getQName().getLocalPart().toString().lastIndexOf(">")>1)) + if(type.getQName().getLocalPart().toString().startsWith(">")) { if(WSDL2Ws.verbose) System.out.println( "EXPOSE2: Checking whether to expose anon type "+type.getQName().getLocalPart()); @@ -1166,23 +1163,23 @@ System.out.println( "EXPOSE2: Matches input parm, exposing anon type "+parameterType.getName()); QName oldName = parameterType.getName(); - QName newTypeName = - new QName(parameterType.getName().getNamespaceURI(), - parameterType.getName().getLocalPart().substring(1)); - - Type innerClassType = wsContext.getTypemap().getType(parameterType.getName()); - - // First thing to do is to expose the type so it gets created. - innerClassType.setLanguageSpecificName(newTypeName.getLocalPart().toString()); - - // also have to set the QName becuase this is used in generating the header info. - innerClassType.setName(newTypeName); - innerClassType.externalize(true); - - // The typemap we get back is a copy of the actual typemap so we have to set the new value explicitly - // firstly remove the old version - wsContext.getTypemap().removeType(oldName); - wsContext.getTypemap().addType(newTypeName, innerClassType); + Type innerClassType = wsContext.getTypemap().getType(oldName); + if (innerClassType != null && !innerClassType.isExternalized()) + { + String newLocalPart = parameterType.getLanguageSpecificName(); + QName newTypeName = new QName(parameterType.getName().getNamespaceURI(), newLocalPart); + + // First thing to do is to expose the type so it gets created. + innerClassType.setLanguageSpecificName(newLocalPart); + + // also have to set the QName since it used in generating the header info. + innerClassType.setName(newTypeName); + innerClassType.externalize(true); + + // Update the typemap with new info + wsContext.getTypemap().removeType(oldName); + wsContext.getTypemap().addType(newTypeName, innerClassType); + } } } @@ -1199,20 +1196,23 @@ System.out.println( "EXPOSE2: Matches output parm, exposing anon type "+parameterType.getName()); QName oldName = parameterType.getName(); - QName newTypeName = new QName(parameterType.getName().getNamespaceURI(), parameterType.getName().getLocalPart().substring(1)); - - Type innerClassType = wsContext.getTypemap().getType(parameterType.getName()); - - // First thing to do is to expose the type so it gets created. - innerClassType.setLanguageSpecificName(newTypeName.getLocalPart().toString()); - - // also have to set the QName becuase this is used in generating the header info. - innerClassType.setName(newTypeName); - innerClassType.externalize(true); - - // remove the old version and add new one - wsContext.getTypemap().removeType(oldName); - wsContext.getTypemap().addType(newTypeName, innerClassType); + Type innerClassType = wsContext.getTypemap().getType(oldName); + if (innerClassType != null && !innerClassType.isExternalized()) + { + String newLocalPart = parameterType.getLanguageSpecificName(); + QName newTypeName = new QName(parameterType.getName().getNamespaceURI(), newLocalPart); + + // First thing to do is to expose the type so it gets created. + innerClassType.setLanguageSpecificName(newLocalPart); + + // also have to set the QName since it used in generating the header info. + innerClassType.setName(newTypeName); + innerClassType.externalize(true); + + // Update the typemap with new info + wsContext.getTypemap().removeType(oldName); + wsContext.getTypemap().addType(newTypeName, innerClassType); + } } } } @@ -1257,26 +1257,25 @@ System.out.println( "EXPOSE3: Checking whether to expose nested type "+ nestedType.getQName()); if(name.startsWith(">") && name.lastIndexOf(">")>0) - { - // then this type needs to be exposed ! - QName oldName = nestedType.getQName(); - + { if(WSDL2Ws.verbose) System.out.println( "EXPOSE3: Exposing nestedType "+nestedType.getQName()); - - QName newTypeName =new QName(oldName.getNamespaceURI(), CUtils.sanitiseClassName(oldName.getLocalPart().toString())); - - Type innerClassType = wsContext.getTypemap().getType(nestedType.getQName()); - if(innerClassType!=null) + + QName oldName = nestedType.getQName(); + Type innerClassType = wsContext.getTypemap().getType(oldName); + if (innerClassType != null && !innerClassType.isExternalized()) { - // First thing to do is to expose the type so it gets created. - innerClassType.setLanguageSpecificName(newTypeName.getLocalPart().toString()); - - // also have to set the QName because this is used in generating the header info. + String newLocalPart = innerClassType.getLanguageSpecificName(); + QName newTypeName = new QName(oldName.getNamespaceURI(), newLocalPart); + + // First thing to do is to expose the type so it gets created. + innerClassType.setLanguageSpecificName(newLocalPart); + + // also have to set the QName since it used in generating the header info. innerClassType.setName(newTypeName); innerClassType.externalize(true); - - // remove the old version and add new one + + // Update the typemap with new info wsContext.getTypemap().removeType(oldName); wsContext.getTypemap().addType(newTypeName, innerClassType); } Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/AllParamWriter.java URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/AllParamWriter.java?rev=424580&r1=424579&r2=424580&view=diff ============================================================================== --- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/AllParamWriter.java (original) +++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/AllParamWriter.java Sat Jul 22 07:19:55 2006 @@ -62,24 +62,35 @@ try { type = (Type) types.next(); - if (type.isArray()) + + if (!type.isExternalized()) + { + if(WSDL2Ws.verbose) + System.out.println("\nSkipping type " + type.getName()); + } + else if (type.isArray()) { QName qname = type.getName(); + if (WSDL2Ws.verbose) + System.out.println("\nArray processing for type: " + qname); String elementType = type.getElementType(); if (elementType != null) { + elementType = CUtils.sanitiseClassName(elementType); + if (WSDL2Ws.verbose) - System.out.println("Array element type: " + elementType); - elementType = elementType.replace('>', '_'); - QName elementQname = new QName(qname.getNamespaceURI(), elementType); + System.out.println(" Array element type " + + type.getElementType() + " normalized to " + elementType); + QName elementQname = new QName(qname.getNamespaceURI(), elementType); Type currentType = wscontext.getTypemap().getType(elementQname); + if (currentType != null) if ( currentType.isSimpleType()) { if (WSDL2Ws.verbose) - System.out.println("Array writer not called - element type is simple"); + System.out.println(" Array writer not called - element type is simple"); continue; } @@ -96,24 +107,16 @@ if (!writer.isSimpleTypeArray()) { if (WSDL2Ws.verbose) - System.out.println("Array writer called ......"); + System.out.println(" Array writer called......"); writer.writeSource(); (new ArrayParamWriter(wscontext, type)).writeSource(); } } - else if (type.isAnonymous() && !type.isExternalized()) - { - if(WSDL2Ws.verbose) - { - System.out.println( - "ignoring anonymous type " + type.getLanguageSpecificName() + "\n"); - } - } else { if (WSDL2Ws.verbose) - System.out.println("struct writer called ......"); + System.out.println("\nstruct writer called for......" + type.getName()); (new BeanParamWriter(wscontext, type)).writeSource(); (new ParmHeaderFileWriter(wscontext, type)).writeSource(); @@ -122,7 +125,7 @@ catch (Exception e) { System.out.println( - "Error occurred generating code for " + type.getLanguageSpecificName() + "Error occurred generating code for " + type.getName() + ". Other classes will continue to be generated."); e.printStackTrace(); } Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/AllParamWriter.java URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/AllParamWriter.java?rev=424580&r1=424579&r2=424580&view=diff ============================================================================== --- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/AllParamWriter.java (original) +++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/AllParamWriter.java Sat Jul 22 07:19:55 2006 @@ -56,24 +56,34 @@ try { type = (Type) types.next(); - if (type.isArray()) + if (!type.isExternalized()) + { + if(WSDL2Ws.verbose) + System.out.println("\nSkipping type " + type.getName()); + } + else if (type.isArray()) { QName qname = type.getName(); + if (WSDL2Ws.verbose) + System.out.println("\nArray processing for type: " + qname); String elementType = type.getElementType(); if (elementType != null) { + elementType = CUtils.sanitiseClassName(elementType); + if (WSDL2Ws.verbose) - System.out.println("Array element type: " + elementType); - elementType = elementType.replace('>', '_'); - QName elementQname = new QName(qname.getNamespaceURI(), elementType); + System.out.println(" Array element type " + + type.getElementType() + " normalized to " + elementType); + QName elementQname = new QName(qname.getNamespaceURI(), elementType); Type currentType = wscontext.getTypemap().getType(elementQname); + if (currentType != null) if ( currentType.isSimpleType()) { if (WSDL2Ws.verbose) - System.out.println("Array writer not called - element type is simple"); + System.out.println(" Array writer not called - element type is simple"); continue; } @@ -90,21 +100,16 @@ if (!writer.isSimpleTypeArray()) { if (WSDL2Ws.verbose) - System.out.println("Array writer called for......" + type.getName()); + System.out.println(" Array writer called......"); writer.writeSource(); (new ArrayParamWriter(wscontext, type)).writeSource(); } } - else if (type.isAnonymous() && !type.isExternalized()) - { - if(WSDL2Ws.verbose) - System.out.println("ignoring anonymous type " + type.getLanguageSpecificName() + "\n"); - } else { if (WSDL2Ws.verbose) - System.out.println("struct writer called for......" + type.getName()); + System.out.println("\nstruct writer called for......" + type.getName()); (new BeanParamWriter(wscontext, type)).writeSource(); (new ParmHeaderFileWriter(wscontext, type)).writeSource(); @@ -113,7 +118,7 @@ catch (Exception e) { System.out.println( - "Error occurred generating code for " + type.getLanguageSpecificName() + "Error occurred generating code for " + type.getName() + ". Other classes will continue to be generated."); e.printStackTrace(); } Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/info/Type.java URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/info/Type.java?rev=424580&r1=424579&r2=424580&view=diff ============================================================================== --- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/info/Type.java (original) +++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/info/Type.java Sat Jul 22 07:19:55 2006 @@ -135,25 +135,21 @@ this.languageSpecificName = TypeMap.getBasicTypeClass4qname(name); } + //if language specific name still not set, use localPart of QName + if (this.languageSpecificName == null) + this.languageSpecificName = this.name.getLocalPart(); + + // Ensure name is valid and does not clash with language specific constructs + this.languageSpecificName = CUtils.sanitiseClassName(this.languageSpecificName); + // Indicate whether type is anonymous. Anonymous type start with '>' and are not // externalized by default. - if (this.name.getLocalPart().charAt(0) == '>') + if (TypeMap.isAnonymousType(this.name)) { isAnonymous = true; externalize = false; } - - //if it is not a simple type try name using usual QName -> language specific name mapping - if (this.languageSpecificName == null) - this.languageSpecificName = qname2LSN(); - else - { - //remove any funny Charactors - this.languageSpecificName = this.languageSpecificName.replaceAll("/", "_"); - this.languageSpecificName = this.languageSpecificName.replaceAll(":", "_"); - this.languageSpecificName = this.languageSpecificName.replaceAll(">", "_"); - } - + this.attribOrder = new Vector(); if (name.getNamespaceURI().equals(WrapperConstants.APACHE_XMLSOAP_NAMESPACE) && @@ -191,7 +187,8 @@ } /** - * The Type take the attributes name to lowercase when add, If there is two names like "Name" and "name" + * The Type take the attributes name to lowercase when add, + * If there is two names like "Name" and "name" * they will convert to "name" Is that acceptable .... */ public void setTypeForAttributeName(String attribName, Type type) @@ -224,14 +221,13 @@ } /** - * The Type take the attributes name to lowercase when add, If there is two names like "Name" and "name" + * The Type take the attributes name to lowercase when add, + * If there is two names like "Name" and "name" * they will convert to "name" Is that acceptable .... */ public void setTypeNameForElementName(ElementInfo element) { - String attribName = - TypeMap.resolveWSDL2LanguageNameClashes( - element.getName().getLocalPart(),this.language); + String attribName = element.getName().getLocalPart(); if (attribName.lastIndexOf(SymbolTable.ANON_TOKEN) > 1) { @@ -239,8 +235,7 @@ attribName.substring( attribName.lastIndexOf(SymbolTable.ANON_TOKEN) + 1,attribName.length()); } - // Samisa: This second call to TypeMap.resoleveWSDL2LanguageNameClashes - // is made to make sure after replacinf ANON_TOKEN it is still not a keyword + attribName = TypeMap.resolveWSDL2LanguageNameClashes(attribName, this.language); if (hasOrder) @@ -272,33 +267,9 @@ public void setLanguageSpecificName(String languageSpecificName) { - this.languageSpecificName = languageSpecificName; + this.languageSpecificName = CUtils.sanitiseClassName(languageSpecificName); } - /** - * This mrthod define the standread conversion from qname to language spesific name - * @return language specific name - */ - protected String qname2LSN() - { - String nsuri = this.name.getNamespaceURI(); - if (nsuri == null) - return this.name.getLocalPart(); - if (language.equalsIgnoreCase(WrapperConstants.LANGUAGE_CPP)) - { - /* if it is CPP the namespace is neglected fr time been */ - return this.name.getLocalPart(); - } - else if (language.equalsIgnoreCase(WrapperConstants.LANGUAGE_C)) - return this.name.getLocalPart(); - else - { - return WrapperUtils.firstCharacterToLowercase( - WrapperUtils.nsURI2packageName(nsuri)) - + "." - + WrapperUtils.capitalizeFirstCaractor(this.name.getLocalPart()); - } - } /** * @return */ --------------------------------------------------------------------- To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org For additional commands, e-mail: axis-cvs-help@ws.apache.org