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/02 15:14:25 UTC

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

Author: mvescovi
Date: Thu Nov  2 07:14:23 2006
New Revision: 470379

URL: http://svn.apache.org/viewvc?view=rev&rev=470379
Log:
Adding initial anonymous sequence support and scoped dotted notation.

Added:
    incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/Scope.java   (with props)
    incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/Visitor.java   (with props)
    incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/VisitorBase.java   (with props)
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/ConstrTypeSpecVisitor.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/EnumVisitor.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/FixedVisitor.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/ParamDclVisitor.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/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/SequenceVisitor.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/TypeSpecVisitorBase.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
    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/main/java/org/apache/yoko/tools/processors/idl/WSDLASTVisitor.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=470379&r1=470378&r2=470379
==============================================================================
--- 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 Nov  2 07:14:23 2006
@@ -54,7 +54,7 @@
 import org.apache.yoko.wsdl.CorbaConstants;
 import org.apache.yoko.wsdl.CorbaTypeImpl;
 
-public class AttributeVisitor implements ASTVisitor {
+public class AttributeVisitor extends VisitorBase {
 
     private static final String GETTER_PREFIX     = "_get_";
     private static final String SETTER_PREFIX     = "_set_";
@@ -64,24 +64,20 @@
     private static final String PARAM_NAME        = "_arg";
     private static final String RETURN_PARAM_NAME = "return";
     
-    private XmlSchema           schema;
-    private XmlSchemaCollection schemas;
-    private TypeMappingType     typeMap;
     private Definition          definition;
     private ExtensionRegistry   extReg;
     private PortType            portType;
     private Binding             binding;
     
-    public AttributeVisitor(Definition wsdlDefinition,
+    public AttributeVisitor(Scope scope,
+                            XmlSchemaCollection xmlSchemas,
+                            XmlSchema xmlSchema,
+                            TypeMappingType typeMap,
+                            Definition wsdlDefinition,
                             TypesVisitor typesVisitor,
                             PortType wsdlPortType,
                             Binding wsdlBinding) {
-        
-        // REVISIT: there has to be a better way to access schema and schemas
-        schema = typesVisitor.getSchema();
-        schemas = typesVisitor.getSchemas();
-        typeMap = typesVisitor.getCorbaTypeMapping();
-        //
+        super(scope, xmlSchemas, xmlSchema, typeMap);
         definition = wsdlDefinition;
         extReg = definition.getExtensionRegistry();
         portType = wsdlPortType;

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=470379&r1=470378&r2=470379
==============================================================================
--- 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 Nov  2 07:14:23 2006
@@ -30,12 +30,13 @@
 import org.apache.ws.commons.schema.XmlSchemaCollection;
 import org.apache.ws.commons.schema.XmlSchemaType;
 
-public class ConstVisitor extends TypesVisitorBase {
+public class ConstVisitor extends VisitorBase {
 
-    public ConstVisitor(XmlSchemaCollection xmlSchemas,
+    public ConstVisitor(Scope scope,
+                        XmlSchemaCollection xmlSchemas,
                         XmlSchema xmlSchema,
                         TypeMappingType typeMappingType) {
-        super(xmlSchemas, xmlSchema, typeMappingType);
+        super(scope, xmlSchemas, xmlSchema, typeMappingType);
     }
     
     public static boolean accept(AST node) {

Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ConstrTypeSpecVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ConstrTypeSpecVisitor.java?view=diff&rev=470379&r1=470378&r2=470379
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ConstrTypeSpecVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ConstrTypeSpecVisitor.java Thu Nov  2 07:14:23 2006
@@ -26,19 +26,13 @@
 import org.apache.ws.commons.schema.XmlSchema;
 import org.apache.ws.commons.schema.XmlSchemaCollection;
 
-public class ConstrTypeSpecVisitor extends TypeSpecVisitorBase {
+public class ConstrTypeSpecVisitor extends VisitorBase {
 
-    private XmlSchemaCollection schemas;
-    private XmlSchema schema;
-    private TypeMappingType typeMap;
-    
-    public ConstrTypeSpecVisitor(XmlSchemaCollection xmlSchemas,
+    public ConstrTypeSpecVisitor(Scope scope,
+                                 XmlSchemaCollection xmlSchemas,
                                  XmlSchema xmlSchema,
                                  TypeMappingType corbaTypeMap) {
-        super(xmlSchemas, xmlSchema, corbaTypeMap);
-        schemas = xmlSchemas;
-        schema = xmlSchema;
-        typeMap = corbaTypeMap;
+        super(scope, xmlSchemas, xmlSchema, corbaTypeMap);
     }
     
     public static boolean accept(AST node) {
@@ -54,18 +48,18 @@
         //                      | <union_type>
         //                      | <enum_type>
         
-        TypeSpecVisitor visitor = null;
+        Visitor visitor = null;
         
         if (StructVisitor.accept(node)) {
-            visitor = new StructVisitor(schemas, schema, typeMap);
+            visitor = new StructVisitor(getScope(), schemas, schema, typeMap);
         }
 
         if (UnionVisitor.accept(node)) {
-            visitor = new UnionVisitor(schemas, schema, typeMap);
+            visitor = new UnionVisitor(getScope(), schemas, schema, typeMap);
         }
 
         if (EnumVisitor.accept(node)) {
-            visitor = new EnumVisitor(schemas, schema, typeMap);
+            visitor = new EnumVisitor(getScope(), schemas, schema, typeMap);
         }
 
         visitor.visit(node);

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=470379&r1=470378&r2=470379
==============================================================================
--- 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 Nov  2 07:14:23 2006
@@ -28,25 +28,19 @@
 import org.apache.ws.commons.schema.XmlSchema;
 import org.apache.ws.commons.schema.XmlSchemaCollection;
 
-public class DefinitionVisitor extends TypesVisitorBase {
+public class DefinitionVisitor extends VisitorBase {
     
     private Definition definition;
-    private XmlSchemaCollection schemas;
-    private XmlSchema schema;
-    private TypeMappingType typeMap;
 
     private TypesVisitor typesVisitor;
-    private String scope;
     
-    public DefinitionVisitor(Definition wsdlDefinition,
+    public DefinitionVisitor(Scope scope,
+                             Definition wsdlDefinition,
                              TypesVisitor typeVisitor,
                              XmlSchemaCollection xmlSchemas,
                              XmlSchema xmlSchema,
                              TypeMappingType corbaTypeMap) {
-        super(xmlSchemas, xmlSchema, corbaTypeMap);
-        schemas = xmlSchemas;
-        schema = xmlSchema;
-        typeMap = corbaTypeMap;
+        super(scope, xmlSchemas, xmlSchema, corbaTypeMap);
         definition = wsdlDefinition;
         typesVisitor = typeVisitor;
     }
@@ -67,7 +61,8 @@
             break;
         }
         case IDLTokenTypes.LITERAL_module: {
-            ModuleVisitor moduleVisitor = new ModuleVisitor(definition,
+            ModuleVisitor moduleVisitor = new ModuleVisitor(getScope(),
+                                                            definition,
                                                             typesVisitor,
                                                             schemas,
                                                             schema,
@@ -76,7 +71,8 @@
             break;
         }
         case IDLTokenTypes.LITERAL_interface: {
-            PortTypeVisitor portTypeVisitor = new PortTypeVisitor(schemas,
+            PortTypeVisitor portTypeVisitor = new PortTypeVisitor(getScope(),
+                                                                  schemas,
                                                                   schema,
                                                                   typeMap,
                                                                   definition,
@@ -85,21 +81,24 @@
             break;
         }
         case IDLTokenTypes.LITERAL_exception: {
-            ExceptionVisitor exceptionVisitor = new ExceptionVisitor(schemas,
+            ExceptionVisitor exceptionVisitor = new ExceptionVisitor(getScope(),
+                                                                     schemas,
                                                                      schema,
                                                                      typeMap);
             exceptionVisitor.visit(node);
             break;
         }
         case IDLTokenTypes.LITERAL_const: {
-            ConstVisitor constVisitor = new ConstVisitor(schemas,
+            ConstVisitor constVisitor = new ConstVisitor(getScope(),
+                                                         schemas,
                                                          schema,
                                                          typeMap);
             constVisitor.visit(node);
             break;
         }
         default: {
-            TypeDclVisitor typeDclVisitor = new TypeDclVisitor(schemas,
+            TypeDclVisitor typeDclVisitor = new TypeDclVisitor(getScope(),
+                                                               schemas,
                                                                schema,
                                                                typeMap,
                                                                typesVisitor);
@@ -107,13 +106,5 @@
         }
         
         }
-    }
-    
-    public void setScope(String newScope) {
-        scope = newScope;
-    }
-    
-    public String getScope() {
-        return scope;
     }
 }

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=470379&r1=470378&r2=470379
==============================================================================
--- 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 Thu Nov  2 07:14:23 2006
@@ -39,12 +39,13 @@
 import org.apache.yoko.wsdl.CorbaConstants;
 import org.apache.yoko.wsdl.CorbaTypeImpl;
 
-public class EnumVisitor extends TypeSpecVisitorBase {
+public class EnumVisitor extends VisitorBase {
 
-    public EnumVisitor(XmlSchemaCollection xmlSchemas,
+    public EnumVisitor(Scope scope,
+                       XmlSchemaCollection xmlSchemas,
                        XmlSchema xmlSchema,
                        TypeMappingType typeMappingType) {
-        super(xmlSchemas, xmlSchema, typeMappingType);
+        super(scope, xmlSchemas, xmlSchema, typeMappingType);
     }
     
     public static boolean accept(AST 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=470379&r1=470378&r2=470379
==============================================================================
--- 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 Nov  2 07:14:23 2006
@@ -36,12 +36,13 @@
 
 import org.apache.yoko.wsdl.CorbaConstants;
 
-public class ExceptionVisitor extends TypesVisitorBase {
+public class ExceptionVisitor extends VisitorBase {
 
-    public ExceptionVisitor(XmlSchemaCollection xmlSchemas,
+    public ExceptionVisitor(Scope scope,
+                            XmlSchemaCollection xmlSchemas,
                             XmlSchema xmlSchema,
                             TypeMappingType typeMappingType) {
-        super(xmlSchemas, xmlSchema, typeMappingType);
+        super(scope, xmlSchemas, xmlSchema, typeMappingType);
     }
 
     public static boolean accept(AST node) {
@@ -130,7 +131,6 @@
         
         
         // add exception to corba typemap
-        TypeMappingType typeMap = getCorbaTypeMap();
         typeMap.getStructOrExceptionOrUnion().add(exception);
         
         setSchemaType(complexType);

Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/FixedVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/FixedVisitor.java?view=diff&rev=470379&r1=470378&r2=470379
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/FixedVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/FixedVisitor.java Thu Nov  2 07:14:23 2006
@@ -36,12 +36,13 @@
 
 import org.apache.yoko.wsdl.CorbaConstants;
 
-public class FixedVisitor extends TypeSpecVisitorBase {
+public class FixedVisitor extends VisitorBase {
 
-    public FixedVisitor(XmlSchemaCollection xmlSchemas,
-                       XmlSchema xmlSchema,
-                       TypeMappingType typeMappingType) {
-        super(xmlSchemas, xmlSchema, typeMappingType);
+    public FixedVisitor(Scope scope,
+                        XmlSchemaCollection xmlSchemas,
+                        XmlSchema xmlSchema,
+                        TypeMappingType typeMappingType) {
+        super(scope, xmlSchemas, xmlSchema, typeMappingType);
     }
     
     public static boolean accept(AST node) {

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=470379&r1=470378&r2=470379
==============================================================================
--- 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 Thu Nov  2 07:14:23 2006
@@ -29,24 +29,20 @@
 import org.apache.ws.commons.schema.XmlSchema;
 import org.apache.ws.commons.schema.XmlSchemaCollection;
 
-public class ModuleVisitor implements ASTVisitor {
+public class ModuleVisitor extends VisitorBase {
 
     private Definition definition;
     private TypesVisitor typesVisitor;
-    private XmlSchemaCollection schemas;
-    private XmlSchema schema;
-    private TypeMappingType typeMap;
     
-    public ModuleVisitor(Definition wsdlDefinition,
+    public ModuleVisitor(Scope scope,
+                         Definition wsdlDefinition,
                          TypesVisitor typeVisitor,
                          XmlSchemaCollection xmlSchemas,
                          XmlSchema xmlSchema,
                          TypeMappingType corbaTypeMap) {
+        super(scope, xmlSchemas, xmlSchema, corbaTypeMap);
         definition = wsdlDefinition;
         typesVisitor = typeVisitor;
-        schemas = xmlSchemas;
-        schema = xmlSchema;
-        typeMap = corbaTypeMap;
     }
     
     public void visit(AST node) {
@@ -56,13 +52,13 @@
         AST definitionNode = identifierNode.getNextSibling();
         
         while (definitionNode != null) {
-            DefinitionVisitor definitionVisitor = new DefinitionVisitor(definition,
+            DefinitionVisitor definitionVisitor = new DefinitionVisitor(new Scope(getScope(), identifierNode.toString()),
+                                                                        definition,
                                                                         typesVisitor,
                                                                         schemas,
                                                                         schema,
                                                                         typeMap);
 
-            definitionVisitor.setScope(identifierNode.toString());
             definitionVisitor.visit(definitionNode);
             
             definitionNode = definitionNode.getNextSibling();

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=470379&r1=470378&r2=470379
==============================================================================
--- 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 Nov  2 07:14:23 2006
@@ -54,7 +54,7 @@
 import org.apache.yoko.wsdl.CorbaConstants;
 import org.apache.yoko.wsdl.CorbaTypeImpl;
 
-public class OperationVisitor implements ASTVisitor {
+public class OperationVisitor extends VisitorBase {
 
     private static final String REQUEST_SUFFIX = "Request";
     private static final String RESPONSE_SUFFIX = "Response";
@@ -64,10 +64,6 @@
     private static final String INOUT_PARAMETER = "inoutparameter";
     private static final String RETURN_PARAMETER = "return";
     
-    private XmlSchemaCollection schemas;
-    private XmlSchema schema;
-    private TypeMappingType typeMap;
-    
     private Definition definition;
     private TypesVisitor typesVisitor;
     private ExtensionRegistry extReg;
@@ -82,16 +78,15 @@
     
     private OperationType corbaOperation;
     
-    public OperationVisitor(XmlSchemaCollection xmlSchemas,
+    public OperationVisitor(Scope scope,
+                            XmlSchemaCollection xmlSchemas,
                             XmlSchema xmlSchema,
                             TypeMappingType typeMapRef,
                             Definition wsdlDefinition,
                             TypesVisitor typeVisitor,
                             PortType wsdlPortType,
                             Binding wsdlBinding) {
-        schemas = xmlSchemas;
-        schema = xmlSchema;
-        typeMap = typeMapRef;
+        super(scope, xmlSchemas, xmlSchema, typeMapRef);
         definition = wsdlDefinition;
         typesVisitor = typeVisitor;
         extReg = definition.getExtensionRegistry();
@@ -164,7 +159,8 @@
         // <parameter_dcls>
         node = node.getNextSibling();
         while (ParamDclVisitor.accept(node)) {
-            ParamDclVisitor visitor = new ParamDclVisitor(schemas,
+            ParamDclVisitor visitor = new ParamDclVisitor(getScope(),
+                                                          schemas,
                                                           schema,
                                                           typeMap,
                                                           inputWrappingSequence,
@@ -330,7 +326,7 @@
             // nothing to do here, move along
             return;
         } else {
-            ParamTypeSpecVisitor visitor = new ParamTypeSpecVisitor(schemas, schema, typeMap);
+            ParamTypeSpecVisitor visitor = new ParamTypeSpecVisitor(getScope(), schemas, schema, typeMap);
             visitor.visit(node);
             
             XmlSchemaType schemaType = visitor.getSchemaType();

Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ParamDclVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ParamDclVisitor.java?view=diff&rev=470379&r1=470378&r2=470379
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ParamDclVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/ParamDclVisitor.java Thu Nov  2 07:14:23 2006
@@ -34,25 +34,20 @@
 
 import org.apache.yoko.wsdl.CorbaTypeImpl;
 
-public class ParamDclVisitor extends TypeSpecVisitorBase {
+public class ParamDclVisitor extends VisitorBase {
 
-    private XmlSchemaCollection schemas;
-    private XmlSchema schema;
-    private TypeMappingType typeMap;
     private XmlSchemaSequence inWrappingSequence; 
     private XmlSchemaSequence outWrappingSequence;
     private OperationType corbaOperation;
     
-    public ParamDclVisitor(XmlSchemaCollection xmlSchemas,
+    public ParamDclVisitor(Scope scope,
+                           XmlSchemaCollection xmlSchemas,
                            XmlSchema xmlSchema,
                            TypeMappingType corbaTypeMap,
                            XmlSchemaSequence inWrapSeq,
                            XmlSchemaSequence outWrapSeq,
                            OperationType corbaOp) {
-        super(xmlSchemas, xmlSchema, corbaTypeMap);
-        schemas = xmlSchemas;
-        schema = xmlSchema;
-        typeMap = corbaTypeMap;
+        super(scope, xmlSchemas, xmlSchema, corbaTypeMap);
         inWrappingSequence = inWrapSeq;
         outWrappingSequence = outWrapSeq;
         corbaOperation = corbaOp;
@@ -78,7 +73,7 @@
         AST typeNode = node.getFirstChild();
         AST nameNode = TypesUtils.getPrimitiveCorbaTypeNameNode(typeNode);
         
-        ParamTypeSpecVisitor visitor = new ParamTypeSpecVisitor(schemas, schema, typeMap);
+        ParamTypeSpecVisitor visitor = new ParamTypeSpecVisitor(getScope(), schemas, schema, typeMap);
         visitor.visit(typeNode);
         XmlSchemaType schemaType = visitor.getSchemaType();
         CorbaTypeImpl corbaType = visitor.getCorbaType();

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=470379&r1=470378&r2=470379
==============================================================================
--- 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 Thu Nov  2 07:14:23 2006
@@ -26,19 +26,13 @@
 import org.apache.ws.commons.schema.XmlSchema;
 import org.apache.ws.commons.schema.XmlSchemaCollection;
 
-public class ParamTypeSpecVisitor extends TypeSpecVisitorBase {
+public class ParamTypeSpecVisitor extends VisitorBase {
 
-    private XmlSchemaCollection schemas;
-    private XmlSchema schema;
-    private TypeMappingType typeMap;
-    
-    public ParamTypeSpecVisitor(XmlSchemaCollection xmlSchemas,
+    public ParamTypeSpecVisitor(Scope scope,
+                                XmlSchemaCollection xmlSchemas,
                                 XmlSchema xmlSchema,
                                 TypeMappingType corbaTypeMap) {
-        super(xmlSchemas, xmlSchema, corbaTypeMap);
-        schemas = xmlSchemas;
-        schema = xmlSchema;
-        typeMap = corbaTypeMap;
+        super(scope, xmlSchemas, xmlSchema, corbaTypeMap);
     }
 
     public void visit(AST node) {
@@ -48,21 +42,21 @@
         //                     | <scoped_name>
 
         
-        TypeSpecVisitor visitor = null;
+        Visitor visitor = null;
         
         
         if (PrimitiveTypesVisitor.accept(node)) {
             // base_type_spec
-            visitor = new PrimitiveTypesVisitor(schemas, schema, typeMap);
+            visitor = new PrimitiveTypesVisitor(getScope(), schemas, schema, typeMap);
             
         } else if (StringVisitor.accept(node)) {
             // string_type_spec
             // wstring_type_spec
-            visitor = new StringVisitor(schemas, schema, typeMap, false);
+            visitor = new StringVisitor(getScope(), schemas, schema, typeMap, false);
 
         } else if (ScopedNameVisitor.accept(schemas, schema, node)) {
             // scoped_name
-            visitor = new ScopedNameVisitor(schemas, schema, typeMap);
+            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=470379&r1=470378&r2=470379
==============================================================================
--- 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 Nov  2 07:14:23 2006
@@ -41,7 +41,7 @@
 
 import org.apache.yoko.wsdl.CorbaConstants;
 
-public class PortTypeVisitor implements ASTVisitor {   
+public class PortTypeVisitor extends VisitorBase {   
 
     Definition definition;
     ExtensionRegistry extReg;
@@ -50,18 +50,13 @@
     TypesVisitor typesVisitor;
     String module;
 
-    private XmlSchemaCollection schemas;
-    private XmlSchema schema;
-    private TypeMappingType typeMap;
-    
-    public PortTypeVisitor(XmlSchemaCollection xmlSchemas,
+    public PortTypeVisitor(Scope scope,
+                           XmlSchemaCollection xmlSchemas,
                            XmlSchema xmlSchema,
                            TypeMappingType corbaTypeMap,
                            Definition wsdlDefinition,
                            TypesVisitor typeVisitor) {
-        schemas = xmlSchemas;
-        schema = xmlSchema;
-        typeMap = corbaTypeMap;
+        super(scope, xmlSchemas, xmlSchema, corbaTypeMap);
         definition = wsdlDefinition;
         typesVisitor = typeVisitor;
         extReg = definition.getExtensionRegistry();
@@ -105,6 +100,8 @@
             interfaceName = module + "." + interfaceName;
         }
         
+        Scope interfaceScope = new Scope(getScope(), interfaceName);
+        
         portType = definition.createPortType();
         portType.setQName(new QName(definition.getTargetNamespace(), interfaceName));
         portType.setUndefined(false);
@@ -115,29 +112,37 @@
         while (exportNode != null) {
             
             if (TypeDclVisitor.accept(exportNode)) {
-                TypeDclVisitor visitor = new TypeDclVisitor(schemas,
+                TypeDclVisitor visitor = new TypeDclVisitor(interfaceScope,
+                                                            schemas,
                                                             schema,
                                                             typeMap,
                                                             typesVisitor);
                 visitor.visit(exportNode);
             } else if (ConstVisitor.accept(exportNode)) {
-                ConstVisitor visitor = new ConstVisitor(schemas,
+                ConstVisitor visitor = new ConstVisitor(interfaceScope,
+                                                        schemas,
                                                         schema,
                                                         typeMap);
                 visitor.visit(exportNode);
             } else if (ExceptionVisitor.accept(exportNode)) {
-                ExceptionVisitor visitor = new ExceptionVisitor(schemas,
+                ExceptionVisitor visitor = new ExceptionVisitor(interfaceScope,
+                                                                schemas,
                                                                 schema,
                                                                 typeMap);
                 visitor.visit(exportNode);
             } else if (AttributeVisitor.accept(exportNode)) {
-                AttributeVisitor attributeVisitor = new AttributeVisitor(definition,
+                AttributeVisitor attributeVisitor = new AttributeVisitor(interfaceScope,
+                                                                         schemas,
+                                                                         schema,
+                                                                         typeMap,
+                                                                         definition,
                                                                          typesVisitor,
                                                                          portType,
                                                                          binding);
                 attributeVisitor.visit(exportNode);                
             } else if (OperationVisitor.accept(schemas, schema, exportNode)) {
-                OperationVisitor visitor = new OperationVisitor(schemas,
+                OperationVisitor visitor = new OperationVisitor(interfaceScope,
+                                                                schemas,
                                                                 schema,
                                                                 typeMap,
                                                                 definition,

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=470379&r1=470378&r2=470379
==============================================================================
--- 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 Nov  2 07:14:23 2006
@@ -29,7 +29,7 @@
 import org.apache.ws.commons.schema.XmlSchema;
 import org.apache.ws.commons.schema.XmlSchemaCollection;
 
-public class PrimitiveTypesVisitor extends TypeSpecVisitorBase {
+public class PrimitiveTypesVisitor extends VisitorBase {
     
     private static final List<Integer> PRIMITIVE_TYPES = new ArrayList<Integer>();
 
@@ -49,10 +49,11 @@
         PRIMITIVE_TYPES.add(new Integer(IDLTokenTypes.LITERAL_any));
     }
 
-    public PrimitiveTypesVisitor(XmlSchemaCollection xmlSchemas,
+    public PrimitiveTypesVisitor(Scope scope,
+                                 XmlSchemaCollection xmlSchemas,
                                  XmlSchema xmlSchema,
                                  TypeMappingType typeMapRef) {
-        super(xmlSchemas, xmlSchema, typeMapRef);
+        super(scope, xmlSchemas, xmlSchema, typeMapRef);
     }
 
     public static boolean accept(AST node) {

Added: 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=auto&rev=470379
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/Scope.java (added)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/Scope.java Thu Nov  2 07:14:23 2006
@@ -0,0 +1,73 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+*/
+
+package org.apache.yoko.tools.processors.idl;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import antlr.collections.AST;
+
+public final class Scope {
+
+    private final static String SEPARATOR = ".";
+    private List<String> scope;
+    
+    public Scope() {
+        scope = new ArrayList<String>();
+    }
+    
+    public Scope(Scope containingScope) {
+        scope = new ArrayList<String>(containingScope.scope);
+    }
+    
+    public Scope(Scope containingScope, String str) {
+        scope = new ArrayList<String>(containingScope.scope);
+        scope.add(str);
+    }
+    
+    public Scope(Scope containingScope, AST node) {
+        scope = new ArrayList<String>(containingScope.scope);
+        if (node != null) { 
+            scope.add(node.toString());
+        }
+    }
+    
+    public String tail() {
+        int size = scope.size();
+        if (size > 0) {
+            return scope.get(size - 1);
+        } else {
+            return "";
+        }
+    }
+    
+    public String toString() {
+        StringBuffer result = new StringBuffer();
+        Iterator<String> it = scope.iterator();
+        while (it.hasNext()) {
+            result.append(it.next());
+            if (it.hasNext()) {
+                result.append(SEPARATOR);
+            }
+        }
+        return result.toString();
+    }
+}

Propchange: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/Scope.java
------------------------------------------------------------------------------
    svn:eol-style = native

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=470379&r1=470378&r2=470379
==============================================================================
--- 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 Nov  2 07:14:23 2006
@@ -26,19 +26,13 @@
 import org.apache.ws.commons.schema.XmlSchema;
 import org.apache.ws.commons.schema.XmlSchemaCollection;
 
-public class ScopedNameVisitor extends TypeSpecVisitorBase {
+public class ScopedNameVisitor extends VisitorBase {
 
-    private XmlSchemaCollection schemas;
-    private XmlSchema schema;
-    private TypeMappingType typeMap;
-    
-    public ScopedNameVisitor(XmlSchemaCollection xmlSchemas,
+    public ScopedNameVisitor(Scope scope,
+                             XmlSchemaCollection xmlSchemas,
                              XmlSchema xmlSchema,
                              TypeMappingType corbaTypeMap) {
-        super(xmlSchemas, xmlSchema, corbaTypeMap);
-        schemas = xmlSchemas;
-        schema = xmlSchema;
-        typeMap = corbaTypeMap;
+        super(scope, xmlSchemas, xmlSchema, corbaTypeMap);
     }
     
     public static boolean accept(XmlSchemaCollection schemas, XmlSchema schema, AST node) {

Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/SequenceVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/SequenceVisitor.java?view=diff&rev=470379&r1=470378&r2=470379
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/SequenceVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/SequenceVisitor.java Thu Nov  2 07:14:23 2006
@@ -23,6 +23,7 @@
 
 import antlr.collections.AST;
 
+import org.apache.schemas.yoko.bindings.corba.Anonsequence;
 import org.apache.schemas.yoko.bindings.corba.Sequence;
 import org.apache.schemas.yoko.bindings.corba.TypeMappingType;
 
@@ -34,13 +35,15 @@
 import org.apache.ws.commons.schema.XmlSchemaType;
 
 import org.apache.yoko.wsdl.CorbaConstants;
+import org.apache.yoko.wsdl.CorbaTypeImpl;
 
-public class SequenceVisitor extends TypeSpecVisitorBase {
+public class SequenceVisitor extends VisitorBase {
 
-    public SequenceVisitor(XmlSchemaCollection xmlSchemas,
+    public SequenceVisitor(Scope scope,
+                           XmlSchemaCollection xmlSchemas,
                            XmlSchema xmlSchema,
                            TypeMappingType typeMapRef) {
-        super(xmlSchemas, xmlSchema, typeMapRef);
+        super(scope, xmlSchemas, xmlSchema, typeMapRef);
     }
     
     public static boolean accept(AST node) {
@@ -51,52 +54,125 @@
     }
     
     public void visit(AST seq) {
-        //AST seq = node.getFirstChild();
-        AST node2 = seq.getFirstChild();
-        XmlSchemaType stype = TypesUtils.findType(schemas, schema, node2);
-        if (stype == null) {
-            //System.err.println("Couldn't find type: " + node2);
+        // <sequence_type> ::= "sequence" "<" <simple_type_spec> "," <positive_int_const> ">"
+        //                   | "sequence" "<" <simple_type_spec> ">"
+        
+        
+        AST simpleTypeSpecNode = seq.getFirstChild();
+        AST boundNode = simpleTypeSpecNode.getNextSibling();
+        AST identifierNode = seq.getNextSibling();        
+        
+        SimpleTypeSpecVisitor visitor = new SimpleTypeSpecVisitor(new Scope(getScope(), identifierNode),
+                                                                  schemas,
+                                                                  schema,
+                                                                  typeMap);
+        visitor.visit(simpleTypeSpecNode);
+        
+        XmlSchemaType stype = visitor.getSchemaType();
+        CorbaTypeImpl ctype = visitor.getCorbaType();
+        
+
+        long bound = -1;
+        if (boundNode != null) {
+            bound = Long.parseLong(boundNode.toString());
+        }
+
+        String name = null;
+        XmlSchemaType anonSchemaType = null;
+        if (identifierNode == null) {
+            // anonymous type
+            Integer id = 0;
+            do {
+                id++;
+                name = "_" + id.toString() + "_" + getScope().tail();
+                anonSchemaType = schema.getTypeByName(new QName(schema.getTargetNamespace(),
+                                                                name));
+            } while (anonSchemaType != null);
         } else {
-            long bound = -1;
-            if (node2.getNextSibling() != null) {
-                bound = Long.parseLong(node2.getNextSibling().toString());
-            }
-            node2 = seq.getNextSibling();
-            XmlSchemaComplexType ct = new XmlSchemaComplexType(getSchema());
-            String name = node2.toString();
-            ct.setName(name);
-            XmlSchemaSequence sequence = new XmlSchemaSequence();
-            XmlSchemaElement el = new XmlSchemaElement();
-            el.setName("item");
-            el.setMinOccurs(0);
-            if (bound != -1) {
-                el.setMaxOccurs(bound);
-            } else {
-                el.setMaxOccurs(Long.MAX_VALUE);
-            }
-            el.setSchemaTypeName(stype.getQName());
-            sequence.getItems().add(el);
-            ct.setParticle(sequence);
-
-            //create the corba sequence
-            Sequence corbaSeq = new Sequence();
-            if (bound == -1) {
-                bound = 0;
-            }                
-            corbaSeq.setBound(bound);
-            corbaSeq.setQName(new QName(typeMap.getTargetNamespace(), name));
-            corbaSeq.setType(ct.getQName());
-            corbaSeq.setElemtype(TypesUtils.findCorbaType(getCorbaTypeMap(), stype.getQName()).getQName());
-            corbaSeq.setRepositoryID(CorbaConstants.REPO_STRING
-                                     + name
-                                     + CorbaConstants.IDL_VERSION);
-
-            // add xmlschema:sequence
-            setSchemaType(ct); 
-            
-            // add corba:sequence
-            setCorbaType(corbaSeq);
+            name = identifierNode.toString();
         }
+
+        XmlSchemaType schemaType = generateSchemaType(stype, name, bound);
+
+        CorbaTypeImpl corbaType = null;
+        if (identifierNode == null) {
+            corbaType = generateCorbaAnonsequence(ctype,
+                                                  schemaType,
+                                                  name,
+                                                  bound);
+        } else {
+            corbaType = generateCorbaSequence(ctype,
+                                              schemaType,
+                                              name,
+                                              bound);
+        }
+
+
+        setSchemaType(schemaType); 
+        setCorbaType(corbaType);
+    }
+
+    private XmlSchemaType generateSchemaType(XmlSchemaType stype, String name, long bound) {
+        //XmlSchemaComplexType ct = new XmlSchemaComplexType(getSchema());
+        XmlSchemaComplexType ct = new XmlSchemaComplexType(schema);
+        ct.setName(name);
+        XmlSchemaSequence sequence = new XmlSchemaSequence();
+        XmlSchemaElement el = new XmlSchemaElement();
+        el.setName("item");
+        el.setMinOccurs(0);
+        if (bound != -1) {
+            el.setMaxOccurs(bound);
+        } else {
+            el.setMaxOccurs(Long.MAX_VALUE);
+        }
+        el.setSchemaTypeName(stype.getQName());
+        sequence.getItems().add(el);
+        ct.setParticle(sequence);
+        return ct;
+    }
+    
+    private CorbaTypeImpl generateCorbaSequence(CorbaTypeImpl ctype,
+                                                XmlSchemaType schemaType,
+                                                String name,
+                                                long bound) {
+        //create the corba sequence
+        Sequence corbaSeq = new Sequence();
+        if (bound == -1) {
+            bound = 0;
+        }                
+        corbaSeq.setBound(bound);
+        corbaSeq.setQName(new QName(typeMap.getTargetNamespace(), name));
+        corbaSeq.setType(schemaType.getQName());
+        corbaSeq.setElemtype(ctype.getQName());
+        corbaSeq.setRepositoryID(CorbaConstants.REPO_STRING
+                                 + name
+                                 + CorbaConstants.IDL_VERSION);
+
+        return corbaSeq;
+    }
+
+    private Anonsequence generateCorbaAnonsequence(CorbaTypeImpl ctype,
+                                                   XmlSchemaType schemaType,
+                                                   String name,
+                                                   long bound) {
+        // create corba anonsequence
+        Anonsequence result = new Anonsequence();
+        if (bound == -1) {
+            bound = 0;
+        }                
+        result.setBound(bound);
+        result.setQName(new QName(typeMap.getTargetNamespace(), name));
+        result.setType(schemaType.getQName());
+        result.setElemtype(ctype.getQName());
+
+        // add schemaType
+        schema.getItems().add(schemaType);
+        schema.addType(schemaType);
+
+        // add corbaType
+        typeMap.getStructOrExceptionOrUnion().add(result);
+        
+        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=470379&r1=470378&r2=470379
==============================================================================
--- 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 Nov  2 07:14:23 2006
@@ -26,19 +26,13 @@
 import org.apache.ws.commons.schema.XmlSchema;
 import org.apache.ws.commons.schema.XmlSchemaCollection;
 
-public class SimpleTypeSpecVisitor extends TypeSpecVisitorBase {
+public class SimpleTypeSpecVisitor extends VisitorBase {
 
-    private XmlSchemaCollection schemas;
-    private XmlSchema schema;
-    private TypeMappingType typeMap;
-    
-    public SimpleTypeSpecVisitor(XmlSchemaCollection xmlSchemas,
+    public SimpleTypeSpecVisitor(Scope scope,
+                                 XmlSchemaCollection xmlSchemas,
                                  XmlSchema xmlSchema,
                                  TypeMappingType corbaTypeMap) {
-        super(xmlSchemas, xmlSchema, corbaTypeMap);
-        schemas = xmlSchemas;
-        schema = xmlSchema;
-        typeMap = corbaTypeMap;
+        super(scope, xmlSchemas, xmlSchema, corbaTypeMap);
     }
 
     public static boolean accept(AST node) {
@@ -54,20 +48,20 @@
         //                      | <scoped_name>
 
         
-        TypeSpecVisitor visitor = null;
+        Visitor visitor = null;
         
         
         if (PrimitiveTypesVisitor.accept(node)) {
             // simple_type_spec - base_type_spec
-            visitor = new PrimitiveTypesVisitor(schemas, schema, typeMap);
+            visitor = new PrimitiveTypesVisitor(getScope(), schemas, schema, typeMap);
             
         } else if (TemplateTypeSpecVisitor.accept(node)) {
             // simple_type_spec - template_type_spec
-            visitor = new TemplateTypeSpecVisitor(schemas, schema, typeMap);
+            visitor = new TemplateTypeSpecVisitor(getScope(), schemas, schema, typeMap);
 
         } else if (ScopedNameVisitor.accept(schemas, schema, node)) {
             // simple_type_spec - scoped_name
-            visitor = new ScopedNameVisitor(schemas, schema, typeMap);
+            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=470379&r1=470378&r2=470379
==============================================================================
--- 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 Nov  2 07:14:23 2006
@@ -39,23 +39,24 @@
 import org.apache.yoko.wsdl.CorbaConstants;
 import org.apache.yoko.wsdl.CorbaTypeImpl;
 
-public class StringVisitor extends TypeSpecVisitorBase {
+public class StringVisitor extends VisitorBase {
 
     private AST stringNode;
     private AST boundNode;
-    private AST typeNameNode;
+    private AST identifierNode;
     private String stringName;
     
     private boolean declarationMode;
     
-    public StringVisitor(XmlSchemaCollection xmlSchemas,
+    public StringVisitor(Scope scope,
+                         XmlSchemaCollection xmlSchemas,
                          XmlSchema xmlSchema,
                          TypeMappingType typeMappingType,
                          boolean mode) {
-        super(xmlSchemas, xmlSchema, typeMappingType);
+        super(scope, xmlSchemas, xmlSchema, typeMappingType);
         stringNode = null;
         boundNode = null;
-        typeNameNode = null;
+        identifierNode = null;
         stringName = null;
         declarationMode = mode;
     }
@@ -77,8 +78,8 @@
         
         stringNode = node;
         boundNode = stringNode.getFirstChild();
-        typeNameNode = stringNode.getNextSibling();
-        stringName = new String(typeNameNode.toString());
+        identifierNode = stringNode.getNextSibling();
+        stringName = getIdentifier(identifierNode);
         
         if (boundNode != null) {
             // bounded string/wstring
@@ -149,7 +150,8 @@
     }
     
     private void visitUnboundedString() {
-        if (declarationMode) {
+        if (declarationMode
+            && stringName != null) {
             // xmlschema:simpleType
             XmlSchemaSimpleType simpleType = new XmlSchemaSimpleType(schema);
             simpleType.setName(stringName);
@@ -180,7 +182,6 @@
             setCorbaType(alias);
 
         } else {
-
             setSchemaType(schemas.getTypeByQName(Constants.XSD_STRING));
 
             CorbaTypeImpl corbaString = new CorbaTypeImpl();
@@ -194,11 +195,47 @@
                 // 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);
-
         }
     }
     
+    private String getIdentifier(AST typeNode) {
+        String result = null;
+        if (identifierNode != null) {
+            String identifierName = identifierNode.toString();
+            if (isValidIdentifier(identifierName)) {
+                result = identifierName;
+            }
+        }
+        return result;
+    }
+    
+    private boolean isValidIdentifier(String id) {
+        boolean result = true;
+        // From the CORBA IDL spec (section 3.2.3):
+        //   An identifier is an arbitrarily long sequence of ASCII alphabetic, digit,
+        //   and underscore ("_") characters. The first character must be an ASCII 
+        //   alphabetic character. All characters are significant.
+        //
+        // See section 3.2.3.1 for escaped identifiers (that start with a "_")
+        //
+        if (!Character.isLetter(id.charAt(0))) {
+            result = false;
+        }
+        if (id.charAt(0) == '_') {
+            result = false;
+        }
+        int index = 1;
+        while (result && index < id.length()) {
+            char cur = id.charAt(index);
+            if (!Character.isLetterOrDigit(cur)
+                || cur == '_') {
+                result = false;
+            }
+            index++;
+        }
+        return result;
+    }
 }

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=470379&r1=470378&r2=470379
==============================================================================
--- 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 Nov  2 07:14:23 2006
@@ -37,12 +37,13 @@
 import org.apache.yoko.wsdl.CorbaConstants;
 import org.apache.yoko.wsdl.CorbaTypeImpl;
 
-public class StructVisitor extends TypeSpecVisitorBase {
+public class StructVisitor extends VisitorBase {
     
-    public StructVisitor(XmlSchemaCollection xmlSchemas,
+    public StructVisitor(Scope scope,
+                         XmlSchemaCollection xmlSchemas,
                          XmlSchema xmlSchema,
                          TypeMappingType typeMappingType) {
-        super(xmlSchemas, xmlSchema, typeMappingType);
+        super(scope, xmlSchemas, xmlSchema, typeMappingType);
     }
 
     public static boolean accept(AST node) {
@@ -57,10 +58,10 @@
         // <member_list> ::= <member>+
         // <member> ::= <type_spec> <declarators> ";"
         
-        AST structNode = node.getFirstChild();
+        AST identifierNode = node.getFirstChild();
         
         // xmlschema:struct
-        String structName = structNode.toString();
+        String structName = identifierNode.toString();
         XmlSchemaComplexType complexType = new XmlSchemaComplexType(schema);
         complexType.setName(structName);
         XmlSchemaSequence sequence = new XmlSchemaSequence();
@@ -77,7 +78,7 @@
 
         
         // struct members
-        AST memberTypeNode = structNode.getNextSibling();
+        AST memberTypeNode = identifierNode.getNextSibling();
         while (memberTypeNode != null) {
             AST memberNode = memberTypeNode.getNextSibling();
 
@@ -86,9 +87,9 @@
             String memberName = memberNode.toString();
             member.setName(memberName);
             // type
-            XmlSchemaType type = TypesUtils.findType(schemas, schema, memberTypeNode);
-            member.setSchemaType(type);
-            member.setSchemaTypeName(type.getQName());
+            XmlSchemaType schemaType = TypesUtils.findType(schemas, schema, memberTypeNode);
+            member.setSchemaType(schemaType);
+            member.setSchemaTypeName(schemaType.getQName());
 
             sequence.getItems().add(member);
 
@@ -96,19 +97,54 @@
             // corba:member
             MemberType memberType = new MemberType();
             memberType.setName(memberName);
-            QName idlType = TypesUtils.findCorbaType(typeMap, type.getQName()).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) {
+//                
+//            }
+//
+//            // 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(structNode, schemaType, corbaType);
+        declaratorVisitor.visit(identifierNode, schemaType, corbaType);
 
         // REVISIT: are there assignment needed?
         setSchemaType(complexType);

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=470379&r1=470378&r2=470379
==============================================================================
--- 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 Nov  2 07:14:23 2006
@@ -26,19 +26,13 @@
 import org.apache.ws.commons.schema.XmlSchema;
 import org.apache.ws.commons.schema.XmlSchemaCollection;
 
-public class TemplateTypeSpecVisitor extends TypeSpecVisitorBase {
-
-    private XmlSchemaCollection schemas;
-    private XmlSchema schema;
-    private TypeMappingType typeMap;
+public class TemplateTypeSpecVisitor extends VisitorBase {
     
-    public TemplateTypeSpecVisitor(XmlSchemaCollection xmlSchemas,
+    public TemplateTypeSpecVisitor(Scope scope,
+                                   XmlSchemaCollection xmlSchemas,
                                    XmlSchema xmlSchema,
                                    TypeMappingType corbaTypeMap) {
-        super(xmlSchemas, xmlSchema, corbaTypeMap);
-        schemas = xmlSchemas;
-        schema = xmlSchema;
-        typeMap = corbaTypeMap;
+        super(scope, xmlSchemas, xmlSchema, corbaTypeMap);
     }
 
     public static boolean accept(AST node) {
@@ -56,18 +50,18 @@
         //                        | <fixed_pt_type>
 
 
-        TypeSpecVisitor visitor = null;
+        Visitor visitor = null;
         
         if (SequenceVisitor.accept(node)) {
             // <sequence_type>
-            visitor = new SequenceVisitor(schemas, schema, typeMap);
+            visitor = new SequenceVisitor(getScope(), schemas, schema, typeMap);
         } else if (StringVisitor.accept(node)) {
             // <string_type>
             // <wstring_type>
-            visitor = new StringVisitor(schemas, schema, typeMap, true);
+            visitor = new StringVisitor(getScope(), schemas, schema, typeMap, true);
         } else if (FixedVisitor.accept(node)) {
             // <fixed_pt_type>
-            visitor = new FixedVisitor(schemas, schema, typeMap);
+            visitor = new FixedVisitor(getScope(), schemas, schema, typeMap);
         }
 
         visitor.visit(node);

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=470379&r1=470378&r2=470379
==============================================================================
--- 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 Nov  2 07:14:23 2006
@@ -26,22 +26,16 @@
 import org.apache.ws.commons.schema.XmlSchema;
 import org.apache.ws.commons.schema.XmlSchemaCollection;
 
-public class TypeDclVisitor {
+public class TypeDclVisitor extends VisitorBase {
 
-//    private Definition definition;
-    private XmlSchemaCollection schemas;
-    private XmlSchema schema;
-    private TypeMappingType typeMap;
     private TypesVisitor typesVisitor;
     
-    public TypeDclVisitor(XmlSchemaCollection xmlSchemas,
+    public TypeDclVisitor(Scope scope,
+                          XmlSchemaCollection xmlSchemas,
                           XmlSchema xmlSchema,
                           TypeMappingType corbaTypeMap,
                           TypesVisitor typesVisitorRef) {
-//        definition = wsdlDefinition;
-        schemas = xmlSchemas;
-        schema = xmlSchema;
-        typeMap = corbaTypeMap;
+        super(scope, xmlSchemas, xmlSchema, corbaTypeMap);
         typesVisitor = typesVisitorRef;
     }
     
@@ -62,20 +56,20 @@
         //              | "native" <simple_declarator>
         //              | <constr_forward_decl>
 
-        TypeSpecVisitor visitor = null;
+        Visitor visitor = null;
         
         if (TypedefVisitor.accept(node)) {
             // "typedef" <type_declarator>
-            visitor = new TypedefVisitor(schemas, schema, typeMap, typesVisitor);
+            visitor = new TypedefVisitor(getScope(), schemas, schema, typeMap, typesVisitor);
         } else if (StructVisitor.accept(node)) {
             // <struct_type>
-            visitor = new StructVisitor(schemas, schema, typeMap);
+            visitor = new StructVisitor(getScope(), schemas, schema, typeMap);
         } else if (UnionVisitor.accept(node)) {
             // <union_type>
-            visitor = new UnionVisitor(schemas, schema, typeMap);
+            visitor = new UnionVisitor(getScope(), schemas, schema, typeMap);
         } else if (EnumVisitor.accept(node)) {
             // <enum_type>
-            visitor = new EnumVisitor(schemas, schema, typeMap);
+            visitor = new EnumVisitor(getScope(), schemas, schema, typeMap);
         } else if (node.getType() == IDLTokenTypes.LITERAL_native) {
             // "native" <simple_declarator>
             //

Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/TypeSpecVisitorBase.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/TypeSpecVisitorBase.java?view=diff&rev=470379&r1=470378&r2=470379
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/TypeSpecVisitorBase.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/TypeSpecVisitorBase.java Thu Nov  2 07:14:23 2006
@@ -51,16 +51,6 @@
 
     public abstract void visit(AST node);
     
-    // REVISIT: what's the point of getter method for protected member?
-    public XmlSchema getSchema() {
-        return schema;
-    }
-    
-    // REVISIT: what's the point of getter method for protected member?
-    public TypeMappingType getCorbaTypeMap() {
-        return typeMap;
-    }
-    
     protected void setSchemaType(XmlSchemaType type) {
         schemaType = type;
     }

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=470379&r1=470378&r2=470379
==============================================================================
--- 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 Nov  2 07:14:23 2006
@@ -35,15 +35,16 @@
 import org.apache.yoko.wsdl.CorbaConstants;
 import org.apache.yoko.wsdl.CorbaTypeImpl;
 
-public class TypedefVisitor extends TypeSpecVisitorBase {
+public class TypedefVisitor extends VisitorBase {
 
     private TypesVisitor typesVisitor;
     
-    public TypedefVisitor(XmlSchemaCollection xmlSchemas,
+    public TypedefVisitor(Scope scope,
+                          XmlSchemaCollection xmlSchemas,
                           XmlSchema xmlSchema,
                           TypeMappingType typeMappingType,
                           TypesVisitor typesVisitorRef) {
-        super(xmlSchemas, xmlSchema, typeMappingType);
+        super(scope, xmlSchemas, xmlSchema, typeMappingType);
         typesVisitor = typesVisitorRef;
     }
     

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=470379&r1=470378&r2=470379
==============================================================================
--- 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 Nov  2 07:14:23 2006
@@ -42,32 +42,22 @@
 import org.apache.ws.commons.schema.XmlSchemaSequence;
 import org.apache.ws.commons.schema.XmlSchemaSerializer;
 
-public class TypesVisitor extends TypeSpecVisitorBase {
+public class TypesVisitor extends VisitorBase {
     
     static final int PRIMITIVE = 0;
-
-    TypeMappingType typeMap;
-
-    Definition definition;
     
-    XmlSchema schema;
-    XmlSchemaCollection schemas;
     XmlSchemaObject currentType;
 
     ArgType currentParam;
 
     List<String> parts = new ArrayList<String>();
 
-    public TypesVisitor(XmlSchemaCollection xmlSchemas,
+    public TypesVisitor(Scope scope,
+                        XmlSchemaCollection xmlSchemas,
                         XmlSchema xmlSchema,
-                        TypeMappingType corbaTypeMap,
-                        Definition wsdlDefinition)
+                        TypeMappingType corbaTypeMap)
         throws WSDLException {
-        super(xmlSchemas, xmlSchema, corbaTypeMap);
-        definition = wsdlDefinition;
-        schema = xmlSchema;
-        schemas = xmlSchemas;
-        typeMap = corbaTypeMap;
+        super(scope, xmlSchemas, xmlSchema, corbaTypeMap);
     }
 
     // REVISIT: remove this method
@@ -86,7 +76,7 @@
         return typeMap;
     }
     
-    public void attachSchema() throws Exception {
+    public void attachSchema(Definition definition) throws Exception {
         Types types = definition.createTypes();
         Schema wsdlSchema = (Schema) 
             definition.getExtensionRegistry().createExtension(Types.class,
@@ -144,15 +134,15 @@
         // <type_spec> ::= <simple_type_spec>
         //               | <constr_type_spec>
 
-        TypeSpecVisitor visitor = null;
+        Visitor visitor = null;
         
         
         if (ConstrTypeSpecVisitor.accept(node)) {
             // type_spec - constr_type_spec
-            visitor = new ConstrTypeSpecVisitor(schemas, schema, typeMap);
+            visitor = new ConstrTypeSpecVisitor(getScope(), schemas, schema, typeMap);
         } else if (SimpleTypeSpecVisitor.accept(node)) {
             // type_spec - simple_type_spec
-            visitor = new SimpleTypeSpecVisitor(schemas, schema, typeMap);
+            visitor = new SimpleTypeSpecVisitor(getScope(), schemas, schema, typeMap);
         } else if (visitor == null) {
             // REVISIT: !!!!!
             // This is ugly. It should be done in the SimpleTypeSpecVisitor.accept(node) method.
@@ -166,7 +156,7 @@
             // 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);
+            visitor = new ScopedNameVisitor(getScope(), schemas, schema, typeMap);
         }
         
         visitor.visit(node);

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=470379&r1=470378&r2=470379
==============================================================================
--- 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 Thu Nov  2 07:14:23 2006
@@ -39,14 +39,15 @@
 import org.apache.yoko.wsdl.CorbaConstants;
 import org.apache.yoko.wsdl.CorbaTypeImpl;
 
-public class UnionVisitor extends TypeSpecVisitorBase {
+public class UnionVisitor extends VisitorBase {
 
     private final String discriminator = "discriminator";
     
-    public UnionVisitor(XmlSchemaCollection xmlSchemas,
-                       XmlSchema xmlSchema,
-                       TypeMappingType typeMappingType) {
-        super(xmlSchemas, xmlSchema, typeMappingType);
+    public UnionVisitor(Scope scope,
+                        XmlSchemaCollection xmlSchemas,
+                        XmlSchema xmlSchema,
+                        TypeMappingType typeMappingType) {
+        super(scope, xmlSchemas, xmlSchema, typeMappingType);
     }
     
     public static boolean accept(AST node) {

Added: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/Visitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/Visitor.java?view=auto&rev=470379
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/Visitor.java (added)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/Visitor.java Thu Nov  2 07:14:23 2006
@@ -0,0 +1,36 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+*/
+
+package org.apache.yoko.tools.processors.idl;
+
+import antlr.collections.AST;
+
+import org.apache.ws.commons.schema.XmlSchemaType;
+
+import org.apache.yoko.wsdl.CorbaTypeImpl;
+
+public interface Visitor {
+
+    void visit(AST node);
+    
+    XmlSchemaType getSchemaType();
+    CorbaTypeImpl getCorbaType();
+
+    Scope getScope();
+}

Propchange: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/Visitor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/VisitorBase.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/VisitorBase.java?view=auto&rev=470379
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/VisitorBase.java (added)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/VisitorBase.java Thu Nov  2 07:14:23 2006
@@ -0,0 +1,83 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+*/
+
+package org.apache.yoko.tools.processors.idl;
+
+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.yoko.wsdl.CorbaTypeImpl;
+
+public abstract class VisitorBase implements Visitor {
+
+    protected XmlSchema schema;
+    protected XmlSchemaCollection schemas;
+    protected TypeMappingType typeMap;
+
+    private XmlSchemaType schemaType;
+    private CorbaTypeImpl corbaType;
+    private Scope scope;
+    
+    public VisitorBase(Scope scopeRef,
+                       XmlSchemaCollection xmlSchemas,
+                       XmlSchema xmlSchema,
+                       TypeMappingType typeMapRef) {
+        schemas = xmlSchemas;
+        schema = xmlSchema;
+        typeMap = typeMapRef;
+        
+        scope = scopeRef; 
+        
+        schemaType = null;
+        corbaType = null;
+    }
+
+    public abstract void visit(AST node);
+    
+    protected void setSchemaType(XmlSchemaType type) {
+        schemaType = type;
+    }
+    
+    public XmlSchemaType getSchemaType() {
+        if (schemaType == null) {
+            throw new RuntimeException("Schema type is null! "
+                                       + "Method visit() must be called before getSchemaType()");
+        }
+        return schemaType;
+    }
+    
+    protected void setCorbaType(CorbaTypeImpl type) {
+        corbaType = type;
+    }
+    
+    public CorbaTypeImpl getCorbaType() {
+        if (corbaType == null) {
+            throw new RuntimeException("Corba type is null! "
+                                       + "Method visit() must be called before getCorbaType()");
+        }
+        return corbaType;        
+    }
+    
+    public Scope getScope() {
+        return scope;
+    }
+}

Propchange: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/VisitorBase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/WSDLASTVisitor.java
URL: http://svn.apache.org/viewvc/incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/WSDLASTVisitor.java?view=diff&rev=470379&r1=470378&r2=470379
==============================================================================
--- incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/WSDLASTVisitor.java (original)
+++ incubator/yoko/branches/idltowsdl_anon_refactor/tools/src/main/java/org/apache/yoko/tools/processors/idl/WSDLASTVisitor.java Thu Nov  2 07:14:23 2006
@@ -73,14 +73,16 @@
         
         createCorbaTypeMap();
         
-        typesVisitor = new TypesVisitor(schemas, schema, typeMap, definition);
+        // REVISIT why is typesVisitor created here????
+        typesVisitor = new TypesVisitor(new Scope(), schemas, schema, typeMap);
     }
 
     public void visit(AST node) {
         // <specification> ::= <definition>+
 
         while (node != null) {
-            DefinitionVisitor definitionVisitor = new DefinitionVisitor(definition,
+            DefinitionVisitor definitionVisitor = new DefinitionVisitor(new Scope(),
+                                                                        definition,
                                                                         typesVisitor,
                                                                         schemas,
                                                                         schema,
@@ -91,7 +93,7 @@
         }
         
         try {
-            typesVisitor.attachSchema();
+            typesVisitor.attachSchema(definition);
         } catch (Exception ex) {
             throw new RuntimeException(ex);
         }