1 package org.springframework.samples.jpetstore.service.client; 2 3 import javax.xml.namespace.QName ; 4 import javax.xml.rpc.Service ; 5 import javax.xml.rpc.encoding.TypeMapping ; 6 import javax.xml.rpc.encoding.TypeMappingRegistry ; 7 8 import org.apache.axis.encoding.ser.BeanDeserializerFactory; 9 import org.apache.axis.encoding.ser.BeanSerializerFactory; 10 11 import org.springframework.remoting.jaxrpc.JaxRpcServicePostProcessor; 12 import org.springframework.samples.jpetstore.domain.Item; 13 import org.springframework.samples.jpetstore.domain.LineItem; 14 import org.springframework.samples.jpetstore.domain.Order; 15 import org.springframework.samples.jpetstore.domain.Product; 16 17 35 public class BeanMappingServicePostProcessor implements JaxRpcServicePostProcessor { 36 37 42 public static final String DEFAULT_ENCODING_STYLE_URI = "http://schemas.xmlsoap.org/soap/encoding/"; 43 44 48 public static final String DEFAULT_TYPE_NAMESPACE_URI = "urn:JPetStore"; 49 50 51 private String encodingStyleUri = DEFAULT_ENCODING_STYLE_URI; 52 53 private String typeNamespaceUri = DEFAULT_TYPE_NAMESPACE_URI; 54 55 56 60 public void setEncodingStyleUri(String encodingStyleUri) { 61 this.encodingStyleUri = encodingStyleUri; 62 } 63 64 68 public void setTypeNamespaceUri(String typeNamespaceUri) { 69 this.typeNamespaceUri = typeNamespaceUri; 70 } 71 72 73 public void postProcessJaxRpcService(Service service) { 74 TypeMappingRegistry registry = service.getTypeMappingRegistry(); 75 TypeMapping mapping = registry.createTypeMapping(); 76 registerBeanMapping(mapping, Order.class, "Order"); 77 registerBeanMapping(mapping, LineItem.class, "LineItem"); 78 registerBeanMapping(mapping, Item.class, "Item"); 79 registerBeanMapping(mapping, Product.class, "Product"); 80 registry.register(this.encodingStyleUri, mapping); 81 } 82 83 protected void registerBeanMapping(TypeMapping mapping, Class type, String name) { 84 QName xmlType = new QName (this.typeNamespaceUri, name); 85 mapping.register(type, xmlType, 86 new BeanSerializerFactory(type, xmlType), 87 new BeanDeserializerFactory(type, xmlType)); 88 } 89 90 } 91 | Popular Tags |