Author: eranga
Date: Wed Mar 23 11:46:40 2011
New Revision: 1084548

URL: http://svn.apache.org/viewvc?rev=1084548&view=rev
Log:
AXIS2-4780 - unions within structs not supported


Modified:
    
axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/idl/parser/IDLVisitor.java

Modified: 
axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/idl/parser/IDLVisitor.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/idl/parser/IDLVisitor.java?rev=1084548&r1=1084547&r2=1084548&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/idl/parser/IDLVisitor.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/corba/src/org/apache/axis2/corba/idl/parser/IDLVisitor.java
 Wed Mar 23 11:46:40 2011
@@ -338,6 +338,7 @@ public class IDLVisitor /*implements AST
     private DataType findDataType(AST typeNode, String parentName) throws 
InvalidIDLException {
         return findDataType(typeNode, parentName, true, false);
     }
+
     private DataType findDataType(AST typeNode, String parentName, boolean 
root, boolean noTypeDefForSeqs) throws InvalidIDLException {
         // Check for sequences
         if (typeNode.getType()==IDLTokenTypes.LITERAL_sequence) {
@@ -387,6 +388,36 @@ public class IDLVisitor /*implements AST
             } else {
                 typeName = "long";
             }
+        } else if (typeNode.getType() == IDLTokenTypes.LITERAL_struct) {
+            String innerModule = module + parentName + INNERTYPE_SUFFIX + 
CompositeDataType.MODULE_SEPERATOR;
+            Struct innerElem = visitStruct(typeNode);
+            innerElem.setModule(innerModule);
+            idl.addType(innerElem);
+            return innerElem;            
+        } else if (typeNode.getType() == IDLTokenTypes.LITERAL_valuetype) {
+            String innerModule = module + parentName + INNERTYPE_SUFFIX + 
CompositeDataType.MODULE_SEPERATOR;
+            ValueType innerElem = visitValueType(typeNode);
+            innerElem.setModule(innerModule);
+            idl.addType(innerElem);
+            return innerElem;
+        } else if (typeNode.getType() == IDLTokenTypes.LITERAL_exception) {
+            String innerModule = module + parentName + INNERTYPE_SUFFIX + 
CompositeDataType.MODULE_SEPERATOR;
+            Struct innerElem = visitException(typeNode);
+            innerElem.setModule(innerModule);
+            idl.addType(innerElem);
+            return innerElem;
+        } else if (typeNode.getType() == IDLTokenTypes.LITERAL_enum) {
+            String innerModule = module + parentName + INNERTYPE_SUFFIX + 
CompositeDataType.MODULE_SEPERATOR;
+            EnumType innerElem = visitEnum(typeNode);
+            innerElem.setModule(innerModule);
+            idl.addType(innerElem);
+            return innerElem;
+        } else if (typeNode.getType() == IDLTokenTypes.LITERAL_union) {
+            String innerModule = module + parentName + INNERTYPE_SUFFIX + 
CompositeDataType.MODULE_SEPERATOR;
+            UnionType innerElem = visitUnion(typeNode);
+            innerElem.setModule(innerModule);
+            idl.addType(innerElem);
+            return innerElem;
         } else {
             typeName = getTypeName(typeNode);    
         }


Reply via email to