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/31 17:07:17 UTC
svn commit: r543185 - in
/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/interceptors:
CorbaStreamInInterceptor.java CorbaStreamOutEndingInterceptor.java
Author: bravi
Date: Thu May 31 10:07:16 2007
New Revision: 543185
URL: http://svn.apache.org/viewvc?view=rev&rev=543185
Log:
[YOKO-366] - Fix for elementFormQualified check in the new performance work.
Modified:
incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamInInterceptor.java
incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamOutEndingInterceptor.java
Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamInInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamInInterceptor.java?view=diff&rev=543185&r1=543184&r2=543185
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamInInterceptor.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamInInterceptor.java Thu May 31 10:07:16 2007
@@ -230,31 +230,53 @@
try {
// Build the list of DII arguments, returns, and exceptions
NVList list = orb.create_list(streamables.length);
+
+ OperationInfo opInfo = boi.getOperationInfo();
+ MessageInfo input = opInfo.getInput();
+ MessageInfo output = opInfo.getOutput();
+ String inWrapNSUri = null;
+ String outWrapNSUri = null;
+
boolean wrap = false;
if (boi.isUnwrappedCapable()) {
wrap = true;
+ if (input != null) {
+ inWrapNSUri = getWrappedParamNamespace(input);
+ if (!CorbaUtils.isElementFormQualified(service, inWrapNSUri)) {
+ inWrapNSUri = "";
+ }
+ }
+ if (output != null) {
+ outWrapNSUri = getWrappedParamNamespace(output);
+ if (!CorbaUtils.isElementFormQualified(service, outWrapNSUri)) {
+ outWrapNSUri = "";
+ }
+ }
}
- OperationInfo opInfo = boi.getOperationInfo();
- MessageInfo msgInInfo = opInfo.getInput();
- for (int i = 0; i < paramTypes.size(); i++) {
+ int inMsgIndex = 0;
+ int outMsgIndex = 0;
+ for (int i = 0; i < paramTypes.size(); i++) {
ParamType param = paramTypes.get(i);
QName paramIdlType = param.getIdltype();
- QName paramName = msgInInfo.getMessagePartQName(param.getName());
+ QName paramName;
ModeType paramMode = param.getMode();
- if (!wrap) {
- MessagePartInfo part;
- if (paramMode.value().equals("in")) {
- part = getInputMessagePartInfo(opInfo, param.getName());
+ if (paramMode.value().equals("in")) {
+ if (wrap) {
+ paramName = new QName(inWrapNSUri, param.getName());
} else {
- part = getOutputMessagePartInfo(opInfo, param.getName());
+ paramName = getMessageParamQName(input, param.getName(), inMsgIndex);
+ inMsgIndex++;
}
- if (part != null && part.isElement()) {
- paramName = part.getElementQName();
+ } else {
+ if (wrap) {
+ paramName = new QName(outWrapNSUri, param.getName());
+ } else {
+ paramName = getMessageParamQName(output, param.getName(), outMsgIndex);
+ outMsgIndex++;
}
}
- paramName = CorbaUtils.processQName(paramName, service);
CorbaObjectHandler obj =
CorbaHandlerUtils.initializeObjectHandler(orb, paramName, paramIdlType, map, service);
streamables[i] = corbaMsg.createStreamableObject(obj, paramName);
@@ -275,27 +297,27 @@
} 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);
- }
+ protected QName getMessageParamQName(MessageInfo msgInfo,
+ String paramName,
+ int index) {
+ QName paramQName;
+ MessagePartInfo part = msgInfo.getMessageParts().get(index);
+ if (part != null && part.isElement()) {
+ paramQName = part.getElementQName();
+ } else {
+ paramQName = part.getName();
}
- return null;
+ return paramQName;
}
- 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);
- }
+ protected String getWrappedParamNamespace(MessageInfo msgInfo) {
+ MessagePartInfo part = msgInfo.getMessageParts().get(0);
+ if (part.isElement()) {
+ return part.getElementQName().getNamespaceURI();
+ } else {
+ return part.getName().getNamespaceURI();
}
- return null;
}
}
Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamOutEndingInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamOutEndingInterceptor.java?view=diff&rev=543185&r1=543184&r2=543185
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamOutEndingInterceptor.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamOutEndingInterceptor.java Thu May 31 10:07:16 2007
@@ -82,36 +82,63 @@
OperationInfo opInfo = boi.getOperationInfo();
OperationType opType = boi.getExtensor(OperationType.class);
List<ParamType> paramTypes = opType.getParam();
+
+ MessageInfo outMsgInfo = opInfo.getOutput();
+ String wrapNSUri = null;
boolean wrap = false;
if (boi.isUnwrappedCapable()) {
wrap = true;
+ if (outMsgInfo != null) {
+ wrapNSUri = getWrappedParamNamespace(outMsgInfo);
+ if (!CorbaUtils.isElementFormQualified(service, wrapNSUri)) {
+ wrapNSUri = "";
+ }
+ }
}
CorbaStreamWriter writer = (CorbaStreamWriter) message.getContent(XMLStreamWriter.class);
CorbaObjectHandler[] objs = writer.getCorbaObjects();
- MessageInfo outMsgInfo = opInfo.getOutput();
+
int count = 0;
+ int msgIndex = 0;
+
+ ArgType returnParam = opType.getReturn();
+
+ if (returnParam != null) {
+ QName retName;
+ if (wrap) {
+ retName = new QName(wrapNSUri, returnParam.getName());
+ } else {
+ retName = getMessageParamQName(outMsgInfo, returnParam.getName(), msgIndex);
+ }
+ QName retIdlType = returnParam.getIdltype();
+ CorbaObjectHandler obj = CorbaHandlerUtils
+ .initializeObjectHandler(orb, retName, retIdlType, typeMap, service);
+ CorbaStreamable streamable = message.createStreamableObject(obj, retName);
+ message.setStreamableReturn(streamable);
+ msgIndex++;
+ }
+
for (Iterator<ParamType> iter = paramTypes.iterator(); iter.hasNext();) {
ParamType param = iter.next();
QName idlType = param.getIdltype();
- QName paramName = outMsgInfo.getMessagePartQName(param.getName());
+ QName paramName;
CorbaObjectHandler obj = null;
if (param.getMode().equals(ModeType.OUT)) {
- if (!wrap) {
- MessagePartInfo part = outMsgInfo.getMessagePart(paramName);
- if (part != null && part.isElement()) {
- paramName = part.getElementQName();
- }
+ if (wrap) {
+ paramName = new QName(wrapNSUri, param.getName());
+ } else {
+ paramName = getMessageParamQName(outMsgInfo, param.getName(), msgIndex);
}
- paramName = CorbaUtils.processQName(paramName, service);
obj = CorbaHandlerUtils.initializeObjectHandler(orb,
paramName,
idlType,
typeMap,
service);
+ msgIndex++;
} else {
- paramName = CorbaUtils.processQName(paramName, service);
obj = objs[count++];
+ paramName = obj.getName();
}
CorbaStreamable streamable = message.createStreamableObject(obj, paramName);
ModeType paramMode = param.getMode();
@@ -122,61 +149,56 @@
} // default mode is out
message.addStreamableArgument(streamable);
}
-
- ArgType returnParam = opType.getReturn();
- if (returnParam != null) {
- QName retName =
- CorbaUtils.processQName(outMsgInfo.getMessagePartQName(returnParam.getName()), service);
- QName retIdlType = returnParam.getIdltype();
- CorbaObjectHandler obj = CorbaHandlerUtils
- .initializeObjectHandler(orb, retName, retIdlType, typeMap, service);
- CorbaStreamable streamable = message.createStreamableObject(obj, retName);
- message.setStreamableReturn(streamable);
- }
}
private void handleInBoundMessage(CorbaMessage message, BindingOperationInfo boi) {
OperationInfo opInfo = boi.getOperationInfo();
OperationType opType = boi.getExtensor(OperationType.class);
List<ParamType> paramTypes = opType.getParam();
+
+ MessageInfo msgInInfo = opInfo.getInput();
+ String wrapNSUri = null;
boolean wrap = false;
if (boi.isUnwrappedCapable()) {
wrap = true;
+ if (msgInInfo != null) {
+ wrapNSUri = getWrappedParamNamespace(msgInInfo);
+ if (!CorbaUtils.isElementFormQualified(service, wrapNSUri)) {
+ wrapNSUri = "";
+ }
+ }
}
CorbaStreamWriter writer = (CorbaStreamWriter) message.getContent(XMLStreamWriter.class);
CorbaObjectHandler[] objs = writer.getCorbaObjects();
int count = 0;
+ int msgIndex = 0;
ArgType returnParam = opType.getReturn();
if (returnParam != null) {
- MessageInfo msgOutInfo = opInfo.getOutput();
- QName retName =
- CorbaUtils.processQName(msgOutInfo.getMessagePartQName(returnParam.getName()), service);
CorbaObjectHandler obj = objs[count++];
+ QName retName = obj.getName();
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();
- QName paramName = msgInfo.getMessagePartQName(param.getName());
+ QName paramName;
CorbaObjectHandler obj = null;
if (param.getMode().equals(ModeType.IN)) {
- if (!wrap) {
- MessagePartInfo part = msgInfo.getMessagePart(paramName);
- if (part != null && part.isElement()) {
- paramName = part.getElementQName();
- }
+ if (wrap) {
+ paramName = new QName(wrapNSUri, param.getName());
+ } else {
+ paramName = getMessageParamQName(msgInInfo, param.getName(), msgIndex);
}
- paramName = CorbaUtils.processQName(paramName, service);
obj = CorbaHandlerUtils.initializeObjectHandler(orb,
paramName,
idlType,
typeMap,
service);
+ msgIndex++;
} else {
- paramName = CorbaUtils.processQName(paramName, service);
obj = objs[count++];
+ paramName = obj.getName();
}
CorbaStreamable streamable = message.createStreamableObject(obj, paramName);
ModeType paramMode = param.getMode();
@@ -190,6 +212,28 @@
message.addStreamableArgument(streamable);
}
+ }
+
+ protected QName getMessageParamQName(MessageInfo msgInfo,
+ String paramName,
+ int index) {
+ QName paramQName;
+ MessagePartInfo part = msgInfo.getMessageParts().get(index);
+ if (part != null && part.isElement()) {
+ paramQName = part.getElementQName();
+ } else {
+ paramQName = part.getName();
+ }
+ return paramQName;
+ }
+
+ protected String getWrappedParamNamespace(MessageInfo msgInfo) {
+ MessagePartInfo part = msgInfo.getMessageParts().get(0);
+ if (part.isElement()) {
+ return part.getElementQName().getNamespaceURI();
+ } else {
+ return part.getName().getNamespaceURI();
+ }
}
}