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/09/13 14:40:54 UTC
svn commit: r442994 - in /incubator/yoko/trunk/tools/src:
main/java/org/apache/yoko/tools/
main/java/org/apache/yoko/tools/processors/wsdl/
test/java/org/apache/yoko/tools/processors/ test/resources/idlgen/
test/resources/wsdl/
Author: enolan
Date: Wed Sep 13 07:40:53 2006
New Revision: 442994
URL: http://svn.apache.org/viewvc?view=rev&rev=442994
Log:
Yoko-111 - Support for Attribute types for wsdltoidl with some refactoring.
Added:
incubator/yoko/trunk/tools/src/test/resources/idlgen/TypeInheritance.wsdl (with props)
incubator/yoko/trunk/tools/src/test/resources/idlgen/expected_typeInheritance.idl
incubator/yoko/trunk/tools/src/test/resources/wsdl/TypeInheritance.wsdl (with props)
Modified:
incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/IDLToWSDL.java
incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/processors/wsdl/WSDLToCorbaBinding.java
incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/processors/wsdl/WSDLTypes.java
incubator/yoko/trunk/tools/src/test/java/org/apache/yoko/tools/processors/WSDLToCorbaBindingTypeTest.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/IDLToWSDL.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/IDLToWSDL.java?view=diff&rev=442994&r1=442993&r2=442994
==============================================================================
--- incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/IDLToWSDL.java (original)
+++ incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/IDLToWSDL.java Wed Sep 13 07:40:53 2006
@@ -66,9 +66,7 @@
if (isVerboseOn()) {
env.put(ToolConstants.CFG_VERBOSE, Boolean.TRUE);
}
- env.put(ToolConstants.CFG_CMD_ARG, args);
-
- CommandDocument doc = super.getCommandDocument();
+ env.put(ToolConstants.CFG_CMD_ARG, args);
initialise(env);
validate(env);
idlProcessor.setEnvironment(env);
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?view=diff&rev=442994&r1=442993&r2=442994
==============================================================================
--- 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 Wed Sep 13 07:40:53 2006
@@ -661,14 +661,19 @@
if (container instanceof XmlSchemaSequence) {
XmlSchemaSequence sequence = (XmlSchemaSequence)container;
CorbaTypeImpl memberType = processSequenceType(sequence, defaultName, schemaTypeName);
+ QName typeName = memberType.getQName();
if (memberType instanceof Struct) {
- Struct str = (Struct)memberType;
- Iterator iter = str.getMember().iterator();
- while (iter.hasNext()) {
- MemberType member = (MemberType)iter.next();
- members.add(member);
- }
+ memberType.setQName(null);
+ if (!isDuplicate(memberType)) {
+ typeMappingType.getStructOrExceptionOrUnion().add(memberType);
+ }
}
+
+ MemberType member = new MemberType();
+ member.setName(memberType.getName() + "_f");
+ member.setIdltype(typeName);
+ members.add(member);
+
} else if (container instanceof XmlSchemaChoice) {
XmlSchemaChoice choice = (XmlSchemaChoice)container;
CorbaTypeImpl corbatype = processChoice(choice, defaultName, schemaTypeName);
@@ -740,12 +745,21 @@
private CorbaTypeImpl processLocalElement(XmlSchemaElement element) throws Exception {
CorbaTypeImpl membertype = new CorbaTypeImpl();
+ QName memName = null;
if (element.isNillable()) {
CorbaTypeImpl elemtype = convertSchemaToCorbaType(element.getSchemaType(), element.getQName(),
element.getSchemaType(), true);
- QName name = createQNameTargetNamespace(elemtype.getQName().getLocalPart() + "_nil");
- membertype = createNillableUnion(name, element.getQName(), elemtype.getQName());
+ QName name = createQNameTargetNamespace(elemtype.getQName().getLocalPart() + "_nil");
+ membertype = createNillableUnion(name, element.getQName(),
+ elemtype.getQName());
+ memName = createQNameCorbaNamespace(membertype.getQName().getLocalPart());
+ if (membertype != null) {
+ membertype.setQName(null);
+ if (!isDuplicate(membertype)) {
+ typeMappingType.getStructOrExceptionOrUnion().add(membertype);
+ }
+ }
} else {
// Need TO DO
// Need to check if its referencing a type first refname=""
@@ -774,9 +788,14 @@
schemaName.getLocalPart());
}
- CorbaTypeImpl arraytype =
- createArray(name, schemaName, membertype.getQName(), element.getMaxOccurs(),
- element.getMinOccurs(), false);
+ CorbaTypeImpl arraytype = null;
+ if (memName != null) {
+ arraytype = createArray(name, schemaName, memName,
+ element.getMaxOccurs(), element.getMinOccurs(), false);
+ } else {
+ arraytype = createArray(name, schemaName, membertype.getQName(),
+ element.getMaxOccurs(), element.getMinOccurs(), false);
+ }
membertype.setName(arraytype.getName());
membertype.setQName(arraytype.getQName());
@@ -899,6 +918,77 @@
return corbatype;
}
+ protected List<MemberType> processAttributesAsMembers(Iterator attrs) throws Exception {
+ QName memName = null;
+ List <MemberType>members = new ArrayList<MemberType>();
+
+ while (attrs.hasNext()) {
+ XmlSchemaAttribute attribute = (XmlSchemaAttribute)attrs.next();
+ CorbaTypeImpl membertype = null;
+
+ if (attribute.getUse().getValue().equals("none")
+ || attribute.getUse().getValue().equals(W3CConstants.USE_OPTIONAL)) {
+ CorbaTypeImpl attType = null;
+ if (attribute.getSchemaType() != null) {
+ attType = convertSchemaToCorbaType(attribute.getSchemaType(),
+ attribute.getQName(),
+ attribute.getSchemaType(), true);
+ if (attType != null) {
+ QName typeName = attType.getQName();
+ attType.setQName(null);
+ if (!isDuplicate(attType)) {
+ typeMappingType.getStructOrExceptionOrUnion().add(attType);
+ }
+ QName name = createQNameTargetNamespace(typeName.getLocalPart() + "_nil");
+ membertype = createNillableUnion(name, attribute.getQName(),
+ createQNameCorbaNamespace(typeName.getLocalPart()));
+ }
+ } else {
+ attType = processPrimitiveType(attribute.getSchemaTypeName());
+ QName name = createQNameTargetNamespace(attType.getQName().getLocalPart() + "_nil");
+ membertype = createNillableUnion(name, attribute.getQName(),
+ attType.getQName());
+
+ }
+ memName = createQNameCorbaNamespace(membertype.getQName().getLocalPart());
+ if (membertype != null) {
+ membertype.setQName(null);
+ if (!isDuplicate(membertype)) {
+ typeMappingType.getStructOrExceptionOrUnion().add(membertype);
+ }
+ }
+ } else {
+ if (attribute.getSchemaType() != null) {
+ membertype = convertSchemaToCorbaType(attribute.getSchemaType(), attribute.getQName(),
+ attribute.getSchemaType(), false);
+ } else {
+ membertype = processPrimitiveType(attribute.getSchemaTypeName());
+ }
+ }
+
+ if (membertype != null) {
+ MemberType member;
+ String memberName = attribute.getQName().getLocalPart();
+
+ member = new MemberType();
+ member.setName(memberName);
+ if (memName != null) {
+ member.setIdltype(memName);
+ } else {
+ member.setIdltype(membertype.getQName());
+ }
+ members.add(member);
+ } else {
+ String msg = "Unsupported Attribute Found in CORBA Binding Generation:"
+ + attribute.getQName();
+ LOG.log(Level.WARNING, msg.toString());
+ }
+ }
+
+ return members;
+ }
+
+
private CorbaTypeImpl processElementType(XmlSchemaElement stype, QName defaultName)
throws Exception {
@@ -1111,8 +1201,8 @@
complex = (XmlSchemaComplexType)stype;
if (!isLiteralArray(complex)
- && !isOMGUnion(complex)
- && !isUnion(complex)) {
+ && !wsdltypes.isOMGUnion(complex)
+ && !wsdltypes.isUnion(complex)) {
exception = true;
}
}
@@ -1243,9 +1333,9 @@
if (isLiteralArray(complex)) {
corbatype = processLiteralArray(complex, defaultName, anonymous);
- } else if (isOMGUnion(complex)) {
+ } else if (wsdltypes.isOMGUnion(complex)) {
corbatype = processOMGUnion(complex, defaultName);
- } else if (isUnion(complex)) {
+ } else if (wsdltypes.isUnion(complex)) {
corbatype = processRegularUnion(complex, defaultName);
} else if (complex.getQName() != null && isIDLObjectType(complex.getQName())) {
// process it.
@@ -1285,16 +1375,20 @@
} else if (complex.getContentModel() instanceof XmlSchemaComplexContent) {
corbaStruct = processComplexContentStruct((XmlSchemaComplexContent)complex.getContentModel(),
defaultName, corbaStruct, schematypeName);
- } else {
- // Process attributes at ComplexType level
+ }
+
+ // Process attributes at ComplexType level
+ if (complex.getAttributes().getIterator() != null) {
Iterator iterator = complex.getAttributes().getIterator();
List attlist2 = processAttributesAsMembers(iterator);
MemberType member = new MemberType();
for (int i = 0; i < attlist2.size(); i++) {
member = (MemberType)attlist2.get(i);
corbaStruct.getMember().add(member);
- }
+ }
+ }
+ if (complex.getParticle() != null) {
List members = processContainerAsMembers(complex.getParticle(), defaultName, schematypeName);
for (Iterator it = members.iterator(); it.hasNext();) {
@@ -1363,10 +1457,14 @@
= (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);
+ MemberType memberType = new MemberType();
+ QName extName = extype.getBaseTypeName();
+ memberType.setName(extName.getLocalPart() + "_f");
+ if (extName.getLocalPart().equals("anyType")) {
+ memberType.setIdltype(processPrimitiveType(extName).getQName());
+ } else {
+ memberType.setIdltype(createQNameCorbaNamespace(extName.getLocalPart()));
+ }
corbaStruct.getMember().add(memberType);
// process attributes at complexContent level
@@ -1380,25 +1478,8 @@
// 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);
- }
-
+ MemberType choicemem = processComplexContentStructChoice(choice, schematypeName, defaultName);
+ corbaStruct.getMember().add(choicemem);
} else if (extype.getParticle() instanceof XmlSchemaSequence) {
XmlSchemaSequence seq = (XmlSchemaSequence)extype.getParticle();
CorbaTypeImpl seqtype =
@@ -1446,53 +1527,30 @@
return corbaStruct;
}
-
- protected List<MemberType> processAttributesAsMembers(Iterator attrs) throws Exception {
- List <MemberType>members = new ArrayList<MemberType>();
-
- while (attrs.hasNext()) {
- XmlSchemaAttribute attribute = (XmlSchemaAttribute)attrs.next();
- CorbaTypeImpl membertype = null;
-
- if (attribute.getUse().getValue() != null
- && attribute.getUse().getValue().equals(W3CConstants.USE_OPTIONAL)) {
- CorbaTypeImpl attType = null;
- if (attribute.getSchemaType() != null) {
- attType = convertSchemaToCorbaType(attribute.getSchemaType(),
- attribute.getQName(),
- attribute.getSchemaType(), true);
- } else {
- attType = processPrimitiveType(attribute.getSchemaTypeName());
- }
- QName name = createQNameTargetNamespace(attType.getQName().getLocalPart() + "_nil");
- membertype = createNillableUnion(name, attribute.getQName(), attType.getQName());
- } else {
- if (attribute.getSchemaType() != null) {
- membertype = convertSchemaToCorbaType(attribute.getSchemaType(), attribute.getQName(),
- attribute.getSchemaType(), false);
- } else {
- membertype = processPrimitiveType(attribute.getSchemaTypeName());
- }
- }
-
- if (membertype != null) {
- MemberType member;
- String memberName = attribute.getQName().getLocalPart();
+ protected MemberType processComplexContentStructChoice(XmlSchemaChoice choice,
+ QName schematypeName, QName defaultName)
+ throws Exception {
+ QName choicename = createQNameTargetNamespace(schematypeName.getLocalPart() + "ChoiceType");
+ Union choiceunion = createUnion(choicename, choice,
+ defaultName, schematypeName);
- member = new MemberType();
- member.setName(memberName);
- member.setIdltype(membertype.getQName());
- members.add(member);
- } else {
- String msg = "Unsupported Attribute Found in CORBA Binding Generation:"
- + attribute.getQName();
- LOG.log(Level.WARNING, msg.toString());
- }
+ String repoId = repoString + choiceunion.getQName().getLocalPart().replace('.', '/')
+ + idlversion;
+ choiceunion.setRepositoryID(repoId);
+
+ MemberType choicemem = new MemberType();
+ choicemem.setName(choiceunion.getQName().getLocalPart() + "_f");
+ choicemem.setIdltype(createQNameCorbaNamespace(choiceunion.getQName().getLocalPart()));
+
+ if (!isDuplicate(choiceunion)) {
+ choiceunion.setQName(null);
+ typeMappingType.getStructOrExceptionOrUnion().add(choiceunion);
}
-
- return members;
+
+ return choicemem;
}
-
+
+
private CorbaTypeImpl createNillableUnion(QName name, QName schemaType, QName membertype) {
@@ -1513,13 +1571,6 @@
branch.getCase().add(caseType);
nilUnion.getUnionbranch().add(branch);
- if (nilUnion != null) {
- nilUnion.setQName(null);
- if (!isDuplicate(nilUnion)) {
- typeMappingType.getStructOrExceptionOrUnion().add(nilUnion);
- }
- }
-
return nilUnion;
}
@@ -1527,6 +1578,7 @@
boolean anonymous) throws Exception {
// NEED TO DO
QName name;
+ QName typeName = null;
QName schematypeName = checkPrefix(complex.getQName());
if (schematypeName == null) {
@@ -1552,16 +1604,25 @@
arrayType = convertSchemaToCorbaType(arrayEl.getSchemaType(),
arrayEl.getQName(),
arrayEl.getSchemaType(), true);
+ typeName = arrayType.getQName();
}
}
}
+
if (arrayEl.isNillable()) {
QName nilunionname = createQNameTargetNamespace(arrayType.getQName().getLocalPart() + "_nil");
- arrayType = createNillableUnion(nilunionname, arrayEl.getQName(), arrayType.getQName());
-
+ arrayType = createNillableUnion(nilunionname, arrayEl.getQName(),
+ arrayType.getQName());
+ typeName = createQNameCorbaNamespace(arrayType.getQName().getLocalPart());
+ if (arrayType != null) {
+ arrayType.setQName(null);
+ if (!isDuplicate(arrayType)) {
+ typeMappingType.getStructOrExceptionOrUnion().add(arrayType);
+ }
+ }
}
-
+
Long maxOccurs = null;
Long minOccurs = null;
if (arrayEl != null) {
@@ -1570,7 +1631,7 @@
}
return createArray(name, schematypeName,
- checkPrefix(arrayType.getQName()), maxOccurs, minOccurs, anonymous);
+ checkPrefix(typeName), maxOccurs, minOccurs, anonymous);
}
private CorbaTypeImpl processOMGUnion(XmlSchemaComplexType complex, QName defaultName) throws Exception {
@@ -1650,7 +1711,7 @@
}
}
- processUnionBranches(corbaUnion, fields, caselist);
+ wsdltypes.processUnionBranches(corbaUnion, fields, caselist);
return corbaUnion;
}
@@ -1694,69 +1755,13 @@
caselist.add(Integer.toString(i));
}
- return processUnionBranches(corbaUnion, fields, caselist);
+ return wsdltypes.processUnionBranches(corbaUnion, fields, caselist);
}
- private Union processUnionBranches(Union corbaUnion, List fields, List<String> caselist) {
- int caseIndex = 0;
-
- for (int i = 0; i < fields.size(); i++) {
- MemberType field = (MemberType)fields.get(i);
- Unionbranch branch = new Unionbranch();
- branch.setName(field.getName());
- branch.setIdltype(field.getIdltype());
- branch.setDefault(false);
-
- CaseType c = new CaseType();
- c.setLabel((String)caselist.get(caseIndex));
- caseIndex++;
- branch.getCase().add(c);
- corbaUnion.getUnionbranch().add(branch);
- }
- return corbaUnion;
- }
-
-
- public boolean isOMGUnion(XmlSchemaComplexType type) {
- boolean isUnion = false;
-
- if (type.getParticle() instanceof XmlSchemaSequence
- && type.getAttributes().getCount() == 0) {
-
- XmlSchemaSequence stype = (XmlSchemaSequence)type.getParticle();
-
- if (stype.getItems().getCount() == 2) {
- Iterator it = stype.getItems().getIterator();
- XmlSchemaParticle st1 = (XmlSchemaParticle)it.next();
- XmlSchemaParticle st2 = (XmlSchemaParticle)it.next();
- XmlSchemaElement discEl = null;
-
- if (st1 instanceof XmlSchemaChoice && st2 instanceof XmlSchemaElement) {
- isUnion = true;
- discEl = (XmlSchemaElement)st2;
- } else if (st2 instanceof XmlSchemaChoice && st1 instanceof XmlSchemaElement) {
- isUnion = true;
- discEl = (XmlSchemaElement)st1;
- }
- if (isUnion && !"discriminator".equals(discEl.getQName().getLocalPart())) {
- isUnion = false;
- }
- }
- }
- return isUnion;
- }
-
- public boolean isUnion(XmlSchemaComplexType type) {
- boolean isUnion = false;
- if (type.getParticle() instanceof XmlSchemaChoice && type.getAttributes().getCount() == 0) {
- isUnion = true;
- }
-
- return isUnion;
- }
+
private boolean isDuplicate(CorbaTypeImpl corbaTypeImpl) {
String corbaName = corbaTypeImpl.getName();
String corbaType = corbaTypeImpl.getType().getLocalPart();
Modified: incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/processors/wsdl/WSDLTypes.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/processors/wsdl/WSDLTypes.java?view=diff&rev=442994&r1=442993&r2=442994
==============================================================================
--- incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/processors/wsdl/WSDLTypes.java (original)
+++ incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/processors/wsdl/WSDLTypes.java Wed Sep 13 07:40:53 2006
@@ -20,6 +20,7 @@
package org.apache.yoko.tools.processors.wsdl;
import java.util.Iterator;
+import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -27,10 +28,19 @@
import org.apache.schemas.yoko.bindings.corba.Anonfixed;
import org.apache.schemas.yoko.bindings.corba.Anonstring;
+import org.apache.schemas.yoko.bindings.corba.CaseType;
import org.apache.schemas.yoko.bindings.corba.Fixed;
+import org.apache.schemas.yoko.bindings.corba.MemberType;
import org.apache.schemas.yoko.bindings.corba.Sequence;
+import org.apache.schemas.yoko.bindings.corba.Union;
+import org.apache.schemas.yoko.bindings.corba.Unionbranch;
+import org.apache.ws.commons.schema.XmlSchemaChoice;
+import org.apache.ws.commons.schema.XmlSchemaComplexType;
+import org.apache.ws.commons.schema.XmlSchemaElement;
import org.apache.ws.commons.schema.XmlSchemaFacet;
import org.apache.ws.commons.schema.XmlSchemaFractionDigitsFacet;
+import org.apache.ws.commons.schema.XmlSchemaParticle;
+import org.apache.ws.commons.schema.XmlSchemaSequence;
import org.apache.ws.commons.schema.XmlSchemaSimpleTypeRestriction;
import org.apache.ws.commons.schema.XmlSchemaTotalDigitsFacet;
import org.apache.yoko.tools.common.CORBAConstants;
@@ -44,6 +54,66 @@
public WSDLTypes() {
}
+
+ public Union processUnionBranches(Union corbaUnion, List fields, List<String> caselist) {
+ int caseIndex = 0;
+
+ for (int i = 0; i < fields.size(); i++) {
+ MemberType field = (MemberType)fields.get(i);
+ Unionbranch branch = new Unionbranch();
+ branch.setName(field.getName());
+ branch.setIdltype(field.getIdltype());
+ branch.setDefault(false);
+
+ CaseType c = new CaseType();
+ c.setLabel((String)caselist.get(caseIndex));
+ caseIndex++;
+ branch.getCase().add(c);
+ corbaUnion.getUnionbranch().add(branch);
+ }
+ return corbaUnion;
+ }
+
+
+ public boolean isOMGUnion(XmlSchemaComplexType type) {
+ boolean isUnion = false;
+
+ if (type.getParticle() instanceof XmlSchemaSequence
+ && type.getAttributes().getCount() == 0) {
+
+ XmlSchemaSequence stype = (XmlSchemaSequence)type.getParticle();
+
+ if (stype.getItems().getCount() == 2) {
+ Iterator it = stype.getItems().getIterator();
+ XmlSchemaParticle st1 = (XmlSchemaParticle)it.next();
+ XmlSchemaParticle st2 = (XmlSchemaParticle)it.next();
+ XmlSchemaElement discEl = null;
+
+ if (st1 instanceof XmlSchemaChoice && st2 instanceof XmlSchemaElement) {
+ isUnion = true;
+ discEl = (XmlSchemaElement)st2;
+ } else if (st2 instanceof XmlSchemaChoice && st1 instanceof XmlSchemaElement) {
+ isUnion = true;
+ discEl = (XmlSchemaElement)st1;
+ }
+ if (isUnion && !"discriminator".equals(discEl.getQName().getLocalPart())) {
+ isUnion = false;
+ }
+ }
+ }
+ return isUnion;
+ }
+
+ public boolean isUnion(XmlSchemaComplexType type) {
+ boolean isUnion = false;
+
+ if (type.getParticle() instanceof XmlSchemaChoice && type.getAttributes().getCount() == 0) {
+ isUnion = true;
+ }
+
+ return isUnion;
+ }
+
public CorbaTypeImpl processStringType(CorbaTypeImpl corbaTypeImpl, QName name,
String maxLength, String length) throws Exception {
Modified: incubator/yoko/trunk/tools/src/test/java/org/apache/yoko/tools/processors/WSDLToCorbaBindingTypeTest.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/tools/src/test/java/org/apache/yoko/tools/processors/WSDLToCorbaBindingTypeTest.java?view=diff&rev=442994&r1=442993&r2=442994
==============================================================================
--- incubator/yoko/trunk/tools/src/test/java/org/apache/yoko/tools/processors/WSDLToCorbaBindingTypeTest.java (original)
+++ incubator/yoko/trunk/tools/src/test/java/org/apache/yoko/tools/processors/WSDLToCorbaBindingTypeTest.java Wed Sep 13 07:40:53 2006
@@ -39,6 +39,7 @@
import org.apache.schemas.yoko.bindings.corba.Struct;
import org.apache.schemas.yoko.bindings.corba.TypeMappingType;
import org.apache.schemas.yoko.bindings.corba.Union;
+import org.apache.schemas.yoko.bindings.corba.Unionbranch;
import org.apache.yoko.tools.common.WSDLCorbaFactory;
import org.apache.yoko.tools.processors.wsdl.WSDLToCorbaBinding;
import org.apache.yoko.tools.processors.wsdl.WSDLToIDLAction;
@@ -83,6 +84,54 @@
return null;
}
+
+ // tests Type Inheritance and attributes.
+ public void testTypeInheritance() throws Exception {
+
+ try {
+ String fileName = getClass().getResource("/wsdl/TypeInheritance.wsdl").toString();
+ generator.setWsdlFile(fileName);
+ generator.addInterfaceName("TypeInheritancePortType");
+
+ Definition model = generator.generateCORBABinding();
+ Document document = writer.getDocument(model);
+
+ Element typemap = getElementNode(document, "corba:typeMapping");
+ assertNotNull(typemap);
+ assertEquals(3, typemap.getElementsByTagName("corba:union").getLength());
+ assertEquals(1, typemap.getElementsByTagName("corba:anonstring").getLength());
+ assertEquals(17, typemap.getElementsByTagName("corba:struct").getLength());
+
+ TypeMappingType mapType = (TypeMappingType)model.getExtensibilityElements().get(0);
+
+ WSDLToIDLAction idlgen = new WSDLToIDLAction();
+ idlgen.setBindingName("TypeInheritanceCORBABinding");
+ idlgen.setOutputFile("typeInherit.idl");
+ idlgen.generateIDL(model);
+
+ Anonstring str = (Anonstring)mapType.getStructOrExceptionOrUnion().get(6);
+ assertEquals("Name is incorrect for AnonString Type", "attrib2Type",
+ str.getName());
+ assertEquals("Type is incorrect for AnonString Type", "string",
+ str.getType().getLocalPart());
+
+ Union un = (Union)mapType.getStructOrExceptionOrUnion().get(7);
+ assertEquals("Name is incorrect for Union Type", "attrib2Type_nil",
+ un.getName());
+ assertEquals("Type is incorrect for Union Type", "attrib2",
+ un.getType().getLocalPart());
+ Unionbranch unbranch = un.getUnionbranch().get(0);
+ assertEquals("Name is incorrect for UnionBranch Type", "value",
+ unbranch.getName());
+ assertEquals("Type is incorrect for UnionBranch Type", "attrib2Type",
+ unbranch.getIdltype().getLocalPart());
+
+ File f = new File("typeInherit.idl");
+ assertTrue("typeInherit.idl should be generated", f.exists());
+ } finally {
+ new File("typeInherit.idl").deleteOnExit();
+ }
+ }
// tests anonymous strings and fixed types.
public void testAnonFixedType() throws Exception {
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?view=diff&rev=442994&r1=442993&r2=442994
==============================================================================
--- 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 Wed Sep 13 07:40:53 2006
@@ -388,5 +388,25 @@
}
}
-
+
+ public void testTypeInheritanceIdlgen() throws Exception {
+
+ try {
+ String fileName = getClass().getResource("/idlgen/TypeInheritance.wsdl").toString();
+ idlgen.setWsdlFile(fileName);
+
+ idlgen.setBindingName("TypeInheritanceInterfaceCORBABinding");
+ idlgen.setOutputFile("typeInheritance.idl");
+ idlgen.setOutput(new PrintWriter(idloutput));
+ idlgen.generateIDL(null);
+
+ InputStream origstream = getClass().getResourceAsStream("/idlgen/expected_typeInheritance.idl");
+ byte orig[] = inputStreamToBytes(origstream);
+
+ checkIDLStrings(orig, idloutput.toByteArray());
+ } finally {
+ new File("typeInheritance.idl").deleteOnExit();
+ }
+ }
+
}
Added: incubator/yoko/trunk/tools/src/test/resources/idlgen/TypeInheritance.wsdl
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/tools/src/test/resources/idlgen/TypeInheritance.wsdl?view=auto&rev=442994
==============================================================================
--- incubator/yoko/trunk/tools/src/test/resources/idlgen/TypeInheritance.wsdl (added)
+++ incubator/yoko/trunk/tools/src/test/resources/idlgen/TypeInheritance.wsdl Wed Sep 13 07:40:53 2006
@@ -0,0 +1,292 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions name="SoapInteropCompound" targetNamespace="http://soapinterop.org/" xmlns:typens="http://soapinterop.org/xsd" xmlns:corba="http://schemas.apache.org/yoko/bindings/corba" xmlns:ns1="http://soapinterop.org/corba/typemap/" xmlns:wsdlns="http://soapinterop.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://soapinterop.org/corba/typemap/">
+ <corba:struct xmlns:typens="http://soapinterop.org/xsd" repositoryID="IDL:Type5SequenceStruct:1.0" type="typens:Type5" name="Type5SequenceStruct">
+ <corba:member name="varInt" idltype="corba:long" />
+ <corba:member name="varString" idltype="corba:string" />
+ </corba:struct>
+ <corba:struct xmlns:typens="http://soapinterop.org/xsd" repositoryID="IDL:Type5:1.0" type="typens:Type5" name="Type5">
+ <corba:member name="varFloat" idltype="corba:float" />
+ <corba:member name="Type5SequenceStruct_f" idltype="typens:Type5SequenceStruct" />
+ </corba:struct>
+ <corba:struct xmlns:typens="http://soapinterop.org/xsd" repositoryID="IDL:Type4AllStruct:1.0" type="typens:Type4" name="Type4AllStruct">
+ <corba:member name="varStringExt" idltype="corba:string" />
+ <corba:member name="varFloatExt" idltype="corba:float" />
+ </corba:struct>
+ <corba:struct xmlns:typens="http://soapinterop.org/xsd" repositoryID="IDL:Type4:1.0" type="typens:Type4" name="Type4">
+ <corba:member name="anyType_f" idltype="corba:any" />
+ <corba:member name="AttrString" idltype="corba:string" />
+ <corba:member xmlns:ns1="http://soapinterop.org/corba/typemap/" name="Type4AllStruct_f" idltype="ns1:Type4AllStruct" />
+ </corba:struct>
+ <corba:struct xmlns:typens="http://soapinterop.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:ns3="http://soapinterop.org/xsd" discriminator="corba:boolean" repositoryID="IDL:long_nil:1.0" type="ns3:attrib1" name="long_nil">
+ <corba:unionbranch name="value" idltype="corba:long" default="false">
+ <corba:case label="TRUE" />
+ </corba:unionbranch>
+ </corba:union>
+ <corba:anonstring bound="2" type="corba:string" name="attrib2Type" />
+ <corba:union xmlns:ns3="http://soapinterop.org/xsd" discriminator="corba:boolean" repositoryID="IDL:attrib2Type_nil:1.0" type="ns3:attrib2" name="attrib2Type_nil">
+ <corba:unionbranch xmlns:ns1="http://soapinterop.org/corba/typemap/" name="value" idltype="ns1:attrib2Type" default="false">
+ <corba:case label="TRUE" />
+ </corba:unionbranch>
+ </corba:union>
+ <corba:struct xmlns:typens="http://soapinterop.org/xsd" repositoryID="IDL:Type6:1.0" type="typens:Type6" name="Type6">
+ <corba:member xmlns:xs="http://www.w3.org/2001/XMLSchema" name="_simpleTypeValue" idltype="xs:short" />
+ <corba:member xmlns:ns1="http://soapinterop.org/corba/typemap/" name="attrib1" idltype="ns1:long_nil" />
+ <corba:member xmlns:ns1="http://soapinterop.org/corba/typemap/" name="attrib2" idltype="ns1:attrib2Type_nil" />
+ </corba:struct>
+ <corba:union xmlns:typens="http://soapinterop.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://soapinterop.org/xsd" repositoryID="IDL:sub2:1.0" type="typens:sub2" name="sub2">
+ <corba:member xmlns:ns1="http://soapinterop.org/corba/typemap/" name="base_f" idltype="ns1:base" />
+ <corba:member xmlns:ns1="http://soapinterop.org/corba/typemap/" name="sub2ChoiceType_f" idltype="ns1:sub2ChoiceType" />
+ </corba:struct>
+ <corba:struct xmlns:typens="http://soapinterop.org/xsd" repositoryID="IDL:Type2SequenceStruct:1.0" type="typens:Type2" name="Type2SequenceStruct">
+ <corba:member name="varFloat" idltype="corba:float" />
+ </corba:struct>
+ <corba:struct xmlns:typens="http://soapinterop.org/xsd" repositoryID="IDL:Type2:1.0" type="typens:Type2" name="Type2">
+ <corba:member xmlns:ns1="http://soapinterop.org/corba/typemap/" name="SimpleStruct_f" idltype="ns1:SimpleStruct" />
+ <corba:member name="attrString1" idltype="corba:string" />
+ <corba:member xmlns:ns1="http://soapinterop.org/corba/typemap/" name="Type2SequenceStruct_f" idltype="ns1:Type2SequenceStruct" />
+ <corba:member name="attrString2" idltype="corba:string" />
+ </corba:struct>
+ <corba:struct xmlns:typens="http://soapinterop.org/xsd" repositoryID="IDL:sub3SequenceStruct:1.0" type="typens:sub3" name="sub3SequenceStruct">
+ <corba:member name="e5" idltype="corba:boolean" />
+ </corba:struct>
+ <corba:struct xmlns:typens="http://soapinterop.org/xsd" repositoryID="IDL:sub3:1.0" type="typens:sub3" name="sub3">
+ <corba:member xmlns:ns1="http://soapinterop.org/corba/typemap/" name="sub2_f" idltype="ns1:sub2" />
+ <corba:member xmlns:ns1="http://soapinterop.org/corba/typemap/" name="sub3SequenceStruct_f" idltype="ns1:sub3SequenceStruct" />
+ </corba:struct>
+ <corba:struct xmlns:typens="http://soapinterop.org/xsd" repositoryID="IDL:Type3:1.0" type="typens:Type3" name="Type3">
+ <corba:member xmlns:ns1="http://soapinterop.org/corba/typemap/" name="SimpleStruct_f" idltype="ns1:SimpleStruct" />
+ <corba:member name="attrString" idltype="corba:string" />
+ </corba:struct>
+ <corba:struct xmlns:typens="http://soapinterop.org/xsd" repositoryID="IDL:Type1SequenceStruct:1.0" type="typens:Type1" name="Type1SequenceStruct">
+ <corba:member name="varString" idltype="corba:long" />
+ <corba:member name="varFloat" idltype="corba:float" />
+ </corba:struct>
+ <corba:struct xmlns:typens="http://soapinterop.org/xsd" repositoryID="IDL:Type1:1.0" type="typens:Type1" name="Type1">
+ <corba:member xmlns:ns1="http://soapinterop.org/corba/typemap/" name="SimpleStruct_f" idltype="ns1:SimpleStruct" />
+ <corba:member name="attrString" idltype="corba:string" />
+ <corba:member xmlns:ns1="http://soapinterop.org/corba/typemap/" name="Type1SequenceStruct_f" idltype="ns1:Type1SequenceStruct" />
+ </corba:struct>
+ <corba:struct xmlns:typens="http://soapinterop.org/xsd" repositoryID="IDL:SimpleStruct:1.0" type="typens:SimpleStruct" name="SimpleStruct">
+ <corba:member name="varFloat" idltype="corba:float" />
+ <corba:member name="varInt" idltype="corba:long" />
+ <corba:member name="varString" idltype="corba:string" />
+ </corba:struct>
+ <corba:struct xmlns:typens="http://soapinterop.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://soapinterop.org/xsd" repositoryID="IDL:sub1:1.0" type="typens:sub1" name="sub1">
+ <corba:member xmlns:ns1="http://soapinterop.org/corba/typemap/" name="base_f" idltype="ns1:base" />
+ <corba:member xmlns:ns1="http://soapinterop.org/corba/typemap/" name="sub1SequenceStruct_f" idltype="ns1:sub1SequenceStruct" />
+ </corba:struct>
+ </corba:typeMapping>
+ <types>
+ <schema elementFormDefault="qualified" targetNamespace="http://soapinterop.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"/>
+ <element name="in_obj3" type="typens:sub3"/>
+ <element name="result_obj3" 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>
+ <complexType name="sub3">
+ <complexContent>
+ <extension base="typens:sub2">
+ <sequence>
+ <element name="e5" type="xsd:boolean"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+
+ <complexType name="SimpleStruct">
+ <sequence>
+ <element name="varFloat" type="xsd:float"/>
+ <element name="varInt" type="xsd:int"/>
+ <element name="varString" type="xsd:string"/>
+ </sequence>
+ </complexType>
+
+ <complexType name="Type1">
+ <complexContent>
+ <extension base="typens:SimpleStruct">
+ <attribute name="attrString" type="xsd:string" use="required"/>
+ <sequence>
+ <element name="varString" type="xsd:int"/>
+ <element name="varFloat" type="xsd:float"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+
+ <complexType name="Type2">
+ <complexContent>
+ <extension base="typens:SimpleStruct">
+ <attribute name="attrString1" type="xsd:string" use="required"/>
+ <sequence>
+ <element name="varFloat" type="xsd:float"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ <attribute name="attrString2" type="xsd:string" use="required"/>
+ </complexType>
+
+ <complexType name="Type3">
+ <complexContent>
+ <extension base="typens:SimpleStruct">
+ <attribute name="attrString" type="xsd:string" use="required"/>
+ </extension>
+ </complexContent>
+ </complexType>
+
+ <complexType name="Type4">
+ <complexContent mixed="false">
+ <extension base="xsd:anyType">
+ <attribute name="AttrString" type="xsd:string" use="required"/>
+ <all>
+ <element name="varStringExt" type="xsd:string"/>
+ <element name="varFloatExt" type="xsd:float"/>
+ </all>
+ </extension>
+ </complexContent>
+ </complexType>
+
+ <complexType name="Type5">
+ <sequence>
+ <element name="varFloat" type="xsd:float"/>
+ <sequence>
+ <element name="varInt" type="xsd:int"/>
+ <element name="varString" type="xsd:string"/>
+ </sequence>
+ </sequence>
+ </complexType>
+
+ <complexType name="Type6">
+ <simpleContent>
+ <extension base="xsd:short">
+ <attribute name="attrib1" type="xsd:int" use="optional"/>
+ </extension>
+ </simpleContent>
+ <attribute name="attrib2">
+ <simpleType>
+ <restriction base="xsd:string">
+ <maxLength value="2"/>
+ </restriction>
+ </simpleType>
+ </attribute>
+ </complexType>
+
+
+
+
+ </schema>
+ </types>
+ <message name="echoObjectResponse">
+ <part name="Result" element="typens:result_obj"/>
+ </message>
+ <message name="echoObject">
+ <part name="x" element="typens:in_obj"/>
+ </message>
+ <message name="echoObject3Response">
+ <part name="Result" element="typens:result_obj3"/>
+ </message>
+ <message name="echoObject2Response">
+ <part name="Result" element="typens:result_obj2"/>
+ </message>
+ <message name="echoObject2">
+ <part name="x" element="typens:in_obj2"/>
+ </message>
+ <message name="echoObject3">
+ <part name="x" element="typens:in_obj3"/>
+ </message>
+ <portType name="TypeInheritancePortType">
+ <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>
+ <operation name="echoObject3" parameterOrder="x">
+ <input name="echoObject3" message="wsdlns:echoObject3"/>
+ <output name="echoObject3Response" message="wsdlns:echoObject3Response"/>
+ </operation>
+ </portType>
+ <binding name="TypeInheritanceCORBABinding" type="wsdlns:TypeInheritancePortType">
+ <corba:binding repositoryID="IDL:TypeInheritancePortType:1.0" />
+ <operation name="echoObject">
+ <corba:operation name="echoObject">
+ <corba:param xmlns:ns1="http://soapinterop.org/corba/typemap/" mode="in" name="x" idltype="ns1:base" />
+ <corba:return xmlns:ns1="http://soapinterop.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://soapinterop.org/corba/typemap/" mode="in" name="x" idltype="ns1:sub1" />
+ <corba:return xmlns:ns1="http://soapinterop.org/corba/typemap/" name="Result" idltype="ns1:sub2" />
+ </corba:operation>
+ <input name="echoObject2">
+ </input>
+ <output name="echoObject2Response">
+ </output>
+ </operation>
+ <operation name="echoObject3">
+ <corba:operation name="echoObject3">
+ <corba:param xmlns:ns1="http://soapinterop.org/corba/typemap/" mode="in" name="x" idltype="ns1:sub3" />
+ <corba:return xmlns:ns1="http://soapinterop.org/corba/typemap/" name="Result" idltype="ns1:sub2" />
+ </corba:operation>
+ <input name="echoObject3">
+ </input>
+ <output name="echoObject3Response">
+ </output>
+ </operation>
+ </binding>
+</definitions>
Propchange: incubator/yoko/trunk/tools/src/test/resources/idlgen/TypeInheritance.wsdl
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/yoko/trunk/tools/src/test/resources/idlgen/TypeInheritance.wsdl
------------------------------------------------------------------------------
svn:keywords = Rev Date
Propchange: incubator/yoko/trunk/tools/src/test/resources/idlgen/TypeInheritance.wsdl
------------------------------------------------------------------------------
svn:mime-type = text/xml
Added: incubator/yoko/trunk/tools/src/test/resources/idlgen/expected_typeInheritance.idl
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/tools/src/test/resources/idlgen/expected_typeInheritance.idl?view=auto&rev=442994
==============================================================================
--- incubator/yoko/trunk/tools/src/test/resources/idlgen/expected_typeInheritance.idl (added)
+++ incubator/yoko/trunk/tools/src/test/resources/idlgen/expected_typeInheritance.idl Wed Sep 13 07:40:53 2006
@@ -0,0 +1,101 @@
+struct Type5SequenceStruct {
+ long varInt;
+ string varString;
+};
+struct Type5 {
+ float varFloat;
+ Type5SequenceStruct Type5SequenceStruct_f;
+};
+struct Type4AllStruct {
+ string varStringExt;
+ float varFloatExt;
+};
+struct Type4 {
+ any anyType_f;
+ string AttrString;
+ Type4AllStruct Type4AllStruct_f;
+};
+struct base {
+ string attr1;
+ long attr2;
+ long e1;
+ string e2;
+};
+union long_nil switch(boolean) {
+ case TRUE:
+ long value;
+};
+union attrib2Type_nil switch(boolean) {
+ case TRUE:
+ string<2> value;
+};
+struct Type6 {
+ short _simpleTypeValue;
+ long_nil attrib1;
+ attrib2Type_nil attrib2;
+};
+union sub2ChoiceType switch(long) {
+ case 0:
+ double e4;
+ case 1:
+ double e6;
+};
+struct sub2 {
+ base base_f;
+ sub2ChoiceType sub2ChoiceType_f;
+};
+struct Type2SequenceStruct {
+ float varFloat;
+};
+struct SimpleStruct {
+ float varFloat;
+ long varInt;
+ string varString;
+};
+struct Type2 {
+ SimpleStruct SimpleStruct_f;
+ string attrString1;
+ Type2SequenceStruct Type2SequenceStruct_f;
+ string attrString2;
+};
+struct sub3SequenceStruct {
+ boolean e5;
+};
+struct sub3 {
+ sub2 sub2_f;
+ sub3SequenceStruct sub3SequenceStruct_f;
+};
+struct Type3 {
+ SimpleStruct SimpleStruct_f;
+ string attrString;
+};
+struct Type1SequenceStruct {
+ long varString;
+ float varFloat;
+};
+struct Type1 {
+ SimpleStruct SimpleStruct_f;
+ string attrString;
+ Type1SequenceStruct Type1SequenceStruct_f;
+};
+struct sub1SequenceStruct {
+ float e3;
+};
+struct sub1 {
+ base base_f;
+ sub1SequenceStruct sub1SequenceStruct_f;
+};
+interface TypeInheritancePortType {
+ ::base
+ echoObject(
+ in ::base x
+ );
+ ::sub2
+ echoObject2(
+ in ::sub1 x
+ );
+ ::sub2
+ echoObject3(
+ in ::sub3 x
+ );
+};
Added: incubator/yoko/trunk/tools/src/test/resources/wsdl/TypeInheritance.wsdl
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/tools/src/test/resources/wsdl/TypeInheritance.wsdl?view=auto&rev=442994
==============================================================================
--- incubator/yoko/trunk/tools/src/test/resources/wsdl/TypeInheritance.wsdl (added)
+++ incubator/yoko/trunk/tools/src/test/resources/wsdl/TypeInheritance.wsdl Wed Sep 13 07:40:53 2006
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions name="SoapInteropCompound" targetNamespace="http://soapinterop.org/"
+ xmlns="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:typens="http://soapinterop.org/xsd" xmlns:wsdlns="http://soapinterop.org/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <types>
+ <schema elementFormDefault="qualified"
+ targetNamespace="http://soapinterop.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"/>
+ <element name="in_obj3" type="typens:sub3"/>
+ <element name="result_obj3" 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>
+ <complexType name="sub3">
+ <complexContent>
+ <extension base="typens:sub2">
+ <sequence>
+ <element name="e5" type="xsd:boolean"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+
+ <complexType name="SimpleStruct">
+ <sequence>
+ <element name="varFloat" type="xsd:float"/>
+ <element name="varInt" type="xsd:int"/>
+ <element name="varString" type="xsd:string"/>
+ </sequence>
+ </complexType>
+
+ <complexType name="Type1">
+ <complexContent>
+ <extension base="typens:SimpleStruct">
+ <attribute name="attrString" type="xsd:string" use="required"/>
+ <sequence>
+ <element name="varString" type="xsd:int"/>
+ <element name="varFloat" type="xsd:float"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+
+ <complexType name="Type2">
+ <complexContent>
+ <extension base="typens:SimpleStruct">
+ <attribute name="attrString1" type="xsd:string" use="required"/>
+ <sequence>
+ <element name="varFloat" type="xsd:float"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ <attribute name="attrString2" type="xsd:string" use="required"/>
+ </complexType>
+
+ <complexType name="Type3">
+ <complexContent>
+ <extension base="typens:SimpleStruct">
+ <attribute name="attrString" type="xsd:string" use="required"/>
+ </extension>
+ </complexContent>
+ </complexType>
+
+ <complexType name="Type4">
+ <complexContent mixed="false">
+ <extension base="xsd:anyType">
+ <attribute name="AttrString" type="xsd:string" use="required"/>
+ <all>
+ <element name="varStringExt" type="xsd:string"/>
+ <element name="varFloatExt" type="xsd:float"/>
+ </all>
+ </extension>
+ </complexContent>
+ </complexType>
+
+ <complexType name="Type5">
+ <sequence>
+ <element name="varFloat" type="xsd:float"/>
+ <sequence>
+ <element name="varInt" type="xsd:int"/>
+ <element name="varString" type="xsd:string"/>
+ </sequence>
+ </sequence>
+ </complexType>
+
+ <complexType name="Type6">
+ <simpleContent>
+ <extension base="xsd:short">
+ <attribute name="attrib1" use="optional" type="xsd:int"/>
+ </extension>
+ </simpleContent>
+ <attribute name="attrib2">
+ <simpleType>
+ <restriction base="xsd:string">
+ <maxLength value="2"/>
+ </restriction>
+ </simpleType>
+ </attribute>
+ </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>
+ <message name="echoObject3">
+ <part element="typens:in_obj3" name="x"/>
+ </message>
+ <message name="echoObject3Response">
+ <part element="typens:result_obj3" name="Result"/>
+ </message>
+ <portType name="TypeInheritancePortType">
+ <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>
+ <operation name="echoObject3" parameterOrder="x">
+ <input message="wsdlns:echoObject3" name="echoObject3"/>
+ <output message="wsdlns:echoObject3Response" name="echoObject3Response"/>
+ </operation>
+ </portType>
+
+</definitions>
Propchange: incubator/yoko/trunk/tools/src/test/resources/wsdl/TypeInheritance.wsdl
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/yoko/trunk/tools/src/test/resources/wsdl/TypeInheritance.wsdl
------------------------------------------------------------------------------
svn:keywords = Rev Date
Propchange: incubator/yoko/trunk/tools/src/test/resources/wsdl/TypeInheritance.wsdl
------------------------------------------------------------------------------
svn:mime-type = text/xml