package railo.runtime.net.rpc; import javax.xml.namespace.QName; import javax.xml.rpc.encoding.TypeMapping; import javax.xml.rpc.encoding.TypeMappingRegistry; import org.apache.axis.encoding.ser.BeanDeserializerFactory; import org.apache.axis.encoding.ser.BeanSerializerFactory; import railo.runtime.net.rpc.server.StringDeserializerFactory; import railo.runtime.net.rpc.server.StringSerializerFactory; import coldfusion.xml.rpc.QueryBean; public class TypeMappingUtil { public static void registerDefaults(TypeMappingRegistry tmr) { TypeMapping tm = tmr.getDefaultTypeMapping(); if(!tm.isRegistered(QueryBean.class, RPCConstants.QUERY_QNAME)) tm.register(QueryBean.class, RPCConstants.QUERY_QNAME, new BeanSerializerFactory(QueryBean.class,RPCConstants.QUERY_QNAME), new BeanDeserializerFactory(QueryBean.class,RPCConstants.QUERY_QNAME)); //Adding custom string serialization for non printable characters. tm.register(String.class, RPCConstants.STRING_QNAME, new StringSerializerFactory(String.class, RPCConstants.STRING_QNAME), new StringDeserializerFactory(String.class, RPCConstants.STRING_QNAME)); } public static void registerBeanTypeMapping(javax.xml.rpc.encoding.TypeMapping tm, Class clazz, QName qName) { if(tm.isRegistered(clazz, qName)) return; tm.register( clazz, qName, new BeanSerializerFactory(clazz, qName), new BeanDeserializerFactory(clazz, qName)); } }