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/22 18:14:03 UTC
svn commit: r540676 - in
/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba:
./ interceptors/ runtime/ types/
Author: bravi
Date: Tue May 22 11:14:02 2007
New Revision: 540676
URL: http://svn.apache.org/viewvc?view=rev&rev=540676
Log:
[YOKO-366] - Adding exception support.
Added:
incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamFaultInInterceptor.java (with props)
incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaExceptionEventProducer.java (with props)
incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaExceptionListener.java (with props)
incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/ParameterEventProducer.java (with props)
incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/WrappedParameterSequenceEventProducer.java
- copied, changed from r540203, incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/ParameterSequenceEventProducer.java
Removed:
incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/ParameterSequenceEventProducer.java
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/interceptors/CorbaStreamFaultOutInterceptor.java
incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamInInterceptor.java
incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamOutEndingInterceptor.java
incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaObjectWriter.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
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=540676&r1=540675&r2=540676
==============================================================================
--- 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 Tue May 22 11:14:02 2007
@@ -47,9 +47,8 @@
import org.apache.cxf.ws.addressing.EndpointReferenceType;
-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.CorbaStreamFaultInInterceptor;
+import org.apache.yoko.bindings.corba.interceptors.CorbaStreamFaultOutInterceptor;
import org.apache.yoko.bindings.corba.interceptors.CorbaStreamInInterceptor;
import org.apache.yoko.bindings.corba.interceptors.CorbaStreamOutInterceptor;
@@ -104,17 +103,12 @@
public Binding createBinding(BindingInfo bindingInfo) {
CorbaBinding binding = new CorbaBinding();
- binding.getInFaultInterceptors().add(new CorbaFaultInInterceptor());
- binding.getOutFaultInterceptors().add(new CorbaFaultOutInterceptor());
+ binding.getInFaultInterceptors().add(new CorbaStreamFaultInInterceptor());
+ binding.getOutFaultInterceptors().add(new CorbaStreamFaultOutInterceptor());
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.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=540676&r1=540675&r2=540676
==============================================================================
--- 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 Tue May 22 11:14:02 2007
@@ -112,7 +112,6 @@
corbaMessage.setCorbaTypeMap(typeMap);
} catch (java.lang.Exception ex) {
- ex.printStackTrace();
LOG.log(Level.SEVERE, "Could not resolve target object");
throw new CorbaBindingException(ex);
}
@@ -126,7 +125,6 @@
buildRequest((CorbaMessage)message, opType);
message.getContent(OutputStream.class).close();
} catch (Exception ex) {
- ex.printStackTrace();
LOG.log(Level.SEVERE, "Could not build the corba request");
throw new CorbaBindingException(ex);
}
@@ -178,11 +176,10 @@
try {
request.invoke();
} catch (SystemException ex) {
- message.setContent(Exception.class, new Fault(ex));
+ message.setContent(Exception.class, ex);
message.setSystemException(ex);
return;
}
-
Exception ex = request.env().exception();
if (ex != null) {
if (ex instanceof UnknownUserException) {
Added: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamFaultInInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamFaultInInterceptor.java?view=auto&rev=540676
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamFaultInInterceptor.java (added)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamFaultInInterceptor.java Tue May 22 11:14:02 2007
@@ -0,0 +1,140 @@
+/**
+ * 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.lang.reflect.Constructor;
+
+import java.util.Iterator;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.xml.namespace.QName;
+
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.databinding.DataReader;
+import org.apache.cxf.interceptor.ClientFaultConverter;
+import org.apache.cxf.jaxb.io.XMLStreamDataReader;
+import org.apache.cxf.message.Message;
+import org.apache.cxf.phase.AbstractPhaseInterceptor;
+import org.apache.cxf.phase.Phase;
+import org.apache.cxf.service.Service;
+import org.apache.cxf.service.model.BindingOperationInfo;
+import org.apache.cxf.service.model.FaultInfo;
+import org.apache.cxf.service.model.OperationInfo;
+import org.apache.cxf.service.model.ServiceInfo;
+import org.apache.cxf.service.model.ServiceModelUtil;
+
+import org.apache.yoko.bindings.corba.CorbaBindingException;
+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.CorbaTypeEventProducer;
+import org.apache.yoko.wsdl.CorbaConstants;
+
+import org.omg.CORBA.SystemException;
+
+public class CorbaStreamFaultInInterceptor extends AbstractPhaseInterceptor<Message> {
+
+ private static final Logger LOG = LogUtils.getL7dLogger(CorbaStreamFaultInInterceptor.class);
+
+
+ public CorbaStreamFaultInInterceptor() {
+ super();
+ setPhase(Phase.UNMARSHAL);
+ addAfter(ClientFaultConverter.class.getName());
+ }
+
+ public void handleMessage(Message msg) {
+ CorbaMessage message = (CorbaMessage)msg;
+ try {
+ SystemException sysEx = message.getSystemException();
+ if (sysEx != null) {
+ // TODO: Do we need anything else to handle system exceptions here...i.e. do
+ // we want to add a wrapper around this so that we can add some more information?
+ message.setContent(Exception.class, sysEx);
+ return;
+ }
+
+ CorbaStreamable exStreamable = message.getStreamableException();
+ if (exStreamable != null) {
+ XMLStreamDataReader reader = (XMLStreamDataReader) getDataReader(message);
+
+ BindingOperationInfo bopInfo = message.getExchange().get(BindingOperationInfo.class);
+ OperationInfo opInfo = bopInfo.getOperationInfo();
+
+ ServiceInfo service = message.getExchange().get(ServiceInfo.class);
+ CorbaTypeMap typeMap = message.getCorbaTypeMap();
+
+ org.omg.CORBA.ORB orb = (org.omg.CORBA.ORB) message.get(CorbaConstants.ORB);
+ if (orb == null) {
+ orb = (org.omg.CORBA.ORB) message.getExchange().get(org.omg.CORBA.ORB.class);
+ }
+ QName elName = new QName("", exStreamable.getName());
+ FaultInfo fault = getFaultInfo(opInfo, elName);
+
+ CorbaTypeEventProducer faultEventProducer =
+ CorbaHandlerUtils.getTypeEventProducer(exStreamable.getObject(),
+ typeMap,
+ service,
+ orb);
+ CorbaStreamReader streamReader = new CorbaStreamReader(faultEventProducer);
+
+ Object e = reader.read(fault.getMessageParts().get(0), streamReader);
+ if (!(e instanceof Exception)) {
+ Class exClass = fault.getProperty(Class.class.getName(), Class.class);
+ Class beanClass = e.getClass();
+ Constructor constructor =
+ exClass.getConstructor(new Class[]{String.class, beanClass});
+ e = constructor.newInstance(new Object[]{"", e});
+ }
+ message.setContent(Exception.class, (Exception) e);
+ }
+ } catch (java.lang.Exception ex) {
+ LOG.log(Level.SEVERE, "CORBA unmarshalFault exception", ex);
+ throw new CorbaBindingException("CORBA unmarshalFault exception", ex);
+ }
+
+ }
+
+ protected FaultInfo getFaultInfo(OperationInfo opInfo, QName faultName) {
+ Iterator<FaultInfo> faults = opInfo.getFaults().iterator();
+ while (faults.hasNext()) {
+ FaultInfo fault = faults.next();
+ if (fault.getFaultName().getLocalPart().equals(faultName.getLocalPart())) {
+ return fault;
+ }
+ }
+ return null;
+ }
+
+ protected DataReader<XMLStreamReader> getDataReader(CorbaMessage message) {
+ Service serviceModel = ServiceModelUtil.getService(message.getExchange());
+ DataReader<XMLStreamReader> dataReader =
+ serviceModel.getDataBinding().createReader(XMLStreamReader.class);
+ if (dataReader == null) {
+ throw new CorbaBindingException("Couldn't create data reader for incoming fault message");
+ }
+ return dataReader;
+ }
+}
Propchange: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamFaultInInterceptor.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamFaultInInterceptor.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamFaultOutInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamFaultOutInterceptor.java?view=diff&rev=540676&r1=540675&r2=540676
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamFaultOutInterceptor.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamFaultOutInterceptor.java Tue May 22 11:14:02 2007
@@ -200,7 +200,7 @@
Class faultClass = faultMethod.getReturnType();
fault = faultClass.newInstance();
}
-
+
CorbaFaultStreamWriter faultWriter = new CorbaFaultStreamWriter(orb, exType, typeMap, service);
writer.write(fault, faultPart, faultWriter);
Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamInInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamInInterceptor.java?view=diff&rev=540676&r1=540675&r2=540676
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamInInterceptor.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamInInterceptor.java Tue May 22 11:14:02 2007
@@ -24,6 +24,7 @@
import javax.xml.namespace.QName;
import javax.xml.stream.XMLStreamReader;
+import org.apache.cxf.endpoint.Endpoint;
import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.message.Exchange;
import org.apache.cxf.message.Message;
@@ -51,7 +52,8 @@
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.types.ParameterEventProducer;
+import org.apache.yoko.bindings.corba.types.WrappedParameterSequenceEventProducer;
import org.apache.yoko.bindings.corba.utils.ContextUtils;
import org.omg.CORBA.Any;
@@ -70,15 +72,7 @@
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 (message.getDestination() != null) {
@@ -96,18 +90,16 @@
}
private void handleReply(Message message) {
-
+
CorbaMessage outMessage = (CorbaMessage)message.getExchange().getOutMessage();
- /*
- if (message.getStreamableException() != null || message.getSystemException() != null) {
+ if (outMessage.getStreamableException() != null || outMessage.getSystemException() != null) {
Endpoint ep = message.getExchange().get(Endpoint.class);
message.getInterceptorChain().abort();
if (ep.getInFaultObserver() != null) {
- ep.getInFaultObserver().onMessage(message);
+ ep.getInFaultObserver().onMessage(outMessage);
return;
}
}
- */
orb = (ORB)message.getExchange().get(ORB.class);
HandlerIterator paramIterator = new HandlerIterator(outMessage, false);
@@ -116,17 +108,26 @@
Exchange exchange = message.getExchange();
BindingOperationInfo bindingOpInfo = exchange.get(BindingOperationInfo.class);
BindingMessageInfo msgInfo = bindingOpInfo.getOutput();
- if (msgInfo.getMessageParts().size() == 1) {
+
+ boolean wrap = false;
+ if (bindingOpInfo.isUnwrappedCapable()) {
+ wrap = true;
+ }
+
+ if (wrap) {
// wrapper element around our args
// REVISIT, bravi, message name same as the element name
QName wrapperElementQName = msgInfo.getMessageInfo().getName();
- eventProducer = new ParameterSequenceEventProducer(wrapperElementQName,
- paramIterator,
- typeMap,
- service,
- orb);
+ eventProducer = new WrappedParameterSequenceEventProducer(wrapperElementQName,
+ paramIterator,
+ typeMap,
+ service,
+ orb);
} else {
- throw new RuntimeException("non wrapped parts not implemented");
+ eventProducer = new ParameterEventProducer(paramIterator,
+ typeMap,
+ service,
+ orb);
}
CorbaStreamReader reader = new CorbaStreamReader(eventProducer);
message.setContent(XMLStreamReader.class, reader);
@@ -171,17 +172,24 @@
CorbaTypeEventProducer eventProducer = null;
BindingMessageInfo msgInfo = bopInfo.getInput();
- if (msgInfo.getMessageParts().size() == 1) {
+ boolean wrap = false;
+ if (bopInfo.isUnwrappedCapable()) {
+ wrap = true;
+ }
+
+ if (wrap) {
// wrapper element around our args
- // REVISIT, bravi, message name same as the element name
QName wrapperElementQName = msgInfo.getMessageInfo().getName();
- eventProducer = new ParameterSequenceEventProducer(wrapperElementQName,
- paramIterator,
- typeMap,
- service,
- orb);
+ eventProducer = new WrappedParameterSequenceEventProducer(wrapperElementQName,
+ paramIterator,
+ typeMap,
+ service,
+ orb);
} else {
- throw new RuntimeException("non wrapped parts not implemented");
+ eventProducer = new ParameterEventProducer(paramIterator,
+ typeMap,
+ service,
+ orb);
}
CorbaStreamReader reader = new CorbaStreamReader(eventProducer);
message.setContent(XMLStreamReader.class, reader);
@@ -231,11 +239,12 @@
wrap = true;
}
OperationInfo opInfo = boi.getOperationInfo();
+ MessageInfo msgInInfo = opInfo.getInput();
for (int i = 0; i < paramTypes.size(); i++) {
ParamType param = paramTypes.get(i);
QName paramIdlType = param.getIdltype();
- QName paramName = new QName("", param.getName());
+ QName paramName = msgInInfo.getMessagePartQName(param.getName());
ModeType paramMode = param.getMode();
if (!wrap) {
MessagePartInfo part;
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=540676&r1=540675&r2=540676
==============================================================================
--- 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 Tue May 22 11:14:02 2007
@@ -90,17 +90,18 @@
}
CorbaStreamWriter writer = (CorbaStreamWriter) message.getContent(XMLStreamWriter.class);
CorbaObjectHandler[] objs = writer.getCorbaObjects();
+ MessageInfo outMsgInfo = opInfo.getOutput();
int count = 0;
for (Iterator<ParamType> iter = paramTypes.iterator(); iter.hasNext();) {
ParamType param = iter.next();
QName idlType = param.getIdltype();
- MessageInfo msgInfo = opInfo.getOutput();
- QName paramName = new QName(msgInfo.getName().getNamespaceURI(), param.getName());
+
+ QName paramName = outMsgInfo.getMessagePartQName(param.getName());
CorbaObjectHandler obj = null;
if (param.getMode().equals(ModeType.OUT)) {
if (!wrap) {
- MessagePartInfo part =
- getOutputMessagePartInfo(opInfo, param.getName());
+ MessagePartInfo part = outMsgInfo.getMessagePart(paramName);
+ //getOutputMessagePartInfo(opInfo, param.getName());
if (part != null && part.isElement()) {
paramName = part.getElementQName();
}
@@ -125,8 +126,8 @@
ArgType returnParam = opType.getReturn();
if (returnParam != null) {
+ QName retName = outMsgInfo.getMessagePartQName(returnParam.getName());
QName retIdlType = returnParam.getIdltype();
- QName retName = new QName("", returnParam.getName());
CorbaObjectHandler obj = CorbaHandlerUtils
.initializeObjectHandler(orb, retName, retIdlType, typeMap, service);
CorbaStreamable streamable = message.createStreamableObject(obj, retName);
@@ -147,21 +148,21 @@
int count = 0;
ArgType returnParam = opType.getReturn();
if (returnParam != null) {
- QName retName = new QName("", returnParam.getName());
+ MessageInfo msgOutInfo = opInfo.getOutput();
+ QName retName = msgOutInfo.getMessagePartQName(returnParam.getName());
CorbaObjectHandler obj = objs[count++];
CorbaStreamable streamable = message.createStreamableObject(obj, retName);
message.setStreamableReturn(streamable);
}
+ MessageInfo msgInfo = opInfo.getInput();
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());
+ QName paramName = msgInfo.getMessagePartQName(param.getName());
CorbaObjectHandler obj = null;
if (param.getMode().equals(ModeType.IN)) {
if (!wrap) {
- MessagePartInfo part =
- getInputMessagePartInfo(opInfo, param.getName());
+ MessagePartInfo part = msgInfo.getMessagePart(paramName);
if (part != null && part.isElement()) {
paramName = part.getElementQName();
}
@@ -188,25 +189,4 @@
}
- 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)) {
- return parts.get(i);
- }
- }
- return null;
- }
}
Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaObjectWriter.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaObjectWriter.java?view=diff&rev=540676&r1=540675&r2=540676
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaObjectWriter.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaObjectWriter.java Tue May 22 11:14:02 2007
@@ -277,7 +277,6 @@
CorbaExceptionHandler exHandler = (CorbaExceptionHandler)obj;
Exception exType = (Exception)exHandler.getType();
List<CorbaObjectHandler> exMembers = exHandler.getMembers();
-
stream.write_string(exType.getRepositoryID());
for (int i = 0; i < exMembers.size(); ++i) {
this.write(exMembers.get(i));
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=540676&r1=540675&r2=540676
==============================================================================
--- 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 Tue May 22 11:14:02 2007
@@ -137,8 +137,7 @@
protected void setCurrentTypeListener(QName name) throws XMLStreamException {
ArgType param = params.get(paramCounter);
QName idlType = param.getIdltype();
- System.out.println("setting curren type listener " + name + "-" + idlType + "-" + param.getName());
- if (name.getLocalPart().equals(param.getName())) {
+ if (!skipWrap || (name.getLocalPart().equals(param.getName()))) {
currentTypeListener = CorbaHandlerUtils.getTypeListener(name, idlType, typeMap, orb);
listeners[paramCounter] = currentTypeListener;
paramCounter++;
Added: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaExceptionEventProducer.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaExceptionEventProducer.java?view=auto&rev=540676
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaExceptionEventProducer.java (added)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaExceptionEventProducer.java Tue May 22 11:14:02 2007
@@ -0,0 +1,39 @@
+/**
+ * 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 org.apache.cxf.service.model.ServiceInfo;
+import org.apache.yoko.bindings.corba.CorbaTypeMap;
+
+import org.omg.CORBA.ORB;
+
+public class CorbaExceptionEventProducer extends AbstractStartEndEventProducer {
+
+ public CorbaExceptionEventProducer(CorbaObjectHandler h,
+ CorbaTypeMap tm,
+ ServiceInfo service,
+ ORB orbRef) {
+ CorbaExceptionHandler handler = (CorbaExceptionHandler) h;
+ name = handler.getName();
+ iterator = handler.members.iterator();
+ typeMap = tm;
+ serviceInfo = service;
+ orb = orbRef;
+ }
+}
Propchange: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaExceptionEventProducer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaExceptionEventProducer.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaExceptionListener.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaExceptionListener.java?view=auto&rev=540676
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaExceptionListener.java (added)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaExceptionListener.java Tue May 22 11:14:02 2007
@@ -0,0 +1,86 @@
+/**
+ * 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.Exception;
+import org.apache.schemas.yoko.bindings.corba.MemberType;
+import org.apache.yoko.bindings.corba.CorbaTypeMap;
+
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.TypeCode;
+
+public class CorbaExceptionListener implements CorbaTypeListener {
+
+ private CorbaExceptionHandler value;
+ private int memberCount;
+ private List<MemberType> exMembers;
+ private CorbaTypeListener currentTypeListener;
+ private QName memberElement;
+ private CorbaTypeMap typeMap;
+ private ORB orb;
+
+ public CorbaExceptionListener(QName exName,
+ QName exIdlType,
+ TypeCode exTC,
+ Object exType,
+ CorbaTypeMap map,
+ ORB orbRef) {
+ value = new CorbaExceptionHandler(exName, exIdlType, exTC, exType);
+ orb = orbRef;
+ typeMap = map;
+ exMembers = ((Exception) exType).getMember();
+ }
+
+ public void processStartElement(QName name) {
+ //REVISIT, assume only elements not attrs
+ if (currentTypeListener == null) {
+ memberElement = name;
+ currentTypeListener =
+ CorbaHandlerUtils.getTypeListener(name,
+ exMembers.get(memberCount).getIdltype(),
+ typeMap,
+ orb);
+ value.addMember(currentTypeListener.getCorbaObject());
+ memberCount++;
+ } else {
+ currentTypeListener.processStartElement(name);
+ }
+ }
+
+ public void processEndElement(QName name) {
+ if (currentTypeListener != null) {
+ currentTypeListener.processEndElement(name);
+ }
+ if (memberElement.equals(name)) {
+ currentTypeListener = null;
+ }
+ }
+
+ public void processCharacters(String text) {
+ currentTypeListener.processCharacters(text);
+ }
+
+ public CorbaObjectHandler getCorbaObject() {
+ return value;
+ }
+
+}
Propchange: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaExceptionListener.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaExceptionListener.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=540676&r1=540675&r2=540676
==============================================================================
--- 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 Tue May 22 11:14:02 2007
@@ -475,6 +475,7 @@
break;
case TCKind._tk_except:
LOG.log(Level.INFO, "Reading exception type from XML reader");
+ result = new CorbaExceptionListener(name, idlType, tc, type, typeMap, orb);
break;
case TCKind._tk_fixed:
LOG.log(Level.INFO, "Reading fixed type from XML reader");
@@ -531,6 +532,7 @@
break;
case TCKind._tk_except:
LOG.log(Level.INFO, "Reading exception type from XML reader");
+ result = new CorbaExceptionEventProducer(handler, typeMap, serviceInfo, orb);
break;
case TCKind._tk_fixed:
LOG.log(Level.INFO, "Reading fixed type from XML reader");
Added: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/ParameterEventProducer.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/ParameterEventProducer.java?view=auto&rev=540676
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/ParameterEventProducer.java (added)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/ParameterEventProducer.java Tue May 22 11:14:02 2007
@@ -0,0 +1,81 @@
+/**
+ * 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 javax.xml.namespace.QName;
+
+import org.apache.cxf.service.model.ServiceInfo;
+
+import org.apache.yoko.bindings.corba.CorbaTypeMap;
+
+import org.omg.CORBA.ORB;
+
+public class ParameterEventProducer implements CorbaTypeEventProducer {
+
+ protected CorbaTypeEventProducer currentEventProducer;
+ protected Iterator<CorbaObjectHandler> iterator;
+ private CorbaTypeMap typeMap;
+ private ServiceInfo serviceInfo;
+ private ORB orb;
+
+ public ParameterEventProducer(HandlerIterator paramIterator,
+ CorbaTypeMap map,
+ ServiceInfo service,
+ ORB orbRef) {
+ iterator = paramIterator;
+ typeMap = map;
+ serviceInfo = service;
+ orb = orbRef;
+ }
+
+ public String getLocalName() {
+ return currentEventProducer != null ? currentEventProducer.getLocalName() : null;
+ }
+
+ public QName getName() {
+ return currentEventProducer != null ? currentEventProducer.getName() : null;
+ }
+
+ public String getText() {
+ return currentEventProducer != null ? currentEventProducer.getText() : null;
+ }
+
+ public boolean hasNext() {
+ return (currentEventProducer != null
+ ? currentEventProducer.hasNext() : false)
+ || (iterator != null ? iterator.hasNext() : false);
+ }
+
+ public int next() {
+ int event = -1;
+ if (currentEventProducer != null && currentEventProducer.hasNext()) {
+ event = currentEventProducer.next();
+ } else if (iterator != null && iterator.hasNext()) {
+ CorbaObjectHandler obj = iterator.next();
+ currentEventProducer = CorbaHandlerUtils.getTypeEventProducer(obj, typeMap, serviceInfo, orb);
+ event = currentEventProducer.next();
+ } else {
+ throw new RuntimeException("hasNext reported in error as there is no next event");
+ }
+ return event;
+ }
+
+}
Propchange: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/ParameterEventProducer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/ParameterEventProducer.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Copied: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/WrappedParameterSequenceEventProducer.java (from r540203, 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/WrappedParameterSequenceEventProducer.java?view=diff&rev=540676&p1=incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/ParameterSequenceEventProducer.java&r1=540203&p2=incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/WrappedParameterSequenceEventProducer.java&r2=540676
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/ParameterSequenceEventProducer.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/WrappedParameterSequenceEventProducer.java Tue May 22 11:14:02 2007
@@ -26,13 +26,13 @@
import org.omg.CORBA.ORB;
-public class ParameterSequenceEventProducer extends AbstractStartEndEventProducer {
+public class WrappedParameterSequenceEventProducer extends AbstractStartEndEventProducer {
- public ParameterSequenceEventProducer(QName wrapperElementQName,
- HandlerIterator paramIterator,
- CorbaTypeMap typeMap,
- ServiceInfo service,
- ORB orbRef) {
+ public WrappedParameterSequenceEventProducer(QName wrapperElementQName,
+ HandlerIterator paramIterator,
+ CorbaTypeMap typeMap,
+ ServiceInfo service,
+ ORB orbRef) {
name = wrapperElementQName;
iterator = paramIterator;
this.typeMap = typeMap;