You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by aj...@apache.org on 2005/12/22 07:58:41 UTC
svn commit: r358514 - in /webservices/axis2/trunk/java: ./
modules/codegen/src/org/apache/axis2/schema/
modules/codegen/src/org/apache/axis2/schema/writer/
modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/
modules/codegen/src/org/apache/axis...
Author: ajith
Date: Wed Dec 21 22:58:22 2005
New Revision: 358514
URL: http://svn.apache.org/viewcvs?rev=358514&view=rev
Log:
1. Updated the schemacompiler to push out a model map when asked not to write classes - halfway through the change to implement a single class stub
2. Updated the maven build to copy adb classes into the generated jar
3. Updated the ADB supporter template slightly
Removed:
webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/java/DefaultDataBindingSupporterTemplate.xsl
Modified:
webservices/axis2/trunk/java/maven.xml
webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/schema/CompilerOptions.java
webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/schema/SchemaCompiler.java
webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/schema/XSD2Java.java
webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/schema/writer/BeanWriter.java
webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/schema/writer/JavaBeanWriter.java
webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/SimpleDBExtension.java
webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/java/InterfaceImplementationTemplate.xsl
webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/java/MessageReceiverTemplate.xsl
Modified: webservices/axis2/trunk/java/maven.xml
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/maven.xml?rev=358514&r1=358513&r2=358514&view=diff
==============================================================================
--- webservices/axis2/trunk/java/maven.xml (original)
+++ webservices/axis2/trunk/java/maven.xml Wed Dec 21 22:58:22 2005
@@ -327,6 +327,7 @@
<fileset dir="modules/common/target/classes"/>
<fileset dir="modules/addressing/target/classes"/>
<fileset dir="modules/codegen/target/classes"/>
+ <fileset dir="modules/adb/target/classes"/>
<fileset dir="modules/addressing/target/">
<include name="modules/addressing.mar"/>
</fileset>
@@ -504,6 +505,7 @@
<ant:pathelement location="modules/tool/src"/>
<ant:pathelement location="modules/wsdl/src"/>
<ant:pathelement location="modules/xml/src"/>
+ <ant:pathelement location="modules/adb/src"/>
</ant:sourcepath>
<ant:classpath>
<ant:fileset dir="target/lib">
Modified: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/schema/CompilerOptions.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/schema/CompilerOptions.java?rev=358514&r1=358513&r2=358514&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/schema/CompilerOptions.java (original)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/schema/CompilerOptions.java Wed Dec 21 22:58:22 2005
@@ -36,7 +36,7 @@
/**
* This flag tells the databinder to either write the output or
* not. if this is set to true it will write the output at once.
- * if not ???
+ * if not the outputter will populate the
*/
private boolean writeOutput = false;
Modified: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/schema/SchemaCompiler.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/schema/SchemaCompiler.java?rev=358514&r1=358513&r2=358514&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/schema/SchemaCompiler.java (original)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/schema/SchemaCompiler.java Wed Dec 21 22:58:22 2005
@@ -78,6 +78,10 @@
return processedElementMap;
}
+ public Map getProcessedModelMap() {
+ return writer.getModelMap();
+ }
+
/**
* Constructor - Accepts a options bean
*
Modified: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/schema/XSD2Java.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/schema/XSD2Java.java?rev=358514&r1=358513&r2=358514&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/schema/XSD2Java.java (original)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/schema/XSD2Java.java Wed Dec 21 22:58:22 2005
@@ -74,7 +74,8 @@
compilerOptions.setOutputLocation(outputFolder);
//##############################
// compilerOptions.setPackageName("adb");
- // compilerOptions.setWrapClasses(true);
+ compilerOptions.setWrapClasses(false);
+ compilerOptions.setWriteOutput(true);
//##############################
SchemaCompiler compiler = new SchemaCompiler(compilerOptions);
Modified: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/schema/writer/BeanWriter.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/schema/writer/BeanWriter.java?rev=358514&r1=358513&r2=358514&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/schema/writer/BeanWriter.java (original)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/schema/writer/BeanWriter.java Wed Dec 21 22:58:22 2005
@@ -47,6 +47,12 @@
public void writeBatch() throws SchemaCompilationException;
/**
+ * Gets a map of models. this is useful for tight integrations where the internal workings
+ * of the schema compiler may be exposed.
+ */
+ public Map getModelMap();
+
+ /**
* Write a complex type
*
* @param complexType
Modified: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/schema/writer/JavaBeanWriter.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/schema/writer/JavaBeanWriter.java?rev=358514&r1=358513&r2=358514&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/schema/writer/JavaBeanWriter.java (original)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/schema/writer/JavaBeanWriter.java Wed Dec 21 22:58:22 2005
@@ -29,6 +29,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import java.util.HashMap;
/*
* Copyright 2004,2005 The Apache Software Foundation.
@@ -59,24 +60,47 @@
private List namesList;
private static int count = 0;
- private boolean wrapClasses;
+ private boolean wrapClasses = false;
+ private boolean writeClasses=false;
private String packageName = null;
private File rootDir;
private Document globalWrappedDocument;
+ private Map modelMap = new HashMap();
+
/**
* Default constructor
*/
public JavaBeanWriter() {
}
+ /**
+ * This returns a map of Qnames vs DOMDocument models. One can use this method to
+ * obtain the raw DOMmodels used to write the classes.
+ * This has no meaning when the classes are supposed to be wrapped so the
+ *
+ * @see org.apache.axis2.schema.writer.BeanWriter#getModelMap()
+ * @return
+ * @throws SchemaCompilationException
+ */
+ public Map getModelMap(){
+ return modelMap;
+ }
+
public void init(CompilerOptions options) throws SchemaCompilationException {
try {
initWithFile(options.getOutputLocation());
- this.packageName = options.getPackageName();
- this.wrapClasses = options.isWrapClasses();
+ packageName = options.getPackageName();
+ writeClasses = options.isWriteOutput();
+ if (!writeClasses){
+ wrapClasses = false;
+ }else{
+ wrapClasses = options.isWrapClasses();
+ }
+ System.out.println("writeClasses = " + writeClasses);
+
//if the wrap mode is set then create a global document to keep the wrapped
//element models
@@ -212,7 +236,10 @@
String originalName = qName.getLocalPart();
String className = getNonConflictingName(this.namesList, originalName);
- String fullyqualifiedClassName = null;
+
+ String packagePrefix;
+
+ String fullyqualifiedClassName;
ArrayList propertyNames = new ArrayList();
if (!templateLoaded) {
@@ -225,19 +252,28 @@
globalWrappedDocument.getDocumentElement().appendChild(
getBeanElement(globalWrappedDocument, className, originalName, packageName, qName, isElement, metainf, propertyNames, typeMap)
);
- //now the fully qualified class name needs to have the name of the including class as well
- fullyqualifiedClassName = (this.packageName == null ? "" : this.packageName) + WRAPPED_DATABINDING_CLASS_NAME + "." + className;
+ packagePrefix = (this.packageName == null ? "" : this.packageName) + WRAPPED_DATABINDING_CLASS_NAME;
+
} else {
//create the model
Document model = XSLTUtils.getDocument();
//make the XML
model.appendChild(getBeanElement(model, className, originalName, packageName, qName, isElement, metainf, propertyNames, typeMap));
- //create the file
- File out = createOutFile(packageName, className);
- //parse with the template and create the files
- parse(model, out);
- fullyqualifiedClassName = packageName + "." + className;
+
+ if (writeClasses){
+ //create the file
+ File out = createOutFile(packageName, className);
+ //parse with the template and create the files
+ parse(model, out);
+ }
+
+ //add the model to the model map
+ modelMap.put(qName,model);
+
+ packagePrefix = packageName ;
}
+
+ fullyqualifiedClassName = packagePrefix + (packagePrefix.endsWith(".")?"":".") + className;
//return the fully qualified class name
return fullyqualifiedClassName;
Modified: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/SimpleDBExtension.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/SimpleDBExtension.java?rev=358514&r1=358513&r2=358514&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/SimpleDBExtension.java (original)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/codegen/extension/SimpleDBExtension.java Wed Dec 21 22:58:22 2005
@@ -90,10 +90,13 @@
}
//call the schema compiler
CompilerOptions options = new CompilerOptions();
- options.setOutputLocation(configuration.getOutputLocation());
- options.setPackageName(ADB_PACKAGE_NAME_PREFIX);
- options.setWrapClasses(configuration.isWrapClasses());
+ //set the default options
+ setDefaultOptions(options);
+
+
+ //todo allow the user to override the default options here
+ //perhaps by allowing -Eparameters
SchemaCompiler schemaCompiler = new SchemaCompiler(options);
schemaCompiler
@@ -101,13 +104,27 @@
//create the type mapper
JavaTypeMapper mapper = new JavaTypeMapper();
- //get the processed element map and transfer it to the type mapper
- Map processedMap = schemaCompiler.getProcessedElementMap();
- Iterator processedkeys = processedMap.keySet().iterator();
- QName qNameKey;
- while (processedkeys.hasNext()) {
- qNameKey = (QName) processedkeys.next();
- mapper.addTypeMappingName(qNameKey, processedMap.get(qNameKey).toString());
+
+ if (options.isWriteOutput()){
+ //get the processed element map and transfer it to the type mapper
+ Map processedMap = schemaCompiler.getProcessedElementMap();
+ Iterator processedkeys = processedMap.keySet().iterator();
+ QName qNameKey;
+ while (processedkeys.hasNext()) {
+ qNameKey = (QName) processedkeys.next();
+ mapper.addTypeMappingName(qNameKey, processedMap.get(qNameKey).toString());
+ }
+
+ }else{
+ //get the processed model map and transfer it to the type mapper
+ //since the options mentiond that its
+ Map processedModelMap = schemaCompiler.getProcessedModelMap();
+ Iterator processedkeys = processedModelMap.keySet().iterator();
+ QName qNameKey;
+ while (processedkeys.hasNext()) {
+ qNameKey = (QName) processedkeys.next();
+ mapper.addTypeMappingObject(qNameKey, processedModelMap.get(qNameKey));
+ }
}
//set the type mapper to the config
@@ -118,5 +135,28 @@
throw new RuntimeException(e);
}
+ }
+
+ private void setDefaultOptions(CompilerOptions options) {
+ /// these options need to be taken from the command line
+ options.setOutputLocation(configuration.getOutputLocation());
+ options.setPackageName(ADB_PACKAGE_NAME_PREFIX);
+
+ options.setWrapClasses(configuration.isWrapClasses());
+ options.setWriteOutput(true);
+
+ //todo this needs to be attended to later
+ //default setting is to set the wrap status depending on whether it's
+ //the server side or the client side
+// if (configuration.isServerSide()){
+// //for the serverside we generate unwrapped by default
+// options.setWrapClasses(false);
+// //for the serverside we write the output
+// options.setWriteOutput(true);
+// }else{
+// options.setWrapClasses(configuration.isWrapClasses());
+// options.setWriteOutput(true);
+// //options.setWriteOutput(false);
+// }
}
}
Modified: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/java/InterfaceImplementationTemplate.xsl
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/java/InterfaceImplementationTemplate.xsl?rev=358514&r1=358513&r2=358514&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/java/InterfaceImplementationTemplate.xsl (original)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/java/InterfaceImplementationTemplate.xsl Wed Dec 21 22:58:22 2005
@@ -457,11 +457,17 @@
<xsl:for-each select="param">
<xsl:if test="@type!=''">
- <!-- consider all the types to ADBbeans. So no instanceof check -->
+
public org.apache.axis2.om.OMElement toOM(<xsl:value-of select="@type"/> param){
- org.apache.axis2.om.impl.llom.builder.StAXOMBuilder builder = new org.apache.axis2.om.impl.llom.builder.StAXOMBuilder
- (org.apache.axis2.om.OMAbstractFactory.getOMFactory(), param.getPullParser(null));
- return builder.getDocumentElement();
+ if (param instanceof org.apache.axis2.databinding.ADBBean){
+ org.apache.axis2.om.impl.llom.builder.StAXOMBuilder builder = new org.apache.axis2.om.impl.llom.builder.StAXOMBuilder
+ (org.apache.axis2.om.OMAbstractFactory.getOMFactory(), param.getPullParser(null));
+ return builder.getDocumentElement();
+ }else{
+ <!-- treat this as a plain bean. use the reflective bean converter -->
+ //todo finish this onece the bean serializer has the necessary methods
+ retrun null;
+ }
}
</xsl:if>
</xsl:for-each>
Modified: webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/java/MessageReceiverTemplate.xsl
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/java/MessageReceiverTemplate.xsl?rev=358514&r1=358513&r2=358514&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/java/MessageReceiverTemplate.xsl (original)
+++ webservices/axis2/trunk/java/modules/codegen/src/org/apache/axis2/wsdl/template/java/MessageReceiverTemplate.xsl Wed Dec 21 22:58:22 2005
@@ -184,16 +184,23 @@
};
</xsl:if>
- <xsl:for-each select="param">
- <xsl:if test="@type!=''">
- <!-- consider all the types to ADBbeans. So no instanceof check -->
- public org.apache.axis2.om.OMElement toOM(<xsl:value-of select="@type"/> param){
- org.apache.axis2.om.impl.llom.builder.StAXOMBuilder builder = new org.apache.axis2.om.impl.llom.builder.StAXOMBuilder
- (org.apache.axis2.om.OMAbstractFactory.getOMFactory(), param.getPullParser(null));
- return builder.getDocumentElement();
- }
- </xsl:if>
- </xsl:for-each>
+ <xsl:for-each select="param">
+ <xsl:if test="@type!=''">
+
+ public org.apache.axis2.om.OMElement toOM(<xsl:value-of select="@type"/> param){
+ if (param instanceof org.apache.axis2.databinding.ADBBean){
+ org.apache.axis2.om.impl.llom.builder.StAXOMBuilder builder = new org.apache.axis2.om.impl.llom.builder.StAXOMBuilder
+ (org.apache.axis2.om.OMAbstractFactory.getOMFactory(), param.getPullParser(null));
+ return builder.getDocumentElement();
+ }else{
+ <!-- treat this as a plain bean. use the reflective bean converter -->
+ <!-- todo finish this once the bean serializer has the necessary methods -->
+ retrun null;
+ }
+ }
+ </xsl:if>
+ </xsl:for-each>
+
public java.lang.Object fromOM(org.apache.axis2.om.OMElement param,
java.lang.Class type){
@@ -205,6 +212,7 @@
obj = parseMethod.invoke(null,new Object[]{param.getXMLStreamReader()});
}else{
//oops! we don't know how to deal with this. Perhaps the reflective one is a good choice here
+ <!-- todo finish this once the bean serializer has the necessary methods -->
}
} catch (Exception e) {
throw new RuntimeException(e);