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 aj...@apache.org on 2005/10/11 11:29:35 UTC
svn commit: r312845 - in
/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema:
./ template/ util/
Author: ajith
Date: Tue Oct 11 02:29:11 2005
New Revision: 312845
URL: http://svn.apache.org/viewcvs?rev=312845&view=rev
Log:
1. updated the bean template - Not yet complete!!
2. did some optimization/refactored the code
Added:
webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/SchemaConstants.java
- copied, changed from r312658, webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/Constants.java
webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/util/
webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/util/ConverterUtil.java
Removed:
webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/Constants.java
Modified:
webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/BeanWriterMetaInfoHolder.java
webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/JavaBeanWriter.java
webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/SchemaCompiler.java
webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/TypeMap.java
webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/template/BeanTemplate.xsl
Modified: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/BeanWriterMetaInfoHolder.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/BeanWriterMetaInfoHolder.java?rev=312845&r1=312844&r2=312845&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/BeanWriterMetaInfoHolder.java (original)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/BeanWriterMetaInfoHolder.java Tue Oct 11 02:29:11 2005
@@ -1,4 +1,11 @@
package org.apache.axis2.databinding.schema;
+
+import sun.text.CompactShortArray;
+
+import javax.xml.namespace.QName;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.Iterator;
/*
* Copyright 2004,2005 The Apache Software Foundation.
*
@@ -24,6 +31,8 @@
private boolean ordered = false;
private boolean extension = false;
private String extensionClassName = "";
+ private Map elementToSchemaQNameMap = new HashMap();
+ private Map elementToJavaClassMap = new HashMap();
public String getExtensionClassName() {
return extensionClassName;
@@ -49,5 +58,28 @@
this.ordered = ordered;
}
+ public void addElementInfo(QName eltQName,QName eltSchemaName,String javaClassName){
+ this.elementToJavaClassMap.put(eltQName,javaClassName);
+ this.elementToSchemaQNameMap.put(eltQName,eltSchemaName);
+
+ }
+
+ public QName getSchemaQNameForElement(QName eltQName){
+ return (QName)this.elementToSchemaQNameMap.get(eltQName);
+ }
+
+ public String getJavaClassNameForElement(QName eltQName){
+ return (String)this.elementToJavaClassMap.get(eltQName);
+ }
+
+ public void clearTables(){
+ this.elementToJavaClassMap.clear();
+ this.elementToSchemaQNameMap.clear();
+
+ }
+
+ public Iterator getElementQNameIterator(){
+ return elementToJavaClassMap.keySet().iterator();
+ }
}
Modified: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/JavaBeanWriter.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/JavaBeanWriter.java?rev=312845&r1=312844&r2=312845&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/JavaBeanWriter.java (original)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/JavaBeanWriter.java Tue Oct 11 02:29:11 2005
@@ -1,10 +1,7 @@
package org.apache.axis2.databinding.schema;
import org.apache.ws.commons.schema.XmlSchemaComplexType;
-import org.apache.axis2.util.FileWriter;
-import org.apache.axis2.util.URLProcessor;
-import org.apache.axis2.util.XSLTUtils;
-import org.apache.axis2.util.XSLTTemplateProcessor;
+import org.apache.axis2.util.*;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
@@ -12,14 +9,10 @@
import javax.xml.namespace.QName;
import javax.xml.transform.Templates;
import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.Source;
import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamSource;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import java.util.Map;
import java.util.Iterator;
+import java.util.Map;
import java.io.*;
/*
@@ -58,7 +51,7 @@
}
- public void write(XmlSchemaComplexType complexType, Map typeMap,Map currentTypeMap,BeanWriterMetaInfoHolder metainf) throws SchemaCompilationException{
+ public void write(XmlSchemaComplexType complexType, Map typeMap, BeanWriterMetaInfoHolder metainf) throws SchemaCompilationException{
try {
//determine the package for this type.
@@ -77,23 +70,25 @@
Element rootElt = XSLTUtils.addChildElement(model,"bean",model);
XSLTUtils.addAttribute(model,"name",className,rootElt);
XSLTUtils.addAttribute(model,"package",packageName,rootElt);
+ XSLTUtils.addAttribute(model,"nsuri",qName.getNamespaceURI(),rootElt);
+ XSLTUtils.addAttribute(model,"nsprefix",qName.getPrefix(),rootElt);
if (metainf.isExtension()){
- XSLTUtils.addAttribute(model,"extension",metainf.getExtensionClassName(),rootElt);
+ XSLTUtils.addAttribute(model,"extension",metainf.getExtensionClassName(),rootElt);
}
// go in the loop and add the part elements
- if (currentTypeMap != null && !currentTypeMap.isEmpty()){
-
- Iterator it = currentTypeMap.keySet().iterator();
- QName name;
- while (it.hasNext()) {
- Element property = XSLTUtils.addChildElement(model,"property",rootElt);
- name = (QName)it.next();
- XSLTUtils.addAttribute(model,"name",name.getLocalPart(),property);
- XSLTUtils.addAttribute(model,"type",currentTypeMap.get(name).toString(),property);
+ Iterator qNameIterator = metainf.getElementQNameIterator();
+ QName name;
+ while (qNameIterator.hasNext()) {
+ Element property = XSLTUtils.addChildElement(model,"property",rootElt);
+ name = (QName)qNameIterator.next();
+ XSLTUtils.addAttribute(model,"name",name.getLocalPart(),property);
+ XSLTUtils.addAttribute(model,"type",metainf.getJavaClassNameForElement(name),property);
+ if (typeMap.containsKey(metainf.getSchemaQNameForElement(name))){
+ XSLTUtils.addAttribute(model,"ours","yes",property); //todo introduce a better name for this
}
+
}
- //add the metainf
//create the file
OutputStream out = createOutFile(packageName,className);
@@ -133,7 +128,7 @@
}
- /**
+ /**
* Creates the output file
*
* @param packageName
@@ -141,15 +136,15 @@
* @throws Exception
*/
private OutputStream createOutFile(String packageName, String fileName) throws Exception {
- File outputFile = FileWriter.createClassFile(this.rootDir,
+ File outputFile = org.apache.axis2.util.FileWriter.createClassFile(this.rootDir,
packageName,
fileName,
".java");
- return new FileOutputStream(outputFile);
+ return new FileOutputStream(outputFile);
}
- /**
+ /**
* Writes the output file
*
* @param documentStream
@@ -157,11 +152,11 @@
*/
private void parse(Document doc,OutputStream outStream) throws Exception {
- XSLTTemplateProcessor.parse(outStream,
- doc,
- this.templateCache.newTransformer());
- outStream.flush();
- outStream.close();
+ XSLTTemplateProcessor.parse(outStream,
+ doc,
+ this.templateCache.newTransformer());
+ outStream.flush();
+ outStream.close();
}
}
Modified: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/SchemaCompiler.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/SchemaCompiler.java?rev=312845&r1=312844&r2=312845&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/SchemaCompiler.java (original)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/SchemaCompiler.java Tue Oct 11 02:29:11 2005
@@ -1,7 +1,6 @@
package org.apache.axis2.databinding.schema;
import org.apache.ws.commons.schema.*;
-import org.apache.axis2.wsdl.codegen.CodeGenerationException;
import org.apache.axis2.util.URLProcessor;
import javax.xml.namespace.QName;
@@ -99,7 +98,6 @@
processElement((XmlSchemaElement)xmlSchemaElementIterator.next());
}
- //System.out.println("processedTypemap = " + processedTypemap);
}
/**
@@ -142,18 +140,17 @@
//
XmlSchemaParticle particle = complexType.getParticle();
- Map elementMap = new HashMap();
BeanWriterMetaInfoHolder metaInfHolder = new BeanWriterMetaInfoHolder();
if (particle!=null){
//Process the particle
- processParticle(particle, elementMap,metaInfHolder);
+ processParticle(particle, metaInfHolder);
}else{
XmlSchemaContentModel contentModel = complexType.getContentModel();
if (contentModel!=null){
XmlSchemaContent content = (contentModel).getContent();
if (content instanceof XmlSchemaComplexContentExtension){
XmlSchemaComplexContentExtension xmlSchemaComplexContentExtension = (XmlSchemaComplexContentExtension) content;
- processParticle(xmlSchemaComplexContentExtension.getParticle(),elementMap,metaInfHolder);
+ processParticle(xmlSchemaComplexContentExtension.getParticle(),metaInfHolder);
metaInfHolder.setExtension(true);
metaInfHolder.setExtensionClassName(
getJavaClassNameFromComplexTypeQName(
@@ -165,19 +162,15 @@
}
//write the class. This type mapping would have been populated right now
- writer.write(complexType,processedTypemap,elementMap,metaInfHolder);
+ writer.write(complexType,processedTypemap,metaInfHolder);
processedTypemap.put(complexType.getQName(),"");
-
-
-
//populate the type mapping with the elements
}
private void processParticle(XmlSchemaParticle particle, //particle being processed
- Map elementMap, //type map for the current element
- BeanWriterMetaInfoHolder metainfHolder // metainf holder
+ BeanWriterMetaInfoHolder metainfHolder // metainf holder
) throws SchemaCompilationException {
if (particle instanceof XmlSchemaSequence ){
XmlSchemaObjectCollection items = ((XmlSchemaSequence)particle).getItems();
@@ -192,15 +185,19 @@
QName schemaTypeQName = xsElt.getSchemaType().getQName();
Class clazz = (Class)baseSchemaTypeMap.get(schemaTypeQName);
if (clazz!=null){
- elementMap.put(xsElt.getQName(),clazz.getName());
+ metainfHolder.addElementInfo(xsElt.getQName(),
+ xsElt.getSchemaTypeName()
+ ,clazz.getName());
}else{
- elementMap.put(xsElt.getQName(),getJavaClassNameFromComplexTypeQName(schemaTypeQName));
+ metainfHolder.addElementInfo(xsElt.getQName(),
+ xsElt.getSchemaTypeName()
+ ,getJavaClassNameFromComplexTypeQName(schemaTypeQName));
}
}else if (item instanceof XmlSchemaComplexContent){
// process the extension
XmlSchemaContent content = ((XmlSchemaComplexContent)item).getContent();
if (content instanceof XmlSchemaComplexContentExtension){
- processParticle(((XmlSchemaComplexContentExtension)content).getParticle(),elementMap,metainfHolder);
+ processParticle(((XmlSchemaComplexContentExtension)content).getParticle(),metainfHolder);
}else if (content instanceof XmlSchemaComplexContentRestriction){
//handle complex restriction
}
Copied: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/SchemaConstants.java (from r312658, webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/Constants.java)
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/SchemaConstants.java?p2=webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/SchemaConstants.java&p1=webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/Constants.java&r1=312658&r2=312845&rev=312845&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/Constants.java (original)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/SchemaConstants.java Tue Oct 11 02:29:11 2005
@@ -16,7 +16,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-public class Constants{
+public class SchemaConstants {
public static final String URI_DEFAULT_SCHEMA_XSD = "http://www.w3.org/2001/XMLSchema";
public static final QName XSD_STRING = new QName(URI_DEFAULT_SCHEMA_XSD, "string");
public static final QName XSD_BOOLEAN = new QName(URI_DEFAULT_SCHEMA_XSD, "boolean");
Modified: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/TypeMap.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/TypeMap.java?rev=312845&r1=312844&r2=312845&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/TypeMap.java (original)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/TypeMap.java Tue Oct 11 02:29:11 2005
@@ -29,27 +29,27 @@
static{
// If SOAP 1.1 over the wire, map wrapper classes to XSD primitives.
- addTypemapping(Constants.XSD_STRING, java.lang.String.class);
- addTypemapping(Constants.XSD_BOOLEAN, java.lang.Boolean.class);
- addTypemapping(Constants.XSD_DOUBLE, java.lang.Double.class);
- addTypemapping(Constants.XSD_FLOAT, java.lang.Float.class);
- addTypemapping(Constants.XSD_INT, java.lang.Integer.class);
- addTypemapping(Constants.XSD_INTEGER, java.math.BigInteger.class
+ addTypemapping(SchemaConstants.XSD_STRING, java.lang.String.class);
+ addTypemapping(SchemaConstants.XSD_BOOLEAN, java.lang.Boolean.class);
+ addTypemapping(SchemaConstants.XSD_DOUBLE, java.lang.Double.class);
+ addTypemapping(SchemaConstants.XSD_FLOAT, java.lang.Float.class);
+ addTypemapping(SchemaConstants.XSD_INT, java.lang.Integer.class);
+ addTypemapping(SchemaConstants.XSD_INTEGER, java.math.BigInteger.class
);
- addTypemapping(Constants.XSD_DECIMAL, java.math.BigDecimal.class
+ addTypemapping(SchemaConstants.XSD_DECIMAL, java.math.BigDecimal.class
);
- addTypemapping(Constants.XSD_LONG, java.lang.Long.class);
- addTypemapping(Constants.XSD_SHORT, java.lang.Short.class);
- addTypemapping(Constants.XSD_BYTE, java.lang.Byte.class);
+ addTypemapping(SchemaConstants.XSD_LONG, java.lang.Long.class);
+ addTypemapping(SchemaConstants.XSD_SHORT, java.lang.Short.class);
+ addTypemapping(SchemaConstants.XSD_BYTE, java.lang.Byte.class);
// The XSD Primitives are mapped to java primitives.
- addTypemapping(Constants.XSD_BOOLEAN, boolean.class);
- addTypemapping(Constants.XSD_DOUBLE, double.class);
- addTypemapping(Constants.XSD_FLOAT, float.class);
- addTypemapping(Constants.XSD_INT, int.class);
- addTypemapping(Constants.XSD_LONG, long.class);
- addTypemapping(Constants.XSD_SHORT, short.class);
- addTypemapping(Constants.XSD_BYTE, byte.class);
+ addTypemapping(SchemaConstants.XSD_BOOLEAN, boolean.class);
+ addTypemapping(SchemaConstants.XSD_DOUBLE, double.class);
+ addTypemapping(SchemaConstants.XSD_FLOAT, float.class);
+ addTypemapping(SchemaConstants.XSD_INT, int.class);
+ addTypemapping(SchemaConstants.XSD_LONG, long.class);
+ addTypemapping(SchemaConstants.XSD_SHORT, short.class);
+ addTypemapping(SchemaConstants.XSD_BYTE, byte.class);
}
private static void addTypemapping(QName name,Class clazz) {
Modified: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/template/BeanTemplate.xsl
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/template/BeanTemplate.xsl?rev=312845&r1=312844&r2=312845&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/template/BeanTemplate.xsl (original)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/template/BeanTemplate.xsl Tue Oct 11 02:29:11 2005
@@ -2,14 +2,19 @@
<xsl:output method="text"/>
<xsl:template match="/bean">
package <xsl:value-of select="@package"/>;
-
+ <xsl:variable name="name"><xsl:value-of select="@name"/></xsl:variable>
/**
* Auto generated bean class by the Axis code generator
*/
- public class <xsl:value-of select="@name"/> <xsl:if test="@extension"> extends <xsl:value-of select="@extension"/></xsl:if>{
+ public class <xsl:value-of select="$name"/> <xsl:if test="@extension"> extends <xsl:value-of select="@extension"/></xsl:if>
+ implements org.apache.axis2.databinding.ADBBean{
+ private static final javax.xml.namespace.QName qName = new javax.xml.namespace.QName(
+ "<xsl:value-of select="@nsuri"/>",
+ "<xsl:value-of select="$name"/>",
+ "<xsl:value-of select="@nsprefix"/>");
<xsl:for-each select="property">
<xsl:variable name="propertyType"><xsl:value-of select="@type"></xsl:value-of></xsl:variable>
@@ -35,6 +40,31 @@
this.local<xsl:value-of select="$propertyName"/>=param<xsl:value-of select="$propertyName"/>;
}
</xsl:for-each>
+
+ /**
+ * databinding method to get an XML representation of this object
+ * Note - this is not complete
+ */
+ public javax.xml.stream.XMLStreamReader getPullParser(){
+
+ java.util.List list = new java.util.ArrayList();
+ <xsl:for-each select="property">
+ <xsl:variable name="propertyName"><xsl:value-of select="@name"></xsl:value-of></xsl:variable>
+ list.add(org.apache.axis2.databinding.schema.util.ConverterUtil.convertToObject(local<xsl:value-of select="$propertyName"></xsl:value-of>));
+ </xsl:for-each>
+
+ return null;
+
+ }
+
+ /**
+ * static method to create the object
+ * Note - This is not complete
+ */
+ public static <xsl:value-of select="$name"/> parse(javax.xml.stream.XMLStreamReader reader){
+ return new <xsl:value-of select="$name"/>();
+ }
+
}
</xsl:template>
</xsl:stylesheet>
Added: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/util/ConverterUtil.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/util/ConverterUtil.java?rev=312845&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/util/ConverterUtil.java (added)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/databinding/schema/util/ConverterUtil.java Tue Oct 11 02:29:11 2005
@@ -0,0 +1,37 @@
+package org.apache.axis2.databinding.schema.util;
+/*
+ * 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.
+ */
+
+public class ConverterUtil {
+
+ public static Object convertToObject(int i){
+ return new Integer(i);
+ }
+
+ public static Object convertToObject(float i){
+ return new Float(i);
+ }
+
+ public static Object convertToObject(long i){
+ return new Long(i);
+ }
+
+ //the pass through method
+ public static Object convertToObject(Object o){
+ return o;
+ }
+ //add the others here
+}