You are viewing a plain text version of this content. The canonical link for it is here.
Posted to yoko-commits@incubator.apache.org by br...@apache.org on 2007/05/29 14:57:27 UTC

svn commit: r542555 - in /incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types: CorbaSequenceListener.java CorbaStructListener.java

Author: bravi
Date: Tue May 29 07:57:26 2007
New Revision: 542555

URL: http://svn.apache.org/viewvc?view=rev&rev=542555
Log:
[YOKO-366] - Resolving the name clash in CorbaStruct & Sequence Listeners.

Modified:
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaSequenceListener.java
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaStructListener.java

Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaSequenceListener.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaSequenceListener.java?view=diff&rev=542555&r1=542554&r2=542555
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaSequenceListener.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaSequenceListener.java Tue May 29 07:57:26 2007
@@ -39,9 +39,9 @@
     private final ORB orb;
     private final CorbaTypeMap typeMap;
     private final boolean isOctets;
-    private QName currentElName;
     private CorbaTypeListener currentTypeListener;
     private ServiceInfo serviceInfo;
+    private int depth;
 
 
     //REVISIT, Need to create a template element if no elements are read in.
@@ -70,8 +70,9 @@
     }
 
     public void processStartElement(QName name) {
+        depth++;
         if (currentTypeListener == null) {
-            currentElName = name;
+            currentElement = name;
             currentTypeListener =
                 CorbaHandlerUtils.getTypeListener(name,
                                                   seqElementType,
@@ -87,7 +88,8 @@
     public void processEndElement(QName name) {
         if (currentTypeListener != null) {
             currentTypeListener.processEndElement(name);
-            if (currentElName.equals(name)) {
+            depth--;
+            if (depth == 0 && currentElement.equals(name)) {
                 currentTypeListener = null;
             }
         }

Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaStructListener.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaStructListener.java?view=diff&rev=542555&r1=542554&r2=542555
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaStructListener.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaStructListener.java Tue May 29 07:57:26 2007
@@ -37,8 +37,8 @@
     private final ORB orb;
     private int memberCount;
     private CorbaTypeListener currentTypeListener;
-    private QName memberElement;
     private ServiceInfo serviceInfo;
+    private int depth;
 
     public CorbaStructListener(CorbaObjectHandler handler,
                                CorbaTypeMap map,
@@ -51,6 +51,7 @@
     }
 
     public void processStartElement(QName name) {
+        depth++;
         if (currentTypeListener == null) {
             QName elName = name;
             MemberType member = structMembers.get(memberCount);
@@ -58,7 +59,7 @@
             if (anonType) {
                 elName = CorbaUtils.getEmptyQName();
             } else {
-                memberElement = name;
+                currentElement = name;
             }
             currentTypeListener =
                 CorbaHandlerUtils.getTypeListener(elName,
@@ -80,8 +81,9 @@
     public void processEndElement(QName name) {
         if (currentTypeListener != null) {
             currentTypeListener.processEndElement(name);
+            depth--;
         }
-        if ((memberElement != null) && (memberElement.equals(name))) {
+        if (depth == 0 && (currentElement != null) && (currentElement.equals(name))) {
             currentTypeListener = null;
         }
     }