use of org.apache.cxf.binding.corba.wsdl.MemberType in project cxf by apache.
the class CorbaObjectReaderTest method testReadException.
@Test
public void testReadException() {
OutputStream oStream = orb.create_output_stream();
// create the following exception
// exception TestExcept {
// short code;
// string message;
// }
short code = 12345;
String message = "54321";
oStream.write_string("IDL:org.apache.cxf.TestException/1.0");
oStream.write_short(code);
oStream.write_string(message);
InputStream iStream = oStream.create_input_stream();
CorbaObjectReader reader = new CorbaObjectReader(iStream);
QName exceptIdlType = new QName(CorbaConstants.NU_WSDL_CORBA, "exception", CorbaConstants.NP_WSDL_CORBA);
QName shortIdlType = new QName(CorbaConstants.NU_WSDL_CORBA, "short", CorbaConstants.NP_WSDL_CORBA);
QName stringIdlType = new QName(CorbaConstants.NU_WSDL_CORBA, "string", CorbaConstants.NP_WSDL_CORBA);
Exception exceptType = new Exception();
exceptType.setName("TestException");
MemberType m1 = new MemberType();
m1.setIdltype(shortIdlType);
m1.setName("code");
MemberType m2 = new MemberType();
m2.setIdltype(stringIdlType);
m2.setName("message");
exceptType.getMember().add(m1);
exceptType.getMember().add(m2);
// build the object holder
StructMember[] exceptMembers = new StructMember[2];
exceptMembers[0] = new StructMember("code", orb.get_primitive_tc(TCKind.tk_short), null);
exceptMembers[1] = new StructMember("message", orb.get_primitive_tc(TCKind.tk_string), null);
TypeCode exceptTC = orb.create_exception_tc("IDL:org.apache.cxf.TestException/1.0", "TestException", exceptMembers);
CorbaExceptionHandler obj = new CorbaExceptionHandler(new QName("TestException"), exceptIdlType, exceptTC, exceptType);
obj.addMember(new CorbaPrimitiveHandler(new QName("code"), shortIdlType, exceptMembers[0].type, null));
obj.addMember(new CorbaPrimitiveHandler(new QName("message"), stringIdlType, exceptMembers[1].type, null));
reader.readException(obj);
List<CorbaObjectHandler> nestedObjs = obj.getMembers();
assertTrue(new Short(((CorbaPrimitiveHandler) nestedObjs.get(0)).getDataFromValue()).shortValue() == code);
assertTrue(((CorbaPrimitiveHandler) nestedObjs.get(1)).getDataFromValue().equals(message));
}
use of org.apache.cxf.binding.corba.wsdl.MemberType in project cxf by apache.
the class CorbaObjectReaderTest method testReadStruct.
@Test
public void testReadStruct() {
OutputStream oStream = orb.create_output_stream();
// create the following struct
// struct TestStruct {
// long member1;
// string member2;
// boolean member3;
// }
int member1 = 12345;
String member2 = "54321";
boolean member3 = true;
oStream.write_long(member1);
oStream.write_string(member2);
oStream.write_boolean(member3);
InputStream iStream = oStream.create_input_stream();
CorbaObjectReader reader = new CorbaObjectReader(iStream);
QName structIdlType = new QName(CorbaConstants.NU_WSDL_CORBA, "struct", CorbaConstants.NP_WSDL_CORBA);
QName longIdlType = new QName(CorbaConstants.NU_WSDL_CORBA, "long", CorbaConstants.NP_WSDL_CORBA);
QName stringIdlType = new QName(CorbaConstants.NU_WSDL_CORBA, "string", CorbaConstants.NP_WSDL_CORBA);
QName boolIdlType = new QName(CorbaConstants.NU_WSDL_CORBA, "boolean", CorbaConstants.NP_WSDL_CORBA);
Struct structType = new Struct();
structType.setName("TestStruct");
MemberType m1 = new MemberType();
m1.setIdltype(longIdlType);
m1.setName("member1");
MemberType m2 = new MemberType();
m2.setIdltype(stringIdlType);
m2.setName("member2");
MemberType m3 = new MemberType();
m3.setIdltype(boolIdlType);
m3.setName("member3");
structType.getMember().add(m1);
structType.getMember().add(m2);
structType.getMember().add(m3);
// build the object holder
StructMember[] structMembers = new StructMember[3];
structMembers[0] = new StructMember("member1", orb.get_primitive_tc(TCKind.tk_long), null);
structMembers[1] = new StructMember("member2", orb.get_primitive_tc(TCKind.tk_string), null);
structMembers[2] = new StructMember("member3", orb.get_primitive_tc(TCKind.tk_boolean), null);
TypeCode structTC = orb.create_struct_tc("IDL:org.apache.cxf.TestStruct/1.0", "TestStruct", structMembers);
CorbaStructHandler obj = new CorbaStructHandler(new QName("TestStruct"), structIdlType, structTC, structType);
obj.addMember(new CorbaPrimitiveHandler(new QName("member1"), longIdlType, structMembers[0].type, null));
obj.addMember(new CorbaPrimitiveHandler(new QName("member2"), stringIdlType, structMembers[1].type, null));
obj.addMember(new CorbaPrimitiveHandler(new QName("member3"), boolIdlType, structMembers[2].type, null));
reader.readStruct(obj);
List<CorbaObjectHandler> nestedObjs = obj.getMembers();
assertTrue(new Integer(((CorbaPrimitiveHandler) nestedObjs.get(0)).getDataFromValue()).intValue() == member1);
assertTrue(((CorbaPrimitiveHandler) nestedObjs.get(1)).getDataFromValue().equals(member2));
assertTrue(Boolean.valueOf(((CorbaPrimitiveHandler) nestedObjs.get(2)).getDataFromValue()).booleanValue() == member3);
}
use of org.apache.cxf.binding.corba.wsdl.MemberType in project cxf by apache.
the class CorbaObjectWriterTest method testWriteStruct.
@Test
public void testWriteStruct() {
// create the following struct
// struct TestStruct {
// long member1;
// string member2;
// boolean member3;
// }
int member1 = 12345;
String member2 = "54321";
boolean member3 = true;
QName structIdlType = new QName(CorbaConstants.NU_WSDL_CORBA, "struct", CorbaConstants.NP_WSDL_CORBA);
QName longIdlType = new QName(CorbaConstants.NU_WSDL_CORBA, "long", CorbaConstants.NP_WSDL_CORBA);
QName stringIdlType = new QName(CorbaConstants.NU_WSDL_CORBA, "string", CorbaConstants.NP_WSDL_CORBA);
QName boolIdlType = new QName(CorbaConstants.NU_WSDL_CORBA, "boolean", CorbaConstants.NP_WSDL_CORBA);
Struct structType = new Struct();
structType.setName("TestStruct");
MemberType m1 = new MemberType();
m1.setIdltype(longIdlType);
m1.setName("member1");
MemberType m2 = new MemberType();
m2.setIdltype(stringIdlType);
m2.setName("member2");
MemberType m3 = new MemberType();
m3.setIdltype(boolIdlType);
m3.setName("member3");
structType.getMember().add(m1);
structType.getMember().add(m2);
structType.getMember().add(m3);
// build the object holder
StructMember[] structMembers = new StructMember[3];
structMembers[0] = new StructMember("member1", orb.get_primitive_tc(TCKind.tk_long), null);
structMembers[1] = new StructMember("member2", orb.get_primitive_tc(TCKind.tk_string), null);
structMembers[2] = new StructMember("member3", orb.get_primitive_tc(TCKind.tk_boolean), null);
TypeCode structTC = orb.create_struct_tc("IDL:org.apache.cxf.TestStruct/1.0", "TestStruct", structMembers);
CorbaStructHandler obj = new CorbaStructHandler(new QName("TestStruct"), structIdlType, structTC, structType);
CorbaPrimitiveHandler memberObj1 = new CorbaPrimitiveHandler(new QName("member1"), longIdlType, structMembers[0].type, null);
CorbaPrimitiveHandler memberObj2 = new CorbaPrimitiveHandler(new QName("member2"), stringIdlType, structMembers[1].type, null);
CorbaPrimitiveHandler memberObj3 = new CorbaPrimitiveHandler(new QName("member3"), boolIdlType, structMembers[2].type, null);
memberObj1.setValueFromData(Integer.toString(member1));
memberObj2.setValueFromData(member2);
memberObj3.setValueFromData(Boolean.toString(member3));
obj.addMember(memberObj1);
obj.addMember(memberObj2);
obj.addMember(memberObj3);
OutputStream oStream = orb.create_output_stream();
CorbaObjectWriter writer = new CorbaObjectWriter(oStream);
writer.writeStruct(obj);
InputStream iStream = oStream.create_input_stream();
int readMember1 = iStream.read_long();
assertTrue(readMember1 == member1);
String readMember2 = iStream.read_string();
assertTrue(readMember2.equals(member2));
boolean readMember3 = iStream.read_boolean();
assertTrue(readMember3 == member3);
}
use of org.apache.cxf.binding.corba.wsdl.MemberType in project cxf by apache.
the class CorbaHandlerUtils method initializeStructHandler.
public static void initializeStructHandler(ORB orb, CorbaObjectHandler obj, CorbaTypeMap typeMap, ServiceInfo serviceInfo, Map<QName, CorbaObjectHandler> seenTypes) {
Struct structType = (Struct) obj.getType();
List<MemberType> structMembers = structType.getMember();
QName typeName = structType.getType();
seenTypes.put(obj.getIdlType(), obj);
for (int i = 0; i < structMembers.size(); ++i) {
MemberType member = structMembers.get(i);
QName memberName;
if (member.isSetQualified() && member.isQualified() && (typeName != null)) {
memberName = new QName(typeName.getNamespaceURI(), member.getName());
} else {
memberName = new QName("", member.getName());
}
QName memberType = member.getIdltype();
CorbaObjectHandler memberObj = initializeObjectHandler(orb, memberName, memberType, typeMap, serviceInfo, seenTypes);
if (member.isSetAnonschematype() && member.isAnonschematype()) {
memberObj.setAnonymousType(true);
}
((CorbaStructHandler) obj).addMember(memberObj);
}
seenTypes.remove(obj.getIdlType());
}
use of org.apache.cxf.binding.corba.wsdl.MemberType in project cxf by apache.
the class CorbaStructListener method processStartElement.
public void processStartElement(QName name) {
if (depth == 0 && (currentElement != null) && (!currentElement.equals(name))) {
currentTypeListener = null;
}
depth++;
if (currentTypeListener == null) {
QName elName = name;
MemberType member = null;
while (true) {
member = structMembers.get(memberCount++);
// members - we have a chance to "catch up" and add required (empty sequences) members
if (member.getName().equals(name.getLocalPart()) || (member.isSetAnonschematype() && member.isAnonschematype())) {
break;
}
currentTypeListener = CorbaHandlerUtils.getTypeListener(elName, member.getIdltype(), typeMap, orb, serviceInfo);
currentTypeListener.setNamespaceContext(ctx);
((CorbaStructHandler) handler).addMember(currentTypeListener.getCorbaObject());
}
boolean anonType = false;
if (member.isSetAnonschematype() && member.isAnonschematype()) {
anonType = true;
elName = CorbaUtils.getEmptyQName();
currentElement = null;
} else {
currentElement = name;
}
currentTypeListener = CorbaHandlerUtils.getTypeListener(elName, member.getIdltype(), typeMap, orb, serviceInfo);
currentTypeListener.setNamespaceContext(ctx);
((CorbaStructHandler) handler).addMember(currentTypeListener.getCorbaObject());
if (anonType) {
currentTypeListener.getCorbaObject().setAnonymousType(true);
currentTypeListener.processStartElement(name);
} else {
CorbaType type = CorbaUtils.getCorbaType(member.getIdltype(), typeMap);
boolean wrapped = true;
if (type instanceof Abstractsequence) {
wrapped = ((Abstractsequence) type).isWrapped();
} else if (type instanceof Abstractanonsequence) {
wrapped = ((Abstractanonsequence) type).isWrapped();
}
// to process StartElement of first element of collection
if (!wrapped) {
currentTypeListener.processStartElement(name);
}
}
} else {
currentTypeListener.processStartElement(name);
}
}
Aggregations