summaryrefslogtreecommitdiffstats
path: root/java/sca/modules/binding-corba-runtime
diff options
context:
space:
mode:
authorwjaniszewski <wjaniszewski@13f79535-47bb-0310-9956-ffa450edef68>2008-08-17 21:26:26 +0000
committerwjaniszewski <wjaniszewski@13f79535-47bb-0310-9956-ffa450edef68>2008-08-17 21:26:26 +0000
commit7d05fe8fd909c342fe796afcc811639d4aaab55c (patch)
tree196a219719049668c773ca35f6baf78afa3c6a36 /java/sca/modules/binding-corba-runtime
parentf569b5942734441fa59f478b2a3be7382437f2ff (diff)
Added support for CORBA unions
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@686643 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/sca/modules/binding-corba-runtime')
-rw-r--r--java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/CorbaReferenceBindingProvider.java4
-rw-r--r--java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/service/DynaCorbaServant.java11
-rw-r--r--java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/types/TypeTreeCreator.java104
-rw-r--r--java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/types/UnionAttributes.java59
-rw-r--r--java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/types/util/EnumTypeHelper.java9
-rw-r--r--java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/types/util/StructTypeHelper.java10
-rw-r--r--java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/types/util/TypeHelpersProxy.java1
-rw-r--r--java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/types/util/UnionTypeHelper.java92
-rw-r--r--java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/meta/CorbaUnionElement.java37
-rw-r--r--java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/meta/CorbaUnionElementType.java28
-rw-r--r--java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/CorbaServantTestCase.java3
-rw-r--r--java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/CorbaTypesTestCase.java79
-rw-r--r--java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/ArraysUnionsTests.java2
-rw-r--r--java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/ArraysUnionsTestsHelper.java2
-rw-r--r--java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/ArraysUnionsTestsHolder.java2
-rw-r--r--java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/ArraysUnionsTestsOperations.java3
-rw-r--r--java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/InnerUnion.java112
-rw-r--r--java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/InnerUnionHelper.java106
-rw-r--r--java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/InnerUnionHolder.java38
-rw-r--r--java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/RichUnion.java177
-rw-r--r--java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/RichUnionHelper.java157
-rw-r--r--java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/RichUnionHolder.java38
-rw-r--r--java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/StringArrayHelper.java2
-rw-r--r--java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/StringArrayHolder.java2
-rw-r--r--java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/TestStruct.java2
-rw-r--r--java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/TestStructHelper.java2
-rw-r--r--java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/TestStructHolder.java2
-rw-r--r--java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/_ArraysUnionsTestsImplBase.java13
-rw-r--r--java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/_ArraysUnionsTestsStub.java22
-rw-r--r--java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/hierarchy/InnerUnion.java55
-rw-r--r--java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/hierarchy/InvalidUnion1.java37
-rw-r--r--java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/hierarchy/InvalidUnion2.java34
-rw-r--r--java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/hierarchy/InvalidUnion3.java35
-rw-r--r--java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/hierarchy/InvalidUnion4.java39
-rw-r--r--java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/hierarchy/InvalidUnion5.java42
-rw-r--r--java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/hierarchy/RichUnion.java91
-rw-r--r--java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/servants/ArraysUnionsServant.java5
-rw-r--r--java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/servants/ArraysUnionsTuscanyServant.java5
-rw-r--r--java/sca/modules/binding-corba-runtime/src/test/resources/arrays_unions.idl14
39 files changed, 1449 insertions, 27 deletions
diff --git a/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/CorbaReferenceBindingProvider.java b/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/CorbaReferenceBindingProvider.java
index 5b43e6108f..2e2fea6c54 100644
--- a/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/CorbaReferenceBindingProvider.java
+++ b/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/CorbaReferenceBindingProvider.java
@@ -21,6 +21,8 @@ package org.apache.tuscany.sca.binding.corba.impl;
import java.lang.reflect.Method;
import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
import org.apache.tuscany.sca.binding.corba.CorbaBinding;
import org.apache.tuscany.sca.binding.corba.impl.util.OperationMapper;
@@ -38,6 +40,7 @@ import org.omg.CORBA.Object;
*/
public class CorbaReferenceBindingProvider implements ReferenceBindingProvider {
+ private static final Logger logger = Logger.getLogger(CorbaServiceBindingProvider.class.getName());
private CorbaBinding binding;
private CorbaHost host;
private RuntimeComponentReference reference;
@@ -63,6 +66,7 @@ public class CorbaReferenceBindingProvider implements ReferenceBindingProvider {
}
return new CorbaInvoker(reference, remoteObject, referenceClass, operationsMap);
} catch (Exception e) {
+ logger.log(Level.WARNING, "Exception during creating CORBA invoker", e);
}
return null;
}
diff --git a/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/service/DynaCorbaServant.java b/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/service/DynaCorbaServant.java
index 5328abd9bb..2a032f5d25 100644
--- a/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/service/DynaCorbaServant.java
+++ b/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/service/DynaCorbaServant.java
@@ -21,6 +21,8 @@ package org.apache.tuscany.sca.binding.corba.impl.service;
import java.util.ArrayList;
import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
import org.apache.tuscany.sca.binding.corba.impl.exceptions.RequestConfigurationException;
import org.apache.tuscany.sca.binding.corba.impl.types.TypeTree;
@@ -40,6 +42,8 @@ import org.omg.CORBA.portable.ResponseHandler;
*/
public class DynaCorbaServant extends ObjectImpl implements InvokeHandler {
+ private static final Logger logger = Logger.getLogger(DynaCorbaServant.class.getName());
+
private String[] ids;
private InvocationProxy invocationProxy;
private String typeId;
@@ -109,13 +113,10 @@ public class DynaCorbaServant extends ObjectImpl implements InvokeHandler {
TypeHelpersProxy.write(tree.getRootNode(), out, ie.getTargetException());
return out;
} catch (Exception e) {
- // TODO: raise remote exception - exception while handling
- // target exception
- e.printStackTrace();
+ logger.log(Level.WARNING, "Exception during handling invocation exception", e);
}
} catch (Exception e) {
- // TODO: raise remote exception
- e.printStackTrace();
+ logger.log(Level.WARNING, "Unexpected exception during sending CORBA result to client", e);
}
}
return null;
diff --git a/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/types/TypeTreeCreator.java b/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/types/TypeTreeCreator.java
index 621d5fa30b..e8441ed177 100644
--- a/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/types/TypeTreeCreator.java
+++ b/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/types/TypeTreeCreator.java
@@ -32,6 +32,8 @@ import java.util.Set;
import org.apache.tuscany.sca.binding.corba.impl.exceptions.RequestConfigurationException;
import org.apache.tuscany.sca.binding.corba.meta.CorbaArray;
+import org.apache.tuscany.sca.binding.corba.meta.CorbaUnionElement;
+import org.apache.tuscany.sca.binding.corba.meta.CorbaUnionElementType;
/**
* @version $Rev$ $Date$
@@ -137,6 +139,7 @@ public class TypeTreeCreator {
/**
* Return given array without first element
+ *
* @param array
* @return
*/
@@ -147,7 +150,9 @@ public class TypeTreeCreator {
}
/**
- * Converts objects annotations to structure which will be used by this class
+ * Converts objects annotations to structure which will be used by this
+ * class
+ *
* @param notes
* @return
*/
@@ -222,7 +227,16 @@ public class TypeTreeCreator {
} else if (nodeType.equals(NodeType.idl_enum)) {
} else if (nodeType.equals(NodeType.union)) {
- // TODO: unions
+ // inspect types for every structure member
+ Field[] fields = node.getJavaClass().getDeclaredFields();
+ children = new TypeTreeNode[fields.length];
+ for (int i = 0; i < fields.length; i++) {
+ Class<?> field = fields[i].getType();
+ AnnotationAttributes fAttrs = createAnnotationAttributes(fields[i].getAnnotations());
+ TypeTreeNode child = inspectClassHierarchy(field, fAttrs, tree);
+ child.setName(fields[i].getName());
+ children[i] = child;
+ }
} else if (nodeType.equals(NodeType.reference)) {
// TODO: CORBA references
}
@@ -255,7 +269,6 @@ public class TypeTreeCreator {
new RequestConfigurationException("Annotated array size doesn't match declared arrays size");
throw exc;
}
-
} else if (primitives.contains(forClass)) {
node.setNodeType(NodeType.primitive);
node.setJavaClass(forClass);
@@ -273,6 +286,10 @@ public class TypeTreeCreator {
} else if (isUserException(forClass)) {
node.setNodeType(NodeType.exception);
node.setJavaClass(forClass);
+ } else if (isUnionType(forClass)) {
+ node.setNodeType(NodeType.union);
+ node.setJavaClass(forClass);
+ node.setAttributes(getUnionAttributes(forClass));
} else {
RequestConfigurationException e =
new RequestConfigurationException("User defined type which cannot be handled: " + forClass
@@ -382,7 +399,7 @@ public class TypeTreeCreator {
}
/**
- * Tells whether given class is corba user exception
+ * Tells whether given class is CORBA user exception
*
* @param forClass
* @return
@@ -398,4 +415,83 @@ public class TypeTreeCreator {
return false;
}
+ /**
+ * Tells whether given class is CORBA union. This method validates usage of
+ * unions annotations.
+ *
+ * @param forClass
+ * @return
+ * @throws RequestConfigurationException
+ */
+ private static boolean isUnionType(Class<?> forClass) throws RequestConfigurationException {
+ int classMods = forClass.getModifiers();
+ if (!Modifier.isFinal(classMods)) {
+ return false;
+ }
+ boolean atLeastOneOption = false;
+ boolean discriminatorPresent = false;
+ for (int i = 0; i < forClass.getDeclaredFields().length; i++) {
+ CorbaUnionElement note = forClass.getDeclaredFields()[i].getAnnotation(CorbaUnionElement.class);
+ if (note != null) {
+ int fieldMod = forClass.getDeclaredFields()[i].getModifiers();
+ if (Modifier.isPrivate(fieldMod) && !Modifier.isFinal(fieldMod) && !Modifier.isStatic(fieldMod)) {
+ if (note.type().equals(CorbaUnionElementType.discriminator)) {
+ if (discriminatorPresent) {
+ throw new RequestConfigurationException(
+ "More than one discriminators declared on: " + forClass);
+ }
+ discriminatorPresent = true;
+ } else {
+ atLeastOneOption = true;
+ }
+ } else {
+ throw new RequestConfigurationException(
+ "Annotated union field should be private, not final and no static on class: " + forClass);
+ }
+ }
+ }
+ if (atLeastOneOption && !discriminatorPresent) {
+ throw new RequestConfigurationException("No discriminator annotation found on: " + forClass);
+ } else if (!atLeastOneOption && discriminatorPresent) {
+ throw new RequestConfigurationException("No union option found on: " + forClass);
+ } else if (discriminatorPresent && atLeastOneOption) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ /**
+ * Gets union attributes - discriminator field name, option fields etc. This
+ * method relies that previously scanned class is valid (method isUnionType)
+ *
+ * @param forClass
+ * @return
+ * @throws RequestConfigurationException
+ */
+ private static UnionAttributes getUnionAttributes(Class<?> forClass) throws RequestConfigurationException {
+ UnionAttributes attributes = new UnionAttributes();
+ for (int i = 0; i < forClass.getDeclaredFields().length; i++) {
+ CorbaUnionElement note = forClass.getDeclaredFields()[i].getAnnotation(CorbaUnionElement.class);
+ if (note != null) {
+ if (note.type().equals(CorbaUnionElementType.discriminator)) {
+ attributes.setDiscriminatorName(forClass.getDeclaredFields()[i].getName());
+ } else if (note.type().equals(CorbaUnionElementType.defaultOption)) {
+ attributes.setDefaultOptionName(forClass.getDeclaredFields()[i].getName());
+ } else if (note.type().equals(CorbaUnionElementType.option)) {
+ if (attributes.getOptionsMapping().containsKey(note.optionNumber())) {
+ throw new RequestConfigurationException("In " + forClass
+ + ": field \""
+ + forClass.getDeclaredFields()[i].getName()
+ + "\" uses already used option id: "
+ + note.optionNumber());
+ } else {
+ attributes.getOptionsMapping().put(note.optionNumber(),
+ forClass.getDeclaredFields()[i].getName());
+ }
+ }
+ }
+ }
+ return attributes;
+ }
}
diff --git a/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/types/UnionAttributes.java b/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/types/UnionAttributes.java
new file mode 100644
index 0000000000..df6358d118
--- /dev/null
+++ b/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/types/UnionAttributes.java
@@ -0,0 +1,59 @@
+/*
+ * 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.tuscany.sca.binding.corba.impl.types;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @version $Rev$ $Date$
+ * Stores attributes for previously scanned CORBA union type
+ */
+public class UnionAttributes {
+
+ public String discriminatorName;
+ public String defaultOptionName;
+ public Map<Integer, String> optionsMapping = new HashMap<Integer, String>();
+
+ public String getDiscriminatorName() {
+ return discriminatorName;
+ }
+
+ public void setDiscriminatorName(String discriminatorName) {
+ this.discriminatorName = discriminatorName;
+ }
+
+ public String getDefaultOptionName() {
+ return defaultOptionName;
+ }
+
+ public void setDefaultOptionName(String defaultOptionName) {
+ this.defaultOptionName = defaultOptionName;
+ }
+
+ public Map<Integer, String> getOptionsMapping() {
+ return optionsMapping;
+ }
+
+ public void setOptionsMapping(Map<Integer, String> optionsMapping) {
+ this.optionsMapping = optionsMapping;
+ }
+
+}
diff --git a/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/types/util/EnumTypeHelper.java b/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/types/util/EnumTypeHelper.java
index dc45fde5e5..30c3ac3a8a 100644
--- a/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/types/util/EnumTypeHelper.java
+++ b/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/types/util/EnumTypeHelper.java
@@ -1,6 +1,8 @@
package org.apache.tuscany.sca.binding.corba.impl.types.util;
import java.lang.reflect.Method;
+import java.util.logging.Level;
+import java.util.logging.Logger;
import org.apache.tuscany.sca.binding.corba.impl.types.TypeTreeNode;
import org.omg.CORBA.portable.InputStream;
@@ -11,6 +13,8 @@ import org.omg.CORBA.portable.OutputStream;
*/
public class EnumTypeHelper implements TypeHelper {
+ private static final Logger logger = Logger.getLogger(EnumTypeHelper.class.getName());
+
public Object read(TypeTreeNode node, InputStream is) {
int value = is.read_long();
Object result = null;
@@ -18,7 +22,7 @@ public class EnumTypeHelper implements TypeHelper {
Method method = node.getJavaClass().getMethod("from_int", new Class[] {int.class});
result = method.invoke(null, new Object[] {value});
} catch (Exception e) {
- // TODO Auto-generated catch block
+ logger.log(Level.WARNING, "Exception during reading CORBA enum data", e);
e.printStackTrace();
}
return result;
@@ -30,8 +34,7 @@ public class EnumTypeHelper implements TypeHelper {
Method method = data.getClass().getMethod("value", new Class[] {});
value = (Integer)method.invoke(data, new Object[] {});
} catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
+ logger.log(Level.WARNING, "Exception during writing CORBA enum data", e);
}
os.write_long(value);
}
diff --git a/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/types/util/StructTypeHelper.java b/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/types/util/StructTypeHelper.java
index a232fff56d..365d62fb73 100644
--- a/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/types/util/StructTypeHelper.java
+++ b/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/types/util/StructTypeHelper.java
@@ -20,6 +20,8 @@
package org.apache.tuscany.sca.binding.corba.impl.types.util;
import java.lang.reflect.Field;
+import java.util.logging.Level;
+import java.util.logging.Logger;
import org.apache.tuscany.sca.binding.corba.impl.types.TypeTreeNode;
import org.omg.CORBA.portable.InputStream;
@@ -30,6 +32,8 @@ import org.omg.CORBA.portable.OutputStream;
*/
public class StructTypeHelper implements TypeHelper {
+ private static final Logger logger = Logger.getLogger(StructTypeHelper.class.getName());
+
public Object read(TypeTreeNode node, InputStream is) {
TypeTreeNode[] children = node.getChildren();
Object result = null;
@@ -42,8 +46,7 @@ public class StructTypeHelper implements TypeHelper {
childField.set(result, childResult);
}
} catch (Exception e) {
- // TODO: handle exception
- e.printStackTrace();
+ logger.log(Level.WARNING, "Exception during reading CORBA struct data", e);
}
}
return result;
@@ -58,8 +61,7 @@ public class StructTypeHelper implements TypeHelper {
TypeHelpersProxy.write(children[i], os, childField.get(data));
}
} catch (Exception e) {
- // TODO: handle exception
- e.printStackTrace();
+ logger.log(Level.WARNING, "Exception during writing CORBA struct data", e);
}
}
}
diff --git a/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/types/util/TypeHelpersProxy.java b/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/types/util/TypeHelpersProxy.java
index a14f311607..72e4ccc6fb 100644
--- a/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/types/util/TypeHelpersProxy.java
+++ b/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/types/util/TypeHelpersProxy.java
@@ -72,6 +72,7 @@ public class TypeHelpersProxy {
complexTypes.put(NodeType.sequence, new SequenceTypeHelper());
complexTypes.put(NodeType.idl_enum, new EnumTypeHelper());
complexTypes.put(NodeType.exception, new StructTypeHelper());
+ complexTypes.put(NodeType.union, new UnionTypeHelper());
}
/**
diff --git a/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/types/util/UnionTypeHelper.java b/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/types/util/UnionTypeHelper.java
new file mode 100644
index 0000000000..66c928acec
--- /dev/null
+++ b/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/impl/types/util/UnionTypeHelper.java
@@ -0,0 +1,92 @@
+/*
+ * 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.tuscany.sca.binding.corba.impl.types.util;
+
+import java.lang.reflect.Field;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.apache.tuscany.sca.binding.corba.impl.types.TypeTreeNode;
+import org.apache.tuscany.sca.binding.corba.impl.types.UnionAttributes;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.OutputStream;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class UnionTypeHelper implements TypeHelper {
+
+ private static final Logger logger = Logger.getLogger(UnionTypeHelper.class.getName());
+
+ public Object read(TypeTreeNode node, InputStream is) {
+ Object result = null;
+ try {
+ int discriminator = is.read_long();
+ UnionAttributes attrs = (UnionAttributes)node.getAttributes();
+ String childName = attrs.getOptionsMapping().get(discriminator);
+ if (childName == null) {
+ // get default if option numbers field not found
+ childName = attrs.getDefaultOptionName();
+ }
+ result = node.getJavaClass().newInstance();
+ Field discField = result.getClass().getDeclaredField(attrs.getDiscriminatorName());
+ discField.setAccessible(true);
+ discField.set(result, discriminator);
+ for (int i = 0; i < node.getChildren().length; i++) {
+ if (node.getChildren()[i].getName().equals(childName)) {
+ Object unionValue = TypeHelpersProxy.read(node.getChildren()[i], is);
+ Field childField = result.getClass().getDeclaredField(childName);
+ childField.setAccessible(true);
+ childField.set(result, unionValue);
+ break;
+ }
+ }
+ } catch (Exception e) {
+ logger.log(Level.WARNING, "Exception during reading CORBA union data", e);
+ }
+ return result;
+ }
+
+ public void write(TypeTreeNode node, OutputStream os, Object data) {
+ try {
+ UnionAttributes attrs = (UnionAttributes)node.getAttributes();
+ Field discriminatorField = data.getClass().getDeclaredField(attrs.getDiscriminatorName());
+ discriminatorField.setAccessible(true);
+ int discriminator = discriminatorField.getInt(data);
+ os.write_long(discriminator);
+ String childName = attrs.getOptionsMapping().get(discriminator);
+ if (childName == null) {
+ // get default if option numbers field not found
+ childName = attrs.getDefaultOptionName();
+ }
+ for (int i = 0; i < node.getChildren().length; i++) {
+ if (node.getChildren()[i].getName().equals(childName)) {
+ Field childField = data.getClass().getDeclaredField(childName);
+ childField.setAccessible(true);
+ TypeHelpersProxy.write(node.getChildren()[i], os, childField.get(data));
+ break;
+ }
+ }
+ } catch (Exception e) {
+ logger.log(Level.WARNING, "Exception during writing CORBA union data", e);
+ }
+ }
+
+}
diff --git a/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/meta/CorbaUnionElement.java b/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/meta/CorbaUnionElement.java
new file mode 100644
index 0000000000..101bda1ba2
--- /dev/null
+++ b/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/meta/CorbaUnionElement.java
@@ -0,0 +1,37 @@
+/*
+ * 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.tuscany.sca.binding.corba.meta;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * @version $Rev$ $Date$ Declares CORBA union object
+ */
+@Retention(RetentionPolicy.RUNTIME)
+public @interface CorbaUnionElement {
+
+ // number of option in switch clause
+ int optionNumber() default -1;
+
+ // type of element
+ CorbaUnionElementType type();
+
+}
diff --git a/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/meta/CorbaUnionElementType.java b/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/meta/CorbaUnionElementType.java
new file mode 100644
index 0000000000..3a46fc2b5f
--- /dev/null
+++ b/java/sca/modules/binding-corba-runtime/src/main/java/org/apache/tuscany/sca/binding/corba/meta/CorbaUnionElementType.java
@@ -0,0 +1,28 @@
+/*
+ * 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.tuscany.sca.binding.corba.meta;
+
+/**
+ * @version $Rev$ $Date$
+ * Types for union element
+ */
+public enum CorbaUnionElementType {
+ discriminator, defaultOption, option;
+} \ No newline at end of file
diff --git a/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/CorbaServantTestCase.java b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/CorbaServantTestCase.java
index b223b95639..93256d7381 100644
--- a/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/CorbaServantTestCase.java
+++ b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/CorbaServantTestCase.java
@@ -508,6 +508,9 @@ public class CorbaServantTestCase {
}
}
+ /**
+ * Tests serving CORBA arrays by Tuscany CORBA servants
+ */
@Test
public void test_arraysPassing() {
try {
diff --git a/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/CorbaTypesTestCase.java b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/CorbaTypesTestCase.java
index 7cc82e1491..927f43652b 100644
--- a/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/CorbaTypesTestCase.java
+++ b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/CorbaTypesTestCase.java
@@ -40,6 +40,7 @@ import org.apache.tuscany.sca.binding.corba.testing.generated.SimpleStruct;
import org.apache.tuscany.sca.binding.corba.testing.generated.SomeStruct;
import org.apache.tuscany.sca.binding.corba.testing.hierarchy.ArraysTestStruct;
import org.apache.tuscany.sca.binding.corba.testing.hierarchy.DummyObject;
+import org.apache.tuscany.sca.binding.corba.testing.hierarchy.InnerUnion;
import org.apache.tuscany.sca.binding.corba.testing.hierarchy.InvalidCorbaArray;
import org.apache.tuscany.sca.binding.corba.testing.hierarchy.InvalidEnum1;
import org.apache.tuscany.sca.binding.corba.testing.hierarchy.InvalidEnum2;
@@ -47,6 +48,12 @@ import org.apache.tuscany.sca.binding.corba.testing.hierarchy.InvalidEnum3;
import org.apache.tuscany.sca.binding.corba.testing.hierarchy.InvalidStruct1;
import org.apache.tuscany.sca.binding.corba.testing.hierarchy.InvalidStruct2;
import org.apache.tuscany.sca.binding.corba.testing.hierarchy.InvalidStruct3;
+import org.apache.tuscany.sca.binding.corba.testing.hierarchy.InvalidUnion1;
+import org.apache.tuscany.sca.binding.corba.testing.hierarchy.InvalidUnion2;
+import org.apache.tuscany.sca.binding.corba.testing.hierarchy.InvalidUnion3;
+import org.apache.tuscany.sca.binding.corba.testing.hierarchy.InvalidUnion4;
+import org.apache.tuscany.sca.binding.corba.testing.hierarchy.InvalidUnion5;
+import org.apache.tuscany.sca.binding.corba.testing.hierarchy.RichUnion;
import org.apache.tuscany.sca.binding.corba.testing.servants.ArraysSetterServant;
import org.apache.tuscany.sca.binding.corba.testing.servants.ArraysUnionsServant;
import org.apache.tuscany.sca.binding.corba.testing.servants.ArraysUnionsTuscanyServant;
@@ -759,4 +766,76 @@ public class CorbaTypesTestCase {
fail();
}
}
+
+ /**
+ * Tests passing CORBA unions
+ */
+ @Test
+ public void test_passingUnions() {
+ try {
+ DynaCorbaRequest request = new DynaCorbaRequest(refArraysUnions, "passRichUnion");
+ request.setOutputType(RichUnion.class);
+ RichUnion arg = new RichUnion();
+ InnerUnion argIu = new InnerUnion();
+ argIu.setX(10);
+ arg.setIu(argIu);
+ request.addArgument(arg);
+ DynaCorbaResponse response = request.invoke();
+ RichUnion result = (RichUnion)response.getContent();
+ assertEquals(arg.getIu().getX(), result.getIu().getX());
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail();
+ }
+ try {
+ DynaCorbaRequest request = new DynaCorbaRequest(refArraysUnions, "passRichUnion");
+ request.setOutputType(RichUnion.class);
+ RichUnion arg = new RichUnion();
+ arg.setDef(true);
+ request.addArgument(arg);
+ DynaCorbaResponse response = request.invoke();
+ RichUnion result = (RichUnion)response.getContent();
+ assertEquals(arg.isDef(), result.isDef());
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail();
+ }
+ }
+
+ /**
+ * Tests handling invalid union declarations
+ */
+ @Test
+ public void test_testInvalidUnionClasses() {
+ try {
+ DynaCorbaRequest request = new DynaCorbaRequest(refArraysUnions, "whatever");
+ request.setOutputType(InvalidUnion1.class);
+ } catch (Exception e) {
+ assertEquals(RequestConfigurationException.class, e.getClass());
+ }
+ try {
+ DynaCorbaRequest request = new DynaCorbaRequest(refArraysUnions, "whatever");
+ request.setOutputType(InvalidUnion2.class);
+ } catch (Exception e) {
+ assertEquals(RequestConfigurationException.class, e.getClass());
+ }
+ try {
+ DynaCorbaRequest request = new DynaCorbaRequest(refArraysUnions, "whatever");
+ request.setOutputType(InvalidUnion3.class);
+ } catch (Exception e) {
+ assertEquals(RequestConfigurationException.class, e.getClass());
+ }
+ try {
+ DynaCorbaRequest request = new DynaCorbaRequest(refArraysUnions, "whatever");
+ request.setOutputType(InvalidUnion4.class);
+ } catch (Exception e) {
+ assertEquals(RequestConfigurationException.class, e.getClass());
+ }
+ try {
+ DynaCorbaRequest request = new DynaCorbaRequest(refArraysUnions, "whatever");
+ request.setOutputType(InvalidUnion5.class);
+ } catch (Exception e) {
+ assertEquals(RequestConfigurationException.class, e.getClass());
+ }
+ }
}
diff --git a/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/ArraysUnionsTests.java b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/ArraysUnionsTests.java
index 9c480d1272..f4ca1577f5 100644
--- a/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/ArraysUnionsTests.java
+++ b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/ArraysUnionsTests.java
@@ -5,7 +5,7 @@ package org.apache.tuscany.sca.binding.corba.testing.arrays_unions;
* org/apache/tuscany/sca/binding/corba/testing/arrays_unions/ArraysUnionsTests.java .
* Generated by the IDL-to-Java compiler (portable), version "3.2"
* from arrays_unions.idl
-* sobota, 16 sierpień 2008 00:51:16 CEST
+* niedziela, 17 sierpień 2008 15:45:39 CEST
*/
public interface ArraysUnionsTests extends ArraysUnionsTestsOperations, org.omg.CORBA.Object, org.omg.CORBA.portable.IDLEntity
diff --git a/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/ArraysUnionsTestsHelper.java b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/ArraysUnionsTestsHelper.java
index ec652ee489..d10bc498b7 100644
--- a/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/ArraysUnionsTestsHelper.java
+++ b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/ArraysUnionsTestsHelper.java
@@ -5,7 +5,7 @@ package org.apache.tuscany.sca.binding.corba.testing.arrays_unions;
* org/apache/tuscany/sca/binding/corba/testing/arrays_unions/ArraysUnionsTestsHelper.java .
* Generated by the IDL-to-Java compiler (portable), version "3.2"
* from arrays_unions.idl
-* sobota, 16 sierpień 2008 00:51:16 CEST
+* niedziela, 17 sierpień 2008 15:45:39 CEST
*/
abstract public class ArraysUnionsTestsHelper
diff --git a/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/ArraysUnionsTestsHolder.java b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/ArraysUnionsTestsHolder.java
index 3513414eab..98987c1252 100644
--- a/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/ArraysUnionsTestsHolder.java
+++ b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/ArraysUnionsTestsHolder.java
@@ -4,7 +4,7 @@ package org.apache.tuscany.sca.binding.corba.testing.arrays_unions;
* org/apache/tuscany/sca/binding/corba/testing/arrays_unions/ArraysUnionsTestsHolder.java .
* Generated by the IDL-to-Java compiler (portable), version "3.2"
* from arrays_unions.idl
-* sobota, 16 sierpień 2008 00:51:16 CEST
+* niedziela, 17 sierpień 2008 15:45:39 CEST
*/
public final class ArraysUnionsTestsHolder implements org.omg.CORBA.portable.Streamable
diff --git a/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/ArraysUnionsTestsOperations.java b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/ArraysUnionsTestsOperations.java
index d41af73de1..d80adb476a 100644
--- a/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/ArraysUnionsTestsOperations.java
+++ b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/ArraysUnionsTestsOperations.java
@@ -5,11 +5,12 @@ package org.apache.tuscany.sca.binding.corba.testing.arrays_unions;
* org/apache/tuscany/sca/binding/corba/testing/arrays_unions/ArraysUnionsTestsOperations.java .
* Generated by the IDL-to-Java compiler (portable), version "3.2"
* from arrays_unions.idl
-* sobota, 16 sierpień 2008 00:51:16 CEST
+* niedziela, 17 sierpień 2008 15:45:39 CEST
*/
public interface ArraysUnionsTestsOperations
{
org.apache.tuscany.sca.binding.corba.testing.arrays_unions.TestStruct passTestStruct (org.apache.tuscany.sca.binding.corba.testing.arrays_unions.TestStruct arg);
String[][] passStringArray (String[][] arg);
+ org.apache.tuscany.sca.binding.corba.testing.arrays_unions.RichUnion passRichUnion (org.apache.tuscany.sca.binding.corba.testing.arrays_unions.RichUnion arg);
} // interface ArraysUnionsTestsOperations
diff --git a/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/InnerUnion.java b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/InnerUnion.java
new file mode 100644
index 0000000000..9f520f3c5d
--- /dev/null
+++ b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/InnerUnion.java
@@ -0,0 +1,112 @@
+package org.apache.tuscany.sca.binding.corba.testing.arrays_unions;
+
+
+/**
+* org/apache/tuscany/sca/binding/corba/testing/arrays_unions/InnerUnion.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from arrays_unions.idl
+* niedziela, 17 sierpień 2008 15:45:39 CEST
+*/
+
+public final class InnerUnion implements org.omg.CORBA.portable.IDLEntity
+{
+ private int ___x;
+ private float ___y;
+ private int __discriminator;
+ private boolean __uninitialized = true;
+
+ public InnerUnion ()
+ {
+ }
+
+ public int discriminator ()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION ();
+ return __discriminator;
+ }
+
+ public int x ()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION ();
+ verifyx (__discriminator);
+ return ___x;
+ }
+
+ public void x (int value)
+ {
+ __discriminator = 1;
+ ___x = value;
+ __uninitialized = false;
+ }
+
+ public void x (int discriminator, int value)
+ {
+ verifyx (discriminator);
+ __discriminator = discriminator;
+ ___x = value;
+ __uninitialized = false;
+ }
+
+ private void verifyx (int discriminator)
+ {
+ if (discriminator != 1)
+ throw new org.omg.CORBA.BAD_OPERATION ();
+ }
+
+ public float y ()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION ();
+ verifyy (__discriminator);
+ return ___y;
+ }
+
+ public void y (float value)
+ {
+ __discriminator = 2;
+ ___y = value;
+ __uninitialized = false;
+ }
+
+ public void y (int discriminator, float value)
+ {
+ verifyy (discriminator);
+ __discriminator = discriminator;
+ ___y = value;
+ __uninitialized = false;
+ }
+
+ private void verifyy (int discriminator)
+ {
+ if (discriminator != 2)
+ throw new org.omg.CORBA.BAD_OPERATION ();
+ }
+
+ public void _default ()
+ {
+ __discriminator = -2147483648;
+ __uninitialized = false;
+ }
+
+ public void _default (int discriminator)
+ {
+ verifyDefault( discriminator ) ;
+ __discriminator = discriminator ;
+ __uninitialized = false;
+ }
+
+ private void verifyDefault( int value )
+ {
+ switch (value) {
+ case 1:
+ case 2:
+ throw new org.omg.CORBA.BAD_OPERATION() ;
+
+ default:
+ return;
+ }
+ }
+
+} // class InnerUnion
diff --git a/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/InnerUnionHelper.java b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/InnerUnionHelper.java
new file mode 100644
index 0000000000..11c22f1d72
--- /dev/null
+++ b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/InnerUnionHelper.java
@@ -0,0 +1,106 @@
+package org.apache.tuscany.sca.binding.corba.testing.arrays_unions;
+
+
+/**
+* org/apache/tuscany/sca/binding/corba/testing/arrays_unions/InnerUnionHelper.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from arrays_unions.idl
+* niedziela, 17 sierpień 2008 15:45:39 CEST
+*/
+
+abstract public class InnerUnionHelper
+{
+ private static String _id = "IDL:org/apache/tuscany/sca/binding/corba/testing/arrays_unions/InnerUnion/InnerUnion:1.0";
+
+ public static void insert (org.omg.CORBA.Any a, org.apache.tuscany.sca.binding.corba.testing.arrays_unions.InnerUnion that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream ();
+ a.type (type ());
+ write (out, that);
+ a.read_value (out.create_input_stream (), type ());
+ }
+
+ public static org.apache.tuscany.sca.binding.corba.testing.arrays_unions.InnerUnion extract (org.omg.CORBA.Any a)
+ {
+ return read (a.create_input_stream ());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+ synchronized public static org.omg.CORBA.TypeCode type ()
+ {
+ if (__typeCode == null)
+ {
+ org.omg.CORBA.TypeCode _disTypeCode0;
+ _disTypeCode0 = org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_long);
+ org.omg.CORBA.UnionMember[] _members0 = new org.omg.CORBA.UnionMember [2];
+ org.omg.CORBA.TypeCode _tcOf_members0;
+ org.omg.CORBA.Any _anyOf_members0;
+
+ // Branch for x (case label 1)
+ _anyOf_members0 = org.omg.CORBA.ORB.init ().create_any ();
+ _anyOf_members0.insert_long ((int)1);
+ _tcOf_members0 = org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_long);
+ _members0[0] = new org.omg.CORBA.UnionMember (
+ "x",
+ _anyOf_members0,
+ _tcOf_members0,
+ null);
+
+ // Branch for y (case label 2)
+ _anyOf_members0 = org.omg.CORBA.ORB.init ().create_any ();
+ _anyOf_members0.insert_long ((int)2);
+ _tcOf_members0 = org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_float);
+ _members0[1] = new org.omg.CORBA.UnionMember (
+ "y",
+ _anyOf_members0,
+ _tcOf_members0,
+ null);
+ __typeCode = org.omg.CORBA.ORB.init ().create_union_tc (org.apache.tuscany.sca.binding.corba.testing.arrays_unions.InnerUnionHelper.id (), "InnerUnion", _disTypeCode0, _members0);
+ }
+ return __typeCode;
+ }
+
+ public static String id ()
+ {
+ return _id;
+ }
+
+ public static org.apache.tuscany.sca.binding.corba.testing.arrays_unions.InnerUnion read (org.omg.CORBA.portable.InputStream istream)
+ {
+ org.apache.tuscany.sca.binding.corba.testing.arrays_unions.InnerUnion value = new org.apache.tuscany.sca.binding.corba.testing.arrays_unions.InnerUnion ();
+ int _dis0 = (int)0;
+ _dis0 = istream.read_long ();
+ switch (_dis0)
+ {
+ case 1:
+ int _x = (int)0;
+ _x = istream.read_long ();
+ value.x (_x);
+ break;
+ case 2:
+ float _y = (float)0;
+ _y = istream.read_float ();
+ value.y (_y);
+ break;
+ default:
+ value._default( _dis0 ) ;
+ break;
+ }
+ return value;
+ }
+
+ public static void write (org.omg.CORBA.portable.OutputStream ostream, org.apache.tuscany.sca.binding.corba.testing.arrays_unions.InnerUnion value)
+ {
+ ostream.write_long (value.discriminator ());
+ switch (value.discriminator ())
+ {
+ case 1:
+ ostream.write_long (value.x ());
+ break;
+ case 2:
+ ostream.write_float (value.y ());
+ break;
+ }
+ }
+
+}
diff --git a/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/InnerUnionHolder.java b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/InnerUnionHolder.java
new file mode 100644
index 0000000000..ca9233c77f
--- /dev/null
+++ b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/InnerUnionHolder.java
@@ -0,0 +1,38 @@
+package org.apache.tuscany.sca.binding.corba.testing.arrays_unions;
+
+/**
+* org/apache/tuscany/sca/binding/corba/testing/arrays_unions/InnerUnionHolder.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from arrays_unions.idl
+* niedziela, 17 sierpień 2008 15:45:39 CEST
+*/
+
+public final class InnerUnionHolder implements org.omg.CORBA.portable.Streamable
+{
+ public org.apache.tuscany.sca.binding.corba.testing.arrays_unions.InnerUnion value = null;
+
+ public InnerUnionHolder ()
+ {
+ }
+
+ public InnerUnionHolder (org.apache.tuscany.sca.binding.corba.testing.arrays_unions.InnerUnion initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read (org.omg.CORBA.portable.InputStream i)
+ {
+ value = org.apache.tuscany.sca.binding.corba.testing.arrays_unions.InnerUnionHelper.read (i);
+ }
+
+ public void _write (org.omg.CORBA.portable.OutputStream o)
+ {
+ org.apache.tuscany.sca.binding.corba.testing.arrays_unions.InnerUnionHelper.write (o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type ()
+ {
+ return org.apache.tuscany.sca.binding.corba.testing.arrays_unions.InnerUnionHelper.type ();
+ }
+
+}
diff --git a/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/RichUnion.java b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/RichUnion.java
new file mode 100644
index 0000000000..1a1a36fd16
--- /dev/null
+++ b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/RichUnion.java
@@ -0,0 +1,177 @@
+package org.apache.tuscany.sca.binding.corba.testing.arrays_unions;
+
+
+/**
+* org/apache/tuscany/sca/binding/corba/testing/arrays_unions/RichUnion.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from arrays_unions.idl
+* niedziela, 17 sierpień 2008 15:45:39 CEST
+*/
+
+public final class RichUnion implements org.omg.CORBA.portable.IDLEntity
+{
+ private int ___x;
+ private float ___y;
+ private String ___z;
+ private org.apache.tuscany.sca.binding.corba.testing.arrays_unions.InnerUnion ___iu;
+ private boolean ___a;
+ private int __discriminator;
+ private boolean __uninitialized = true;
+
+ public RichUnion ()
+ {
+ }
+
+ public int discriminator ()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION ();
+ return __discriminator;
+ }
+
+ public int x ()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION ();
+ verifyx (__discriminator);
+ return ___x;
+ }
+
+ public void x (int value)
+ {
+ __discriminator = 1;
+ ___x = value;
+ __uninitialized = false;
+ }
+
+ public void x (int discriminator, int value)
+ {
+ verifyx (discriminator);
+ __discriminator = discriminator;
+ ___x = value;
+ __uninitialized = false;
+ }
+
+ private void verifyx (int discriminator)
+ {
+ if (discriminator != 1)
+ throw new org.omg.CORBA.BAD_OPERATION ();
+ }
+
+ public float y ()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION ();
+ verifyy (__discriminator);
+ return ___y;
+ }
+
+ public void y (float value)
+ {
+ __discriminator = 2;
+ ___y = value;
+ __uninitialized = false;
+ }
+
+ public void y (int discriminator, float value)
+ {
+ verifyy (discriminator);
+ __discriminator = discriminator;
+ ___y = value;
+ __uninitialized = false;
+ }
+
+ private void verifyy (int discriminator)
+ {
+ if (discriminator != 2)
+ throw new org.omg.CORBA.BAD_OPERATION ();
+ }
+
+ public String z ()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION ();
+ verifyz (__discriminator);
+ return ___z;
+ }
+
+ public void z (String value)
+ {
+ __discriminator = 3;
+ ___z = value;
+ __uninitialized = false;
+ }
+
+ public void z (int discriminator, String value)
+ {
+ verifyz (discriminator);
+ __discriminator = discriminator;
+ ___z = value;
+ __uninitialized = false;
+ }
+
+ private void verifyz (int discriminator)
+ {
+ if (discriminator != 3)
+ throw new org.omg.CORBA.BAD_OPERATION ();
+ }
+
+ public org.apache.tuscany.sca.binding.corba.testing.arrays_unions.InnerUnion iu ()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION ();
+ verifyiu (__discriminator);
+ return ___iu;
+ }
+
+ public void iu (org.apache.tuscany.sca.binding.corba.testing.arrays_unions.InnerUnion value)
+ {
+ __discriminator = 4;
+ ___iu = value;
+ __uninitialized = false;
+ }
+
+ public void iu (int discriminator, org.apache.tuscany.sca.binding.corba.testing.arrays_unions.InnerUnion value)
+ {
+ verifyiu (discriminator);
+ __discriminator = discriminator;
+ ___iu = value;
+ __uninitialized = false;
+ }
+
+ private void verifyiu (int discriminator)
+ {
+ if (discriminator != 4)
+ throw new org.omg.CORBA.BAD_OPERATION ();
+ }
+
+ public boolean a ()
+ {
+ if (__uninitialized)
+ throw new org.omg.CORBA.BAD_OPERATION ();
+ verifya (__discriminator);
+ return ___a;
+ }
+
+ public void a (boolean value)
+ {
+ __discriminator = -2147483648;
+ ___a = value;
+ __uninitialized = false;
+ }
+
+ public void a (int discriminator, boolean value)
+ {
+ verifya (discriminator);
+ __discriminator = discriminator;
+ ___a = value;
+ __uninitialized = false;
+ }
+
+ private void verifya (int discriminator)
+ {
+ if (discriminator == 1 || discriminator == 2 || discriminator == 3 || discriminator == 4)
+ throw new org.omg.CORBA.BAD_OPERATION ();
+ }
+
+} // class RichUnion
diff --git a/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/RichUnionHelper.java b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/RichUnionHelper.java
new file mode 100644
index 0000000000..7cef0ea189
--- /dev/null
+++ b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/RichUnionHelper.java
@@ -0,0 +1,157 @@
+package org.apache.tuscany.sca.binding.corba.testing.arrays_unions;
+
+
+/**
+* org/apache/tuscany/sca/binding/corba/testing/arrays_unions/RichUnionHelper.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from arrays_unions.idl
+* niedziela, 17 sierpień 2008 15:45:39 CEST
+*/
+
+abstract public class RichUnionHelper
+{
+ private static String _id = "IDL:org/apache/tuscany/sca/binding/corba/testing/arrays_unions/RichUnion/RichUnion:1.0";
+
+ public static void insert (org.omg.CORBA.Any a, org.apache.tuscany.sca.binding.corba.testing.arrays_unions.RichUnion that)
+ {
+ org.omg.CORBA.portable.OutputStream out = a.create_output_stream ();
+ a.type (type ());
+ write (out, that);
+ a.read_value (out.create_input_stream (), type ());
+ }
+
+ public static org.apache.tuscany.sca.binding.corba.testing.arrays_unions.RichUnion extract (org.omg.CORBA.Any a)
+ {
+ return read (a.create_input_stream ());
+ }
+
+ private static org.omg.CORBA.TypeCode __typeCode = null;
+ synchronized public static org.omg.CORBA.TypeCode type ()
+ {
+ if (__typeCode == null)
+ {
+ org.omg.CORBA.TypeCode _disTypeCode0;
+ _disTypeCode0 = org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_long);
+ org.omg.CORBA.UnionMember[] _members0 = new org.omg.CORBA.UnionMember [5];
+ org.omg.CORBA.TypeCode _tcOf_members0;
+ org.omg.CORBA.Any _anyOf_members0;
+
+ // Branch for x (case label 1)
+ _anyOf_members0 = org.omg.CORBA.ORB.init ().create_any ();
+ _anyOf_members0.insert_long ((int)1);
+ _tcOf_members0 = org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_long);
+ _members0[0] = new org.omg.CORBA.UnionMember (
+ "x",
+ _anyOf_members0,
+ _tcOf_members0,
+ null);
+
+ // Branch for y (case label 2)
+ _anyOf_members0 = org.omg.CORBA.ORB.init ().create_any ();
+ _anyOf_members0.insert_long ((int)2);
+ _tcOf_members0 = org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_float);
+ _members0[1] = new org.omg.CORBA.UnionMember (
+ "y",
+ _anyOf_members0,
+ _tcOf_members0,
+ null);
+
+ // Branch for z (case label 3)
+ _anyOf_members0 = org.omg.CORBA.ORB.init ().create_any ();
+ _anyOf_members0.insert_long ((int)3);
+ _tcOf_members0 = org.omg.CORBA.ORB.init ().create_string_tc (0);
+ _members0[2] = new org.omg.CORBA.UnionMember (
+ "z",
+ _anyOf_members0,
+ _tcOf_members0,
+ null);
+
+ // Branch for iu (case label 4)
+ _anyOf_members0 = org.omg.CORBA.ORB.init ().create_any ();
+ _anyOf_members0.insert_long ((int)4);
+ _tcOf_members0 = org.apache.tuscany.sca.binding.corba.testing.arrays_unions.InnerUnionHelper.type ();
+ _members0[3] = new org.omg.CORBA.UnionMember (
+ "iu",
+ _anyOf_members0,
+ _tcOf_members0,
+ null);
+
+ // Branch for a (Default case)
+ _anyOf_members0 = org.omg.CORBA.ORB.init ().create_any ();
+ _anyOf_members0.insert_octet ((byte)0); // default member label
+ _tcOf_members0 = org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_boolean);
+ _members0[4] = new org.omg.CORBA.UnionMember (
+ "a",
+ _anyOf_members0,
+ _tcOf_members0,
+ null);
+ __typeCode = org.omg.CORBA.ORB.init ().create_union_tc (org.apache.tuscany.sca.binding.corba.testing.arrays_unions.RichUnionHelper.id (), "RichUnion", _disTypeCode0, _members0);
+ }
+ return __typeCode;
+ }
+
+ public static String id ()
+ {
+ return _id;
+ }
+
+ public static org.apache.tuscany.sca.binding.corba.testing.arrays_unions.RichUnion read (org.omg.CORBA.portable.InputStream istream)
+ {
+ org.apache.tuscany.sca.binding.corba.testing.arrays_unions.RichUnion value = new org.apache.tuscany.sca.binding.corba.testing.arrays_unions.RichUnion ();
+ int _dis0 = (int)0;
+ _dis0 = istream.read_long ();
+ switch (_dis0)
+ {
+ case 1:
+ int _x = (int)0;
+ _x = istream.read_long ();
+ value.x (_x);
+ break;
+ case 2:
+ float _y = (float)0;
+ _y = istream.read_float ();
+ value.y (_y);
+ break;
+ case 3:
+ String _z = null;
+ _z = istream.read_string ();
+ value.z (_z);
+ break;
+ case 4:
+ org.apache.tuscany.sca.binding.corba.testing.arrays_unions.InnerUnion _iu = null;
+ _iu = org.apache.tuscany.sca.binding.corba.testing.arrays_unions.InnerUnionHelper.read (istream);
+ value.iu (_iu);
+ break;
+ default:
+ boolean _a = false;
+ _a = istream.read_boolean ();
+ value.a (_dis0, _a);
+ break;
+ }
+ return value;
+ }
+
+ public static void write (org.omg.CORBA.portable.OutputStream ostream, org.apache.tuscany.sca.binding.corba.testing.arrays_unions.RichUnion value)
+ {
+ ostream.write_long (value.discriminator ());
+ switch (value.discriminator ())
+ {
+ case 1:
+ ostream.write_long (value.x ());
+ break;
+ case 2:
+ ostream.write_float (value.y ());
+ break;
+ case 3:
+ ostream.write_string (value.z ());
+ break;
+ case 4:
+ org.apache.tuscany.sca.binding.corba.testing.arrays_unions.InnerUnionHelper.write (ostream, value.iu ());
+ break;
+ default:
+ ostream.write_boolean (value.a ());
+ break;
+ }
+ }
+
+}
diff --git a/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/RichUnionHolder.java b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/RichUnionHolder.java
new file mode 100644
index 0000000000..5498104905
--- /dev/null
+++ b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/RichUnionHolder.java
@@ -0,0 +1,38 @@
+package org.apache.tuscany.sca.binding.corba.testing.arrays_unions;
+
+/**
+* org/apache/tuscany/sca/binding/corba/testing/arrays_unions/RichUnionHolder.java .
+* Generated by the IDL-to-Java compiler (portable), version "3.2"
+* from arrays_unions.idl
+* niedziela, 17 sierpień 2008 15:45:39 CEST
+*/
+
+public final class RichUnionHolder implements org.omg.CORBA.portable.Streamable
+{
+ public org.apache.tuscany.sca.binding.corba.testing.arrays_unions.RichUnion value = null;
+
+ public RichUnionHolder ()
+ {
+ }
+
+ public RichUnionHolder (org.apache.tuscany.sca.binding.corba.testing.arrays_unions.RichUnion initialValue)
+ {
+ value = initialValue;
+ }
+
+ public void _read (org.omg.CORBA.portable.InputStream i)
+ {
+ value = org.apache.tuscany.sca.binding.corba.testing.arrays_unions.RichUnionHelper.read (i);
+ }
+
+ public void _write (org.omg.CORBA.portable.OutputStream o)
+ {
+ org.apache.tuscany.sca.binding.corba.testing.arrays_unions.RichUnionHelper.write (o, value);
+ }
+
+ public org.omg.CORBA.TypeCode _type ()
+ {
+ return org.apache.tuscany.sca.binding.corba.testing.arrays_unions.RichUnionHelper.type ();
+ }
+
+}
diff --git a/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/StringArrayHelper.java b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/StringArrayHelper.java
index eeae9e109e..72beff0537 100644
--- a/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/StringArrayHelper.java
+++ b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/StringArrayHelper.java
@@ -5,7 +5,7 @@ package org.apache.tuscany.sca.binding.corba.testing.arrays_unions;
* org/apache/tuscany/sca/binding/corba/testing/arrays_unions/StringArrayHelper.java .
* Generated by the IDL-to-Java compiler (portable), version "3.2"
* from arrays_unions.idl
-* sobota, 16 sierpień 2008 00:51:16 CEST
+* niedziela, 17 sierpień 2008 15:45:39 CEST
*/
abstract public class StringArrayHelper
diff --git a/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/StringArrayHolder.java b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/StringArrayHolder.java
index e81abc63d0..747337597c 100644
--- a/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/StringArrayHolder.java
+++ b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/StringArrayHolder.java
@@ -5,7 +5,7 @@ package org.apache.tuscany.sca.binding.corba.testing.arrays_unions;
* org/apache/tuscany/sca/binding/corba/testing/arrays_unions/StringArrayHolder.java .
* Generated by the IDL-to-Java compiler (portable), version "3.2"
* from arrays_unions.idl
-* sobota, 16 sierpień 2008 00:51:16 CEST
+* niedziela, 17 sierpień 2008 15:45:39 CEST
*/
public final class StringArrayHolder implements org.omg.CORBA.portable.Streamable
diff --git a/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/TestStruct.java b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/TestStruct.java
index 04099eebb8..2b239deadc 100644
--- a/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/TestStruct.java
+++ b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/TestStruct.java
@@ -5,7 +5,7 @@ package org.apache.tuscany.sca.binding.corba.testing.arrays_unions;
* org/apache/tuscany/sca/binding/corba/testing/arrays_unions/TestStruct.java .
* Generated by the IDL-to-Java compiler (portable), version "3.2"
* from arrays_unions.idl
-* sobota, 16 sierpień 2008 00:51:16 CEST
+* niedziela, 17 sierpień 2008 15:45:39 CEST
*/
public final class TestStruct implements org.omg.CORBA.portable.IDLEntity
diff --git a/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/TestStructHelper.java b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/TestStructHelper.java
index 9e21755546..6427d9d200 100644
--- a/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/TestStructHelper.java
+++ b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/TestStructHelper.java
@@ -5,7 +5,7 @@ package org.apache.tuscany.sca.binding.corba.testing.arrays_unions;
* org/apache/tuscany/sca/binding/corba/testing/arrays_unions/TestStructHelper.java .
* Generated by the IDL-to-Java compiler (portable), version "3.2"
* from arrays_unions.idl
-* sobota, 16 sierpień 2008 00:51:16 CEST
+* niedziela, 17 sierpień 2008 15:45:39 CEST
*/
abstract public class TestStructHelper
diff --git a/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/TestStructHolder.java b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/TestStructHolder.java
index d92a90615f..94683e0327 100644
--- a/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/TestStructHolder.java
+++ b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/TestStructHolder.java
@@ -4,7 +4,7 @@ package org.apache.tuscany.sca.binding.corba.testing.arrays_unions;
* org/apache/tuscany/sca/binding/corba/testing/arrays_unions/TestStructHolder.java .
* Generated by the IDL-to-Java compiler (portable), version "3.2"
* from arrays_unions.idl
-* sobota, 16 sierpień 2008 00:51:16 CEST
+* niedziela, 17 sierpień 2008 15:45:39 CEST
*/
public final class TestStructHolder implements org.omg.CORBA.portable.Streamable
diff --git a/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/_ArraysUnionsTestsImplBase.java b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/_ArraysUnionsTestsImplBase.java
index 3769cdfc6e..e4cac28e4f 100644
--- a/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/_ArraysUnionsTestsImplBase.java
+++ b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/_ArraysUnionsTestsImplBase.java
@@ -5,7 +5,7 @@ package org.apache.tuscany.sca.binding.corba.testing.arrays_unions;
* org/apache/tuscany/sca/binding/corba/testing/arrays_unions/_ArraysUnionsTestsImplBase.java .
* Generated by the IDL-to-Java compiler (portable), version "3.2"
* from arrays_unions.idl
-* sobota, 16 sierpień 2008 00:51:16 CEST
+* niedziela, 17 sierpień 2008 15:45:39 CEST
*/
public abstract class _ArraysUnionsTestsImplBase extends org.omg.CORBA.portable.ObjectImpl
@@ -22,6 +22,7 @@ public abstract class _ArraysUnionsTestsImplBase extends org.omg.CORBA.portable.
{
_methods.put ("passTestStruct", new java.lang.Integer (0));
_methods.put ("passStringArray", new java.lang.Integer (1));
+ _methods.put ("passRichUnion", new java.lang.Integer (2));
}
public org.omg.CORBA.portable.OutputStream _invoke (String $method,
@@ -55,6 +56,16 @@ public abstract class _ArraysUnionsTestsImplBase extends org.omg.CORBA.portable.
break;
}
+ case 2: // org/apache/tuscany/sca/binding/corba/testing/arrays_unions/ArraysUnionsTests/passRichUnion
+ {
+ org.apache.tuscany.sca.binding.corba.testing.arrays_unions.RichUnion arg = org.apache.tuscany.sca.binding.corba.testing.arrays_unions.RichUnionHelper.read (in);
+ org.apache.tuscany.sca.binding.corba.testing.arrays_unions.RichUnion $result = null;
+ $result = this.passRichUnion (arg);
+ out = $rh.createReply();
+ org.apache.tuscany.sca.binding.corba.testing.arrays_unions.RichUnionHelper.write (out, $result);
+ break;
+ }
+
default:
throw new org.omg.CORBA.BAD_OPERATION (0, org.omg.CORBA.CompletionStatus.COMPLETED_MAYBE);
}
diff --git a/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/_ArraysUnionsTestsStub.java b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/_ArraysUnionsTestsStub.java
index cf822d6115..38e29c0d63 100644
--- a/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/_ArraysUnionsTestsStub.java
+++ b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/arrays_unions/_ArraysUnionsTestsStub.java
@@ -5,7 +5,7 @@ package org.apache.tuscany.sca.binding.corba.testing.arrays_unions;
* org/apache/tuscany/sca/binding/corba/testing/arrays_unions/_ArraysUnionsTestsStub.java .
* Generated by the IDL-to-Java compiler (portable), version "3.2"
* from arrays_unions.idl
-* sobota, 16 sierpień 2008 00:51:16 CEST
+* niedziela, 17 sierpień 2008 15:45:39 CEST
*/
public class _ArraysUnionsTestsStub extends org.omg.CORBA.portable.ObjectImpl implements org.apache.tuscany.sca.binding.corba.testing.arrays_unions.ArraysUnionsTests
@@ -51,6 +51,26 @@ public class _ArraysUnionsTestsStub extends org.omg.CORBA.portable.ObjectImpl im
}
} // passStringArray
+ public org.apache.tuscany.sca.binding.corba.testing.arrays_unions.RichUnion passRichUnion (org.apache.tuscany.sca.binding.corba.testing.arrays_unions.RichUnion arg)
+ {
+ org.omg.CORBA.portable.InputStream $in = null;
+ try {
+ org.omg.CORBA.portable.OutputStream $out = _request ("passRichUnion", true);
+ org.apache.tuscany.sca.binding.corba.testing.arrays_unions.RichUnionHelper.write ($out, arg);
+ $in = _invoke ($out);
+ org.apache.tuscany.sca.binding.corba.testing.arrays_unions.RichUnion $result = org.apache.tuscany.sca.binding.corba.testing.arrays_unions.RichUnionHelper.read ($in);
+ return $result;
+ } catch (org.omg.CORBA.portable.ApplicationException $ex) {
+ $in = $ex.getInputStream ();
+ String _id = $ex.getId ();
+ throw new org.omg.CORBA.MARSHAL (_id);
+ } catch (org.omg.CORBA.portable.RemarshalException $rm) {
+ return passRichUnion (arg );
+ } finally {
+ _releaseReply ($in);
+ }
+ } // passRichUnion
+
// Type-specific CORBA::Object operations
private static String[] __ids = {
"IDL:org/apache/tuscany/sca/binding/corba/testing/arrays_unions/ArraysUnionsTests:1.0"};
diff --git a/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/hierarchy/InnerUnion.java b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/hierarchy/InnerUnion.java
new file mode 100644
index 0000000000..baf5043bc2
--- /dev/null
+++ b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/hierarchy/InnerUnion.java
@@ -0,0 +1,55 @@
+/*
+ * 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.tuscany.sca.binding.corba.testing.hierarchy;
+
+import org.apache.tuscany.sca.binding.corba.meta.CorbaUnionElement;
+import org.apache.tuscany.sca.binding.corba.meta.CorbaUnionElementType;
+
+public final class InnerUnion {
+
+ @CorbaUnionElement(type = CorbaUnionElementType.option, optionNumber = 1)
+ private int x;
+
+ @CorbaUnionElement(type = CorbaUnionElementType.option, optionNumber = 2)
+ private float y;
+
+ @CorbaUnionElement(type = CorbaUnionElementType.discriminator)
+ @SuppressWarnings("unused")
+ private int discriminator;
+
+ public int getX() {
+ return x;
+ }
+
+ public void setX(int x) {
+ discriminator = 1;
+ this.x = x;
+ }
+
+ public float getY() {
+ return y;
+ }
+
+ public void setY(float y) {
+ discriminator = 2;
+ this.y = y;
+ }
+
+}
diff --git a/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/hierarchy/InvalidUnion1.java b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/hierarchy/InvalidUnion1.java
new file mode 100644
index 0000000000..c3fd45d5f4
--- /dev/null
+++ b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/hierarchy/InvalidUnion1.java
@@ -0,0 +1,37 @@
+/*
+ * 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.tuscany.sca.binding.corba.testing.hierarchy;
+
+import org.apache.tuscany.sca.binding.corba.meta.CorbaUnionElement;
+import org.apache.tuscany.sca.binding.corba.meta.CorbaUnionElementType;
+
+/**
+ * More than one discriminators
+ */
+public final class InvalidUnion1 {
+
+ @CorbaUnionElement(type = CorbaUnionElementType.discriminator)
+ @SuppressWarnings("unused")
+ private int a;
+ @CorbaUnionElement(type = CorbaUnionElementType.discriminator)
+ @SuppressWarnings("unused")
+ private int b;
+
+}
diff --git a/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/hierarchy/InvalidUnion2.java b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/hierarchy/InvalidUnion2.java
new file mode 100644
index 0000000000..f6d5421a56
--- /dev/null
+++ b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/hierarchy/InvalidUnion2.java
@@ -0,0 +1,34 @@
+/*
+ * 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.tuscany.sca.binding.corba.testing.hierarchy;
+
+import org.apache.tuscany.sca.binding.corba.meta.CorbaUnionElement;
+import org.apache.tuscany.sca.binding.corba.meta.CorbaUnionElementType;
+
+/**
+ * Discriminator is missing
+ */
+public final class InvalidUnion2 {
+
+ @CorbaUnionElement(type=CorbaUnionElementType.defaultOption)
+ @SuppressWarnings("unused")
+ private int a;
+
+}
diff --git a/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/hierarchy/InvalidUnion3.java b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/hierarchy/InvalidUnion3.java
new file mode 100644
index 0000000000..0d1bdd0a13
--- /dev/null
+++ b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/hierarchy/InvalidUnion3.java
@@ -0,0 +1,35 @@
+/*
+ * 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.tuscany.sca.binding.corba.testing.hierarchy;
+
+import org.apache.tuscany.sca.binding.corba.meta.CorbaUnionElement;
+import org.apache.tuscany.sca.binding.corba.meta.CorbaUnionElementType;
+
+/**
+ * No option, only discriminator
+ */
+public final class InvalidUnion3{
+
+ @CorbaUnionElement(type = CorbaUnionElementType.discriminator)
+ @SuppressWarnings("unused")
+ private int a;
+
+}
+
diff --git a/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/hierarchy/InvalidUnion4.java b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/hierarchy/InvalidUnion4.java
new file mode 100644
index 0000000000..3afe702f87
--- /dev/null
+++ b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/hierarchy/InvalidUnion4.java
@@ -0,0 +1,39 @@
+/*
+ * 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.tuscany.sca.binding.corba.testing.hierarchy;
+
+import org.apache.tuscany.sca.binding.corba.meta.CorbaUnionElement;
+import org.apache.tuscany.sca.binding.corba.meta.CorbaUnionElementType;
+
+/**
+ * Invalid field modifiers
+ */
+public final class InvalidUnion4{
+
+ @CorbaUnionElement(type = CorbaUnionElementType.discriminator)
+ @SuppressWarnings("unused")
+ private static int a;
+
+ @CorbaUnionElement(type = CorbaUnionElementType.defaultOption)
+ @SuppressWarnings("unused")
+ private static int b;
+
+}
+
diff --git a/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/hierarchy/InvalidUnion5.java b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/hierarchy/InvalidUnion5.java
new file mode 100644
index 0000000000..9d30e5ced1
--- /dev/null
+++ b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/hierarchy/InvalidUnion5.java
@@ -0,0 +1,42 @@
+/*
+ * 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.tuscany.sca.binding.corba.testing.hierarchy;
+
+import org.apache.tuscany.sca.binding.corba.meta.CorbaUnionElement;
+import org.apache.tuscany.sca.binding.corba.meta.CorbaUnionElementType;
+
+/**
+ * Reused option id
+ */
+public final class InvalidUnion5 {
+
+ @CorbaUnionElement(type = CorbaUnionElementType.discriminator)
+ @SuppressWarnings("unused")
+ private int a;
+
+ @CorbaUnionElement(type = CorbaUnionElementType.option, optionNumber = 1)
+ @SuppressWarnings("unused")
+ private int b;
+
+ @CorbaUnionElement(type = CorbaUnionElementType.option, optionNumber = 1)
+ @SuppressWarnings("unused")
+ private int c;
+
+}
diff --git a/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/hierarchy/RichUnion.java b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/hierarchy/RichUnion.java
new file mode 100644
index 0000000000..2ea40e345f
--- /dev/null
+++ b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/hierarchy/RichUnion.java
@@ -0,0 +1,91 @@
+/*
+ * 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.tuscany.sca.binding.corba.testing.hierarchy;
+
+import org.apache.tuscany.sca.binding.corba.meta.CorbaUnionElement;
+import org.apache.tuscany.sca.binding.corba.meta.CorbaUnionElementType;
+
+public final class RichUnion {
+
+ @CorbaUnionElement(type = CorbaUnionElementType.option, optionNumber = 1)
+ private int x;
+
+ @CorbaUnionElement(type = CorbaUnionElementType.option, optionNumber = 2)
+ private float y;
+
+ @CorbaUnionElement(type = CorbaUnionElementType.option, optionNumber = 3)
+ private String z;
+
+ @CorbaUnionElement(type = CorbaUnionElementType.option, optionNumber = 4)
+ private InnerUnion iu;
+
+ @CorbaUnionElement(type = CorbaUnionElementType.defaultOption)
+ private boolean def;
+
+ @CorbaUnionElement(type = CorbaUnionElementType.discriminator)
+ @SuppressWarnings("unused")
+ private int discriminator = -1;
+
+ public int getX() {
+ return x;
+ }
+
+ public void setX(int x) {
+ this.discriminator = 1;
+ this.x = x;
+ }
+
+ public float getY() {
+ return y;
+ }
+
+ public void setY(float y) {
+ this.discriminator = 2;
+ this.y = y;
+ }
+
+ public String getZ() {
+ return z;
+ }
+
+ public void setZ(String z) {
+ this.discriminator = 3;
+ this.z = z;
+ }
+
+ public boolean isDef() {
+ return def;
+ }
+
+ public void setDef(boolean def) {
+ this.discriminator = -1;
+ this.def = def;
+ }
+
+ public InnerUnion getIu() {
+ return iu;
+ }
+
+ public void setIu(InnerUnion iu) {
+ this.discriminator = 4;
+ this.iu = iu;
+ }
+
+}
diff --git a/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/servants/ArraysUnionsServant.java b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/servants/ArraysUnionsServant.java
index 9aa935631a..d9bde48a5a 100644
--- a/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/servants/ArraysUnionsServant.java
+++ b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/servants/ArraysUnionsServant.java
@@ -19,6 +19,7 @@
package org.apache.tuscany.sca.binding.corba.testing.servants;
+import org.apache.tuscany.sca.binding.corba.testing.arrays_unions.RichUnion;
import org.apache.tuscany.sca.binding.corba.testing.arrays_unions.TestStruct;
import org.apache.tuscany.sca.binding.corba.testing.arrays_unions._ArraysUnionsTestsImplBase;
@@ -34,4 +35,8 @@ public class ArraysUnionsServant extends _ArraysUnionsTestsImplBase {
return arg;
}
+ public RichUnion passRichUnion(RichUnion arg) {
+ return arg;
+ }
+
}
diff --git a/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/servants/ArraysUnionsTuscanyServant.java b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/servants/ArraysUnionsTuscanyServant.java
index f2a15ebfe1..cd78588363 100644
--- a/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/servants/ArraysUnionsTuscanyServant.java
+++ b/java/sca/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/servants/ArraysUnionsTuscanyServant.java
@@ -21,6 +21,7 @@ package org.apache.tuscany.sca.binding.corba.testing.servants;
import org.apache.tuscany.sca.binding.corba.meta.CorbaArray;
import org.apache.tuscany.sca.binding.corba.testing.hierarchy.ArraysTestStruct;
+import org.apache.tuscany.sca.binding.corba.testing.hierarchy.RichUnion;
public class ArraysUnionsTuscanyServant {
@@ -34,5 +35,9 @@ public class ArraysUnionsTuscanyServant {
public String[][] passStringArray(@CorbaArray( {2, 2})String[][] arg) {
return arg;
}
+
+ public RichUnion passRichUnion(RichUnion arg) {
+ return arg;
+ }
}
diff --git a/java/sca/modules/binding-corba-runtime/src/test/resources/arrays_unions.idl b/java/sca/modules/binding-corba-runtime/src/test/resources/arrays_unions.idl
index 62810d2e02..0f4ed03b4e 100644
--- a/java/sca/modules/binding-corba-runtime/src/test/resources/arrays_unions.idl
+++ b/java/sca/modules/binding-corba-runtime/src/test/resources/arrays_unions.idl
@@ -39,9 +39,23 @@ module org {
typedef string StringArray[2][2];
+ union InnerUnion switch (long) {
+ case 1: long x;
+ case 2: float y;
+ };
+
+ union RichUnion switch (long) {
+ case 1: long x;
+ case 2: float y;
+ case 3: string z;
+ case 4: InnerUnion iu;
+ default: boolean a;
+ };
+
interface ArraysUnionsTests {
TestStruct passTestStruct(in TestStruct arg);
StringArray passStringArray(in StringArray arg);
+ RichUnion passRichUnion(in RichUnion arg);
};
};