You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by am...@apache.org on 2007/02/08 12:03:36 UTC
svn commit: r504857 - in /webservices/axis2/trunk/java/modules/adb-codegen:
./ src/org/apache/axis2/schema/ src/org/apache/axis2/schema/template/
src/org/apache/axis2/schema/writer/ test-resources/testsuite/
test/org/apache/axis2/schema/choice/ test/or...
Author: amilas
Date: Thu Feb 8 03:03:35 2007
New Revision: 504857
URL: http://svn.apache.org/viewvc?view=rev&rev=504857
Log:
Add list support to ADB
Added:
webservices/axis2/trunk/java/modules/adb-codegen/test-resources/testsuite/choice.xsd
webservices/axis2/trunk/java/modules/adb-codegen/test-resources/testsuite/list.xsd
webservices/axis2/trunk/java/modules/adb-codegen/test/org/apache/axis2/schema/choice/
webservices/axis2/trunk/java/modules/adb-codegen/test/org/apache/axis2/schema/choice/ChiceTest.java
webservices/axis2/trunk/java/modules/adb-codegen/test/org/apache/axis2/schema/list/
webservices/axis2/trunk/java/modules/adb-codegen/test/org/apache/axis2/schema/list/ListTest.java
Modified:
webservices/axis2/trunk/java/modules/adb-codegen/maven.xml
webservices/axis2/trunk/java/modules/adb-codegen/pom.xml
webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/BeanWriterMetaInfoHolder.java
webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/SchemaCompiler.java
webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate.xsl
webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/writer/JavaBeanWriter.java
Modified: webservices/axis2/trunk/java/modules/adb-codegen/maven.xml
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/adb-codegen/maven.xml?view=diff&rev=504857&r1=504856&r2=504857
==============================================================================
--- webservices/axis2/trunk/java/modules/adb-codegen/maven.xml (original)
+++ webservices/axis2/trunk/java/modules/adb-codegen/maven.xml Thu Feb 8 03:03:35 2007
@@ -207,7 +207,27 @@
<arg file="${testsuite.source.dir}/restrictions.xsd"/>
<arg file="${schema.generated.src.dir}"/>
</java>
+ <!-- ################################################################### -->
+ <!-- All simple derived types xsd -->
+ <ant:echo>Compiling choice.xsd</ant:echo>
+ <java classname="org.apache.axis2.schema.XSD2Java" fork="true">
+ <jvmarg line="${maven.junit.jvmargs}"/>
+ <classpath refid="maven.dependency.classpath"/>
+ <classpath location="${compiled.classes.dir}"/>
+ <arg file="${testsuite.source.dir}/choice.xsd"/>
+ <arg file="${schema.generated.src.dir}"/>
+ </java>
+ <!-- ################################################################### -->
+ <!-- All simple derived types xsd -->
+ <ant:echo>Compiling list.xsd</ant:echo>
+ <java classname="org.apache.axis2.schema.XSD2Java" fork="true">
+ <jvmarg line="${maven.junit.jvmargs}"/>
+ <classpath refid="maven.dependency.classpath"/>
+ <classpath location="${compiled.classes.dir}"/>
+ <arg file="${testsuite.source.dir}/list.xsd"/>
+ <arg file="${schema.generated.src.dir}"/>
+ </java>
<!-- ################################################################### -->
Modified: webservices/axis2/trunk/java/modules/adb-codegen/pom.xml
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/adb-codegen/pom.xml?view=diff&rev=504857&r1=504856&r2=504857
==============================================================================
--- webservices/axis2/trunk/java/modules/adb-codegen/pom.xml (original)
+++ webservices/axis2/trunk/java/modules/adb-codegen/pom.xml Thu Feb 8 03:03:35 2007
@@ -296,6 +296,28 @@
<arg file="${testsuite.source.dir}/restrictions.xsd"/>
<arg file="${schema.generated.src.dir}"/>
</java>
+
+ <!-- ################################################################### -->
+ <!-- All simple derived types xsd -->
+ <ant:echo>Compiling choice.xsd</ant:echo>
+ <java classname="org.apache.axis2.schema.XSD2Java" fork="true">
+ <jvmarg line="${maven.junit.jvmargs}"/>
+ <classpath refid="maven.dependency.classpath"/>
+ <classpath location="${compiled.classes.dir}"/>
+ <arg file="${testsuite.source.dir}/choice.xsd"/>
+ <arg file="${schema.generated.src.dir}"/>
+ </java>
+
+ <!-- ################################################################### -->
+ <!-- All simple derived types xsd -->
+ <ant:echo>Compiling list.xsd</ant:echo>
+ <java classname="org.apache.axis2.schema.XSD2Java" fork="true">
+ <jvmarg line="${maven.junit.jvmargs}"/>
+ <classpath refid="maven.dependency.classpath"/>
+ <classpath location="${compiled.classes.dir}"/>
+ <arg file="${testsuite.source.dir}/list.xsd"/>
+ <arg file="${schema.generated.src.dir}"/>
+ </java>
</tasks>
Modified: webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/BeanWriterMetaInfoHolder.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/BeanWriterMetaInfoHolder.java?view=diff&rev=504857&r1=504856&r2=504857
==============================================================================
--- webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/BeanWriterMetaInfoHolder.java (original)
+++ webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/BeanWriterMetaInfoHolder.java Thu Feb 8 03:03:35 2007
@@ -58,7 +58,10 @@
protected String minInclusiveFacet = null;
protected Map memberTypes = new HashMap();
+ protected QName itemTypeQName;
+ protected String itemTypeClassName;
protected boolean isUnion;
+ protected boolean isList;
protected List nillableQNameList = new ArrayList();
@@ -778,4 +781,32 @@
public void addMemberType(QName qname,String className){
this.memberTypes.put(qname,className);
}
+
+
+
+ public boolean isList() {
+ return isList;
+ }
+
+ public void setList(boolean list) {
+ isList = list;
+ }
+
+ public QName getItemTypeQName() {
+ return itemTypeQName;
+ }
+
+ public void setItemTypeQName(QName itemTypeQName) {
+ this.itemTypeQName = itemTypeQName;
+ }
+
+ public String getItemTypeClassName() {
+ return itemTypeClassName;
+ }
+
+ public void setItemTypeClassName(String itemTypeClassName) {
+ this.itemTypeClassName = itemTypeClassName;
+ }
+
+
}
Modified: webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/SchemaCompiler.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/SchemaCompiler.java?view=diff&rev=504857&r1=504856&r2=504857
==============================================================================
--- webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/SchemaCompiler.java (original)
+++ webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/SchemaCompiler.java Thu Feb 8 03:03:35 2007
@@ -2006,9 +2006,21 @@
metaInfHolder.setUnion(true);
} else if (content instanceof XmlSchemaSimpleTypeList) {
- //todo - Handle lists here
- throw new SchemaCompilationException(
- SchemaCompilerMessages.getMessage("schema.unsupportedcontenterror", "Simple Type List in " + simpleType.getQName()));
+ XmlSchemaSimpleTypeList simpleTypeList = (XmlSchemaSimpleTypeList) content;
+ QName itemTypeQName = simpleTypeList.getItemTypeName();
+
+ if (!isAlreadyProcessed(itemTypeQName)){
+ XmlSchemaType simpleSchemaType = getType(parentSchema,itemTypeQName);
+ if (simpleSchemaType instanceof XmlSchemaSimpleType){
+ processSimpleSchemaType((XmlSchemaSimpleType)simpleSchemaType,null,parentSchema);
+ }
+ }
+
+ String className = findClassName(itemTypeQName,false);
+ metaInfHolder.setList(true);
+ metaInfHolder.setItemTypeQName(itemTypeQName);
+ metaInfHolder.setItemTypeClassName(className);
+
}
}
return metaInfHolder;
Modified: webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate.xsl
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate.xsl?view=diff&rev=504857&r1=504856&r2=504857
==============================================================================
--- webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate.xsl (original)
+++ webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate.xsl Thu Feb 8 03:03:35 2007
@@ -40,6 +40,7 @@
<xsl:variable name="isType" select="@type"/>
<xsl:variable name="anon" select="@anon"/>
<xsl:variable name="union" select="@union"/>
+ <xsl:variable name="list" select="@list"/>
<xsl:variable name="nsuri" select="@nsuri"/>
<xsl:variable name="originalName" select="@originalName"/>
@@ -551,6 +552,41 @@
</xsl:if>
+ <xsl:if test="$list" >
+ <xsl:variable name="javaName"><xsl:value-of select="itemtype/@javaname"/></xsl:variable>
+ <xsl:variable name="varName">local<xsl:value-of select="itemtype/@javaname"/></xsl:variable>
+ <xsl:variable name="varType"><xsl:value-of select="itemtype/@type"/></xsl:variable>
+ <xsl:variable name="primitive"><xsl:value-of select="itemtype/@primitive"/></xsl:variable>
+
+ protected <xsl:value-of select="$varType"/>[] <xsl:value-of select="$varName"/>;
+
+ public <xsl:value-of select="$varType"/>[] get<xsl:value-of select="$javaName"/>(){
+ return <xsl:value-of select="$varName"/>;
+ }
+
+ public void set<xsl:value-of select="$javaName"/>(<xsl:value-of select="$varType"/>[] itemList){
+ this.<xsl:value-of select="$varName"/> = itemList;
+ }
+
+ public java.lang.String toString() {
+ java.lang.StringBuffer outString = new java.lang.StringBuffer();
+ if (<xsl:value-of select="$varName"/> != null){
+ for(int i = 0; i < <xsl:value-of select="$varName"/>.length;i++){
+ <xsl:choose>
+ <xsl:when test="$primitive">
+ outString.append(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(<xsl:value-of select="$varName"/>[i])).append(" ");
+ </xsl:when>
+ <xsl:otherwise>
+ outString.append(<xsl:value-of select="$varName"/>[i].toString()).append(" ");
+ </xsl:otherwise>
+ </xsl:choose>
+
+ }
+ }
+ return outString.toString().trim();
+ }
+ </xsl:if>
+
/**
* isReaderMTOMAware
* @return true if the reader supports MTOM
@@ -608,6 +644,7 @@
public void serialize(
javax.xml.stream.XMLStreamWriter xmlWriter) throws javax.xml.stream.XMLStreamException {
<xsl:choose>
+
<xsl:when test="$simple and $union">
// fist write the start element
java.lang.String namespace = parentQName.getNamespaceURI();
@@ -651,6 +688,46 @@
}
xmlWriter.writeEndElement();
</xsl:when>
+
+ <xsl:when test="$simple and $list">
+
+ <xsl:variable name="javaName"><xsl:value-of select="itemtype/@javaname"/></xsl:variable>
+ <xsl:variable name="varType"><xsl:value-of select="itemtype/@type"/></xsl:variable>
+
+ // first write the start element
+ java.lang.String namespace = parentQName.getNamespaceURI();
+ java.lang.String localName = parentQName.getLocalPart();
+
+ if (! namespace.equals("")) {
+ java.lang.String prefix = xmlWriter.getPrefix(namespace);
+
+ if (prefix == null) {
+ prefix = org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
+
+ xmlWriter.writeStartElement(prefix, localName, namespace);
+ xmlWriter.writeNamespace(prefix, namespace);
+ xmlWriter.setPrefix(prefix, namespace);
+
+ } else {
+ xmlWriter.writeStartElement(namespace, localName);
+ }
+
+ } else {
+ xmlWriter.writeStartElement(localName);
+ }
+
+ <xsl:choose>
+ <xsl:when test="$varType='javax.xml.namespace.QName'">
+ writeQNames(local<xsl:value-of select="$javaName"/>,xmlWriter);
+ </xsl:when>
+ <xsl:otherwise>
+ xmlWriter.writeCharacters(<xsl:value-of select="$name"/>.this.toString());
+ </xsl:otherwise>
+ </xsl:choose>
+
+ xmlWriter.writeEndElement();
+ </xsl:when>
+
<xsl:when test="@type or @anon">
<!-- For a type write the passed in QName first-->
@@ -1457,6 +1534,39 @@
}
}
+ private void writeQNames(javax.xml.namespace.QName[] qnames,
+ javax.xml.stream.XMLStreamWriter xmlWriter) throws javax.xml.stream.XMLStreamException {
+
+ if (qnames != null) {
+ // we have to store this data until last moment since it is not possible to write any
+ // namespace data after writing the charactor data
+ java.lang.StringBuffer stringToWrite = new java.lang.StringBuffer();
+ java.lang.String namespaceURI = null;
+ java.lang.String prefix = null;
+
+ for (int i = 0; i < qnames.length; i++) {
+ if (i > 0) {
+ stringToWrite.append(" ");
+ }
+ namespaceURI = qnames[i].getNamespaceURI();
+ if (namespaceURI != null) {
+ prefix = xmlWriter.getPrefix(namespaceURI);
+ if ((prefix == null) || (prefix.length() == 0)) {
+ prefix = org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix();
+ xmlWriter.writeNamespace(prefix, namespaceURI);
+ xmlWriter.setPrefix(prefix,namespaceURI);
+ }
+ stringToWrite.append(prefix).append(":").append(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(qnames[i]));
+ } else {
+ stringToWrite.append(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(qnames[i]));
+ }
+ }
+ xmlWriter.writeCharacters(stringToWrite.toString());
+ }
+
+ }
+
+
/**
* Register a namespace prefix
*/
@@ -1729,6 +1839,16 @@
},
null);
</xsl:when>
+
+ <xsl:when test="$list and $simple">
+ return new org.apache.axis2.databinding.utils.reader.ADBXMLStreamReaderImpl(MY_QNAME,
+ new java.lang.Object[]{
+ org.apache.axis2.databinding.utils.reader.ADBXMLStreamReader.ELEMENT_TEXT,
+ toString()
+ },
+ null);
+ </xsl:when>
+
<!-- Not a type and not anon. So it better be only one inclusion-->
<xsl:otherwise>
<!-- if the element is associated with a type, then its gonna be only one -->
@@ -1810,6 +1930,66 @@
}
</xsl:if>
+ <xsl:if test="$list and $simple">
+
+ <xsl:variable name="javaName"><xsl:value-of select="itemtype/@javaname"/></xsl:variable>
+ <xsl:variable name="varType"><xsl:value-of select="itemtype/@type"/></xsl:variable>
+ <xsl:variable name="ours"><xsl:value-of select="itemtype/@ours"/></xsl:variable>
+ <xsl:variable name="nsuri"><xsl:value-of select="itemtype/@nsuri"/></xsl:variable>
+ <xsl:variable name="originalName"><xsl:value-of select="itemtype/@originalName"/></xsl:variable>
+
+ public static <xsl:value-of select="$name"/> fromString(javax.xml.stream.XMLStreamReader xmlStreamReader, java.lang.String content) {
+
+ <xsl:value-of select="$name"/> object = new <xsl:value-of select="$name"/>();
+ java.lang.String[] values = content.split(" +");
+ <xsl:value-of select="$varType"/>[] objectValues = new <xsl:value-of select="$varType"/>[values.length];
+
+ <xsl:if test="$varType='javax.xml.namespace.QName'">
+ java.lang.String prefix = null;
+ java.lang.String namespace = null;
+ </xsl:if>
+
+ <xsl:if test="string-length(normalize-space($ours)) > 0">
+ java.lang.String valueContent = null;
+ java.lang.String prefix = null;
+ java.lang.String namespace = null;
+ </xsl:if>
+
+
+ try {
+ for (int i = 0; i < values.length; i++) {
+ <xsl:choose>
+ <xsl:when test="$varType='javax.xml.namespace.QName'">
+ prefix = values[i].substring(0,values[i].indexOf(":"));
+ namespace = xmlStreamReader.getNamespaceURI(prefix);
+ objectValues[i] = org.apache.axis2.databinding.utils.ConverterUtil.convertToQName(values[i],namespace);
+ </xsl:when>
+ <xsl:when test="string-length(normalize-space($ours)) > 0">
+ valueContent = values[i];
+ if (valueContent.indexOf(":") > 0){
+ prefix = valueContent.substring(0,valueContent.indexOf(":"));
+ namespace = xmlStreamReader.getNamespaceURI(prefix);
+ objectValues[i] = <xsl:value-of select="$varType"/>.Factory.fromString(valueContent,namespace);
+ } else {
+ objectValues[i] = <xsl:value-of select="$varType"/>.Factory.fromString(valueContent,"");
+ }
+ </xsl:when>
+ <xsl:otherwise>
+ objectValues[i] =
+ org.apache.axis2.databinding.utils.ConverterUtil.convertTo<xsl:value-of select="$javaName"/>(values[i]);
+ </xsl:otherwise>
+ </xsl:choose>
+
+ }
+ object.set<xsl:value-of select="$javaName"/>(objectValues);
+ return object;
+ } catch (java.lang.Exception e) {
+ throw new RuntimeException();
+ }
+
+ }
+ </xsl:if>
+
<xsl:for-each select="property">
<xsl:variable name="propertyType"><xsl:value-of select="@type"></xsl:value-of></xsl:variable>
<xsl:variable name="javaName"><xsl:value-of select="@javaname"></xsl:value-of></xsl:variable>
@@ -1934,7 +2114,7 @@
<xsl:choose>
<xsl:when test="$union">
java.lang.String nsUri = reader.getNamespaceContext().getNamespaceURI(nsPrefix);
- return <xsl:value-of select="$name"/>.Factory.fromString(reader,nsUri,type);
+ object = <xsl:value-of select="$name"/>.Factory.fromString(reader,nsUri,type);
</xsl:when>
<xsl:otherwise>
if (!"<xsl:value-of select="$originalName"/>".equals(type)){
@@ -1951,6 +2131,11 @@
}
</xsl:if>
+ <xsl:if test="$list">
+ java.lang.String content = reader.getElementText();
+ object = <xsl:value-of select="$name"/>.Factory.fromString(reader,content);
+ </xsl:if>
+
<!-- populate attributes here!!!. The attributes are part of an element, not part of a type -->
// Note all attributes that were handled. Used to differ normal attributes
// from anyAttributes.
@@ -2722,6 +2907,7 @@
} // end of while loop
</xsl:if>
</xsl:if>
+
} catch (javax.xml.stream.XMLStreamException e) {
Modified: webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/writer/JavaBeanWriter.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/writer/JavaBeanWriter.java?view=diff&rev=504857&r1=504856&r2=504857
==============================================================================
--- webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/writer/JavaBeanWriter.java (original)
+++ webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/writer/JavaBeanWriter.java Thu Feb 8 03:03:35 2007
@@ -92,13 +92,13 @@
public static final String EXTENSION_MAPPER_CLASSNAME = "ExtensionMapper";
// a list of externally identified QNames to be processed. This becomes
- // useful when only a list of external elements need to be processed
+ // useful when only a list of external elements need to be processed
- public static final String DEFAULT_CLASS_NAME = OMElement.class.getName();
- public static final String DEFAULT_CLASS_ARRAY_NAME = "org.apache.axiom.om.OMElement[]";
+ public static final String DEFAULT_CLASS_NAME = OMElement.class.getName();
+ public static final String DEFAULT_CLASS_ARRAY_NAME = "org.apache.axiom.om.OMElement[]";
- public static final String DEFAULT_ATTRIB_CLASS_NAME = OMAttribute.class.getName();
- public static final String DEFAULT_ATTRIB_ARRAY_CLASS_NAME = "org.apache.axiom.om.OMAttribute[]";
+ public static final String DEFAULT_ATTRIB_CLASS_NAME = OMAttribute.class.getName();
+ public static final String DEFAULT_ATTRIB_ARRAY_CLASS_NAME = "org.apache.axiom.om.OMAttribute[]";
/**
@@ -121,27 +121,26 @@
}
public String getDefaultClassName() {
- return DEFAULT_CLASS_NAME;
- }
-
- public String getDefaultClassArrayName() {
- return DEFAULT_CLASS_ARRAY_NAME;
- }
+ return DEFAULT_CLASS_NAME;
+ }
- public String getDefaultAttribClassName() {
- return DEFAULT_ATTRIB_CLASS_NAME;
- }
+ public String getDefaultClassArrayName() {
+ return DEFAULT_CLASS_ARRAY_NAME;
+ }
- public String getDefaultAttribArrayClassName() {
- return DEFAULT_ATTRIB_ARRAY_CLASS_NAME;
- }
+ public String getDefaultAttribClassName() {
+ return DEFAULT_ATTRIB_CLASS_NAME;
+ }
+ public String getDefaultAttribArrayClassName() {
+ return DEFAULT_ATTRIB_ARRAY_CLASS_NAME;
+ }
public void init(CompilerOptions options) throws SchemaCompilationException {
try {
- modelMap = new HashMap();
- ns2packageNameMap = new HashMap();
+ modelMap = new HashMap();
+ ns2packageNameMap = new HashMap();
initWithFile(options.getOutputLocation());
packageName = options.getPackageName();
@@ -522,6 +521,10 @@
XSLTUtils.addAttribute(model, "union", "yes", rootElt);
}
+ if (metainf.isList()) {
+ XSLTUtils.addAttribute(model, "list", "yes", rootElt);
+ }
+
if (metainf.isOrdered()) {
XSLTUtils.addAttribute(model, "ordered", "yes", rootElt);
}
@@ -530,13 +533,15 @@
XSLTUtils.addAttribute(model, "nillable", "yes", rootElt);
}
- //if the type is a smple union then we do not have properties to set
- //only thing we have to set is to add meber types
- if (metainf.isSimple() && metainf.isUnion()){
- populateMemberInfo(metainf,model,rootElt,typeMap);
- } else {
- // populate all the information
- populateInfo(metainf, model, rootElt, propertyNames, typeMap, false);
+ // populate all the information
+ populateInfo(metainf, model, rootElt, propertyNames, typeMap, false);
+
+ if (metainf.isSimple() && metainf.isUnion()) {
+ populateMemberInfo(metainf, model, rootElt, typeMap);
+ }
+
+ if (metainf.isSimple() && metainf.isList()) {
+ populateListInfo(metainf, model, rootElt, typeMap);
}
//////////////////////////////////////////////////////////
// System.out.println(DOM2Writer.nodeToString(rootElt));
@@ -545,17 +550,38 @@
return rootElt;
}
+ protected void populateListInfo(BeanWriterMetaInfoHolder metainf,
+ Document model,
+ Element rootElement,
+ Map typeMap) {
+
+ String javaName = makeUniqueJavaClassName(new ArrayList(), metainf.getItemTypeQName().getLocalPart());
+ Element itemType = XSLTUtils.addChildElement(model, "itemtype", rootElement);
+ XSLTUtils.addAttribute(model, "type", metainf.getItemTypeClassName(), itemType);
+ XSLTUtils.addAttribute(model, "nsuri", metainf.getItemTypeQName().getNamespaceURI(), itemType);
+ XSLTUtils.addAttribute(model, "originalName", metainf.getItemTypeQName().getLocalPart(), itemType);
+ XSLTUtils.addAttribute(model, "javaname", javaName, itemType);
+
+ if (typeMap.containsKey(metainf.getItemTypeQName())) {
+ XSLTUtils.addAttribute(model, "ours", "true", itemType);
+ }
+ if (PrimitiveTypeFinder.isPrimitive(metainf.getItemTypeClassName())) {
+ XSLTUtils.addAttribute(model, "primitive", "yes", itemType);
+ }
+
+ }
+
protected void populateMemberInfo(BeanWriterMetaInfoHolder metainf,
Document model,
Element rootElement,
- Map typeMap){
+ Map typeMap) {
Map memberTypes = metainf.getMemberTypes();
QName memberQName;
- for (Iterator iter = memberTypes.keySet().iterator();iter.hasNext();){
+ for (Iterator iter = memberTypes.keySet().iterator(); iter.hasNext();) {
memberQName = (QName) iter.next();
String memberClass = (String) memberTypes.get(memberQName);
- if (PrimitiveTypeFinder.isPrimitive(memberClass)){
- memberClass = PrimitiveTypeWrapper.getWrapper(memberClass);
+ if (PrimitiveTypeFinder.isPrimitive(memberClass)) {
+ memberClass = PrimitiveTypeWrapper.getWrapper(memberClass);
}
// add member type element
@@ -563,8 +589,8 @@
XSLTUtils.addAttribute(model, "type", memberClass, memberType);
XSLTUtils.addAttribute(model, "nsuri", memberQName.getNamespaceURI(), memberType);
XSLTUtils.addAttribute(model, "originalName", memberQName.getLocalPart(), memberType);
- if (typeMap.containsKey(memberQName)){
- XSLTUtils.addAttribute(model, "ours", "true", memberType);
+ if (typeMap.containsKey(memberQName)) {
+ XSLTUtils.addAttribute(model, "ours", "true", memberType);
}
}
@@ -584,7 +610,8 @@
// we should add parent class details only if it is
// an extension or simple restriction
// should not in complex restrictions
- if (metainf.getParent() != null && (!metainf.isRestriction() || (metainf.isRestriction() && metainf.isSimple()))) {
+ if (metainf.getParent() != null && (!metainf.isRestriction() || (metainf.isRestriction() && metainf.isSimple())))
+ {
populateInfo(metainf.getParent(), model, rootElt, propertyNames,
typeMap, true);
}
@@ -642,7 +669,7 @@
// then we have to generate a new name for this
if (parentMetaInf != null && metainf.isRestriction() && !missingQNames.contains(name) &&
(parentMetaInf.getArrayStatusForQName(name) && !metainf.getArrayStatusForQName(name))) {
- javaName = makeUniqueJavaClassName(propertyNames, xmlName);
+ javaName = makeUniqueJavaClassName(propertyNames, xmlName);
}
XSLTUtils.addAttribute(model, "javaname", javaName, property);
@@ -676,7 +703,8 @@
XSLTUtils.addAttribute(model, "rewrite", "yes", property);
XSLTUtils.addAttribute(model, "occuranceChanged", "yes", property);
} else if (metainf.isRestriction() && !missingQNames.contains(name) &&
- (minOccursChanged(name, missingQNames, metainf) || maxOccursChanged(name, missingQNames, metainf))) {
+ (minOccursChanged(name, missingQNames, metainf) || maxOccursChanged(name, missingQNames, metainf)))
+ {
XSLTUtils.addAttribute(model, "restricted", "yes", property);
XSLTUtils.addAttribute(model, "occuranceChanged", "yes", property);
@@ -694,24 +722,24 @@
XSLTUtils.addAttribute(model, "inherited", "yes", property);
}
- if ((parentMetaInf != null) && metainf.isRestriction() && missingQNames.contains(name)){
+ if ((parentMetaInf != null) && metainf.isRestriction() && missingQNames.contains(name)) {
// this element details should be there with the parent meta Inf
addAttributesToProperty(
- parentMetaInf,
- name,
- model,
- property,
- typeMap,
- javaClassNameForElement);
+ parentMetaInf,
+ name,
+ model,
+ property,
+ typeMap,
+ javaClassNameForElement);
} else {
- addAttributesToProperty(
- metainf,
- name,
- model,
- property,
- typeMap,
- javaClassNameForElement);
+ addAttributesToProperty(
+ metainf,
+ name,
+ model,
+ property,
+ typeMap,
+ javaClassNameForElement);
}
} // end of foo
@@ -942,11 +970,13 @@
if (!javaClassForParentElement.equals(javaClassForElement)) {
if (javaClassForParentElement.endsWith("[]")) {
- if ((javaClassForParentElement.substring(0, javaClassForParentElement.indexOf('['))).equals(javaClassForElement)) {
+ if ((javaClassForParentElement.substring(0, javaClassForParentElement.indexOf('['))).equals(javaClassForElement))
+ {
continue;
}
} else if (javaClassForElement.endsWith("[]")) {
- if ((javaClassForElement.substring(0, javaClassForElement.indexOf('['))).equals(javaClassForParentElement)) {
+ if ((javaClassForElement.substring(0, javaClassForElement.indexOf('['))).equals(javaClassForParentElement))
+ {
continue;
}
} else {
Added: webservices/axis2/trunk/java/modules/adb-codegen/test-resources/testsuite/choice.xsd
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/adb-codegen/test-resources/testsuite/choice.xsd?view=auto&rev=504857
==============================================================================
--- webservices/axis2/trunk/java/modules/adb-codegen/test-resources/testsuite/choice.xsd (added)
+++ webservices/axis2/trunk/java/modules/adb-codegen/test-resources/testsuite/choice.xsd Thu Feb 8 03:03:35 2007
@@ -0,0 +1,16 @@
+<schema elementFormDefault="qualified"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns="http://www.w3.org/2001/XMLSchema"
+ xmlns:tns="org.apache.axis2.test"
+ targetNamespace="org.apache.axis2.test">
+
+ <xs:element name="TestChoise">
+ <xs:complexType>
+ <xs:choice>
+ <xs:element name="choice1" type="xs:string"/>
+ <xs:element name="choice2" type="xs:int"/>
+ </xs:choice>
+ </xs:complexType>
+ </xs:element>
+
+</schema>
\ No newline at end of file
Added: webservices/axis2/trunk/java/modules/adb-codegen/test-resources/testsuite/list.xsd
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/adb-codegen/test-resources/testsuite/list.xsd?view=auto&rev=504857
==============================================================================
--- webservices/axis2/trunk/java/modules/adb-codegen/test-resources/testsuite/list.xsd (added)
+++ webservices/axis2/trunk/java/modules/adb-codegen/test-resources/testsuite/list.xsd Thu Feb 8 03:03:35 2007
@@ -0,0 +1,31 @@
+<schema elementFormDefault="qualified"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns="http://www.w3.org/2001/XMLSchema"
+ xmlns:tns="org.apache.axis2.test"
+ targetNamespace="org.apache.axis2.test">
+
+ <xs:simpleType name="TestListQName">
+ <xs:list itemType="xs:QName"></xs:list>
+ </xs:simpleType>
+
+ <xs:element name="TestListQNameElement" type="tns:TestListQName"/>
+
+ <xs:simpleType name="TestListString">
+ <xs:list itemType="xs:string"></xs:list>
+ </xs:simpleType>
+
+ <xs:element name="TestListStringElement" type="tns:TestListString"/>
+
+ <xs:simpleType name="TestString">
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[A-z]*"></xs:pattern>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="TestListOurs">
+ <xs:list itemType="tns:TestString"/>
+ </xs:simpleType>
+
+ <xs:element name="TestListOursElement" type="tns:TestListOurs"/>
+
+</schema>
\ No newline at end of file
Added: webservices/axis2/trunk/java/modules/adb-codegen/test/org/apache/axis2/schema/choice/ChiceTest.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/adb-codegen/test/org/apache/axis2/schema/choice/ChiceTest.java?view=auto&rev=504857
==============================================================================
--- webservices/axis2/trunk/java/modules/adb-codegen/test/org/apache/axis2/schema/choice/ChiceTest.java (added)
+++ webservices/axis2/trunk/java/modules/adb-codegen/test/org/apache/axis2/schema/choice/ChiceTest.java Thu Feb 8 03:03:35 2007
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.axis2.schema.choice;
+
+import junit.framework.TestCase;
+import test.axis2.apache.org.TestChoise;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.util.StAXUtils;
+
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import java.io.ByteArrayInputStream;
+
+
+public class ChiceTest extends TestCase {
+
+ public void testChoice(){
+ TestChoise testChoise = new TestChoise();
+ testChoise.setChoice1("test 2");
+ testChoise.setChoice2(5);
+
+ OMElement omElement = testChoise.getOMElement(TestChoise.MY_QNAME, OMAbstractFactory.getOMFactory());
+ try {
+ String omElementString = omElement.toStringWithConsume();
+ System.out.println("OM Element ==> " + omElementString);
+ XMLStreamReader xmlReader = StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+ TestChoise newTestChoice = TestChoise.Factory.parse(xmlReader);
+ assertEquals(5,newTestChoice.getChoice2());
+ } catch (Exception e) {
+ assertFalse(true);
+ }
+ }
+}
Added: webservices/axis2/trunk/java/modules/adb-codegen/test/org/apache/axis2/schema/list/ListTest.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/adb-codegen/test/org/apache/axis2/schema/list/ListTest.java?view=auto&rev=504857
==============================================================================
--- webservices/axis2/trunk/java/modules/adb-codegen/test/org/apache/axis2/schema/list/ListTest.java (added)
+++ webservices/axis2/trunk/java/modules/adb-codegen/test/org/apache/axis2/schema/list/ListTest.java Thu Feb 8 03:03:35 2007
@@ -0,0 +1,104 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.axis2.schema.list;
+
+import junit.framework.TestCase;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.util.StAXUtils;
+import test.axis2.apache.org.*;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamReader;
+import java.io.ByteArrayInputStream;
+
+
+public class ListTest extends TestCase {
+
+
+ public void testListString(){
+
+ TestListStringElement testListStringElement = new TestListStringElement();
+ TestListString testListString = new TestListString();
+ testListStringElement.setTestListStringElement(testListString);
+ testListString.setString(new String[]{"string1","string2"});
+
+ OMElement omElement = testListStringElement.getOMElement(TestListStringElement.MY_QNAME,
+ OMAbstractFactory.getOMFactory());
+ try {
+ String omElementString = omElement.toStringWithConsume();
+ System.out.println("OM Element ==> " + omElementString);
+ XMLStreamReader xmlReader = StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+ TestListStringElement result = TestListStringElement.Factory.parse(xmlReader);
+ assertEquals(testListString.toString(),result.getTestListStringElement().toString());
+ } catch (Exception e) {
+ assertFalse(true);
+ }
+
+ }
+
+ public void testListQName(){
+
+ TestListQNameElement testListQNameElement = new TestListQNameElement();
+ TestListQName testListQName = new TestListQName();
+ testListQName.setQName(new QName[]{new QName("http://www.google.com","test1"),
+ new QName("http://www.google.com","test2"),
+ new QName("http://www.google","test3")});
+ testListQNameElement.setTestListQNameElement(testListQName);
+
+ OMElement omElement = testListQNameElement.getOMElement(TestListQNameElement.MY_QNAME,OMAbstractFactory.getOMFactory());
+ try {
+ String omElementString = omElement.toStringWithConsume();
+ System.out.println("OM Element ==> " + omElementString);
+ XMLStreamReader xmlReader = StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+ TestListQNameElement result = TestListQNameElement.Factory.parse(xmlReader);
+ assertEquals(result.getTestListQNameElement().getQName()[0],testListQName.getQName()[0]);
+ assertEquals(result.getTestListQNameElement().getQName()[1],testListQName.getQName()[1]);
+ assertEquals(result.getTestListQNameElement().getQName()[2],testListQName.getQName()[2]);
+ } catch (Exception e) {
+ e.printStackTrace();
+ assertFalse(true);
+ }
+ }
+
+ public void testListOurs(){
+
+ TestListOursElement testListOursElement = new TestListOursElement();
+ TestListOurs testListOurs = new TestListOurs();
+ testListOursElement.setTestListOursElement(testListOurs);
+ TestString testString1 = new TestString();
+ testString1.setTestString("test");
+ TestString testString2 = new TestString();
+ testString2.setTestString("test");
+ TestString testString3 = new TestString();
+ testString3.setTestString("test");
+ testListOurs.setTestString(new TestString[]{testString1,testString2,testString3});
+
+ OMElement omElement = testListOursElement.getOMElement(TestListOursElement.MY_QNAME,OMAbstractFactory.getOMFactory());
+ try {
+ String omElementString = omElement.toStringWithConsume();
+ System.out.println("OM Element ==> " + omElementString);
+ XMLStreamReader xmlReader = StAXUtils.createXMLStreamReader(new ByteArrayInputStream(omElementString.getBytes()));
+ TestListOursElement result = TestListOursElement.Factory.parse(xmlReader);
+ assertEquals(result.getTestListOursElement().getTestString()[0].getTestString(),testString1.getTestString());
+ assertEquals(result.getTestListOursElement().getTestString()[1].getTestString(),testString2.getTestString());
+ assertEquals(result.getTestListOursElement().getTestString()[2].getTestString(),testString3.getTestString());
+ } catch (Exception e) {
+ e.printStackTrace();
+ assertFalse(true);
+ }
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org