📄 testserialization.java
字号:
package edu.virginia.cs.wst.serialization;import org.apache.axis.Constants;import org.apache.axis.MessageContext;import org.apache.axis.encoding.DeserializationContext;import org.apache.axis.encoding.DeserializationContextImpl;import org.apache.axis.encoding.SerializationContext;import org.apache.axis.encoding.SerializationContextImpl;import org.apache.axis.encoding.TypeMapping;import org.apache.axis.encoding.TypeMappingRegistry;import org.apache.axis.message.RPCElement;import org.apache.axis.message.RPCParam;import org.apache.axis.message.SOAPEnvelope;import org.apache.axis.server.AxisServer;import org.apache.ws.security.message.token.UsernameToken;import org.w3c.dom.Document;import org.xml.sax.InputSource;import edu.virginia.cs.wst.RequestSecurityTokenResponse;import edu.virginia.cs.wst.SecurityTokenOrReference;import edu.virginia.cs.wst.TokenTypes;import edu.virginia.cs.wst.TrustConstants;import java.io.FileReader;import java.io.Reader;import java.io.StringReader;import java.io.StringWriter;import java.io.Writer;import java.net.URI;public class TestSerialization { public static void main(String[] args) throws Exception { MessageContext msgContext = new MessageContext(new AxisServer()); SOAPEnvelope msg = new SOAPEnvelope(); RPCParam arg1 = new RPCParam("urn:myNamespace", "testParam", "this is a string"); //QName dataQName = new QName("typeNS", "Data"); Document doc = msg.getAsDocument(); UsernameToken userToken = new UsernameToken(doc); userToken.setName("bob"); userToken.setPassword("bobspass"); RequestSecurityTokenResponse tokenResponse = new RequestSecurityTokenResponse(doc, new SecurityTokenOrReference(userToken)); tokenResponse.setContext(new URI("http://context.context")); tokenResponse.setTokenType(TokenTypes.USERNAME); /* Data data = new Data(); Data data2 = new Data(); data.stringMember = "String member"; data.floatMember = new Float("1.23"); data.dataMember = data2; data2.stringMember = "another str member"; data2.floatMember = new Float("4.56"); data2.dataMember = null; // "data;" for loop-test of multi-refs */ RPCParam arg2 = new RPCParam("", "struct", tokenResponse); RPCElement body = new RPCElement("urn:myNamespace", "method1", new Object[]{ arg1, arg2 }); msg.addBodyElement(body); try { Reader reader = null; if (args.length == 0) { Writer stringWriter = new StringWriter(); SerializationContext context = new SerializationContextImpl(stringWriter, msgContext); TypeMappingRegistry reg = context.getTypeMappingRegistry(); TypeMapping tm = (TypeMapping) reg.getTypeMapping(Constants.URI_SOAP11_ENC); if (tm == null) { tm = (TypeMapping) reg.createTypeMapping(); reg.register(Constants.URI_DEFAULT_SOAP_ENC, tm); } tm.register(RequestSecurityTokenResponse.class, TrustConstants.RESPONSE_NAME, new RSTResponseSerializerFactory(), new RSTResponseDeserializerFactory()); msg.output(context); String msgString = stringWriter.toString(); System.out.println("Serialized msg:"); System.out.println(msgString); System.out.println("-------"); System.out.println("Testing deserialization..."); reader = new StringReader(msgString); } else { reader = new FileReader(args[0]); } DeserializationContext dser = new DeserializationContextImpl(new InputSource(reader), msgContext, org.apache.axis.Message.REQUEST); dser.parse(); SOAPEnvelope env = dser.getEnvelope(); //System.out.println("********\n" + DOM2Writer.nodeToString(env, true) + "\n********"); RPCElement rpcElem = (RPCElement)env.getFirstBody(); RPCParam struct = rpcElem.getParam("struct"); if (struct == null) throw new Exception("No <struct> param"); if (!(struct.getValue() instanceof RequestSecurityTokenResponse)) { System.out.println("Not a RST object! "); System.out.println(struct.getValue()); System.exit(1); } RequestSecurityTokenResponse val = (RequestSecurityTokenResponse) struct.getValue(); if (val == null) throw new Exception("No value for struct param"); System.out.println(val.toString()); } catch (Exception e) { e.printStackTrace(); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -