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 en...@apache.org on 2006/08/10 13:50:38 UTC

svn commit: r430383 - in /incubator/yoko/trunk/tools/src: main/java/org/apache/yoko/tools/common/ main/java/org/apache/yoko/tools/processors/wsdl/ test/java/org/apache/yoko/tools/processors/ test/resources/idlgen/ test/resources/wsdl/

Author: enolan
Date: Thu Aug 10 06:50:36 2006
New Revision: 430383

URL: http://svn.apache.org/viewvc?rev=430383&view=rev
Log:
Yoko-123 - Adding support for ComplexContent for structs for corba binding generation
and idl generation.

Added:
    incubator/yoko/trunk/tools/src/test/resources/idlgen/content.wsdl   (with props)
    incubator/yoko/trunk/tools/src/test/resources/idlgen/expected_content.idl
    incubator/yoko/trunk/tools/src/test/resources/wsdl/content.wsdl   (with props)
Modified:
    incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/common/PrimitiveMapBase.java
    incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/processors/wsdl/WSDLParameter.java
    incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/processors/wsdl/WSDLToCorbaBinding.java
    incubator/yoko/trunk/tools/src/test/java/org/apache/yoko/tools/processors/WSDLToCorbaBindingTest.java
    incubator/yoko/trunk/tools/src/test/java/org/apache/yoko/tools/processors/WSDLToIDLGenerationTest.java

Modified: incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/common/PrimitiveMapBase.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/common/PrimitiveMapBase.java?rev=430383&r1=430382&r2=430383&view=diff
==============================================================================
--- incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/common/PrimitiveMapBase.java (original)
+++ incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/common/PrimitiveMapBase.java Thu Aug 10 06:50:36 2006
@@ -21,10 +21,8 @@
 
 import java.util.*;
 import javax.xml.namespace.QName;
-//import org.apache.yoko.wsdl.CorbaTypeImpl;
 
 public abstract class PrimitiveMapBase {
-   // protected Map<String, CorbaTypeImpl> corbaPrimitiveMap;
     protected Map<String, QName> corbaPrimitiveMap;
     
     public Object get(Object key) {

Modified: incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/processors/wsdl/WSDLParameter.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/processors/wsdl/WSDLParameter.java?rev=430383&r1=430382&r2=430383&view=diff
==============================================================================
--- incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/processors/wsdl/WSDLParameter.java (original)
+++ incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/processors/wsdl/WSDLParameter.java Thu Aug 10 06:50:36 2006
@@ -36,6 +36,9 @@
 import org.apache.schemas.yoko.bindings.corba.ModeType;
 import org.apache.schemas.yoko.bindings.corba.ParamType;
 import org.apache.ws.commons.schema.XmlSchema;
+import org.apache.ws.commons.schema.XmlSchemaChoice;
+//import org.apache.ws.commons.schema.XmlSchemaComplexContent;
+//import org.apache.ws.commons.schema.XmlSchemaComplexContentExtension;
 import org.apache.ws.commons.schema.XmlSchemaComplexType;
 import org.apache.ws.commons.schema.XmlSchemaElement;
 import org.apache.ws.commons.schema.XmlSchemaParticle;
@@ -85,20 +88,24 @@
                 Part part = (Part)i.next();
                 XmlSchemaType schemaType = null;
                 schemaType = lookUpType(part, xmlSchemaList);
-                ParamType paramtype = null;
+                ParamType paramtype = null;                
                 if (part.getElementName() != null) {
+                    XmlSchemaComplexType cpt = null;
                     if (schemaType instanceof XmlSchemaComplexType) {
+                        cpt = (XmlSchemaComplexType)schemaType;
+                    }
+                    if (cpt != null && cpt.getAttributes().getCount() == 0
+                        && cpt.getParticle() != null) {
                         Iterator it = getSchemaIterator(schemaType);
                         Iterator iter = getSchemaIterator(schemaType);
                         while (it.hasNext()) {
                             if (it.next() instanceof XmlSchemaElement) {
                                 XmlSchemaElement el = (XmlSchemaElement)iter.next();
-                                paramtype = createParam(wsdlToCorbaBinding, "in", el.getSchemaType(), el
-                                    .getQName().getLocalPart(), el.getSchemaTypeName());
-                                //if (paramtype != null) {
-                                inputs.add(paramtype);
-                                //}
-                            }                        
+                                paramtype = createParam(wsdlToCorbaBinding, "in", el.getSchemaType(), 
+                                                        el.getQName().getLocalPart(), 
+                                                        el.getSchemaTypeName());
+                                inputs.add(paramtype); 
+                            }
                         }
                     } else {
                         paramtype = createParam(wsdlToCorbaBinding, "in", schemaType, part.getName(), part
@@ -180,9 +187,13 @@
                 
                 // check if in input list
                 String mode = "out";
-                //ParamType paramtype = null;
                 if (part.getElementName() != null) {
+                    XmlSchemaComplexType cpt = null;
                     if (schemaType instanceof XmlSchemaComplexType) {
+                        cpt = (XmlSchemaComplexType)schemaType;
+                    }
+                    if (cpt != null && cpt.getAttributes().getCount() == 0 
+                        && cpt.getParticle() != null) {
                         Iterator it = getSchemaIterator(schemaType);
                         Iterator iter = getSchemaIterator(schemaType);
                         while (it.hasNext()) {
@@ -214,10 +225,16 @@
     
         if (schemaType instanceof XmlSchemaComplexType) {
             XmlSchemaComplexType cpt = (XmlSchemaComplexType)schemaType;
-            XmlSchemaParticle particle = (XmlSchemaParticle)cpt.getParticle();
+            XmlSchemaParticle particle = null;
+            if (cpt.getParticle() != null) {
+                particle = (XmlSchemaParticle)cpt.getParticle();
+            }           
             if (particle instanceof XmlSchemaSequence) {
                 XmlSchemaSequence seq = (XmlSchemaSequence)particle;
                 return seq.getItems().getIterator();                
+            } else if (particle instanceof XmlSchemaChoice) {
+                XmlSchemaChoice choice = (XmlSchemaChoice)particle;
+                return choice.getItems().getIterator();
             }
         }
         return null;
@@ -464,9 +481,10 @@
             }
 
             schemaType = lookUpType(part, xmlSchemaList);
-            if (!part.getName().equals(opName)) {
+            //if (!part.getName().equals(opName)) {
+            /*if (!schemaType.getName().equals(opName)) {
                 return true;
-            }
+            }*/
 
             if (!(schemaType instanceof XmlSchemaComplexType)) {
                 return true;

Modified: incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/processors/wsdl/WSDLToCorbaBinding.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/processors/wsdl/WSDLToCorbaBinding.java?rev=430383&r1=430382&r2=430383&view=diff
==============================================================================
--- incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/processors/wsdl/WSDLToCorbaBinding.java (original)
+++ incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/processors/wsdl/WSDLToCorbaBinding.java Thu Aug 10 06:50:36 2006
@@ -67,6 +67,7 @@
 import org.apache.schemas.yoko.bindings.corba.Unionbranch;
 
 import org.apache.ws.commons.schema.XmlSchema;
+import org.apache.ws.commons.schema.XmlSchemaAll;
 import org.apache.ws.commons.schema.XmlSchemaAttribute;
 import org.apache.ws.commons.schema.XmlSchemaChoice;
 import org.apache.ws.commons.schema.XmlSchemaComplexContent;
@@ -110,7 +111,7 @@
     static String repoString = "IDL:";     
     static boolean verboseOn;    
     String idlNamespace;
-    TypeMappingType typeMappingType;    
+    TypeMappingType typeMappingType = new TypeMappingType();    
     ExtensionRegistry extReg;
     Definition def;
     
@@ -161,7 +162,6 @@
             setIdlNamespace(def);
         }
         generateNSPrefix(def, getIdlNamespace(), "ns");
-        //corbaPrimitiveMap = new CorbaPrimitiveMap();
 
         typeProcessor.process();
 
@@ -686,7 +686,7 @@
             if (arrayType != null) {
                 arrayType.setQName(null);
                 if (!isDuplicate(arrayType)) {
-                    typeMappingType.getStructOrExceptionOrUnion().add(corbatype);
+                    typeMappingType.getStructOrExceptionOrUnion().add(arrayType);
                 }
             }
         }
@@ -749,12 +749,21 @@
                                                 QName defaultName, QName schemaTypeName)
         throws Exception {        
         CorbaTypeImpl type = null;
+        QName seqName = null;
 
-        schemaTypeName = checkPrefix(schemaTypeName);  
-        Struct struct = new Struct();
-        struct.setName(schemaTypeName.getLocalPart());
-        struct.setQName(schemaTypeName);
-        struct.setRepositoryID(repoString + schemaTypeName.getLocalPart().replace('.', '/') + idlversion);
+        if (schemaTypeName == null) {
+            seqName = createQNameTargetNamespace(defaultName.getLocalPart() + "SequenceStruct");        
+        } else {        
+            seqName = createQName(schemaTypeName.getNamespaceURI(),
+                                  schemaTypeName.getLocalPart() + "SequenceStruct", 
+                                  schemaTypeName.getPrefix());
+        }
+        
+        schemaTypeName = checkPrefix(schemaTypeName);
+        Struct struct = new Struct();       
+        struct.setName(seqName.getLocalPart());
+        struct.setQName(seqName);
+        struct.setRepositoryID(repoString + seqName.getLocalPart().replace('.', '/') + idlversion);
         struct.setType(schemaTypeName);
         
         List members = processContainerAsMembers(seq, defaultName, schemaTypeName);
@@ -764,8 +773,7 @@
         }        
         
         type = struct;
-        
-        
+                
         if (!"1".equals(seq.getMaxOccurs()) || !"1".equals(seq.getMinOccurs())) {
             QName name = createQNameTargetNamespace(type.getQName().getLocalPart() + "Array");            
             CorbaTypeImpl atype = createArray(name, type.getQName(), type.getQName(),
@@ -1053,7 +1061,7 @@
             corbaArray.setQName(name);            
             corbatype = corbaArray;
         } else {
-            //Create an Array
+            //Create an Anonymous Array
             Anonarray corbaArray = new Anonarray();
             corbaArray.setName(name.getLocalPart());
             corbaArray.setType(schematypeName);            
@@ -1219,11 +1227,75 @@
 
         if (complex.getContent() instanceof XmlSchemaComplexContentExtension) {
             XmlSchemaComplexContentExtension extype 
-                = (XmlSchemaComplexContentExtension)complex.getContent();    
-            //extype.getParticle();            
+                = (XmlSchemaComplexContentExtension)complex.getContent();
+            
+            // Add base as a member of this struct
+            MemberType memberType = new MemberType();
+            memberType.setName(extype.getBaseTypeName().getLocalPart() + "_f");
+            QName typeName = createQNameCorbaNamespace(extype.getBaseTypeName().getLocalPart());
+            memberType.setIdltype(typeName);
+            corbaStruct.getMember().add(memberType);
+            
+            // process attributes at complexContent level
+            List attlist1 = processAttributesAsMembers(extype.getAttributes().getIterator());
+            MemberType member = new MemberType();
+            for (int i = 0; i < attlist1.size(); i++) {
+                member = (MemberType)attlist1.get(i);
+                corbaStruct.getMember().add(member);
+            }
+            
+            // Process members of Current Type
+            if (extype.getParticle() instanceof XmlSchemaChoice) {
+                XmlSchemaChoice choice = (XmlSchemaChoice)extype.getParticle();
+                QName choicename = createQNameTargetNamespace(schematypeName.getLocalPart() + "ChoiceType");
+                Union choiceunion = createUnion(choicename, choice,
+                                                defaultName, schematypeName);
+
+                String repoId = repoString + choiceunion.getQName().getLocalPart().replace('.', '/')
+                    + idlversion;
+                choiceunion.setRepositoryID(repoId);                                
+                
+                MemberType choicemem = new MemberType();
+                choicemem.setName(choiceunion.getQName().getLocalPart() + "_f");
+                QName type = createQNameCorbaNamespace(choiceunion.getQName().getLocalPart());
+                choicemem.setIdltype(type);                
+                corbaStruct.getMember().add(choicemem);
+                
+                if (!isDuplicate(choiceunion)) {
+                    choiceunion.setQName(null);
+                    typeMappingType.getStructOrExceptionOrUnion().add(choiceunion);
+                }
+
+            } else if (extype.getParticle() instanceof  XmlSchemaSequence) {
+                XmlSchemaSequence seq = (XmlSchemaSequence)extype.getParticle();
+                CorbaTypeImpl seqtype = 
+                    processSequenceType(seq, defaultName, schematypeName);                               
+
+                if (seqtype != null) {                    
+                    MemberType seqmem = new MemberType();
+                    seqmem.setName(seqtype.getQName().getLocalPart() + "_f");
+                    QName type = createQNameCorbaNamespace(seqtype.getQName().getLocalPart());
+                    seqmem.setIdltype(type);
+                    //seqmem.setIdltype(seqtype.getQName());
+                    corbaStruct.getMember().add(seqmem);
+                    if (!isDuplicate(seqtype)) {
+                        seqtype.setQName(null);
+                        typeMappingType.getStructOrExceptionOrUnion().add(seqtype);
+                    }
+                } else {                    
+                    LOG.log(Level.WARNING, "Couldnt map Sequence inside extension");
+                }
 
+            } else if (extype.getParticle() instanceof  XmlSchemaAll) {
+                XmlSchemaAll all = (XmlSchemaAll)extype.getParticle();
+                
+                // TODO - processAll();
+            }
+            
         } else {
-            //log.error("Restriction inside ComplexContent is not yet Supported.");
+            org.objectweb.celtix.common.i18n.Message msg = new org.objectweb.celtix.common.i18n.Message(
+                               "Restriction inside ComplexContent is not yet Supported.", LOG);
+            //throw new Exception(msg.toString());            
             return null;
         }
 
@@ -1239,15 +1311,24 @@
             CorbaTypeImpl membertype = null;
 
             if (attribute.getUse().getValue() != null
-                && attribute.getUse().getValue().equals(W3CConstants.USE_OPTIONAL)) {
-                CorbaTypeImpl atttype = 
-                     convertSchemaToCorbaType(attribute.getSchemaType(), attribute.getQName(), 
+                && attribute.getUse().getValue().equals(W3CConstants.USE_OPTIONAL)) {                
+                CorbaTypeImpl attType = null;
+                if (attribute.getSchemaType() != null) {
+                    attType = convertSchemaToCorbaType(attribute.getSchemaType(), 
+                                                       attribute.getQName(), 
                                               attribute.getSchemaType(), true);
-                QName name =  createQNameTargetNamespace(atttype.getQName().getLocalPart() + "_nil");
-                membertype = createNillableUnion(name, attribute.getQName(), atttype.getQName());
+                } else {
+                    attType = processPrimitiveType(attribute.getSchemaTypeName());
+                }
+                QName name =  createQNameTargetNamespace(attType.getQName().getLocalPart() + "_nil");
+                membertype = createNillableUnion(name, attribute.getQName(), attType.getQName());
             } else {
-                membertype = convertSchemaToCorbaType(attribute.getSchemaType(), attribute.getQName(), 
+                if (attribute.getSchemaType() != null) {
+                    membertype = convertSchemaToCorbaType(attribute.getSchemaType(), attribute.getQName(), 
                                                       attribute.getSchemaType(), false);
+                } else {
+                    membertype = processPrimitiveType(attribute.getSchemaTypeName());
+                }
             }
 
             if (membertype != null) {
@@ -1639,6 +1720,9 @@
     }
 
 
+    public QName createQName(String name, String namespaceName, String prefix) {
+        return new QName(name, namespaceName, prefix);
+    }
     public QName createQNameCorbaNamespace(String name) {
         return new QName(getIdlNamespace(), name, def.getPrefix(getIdlNamespace()));
     }

Modified: incubator/yoko/trunk/tools/src/test/java/org/apache/yoko/tools/processors/WSDLToCorbaBindingTest.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/tools/src/test/java/org/apache/yoko/tools/processors/WSDLToCorbaBindingTest.java?rev=430383&r1=430382&r2=430383&view=diff
==============================================================================
--- incubator/yoko/trunk/tools/src/test/java/org/apache/yoko/tools/processors/WSDLToCorbaBindingTest.java (original)
+++ incubator/yoko/trunk/tools/src/test/java/org/apache/yoko/tools/processors/WSDLToCorbaBindingTest.java Thu Aug 10 06:50:36 2006
@@ -46,6 +46,8 @@
 import org.apache.yoko.tools.processors.wsdl.WSDLToIDLAction;
 
 public class WSDLToCorbaBindingTest extends TestCase {
+    WSDLToCorbaBinding generator;
+    WSDLWriter writer;
 
     public WSDLToCorbaBindingTest(String name) {
         super(name);
@@ -53,6 +55,15 @@
 
     protected void setUp() {
         System.setProperty("UseWSDLModelCaching", "false");
+        generator = new WSDLToCorbaBinding();
+        try {
+            WSDLCorbaFactory wsdlfactory = WSDLCorbaFactory
+                .newInstance("org.apache.yoko.tools.common.WSDLCorbaFactoryImpl");
+    
+            writer = wsdlfactory.newWSDLWriter();
+        } catch (Exception ex) {
+            ex.printStackTrace();
+        }
     }
 
     protected void tearDown() {
@@ -63,17 +74,34 @@
         junit.textui.TestRunner.run(WSDLToCorbaBindingTest.class);
     }
  
+    public void testComplexContentStructType() throws Exception {
+        String fileName = getClass().getResource("/wsdl/content.wsdl").toString();
+        generator.setWsdlFile(fileName);
+        generator.addInterfaceName("ContentPortType");
+
+        Definition model = generator.generateCORBABinding();
+        Document document = writer.getDocument(model);
+
+        Element typemap = null;
+        Element root = document.getDocumentElement();
+        for (Node nd = root.getFirstChild(); nd != null; nd = nd.getNextSibling()) {
+            if (Node.ELEMENT_NODE == nd.getNodeType() && ("corba:typeMapping".equals(nd.getNodeName()))) {
+                typemap = (Element)nd;
+                break;
+            }
+        }
+        assertNotNull(typemap);
+        assertEquals(1, typemap.getElementsByTagName("corba:union").getLength());        
+        assertEquals(4, typemap.getElementsByTagName("corba:struct").getLength());
+    }
+
     
     public void testSequenceType() throws Exception {
-        WSDLToCorbaBinding generator = new WSDLToCorbaBinding();
         String fileName = getClass().getResource("/wsdl/sequencetype.wsdl").toString();
         generator.setWsdlFile(fileName);
         generator.addInterfaceName("IACC.Server");
 
         Definition model = generator.generateCORBABinding();
-        WSDLCorbaFactory wsdlfactory = WSDLCorbaFactory
-            .newInstance("org.apache.yoko.tools.common.WSDLCorbaFactoryImpl");
-        WSDLWriter writer = wsdlfactory.newWSDLWriter();
         Document document = writer.getDocument(model);
 
         Element typemap = null;
@@ -90,15 +118,11 @@
     }
     
     public void testUnionType() throws Exception {
-        WSDLToCorbaBinding generator = new WSDLToCorbaBinding();
         String fileName = getClass().getResource("/wsdl/uniontype.wsdl").toString();
         generator.setWsdlFile(fileName);
         generator.addInterfaceName("Test.MultiPart");
 
         Definition model = generator.generateCORBABinding();
-        WSDLCorbaFactory wsdlfactory = WSDLCorbaFactory
-            .newInstance("org.apache.yoko.tools.common.WSDLCorbaFactoryImpl");
-        WSDLWriter writer = wsdlfactory.newWSDLWriter();
         Document document = writer.getDocument(model);
 
         Element typemap = null;
@@ -116,7 +140,6 @@
     
     // next story to add Fault support
     public void testExceptionCORBABindingGeneration() throws Exception {
-        WSDLToCorbaBinding generator = new WSDLToCorbaBinding();
         String fileName = getClass().getResource("/wsdl/exceptions.wsdl").toString();
         generator.setWsdlFile(fileName);
         generator.addInterfaceName("TestException.ExceptionTest");
@@ -171,7 +194,6 @@
     }
     
     public void testCORBABindingGeneration() throws Exception {
-        WSDLToCorbaBinding generator = new WSDLToCorbaBinding();
         String fileName = getClass().getResource("/wsdl/simpleList.wsdl").toString();
         generator.setWsdlFile(fileName);
         generator.addInterfaceName("BasePortType");
@@ -223,15 +245,11 @@
     }
     
     public void testCORBATypeMapGeneration() throws Exception {
-        WSDLToCorbaBinding generator = new WSDLToCorbaBinding();
         String fileName = getClass().getResource("/wsdl/simpleList.wsdl").toString();
         generator.setWsdlFile(fileName);
         generator.addInterfaceName("BasePortType");
 
         Definition model = generator.generateCORBABinding();
-        WSDLCorbaFactory wsdlfactory = WSDLCorbaFactory
-        .newInstance("org.apache.yoko.tools.common.WSDLCorbaFactoryImpl");
-        WSDLWriter writer = wsdlfactory.newWSDLWriter();        
         Document document = writer.getDocument(model);        
 
         Element typemap = null;
@@ -248,7 +266,6 @@
     
     public void testSimpleListIdl() throws Exception {
         try {
-            WSDLToCorbaBinding generator = new WSDLToCorbaBinding();
             String fileName = getClass().getResource("/wsdl/simpleList.wsdl").toString();
             generator.setWsdlFile(fileName);
             generator.addInterfaceName("BasePortType");
@@ -269,15 +286,11 @@
     }
         
     public void testMultipartTypeMapGeneration() throws Exception {
-        WSDLToCorbaBinding generator = new WSDLToCorbaBinding();
         String fileName = getClass().getResource("/wsdl/multipart.wsdl").toString();
         generator.setWsdlFile(fileName);
         generator.addInterfaceName("Test.MultiPart");
 
         Definition model = generator.generateCORBABinding();
-        WSDLCorbaFactory wsdlfactory = WSDLCorbaFactory
-        .newInstance("org.apache.yoko.tools.common.WSDLCorbaFactoryImpl");
-        WSDLWriter writer = wsdlfactory.newWSDLWriter();        
         Document document = writer.getDocument(model);        
 
         Element typemap = null;
@@ -285,6 +298,7 @@
         for (Node nd = root.getFirstChild(); nd != null; nd = nd.getNextSibling()) {
             if (Node.ELEMENT_NODE == nd.getNodeType() && ("corba:typeMapping".equals(nd.getNodeName()))) {
                 typemap = (Element)nd;
+                break;
             }
         } 
         assertNotNull(typemap);        
@@ -293,7 +307,6 @@
     
     public void testMulitPartIdl() throws Exception {
         try {
-            WSDLToCorbaBinding generator = new WSDLToCorbaBinding();
             String fileName = getClass().getResource("/wsdl/multipart.wsdl").toString();
             generator.setWsdlFile(fileName);
             generator.addInterfaceName("Test.MultiPart");
@@ -313,7 +326,6 @@
     }
     
     public void testMultipartCORBABindingGeneration() throws Exception {
-        WSDLToCorbaBinding generator = new WSDLToCorbaBinding();
         String fileName = getClass().getResource("/wsdl/multipart.wsdl").toString();
         generator.setWsdlFile(fileName);
         generator.addInterfaceName("Test.MultiPart");
@@ -470,7 +482,6 @@
     
     public void testArrayMapping() throws Exception {
         try {
-            WSDLToCorbaBinding generator = new WSDLToCorbaBinding();
             String fileName = getClass().getResource("/wsdl/array.wsdl").toString();
             generator.setWsdlFile(fileName);
             generator.addInterfaceName("X");
@@ -531,8 +542,6 @@
         } finally {
             new File("array.idl").deleteOnExit();
         }
-
     }
-
-
+        
 }

Modified: incubator/yoko/trunk/tools/src/test/java/org/apache/yoko/tools/processors/WSDLToIDLGenerationTest.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/tools/src/test/java/org/apache/yoko/tools/processors/WSDLToIDLGenerationTest.java?rev=430383&r1=430382&r2=430383&view=diff
==============================================================================
--- incubator/yoko/trunk/tools/src/test/java/org/apache/yoko/tools/processors/WSDLToIDLGenerationTest.java (original)
+++ incubator/yoko/trunk/tools/src/test/java/org/apache/yoko/tools/processors/WSDLToIDLGenerationTest.java Thu Aug 10 06:50:36 2006
@@ -36,6 +36,8 @@
 
     protected static final String START_COMMENT = "/*";
     protected static final String END_COMMENT = "*/";
+    WSDLToIDLAction idlgen;
+    ByteArrayOutputStream idloutput;
 
     public WSDLToIDLGenerationTest(String name) {
         super(name);
@@ -43,6 +45,8 @@
     
     protected void setUp() {
         System.setProperty("WSDLTOIDLGeneration", "false");
+        idlgen = new WSDLToIDLAction();
+        idloutput = new ByteArrayOutputStream();
     }
 
     protected void tearDown() {
@@ -111,13 +115,11 @@
 
     public void testOnewayGeneration() throws Exception {
         
-        WSDLToIDLAction idlgen = new WSDLToIDLAction();
         String fileName = getClass().getResource("/idlgen/oneway.wsdl").toString();
         idlgen.setWsdlFile(fileName);
                 
         idlgen.setBindingName("BaseCORBABinding");
         idlgen.setOutputFile("oneway.idl");
-        ByteArrayOutputStream idloutput = new ByteArrayOutputStream();
         idlgen.setOutput(new PrintWriter(idloutput));
         idlgen.generateIDL(null);
 
@@ -129,13 +131,11 @@
     
     public void testStringtypesIdlgen() throws Exception {
         try {
-            WSDLToIDLAction idlgen = new WSDLToIDLAction();
             String fileName = getClass().getResource("/idlgen/stringtypes.wsdl").toString();
             idlgen.setWsdlFile(fileName);
             
             idlgen.setBindingName("BasePortTypeCORBABinding");
             idlgen.setOutputFile("stringtypes.idl");
-            ByteArrayOutputStream idloutput = new ByteArrayOutputStream();
             idlgen.setOutput(new PrintWriter(idloutput));
             idlgen.generateIDL(null);
 
@@ -150,13 +150,11 @@
 
     public void testIntegertypesIdlgen() throws Exception {
         try {
-            WSDLToIDLAction idlgen = new WSDLToIDLAction();
             String fileName = getClass().getResource("/idlgen/integertypes.wsdl").toString();
             idlgen.setWsdlFile(fileName);
             
             idlgen.setBindingName("BasePortTypeCORBABinding");
             idlgen.setOutputFile("integertypes.idl");
-            ByteArrayOutputStream idloutput = new ByteArrayOutputStream();
             idlgen.setOutput(new PrintWriter(idloutput));
             idlgen.generateIDL(null);
 
@@ -171,13 +169,11 @@
     
     public void testUniontypesIdlgen() throws Exception {
         try {
-            WSDLToIDLAction idlgen = new WSDLToIDLAction();
             String fileName = getClass().getResource("/idlgen/uniontypes.wsdl").toString();
             idlgen.setWsdlFile(fileName);
             
             idlgen.setBindingName("Test.MultiPartCORBABinding");
             idlgen.setOutputFile("uniontypes.idl");
-            ByteArrayOutputStream idloutput = new ByteArrayOutputStream();
             idlgen.setOutput(new PrintWriter(idloutput));
             idlgen.generateIDL(null);
 
@@ -186,20 +182,18 @@
 
             checkIDLStrings(orig, idloutput.toByteArray());
         } finally {
-            new File("integertypes.idl").deleteOnExit();
+            new File("uniontypes.idl").deleteOnExit();
         }
     }
 
     public void testExceptionIdlgen() throws Exception {
 
         try {
-            WSDLToIDLAction idlgen = new WSDLToIDLAction();
             String fileName = getClass().getResource("/idlgen/exceptions.wsdl").toString();
             idlgen.setWsdlFile(fileName);
 
             idlgen.setBindingName("TestException.ExceptionTestCORBABinding");
             idlgen.setOutputFile("exceptiontypes.idl");
-            ByteArrayOutputStream idloutput = new ByteArrayOutputStream();
             idlgen.setOutput(new PrintWriter(idloutput));
             idlgen.generateIDL(null);
 
@@ -215,13 +209,11 @@
     public void testStructIdlgen() throws Exception {
 
         try {
-            WSDLToIDLAction idlgen = new WSDLToIDLAction();
             String fileName = getClass().getResource("/idlgen/struct.wsdl").toString();
             idlgen.setWsdlFile(fileName);
 
             idlgen.setBindingName("StructTestCORBABinding");
             idlgen.setOutputFile("structtypes.idl");
-            ByteArrayOutputStream idloutput = new ByteArrayOutputStream();
             idlgen.setOutput(new PrintWriter(idloutput));
             idlgen.generateIDL(null);
 
@@ -238,13 +230,11 @@
     public void testSequenceIdlgen() throws Exception {
 
         try {
-            WSDLToIDLAction idlgen = new WSDLToIDLAction();
             String fileName = getClass().getResource("/idlgen/sequencetype.wsdl").toString();
             idlgen.setWsdlFile(fileName);
 
             idlgen.setBindingName("IACC.ServerCORBABinding");
             idlgen.setOutputFile("sequencetypes.idl");
-            ByteArrayOutputStream idloutput = new ByteArrayOutputStream();
             idlgen.setOutput(new PrintWriter(idloutput));
             idlgen.generateIDL(null);
 
@@ -260,13 +250,11 @@
     public void testArrayIdlgen() throws Exception {
 
         try {
-            WSDLToIDLAction idlgen = new WSDLToIDLAction();
             String fileName = getClass().getResource("/idlgen/array.wsdl").toString();
             idlgen.setWsdlFile(fileName);
 
             idlgen.setBindingName("XCORBABinding");
             idlgen.setOutputFile("arraytypes.idl");
-            ByteArrayOutputStream idloutput = new ByteArrayOutputStream();
             idlgen.setOutput(new PrintWriter(idloutput));
             idlgen.generateIDL(null);
 
@@ -282,14 +270,12 @@
 
     public void testEnumIdlgen() throws Exception {
         
-        try {
-            WSDLToIDLAction idlgen = new WSDLToIDLAction();
+        try {           
             String fileName = getClass().getResource("/idlgen/enum.wsdl").toString();
             idlgen.setWsdlFile(fileName);
             
             idlgen.setBindingName("BVOIPCORBABinding");
             idlgen.setOutputFile("enumtype.idl");
-            ByteArrayOutputStream idloutput = new ByteArrayOutputStream();
             idlgen.setOutput(new PrintWriter(idloutput));
             idlgen.generateIDL(null);
 
@@ -298,8 +284,29 @@
 
             checkIDLStrings(orig, idloutput.toByteArray());
         } finally {
-            new File("stringtypes.idl").deleteOnExit();
+            new File("enumtype.idl").deleteOnExit();
+        }
+    }
+    
+    public void testContentIdlgen() throws Exception {
+        
+        try {
+            String fileName = getClass().getResource("/idlgen/content.wsdl").toString();
+            idlgen.setWsdlFile(fileName);
+            
+            idlgen.setBindingName("ContentCORBABinding");
+            idlgen.setOutputFile("contenttype.idl");            
+            idlgen.setOutput(new PrintWriter(idloutput));
+            idlgen.generateIDL(null);
+
+            InputStream origstream = getClass().getResourceAsStream("/idlgen/expected_content.idl");
+            byte orig[] = inputStreamToBytes(origstream);
+
+            checkIDLStrings(orig, idloutput.toByteArray());
+        } finally {
+            new File("contenttype.idl").deleteOnExit();
         }
     }
+
     
 }

Added: incubator/yoko/trunk/tools/src/test/resources/idlgen/content.wsdl
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/tools/src/test/resources/idlgen/content.wsdl?rev=430383&view=auto
==============================================================================
--- incubator/yoko/trunk/tools/src/test/resources/idlgen/content.wsdl (added)
+++ incubator/yoko/trunk/tools/src/test/resources/idlgen/content.wsdl Thu Aug 10 06:50:36 2006
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions targetNamespace="http://schemas.apache.org/" xmlns:typens="http://schemas.apache.org/xsd" xmlns:corba="http://schemas.apache.org/yoko/bindings/corba" xmlns:ns1="http://schemas.apache.org/corba/typemap/" xmlns:wsdlns="http://schemas.apache.org/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/">
+  <corba:typeMapping targetNamespace="http://schemas.apache.org/corba/typemap/">
+    <corba:struct xmlns:typens="http://schemas.apache.org/xsd" repositoryID="IDL:sub1SequenceStruct:1.0" type="typens:sub1" name="sub1SequenceStruct">
+      <corba:member name="e3" idltype="corba:float" />
+    </corba:struct>
+      <corba:struct xmlns:typens="http://schemas.apache.org/xsd" repositoryID="IDL:sub1:1.0" type="typens:sub1" name="sub1">
+        <corba:member xmlns:ns1="http://schemas.apache.org/corba/typemap/" name="base_f" idltype="ns1:base" />
+        <corba:member xmlns:ns1="http://schemas.apache.org/corba/typemap/" name="sub1SequenceStruct_f" idltype="ns1:sub1SequenceStruct" />
+      </corba:struct>
+        <corba:struct xmlns:typens="http://schemas.apache.org/xsd" repositoryID="IDL:base:1.0" type="typens:base" name="base">
+          <corba:member name="attr1" idltype="corba:string" />
+          <corba:member name="attr2" idltype="corba:long" />
+          <corba:member name="e1" idltype="corba:long" />
+          <corba:member name="e2" idltype="corba:string" />
+        </corba:struct>
+          <corba:union xmlns:typens="http://schemas.apache.org/xsd" discriminator="corba:long" repositoryID="IDL:sub2ChoiceType:1.0" type="typens:sub2" name="sub2ChoiceType">
+            <corba:unionbranch name="e4" idltype="corba:double" default="false">
+              <corba:case label="0" />
+            </corba:unionbranch>
+              <corba:unionbranch name="e6" idltype="corba:double" default="false">
+                <corba:case label="1" />
+              </corba:unionbranch>
+              </corba:union>
+                <corba:struct xmlns:typens="http://schemas.apache.org/xsd" repositoryID="IDL:sub2:1.0" type="typens:sub2" name="sub2">
+                  <corba:member xmlns:ns1="http://schemas.apache.org/corba/typemap/" name="base_f" idltype="ns1:base" />
+                  <corba:member xmlns:ns1="http://schemas.apache.org/corba/typemap/" name="sub2ChoiceType_f" idltype="ns1:sub2ChoiceType" />
+                </corba:struct>
+                </corba:typeMapping>
+  <types>
+    <schema elementFormDefault="qualified" targetNamespace="http://schemas.apache.org/xsd" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+            <element name="in_obj" type="typens:base"/>
+            <element name="result_obj" type="typens:base"/>
+            <element name="in_obj2" type="typens:sub1"/>
+            <element name="result_obj2" type="typens:sub2"/>
+
+            <complexType name="base">
+                <sequence>
+                    <element name="e1" type="xsd:int"/>
+                    <element name="e2" type="xsd:string"/>
+                </sequence>
+                <attribute name="attr1" type="xsd:string" use="required"/>
+                <attribute name="attr2" type="xsd:int" use="required"/>
+            </complexType>
+            <complexType name="sub1">
+                <complexContent>
+                    <extension base="typens:base">
+                        <sequence>
+                            <element name="e3" type="xsd:float"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <complexType name="sub2">
+
+                <complexContent>
+                    <extension base="typens:base">
+                        <choice>
+                            <element name="e4" type="xsd:double"/>
+                            <element name="e6" type="xsd:double"/>
+                        </choice>
+                    </extension>
+                </complexContent>
+
+            </complexType>
+        </schema>
+  </types>
+  <message name="echoObject2Response">
+    <part name="Result" element="typens:result_obj2"/>
+  </message>
+  <message name="echoObject">
+    <part name="x" element="typens:in_obj"/>
+  </message>
+  <message name="echoObjectResponse">
+    <part name="Result" element="typens:result_obj"/>
+  </message>
+  <message name="echoObject2">
+    <part name="x" element="typens:in_obj2"/>
+  </message>
+  <portType name="ContentPortType">
+    <operation name="echoObject" parameterOrder="x">
+      <input name="echoObject" message="wsdlns:echoObject"/>
+      <output name="echoObjectResponse" message="wsdlns:echoObjectResponse"/>
+    </operation>
+    <operation name="echoObject2" parameterOrder="x">
+      <input name="echoObject2" message="wsdlns:echoObject2"/>
+      <output name="echoObject2Response" message="wsdlns:echoObject2Response"/>
+    </operation>
+  </portType>
+  <binding name="ContentCORBABinding" type="wsdlns:ContentPortType">
+    <corba:binding repositoryID="IDL:ContentPortType:1.0" />
+    <operation name="echoObject">
+      <corba:operation name="echoObject">
+        <corba:param xmlns:ns1="http://schemas.apache.org/corba/typemap/" mode="in" name="x" idltype="ns1:base" />
+        <corba:return xmlns:ns1="http://schemas.apache.org/corba/typemap/" name="Result" idltype="ns1:base" />
+      </corba:operation>
+      <input name="echoObject">
+      </input>
+      <output name="echoObjectResponse">
+      </output>
+    </operation>
+    <operation name="echoObject2">
+      <corba:operation name="echoObject2">
+        <corba:param xmlns:ns1="http://schemas.apache.org/corba/typemap/" mode="in" name="x" idltype="ns1:sub1" />
+        <corba:return xmlns:ns1="http://schemas.apache.org/corba/typemap/" name="Result" idltype="ns1:sub2" />
+      </corba:operation>
+      <input name="echoObject2">
+      </input>
+      <output name="echoObject2Response">
+      </output>
+    </operation>
+  </binding>
+</definitions>

Propchange: incubator/yoko/trunk/tools/src/test/resources/idlgen/content.wsdl
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/yoko/trunk/tools/src/test/resources/idlgen/content.wsdl
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: incubator/yoko/trunk/tools/src/test/resources/idlgen/expected_content.idl
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/tools/src/test/resources/idlgen/expected_content.idl?rev=430383&view=auto
==============================================================================
--- incubator/yoko/trunk/tools/src/test/resources/idlgen/expected_content.idl (added)
+++ incubator/yoko/trunk/tools/src/test/resources/idlgen/expected_content.idl Thu Aug 10 06:50:36 2006
@@ -0,0 +1,33 @@
+struct sub1SequenceStruct {
+    float e3;
+};
+struct base {
+    string attr1;
+    long attr2;
+    long e1;
+    string e2;
+};
+struct sub1 {
+    base base_f;
+    sub1SequenceStruct sub1SequenceStruct_f;
+};
+union sub2ChoiceType switch(long) {
+    case 0:
+        double e4;
+    case 1:
+        double e6;
+};
+struct sub2 {
+    base base_f;
+    sub2ChoiceType sub2ChoiceType_f;
+};
+interface ContentPortType {
+    ::base
+    echoObject(
+        in ::base x
+    );
+    ::sub2
+    echoObject2(
+        in ::sub1 x
+    );
+};

Added: incubator/yoko/trunk/tools/src/test/resources/wsdl/content.wsdl
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/tools/src/test/resources/wsdl/content.wsdl?rev=430383&view=auto
==============================================================================
--- incubator/yoko/trunk/tools/src/test/resources/wsdl/content.wsdl (added)
+++ incubator/yoko/trunk/tools/src/test/resources/wsdl/content.wsdl Thu Aug 10 06:50:36 2006
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions targetNamespace="http://schemas.apache.org/"
+    xmlns="http://schemas.xmlsoap.org/wsdl/"
+    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+    xmlns:typens="http://schemas.apache.org/xsd"
+    xmlns:wsdlns="http://schemas.apache.org/"
+    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+    <types>
+        <schema elementFormDefault="qualified"
+            targetNamespace="http://schemas.apache.org/xsd"
+            xmlns="http://www.w3.org/2001/XMLSchema"
+            xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+            <element name="in_obj" type="typens:base"/>
+            <element name="result_obj" type="typens:base"/>
+            <element name="in_obj2" type="typens:sub1"/>
+            <element name="result_obj2" type="typens:sub2"/>
+
+            <complexType name="base">
+                <sequence>
+                    <element name="e1" type="xsd:int"/>
+                    <element name="e2" type="xsd:string"/>
+                </sequence>
+                <attribute name="attr1" type="xsd:string" use="required"/>
+                <attribute name="attr2" type="xsd:int" use="required"/>
+            </complexType>
+            <complexType name="sub1">
+                <complexContent>
+                    <extension base="typens:base">
+                        <sequence>
+                            <element name="e3" type="xsd:float"/>
+                        </sequence>
+                    </extension>
+                </complexContent>
+            </complexType>
+            <complexType name="sub2">
+
+                <complexContent>
+                    <extension base="typens:base">
+                        <choice>
+                            <element name="e4" type="xsd:double"/>
+                            <element name="e6" type="xsd:double"/>
+                        </choice>
+                    </extension>
+                </complexContent>
+
+            </complexType>
+        </schema>
+    </types>
+    <message name="echoObject">
+        <part element="typens:in_obj" name="x"/>
+    </message>
+    <message name="echoObjectResponse">
+                <part element="typens:result_obj" name="Result"/>
+    </message>
+    <message name="echoObject2">
+        <part element="typens:in_obj2" name="x"/>
+    </message>
+    <message name="echoObject2Response">
+        <part element="typens:result_obj2" name="Result"/>
+    </message>
+
+    <portType name="ContentPortType">
+        <operation name="echoObject" parameterOrder="x">
+            <input message="wsdlns:echoObject" name="echoObject"/>
+            <output message="wsdlns:echoObjectResponse" name="echoObjectResponse"/>
+        </operation>
+        <operation name="echoObject2" parameterOrder="x">
+            <input message="wsdlns:echoObject2" name="echoObject2"/>
+            <output message="wsdlns:echoObject2Response" name="echoObject2Response"/>
+        </operation>
+    </portType>
+
+</definitions>
+        

Propchange: incubator/yoko/trunk/tools/src/test/resources/wsdl/content.wsdl
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/yoko/trunk/tools/src/test/resources/wsdl/content.wsdl
------------------------------------------------------------------------------
    svn:mime-type = text/xml