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 he...@apache.org on 2005/02/01 07:43:01 UTC

svn commit: r149376 - in webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis: engine/AxisEngine.java impl/llom/OMElementImpl.java impl/receivers/InOutSyncReceiver.java transport/AbstractTransportSender.java

Author: hemapani
Date: Mon Jan 31 22:42:57 2005
New Revision: 149376

URL: http://svn.apache.org/viewcvs?view=rev&rev=149376
Log:
use HashMaps to handle the attributes and Namesapce

Modified:
    webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/engine/AxisEngine.java
    webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/impl/llom/OMElementImpl.java
    webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/impl/receivers/InOutSyncReceiver.java
    webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/transport/AbstractTransportSender.java

Modified: webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/engine/AxisEngine.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/engine/AxisEngine.java?view=diff&r1=149375&r2=149376
==============================================================================
--- webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/engine/AxisEngine.java (original)
+++ webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/engine/AxisEngine.java Mon Jan 31 22:42:57 2005
@@ -45,7 +45,7 @@
 
     public void receive(MessageContext context) throws AxisFault {
         try {
-            //let us always start with a fresh EC
+			//let us always start with a fresh EC
             context.setExecutionChain(new ExecutionChain());
             ExecutionChain chain = context.getExecutionChain();
             

Modified: webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/impl/llom/OMElementImpl.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/impl/llom/OMElementImpl.java?view=diff&r1=149375&r2=149376
==============================================================================
--- webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/impl/llom/OMElementImpl.java (original)
+++ webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/impl/llom/OMElementImpl.java Mon Jan 31 22:42:57 2005
@@ -1,19 +1,28 @@
 package org.apache.axis.impl.llom;
 
-import org.apache.axis.impl.llom.serialize.StreamingOMSerializer;
-import org.apache.axis.impl.llom.traverse.OMChildrenIterator;
-import org.apache.axis.impl.llom.traverse.OMChildrenQNameIterator;
-import org.apache.axis.impl.llom.util.StreamWriterToContentHandlerConverter;
-import org.apache.axis.om.*;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Stack;
 
 import javax.xml.namespace.QName;
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamReader;
 import javax.xml.stream.XMLStreamWriter;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.ListIterator;
-import java.util.Stack;
+
+import org.apache.axis.impl.llom.serialize.StreamingOMSerializer;
+import org.apache.axis.impl.llom.traverse.OMChildrenIterator;
+import org.apache.axis.impl.llom.traverse.OMChildrenQNameIterator;
+import org.apache.axis.impl.llom.util.StreamWriterToContentHandlerConverter;
+import org.apache.axis.impl.utils.CollectionPool;
+import org.apache.axis.om.OMAttribute;
+import org.apache.axis.om.OMConstants;
+import org.apache.axis.om.OMElement;
+import org.apache.axis.om.OMException;
+import org.apache.axis.om.OMFactory;
+import org.apache.axis.om.OMNamespace;
+import org.apache.axis.om.OMNode;
+import org.apache.axis.om.OMText;
+import org.apache.axis.om.OMXMLParserWrapper;
 
 
 /**
@@ -33,21 +42,36 @@
  * <p/>
  */
 public class OMElementImpl extends OMNamedNodeImpl implements OMElement, OMConstants {
-
-    private OMNode firstChild;
+	private OMNode firstChild;
     protected OMXMLParserWrapper builder;
-    private ArrayList namespaces;
-    private ArrayList attributes;
+    private HashMap namespaces;
+    private HashMap attributes;
     private Stack namespaceStack;
 
     public OMElementImpl(OMElement parent) {
         super(parent);
         done = true;
+        this.namespaces = CollectionPool.createHashMap(5);
+        this.attributes = CollectionPool.createHashMap(5);
     }
 
+	public OMElementImpl(String localName, OMNamespace ns, OMElement parent, OMXMLParserWrapper builder) {
+		super(localName, null, parent);
+		this.namespaces = CollectionPool.createHashMap(5);
+		this.attributes = CollectionPool.createHashMap(5);
+
+		if (ns != null) {
+			setNamespace(handleNamespace(ns));
+		}
+		this.builder = builder;
+	}
+
 
     public OMElementImpl(String localName, OMNamespace ns) {
         super(localName, null, null);
+		this.namespaces = CollectionPool.createHashMap(5);
+		this.attributes = CollectionPool.createHashMap(5);
+
         if (ns != null) {
             setNamespace(handleNamespace(ns));
         }
@@ -65,13 +89,6 @@
     }
 
 
-    public OMElementImpl(String localName, OMNamespace ns, OMElement parent, OMXMLParserWrapper builder) {
-        super(localName, null, parent);
-        if (ns != null) {
-            setNamespace(handleNamespace(ns));
-        }
-        this.builder = builder;
-    }
 
     /**
      * This will add child to the element. One can decide whether he append the child or he adds to the
@@ -149,15 +166,8 @@
      * @return
      */
     public OMNamespace declareNamespace(String uri, String prefix) {
-
-        if (namespaces == null) {
-            namespaces = new ArrayList(5);
-            // the default size of the ArrayList is 10. But I think this is too much as on average number of namespaces is
-            // much more than 10. So I selected 5. Hope this is ok as an initial value. -- Eran Chinthaka 13/12/2004
-
-        }
         OMNamespaceImpl ns = new OMNamespaceImpl(uri, prefix);
-        namespaces.add(ns);
+        namespaces.put(prefix,ns);
         return ns;
     }
 
@@ -172,13 +182,7 @@
      * @return
      */
     public OMNamespace declareNamespace(OMNamespace namespace) {
-        if (namespaces == null) {
-            namespaces = new ArrayList(5);
-            // the default size of the ArrayList is 10. But I think this is too much as on average number of namespaces is
-            // much more than 10. So I selected 5. Hope this is ok as an initial value. -- Eran Chinthaka 13/12/2004
-
-        }
-        namespaces.add(namespace);
+        namespaces.put(namespace.getPrefix(),namespace);
         return namespace;
     }
 
@@ -214,54 +218,22 @@
      * @throws OMException
      */
     public OMNamespace findDeclaredNamespace(String uri, String prefix) throws OMException {
-
-        if (namespaces == null) {
-            return null;
-        }
-        // check in the current element
-        ListIterator namespaceListIterator = namespaces.listIterator();
         if (prefix == null) {
+			Iterator namespaceListIterator = namespaces.values().iterator();
             while (namespaceListIterator.hasNext()) {
                 OMNamespace omNamespace = (OMNamespace) namespaceListIterator.next();
                 if (omNamespace.getName().equals(uri)) {
                     return omNamespace;
                 }
             }
+            return null;
         } else {
-            while (namespaceListIterator.hasNext()) {
-                OMNamespace omNamespace = (OMNamespace) namespaceListIterator.next();
-                if (omNamespace.equals(uri, prefix)) {
-                    return omNamespace;
-                }
-            }
-
+            return (OMNamespace)namespaces.get(prefix);
         }
-        return null;
-
     }
 
     public Iterator getAllDeclaredNamespaces() {
-        if (namespaces == null) {
-
-            // no namespace declared in this element.
-            // return a null iterator
-            // have to look in to this later
-            return new Iterator() {
-                public void remove() {
-                    throw new UnsupportedOperationException();
-                }
-
-                public boolean hasNext() {
-                    return false;
-                }
-
-                public Object next() {
-                    throw new UnsupportedOperationException();
-                }
-            };
-        }
-
-        return namespaces.listIterator();
+        return namespaces.values().iterator();
     }
 
     // ---------------------------------------------------------------------------------------------------------------
@@ -274,21 +246,7 @@
      * @throws org.apache.axis.om.OMException
      */
     public OMAttribute getAttributeWithQName(QName qname) throws OMException {
-
-        if (attributes == null) {
-            return null;
-        }
-
-        ListIterator attrIter = attributes.listIterator();
-        OMAttribute omAttribute = null;
-        while (attrIter.hasNext()) {
-            omAttribute = (OMAttribute) attrIter.next();
-            if (omAttribute.getQName().equals(qname)) {
-                return omAttribute;
-            }
-        }
-
-        return null;
+        return  (OMAttribute)attributes.get(qname);
     }
 
     /**
@@ -297,10 +255,7 @@
      * @return
      */
     public Iterator getAttributes() {
-        if (attributes == null) {
-            attributes = new ArrayList(1);
-        }
-        return attributes.listIterator();
+        return attributes.values().iterator();
     }
 
     /**
@@ -310,18 +265,13 @@
      * @param attr
      */
     public OMAttribute insertAttribute(OMAttribute attr) {
-        if (attributes == null) {
-            attributes = new ArrayList(5);
-        }
-        attributes.add(attr);
+        attributes.put(attr.getQName(),attr);
 
         return attr;
     }
 
     public void removeAttribute(OMAttribute attr) {
-        if (attributes.indexOf(attr) != -1) {
-            attributes.remove(attr);
-        }
+	    attributes.remove(attr.getQName());
     }
 
     public OMAttribute insertAttribute(String attributeName, String value, OMNamespace ns) {
@@ -511,9 +461,9 @@
         }
         //add the elements attributes
         if (attributes != null) {
-            int attCount = attributes.size();
-            for (int i = 0; i < attCount; i++) {
-                serializeAttribute((OMAttribute) attributes.get(i), writer);
+        	Iterator attributesList = attributes.values().iterator();
+            while(attributesList.hasNext()) {
+                serializeAttribute((OMAttribute) attributesList.next(), writer);
             }
         }
         //add the namespaces
@@ -577,5 +527,11 @@
 
         return nsWritten;
     }
+
+	protected void finalize() throws Throwable {
+		CollectionPool.returnHashMap(attributes);
+		CollectionPool.returnHashMap(namespaces);		
+		super.finalize();
+	}
 
 }

Modified: webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/impl/receivers/InOutSyncReceiver.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/impl/receivers/InOutSyncReceiver.java?view=diff&r1=149375&r2=149376
==============================================================================
--- webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/impl/receivers/InOutSyncReceiver.java (original)
+++ webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/impl/receivers/InOutSyncReceiver.java Mon Jan 31 22:42:57 2005
@@ -48,7 +48,7 @@
     }
 
     public void invokeAndsend(MessageContext msgContext) throws AxisFault {
-        Provider provider = msgContext.getService().getProvider();
+		Provider provider = msgContext.getService().getProvider();
 		log.info("start invoke the web service impl");
 		MessageContext outMsgContext = provider.invoke(msgContext);
 		log.info("Invoked the Web Servivces impl");

Modified: webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/transport/AbstractTransportSender.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/transport/AbstractTransportSender.java?view=diff&r1=149375&r2=149376
==============================================================================
--- webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/transport/AbstractTransportSender.java (original)
+++ webservices/axis/trunk/java/dev/scratch/prototype2/src/java/org/apache/axis/transport/AbstractTransportSender.java Mon Jan 31 22:42:57 2005
@@ -33,7 +33,7 @@
 public abstract class AbstractTransportSender extends AbstractHandler implements TransportSender {
 
     public final void invoke(MessageContext msgContext) throws AxisFault {
-        OutputStream out = null;
+		OutputStream out = null;
         if (msgContext.isProcessingFault()) {
             //Means we are processing fault
             if (msgContext.getFaultTo() != null) {