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/11 18:58:45 UTC

svn commit: r537264 - in /incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba: interceptors/ runtime/ types/

Author: bravi
Date: Fri May 11 11:58:44 2007
New Revision: 537264

URL: http://svn.apache.org/viewvc?view=rev&rev=537264
Log:
[YOKO-366] - Updates to the perf branch for initial performance framework.

Added:
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaEnumListener.java   (with props)
Modified:
    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/interceptors/CorbaStreamOutInterceptor.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/AbstractCorbaTypeListener.java
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaHandlerUtils.java
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaObjectReferenceListener.java
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaSequenceListener.java
    incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaStructListener.java

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=537264&r1=537263&r2=537264
==============================================================================
--- 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 Fri May 11 11:58:44 2007
@@ -19,32 +19,133 @@
 
 package org.apache.yoko.bindings.corba.interceptors;
 
+import java.util.Iterator;
+import java.util.List;
 import java.util.logging.Logger;
 
+import javax.xml.namespace.QName;
 import javax.xml.stream.XMLStreamWriter;
 
 import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.message.Exchange;
 import org.apache.cxf.message.Message;
 
 import org.apache.cxf.phase.AbstractPhaseInterceptor;
 import org.apache.cxf.phase.Phase;
+import org.apache.cxf.service.model.BindingOperationInfo;
+import org.apache.cxf.service.model.MessageInfo;
+import org.apache.cxf.service.model.MessagePartInfo;
+import org.apache.cxf.service.model.OperationInfo;
+import org.apache.cxf.service.model.ServiceInfo;
+
+import org.apache.schemas.yoko.bindings.corba.ArgType;
+import org.apache.schemas.yoko.bindings.corba.ModeType;
+import org.apache.schemas.yoko.bindings.corba.OperationType;
+import org.apache.schemas.yoko.bindings.corba.ParamType;
 
 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.CorbaStreamWriter;
+import org.apache.yoko.bindings.corba.types.CorbaHandlerUtils;
+import org.apache.yoko.bindings.corba.types.CorbaObjectHandler;
+import org.apache.yoko.bindings.corba.utils.ContextUtils;
+import org.apache.yoko.wsdl.CorbaConstants;
 
 public class CorbaStreamOutEndingInterceptor extends AbstractPhaseInterceptor<Message> {
 
     private static final Logger LOG = LogUtils.getL7dLogger(CorbaStreamOutEndingInterceptor.class);
-    
+    private org.omg.CORBA.ORB orb;
+    private List<CorbaTypeMap> typeMaps;
+    private ServiceInfo service;
+
     public CorbaStreamOutEndingInterceptor() {
         super();
         setPhase(Phase.USER_STREAM);
     }
 
     public void handleMessage(Message msg) {
-        System.out.println("CorbaStreamOutEndingInterceptor... handle message...");
         CorbaMessage message = (CorbaMessage) msg;
-        CorbaStreamWriter writer = (CorbaStreamWriter) message.getContent(XMLStreamWriter.class);   
+        orb = (org.omg.CORBA.ORB) message.get(CorbaConstants.ORB);
+        Exchange exchange = message.getExchange();
+        BindingOperationInfo boi = exchange.get(BindingOperationInfo.class);
+        service = exchange.get(ServiceInfo.class);
+        typeMaps = message.getCorbaTypeMap();
+
+        if (ContextUtils.isRequestor(message)) {
+            handleOutBoundMessage(message, boi);
+        } else {
+            handleInBoundMessage(message, boi);
+        }
+
+    }
+
+    private void handleOutBoundMessage(CorbaMessage message, BindingOperationInfo boi) {
+        OperationInfo opInfo = boi.getOperationInfo();
+        OperationType opType = boi.getExtensor(OperationType.class);
+        List<ParamType> paramTypes = opType.getParam();
+        boolean wrap = false;
+        if (boi.isUnwrappedCapable()) {
+            wrap = true;
+        }
+        CorbaStreamWriter writer = (CorbaStreamWriter) message.getContent(XMLStreamWriter.class);
+        CorbaObjectHandler[] objs = writer.getCorbaObjects();
+        int count = 0;
+        for (Iterator<ParamType> iter = paramTypes.iterator(); iter.hasNext();) {
+            ParamType param = iter.next();
+            QName idlType = param.getIdltype();
+            QName paramName = new QName("", param.getName());
+            CorbaObjectHandler obj = null;
+            if (param.getMode().equals(ModeType.OUT)) {
+                if (!wrap) {
+                    MessagePartInfo part =
+                        getOutputMessagePartInfo(opInfo, param.getName());
+                    if (part != null && part.isElement()) {
+                        paramName = part.getElementQName();
+                    }
+                }
+                obj = CorbaHandlerUtils.initializeObjectHandler(orb,
+                                                                paramName,
+                                                                idlType,
+                                                                typeMaps,
+                                                                service);
+            } else {
+                obj = objs[count++];
+            }
+            CorbaStreamable streamable = message.createStreamableObject(obj, paramName);
+            ModeType paramMode = param.getMode();
+            if (paramMode.value().equals("in")) {
+                streamable.setMode(org.omg.CORBA.ARG_IN.value);
+            } else if (paramMode.value().equals("inout")) {
+                streamable.setMode(org.omg.CORBA.ARG_INOUT.value);
+            } else if (paramMode.value().equals("out")) {
+                streamable.setMode(org.omg.CORBA.ARG_OUT.value);
+            }
+            message.addStreamableArgument(streamable);
+        }
+
+        ArgType returnParam = opType.getReturn();
+        if (returnParam != null) {
+            QName retIdlType = returnParam.getIdltype();
+            QName retName = new QName("", returnParam.getName());
+            CorbaObjectHandler obj = CorbaHandlerUtils
+                .initializeObjectHandler(orb, retName, retIdlType, typeMaps, service);
+            CorbaStreamable streamable = message.createStreamableObject(obj, retName);
+            message.setStreamableReturn(streamable);
+        }
     }
 
+    private void handleInBoundMessage(CorbaMessage message, BindingOperationInfo boi) {
+    }
+
+    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;
+    }
 }

Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamOutInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamOutInterceptor.java?view=diff&rev=537264&r1=537263&r2=537264
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamOutInterceptor.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/interceptors/CorbaStreamOutInterceptor.java Fri May 11 11:58:44 2007
@@ -42,6 +42,7 @@
 import org.apache.yoko.bindings.corba.CorbaMessage;
 import org.apache.yoko.bindings.corba.CorbaTypeMap;
 import org.apache.yoko.bindings.corba.runtime.CorbaStreamWriter;
+import org.apache.yoko.bindings.corba.utils.ContextUtils;
 import org.apache.yoko.bindings.corba.utils.CorbaUtils;
 
 import org.apache.yoko.wsdl.CorbaConstants;
@@ -50,27 +51,41 @@
 
     private static final Logger LOG = LogUtils.getL7dLogger(CorbaStreamOutInterceptor.class);
     
+    private org.omg.CORBA.ORB orb;
+    private List<CorbaTypeMap> typeMaps;
+    private ServiceInfo service;
+
     public CorbaStreamOutInterceptor() {
         super();
         setPhase(Phase.PRE_STREAM);
     }
 
     public void handleMessage(Message msg) {
-        System.out.println("CorbaStreamOutInterceptor... handleMessage...");
         CorbaMessage message = (CorbaMessage) msg;
-        org.omg.CORBA.ORB orb = (org.omg.CORBA.ORB) message.get(CorbaConstants.ORB);
+        orb = (org.omg.CORBA.ORB) message.get(CorbaConstants.ORB);
         Exchange exchange = message.getExchange();
-        ServiceInfo service = exchange.get(ServiceInfo.class);
-        List<CorbaTypeMap> typeMaps = message.getCorbaTypeMap();
+        service = exchange.get(ServiceInfo.class);
+        typeMaps = message.getCorbaTypeMap();
         if (typeMaps == null) {
             typeMaps = new ArrayList<CorbaTypeMap>();
             List<TypeMappingType> corbaTypes =
                 service.getDescription().getExtensors(TypeMappingType.class);
             if (corbaTypes != null) {
                 CorbaUtils.createCorbaTypeMap(typeMaps, corbaTypes);
+                message.setCorbaTypeMap(typeMaps);
             }
         }
+
         BindingOperationInfo boi = exchange.get(BindingOperationInfo.class);
+        if (ContextUtils.isRequestor(message)) {
+            handleOutBoundMessage(message, boi);
+        } else {
+            handleInBoundMessage(message, boi);
+        }
+        message.getInterceptorChain().add(new CorbaStreamOutEndingInterceptor());
+    }
+
+    private void handleOutBoundMessage(CorbaMessage message, BindingOperationInfo boi) {
         boolean wrap = false;
         if (boi.isUnwrappedCapable()) {
             wrap = true;
@@ -86,8 +101,11 @@
         }
         CorbaStreamWriter writer = new CorbaStreamWriter(orb, params, typeMaps, service, wrap);
         message.setContent(XMLStreamWriter.class, writer);
+    }
 
-        message.getInterceptorChain().add(new CorbaStreamOutEndingInterceptor());
+    private void handleInBoundMessage(CorbaMessage message, BindingOperationInfo boi) {
     }
+
+    
 
 }

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=537264&r1=537263&r2=537264
==============================================================================
--- 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 Fri May 11 11:58:44 2007
@@ -57,6 +57,7 @@
 
     private Stack<QName> elements;
     private QName paramElement;
+    private QName wrapElementName;    
 
     public CorbaStreamWriter(ORB orbRef,
                              List<ParamType> paramTypes,
@@ -65,7 +66,6 @@
                              boolean wrap) {
         //ctx = new NamespaceContextImpl();
         orb = orbRef;
-        System.out.println("ORB: " + orb);
         params = paramTypes;
         typeMaps = maps;
         serviceInfo = sinfo;
@@ -93,10 +93,10 @@
             currentTypeListener = null;
         } else {
             QName name = elements.pop();
-            System.out.println("End: " + name);
-            currentTypeListener.processEndElement(name);
-            if (name.equals(paramElement)) {
+            if ((name.equals(paramElement)) || (name.equals(wrapElementName))) {
                 currentTypeListener = null;
+            } else {
+                currentTypeListener.processEndElement(name);
             }
         }
     }
@@ -113,14 +113,12 @@
         if (prefix != null) {
             setPrefix(prefix, namespaceURI);
         }
-        System.out.println("Check the start Element: " + localName);
         QName name = new QName(namespaceURI, localName, prefix);
         elements.push(name);
         if (!skipWrap) {
             if (currentTypeListener == null) {
                 paramElement = name;
                 ParamType param = params.get(paramCounter);
-                System.out.println("Param: " + param.getName() + "-" + param.getIdltype());
                 QName idlType = param.getIdltype();
                 if (localName.equals(param.getName())) {
                     currentTypeListener = CorbaHandlerUtils.getTypeListener(name, idlType, typeMaps, orb);
@@ -134,6 +132,7 @@
                 currentTypeListener.processStartElement(name);
             }
         } else {
+            wrapElementName = name;
             skipWrap = false;
         }
     }
@@ -174,7 +173,6 @@
     public void writeAttribute(java.lang.String localName,
                                java.lang.String value)
         throws XMLStreamException {
-        System.out.println("attr: " + localName + "-" + value);
     }
 
     public void writeAttribute(java.lang.String prefix,
@@ -182,14 +180,12 @@
                                java.lang.String localName,
                                java.lang.String value)
         throws XMLStreamException {
-        System.out.println("attr: " + prefix + "-" + namespaceURI + "-" + localName + "-" + value);
     }
 
     public void writeAttribute(java.lang.String namespaceURI,
                                java.lang.String localName,
                                java.lang.String value)
         throws XMLStreamException {
-        System.out.println("attr: " + namespaceURI + "-" + localName + "-" + value);
     }
 
     public void writeNamespace(java.lang.String prefix,
@@ -243,7 +239,6 @@
 
     public void writeCharacters(java.lang.String text)
         throws XMLStreamException {
-        System.out.println("current chars: " + text);
         currentTypeListener.processCharacters(text);
     }
 

Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/AbstractCorbaTypeListener.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/AbstractCorbaTypeListener.java?view=diff&rev=537264&r1=537263&r2=537264
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/AbstractCorbaTypeListener.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/AbstractCorbaTypeListener.java Fri May 11 11:58:44 2007
@@ -23,15 +23,13 @@
 
 public abstract class AbstractCorbaTypeListener implements CorbaTypeListener {
 
-    QName currentElement;
+    protected QName currentElement;
 
     public void processStartElement(QName name) {
         currentElement = name;
-        System.out.println("process StartElement: " + currentElement);
     }
 
     public void processEndElement(QName name) {
-        System.out.println("process EndElement: " + name);
         currentElement = null;
     }
 

Added: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaEnumListener.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaEnumListener.java?view=auto&rev=537264
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaEnumListener.java (added)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaEnumListener.java Fri May 11 11:58:44 2007
@@ -0,0 +1,40 @@
+/**
+ * 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 javax.xml.namespace.QName;
+
+import org.omg.CORBA.TypeCode;
+
+public class CorbaEnumListener extends AbstractCorbaTypeListener {
+
+    private CorbaEnumHandler value;
+    
+    public CorbaEnumListener(QName enumName, QName enumIdlType, TypeCode enumTC, Object enumType) {
+        value = new CorbaEnumHandler(enumName, enumIdlType, enumTC, enumType);
+    }
+
+    public CorbaObjectHandler getCorbaObject() {
+        return value;
+    }
+
+    public void processCharacters(String text) {
+        value.setValue(text);
+    }    
+}

Propchange: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaEnumListener.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaEnumListener.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=537264&r1=537263&r2=537264
==============================================================================
--- 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 Fri May 11 11:58:44 2007
@@ -471,6 +471,7 @@
                 break;
             case TCKind._tk_enum:
                 LOG.log(Level.INFO, "Reading enumeration type from XML reader");
+                result = new CorbaEnumListener(name, idlType, tc, type);
                 break;
             case TCKind._tk_except:
                 LOG.log(Level.INFO, "Reading exception type from XML reader");

Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaObjectReferenceListener.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaObjectReferenceListener.java?view=diff&rev=537264&r1=537263&r2=537264
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaObjectReferenceListener.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaObjectReferenceListener.java Fri May 11 11:58:44 2007
@@ -30,7 +30,6 @@
 public class CorbaObjectReferenceListener extends AbstractCorbaTypeListener {
 
     private CorbaObjectReferenceHandler value;
-    private QName currentElement;
     private ORB orb;
 
     public CorbaObjectReferenceListener(QName objName,

Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaSequenceListener.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaSequenceListener.java?view=diff&rev=537264&r1=537263&r2=537264
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaSequenceListener.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaSequenceListener.java Fri May 11 11:58:44 2007
@@ -61,7 +61,6 @@
     }
 
     public void processStartElement(QName name) {
-        System.out.println("seq process start el: " + name);
         if (currentTypeListener == null) {
             currentElName = name;
             currentTypeListener =
@@ -70,20 +69,21 @@
                                                   typeMaps,
                                                   orb);
             value.addElement(currentTypeListener.getCorbaObject());
+        } else {
+            currentTypeListener.processStartElement(name);
         }
-        currentTypeListener.processStartElement(name);
     }
 
     public void processEndElement(QName name) {
-        System.out.println("seq process end el: " + name);
-        currentTypeListener.processEndElement(name);
+        if (currentTypeListener != null) {
+            currentTypeListener.processEndElement(name);
+        }
         if (currentElName.equals(name)) {
             currentTypeListener = null;
         }
     }
 
     public void processCharacters(String text) {
-        System.out.println("seq process chars: " + text);
         currentTypeListener.processCharacters(text);
     }
 }

Modified: incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaStructListener.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaStructListener.java?view=diff&rev=537264&r1=537263&r2=537264
==============================================================================
--- incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaStructListener.java (original)
+++ incubator/yoko/branches/perf/src/main/java/org/apache/yoko/bindings/corba/types/CorbaStructListener.java Fri May 11 11:58:44 2007
@@ -52,7 +52,6 @@
     }
 
     public void processStartElement(QName name) {
-        System.out.println("struct process start el: " + name);
         //REVISIT, assume only elements not attrs
         if (currentTypeListener == null) {
             memberElement = name;
@@ -64,20 +63,20 @@
             value.addMember(currentTypeListener.getCorbaObject());
             memberCount++;
         } else {
-	    currentTypeListener.processStartElement(name);
-	}
+            currentTypeListener.processStartElement(name);
+        }
     }
 
     public void processEndElement(QName name) {
-        System.out.println("struct process end el: " + name);
-        currentTypeListener.processEndElement(name);
+        if (currentTypeListener != null) {
+            currentTypeListener.processEndElement(name);
+        }
         if (memberElement.equals(name)) {
             currentTypeListener = null;
         }
     }
 
     public void processCharacters(String text) {
-        System.out.println("struct process chars: " + text);
         currentTypeListener.processCharacters(text);
     }