use of org.apache.cxf.binding.corba.wsdl.MemberType in project cxf by apache.
the class WSDLToCorbaHelper method processAttributesAsMembers.
protected List<MemberType> processAttributesAsMembers(List<XmlSchemaAttributeOrGroupRef> list, String uri) throws Exception {
QName memName = null;
List<MemberType> members = new ArrayList<>();
for (XmlSchemaAttributeOrGroupRef aog : list) {
if (!(aog instanceof XmlSchemaAttribute)) {
LOG.warning(aog.getClass() + " not supported in CORBA binding. Skipping.");
continue;
}
XmlSchemaAttribute attribute = (XmlSchemaAttribute) aog;
QName attrName = attribute.getQName();
if (attrName.getNamespaceURI().equals("")) {
attrName = new QName(uri, attrName.getLocalPart());
}
CorbaType membertype = null;
boolean attrQualified = getAttributeQualification(attribute, uri);
if (attribute.getUse() == XmlSchemaUse.NONE || attribute.getUse() == XmlSchemaUse.OPTIONAL) {
CorbaType attType = null;
if (attribute.getSchemaType() != null) {
// REVISIT, edell bug in XmlSchema 1.2.
// https://issues.apache.org/jira/browse/WSCOMMONS-208
attType = convertSchemaToCorbaType(attribute.getSchemaType(), checkPrefix(attrName), attribute.getSchemaType(), null, true);
if (attType != null) {
QName typeName = attType.getQName();
if (!isDuplicate(attType)) {
typeMappingType.getStructOrExceptionOrUnion().add(attType);
}
QName name = createQNameTargetNamespace(typeName.getLocalPart() + "_nil");
membertype = createNillableUnion(name, checkPrefix(attrName), createQNameCorbaNamespace(typeName.getLocalPart()), attrQualified);
}
} else {
attType = processPrimitiveType(attribute.getSchemaTypeName());
// {http://www.w3.org/2005/08/addressing}RelationshipTypeOpenEnum
if (attType != null) {
QName name = createQNameTargetNamespace(attType.getQName().getLocalPart() + "_nil");
// REVISIT, Edell - bug in Xmlschema 1.2
// https://issues.apache.org/jira/browse/WSCOMMONS-208
membertype = createNillableUnion(name, checkPrefix(attrName), attType.getQName(), attrQualified);
}
}
if (membertype != null) {
memName = createQNameCorbaNamespace(membertype.getQName().getLocalPart());
if (!isDuplicate(membertype)) {
typeMappingType.getStructOrExceptionOrUnion().add(membertype);
}
}
} else {
if (attribute.getSchemaType() != null) {
membertype = convertSchemaToCorbaType(attribute.getSchemaType(), attrName, attribute.getSchemaType(), null, false);
} else {
membertype = processPrimitiveType(attribute.getSchemaTypeName());
}
}
if (membertype != null) {
MemberType member;
String memberName = attrName.getLocalPart();
member = new MemberType();
member.setName(memberName);
if (memName != null) {
member.setIdltype(memName);
} else {
member.setIdltype(membertype.getQName());
}
if (attrQualified) {
member.setQualified(true);
}
members.add(member);
} else {
String msg = "Unsupported Attribute Found in CORBA Binding Generation:" + attrName;
LOG.log(Level.WARNING, msg);
}
}
return members;
}
use of org.apache.cxf.binding.corba.wsdl.MemberType in project cxf by apache.
the class WSDLToCorbaHelper method processContainerAsMembers.
protected List<MemberType> processContainerAsMembers(XmlSchemaParticle particle, QName defaultName, QName schemaTypeName) throws Exception {
List<MemberType> members = new ArrayList<>();
Iterator<? extends XmlSchemaObjectBase> iterL = null;
if (particle instanceof XmlSchemaSequence) {
XmlSchemaSequence scontainer = (XmlSchemaSequence) particle;
iterL = scontainer.getItems().iterator();
} else if (particle instanceof XmlSchemaChoice) {
XmlSchemaChoice scontainer = (XmlSchemaChoice) particle;
iterL = scontainer.getItems().iterator();
} else if (particle instanceof XmlSchemaAll) {
XmlSchemaAll acontainer = (XmlSchemaAll) particle;
iterL = acontainer.getItems().iterator();
} else {
LOG.warning("Unknown particle type " + particle.getClass().getName());
iterL = new ArrayList<XmlSchemaObjectBase>().iterator();
}
while (iterL.hasNext()) {
XmlSchemaParticle container = (XmlSchemaParticle) iterL.next();
if (container instanceof XmlSchemaSequence) {
XmlSchemaSequence sequence = (XmlSchemaSequence) container;
CorbaType memberType = processSequenceType(sequence, defaultName, schemaTypeName);
QName typeName = memberType.getQName();
if (memberType instanceof Struct && !isDuplicate(memberType)) {
typeMappingType.getStructOrExceptionOrUnion().add(memberType);
}
MemberType member = new MemberType();
member.setName(memberType.getName() + "_f");
member.setIdltype(typeName);
member.setAnonschematype(true);
if (memberType.isSetQualified() && memberType.isQualified()) {
member.setQualified(true);
}
members.add(member);
} else if (container instanceof XmlSchemaChoice) {
XmlSchemaChoice choice = (XmlSchemaChoice) container;
MemberType member = processChoiceMember(choice, defaultName, schemaTypeName);
member.setAnonschematype(true);
members.add(member);
} else if (container instanceof XmlSchemaAll) {
XmlSchemaAll all = (XmlSchemaAll) container;
MemberType member = processAllMember(all, defaultName, schemaTypeName);
member.setAnonschematype(true);
members.add(member);
} else if (container instanceof XmlSchemaElement) {
XmlSchemaElement element = (XmlSchemaElement) container;
CorbaType corbatype = processLocalElement(defaultName, element, schemaTypeName.getNamespaceURI());
QName elName = element.getQName();
if (elName == null) {
elName = element.getRef().getTargetQName();
}
if (corbatype != null) {
MemberType member;
String memberName = elName.getLocalPart();
member = new MemberType();
member.setName(memberName);
member.setIdltype(corbatype.getQName());
if (corbatype.isSetQualified() && corbatype.isQualified()) {
member.setQualified(true);
}
members.add(member);
} else {
LOG.log(Level.WARNING, "Unsupported Element Found in CORBA Binding Generation:" + elName);
}
}
}
return members;
}
use of org.apache.cxf.binding.corba.wsdl.MemberType in project cxf by apache.
the class WSDLToIDLAction method createStruct.
private IdlType createStruct(Struct s, IdlScopeBase scope, String local) throws Exception {
boolean undefinedCircular = false;
IdlStruct struct = IdlStruct.create(scope, local);
scope.holdForScope(struct);
for (MemberType m : s.getMember()) {
QName qname = m.getIdltype();
IdlType type = findType(qname);
if (!undefinedCircular && !(type instanceof IdlSequence)) {
String mlocal = qname.getLocalPart();
String[] mname = unscopeName(mlocal);
undefinedCircular = null != root.lookup(mname, true);
}
struct.addToScope(IdlField.create(struct, m.getName(), type));
}
if (undefinedCircular) {
scope.parkHeld();
} else {
scope.promoteHeldToScope();
if (struct.isCircular()) {
// resolving this struct closed a recursion
scope.flush();
}
}
return struct;
}
use of org.apache.cxf.binding.corba.wsdl.MemberType in project cxf by apache.
the class WSDLTypes method processUnionBranches.
public static Union processUnionBranches(Union corbaUnion, List<MemberType> fields, List<String> caselist) {
int caseIndex = 0;
for (int i = 0; i < fields.size(); i++) {
MemberType field = fields.get(i);
Unionbranch branch = new Unionbranch();
branch.setName(field.getName());
branch.setIdltype(field.getIdltype());
if (field.isSetQualified() && field.isQualified()) {
branch.setQualified(true);
}
branch.setDefault(false);
CaseType c = new CaseType();
c.setLabel(caselist.get(caseIndex));
caseIndex++;
branch.getCase().add(c);
corbaUnion.getUnionbranch().add(branch);
}
return corbaUnion;
}
use of org.apache.cxf.binding.corba.wsdl.MemberType in project cxf by apache.
the class ExceptionVisitor method createMemberType.
private MemberType createMemberType(AST memberNode, CorbaType ctype, Scope fqName) {
// corba:member
MemberType memberType = new MemberType();
memberType.setName(memberNode.toString());
if (ctype != null) {
memberType.setIdltype(ctype.getQName());
} else {
wsdlVisitor.getDeferredActions().add(fqName, new ExceptionDeferredAction(memberType));
}
return memberType;
}
Aggregations