Return-Path: Delivered-To: apmail-ws-axis-dev-archive@www.apache.org Received: (qmail 58065 invoked from network); 15 Jan 2008 16:28:07 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 15 Jan 2008 16:28:07 -0000 Received: (qmail 87719 invoked by uid 500); 15 Jan 2008 16:27:56 -0000 Delivered-To: apmail-ws-axis-dev-archive@ws.apache.org Received: (qmail 87540 invoked by uid 500); 15 Jan 2008 16:27:55 -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 87521 invoked by uid 500); 15 Jan 2008 16:27:55 -0000 Delivered-To: apmail-ws-axis2-cvs@ws.apache.org Received: (qmail 87517 invoked by uid 99); 15 Jan 2008 16:27:55 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 15 Jan 2008 08:27:55 -0800 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 15 Jan 2008 16:27:36 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 8CA391A9846; Tue, 15 Jan 2008 08:27:42 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r612147 [4/17] - in /webservices/axis2/branches/java/jaxws21: ./ modules/adb-codegen/ modules/adb-codegen/src/org/apache/axis2/schema/ modules/adb-codegen/src/org/apache/axis2/schema/template/ modules/adb-codegen/src/org/apache/axis2/schema... Date: Tue, 15 Jan 2008 16:22:27 -0000 To: axis2-cvs@ws.apache.org From: pradine@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20080115162742.8CA391A9846@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Modified: webservices/axis2/branches/java/jaxws21/modules/adb-codegen/src/org/apache/axis2/schema/typemap/CTypeMap.java URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/jaxws21/modules/adb-codegen/src/org/apache/axis2/schema/typemap/CTypeMap.java?rev=612147&r1=612146&r2=612147&view=diff ============================================================================== --- webservices/axis2/branches/java/jaxws21/modules/adb-codegen/src/org/apache/axis2/schema/typemap/CTypeMap.java (original) +++ webservices/axis2/branches/java/jaxws21/modules/adb-codegen/src/org/apache/axis2/schema/typemap/CTypeMap.java Tue Jan 15 08:21:22 2008 @@ -18,20 +18,260 @@ */ package org.apache.axis2.schema.typemap; -import org.apache.axis2.wsdl.codegen.emitter.CTypeInfo; +import org.apache.axis2.schema.SchemaConstants; +import org.apache.axis2.namespace.Constants; +import java.util.Map; +import javax.xml.namespace.QName; +import java.math.BigDecimal; +import java.util.HashMap; import java.util.Map; /** - * The java type map. uses a static map for caching - * Most code from Axis 1 Codebase* - * Most code JavaTypeMap + * The C type map. uses a static map for caching */ public class CTypeMap implements TypeMap{ - public Map getTypeMap() - { - return CTypeInfo.getTypeMap(); + private static Map typeMap = new HashMap(); + + // Type map for the standard schema types + public Map getTypeMap(){ + return typeMap; } -} \ No newline at end of file + static { + // If SOAP 1.1 over the wire, map wrapper classes to XSD primitives. + CTypeMap.addTypemapping(SchemaConstants.XSD_STRING, + "axis2_char_t*"); + + // The XSD Primitives are mapped to axis2/c primitives. + CTypeMap.addTypemapping(SchemaConstants.XSD_BOOLEAN, "axis2_bool_t"); + CTypeMap.addTypemapping(SchemaConstants.XSD_DOUBLE, "double"); + CTypeMap.addTypemapping(SchemaConstants.XSD_FLOAT, "float"); + CTypeMap.addTypemapping(SchemaConstants.XSD_INT, "int"); + CTypeMap.addTypemapping(SchemaConstants.XSD_INTEGER, + "int"); + CTypeMap.addTypemapping(SchemaConstants.XSD_LONG, "long"); + CTypeMap.addTypemapping(SchemaConstants.XSD_SHORT, "short"); + CTypeMap.addTypemapping(SchemaConstants.XSD_BYTE, "axis2_byte_t"); + CTypeMap.addTypemapping(SchemaConstants.XSD_ANY, "axiom_node_t*"); + CTypeMap.addTypemapping(SchemaConstants.XSD_DECIMAL, "double"); + + CTypeMap.addTypemapping(SchemaConstants.XSD_ANYTYPE, + "axiom_node_t*"); + + CTypeMap.addTypemapping(SchemaConstants.XSD_QNAME, + "axutil_qname_t*"); + + CTypeMap.addTypemapping(SchemaConstants.XSD_DATE, + "axutil_date_time_t*"); + + CTypeMap.addTypemapping(SchemaConstants.XSD_TIME, + "axutil_date_time_t*"); + CTypeMap.addTypemapping(SchemaConstants.XSD_DATETIME, + "axutil_date_time_t*"); + + CTypeMap.addTypemapping(SchemaConstants.XSD_BASE64, + "axutil_base64_binary_t*"); + + CTypeMap.addTypemapping(SchemaConstants.XSD_HEXBIN, + "axiom_node_t*"); + + // These are the g* types (gYearMonth, etc) which map to Axis types + // These types are mapped to an integer + CTypeMap.addTypemapping(SchemaConstants.XSD_YEARMONTH, + "axutil_date_time_t*"); + CTypeMap.addTypemapping(SchemaConstants.XSD_YEAR, + "int"); + CTypeMap.addTypemapping(SchemaConstants.XSD_MONTH, + "int"); + CTypeMap.addTypemapping(SchemaConstants.XSD_DAY, + "int"); + CTypeMap.addTypemapping(SchemaConstants.XSD_MONTHDAY, + "axutil_date_time_t*"); + + // xsd:token + CTypeMap.addTypemapping(SchemaConstants.XSD_TOKEN, "axis2_char_t*"); + + // a xsd:normalizedString + CTypeMap.addTypemapping(SchemaConstants.XSD_NORMALIZEDSTRING, + "axis2_char_t*"); + + // a xsd:unsignedLong + CTypeMap.addTypemapping(SchemaConstants.XSD_UNSIGNEDLONG, + "unsigned long"); + + // a xsd:unsignedInt + CTypeMap.addTypemapping(SchemaConstants.XSD_UNSIGNEDINT, + "unsigned int"); + + // a xsd:unsignedShort + CTypeMap.addTypemapping(SchemaConstants.XSD_UNSIGNEDSHORT, + "unsigned short"); + + // a xsd:unsignedByte + CTypeMap.addTypemapping(SchemaConstants.XSD_UNSIGNEDBYTE, + "axis2_byte_t"); + + // a xsd:nonNegativeInteger + CTypeMap.addTypemapping(SchemaConstants.XSD_NONNEGATIVEINTEGER, + "unsigned int"); + + // a xsd:negativeInteger + CTypeMap.addTypemapping(SchemaConstants.XSD_NEGATIVEINTEGER, + "int"); + + // a xsd:positiveInteger + CTypeMap.addTypemapping(SchemaConstants.XSD_POSITIVEINTEGER, + "unsigned int"); + + // a xsd:nonPositiveInteger + CTypeMap.addTypemapping(SchemaConstants.XSD_NONPOSITIVEINTEGER, + "unsigned int"); + + // a xsd:Name + CTypeMap.addTypemapping(SchemaConstants.XSD_NAME, "axis2_char_t*"); + + // a xsd:NCName + CTypeMap.addTypemapping(SchemaConstants.XSD_NCNAME, "axis2_char_t*"); + + // a xsd:ID + CTypeMap.addTypemapping(SchemaConstants.XSD_ID, "axis2_char_t*"); + + // a xsd:language + CTypeMap.addTypemapping(SchemaConstants.XSD_LANGUAGE, "axis2_char_t*"); + + // a xsd:NmToken + CTypeMap.addTypemapping(SchemaConstants.XSD_NMTOKEN, "axis2_char_t*"); + + // a xsd:NmTokens + CTypeMap.addTypemapping(SchemaConstants.XSD_NMTOKENS, "axis2_char_t*"); + + // a xsd:NOTATION + CTypeMap.addTypemapping(SchemaConstants.XSD_NOTATION, "axiom_node_t*"); + + // a xsd:XSD_ENTITY + CTypeMap.addTypemapping(SchemaConstants.XSD_ENTITY, "axis2_char_t*"); + + // a xsd:XSD_ENTITIES + CTypeMap.addTypemapping(SchemaConstants.XSD_ENTITIES, "axis2_char_t*"); + + // a xsd:XSD_IDREF + CTypeMap.addTypemapping(SchemaConstants.XSD_IDREF, "axis2_char_t*"); + + // a xsd:XSD_XSD_IDREFS + CTypeMap.addTypemapping(SchemaConstants.XSD_IDREFS, "axis2_char_t*"); + + // a xsd:Duration + CTypeMap.addTypemapping(SchemaConstants.XSD_DURATION, "axutil_duration_t*"); + + // a xsd:anyURI + CTypeMap.addTypemapping(SchemaConstants.XSD_ANYURI, + "axutil_uri_t*"); + } + + private static void addTypemapping(QName name, String str) { + CTypeMap.typeMap.put(name, str); + } + + // Type map for the soap encoding types + public Map getSoapEncodingTypesMap() { + return soapEncodingTypeMap; + } + + private static Map soapEncodingTypeMap = new HashMap(); + + static { + // populate the soapEncodingTypeMap + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_ARRAY, + "axutil_array_list_t*"); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_STRUCT, + "axiom_node_t*"); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_BASE64, + "axutil_base64_binary_t*"); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_DURATION, + "axutil_duration_t*"); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_DATETIME, + "axutil_date_time_t*"); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_NOTATION, + "axiom_node_t*"); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_TIME, + "axutil_date_time_t*"); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_DATE, + "axutil_date_time_t*"); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_GYEARMONTH, + "axutil_date_time_t*"); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_GYEAR, + "int"); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_GMONTHDAY, + "axutil_date_time_t*"); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_GDAY, + "int"); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_GMONTH, + "int"); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_BOOLEAN, + "axis2_bool_t"); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_BASE64BINARY, + "axutil_base64_binary_t*"); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_HEXBINARY, + "axiom_node_t*"); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_FLOAT, + "float"); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_DOUBLE, + "double"); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_ANYURI, + "axutil_uri_t*"); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_QNAME, + "axutil_qname_t*"); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_STRING, + "axis2_char_t*"); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_NORMALIZEDSTRING, + "axis2_char_t*"); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_TOKEN, + "axis2_char_t*"); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_LANGUAGE, + "axis2_char_t*"); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_NAME, + "axis2_char_t*"); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_NMTOKEN, + "axis2_char_t*"); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_NCNAME, + "axis2_char_t*"); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_ID, + "axis2_char_t*"); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_IDREF, + "axis2_char_t*"); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_ENTITY, + "axis2_char_t*"); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_IDREFS, + "axis2_char_t*"); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_ENTITIES, + "axis2_char_t*"); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_DECIMAL, + "double"); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_INTEGER, + "int"); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_NONPOSITIVEINTEGER, + "int"); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_NEGATIVEINTEGER, + "int"); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_LONG, + "long"); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_INT, + "int"); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_SHORT, + "short"); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_BYTE, + "axis2_byte_t"); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_NONNEGATIVEINTEGER, + "unsigned int"); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_UNSIGNEDLONG, + "unsigned long"); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_UNSIGNEDINT, + "unsigned int"); + } + + private static void addSoapEncodingTypeMapping(QName name, String className) { + soapEncodingTypeMap.put(name, className); + } +} Modified: webservices/axis2/branches/java/jaxws21/modules/adb-codegen/src/org/apache/axis2/schema/typemap/JavaTypeMap.java URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/jaxws21/modules/adb-codegen/src/org/apache/axis2/schema/typemap/JavaTypeMap.java?rev=612147&r1=612146&r2=612147&view=diff ============================================================================== --- webservices/axis2/branches/java/jaxws21/modules/adb-codegen/src/org/apache/axis2/schema/typemap/JavaTypeMap.java (original) +++ webservices/axis2/branches/java/jaxws21/modules/adb-codegen/src/org/apache/axis2/schema/typemap/JavaTypeMap.java Tue Jan 15 08:21:22 2008 @@ -212,5 +212,113 @@ typeMap.put(name, str); } + public Map getSoapEncodingTypesMap() { + return soapEncodingTypeMap; + } + + private static Map soapEncodingTypeMap = new HashMap(); + + static { + // populate the soapEncodingTypeMap + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_ARRAY, + org.apache.axis2.databinding.types.soapencoding.Array.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_STRUCT, + org.apache.axis2.databinding.types.soapencoding.Struct.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_BASE64, + org.apache.axis2.databinding.types.soapencoding.Base64.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_DURATION, + org.apache.axis2.databinding.types.soapencoding.Duration.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_DATETIME, + org.apache.axis2.databinding.types.soapencoding.DateTime.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_NOTATION, + org.apache.axis2.databinding.types.soapencoding.NOTATION.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_TIME, + org.apache.axis2.databinding.types.soapencoding.Time.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_DATE, + org.apache.axis2.databinding.types.soapencoding.Date.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_GYEARMONTH, + org.apache.axis2.databinding.types.soapencoding.GYearMonth.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_GYEAR, + org.apache.axis2.databinding.types.soapencoding.GYear.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_GMONTHDAY, + org.apache.axis2.databinding.types.soapencoding.GMonthDay.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_GDAY, + org.apache.axis2.databinding.types.soapencoding.GDay.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_GMONTH, + org.apache.axis2.databinding.types.soapencoding.GMonth.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_BOOLEAN, + org.apache.axis2.databinding.types.soapencoding._boolean.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_BASE64BINARY, + org.apache.axis2.databinding.types.soapencoding.Base64Binary.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_HEXBINARY, + org.apache.axis2.databinding.types.soapencoding.HexBinary.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_FLOAT, + org.apache.axis2.databinding.types.soapencoding._float.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_DOUBLE, + org.apache.axis2.databinding.types.soapencoding._double.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_ANYURI, + org.apache.axis2.databinding.types.soapencoding.AnyURI.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_QNAME, + org.apache.axis2.databinding.types.soapencoding.QName.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_STRING, + org.apache.axis2.databinding.types.soapencoding.String.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_NORMALIZEDSTRING, + org.apache.axis2.databinding.types.soapencoding.NormalizedString.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_TOKEN, + org.apache.axis2.databinding.types.soapencoding.Token.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_LANGUAGE, + org.apache.axis2.databinding.types.soapencoding.Language.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_NAME, + org.apache.axis2.databinding.types.soapencoding.Name.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_NMTOKEN, + org.apache.axis2.databinding.types.soapencoding.NMTOKEN.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_NCNAME, + org.apache.axis2.databinding.types.soapencoding.NCName.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_NMTOKENS, + org.apache.axis2.databinding.types.soapencoding.NMTOKENS.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_ID, + org.apache.axis2.databinding.types.soapencoding.ID.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_IDREF, + org.apache.axis2.databinding.types.soapencoding.IDREF.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_ENTITY, + org.apache.axis2.databinding.types.soapencoding.ENTITY.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_IDREFS, + org.apache.axis2.databinding.types.soapencoding.IDREFS.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_ENTITIES, + org.apache.axis2.databinding.types.soapencoding.ENTITIES.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_DECIMAL, + org.apache.axis2.databinding.types.soapencoding.Decimal.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_INTEGER, + org.apache.axis2.databinding.types.soapencoding.Integer.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_NONPOSITIVEINTEGER, + org.apache.axis2.databinding.types.soapencoding.NonPositiveInteger.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_NEGATIVEINTEGER, + org.apache.axis2.databinding.types.soapencoding.NegativeInteger.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_LONG, + org.apache.axis2.databinding.types.soapencoding._long.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_INT, + org.apache.axis2.databinding.types.soapencoding._int.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_SHORT, + org.apache.axis2.databinding.types.soapencoding._short.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_BYTE, + org.apache.axis2.databinding.types.soapencoding._byte.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_NONNEGATIVEINTEGER, + org.apache.axis2.databinding.types.soapencoding.NonNegativeInteger.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_UNSIGNEDLONG, + org.apache.axis2.databinding.types.soapencoding.UnsignedLong.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_UNSIGNEDINT, + org.apache.axis2.databinding.types.soapencoding.UnsignedInt.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_UNSIGNEDSHORT, + org.apache.axis2.databinding.types.soapencoding.UnsignedShort.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_UNSIGNEDBYTE, + org.apache.axis2.databinding.types.soapencoding.UnsignedByte.class.getName()); + addSoapEncodingTypeMapping(SchemaConstants.SOAP_ENCODING_POSITIVEINTEGER, + org.apache.axis2.databinding.types.soapencoding.PositiveInteger.class.getName()); + } + + private static void addSoapEncodingTypeMapping(QName name, String className) { + soapEncodingTypeMap.put(name, className); + } + } Modified: webservices/axis2/branches/java/jaxws21/modules/adb-codegen/src/org/apache/axis2/schema/typemap/TypeMap.java URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/jaxws21/modules/adb-codegen/src/org/apache/axis2/schema/typemap/TypeMap.java?rev=612147&r1=612146&r2=612147&view=diff ============================================================================== --- webservices/axis2/branches/java/jaxws21/modules/adb-codegen/src/org/apache/axis2/schema/typemap/TypeMap.java (original) +++ webservices/axis2/branches/java/jaxws21/modules/adb-codegen/src/org/apache/axis2/schema/typemap/TypeMap.java Tue Jan 15 08:21:22 2008 @@ -26,4 +26,7 @@ public interface TypeMap { public Map getTypeMap(); + + public Map getSoapEncodingTypesMap(); + } Modified: webservices/axis2/branches/java/jaxws21/modules/adb-codegen/src/org/apache/axis2/schema/writer/BeanWriter.java URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/jaxws21/modules/adb-codegen/src/org/apache/axis2/schema/writer/BeanWriter.java?rev=612147&r1=612146&r2=612147&view=diff ============================================================================== --- webservices/axis2/branches/java/jaxws21/modules/adb-codegen/src/org/apache/axis2/schema/writer/BeanWriter.java (original) +++ webservices/axis2/branches/java/jaxws21/modules/adb-codegen/src/org/apache/axis2/schema/writer/BeanWriter.java Tue Jan 15 08:21:22 2008 @@ -74,6 +74,7 @@ */ public String write(QName qname, Map typeMap, + Map groupTypeMap, BeanWriterMetaInfoHolder metainf, boolean isAbstract) throws SchemaCompilationException; @@ -87,7 +88,10 @@ * @return Returns String. * @throws SchemaCompilationException */ - public String write(XmlSchemaElement element, Map typeMap, BeanWriterMetaInfoHolder metainf) throws SchemaCompilationException; + public String write(XmlSchemaElement element, + Map typeMap, + Map groupTypeMap, + BeanWriterMetaInfoHolder metainf) throws SchemaCompilationException; /** @@ -99,7 +103,10 @@ * @return Returns String. * @throws SchemaCompilationException */ - public String write(XmlSchemaSimpleType simpleType, Map typeMap, BeanWriterMetaInfoHolder metainf) throws SchemaCompilationException; + public String write(XmlSchemaSimpleType simpleType, + Map typeMap, + Map groupTypeMap, + BeanWriterMetaInfoHolder metainf) throws SchemaCompilationException; /** Modified: webservices/axis2/branches/java/jaxws21/modules/adb-codegen/src/org/apache/axis2/schema/writer/CStructWriter.java URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/jaxws21/modules/adb-codegen/src/org/apache/axis2/schema/writer/CStructWriter.java?rev=612147&r1=612146&r2=612147&view=diff ============================================================================== --- webservices/axis2/branches/java/jaxws21/modules/adb-codegen/src/org/apache/axis2/schema/writer/CStructWriter.java (original) +++ webservices/axis2/branches/java/jaxws21/modules/adb-codegen/src/org/apache/axis2/schema/writer/CStructWriter.java Tue Jan 15 08:21:22 2008 @@ -77,10 +77,10 @@ // useful when only a list of external elements need to be processed public static final String DEFAULT_CLASS_NAME = "axiom_node_t*"; - public static final String DEFAULT_CLASS_ARRAY_NAME = "axis2_array_list_t"; + public static final String DEFAULT_CLASS_ARRAY_NAME = "axiom_node_t*"; public static final String DEFAULT_ATTRIB_CLASS_NAME = "axiom_attribute_t*"; - public static final String DEFAULT_ATTRIB_ARRAY_CLASS_NAME = "axis2_array_list_t"; + public static final String DEFAULT_ATTRIB_ARRAY_CLASS_NAME = "axiom_attribute_t*"; @@ -159,12 +159,15 @@ * @throws org.apache.axis2.schema.SchemaCompilationException * */ - public String write(XmlSchemaElement element, Map typeMap, BeanWriterMetaInfoHolder metainf) throws SchemaCompilationException { + public String write(XmlSchemaElement element, + Map typeMap, + Map groupTypeMap, + BeanWriterMetaInfoHolder metainf) throws SchemaCompilationException { try { QName qName = element.getQName(); - return process(qName, metainf, typeMap, true); + return process(qName, metainf, typeMap, groupTypeMap, true, false); } catch (Exception e) { throw new SchemaCompilationException(e); } @@ -183,13 +186,14 @@ */ public String write(QName qName, Map typeMap, + Map groupTypeMap, BeanWriterMetaInfoHolder metainf, boolean isAbstract) throws SchemaCompilationException { try { //determine the package for this type. - return process(qName, metainf, typeMap, false); + return process(qName, metainf, typeMap, groupTypeMap, false, isAbstract); } catch (SchemaCompilationException e) { throw e; @@ -228,14 +232,18 @@ * * @see BeanWriter#write(org.apache.ws.commons.schema.XmlSchemaSimpleType, java.util.Map, org.apache.axis2.schema.BeanWriterMetaInfoHolder) */ - public String write(XmlSchemaSimpleType simpleType, Map typeMap, BeanWriterMetaInfoHolder metainf) throws SchemaCompilationException { + public String write(XmlSchemaSimpleType simpleType, + Map typeMap, + Map groupTypeMap, + BeanWriterMetaInfoHolder metainf) throws SchemaCompilationException { try { //determine the package for this type. QName qName = simpleType.getQName(); if (qName == null) { qName = (QName) simpleType.getMetaInfoMap().get(SchemaConstants.SchemaCompilerInfoHolder.FAKE_QNAME); } - return process(qName, metainf, typeMap, false); + metainf.addtStatus(qName, SchemaConstants.SIMPLE_TYPE_OR_CONTENT); + return process(qName, metainf, typeMap, groupTypeMap, true, false); } catch (SchemaCompilationException e) { throw e; @@ -288,14 +296,20 @@ * @return Returns String. * @throws Exception */ - private String process(QName qName, BeanWriterMetaInfoHolder metainf, Map typeMap, boolean isElement) throws Exception { + private String process(QName qName, + BeanWriterMetaInfoHolder metainf, + Map typeMap, + Map groupTypeMap, + boolean isElement, + boolean isAbstract) + throws Exception { String fullyQualifiedClassName = metainf.getOwnClassName(); if (fullyQualifiedClassName == null) fullyQualifiedClassName = makeFullyQualifiedClassName(qName); String className = fullyQualifiedClassName; - String originalName = qName.getLocalPart(); + String originalName = qName == null? "" : qName.getLocalPart(); ArrayList propertyNames = new ArrayList(); if (!templateLoaded) { @@ -306,19 +320,26 @@ //global class that is generated, one needs to call the writeBatch() method if (wrapClasses) { globalWrappedSourceDocument.getDocumentElement().appendChild( - getBeanElement(globalWrappedSourceDocument, className, originalName, qName, isElement, metainf, propertyNames, typeMap) - ); + getBeanElement(globalWrappedSourceDocument, className, + originalName, qName, isElement, isAbstract, + metainf, propertyNames, typeMap, groupTypeMap)); + globalWrappedHeaderDocument.getDocumentElement().appendChild( - getBeanElement(globalWrappedHeaderDocument, className, originalName, qName, isElement, metainf, propertyNames, typeMap) - ); + getBeanElement(globalWrappedHeaderDocument, className, + originalName, qName, isElement, isAbstract, + metainf, propertyNames, typeMap, groupTypeMap)); } else { //create the model Document modelSource = XSLTUtils.getDocument(); Document modelHeader = XSLTUtils.getDocument(); //make the XML - modelSource.appendChild(getBeanElement(modelSource, className, originalName, qName, isElement, metainf, propertyNames, typeMap)); - modelHeader.appendChild(getBeanElement(modelHeader, className, originalName, qName, isElement, metainf, propertyNames, typeMap)); + modelSource.appendChild(getBeanElement(modelSource, className, originalName, + qName, isElement, isAbstract, metainf, propertyNames, + typeMap, groupTypeMap)); + modelHeader.appendChild(getBeanElement(modelHeader, className, originalName, + qName, isElement, isAbstract, metainf, propertyNames, + typeMap, groupTypeMap)); if (writeClasses) { //create the file @@ -363,10 +384,17 @@ * */ private Element getBeanElement( - Document model, String className, String originalName, - QName qName, boolean isElement, - BeanWriterMetaInfoHolder metainf, ArrayList propertyNames, Map typeMap - ) throws SchemaCompilationException { + Document model, + String className, + String originalName, + QName qName, + boolean isElement, + boolean isAbstract, + BeanWriterMetaInfoHolder metainf, + ArrayList propertyNames, + Map typeMap, + Map groupTypeMap) + throws SchemaCompilationException { Element rootElt = XSLTUtils.getElement(model, "class"); XSLTUtils.addAttribute(model, "name", className, rootElt); @@ -384,6 +412,10 @@ XSLTUtils.addAttribute(model, "unwrapped", "yes", rootElt); } + if (isAbstract) { + XSLTUtils.addAttribute(model, "isAbstract", "yes", rootElt); + } + if (!writeClasses) { XSLTUtils.addAttribute(model, "skip-write", "yes", rootElt); } @@ -439,14 +471,14 @@ } //populate all the information - populateInfo(metainf, model, rootElt, propertyNames, typeMap, false); + populateInfo(metainf, model, rootElt, propertyNames, typeMap, groupTypeMap, false); if (metainf.isSimple() && metainf.isUnion()) { populateMemberInfo(metainf, model, rootElt, typeMap); } if (metainf.isSimple() && metainf.isList()) { - populateListInfo(metainf, model, rootElt, typeMap); + populateListInfo(metainf, model, rootElt, typeMap, groupTypeMap); } return rootElt; @@ -455,7 +487,8 @@ protected void populateListInfo(BeanWriterMetaInfoHolder metainf, Document model, Element rootElement, - Map typeMap) { + Map typeMap, + Map groupTypeMap) { String cName = makeUniqueCStructName(new ArrayList(), metainf.getItemTypeQName().getLocalPart()); Element itemType = XSLTUtils.addChildElement(model, "itemtype", rootElement); @@ -464,7 +497,8 @@ XSLTUtils.addAttribute(model, "originalName", metainf.getItemTypeQName().getLocalPart(), itemType); XSLTUtils.addAttribute(model, "cname", cName, itemType); - if (typeMap.containsKey(metainf.getItemTypeQName())) { + if (typeMap.containsKey(metainf.getItemTypeQName()) || + groupTypeMap.containsKey(metainf.getItemTypeClassName())) { XSLTUtils.addAttribute(model, "ours", "true", itemType); } if (PrimitiveTypeFinder.isPrimitive(metainf.getItemTypeClassName())) { @@ -512,11 +546,15 @@ Document model, Element rootElt, ArrayList propertyNames, - Map typeMap, boolean isInherited) throws SchemaCompilationException { - if (metainf.getParent() != null) { - populateInfo(metainf.getParent(), model, rootElt, propertyNames, typeMap, true); + Map typeMap, + Map groupTypeMap, + boolean isInherited) throws SchemaCompilationException { + if (metainf.getParent() != null && (!metainf.isRestriction() || (metainf.isRestriction() && metainf.isSimple()))) + { + populateInfo(metainf.getParent(), model, rootElt, propertyNames, + typeMap, groupTypeMap, true); } - addPropertyEntries(metainf, model, rootElt, propertyNames, typeMap, isInherited); + addPropertyEntries(metainf, model, rootElt, propertyNames, typeMap, groupTypeMap, isInherited); } @@ -529,8 +567,11 @@ * @throws org.apache.axis2.schema.SchemaCompilationException - * */ - private void addPropertyEntries(BeanWriterMetaInfoHolder metainf, Document model, Element rootElt, ArrayList propertyNames, + private void addPropertyEntries(BeanWriterMetaInfoHolder metainf, + Document model, Element rootElt, + ArrayList propertyNames, Map typeMap, + Map groupTypeMap, boolean isInherited) throws SchemaCompilationException { // go in the loop and add the part elements QName[] qName; @@ -634,13 +675,6 @@ XSLTUtils.addAttribute(model, "inherited", "yes", property); } - QName schemaQName = metainf.getSchemaQNameForQName(name); - if(!schemaQName.getNamespaceURI().equals(name.getNamespaceURI())){ - XSLTUtils.addAttribute(model, "child-nsuri", schemaQName.getNamespaceURI(), property); - XSLTUtils.addAttribute(model, "child-nsprefix", getPrefixForURI(schemaQName.getNamespaceURI(), null), property); - - } - if (metainf.getAnyStatusForQName(name)) { XSLTUtils.addAttribute(model, "any", "yes", property); } @@ -688,6 +722,7 @@ model, property, typeMap, + groupTypeMap, CClassNameForElement); } else { @@ -697,6 +732,7 @@ model, property, typeMap, + groupTypeMap, CClassNameForElement); } } @@ -707,13 +743,15 @@ Document model, Element property, Map typeMap, + Map groupTypeMap, String javaClassNameForElement) { // add an attribute that says the type is default if (metainf.getDefaultStatusForQName(name)) { XSLTUtils.addAttribute(model, "default", "yes", property); } - if (typeMap.containsKey(metainf.getSchemaQNameForQName(name))) { + if (typeMap.containsKey(metainf.getSchemaQNameForQName(name)) || + groupTypeMap.containsKey(metainf.getSchemaQNameForQName(name))) { XSLTUtils.addAttribute(model, "ours", "yes", property); } Modified: webservices/axis2/branches/java/jaxws21/modules/adb-codegen/src/org/apache/axis2/schema/writer/JavaBeanWriter.java URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/jaxws21/modules/adb-codegen/src/org/apache/axis2/schema/writer/JavaBeanWriter.java?rev=612147&r1=612146&r2=612147&view=diff ============================================================================== --- webservices/axis2/branches/java/jaxws21/modules/adb-codegen/src/org/apache/axis2/schema/writer/JavaBeanWriter.java (original) +++ webservices/axis2/branches/java/jaxws21/modules/adb-codegen/src/org/apache/axis2/schema/writer/JavaBeanWriter.java Tue Jan 15 08:21:22 2008 @@ -44,6 +44,8 @@ import java.io.*; import java.util.*; + + /** * Java Bean writer for the schema compiler. */ @@ -59,6 +61,8 @@ private Templates templateCache; + private List nameList; + private Map packageNameToClassNamesMap; private static int count = 0; @@ -208,13 +212,15 @@ * @return Returns String. * @throws SchemaCompilationException */ - public String write(XmlSchemaElement element, Map typeMap, + public String write(XmlSchemaElement element, + Map typeMap, + Map groupTypeMap, BeanWriterMetaInfoHolder metainf) throws SchemaCompilationException { try { QName qName = element.getQName(); - return process(qName, metainf, typeMap, true, false); + return process(qName, metainf, typeMap, groupTypeMap, true, false); } catch (Exception e) { e.printStackTrace(); throw new SchemaCompilationException(e); @@ -233,13 +239,14 @@ */ public String write(QName qName, Map typeMap, + Map groupTypeMap, BeanWriterMetaInfoHolder metainf, boolean isAbstract) throws SchemaCompilationException { try { // determine the package for this type. - return process(qName, metainf, typeMap, false,isAbstract); + return process(qName, metainf, typeMap, groupTypeMap, false,isAbstract); } catch (SchemaCompilationException e) { throw e; @@ -281,10 +288,10 @@ * @param metainf * @return Returns String. * @throws SchemaCompilationException - * @see BeanWriter#write(org.apache.ws.commons.schema.XmlSchemaSimpleType, - * java.util.Map, org.apache.axis2.schema.BeanWriterMetaInfoHolder) */ - public String write(XmlSchemaSimpleType simpleType, Map typeMap, + public String write(XmlSchemaSimpleType simpleType, + Map typeMap, + Map groupTypeMap, BeanWriterMetaInfoHolder metainf) throws SchemaCompilationException { try { QName qName = simpleType.getQName(); @@ -292,7 +299,7 @@ qName = (QName) simpleType.getMetaInfoMap().get(SchemaConstants.SchemaCompilerInfoHolder.FAKE_QNAME); } metainf.addtStatus(qName, SchemaConstants.SIMPLE_TYPE_OR_CONTENT); - return process(qName, metainf, typeMap, true, false); + return process(qName, metainf, typeMap, groupTypeMap, true, false); } catch (Exception e) { throw new SchemaCompilationException(e); } @@ -312,7 +319,7 @@ } else { this.rootDir = rootDir; } - + this.nameList = new ArrayList(); this.packageNameToClassNamesMap = new HashMap(); javaBeanTemplateName = SchemaPropertyLoader.getBeanTemplate(); } @@ -332,12 +339,20 @@ String packageName = getPackage(namespaceURI); String originalName = qName.getLocalPart(); + String className = null; - if (!this.packageNameToClassNamesMap.containsKey(packageName)){ - this.packageNameToClassNamesMap.put(packageName, new ArrayList()); + // when wrapping classes all the data binding and exception class should have + // a unique name since package name is not being applied. + // otherewise we can make unique with the package name + if (!wrapClasses){ + className = makeUniqueJavaClassName(this.nameList, originalName); + } else { + if (!this.packageNameToClassNamesMap.containsKey(packageName)) { + this.packageNameToClassNamesMap.put(packageName, new ArrayList()); + } + className = makeUniqueJavaClassName((List) this.packageNameToClassNamesMap.get(packageName), originalName); } - String className = - makeUniqueJavaClassName((List) this.packageNameToClassNamesMap.get(packageName), originalName); + String packagePrefix = null; @@ -386,6 +401,7 @@ private String process(QName qName, BeanWriterMetaInfoHolder metainf, Map typeMap, + Map groupTypeMap, boolean isElement, boolean isAbstract) throws Exception { @@ -419,7 +435,7 @@ globalWrappedDocument.getDocumentElement().appendChild( getBeanElement(globalWrappedDocument, className, originalName, basePackageName, qName, isElement,isAbstract, - metainf, propertyNames, typeMap)); + metainf, propertyNames, typeMap, groupTypeMap)); } else { // create the model @@ -427,7 +443,7 @@ // make the XML model.appendChild(getBeanElement(model, className, originalName, basePackageName, qName, isElement,isAbstract, metainf, propertyNames, - typeMap)); + typeMap, groupTypeMap)); if (writeClasses) { // create the file @@ -485,7 +501,8 @@ boolean isAbstract, BeanWriterMetaInfoHolder metainf, ArrayList propertyNames, - Map typeMap) + Map typeMap, + Map groupTypeMap) throws SchemaCompilationException { Element rootElt = XSLTUtils.getElement(model, "bean"); @@ -493,8 +510,7 @@ XSLTUtils.addAttribute(model, "originalName", originalName, rootElt); XSLTUtils.addAttribute(model, "package", packageName, rootElt); XSLTUtils.addAttribute(model, "nsuri", qName.getNamespaceURI(), rootElt); - XSLTUtils.addAttribute(model, "isUseWrapperClasses", isUseWrapperClasses? "yes" : "false", rootElt); - XSLTUtils.addAttribute(model, "nsprefix", isSuppressPrefixesMode ? "" : getPrefixForURI(qName + XSLTUtils.addAttribute(model, "nsprefix", isSuppressPrefixesMode ? "" : getPrefixForURI(qName .getNamespaceURI(), qName.getPrefix()), rootElt); if (!wrapClasses) { @@ -517,6 +533,10 @@ XSLTUtils.addAttribute(model, "anon", "yes", rootElt); } + if (isUseWrapperClasses){ + XSLTUtils.addAttribute(model, "usewrapperclasses", "yes", rootElt); + } + if (metainf.isExtension()) { XSLTUtils.addAttribute(model, "extension", metainf .getExtensionClassName(), rootElt); @@ -563,14 +583,14 @@ } // populate all the information - populateInfo(metainf, model, rootElt, propertyNames, typeMap, false); + populateInfo(metainf, model, rootElt, propertyNames, typeMap, groupTypeMap, false); if (metainf.isSimple() && metainf.isUnion()) { populateMemberInfo(metainf, model, rootElt, typeMap); } if (metainf.isSimple() && metainf.isList()) { - populateListInfo(metainf, model, rootElt, typeMap); + populateListInfo(metainf, model, rootElt, typeMap, groupTypeMap); } ////////////////////////////////////////////////////////// // System.out.println(DOM2Writer.nodeToString(rootElt)); @@ -582,7 +602,8 @@ protected void populateListInfo(BeanWriterMetaInfoHolder metainf, Document model, Element rootElement, - Map typeMap) { + Map typeMap, + Map groupTypeMap) { String javaName = makeUniqueJavaClassName(new ArrayList(), metainf.getItemTypeQName().getLocalPart()); Element itemType = XSLTUtils.addChildElement(model, "itemtype", rootElement); @@ -592,9 +613,10 @@ XSLTUtils.addAttribute(model, "javaname", javaName, itemType); - if (typeMap.containsKey(metainf.getItemTypeQName())) { - XSLTUtils.addAttribute(model, "ours", "true", itemType); - } + if (typeMap.containsKey(metainf.getItemTypeQName()) || + groupTypeMap.containsKey(metainf.getItemTypeClassName())) { + XSLTUtils.addAttribute(model, "ours", "true", itemType); + } if (PrimitiveTypeFinder.isPrimitive(metainf.getItemTypeClassName())) { XSLTUtils.addAttribute(model, "primitive", "yes", itemType); } @@ -639,8 +661,12 @@ * @param typeMap * @throws SchemaCompilationException */ - private void populateInfo(BeanWriterMetaInfoHolder metainf, Document model, - Element rootElt, ArrayList propertyNames, Map typeMap, + private void populateInfo(BeanWriterMetaInfoHolder metainf, + Document model, + Element rootElt, + ArrayList propertyNames, + Map typeMap, + Map groupTypeMap, boolean isInherited) throws SchemaCompilationException { // we should add parent class details only if it is // an extension or simple restriction @@ -648,9 +674,9 @@ if (metainf.getParent() != null && (!metainf.isRestriction() || (metainf.isRestriction() && metainf.isSimple()))) { populateInfo(metainf.getParent(), model, rootElt, propertyNames, - typeMap, true); + typeMap, groupTypeMap, true); } - addPropertyEntries(metainf, model, rootElt, propertyNames, typeMap, + addPropertyEntries(metainf, model, rootElt, propertyNames, typeMap, groupTypeMap, isInherited); } @@ -664,8 +690,11 @@ * @throws SchemaCompilationException */ private void addPropertyEntries(BeanWriterMetaInfoHolder metainf, - Document model, Element rootElt, ArrayList propertyNames, - Map typeMap, boolean isInherited) throws SchemaCompilationException { + Document model, Element rootElt, + ArrayList propertyNames, + Map typeMap, + Map groupTypeMap, + boolean isInherited) throws SchemaCompilationException { // go in the loop and add the part elements QName[] qName; String javaClassNameForElement; @@ -743,6 +772,7 @@ XSLTUtils.addAttribute(model, "type", javaClassNameForElement, property); + if (PrimitiveTypeFinder.isPrimitive(javaClassNameForElement)) { XSLTUtils.addAttribute(model, "primitive", "yes", property); @@ -799,6 +829,8 @@ XSLTUtils.addAttribute(model, "innerchoice", "yes", property); } + + if ((parentMetaInf != null) && metainf.isRestriction() && missingQNames.contains(name)) { // this element details should be there with the parent meta Inf addAttributesToProperty( @@ -807,6 +839,7 @@ model, property, typeMap, + groupTypeMap, javaClassNameForElement); } else { @@ -816,6 +849,7 @@ model, property, typeMap, + groupTypeMap, javaClassNameForElement); } @@ -827,13 +861,15 @@ Document model, Element property, Map typeMap, + Map groupTypeMap, String javaClassNameForElement) { // add an attribute that says the type is default if (metainf.getDefaultStatusForQName(name)) { XSLTUtils.addAttribute(model, "default", "yes", property); } - if (typeMap.containsKey(metainf.getSchemaQNameForQName(name))) { + if (typeMap.containsKey(metainf.getSchemaQNameForQName(name)) || + groupTypeMap.containsKey(metainf.getSchemaQNameForQName(name))) { XSLTUtils.addAttribute(model, "ours", "yes", property); } Modified: webservices/axis2/branches/java/jaxws21/modules/adb-codegen/sub-build.xml URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/jaxws21/modules/adb-codegen/sub-build.xml?rev=612147&r1=612146&r2=612147&view=diff ============================================================================== --- webservices/axis2/branches/java/jaxws21/modules/adb-codegen/sub-build.xml (original) +++ webservices/axis2/branches/java/jaxws21/modules/adb-codegen/sub-build.xml Tue Jan 15 08:21:22 2008 @@ -394,6 +394,15 @@ + + Compiling soapencoding.xsd + + + + + + + Modified: webservices/axis2/branches/java/jaxws21/modules/adb-codegen/test-resources/testsuite/groups.xsd URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/jaxws21/modules/adb-codegen/test-resources/testsuite/groups.xsd?rev=612147&r1=612146&r2=612147&view=diff ============================================================================== --- webservices/axis2/branches/java/jaxws21/modules/adb-codegen/test-resources/testsuite/groups.xsd (original) +++ webservices/axis2/branches/java/jaxws21/modules/adb-codegen/test-resources/testsuite/groups.xsd Tue Jan 15 08:21:22 2008 @@ -78,7 +78,6 @@ - @@ -87,11 +86,9 @@ - - @@ -100,7 +97,6 @@ - Modified: webservices/axis2/branches/java/jaxws21/modules/adb-codegen/test-resources/testsuite/innerParticles.xsd URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/jaxws21/modules/adb-codegen/test-resources/testsuite/innerParticles.xsd?rev=612147&r1=612146&r2=612147&view=diff ============================================================================== --- webservices/axis2/branches/java/jaxws21/modules/adb-codegen/test-resources/testsuite/innerParticles.xsd (original) +++ webservices/axis2/branches/java/jaxws21/modules/adb-codegen/test-resources/testsuite/innerParticles.xsd Tue Jan 15 08:21:22 2008 @@ -106,4 +106,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + Modified: webservices/axis2/branches/java/jaxws21/modules/adb-codegen/test-resources/testsuite/restrictions.xsd URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/jaxws21/modules/adb-codegen/test-resources/testsuite/restrictions.xsd?rev=612147&r1=612146&r2=612147&view=diff ============================================================================== --- webservices/axis2/branches/java/jaxws21/modules/adb-codegen/test-resources/testsuite/restrictions.xsd (original) +++ webservices/axis2/branches/java/jaxws21/modules/adb-codegen/test-resources/testsuite/restrictions.xsd Tue Jan 15 08:21:22 2008 @@ -189,7 +189,21 @@ - - + + + + + + + + + + + + + + + + Modified: webservices/axis2/branches/java/jaxws21/modules/adb-codegen/test-resources/testsuite/union2.xsd URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/jaxws21/modules/adb-codegen/test-resources/testsuite/union2.xsd?rev=612147&r1=612146&r2=612147&view=diff ============================================================================== --- webservices/axis2/branches/java/jaxws21/modules/adb-codegen/test-resources/testsuite/union2.xsd (original) +++ webservices/axis2/branches/java/jaxws21/modules/adb-codegen/test-resources/testsuite/union2.xsd Tue Jan 15 08:21:22 2008 @@ -31,4 +31,19 @@ + + + + + + + + + + + + + + + Modified: webservices/axis2/branches/java/jaxws21/modules/adb-codegen/test/org/apache/axis2/schema/innerparticles/InnerParticlesTest.java URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/jaxws21/modules/adb-codegen/test/org/apache/axis2/schema/innerparticles/InnerParticlesTest.java?rev=612147&r1=612146&r2=612147&view=diff ============================================================================== --- webservices/axis2/branches/java/jaxws21/modules/adb-codegen/test/org/apache/axis2/schema/innerparticles/InnerParticlesTest.java (original) +++ webservices/axis2/branches/java/jaxws21/modules/adb-codegen/test/org/apache/axis2/schema/innerparticles/InnerParticlesTest.java Tue Jan 15 08:21:22 2008 @@ -308,5 +308,37 @@ } } + public void testTestComplexTypeElement(){ + TestComplexTypeElement testComplexTypeElement = new TestComplexTypeElement(); + + TestComplexType testComplexType = new TestComplexType(); + testComplexTypeElement.setTestComplexTypeElement(testComplexType); + + TestElement_type0 testElement_type0 = new TestElement_type0(); + testElement_type0.setParam("param"); + testComplexType.setTestElement(testElement_type0); + + TestComplexTypeSequence_type0 testComplexTypeSequence_type0 = new TestComplexTypeSequence_type0(); + testComplexType.setTestComplexTypeSequence_type0(testComplexTypeSequence_type0); + + try { + OMElement omElement = testComplexTypeElement.getOMElement( + TestComplexTypeElement.MY_QNAME,OMAbstractFactory.getOMFactory()); + String omElementString = omElement.toStringWithConsume(); + System.out.println("OM String ==> " + omElementString); + XMLStreamReader xmlReader = StAXUtils.createXMLStreamReader( + new ByteArrayInputStream(omElementString.getBytes())); + TestComplexTypeElement result = TestComplexTypeElement.Factory.parse(xmlReader); + assertEquals(result.getTestComplexTypeElement().getTestElement().getParam(),"param"); + } catch (ADBException e) { + fail(); + } catch (XMLStreamException e) { + fail(); + } catch (Exception e) { + e.printStackTrace(); + fail(); + } + } + } Modified: webservices/axis2/branches/java/jaxws21/modules/adb-codegen/test/org/apache/axis2/schema/restriction/ComplexRestrictionTest.java URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/jaxws21/modules/adb-codegen/test/org/apache/axis2/schema/restriction/ComplexRestrictionTest.java?rev=612147&r1=612146&r2=612147&view=diff ============================================================================== --- webservices/axis2/branches/java/jaxws21/modules/adb-codegen/test/org/apache/axis2/schema/restriction/ComplexRestrictionTest.java (original) +++ webservices/axis2/branches/java/jaxws21/modules/adb-codegen/test/org/apache/axis2/schema/restriction/ComplexRestrictionTest.java Tue Jan 15 08:21:22 2008 @@ -20,9 +20,50 @@ import junit.framework.TestCase; +import java.io.ByteArrayInputStream; +import java.math.BigInteger; + +import org.tempuri.GetExemplarResponseType; +import org.tempuri.GetExemplarResponseTypeElement; +import org.apache.axiom.om.OMAbstractFactory; +import org.apache.axiom.om.OMElement; +import org.apache.axiom.om.util.StAXUtils; +import org.apache.axis2.databinding.ADBException; + +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; + public class ComplexRestrictionTest extends TestCase { - public void testComplexRestriction(){ - + + public void testGetExemplarResponseTypeElement(){ + GetExemplarResponseTypeElement getExemplarResponseTypeElement = new GetExemplarResponseTypeElement(); + GetExemplarResponseType getExemplarResponseType = new GetExemplarResponseType(); + getExemplarResponseType.setExemplar("test string1"); + getExemplarResponseType.setResponseCode(new BigInteger("23")); + getExemplarResponseType.setResponseMessage("test string2"); + getExemplarResponseType.setSupportedMethods("test string3"); + + getExemplarResponseTypeElement.setGetExemplarResponseTypeElement(getExemplarResponseType); + + try { + OMElement omElement = + getExemplarResponseTypeElement.getOMElement(GetExemplarResponseTypeElement.MY_QNAME, + OMAbstractFactory.getOMFactory()); + String omElementString = omElement.toStringWithConsume(); + System.out.println("OMElement string ==> " + omElementString); + XMLStreamReader xmlReader = StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes())); + GetExemplarResponseTypeElement result = GetExemplarResponseTypeElement.Factory.parse(xmlReader); + GetExemplarResponseType resultType = result.getGetExemplarResponseTypeElement(); + assertEquals(resultType.getExemplar(),"test string1"); + assertEquals(resultType.getResponseMessage(),"test string2"); + assertEquals(resultType.getSupportedMethods(),"test string3"); + } catch (ADBException e) { + fail(); + } catch (XMLStreamException e) { + fail(); + } catch (Exception e) { + fail(); + } } } Modified: webservices/axis2/branches/java/jaxws21/modules/adb-codegen/test/org/apache/axis2/schema/union2/Union2Test.java URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/jaxws21/modules/adb-codegen/test/org/apache/axis2/schema/union2/Union2Test.java?rev=612147&r1=612146&r2=612147&view=diff ============================================================================== --- webservices/axis2/branches/java/jaxws21/modules/adb-codegen/test/org/apache/axis2/schema/union2/Union2Test.java (original) +++ webservices/axis2/branches/java/jaxws21/modules/adb-codegen/test/org/apache/axis2/schema/union2/Union2Test.java Tue Jan 15 08:21:22 2008 @@ -15,10 +15,7 @@ */ package org.apache.axis2.schema.union2; -import org.tempuri.union2.TestUnionElement2; -import org.tempuri.union2.TestUnion1; -import org.tempuri.union2.TestListElement1; -import org.tempuri.union2.TestList1; +import org.tempuri.union2.*; import org.apache.axiom.om.OMElement; import org.apache.axiom.om.OMAbstractFactory; import org.apache.axiom.om.util.StAXUtils; @@ -30,6 +27,7 @@ import junit.framework.TestCase; import java.io.ByteArrayInputStream; +import java.util.Date; public class Union2Test extends TestCase { @@ -101,6 +99,30 @@ fail(); } + } + + public void testFuzzDateType(){ + TestFuzzyDateType testFuzzyDateType = new TestFuzzyDateType(); + + FuzzyDateType fuzzyDateType = new FuzzyDateType(); + fuzzyDateType.setObject(new Date()); + + testFuzzyDateType.setTestFuzzyDateType(fuzzyDateType); + try { + OMElement omElement = testFuzzyDateType.getOMElement( + TestFuzzyDateType.MY_QNAME,OMAbstractFactory.getOMFactory()); + String omElementString = omElement.toStringWithConsume(); + System.out.println("OM Element ==> " + omElementString); + XMLStreamReader xmlReader = + StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes())); + TestFuzzyDateType result = TestFuzzyDateType.Factory.parse(xmlReader); + } catch (ADBException e) { + fail(); + } catch (XMLStreamException e) { + fail(); + } catch (Exception e) { + fail(); + } } } Modified: webservices/axis2/branches/java/jaxws21/modules/adb/src/org/apache/axis2/databinding/ADBBean.java URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/jaxws21/modules/adb/src/org/apache/axis2/databinding/ADBBean.java?rev=612147&r1=612146&r2=612147&view=diff ============================================================================== --- webservices/axis2/branches/java/jaxws21/modules/adb/src/org/apache/axis2/databinding/ADBBean.java (original) +++ webservices/axis2/branches/java/jaxws21/modules/adb/src/org/apache/axis2/databinding/ADBBean.java Tue Jan 15 08:21:22 2008 @@ -24,13 +24,14 @@ import javax.xml.namespace.QName; import javax.xml.stream.XMLStreamReader; import javax.xml.stream.XMLStreamException; +import java.io.Serializable; /* * ADBBean - Axis Data Binding Bean. This will be implemented by all the beans that are being generated by * Axis2 data binding framework */ -public interface ADBBean { +public interface ADBBean extends Serializable { /** * Serializes an ADBBean. Gets the pull parser and fetches the XML pull events to represent the * bean. Modified: webservices/axis2/branches/java/jaxws21/modules/adb/src/org/apache/axis2/databinding/types/Time.java URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/jaxws21/modules/adb/src/org/apache/axis2/databinding/types/Time.java?rev=612147&r1=612146&r2=612147&view=diff ============================================================================== --- webservices/axis2/branches/java/jaxws21/modules/adb/src/org/apache/axis2/databinding/types/Time.java (original) +++ webservices/axis2/branches/java/jaxws21/modules/adb/src/org/apache/axis2/databinding/types/Time.java Tue Jan 15 08:21:22 2008 @@ -106,7 +106,7 @@ int second = 0; int miliSecond = 0; int timeZoneOffSet = TimeZone.getDefault().getRawOffset(); - + int milliSecondPartLength = 0; if (source.length() >= 8) { if ((source.charAt(2) != ':' )|| (source.charAt(5) != ':')){ throw new RuntimeException("Invalid time format (" + source + ") having : s in wrong places"); @@ -114,6 +114,9 @@ hour = Integer.parseInt(source.substring(0, 2)); minite = Integer.parseInt(source.substring(3, 5)); second = Integer.parseInt(source.substring(6, 8)); + + + if (source.length() > 8) { String rest = source.substring(8); if (rest.startsWith(".")) { @@ -122,19 +125,21 @@ // this is in gmt time zone timeZoneOffSet = 0; miliSecond = Integer.parseInt(rest.substring(1, rest.lastIndexOf("Z"))); - + milliSecondPartLength = rest.substring(1,rest.lastIndexOf("Z")).trim().length(); } else if ((rest.lastIndexOf("+") > 0) || (rest.lastIndexOf("-") > 0)) { // this is given in a general time zione String timeOffSet = null; if (rest.lastIndexOf("+") > 0) { timeOffSet = rest.substring(rest.lastIndexOf("+") + 1); miliSecond = Integer.parseInt(rest.substring(1, rest.lastIndexOf("+"))); + milliSecondPartLength = rest.substring(1, rest.lastIndexOf("+")).trim().length(); // we keep +1 or -1 to finally calculate the value timeZoneOffSet = 1; } else if (rest.lastIndexOf("-") > 0) { timeOffSet = rest.substring(rest.lastIndexOf("-") + 1); miliSecond = Integer.parseInt(rest.substring(1, rest.lastIndexOf("-"))); + milliSecondPartLength = rest.substring(1, rest.lastIndexOf("-")).trim().length(); // we keep +1 or -1 to finally calculate the value timeZoneOffSet = -1; } @@ -149,6 +154,7 @@ } else { // i.e it does not have time zone miliSecond = Integer.parseInt(rest.substring(1)); + milliSecondPartLength = rest.substring(1).trim().length(); } } else { @@ -179,7 +185,17 @@ calendar.set(Calendar.HOUR_OF_DAY, hour); calendar.set(Calendar.MINUTE, minite); calendar.set(Calendar.SECOND, second); + if (milliSecondPartLength != 3) { + // milisecond part represenst the fraction of the second so we have to + // find the fraction and multiply it by 1000. So if milisecond part + // has three digits nothing required + miliSecond = miliSecond * 1000; + for (int i = 0; i < milliSecondPartLength; i++) { + miliSecond = miliSecond / 10; + } + } calendar.set(Calendar.MILLISECOND, miliSecond); + calendar.set(Calendar.ZONE_OFFSET, timeZoneOffSet); return calendar; Modified: webservices/axis2/branches/java/jaxws21/modules/adb/src/org/apache/axis2/databinding/utils/BeanUtil.java URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/jaxws21/modules/adb/src/org/apache/axis2/databinding/utils/BeanUtil.java?rev=612147&r1=612146&r2=612147&view=diff ============================================================================== --- webservices/axis2/branches/java/jaxws21/modules/adb/src/org/apache/axis2/databinding/utils/BeanUtil.java (original) +++ webservices/axis2/branches/java/jaxws21/modules/adb/src/org/apache/axis2/databinding/utils/BeanUtil.java Tue Jan 15 08:21:22 2008 @@ -24,7 +24,11 @@ import org.apache.axiom.om.impl.llom.factory.OMXMLBuilderFactory; import org.apache.axiom.om.util.Base64; import org.apache.axis2.AxisFault; +import org.apache.axis2.deployment.util.BeanExcludeInfo; +import org.apache.axis2.deployment.util.ExcludeInfo; +import org.apache.axis2.context.MessageContext; import org.apache.axis2.description.java2wsdl.TypeTable; +import org.apache.axis2.description.AxisService; import org.apache.axis2.databinding.typemapping.SimpleTypeMapper; import org.apache.axis2.databinding.utils.reader.ADBXMLStreamReaderImpl; import org.apache.axis2.engine.ObjectSupplier; @@ -103,19 +107,39 @@ "elementName"); } + AxisService axisService = null; + if (MessageContext.getCurrentMessageContext() != null) { + axisService = MessageContext.getCurrentMessageContext().getAxisService(); + } + BeanExcludeInfo beanExcludeInfo = null; + if (axisService != null && axisService.getExcludeInfo() != null) { + beanExcludeInfo = axisService.getExcludeInfo().getBeanExcludeInfoForClass( + jClass.getQualifiedName()); + } // properties from JAM ArrayList propertyList = new ArrayList(); JProperty properties [] = jClass.getDeclaredProperties(); for (int i = 0; i < properties.length; i++) { JProperty property = properties[i]; - propertyList.add(property); + String propertyName = getCorrectName(property.getSimpleName()); + if ((beanExcludeInfo == null) || !beanExcludeInfo.isExcludedProperty(propertyName)){ + propertyList.add(property); + } + } JClass supClass = jClass.getSuperclass(); - while (!"java.lang.Object".equals(supClass.getQualifiedName())) { + while (!supClass.getQualifiedName().startsWith("java.")) { properties = supClass.getDeclaredProperties(); + ExcludeInfo excludeInfo = axisService.getExcludeInfo(); + if (excludeInfo != null) { + beanExcludeInfo = excludeInfo.getBeanExcludeInfoForClass(supClass.getQualifiedName()); + } for (int i = 0; i < properties.length; i++) { JProperty property = properties[i]; - propertyList.add(property); + String propertyName = getCorrectName(property.getSimpleName()); + if ((beanExcludeInfo == null) || !beanExcludeInfo.isExcludedProperty(propertyName)) { + propertyList.add(property); + } } supClass = supClass.getSuperclass(); } Modified: webservices/axis2/branches/java/jaxws21/modules/adb/src/org/apache/axis2/databinding/utils/ConverterUtil.java URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/jaxws21/modules/adb/src/org/apache/axis2/databinding/utils/ConverterUtil.java?rev=612147&r1=612146&r2=612147&view=diff ============================================================================== --- webservices/axis2/branches/java/jaxws21/modules/adb/src/org/apache/axis2/databinding/utils/ConverterUtil.java (original) +++ webservices/axis2/branches/java/jaxws21/modules/adb/src/org/apache/axis2/databinding/utils/ConverterUtil.java Tue Jan 15 08:21:22 2008 @@ -159,7 +159,19 @@ } public static void appendDate(StringBuffer dateString, Calendar calendar) { - dateString.append(calendar.get(Calendar.YEAR)).append("-"); + + int year = calendar.get(Calendar.YEAR); + + if (year < 1000){ + dateString.append("0"); + } + if (year < 100){ + dateString.append("0"); + } + if (year < 10) { + dateString.append("0"); + } + dateString.append(year).append("-"); // xml date month is started from 1 and calendar month is // started from 0. so have to add one @@ -861,6 +873,8 @@ minite = Integer.parseInt(source.substring(14, 16)); second = Integer.parseInt(source.substring(17, 19)); + int milliSecondPartLength = 0; + if (source.length() > 19) { String rest = source.substring(19); if (rest.startsWith(".")) { @@ -869,19 +883,21 @@ // this is in gmt time zone timeZoneOffSet = 0; miliSecond = Integer.parseInt(rest.substring(1, rest.lastIndexOf("Z"))); - + milliSecondPartLength = rest.substring(1,rest.lastIndexOf("Z")).trim().length(); } else if ((rest.lastIndexOf("+") > 0) || (rest.lastIndexOf("-") > 0)) { // this is given in a general time zione String timeOffSet = null; if (rest.lastIndexOf("+") > 0) { timeOffSet = rest.substring(rest.lastIndexOf("+") + 1); miliSecond = Integer.parseInt(rest.substring(1, rest.lastIndexOf("+"))); + milliSecondPartLength = rest.substring(1, rest.lastIndexOf("+")).trim().length(); // we keep +1 or -1 to finally calculate the value timeZoneOffSet = 1; } else if (rest.lastIndexOf("-") > 0) { timeOffSet = rest.substring(rest.lastIndexOf("-") + 1); miliSecond = Integer.parseInt(rest.substring(1, rest.lastIndexOf("-"))); + milliSecondPartLength = rest.substring(1, rest.lastIndexOf("-")).trim().length(); // we keep +1 or -1 to finally calculate the value timeZoneOffSet = -1; } @@ -896,6 +912,7 @@ } else { // i.e it does not have time zone miliSecond = Integer.parseInt(rest.substring(1)); + milliSecondPartLength = rest.substring(1).trim().length(); } } else { @@ -926,6 +943,15 @@ calendar.set(Calendar.HOUR_OF_DAY, hour); calendar.set(Calendar.MINUTE, minite); calendar.set(Calendar.SECOND, second); + if (milliSecondPartLength != 3){ + // milisecond part represenst the fraction of the second so we have to + // find the fraction and multiply it by 1000. So if milisecond part + // has three digits nothing required + miliSecond = miliSecond * 1000; + for (int i = 0; i < milliSecondPartLength; i++) { + miliSecond = miliSecond / 10; + } + } calendar.set(Calendar.MILLISECOND, miliSecond); calendar.set(Calendar.ZONE_OFFSET, timeZoneOffSet); @@ -1061,7 +1087,7 @@ for (int i = 0; i < listSize; i++) { Object o = objectList.get(i); if (o != null) { - array[i] = Boolean.parseBoolean(o.toString()); + array[i] = o.toString().equalsIgnoreCase("true"); } } returnArray = array; @@ -1465,9 +1491,13 @@ if (attributeNameSpace.equals(Constants.XSD_NAMESPACE)) { if ("base64Binary".equals(attributeType)) { + xmlStreamReader.next(); returnObject = getDataHandlerObject(xmlStreamReader); } else { - String attribValue = xmlStreamReader.getElementText(); + // we have to do this other wise xmlstream event type is not set. + xmlStreamReader.next(); + String attribValue = xmlStreamReader.getText(); + xmlStreamReader.next(); if (attribValue != null) { if (attributeType.equals("string")) { returnObject = attribValue; Modified: webservices/axis2/branches/java/jaxws21/modules/adb/src/org/apache/axis2/databinding/utils/MultirefHelper.java URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/jaxws21/modules/adb/src/org/apache/axis2/databinding/utils/MultirefHelper.java?rev=612147&r1=612146&r2=612147&view=diff ============================================================================== --- webservices/axis2/branches/java/jaxws21/modules/adb/src/org/apache/axis2/databinding/utils/MultirefHelper.java (original) +++ webservices/axis2/branches/java/jaxws21/modules/adb/src/org/apache/axis2/databinding/utils/MultirefHelper.java Tue Jan 15 08:21:22 2008 @@ -19,10 +19,10 @@ package org.apache.axis2.databinding.utils; -import org.apache.axiom.om.OMAttribute; -import org.apache.axiom.om.OMElement; -import org.apache.axiom.om.OMNode; +import org.apache.axiom.om.*; import org.apache.axiom.om.impl.builder.StAXOMBuilder; +import org.apache.axiom.soap.SOAPEnvelope; +import org.apache.axiom.soap.SOAPBody; import org.apache.axis2.AxisFault; import org.apache.axis2.databinding.typemapping.SimpleTypeMapper; import org.apache.axis2.engine.ObjectSupplier; @@ -30,6 +30,7 @@ import javax.xml.namespace.QName; import java.util.HashMap; import java.util.Iterator; +import java.util.Map; public class MultirefHelper { @@ -168,6 +169,138 @@ public void clean() { elementMap.clear(); objectmap.clear(); + } + + /** + * this method is used to process the href attributes which may comes with the incomming soap mesaage + * + * + * + * + * + * the real argument + * blue + * + * + * here we assume first child of the soap body has the main object structure and others contain the + * multiref parts. + * Soap spec says that those multiref parts must be top level elements. + * + * @param soapEnvelope + */ + + public static void processHrefAttributes(SOAPEnvelope soapEnvelope) + throws AxisFault { + // first populate the multiref parts to a hash table. + SOAPBody soapBody = soapEnvelope.getBody(); + // first build the whole tree + soapBody.build(); + OMElement omElement = null; + OMAttribute idAttribute = null; + Map idAndOMElementMap = new HashMap(); + for (Iterator iter = soapBody.getChildElements(); iter.hasNext();) { + omElement = (OMElement) iter.next(); + // the attribute id is an unqualified attribute + idAttribute = omElement.getAttribute(new QName(null, "id")); + if (idAttribute != null) { + // for the first element there may not have an id + idAndOMElementMap.put(idAttribute.getAttributeValue(), omElement); + } + } + + // start processing from the first child + processHrefAttributes(idAndOMElementMap, soapBody.getFirstElement(), OMAbstractFactory.getOMFactory()); + + } + + public static void processHrefAttributes(Map idAndOMElementMap, + OMElement elementToProcess, + OMFactory omFactory) + throws AxisFault { + + // first check whether this element has an href value. + // href is also an unqualifed attribute + OMAttribute hrefAttribute = elementToProcess.getAttribute(new QName(null, "href")); + if (hrefAttribute != null) { + // i.e this has an href attribute + String hrefAttributeValue = hrefAttribute.getAttributeValue(); + if (!hrefAttributeValue.startsWith("#")) { + throw new AxisFault("In valid href ==> " + hrefAttributeValue + " does not starts with #"); + } else { + OMElement referedOMElement = + (OMElement) idAndOMElementMap.get(hrefAttributeValue.substring(1)); + if (referedOMElement == null) { + throw new AxisFault("In valid href ==> " + hrefAttributeValue + " can not find" + + "the matching element"); + } else { + // now we have to remove the hrefAttribute and add all the child elements to the + // element being proccesed + elementToProcess.removeAttribute(hrefAttribute); + OMElement clonedReferenceElement = getClonedOMElement(referedOMElement, omFactory); + OMNode omNode = null; + for (Iterator iter = clonedReferenceElement.getChildren(); iter.hasNext();) { + omNode = (OMNode) iter.next(); + elementToProcess.addChild(omNode.detach()); + } + + // add attributes + OMAttribute omAttribute = null; + for (Iterator iter = clonedReferenceElement.getAllAttributes(); iter.hasNext();) { + omAttribute = (OMAttribute) iter.next(); + // we do not have to populate the id attribute + if (!omAttribute.getLocalName().equals("id")) { + elementToProcess.addAttribute(omAttribute); + } + } + } + } + } + + // call recursively to proces all elements + OMElement childOMElement = null; + for (Iterator iter = elementToProcess.getChildElements(); iter.hasNext();) { + childOMElement = (OMElement) iter.next(); + processHrefAttributes(idAndOMElementMap, childOMElement, omFactory); + } + } + + /** + * returns an cloned om element for this OMElement + * + * @param omElement + * @return cloned omElement + */ + public static OMElement getClonedOMElement(OMElement omElement, OMFactory omFactory) throws AxisFault { + + OMElement newOMElement = omFactory.createOMElement(omElement.getQName()); + + // copying attributes + OMAttribute omAttribute = null; + OMAttribute newOMAttribute = null; + for (Iterator iter = omElement.getAllAttributes(); iter.hasNext();) { + omAttribute = (OMAttribute) iter.next(); + if (!omAttribute.getAttributeValue().equals("id")) { + newOMAttribute = omFactory.createOMAttribute( + omAttribute.getLocalName(), + omAttribute.getNamespace(), + omAttribute.getAttributeValue()); + newOMElement.addAttribute(newOMAttribute); + } + } + OMNode omNode = null; + OMText omText = null; + for (Iterator iter = omElement.getChildren(); iter.hasNext();) { + omNode = (OMNode) iter.next(); + if (omNode instanceof OMText) { + omText = (OMText) omNode; + newOMElement.addChild(omFactory.createOMText(omText.getText())); + } else if (omNode instanceof OMElement) { + newOMElement.addChild(getClonedOMElement((OMElement) omNode, omFactory)); + } else { + throw new AxisFault("Unknown child element type ==> " + omNode.getClass().getName()); + } + } + return newOMElement; } } Modified: webservices/axis2/branches/java/jaxws21/modules/adb/src/org/apache/axis2/rpc/receivers/RPCMessageReceiver.java URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/jaxws21/modules/adb/src/org/apache/axis2/rpc/receivers/RPCMessageReceiver.java?rev=612147&r1=612146&r2=612147&view=diff ============================================================================== --- webservices/axis2/branches/java/jaxws21/modules/adb/src/org/apache/axis2/rpc/receivers/RPCMessageReceiver.java (original) +++ webservices/axis2/branches/java/jaxws21/modules/adb/src/org/apache/axis2/rpc/receivers/RPCMessageReceiver.java Tue Jan 15 08:21:22 2008 @@ -153,6 +153,7 @@ log.error(msg, e); throw new AxisFault(msg, e); } catch(RuntimeException e) { + log.error(e.getMessage(), e); throw AxisFault.makeFault(e); } catch (Exception e) { String msg = "Exception occurred while trying to invoke service method " + --------------------------------------------------------------------- To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org For additional commands, e-mail: axis-cvs-help@ws.apache.org