Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 package org.apache.xmlrpc.jaxb;
00020
00021 import javax.xml.bind.Element;
00022 import javax.xml.bind.JAXBContext;
00023
00024 import org.apache.ws.commons.util.NamespaceContextImpl;
00025 import org.apache.xmlrpc.common.TypeFactoryImpl;
00026 import org.apache.xmlrpc.common.XmlRpcController;
00027 import org.apache.xmlrpc.common.XmlRpcStreamConfig;
00028 import org.apache.xmlrpc.parser.TypeParser;
00029 import org.apache.xmlrpc.serializer.TypeSerializer;
00030 import org.apache.xmlrpc.serializer.XmlRpcWriter;
00031 import org.xml.sax.SAXException;
00032
00033
00036 public class JaxbTypeFactory extends TypeFactoryImpl {
00037 private final JAXBContext context;
00038 private final JaxbSerializer serializer;
00039
00046 public JaxbTypeFactory(XmlRpcController pController, JAXBContext pContext) {
00047 super(pController);
00048 context = pContext;
00049 serializer = new JaxbSerializer(context);
00050 }
00051
00052 public TypeParser getParser(XmlRpcStreamConfig pConfig, NamespaceContextImpl pContext, String pURI, String pLocalName) {
00053 TypeParser tp = super.getParser(pConfig, pContext, pURI, pLocalName);
00054 if (tp == null) {
00055 if (XmlRpcWriter.EXTENSIONS_URI.equals(pURI) && JaxbSerializer.JAXB_TAG.equals(pLocalName)) {
00056 return new JaxbParser(context);
00057 }
00058 }
00059 return tp;
00060 }
00061
00062 public TypeSerializer getSerializer(XmlRpcStreamConfig pConfig, Object pObject) throws SAXException {
00063 TypeSerializer ts = super.getSerializer(pConfig, pObject);
00064 if (ts == null) {
00065 if (pObject instanceof Element) {
00066 return serializer;
00067 }
00068 }
00069 return ts;
00070 }
00071 }