You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by er...@apache.org on 2008/08/08 18:19:10 UTC

svn commit: r684013 - /webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/receivers/CorbaUtil.java

Author: eranga
Date: Fri Aug  8 09:19:10 2008
New Revision: 684013

URL: http://svn.apache.org/viewvc?rev=684013&view=rev
Log:
Fix for https://issues.apache.org/jira/browse/AXIS2-3953

Modified:
    webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/receivers/CorbaUtil.java

Modified: webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/receivers/CorbaUtil.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/receivers/CorbaUtil.java?rev=684013&r1=684012&r2=684013&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/receivers/CorbaUtil.java (original)
+++ webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/receivers/CorbaUtil.java Fri Aug  8 09:19:10 2008
@@ -678,12 +678,45 @@
             //case TCKind._tk_any: return new Any();
             case TCKind._tk_value: return "";
             //case TCKind._tk_objref: return new org.omg.CORBA.Object();
-            case TCKind._tk_struct: return new StructValue((Struct) type);
+            case TCKind._tk_struct:
+                Struct struct = (Struct) type;
+                StructValue value = new StructValue(struct);
+                Member[] members = struct.getMembers();
+                Object[] memberValues = new Object[members.length];
+                for (int i = 0; i < members.length; i++) {
+                    memberValues[i] = getEmptyValue(members[i].getDataType());
+                }
+                value.setMemberValues(memberValues);
+                return value;
             case TCKind._tk_enum: return new EnumValue((EnumType) type);
-            case TCKind._tk_union: return new UnionValue((UnionType) type);
-            case TCKind._tk_alias: return new AliasValue((Typedef) type);
-            case TCKind._tk_sequence: return new SequenceValue((SequenceType) type);
-            case TCKind._tk_array:  return new ArrayValue((ArrayType) type);
+            case TCKind._tk_union:
+                UnionType unionType = (UnionType) type;
+                UnionValue unionValue = new UnionValue(unionType);
+                members = unionType.getMembers();
+                unionValue.setMemberName(members[0].getName());
+                unionValue.setMemberType(members[0].getDataType());
+                unionValue.setMemberValue(getEmptyValue(members[0].getDataType()));
+                return unionValue;
+            case TCKind._tk_alias:
+                Typedef typedef = (Typedef) type;
+                AliasValue aliasValue = new AliasValue(typedef);
+                aliasValue.setValue(getEmptyValue(typedef.getDataType()));
+                return aliasValue;
+            case TCKind._tk_sequence:
+                SequenceType sequenceType = (SequenceType) type;
+                SequenceValue sequenceValue = new SequenceValue(sequenceType);
+                sequenceValue.setValues(new Object[0]);
+                return sequenceValue;
+            case TCKind._tk_array:
+                ArrayType arrayType = (ArrayType) type;
+                ArrayValue arrayValue = new ArrayValue(arrayType);
+                Object[] objects = new Object[arrayType.getElementCount()];
+                DataType arrayDataType = arrayType.getDataType();
+                for (int i = 0; i < objects.length; i++) {
+                    objects[i] = getEmptyValue(arrayDataType);
+                }
+                arrayValue.setValues(objects);
+                return arrayValue;
             default:
                 log.error("ERROR! Invalid dataType");
         }