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 {