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 2007/05/31 18:30:53 UTC

svn commit: r543205 - in /incubator/yoko/trunk/bindings: ./ src/main/java/org/apache/yoko/bindings/corba/ src/main/java/org/apache/yoko/bindings/corba/runtime/ src/main/java/org/apache/yoko/bindings/corba/types/ src/main/java/org/apache/yoko/bindings/c...

Author: dmiddlem
Date: Thu May 31 11:30:51 2007
New Revision: 543205

URL: http://svn.apache.org/viewvc?view=rev&rev=543205
Log:
Commit for YOKO-366:
* Adding support for anys in the new performance work.
* Cleaned up old any handler test to reflect current state of the handler.
* Added a new test to verify Any handling over the wire.

Added:
    incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaAnyEventProducer.java   (with props)
    incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaAnyListener.java   (with props)
    incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/utils/CorbaAnyHelper.java   (with props)
    incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaAnyTest.java   (with props)
    incubator/yoko/trunk/bindings/src/test/resources/wsdl/AnyTest.wsdl   (with props)
Modified:
    incubator/yoko/trunk/bindings/pom.xml
    incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaTypeMap.java
    incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaStaxObject.java
    incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaStreamWriter.java
    incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/AbstractCorbaTypeListener.java
    incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaAnyHandler.java
    incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaHandlerUtils.java
    incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaTypeListener.java
    incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/utils/CorbaUtils.java
    incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/types/CorbaAnyHandlerTest.java

Modified: incubator/yoko/trunk/bindings/pom.xml
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/pom.xml?view=diff&rev=543205&r1=543204&r2=543205
==============================================================================
--- incubator/yoko/trunk/bindings/pom.xml (original)
+++ incubator/yoko/trunk/bindings/pom.xml Thu May 31 11:30:51 2007
@@ -348,18 +348,6 @@
                                         <extraarg>-verbose</extraarg>
                                     </extraargs>
                                 </wsdlOption>
-                            </wsdlOptions>
-                        </configuration>
-                        <goals>
-                            <goal>wsdl2java</goal>
-                        </goals>
-                    </execution>
-                    <execution>
-                        <id>generate-corba-nested-object-reference-test-java-sources</id>
-                        <phase>process-test-resources</phase>
-                        <configuration>
-                            <testSourceRoot>${basedir}/target/generated/src/test/java</testSourceRoot>
-                            <wsdlOptions>
                                 <wsdlOption>
                                     <wsdl>
                                         ${basedir}/src/test/resources/wsdl/NestedObjRef.wsdl
@@ -391,6 +379,26 @@
                                 <wsdlOption>
                                     <wsdl>
                                         ${basedir}/src/test/resources/wsdl/exceptions.wsdl
+                                    </wsdl>
+                                    <extraargs>
+                                        <extraarg>-verbose</extraarg>
+                                    </extraargs>
+                                </wsdlOption>
+                            </wsdlOptions>
+                        </configuration>
+                        <goals>
+                            <goal>wsdl2java</goal>
+                        </goals>
+                    </execution>
+                    <execution>
+                        <id>generate-corba-any-test-java-sources</id>
+                        <phase>process-test-resources</phase>
+                        <configuration>
+                            <testSourceRoot>${basedir}/target/generated/src/test/java</testSourceRoot>
+                            <wsdlOptions>
+                                <wsdlOption>
+                                    <wsdl>
+                                        ${basedir}/src/test/resources/wsdl/AnyTest.wsdl
                                     </wsdl>
                                     <extraargs>
                                         <extraarg>-verbose</extraarg>

Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaTypeMap.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaTypeMap.java?view=diff&rev=543205&r1=543204&r2=543205
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaTypeMap.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/CorbaTypeMap.java Thu May 31 11:30:51 2007
@@ -19,10 +19,14 @@
 package org.apache.yoko.bindings.corba;
 
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
 
 import javax.xml.namespace.QName;
 
+import org.apache.schemas.yoko.bindings.corba.NamedType;
 import org.apache.yoko.wsdl.CorbaTypeImpl;
 
 import org.omg.CORBA.TypeCode;
@@ -61,5 +65,34 @@
 
     public TypeCode getTypeCode(QName name) {
         return typeCodeMap.get(name);
+    }
+
+    // This is used by the Any type when trying to re-construct the type stored inside a 
+    // CORBA Any.
+    public QName getIdlType(TypeCode tc) {
+        String repId = null;
+        try {
+            repId = tc.id();
+        } catch (org.omg.CORBA.TypeCodePackage.BadKind ex) {
+            // No id has been set.
+            return null;
+        }
+
+        if (repId == null) {
+            return null;
+        }
+
+        Set<Map.Entry<String, CorbaTypeImpl>> mapSet = typeMap.entrySet();
+        for (Iterator<Map.Entry<String, CorbaTypeImpl>> i = mapSet.iterator(); i.hasNext();) {
+            Map.Entry<String, CorbaTypeImpl> entry = i.next();
+            if (entry.getValue() instanceof NamedType) {
+                NamedType n = (NamedType)entry.getValue();
+                if (n.getRepositoryID().equals(repId)) {
+                    return new QName(getTargetNamespace(), entry.getKey());
+                }
+            }
+        }
+
+        return null;
     }
 }

Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaStaxObject.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaStaxObject.java?view=diff&rev=543205&r1=543204&r2=543205
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaStaxObject.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaStaxObject.java Thu May 31 11:30:51 2007
@@ -421,7 +421,7 @@
             }                                    
                                     
             reader.nextEvent().asEndElement();
-            CorbaAnyHandler obj = new CorbaAnyHandler(startEl.getName(), idlType, tc, null);
+            CorbaAnyHandler obj = new CorbaAnyHandler(startEl.getName(), idlType, tc, null, typeMap);
             obj.setValueFromData(orb, charEl.getData(), anySchemaType);
             return obj;
         } catch (java.lang.Exception ex) {

Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaStreamWriter.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaStreamWriter.java?view=diff&rev=543205&r1=543204&r2=543205
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaStreamWriter.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/runtime/CorbaStreamWriter.java Thu May 31 11:30:51 2007
@@ -204,6 +204,9 @@
     public void writeNamespace(java.lang.String prefix,
                                java.lang.String namespaceURI)
         throws XMLStreamException {
+        if (currentTypeListener != null) {
+            currentTypeListener.processWriteNamespace(prefix, namespaceURI);
+        }
         setPrefix(prefix, namespaceURI);
     }
 

Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/AbstractCorbaTypeListener.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/AbstractCorbaTypeListener.java?view=diff&rev=543205&r1=543204&r2=543205
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/AbstractCorbaTypeListener.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/AbstractCorbaTypeListener.java Thu May 31 11:30:51 2007
@@ -48,4 +48,7 @@
     
     public void processWriteAttribute(String prefix, String namespaceURI, String localName, String value) {
     }
+
+    public void processWriteNamespace(String prefix, String namespaceURI) {
+    }
 }

Added: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaAnyEventProducer.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaAnyEventProducer.java?view=auto&rev=543205
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaAnyEventProducer.java (added)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaAnyEventProducer.java Thu May 31 11:30:51 2007
@@ -0,0 +1,138 @@
+/**
+ * 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 java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLEventFactory;
+import javax.xml.stream.events.Attribute;
+import javax.xml.stream.events.Namespace;
+
+import org.apache.cxf.service.model.ServiceInfo;
+
+import org.apache.yoko.bindings.corba.runtime.CorbaObjectReader;
+import org.apache.yoko.bindings.corba.utils.CorbaAnyHelper;
+import org.apache.yoko.bindings.corba.utils.CorbaUtils;
+import org.apache.yoko.wsdl.CorbaConstants;
+import org.apache.yoko.wsdl.CorbaTypeImpl;
+import org.apache.yoko.wsdl.W3CConstants;
+
+import org.omg.CORBA.Any;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.TCKind;
+import org.omg.CORBA.TypeCode;
+import org.omg.CORBA.portable.InputStream;
+
+public class CorbaAnyEventProducer extends AbstractStartEndEventProducer {
+
+    private CorbaAnyHandler handler;
+
+    private List<Attribute> attributes;
+    private List<Namespace> namespaces;
+
+    private CorbaObjectHandler containedType;
+
+    public CorbaAnyEventProducer(CorbaObjectHandler h, ServiceInfo info, ORB orbRef) {
+        handler = (CorbaAnyHandler)h;
+        name = CorbaUtils.processQName(handler.getName(), info);
+        orb = orbRef;
+        serviceInfo = info;
+
+        containedType = getAnyContainedType(handler.getValue());
+
+        if (containedType != null) {
+            QName containedSchemaType = convertIdlToSchemaType(containedType);
+
+            XMLEventFactory factory = XMLEventFactory.newInstance();
+
+            attributes = new ArrayList<Attribute>();
+            attributes.add(factory.createAttribute(new QName(W3CConstants.NU_SCHEMA_XSI, "type"), 
+                                                   containedSchemaType.getPrefix() + ":" 
+                                                   + containedSchemaType.getLocalPart())); 
+
+            namespaces = new ArrayList<Namespace>();
+            namespaces.add(factory.createNamespace(containedSchemaType.getPrefix(), 
+                                                   containedSchemaType.getNamespaceURI()));
+        }
+
+        List<CorbaObjectHandler> handlers = new ArrayList<CorbaObjectHandler>();
+        handlers.add(containedType);
+        iterator = handlers.iterator();
+    }
+
+    public int next() {
+        // For anys, we need to make sure that we don't have start and end elements for the
+        // anys contained type in the XML output.  So we'll check for the current name and if it
+        // equals our contained type, we'll skip over the start element for that type.
+        int result = super.next();
+        if (super.getName().equals(containedType.getName())) {
+            result = super.next();
+        }
+        return result;
+    }
+    
+    public List<Attribute> getAttributes() {
+        return attributes;
+    }
+
+    public List<Namespace> getNamespaces() {
+        return namespaces;
+    }
+
+    private CorbaObjectHandler getAnyContainedType(Any a) {
+        CorbaObjectHandler result = null;
+
+        TypeCode tc = a.type();
+        QName containedName = new QName("AnyContainedType");
+        QName idlType = null;
+        if (CorbaUtils.isPrimitiveTypeCode(tc)) {
+            idlType = CorbaAnyHelper.getPrimitiveIdlTypeFromTypeCode(tc);
+            result = new CorbaPrimitiveHandler(containedName, idlType, tc, null);
+        } else if (tc.kind().value() == TCKind._tk_any) {
+            idlType = CorbaConstants.NT_CORBA_ANY;
+            result = new CorbaAnyHandler(containedName, idlType, tc, null, handler.getTypeMap());
+        } else {
+            idlType = handler.getTypeMap().getIdlType(tc);
+            result = CorbaHandlerUtils.initializeObjectHandler(orb, containedName, idlType,
+                                                               handler.getTypeMap(), serviceInfo);
+        }
+
+        InputStream is = a.create_input_stream();
+        CorbaObjectReader reader = new CorbaObjectReader(is);
+        reader.read(result);
+
+        return result;
+    }
+
+    private QName convertIdlToSchemaType(CorbaObjectHandler obj) {
+        QName idlType = obj.getIdlType();
+        QName result = null;
+        if (CorbaAnyHelper.isPrimitiveIdlType(idlType)) {
+            result = CorbaAnyHelper.convertPrimitiveIdlToSchemaType(obj.getIdlType());
+        } else {
+            CorbaTypeImpl impl = obj.getType();
+            result = impl.getType();
+        }
+
+        return result;
+    }
+}

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

Propchange: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaAnyEventProducer.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaAnyHandler.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaAnyHandler.java?view=diff&rev=543205&r1=543204&r2=543205
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaAnyHandler.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaAnyHandler.java Thu May 31 11:30:51 2007
@@ -20,31 +20,27 @@
 
 import javax.xml.namespace.QName;
 
+
 import org.apache.yoko.bindings.corba.CorbaBindingException;
+import org.apache.yoko.bindings.corba.CorbaTypeMap;
 
 import org.omg.CORBA.Any;
-import org.omg.CORBA.ORB;
-import org.omg.CORBA.TCKind;
 import org.omg.CORBA.TypeCode;
 
 public class CorbaAnyHandler extends CorbaObjectHandler {
 
     private Any value;
-    private String schemaType;
+    private CorbaTypeMap typeMap;
     
-    public CorbaAnyHandler(QName anyName, QName anyIdlType, TypeCode anyTC, Object anyType) {
+    public CorbaAnyHandler(QName anyName, 
+                           QName anyIdlType, 
+                           TypeCode anyTC, 
+                           Object anyType,
+                           CorbaTypeMap tm) {
         super(anyName, anyIdlType, anyTC, anyType);
         
-        schemaType = null;
         value = null;
-    }
-    
-    public String getSchemaType() {
-        return schemaType;
-    }
-    
-    public void setSchemaType(String type) {
-        schemaType = type;
+        typeMap = tm;
     }
     
     public Any getValue() {
@@ -54,151 +50,12 @@
     public void clear() {
         value = null;
     }
-    
-    public void setValue(Any v) throws CorbaBindingException {
-        value = v;
 
-        // Need to find the appropriate xsi:type for the any
-        // TODO: See the comment in setValueFromData regarding the xs: prefix.  We'll also need
-        //       to make a similar change here.
-        switch (value.type().kind().value()) {
-        case TCKind._tk_boolean:
-            schemaType = "xs:boolean";
-            break;
-        case TCKind._tk_char:
-            schemaType = "xs:byte";
-            break;
-        case TCKind._tk_wchar:
-            schemaType = "xs:string";
-            break;
-        case TCKind._tk_octet:
-            schemaType = "xs:unsignedByte";
-            break;
-        case TCKind._tk_short:
-            schemaType = "xs:short";
-            break;
-        case TCKind._tk_ushort:
-            schemaType = "xs:unsignedShort";
-            break;
-        case TCKind._tk_long:
-            schemaType = "xs:int";
-            break;
-        case TCKind._tk_ulong:
-            schemaType = "xs:unsignedInt";
-            break;
-        case TCKind._tk_longlong:
-            schemaType = "xs:long";
-            break;
-        case TCKind._tk_ulonglong:
-            schemaType = "xs:unsignedLong";
-            break;
-        case TCKind._tk_double:
-            schemaType = "xs:double";
-            break;
-        case TCKind._tk_float:
-            schemaType = "xs:float";
-            break;
-        case TCKind._tk_string:
-            schemaType = "xs:string";
-            break;
-        case TCKind._tk_wstring:
-            schemaType = "xs:string";
-            break;
-        default:
-            throw new CorbaBindingException("Unsupported type in CORBA Any");
-        }
+    public CorbaTypeMap getTypeMap() {
+        return typeMap;
     }
     
-    public String getValueData() throws CorbaBindingException {
-        String result = null;
-        
-        switch (value.type().kind().value()) {
-        case TCKind._tk_boolean:
-            result = Boolean.toString(value.extract_boolean());
-            break;
-        case TCKind._tk_char:
-            result = Byte.toString((byte)value.extract_char());
-            break;
-        case TCKind._tk_wchar:
-            result = Character.toString(value.extract_wchar());
-            break;
-        case TCKind._tk_octet:
-            result = Byte.toString(value.extract_octet());
-            break;
-        case TCKind._tk_short:
-            result = Short.toString(value.extract_short());
-            break;
-        case TCKind._tk_ushort:
-            result = Short.toString(value.extract_ushort());
-            break;
-        case TCKind._tk_long:
-            result = Integer.toString(value.extract_long());
-            break;
-        case TCKind._tk_ulong:
-            result = Integer.toString(value.extract_ulong());
-            break;
-        case TCKind._tk_longlong:
-            result = Long.toString(value.extract_longlong());
-            break;
-        case TCKind._tk_ulonglong:
-            result = Long.toString(value.extract_ulonglong());
-            break;
-        case TCKind._tk_double:
-            result = Double.toString(value.extract_double());
-            break;
-        case TCKind._tk_float:
-            result = Float.toString(value.extract_float());
-            break;
-        case TCKind._tk_string:
-            result = value.extract_string();
-            break;
-        case TCKind._tk_wstring:
-            result = value.extract_wstring();
-            break;
-        default:
-            throw new CorbaBindingException("Unsupported type in CORBA Any");
-        }
-        
-        return result;
-    }
-    
-    public void setValueFromData(ORB orb, String data, String type) 
-        throws CorbaBindingException {
-        value = orb.create_any();
-        
-        // TODO: For now, the xs: is hard coded because the namespace for xs: is not included in the 
-        // STAX element where we get the type information from.  This will need to be changed so that
-        // it does not depend on the XML Schema namespace using the xs: prefix.
-        if (type.equals("xs:boolean")) {
-            value.insert_boolean(Boolean.parseBoolean(data));
-        } else if (type.equals("xs:byte")) {
-            value.insert_char((char)Byte.valueOf(data).byteValue());
-        } else if (type.equals("xs:double")) {
-            value.insert_double(Double.parseDouble(data));
-        } else if (type.equals("xs:float")) {
-            value.insert_float(Float.parseFloat(data));
-        } else if (type.equals("xs:int")) {
-            value.insert_long(Integer.parseInt(data));
-        } else if (type.equals("xs:long")) {
-            value.insert_longlong(Long.parseLong(data));
-        } else if (type.equals("xs:short")) {
-            value.insert_short(Short.parseShort(data));
-        } else if (type.equals("xs:string")) {
-            // NOTE: CORBA wchar, string, and wstrings will all be inserted as strings since they all
-            //       map to the same XML Schema type.  There is no way in Celtix of differentiating 
-            //       between the three when used in an any.
-            value.insert_string(data);
-        } else if (type.equals("xs:unsignedByte")) {
-            value.insert_octet(Byte.parseByte(data));
-        } else if (type.equals("xs:unsignedInt")) {
-            value.insert_ulong(Integer.parseInt(data));
-        } else if (type.equals("xs:unsignedLong")) {
-            value.insert_ulonglong(Long.parseLong(data));
-        } else if (type.equals("xs:unsignedShort")) {
-            value.insert_ushort(Short.parseShort(data));
-        } else {
-            throw new CorbaBindingException("Unsupported XML Schema type");
-        }
-        schemaType = type;
+    public void setValue(Any v) throws CorbaBindingException {
+        value = v;
     }
 }

Added: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaAnyListener.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaAnyListener.java?view=auto&rev=543205
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaAnyListener.java (added)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaAnyListener.java Thu May 31 11:30:51 2007
@@ -0,0 +1,155 @@
+/**
+ * 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 java.util.HashMap;
+import java.util.Map;
+import javax.xml.namespace.QName;
+
+import org.apache.cxf.service.model.ServiceInfo;
+
+import org.apache.yoko.bindings.corba.CorbaTypeMap;
+import org.apache.yoko.bindings.corba.runtime.CorbaObjectWriter;
+import org.apache.yoko.bindings.corba.utils.CorbaAnyHelper;
+import org.apache.yoko.wsdl.W3CConstants;
+
+import org.omg.CORBA.Any;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.portable.OutputStream;
+
+public class CorbaAnyListener extends AbstractCorbaTypeListener {
+
+    private final CorbaTypeMap typeMap;
+    private final ORB orb;
+    private ServiceInfo serviceInfo;
+    private CorbaTypeListener currentTypeListener;
+    private QName containedType;
+    private int depth;
+    private Map<String, String> namespaceMap;
+
+    public CorbaAnyListener(CorbaObjectHandler h,
+                            CorbaTypeMap map,
+                            ORB orbRef,
+                            ServiceInfo info) {
+        super(h);
+        orb = orbRef;
+        typeMap = map;
+        serviceInfo = info;
+        depth = 0;
+
+        namespaceMap = new HashMap<String, String>();
+    }
+
+    public void processStartElement(QName name) {
+        depth++;
+        if (currentTypeListener == null) {
+            currentElement = name;
+            QName idlType = convertSchemaToIdlType(containedType);
+            currentTypeListener = CorbaHandlerUtils.getTypeListener(name,
+                                                                    idlType,
+                                                                    typeMap,
+                                                                    orb,
+                                                                    serviceInfo);
+            currentTypeListener.processStartElement(idlType);
+        } else {
+            currentTypeListener.processStartElement(name);
+        }
+    }
+
+    public void processEndElement(QName name) {
+        if (currentTypeListener != null) {
+            currentTypeListener.processEndElement(name);
+            depth--;
+        }
+    
+        if (depth == 0 && currentTypeListener != null && currentElement.equals(name)) {
+            CorbaObjectHandler obj = currentTypeListener.getCorbaObject();
+
+            Any a = orb.create_any();
+            OutputStream os = a.create_output_stream();
+            CorbaObjectWriter writer = new CorbaObjectWriter(os);
+            writer.write(obj);
+            a.read_value(os.create_input_stream(), obj.getTypeCode());
+            
+            CorbaAnyHandler anyHandler = (CorbaAnyHandler)handler;
+            anyHandler.setValue(a);
+
+            currentTypeListener = null;
+            currentElement = null;
+        } 
+    }
+
+    public void processCharacters(String text) {
+        if (currentTypeListener == null) {
+            // This is the case with a primitive type.  Since there aren't any requests to
+            // startElement and endElement, we need to do everything in here.
+            QName idlType = convertSchemaToIdlType(containedType);
+            CorbaTypeListener primitiveListener = CorbaHandlerUtils.getTypeListener(idlType,
+                                                                                    idlType,
+                                                                                    typeMap,
+                                                                                    orb,
+                                                                                    serviceInfo);
+            primitiveListener.processCharacters(text);
+
+            CorbaObjectHandler obj = primitiveListener.getCorbaObject();
+
+            Any a = orb.create_any();
+            OutputStream os = a.create_output_stream();
+            CorbaObjectWriter writer = new CorbaObjectWriter(os);
+            writer.write(obj);
+            a.read_value(os.create_input_stream(), obj.getTypeCode());
+            
+            CorbaAnyHandler anyHandler = (CorbaAnyHandler)handler;
+            anyHandler.setValue(a);
+        } else {
+            currentTypeListener.processCharacters(text);
+        }
+    }
+
+    public void processWriteAttribute(String prefix, String namespaceURI, String localName, String value) {
+        if ("type".equals(localName) && W3CConstants.NU_SCHEMA_XSI.equals(namespaceURI)) {
+            int index = value.lastIndexOf(':');
+            if (index != -1) {
+                String pfx = value.substring(0, index);
+                String ns = namespaceMap.get(pfx);
+                containedType = new QName(ns, value.substring(index + 1), pfx);
+            } else {
+                containedType = new QName(value);
+            }
+        }
+    }
+
+    public void processWriteNamespace(String prefix, String namespaceURI) {
+        namespaceMap.put(prefix, namespaceURI);
+    }
+
+    private QName convertSchemaToIdlType(QName schemaType) {
+        QName idlType = null;
+        if (CorbaAnyHelper.isPrimitiveSchemaType(schemaType)) {
+            idlType = CorbaAnyHelper.convertPrimitiveSchemaToIdlType(schemaType);
+        } else {
+            // The localpart of the schema QName should match the localpart of the type in the CORBA
+            // typemap.
+            idlType = new QName(typeMap.getTargetNamespace(), schemaType.getLocalPart());
+        }
+        
+        return idlType;
+    }
+}

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

Propchange: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaAnyListener.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaHandlerUtils.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaHandlerUtils.java?view=diff&rev=543205&r1=543204&r2=543205
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaHandlerUtils.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaHandlerUtils.java Thu May 31 11:30:51 2007
@@ -76,12 +76,10 @@
             throw new CorbaBindingException(ex);
         }
         if (CorbaUtils.isPrimitiveIdlType(idlType)) {
-            // Any is a special primitive
-            if (tc.kind().value() == TCKind._tk_any) {
-                handler = new CorbaAnyHandler(name, idlType, tc, null);                
-            } else {
-                handler = new CorbaPrimitiveHandler(name, idlType, tc, null);
-            }
+            handler = new CorbaPrimitiveHandler(name, idlType, tc, null);
+        } else if (tc.kind().value() == TCKind._tk_any) {
+            // Any is a special kind of primitive so it gets its own handler
+            handler = new CorbaAnyHandler(name, idlType, tc, null, typeMap);
         } else {
             CorbaTypeImpl type = CorbaUtils.getCorbaType(idlType, typeMap);
             switch (tc.kind().value()) {
@@ -443,6 +441,8 @@
             CorbaTypeImpl type = CorbaUtils.getCorbaType(idlType, typeMap);
             switch (tc.kind().value()) {
             case TCKind._tk_any:
+                handler = new CorbaAnyHandler(name, idlType, tc, type, typeMap);
+                result = new CorbaAnyListener(handler, typeMap, orb, serviceInfo);
                 break;
             case TCKind._tk_array:
                 handler = new CorbaArrayHandler(name, idlType, tc, type);
@@ -500,6 +500,7 @@
         } else {
             switch (tc.kind().value()) {
             case TCKind._tk_any:
+                result = new CorbaAnyEventProducer(handler, serviceInfo, orb);
                 break;
             case TCKind._tk_array:
                 result = new CorbaArrayEventProducer(handler, serviceInfo, orb);

Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaTypeListener.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaTypeListener.java?view=diff&rev=543205&r1=543204&r2=543205
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaTypeListener.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/types/CorbaTypeListener.java Thu May 31 11:30:51 2007
@@ -28,4 +28,5 @@
     void processCharacters(String text);
     CorbaObjectHandler getCorbaObject();
     void processWriteAttribute(String prefix, String namespaceURI, String localName, String value);
+    void processWriteNamespace(String prefix, String namespaceURI);
 }

Added: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/utils/CorbaAnyHelper.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/utils/CorbaAnyHelper.java?view=auto&rev=543205
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/utils/CorbaAnyHelper.java (added)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/utils/CorbaAnyHelper.java Thu May 31 11:30:51 2007
@@ -0,0 +1,146 @@
+/**
+ * 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.utils;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.xml.namespace.QName;
+
+import org.apache.yoko.wsdl.CorbaConstants;
+import org.apache.yoko.wsdl.W3CConstants;
+
+import org.omg.CORBA.TCKind;
+import org.omg.CORBA.TypeCode;
+
+public class CorbaAnyHelper {
+   
+    private static Map<QName, QName> SCHEMA_TO_IDL_TYPES = new HashMap<QName, QName>();
+    private static Map<QName, QName> IDL_TO_SCHEMA_TYPES = new HashMap<QName, QName>();
+
+    public static boolean isPrimitiveSchemaType(QName schemaType) {
+        return SCHEMA_TO_IDL_TYPES.get(schemaType) != null;
+    }
+
+    public static boolean isPrimitiveIdlType(QName idlType) {
+        return IDL_TO_SCHEMA_TYPES.get(idlType) != null;
+    }
+    
+    public static QName convertPrimitiveSchemaToIdlType(QName schemaType) {
+        return SCHEMA_TO_IDL_TYPES.get(schemaType);
+    }
+
+    public static QName convertPrimitiveIdlToSchemaType(QName idlType) {
+        return IDL_TO_SCHEMA_TYPES.get(idlType);
+    }
+
+    public static QName getPrimitiveIdlTypeFromTypeCode(TypeCode tc) {
+        TCKind type = tc.kind();
+        QName result = null;
+
+        switch(type.value()) {
+        case TCKind._tk_boolean:
+            result = CorbaConstants.NT_CORBA_BOOLEAN;
+            break;
+        case TCKind._tk_char:
+            result = CorbaConstants.NT_CORBA_CHAR;
+            break;
+        case TCKind._tk_wchar:
+            result = CorbaConstants.NT_CORBA_WCHAR;
+            break;
+        case TCKind._tk_octet:
+            result = CorbaConstants.NT_CORBA_OCTET;
+            break;
+        case TCKind._tk_short:
+            result = CorbaConstants.NT_CORBA_SHORT;
+            break;
+        case TCKind._tk_ushort:
+            result = CorbaConstants.NT_CORBA_USHORT;
+            break;
+        case TCKind._tk_long:
+            result = CorbaConstants.NT_CORBA_LONG;
+            break;
+        case TCKind._tk_ulong:
+            result = CorbaConstants.NT_CORBA_ULONG;
+            break;
+        case TCKind._tk_longlong:
+            result = CorbaConstants.NT_CORBA_LONGLONG;
+            break;
+        case TCKind._tk_ulonglong:
+            result = CorbaConstants.NT_CORBA_ULONGLONG;
+            break;
+        case TCKind._tk_float:
+            result = CorbaConstants.NT_CORBA_FLOAT;
+            break;
+        case TCKind._tk_double:
+            result = CorbaConstants.NT_CORBA_DOUBLE;
+            break;
+        case TCKind._tk_string:
+            result = CorbaConstants.NT_CORBA_STRING;
+            break;
+        case TCKind._tk_wstring:
+            result = CorbaConstants.NT_CORBA_WSTRING;
+            break;
+        default:
+            result = null;
+        }
+
+        return result;
+    }
+
+    // NOTE: We have an issue when we get a schema type of String.  We don't know whether this means
+    // that we have an IDL type of wchar, string, or wstring.  To be safe, we'll simply use a CORBA
+    // string for the mapping.
+    static {
+        SCHEMA_TO_IDL_TYPES.put(W3CConstants.NT_SCHEMA_BOOLEAN, CorbaConstants.NT_CORBA_BOOLEAN);
+        SCHEMA_TO_IDL_TYPES.put(W3CConstants.NT_SCHEMA_BYTE, CorbaConstants.NT_CORBA_CHAR);
+        //SCHEMA_TO_IDL_TYPES.put(W3CConstants.NT_SCHEMA_STRING, CorbaConstants.NT_CORBA_WCHAR);
+        SCHEMA_TO_IDL_TYPES.put(W3CConstants.NT_SCHEMA_UBYTE, CorbaConstants.NT_CORBA_OCTET);
+        SCHEMA_TO_IDL_TYPES.put(W3CConstants.NT_SCHEMA_SHORT, CorbaConstants.NT_CORBA_SHORT);
+        SCHEMA_TO_IDL_TYPES.put(W3CConstants.NT_SCHEMA_USHORT, CorbaConstants.NT_CORBA_USHORT);
+        SCHEMA_TO_IDL_TYPES.put(W3CConstants.NT_SCHEMA_INT, CorbaConstants.NT_CORBA_LONG);
+        SCHEMA_TO_IDL_TYPES.put(W3CConstants.NT_SCHEMA_UINT, CorbaConstants.NT_CORBA_ULONG);
+        SCHEMA_TO_IDL_TYPES.put(W3CConstants.NT_SCHEMA_LONG, CorbaConstants.NT_CORBA_LONGLONG);
+        SCHEMA_TO_IDL_TYPES.put(W3CConstants.NT_SCHEMA_ULONG, CorbaConstants.NT_CORBA_ULONGLONG);
+        SCHEMA_TO_IDL_TYPES.put(W3CConstants.NT_SCHEMA_FLOAT, CorbaConstants.NT_CORBA_FLOAT);
+        SCHEMA_TO_IDL_TYPES.put(W3CConstants.NT_SCHEMA_DOUBLE, CorbaConstants.NT_CORBA_DOUBLE);
+        SCHEMA_TO_IDL_TYPES.put(W3CConstants.NT_SCHEMA_STRING, CorbaConstants.NT_CORBA_STRING);
+        //SCHEMA_TO_IDL_TYPES.put(W3CConstants.NT_SCHEMA_STRING, CorbaConstants.NT_CORBA_WSTRING);
+        SCHEMA_TO_IDL_TYPES.put(W3CConstants.NT_SCHEMA_ANYTYPE, CorbaConstants.NT_CORBA_ANY);
+    }
+
+    static {
+        IDL_TO_SCHEMA_TYPES.put(CorbaConstants.NT_CORBA_BOOLEAN, W3CConstants.NT_SCHEMA_BOOLEAN);
+        IDL_TO_SCHEMA_TYPES.put(CorbaConstants.NT_CORBA_CHAR, W3CConstants.NT_SCHEMA_BYTE);
+        IDL_TO_SCHEMA_TYPES.put(CorbaConstants.NT_CORBA_WCHAR, W3CConstants.NT_SCHEMA_STRING);
+        IDL_TO_SCHEMA_TYPES.put(CorbaConstants.NT_CORBA_OCTET, W3CConstants.NT_SCHEMA_UBYTE);
+        IDL_TO_SCHEMA_TYPES.put(CorbaConstants.NT_CORBA_SHORT, W3CConstants.NT_SCHEMA_SHORT);
+        IDL_TO_SCHEMA_TYPES.put(CorbaConstants.NT_CORBA_USHORT, W3CConstants.NT_SCHEMA_USHORT);
+        IDL_TO_SCHEMA_TYPES.put(CorbaConstants.NT_CORBA_LONG, W3CConstants.NT_SCHEMA_INT);
+        IDL_TO_SCHEMA_TYPES.put(CorbaConstants.NT_CORBA_ULONG, W3CConstants.NT_SCHEMA_UINT);
+        IDL_TO_SCHEMA_TYPES.put(CorbaConstants.NT_CORBA_LONGLONG, W3CConstants.NT_SCHEMA_LONG);
+        IDL_TO_SCHEMA_TYPES.put(CorbaConstants.NT_CORBA_ULONGLONG, W3CConstants.NT_SCHEMA_ULONG);
+        IDL_TO_SCHEMA_TYPES.put(CorbaConstants.NT_CORBA_FLOAT, W3CConstants.NT_SCHEMA_FLOAT);
+        IDL_TO_SCHEMA_TYPES.put(CorbaConstants.NT_CORBA_DOUBLE, W3CConstants.NT_SCHEMA_DOUBLE);
+        IDL_TO_SCHEMA_TYPES.put(CorbaConstants.NT_CORBA_STRING, W3CConstants.NT_SCHEMA_STRING);
+        IDL_TO_SCHEMA_TYPES.put(CorbaConstants.NT_CORBA_WSTRING, W3CConstants.NT_SCHEMA_STRING);
+        IDL_TO_SCHEMA_TYPES.put(CorbaConstants.NT_CORBA_ANY, W3CConstants.NT_SCHEMA_ANYTYPE);
+    }
+}

Propchange: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/utils/CorbaAnyHelper.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/utils/CorbaAnyHelper.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/utils/CorbaUtils.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/utils/CorbaUtils.java?view=diff&rev=543205&r1=543204&r2=543205
==============================================================================
--- incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/utils/CorbaUtils.java (original)
+++ incubator/yoko/trunk/bindings/src/main/java/org/apache/yoko/bindings/corba/utils/CorbaUtils.java Thu May 31 11:30:51 2007
@@ -95,7 +95,10 @@
         TypeCode tc = null;
         // first see if it is a primitive
         tc = getPrimitiveTypeCode(orb, type);
-        if (tc == null) {
+        if (tc == null && type.equals(CorbaConstants.NT_CORBA_ANY)) {
+            // Anys are handled in a special way
+            tc = orb.get_primitive_tc(TCKind.from_int(TCKind._tk_any));
+        } else if (tc == null) {
             if (typeMap == null) {
                 throw new CorbaBindingException("Unable to locate typemap for namespace \"" 
                                                 + type.getNamespaceURI() + "\"");

Added: incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaAnyTest.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaAnyTest.java?view=auto&rev=543205
==============================================================================
--- incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaAnyTest.java (added)
+++ incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaAnyTest.java Thu May 31 11:30:51 2007
@@ -0,0 +1,212 @@
+/**
+ * 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;
+
+import java.io.File;
+import java.util.HashMap;
+import java.net.URL;
+import java.util.Map;
+import java.util.Properties;
+
+import javax.jws.WebService;
+import javax.xml.namespace.QName;
+import javax.xml.ws.BindingProvider;
+import javax.xml.ws.Endpoint;
+import javax.xml.ws.Service;
+
+import org.apache.cxf.jaxb.JAXBUtils;
+import org.apache.cxf.ws.addressing.EndpointReferenceType;
+import org.apache.cxf.wsdl.EndpointReferenceUtils;
+import org.apache.cxf.wsdl.WSDLManager;
+import org.apache.cxf.wsdl11.WSDLManagerImpl;
+
+import org.apache.schemas.yoko.idl.anytest.AnyTest;
+import org.apache.schemas.yoko.idl.anytest.AnyTestCORBAService;
+import org.apache.schemas.yoko.idl.anytest.TestStruct;
+
+import junit.framework.TestCase;
+
+public class CorbaAnyTest extends TestCase {
+   
+    private final QName PORT_NAME = 
+        new QName("http://schemas.apache.org/yoko/idl/AnyTest", "AnyTestCORBAPort"); 
+    
+    private final QName SERVICE_NAME = 
+        new QName("http://schemas.apache.org/yoko/idl/AnyTest", "AnyTestCORBAService"); 
+    
+    private final static String WSDL_LOCATION = "/wsdl/AnyTest.wsdl";
+    private final static int MAX_WAIT_COUNT = 15;
+    
+    private static TestServer server;
+    private static boolean testServerReady;
+    private AnyTest client;
+    private URL wsdlUrl;
+
+    public CorbaAnyTest(String arg0) {
+        super(arg0);
+    }
+    
+    public static void main(String[] args) {
+        junit.textui.TestRunner.run(CorbaAnyTest.class);
+    }
+    
+    protected void setUp() throws Exception {
+        super.setUp();
+       
+        if (server == null) {
+            server = new TestServer();
+            server.start();
+        }
+
+        int waitCount = 0;
+        // Wait for the server to start if it hasn't already
+        while (waitCount < MAX_WAIT_COUNT && !server.isReady()) {
+            try {
+                Thread.sleep(1000);
+                waitCount++;
+            } catch (Exception ex) {
+                // Consume
+            }
+        }
+
+        if (!server.isReady()) {
+            throw new Exception("Server failed to start in a timely fashion");
+        }
+
+        // Now initialize the client-side
+        try {
+            wsdlUrl = AnyTest.class.getResource(WSDL_LOCATION);
+        } catch (Exception ex) {
+            throw new Exception("Unable to resolve WSDL location");
+        }
+        
+        AnyTestCORBAService service = 
+            new AnyTestCORBAService(wsdlUrl, SERVICE_NAME);
+        client = service.getPort(PORT_NAME, AnyTest.class);
+
+        if (client == null) {
+            throw new Exception("Unable to create client");
+        }
+    }
+
+    protected void tearDown() throws Exception {
+        super.tearDown();
+
+        server.interrupt();
+
+        try {
+            // Sleep for 3 seconds waiting for the server to shut down
+            Thread.sleep(3000);
+        } catch (Exception ex) {
+            // Move on to check if the server is down
+        }
+
+        if (server.isAlive()) {
+            throw new Exception("Did not terminate test server!");
+        }
+    }
+
+    public void testAnyParameter() {
+        String message = "AnyTestMessage";
+        assertTrue(client.testAnyParameterWithPrimitive(message));
+        
+        TestStruct ts = new TestStruct();
+        ts.setMember("AnyTestMessage");
+        assertTrue(client.testAnyParameterWithComplex(ts));
+    }
+
+    public void testAnyReturn() {
+        Object obj = client.testAnyReturnWithPrimitive();
+        if (obj instanceof Short) {
+            Short s = (Short)obj;
+            assertTrue(s.shortValue() == 123);
+        } else {
+            assertTrue(false);
+        }
+
+        obj = client.testAnyReturnWithComplex();
+        if (obj instanceof TestStruct) {
+            TestStruct ts = (TestStruct)obj;
+            assertTrue(ts.getMember().equals("AnyTestMessage"));
+        } else {
+            assertTrue(false);
+        }
+    }
+
+    // A small test server for the test case to interact with
+    public class TestServer extends Thread {
+        private boolean serverReady;
+
+        public TestServer() {
+            serverReady = false;
+        }
+
+        public void run() {
+            Object implementor = new AnyTestImpl();
+            String address = "corbaloc::localhost:43210/AnyTest";
+            Endpoint ep = Endpoint.create("http://schemas.apache.org/yoko/bindings/corba", implementor);
+            String wsdlLocation = getClass().getResource("/wsdl/AnyTest.wsdl").toString();
+            Map<String, Object> props = new HashMap<String, Object>();
+            props.put("javax.xml.ws.wsdl.description", wsdlLocation);
+            ep.setProperties(props);
+            ep.publish(address);
+            serverReady = true;
+        }
+
+        public boolean isReady() {
+            return serverReady;
+        }
+    }
+
+    // A minimal bank implementation to test object references
+    @WebService(portName = "AnyTestCORBAPort",
+                          serviceName = "AnyTestCORBAService",
+                          targetNamespace = "http://schemas.apache.org/yoko/idl/AnyTest",
+                          endpointInterface = "org.apache.schemas.yoko.idl.anytest.AnyTest")
+    public class AnyTestImpl implements AnyTest {
+
+        public boolean testAnyParameterWithPrimitive(java.lang.Object param) {
+            if (!(param instanceof String)) {
+                return false;
+            }
+
+            String stringVal = (String)param;
+            return stringVal.equals("AnyTestMessage");
+        }
+
+        public boolean testAnyParameterWithComplex(java.lang.Object param) {
+            if (!(param instanceof TestStruct)) {
+                return false;
+            }
+
+            TestStruct ts = (TestStruct)param;
+            return ts.getMember().equals("AnyTestMessage");
+        }
+
+        public java.lang.Object testAnyReturnWithPrimitive() {
+            return new Short("123");
+        }
+        
+        public java.lang.Object testAnyReturnWithComplex() {
+            TestStruct ts = new TestStruct();
+            ts.setMember("AnyTestMessage");
+            return ts;
+        }
+    }
+}

Propchange: incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaAnyTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/CorbaAnyTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/types/CorbaAnyHandlerTest.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/types/CorbaAnyHandlerTest.java?view=diff&rev=543205&r1=543204&r2=543205
==============================================================================
--- incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/types/CorbaAnyHandlerTest.java (original)
+++ incubator/yoko/trunk/bindings/src/test/java/org/apache/yoko/bindings/corba/types/CorbaAnyHandlerTest.java Thu May 31 11:30:51 2007
@@ -21,6 +21,7 @@
 
 import javax.xml.namespace.QName;
 
+import org.apache.yoko.bindings.corba.CorbaTypeMap;
 import org.apache.yoko.wsdl.CorbaConstants;
 
 import org.omg.CORBA.Any;
@@ -61,313 +62,34 @@
             }
         } 
     }
-    
-    public void testGetSetSchemaType() {
-        String testSchemaType = "xs:string";
-        QName anyName = new QName("TestAny");
-        QName anyIdlType = CorbaConstants.NT_CORBA_ANY;
-        TypeCode anyTC = orb.get_primitive_tc(TCKind.tk_any);
-        
-        CorbaAnyHandler anyHandler = new CorbaAnyHandler(anyName, anyIdlType, anyTC, null);
-        anyHandler.setSchemaType(testSchemaType);
-        String result = anyHandler.getSchemaType();
-        assert(result.equals(testSchemaType));
-    }
-    
-    public void testGetSetValue() {
-        QName anyName = new QName("TestAny");
+
+    public void testCorbaAnyHandler() {
+
+        Any a = orb.create_any();
+        a.insert_string("TestMessage");
+
+        QName anyName = new QName("AnyHandlerName");
         QName anyIdlType = CorbaConstants.NT_CORBA_ANY;
-        TypeCode anyTC = orb.get_primitive_tc(TCKind.tk_any);
-        
-        CorbaAnyHandler anyHandler = new CorbaAnyHandler(anyName, anyIdlType, anyTC, null);
-        Any any = orb.create_any();
-        String expectedSchemaType = null;
-        Any result = null;
-        String resultSchemaType = null;
-
-        boolean boolValue = false;
-        any.insert_boolean(boolValue);
-        anyHandler.setValue(any);
-        expectedSchemaType = "xs:boolean";
-        result = anyHandler.getValue();
-        assertTrue(result.type().kind().value() == TCKind._tk_boolean);
-        boolean boolResult = result.extract_boolean();
-        assertTrue(boolResult == boolValue);
-        resultSchemaType = anyHandler.getSchemaType();
-        assertTrue(resultSchemaType.equals(expectedSchemaType));
-
-        char charValue = 'c';
-        any.insert_char(charValue);
-        anyHandler.setValue(any);
-        expectedSchemaType = "xs:byte";
-        result = anyHandler.getValue();
-        assertTrue(result.type().kind().value() == TCKind._tk_char);
-        char charResult = result.extract_char();
-        assertTrue(charResult == charValue);
-        resultSchemaType = anyHandler.getSchemaType();
-        assertTrue(resultSchemaType.equals(expectedSchemaType));
-
-        char wcharValue = 'w';
-        any.insert_wchar(wcharValue);
-        anyHandler.setValue(any);
-        expectedSchemaType = "xs:string";
-        result = anyHandler.getValue();
-        assertTrue(result.type().kind().value() == TCKind._tk_wchar);
-        char wcharResult = result.extract_wchar();
-        assertTrue(wcharResult == wcharValue);
-        resultSchemaType = anyHandler.getSchemaType();
-        assertTrue(resultSchemaType.equals(expectedSchemaType));
-
-        byte octetValue = (byte)8;
-        any.insert_octet(octetValue);
-        anyHandler.setValue(any);
-        expectedSchemaType = "xs:unsignedByte";
-        result = anyHandler.getValue();
-        assertTrue(result.type().kind().value() == TCKind._tk_octet);
-        byte octetResult = result.extract_octet();
-        assertTrue(octetResult == octetValue);
-        resultSchemaType = anyHandler.getSchemaType();
-        assertTrue(resultSchemaType.equals(expectedSchemaType));
-
-        short shortValue = (short)-123;
-        any.insert_short(shortValue);
-        anyHandler.setValue(any);
-        expectedSchemaType = "xs:short";
-        result = anyHandler.getValue();
-        assertTrue(result.type().kind().value() == TCKind._tk_short);
-        short shortResult = result.extract_short();
-        assertTrue(shortResult == shortValue);
-        resultSchemaType = anyHandler.getSchemaType();
-        assertTrue(resultSchemaType.equals(expectedSchemaType));
-
-        short ushortValue = (short)123;
-        any.insert_ushort(ushortValue);
-        anyHandler.setValue(any);
-        expectedSchemaType = "xs:unsignedShort";
-        result = anyHandler.getValue();
-        assertTrue(result.type().kind().value() == TCKind._tk_ushort);
-        short ushortResult = result.extract_ushort();
-        assertTrue(ushortResult == ushortValue);
-        resultSchemaType = anyHandler.getSchemaType();
-        assertTrue(resultSchemaType.equals(expectedSchemaType));
-
-        int longValue = -12345;
-        any.insert_long(longValue);
-        anyHandler.setValue(any);
-        expectedSchemaType = "xs:int";
-        result = anyHandler.getValue();
-        assertTrue(result.type().kind().value() == TCKind._tk_long);
-        int longResult = result.extract_long();
-        assertTrue(longResult == longValue);
-        resultSchemaType = anyHandler.getSchemaType();
-        assertTrue(resultSchemaType.equals(expectedSchemaType));
-
-        int ulongValue = 12345;
-        any.insert_ulong(ulongValue);
-        anyHandler.setValue(any);
-        expectedSchemaType = "xs:unsignedInt";
-        result = anyHandler.getValue();
-        assertTrue(result.type().kind().value() == TCKind._tk_ulong);
-        int ulongResult = result.extract_ulong();
-        assertTrue(ulongResult == ulongValue);
-        resultSchemaType = anyHandler.getSchemaType();
-        assertTrue(resultSchemaType.equals(expectedSchemaType));
-
-        long longlongValue = -123456789;
-        any.insert_longlong(longlongValue);
-        anyHandler.setValue(any);
-        expectedSchemaType = "xs:long";
-        result = anyHandler.getValue();
-        assertTrue(result.type().kind().value() == TCKind._tk_longlong);
-        long longlongResult = result.extract_longlong();
-        assertTrue(longlongResult == longlongValue);
-        resultSchemaType = anyHandler.getSchemaType();
-        assertTrue(resultSchemaType.equals(expectedSchemaType));
-
-        long ulonglongValue = 123456789;
-        any.insert_ulonglong(ulonglongValue);
-        anyHandler.setValue(any);
-        expectedSchemaType = "xs:unsignedLong";
-        result = anyHandler.getValue();
-        assertTrue(result.type().kind().value() == TCKind._tk_ulonglong);
-        long ulonglongResult = result.extract_ulonglong();
-        assertTrue(ulonglongResult == ulonglongValue);
-        resultSchemaType = anyHandler.getSchemaType();
-        assertTrue(resultSchemaType.equals(expectedSchemaType));
-
-        double doubleValue = 1234.56;
-        any.insert_double(doubleValue);
-        anyHandler.setValue(any);
-        expectedSchemaType = "xs:double";
-        result = anyHandler.getValue();
-        assertTrue(result.type().kind().value() == TCKind._tk_double);
-        double doubleResult = result.extract_double();
-        assertTrue(doubleResult == doubleValue);
-        resultSchemaType = anyHandler.getSchemaType();
-        assertTrue(resultSchemaType.equals(expectedSchemaType));
-
-        float floatValue = 123456.78f;
-        any.insert_float(floatValue);
-        anyHandler.setValue(any);
-        expectedSchemaType = "xs:float";
-        result = anyHandler.getValue();
-        assertTrue(result.type().kind().value() == TCKind._tk_float);
-        float floatResult = result.extract_float();
-        assertTrue(floatResult == floatValue);
-        resultSchemaType = anyHandler.getSchemaType();
-        assertTrue(resultSchemaType.equals(expectedSchemaType));
+        TypeCode anyTC = orb.get_primitive_tc(TCKind.from_int(TCKind._tk_any));
+        CorbaTypeMap tm = new CorbaTypeMap(CorbaConstants.NU_WSDL_CORBA);
         
-        String stringValue = "test string";
-        any.insert_string(stringValue);
-        anyHandler.setValue(any);
-        expectedSchemaType = "xs:string";
-        result = anyHandler.getValue();
-        assertTrue(result.type().kind().value() == TCKind._tk_string);
-        String stringResult = result.extract_string();
-        assertTrue(stringResult == stringValue);
-        resultSchemaType = anyHandler.getSchemaType();
-        assertTrue(resultSchemaType.equals(expectedSchemaType));
-
-        String wstringValue = "test wstring";
-        any.insert_wstring(wstringValue);
-        anyHandler.setValue(any);
-        expectedSchemaType = "xs:string";
-        result = anyHandler.getValue();
-        assertTrue(result.type().kind().value() == TCKind._tk_wstring);
-        String wstringResult = result.extract_wstring();
-        assertTrue(wstringResult == wstringValue);
-        resultSchemaType = anyHandler.getSchemaType();
-        assertTrue(resultSchemaType.equals(expectedSchemaType));
-    }
-    
-    public void testGetSetValueData() {
-        QName anyName = new QName("TestAny");
-        QName anyIdlType = CorbaConstants.NT_CORBA_ANY;
-        TypeCode anyTC = orb.get_primitive_tc(TCKind.tk_any);
-        CorbaAnyHandler anyHandler = new CorbaAnyHandler(anyName, anyIdlType, anyTC, null);
+        CorbaAnyHandler anyHandler = new CorbaAnyHandler(anyName, anyIdlType, anyTC, null, tm);
 
-        String value = null;
-        String resultValue = null;
-        String schemaType = null;
-        String resultSchemaType = null;
-        Any resultAny = null;
-        
-        value = "false";
-        schemaType = "xs:boolean";
-        anyHandler.setValueFromData(orb, value, schemaType);
-        resultValue = anyHandler.getValueData();
-        resultSchemaType = anyHandler.getSchemaType();
-        assertTrue(resultValue.equals(value));        
-        assertTrue(resultSchemaType.equals(schemaType));
-        resultAny = anyHandler.getValue();
-        assertTrue(resultAny.type().kind().value() == TCKind._tk_boolean);
-
-        value = "7";
-        schemaType = "xs:byte";
-        anyHandler.setValueFromData(orb, value, schemaType);
-        resultValue = anyHandler.getValueData();
-        resultSchemaType = anyHandler.getSchemaType();
-        assertTrue(resultValue.equals(value));
-        assertTrue(resultSchemaType.equals(schemaType));
-        resultAny = anyHandler.getValue();
-        assertTrue(resultAny.type().kind().value() == TCKind._tk_char);
-
-        value = "1234.56";
-        schemaType = "xs:double";
-        anyHandler.setValueFromData(orb, value, schemaType);
-        resultValue = anyHandler.getValueData();
-        resultSchemaType = anyHandler.getSchemaType();
-        assertTrue(resultValue.equals(value));
-        assertTrue(resultSchemaType.equals(schemaType));
-        resultAny = anyHandler.getValue();
-        assertTrue(resultAny.type().kind().value() == TCKind._tk_double);
-
-        value = "987654.321";
-        schemaType = "xs:float";
-        anyHandler.setValueFromData(orb, value, schemaType);
-        resultSchemaType = anyHandler.getSchemaType();
-        assertTrue(resultSchemaType.equals(schemaType));
-        resultAny = anyHandler.getValue();
-        assertTrue(resultAny.type().kind().value() == TCKind._tk_float);
-
-        value = "12345";
-        schemaType = "xs:int";
-        anyHandler.setValueFromData(orb, value, schemaType);
-        resultValue = anyHandler.getValueData();
-        resultSchemaType = anyHandler.getSchemaType();
-        assertTrue(resultValue.equals(value));
-        assertTrue(resultSchemaType.equals(schemaType));
-        resultAny = anyHandler.getValue();
-        assertTrue(resultAny.type().kind().value() == TCKind._tk_long);
-
-        value = "123456789";
-        schemaType = "xs:long";
-        anyHandler.setValueFromData(orb, value, schemaType);
-        resultValue = anyHandler.getValueData();
-        resultSchemaType = anyHandler.getSchemaType();
-        assertTrue(resultValue.equals(value));
-        assertTrue(resultSchemaType.equals(schemaType));
-        resultAny = anyHandler.getValue();
-        assertTrue(resultAny.type().kind().value() == TCKind._tk_longlong);
-
-        value = "123";
-        schemaType = "xs:short";
-        anyHandler.setValueFromData(orb, value, schemaType);
-        resultValue = anyHandler.getValueData();
-        resultSchemaType = anyHandler.getSchemaType();
-        assertTrue(resultValue.equals(value));
-        assertTrue(resultSchemaType.equals(schemaType));
-        resultAny = anyHandler.getValue();
-        assertTrue(resultAny.type().kind().value() == TCKind._tk_short);
-
-        value = "test string";
-        schemaType = "xs:string";
-        anyHandler.setValueFromData(orb, value, schemaType);
-        resultValue = anyHandler.getValueData();
-        resultSchemaType = anyHandler.getSchemaType();
-        assertTrue(resultValue.equals(value));
-        assertTrue(resultSchemaType.equals(schemaType));
-        resultAny = anyHandler.getValue();
-        assertTrue(resultAny.type().kind().value() == TCKind._tk_string);
-
-        value = "9";
-        schemaType = "xs:unsignedByte";
-        anyHandler.setValueFromData(orb, value, schemaType);
-        resultValue = anyHandler.getValueData();
-        resultSchemaType = anyHandler.getSchemaType();
-        assertTrue(resultValue.equals(value));
-        assertTrue(resultSchemaType.equals(schemaType));
-        resultAny = anyHandler.getValue();
-        assertTrue(resultAny.type().kind().value() == TCKind._tk_octet);
-
-        value = "654321";
-        schemaType = "xs:unsignedInt";
-        anyHandler.setValueFromData(orb, value, schemaType);
-        resultValue = anyHandler.getValueData();
-        resultSchemaType = anyHandler.getSchemaType();
-        assertTrue(resultValue.equals(value));
-        assertTrue(resultSchemaType.equals(schemaType));
-        resultAny = anyHandler.getValue();
-        assertTrue(resultAny.type().kind().value() == TCKind._tk_ulong);
-
-        value = "987654321";
-        schemaType = "xs:unsignedLong";
-        anyHandler.setValueFromData(orb, value, schemaType);
-        resultValue = anyHandler.getValueData();
-        resultSchemaType = anyHandler.getSchemaType();
-        assertTrue(resultValue.equals(value));
-        assertTrue(resultSchemaType.equals(schemaType));
-        resultAny = anyHandler.getValue();
-        assertTrue(resultAny.type().kind().value() == TCKind._tk_ulonglong);
-
-        value = "321";
-        schemaType = "xs:unsignedShort";
-        anyHandler.setValueFromData(orb, value, schemaType);
-        resultValue = anyHandler.getValueData();
-        resultSchemaType = anyHandler.getSchemaType();
-        assertTrue(resultValue.equals(value));
-        assertTrue(resultSchemaType.equals(schemaType));
-        resultAny = anyHandler.getValue();
-        assertTrue(resultAny.type().kind().value() == TCKind._tk_ushort);
+        // Test the get/set value methods
+        anyHandler.setValue(a);
+        Any resultAny = anyHandler.getValue();
+
+        assertNotNull(resultAny);
+
+        try {
+            String value = resultAny.extract_string();
+            assertTrue(value.equals("TestMessage"));
+        } catch (Exception ex) {
+            assertTrue(false);
+        }
+
+        // Test get/set CorbaTypeMap methods
+        CorbaTypeMap resultTM = anyHandler.getTypeMap();
+        assertTrue(resultTM.getTargetNamespace().equals(CorbaConstants.NU_WSDL_CORBA));
     }
 }

Added: incubator/yoko/trunk/bindings/src/test/resources/wsdl/AnyTest.wsdl
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/bindings/src/test/resources/wsdl/AnyTest.wsdl?view=auto&rev=543205
==============================================================================
--- incubator/yoko/trunk/bindings/src/test/resources/wsdl/AnyTest.wsdl (added)
+++ incubator/yoko/trunk/bindings/src/test/resources/wsdl/AnyTest.wsdl Thu May 31 11:30:51 2007
@@ -0,0 +1,182 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions targetNamespace="http://schemas.apache.org/yoko/idl/AnyTest" xmlns:tns="http://schemas.apache.org/yoko/idl/AnyTest" xmlns:corba="http://schemas.apache.org/yoko/bindings/corba" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+  <corba:typeMapping targetNamespace="http://schemas.apache.org/yoko/idl/AnyTest/typemap">
+    <corba:struct xmlns:ns4="http://schemas.apache.org/yoko/idl/AnyTest" xmlns="http://schemas.apache.org/yoko/idl/AnyTest/typemap" repositoryID="IDL:TestStruct:1.0" name="TestStruct" type="ns4:TestStruct">
+      <corba:member name="member" idltype="corba:string" />
+    </corba:struct>
+  </corba:typeMapping>
+  <wsdl:types>
+    <xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://schemas.apache.org/yoko/idl/AnyTest" xmlns="http://schemas.apache.org/yoko/idl/AnyTest" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+      <xs:complexType name="TestStruct">
+        <xs:sequence>
+          <xs:element name="member" type="xs:string">
+          </xs:element>
+        </xs:sequence>
+      </xs:complexType>
+      <xs:element name="testAnyParameterWithPrimitive">
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="param" type="xs:anyType">
+            </xs:element>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="testAnyParameterWithPrimitiveResponse">
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="return" type="xs:boolean">
+            </xs:element>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="testAnyParameterWithComplex">
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="param" type="xs:anyType">
+            </xs:element>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="testAnyParameterWithComplexResponse">
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="return" type="xs:boolean">
+            </xs:element>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="testAnyReturnWithPrimitive">
+        <xs:complexType>
+          <xs:sequence>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="testAnyReturnWithPrimitiveResponse">
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="return" type="xs:anyType">
+            </xs:element>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="testAnyReturnWithComplex">
+        <xs:complexType>
+          <xs:sequence>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="testAnyReturnWithComplexResponse">
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="return" type="xs:anyType">
+            </xs:element>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:schema>
+  </wsdl:types>
+  <wsdl:message name="testAnyReturnWithPrimitive">
+    <wsdl:part name="inparameter" element="tns:testAnyReturnWithPrimitive">
+    </wsdl:part>
+  </wsdl:message>
+  <wsdl:message name="testAnyParameterWithPrimitiveResponse">
+    <wsdl:part name="outparameter" element="tns:testAnyParameterWithPrimitiveResponse">
+    </wsdl:part>
+  </wsdl:message>
+  <wsdl:message name="testAnyParameterWithPrimitive">
+    <wsdl:part name="inparameter" element="tns:testAnyParameterWithPrimitive">
+    </wsdl:part>
+  </wsdl:message>
+  <wsdl:message name="testAnyReturnWithComplexResponse">
+    <wsdl:part name="outparameter" element="tns:testAnyReturnWithComplexResponse">
+    </wsdl:part>
+  </wsdl:message>
+  <wsdl:message name="testAnyReturnWithPrimitiveResponse">
+    <wsdl:part name="outparameter" element="tns:testAnyReturnWithPrimitiveResponse">
+    </wsdl:part>
+  </wsdl:message>
+  <wsdl:message name="testAnyParameterWithComplexResponse">
+    <wsdl:part name="outparameter" element="tns:testAnyParameterWithComplexResponse">
+    </wsdl:part>
+  </wsdl:message>
+  <wsdl:message name="testAnyReturnWithComplex">
+    <wsdl:part name="inparameter" element="tns:testAnyReturnWithComplex">
+    </wsdl:part>
+  </wsdl:message>
+  <wsdl:message name="testAnyParameterWithComplex">
+    <wsdl:part name="inparameter" element="tns:testAnyParameterWithComplex">
+    </wsdl:part>
+  </wsdl:message>
+  <wsdl:portType name="AnyTest">
+    <wsdl:operation name="testAnyParameterWithPrimitive">
+      <wsdl:input name="testAnyParameterWithPrimitiveRequest" message="tns:testAnyParameterWithPrimitive">
+    </wsdl:input>
+      <wsdl:output name="testAnyParameterWithPrimitiveResponse" message="tns:testAnyParameterWithPrimitiveResponse">
+    </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="testAnyParameterWithComplex">
+      <wsdl:input name="testAnyParameterWithComplexRequest" message="tns:testAnyParameterWithComplex">
+    </wsdl:input>
+      <wsdl:output name="testAnyParameterWithComplexResponse" message="tns:testAnyParameterWithComplexResponse">
+    </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="testAnyReturnWithPrimitive">
+      <wsdl:input name="testAnyReturnWithPrimitiveRequest" message="tns:testAnyReturnWithPrimitive">
+    </wsdl:input>
+      <wsdl:output name="testAnyReturnWithPrimitiveResponse" message="tns:testAnyReturnWithPrimitiveResponse">
+    </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="testAnyReturnWithComplex">
+      <wsdl:input name="testAnyReturnWithComplexRequest" message="tns:testAnyReturnWithComplex">
+    </wsdl:input>
+      <wsdl:output name="testAnyReturnWithComplexResponse" message="tns:testAnyReturnWithComplexResponse">
+    </wsdl:output>
+    </wsdl:operation>
+  </wsdl:portType>
+  <wsdl:binding name="AnyTestCORBABinding" type="tns:AnyTest">
+    <corba:binding repositoryID="IDL:AnyTest:1.0" />
+    <wsdl:operation name="testAnyParameterWithPrimitive">
+      <corba:operation name="testAnyParameterWithPrimitive">
+        <corba:param mode="in" name="param" idltype="corba:any" />
+        <corba:return name="return" idltype="corba:boolean" />
+      </corba:operation>
+      <wsdl:input name="testAnyParameterWithPrimitiveRequest">
+      </wsdl:input>
+      <wsdl:output name="testAnyParameterWithPrimitiveResponse">
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="testAnyParameterWithComplex">
+      <corba:operation name="testAnyParameterWithComplex">
+        <corba:param mode="in" name="param" idltype="corba:any" />
+        <corba:return name="return" idltype="corba:boolean" />
+      </corba:operation>
+      <wsdl:input name="testAnyParameterWithComplexRequest">
+      </wsdl:input>
+      <wsdl:output name="testAnyParameterWithComplexResponse">
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="testAnyReturnWithPrimitive">
+      <corba:operation name="testAnyReturnWithPrimitive">
+        <corba:return name="return" idltype="corba:any" />
+      </corba:operation>
+      <wsdl:input name="testAnyReturnWithPrimitiveRequest">
+      </wsdl:input>
+      <wsdl:output name="testAnyReturnWithPrimitiveResponse">
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="testAnyReturnWithComplex">
+      <corba:operation name="testAnyReturnWithComplex">
+        <corba:return name="return" idltype="corba:any" />
+      </corba:operation>
+      <wsdl:input name="testAnyReturnWithComplexRequest">
+      </wsdl:input>
+      <wsdl:output name="testAnyReturnWithComplexResponse">
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding>
+  <wsdl:service name="AnyTestCORBAService">
+    <wsdl:port name="AnyTestCORBAPort" binding="tns:AnyTestCORBABinding">
+      <corba:address location="corbaloc::localhost:43210/AnyTest" />
+    </wsdl:port>
+  </wsdl:service>
+</wsdl:definitions>

Propchange: incubator/yoko/trunk/bindings/src/test/resources/wsdl/AnyTest.wsdl
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/yoko/trunk/bindings/src/test/resources/wsdl/AnyTest.wsdl
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: incubator/yoko/trunk/bindings/src/test/resources/wsdl/AnyTest.wsdl
------------------------------------------------------------------------------
    svn:mime-type = text/xml