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 ve...@apache.org on 2009/07/05 14:56:15 UTC

svn commit: r791238 - in /webservices/axis2/trunk/java/modules: adb-codegen/src/org/apache/axis2/schema/template/ adb/src/org/apache/axis2/databinding/

Author: veithen
Date: Sun Jul  5 12:56:14 2009
New Revision: 791238

URL: http://svn.apache.org/viewvc?rev=791238&view=rev
Log:
* AXIS2-4416: Avoid generating unnecessary anonymous inner classes.
* Avoid using reflection in ADBHelperDataSource.

Modified:
    webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-bean.xsl
    webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-helpermode.xsl
    webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/ADBDataSource.java
    webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/ADBHelperDataSource.java

Modified: webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-bean.xsl
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-bean.xsl?rev=791238&r1=791237&r2=791238&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-bean.xsl (original)
+++ webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-bean.xsl Sun Jul  5 12:56:14 2009
@@ -685,12 +685,7 @@
         <xsl:choose>
             <xsl:when test="@type">
                org.apache.axiom.om.OMDataSource dataSource =
-                       new org.apache.axis2.databinding.ADBDataSource(this,parentQName){
-
-                 public void serialize(org.apache.axis2.databinding.utils.writer.MTOMAwareXMLStreamWriter xmlWriter) throws javax.xml.stream.XMLStreamException {
-                       <xsl:value-of select="$name"/>.this.serialize(parentQName,xmlWriter);
-                 }
-               };
+                       new org.apache.axis2.databinding.ADBDataSource(this,parentQName);
                return new org.apache.axiom.om.impl.llom.OMSourcedElementImpl(
                parentQName,factory,dataSource);
             </xsl:when>

Modified: webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-helpermode.xsl
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-helpermode.xsl?rev=791238&r1=791237&r2=791238&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-helpermode.xsl (original)
+++ webservices/axis2/trunk/java/modules/adb-codegen/src/org/apache/axis2/schema/template/ADBBeanTemplate-helpermode.xsl Sun Jul  5 12:56:14 2009
@@ -565,12 +565,7 @@
                final org.apache.axiom.om.OMFactory factory) throws org.apache.axis2.databinding.ADBException{
 
                org.apache.axiom.om.OMDataSource dataSource =
-                       new org.apache.axis2.databinding.ADBHelperDataSource(bean,parentQName,"<xsl:value-of select="$fullyQualifiedHelperName"/>"){
-
-                 public void serialize(org.apache.axis2.databinding.utils.writer.MTOMAwareXMLStreamWriter xmlWriter) throws javax.xml.stream.XMLStreamException {
-                       <xsl:value-of select="$helpername"/>.this.serialize(bean,parentQName,xmlWriter);
-                 }
-               };
+                       new org.apache.axis2.databinding.ADBHelperDataSource(bean,parentQName,this);
 
                <xsl:choose>
                    <xsl:when test="@type">

Modified: webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/ADBDataSource.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/ADBDataSource.java?rev=791238&r1=791237&r2=791238&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/ADBDataSource.java (original)
+++ webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/ADBDataSource.java Sun Jul  5 12:56:14 2009
@@ -40,7 +40,7 @@
 import java.io.Writer;
 import java.util.HashMap;
 
-public abstract class ADBDataSource implements OMDataSourceExt {
+public class ADBDataSource implements OMDataSourceExt {
     protected QName parentQName;
     private ADBBean bean;
     
@@ -51,7 +51,7 @@
      *
      * @param bean
      */
-    protected ADBDataSource(ADBBean bean, QName parentQName) {
+    public ADBDataSource(ADBBean bean, QName parentQName) {
         this.bean = bean;
         this.parentQName = parentQName;
     }
@@ -90,13 +90,10 @@
      */
     public void serialize(XMLStreamWriter xmlWriter) throws XMLStreamException{
         MTOMAwareXMLStreamWriter mtomAwareXMLStreamWriter = new MTOMAwareXMLSerializer(xmlWriter);
-        serialize(mtomAwareXMLStreamWriter);
+        bean.serialize(parentQName, mtomAwareXMLStreamWriter);
         mtomAwareXMLStreamWriter.flush();
     }
 
-    public abstract void serialize(MTOMAwareXMLStreamWriter xmlWriter) throws XMLStreamException;
-
-
     /**
      * @throws XMLStreamException
      * @see org.apache.axiom.om.OMDataSource#getReader()

Modified: webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/ADBHelperDataSource.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/ADBHelperDataSource.java?rev=791238&r1=791237&r2=791238&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/ADBHelperDataSource.java (original)
+++ webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/ADBHelperDataSource.java Sun Jul  5 12:56:14 2009
@@ -37,15 +37,13 @@
 import java.io.OutputStream;
 import java.io.UnsupportedEncodingException;
 import java.io.Writer;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
 import java.util.HashMap;
 
-public abstract class ADBHelperDataSource implements OMDataSourceExt {
+public class ADBHelperDataSource<T> implements OMDataSourceExt {
 
     protected QName parentQName;
-    private Object bean;
-    protected String helperClassName;
+    private T bean;
+    private final ADBHelper<T> helper;
     
     HashMap map = null;  // Map of properties
 
@@ -54,10 +52,10 @@
      *
      * @param bean
      */
-    protected ADBHelperDataSource(Object bean, QName parentQName, String helperClassName) {
+    public ADBHelperDataSource(T bean, QName parentQName, ADBHelper<T> helper) {
         this.bean = bean;
         this.parentQName = parentQName;
-        this.helperClassName = helperClassName;
+        this.helper = helper;
     }
 
 
@@ -95,34 +93,16 @@
      */
     public void serialize(XMLStreamWriter xmlWriter) throws XMLStreamException{
         MTOMAwareXMLStreamWriter mtomAwareXMLStreamWriter = new MTOMAwareXMLSerializer(xmlWriter);
-        serialize(mtomAwareXMLStreamWriter);
+        helper.serialize(bean, parentQName, mtomAwareXMLStreamWriter);
         mtomAwareXMLStreamWriter.flush();
     }
 
-    public abstract void serialize(MTOMAwareXMLStreamWriter xmlWriter) throws XMLStreamException;
-
-
     /**
      * @throws XMLStreamException
      * @see org.apache.axiom.om.OMDataSource#getReader()
      */
     public XMLStreamReader getReader() throws XMLStreamException {
-        // since only ADBBeans related to elements can be serialized
-        try {
-            Class helperClass = Class.forName(helperClassName);
-            Method method = helperClass.getMethod("getPullParser", new Class[] { Object.class,
-                    QName.class });
-            return (XMLStreamReader)method.invoke(null, new Object[] { bean, parentQName });
-        } catch (ClassNotFoundException e) {
-            throw new XMLStreamException(e);
-        } catch (NoSuchMethodException e) {
-            throw new XMLStreamException(e);
-        } catch (IllegalAccessException e) {
-            throw new XMLStreamException(e);
-        } catch (InvocationTargetException e) {
-            throw new XMLStreamException(e);
-        }
-
+        return helper.getPullParser(bean, parentQName);
     }
 
     /**