TestSerpublic class TestSer extends TestCase Little serialization test with a struct. |
Fields Summary |
---|
Log | log | public static final String | myNS |
Constructors Summary |
---|
public TestSer(String name)
super(name);
|
Methods Summary |
---|
public void | doTestData(boolean multiref)
MessageContext msgContext = new MessageContext(new AxisServer());
SOAPEnvelope msg = new SOAPEnvelope();
RPCParam arg1 = new RPCParam("urn:myNamespace", "testParam", "this is a string");
Data data = new Data();
data.stringMember = "String member";
data.floatMember = new Float("4.54");
RPCParam arg2 = new RPCParam("", "struct", data);
RPCElement body = new RPCElement("urn:myNamespace", "method1", new Object[]{ arg1, arg2 });
msg.addBodyElement(body);
Writer stringWriter = new StringWriter();
SerializationContext context = new SerializationContext(stringWriter, msgContext);
context.setDoMultiRefs(multiref);
// Create a TypeMapping and register the specialized Type Mapping
TypeMappingRegistry reg = context.getTypeMappingRegistry();
TypeMapping tm = (TypeMapping) reg.createTypeMapping();
tm.setSupportedEncodings(new String[] {Constants.URI_DEFAULT_SOAP_ENC});
reg.register(Constants.URI_DEFAULT_SOAP_ENC, tm);
QName dataQName = new QName("typeNS", "Data");
tm.register(Data.class, dataQName, new DataSerFactory(), new DataDeserFactory());
msg.output(context);
String msgString = stringWriter.toString();
log.debug("---");
log.debug(msgString);
log.debug("---");
StringReader reader = new StringReader(msgString);
DeserializationContext dser = new DeserializationContext(
new InputSource(reader), msgContext, org.apache.axis.Message.REQUEST);
dser.parse();
SOAPEnvelope env = dser.getEnvelope();
RPCElement rpcElem = (RPCElement)env.getFirstBody();
RPCParam struct = rpcElem.getParam("struct");
assertNotNull("No <struct> param", struct);
Data val = (Data)struct.getObjectValue();
assertNotNull("No value for struct param", val);
assertEquals("Data and Val string members are not equal", data.stringMember, val.stringMember);
assertEquals("Data and Val float members are not equal",data.floatMember.floatValue(),
val.floatMember.floatValue(), 0.00001F);
| private org.w3c.dom.Element | findChildElementByLocalName(org.w3c.dom.Element src, java.lang.String localName)
NodeList nl = src.getChildNodes();
for (int i = 0; i < nl.getLength(); i++) {
Node node = nl.item(i);
if (node instanceof Element) {
Element e = (Element)node;
if (e.getLocalName().equals(localName)) {
return e;
}
// Depth-first search
e = findChildElementByLocalName(e, localName);
if (e != null) {
return e;
}
}
}
return null;
| public void | testAttributeQNames()
String NS1 = "urn:foo";
MessageContext context = new MessageContext(new AxisServer());
StringWriter writer = new StringWriter();
SerializationContext ser = new SerializationContext(writer);
ser.registerPrefixForURI("", NS1);
ser.startElement(new QName(NS1, "e1"), null);
String foo = ser.attributeQName2String(new QName(NS1, "attr"));
AttributesImpl attrs = new AttributesImpl();
attrs.addAttribute("a", "a", "a", "CDATA", foo);
ser.startElement(new QName(NS1, "e2"), attrs);
ser.endElement();
foo = ser.attributeQName2String(new QName(NS1, "attr"));
attrs = new AttributesImpl();
attrs.addAttribute("a", "a", "a", "CDATA", foo);
ser.startElement(new QName(NS1, "e3"), null);
ser.endElement();
ser.endElement();
System.out.println(writer.getBuffer().toString());
| public void | testDataNoHrefs()
doTestData(false);
| public void | testDataWithHrefs()
doTestData(true);
| public void | testDefaultNamespace()Confirm that default namespaces when writing doc/lit messages don't
trample namespace mappings.
MessageContext msgContext = new MessageContext(new AxisServer());
String req =
"<xsd1:A xmlns:xsd1=\"urn:myNamespace\">"
+ "<B>" // Note that B and C are in no namespace!
+ "<C>foo bar</C>"
+ "</B>"
+ "</xsd1:A>";
StringWriter stringWriter=new StringWriter();
StringReader reqReader = new StringReader(req);
InputSource reqSource = new InputSource(reqReader);
Document document = XMLUtils.newDocument(reqSource);
String msgString = null;
SOAPEnvelope msg = new SOAPEnvelope();
RPCParam arg1 = new RPCParam("urn:myNamespace", "testParam", document.getFirstChild());
arg1.setXSITypeGeneration(Boolean.FALSE);
RPCElement body = new RPCElement("urn:myNamespace", "method1", new Object[] { arg1 });
msg.addBodyElement(body);
body.setEncodingStyle(Constants.URI_LITERAL_ENC);
SerializationContext context = new SerializationContext(stringWriter, msgContext);
msg.output(context);
msgString = stringWriter.toString();
// Now reparse into DOM so we can check namespaces.
StringReader resReader = new StringReader(msgString);
InputSource resSource = new InputSource(resReader);
Document doc = XMLUtils.newDocument(resSource);
// Go make sure B and C are in fact in no namespace
Element el = findChildElementByLocalName(doc.getDocumentElement(),
"B");
assertNotNull("Couldn't find <B> element!", el);
assertNull("Element <B> has a namespace!", el.getNamespaceURI());
el = findChildElementByLocalName(el, "C");
assertNotNull("Couldn't find <C> element!", el);
assertNull("Element <C> has a namespace!", el.getNamespaceURI());
| public void | testEmptyXMLNS()
MessageContext msgContext = new MessageContext(new AxisServer());
String req =
"<xsd1:A xmlns:xsd1=\"urn:myNamespace\">"
+ "<xsd1:B>"
+ "<xsd1:C>foo bar</xsd1:C>"
+ "</xsd1:B>"
+ "</xsd1:A>";
StringWriter stringWriter=new StringWriter();
StringReader reqReader = new StringReader(req);
InputSource reqSource = new InputSource(reqReader);
Document document = XMLUtils.newDocument(reqSource);
String msgString = null;
SOAPEnvelope msg = new SOAPEnvelope();
RPCParam arg1 = new RPCParam("urn:myNamespace", "testParam", document.getFirstChild());
arg1.setXSITypeGeneration(Boolean.FALSE);
RPCElement body = new RPCElement("urn:myNamespace", "method1", new Object[] { arg1 });
msg.addBodyElement(body);
body.setEncodingStyle(Constants.URI_LITERAL_ENC);
SerializationContext context = new SerializationContext(stringWriter, msgContext);
msg.output(context);
msgString = stringWriter.toString();
assertTrue(msgString.indexOf("xmlns=\"\"")==-1);
| public void | testRPCElement()Test RPC element serialization when we have no MessageContext
try {
SOAPEnvelope env = new SOAPEnvelope();
RPCElement method = new RPCElement("ns",
"method",
new Object [] { "argument" });
env.addBodyElement(method);
env.toString();
} catch (Exception e) {
fail(e.getMessage());
}
// If there was no exception, we succeeded in serializing it.
|
|