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/11/03 14:37:42 UTC

svn commit: r470835 - in /incubator/yoko/branches/idltowsdl_anon_refactor/tools/src: main/java/org/apache/yoko/tools/processors/idl/ test/resources/idl/

Author: mvescovi
Date: Fri Nov  3 06:37:41 2006
New Revision: 470835

URL: http://svn.apache.org/viewvc?view=rev&rev=470835
Log:
Fixed StringVisitor simple string handling problems

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/DeclaratorVisitor.java
    incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/EnumVisitor.java
    incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ModuleVisitor.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/ParamTypeSpecVisitor.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/Scope.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/TypedefVisitor.java
    incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/UnionVisitor.java
    incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/test/resources/idl/expected_String.wsdl
    incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/test/resources/idl/expected_Typedef.wsdl

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=470835&r1=470834&r2=470835
==============================================================================
--- 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 Fri Nov  3 06:37:41 2006
@@ -35,7 +35,6 @@
 
 import javax.xml.namespace.QName;
 
-import antlr.ASTVisitor;
 import antlr.collections.AST;
 
 import org.apache.schemas.yoko.bindings.corba.ArgType;
@@ -74,7 +73,6 @@
                             XmlSchema xmlSchema,
                             TypeMappingType typeMap,
                             Definition wsdlDefinition,
-                            TypesVisitor typesVisitor,
                             PortType wsdlPortType,
                             Binding wsdlBinding) {
         super(scope, xmlSchemas, xmlSchema, typeMap);

Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/DeclaratorVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/DeclaratorVisitor.java?view=diff&rev=470835&r1=470834&r2=470835
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/DeclaratorVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/DeclaratorVisitor.java Fri Nov  3 06:37:41 2006
@@ -29,7 +29,7 @@
 
 import org.apache.yoko.wsdl.CorbaTypeImpl;
 
-public class DeclaratorVisitor {
+public class DeclaratorVisitor extends VisitorBase {
     // <declarators> ::= <declarator> {"," <declarator> }*
     // <declarator> ::= <simple_declarator>
     //                | <complex_declarator>
@@ -38,21 +38,38 @@
     // <array_declarator> ::= <identifier> <fixed_array_size>+
     // <fixed_array_size> ::= "[" <positive_int_const> "]"
 
-    private XmlSchemaCollection schemas;
-    private XmlSchema schema;
-    private TypeMappingType typeMap;
-
-    public DeclaratorVisitor(XmlSchemaCollection xmlSchemas,
+    private XmlSchemaType schemaType;
+    private CorbaTypeImpl corbaType;
+    
+    public DeclaratorVisitor(Scope scope,
+                             XmlSchemaCollection xmlSchemas,
                              XmlSchema xmlSchema,
-                             TypeMappingType corbaTypeMap) {
-        schemas = xmlSchemas;
-        schema = xmlSchema;
-        typeMap = corbaTypeMap;    
+                             TypeMappingType corbaTypeMap,
+                             XmlSchemaType schemaTypeRef,
+                             CorbaTypeImpl corbaTypeRef) {
+        super(scope, xmlSchemas, xmlSchema, corbaTypeMap);
+        schemaType = schemaTypeRef;
+        corbaType = corbaTypeRef;
     }
     
     // REVISIT: parameter node should be the first declarator node
     // and visit should loop through all declarators.
-    public void visit(AST node, XmlSchemaType schemaType, CorbaTypeImpl corbaType) {
+    public void visit(AST node) {
+
+//        // handle named or anonymous types
+//        String name = null;
+//        if (node == null) {
+//            // anonymous
+//            
+//            //name = "_1_" + getScope().tail();
+//            
+//        } else {
+//            name = node.toString();
+//        }
+//        schemaType.setName(name);
+//        corbaType.setQName(new QName(typeMap.getTargetNamespace(), name));
+
+        
         // add schemaType
         schema.getItems().add(schemaType);
         schema.addType(schemaType);

Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/EnumVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/EnumVisitor.java?view=diff&rev=470835&r1=470834&r2=470835
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/EnumVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/EnumVisitor.java Fri Nov  3 06:37:41 2006
@@ -56,6 +56,10 @@
     }
     
     public void visit(AST enumNode) {
+        // <enum_type> ::= "enum" <identifier> "{" <enumerator> {"," <enumerator>}* "}"
+        // <enumerator> ::= <identifier>
+        
+        
         AST enumNameNode = enumNode.getFirstChild();
 
         // xmlschema:enum
@@ -96,8 +100,13 @@
         XmlSchemaType schemaType = enumSchemaSimpleType;
         CorbaTypeImpl corbaType = corbaEnum;
         // declaration phase
-        DeclaratorVisitor declaratorVisitor = new DeclaratorVisitor(schemas, schema, typeMap);
-        declaratorVisitor.visit(node, schemaType, corbaType);
+        DeclaratorVisitor declaratorVisitor = new DeclaratorVisitor(getScope(),
+                                                                    schemas,
+                                                                    schema,
+                                                                    typeMap,
+                                                                    schemaType,
+                                                                    corbaType);
+        declaratorVisitor.visit(enumNameNode);
 
         // REVISIT: are there assignments needed?
         setSchemaType(enumSchemaSimpleType);

Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ModuleVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ModuleVisitor.java?view=diff&rev=470835&r1=470834&r2=470835
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ModuleVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ModuleVisitor.java Fri Nov  3 06:37:41 2006
@@ -21,7 +21,6 @@
 
 import javax.wsdl.Definition;
 
-import antlr.ASTVisitor;
 import antlr.collections.AST;
 
 import org.apache.schemas.yoko.bindings.corba.TypeMappingType;
@@ -52,12 +51,13 @@
         AST definitionNode = identifierNode.getNextSibling();
         
         while (definitionNode != null) {
-            DefinitionVisitor definitionVisitor = new DefinitionVisitor(new Scope(getScope(), identifierNode.toString()),
-                                                                        definition,
-                                                                        typesVisitor,
-                                                                        schemas,
-                                                                        schema,
-                                                                        typeMap);
+            DefinitionVisitor definitionVisitor =
+                new DefinitionVisitor(new Scope(getScope(), identifierNode.toString()),
+                                      definition,
+                                      typesVisitor,
+                                      schemas,
+                                      schema,
+                                      typeMap);
 
             definitionVisitor.visit(definitionNode);
             

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=470835&r1=470834&r2=470835
==============================================================================
--- 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 Fri Nov  3 06:37:41 2006
@@ -36,7 +36,6 @@
 import javax.wsdl.extensions.ExtensionRegistry;
 import javax.xml.namespace.QName;
 
-import antlr.ASTVisitor;
 import antlr.collections.AST;
 
 import org.apache.schemas.yoko.bindings.corba.ArgType;
@@ -65,7 +64,6 @@
     private static final String RETURN_PARAMETER = "return";
     
     private Definition definition;
-    private TypesVisitor typesVisitor;
     private ExtensionRegistry extReg;
     private PortType portType;
     private Binding binding;
@@ -83,18 +81,17 @@
                             XmlSchema xmlSchema,
                             TypeMappingType typeMapRef,
                             Definition wsdlDefinition,
-                            TypesVisitor typeVisitor,
                             PortType wsdlPortType,
                             Binding wsdlBinding) {
         super(scope, xmlSchemas, xmlSchema, typeMapRef);
         definition = wsdlDefinition;
-        typesVisitor = typeVisitor;
         extReg = definition.getExtensionRegistry();
         portType = wsdlPortType;
         binding = wsdlBinding;
     }
     
-    public static boolean accept(XmlSchemaCollection schemas, XmlSchema schema, AST node) {
+    public static boolean accept(XmlSchemaCollection schemas, XmlSchema schema,
+                                 TypeMappingType typeMap, AST node) {
         boolean result = false;
         AST node2 = node.getFirstChild();
         if (node2.getType() == IDLTokenTypes.LITERAL_oneway) {
@@ -105,7 +102,7 @@
                 type == IDLTokenTypes.LITERAL_void
                 || PrimitiveTypesVisitor.accept(node2)
                 || StringVisitor.accept(node2)
-                || ScopedNameVisitor.accept(schemas, schema, node2);
+                || ScopedNameVisitor.accept(schemas, schema, typeMap, node2);
         }
         return result;
     }
@@ -370,7 +367,7 @@
 
         // binding - operation - corba:operation - corba:raises
         RaisesType raisesType = new RaisesType();
-        raisesType.setException(new QName(typesVisitor.getCorbaTypeMapping().getTargetNamespace(),
+        raisesType.setException(new QName(typeMap.getTargetNamespace(),
                                           exceptionName));
         corbaOperation.getRaises().add(raisesType);
 

Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ParamTypeSpecVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ParamTypeSpecVisitor.java?view=diff&rev=470835&r1=470834&r2=470835
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ParamTypeSpecVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ParamTypeSpecVisitor.java Fri Nov  3 06:37:41 2006
@@ -54,7 +54,7 @@
             // wstring_type_spec
             visitor = new StringVisitor(getScope(), schemas, schema, typeMap, false);
 
-        } else if (ScopedNameVisitor.accept(schemas, schema, node)) {
+        } else if (ScopedNameVisitor.accept(schemas, schema, typeMap, node)) {
             // scoped_name
             visitor = new ScopedNameVisitor(getScope(), schemas, schema, typeMap);
         

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=470835&r1=470834&r2=470835
==============================================================================
--- 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 Fri Nov  3 06:37:41 2006
@@ -30,7 +30,6 @@
 
 import javax.xml.namespace.QName;
 
-import antlr.ASTVisitor;
 import antlr.collections.AST;
 
 import org.apache.schemas.yoko.bindings.corba.BindingType;
@@ -136,17 +135,15 @@
                                                                          schema,
                                                                          typeMap,
                                                                          definition,
-                                                                         typesVisitor,
                                                                          portType,
                                                                          binding);
                 attributeVisitor.visit(exportNode);                
-            } else if (OperationVisitor.accept(schemas, schema, exportNode)) {
+            } else if (OperationVisitor.accept(schemas, schema, typeMap, exportNode)) {
                 OperationVisitor visitor = new OperationVisitor(interfaceScope,
                                                                 schemas,
                                                                 schema,
                                                                 typeMap,
                                                                 definition,
-                                                                typesVisitor,
                                                                 portType,
                                                                 binding);
                 visitor.visit(exportNode);                     

Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/Scope.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/Scope.java?view=diff&rev=470835&r1=470834&r2=470835
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/Scope.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/Scope.java Fri Nov  3 06:37:41 2006
@@ -27,7 +27,7 @@
 
 public final class Scope {
 
-    private final static String SEPARATOR = ".";
+    private static final String SEPARATOR = ".";
     private List<String> scope;
     
     public Scope() {
@@ -70,4 +70,5 @@
         }
         return result.toString();
     }
+    
 }

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=470835&r1=470834&r2=470835
==============================================================================
--- 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 Fri Nov  3 06:37:41 2006
@@ -19,12 +19,19 @@
 
 package org.apache.yoko.tools.processors.idl;
 
+import javax.xml.namespace.QName;
+
 import antlr.collections.AST;
 
 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.ws.commons.schema.XmlSchemaType;
+
+import org.apache.ws.commons.schema.constants.Constants;
+
+import org.apache.yoko.wsdl.CorbaTypeImpl;
 
 public class ScopedNameVisitor extends VisitorBase {
 
@@ -35,12 +42,14 @@
         super(scope, xmlSchemas, xmlSchema, corbaTypeMap);
     }
     
-    public static boolean accept(XmlSchemaCollection schemas, XmlSchema schema, AST node) {
-        // REVISIT
-        if (TypesUtils.findType(schemas, schema, node) != null) {
-            return true;
+    public static boolean accept(XmlSchemaCollection schemas,
+                                 XmlSchema schema,
+                                 TypeMappingType typeMap,
+                                 AST node) {
+        if (findSchemaType(schemas, schema, typeMap, node) == null) {
+            return false;
         }
-        return false;
+        return true;
     }
 
     public void visit(AST node) {
@@ -48,8 +57,38 @@
         //                 | :: <identifier>
         //                 | <scoped_name> "::" <identifier>
 
-        setSchemaType(TypesUtils.findType(schemas, schema, node));
+
+        setSchemaType(findSchemaType(schemas, schema, typeMap, node));
         setCorbaType(TypesUtils.findCorbaType(typeMap, getSchemaType().getQName()));
+        
+    }
+    
+    private static XmlSchemaType findSchemaType(XmlSchemaCollection schemas,
+                                                XmlSchema schema,
+                                                TypeMappingType typeMap,
+                                                AST node) {
+        // REVISIT remove dependency on TypesUtils
+        
+        XmlSchemaType result = TypesUtils.findType(schemas, schema, node);
+        // handle special case of simple string alias
+        // a plain xsd:string has no corresponding XmlSchemaType in the XmlSchema
+        // so the previous findType() method would return null.
+        // As a temporary workaround, we query the typeMap for a corba:string with
+        // same name. If the string is there, then it had been previously properly
+        // declared and we can use it here.
+        if (result == null) {
+            QName corbaStringQname = new QName(typeMap.getTargetNamespace(), node.toString());
+            CorbaTypeImpl ctype = TypesUtils.findCorbaType(typeMap, corbaStringQname);
+            if (ctype != null
+                && ctype.getType() == Constants.XSD_STRING) {
+                result = schemas.getTypeByQName(Constants.XSD_STRING);
+            } else {
+                throw new RuntimeException("[ScopedNameVisitor: Corba type "
+                                           + corbaStringQname.toString()
+                                           + " not found in typeMap]");
+            }
+        }
+        return result;
     }
     
 }

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=470835&r1=470834&r2=470835
==============================================================================
--- 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 Fri Nov  3 06:37:41 2006
@@ -59,7 +59,7 @@
             // simple_type_spec - template_type_spec
             visitor = new TemplateTypeSpecVisitor(getScope(), schemas, schema, typeMap);
 
-        } else if (ScopedNameVisitor.accept(schemas, schema, node)) {
+        } else if (ScopedNameVisitor.accept(schemas, schema, typeMap, node)) {
             // simple_type_spec - scoped_name
             visitor = new ScopedNameVisitor(getScope(), 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=470835&r1=470834&r2=470835
==============================================================================
--- 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 Fri Nov  3 06:37:41 2006
@@ -45,8 +45,7 @@
     private AST boundNode;
     private AST identifierNode;
     private String stringName;
-    
-    private boolean declarationMode;
+
     
     public StringVisitor(Scope scope,
                          XmlSchemaCollection xmlSchemas,
@@ -58,7 +57,6 @@
         boundNode = null;
         identifierNode = null;
         stringName = null;
-        declarationMode = mode;
     }
 
     public static boolean accept(AST node) {
@@ -68,6 +66,13 @@
         }
         return false;
     }
+
+    public static boolean isBounded(AST node) {
+        if (node.getFirstChild() == null) {
+            return false;
+        }
+        return true;
+    }
     
     public void visit(AST node) {
         // <string_type> ::= "string" "<" <positive_int_const> ">"
@@ -101,7 +106,6 @@
         restriction.getFacets().add(maxLengthFacet);
         simpleType.setContent(restriction);
 
-        // xmlschema:simpleType
         setSchemaType(simpleType);
         
         
@@ -113,10 +117,7 @@
             anonstring.setQName(new QName(typeMap.getTargetNamespace(), anonstringName));
             anonstring.setBound(new Long(boundNode.toString()));
             anonstring.setType(simpleType.getQName());
-            
-            // add corba:anonstring
-            typeMap.getStructOrExceptionOrUnion().add(anonstring);
-            
+
             anon = anonstring;
             
         } else if (stringNode.getType() == IDLTokenTypes.LITERAL_wstring) {
@@ -126,9 +127,6 @@
             anonwstring.setBound(new Long(boundNode.toString()));
             anonwstring.setType(simpleType.getQName());
             
-            // add corba:anonwstring
-            typeMap.getStructOrExceptionOrUnion().add(anonwstring);
-            
             anon = anonwstring;
             
         } else { 
@@ -136,6 +134,9 @@
             throw new RuntimeException("StringVisitor attempted to visit an invalid node");
         }
         
+        // add corba:anonstring
+        typeMap.getStructOrExceptionOrUnion().add(anon);
+
         // corba:alias
         Alias alias = new Alias();
         alias.setQName(new QName(typeMap.getTargetNamespace(), stringName));
@@ -144,67 +145,37 @@
         alias.setRepositoryID(CorbaConstants.REPO_STRING
                               + stringName
                               + CorbaConstants.IDL_VERSION);
-        
+
         // add corba:alias
         setCorbaType(alias);
     }
     
     private void visitUnboundedString() {
-        if (declarationMode
-            && stringName != null) {
-            // 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);
-
-            // 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);
+        // schema type
+        setSchemaType(schemas.getTypeByQName(Constants.XSD_STRING));
 
-            // add corba:alias
-            setCorbaType(alias);
-
-        } else {
-            setSchemaType(schemas.getTypeByQName(Constants.XSD_STRING));
-
-            CorbaTypeImpl corbaString = new CorbaTypeImpl();
-            if (stringNode.getType() == IDLTokenTypes.LITERAL_string) {
-                corbaString.setQName(CorbaConstants.NT_CORBA_STRING);
-                corbaString.setName(CorbaConstants.NT_CORBA_STRING.getLocalPart());
-            } else if (stringNode.getType() == IDLTokenTypes.LITERAL_wstring) {
-                corbaString.setQName(CorbaConstants.NT_CORBA_WSTRING);
-                corbaString.setName(CorbaConstants.NT_CORBA_STRING.getLocalPart());
-            } else { 
-                // should never get here
-                throw new RuntimeException("StringVisitor attempted to visit an invalid node");
-            }
-            corbaString.setType(Constants.XSD_STRING);
-            
-            setCorbaType(corbaString);
+        
+        // corba type
+        CorbaTypeImpl corbaString = new CorbaTypeImpl();
+        if (stringNode.getType() == IDLTokenTypes.LITERAL_string) {
+            corbaString.setQName(CorbaConstants.NT_CORBA_STRING);
+            corbaString.setName(CorbaConstants.NT_CORBA_STRING.getLocalPart());
+        } else if (stringNode.getType() == IDLTokenTypes.LITERAL_wstring) {
+            corbaString.setQName(CorbaConstants.NT_CORBA_WSTRING);
+            corbaString.setName(CorbaConstants.NT_CORBA_STRING.getLocalPart());
+        } else { 
+            // should never get here
+            throw new RuntimeException("StringVisitor attempted to visit an invalid node");
         }
+        corbaString.setType(Constants.XSD_STRING);
+
+        setCorbaType(corbaString);
     }
     
-    private String getIdentifier(AST typeNode) {
+    private String getIdentifier(AST node) {
         String result = null;
-        if (identifierNode != null) {
-            String identifierName = identifierNode.toString();
+        if (node != null) {
+            String identifierName = node.toString();
             if (isValidIdentifier(identifierName)) {
                 result = identifierName;
             }

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=470835&r1=470834&r2=470835
==============================================================================
--- 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 Fri Nov  3 06:37:41 2006
@@ -82,49 +82,12 @@
         while (memberTypeNode != null) {
             AST memberNode = memberTypeNode.getNextSibling();
 
-            // xmlschema:member
-            XmlSchemaElement member = new XmlSchemaElement();
-            String memberName = memberNode.toString();
-            member.setName(memberName);
-            // type
-            XmlSchemaType schemaType = TypesUtils.findType(schemas, schema, memberTypeNode);
-            member.setSchemaType(schemaType);
-            member.setSchemaTypeName(schemaType.getQName());
-
-            sequence.getItems().add(member);
-
-            
-            // corba:member
-            MemberType memberType = new MemberType();
-            memberType.setName(memberName);
-            QName idlType = TypesUtils.findCorbaType(typeMap, schemaType.getQName()).getQName();
-            memberType.setIdltype(idlType);
-            struct.getMember().add(memberType);
-
-            memberTypeNode = memberNode.getNextSibling();
-
-        
-            
-//            XmlSchemaType schemaType = null;
-//            CorbaTypeImpl corbaType = null;
-//            try {
-//                TypesVisitor visitor = new TypesVisitor(new Scope(getScope(), identifierNode), 
-//                                                        schemas,
-//                                                        schema,
-//                                                        typeMap);
-//                visitor.visit(memberTypeNode);
-//                
-//                schemaType = visitor.getSchemaType();
-//                corbaType = visitor.getCorbaType();
-//                
-//            } catch (Exception ex) {
-//                
-//            }
-//
 //            // xmlschema:member
 //            XmlSchemaElement member = new XmlSchemaElement();
 //            String memberName = memberNode.toString();
 //            member.setName(memberName);
+//            // type
+//            XmlSchemaType schemaType = TypesUtils.findType(schemas, schema, memberTypeNode);
 //            member.setSchemaType(schemaType);
 //            member.setSchemaTypeName(schemaType.getQName());
 //
@@ -134,17 +97,60 @@
 //            // corba:member
 //            MemberType memberType = new MemberType();
 //            memberType.setName(memberName);
-//            memberType.setIdltype(corbaType.getQName());
+//            QName idlType = TypesUtils.findCorbaType(typeMap, schemaType.getQName()).getQName();
+//            memberType.setIdltype(idlType);
 //            struct.getMember().add(memberType);
 //
 //            memberTypeNode = memberNode.getNextSibling();
+
+        
+            
+            XmlSchemaType schemaType = null;
+            CorbaTypeImpl corbaType = null;
+            try {
+                TypesVisitor visitor = new TypesVisitor(new Scope(getScope(), identifierNode), 
+                                                        schemas,
+                                                        schema,
+                                                        typeMap);
+                visitor.visit(memberTypeNode);
+                
+                schemaType = visitor.getSchemaType();
+                corbaType = visitor.getCorbaType();
+                
+            } catch (Exception ex) {
+                System.out.println(ex.getMessage());
+                System.exit(1);
+            }
+
+            // xmlschema:member
+            XmlSchemaElement member = new XmlSchemaElement();
+            String memberName = memberNode.toString();
+            member.setName(memberName);
+            member.setSchemaType(schemaType);
+            member.setSchemaTypeName(schemaType.getQName());
+
+            sequence.getItems().add(member);
+
+            
+            // corba:member
+            MemberType memberType = new MemberType();
+            memberType.setName(memberName);
+            memberType.setIdltype(corbaType.getQName());
+            struct.getMember().add(memberType);
+
+            memberTypeNode = memberNode.getNextSibling();
         }
 
         // declaration phase
         XmlSchemaType schemaType = complexType;
         CorbaTypeImpl corbaType = struct;
-        DeclaratorVisitor declaratorVisitor = new DeclaratorVisitor(schemas, schema, typeMap);
-        declaratorVisitor.visit(identifierNode, schemaType, corbaType);
+        DeclaratorVisitor declaratorVisitor = new DeclaratorVisitor(getScope(),
+                                                                    schemas,
+                                                                    schema,
+                                                                    typeMap,
+                                                                    schemaType,
+                                                                    corbaType);
+        declaratorVisitor.visit(identifierNode);
 
         // REVISIT: are there assignment needed?
         setSchemaType(complexType);

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=470835&r1=470834&r2=470835
==============================================================================
--- 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 Fri Nov  3 06:37:41 2006
@@ -31,6 +31,7 @@
 import org.apache.ws.commons.schema.XmlSchemaSimpleType;
 import org.apache.ws.commons.schema.XmlSchemaSimpleTypeRestriction;
 import org.apache.ws.commons.schema.XmlSchemaType;
+import org.apache.ws.commons.schema.constants.Constants;
 
 import org.apache.yoko.wsdl.CorbaConstants;
 import org.apache.yoko.wsdl.CorbaTypeImpl;
@@ -59,34 +60,82 @@
         // "typedef" <type_declarator>
         // <type_declarator> ::= <type_spec> <declarators>
 
-        AST typeDeclaratorNode = typedefNode.getFirstChild(); 
+        AST typeDeclaratorNode = typedefNode.getFirstChild();
+        AST identifierNode = TypesUtils.getPrimitiveCorbaTypeNameNode(typeDeclaratorNode);
+        
         typesVisitor.visit(typeDeclaratorNode);
 
         XmlSchemaType schemaType = typesVisitor.getSchemaType();
         CorbaTypeImpl corbaType = typesVisitor.getCorbaType();
         
-        if (TemplateTypeSpecVisitor.accept(typeDeclaratorNode)) {
+        
+        if (SequenceVisitor.accept(typeDeclaratorNode)
+            || FixedVisitor.accept(typeDeclaratorNode)) {
             // Handle cases "typedef sequence"
             //              "typedef fixed"
-            //              "typedef string"
+            DeclaratorVisitor declaratorVisitor = new DeclaratorVisitor(getScope(),
+                                                                        schemas,
+                                                                        schema,
+                                                                        typeMap,
+                                                                        schemaType,
+                                                                        corbaType);
+            declaratorVisitor.visit(identifierNode);
+
+        } else if (StringVisitor.accept(typeDeclaratorNode)) {
+            // Handle cases "typedef string"
             //              "typedef wstring"
-            setSchemaType(schemaType);
-            setCorbaType(corbaType);
+
+            if (StringVisitor.isBounded(typeDeclaratorNode)) {
+                DeclaratorVisitor declaratorVisitor = new DeclaratorVisitor(getScope(),
+                                                                            schemas,
+                                                                            schema,
+                                                                            typeMap,
+                                                                            schemaType,
+                                                                            corbaType);
+                declaratorVisitor.visit(identifierNode);
+  
+            } else {
+                Alias corbaString = new Alias();
+                if (typeDeclaratorNode.getType() == IDLTokenTypes.LITERAL_string) {
+                    corbaString.setBasetype(CorbaConstants.NT_CORBA_STRING);
+                } else if (typeDeclaratorNode.getType() == IDLTokenTypes.LITERAL_wstring) {
+                    corbaString.setBasetype(CorbaConstants.NT_CORBA_WSTRING);
+                } else { 
+                    // should never get here
+                    throw new RuntimeException("StringVisitor attempted to visit an invalid node");
+                }
+                corbaString.setQName(new QName(typeMap.getTargetNamespace(), identifierNode.toString()));
+                corbaString.setType(Constants.XSD_STRING);
+                corbaString.setRepositoryID(CorbaConstants.REPO_STRING
+                                            + identifierNode.toString()
+                                            + CorbaConstants.IDL_VERSION);
+
+                typeMap.getStructOrExceptionOrUnion().add(corbaString);
+                
+            }
+
         } else {
             // typedef used to define an alias
-            generateAlias(TypesUtils.getPrimitiveCorbaTypeNameNode(typedefNode.getFirstChild()),
+            generateAlias(identifierNode,
                           schemaType,
                           corbaType);
+
+            schemaType = getSchemaType();
+            corbaType = getCorbaType();
+        
+            DeclaratorVisitor declaratorVisitor = new DeclaratorVisitor(getScope(),
+                                                                        schemas,
+                                                                        schema,
+                                                                        typeMap,
+                                                                        schemaType,
+                                                                        corbaType);
+            declaratorVisitor.visit(identifierNode);
+        
         }
 
-        // declaration phase
-        schemaType = getSchemaType();
-        corbaType = getCorbaType();
-        DeclaratorVisitor declaratorVisitor = new DeclaratorVisitor(schemas, schema, typeMap);
-        declaratorVisitor.visit(typedefNode.getFirstChild().getNextSibling(),
-                                schemaType,
-                                corbaType);
 
+        setSchemaType(schemaType);
+        setCorbaType(corbaType);
     }
     
     private void generateAlias(AST identifierNode,

Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/UnionVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/UnionVisitor.java?view=diff&rev=470835&r1=470834&r2=470835
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/UnionVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/UnionVisitor.java Fri Nov  3 06:37:41 2006
@@ -97,8 +97,13 @@
         XmlSchemaType schemaType = unionSchemaComplexType;
         CorbaTypeImpl corbaType = corbaUnion;
         // declaration phase
-        DeclaratorVisitor declaratorVisitor = new DeclaratorVisitor(schemas, schema, typeMap);
-        declaratorVisitor.visit(identifierNode, schemaType, corbaType);
+        DeclaratorVisitor declaratorVisitor = new DeclaratorVisitor(getScope(),
+                                                                    schemas,
+                                                                    schema,
+                                                                    typeMap,
+                                                                    schemaType,
+                                                                    corbaType);
+        declaratorVisitor.visit(identifierNode);
 
         // REVISIT: are these assignments needed?
         setSchemaType(unionSchemaComplexType);

Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/test/resources/idl/expected_String.wsdl
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/test/resources/idl/expected_String.wsdl?view=diff&rev=470835&r1=470834&r2=470835
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/test/resources/idl/expected_String.wsdl (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/test/resources/idl/expected_String.wsdl Fri Nov  3 06:37:41 2006
@@ -30,10 +30,10 @@
     <corba:struct xmlns:ns4="http://schemas.apache.org/yoko/idl/String" xmlns="http://schemas.apache.org/yoko/idl/String/typemap" repositoryID="IDL:strStruct:1.0" name="strStruct" type="ns4:strStruct">
       <corba:member name="unboundedStr" idltype="corba:string" />
       <corba:member name="boundedStr10" idltype="string10" />
-      <corba:member name="unboundedWStr" idltype="corba:string" />
+      <corba:member name="unboundedWStr" idltype="corba:wstring" />
       <corba:member name="boundedWStr20" idltype="wstring20" />
-      <corba:member name="myStringStruct" idltype="myString" />
-      <corba:member name="myWStringStruct" idltype="myWString" />
+      <corba:member name="myStringStruct" idltype="corba:string" />
+      <corba:member name="myWStringStruct" idltype="corba:string" />
     </corba:struct>
     </corba:typeMapping>
   <wsdl:types>
@@ -58,14 +58,6 @@
         <xs:restriction base="wstring20">
         </xs:restriction>
       </xs:simpleType>
-      <xs:simpleType name="myString">
-        <xs:restriction base="xs:string">
-        </xs:restriction>
-      </xs:simpleType>
-      <xs:simpleType name="myWString">
-        <xs:restriction base="xs:string">
-        </xs:restriction>
-      </xs:simpleType>
       <xs:complexType name="strStruct">
         <xs:sequence>
           <xs:element name="unboundedStr" type="xs:string">
@@ -76,9 +68,9 @@
           </xs:element>
           <xs:element name="boundedWStr20" type="wstring20">
           </xs:element>
-          <xs:element name="myStringStruct" type="myString">
+          <xs:element name="myStringStruct" type="xs:string">
           </xs:element>
-          <xs:element name="myWStringStruct" type="myWString">
+          <xs:element name="myWStringStruct" type="xs:string">
           </xs:element>
         </xs:sequence>
       </xs:complexType>
@@ -95,7 +87,7 @@
       <xs:element name="combineStringsResponse">
         <xs:complexType>
           <xs:sequence>
-            <xs:element name="return" type="myString">
+            <xs:element name="return" type="xs:string">
             </xs:element>
           </xs:sequence>
         </xs:complexType>
@@ -113,7 +105,7 @@
       <xs:element name="combineWstringsResponse">
         <xs:complexType>
           <xs:sequence>
-            <xs:element name="return" type="myWString">
+            <xs:element name="return" type="xs:string">
             </xs:element>
           </xs:sequence>
         </xs:complexType>
@@ -148,7 +140,7 @@
       <corba:operation name="combineStrings">
         <corba:param xmlns="http://schemas.apache.org/yoko/idl/String/typemap" mode="in" name="string10Parm" idltype="string10" />
         <corba:param xmlns="http://schemas.apache.org/yoko/idl/String/typemap" mode="in" name="myString10Parm" idltype="myString10" />
-        <corba:return xmlns="http://schemas.apache.org/yoko/idl/String/typemap" name="return" idltype="myString" />
+        <corba:return name="return" idltype="corba:string" />
       </corba:operation>
       <wsdl:input name="combineStringsRequest">
       </wsdl:input>
@@ -159,7 +151,7 @@
       <corba:operation name="combineWstrings">
         <corba:param xmlns="http://schemas.apache.org/yoko/idl/String/typemap" mode="in" name="wstring20Parm" idltype="wstring20" />
         <corba:param xmlns="http://schemas.apache.org/yoko/idl/String/typemap" mode="in" name="myWString20Parm" idltype="myWString20" />
-        <corba:return xmlns="http://schemas.apache.org/yoko/idl/String/typemap" name="return" idltype="myWString" />
+        <corba:return name="return" idltype="corba:string" />
       </corba:operation>
       <wsdl:input name="combineWstringsRequest">
       </wsdl:input>

Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/test/resources/idl/expected_Typedef.wsdl
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/test/resources/idl/expected_Typedef.wsdl?view=diff&rev=470835&r1=470834&r2=470835
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/test/resources/idl/expected_Typedef.wsdl (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/test/resources/idl/expected_Typedef.wsdl Fri Nov  3 06:37:41 2006
@@ -36,7 +36,7 @@
     <corba:alias xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.apache.org/yoko/idl/Typedef/typemap" basetype="corba:string" repositoryID="IDL:aString:1.0" name="aString" type="xs:string" />
     <corba:fixed xmlns:ns4="http://schemas.apache.org/yoko/idl/Typedef" xmlns="http://schemas.apache.org/yoko/idl/Typedef/typemap" scale="2" digits="5" repositoryID="IDL:Fixed52:1.0" name="Fixed52" type="ns4:Fixed52" />
     <corba:alias xmlns:ns4="http://schemas.apache.org/yoko/idl/Typedef" xmlns="http://schemas.apache.org/yoko/idl/Typedef/typemap" basetype="SeqLong" repositoryID="IDL:mySeqLong:1.0" name="mySeqLong" type="ns4:SeqLong" />
-    <corba:alias xmlns:ns4="http://schemas.apache.org/yoko/idl/Typedef" xmlns="http://schemas.apache.org/yoko/idl/Typedef/typemap" basetype="aString" repositoryID="IDL:myString:1.0" name="myString" type="ns4:aString" />
+    <corba:alias xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.apache.org/yoko/idl/Typedef/typemap" basetype="corba:string" repositoryID="IDL:myString:1.0" name="myString" type="xs:string" />
     <corba:alias xmlns:ns4="http://schemas.apache.org/yoko/idl/Typedef" xmlns="http://schemas.apache.org/yoko/idl/Typedef/typemap" basetype="Fixed52" repositoryID="IDL:myFixed52:1.0" name="myFixed52" type="ns4:Fixed52" />
     <corba:struct xmlns:ns4="http://schemas.apache.org/yoko/idl/Typedef" xmlns="http://schemas.apache.org/yoko/idl/Typedef/typemap" repositoryID="IDL:aStruct:1.0" name="aStruct" type="ns4:aStruct">
       <corba:member name="aStructMyLong" idltype="myLong" />
@@ -139,10 +139,6 @@
           </xs:element>
         </xs:sequence>
       </xs:complexType>
-      <xs:simpleType name="aString">
-        <xs:restriction base="xs:string">
-        </xs:restriction>
-      </xs:simpleType>
       <xs:simpleType name="Fixed52">
         <xs:restriction base="xs:decimal">
           <xs:totalDigits value="5">
@@ -156,7 +152,7 @@
         </xs:restriction>
       </xs:simpleType>
       <xs:simpleType name="myString">
-        <xs:restriction base="aString">
+        <xs:restriction base="xs:string">
         </xs:restriction>
       </xs:simpleType>
       <xs:simpleType name="myFixed52">