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 16:19:18 UTC

svn commit: r541712 - in /incubator/yoko/branches/perf/src: main/java/org/apache/yoko/bindings/corba/interceptors/ main/java/org/apache/yoko/bindings/corba/types/ test/java/org/apache/yoko/bindings/corba/ test/resources/wsdl/type_test/

Author: bravi
Date: Fri May 25 09:19:15 2007
New Revision: 541712

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

Modified:
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamFaultInInterceptor.java
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamInInterceptor.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/AbstractNoStartEndEventProducer.java
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/AbstractStartEndEventProducer.java
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaAnonStructEventProducer.java
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaArrayEventProducer.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/CorbaEnumEventProducer.java
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaExceptionEventProducer.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/CorbaHandlerUtils.java
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaObjectReferenceListener.java
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaPrimitiveSequenceEventProducer.java
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaPrimitiveTypeEventProducer.java
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaSequenceEventProducer.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/CorbaStructEventProducer.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/ParameterEventProducer.java
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/WrappedParameterSequenceEventProducer.java
    incubator/yoko/branches/perf/src/test/java/org/apache/yoko/bindings/corba/AbstractTypeTestClient1.java
    incubator/yoko/branches/perf/src/test/java/org/apache/yoko/bindings/corba/CorbaTypeTest.java
    incubator/yoko/branches/perf/src/test/resources/wsdl/type_test/type_test.xsd

Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamFaultInInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamFaultInInterceptor.java?view=diff&rev=541712&r1=541711&r2=541712
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamFaultInInterceptor.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamFaultInInterceptor.java Fri May 25 09:19:15 2007
@@ -97,7 +97,6 @@
                 
                 CorbaTypeEventProducer faultEventProducer =
                     CorbaHandlerUtils.getTypeEventProducer(exStreamable.getObject(),
-                                                           typeMap,
                                                            service,
                                                            orb);
                 CorbaStreamReader streamReader = new CorbaStreamReader(faultEventProducer);

Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamInInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamInInterceptor.java?view=diff&rev=541712&r1=541711&r2=541712
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamInInterceptor.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamInInterceptor.java Fri May 25 09:19:15 2007
@@ -66,7 +66,6 @@
 
     private ORB orb;
     private ServiceInfo service;
-    private CorbaTypeMap typeMap;
     private CorbaDestination destination;
 
 
@@ -106,7 +105,6 @@
         HandlerIterator paramIterator = new HandlerIterator(outMessage, false);
 
         CorbaTypeEventProducer eventProducer = null;
-        typeMap = outMessage.getCorbaTypeMap();
         Exchange exchange = message.getExchange();
         BindingOperationInfo bindingOpInfo = exchange.get(BindingOperationInfo.class);  
         BindingMessageInfo msgInfo = bindingOpInfo.getOutput();
@@ -122,12 +120,10 @@
             QName wrapperElementQName = msgInfo.getMessageInfo().getName();
             eventProducer = new WrappedParameterSequenceEventProducer(wrapperElementQName,
                                                                       paramIterator,
-                                                                      typeMap,
                                                                       service,
                                                                       orb);
         } else {
             eventProducer = new ParameterEventProducer(paramIterator,
-                                                       typeMap,
                                                        service,
                                                        orb);
         }
@@ -141,7 +137,7 @@
 
         Exchange exchange = message.getExchange();
 
-        typeMap = message.getCorbaTypeMap();
+        CorbaTypeMap typeMap = message.getCorbaTypeMap();
 
         BindingInfo bInfo = destination.getBindingInfo();              
         InterfaceInfo info = bInfo.getInterface();
@@ -166,7 +162,7 @@
         orb = (ORB)exchange.get(ORB.class);
 
         ServerRequest request = exchange.get(ServerRequest.class);
-        NVList list = prepareArguments(message, info, opType, opQName);
+        NVList list = prepareArguments(message, info, opType, opQName, typeMap);
         request.arguments(list);
         message.setList(list);
 
@@ -184,12 +180,10 @@
             QName wrapperElementQName = msgInfo.getMessageInfo().getName();
             eventProducer = new WrappedParameterSequenceEventProducer(wrapperElementQName,
                                                                       paramIterator,
-                                                                      typeMap,
                                                                       service,
                                                                       orb);
         } else {
             eventProducer = new ParameterEventProducer(paramIterator,
-                                                       typeMap,
                                                        service,
                                                        orb);
         }
@@ -200,7 +194,8 @@
     protected NVList prepareArguments(CorbaMessage corbaMsg,
                                       InterfaceInfo info,
                                       OperationType opType,
-                                      QName opQName) {        
+                                      QName opQName,
+                                      CorbaTypeMap typeMap) {        
         BindingInfo bInfo = destination.getBindingInfo();                              
         EndpointInfo eptInfo = destination.getEndPointInfo();
         BindingOperationInfo bOpInfo = bInfo.getOperation(opQName);

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=541712&r1=541711&r2=541712
==============================================================================
--- 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 09:19:15 2007
@@ -24,7 +24,7 @@
 public abstract class AbstractCorbaTypeListener implements CorbaTypeListener {
 
     protected QName currentElement;
-    protected CorbaObjectHandler value;
+    protected final CorbaObjectHandler value;
 
     public AbstractCorbaTypeListener(CorbaObjectHandler handler) {
         value = handler;

Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/AbstractNoStartEndEventProducer.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/AbstractNoStartEndEventProducer.java?view=diff&rev=541712&r1=541711&r2=541712
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/AbstractNoStartEndEventProducer.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/AbstractNoStartEndEventProducer.java Fri May 25 09:19:15 2007
@@ -8,7 +8,6 @@
 import javax.xml.stream.events.Namespace;
 
 import org.apache.cxf.service.model.ServiceInfo;
-import org.apache.yoko.bindings.corba.CorbaTypeMap;
 
 import org.omg.CORBA.ORB;
 
@@ -16,7 +15,6 @@
     
     protected CorbaTypeEventProducer currentEventProducer;
     protected Iterator<CorbaObjectHandler> iterator;
-    protected CorbaTypeMap typeMap;
     protected ServiceInfo serviceInfo;
     protected ORB orb;
 
@@ -44,7 +42,7 @@
             event = currentEventProducer.next();
         } else if (iterator != null && iterator.hasNext()) {
             CorbaObjectHandler obj = iterator.next();
-            currentEventProducer = CorbaHandlerUtils.getTypeEventProducer(obj, typeMap, serviceInfo, orb);
+            currentEventProducer = CorbaHandlerUtils.getTypeEventProducer(obj, serviceInfo, orb);
             event =  currentEventProducer.next();
         } else {
             throw new RuntimeException("hasNext reported in error as there is no next event");

Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/AbstractStartEndEventProducer.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/AbstractStartEndEventProducer.java?view=diff&rev=541712&r1=541711&r2=541712
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/AbstractStartEndEventProducer.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/AbstractStartEndEventProducer.java Fri May 25 09:19:15 2007
@@ -28,7 +28,6 @@
 
 import org.apache.cxf.service.model.ServiceInfo;
 
-import org.apache.yoko.bindings.corba.CorbaTypeMap;
 import org.omg.CORBA.ORB;
 
 public abstract class AbstractStartEndEventProducer implements
@@ -38,7 +37,6 @@
     protected final int[] states = {XMLStreamReader.START_ELEMENT, 0, XMLStreamReader.END_ELEMENT};
     
     protected CorbaTypeEventProducer currentEventProducer;
-    protected CorbaTypeMap typeMap;
     protected QName name;
     protected Iterator<CorbaObjectHandler> iterator;
     protected Iterator<CorbaTypeEventProducer> producers;
@@ -73,7 +71,7 @@
             event = currentEventProducer.next();
         } else if (iterator != null && iterator.hasNext()) {
             CorbaObjectHandler obj = iterator.next();
-            currentEventProducer = CorbaHandlerUtils.getTypeEventProducer(obj, typeMap, serviceInfo, orb);
+            currentEventProducer = CorbaHandlerUtils.getTypeEventProducer(obj, serviceInfo, orb);
             event = currentEventProducer.next();
         } else if (producers != null && producers.hasNext()) {
             currentEventProducer = producers.next();

Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaAnonStructEventProducer.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaAnonStructEventProducer.java?view=diff&rev=541712&r1=541711&r2=541712
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaAnonStructEventProducer.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaAnonStructEventProducer.java Fri May 25 09:19:15 2007
@@ -1,7 +1,6 @@
 package org.apache.yoko.bindings.corba.types;
 
 import org.apache.cxf.service.model.ServiceInfo;
-import org.apache.yoko.bindings.corba.CorbaTypeMap;
 
 import org.omg.CORBA.ORB;
 
@@ -9,12 +8,10 @@
     
     // No start and end elements for the sequence
     public CorbaAnonStructEventProducer(CorbaObjectHandler h,
-                                        CorbaTypeMap tm,
                                         ServiceInfo service,
                                         ORB orbRef) {
         CorbaStructHandler handler = (CorbaStructHandler)h;
         iterator = handler.members.iterator();
-        typeMap = tm;
         orb = orbRef;
         serviceInfo = service;
     }

Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaArrayEventProducer.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaArrayEventProducer.java?view=diff&rev=541712&r1=541711&r2=541712
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaArrayEventProducer.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaArrayEventProducer.java Fri May 25 09:19:15 2007
@@ -20,20 +20,16 @@
 
 import org.apache.cxf.service.model.ServiceInfo;
 
-import org.apache.yoko.bindings.corba.CorbaTypeMap;
-
 import org.omg.CORBA.ORB;
 
 public class CorbaArrayEventProducer extends AbstractStartEndEventProducer {
 
     public CorbaArrayEventProducer(CorbaObjectHandler h,
-                                   CorbaTypeMap tm,
                                    ServiceInfo service,
                                    ORB orbRef) {
         CorbaArrayHandler handler = (CorbaArrayHandler) h;
         name = handler.getName();
         iterator = handler.getElements().iterator();
-        typeMap = tm;
         serviceInfo = service;
         orb = orbRef;
     }

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=541712&r1=541711&r2=541712
==============================================================================
--- 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 09:19:15 2007
@@ -29,12 +29,12 @@
 
 public class CorbaArrayListener extends AbstractCorbaTypeListener {
 
-    private CorbaArrayHandler value;
-    private QName arrayElementType;
+    private final CorbaArrayHandler value;
+    private final QName arrayElementType;
+    private final ORB orb;
+    private final CorbaTypeMap typeMap;
     private QName currentElName;
     private CorbaTypeListener currentTypeListener;
-    private ORB orb;
-    private CorbaTypeMap typeMap;
     
     public CorbaArrayListener(CorbaObjectHandler handler,
                               CorbaTypeMap map,

Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaEnumEventProducer.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaEnumEventProducer.java?view=diff&rev=541712&r1=541711&r2=541712
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaEnumEventProducer.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaEnumEventProducer.java Fri May 25 09:19:15 2007
@@ -25,8 +25,6 @@
 import javax.xml.stream.events.Attribute;
 import javax.xml.stream.events.Namespace;
 
-import org.apache.cxf.service.model.ServiceInfo;
-
 public class CorbaEnumEventProducer implements CorbaTypeEventProducer {
 
     int state;
@@ -34,7 +32,7 @@
     final CorbaEnumHandler handler;
     final QName name;
 
-    public CorbaEnumEventProducer(CorbaObjectHandler h, ServiceInfo service) {
+    public CorbaEnumEventProducer(CorbaObjectHandler h) {
         handler = (CorbaEnumHandler) h;
         name = handler.getName();
     }

Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaExceptionEventProducer.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaExceptionEventProducer.java?view=diff&rev=541712&r1=541711&r2=541712
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaExceptionEventProducer.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaExceptionEventProducer.java Fri May 25 09:19:15 2007
@@ -19,20 +19,17 @@
 package org.apache.yoko.bindings.corba.types;
 
 import org.apache.cxf.service.model.ServiceInfo;
-import org.apache.yoko.bindings.corba.CorbaTypeMap;
 
 import org.omg.CORBA.ORB;
 
 public class CorbaExceptionEventProducer extends AbstractStartEndEventProducer {
 
     public CorbaExceptionEventProducer(CorbaObjectHandler h,
-                                       CorbaTypeMap tm,
                                        ServiceInfo service,
                                        ORB orbRef) {
         CorbaExceptionHandler handler = (CorbaExceptionHandler) h;
         name = handler.getName();
         iterator = handler.members.iterator();
-        typeMap = tm;
         serviceInfo = service;
         orb = orbRef;
     }

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=541712&r1=541711&r2=541712
==============================================================================
--- 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 09:19:15 2007
@@ -30,13 +30,14 @@
 
 public class CorbaExceptionListener extends AbstractCorbaTypeListener {
 
-    private CorbaExceptionHandler value;
+    private final CorbaExceptionHandler value;
+    private final CorbaTypeMap typeMap;
+    private final ORB orb;
+    private final List<MemberType> exMembers;
     private int memberCount;
-    private List<MemberType> exMembers;
     private CorbaTypeListener currentTypeListener;
     private QName memberElement;
-    private CorbaTypeMap typeMap;
-    private ORB orb;
+
 
     public CorbaExceptionListener(CorbaObjectHandler handler,
                                   CorbaTypeMap map,

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=541712&r1=541711&r2=541712
==============================================================================
--- 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 09:19:15 2007
@@ -25,7 +25,6 @@
 import javax.xml.stream.events.Attribute;
 import javax.xml.stream.events.Namespace;
 
-import org.apache.cxf.service.model.ServiceInfo;
 
 public class CorbaFixedEventProducer implements CorbaTypeEventProducer {
 
@@ -34,7 +33,7 @@
     final CorbaFixedHandler handler;
     final QName name;
 
-    public CorbaFixedEventProducer(CorbaObjectHandler h, ServiceInfo service) {
+    public CorbaFixedEventProducer(CorbaObjectHandler h) {
         handler = (CorbaFixedHandler) h;
         name = handler.getName();
     }

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=541712&r1=541711&r2=541712
==============================================================================
--- 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 09:19:15 2007
@@ -488,7 +488,6 @@
     }
     
     public static CorbaTypeEventProducer getTypeEventProducer(CorbaObjectHandler handler,
-                                                              CorbaTypeMap typeMap,
                                                               ServiceInfo serviceInfo,
                                                               ORB orb)
         throws CorbaBindingException {        
@@ -496,25 +495,29 @@
         TypeCode tc = handler.getTypeCode();
         CorbaTypeEventProducer result = null;
         if (CorbaUtils.isPrimitiveIdlType(idlType)) {
-            result = new CorbaPrimitiveTypeEventProducer(handler, serviceInfo);
+            result = new CorbaPrimitiveTypeEventProducer(handler);
         } else {
             switch (tc.kind().value()) {
             case TCKind._tk_any:
                 break;
             case TCKind._tk_array:
-                result = new CorbaArrayEventProducer(handler, typeMap, serviceInfo, orb);
+                result = new CorbaArrayEventProducer(handler, serviceInfo, orb);
                 break;
             case TCKind._tk_enum:
-                result = new CorbaEnumEventProducer(handler, serviceInfo);
+                result = new CorbaEnumEventProducer(handler);
                 break;
             case TCKind._tk_except:
-                result = new CorbaExceptionEventProducer(handler, typeMap, serviceInfo, orb);
+                result = new CorbaExceptionEventProducer(handler, serviceInfo, orb);
                 break;
             case TCKind._tk_fixed:
-                result = new CorbaFixedEventProducer(handler, serviceInfo);
+                result = new CorbaFixedEventProducer(handler);
                 break;
             case TCKind._tk_sequence:
-                result = new CorbaSequenceEventProducer(handler, typeMap, serviceInfo, orb);
+                if (isOctets(handler.getType())) {
+                    result = new CorbaOctetSequenceEventProducer(handler);
+                } else {
+                    result = new CorbaSequenceEventProducer(handler, serviceInfo, orb);
+                }
                 break;
             case TCKind._tk_string:
             case TCKind._tk_wstring:
@@ -522,9 +525,9 @@
                 break;
             case TCKind._tk_struct:
                 if (handler.isAnonymousType()) {
-                    result = new CorbaAnonStructEventProducer(handler, typeMap, serviceInfo, orb);
+                    result = new CorbaAnonStructEventProducer(handler, serviceInfo, orb);
                 } else {
-                    result = new CorbaStructEventProducer(handler, typeMap, serviceInfo, orb);
+                    result = new CorbaStructEventProducer(handler, serviceInfo, orb);
                 }
                 break;
             case TCKind._tk_union:
@@ -560,5 +563,10 @@
             result = true;
         }
         return result;
+    }
+
+    public static boolean isOctets(CorbaTypeImpl baseType) {
+        return baseType.getType().equals(W3CConstants.NT_SCHEMA_BASE64)
+            || baseType.getType().equals(W3CConstants.NT_SCHEMA_HBIN);
     }
 }

Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaObjectReferenceListener.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaObjectReferenceListener.java?view=diff&rev=541712&r1=541711&r2=541712
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaObjectReferenceListener.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaObjectReferenceListener.java Fri May 25 09:19:15 2007
@@ -26,8 +26,8 @@
 
 public class CorbaObjectReferenceListener extends AbstractCorbaTypeListener {
 
-    private CorbaObjectReferenceHandler value;
-    private ORB orb;
+    private final CorbaObjectReferenceHandler value;
+    private final ORB orb;
 
     public CorbaObjectReferenceListener(CorbaObjectHandler handler,
                                         ORB orbRef) {

Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaPrimitiveSequenceEventProducer.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaPrimitiveSequenceEventProducer.java?view=diff&rev=541712&r1=541711&r2=541712
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaPrimitiveSequenceEventProducer.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaPrimitiveSequenceEventProducer.java Fri May 25 09:19:15 2007
@@ -1,7 +1,6 @@
 package org.apache.yoko.bindings.corba.types;
 
 import org.apache.cxf.service.model.ServiceInfo;
-import org.apache.yoko.bindings.corba.CorbaTypeMap;
 
 import org.omg.CORBA.ORB;
 
@@ -9,12 +8,10 @@
     
     // No start and end elements for the sequence
     public CorbaPrimitiveSequenceEventProducer(CorbaObjectHandler h,
-                                               CorbaTypeMap tm,
                                                ServiceInfo service,
                                                ORB orbRef) {
         CorbaSequenceHandler handler = (CorbaSequenceHandler)h;
         iterator = handler.getElements().iterator();
-        typeMap = tm;
         orb = orbRef;
         serviceInfo = service;
     }

Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaPrimitiveTypeEventProducer.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaPrimitiveTypeEventProducer.java?view=diff&rev=541712&r1=541711&r2=541712
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaPrimitiveTypeEventProducer.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaPrimitiveTypeEventProducer.java Fri May 25 09:19:15 2007
@@ -25,8 +25,6 @@
 import javax.xml.stream.events.Attribute;
 import javax.xml.stream.events.Namespace;
 
-import org.apache.cxf.service.model.ServiceInfo;
-
 public class CorbaPrimitiveTypeEventProducer implements CorbaTypeEventProducer {
 
     int state;
@@ -34,7 +32,7 @@
     final CorbaPrimitiveHandler handler;
     final QName name;
 
-    public CorbaPrimitiveTypeEventProducer(CorbaObjectHandler h, ServiceInfo service) {
+    public CorbaPrimitiveTypeEventProducer(CorbaObjectHandler h) {
         handler = (CorbaPrimitiveHandler) h;
         name = handler.getName();
     }

Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaSequenceEventProducer.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaSequenceEventProducer.java?view=diff&rev=541712&r1=541711&r2=541712
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaSequenceEventProducer.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaSequenceEventProducer.java Fri May 25 09:19:15 2007
@@ -20,20 +20,16 @@
 
 import org.apache.cxf.service.model.ServiceInfo;
 
-import org.apache.yoko.bindings.corba.CorbaTypeMap;
-
 import org.omg.CORBA.ORB;
 
 public class CorbaSequenceEventProducer extends AbstractStartEndEventProducer {
 
     public CorbaSequenceEventProducer(CorbaObjectHandler h,
-                                      CorbaTypeMap tm,
                                       ServiceInfo service,
                                       ORB orbRef) {
         CorbaSequenceHandler handler = (CorbaSequenceHandler) h;
         name = handler.getName();
         iterator = handler.getElements().iterator();
-        typeMap = tm;
         serviceInfo = service;
         orb = orbRef;
     }

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=541712&r1=541711&r2=541712
==============================================================================
--- 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 09:19:15 2007
@@ -33,14 +33,14 @@
 
 public class CorbaSequenceListener extends AbstractCorbaTypeListener {
 
-    private CorbaSequenceHandler value;
-    private QName seqElementType;
+    private final CorbaSequenceHandler value;
+    private final QName seqElementType;
+    private final ORB orb;
+    private final CorbaTypeMap typeMap;
+    private final boolean isOctets;
     private QName currentElName;
     private CorbaTypeListener currentTypeListener;
-    private ORB orb;
-    private CorbaTypeMap typeMap;
-    private CorbaTypeImpl seqType;
-    
+
     public CorbaSequenceListener(CorbaObjectHandler handler,
                                  CorbaTypeMap map,
                                  ORB orbRef) {
@@ -48,7 +48,7 @@
         value = (CorbaSequenceHandler) handler;
         orb = orbRef;
         typeMap = map;
-        seqType = handler.getType();
+        CorbaTypeImpl seqType = handler.getType();
         if (seqType instanceof Anonsequence) {
             Anonsequence anonSeqType = (Anonsequence) seqType;
             seqElementType = anonSeqType.getElemtype();
@@ -56,6 +56,8 @@
             Sequence type = (Sequence) seqType;
             seqElementType = type.getElemtype();
         }
+        isOctets = seqType.getType().equals(W3CConstants.NT_SCHEMA_BASE64)
+            || seqType.getType().equals(W3CConstants.NT_SCHEMA_HBIN);
     }
 
     public void processStartElement(QName name) {
@@ -84,9 +86,7 @@
     public void processCharacters(String text) {
         if (currentTypeListener == null) {
             // primitive sequence
-            boolean readOctets = seqType.getType().equals(W3CConstants.NT_SCHEMA_BASE64)
-                || seqType.getType().equals(W3CConstants.NT_SCHEMA_HBIN);
-            if (readOctets) {
+            if (isOctets) {
                 QName valueQName = new QName("value");
                 TypeCode valueTC = orb.get_primitive_tc(TCKind.from_int(TCKind._tk_octet));
                 byte[] bytes = text.getBytes();

Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaStructEventProducer.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaStructEventProducer.java?view=diff&rev=541712&r1=541711&r2=541712
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaStructEventProducer.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaStructEventProducer.java Fri May 25 09:19:15 2007
@@ -19,20 +19,17 @@
 package org.apache.yoko.bindings.corba.types;
 
 import org.apache.cxf.service.model.ServiceInfo;
-import org.apache.yoko.bindings.corba.CorbaTypeMap;
 
 import org.omg.CORBA.ORB;
 
 public class CorbaStructEventProducer extends AbstractStartEndEventProducer {
 
     public CorbaStructEventProducer(CorbaObjectHandler h,
-                                    CorbaTypeMap tm,
                                     ServiceInfo service,
                                     ORB orbRef) {
         CorbaStructHandler handler = (CorbaStructHandler) h;
         name = handler.getName();
         iterator = handler.members.iterator();
-        typeMap = tm;
         serviceInfo = service;
         orb = orbRef;
     }
@@ -47,12 +44,13 @@
             CorbaObjectHandler obj = iterator.next();
             //Special case for primitive sequence inside struct
             if ((obj instanceof CorbaSequenceHandler)
-                && (CorbaHandlerUtils.isPrimitiveIDLTypeSequence(obj))) {
+                && (CorbaHandlerUtils.isPrimitiveIDLTypeSequence(obj))
+                && (!CorbaHandlerUtils.isOctets(obj.getType()))) {
                 currentEventProducer =
-                    new CorbaPrimitiveSequenceEventProducer(obj, typeMap, serviceInfo, orb);
+                    new CorbaPrimitiveSequenceEventProducer(obj, serviceInfo, orb);
             } else {
                 currentEventProducer =
-                    CorbaHandlerUtils.getTypeEventProducer(obj, typeMap, serviceInfo, orb);
+                    CorbaHandlerUtils.getTypeEventProducer(obj, serviceInfo, orb);
             }
             event = currentEventProducer.next();
         } else {

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=541712&r1=541711&r2=541712
==============================================================================
--- 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 09:19:15 2007
@@ -31,13 +31,13 @@
 
 public class CorbaStructListener extends AbstractCorbaTypeListener {
 
-    private CorbaStructHandler value;
+    private final CorbaStructHandler value;
+    private final List<MemberType> structMembers;
+    private final CorbaTypeMap typeMap;
+    private final ORB orb;
     private int memberCount;
-    private List<MemberType> structMembers;
     private CorbaTypeListener currentTypeListener;
     private QName memberElement;
-    private CorbaTypeMap typeMap;
-    private ORB orb;
 
     public CorbaStructListener(CorbaObjectHandler handler,
                                CorbaTypeMap map,

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=541712&r1=541711&r2=541712
==============================================================================
--- 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 09:19:15 2007
@@ -27,24 +27,19 @@
 
 import org.apache.cxf.service.model.ServiceInfo;
 
-import org.apache.yoko.bindings.corba.CorbaTypeMap;
-
 import org.omg.CORBA.ORB;
 
 public class ParameterEventProducer implements CorbaTypeEventProducer {
 
     protected CorbaTypeEventProducer currentEventProducer;
     protected Iterator<CorbaObjectHandler> iterator;
-    private CorbaTypeMap typeMap;
     private ServiceInfo serviceInfo;
     private ORB orb;
 
     public ParameterEventProducer(HandlerIterator paramIterator,
-                                  CorbaTypeMap map,
                                   ServiceInfo service,
                                   ORB orbRef) {
         iterator = paramIterator;
-        typeMap = map;
         serviceInfo = service;
         orb = orbRef;
     }
@@ -73,7 +68,7 @@
             event = currentEventProducer.next();
         } else if (iterator != null && iterator.hasNext()) {
             CorbaObjectHandler obj = iterator.next();
-            currentEventProducer = CorbaHandlerUtils.getTypeEventProducer(obj, typeMap, serviceInfo, orb);
+            currentEventProducer = CorbaHandlerUtils.getTypeEventProducer(obj, serviceInfo, orb);
             event =  currentEventProducer.next();
         } else {
             throw new RuntimeException("hasNext reported in error as there is no next event");

Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/WrappedParameterSequenceEventProducer.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/WrappedParameterSequenceEventProducer.java?view=diff&rev=541712&r1=541711&r2=541712
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/WrappedParameterSequenceEventProducer.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/WrappedParameterSequenceEventProducer.java Fri May 25 09:19:15 2007
@@ -22,20 +22,16 @@
 
 import org.apache.cxf.service.model.ServiceInfo;
 
-import org.apache.yoko.bindings.corba.CorbaTypeMap;
-
 import org.omg.CORBA.ORB;
 
 public class WrappedParameterSequenceEventProducer extends AbstractStartEndEventProducer {
 
     public WrappedParameterSequenceEventProducer(QName wrapperElementQName,
                                                  HandlerIterator paramIterator,
-                                                 CorbaTypeMap typeMap,
                                                  ServiceInfo service,
                                                  ORB orbRef) {
         name = wrapperElementQName;
         iterator = paramIterator;
-        this.typeMap = typeMap;
         serviceInfo = service;
         orb = orbRef;
     }

Modified: incubator/yoko/branches/perf/src/test/java/org/apache/yoko/bindings/corba/AbstractTypeTestClient1.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/test/java/org/apache/yoko/bindings/corba/AbstractTypeTestClient1.java?view=diff&rev=541712&r1=541711&r2=541712
==============================================================================
--- incubator/yoko/branches/perf/src/test/java/org/apache/yoko/bindings/corba/AbstractTypeTestClient1.java (original)
+++ incubator/yoko/branches/perf/src/test/java/org/apache/yoko/bindings/corba/AbstractTypeTestClient1.java Fri May 25 09:19:15 2007
@@ -27,6 +27,7 @@
 import javax.xml.ws.Holder;
 
 import org.apache.type_test.types1.AnonymousStruct;
+import org.apache.type_test.types1.BinaryStruct;
 import org.apache.type_test.types1.BoundedArray;
 import org.apache.type_test.types1.CompoundArray;
 import org.apache.type_test.types1.EmptyAll;
@@ -504,6 +505,33 @@
             assertTrue("testSimpleAll(): Incorrect value for out param",
                        equals(yOrig, z.value));
             assertTrue("testSimpleAll(): Incorrect return value", equals(x, ret));
+        }
+    }
+
+    //org.apache.type_test.types1.SimpleStruct
+
+    protected boolean equals(BinaryStruct x, BinaryStruct y) {
+        return Arrays.equals(x.getVarBinary(), y.getVarBinary());
+    }
+    
+    public void testBinaryStruct() throws Exception {
+        BinaryStruct x = new BinaryStruct();
+        byte[] bytes = "hello".getBytes();
+        x.setVarBinary(bytes);
+
+        BinaryStruct yOrig = new BinaryStruct();
+        yOrig.setVarBinary("goodbye".getBytes());
+
+        Holder<BinaryStruct> y = new Holder<BinaryStruct>(yOrig);
+        Holder<BinaryStruct> z = new Holder<BinaryStruct>();
+        BinaryStruct ret = client.testBinaryStruct(x, y, z);
+
+        if (!perfTestOnly) {
+            assertTrue("testBinaryStruct(): Incorrect value for inout param",
+                       equals(x, y.value));
+            assertTrue("testBinaryStruct(): Incorrect value for out param",
+                       equals(yOrig, z.value));
+            assertTrue("testBinaryStruct(): Incorrect return value", equals(x, ret));
         }
     }
 

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=541712&r1=541711&r2=541712
==============================================================================
--- 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 09:19:15 2007
@@ -59,9 +59,21 @@
     public void testQName() throws Exception {
     }
 
-    //STAX conversion from string to bytes fails.
-    public void testHexBinary() 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 {
+    }
+
         
     static abstract class CorbaTypeTestSetup extends TestSetup {
 

Modified: incubator/yoko/branches/perf/src/test/resources/wsdl/type_test/type_test.xsd
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/test/resources/wsdl/type_test/type_test.xsd?view=diff&rev=541712&r1=541711&r2=541712
==============================================================================
--- incubator/yoko/branches/perf/src/test/resources/wsdl/type_test/type_test.xsd (original)
+++ incubator/yoko/branches/perf/src/test/resources/wsdl/type_test/type_test.xsd Fri May 25 09:19:15 2007
@@ -227,6 +227,12 @@
         <attribute name="varAttrString" type="string"/>
     </complexType>
 
+    <complexType name="BinaryStruct">
+        <sequence>
+            <element name="varBinary" type="hexBinary"/>
+        </sequence>
+    </complexType>
+
   </itst:it_test_group>
 </schema>