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 dm...@apache.org on 2006/09/11 11:29:27 UTC
svn commit: r442178 - in
/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba:
CorbaBindingImpl.java CorbaDSIServant.java
Author: dmiddlem
Date: Mon Sep 11 04:29:26 2006
New Revision: 442178
URL: http://svn.apache.org/viewvc?view=rev&rev=442178
Log:
Small improvements to the code for committed fix for issue (YOKO-162)
Modified:
incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaBindingImpl.java
incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaDSIServant.java
Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaBindingImpl.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaBindingImpl.java?view=diff&rev=442178&r1=442177&r2=442178
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaBindingImpl.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaBindingImpl.java Mon Sep 11 04:29:26 2006
@@ -225,7 +225,7 @@
}
private boolean addMarshalParams(DataBindingCallback callback,
- List<ParamType> paramTypes,
+ List<ParamType> params,
CorbaMessageContext corbaCtx,
ObjectMessageContext objContext,
XMLInputFactory inputFactory,
@@ -236,26 +236,24 @@
Object ret = objContext.getReturn();
boolean hasOutParamReturn = false;
- // We need to count the number of out parameters to determine how Celtix is going to handle things.
- int outParamCount = 0;
- for (Iterator<ParamType> paramIter = paramTypes.iterator(); paramIter.hasNext();) {
- ParamType p = paramIter.next();
- if (p.getMode().equals(ModeType.OUT)) {
- outParamCount++;
- }
+ // We need to check to see if Celtix is using the return type of the operation as the method for
+ // passing back the value of a CORBA out parameter.
+ if (args != null) {
+ hasOutParamReturn = params.size() != args.length;
+ } else {
+ hasOutParamReturn = params.size() > 0;
}
int cbParamCount = 0;
- for (Iterator<ParamType> paramIter = paramTypes.iterator(); paramIter.hasNext();) {
+ for (Iterator<ParamType> paramIter = params.iterator(); paramIter.hasNext();) {
ParamType param = paramIter.next();
QName elName = null;
Object partValue = null;
- if (param.getMode().equals(ModeType.OUT) && outParamCount == 1) {
+ if (param.getMode().equals(ModeType.OUT) && hasOutParamReturn) {
// This is actually an OUT parameter to a CORBA application
WebResult wr = callback.getWebResult();
elName = new QName(wr.targetNamespace(), wr.name());
partValue = ret;
- hasOutParamReturn = true;
} else {
WebParam wp = callback.getWebParam(cbParamCount);
elName = new QName(wp.targetNamespace(), wp.name());
@@ -397,8 +395,8 @@
outputFactory.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES, Boolean.TRUE);
boolean hasOutParamReturn =
- addUnmarshalParams(callback, params, inputFactory, outputFactory,
- corbaCtx, objContext, reader);
+ addUnmarshalParams(callback, params, corbaCtx, objContext,
+ inputFactory, outputFactory, reader);
// Check to see if we have an input or output message and handle the return type
// appropriately
@@ -423,18 +421,21 @@
}
public boolean addUnmarshalParams(DataBindingCallback callback,
- List<ParamType> params,
- XMLInputFactory inputFactory,
- XMLOutputFactory outputFactory,
- CorbaMessageContext corbaContext,
- ObjectMessageContext objContext,
- DataReader<XMLEventReader> reader) throws java.lang.Exception {
+ List<ParamType> params,
+ CorbaMessageContext corbaContext,
+ ObjectMessageContext objContext,
+ XMLInputFactory inputFactory,
+ XMLOutputFactory outputFactory,
+ DataReader<XMLEventReader> reader) throws java.lang.Exception {
int cbParamIndex = 0;
int paramOffset = 0;
Object[] args = objContext.getMessageObjects();
CorbaStreamable[] streamables = corbaContext.getMessage().getStreamableArguments();
boolean hasOutParamReturn = false;
+
+ // We need to check to see if Celtix is using the return type of the operation as the method for
+ // passing back the value of a CORBA out parameter.
if (args != null) {
hasOutParamReturn = params.size() != args.length;
} else {
Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaDSIServant.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaDSIServant.java?view=diff&rev=442178&r1=442177&r2=442178
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaDSIServant.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaDSIServant.java Mon Sep 11 04:29:26 2006
@@ -27,6 +27,7 @@
import javax.xml.ws.WebServiceException;
import javax.xml.ws.handler.MessageContext;
+//import org.apache.schemas.yoko.bindings.corba.ArgType;
import org.apache.schemas.yoko.bindings.corba.BindingType;
import org.apache.schemas.yoko.bindings.corba.ModeType;
import org.apache.schemas.yoko.bindings.corba.OperationType;
@@ -119,7 +120,7 @@
// Build a list of streamables that correspond to the values that should be contained in the
// argument list of the ServerRequest, build the correct NVList and retreive the arguments
CorbaStreamable[] arguments = new CorbaStreamable[paramTypes.size()];
- NVList list = prepareDIIArgsList(corbaCtx, arguments, paramTypes, typeMaps, callback);
+ NVList list = prepareDIIArgsList(corbaCtx, objectCtx, arguments, paramTypes, typeMaps, callback);
request.arguments(list);
serverBinding.getBindingImpl().unmarshal(corbaCtx, objectCtx, callback);
@@ -159,17 +160,19 @@
}
}
- public NVList prepareDIIArgsList(CorbaMessageContext corbaCtx, CorbaStreamable[] streamables,
- List<ParamType> params, List<CorbaTypeMap> typeMaps,
- DataBindingCallback callback) {
+ public NVList prepareDIIArgsList(CorbaMessageContext corbaCtx, ObjectMessageContext objContext,
+ CorbaStreamable[] streamables, List<ParamType> params,
+ List<CorbaTypeMap> typeMaps, DataBindingCallback callback) {
NVList list = orb.create_list(streamables.length);
- int outParamCount = 0;
- for (Iterator<ParamType> iter = params.iterator(); iter.hasNext();) {
- ParamType param = iter.next();
- if (param.getMode().equals(ModeType.OUT)) {
- outParamCount++;
- }
+ // We need to check to see if Celtix is using the return type of the operation as the method for
+ // passing back the value of a CORBA out parameter.
+ Object[] args = objContext.getMessageObjects();
+ boolean hasOutParamReturn = false;
+ if (args != null) {
+ hasOutParamReturn = params.size() != args.length;
+ } else {
+ hasOutParamReturn = params.size() > 0;
}
int paramOffset = 0;
@@ -178,7 +181,7 @@
int index = cbParamCount + paramOffset;
ParamType pType = iter.next();
QName paramName = null;
- if (pType.getMode().equals(ModeType.OUT) && outParamCount == 1) {
+ if (pType.getMode().equals(ModeType.OUT) && hasOutParamReturn) {
paramName = new QName(callback.getWebResult().targetNamespace(),
callback.getWebResult().name());
paramOffset = 1;