1 /**
2 *
3 */
4 package net.sf.crispy.impl.jaxrpc;
5
6 import javax.xml.namespace.QName;
7 import javax.xml.rpc.encoding.DeserializerFactory;
8 import javax.xml.rpc.encoding.SerializerFactory;
9
10 import net.sf.crispy.InvocationException;
11 import net.sf.crispy.util.Util;
12
13 import org.apache.axis.encoding.ser.BeanDeserializerFactory;
14 import org.apache.axis.encoding.ser.BeanSerializerFactory;
15
16 /**
17 *
18 * Factory to create a TypeMapping for transfer for JavaBean-object.
19 *
20 * @author Linke
21 *
22 */
23 public class BeanTypeMappingFactory implements TypeMappingFactory {
24
25 private Class clazz = null;
26 private QName qName = null;
27
28 public BeanTypeMappingFactory() { }
29
30 public void setParameter (String pvParams[]) {
31 if (pvParams == null) {
32 throw new IllegalArgumentException ("The class name is null (in BeanTypeMappingFactory)!");
33 }
34
35 String lvClassName = pvParams[1];
36 try {
37 clazz = Class.forName(lvClassName);
38 qName = Util.createQNameByClass(clazz);
39 } catch (Exception e) {
40 throw new InvocationException("Can't create class (in BeanTypeMappingFactory) from string: " + lvClassName, e);
41 }
42 }
43 /**
44 * @see net.sf.crispy.impl.jaxrpc.TypeMappingFactory#getJavaType()
45 */
46 public Class getJavaType() { return clazz; }
47
48 /**
49 * @see net.sf.crispy.impl.jaxrpc.TypeMappingFactory#getXmlType()
50 */
51 public QName getXmlType() { return qName; }
52
53 /**
54 * @see net.sf.crispy.impl.jaxrpc.TypeMappingFactory#getSerializerFactory()
55 */
56 public SerializerFactory getSerializerFactory() { return new BeanSerializerFactory(clazz, getXmlType()); }
57
58 /**
59 * @see net.sf.crispy.impl.jaxrpc.TypeMappingFactory#getDeserializerFactory()
60 */
61 public DeserializerFactory getDeserializerFactory() { return new BeanDeserializerFactory(clazz, getXmlType()); }
62
63 }