You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by er...@apache.org on 2008/08/13 02:28:24 UTC

svn commit: r685398 - in /webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba: deployer/SchemaGenerator.java idl/parser/IDLVisitor.java idl/values/AliasValue.java

Author: eranga
Date: Tue Aug 12 17:28:24 2008
New Revision: 685398

URL: http://svn.apache.org/viewvc?rev=685398&view=rev
Log:
Fix for AXIS2-3856

Modified:
    webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/deployer/SchemaGenerator.java
    webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/idl/parser/IDLVisitor.java
    webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/idl/values/AliasValue.java

Modified: webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/deployer/SchemaGenerator.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/deployer/SchemaGenerator.java?rev=685398&r1=685397&r2=685398&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/deployer/SchemaGenerator.java (original)
+++ webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/deployer/SchemaGenerator.java Tue Aug 12 17:28:24 2008
@@ -167,6 +167,8 @@
          * messages and port types will be creteated
          */
 
+        if (intf==null)
+            throw new SchemaGeneratorException("Interface " + interfaceName + " does not exists");
         Operation[] operations = intf.getOperations();
 
         // since we do not support overload

Modified: webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/idl/parser/IDLVisitor.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/idl/parser/IDLVisitor.java?rev=685398&r1=685397&r2=685398&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/idl/parser/IDLVisitor.java (original)
+++ webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/idl/parser/IDLVisitor.java Tue Aug 12 17:28:24 2008
@@ -129,7 +129,7 @@
         AST memberTypeNode = structNode.getNextSibling();
         while (memberTypeNode != null) {
             Member member = new Member();
-            DataType dataType = findDataType(memberTypeNode);
+            DataType dataType = findDataType(memberTypeNode, structName);
             AST memberNode = memberTypeNode.getNextSibling();
             String memberName = memberNode.getText();
             int dimensions = memberNode.getNumberOfChildren();
@@ -156,7 +156,13 @@
                 if (arrayType != null) {
                     arrayType.setDataType(dataType);
                 }
-                dataType = rootArrayType;
+//                dataType = rootArrayType;
+                Typedef typedef = new Typedef();
+                typedef.setDataType(rootArrayType);
+                typedef.setModule(module);
+                typedef.setName(structName + '_' + memberName);
+                idl.addType(typedef);
+                dataType = typedef;
             }
 
             member.setDataType(dataType);
@@ -171,7 +177,8 @@
         AST valueNode = node.getFirstChild();
         ValueType value = new ValueType();
         value.setModule(module);
-        value.setName(valueNode.toString());
+        String valueName = valueNode.toString();
+        value.setName(valueName);
         AST memberModifierNode = valueNode.getNextSibling();
         while (memberModifierNode != null) {
             String memberModifierName = memberModifierNode.toString();
@@ -195,7 +202,7 @@
             Member memberType = new Member();
             memberType.setModifier(memberModifierName);
             AST memberTypeNode = memberModifierNode.getNextSibling();
-            memberType.setDataType(findDataType(memberTypeNode));
+            memberType.setDataType(findDataType(memberTypeNode, valueName));
             AST memberNode = memberTypeNode.getNextSibling();
             memberType.setName(memberNode.toString());
             value.addMember(memberType);
@@ -270,9 +277,10 @@
     private Operation visitGetAttribute(AST node) throws InvalidIDLException {
         Operation operation = new Operation();
         AST type = node.getFirstChild();
-        operation.setReturnType(findDataType(type));
         AST name = type.getNextSibling();
-        operation.setName("_get_" + name.toString());
+        String attrName = name.toString();
+        operation.setReturnType(findDataType(type, attrName));
+        operation.setName("_get_" + attrName);
         return operation;
     }
 
@@ -285,31 +293,33 @@
         operation.setName("_set_" + attrName);
         Member param = new Member();
         param.setName(attrName);
-        param.setDataType(findDataType(type));
+        param.setDataType(findDataType(type, attrName));
         operation.addParam(param);
         return operation;
     }
 
     private Operation visitOperation(AST node) throws InvalidIDLException {
         Operation operation = new Operation();
-        operation.setName(node.toString());
+        String opName = node.toString();
+        operation.setName(opName);
         AST type = node.getFirstChild();
-        operation.setReturnType(findDataType(type));
+        operation.setReturnType(findDataType(type, opName));
         AST mode = type.getNextSibling();
         while(mode != null) {
             if (IDLTokenTypes.LITERAL_raises == mode.getType()) {
                 AST idlType = mode.getFirstChild();
                 while(idlType != null) {
-                    operation.addRaises((ExceptionType) findDataType(idlType));
+                    operation.addRaises((ExceptionType) findDataType(idlType, opName));
                     idlType = idlType.getNextSibling();
                 }
             } else {
                 Member param = new Member();
                 param.setMode(mode.toString());
                 AST idlType = mode.getFirstChild();
-                param.setDataType(findDataType(idlType));
                 AST paramName = idlType.getNextSibling();
-                param.setName(paramName.toString());
+                String paramNameStr = paramName.toString();
+                param.setDataType(findDataType(idlType, paramNameStr));
+                param.setName(paramNameStr);
                 operation.addParam(param);
             }
             mode = mode.getNextSibling();
@@ -326,7 +336,7 @@
         AST memberTypeNode = exNode.getNextSibling();
         while (memberTypeNode != null) {
             Member member = new Member();
-            member.setDataType(findDataType(memberTypeNode));
+            member.setDataType(findDataType(memberTypeNode, exName));
             AST memberNode = memberTypeNode.getNextSibling();
             member.setName(memberNode.toString());
             raisesType.addMember(member);
@@ -335,13 +345,22 @@
         return raisesType;
     }
 
-    private DataType findDataType(AST typeNode) throws InvalidIDLException {
-        return findDataType(typeNode, true);
+    private DataType findDataType(AST typeNode, String parentName) throws InvalidIDLException {
+        return findDataType(typeNode, parentName, true, false);
     }
-    private DataType findDataType(AST typeNode, boolean root) throws InvalidIDLException {
+    private DataType findDataType(AST typeNode, String parentName, boolean root, boolean noTypeDefForSeqs) throws InvalidIDLException {
         // Check for sequences
         if (typeNode.getType()==IDLTokenTypes.LITERAL_sequence) {
-            return visitAnonymousSequence(typeNode, root);
+            SequenceType sequenceType = visitAnonymousSequence(typeNode, parentName, root);
+            if (noTypeDefForSeqs) {
+                return sequenceType;
+            }
+            Typedef typedef = new Typedef();
+            typedef.setDataType(sequenceType);
+            typedef.setModule(module);
+            typedef.setName(parentName + '_' + sequenceType.getName());
+            idl.addType(typedef);
+            return typedef;
         }
 
         DataType dataType = null;
@@ -447,12 +466,12 @@
 
     private UnionType visitUnion(AST node) throws InvalidIDLException {
         UnionType unionType = new UnionType();
-        AST exNode = node.getFirstChild();
-        String exName = exNode.toString();
+        AST unNode = node.getFirstChild();
+        String unName = unNode.toString();
         unionType.setModule(module);
-        unionType.setName(exName);
-        AST switchTypeNode = exNode.getNextSibling();
-        unionType.setDiscriminatorType(findDataType(switchTypeNode));
+        unionType.setName(unName);
+        AST switchTypeNode = unNode.getNextSibling();
+        unionType.setDiscriminatorType(findDataType(switchTypeNode, unName));
         AST caseOrDefaultNode = switchTypeNode.getNextSibling();
         while (caseOrDefaultNode != null) {
             UnionMember unionMember = new UnionMember();
@@ -468,7 +487,7 @@
             }
 
 
-            unionMember.setDataType(findDataType(typeNode));
+            unionMember.setDataType(findDataType(typeNode, unName));
 
             AST memberNode = typeNode.getNextSibling();
             unionMember.setName(memberNode.toString());
@@ -487,7 +506,7 @@
         //    sequence = visitAnonymousSequence(typedefNode);
         //    dataType = sequence.getDataType();
         //} else {
-            dataType = findDataType(typedefNode);
+            dataType = findDataType(typedefNode, null, true, true);
         //}
         AST typedefNameNode = typedefNode.getNextSibling();
         AST dimensionNode;
@@ -529,15 +548,16 @@
         }
     }
 
-    private SequenceType visitAnonymousSequence(AST node, boolean root) throws InvalidIDLException {
+    private SequenceType visitAnonymousSequence(AST node, String parentName, boolean root) throws InvalidIDLException {
         AST typeNode = node.getFirstChild();
         SequenceType sequenceType = new SequenceType();
-        DataType dataType = findDataType(typeNode, false);
+        DataType dataType = findDataType(typeNode, parentName, false, false);
         sequenceType.setDataType(dataType);
         sequenceType.setElementModule(module);
         AST elementNode = node.getNextSibling();
         if (elementNode != null && root) {
             String elementName = elementNode.getText();
+            sequenceType.setName(elementName);
             SequenceType tempSeqType = sequenceType;
             int i = 1;
             DataType tempDataType;

Modified: webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/idl/values/AliasValue.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/idl/values/AliasValue.java?rev=685398&r1=685397&r2=685398&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/idl/values/AliasValue.java (original)
+++ webservices/axis2/trunk/java/modules/corba/src/org/apache/axis2/corba/idl/values/AliasValue.java Tue Aug 12 17:28:24 2008
@@ -38,7 +38,7 @@
     }
 
     public void read(InputStream inputStream) {
-        value = read(((Typedef) dataType).getDataType(), inputStream);        
+        value = read(((Typedef) dataType).getDataType(), inputStream);
     }
 
     public void write(OutputStream outputStream) {