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/01/22 14:51:45 UTC
svn commit: r498629 - in
/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba:
CorbaStaxObject.java interceptors/CorbaFaultOutInterceptor.java
interceptors/CorbaOutInterceptor.java
Author: bravi
Date: Mon Jan 22 06:51:44 2007
New Revision: 498629
URL: http://svn.apache.org/viewvc?view=rev&rev=498629
Log:
[YOKO-170] - Fixing marshalling of Wrapped & unwrapped style output.
Modified:
incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaStaxObject.java
incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaFaultOutInterceptor.java
incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaOutInterceptor.java
Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaStaxObject.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaStaxObject.java?view=diff&rev=498629&r1=498628&r2=498629
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaStaxObject.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaStaxObject.java Mon Jan 22 06:51:44 2007
@@ -120,6 +120,7 @@
public CorbaObjectHandler readObjectFromStax(XMLEventReader reader,
QName idlType,
+ boolean isWrapped,
boolean isNested)
throws CorbaBindingException {
CorbaObjectHandler obj = null;
@@ -129,9 +130,12 @@
if (!isNested) {
while (reader.peek().getEventType() != XMLStreamConstants.START_ELEMENT) {
reader.nextEvent();
- reader.nextEvent();
}
}
+ if (isWrapped) {
+ //read the wrapped type
+ reader.nextEvent();
+ }
} catch (XMLStreamException ex) {
throw new CorbaBindingException("Unable to locate start of object", ex);
}
@@ -379,7 +383,7 @@
StartElement arrayStartEl = reader.nextEvent().asStartElement();
obj = new CorbaArrayHandler(arrayStartEl.getName(), idlType, tc, typeDefinition);
for (int i = 0; i < arrayBound; ++i) {
- CorbaObjectHandler element = readObjectFromStax(reader, arrayElemType, true);
+ CorbaObjectHandler element = readObjectFromStax(reader, arrayElemType, false, true);
obj.addElement(element);
}
reader.nextEvent().asEndElement();
@@ -448,7 +452,10 @@
obj = new CorbaExceptionHandler(exStartEl.getName(), idlType, tc, exType);
List<MemberType> exMembers = exType.getMember();
for (int i = 0; i < exMembers.size(); ++i) {
- CorbaObjectHandler member = readObjectFromStax(reader, exMembers.get(i).getIdltype(), true);
+ CorbaObjectHandler member = readObjectFromStax(reader,
+ exMembers.get(i).getIdltype(),
+ false,
+ true);
obj.addMember(member);
}
reader.nextEvent().asEndElement();
@@ -498,13 +505,13 @@
if (bound == 0) {
LOG.log(Level.INFO, "Unbounded sequence found");
while (reader.peek().getEventType() == XMLStreamConstants.START_ELEMENT) {
- CorbaObjectHandler element = readObjectFromStax(reader, seqElementType, true);
+ CorbaObjectHandler element = readObjectFromStax(reader, seqElementType, false, true);
obj.addElement(element);
}
} else {
LOG.log(Level.INFO, "Bounded sequence found");
for (long i = 0; i < bound; ++i) {
- CorbaObjectHandler element = readObjectFromStax(reader, seqElementType, true);
+ CorbaObjectHandler element = readObjectFromStax(reader, seqElementType, false, true);
obj.addElement(element);
}
}
@@ -538,6 +545,7 @@
for (int i = 0; i < structMembers.size(); ++i) {
CorbaObjectHandler member = readObjectFromStax(reader,
structMembers.get(i).getIdltype(),
+ false,
true);
obj.addMember(member);
}
@@ -593,7 +601,7 @@
Unionbranch branch = branchesIter.next();
CorbaObjectHandler branchObj = null;
if (branch.getName().equals(branchName)) {
- branchObj = readObjectFromStax(reader, branch.getIdltype(), true);
+ branchObj = readObjectFromStax(reader, branch.getIdltype(), false, true);
// We also need to set the discriminator since this is the branch with the actual
// union value
CorbaObjectHandler discObj =
Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaFaultOutInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaFaultOutInterceptor.java?view=diff&rev=498629&r1=498628&r2=498629
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaFaultOutInterceptor.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaFaultOutInterceptor.java Mon Jan 22 06:51:44 2007
@@ -183,7 +183,7 @@
LOG.log(Level.INFO, "Found exception in the raises list. Marshalling.");
ByteArrayInputStream inStream = new ByteArrayInputStream(outStream.toByteArray());
XMLEventReader evtReader = inputFactory.createXMLEventReader(inStream);
- CorbaObjectHandler obj = corbaStaxObject.readObjectFromStax(evtReader, exIdlType, false);
+ CorbaObjectHandler obj = corbaStaxObject.readObjectFromStax(evtReader, exIdlType, false, false);
CorbaStreamable streamable = new CorbaStreamable(obj, elName);
message.setStreamableException(streamable);
}
Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaOutInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaOutInterceptor.java?view=diff&rev=498629&r1=498628&r2=498629
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaOutInterceptor.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaOutInterceptor.java Mon Jan 22 06:51:44 2007
@@ -105,13 +105,11 @@
// TODO: where does encoding constant go?
//String encoding = (String)message.get("Encoding");
BindingOperationInfo boi = exchange.get(BindingOperationInfo.class);
- OperationType opType = boi.getExtensor(OperationType.class);
- OperationInfo opInfo = boi.getOperationInfo();
if (ContextUtils.isRequestor(message)) {
- handleOutBoundMessage(message, opType, opInfo);
+ handleOutBoundMessage(message, boi);
} else {
- handleInBoundMessage(message, opType, opInfo);
+ handleInBoundMessage(message, boi);
}
} catch (Exception ex) {
throw new Fault(ex);
@@ -119,14 +117,19 @@
}
- protected void handleOutBoundMessage(CorbaMessage message, OperationType opType, OperationInfo opInfo)
+ protected void handleOutBoundMessage(CorbaMessage message, BindingOperationInfo boi)
throws Exception {
+ OperationType opType = boi.getExtensor(OperationType.class);
EventDataWriter writer = (EventDataWriter)getDataWriter(message);
List<ParamType> paramTypes = opType.getParam();
List<Object> args = message.getContent(List.class);
MessageInfo msgInfo = message.get(MessageInfo.class);
- addMarshalRequestParams(message, args, opInfo, paramTypes,
- getXMLInputFactory(), getXMLOutputFactory(),
+ addMarshalRequestParams(message,
+ args,
+ boi,
+ paramTypes,
+ getXMLInputFactory(),
+ getXMLOutputFactory(),
writer);
ArgType returnParam = opType.getReturn();
@@ -140,22 +143,30 @@
}
}
- protected void handleInBoundMessage(CorbaMessage message, OperationType opType,
- OperationInfo opInfo)
- throws Exception {
+ protected void handleInBoundMessage(CorbaMessage message, BindingOperationInfo boi)
+ throws Exception {
+ OperationType opType = boi.getExtensor(OperationType.class);
EventDataWriter writer = (EventDataWriter)getDataWriter(message);
ArgType returnParam = opType.getReturn();
List<Object> args = message.getContent(List.class);
- addMarshalResponseParams(message, args, opInfo, opType, getXMLInputFactory(),
- getXMLOutputFactory(), writer);
+ addMarshalResponseParams(message,
+ args,
+ boi,
+ opType,
+ getXMLInputFactory(),
+ getXMLOutputFactory(),
+ writer);
}
protected void addMarshalRequestParams(CorbaMessage message, List<Object> arguments,
- OperationInfo opInfo,
- List<ParamType> params, XMLInputFactory inputFactory,
- XMLOutputFactory outputFactory, EventDataWriter writer)
+ BindingOperationInfo boi,
+ List<ParamType> params,
+ XMLInputFactory inputFactory,
+ XMLOutputFactory outputFactory,
+ EventDataWriter writer)
throws Exception {
if (writer != null) {
+ OperationInfo opInfo = boi.getOperationInfo();
List<Object> args = arguments;
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
@@ -167,7 +178,9 @@
}
ByteArrayInputStream inStream = new ByteArrayInputStream(outStream.toByteArray());
XMLEventReader evtReader = inputFactory.createXMLEventReader(inStream);
-
+
+ boolean topLevelWrapper = boi.isUnwrappedCapable();
+
for (Iterator<ParamType> iter = params.iterator(); iter.hasNext();) {
ParamType param = iter.next();
QName idlType = param.getIdltype();
@@ -176,7 +189,11 @@
if (param.getMode().equals(ModeType.OUT)) {
obj = CorbaHandlerUtils.initializeObjectHandler(orb, elName, idlType, typeMaps, service);
} else {
- obj = corbaStaxObject.readObjectFromStax(evtReader, idlType, false);
+ obj = corbaStaxObject.readObjectFromStax(evtReader,
+ idlType,
+ topLevelWrapper,
+ false);
+ topLevelWrapper = false;
}
CorbaStreamable streamable = new CorbaStreamable(obj, elName);
ModeType paramMode = param.getMode();
@@ -193,12 +210,15 @@
}
protected void addMarshalResponseParams(CorbaMessage message, List<Object> arguments,
- OperationInfo opInfo,
- OperationType opType, XMLInputFactory inputFactory,
- XMLOutputFactory outputFactory, EventDataWriter writer)
+ BindingOperationInfo boi,
+ OperationType opType,
+ XMLInputFactory inputFactory,
+ XMLOutputFactory outputFactory,
+ EventDataWriter writer)
throws Exception {
List<ParamType> params = opType.getParam();
if (writer != null) {
+ OperationInfo opInfo = boi.getOperationInfo();
List<Object> args = arguments;
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
@@ -208,6 +228,8 @@
Object partValue = args.get(i);
writer.write(partValue, part, evtWriter);
}
+ boolean topLevelWrapper = boi.isUnwrappedCapable();
+
ByteArrayInputStream inStream = new ByteArrayInputStream(outStream.toByteArray());
XMLEventReader evtReader = inputFactory.createXMLEventReader(inStream);
@@ -217,7 +239,9 @@
QName retName = new QName("", returnParam.getName());
CorbaObjectHandler obj = corbaStaxObject.readObjectFromStax(evtReader,
retIdlType,
+ topLevelWrapper,
false);
+ topLevelWrapper = false;
CorbaStreamable streamable = new CorbaStreamable(obj, retName);
message.setStreamableReturn(streamable);
}
@@ -231,7 +255,11 @@
if (param.getMode().equals(ModeType.IN)) {
obj = CorbaHandlerUtils.initializeObjectHandler(orb, elName, idlType, typeMaps, service);
} else {
- obj = corbaStaxObject.readObjectFromStax(evtReader, idlType, false);
+ obj = corbaStaxObject.readObjectFromStax(evtReader,
+ idlType,
+ topLevelWrapper,
+ false);
+ topLevelWrapper = false;
}
CorbaStreamable streamable = new CorbaStreamable(obj, elName);