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/25 19:27:00 UTC

svn commit: r541753 - in /incubator/yoko/branches/perf/src: main/java/org/apache/yoko/bindings/corba/interceptors/ main/java/org/apache/yoko/bindings/corba/runtime/ main/java/org/apache/yoko/bindings/corba/types/ test/java/org/apache/yoko/bindings/corb...

Author: bravi
Date: Fri May 25 12:26:58 2007
New Revision: 541753

URL: http://svn.apache.org/viewvc?view=rev&rev=541753
Log:
[YOKO-366] - Adding support for union types.

Added:
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaUnionEventProducer.java   (with props)
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaUnionListener.java   (with props)
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/SkipStartEndEventProducer.java   (with props)
Modified:
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamOutEndingInterceptor.java
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaFaultStreamWriter.java
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaStaxObject.java
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaStreamReader.java
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaStreamWriter.java
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/AbstractCorbaTypeListener.java
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaArrayListener.java
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaEnumListener.java
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaExceptionListener.java
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaFixedEventProducer.java
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaFixedListener.java
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaHandlerUtils.java
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaPrimitiveListener.java
    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
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaTypeEventProducer.java
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaTypeListener.java
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/ParameterEventProducer.java
    incubator/yoko/branches/perf/src/test/java/org/apache/yoko/bindings/corba/CorbaTypeTest.java
    incubator/yoko/branches/perf/src/test/java/org/apache/yoko/bindings/corba/types/CorbaHandlerUtilsTest.java

Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamOutEndingInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamOutEndingInterceptor.java?view=diff&rev=541753&r1=541752&r2=541753
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamOutEndingInterceptor.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamOutEndingInterceptor.java Fri May 25 12:26:58 2007
@@ -99,7 +99,6 @@
             if (param.getMode().equals(ModeType.OUT)) {
                 if (!wrap) {
                     MessagePartInfo part = outMsgInfo.getMessagePart(paramName);
-                        //getOutputMessagePartInfo(opInfo, param.getName());
                     if (part != null && part.isElement()) {
                         paramName = part.getElementQName();
                     }

Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaFaultStreamWriter.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaFaultStreamWriter.java?view=diff&rev=541753&r1=541752&r2=541753
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaFaultStreamWriter.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaFaultStreamWriter.java Fri May 25 12:26:58 2007
@@ -52,7 +52,7 @@
 
     protected void setCurrentTypeListener(QName name) throws XMLStreamException {
         QName idlType = exType.getException();
-        currentTypeListener = CorbaHandlerUtils.getTypeListener(name, idlType, typeMap, orb);
+        currentTypeListener = CorbaHandlerUtils.getTypeListener(name, idlType, typeMap, orb, serviceInfo);
         listeners[0] = currentTypeListener;
     }
 

Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaStaxObject.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaStaxObject.java?view=diff&rev=541753&r1=541752&r2=541753
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaStaxObject.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaStaxObject.java Fri May 25 12:26:58 2007
@@ -1190,8 +1190,7 @@
                         CorbaHandlerUtils.createTypeHandler(orb,
                                                             new QName("discriminator"),
                                                             unionType.getDiscriminator(),
-                                                            typeMap,
-                                                            serviceInfo);
+                                                            typeMap);
                     obj.setDiscriminator(discObj);
                     
                     // Determine the value of the discriminator.  
@@ -1219,8 +1218,7 @@
                     branchObj = CorbaHandlerUtils.createTypeHandler(orb,
                                                                     qname,
                                                                     branch.getIdltype(),
-                                                                    typeMap,
-                                                                    serviceInfo);
+                                                                    typeMap);
                 }
                 obj.addCase(branchObj);
             }

Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaStreamReader.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaStreamReader.java?view=diff&rev=541753&r1=541752&r2=541753
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaStreamReader.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaStreamReader.java Fri May 25 12:26:58 2007
@@ -36,6 +36,8 @@
     private char[] currentText;
     private CorbaTypeEventProducer eventProducer;
     private int currentState;
+    private QName currentQName;
+    private List<Attribute> currentAttributes;
 
     private String defaultNameSpace;
     
@@ -45,8 +47,8 @@
     }
 
     public QName getName() {
-        final QName ret = eventProducer.getName();
-        return ret;
+        currentQName = eventProducer.getName();
+        return currentQName;
     }
 
     public char[] getTextCharacters() {
@@ -59,7 +61,7 @@
     }
 
     public String getLocalName() {
-        return getName().getLocalPart();
+        return currentQName.getLocalPart();
     }
 
     public String getNamespaceURI() {
@@ -83,8 +85,8 @@
             currentState = 0;
             return XMLStreamReader.START_DOCUMENT;
         }
-        hasNext();
         // ensure we catch end_document state
+        hasNext();
         if (currentState != XMLStreamReader.END_DOCUMENT) {
             currentState = eventProducer.next();
         }
@@ -112,70 +114,67 @@
     }
 
     public int getAttributeCount() {
-        List<Attribute> attrs = eventProducer.getAttributes();
-        if (attrs != null) {
-            return attrs.size();
+        currentAttributes =  eventProducer.getAttributes();
+        if (currentAttributes != null) {
+            return currentAttributes.size();
         }
         return 0;
     }
 
     public String getAttributeLocalName(int arg0) {
-        List<Attribute> attrs = eventProducer.getAttributes();
-        if (attrs == null) {
-            return null;
+        String ret = null;
+        if (currentAttributes != null) {
+            Attribute a = currentAttributes.get(arg0);
+            if (a != null) {
+                ret = a.getName().getLocalPart();
+            }
         }
-
-        Attribute a = attrs.get(arg0);
-        if (a != null) {
-            return a.getName().getLocalPart();
-        }
-        return null;
+        return ret;
     }
 
     public QName getAttributeName(int arg0) {
-        // TODO Auto-generated method stub
-        return null;
+        QName ret = null;
+        if (currentAttributes != null) {
+            Attribute a = currentAttributes.get(arg0);
+            if (a != null) {
+                ret = a.getName();
+            }
+        }
+        return ret;
     }
 
+ 
     public String getAttributeNamespace(int arg0) {
-        List<Attribute> attrs = eventProducer.getAttributes();
-        if (attrs == null) {
-            return null;
-        }
-
-        Attribute a = attrs.get(arg0);
-        if (a != null) {
-            return a.getName().getNamespaceURI();
+        String ret = null;
+        if (currentAttributes != null) {
+            Attribute a = currentAttributes.get(arg0);
+            if (a != null) {
+                ret = a.getName().getNamespaceURI();
+            }
         }
-        // TODO Auto-generated method stub
-        return null;
+        return ret;
     }
 
     public String getAttributePrefix(int arg0) {
-        // TODO Auto-generated method stub
         return null;
     }
 
     public String getAttributeType(int arg0) {
-        // TODO Auto-generated method stub
         return null;
     }
 
     public String getAttributeValue(int arg0) {
-        List<Attribute> attrs = eventProducer.getAttributes();
-        if (attrs == null) {
-            return null;
+        String ret = null;
+        if (currentAttributes != null) {
+            Attribute a = currentAttributes.get(arg0);
+            if (a != null) {
+                ret = a.getValue();
+            }
         }
-
-        Attribute a = attrs.get(arg0);
-        if (a != null) {
-            return a.getValue();
-        }
-        return null;
+        return ret;
     }
 
     public String getAttributeValue(String arg0, String arg1) {
-        // TODO Auto-generated method stub
         return null;
     }
 
@@ -185,7 +184,6 @@
     }
 
     public String getElementText() throws XMLStreamException {
-        // TODO Auto-generated method stub
         return null;
     }
 

Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaStreamWriter.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaStreamWriter.java?view=diff&rev=541753&r1=541752&r2=541753
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaStreamWriter.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaStreamWriter.java Fri May 25 12:26:58 2007
@@ -138,7 +138,7 @@
         ArgType param = params.get(paramCounter);
         QName idlType = param.getIdltype();
         if (!skipWrap || (name.getLocalPart().equals(param.getName()))) {
-            currentTypeListener = CorbaHandlerUtils.getTypeListener(name, idlType, typeMap, orb);
+            currentTypeListener = CorbaHandlerUtils.getTypeListener(name, idlType, typeMap, orb, serviceInfo);
             listeners[paramCounter] = currentTypeListener;
             paramCounter++;
         } else {
@@ -191,6 +191,7 @@
                                java.lang.String localName,
                                java.lang.String value)
         throws XMLStreamException {
+        currentTypeListener.processWriteAttribute(prefix, namespaceURI, localName, value);
     }
 
     public void writeAttribute(java.lang.String namespaceURI,

Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/AbstractCorbaTypeListener.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/AbstractCorbaTypeListener.java?view=diff&rev=541753&r1=541752&r2=541753
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/AbstractCorbaTypeListener.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/AbstractCorbaTypeListener.java Fri May 25 12:26:58 2007
@@ -24,10 +24,10 @@
 public abstract class AbstractCorbaTypeListener implements CorbaTypeListener {
 
     protected QName currentElement;
-    protected final CorbaObjectHandler value;
+    protected final CorbaObjectHandler handler;
 
-    public AbstractCorbaTypeListener(CorbaObjectHandler handler) {
-        value = handler;
+    public AbstractCorbaTypeListener(CorbaObjectHandler h) {
+        handler = h;
     }
 
 
@@ -42,7 +42,10 @@
     public abstract void processCharacters(String text);
 
     public CorbaObjectHandler getCorbaObject() {
-        return value;
+        return handler;
     }
 
+    
+    public void processWriteAttribute(String prefix, String namespaceURI, String localName, String value) {
+    }
 }

Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaArrayListener.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaArrayListener.java?view=diff&rev=541753&r1=541752&r2=541753
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaArrayListener.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaArrayListener.java Fri May 25 12:26:58 2007
@@ -20,6 +20,7 @@
 
 import javax.xml.namespace.QName;
 
+import org.apache.cxf.service.model.ServiceInfo;
 import org.apache.schemas.yoko.bindings.corba.Anonarray;
 import org.apache.schemas.yoko.bindings.corba.Array;
 
@@ -35,14 +36,16 @@
     private final CorbaTypeMap typeMap;
     private QName currentElName;
     private CorbaTypeListener currentTypeListener;
+    private ServiceInfo serviceInfo;
     
     public CorbaArrayListener(CorbaObjectHandler handler,
                               CorbaTypeMap map,
-                              ORB orbRef) {
+                              ORB orbRef, ServiceInfo sInfo) {
         super(handler);
         value = (CorbaArrayHandler) handler;
         orb = orbRef;
         typeMap = map;
+        serviceInfo = sInfo;
         Object arrayType = handler.getType();
         if (arrayType instanceof Anonarray) {
             Anonarray anonType = (Anonarray) arrayType;
@@ -60,7 +63,8 @@
                 CorbaHandlerUtils.getTypeListener(name,
                                                   arrayElementType,
                                                   typeMap,
-                                                  orb);
+                                                  orb,
+                                                  serviceInfo);
             value.addElement(currentTypeListener.getCorbaObject());
         } else {
             currentTypeListener.processStartElement(name);

Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaEnumListener.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaEnumListener.java?view=diff&rev=541753&r1=541752&r2=541753
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaEnumListener.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaEnumListener.java Fri May 25 12:26:58 2007
@@ -25,6 +25,6 @@
     }
 
     public void processCharacters(String text) {
-        ((CorbaEnumHandler) value).setValue(text);
+        ((CorbaEnumHandler) handler).setValue(text);
     }    
 }

Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaExceptionListener.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaExceptionListener.java?view=diff&rev=541753&r1=541752&r2=541753
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaExceptionListener.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaExceptionListener.java Fri May 25 12:26:58 2007
@@ -19,33 +19,34 @@
 package org.apache.yoko.bindings.corba.types;
 
 import java.util.List;
+
 import javax.xml.namespace.QName;
 
+import org.apache.cxf.service.model.ServiceInfo;
 import org.apache.schemas.yoko.bindings.corba.Exception;
 import org.apache.schemas.yoko.bindings.corba.MemberType;
-
 import org.apache.yoko.bindings.corba.CorbaTypeMap;
-
 import org.omg.CORBA.ORB;
 
 public class CorbaExceptionListener extends AbstractCorbaTypeListener {
 
-    private final CorbaExceptionHandler value;
     private final CorbaTypeMap typeMap;
     private final ORB orb;
     private final List<MemberType> exMembers;
     private int memberCount;
     private CorbaTypeListener currentTypeListener;
     private QName memberElement;
+    private ServiceInfo sInfo;
 
 
     public CorbaExceptionListener(CorbaObjectHandler handler,
                                   CorbaTypeMap map,
-                                  ORB orbRef) {
+                                  ORB orbRef, 
+                                  ServiceInfo serviceInfo) {
         super(handler);
-        value = (CorbaExceptionHandler) handler;
         orb = orbRef;
         typeMap = map;
+        sInfo = serviceInfo;
         exMembers = ((Exception) handler.getType()).getMember();
     }
 
@@ -57,8 +58,9 @@
                 CorbaHandlerUtils.getTypeListener(name,
                                                   exMembers.get(memberCount).getIdltype(),
                                                   typeMap,
-                                                  orb);
-            value.addMember(currentTypeListener.getCorbaObject());
+                                                  orb, 
+                                                  sInfo);
+            ((CorbaExceptionHandler)handler).addMember(currentTypeListener.getCorbaObject());
             memberCount++;
         } else {
             currentTypeListener.processStartElement(name);
@@ -77,4 +79,10 @@
     public void processCharacters(String text) {
         currentTypeListener.processCharacters(text);
     }
+
+
+    public void processWriteAttribute(String prefix, String namespaceURI, String localName, String value) {
+        throw new RuntimeException("Not Implemented"); 
+    }
+
 }

Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaFixedEventProducer.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaFixedEventProducer.java?view=diff&rev=541753&r1=541752&r2=541753
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaFixedEventProducer.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaFixedEventProducer.java Fri May 25 12:26:58 2007
@@ -57,7 +57,7 @@
     public boolean hasNext() {
         return state < states.length;
     }
-
+    
     public List<Attribute> getAttributes() {
         return null;
     }

Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaFixedListener.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaFixedListener.java?view=diff&rev=541753&r1=541752&r2=541753
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaFixedListener.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaFixedListener.java Fri May 25 12:26:58 2007
@@ -25,6 +25,6 @@
     }
 
     public void processCharacters(String text) {
-        ((CorbaFixedHandler) value).setValueFromData(text);
+        ((CorbaFixedHandler) handler).setValueFromData(text);
     }    
 }

Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaHandlerUtils.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaHandlerUtils.java?view=diff&rev=541753&r1=541752&r2=541753
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaHandlerUtils.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaHandlerUtils.java Fri May 25 12:26:58 2007
@@ -60,8 +60,7 @@
     public static CorbaObjectHandler createTypeHandler(ORB orb,
                                                        QName name, 
                                                        QName idlType,
-                                                       CorbaTypeMap typeMap,
-                                                       ServiceInfo serviceInfo) {
+                                                       CorbaTypeMap typeMap) {
         CorbaObjectHandler handler = null;        
         TypeCode tc = CorbaUtils.getTypeCode(orb, idlType, typeMap);
         try {
@@ -155,7 +154,7 @@
                                                              XmlSchemaObject schemaType,
                                                              CorbaTypeMap typeMap,
                                                              ServiceInfo serviceInfo) {
-        CorbaObjectHandler obj = createTypeHandler(orb, name, idlType, typeMap, serviceInfo);
+        CorbaObjectHandler obj = createTypeHandler(orb, name, idlType, typeMap);
         if (obj.getType() != null) {
             String nsUri = getNamespaceURI(serviceInfo, obj.getType().getType());
             name = new QName(nsUri, obj.getName().getLocalPart());
@@ -420,7 +419,7 @@
     public static CorbaTypeListener getTypeListener(QName name,
                                                     QName idlType,
                                                     CorbaTypeMap typeMap,
-                                                    ORB orb)
+                                                    ORB orb, ServiceInfo serviceInfo)
         throws CorbaBindingException {
         CorbaObjectHandler handler = null;
         TypeCode tc = CorbaUtils.getTypeCode(orb, idlType, typeMap);
@@ -447,7 +446,7 @@
                 break;
             case TCKind._tk_array:
                 handler = new CorbaArrayHandler(name, idlType, tc, type);
-                result = new CorbaArrayListener(handler, typeMap, orb);
+                result = new CorbaArrayListener(handler, typeMap, orb, serviceInfo);
                 break;
             case TCKind._tk_enum:
                 handler = new CorbaEnumHandler(name, idlType, tc, type);
@@ -455,7 +454,7 @@
                 break;
             case TCKind._tk_except:
                 handler = new CorbaExceptionHandler(name, idlType, tc, type);
-                result = new CorbaExceptionListener(handler, typeMap, orb);
+                result = new CorbaExceptionListener(handler, typeMap, orb, serviceInfo);
                 break;
             case TCKind._tk_fixed:
                 handler = new CorbaFixedHandler(name, idlType, tc, type);
@@ -463,7 +462,7 @@
                 break;
             case TCKind._tk_sequence:
                 handler = new CorbaSequenceHandler(name, idlType, tc, type);
-                result = new CorbaSequenceListener(handler, typeMap, orb);
+                result = new CorbaSequenceListener(handler, typeMap, orb, serviceInfo);
                 break;
             case TCKind._tk_string:
             case TCKind._tk_wstring:
@@ -471,9 +470,11 @@
                 break;
             case TCKind._tk_struct:
                 handler = new CorbaStructHandler(name, idlType, tc, type);
-                result = new CorbaStructListener(handler, typeMap, orb);
+                result = new CorbaStructListener(handler, typeMap, orb, serviceInfo);
                 break;
-            case TCKind._tk_union:
+            case TCKind._tk_union:            
+                handler = new CorbaUnionHandler(name, idlType, tc, type);
+                result = new CorbaUnionListener(handler, typeMap, orb, serviceInfo);
                 break;
             case TCKind._tk_objref:
                 handler =
@@ -531,6 +532,7 @@
                 }
                 break;
             case TCKind._tk_union:
+                result = new CorbaUnionEventProducer(handler, serviceInfo, orb);
                 break;
             case TCKind._tk_objref:
                 result = new CorbaObjectReferenceEventProducer(handler, serviceInfo, orb);

Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaPrimitiveListener.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaPrimitiveListener.java?view=diff&rev=541753&r1=541752&r2=541753
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaPrimitiveListener.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaPrimitiveListener.java Fri May 25 12:26:58 2007
@@ -25,6 +25,6 @@
     }   
     
     public void processCharacters(String text) {
-        ((CorbaPrimitiveHandler) value).setValueFromData(text);
+        ((CorbaPrimitiveHandler) handler).setValueFromData(text);
     }
 }

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=541753&r1=541752&r2=541753
==============================================================================
--- 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 Fri May 25 12:26:58 2007
@@ -20,6 +20,7 @@
 
 import javax.xml.namespace.QName;
 
+import org.apache.cxf.service.model.ServiceInfo;
 import org.apache.schemas.yoko.bindings.corba.Anonsequence;
 import org.apache.schemas.yoko.bindings.corba.Sequence;
 
@@ -40,7 +41,8 @@
     private final boolean isOctets;
     private QName currentElName;
     private CorbaTypeListener currentTypeListener;
-    private boolean addElement;
+    private ServiceInfo serviceInfo;
+
 
     //REVISIT, Need to create a template element if no elements are read in.
     // The test with a inout parameter in the client side with no elements
@@ -48,11 +50,13 @@
     // It is not created here because it requires the use of xml schema
     public CorbaSequenceListener(CorbaObjectHandler handler,
                                  CorbaTypeMap map,
-                                 ORB orbRef) {
+                                 ORB orbRef, 
+                                 ServiceInfo sInfo) {
         super(handler);
         value = (CorbaSequenceHandler) handler;
         orb = orbRef;
         typeMap = map;
+        serviceInfo = sInfo;
         CorbaTypeImpl seqType = handler.getType();
         if (seqType instanceof Anonsequence) {
             Anonsequence anonSeqType = (Anonsequence) seqType;
@@ -72,8 +76,8 @@
                 CorbaHandlerUtils.getTypeListener(name,
                                                   seqElementType,
                                                   typeMap,
-                                                  orb);
-            addElement = true;
+                                                  orb,
+                                                  serviceInfo);
             value.addElement(currentTypeListener.getCorbaObject());
         } else {
             currentTypeListener.processStartElement(name);
@@ -109,7 +113,8 @@
                     CorbaHandlerUtils.getTypeListener(value.getName(),
                                                       seqElementType,
                                                       typeMap,
-                                                      orb);
+                                                      orb,
+                                                      serviceInfo);
                 value.addElement(primitiveListener.getCorbaObject());
                 primitiveListener.processCharacters(text);
             }      

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=541753&r1=541752&r2=541753
==============================================================================
--- 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 Fri May 25 12:26:58 2007
@@ -21,6 +21,7 @@
 import java.util.List;
 import javax.xml.namespace.QName;
 
+import org.apache.cxf.service.model.ServiceInfo;
 import org.apache.schemas.yoko.bindings.corba.MemberType;
 import org.apache.schemas.yoko.bindings.corba.Struct;
 
@@ -31,22 +32,22 @@
 
 public class CorbaStructListener extends AbstractCorbaTypeListener {
 
-    private final CorbaStructHandler value;
     private final List<MemberType> structMembers;
     private final CorbaTypeMap typeMap;
     private final ORB orb;
     private int memberCount;
     private CorbaTypeListener currentTypeListener;
     private QName memberElement;
+    private ServiceInfo serviceInfo;
 
     public CorbaStructListener(CorbaObjectHandler handler,
                                CorbaTypeMap map,
-                               ORB orbRef) {
+                               ORB orbRef, ServiceInfo sInfo) {
         super(handler);
         orb = orbRef;
         typeMap = map;
         structMembers = ((Struct) handler.getType()).getMember();
-        value = (CorbaStructHandler) handler;
+        serviceInfo = sInfo;
     }
 
     public void processStartElement(QName name) {
@@ -63,8 +64,9 @@
                 CorbaHandlerUtils.getTypeListener(elName,
                                                   member.getIdltype(),
                                                   typeMap,
-                                                  orb);
-            value.addMember(currentTypeListener.getCorbaObject());
+                                                  orb,
+                                                  serviceInfo);
+            ((CorbaStructHandler)handler).addMember(currentTypeListener.getCorbaObject());
             memberCount++;
             if (anonType) {
                 currentTypeListener.getCorbaObject().setAnonymousType(true);
@@ -86,6 +88,10 @@
 
     public void processCharacters(String text) {
         currentTypeListener.processCharacters(text);
+    }
+
+    public void processWriteAttribute(String prefix, String namespaceURI, String localName, String value) {
+        currentTypeListener.processWriteAttribute(prefix, namespaceURI, localName, value);
     }
 
 }

Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaTypeEventProducer.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaTypeEventProducer.java?view=diff&rev=541753&r1=541752&r2=541753
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaTypeEventProducer.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaTypeEventProducer.java Fri May 25 12:26:58 2007
@@ -58,4 +58,5 @@
      * return any namespace for the current type
      */
     List<Namespace> getNamespaces();    
+
 }

Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaTypeListener.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaTypeListener.java?view=diff&rev=541753&r1=541752&r2=541753
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaTypeListener.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaTypeListener.java Fri May 25 12:26:58 2007
@@ -27,4 +27,5 @@
     void processEndElement(QName name);
     void processCharacters(String text);
     CorbaObjectHandler getCorbaObject();
+    void processWriteAttribute(String prefix, String namespaceURI, String localName, String value);
 }

Added: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaUnionEventProducer.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaUnionEventProducer.java?view=auto&rev=541753
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaUnionEventProducer.java (added)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaUnionEventProducer.java Fri May 25 12:26:58 2007
@@ -0,0 +1,75 @@
+package org.apache.yoko.bindings.corba.types;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLEventFactory;
+import javax.xml.stream.events.Attribute;
+
+import org.apache.cxf.service.model.ServiceInfo;
+import org.apache.schemas.yoko.bindings.corba.Union;
+import org.apache.schemas.yoko.bindings.corba.Unionbranch;
+import org.apache.yoko.bindings.corba.utils.CorbaUtils;
+import org.omg.CORBA.ORB;
+
+public class CorbaUnionEventProducer extends AbstractStartEndEventProducer {
+
+    static final List<Attribute> IS_NIL_ATTRIBUTE_LIST = new ArrayList<Attribute>();
+    static {
+        XMLEventFactory factory = XMLEventFactory.newInstance();
+        IS_NIL_ATTRIBUTE_LIST.add(factory.createAttribute(
+                    new QName("http://www.w3.org/2001/XMLSchema-instance", "nil"), "true"));
+    }
+    private final boolean isNil;
+
+    public CorbaUnionEventProducer(CorbaObjectHandler h, ServiceInfo sInfo, ORB o) {
+        CorbaUnionHandler handler = (CorbaUnionHandler) h;
+        serviceInfo = sInfo;
+        orb = o;
+        name = CorbaUtils.processQName(handler.getName(), serviceInfo);
+        
+        isNil = checkIsNil(handler);
+        if (!isNil) {
+            CorbaObjectHandler contents = handler.getValue();
+            if (contents != null) {
+                Union unionType = (Union)handler.getType();
+                List<Unionbranch> branches = unionType.getUnionbranch();
+                if (branches.size() == 1) {
+                    CorbaTypeEventProducer contentEventProducer = 
+                        CorbaHandlerUtils.getTypeEventProducer(contents, serviceInfo, orb);
+                    currentEventProducer = new SkipStartEndEventProducer(contentEventProducer, name);
+                } else {
+                    List<CorbaObjectHandler> list = new ArrayList<CorbaObjectHandler>();
+                    list.add(contents);
+                    iterator = list.iterator();
+                }
+            }
+        }
+    }
+
+    private boolean checkIsNil(CorbaUnionHandler handler) {
+        boolean isItNil = false;
+        Union unionType = (Union)handler.getType();
+        List<Unionbranch> branches = unionType.getUnionbranch();
+        if (branches.size() == 1) {
+            // nillable or single branch
+            CorbaObjectHandler descHandler = handler.getDiscriminator();
+            if (descHandler instanceof CorbaPrimitiveHandler) {
+                Object descValue = ((CorbaPrimitiveHandler)descHandler).getValue();
+                if (descValue instanceof Boolean && !((Boolean)descValue).booleanValue()) {
+                    isItNil = true;
+                }
+            }
+        }
+        return isItNil;
+    }
+    
+    public List<Attribute> getAttributes() {
+        List<Attribute> attributes = IS_NIL_ATTRIBUTE_LIST;
+        if (!isNil) {
+            attributes = super.getAttributes();
+        }
+        return attributes;
+    }
+}

Propchange: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaUnionEventProducer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaUnionEventProducer.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaUnionListener.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaUnionListener.java?view=auto&rev=541753
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaUnionListener.java (added)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaUnionListener.java Fri May 25 12:26:58 2007
@@ -0,0 +1,100 @@
+package org.apache.yoko.bindings.corba.types;
+
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import org.apache.cxf.service.model.ServiceInfo;
+import org.apache.schemas.yoko.bindings.corba.CaseType;
+import org.apache.schemas.yoko.bindings.corba.Union;
+import org.apache.schemas.yoko.bindings.corba.Unionbranch;
+import org.apache.yoko.bindings.corba.CorbaTypeMap;
+import org.omg.CORBA.ORB;
+
+public class CorbaUnionListener extends AbstractCorbaTypeListener {
+
+    private CorbaTypeMap typeMap;
+    private ServiceInfo serviceInfo;
+    private ORB orb;
+
+    public CorbaUnionListener(CorbaObjectHandler handler,
+            CorbaTypeMap tm, ORB oorb,
+            ServiceInfo sInfo) {
+        super(handler);
+        typeMap = tm;
+        serviceInfo = sInfo;
+        orb = oorb;
+        Union unionType = (Union) handler.getType();
+        ((CorbaUnionHandler)handler).setDiscriminator(CorbaHandlerUtils.initializeObjectHandler(orb,
+                new QName("discriminator"), unionType.getDiscriminator(), null,
+                typeMap, serviceInfo));
+    }
+
+    @Override
+    public CorbaObjectHandler getCorbaObject() {
+        return handler;
+    }
+
+    @Override
+    public void processCharacters(String text) {
+        Union unionType = (Union) handler.getType();
+        List<Unionbranch> branches = unionType.getUnionbranch();
+        boolean singleBranch = branches.size() == 1;
+        
+        QName contentName = currentElement != null ? currentElement : handler.getName();
+        for (Unionbranch branch : branches) {
+            if (singleBranch || branch.getName().equals(contentName.getLocalPart())) {                
+                CorbaObjectHandler content = 
+                    CorbaHandlerUtils.initializeObjectHandler(orb, contentName, 
+                                branch.getIdltype(), null, typeMap, serviceInfo);
+                if (content instanceof CorbaPrimitiveHandler) {
+                    ((CorbaPrimitiveHandler) content).setValueFromData(text);
+                } else {
+                    throw new RuntimeException("Not Implemented - branch of type" + branch.getIdltype());
+                }
+                ((CorbaUnionHandler)handler).setValue(null, content);
+                String descriminatorValue = "true";
+                if (!singleBranch) {
+                    descriminatorValue = determineDescriminatorValue(branch);
+                }
+                ((CorbaUnionHandler)handler).setDiscriminatorValueFromData(descriminatorValue);
+                ((CorbaUnionHandler)handler).addCase(content);
+            } else {
+                QName emptyBranchContentQName = 
+                    new QName(currentElement.getNamespaceURI(), branch.getName());
+                CorbaObjectHandler emptyBranchContent = 
+                    CorbaHandlerUtils.initializeObjectHandler(orb, emptyBranchContentQName,
+                        branch.getIdltype(), null, typeMap, serviceInfo);
+                ((CorbaUnionHandler)handler).addCase(emptyBranchContent);
+            }
+        }
+    }
+
+    private String determineDescriminatorValue(Unionbranch branch) {
+        String descriminatorValue;
+        // Determine the value of the discriminator.  
+        List<CaseType> branchCases = branch.getCase();
+        if (branchCases.size() != 0) {
+            // This represents a union case.  Set the discriminator based on the first
+            // label value associated with the branch (since we don't have this information)
+            // from the Stax representation of the Celtix object).
+            CaseType caseLabel = branchCases.get(0);
+            descriminatorValue = caseLabel.getLabel();
+        } else {
+            // This represents the default case.
+            descriminatorValue = ((CorbaUnionHandler)handler).createDefaultDiscriminatorLabel();
+        }
+        return descriminatorValue;
+    }
+
+    public void processWriteAttribute(String prefix, String namespaceURI,
+            String localName, String val) {
+        if ("nil".equals(localName)) {
+            ((CorbaUnionHandler)handler).setDiscriminatorValueFromData("false");
+        } else {
+            super.processWriteAttribute(prefix, namespaceURI, localName, val);
+        }
+
+    }
+
+}

Propchange: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaUnionListener.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaUnionListener.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/ParameterEventProducer.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/ParameterEventProducer.java?view=diff&rev=541753&r1=541752&r2=541753
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/ParameterEventProducer.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/ParameterEventProducer.java Fri May 25 12:26:58 2007
@@ -83,4 +83,5 @@
     public List<Namespace> getNamespaces() {
         return null;
     }
+
 }

Added: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/SkipStartEndEventProducer.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/SkipStartEndEventProducer.java?view=auto&rev=541753
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/SkipStartEndEventProducer.java (added)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/SkipStartEndEventProducer.java Fri May 25 12:26:58 2007
@@ -0,0 +1,64 @@
+package org.apache.yoko.bindings.corba.types;
+
+import java.util.List;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.events.Attribute;
+import javax.xml.stream.events.Namespace;
+
+public class SkipStartEndEventProducer implements CorbaTypeEventProducer {
+
+    private final CorbaTypeEventProducer eventProducer;
+    private final QName name;
+    
+    private int peekedEvent;
+    private boolean hasNext = true;
+
+    public SkipStartEndEventProducer(CorbaTypeEventProducer contentEventProducer, QName n) {
+        eventProducer = contentEventProducer;
+        name = n;
+        // skip start_element
+        contentEventProducer.next();
+        peekedEvent = contentEventProducer.next();
+    }
+
+    public String getLocalName() {
+        return name.getLocalPart();
+    }
+
+    public QName getName() {
+        return name;
+    }
+
+    public String getText() {    
+        return eventProducer.getText();
+    }
+
+    public boolean hasNext() {
+        boolean ret = hasNext;
+        if (ret) {
+            ret = eventProducer.hasNext();
+        }
+        return ret;
+    }
+
+    public int next() {
+        int ret = peekedEvent; 
+        peekedEvent = eventProducer.next();
+        if (peekedEvent == XMLStreamReader.END_ELEMENT) {
+            hasNext = false;
+            peekedEvent = 0;
+        }
+        return ret;
+    }
+
+    public List<Attribute> getAttributes() {
+        return eventProducer.getAttributes();
+    }
+
+    public List<Namespace> getNamespaces() {
+        return eventProducer.getNamespaces();
+    }
+
+}

Propchange: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/SkipStartEndEventProducer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/SkipStartEndEventProducer.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/yoko/branches/perf/src/test/java/org/apache/yoko/bindings/corba/CorbaTypeTest.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/test/java/org/apache/yoko/bindings/corba/CorbaTypeTest.java?view=diff&rev=541753&r1=541752&r2=541753
==============================================================================
--- incubator/yoko/branches/perf/src/test/java/org/apache/yoko/bindings/corba/CorbaTypeTest.java (original)
+++ incubator/yoko/branches/perf/src/test/java/org/apache/yoko/bindings/corba/CorbaTypeTest.java Fri May 25 12:26:58 2007
@@ -58,18 +58,9 @@
     //STAX output incorrect from CXF.
     public void testQName() throws Exception {
     }
-
-    public void testStructWithNillables() throws Exception {
-    }
         
     public void testCompoundArray() throws Exception {
     }
-               
-    public void testEmptyChoice() throws Exception {
-    }
-        
-    public void testSimpleChoice() throws Exception {
-    }        
         
     public void testSimpleAll() throws Exception {
     }

Modified: incubator/yoko/branches/perf/src/test/java/org/apache/yoko/bindings/corba/types/CorbaHandlerUtilsTest.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/test/java/org/apache/yoko/bindings/corba/types/CorbaHandlerUtilsTest.java?view=diff&rev=541753&r1=541752&r2=541753
==============================================================================
--- incubator/yoko/branches/perf/src/test/java/org/apache/yoko/bindings/corba/types/CorbaHandlerUtilsTest.java (original)
+++ incubator/yoko/branches/perf/src/test/java/org/apache/yoko/bindings/corba/types/CorbaHandlerUtilsTest.java Fri May 25 12:26:58 2007
@@ -131,43 +131,43 @@
         // Test for an array handler
         objName = new QName("object");
         objIdlType = new QName(complexTypesNamespaceURI, "TestArray", complexTypesPrefix);        
-        result = CorbaHandlerUtils.createTypeHandler(orb, objName, objIdlType, typeMap, service);
+        result = CorbaHandlerUtils.createTypeHandler(orb, objName, objIdlType, typeMap);
         assertTrue(result instanceof CorbaArrayHandler);
 
         // Test for an enum handler
         objName = new QName("object");
         objIdlType = new QName(complexTypesNamespaceURI, "TestEnum", complexTypesPrefix);
-        result = CorbaHandlerUtils.createTypeHandler(orb, objName, objIdlType, typeMap, service);
+        result = CorbaHandlerUtils.createTypeHandler(orb, objName, objIdlType, typeMap);
         assertTrue(result instanceof CorbaEnumHandler);
 
         // Test for a fixed handler
         objName = new QName("object");
         objIdlType = new QName(complexTypesNamespaceURI, "TestFixed", complexTypesPrefix);
-        result = CorbaHandlerUtils.createTypeHandler(orb, objName, objIdlType, typeMap, service);
+        result = CorbaHandlerUtils.createTypeHandler(orb, objName, objIdlType, typeMap);
         assertTrue(result instanceof CorbaFixedHandler);
 
         // Test for a primitive handler
         objName = new QName("object");
         objIdlType = CorbaConstants.NT_CORBA_BOOLEAN;  
-        result = CorbaHandlerUtils.createTypeHandler(orb, objName, objIdlType, typeMap, service);
+        result = CorbaHandlerUtils.createTypeHandler(orb, objName, objIdlType, typeMap);
         assertTrue(result instanceof CorbaPrimitiveHandler);
 
         // Test for a sequence handler
         objName = new QName("object");
         objIdlType = new QName(complexTypesNamespaceURI, "TestSequence", complexTypesPrefix);
-        result = CorbaHandlerUtils.createTypeHandler(orb, objName, objIdlType, typeMap, service);
+        result = CorbaHandlerUtils.createTypeHandler(orb, objName, objIdlType, typeMap);
         assertTrue(result instanceof CorbaSequenceHandler);
 
         // Test for a struct handler
         objName = new QName("object");
         objIdlType = new QName(complexTypesNamespaceURI, "TestStruct", complexTypesPrefix);
-        result = CorbaHandlerUtils.createTypeHandler(orb, objName, objIdlType, typeMap, service);
+        result = CorbaHandlerUtils.createTypeHandler(orb, objName, objIdlType, typeMap);
         assertTrue(result instanceof CorbaStructHandler);
 
         // Test for a union handler
         objName = new QName("object");
         objIdlType = new QName(complexTypesNamespaceURI, "TestUnion", complexTypesPrefix);
-        result = CorbaHandlerUtils.createTypeHandler(orb, objName, objIdlType, typeMap, service);
+        result = CorbaHandlerUtils.createTypeHandler(orb, objName, objIdlType, typeMap);
         assertTrue(result instanceof CorbaUnionHandler);
     }