You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by bi...@apache.org on 2010/10/17 04:26:08 UTC

svn commit: r1023402 [5/9] - in /cxf/trunk: api/src/main/java/org/apache/cxf/databinding/ api/src/main/java/org/apache/cxf/service/model/ common/common/src/main/java/org/apache/cxf/common/xmlschema/ common/common/src/test/java/org/apache/cxf/common/xml...

Modified: cxf/trunk/tools/corba/src/main/java/org/apache/cxf/tools/corba/processors/idl/AttributeVisitor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/tools/corba/src/main/java/org/apache/cxf/tools/corba/processors/idl/AttributeVisitor.java?rev=1023402&r1=1023401&r2=1023402&view=diff
==============================================================================
--- cxf/trunk/tools/corba/src/main/java/org/apache/cxf/tools/corba/processors/idl/AttributeVisitor.java (original)
+++ cxf/trunk/tools/corba/src/main/java/org/apache/cxf/tools/corba/processors/idl/AttributeVisitor.java Sun Oct 17 02:26:06 2010
@@ -58,11 +58,11 @@ public class AttributeVisitor extends Vi
     private static final String PART_NAME         = "parameters";
     private static final String PARAM_NAME        = "_arg";
     private static final String RETURN_PARAM_NAME = "return";
-    
+
     private ExtensionRegistry   extReg;
     private PortType            portType;
     private Binding             binding;
-    
+
     public AttributeVisitor(Scope scope,
                             Definition defn,
                             XmlSchema schemaRef,
@@ -74,7 +74,7 @@ public class AttributeVisitor extends Vi
         portType = wsdlPortType;
         binding = wsdlBinding;
     }
-    
+
     public static boolean accept(AST node) {
         if (node.getType() == IDLTokenTypes.LITERAL_readonly
             || node.getType() == IDLTokenTypes.LITERAL_attribute) {
@@ -82,18 +82,18 @@ public class AttributeVisitor extends Vi
         }
         return false;
     }
-    
+
     public void visit(AST attributeNode) {
         // <attr_dcl> ::= ["readonly"] "attribute" <param_type_spec> <simple_declarator>
         //                {"," <simple_declarator>}*
-        
-        
+
+
         AST node = attributeNode.getFirstChild();
-        
+
         AST readonlyNode = null;
         AST typeNode = null;
         AST nameNode = null;
-        
+
         if (node.getType() == IDLTokenTypes.LITERAL_readonly) {
             readonlyNode = node;
             typeNode = readonlyNode.getNextSibling();
@@ -115,15 +115,15 @@ public class AttributeVisitor extends Vi
 
     private void generateGetter(AST typeNode, AST nameNode) {
         // generate wrapped doc element in parameter
-        XmlSchemaElement inParameters = 
+        XmlSchemaElement inParameters =
             generateWrappedDocElement(null,
                                       GETTER_PREFIX + nameNode.toString(),
                                       PARAM_NAME);
         // generate wrapped doc element out parameter
-        XmlSchemaElement outParameters = 
+        XmlSchemaElement outParameters =
             generateWrappedDocElement(typeNode,
                                       GETTER_PREFIX + nameNode.toString() + RESULT_POSTFIX,
-                                      RETURN_PARAM_NAME);                                      
+                                      RETURN_PARAM_NAME);
 
         // generate input message
         Message inMsg = generateMessage(inParameters,
@@ -131,25 +131,25 @@ public class AttributeVisitor extends Vi
         // generate output message
         Message outMsg = generateMessage(outParameters,
                                          GETTER_PREFIX + nameNode.toString() + RESPONSE_POSTFIX);
-        
+
         // generate operation
         String name = GETTER_PREFIX + nameNode.toString();
         Operation op = generateOperation(name, inMsg, outMsg);
-        
-        
+
+
         // generate corba return param
         ArgType corbaReturn = generateCorbaReturnParam(typeNode);
-        
+
         // generate corba operation
         OperationType corbaOp = generateCorbaOperation(op, null, corbaReturn);
-        
+
         // generate binding
         generateCorbaBindingOperation(binding, op, corbaOp);
     }
 
     private void generateSetter(AST typeNode, AST nameNode) {
         // generate wrapped doc element in parameter
-        XmlSchemaElement inParameters = 
+        XmlSchemaElement inParameters =
             generateWrappedDocElement(typeNode,
                                       SETTER_PREFIX + nameNode.toString(),
                                       PARAM_NAME);
@@ -158,31 +158,31 @@ public class AttributeVisitor extends Vi
             generateWrappedDocElement(null,
                                       SETTER_PREFIX + nameNode.toString() + RESULT_POSTFIX,
                                       RETURN_PARAM_NAME);
-        
+
         // generate input message
         Message inMsg = generateMessage(inParameters,
                                         SETTER_PREFIX + nameNode.toString());
         // generate output message
         Message outMsg = generateMessage(outParameters,
                                          SETTER_PREFIX + nameNode.toString() + RESPONSE_POSTFIX);
-        
+
         // generate operation
         String name = SETTER_PREFIX + nameNode.toString();
         Operation op = generateOperation(name, inMsg, outMsg);
-        
-        
+
+
         // generate corba return param
         ParamType corbaParam = generateCorbaParam(typeNode);
-        
+
         // generate corba operation
         OperationType corbaOp = generateCorbaOperation(op, corbaParam, null);
-        
+
         // generate binding
         generateCorbaBindingOperation(binding, op, corbaOp);
     }
-    
+
     /** Generate a wrapped doc style XmlSchemaElement containing one element.
-     * 
+     *
      * I.e.: generateWrappedDocElement(null, "foo", "bar");
      * <xs:element name="foo">
      *   <xs:complexType>
@@ -190,7 +190,7 @@ public class AttributeVisitor extends Vi
      *     </xs:sequence>
      *   </xs:complexType>
      * </xs:element>
-     * 
+     *
      * i.e.: generateWrappedDocElement(type, "foo", "bar");
      * <xs:element name="foo">
      *   <xs:complexType>
@@ -201,15 +201,15 @@ public class AttributeVisitor extends Vi
      *   </xs:complexType>
      * </xs:element>
 
-     * 
+     *
      * @param typeNode is the type of the element wrapped in the sequence, no element is created if null.
      * @param name is the name of the wrapping element.
      * @param paramName is the name of the  wrapping element.
      * @return the wrapping element.
      */
-    private XmlSchemaElement generateWrappedDocElement(AST typeNode, String name, 
+    private XmlSchemaElement generateWrappedDocElement(AST typeNode, String name,
                                                        String paramName) {
-        XmlSchemaElement element = new XmlSchemaElement();
+        XmlSchemaElement element = new XmlSchemaElement(schema, false);
         if (typeNode != null) {
             ParamTypeSpecVisitor visitor = new ParamTypeSpecVisitor(getScope(),
                                                                     definition,
@@ -218,7 +218,7 @@ public class AttributeVisitor extends Vi
             visitor.visit(typeNode);
             XmlSchemaType stype = visitor.getSchemaType();
             Scope fqName = visitor.getFullyQualifiedName();
-            
+
             if (stype != null) {
                 element.setSchemaTypeName(stype.getQName());
                 if (stype.getQName().equals(ReferenceConstants.WSADDRESSING_TYPE)) {
@@ -226,63 +226,62 @@ public class AttributeVisitor extends Vi
                 }
             } else {
                 wsdlVisitor.getDeferredActions().
-                    add(fqName, new AttributeDeferredAction(element)); 
+                    add(fqName, new AttributeDeferredAction(element));
             }
-            
+
             element.setName(paramName);
         }
-        
+
         XmlSchemaSequence sequence = new XmlSchemaSequence();
         if (typeNode != null) {
             sequence.getItems().add(element);
         }
-        
-        XmlSchemaComplexType complex = new XmlSchemaComplexType(schema);
+
+        XmlSchemaComplexType complex = new XmlSchemaComplexType(schema, false);
         complex.setParticle(sequence);
-        
-        XmlSchemaElement result = new XmlSchemaElement();
+
+        XmlSchemaElement result = new XmlSchemaElement(schema, true);
         result.setName(name);
-        result.setQName(new QName(definition.getTargetNamespace(), name));
         result.setSchemaType(complex);
 
-        
+
         schema.getItems().add(result);
-        
+
         return result;
     }
-    
+
     private Message generateMessage(XmlSchemaElement element, String name) {
         Part part = definition.createPart();
         part.setName(PART_NAME);
         part.setElementName(element.getQName());
-        
+
         Message result = definition.createMessage();
         result.setQName(new QName(definition.getTargetNamespace(), name));
         result.addPart(part);
         result.setUndefined(false);
-        
+
         definition.addMessage(result);
-        
+
         return result;
     }
-    
+
     private Operation generateOperation(String name, Message inputMsg, Message outputMsg) {
         Input input = definition.createInput();
         input.setName(inputMsg.getQName().getLocalPart());
         input.setMessage(inputMsg);
-        
+
         Output output = definition.createOutput();
         output.setName(outputMsg.getQName().getLocalPart());
         output.setMessage(outputMsg);
-        
+
         Operation result = definition.createOperation();
         result.setName(name);
         result.setInput(input);
         result.setOutput(output);
         result.setUndefined(false);
-        
+
         portType.addOperation(result);
-        
+
         return result;
     }
 
@@ -296,22 +295,22 @@ public class AttributeVisitor extends Vi
                                                                 wsdlVisitor);
         visitor.visit(type);
         CorbaTypeImpl corbaType = visitor.getCorbaType();
-        
+
         if (corbaType != null) {
             param.setIdltype(corbaType.getQName());
         } else {
             wsdlVisitor.getDeferredActions().
                 add(visitor.getFullyQualifiedName(), new AttributeDeferredAction(param));
         }
-        
+
         return param;
     }
-    
+
     private ParamType generateCorbaParam(AST type) {
         ParamType param = new ParamType();
         param.setName(PARAM_NAME);
         param.setMode(ModeType.IN);
-        
+
         ParamTypeSpecVisitor visitor = new ParamTypeSpecVisitor(getScope(),
                                                                 definition,
                                                                 schema,
@@ -327,11 +326,11 @@ public class AttributeVisitor extends Vi
 
         return param;
     }
-    
+
     /** Generates a corba:operation in the corba:binding container within a wsdl:binding.
-     * 
+     *
      * Only one (or none) corba parameter and only one (or none) corba return parameter are supported.
-     * 
+     *
      * @param op is the wsdl operation to bind.
      * @param param is the corba parameter, none if null.
      * @param arg is the corba return parameter, none if null.
@@ -346,27 +345,27 @@ public class AttributeVisitor extends Vi
             throw new RuntimeException(ex);
         }
         operation.setName(op.getName());
-   
+
         if (param != null) {
             operation.getParam().add(param);
         }
-        
+
         if (arg != null) {
             operation.setReturn(arg);
         }
-        
+
         return operation;
     }
-    
+
     private BindingOperation generateCorbaBindingOperation(Binding wsdlBinding,
                                                            Operation op,
                                                            OperationType corbaOp) {
         BindingInput bindingInput = definition.createBindingInput();
         bindingInput.setName(op.getInput().getName());
-        
+
         BindingOutput bindingOutput = definition.createBindingOutput();
         bindingOutput.setName(op.getOutput().getName());
-        
+
         BindingOperation bindingOperation = definition.createBindingOperation();
         bindingOperation.addExtensibilityElement(corbaOp);
         bindingOperation.setOperation(op);
@@ -374,7 +373,7 @@ public class AttributeVisitor extends Vi
 
         bindingOperation.setBindingInput(bindingInput);
         bindingOperation.setBindingOutput(bindingOutput);
-        
+
         binding.addBindingOperation(bindingOperation);
 
         return bindingOperation;

Modified: cxf/trunk/tools/corba/src/main/java/org/apache/cxf/tools/corba/processors/idl/DeclaratorVisitor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/tools/corba/src/main/java/org/apache/cxf/tools/corba/processors/idl/DeclaratorVisitor.java?rev=1023402&r1=1023401&r2=1023402&view=diff
==============================================================================
--- cxf/trunk/tools/corba/src/main/java/org/apache/cxf/tools/corba/processors/idl/DeclaratorVisitor.java (original)
+++ cxf/trunk/tools/corba/src/main/java/org/apache/cxf/tools/corba/processors/idl/DeclaratorVisitor.java Sun Oct 17 02:26:06 2010
@@ -39,7 +39,7 @@ public class DeclaratorVisitor extends V
     //                | <complex_declarator>
     // <simple_declarator> ::= <identifier>
     // <complex_declarator> ::= <array_declarator>
-    
+
     public DeclaratorVisitor(Scope scope,
                              Definition defn,
                              XmlSchema schemaRef,
@@ -52,9 +52,9 @@ public class DeclaratorVisitor extends V
         setCorbaType(corbaTypeRef);
         setFullyQualifiedName(fQName);
     }
-    
+
     public void visit(AST node) {
-    
+
         if (ArrayVisitor.accept(node)) {
             ArrayVisitor arrayVisitor = new ArrayVisitor(getScope(),
                                                          definition,
@@ -77,8 +77,8 @@ public class DeclaratorVisitor extends V
             // add corbaType
             typeMap.getStructOrExceptionOrUnion().add(getCorbaType());
         }
-        
-        AST nextDecl = node.getNextSibling(); 
+
+        AST nextDecl = node.getNextSibling();
         while (nextDecl != null) {
             Scope newScope = new Scope(getScope().getParent(), nextDecl);
 
@@ -88,14 +88,14 @@ public class DeclaratorVisitor extends V
                                                              schema,
                                                              wsdlVisitor,
                                                              nextDecl,
-                                                             getFullyQualifiedName()); 
+                                                             getFullyQualifiedName());
                 arrayVisitor.setSchemaType(getSchemaType());
                 arrayVisitor.setCorbaType(getCorbaType());
                 arrayVisitor.visit(nextDecl);
             } else {
                 visitNewTypes(newScope);
             }
-            
+
             nextDecl = nextDecl.getNextSibling();
         }
 
@@ -114,19 +114,19 @@ public class DeclaratorVisitor extends V
             //
             Alias oldAlias = (Alias) oldCorbaType;
             Alias alias = new Alias();
-            
+
             alias.setQName(newQname);
             alias.setBasetype(oldAlias.getBasetype());
             alias.setType(oldAlias.getType());
             alias.setRepositoryID(newScope.toIDLRepositoryID());
-            
+
             nextCorbaType = alias;
         } else if (oldCorbaType instanceof Sequence) {
             // Sequence
             //
-            
+
             nextSchemaType = duplicateXmlSchemaComplexType(newScope);
-            
+
             Sequence oldSequence = (Sequence) oldCorbaType;
             Sequence newSequence = new Sequence();
 
@@ -141,7 +141,7 @@ public class DeclaratorVisitor extends V
         } else if (oldCorbaType instanceof Fixed) {
             // Fixed
             //
-            
+
             nextSchemaType = duplicateXmlSchemaSimpleType(newScope);
 
             Fixed oldFixed = (Fixed) getCorbaType();
@@ -152,7 +152,7 @@ public class DeclaratorVisitor extends V
             newFixed.setScale(oldFixed.getScale());
             newFixed.setType(oldFixed.getType());
             newFixed.setRepositoryID(newScope.toIDLRepositoryID());
-            
+
             nextCorbaType = newFixed;
         } else {
             System.err.println("[DeclaratorVisitor: Unexpected CORBA type error!]");
@@ -164,24 +164,24 @@ public class DeclaratorVisitor extends V
         }
         if (nextSchemaType != null) {
             schema.getItems().add(nextSchemaType);
-            schema.addType(nextSchemaType);                    
+            schema.addType(nextSchemaType);
         }
     }
 
-    
+
     private XmlSchemaComplexType duplicateXmlSchemaComplexType(Scope newScope) {
         XmlSchemaComplexType oldSchemaType = (XmlSchemaComplexType) getSchemaType();
-        XmlSchemaComplexType newSchemaType = new XmlSchemaComplexType(schema);
+        XmlSchemaComplexType newSchemaType = new XmlSchemaComplexType(schema, false);
 
         newSchemaType.setName(newScope.toString());
         newSchemaType.setParticle(oldSchemaType.getParticle());
 
         return newSchemaType;
     }
-    
+
     private XmlSchemaSimpleType duplicateXmlSchemaSimpleType(Scope newScope) {
         XmlSchemaSimpleType oldSimpleType = (XmlSchemaSimpleType) getSchemaType();
-        XmlSchemaSimpleType simpleType = new XmlSchemaSimpleType(schema);
+        XmlSchemaSimpleType simpleType = new XmlSchemaSimpleType(schema, false);
         simpleType.setContent(oldSimpleType.getContent());
         simpleType.setName(newScope.toString());
         return simpleType;

Modified: cxf/trunk/tools/corba/src/main/java/org/apache/cxf/tools/corba/processors/idl/EnumVisitor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/tools/corba/src/main/java/org/apache/cxf/tools/corba/processors/idl/EnumVisitor.java?rev=1023402&r1=1023401&r2=1023402&view=diff
==============================================================================
--- cxf/trunk/tools/corba/src/main/java/org/apache/cxf/tools/corba/processors/idl/EnumVisitor.java (original)
+++ cxf/trunk/tools/corba/src/main/java/org/apache/cxf/tools/corba/processors/idl/EnumVisitor.java Sun Oct 17 02:26:06 2010
@@ -40,40 +40,40 @@ public class EnumVisitor extends Visitor
                        WSDLASTVisitor wsdlVisitor) {
         super(scope, defn, schemaRef, wsdlVisitor);
     }
-    
+
     public static boolean accept(AST node) {
         if (node.getType() == IDLTokenTypes.LITERAL_enum) {
             return true;
         }
         return false;
     }
-    
+
     public void visit(AST enumNode) {
         // <enum_type> ::= "enum" <identifier> "{" <enumerator> {"," <enumerator>}* "}"
         // <enumerator> ::= <identifier>
-        
-        
+
+
         AST enumNameNode = enumNode.getFirstChild();
         Scope enumNameScope = new Scope(getScope(), enumNameNode);
 
         // xmlschema:enum
-        XmlSchemaSimpleType enumSchemaSimpleType = new XmlSchemaSimpleType(schema);
+        XmlSchemaSimpleType enumSchemaSimpleType = new XmlSchemaSimpleType(schema, true);
         enumSchemaSimpleType.setName(mapper.mapToQName(enumNameScope));
-        
+
         XmlSchemaSimpleTypeRestriction enumSchemaSimpleTypeRestriction = new XmlSchemaSimpleTypeRestriction();
         enumSchemaSimpleTypeRestriction.setBaseTypeName(Constants.XSD_STRING);
-        
+
         //XmlSchemaSimpleTypeContent xmlSchemaSimpleTypeContent = enumSchemaSimpleTypeRestriction;
         enumSchemaSimpleType.setContent(enumSchemaSimpleTypeRestriction);
 
-        
+
         // corba:enum
         Enum corbaEnum = new Enum();
         corbaEnum.setQName(new QName(typeMap.getTargetNamespace(), enumNameScope.toString()));
         corbaEnum.setRepositoryID(enumNameScope.toIDLRepositoryID());
         corbaEnum.setType(enumSchemaSimpleType.getQName());
-        
-        
+
+
         AST node = enumNameNode.getNextSibling();
         while (node != null) {
             // xmlschema:enumeration
@@ -85,13 +85,9 @@ public class EnumVisitor extends Visitor
             Enumerator enumerator = new Enumerator();
             enumerator.setValue(node.toString());
             corbaEnum.getEnumerator().add(enumerator);
-            
+
             node = node.getNextSibling();
         }
-        
-        // add schemaType
-        schema.getItems().add(enumSchemaSimpleType);
-        schema.addType(enumSchemaSimpleType);
 
         // add corbaType
         typeMap.getStructOrExceptionOrUnion().add(corbaEnum);

Modified: cxf/trunk/tools/corba/src/main/java/org/apache/cxf/tools/corba/processors/idl/ExceptionVisitor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/tools/corba/src/main/java/org/apache/cxf/tools/corba/processors/idl/ExceptionVisitor.java?rev=1023402&r1=1023401&r2=1023402&view=diff
==============================================================================
--- cxf/trunk/tools/corba/src/main/java/org/apache/cxf/tools/corba/processors/idl/ExceptionVisitor.java (original)
+++ cxf/trunk/tools/corba/src/main/java/org/apache/cxf/tools/corba/processors/idl/ExceptionVisitor.java Sun Oct 17 02:26:06 2010
@@ -38,7 +38,7 @@ import org.apache.ws.commons.schema.XmlS
 public class ExceptionVisitor extends VisitorBase {
 
     private static final String TYPE_SUFFIX = "Type";
-    
+
     public ExceptionVisitor(Scope scope,
                             Definition defn,
                             XmlSchema schemaRef,
@@ -52,13 +52,13 @@ public class ExceptionVisitor extends Vi
         }
         return false;
     }
-    
+
     public void visit(AST node) {
         // <exception_dcl> ::= "exception" <identifier> "{" <member>* "}"
         // <member> ::= <type_spec> <declarators> ";"
 
         // <type_spec> visited by TypesVisitor
-        
+
         // Following should be visited by a separate visitor
         // <declarators> ::= <declarator> { "," <declarator> }*
         // <declarator> ::= <simple_declarator>
@@ -68,35 +68,34 @@ public class ExceptionVisitor extends Vi
         // <array_declarator> ::= <identifier> <fixed_array_size>+
         // <fixed_array_size> ::= "[" <positive_int_const> "]"
 
-        
+
         AST identifierNode = node.getFirstChild();
         Scope exceptionScope = new Scope(getScope(), identifierNode);
-        
+
         // xmlschema:exception
         Scope scopedName = new Scope(getScope(), identifierNode);
         String exceptionName = mapper.mapToQName(scopedName);
-        XmlSchemaElement element = new XmlSchemaElement();
+        XmlSchemaElement element = new XmlSchemaElement(schema, false);
         element.setName(mapper.mapToQName(scopedName));
-        element.setQName(new QName(schema.getTargetNamespace(), exceptionName));
 
         String exceptionTypeName = exceptionName + TYPE_SUFFIX;
 
-        XmlSchemaComplexType complexType = new XmlSchemaComplexType(schema);
+        XmlSchemaComplexType complexType = new XmlSchemaComplexType(schema, false);
         complexType.setName(exceptionTypeName);
         //complexType.setQName(new QName(schema.getTargetNamespace(), exceptionTypeName));
         XmlSchemaSequence sequence = new XmlSchemaSequence();
         complexType.setParticle(sequence);
 
         element.setSchemaTypeName(complexType.getQName());
-        
+
         // corba:exception
-        org.apache.cxf.binding.corba.wsdl.Exception exception 
+        org.apache.cxf.binding.corba.wsdl.Exception exception
             = new org.apache.cxf.binding.corba.wsdl.Exception();
         exception.setQName(new QName(typeMap.getTargetNamespace(), exceptionName));
         exception.setType(complexType.getQName());
         exception.setRepositoryID(scopedName.toIDLRepositoryID());
 
-        
+
         // exception members
         AST memberTypeNode = identifierNode.getNextSibling();
         while (memberTypeNode != null) {
@@ -111,10 +110,10 @@ public class ExceptionVisitor extends Vi
             XmlSchemaType stype = visitor.getSchemaType();
             CorbaTypeImpl ctype = visitor.getCorbaType();
             Scope fullyQualifiedName = visitor.getFullyQualifiedName();
-            
+
             // needed for anonymous arrays in exceptions
             if (ArrayVisitor.accept(memberNode)) {
-                Scope anonScope = new Scope(exceptionScope, 
+                Scope anonScope = new Scope(exceptionScope,
                                             TypesUtils.getCorbaTypeNameNode(memberTypeNode));
                 ArrayVisitor arrayVisitor = new ArrayVisitor(anonScope,
                                                              definition,
@@ -129,27 +128,27 @@ public class ExceptionVisitor extends Vi
                 ctype = arrayVisitor.getCorbaType();
             }
 
-            
+
             XmlSchemaElement member = createElementType(memberNode, stype,
                                                         fullyQualifiedName);
             sequence.getItems().add(member);
 
-            MemberType memberType = createMemberType(memberNode, ctype, 
+            MemberType memberType = createMemberType(memberNode, ctype,
                                                      fullyQualifiedName);
             exception.getMember().add(memberType);
-            
-            
+
+
             memberTypeNode = memberNode.getNextSibling();
         }
 
         schema.addType(complexType);
         schema.getItems().add(element);
         schema.getItems().add(complexType);
-        
-        
+
+
         // add exception to corba typemap
         typeMap.getStructOrExceptionOrUnion().add(exception);
-        
+
         setSchemaType(complexType);
         setCorbaType(exception);
         createFaultMessage(element.getQName());
@@ -160,11 +159,11 @@ public class ExceptionVisitor extends Vi
         // messages
         Message faultMsg = definition.createMessage();
 
-        faultMsg.setQName(new QName(definition.getTargetNamespace(), exceptionName));        
+        faultMsg.setQName(new QName(definition.getTargetNamespace(), exceptionName));
         faultMsg.setUndefined(false);
         // message - part
         Part part = definition.createPart();
-        part.setName("exception");           
+        part.setName("exception");
         part.setElementName(qname);
         faultMsg.addPart(part);
 
@@ -174,11 +173,11 @@ public class ExceptionVisitor extends Vi
 
         definition.addMessage(faultMsg);
     }
-    
+
     private XmlSchemaElement createElementType(AST memberNode, XmlSchemaType stype,
                                                Scope fqName) {
         // xmlschema:member
-        XmlSchemaElement member = new XmlSchemaElement();
+        XmlSchemaElement member = new XmlSchemaElement(schema, false);
         String memberName = memberNode.toString();
         member.setName(memberName);
         if (stype != null) {
@@ -189,12 +188,12 @@ public class ExceptionVisitor extends Vi
             }
         } else {
             wsdlVisitor.getDeferredActions().
-                add(fqName, new ExceptionDeferredAction(member)); 
+                add(fqName, new ExceptionDeferredAction(member));
         }
         return member;
     }
-    
-    private MemberType createMemberType(AST memberNode, CorbaTypeImpl ctype, 
+
+    private MemberType createMemberType(AST memberNode, CorbaTypeImpl ctype,
                                         Scope fqName) {
         // corba:member
         MemberType memberType = new MemberType();
@@ -205,8 +204,8 @@ public class ExceptionVisitor extends Vi
             wsdlVisitor.getDeferredActions().
                 add(fqName, new ExceptionDeferredAction(memberType));
         }
-        
+
         return memberType;
     }
-    
+
 }

Modified: cxf/trunk/tools/corba/src/main/java/org/apache/cxf/tools/corba/processors/idl/FixedVisitor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/tools/corba/src/main/java/org/apache/cxf/tools/corba/processors/idl/FixedVisitor.java?rev=1023402&r1=1023401&r2=1023402&view=diff
==============================================================================
--- cxf/trunk/tools/corba/src/main/java/org/apache/cxf/tools/corba/processors/idl/FixedVisitor.java (original)
+++ cxf/trunk/tools/corba/src/main/java/org/apache/cxf/tools/corba/processors/idl/FixedVisitor.java Sun Oct 17 02:26:06 2010
@@ -35,7 +35,7 @@ import org.apache.ws.commons.schema.cons
 public class FixedVisitor extends VisitorBase {
 
     private AST identifierNode;
-    
+
     public FixedVisitor(Scope scope,
                         Definition defn,
                         XmlSchema schemaRef,
@@ -44,21 +44,21 @@ public class FixedVisitor extends Visito
         super(scope, defn, schemaRef, wsdlVisitor);
         identifierNode = identifierNodeRef;
     }
-    
+
     public static boolean accept(AST node) {
         if (node.getType() == IDLTokenTypes.LITERAL_fixed) {
             return true;
         }
         return false;
     }
-    
+
     public void visit(AST fixedNode) {
         //      "typedef" <type_declarator>
         //      <type_declarator> ::= <type_spec> <declarators>
         //      <type_spec> ::= <simple_type_spec>
         //                    | <constr_type_spec>
         //      <simple_type_spec> ::= <base_type_spec>
-        //                           | <template_type_spec> 
+        //                           | <template_type_spec>
         //                           | <scoped_name>
         //      <base_type_spec> ::= ... omitted (integer, char, octect, etc)
         //      <template_type_spec> ::= <sequence_type>
@@ -75,12 +75,12 @@ public class FixedVisitor extends Visito
         //      <complex_declarator> ::= <array_declarator>
         //      <array_declarator> ::= <identifier> <fixed_array_size>+
         //      <fixed_array_size> ::= "[" <positive_int_const> "]"
-        
-        
+
+
         AST digitsNode = fixedNode.getFirstChild();
         AST scaleNode = digitsNode.getNextSibling();
         Scope scopedName = new Scope(getScope(), identifierNode);
-        
+
         // validate digits and scale
         Long digits = new Long(digitsNode.toString());
         Long scale = new Long(scaleNode.toString());
@@ -94,9 +94,9 @@ public class FixedVisitor extends Visito
             System.out.println("Scale cannot be greater than digits");
             return;
         }
-        
+
         // xmlschema:fixed
-        XmlSchemaSimpleType fixedSimpleType = new XmlSchemaSimpleType(schema);
+        XmlSchemaSimpleType fixedSimpleType = new XmlSchemaSimpleType(schema, false);
         XmlSchemaSimpleTypeRestriction fixedRestriction = new XmlSchemaSimpleTypeRestriction();
         fixedRestriction.setBaseTypeName(Constants.XSD_DECIMAL);
         XmlSchemaTotalDigitsFacet fixedTotalDigits = new XmlSchemaTotalDigitsFacet();
@@ -112,7 +112,7 @@ public class FixedVisitor extends Visito
         // add xmlschema:fixed
         setSchemaType(fixedSimpleType);
 
-        
+
         // corba:fixed
         Fixed corbaFixed = new Fixed();
         corbaFixed.setQName(new QName(typeMap.getTargetNamespace(), scopedName.toString()));
@@ -121,7 +121,7 @@ public class FixedVisitor extends Visito
         corbaFixed.setRepositoryID(scopedName.toIDLRepositoryID());
         //corbaFixed.setType(Constants.XSD_DECIMAL);
         corbaFixed.setType(fixedSimpleType.getQName());
-        
+
         // add corba:fixed
         setCorbaType(corbaFixed);
     }

Modified: cxf/trunk/tools/corba/src/main/java/org/apache/cxf/tools/corba/processors/idl/ObjectReferenceVisitor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/tools/corba/src/main/java/org/apache/cxf/tools/corba/processors/idl/ObjectReferenceVisitor.java?rev=1023402&r1=1023401&r2=1023402&view=diff
==============================================================================
--- cxf/trunk/tools/corba/src/main/java/org/apache/cxf/tools/corba/processors/idl/ObjectReferenceVisitor.java (original)
+++ cxf/trunk/tools/corba/src/main/java/org/apache/cxf/tools/corba/processors/idl/ObjectReferenceVisitor.java Sun Oct 17 02:26:06 2010
@@ -44,25 +44,26 @@ import org.apache.ws.commons.schema.XmlS
 import org.apache.ws.commons.schema.XmlSchemaAppInfo;
 import org.apache.ws.commons.schema.XmlSchemaCollection;
 import org.apache.ws.commons.schema.XmlSchemaElement;
+import org.apache.ws.commons.schema.XmlSchemaExternal;
 import org.apache.ws.commons.schema.XmlSchemaImport;
-import org.apache.ws.commons.schema.XmlSchemaObjectCollection;
+import org.apache.ws.commons.schema.XmlSchemaObject;
 import org.apache.ws.commons.schema.XmlSchemaType;
 import org.apache.ws.commons.schema.utils.NamespaceMap;
 
 public class ObjectReferenceVisitor extends VisitorBase {
-    
+
     private WSDLASTVisitor objRefWsdlVisitor;
-    
+
     public ObjectReferenceVisitor(Scope scope,
                                   Definition defn,
                                   XmlSchema schemaRef,
                                   WSDLASTVisitor wsdlVisitor) {
         super(scope, defn, schemaRef, wsdlVisitor);
         objRefWsdlVisitor = wsdlVisitor;
-        
+
     }
 
-    public static boolean accept(Scope scope, XmlSchema s, 
+    public static boolean accept(Scope scope, XmlSchema s,
                                  Definition def, AST node, WSDLASTVisitor wsdlVisitor) {
         boolean result = false;
         if (node.getType() == IDLTokenTypes.LITERAL_Object) {
@@ -72,19 +73,19 @@ public class ObjectReferenceVisitor exte
         }
         return result;
     }
-    
+
     public void visit(AST node) {
         if (!objRefWsdlVisitor.getDeclaredWSAImport()) {
             addWSAddressingImport(schema);
         }
         objRefWsdlVisitor.setDeclaredWSAImport(true);
-        
-        // There are two types of object references we can encounter.  Each one 
+
+        // There are two types of object references we can encounter.  Each one
         // requires us to do something differnt so we'll have methods for each
         // type. Also need to check if its a forward declared object reference.
         if (isForwardDeclaredReference(getScope(), schema, node, scopedNames, wsdlVisitor)) {
-            visitForwardDeclaredObjectReference(getScope(), schemas, schema, 
-                                                node, scopedNames, wsdlVisitor);             
+            visitForwardDeclaredObjectReference(getScope(), schemas, schema,
+                                                node, scopedNames, wsdlVisitor);
         } else if (node.getType() == IDLTokenTypes.LITERAL_Object) {
             visitDefaultTypeObjectReference(node);
         } else {
@@ -92,7 +93,7 @@ public class ObjectReferenceVisitor exte
             visitCustomTypeObjectReference(node);
         }
     }
-    
+
     private void visitDefaultTypeObjectReference(AST node) {
         // Even though we don't need to add a schema definition for a default endpoint
         // type, we still need to create a schema type so that the visitor knows what
@@ -111,24 +112,27 @@ public class ObjectReferenceVisitor exte
         if (wsaSchema == null) {
             wsaSchema = new XmlSchema(ReferenceConstants.WSADDRESSING_NAMESPACE, schemas);
         }
-        XmlSchemaType objectType = new XmlSchemaType(wsaSchema);
+        /*
+         * TODO: This anonymous type is ridiculous, but I don't understand this code.
+         */
+        XmlSchemaType objectType = new XmlSchemaType(wsaSchema, false) { };
         objectType.setName(ReferenceConstants.WSADDRESSING_LOCAL_NAME);
         setSchemaType(objectType);
-        
+
         // Build and assign the corba:object to the visitor
         Object corbaObject = new Object();
         corbaObject.setQName(new QName(typeMap.getTargetNamespace(), "CORBA.Object"));
         corbaObject.setRepositoryID("IDL:omg.org/CORBA/Object/1.0");
         corbaObject.setType(objectType.getQName());
         setCorbaType(corbaObject);
-        
+
         // Add the object definition to the typemap.  We only need to add the default
         // type once.
         if (!isReferenceCORBATypeDefined(corbaObject.getQName())) {
             typeMap.getStructOrExceptionOrUnion().add(corbaObject);
-        } 
+        }
     }
-    
+
     private void visitCustomTypeObjectReference(AST node) {
         QName bindingName = null;
         QName referenceName = null;
@@ -157,7 +161,7 @@ public class ObjectReferenceVisitor exte
 
             }
         }
-                
+
         if (bindingName == null) {
 
            // Global scope is our last chance to resolve the node
@@ -184,13 +188,13 @@ public class ObjectReferenceVisitor exte
             repositoryID = customScope.toIDLRepositoryID();
             bindingName = getBindingQNameByID(definition, repositoryID, objRefWsdlVisitor);
         }
-        
+
         if (bindingName == null) {
             // We need to have a binding for this kind of object reference to work
             throw new RuntimeException("[ObjectReferenceVisitor: No binding available for endpoint]");
         }
 
-        // Create a schema namespace for WS addressing and use it to create an endpoint 
+        // Create a schema namespace for WS addressing and use it to create an endpoint
         // reference type.  This will be used as the type for our endpoint reference.
         XmlSchema scs[] = schemas.getXmlSchema(ReferenceConstants.WSADDRESSING_NAMESPACE);
         XmlSchema wsaSchema = null;
@@ -205,15 +209,15 @@ public class ObjectReferenceVisitor exte
         if (wsaSchema == null) {
             wsaSchema = new XmlSchema(ReferenceConstants.WSADDRESSING_NAMESPACE, schemas);
         }
-        XmlSchemaType wsaType = new XmlSchemaType(wsaSchema);
+        XmlSchemaType wsaType = new XmlSchemaType(wsaSchema, false) { };
         wsaType.setName(ReferenceConstants.WSADDRESSING_LOCAL_NAME);
-        
+
         // Check to see if we have already defined an element for this reference type.  If
         // we have, then there is no need to add it to the schema again.
-        isDuplicateReference(referenceName, bindingName, customScope, wsaType, node);        
+        isDuplicateReference(referenceName, bindingName, customScope, wsaType, node);
 
         setSchemaType(wsaType);
-        
+
         // Build and assign the corba:object to the visitor
         Object corbaObject = new Object();
         corbaObject.setBinding(bindingName);
@@ -221,15 +225,15 @@ public class ObjectReferenceVisitor exte
         corbaObject.setRepositoryID(repositoryID);
         corbaObject.setType(wsaType.getQName());
         setCorbaType(corbaObject);
-        
+
         // Add the object definition to the typemap.  We only need to add the default
         // type once.
         if (!isReferenceCORBATypeDefined(corbaObject.getQName())) {
             typeMap.getStructOrExceptionOrUnion().add(corbaObject);
-        } 
+        }
     }
-    
-    private void isDuplicateReference(QName referenceName, QName bindingName, Scope refScope, 
+
+    private void isDuplicateReference(QName referenceName, QName bindingName, Scope refScope,
                                       XmlSchemaType wsaType, AST node) {
         XmlSchema refSchema = null;
         if (!mapper.isDefaultMapping()) {
@@ -246,19 +250,18 @@ public class ObjectReferenceVisitor exte
         } else {
             refSchema = schema;
         }
-        
+
         // Check to see if we have already defined an element for this reference type.  If
         // we have, then there is no need to add it to the schema again.
         if (!isReferenceSchemaTypeDefined(referenceName, refSchema)) {
             // We need to add a new element definition to the schema section of our WSDL.
             // For custom endpoint types, this should contain an annotation which points
             // to the binding which will be used for this endpoint type.
-            XmlSchemaElement refElement = new XmlSchemaElement();
-            refElement.setQName(referenceName);
+            XmlSchemaElement refElement = new XmlSchemaElement(schema, true);
             refElement.setName(referenceName.getLocalPart());
             refElement.setSchemaType(wsaType);
             refElement.setSchemaTypeName(wsaType.getQName());
-      
+
             // Create an annotation which contains the CORBA binding for the element
             XmlSchemaAnnotation annotation = new XmlSchemaAnnotation();
             XmlSchemaAppInfo appInfo = new XmlSchemaAppInfo();
@@ -267,22 +270,19 @@ public class ObjectReferenceVisitor exte
                 Document doc = db.newDocument();
                 Element el = doc.createElement("appinfo");
                 el.setTextContent("corba:binding=" + bindingName.getLocalPart());
-                // TODO: This is correct but the appinfo markup is never added to the 
+                // TODO: This is correct but the appinfo markup is never added to the
                 // schema.  Investigate.
                 appInfo.setMarkup(el.getChildNodes());
             } catch (ParserConfigurationException ex) {
                 throw new RuntimeException("[ObjectReferenceVisitor: error creating endpoint schema]");
             }
-            
+
             annotation.getItems().add(appInfo);
-            
-            refElement.setAnnotation(annotation);
 
-            refSchema.getElements().add(referenceName, refElement);
-            refSchema.getItems().add(refElement);
-        }        
+            refElement.setAnnotation(annotation);
+        }
     }
-    
+
     private boolean isReferenceCORBATypeDefined(QName objectReferenceName) {
         // Get the list of all corba types already defined and look for the provided
         // QName.  If we have defined this type, we don't need to add it to the typemap
@@ -299,97 +299,92 @@ public class ObjectReferenceVisitor exte
 
     private boolean isReferenceSchemaTypeDefined(QName objectReferenceName,
                                                  XmlSchema refSchema) {
-        XmlSchemaObjectCollection schemaObjects = refSchema.getItems();
+        List<XmlSchemaObject> schemaObjects = refSchema.getItems();
 
-        for (Iterator iter = schemaObjects.getIterator(); iter.hasNext();) {
-            java.lang.Object schemaObj = iter.next();
-            
+        for (XmlSchemaObject schemaObj : schemaObjects) {
             if (schemaObj instanceof XmlSchemaElement) {
                 XmlSchemaElement el = (XmlSchemaElement)schemaObj;
-                
+
                 if (el.getName().equals(objectReferenceName.getLocalPart())) {
                     return true;
                 }
             }
         }
-        
+
         return false;
     }
-    
+
     private void addWSAddressingImport(XmlSchema s) {
         boolean alreadyImported = false;
-        for (Iterator i = s.getIncludes().getIterator(); i.hasNext();) {
-            java.lang.Object o = i.next();
-            if (o instanceof XmlSchemaImport) {
-                XmlSchemaImport schemaImport = (XmlSchemaImport)o;
+        for (XmlSchemaExternal ext : s.getExternals()) {
+            if (ext instanceof XmlSchemaImport) {
+                XmlSchemaImport schemaImport = (XmlSchemaImport)ext;
                 if (schemaImport.getNamespace().equals(ReferenceConstants.WSADDRESSING_NAMESPACE)) {
                     alreadyImported = true;
                     break;
                 }
             }
         }
-        
+
         if (!alreadyImported) {
             // We need to add an import statement to include the WS addressing types
-            XmlSchemaImport wsaImport = new XmlSchemaImport();
+            XmlSchemaImport wsaImport = new XmlSchemaImport(s);
             wsaImport.setNamespace(ReferenceConstants.WSADDRESSING_NAMESPACE);
             wsaImport.setSchemaLocation(ReferenceConstants.WSADDRESSING_LOCATION);
-            s.getItems().add(wsaImport);
-            s.getIncludes().add(wsaImport);
         }
-        
+
         // Add the addressing namespace to the WSDLs list of namespaces.
         definition.addNamespace(ReferenceConstants.WSADDRESSING_PREFIX,
                                 ReferenceConstants.WSADDRESSING_NAMESPACE);
-        
+
         try {
             // This is used to get the correct prefix in the schema section of
-            // the wsdl.  If we don't have this, then this namespace gets an 
+            // the wsdl.  If we don't have this, then this namespace gets an
             // arbitrary prefix (e.g. ns5 instead of wsa).
             NamespaceMap nsMap = (NamespaceMap)s.getNamespaceContext();
             if (nsMap == null) {
                 nsMap = new NamespaceMap();
-                nsMap.add(ReferenceConstants.WSADDRESSING_PREFIX, 
+                nsMap.add(ReferenceConstants.WSADDRESSING_PREFIX,
                           ReferenceConstants.WSADDRESSING_NAMESPACE);
                 s.setNamespaceContext(nsMap);
             } else {
-                nsMap.add(ReferenceConstants.WSADDRESSING_PREFIX, 
+                nsMap.add(ReferenceConstants.WSADDRESSING_PREFIX,
                           ReferenceConstants.WSADDRESSING_NAMESPACE);
             }
         } catch (ClassCastException ex) {
-            // Consume the exception.  It is still OK with the default prefix, 
+            // Consume the exception.  It is still OK with the default prefix,
             // just not as clear.
         }
-        
+
     }
-    
-    private static QName getBindingQNameByID(Definition wsdlDef, String repositoryID, 
+
+    private static QName getBindingQNameByID(Definition wsdlDef, String repositoryID,
                                              WSDLASTVisitor wsdlVisitor) {
         // We need to find the binding which corresponds with the given repository ID.
-        // This is specified in the schema definition for a custom endpoint 
+        // This is specified in the schema definition for a custom endpoint
         // reference type.
         Collection bindings = wsdlDef.getBindings().values();
         if (bindings.isEmpty() && !wsdlVisitor.getModuleToNSMapper().isDefaultMapping()) {
-            // If we are not using the default mapping, then the binding definitions are not 
-            // located in the current Definition object, but nistead in the root Definition 
+            // If we are not using the default mapping, then the binding definitions are not
+            // located in the current Definition object, but nistead in the root Definition
             bindings = wsdlVisitor.getDefinition().getBindings().values();
         }
-        
+
         for (Iterator iter = bindings.iterator(); iter.hasNext();) {
             Binding b = (Binding)iter.next();
             List extElements = b.getExtensibilityElements();
-            
+
             for (Iterator extIter = extElements.iterator(); extIter.hasNext();) {
                 java.lang.Object element = extIter.next();
-                
+
                 if (element instanceof BindingType) {
-                    BindingType bt = (BindingType)element;                    
+                    BindingType bt = (BindingType)element;
                     if (bt.getRepositoryID().equals(repositoryID)) {
                         if (wsdlVisitor.getSupportPolymorphicFactories()) {
                             return new QName(b.getQName().getNamespaceURI(),
                                              "InferFromTypeId",
                                              b.getQName().getPrefix());
-            
+
                         } else {
                             return b.getQName();
                         }
@@ -397,15 +392,15 @@ public class ObjectReferenceVisitor exte
                 }
             }
         }
-        
+
         return null;
     }
-    
+
     protected static boolean isForwardDeclaredReference(Scope scope, XmlSchema schema, AST node,
                                                ScopeNameCollection scopedNames, WSDLASTVisitor wsdlVisitor) {
         boolean isForward = false;
         Scope currentScope = scope;
-        
+
         // Check for forward declaration from local scope outwards
         if ((node.getFirstChild() == null)
             || (node.getFirstChild() != null && node.getFirstChild().getType() != IDLTokenTypes.SCOPEOP)) {
@@ -422,7 +417,7 @@ public class ObjectReferenceVisitor exte
                 }
                 currentScope = currentScope.getParent();
                 //fqName = scopedName;
-            }            
+            }
         }
         // Check for forward declaration in global scope
         if (!isForward) {
@@ -433,28 +428,28 @@ public class ObjectReferenceVisitor exte
                 //scopedName = scope;
                 scopedName = new Scope(new Scope(), node);
             }
-            if (scopedNames.getScope(scopedName) != null) {                
+            if (scopedNames.getScope(scopedName) != null) {
                 isForward = true;
             }
             //fqName = scopedName;
-        }                
+        }
 
         return isForward;
     }
-          
-    protected void visitForwardDeclaredObjectReference(Scope scope, 
-                                                       XmlSchemaCollection schemas, 
+
+    protected void visitForwardDeclaredObjectReference(Scope scope,
+                                                       XmlSchemaCollection schemas,
                                                        XmlSchema schema, AST node,
-                                                       ScopeNameCollection scopedNames, 
+                                                       ScopeNameCollection scopedNames,
                                                        WSDLASTVisitor wsdlVisitor) {
-     
-        XmlSchemaType result = null; 
+
+        XmlSchemaType result = null;
         Scope currentScope = scope;
-        
+
         // checks from innermost local scope outwards
         if ((node.getFirstChild() == null)
             || (node.getFirstChild() != null && node.getFirstChild().getType() != IDLTokenTypes.SCOPEOP)) {
-            while (result == null && currentScope != currentScope.getParent()) {                
+            while (result == null && currentScope != currentScope.getParent()) {
                 Scope scopedName = null;
                 if (ScopedNameVisitor.isFullyScopedName(node)) {
                     scopedName = ScopedNameVisitor.getFullyScopedName(currentScope, node);
@@ -476,11 +471,11 @@ public class ObjectReferenceVisitor exte
                     // if not, create a new one and create the WS-Addressing EndpointReferenceType
                     if (wsaSchema == null) {
                         wsaSchema = new XmlSchema(ReferenceConstants.WSADDRESSING_NAMESPACE, schemas);
-                        XmlSchemaType wsaType = new XmlSchemaType(wsaSchema);
+                        XmlSchemaType wsaType = new XmlSchemaType(wsaSchema, false) { };
                         wsaType.setName(ReferenceConstants.WSADDRESSING_LOCAL_NAME);
                         result = wsaType;
                     }
-                }                
+                }
                 currentScope = currentScope.getParent();
             }
         }
@@ -506,49 +501,49 @@ public class ObjectReferenceVisitor exte
                 // if not, create a new one and create the WS-Addressing EndpointReferenceType
                 if (wsaSchema == null) {
                     wsaSchema = new XmlSchema(ReferenceConstants.WSADDRESSING_NAMESPACE, schemas);
-                    XmlSchemaType wsaType = new XmlSchemaType(wsaSchema);
+                    XmlSchemaType wsaType = new XmlSchemaType(wsaSchema, false) { };
                     wsaType.setName(ReferenceConstants.WSADDRESSING_LOCAL_NAME);
                     result = wsaType;
                 }
             }
         }
-        
+
         setSchemaType(result);
     }
 
-    private static boolean hasBinding(Scope scope, XmlSchema s, Definition def, 
+    private static boolean hasBinding(Scope scope, XmlSchema s, Definition def,
                                       AST node, WSDLASTVisitor wsdlVisitor) {
         boolean result = false;
         QName bindingName = null;
         String repositoryID = null;
         Scope currentScope = scope;
         Scope customScope = null;
-        if ((node.getFirstChild() == null) || (node.getFirstChild() != null 
-            && node.getFirstChild().getType() != IDLTokenTypes.SCOPEOP)) {        
+        if ((node.getFirstChild() == null) || (node.getFirstChild() != null
+            && node.getFirstChild().getType() != IDLTokenTypes.SCOPEOP)) {
             while (bindingName == null
-                && currentScope != currentScope.getParent()) {                
+                && currentScope != currentScope.getParent()) {
                 if (ScopedNameVisitor.isFullyScopedName(node)) {
-                    customScope = ScopedNameVisitor.getFullyScopedName(currentScope, node);                
+                    customScope = ScopedNameVisitor.getFullyScopedName(currentScope, node);
                 } else {
-                    customScope = new Scope(currentScope, node);                    
+                    customScope = new Scope(currentScope, node);
                 }
                 repositoryID = customScope.toIDLRepositoryID();
                 bindingName = getBindingQNameByID(def, repositoryID, wsdlVisitor);
                 currentScope = currentScope.getParent();
             }
         }
-                
+
         if (bindingName == null) {
-            // Global scope is our last chance to resolve the node               
+            // Global scope is our last chance to resolve the node
             if (ScopedNameVisitor.isFullyScopedName(node)) {
                 customScope = ScopedNameVisitor.getFullyScopedName(new Scope(), node);
-            } else {                
+            } else {
                 customScope = new Scope(new Scope(), node);
             }
             repositoryID = customScope.toIDLRepositoryID();
             bindingName = getBindingQNameByID(def, repositoryID, wsdlVisitor);
         }
-        
+
         if (bindingName != null) {
             result = true;
         }

Modified: cxf/trunk/tools/corba/src/main/java/org/apache/cxf/tools/corba/processors/idl/OperationVisitor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/tools/corba/src/main/java/org/apache/cxf/tools/corba/processors/idl/OperationVisitor.java?rev=1023402&r1=1023401&r2=1023402&view=diff
==============================================================================
--- cxf/trunk/tools/corba/src/main/java/org/apache/cxf/tools/corba/processors/idl/OperationVisitor.java (original)
+++ cxf/trunk/tools/corba/src/main/java/org/apache/cxf/tools/corba/processors/idl/OperationVisitor.java Sun Oct 17 02:26:06 2010
@@ -54,22 +54,22 @@ public class OperationVisitor extends Vi
 
     private static final String REQUEST_SUFFIX = "Request";
     private static final String RESPONSE_SUFFIX = "Response";
-    
+
     private static final String IN_PARAMETER = "inparameter";
     private static final String OUT_PARAMETER = "outparameter";
     //private static final String INOUT_PARAMETER = "inoutparameter";
     private static final String RETURN_PARAMETER = "return";
-    
+
     private ExtensionRegistry extReg;
     private PortType portType;
     private Binding binding;
-    
+
     private Message inputMsg;
     private Message outputMsg;
-    
-    
+
+
     private OperationType corbaOperation;
-    
+
     public OperationVisitor(Scope scope,
                             Definition defn,
                             XmlSchema schemaRef,
@@ -81,7 +81,7 @@ public class OperationVisitor extends Vi
         portType = wsdlPortType;
         binding = wsdlBinding;
     }
-    
+
     public static boolean accept(Scope scope,
                                  Definition def,
                                  XmlSchema schema,
@@ -103,7 +103,7 @@ public class OperationVisitor extends Vi
         }
         return result;
     }
-    
+
     public void visit(AST node) {
         // <op_dcl> ::= [<op_attribute>] <op_type_spec>
         //              <identifier> <parameter_dcls>
@@ -114,14 +114,14 @@ public class OperationVisitor extends Vi
         // <parameter_dcls> ::= "(" <param_dcl> {"," <param_dcl>}* ")"
         //                    | "(" ")"
         // <raises_expr> ::= "raises" "(" <scoped_name> {"," <scoped_name>}* ")"
-        // <context_expr> ::= "context" "(" <string_literal> {"," <string_literal>}* ")"     
+        // <context_expr> ::= "context" "(" <string_literal> {"," <string_literal>}* ")"
 
         QName operationQName = new QName(schema.getTargetNamespace(), node.toString());
         boolean isDuplicate = false;
-        if (schema.getElements().contains(operationQName)) {
+        if (schema.getElements().containsKey(operationQName)) {
             isDuplicate = true;
         }
-  
+
         Operation operation = generateOperation(operationQName.getLocalPart(), isDuplicate);
 
         BindingOperation bindingOperation = null;
@@ -130,7 +130,7 @@ public class OperationVisitor extends Vi
         } else {
             bindingOperation = generateBindingOperation(binding, operation, operation.getName());
         }
-        
+
         XmlSchemaSequence inputWrappingSequence = new XmlSchemaSequence();
         XmlSchemaElement inputElement = generateWrapper(new QName(schema.getTargetNamespace(),
                                                                   operation.getName()),
@@ -154,12 +154,12 @@ public class OperationVisitor extends Vi
                                                       operation.getName() + RESPONSE_SUFFIX),
                                             outputWrappingSequence);
             outputMsg = generateOutputMessage(operation, bindingOperation);
-            generateOutputPart(outputMsg, outputElement);           
+            generateOutputPart(outputMsg, outputElement);
         }
-        
+
         // <op_type_spec>
         visitOpTypeSpec(node, outputWrappingSequence);
-        
+
         // <parameter_dcls>
         node = TypesUtils.getCorbaTypeNameNode(node);
         while (ParamDclVisitor.accept(node)) {
@@ -177,30 +177,30 @@ public class OperationVisitor extends Vi
         }
 
         // <raises_expr>
-        if (node != null 
+        if (node != null
             && node.getType() == IDLTokenTypes.LITERAL_raises) {
             node = node.getFirstChild();
-            
-            while (node != null) {            
-                // 
+
+            while (node != null) {
+                //
                 ScopedNameVisitor visitor = new ScopedNameVisitor(getScope(),
                                                                   definition,
                                                                   schema,
-                                                                  wsdlVisitor);                
+                                                                  wsdlVisitor);
                 visitor.setExceptionMode(true);
-                visitor.visit(node);                
+                visitor.visit(node);
                 CorbaTypeImpl corbaType = visitor.getCorbaType();
                 XmlSchemaType schemaType = visitor.getSchemaType();
                 //REVISIT, schema type ends with Type for exceptions, so strip it to get the element name.
                 int pos = schemaType.getQName().getLocalPart().indexOf("Type");
                 QName elementQName = new QName(schemaType.getQName().getNamespaceURI(),
                                                schemaType.getQName().getLocalPart().substring(0, pos));
-                createFaultMessage(corbaType, operation, bindingOperation, elementQName);                
+                createFaultMessage(corbaType, operation, bindingOperation, elementQName);
                 node = node.getNextSibling();
                 visitor.setExceptionMode(false);
             }
         }
-        
+
     }
 
     private Operation generateOperation(String name, boolean isDuplicate) {
@@ -217,7 +217,7 @@ public class OperationVisitor extends Vi
         portType.addOperation(op);
         return op;
     }
-    
+
     private BindingOperation generateBindingOperation(Binding wsdlBinding, Operation op,
                                                       String corbaOpName) {
         BindingOperation bindingOperation = definition.createBindingOperation();
@@ -246,29 +246,29 @@ public class OperationVisitor extends Vi
             msgName = new QName(definition.getTargetNamespace(),
                                 getScope().tail() + "." + operation.getName());
         } else {
-            msgName = new QName(definition.getTargetNamespace(), operation.getName()); 
+            msgName = new QName(definition.getTargetNamespace(), operation.getName());
         }
         msg.setQName(msgName);
         msg.setUndefined(false);
-        
+
         String inputName = operation.getName() + REQUEST_SUFFIX;
         Input input = definition.createInput();
         input.setName(inputName);
         input.setMessage(msg);
-        
+
         BindingInput bindingInput = definition.createBindingInput();
-        bindingInput.setName(inputName);    
-        
+        bindingInput.setName(inputName);
+
         bindingOperation.setBindingInput(bindingInput);
         operation.setInput(input);
-        
+
         definition.addMessage(msg);
-        
+
         return msg;
     }
 
     public Message generateOutputMessage(Operation operation, BindingOperation bindingOperation) {
-        Message msg = definition.createMessage(); 
+        Message msg = definition.createMessage();
         QName msgName;
         if (!mapper.isDefaultMapping()) {
             //mangle the message name
@@ -277,34 +277,34 @@ public class OperationVisitor extends Vi
                                 getScope().tail() + "." + operation.getName() + RESPONSE_SUFFIX);
         } else {
             msgName = new QName(definition.getTargetNamespace(),
-                                operation.getName() + RESPONSE_SUFFIX); 
+                                operation.getName() + RESPONSE_SUFFIX);
         }
         msg.setQName(msgName);
         msg.setUndefined(false);
-        
+
         String outputName = operation.getName() + RESPONSE_SUFFIX;
         Output output = definition.createOutput();
         output.setName(outputName);
         output.setMessage(msg);
-        
+
         BindingOutput bindingOutput = definition.createBindingOutput();
-        bindingOutput.setName(outputName);    
-        
+        bindingOutput.setName(outputName);
+
         bindingOperation.setBindingOutput(bindingOutput);
         operation.setOutput(output);
-        
+
         definition.addMessage(msg);
-        
+
         return msg;
     }
-    
+
     private Part generateInputPart(Message inputMessage, XmlSchemaElement element) {
-        // message - part 
+        // message - part
         Part part = definition.createPart();
         part.setName(IN_PARAMETER);
         part.setElementName(element.getQName());
         inputMessage.addPart(part);
-        return part;        
+        return part;
     }
 
     private Part generateOutputPart(Message outputMessage, XmlSchemaElement element) {
@@ -315,7 +315,7 @@ public class OperationVisitor extends Vi
         outputMessage.addPart(part);
         return part;
     }
-    
+
     /*-
      * Build the Wrapped Document Style wrapping elements
      * i.e. <xs:element name="...">
@@ -327,17 +327,13 @@ public class OperationVisitor extends Vi
      *      </xs:element>
      */
     private XmlSchemaElement generateWrapper(QName el, XmlSchemaSequence wrappingSequence) {
-        XmlSchemaComplexType schemaComplexType = new XmlSchemaComplexType(schema);
+        XmlSchemaComplexType schemaComplexType = new XmlSchemaComplexType(schema, false);
         schemaComplexType.setParticle(wrappingSequence);
-        
-        XmlSchemaElement wrappingSchemaElement = new XmlSchemaElement();
-        wrappingSchemaElement.setQName(el);
+
+        XmlSchemaElement wrappingSchemaElement = new XmlSchemaElement(schema, true);
         wrappingSchemaElement.setName(el.getLocalPart());
         wrappingSchemaElement.setSchemaType(schemaComplexType);
 
-        schema.getElements().add(el, wrappingSchemaElement);
-        schema.getItems().add(wrappingSchemaElement);
-        
         return wrappingSchemaElement;
     }
 
@@ -345,7 +341,7 @@ public class OperationVisitor extends Vi
                                         XmlSchemaType schemaType,
                                         Scope fqName,
                                         String name) {
-        XmlSchemaElement element = new XmlSchemaElement();
+        XmlSchemaElement element = new XmlSchemaElement(schema, true);
         element.setName(name);
         if (schemaType != null) {
             element.setSchemaTypeName(schemaType.getQName());
@@ -354,14 +350,12 @@ public class OperationVisitor extends Vi
             }
         } else {
             wsdlVisitor.getDeferredActions().
-                add(fqName, new OperationDeferredAction(element));  
+                add(fqName, new OperationDeferredAction(element));
         }
-        
-        schemaSequence.getItems().add(element);
-        
+
         return element;
     }
-    
+
     private void visitOpTypeSpec(AST node, XmlSchemaSequence outputWrappingSequence) {
         if (node.getType() == IDLTokenTypes.LITERAL_void) {
             // nothing to do here, move along
@@ -373,11 +367,11 @@ public class OperationVisitor extends Vi
                                                                     wsdlVisitor);
 
             visitor.visit(node);
-            
+
             XmlSchemaType schemaType = visitor.getSchemaType();
             CorbaTypeImpl corbaType = visitor.getCorbaType();
             Scope fqName = visitor.getFullyQualifiedName();
-            
+
             addElement(outputWrappingSequence, schemaType, fqName, RETURN_PARAMETER);
             addCorbaReturn(corbaType, fqName, RETURN_PARAMETER);
         }
@@ -396,10 +390,10 @@ public class OperationVisitor extends Vi
     }
 
     private void createFaultMessage(CorbaTypeImpl corbaType,
-                                    Operation operation, 
+                                    Operation operation,
                                     BindingOperation bindingOperation,
                                     QName elementQName) {
-        String exceptionName = corbaType.getQName().getLocalPart();        
+        String exceptionName = corbaType.getQName().getLocalPart();
 
         Definition faultDef = manager.getWSDLDefinition(elementQName.getNamespaceURI());
         if (faultDef == null) {
@@ -412,23 +406,23 @@ public class OperationVisitor extends Vi
 
         // porttype - operation - fault
         Fault fault = definition.createFault();
-        fault.setMessage(faultMsg);        
-        fault.setName(faultMsg.getQName().getLocalPart());        
+        fault.setMessage(faultMsg);
+        fault.setName(faultMsg.getQName().getLocalPart());
         operation.addFault(fault);
 
         // binding - operation - corba:operation - corba:raises
-        RaisesType raisesType = new RaisesType();        
+        RaisesType raisesType = new RaisesType();
         raisesType.setException(new QName(typeMap.getTargetNamespace(),
                                           exceptionName));
         corbaOperation.getRaises().add(raisesType);
 
         // binding - operation - fault
-        BindingFault bindingFault = definition.createBindingFault();        
-        bindingFault.setName(faultMsg.getQName().getLocalPart());        
-        bindingOperation.addBindingFault(bindingFault);    
+        BindingFault bindingFault = definition.createBindingFault();
+        bindingFault.setName(faultMsg.getQName().getLocalPart());
+        bindingOperation.addBindingFault(bindingFault);
 
         //add the fault element namespace to the definition
         String nsURI = elementQName.getNamespaceURI();
-        manager.addWSDLDefinitionNamespace(definition, mapper.mapNSToPrefix(nsURI), nsURI);    
+        manager.addWSDLDefinitionNamespace(definition, mapper.mapNSToPrefix(nsURI), nsURI);
     }
 }

Modified: cxf/trunk/tools/corba/src/main/java/org/apache/cxf/tools/corba/processors/idl/ParamDclVisitor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/tools/corba/src/main/java/org/apache/cxf/tools/corba/processors/idl/ParamDclVisitor.java?rev=1023402&r1=1023401&r2=1023402&view=diff
==============================================================================
--- cxf/trunk/tools/corba/src/main/java/org/apache/cxf/tools/corba/processors/idl/ParamDclVisitor.java (original)
+++ cxf/trunk/tools/corba/src/main/java/org/apache/cxf/tools/corba/processors/idl/ParamDclVisitor.java Sun Oct 17 02:26:06 2010
@@ -35,10 +35,10 @@ import org.apache.ws.commons.schema.XmlS
 
 public class ParamDclVisitor extends VisitorBase {
 
-    private XmlSchemaSequence inWrappingSequence; 
+    private XmlSchemaSequence inWrappingSequence;
     private XmlSchemaSequence outWrappingSequence;
     private OperationType corbaOperation;
-    
+
     public ParamDclVisitor(Scope scope,
                            Definition defn,
                            XmlSchema schemaRef,
@@ -62,7 +62,7 @@ public class ParamDclVisitor extends Vis
         }
         return result;
     }
-    
+
     public void visit(AST node) {
         // <param_dcl> ::= <param_attribute> <param_type_spec> <simple_declarator>
         // <param_attribute> ::= "in"
@@ -79,14 +79,14 @@ public class ParamDclVisitor extends Vis
         XmlSchemaType schemaType = visitor.getSchemaType();
         CorbaTypeImpl corbaType = visitor.getCorbaType();
         Scope fullyQualifiedName = visitor.getFullyQualifiedName();
-        
+
         switch (node.getType()) {
-        case IDLTokenTypes.LITERAL_in: 
+        case IDLTokenTypes.LITERAL_in:
             addElement(inWrappingSequence, schemaType, nameNode.toString(), fullyQualifiedName);
             addCorbaParam(corbaType, ModeType.IN, nameNode.toString(), fullyQualifiedName);
             break;
         case IDLTokenTypes.LITERAL_out:
-            addElement(outWrappingSequence, schemaType, nameNode.toString(), fullyQualifiedName); 
+            addElement(outWrappingSequence, schemaType, nameNode.toString(), fullyQualifiedName);
             addCorbaParam(corbaType, ModeType.OUT, nameNode.toString(), fullyQualifiedName);
             break;
         case IDLTokenTypes.LITERAL_inout:
@@ -97,7 +97,7 @@ public class ParamDclVisitor extends Vis
         default:
             throw new RuntimeException("[ParamDclVisitor: illegal IDL!]");
         }
-        
+
         setSchemaType(schemaType);
         setCorbaType(corbaType);
     }
@@ -106,7 +106,7 @@ public class ParamDclVisitor extends Vis
                                         XmlSchemaType schemaType,
                                         String name,
                                         Scope fullyQualifiedName) {
-        XmlSchemaElement element = new XmlSchemaElement();
+        XmlSchemaElement element = new XmlSchemaElement(schema, false);
         element.setName(name);
         if (schemaType == null) {
             ParamDeferredAction elementAction;
@@ -122,7 +122,7 @@ public class ParamDclVisitor extends Vis
             }
             wsdlVisitor.getDeferredActions().add(fullyQualifiedName, elementAction);
 
-            //ParamDeferredAction elementAction = 
+            //ParamDeferredAction elementAction =
             //    new ParamDeferredAction(element);
             //wsdlVisitor.getDeferredActions().add(fullyQualifiedName, elementAction);
         } else {
@@ -135,16 +135,16 @@ public class ParamDclVisitor extends Vis
         return element;
     }
 
-    private void addCorbaParam(CorbaTypeImpl corbaType, ModeType mode, 
+    private void addCorbaParam(CorbaTypeImpl corbaType, ModeType mode,
                                String partName, Scope fullyQualifiedName) {
         ParamType param = new ParamType();
         param.setName(partName);
         param.setMode(mode);
-        if (corbaType ==  null) {            
-            ParamDeferredAction paramAction = 
+        if (corbaType ==  null) {
+            ParamDeferredAction paramAction =
                 new ParamDeferredAction(param);
             wsdlVisitor.getDeferredActions().add(fullyQualifiedName, paramAction);
-        } else {            
+        } else {
             param.setIdltype(corbaType.getQName());
         }
         corbaOperation.getParam().add(param);

Modified: cxf/trunk/tools/corba/src/main/java/org/apache/cxf/tools/corba/processors/idl/ParamDeferredAction.java
URL: http://svn.apache.org/viewvc/cxf/trunk/tools/corba/src/main/java/org/apache/cxf/tools/corba/processors/idl/ParamDeferredAction.java?rev=1023402&r1=1023401&r2=1023402&view=diff
==============================================================================
--- cxf/trunk/tools/corba/src/main/java/org/apache/cxf/tools/corba/processors/idl/ParamDeferredAction.java (original)
+++ cxf/trunk/tools/corba/src/main/java/org/apache/cxf/tools/corba/processors/idl/ParamDeferredAction.java Sun Oct 17 02:26:06 2010
@@ -19,14 +19,13 @@
 
 package org.apache.cxf.tools.corba.processors.idl;
 
-import java.util.Iterator;
-
 import org.apache.cxf.binding.corba.wsdl.CorbaTypeImpl;
 import org.apache.cxf.binding.corba.wsdl.ParamType;
 import org.apache.cxf.tools.corba.common.ReferenceConstants;
 import org.apache.ws.commons.schema.XmlSchema;
 import org.apache.ws.commons.schema.XmlSchemaCollection;
 import org.apache.ws.commons.schema.XmlSchemaElement;
+import org.apache.ws.commons.schema.XmlSchemaExternal;
 import org.apache.ws.commons.schema.XmlSchemaImport;
 import org.apache.ws.commons.schema.XmlSchemaType;
 
@@ -39,21 +38,21 @@ public class ParamDeferredAction impleme
     protected Scope typeScope;
     protected WSDLSchemaManager manager;
     protected ModuleToNSMapper mapper;
-    
+
     public ParamDeferredAction(ParamType defParam, XmlSchemaElement elem) {
         param = defParam;
-        element = elem;        
+        element = elem;
     }
-    
+
     public ParamDeferredAction(ParamType defParam) {
-        param = defParam;         
+        param = defParam;
     }
-    
+
     public ParamDeferredAction(XmlSchemaElement elem) {
-        element = elem;               
+        element = elem;
     }
-    
-    public ParamDeferredAction(XmlSchemaElement elem, 
+
+    public ParamDeferredAction(XmlSchemaElement elem,
                                Scope ts,
                                XmlSchema xmlSchema,
                                XmlSchemaCollection xmlSchemas,
@@ -66,7 +65,7 @@ public class ParamDeferredAction impleme
         manager = man;
         mapper = map;
     }
-    
+
     public void execute(XmlSchemaType stype, CorbaTypeImpl ctype) {
         if (param != null) {
             param.setIdltype(ctype.getQName());
@@ -76,41 +75,38 @@ public class ParamDeferredAction impleme
             if (stype.getQName().equals(ReferenceConstants.WSADDRESSING_TYPE)) {
                 element.setNillable(true);
             }
-     
+
             if (manager == null) {
                 return;
             }
-            
+
             // Now we need to make sure we are importing any types we need
             XmlSchema importedSchema = null;
             if (stype.getQName().getNamespaceURI().equals(ReferenceConstants.WSADDRESSING_NAMESPACE)) {
                 boolean alreadyImported = false;
-                for (Iterator i = schema.getIncludes().getIterator(); i.hasNext();) {
-                    java.lang.Object o = i.next();
-                    if (o instanceof XmlSchemaImport) {
-                        XmlSchemaImport schemaImport = (XmlSchemaImport)o;
+                for (XmlSchemaExternal ext : schema.getExternals()) {
+                    if (ext instanceof XmlSchemaImport) {
+                        XmlSchemaImport schemaImport = (XmlSchemaImport)ext;
                         if (schemaImport.getNamespace().equals(ReferenceConstants.WSADDRESSING_NAMESPACE)) {
                             alreadyImported = true;
                             break;
                         }
                     }
                 }
-                    
+
                 if (!alreadyImported) {
                     // We need to add an import statement to include the WS addressing types
-                    XmlSchemaImport wsaImport = new XmlSchemaImport();
+                    XmlSchemaImport wsaImport = new XmlSchemaImport(schema);
                     wsaImport.setNamespace(ReferenceConstants.WSADDRESSING_NAMESPACE);
                     wsaImport.setSchemaLocation(ReferenceConstants.WSADDRESSING_LOCATION);
-                    schema.getItems().add(wsaImport);
-                    schema.getIncludes().add(wsaImport);
                 }
             } else if (!stype.getQName().getNamespaceURI().equals(schema.getTargetNamespace())) {
                 importedSchema = manager.getXmlSchema(mapper.map(typeScope));
                 manager.addXmlSchemaImport(schema, importedSchema, typeScope.toString("_"));
             }
-        }        
+        }
     }
-       
+
 }
 
 

Modified: cxf/trunk/tools/corba/src/main/java/org/apache/cxf/tools/corba/processors/idl/SequenceVisitor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/tools/corba/src/main/java/org/apache/cxf/tools/corba/processors/idl/SequenceVisitor.java?rev=1023402&r1=1023401&r2=1023402&view=diff
==============================================================================
--- cxf/trunk/tools/corba/src/main/java/org/apache/cxf/tools/corba/processors/idl/SequenceVisitor.java (original)
+++ cxf/trunk/tools/corba/src/main/java/org/apache/cxf/tools/corba/processors/idl/SequenceVisitor.java Sun Oct 17 02:26:06 2010
@@ -40,7 +40,7 @@ public class SequenceVisitor extends Vis
     private static final String ELEMENT_NAME = "item";
 
     private AST identifierNode;
-    
+
     public SequenceVisitor(Scope scope,
                            Definition defn,
                            XmlSchema schemaRef,
@@ -49,23 +49,23 @@ public class SequenceVisitor extends Vis
         super(scope, defn, schemaRef, wsdlVisitor);
         identifierNode = identifierNodeRef;
     }
-    
+
     public static boolean accept(AST node) {
         if (node.getType() == IDLTokenTypes.LITERAL_sequence) {
             return true;
         }
         return false;
     }
-    
+
     public void visit(AST seq) {
         // <sequence_type> ::= "sequence" "<" <simple_type_spec> "," <positive_int_const> ">"
         //                   | "sequence" "<" <simple_type_spec> ">"
-        
-        
+
+
         AST simpleTypeSpecNode = seq.getFirstChild();
         // REVISIT: TypesUtils.getPrimitiveCorbaTypeNameNode should be renamed
         // to something more suitable and should be made more general.
-        AST boundNode = TypesUtils.getCorbaTypeNameNode(simpleTypeSpecNode); 
+        AST boundNode = TypesUtils.getCorbaTypeNameNode(simpleTypeSpecNode);
         //get chance to check if bound is symbol name which defined as const,
         //if so, replace the symbol name with defined const
         if (boundNode != null) {
@@ -74,18 +74,18 @@ public class SequenceVisitor extends Vis
                 boundNode.setText(constValue);
             }
         }
-        
+
         SimpleTypeSpecVisitor visitor = new SimpleTypeSpecVisitor(new Scope(getScope(), identifierNode),
                                                                   definition,
                                                                   schema,
                                                                   wsdlVisitor,
                                                                   null);
         visitor.visit(simpleTypeSpecNode);
-        
+
         XmlSchemaType stype = visitor.getSchemaType();
         CorbaTypeImpl ctype = visitor.getCorbaType();
         Scope fullyQualifiedName = visitor.getFullyQualifiedName();
-        
+
 
         long bound = -1;
         if (boundNode != null) {
@@ -99,14 +99,14 @@ public class SequenceVisitor extends Vis
         } else {
             scopedName = new Scope(getScope(), identifierNode);
         }
-              
-        XmlSchemaType schemaType = null;                
-        
+
+        XmlSchemaType schemaType = null;
+
         // According to CORBA Binding for WSDL specification,
         // idl:sequence<octet> maps to xs:base64Binary by default.
-        // 
+        //
         // wsdlVisitor.getSequenceOctetType() returns the XmlSchema type
-        // that idl:sequence<octet> should map to, as specified by the 
+        // that idl:sequence<octet> should map to, as specified by the
         // -s command line option or the default type xsd:base64Binary.
         //
         if (stype != null) {
@@ -118,7 +118,7 @@ public class SequenceVisitor extends Vis
         } else {
             schemaType = generateSchemaType(stype, scopedName, bound, fullyQualifiedName);
         }
-        
+
         CorbaTypeImpl corbaType = null;
         if (identifierNode == null) {
             corbaType = generateCorbaAnonsequence(ctype,
@@ -135,17 +135,17 @@ public class SequenceVisitor extends Vis
         }
 
 
-        setSchemaType(schemaType); 
+        setSchemaType(schemaType);
         setCorbaType(corbaType);
         setFullyQualifiedName(fullyQualifiedName);
     }
 
-    private XmlSchemaType generateSchemaType(XmlSchemaType stype, Scope scopedName, 
+    private XmlSchemaType generateSchemaType(XmlSchemaType stype, Scope scopedName,
                                              long bound, Scope fullyQualifiedName) {
-        XmlSchemaComplexType ct = new XmlSchemaComplexType(schema);
+        XmlSchemaComplexType ct = new XmlSchemaComplexType(schema, true);
         ct.setName(mapper.mapToQName(scopedName));
         XmlSchemaSequence sequence = new XmlSchemaSequence();
-        XmlSchemaElement el = new XmlSchemaElement();
+        XmlSchemaElement el = new XmlSchemaElement(schema, false);
         el.setName(ELEMENT_NAME);
         el.setMinOccurs(0);
         if (bound != -1) {
@@ -159,15 +159,15 @@ public class SequenceVisitor extends Vis
                 el.setNillable(true);
             }
         } else {
-            SequenceDeferredAction elementAction = 
+            SequenceDeferredAction elementAction =
                 new SequenceDeferredAction(el);
-            wsdlVisitor.getDeferredActions().add(fullyQualifiedName, elementAction); 
+            wsdlVisitor.getDeferredActions().add(fullyQualifiedName, elementAction);
         }
         sequence.getItems().add(el);
         ct.setParticle(sequence);
         return ct;
     }
-    
+
     private CorbaTypeImpl generateCorbaSequence(CorbaTypeImpl ctype,
                                                 XmlSchemaType schemaType,
                                                 Scope scopedName,
@@ -177,7 +177,7 @@ public class SequenceVisitor extends Vis
         Sequence corbaSeq = new Sequence();
         if (bound == -1) {
             bound = 0;
-        }                
+        }
         corbaSeq.setBound(bound);
         corbaSeq.setQName(new QName(typeMap.getTargetNamespace(), scopedName.toString()));
         corbaSeq.setType(schemaType.getQName());
@@ -186,7 +186,7 @@ public class SequenceVisitor extends Vis
         if (ctype != null) {
             corbaSeq.setElemtype(ctype.getQName());
         } else {
-            SequenceDeferredAction seqAction = 
+            SequenceDeferredAction seqAction =
                 new SequenceDeferredAction(corbaSeq);
             wsdlVisitor.getDeferredActions().add(fullyQualifiedName, seqAction);
         }
@@ -204,37 +204,31 @@ public class SequenceVisitor extends Vis
         Anonsequence result = new Anonsequence();
         if (bound == -1) {
             bound = 0;
-        }                
+        }
         result.setBound(bound);
         result.setQName(new QName(typeMap.getTargetNamespace(), scopedName.toString()));
         //REVISIT, if we add qualification then change the below.
         result.setElemname(new QName("", ELEMENT_NAME));
         if (schemaType == null || ctype == null) {
-            SequenceDeferredAction anonSeqAction = 
+            SequenceDeferredAction anonSeqAction =
                 new SequenceDeferredAction(result);
             wsdlVisitor.getDeferredActions().add(fullyQualifiedName, anonSeqAction);
         } else {
             result.setType(schemaType.getQName());
-            result.setElemtype(ctype.getQName());        
+            result.setElemtype(ctype.getQName());
         }
 
         // Need to create an action if the type was forward declared.
-        if (schemaType != null) {
-            if (schemas.getTypeByQName(schemaType.getQName()) == null 
-                && schema.getTypeByName(schemaType.getQName()) == null) {
-                schema.getItems().add(schemaType);
-                schema.addType(schemaType);
-            }
-        } else {
-            SequenceDeferredAction anonSeqAction = 
+        if (schemaType == null) {
+            SequenceDeferredAction anonSeqAction =
                 new SequenceDeferredAction(schemas, schema);
             wsdlVisitor.getDeferredActions().add(fullyQualifiedName, anonSeqAction);
         }
-        
+
         // add corbaType
         typeMap.getStructOrExceptionOrUnion().add(result);
-        
+
         return result;
     }
-    
+
 }