1
2
3
4
5
6
7
8
9
10
11 package org.mule.transformers.xml.xstream;
12
13 import org.mule.api.transformer.TransformerException;
14 import org.mule.module.xml.transformer.XStreamFactory;
15 import org.mule.module.xml.transformer.XmlToObject;
16 import org.mule.tck.AbstractMuleTestCase;
17
18 import com.thoughtworks.xstream.XStream;
19 import com.thoughtworks.xstream.io.xml.DomDriver;
20
21
22
23
24 public class XStreamTransformerConfigurationTestCase extends AbstractMuleTestCase
25 {
26 public static volatile boolean MyDriverDidInitialize;
27
28 protected static class MyDOMDriver extends DomDriver
29 {
30 public MyDOMDriver()
31 {
32 super();
33 XStreamTransformerConfigurationTestCase.MyDriverDidInitialize = true;
34 }
35 }
36
37 @Override
38 protected void doSetUp() throws Exception
39 {
40 super.doSetUp();
41 MyDriverDidInitialize = true;
42 }
43
44 @Override
45 protected void doTearDown() throws Exception
46 {
47 MyDriverDidInitialize = false;
48 super.doTearDown();
49 }
50
51 public void testDefaultDriver() throws Exception
52 {
53 XmlToObject transformer = new XmlToObject();
54
55 assertEquals(XStreamFactory.XSTREAM_XPP_DRIVER, transformer.getDriverClass());
56 }
57
58 public void testCustomDriver() throws Exception
59 {
60 XmlToObject transformer = new XmlToObject();
61
62 transformer.setDriverClass(MyDOMDriver.class.getName());
63 XStream xs = transformer.getXStream();
64
65 assertNotNull(xs);
66 assertSame(xs, transformer.getXStream());
67 assertTrue(MyDriverDidInitialize);
68 }
69
70 public void testBadDriver() throws Exception
71 {
72 XmlToObject transformer = new XmlToObject();
73
74 transformer.setDriverClass("DudeWhereIsMyDriver");
75
76 try
77 {
78 assertNotNull(transformer.getXStream());
79 fail();
80 }
81 catch (TransformerException tex)
82 {
83
84 assertTrue(tex.getCause() instanceof ClassNotFoundException);
85 }
86 }
87
88 public void testClassLoader()
89 {
90
91 ClassLoader originalClassLoader = Thread.currentThread().getContextClassLoader();
92
93 try
94 {
95 TestClassLoader classLoader = new TestClassLoader();
96 Thread.currentThread().setContextClassLoader(classLoader);
97 XmlToObject transformer = new XmlToObject();
98 transformer.initialise();
99 assertEquals(classLoader, transformer.getXStream().getClassLoader());
100 }
101 catch (Exception e)
102 {
103 fail(e.getMessage());
104 }
105 finally
106 {
107 Thread.currentThread().setContextClassLoader(originalClassLoader);
108 }
109 }
110
111 private static class TestClassLoader extends ClassLoader
112 {
113 }
114
115 }