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);
}