You are viewing a plain text version of this content. The canonical link for it is here.
Posted to yoko-commits@incubator.apache.org by mv...@apache.org on 2006/10/26 17:26:48 UTC

svn commit: r468073 - /incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/

Author: mvescovi
Date: Thu Oct 26 10:26:46 2006
New Revision: 468073

URL: http://svn.apache.org/viewvc?view=rev&rev=468073
Log:
Initial refactor of <interface> IDL grammar rule and its derivation rules.

Modified:
    incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/AttributeVisitor.java
    incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ConstVisitor.java
    incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/DefinitionVisitor.java
    incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ExceptionVisitor.java
    incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/OperationVisitor.java
    incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/PortTypeVisitor.java
    incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/PrimitiveTypesVisitor.java
    incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ScopedNameVisitor.java
    incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/SimpleTypeSpecVisitor.java
    incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/StringVisitor.java
    incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/StructVisitor.java
    incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/TemplateTypeSpecVisitor.java
    incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/TypeDclVisitor.java
    incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/TypedefVisitor.java
    incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/TypesVisitor.java

Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/AttributeVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/AttributeVisitor.java?view=diff&rev=468073&r1=468072&r2=468073
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/AttributeVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/AttributeVisitor.java Thu Oct 26 10:26:46 2006
@@ -88,6 +88,14 @@
         binding = wsdlBinding;
     }
     
+    public static boolean accept(AST node) {
+        if (node.getType() == IDLTokenTypes.LITERAL_readonly
+            || node.getType() == IDLTokenTypes.LITERAL_attribute) {
+            return true;
+        }
+        return false;
+    }
+    
     public void visit(AST attributeNode) {
         AST node = attributeNode.getFirstChild();
         

Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ConstVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ConstVisitor.java?view=diff&rev=468073&r1=468072&r2=468073
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ConstVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ConstVisitor.java Thu Oct 26 10:26:46 2006
@@ -38,6 +38,13 @@
         super(xmlSchemas, xmlSchema, typeMappingType);
     }
     
+    public static boolean accept(AST node) {
+        if (node.getType() == IDLTokenTypes.LITERAL_const) {
+            return true;
+        }
+        return false;
+    }
+    
     public void visit(AST constNode) {
         AST constTypeNode = constNode.getFirstChild();
         AST constNameNode = TypesUtils.getPrimitiveCorbaTypeNameNode(constTypeNode);

Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/DefinitionVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/DefinitionVisitor.java?view=diff&rev=468073&r1=468072&r2=468073
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/DefinitionVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/DefinitionVisitor.java Thu Oct 26 10:26:46 2006
@@ -76,22 +76,33 @@
             break;
         }
         case IDLTokenTypes.LITERAL_interface: {
-            PortTypeVisitor portTypeVisitor = new PortTypeVisitor(definition, typesVisitor);
+            PortTypeVisitor portTypeVisitor = new PortTypeVisitor(schemas,
+                                                                  schema,
+                                                                  typeMap,
+                                                                  definition,
+                                                                  typesVisitor);
             portTypeVisitor.visit(node);
             break;
         }
         case IDLTokenTypes.LITERAL_exception: {
-            ExceptionVisitor exceptionVisitor = new ExceptionVisitor(schemas, schema, typeMap);
+            ExceptionVisitor exceptionVisitor = new ExceptionVisitor(schemas,
+                                                                     schema,
+                                                                     typeMap);
             exceptionVisitor.visit(node);
             break;
         }
         case IDLTokenTypes.LITERAL_const: {
-            ConstVisitor constVisitor = new ConstVisitor(schemas, schema, typeMap);
+            ConstVisitor constVisitor = new ConstVisitor(schemas,
+                                                         schema,
+                                                         typeMap);
             constVisitor.visit(node);
             break;
         }
         default: {
-            TypeDclVisitor typeDclVisitor = new TypeDclVisitor(schemas, schema, typeMap, typesVisitor);
+            TypeDclVisitor typeDclVisitor = new TypeDclVisitor(schemas,
+                                                               schema,
+                                                               typeMap,
+                                                               typesVisitor);
             typeDclVisitor.visit(node);
         }
         

Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ExceptionVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ExceptionVisitor.java?view=diff&rev=468073&r1=468072&r2=468073
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ExceptionVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ExceptionVisitor.java Thu Oct 26 10:26:46 2006
@@ -39,11 +39,18 @@
 public class ExceptionVisitor extends TypesVisitorBase {
 
     public ExceptionVisitor(XmlSchemaCollection xmlSchemas,
-                         XmlSchema xmlSchema,
-                         TypeMappingType typeMappingType) {
+                            XmlSchema xmlSchema,
+                            TypeMappingType typeMappingType) {
         super(xmlSchemas, xmlSchema, typeMappingType);
     }
 
+    public static boolean accept(AST node) {
+        if (node.getType() == IDLTokenTypes.LITERAL_exception) {
+            return true;
+        }
+        return false;
+    }
+    
     public void visit(AST node) {
         // <exception_dcl> ::= "exception" <identifier> "{" <member>* "}"
         // <member> ::= <type_spec> <declarators> ";"

Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/OperationVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/OperationVisitor.java?view=diff&rev=468073&r1=468072&r2=468073
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/OperationVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/OperationVisitor.java Thu Oct 26 10:26:46 2006
@@ -53,6 +53,24 @@
         binding = wsdlBinding;
     }
     
+    public static boolean accept(AST node) {
+        boolean result = false;
+        AST node2 = node.getFirstChild();
+        if (node2.getType() == IDLTokenTypes.LITERAL_oneway) {
+            result = true;
+        } else {
+            int type = node2.getType();
+            result =
+                type == IDLTokenTypes.LITERAL_void
+                || PrimitiveTypesVisitor.accept(node2)
+                || StringVisitor.accept(node2);
+                // || ScopedNameVisitor.accept(node);
+                // REVISIT: previous line should not be commented out
+                // FIXME fix ScopedNameVisitor
+        }
+        return result;
+    }
+    
     public void visit(AST node) {
         MessageVisitor msgVisitor = new MessageVisitor(definition, typesVisitor);
         Operation op = definition.createOperation();

Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/PortTypeVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/PortTypeVisitor.java?view=diff&rev=468073&r1=468072&r2=468073
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/PortTypeVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/PortTypeVisitor.java Thu Oct 26 10:26:46 2006
@@ -34,6 +34,10 @@
 import antlr.collections.AST;
 
 import org.apache.schemas.yoko.bindings.corba.BindingType;
+import org.apache.schemas.yoko.bindings.corba.TypeMappingType;
+
+import org.apache.ws.commons.schema.XmlSchema;
+import org.apache.ws.commons.schema.XmlSchemaCollection;
 
 import org.apache.yoko.wsdl.CorbaConstants;
 
@@ -46,7 +50,18 @@
     TypesVisitor typesVisitor;
     String module;
 
-    public PortTypeVisitor(Definition wsdlDefinition, TypesVisitor typeVisitor) {
+    private XmlSchemaCollection schemas;
+    private XmlSchema schema;
+    private TypeMappingType typeMap;
+    
+    public PortTypeVisitor(XmlSchemaCollection xmlSchemas,
+                           XmlSchema xmlSchema,
+                           TypeMappingType corbaTypeMap,
+                           Definition wsdlDefinition,
+                           TypesVisitor typeVisitor) {
+        schemas = xmlSchemas;
+        schema = xmlSchema;
+        typeMap = corbaTypeMap;
         definition = wsdlDefinition;
         typesVisitor = typeVisitor;
         extReg = definition.getExtensionRegistry();
@@ -60,44 +75,71 @@
         }
     }
 
+    public static boolean accept(AST node) {
+        if (node.getType() == IDLTokenTypes.LITERAL_interface) {
+            return true;
+        }
+        return false;
+    }
+    
     public void visit(AST node) {
-        portType = definition.createPortType();
-        AST interfaceNode = node.getFirstChild();
-        String intfName = interfaceNode.toString();
+        // <interface> ::= <interface_dcl>
+        //               | <forward_dcl>
+        // <interface_dcl> ::= <interface_header> "{" <interface_body> "}"
+        // <forward_dcl> ::= ["abstract" | "local"] "interface" <identifier>
+        // <interface_header> ::= ["abstract" | "local"] "interface" <identifier>
+        //                        [<interface_inheritance_spec>]
+        // <interface_body> ::= <export>*
+        // <export> ::= <type_dcl> ";"
+        //            | <const_dcl> ";"
+        //            | <except_dcl> ";"
+        //            | <attr_dcl> ";"
+        //            | <op_dcl> ";"
+        // <interface_inheritance_spec> ::= ":" <interface_name> { "," <interface_name> }*
+        // <interface_name> ::= <scoped_name>
+        
+        
+        AST identifierNode = node.getFirstChild();
+        String interfaceName = identifierNode.toString();
         if (module != null) {
-            intfName = module + "." + intfName;
+            interfaceName = module + "." + interfaceName;
         }
-        portType.setQName(new QName(definition.getTargetNamespace(), intfName));
+        
+        portType = definition.createPortType();
+        portType.setQName(new QName(definition.getTargetNamespace(), interfaceName));
         portType.setUndefined(false);
         definition.addPortType(portType);
         Binding binding = createBinding();
-        AST node2 = interfaceNode.getNextSibling();
-        while (node2 != null) {
-            switch (node2.getType()) {
-            case IDLTokenTypes.LITERAL_struct:
-            case IDLTokenTypes.LITERAL_exception:
-            case IDLTokenTypes.LITERAL_const:
-            case IDLTokenTypes.LITERAL_enum:
-            case IDLTokenTypes.LITERAL_union:
-            case IDLTokenTypes.LITERAL_typedef:
-                typesVisitor.visit(node2);
-                break;
-            case IDLTokenTypes.LITERAL_attribute:
+        
+        AST exportNode = identifierNode.getNextSibling();
+        while (exportNode != null) {
+            
+            if (TypeDclVisitor.accept(exportNode)) {
+                TypeDclVisitor visitor = new TypeDclVisitor(schemas, schema, typeMap, typesVisitor);
+                visitor.visit(exportNode);
+            } else if (ConstVisitor.accept(exportNode)) {
+                ConstVisitor visitor = new ConstVisitor(schemas, schema, typeMap);
+                visitor.visit(exportNode);
+            } else if (ExceptionVisitor.accept(exportNode)) {
+                ExceptionVisitor visitor = new ExceptionVisitor(schemas, schema, typeMap);
+                visitor.visit(exportNode);
+            } else if (AttributeVisitor.accept(exportNode)) {
                 AttributeVisitor attributeVisitor = new AttributeVisitor(definition,
                                                                          typesVisitor,
                                                                          portType,
                                                                          binding);
-                attributeVisitor.visit(node2);
-                break;
-            default:
-                OperationVisitor operationVisitor = new OperationVisitor(definition,
-                                                                         typesVisitor,
-                                                                         portType,
-                                                                         binding);
-                operationVisitor.visit(node2);     
-                break;
+                attributeVisitor.visit(exportNode);                
+            } else if (OperationVisitor.accept(exportNode)) {
+                OperationVisitor visitor = new OperationVisitor(definition,
+                                                                typesVisitor,
+                                                                portType,
+                                                                binding);
+                visitor.visit(exportNode);                     
+            } else {
+                throw new RuntimeException("InterfaceVisitor: invalid IDL!");
             }
-            node2 = node2.getNextSibling();
+            
+            exportNode = exportNode.getNextSibling();
         }
     }
 

Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/PrimitiveTypesVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/PrimitiveTypesVisitor.java?view=diff&rev=468073&r1=468072&r2=468073
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/PrimitiveTypesVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/PrimitiveTypesVisitor.java Thu Oct 26 10:26:46 2006
@@ -44,8 +44,8 @@
         PRIMITIVE_TYPES.add(new Integer(IDLTokenTypes.LITERAL_boolean));
         PRIMITIVE_TYPES.add(new Integer(IDLTokenTypes.LITERAL_any));
         PRIMITIVE_TYPES.add(new Integer(IDLTokenTypes.LITERAL_octet));
-        PRIMITIVE_TYPES.add(new Integer(IDLTokenTypes.LITERAL_string));
-        PRIMITIVE_TYPES.add(new Integer(IDLTokenTypes.LITERAL_wstring));
+//        PRIMITIVE_TYPES.add(new Integer(IDLTokenTypes.LITERAL_string));
+//        PRIMITIVE_TYPES.add(new Integer(IDLTokenTypes.LITERAL_wstring));
         PRIMITIVE_TYPES.add(new Integer(IDLTokenTypes.LITERAL_any));
     }
 

Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ScopedNameVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ScopedNameVisitor.java?view=diff&rev=468073&r1=468072&r2=468073
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ScopedNameVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ScopedNameVisitor.java Thu Oct 26 10:26:46 2006
@@ -50,6 +50,10 @@
     }
 
     public void visit(AST node) {
+        // <scoped_name> ::= <identifier>
+        //                 | :: <identifier>
+        //                 | <scoped_name> "::" <identifier>
+
         setSchemaType(TypesUtils.findType(schemas, schema, node));
         setCorbaType(TypesUtils.findCorbaType(typeMap, getSchemaType().getQName()));
     }

Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/SimpleTypeSpecVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/SimpleTypeSpecVisitor.java?view=diff&rev=468073&r1=468072&r2=468073
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/SimpleTypeSpecVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/SimpleTypeSpecVisitor.java Thu Oct 26 10:26:46 2006
@@ -56,19 +56,19 @@
         
         TypeSpecVisitor visitor = null;
         
-        // simple_type_spec - base_type_spec
+        
         if (PrimitiveTypesVisitor.accept(node)) {
+            // simple_type_spec - base_type_spec
             visitor = new PrimitiveTypesVisitor(schemas, schema, typeMap);
-        }
-
-        // simple_type_spec - template_type_spec
-        if (TemplateTypeSpecVisitor.accept(node)) {
+            
+        } else if (TemplateTypeSpecVisitor.accept(node)) {
+            // simple_type_spec - template_type_spec
             visitor = new TemplateTypeSpecVisitor(schemas, schema, typeMap);
-        }
-        
-        // simple_type_spec - scoped_name
-        if (ScopedNameVisitor.accept(schemas, schema, node)) {
+
+        } else if (ScopedNameVisitor.accept(schemas, schema, node)) {
+            // simple_type_spec - scoped_name
             visitor = new ScopedNameVisitor(schemas, schema, typeMap);
+        
         }
         
         

Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/StringVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/StringVisitor.java?view=diff&rev=468073&r1=468072&r2=468073
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/StringVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/StringVisitor.java Thu Oct 26 10:26:46 2006
@@ -94,6 +94,8 @@
         simpleType.setContent(restriction);
 
         // xmlschema:simpleType
+        schema.getItems().add(simpleType);
+        schema.addType(simpleType);
         setSchemaType(simpleType);
         
         
@@ -138,53 +140,59 @@
                               + CorbaConstants.IDL_VERSION);
         
         // add corba:alias
+        typeMap.getStructOrExceptionOrUnion().add(alias);
         setCorbaType(alias);
     }
     
     private void visitUnboundedString() {
         // REVISIT: code in this block is very similar to TypedefVisitor.visitAlias() method
         
-//        // xmlschema:simpleType
-//        XmlSchemaSimpleType simpleType = new XmlSchemaSimpleType(schema);
-//        simpleType.setName(stringName);
-//        XmlSchemaSimpleTypeRestriction restriction = new XmlSchemaSimpleTypeRestriction();
-//        restriction.setBaseTypeName(Constants.XSD_STRING);
-//        simpleType.setContent(restriction);
-//        
-//        // add xmlschema:simpleType
-//        setSchemaType(simpleType);
-        setSchemaType(schemas.getTypeByQName(Constants.XSD_STRING));
-        
-//        // corba:alias
-//        Alias alias = new Alias();
-//        alias.setQName(new QName(typeMap.getTargetNamespace(), stringName));
-//        if (stringNode.getType() == IDLTokenTypes.LITERAL_string) {
-//            alias.setBasetype(CorbaConstants.NT_CORBA_STRING);
-//        } else if (stringNode.getType() == IDLTokenTypes.LITERAL_wstring) {
-//            alias.setBasetype(CorbaConstants.NT_CORBA_WSTRING);
-//        } else { 
-//            // should never get here
-//            throw new RuntimeException("StringVisitor attempted to visit an invalid node");
-//        }
-//        alias.setType(Constants.XSD_STRING);
-//        alias.setRepositoryID(CorbaConstants.REPO_STRING
-//                              + stringName
-//                              + CorbaConstants.IDL_VERSION);
-//        
-//        // add corba:alias
-//        setCorbaType(alias);
-        CorbaTypeImpl corbaString = new CorbaTypeImpl();
+        // xmlschema:simpleType
+        XmlSchemaSimpleType simpleType = new XmlSchemaSimpleType(schema);
+        simpleType.setName(stringName);
+        XmlSchemaSimpleTypeRestriction restriction = new XmlSchemaSimpleTypeRestriction();
+        restriction.setBaseTypeName(Constants.XSD_STRING);
+        simpleType.setContent(restriction);
+        
+        // add xmlschema:simpleType
+        schema.getItems().add(simpleType);
+        schema.addType(simpleType);
+        setSchemaType(simpleType);
+
+//        setSchemaType(schemas.getTypeByQName(Constants.XSD_STRING));
+        
+        // corba:alias
+        Alias alias = new Alias();
+        alias.setQName(new QName(typeMap.getTargetNamespace(), stringName));
         if (stringNode.getType() == IDLTokenTypes.LITERAL_string) {
-            corbaString.setQName(CorbaConstants.NT_CORBA_STRING);
+            alias.setBasetype(CorbaConstants.NT_CORBA_STRING);
         } else if (stringNode.getType() == IDLTokenTypes.LITERAL_wstring) {
-            corbaString.setQName(CorbaConstants.NT_CORBA_WSTRING);
+            alias.setBasetype(CorbaConstants.NT_CORBA_WSTRING);
         } else { 
             // should never get here
             throw new RuntimeException("StringVisitor attempted to visit an invalid node");
         }
-        corbaString.setName(Constants.XSD_STRING.getLocalPart());
-        corbaString.setType(Constants.XSD_STRING);
-        setCorbaType(corbaString);
+        alias.setType(Constants.XSD_STRING);
+        alias.setRepositoryID(CorbaConstants.REPO_STRING
+                              + stringName
+                              + CorbaConstants.IDL_VERSION);
+        
+        // add corba:alias
+        typeMap.getStructOrExceptionOrUnion().add(alias);
+        setCorbaType(alias);
+
+//        CorbaTypeImpl corbaString = new CorbaTypeImpl();
+//        if (stringNode.getType() == IDLTokenTypes.LITERAL_string) {
+//            corbaString.setQName(CorbaConstants.NT_CORBA_STRING);
+//        } else if (stringNode.getType() == IDLTokenTypes.LITERAL_wstring) {
+//            corbaString.setQName(CorbaConstants.NT_CORBA_WSTRING);
+//        } else { 
+//            // should never get here
+//            throw new RuntimeException("StringVisitor attempted to visit an invalid node");
+//        }
+//        corbaString.setName(Constants.XSD_STRING.getLocalPart());
+//        corbaString.setType(Constants.XSD_STRING);
+//        setCorbaType(corbaString);
 
     }
     

Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/StructVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/StructVisitor.java?view=diff&rev=468073&r1=468072&r2=468073
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/StructVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/StructVisitor.java Thu Oct 26 10:26:46 2006
@@ -53,6 +53,10 @@
     }
     
     public void visit(AST node) {
+        // <struct_type> ::= "struct" <identifier> "{" <member_list> "}"
+        // <member_list> ::= <member>+
+        // <member> ::= <type_spec> <declarators> ";"
+        
         AST structNode = node.getFirstChild();
         
         // xmlschema:struct
@@ -100,9 +104,9 @@
             memberTypeNode = memberNode.getNextSibling();
         }
 
+        // declaration phase
         XmlSchemaType schemaType = complexType;
         CorbaTypeImpl corbaType = struct;
-        // declaration phase
         DeclaratorVisitor declaratorVisitor = new DeclaratorVisitor(schemas, schema, typeMap);
         declaratorVisitor.visit(structNode, schemaType, corbaType);
 

Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/TemplateTypeSpecVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/TemplateTypeSpecVisitor.java?view=diff&rev=468073&r1=468072&r2=468073
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/TemplateTypeSpecVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/TemplateTypeSpecVisitor.java Thu Oct 26 10:26:46 2006
@@ -59,12 +59,14 @@
         TypeSpecVisitor visitor = null;
         
         if (SequenceVisitor.accept(node)) {
+            // <sequence_type>
             visitor = new SequenceVisitor(schemas, schema, typeMap);
-        }
-        if (StringVisitor.accept(node)) {
+        } else if (StringVisitor.accept(node)) {
+            // <string_type>
+            // <wstring_type>
             visitor = new StringVisitor(schemas, schema, typeMap);
-        }
-        if (FixedVisitor.accept(node)) {
+        } else if (FixedVisitor.accept(node)) {
+            // <fixed_pt_type>
             visitor = new FixedVisitor(schemas, schema, typeMap);
         }
 

Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/TypeDclVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/TypeDclVisitor.java?view=diff&rev=468073&r1=468072&r2=468073
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/TypeDclVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/TypeDclVisitor.java Thu Oct 26 10:26:46 2006
@@ -45,6 +45,15 @@
         typesVisitor = typesVisitorRef;
     }
     
+    public static boolean accept(AST node) {
+        boolean result =
+            TypedefVisitor.accept(node)
+            || StructVisitor.accept(node)
+            || UnionVisitor.accept(node)
+            || EnumVisitor.accept(node);
+        return result;
+    }
+    
     public void visit(AST node) {
         // <type_dcl> ::= "typedef" <type_declarator>
         //              | <struct_type>
@@ -56,24 +65,25 @@
         TypeSpecVisitor visitor = null;
         
         if (TypedefVisitor.accept(node)) {
+            // "typedef" <type_declarator>
             visitor = new TypedefVisitor(schemas, schema, typeMap, typesVisitor);
-        }
-        
-        if (StructVisitor.accept(node)) {
+        } else if (StructVisitor.accept(node)) {
+            // <struct_type>
             visitor = new StructVisitor(schemas, schema, typeMap);
-        }
-        
-        if (UnionVisitor.accept(node)) {
+        } else if (UnionVisitor.accept(node)) {
+            // <union_type>
             visitor = new UnionVisitor(schemas, schema, typeMap);
-        }
-        
-        if (EnumVisitor.accept(node)) {
+        } else if (EnumVisitor.accept(node)) {
+            // <enum_type>
             visitor = new EnumVisitor(schemas, schema, typeMap);
+        } else if (node.getType() == IDLTokenTypes.LITERAL_native) {
+            // "native" <simple_declarator>
+            //
+            // native type not supported
+            throw new RuntimeException("[TypeDclVisitor: native type not supported!]");
         }
-        
-        // native type not supported
-        
-        // TBD: forward declaration <constr_forward_declaration>
+
+        // TODO forward declaration <constr_forward_declaration>
         
         visitor.visit(node);
     }

Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/TypedefVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/TypedefVisitor.java?view=diff&rev=468073&r1=468072&r2=468073
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/TypedefVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/TypedefVisitor.java Thu Oct 26 10:26:46 2006
@@ -66,10 +66,9 @@
         
         // Handle cases "typedef sequence"
         //              "typedef fixed"
-        boolean doAlias =
-            SequenceVisitor.accept(typeDeclaratorNode)
-            || FixedVisitor.accept(typeDeclaratorNode);
-        if (!doAlias) {
+        //              "typedef string"
+        //              "typedef wstring"
+        if (!TemplateTypeSpecVisitor.accept(typeDeclaratorNode)) {
             generateAlias(TypesUtils.getPrimitiveCorbaTypeNameNode(typedefNode.getFirstChild()),
                           //typedefNode.getFirstChild().getNextSibling(),
                           schemaType,

Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/TypesVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/TypesVisitor.java?view=diff&rev=468073&r1=468072&r2=468073
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/TypesVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/TypesVisitor.java Thu Oct 26 10:26:46 2006
@@ -146,30 +146,26 @@
 
         TypeSpecVisitor visitor = null;
         
-        // type_spec - constr_type_spec
+        
         if (ConstrTypeSpecVisitor.accept(node)) {
+            // type_spec - constr_type_spec
             visitor = new ConstrTypeSpecVisitor(schemas, schema, typeMap);
-        }
-
-        // type_spec - simple_type_spec
-        if (SimpleTypeSpecVisitor.accept(node)) {
+        } else if (SimpleTypeSpecVisitor.accept(node)) {
+            // type_spec - simple_type_spec
             visitor = new SimpleTypeSpecVisitor(schemas, schema, typeMap);
-        }
-                
-
-        // REVISIT: !!!!!
-        // This is ugly. It should be done in the SimpleTypeSpecVisitor.accept(node) method.
-        // More precisely, that accept method should contained an ORed 
-        // ScopedNameVisitor.accept(schemas, schema, node)
-        // It is not done currently because that would require changing accept method signature 
-        // to accept(schemas, schema, node).
-        // Perhaps passing a pointer to DefinitionVisitor or some other class (to be designed)
-        // would be a better solution.
-        //
-        // To work around that redesign and get things working now, I am assuming that if visitor
-        // is null at this point, then it has to be a scoped_name.
-        // REVISIT!!!
-        if (visitor == null) {
+        } else if (visitor == null) {
+            // REVISIT: !!!!!
+            // This is ugly. It should be done in the SimpleTypeSpecVisitor.accept(node) method.
+            // More precisely, that accept method should contained an ORed 
+            // ScopedNameVisitor.accept(schemas, schema, node)
+            // It is not done currently because that would require changing accept method signature 
+            // to accept(schemas, schema, node).
+            // Perhaps passing a pointer to DefinitionVisitor or some other class (to be designed)
+            // would be a better solution.
+            //
+            // To work around that redesign and get things working now, I am assuming that if visitor
+            // is null at this point, then it has to be a scoped_name.
+            // REVISIT!!!
             visitor = new ScopedNameVisitor(schemas, schema, typeMap);
         }