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/18 17:37:40 UTC

svn commit: r539532 - in /incubator/yoko/branches/perf/src: main/java/org/apache/yoko/bindings/corba/ main/java/org/apache/yoko/bindings/corba/interceptors/ main/java/org/apache/yoko/bindings/corba/runtime/ main/java/org/apache/yoko/bindings/corba/type...

Author: bravi
Date: Fri May 18 10:37:38 2007
New Revision: 539532

URL: http://svn.apache.org/viewvc?view=rev&rev=539532
Log:
[YOKO-366] - Updates to the perf branch for initial performance framework.

Added:
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/TypeMapCache.java   (with props)
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamInInterceptor.java   (with props)
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaStreamReader.java   (with props)
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/AbstractStartEndEventProducer.java   (with props)
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaPrimitiveTypeEventProducer.java   (with props)
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaSequenceEventProducer.java   (with props)
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaStructEventProducer.java   (with props)
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaTypeEventProducer.java   (with props)
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/HandlerIterator.java   (with props)
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/ParameterSequenceEventProducer.java   (with props)
Modified:
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/CorbaBindingFactory.java
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/CorbaConduit.java
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/CorbaDestination.java
    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/interceptors/CorbaStreamOutInterceptor.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/CorbaHandlerUtils.java
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaSequenceListener.java
    incubator/yoko/branches/perf/src/test/java/org/apache/yoko/bindings/corba/CorbaBindingFactoryTest.java

Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/CorbaBindingFactory.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/CorbaBindingFactory.java?view=diff&rev=539532&r1=539531&r2=539532
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/CorbaBindingFactory.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/CorbaBindingFactory.java Fri May 18 10:37:38 2007
@@ -31,6 +31,7 @@
 import org.apache.cxf.binding.Binding;
 import org.apache.cxf.binding.BindingFactoryManager;
 
+import org.apache.cxf.interceptor.BareInInterceptor;
 import org.apache.cxf.interceptor.BareOutInterceptor;
 
 import org.apache.cxf.service.model.BindingInfo;
@@ -49,6 +50,7 @@
 import org.apache.yoko.bindings.corba.interceptors.CorbaFaultInInterceptor;
 import org.apache.yoko.bindings.corba.interceptors.CorbaFaultOutInterceptor;
 import org.apache.yoko.bindings.corba.interceptors.CorbaInInterceptor;
+import org.apache.yoko.bindings.corba.interceptors.CorbaStreamInInterceptor;
 import org.apache.yoko.bindings.corba.interceptors.CorbaStreamOutInterceptor;
 
 import org.apache.yoko.bindings.corba.utils.OrbConfig;
@@ -101,11 +103,18 @@
 
     public Binding createBinding(BindingInfo bindingInfo) {
         CorbaBinding binding = new CorbaBinding();
-        binding.getInInterceptors().add(new CorbaInInterceptor());
-        binding.getOutInterceptors().add(new CorbaStreamOutInterceptor());
+
         binding.getInFaultInterceptors().add(new CorbaFaultInInterceptor());
         binding.getOutFaultInterceptors().add(new CorbaFaultOutInterceptor());
         binding.getOutInterceptors().add(new BareOutInterceptor());
+        binding.getOutInterceptors().add(new CorbaStreamOutInterceptor());
+        boolean server = Boolean.getBoolean("isServer");
+        if (server) {
+            binding.getInInterceptors().add(new CorbaInInterceptor());
+        } else {      
+            binding.getInInterceptors().add(new BareInInterceptor());
+            binding.getInInterceptors().add(new CorbaStreamInInterceptor());
+        }
         binding.setBindingInfo(bindingInfo);
         return binding;
     }

Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/CorbaConduit.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/CorbaConduit.java?view=diff&rev=539532&r1=539531&r2=539532
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/CorbaConduit.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/CorbaConduit.java Fri May 18 10:37:38 2007
@@ -21,7 +21,6 @@
 
 import java.io.IOException;
 import java.io.OutputStream;
-import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -47,7 +46,6 @@
 import org.apache.schemas.yoko.bindings.corba.AddressType;
 import org.apache.schemas.yoko.bindings.corba.OperationType;
 import org.apache.schemas.yoko.bindings.corba.RaisesType;
-import org.apache.schemas.yoko.bindings.corba.TypeMappingType;
 import org.apache.yoko.bindings.corba.types.CorbaHandlerUtils;
 import org.apache.yoko.bindings.corba.types.CorbaObjectHandler;
 import org.apache.yoko.bindings.corba.utils.ContextUtils;
@@ -83,14 +81,7 @@
         target = getTargetReference(ref);
         orbConfig = config;
         orb = CorbaBindingHelper.getDefaultORB(config);
-        typeMaps = new ArrayList<CorbaTypeMap>();
-        if (ei.getService() != null) {
-            List<TypeMappingType> corbaTypes =
-                ei.getService().getDescription().getExtensors(TypeMappingType.class);
-            if (corbaTypes != null) {
-                CorbaUtils.createCorbaTypeMap(typeMaps, corbaTypes);
-            }
-        }
+        typeMaps = TypeMapCache.get(ei.getService());
     }
 
     public void prepare(Message message) throws IOException {    
@@ -116,6 +107,10 @@
             message.put(CorbaConstants.CORBA_ENDPOINT_OBJECT, targetObject);
             message.setContent(OutputStream.class,
                                new CorbaOutputStream(message));
+            
+            CorbaMessage corbaMessage = (CorbaMessage) message;
+            corbaMessage.setCorbaTypeMap(typeMaps);
+            
         } catch (java.lang.Exception ex) {
             ex.printStackTrace();
             LOG.log(Level.SEVERE, "Could not resolve target object");
@@ -353,6 +348,7 @@
             inMessage.setExchange(exchange);
             CorbaMessage inCorbaMsg = new CorbaMessage(inMessage);
             CorbaMessage corbaMsg = (CorbaMessage) message;
+            inCorbaMsg.setCorbaTypeMap(corbaMsg.getCorbaTypeMap());
             if (corbaMsg.getStreamableException() != null) {
                 exchange.setInFaultMessage(corbaMsg);
                 inCorbaMsg.setStreamableException(corbaMsg.getStreamableException());

Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/CorbaDestination.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/CorbaDestination.java?view=diff&rev=539532&r1=539531&r2=539532
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/CorbaDestination.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/CorbaDestination.java Fri May 18 10:37:38 2007
@@ -20,7 +20,6 @@
 package org.apache.yoko.bindings.corba;
 
 import java.io.IOException;
-import java.util.ArrayList;
 import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
@@ -36,7 +35,6 @@
 import org.apache.cxf.ws.addressing.EndpointReferenceType;
 
 import org.apache.schemas.yoko.bindings.corba.AddressType;
-import org.apache.schemas.yoko.bindings.corba.TypeMappingType;
 
 import org.apache.yoko.bindings.corba.runtime.CorbaDSIServant;
 import org.apache.yoko.bindings.corba.utils.CorbaBindingHelper;
@@ -72,12 +70,7 @@
         reference.setAddress(addr);
         endpointInfo = ei;
         orbConfig = config;
-        typeMaps = new ArrayList<CorbaTypeMap>(); 
-        List<TypeMappingType> corbaTypes =
-            binding.getService().getDescription().getExtensors(TypeMappingType.class);
-        if (corbaTypes != null) {
-            CorbaUtils.createCorbaTypeMap(typeMaps, corbaTypes);
-        }
+        typeMaps = TypeMapCache.get(binding.getService());
     }
 
     public EndpointReferenceType getAddress() {

Added: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/TypeMapCache.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/TypeMapCache.java?view=auto&rev=539532
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/TypeMapCache.java (added)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/TypeMapCache.java Fri May 18 10:37:38 2007
@@ -0,0 +1,50 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.yoko.bindings.corba;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.cxf.service.model.ServiceInfo;
+import org.apache.schemas.yoko.bindings.corba.TypeMappingType;
+import org.apache.yoko.bindings.corba.utils.CorbaUtils;
+
+public class TypeMapCache {
+
+    private static Map<ServiceInfo, List<CorbaTypeMap>> cache =
+        new HashMap<ServiceInfo, List<CorbaTypeMap>>();
+
+    public static List<CorbaTypeMap> get(ServiceInfo service) {
+        synchronized (cache) {
+            if (!cache.containsKey(service)) {
+                List<CorbaTypeMap> tm = new ArrayList<CorbaTypeMap>();
+                List<TypeMappingType> corbaTypes = service.getDescription()
+                        .getExtensors(TypeMappingType.class);
+                if (corbaTypes != null) {
+                    CorbaUtils.createCorbaTypeMap(tm, corbaTypes);
+                }
+                cache.put(service, tm);
+            }
+        }
+        return cache.get(service);
+    }
+
+}

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

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

Added: 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=auto&rev=539532
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamInInterceptor.java (added)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamInInterceptor.java Fri May 18 10:37:38 2007
@@ -0,0 +1,289 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.yoko.bindings.corba.interceptors;
+
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.cxf.interceptor.Fault;
+import org.apache.cxf.message.Exchange;
+import org.apache.cxf.message.Message;
+import org.apache.cxf.phase.AbstractPhaseInterceptor;
+import org.apache.cxf.phase.Phase;
+import org.apache.cxf.service.model.BindingInfo;
+import org.apache.cxf.service.model.BindingMessageInfo;
+import org.apache.cxf.service.model.BindingOperationInfo;
+import org.apache.cxf.service.model.EndpointInfo;
+import org.apache.cxf.service.model.InterfaceInfo;
+import org.apache.cxf.service.model.MessageInfo;
+import org.apache.cxf.service.model.MessagePartInfo;
+import org.apache.cxf.service.model.OperationInfo;
+import org.apache.cxf.service.model.ServiceInfo;
+import org.apache.cxf.ws.addressing.EndpointReferenceType;
+import org.apache.schemas.yoko.bindings.corba.ModeType;
+import org.apache.schemas.yoko.bindings.corba.OperationType;
+import org.apache.schemas.yoko.bindings.corba.ParamType;
+import org.apache.yoko.bindings.corba.CorbaDestination;
+import org.apache.yoko.bindings.corba.CorbaMessage;
+import org.apache.yoko.bindings.corba.CorbaStreamable;
+import org.apache.yoko.bindings.corba.CorbaTypeMap;
+import org.apache.yoko.bindings.corba.runtime.CorbaStreamReader;
+import org.apache.yoko.bindings.corba.types.CorbaHandlerUtils;
+import org.apache.yoko.bindings.corba.types.CorbaObjectHandler;
+import org.apache.yoko.bindings.corba.types.CorbaTypeEventProducer;
+import org.apache.yoko.bindings.corba.types.HandlerIterator;
+import org.apache.yoko.bindings.corba.types.ParameterSequenceEventProducer;
+import org.apache.yoko.bindings.corba.utils.ContextUtils;
+
+import org.omg.CORBA.Any;
+import org.omg.CORBA.NVList;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.ServerRequest;
+
+public class CorbaStreamInInterceptor extends AbstractPhaseInterceptor<Message> {
+
+    private ORB orb;
+    private ServiceInfo service;
+    private List<CorbaTypeMap> typeMaps;
+
+    public CorbaStreamInInterceptor() {
+        super();
+        setPhase(Phase.PRE_STREAM);
+    }
+    
+    public void handleFault(Message message) {
+        Exception ex = message.getContent(Exception.class);
+        if (ex != null) {
+            ex.printStackTrace();
+        }
+        throw new RuntimeException("Not implemented");
+    }
+
+    public void handleMessage(Message message) throws Fault {
+        if (ContextUtils.isRequestor(message)) {
+            handleReply(message);
+        } else {
+            handleRequest(message);
+        }
+    }
+
+    private void handleReply(Message message) {
+        
+        CorbaMessage outMessage = (CorbaMessage)message.getExchange().getOutMessage();
+        /*
+        if (message.getStreamableException() != null || message.getSystemException() != null) {
+            Endpoint ep = message.getExchange().get(Endpoint.class);
+            message.getInterceptorChain().abort();
+            if (ep.getInFaultObserver() != null) {
+                ep.getInFaultObserver().onMessage(message);
+                return;
+            }
+        }
+        */
+
+        HandlerIterator paramIterator = new HandlerIterator(outMessage, false);
+
+        CorbaTypeEventProducer eventProducer = null;
+        typeMaps = outMessage.getCorbaTypeMap();
+        Exchange exchange = message.getExchange();
+        BindingOperationInfo bindingOpInfo = exchange.get(BindingOperationInfo.class);  
+        BindingMessageInfo msgInfo = bindingOpInfo.getOutput();
+        if (msgInfo.getMessageParts().size() == 1) {
+            // wrapper element around our args
+            // REVISIT, bravi, message name same as the element name
+            QName wrapperElementQName = msgInfo.getMessageInfo().getName();
+            eventProducer = new ParameterSequenceEventProducer(wrapperElementQName,
+                                                               paramIterator,
+                                                               typeMaps);
+        } else {
+            throw new RuntimeException("non wrapped parts not implemented");
+        }
+        CorbaStreamReader reader = new CorbaStreamReader(eventProducer);
+        message.setContent(XMLStreamReader.class, reader);
+    }
+
+    private void handleRequest(Message msg) {
+
+        CorbaMessage message = (CorbaMessage) msg;
+
+        CorbaDestination destination = null;
+        if (message.getDestination() != null) {
+            destination = (CorbaDestination)message.getDestination();
+        } else {
+            destination = (CorbaDestination)message.getExchange().getDestination();
+        }
+        service = destination.getBindingInfo().getService();
+        Exchange exchange = message.getExchange();
+
+        typeMaps = message.getCorbaTypeMap();
+
+        BindingInfo bInfo = destination.getBindingInfo();              
+        InterfaceInfo info = bInfo.getInterface();
+        String opName = exchange.get(String.class);
+        Iterator i = bInfo.getOperations().iterator();
+        OperationType opType = null;
+        BindingOperationInfo bopInfo = null;
+        QName opQName = null;
+        while (i.hasNext()) {
+            bopInfo = (BindingOperationInfo)i.next();
+            if (bopInfo.getName().getLocalPart().equals(opName)) {
+                opType = bopInfo.getExtensor(OperationType.class);
+                opQName = bopInfo.getName();
+                break;
+            }
+        }
+
+        if (opType == null) {
+            throw new RuntimeException("Couldn't find the binding operation for " + opName);
+        }
+
+        orb = (ORB)exchange.get(ORB.class);
+
+        ServerRequest request = exchange.get(ServerRequest.class);
+        NVList list = prepareArguments(message, destination, info, opType, opQName);
+        request.arguments(list);
+        message.setList(list);
+
+        HandlerIterator paramIterator = new HandlerIterator(message, true);
+
+        CorbaTypeEventProducer eventProducer = null;
+        BindingMessageInfo msgInfo = bopInfo.getInput();
+        if (msgInfo.getMessageParts().size() == 1) {
+            // wrapper element around our args
+            // REVISIT, bravi, message name same as the element name
+            QName wrapperElementQName = msgInfo.getMessageInfo().getName();
+            eventProducer = new ParameterSequenceEventProducer(wrapperElementQName,
+                                                               paramIterator,
+                                                               typeMaps);
+        } else {
+            throw new RuntimeException("non wrapped parts not implemented");
+        }
+        CorbaStreamReader reader = new CorbaStreamReader(eventProducer);
+        message.setContent(XMLStreamReader.class, reader);
+    }
+
+    protected NVList prepareArguments(CorbaMessage corbaMsg,
+                                      CorbaDestination destination,
+                                      InterfaceInfo info,
+                                      OperationType opType,
+                                      QName opQName) {        
+        BindingInfo bInfo = destination.getBindingInfo();                              
+        EndpointInfo eptInfo = destination.getEndPointInfo();
+        BindingOperationInfo bOpInfo = bInfo.getOperation(opQName);
+        OperationInfo opInfo = bOpInfo.getOperationInfo();        
+        Exchange exg = corbaMsg.getExchange();
+        exg.put(BindingInfo.class, bInfo);
+        exg.put(InterfaceInfo.class, info);
+        exg.put(EndpointInfo.class, eptInfo);
+        exg.put(EndpointReferenceType.class, destination.getAddress());
+        exg.put(ServiceInfo.class, service);
+        exg.put(BindingOperationInfo.class, bOpInfo);        
+        exg.put(OperationInfo.class, opInfo);
+        exg.put(MessageInfo.class, opInfo.getInput());
+        exg.put(String.class, opQName.getLocalPart());        
+        exg.setInMessage(corbaMsg);
+
+        corbaMsg.put(MessageInfo.class, opInfo.getInput());
+                       
+        List<ParamType> paramTypes = opType.getParam();       
+        CorbaStreamable[] arguments = new CorbaStreamable[paramTypes.size()];                               
+        NVList list = prepareDIIArgsList(corbaMsg, bOpInfo, arguments, paramTypes, typeMaps);         
+        
+        return list;
+        
+    }
+    
+    protected NVList prepareDIIArgsList(CorbaMessage corbaMsg,
+                                        BindingOperationInfo boi,
+                                        CorbaStreamable[] streamables, 
+                                        List<ParamType> paramTypes,
+                                        List<CorbaTypeMap> maps) {
+        try {
+            // Build the list of DII arguments, returns, and exceptions        
+            NVList list = orb.create_list(streamables.length);        
+        
+            boolean wrap = false;
+            if (boi.isUnwrappedCapable()) {
+                wrap = true;
+            }
+            OperationInfo opInfo = boi.getOperationInfo();
+
+            for (int i = 0; i < paramTypes.size(); i++) {           
+                ParamType param = paramTypes.get(i);
+                QName paramIdlType = param.getIdltype();
+                QName paramName = new QName("", param.getName());
+                ModeType paramMode = param.getMode();
+                if (!wrap) {
+                    MessagePartInfo part;
+                    if (paramMode.value().equals("in")) {
+                        part = getInputMessagePartInfo(opInfo, param.getName());
+                    } else {
+                        part = getOutputMessagePartInfo(opInfo, param.getName());               
+                    }
+                    if (part != null && part.isElement()) {
+                        paramName = part.getElementQName();
+                    }
+                }
+                CorbaObjectHandler obj = 
+                    CorbaHandlerUtils.initializeObjectHandler(orb, paramName, paramIdlType, maps, service);
+                streamables[i] = corbaMsg.createStreamableObject(obj, paramName);
+                if (paramMode.value().equals("in")) {
+                    streamables[i].setMode(org.omg.CORBA.ARG_IN.value);
+                } else if (paramMode.value().equals("out")) {
+                    streamables[i].setMode(org.omg.CORBA.ARG_OUT.value);
+                } else {
+                    streamables[i].setMode(org.omg.CORBA.ARG_INOUT.value);
+                }
+
+                Any value = orb.create_any();
+                value.insert_Streamable(streamables[i]);
+                list.add_value(streamables[i].getName(), value, streamables[i].getMode());              
+                corbaMsg.addStreamableArgument(streamables[i]);
+            }
+            return list;
+        } catch (Exception ex) {
+            throw new RuntimeException(ex);
+        }
+    }    
+
+    protected MessagePartInfo getInputMessagePartInfo(OperationInfo opInfo, String partName) {
+        MessageInfo msgInfo = opInfo.getInput();
+        List<MessagePartInfo> parts = msgInfo.getMessageParts();
+        for (int i = 0; i < parts.size(); i++) {
+            if (parts.get(i).getName().getLocalPart().equals(partName)) {
+                return parts.get(i);
+            }
+        }
+        return null;
+    }
+
+    protected MessagePartInfo getOutputMessagePartInfo(OperationInfo opInfo, String partName) {
+        MessageInfo msgInfo = opInfo.getOutput();
+        List<MessagePartInfo> parts = msgInfo.getMessageParts();
+        for (int i = 0; i < parts.size(); i++) {
+            if (parts.get(i).getName().getLocalPart().equals(partName)) {
+                return parts.get(i);
+            }
+        }
+        return null;
+    }
+}

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

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

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=539532&r1=539531&r2=539532
==============================================================================
--- 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 18 10:37:38 2007
@@ -94,7 +94,8 @@
         for (Iterator<ParamType> iter = paramTypes.iterator(); iter.hasNext();) {
             ParamType param = iter.next();
             QName idlType = param.getIdltype();
-            QName paramName = new QName("", param.getName());
+            MessageInfo msgInfo = opInfo.getOutput();
+            QName paramName = new QName(msgInfo.getName().getNamespaceURI(), param.getName());
             CorbaObjectHandler obj = null;
             if (param.getMode().equals(ModeType.OUT)) {
                 if (!wrap) {
@@ -118,9 +119,7 @@
                 streamable.setMode(org.omg.CORBA.ARG_IN.value);
             } else if (paramMode.value().equals("inout")) {
                 streamable.setMode(org.omg.CORBA.ARG_INOUT.value);
-            } else if (paramMode.value().equals("out")) {
-                streamable.setMode(org.omg.CORBA.ARG_OUT.value);
-            }
+            } // default mode is out
             message.addStreamableArgument(streamable);
         }
 
@@ -136,10 +135,72 @@
     }
 
     private void handleInBoundMessage(CorbaMessage message, BindingOperationInfo boi) {
+        OperationInfo opInfo = boi.getOperationInfo();
+        OperationType opType = boi.getExtensor(OperationType.class);
+        List<ParamType> paramTypes = opType.getParam();
+        boolean wrap = false;
+        if (boi.isUnwrappedCapable()) {
+            wrap = true;
+        }
+        CorbaStreamWriter writer = (CorbaStreamWriter) message.getContent(XMLStreamWriter.class);
+        CorbaObjectHandler[] objs = writer.getCorbaObjects();
+        int count = 0;
+        ArgType returnParam = opType.getReturn();
+        if (returnParam != null) {
+            QName retName = new QName("", returnParam.getName());
+            CorbaObjectHandler obj = objs[count++];
+            CorbaStreamable streamable = message.createStreamableObject(obj, retName);
+            message.setStreamableReturn(streamable);
+        }
+        for (Iterator<ParamType> iter = paramTypes.iterator(); iter.hasNext();) {
+            ParamType param = iter.next();
+            QName idlType = param.getIdltype();
+            MessageInfo msgInfo = opInfo.getInput();
+            QName paramName = new QName(msgInfo.getName().getNamespaceURI(), param.getName());
+            CorbaObjectHandler obj = null;
+            if (param.getMode().equals(ModeType.IN)) {
+                if (!wrap) {
+                    MessagePartInfo part =
+                        getInputMessagePartInfo(opInfo, param.getName()); 
+                    if (part != null && part.isElement()) {
+                        paramName = part.getElementQName();
+                    }              
+                }
+                obj = CorbaHandlerUtils.initializeObjectHandler(orb,
+                                                                paramName,
+                                                                idlType,
+                                                                typeMaps,
+                                                                service);
+            } else {
+                obj = objs[count++];
+            }
+            CorbaStreamable streamable = message.createStreamableObject(obj, paramName);
+            ModeType paramMode = param.getMode();
+            if (paramMode.value().equals("in")) {
+                streamable.setMode(org.omg.CORBA.ARG_IN.value);
+            } else if (paramMode.value().equals("inout")) {
+                streamable.setMode(org.omg.CORBA.ARG_INOUT.value);
+            } else if (paramMode.value().equals("out")) {
+                streamable.setMode(org.omg.CORBA.ARG_OUT.value);
+            }
+            message.addStreamableArgument(streamable);
+        }
+        
     }
 
     protected MessagePartInfo getOutputMessagePartInfo(OperationInfo opInfo, String partName) {
         MessageInfo msgInfo = opInfo.getOutput();
+        List<MessagePartInfo> parts = msgInfo.getMessageParts();
+        for (int i = 0; i < parts.size(); i++) {
+            if (parts.get(i).getName().getLocalPart().equals(partName)) {
+                return parts.get(i);
+            }
+        }
+        return null;
+    }
+
+    protected MessagePartInfo getInputMessagePartInfo(OperationInfo opInfo, String partName) {
+        MessageInfo msgInfo = opInfo.getInput();
         List<MessagePartInfo> parts = msgInfo.getMessageParts();
         for (int i = 0; i < parts.size(); i++) {
             if (parts.get(i).getName().getLocalPart().equals(partName)) {

Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamOutInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamOutInterceptor.java?view=diff&rev=539532&r1=539531&r2=539532
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamOutInterceptor.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamOutInterceptor.java Fri May 18 10:37:38 2007
@@ -34,16 +34,15 @@
 import org.apache.cxf.service.model.BindingOperationInfo;
 import org.apache.cxf.service.model.ServiceInfo;
 
+import org.apache.schemas.yoko.bindings.corba.ArgType;
 import org.apache.schemas.yoko.bindings.corba.ModeType;
 import org.apache.schemas.yoko.bindings.corba.OperationType;
 import org.apache.schemas.yoko.bindings.corba.ParamType;
-import org.apache.schemas.yoko.bindings.corba.TypeMappingType;
 
 import org.apache.yoko.bindings.corba.CorbaMessage;
 import org.apache.yoko.bindings.corba.CorbaTypeMap;
 import org.apache.yoko.bindings.corba.runtime.CorbaStreamWriter;
 import org.apache.yoko.bindings.corba.utils.ContextUtils;
-import org.apache.yoko.bindings.corba.utils.CorbaUtils;
 
 import org.apache.yoko.wsdl.CorbaConstants;
 
@@ -66,16 +65,6 @@
         Exchange exchange = message.getExchange();
         service = exchange.get(ServiceInfo.class);
         typeMaps = message.getCorbaTypeMap();
-        if (typeMaps == null) {
-            typeMaps = new ArrayList<CorbaTypeMap>();
-            List<TypeMappingType> corbaTypes =
-                service.getDescription().getExtensors(TypeMappingType.class);
-            if (corbaTypes != null) {
-                CorbaUtils.createCorbaTypeMap(typeMaps, corbaTypes);
-                message.setCorbaTypeMap(typeMaps);
-            }
-        }
-
         BindingOperationInfo boi = exchange.get(BindingOperationInfo.class);
         if (ContextUtils.isRequestor(message)) {
             handleOutBoundMessage(message, boi);
@@ -92,11 +81,11 @@
         }
         OperationType opType = boi.getExtensor(OperationType.class);
         List<ParamType> paramTypes = opType.getParam();
-        List<ParamType> params = new ArrayList<ParamType>();
+        List<ArgType> params = new ArrayList<ArgType>();
         for (Iterator<ParamType> iter = paramTypes.iterator(); iter.hasNext();) {
             ParamType param = iter.next();
             if (!param.getMode().equals(ModeType.OUT)) {
-                params.add(param);
+                params.add((ArgType)param);
             }
         }
         CorbaStreamWriter writer = new CorbaStreamWriter(orb, params, typeMaps, service, wrap);
@@ -104,6 +93,26 @@
     }
 
     private void handleInBoundMessage(CorbaMessage message, BindingOperationInfo boi) {
+        boolean wrap = false;
+        if (boi.isUnwrappedCapable()) {
+            wrap = true;
+        }
+        OperationType opType = boi.getExtensor(OperationType.class);
+
+        ArgType returnParam = opType.getReturn();
+        List<ParamType> paramTypes = opType.getParam();
+        List<ArgType> params = new ArrayList<ArgType>();
+        if (returnParam != null) {
+            params.add(returnParam);
+        }
+        for (Iterator<ParamType> iter = paramTypes.iterator(); iter.hasNext();) {
+            ParamType param = iter.next();
+            if (!param.getMode().equals(ModeType.IN)) {
+                params.add((ArgType)param);
+            }
+        }
+        CorbaStreamWriter writer = new CorbaStreamWriter(orb, params, typeMaps, service, wrap);
+        message.setContent(XMLStreamWriter.class, writer);      
     }
 
     

Added: 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=auto&rev=539532
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaStreamReader.java (added)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaStreamReader.java Fri May 18 10:37:38 2007
@@ -0,0 +1,298 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.yoko.bindings.corba.runtime;
+
+import javax.xml.namespace.NamespaceContext;
+import javax.xml.namespace.QName;
+import javax.xml.stream.Location;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.yoko.bindings.corba.types.CorbaTypeEventProducer;
+
+public class CorbaStreamReader implements XMLStreamReader {
+        
+    private char[] currentText;
+    private CorbaTypeEventProducer eventProducer;
+    private int currentState;
+
+    private String defaultNameSpace;
+    
+    public CorbaStreamReader(CorbaTypeEventProducer evProducer) {
+        eventProducer = evProducer;
+        currentState = XMLStreamReader.START_DOCUMENT;
+    }
+
+    public QName getName() {
+        return eventProducer.getName();
+    }
+
+    public char[] getTextCharacters() {
+        currentText = eventProducer.getText().toCharArray();
+        return currentText;
+    }
+
+    public int getEventType() {
+        return currentState;
+    }
+
+    public String getLocalName() {
+        return getName().getLocalPart();
+    }
+
+    public String getNamespaceURI() {
+        String current = getName().getNamespaceURI();
+        if (current == null || current.equals("")) {
+            current = defaultNameSpace;
+        } else {
+            defaultNameSpace = current;
+        }
+        return current;
+    }
+
+    public boolean hasNext() throws XMLStreamException {
+        return eventProducer.hasNext();
+    }
+
+    public int next() throws XMLStreamException {
+        if (currentState == XMLStreamReader.START_DOCUMENT) {
+            currentState = XMLStreamReader.END_DOCUMENT;
+            return XMLStreamReader.START_DOCUMENT;
+        }
+        currentState = XMLStreamReader.END_DOCUMENT;
+        if (eventProducer.hasNext()) {
+            currentState = eventProducer.next();
+        }
+        return currentState;
+    }
+
+    public int getTextLength() {
+        return currentText.length;
+    }
+
+    public void close() throws XMLStreamException {
+        // TODO Auto-generated method stub
+    }
+
+    public int getAttributeCount() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    public String getAttributeLocalName(int arg0) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public QName getAttributeName(int arg0) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public String getAttributeNamespace(int arg0) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    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) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public String getAttributeValue(String arg0, String arg1) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public String getCharacterEncodingScheme() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public String getElementText() throws XMLStreamException {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public String getEncoding() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public Location getLocation() {
+        // TODO Auto-generated method stub
+        return new Location() {
+
+            public int getCharacterOffset() {
+                // TODO Auto-generated method stub
+                return 0;
+            }
+
+            public int getColumnNumber() {
+                // TODO Auto-generated method stub
+                return 0;
+            }
+
+            public int getLineNumber() {
+                // TODO Auto-generated method stub
+                return 0;
+            }
+
+            public String getPublicId() {
+                // TODO Auto-generated method stub
+                return null;
+            }
+
+            public String getSystemId() {
+                // TODO Auto-generated method stub
+                return null;
+            }
+            
+        };
+    }
+
+    public NamespaceContext getNamespaceContext() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public int getNamespaceCount() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    public String getNamespacePrefix(int arg0) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public String getNamespaceURI(String arg0) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public String getNamespaceURI(int arg0) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public String getPIData() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public String getPITarget() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public String getPrefix() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public Object getProperty(String arg0) throws IllegalArgumentException {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public String getText() {
+        throw new RuntimeException("Not implemented");
+    }
+
+    public int getTextCharacters(int arg0, char[] arg1, int arg2, int arg3) throws XMLStreamException {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    public int getTextStart() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    public String getVersion() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public boolean hasName() {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    public boolean hasText() {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    public boolean isAttributeSpecified(int arg0) {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    public boolean isCharacters() {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    public boolean isEndElement() {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    public boolean isStandalone() {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    public boolean isStartElement() {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    public boolean isWhiteSpace() {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    public int nextTag() throws XMLStreamException {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    public void require(int arg0, String arg1, String arg2) throws XMLStreamException {
+        // TODO Auto-generated method stub        
+    }
+
+    public boolean standaloneSet() {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+}

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

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

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=539532&r1=539531&r2=539532
==============================================================================
--- 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 18 10:37:38 2007
@@ -31,7 +31,7 @@
 
 import org.apache.cxf.common.logging.LogUtils;
 import org.apache.cxf.service.model.ServiceInfo;
-import org.apache.schemas.yoko.bindings.corba.ParamType;
+import org.apache.schemas.yoko.bindings.corba.ArgType;
 
 import org.apache.yoko.bindings.corba.CorbaTypeMap;
 
@@ -49,7 +49,7 @@
     private boolean skipWrap;
     private ServiceInfo serviceInfo;
     private List<CorbaTypeMap> typeMaps;
-    private List<ParamType> params;
+    private List<ArgType> params;
     private int paramCounter;
     private ORB orb;
     private CorbaTypeListener[] listeners;
@@ -60,11 +60,10 @@
     private QName wrapElementName;    
 
     public CorbaStreamWriter(ORB orbRef,
-                             List<ParamType> paramTypes,
+                             List<ArgType> paramTypes,
                              List<CorbaTypeMap> maps,
                              ServiceInfo sinfo,
                              boolean wrap) {
-        //ctx = new NamespaceContextImpl();
         orb = orbRef;
         params = paramTypes;
         typeMaps = maps;
@@ -85,7 +84,7 @@
 
     public void writeStartElement(String namespaceURI, String localName)
         throws XMLStreamException {
-        writeStartElement(null, localName, namespaceURI);
+        writeStartElement("", localName, namespaceURI);
     }
 
     public void writeEndElement() throws XMLStreamException {
@@ -103,7 +102,7 @@
 
     public void writeStartElement(java.lang.String localName)
         throws XMLStreamException {
-        writeStartElement(null, localName, defaultNS);
+        writeStartElement("", localName, defaultNS);
     }
 
     public void writeStartElement(java.lang.String prefix,
@@ -118,7 +117,7 @@
         if (!skipWrap) {
             if (currentTypeListener == null) {
                 paramElement = name;
-                ParamType param = params.get(paramCounter);
+                ArgType param = params.get(paramCounter);
                 QName idlType = param.getIdltype();
                 if (localName.equals(param.getName())) {
                     currentTypeListener = CorbaHandlerUtils.getTypeListener(name, idlType, typeMaps, orb);
@@ -173,6 +172,7 @@
     public void writeAttribute(java.lang.String localName,
                                java.lang.String value)
         throws XMLStreamException {
+        writeAttribute("", defaultNS, localName, value);
     }
 
     public void writeAttribute(java.lang.String prefix,
@@ -186,6 +186,7 @@
                                java.lang.String localName,
                                java.lang.String value)
         throws XMLStreamException {
+        writeAttribute("", namespaceURI, localName, value);
     }
 
     public void writeNamespace(java.lang.String prefix,
@@ -214,6 +215,7 @@
 
     public void writeCData(java.lang.String data)
         throws XMLStreamException {
+        throw new XMLStreamException("Not yet implemented");
     }
 
     public void writeDTD(java.lang.String dtd)
@@ -222,6 +224,7 @@
 
     public void writeEntityRef(java.lang.String name)
         throws XMLStreamException {
+        throw new XMLStreamException("Not yet implemented");
     }
 
     public void writeStartDocument()

Added: 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=auto&rev=539532
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/AbstractStartEndEventProducer.java (added)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/AbstractStartEndEventProducer.java Fri May 18 10:37:38 2007
@@ -0,0 +1,77 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.yoko.bindings.corba.types;
+
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.yoko.bindings.corba.CorbaTypeMap;
+
+public abstract class AbstractStartEndEventProducer implements
+        CorbaTypeEventProducer {
+
+    protected int state;
+    protected final int[] states = {XMLStreamReader.START_ELEMENT, 0, XMLStreamReader.END_ELEMENT};
+    
+    protected CorbaTypeEventProducer currentEventProducer;
+    protected List<CorbaTypeMap> typeMaps;
+    protected QName name;
+    protected Iterator<CorbaObjectHandler> iterator;
+
+    public String getLocalName() {
+        return getName().getLocalPart();
+    }
+
+    public QName getName() {
+        QName ret = name;
+        if (currentEventProducer != null) {
+            ret = currentEventProducer.getName();
+        }
+        return ret;
+    }
+
+    public String getText() {
+        return currentEventProducer.getText();
+    }
+
+    public boolean hasNext() {
+        return state < states.length - 1;
+    }
+
+    public int next() { 
+        int event = states[state];
+        if (event != 0) {      
+            state++;
+        } else if (currentEventProducer != null && currentEventProducer.hasNext()) {
+            event = currentEventProducer.next();
+        } else if (iterator.hasNext()) {
+            CorbaObjectHandler obj = iterator.next();
+            currentEventProducer = CorbaHandlerUtils.getTypeEventProducer(obj, typeMaps);
+            event = currentEventProducer.next();
+        } else {
+            // all done with content, move past state 0
+            event = states[++state];
+            currentEventProducer = null;
+        }
+        return event;
+    }
+}

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

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

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=539532&r1=539531&r2=539532
==============================================================================
--- 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 18 10:37:38 2007
@@ -49,6 +49,7 @@
 import org.apache.ws.commons.schema.XmlSchemaType;
 
 import org.apache.yoko.bindings.corba.CorbaBindingException;
+//import org.apache.yoko.bindings.corba.CorbaStreamable;
 import org.apache.yoko.bindings.corba.CorbaTypeMap;
 import org.apache.yoko.bindings.corba.utils.CorbaUtils;
 import org.apache.yoko.wsdl.CorbaTypeImpl;
@@ -61,7 +62,7 @@
 public class CorbaHandlerUtils {
 
     private static final Logger LOG = LogUtils.getL7dLogger(CorbaHandlerUtils.class);
-
+    
     public static CorbaObjectHandler createTypeHandler(ORB orb,
                                                        QName name, 
                                                        QName idlType,
@@ -150,7 +151,6 @@
         XmlSchemaType schemaType = null;
         if (type != null) {
             schemaType = CorbaUtils.getXmlSchemaType(serviceInfo, type.getType());
-            name = new QName(type.getType().getNamespaceURI(), name.getLocalPart());
         }
         return initializeObjectHandler(orb, name, idlType, schemaType, typeMaps, serviceInfo);
     }
@@ -501,6 +501,62 @@
                 break;
             default:
                 throw new CorbaBindingException("Unsupported complex type " + idlType);
+            }
+        }
+        return result;
+    }
+    
+    public static CorbaTypeEventProducer getTypeEventProducer(CorbaObjectHandler handler,
+                                                              List<CorbaTypeMap> typeMaps)
+        throws CorbaBindingException {        
+        QName idlType = handler.getIdlType();
+        TypeCode tc = handler.getTypeCode();
+        CorbaTypeEventProducer result = null;
+        if (CorbaUtils.isPrimitiveIdlType(idlType)) {
+            result = new CorbaPrimitiveTypeEventProducer(handler);
+        } else {
+            //CorbaTypeImpl type = CorbaUtils.getCorbaType(idlType, typeMaps);
+            switch (tc.kind().value()) {
+            case TCKind._tk_any:
+                LOG.log(Level.INFO, "Reading any type from XML reader");
+                break;
+            case TCKind._tk_array:
+                LOG.log(Level.INFO, "Reading array type from XML reader");
+                break;
+            case TCKind._tk_enum:
+                LOG.log(Level.INFO, "Reading enumeration type from XML reader");
+                //result = new CorbaEnumListener(name, idlType, tc, type);
+                break;
+            case TCKind._tk_except:
+                LOG.log(Level.INFO, "Reading exception type from XML reader");
+                break;
+            case TCKind._tk_fixed:
+                LOG.log(Level.INFO, "Reading fixed type from XML reader");
+                break;
+            case TCKind._tk_sequence:
+                LOG.log(Level.INFO, "Reading sequence type from XML reader");
+                result = new CorbaSequenceEventProducer(handler, typeMaps);
+                break;
+            case TCKind._tk_string:
+            case TCKind._tk_wstring:
+                // These will be the case if we have anonymous strings
+                LOG.log(Level.INFO, "Reading anonymous string from XML reader");
+                break;
+            case TCKind._tk_struct:
+                LOG.log(Level.INFO, "Reading struct type from XML reader");
+                result = new CorbaStructEventProducer(handler, typeMaps);
+                break;
+            case TCKind._tk_union:
+                LOG.log(Level.INFO, "Reading union type from XML reader");
+                break;
+            case TCKind._tk_objref:
+                LOG.log(Level.INFO, "Reading object reference from XML reader");
+                //result = new CorbaObjectReferenceListener(name, idlType, tc,
+                //        type, orb);
+                break;
+            default:
+                throw new CorbaBindingException("Unsupported complex type "
+                                                + idlType);
             }
         }
         return result;

Added: 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=auto&rev=539532
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaPrimitiveTypeEventProducer.java (added)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaPrimitiveTypeEventProducer.java Fri May 18 10:37:38 2007
@@ -0,0 +1,53 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.yoko.bindings.corba.types;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamReader;
+
+public class CorbaPrimitiveTypeEventProducer implements CorbaTypeEventProducer {
+
+    int state;
+    int[] states = {XMLStreamReader.START_ELEMENT, XMLStreamReader.CHARACTERS, XMLStreamReader.END_ELEMENT};
+    final CorbaPrimitiveHandler handler;
+    public CorbaPrimitiveTypeEventProducer(CorbaObjectHandler h) {
+        handler = (CorbaPrimitiveHandler) h;
+    }
+
+    public String getLocalName() {        
+        return handler.getSimpleName();
+    }
+
+    public String getText() {
+        return handler.getDataFromValue();
+    }
+
+    public int next() {
+        return states[state++];
+    }
+
+    public QName getName() {
+        return handler.getName();
+    }
+
+    public boolean hasNext() {
+        return state < states.length;
+    }
+
+}

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

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

Added: 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=auto&rev=539532
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaSequenceEventProducer.java (added)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaSequenceEventProducer.java Fri May 18 10:37:38 2007
@@ -0,0 +1,79 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.yoko.bindings.corba.types;
+
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import org.apache.schemas.yoko.bindings.corba.Anonsequence;
+import org.apache.schemas.yoko.bindings.corba.Sequence;
+
+import org.apache.yoko.bindings.corba.CorbaTypeMap;
+import org.apache.yoko.bindings.corba.utils.CorbaUtils;
+import org.apache.yoko.wsdl.CorbaTypeImpl;
+
+public class CorbaSequenceEventProducer extends AbstractStartEndEventProducer {
+
+    boolean isPrimitiveIdlType;
+
+    public CorbaSequenceEventProducer(CorbaObjectHandler h, List<CorbaTypeMap> tm) {
+        CorbaSequenceHandler handler = (CorbaSequenceHandler) h;
+        name = handler.getName();
+        iterator = handler.getElements().iterator();
+        typeMaps = tm;
+
+        CorbaTypeImpl seqType = handler.getType();
+        QName seqElementType;
+        if (seqType instanceof Anonsequence) {
+            Anonsequence anonSeqType = (Anonsequence) seqType;
+            seqElementType = anonSeqType.getElemtype();
+        } else {
+            Sequence type = (Sequence) seqType;
+            seqElementType = type.getElemtype();
+        }
+        isPrimitiveIdlType = CorbaUtils.isPrimitiveIdlType(seqElementType);
+    }
+
+    public boolean hasNext() {
+        if (isPrimitiveIdlType) {
+            return ((currentEventProducer != null) && (currentEventProducer.hasNext()))
+                || iterator.hasNext();
+        } else {
+            return super.hasNext();
+        }
+    }
+
+    public int next() {
+        int event = -1;
+        if (isPrimitiveIdlType) {
+            //No need to start & end element
+            if (currentEventProducer != null && currentEventProducer.hasNext()) {
+                event = currentEventProducer.next();
+            } else if (iterator.hasNext()) {
+                currentEventProducer = CorbaHandlerUtils.getTypeEventProducer(iterator.next(), typeMaps);
+                event = currentEventProducer.next();
+            }
+        } else {
+            event = super.next();
+        }
+        return event;
+    }    
+
+}

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

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

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=539532&r1=539531&r2=539532
==============================================================================
--- 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 18 10:37:38 2007
@@ -77,13 +77,24 @@
     public void processEndElement(QName name) {
         if (currentTypeListener != null) {
             currentTypeListener.processEndElement(name);
-        }
-        if (currentElName.equals(name)) {
-            currentTypeListener = null;
+            if (currentElName.equals(name)) {
+                currentTypeListener = null;
+            }
         }
     }
 
     public void processCharacters(String text) {
-        currentTypeListener.processCharacters(text);
+        if (currentTypeListener == null) {
+            // primitive sequence
+            CorbaTypeListener primitiveListener = 
+                CorbaHandlerUtils.getTypeListener(value.getName(),
+                                                  seqElementType,
+                                                  typeMaps,
+                                                  orb);
+            value.addElement(primitiveListener.getCorbaObject());
+            primitiveListener.processCharacters(text);      
+        } else {
+            currentTypeListener.processCharacters(text);
+        }
     }
 }

Added: 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=auto&rev=539532
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaStructEventProducer.java (added)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaStructEventProducer.java Fri May 18 10:37:38 2007
@@ -0,0 +1,34 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.yoko.bindings.corba.types;
+
+import java.util.List;
+
+import org.apache.yoko.bindings.corba.CorbaTypeMap;
+
+public class CorbaStructEventProducer extends AbstractStartEndEventProducer {
+
+    public CorbaStructEventProducer(CorbaObjectHandler h,
+                                    List<CorbaTypeMap> tm) {
+        CorbaStructHandler handler = (CorbaStructHandler) h;
+        name = handler.getName();
+        iterator = handler.members.iterator();
+        typeMaps = tm;
+    }
+}

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

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

Added: 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=auto&rev=539532
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaTypeEventProducer.java (added)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaTypeEventProducer.java Fri May 18 10:37:38 2007
@@ -0,0 +1,47 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.yoko.bindings.corba.types;
+
+import javax.xml.namespace.QName;
+
+public interface CorbaTypeEventProducer {
+    
+    boolean hasNext();
+    
+    /* 
+     * return the current event
+     */ 
+    int next();
+    
+    /*
+     * qname of current content
+     */
+    QName getName();
+    
+    /*
+     * local name of current content
+     */
+    String getLocalName();    
+    
+    /*
+     * text of current content
+     */
+    String getText();
+    
+}

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

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

Added: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/HandlerIterator.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/HandlerIterator.java?view=auto&rev=539532
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/HandlerIterator.java (added)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/HandlerIterator.java Fri May 18 10:37:38 2007
@@ -0,0 +1,66 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.yoko.bindings.corba.types;
+
+import java.util.Iterator;
+
+import org.apache.yoko.bindings.corba.CorbaMessage;
+import org.apache.yoko.bindings.corba.CorbaStreamable;
+
+public class HandlerIterator implements Iterator<CorbaObjectHandler> {
+    final CorbaStreamable[] params;
+    int count;
+    CorbaObjectHandler next;
+    boolean isServer;
+    
+    public HandlerIterator(CorbaMessage msg, boolean server) {
+        params = msg.getStreamableArguments();
+        isServer = server;
+        if (!isServer && msg.getStreamableReturn() != null) {
+            next = msg.getStreamableReturn().getObject();
+        }
+    }
+    
+    public boolean hasNext() {
+        if (next == null) {
+            while (next == null && count < params.length) {
+                int mode = params[count].getMode();
+                int value = org.omg.CORBA.ARG_OUT.value;
+                if (isServer) {
+                    value = org.omg.CORBA.ARG_IN.value;
+                }
+                if (mode == value
+                    || mode == org.omg.CORBA.ARG_INOUT.value) {
+                    next = params[count].getObject();
+                }
+                count++;
+            }
+        }
+        return next != null;
+    }
+    
+    public CorbaObjectHandler next() {
+        CorbaObjectHandler current = next;
+        next = null;
+        return current;
+    }
+    
+    public void remove() {
+    }
+}

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

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

Added: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/ParameterSequenceEventProducer.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/ParameterSequenceEventProducer.java?view=auto&rev=539532
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/ParameterSequenceEventProducer.java (added)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/ParameterSequenceEventProducer.java Fri May 18 10:37:38 2007
@@ -0,0 +1,36 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.yoko.bindings.corba.types;
+
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import org.apache.yoko.bindings.corba.CorbaTypeMap;
+
+public class ParameterSequenceEventProducer extends AbstractStartEndEventProducer {
+
+    public ParameterSequenceEventProducer(QName wrapperElementQName,
+                                          HandlerIterator paramIterator,
+                                          List<CorbaTypeMap> typeMaps) {
+        name = wrapperElementQName;
+        iterator = paramIterator;
+        this.typeMaps = typeMaps;
+    }
+}

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

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

Modified: incubator/yoko/branches/perf/src/test/java/org/apache/yoko/bindings/corba/CorbaBindingFactoryTest.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/test/java/org/apache/yoko/bindings/corba/CorbaBindingFactoryTest.java?view=diff&rev=539532&r1=539531&r2=539532
==============================================================================
--- incubator/yoko/branches/perf/src/test/java/org/apache/yoko/bindings/corba/CorbaBindingFactoryTest.java (original)
+++ incubator/yoko/branches/perf/src/test/java/org/apache/yoko/bindings/corba/CorbaBindingFactoryTest.java Fri May 18 10:37:38 2007
@@ -100,7 +100,7 @@
         List<Interceptor> outInterceptors = binding.getOutInterceptors();
         assertNotNull(outInterceptors);
         assertEquals(1, inInterceptors.size());
-        assertEquals(1, outInterceptors.size());        
+        assertEquals(2, outInterceptors.size());        
     }
 
     public void testGetCorbaConduit() throws Exception {