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