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