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();
+        }
     }
 
 }