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.junit4.AbstractMuleTestCase;
17
18 import com.thoughtworks.xstream.XStream;
19 import com.thoughtworks.xstream.io.xml.DomDriver;
20
21 import org.junit.After;
22 import org.junit.Before;
23 import org.junit.Test;
24
25 import static org.junit.Assert.assertEquals;
26 import static org.junit.Assert.assertNotNull;
27 import static org.junit.Assert.assertSame;
28 import static org.junit.Assert.assertTrue;
29 import static org.junit.Assert.fail;
30
31
32
33
34 public class XStreamTransformerConfigurationTestCase extends AbstractMuleTestCase
35 {
36 public static volatile boolean MyDriverDidInitialize;
37
38 protected static class MyDOMDriver extends DomDriver
39 {
40 public MyDOMDriver()
41 {
42 super();
43 XStreamTransformerConfigurationTestCase.MyDriverDidInitialize = true;
44 }
45 }
46
47 @Before
48 public void doSetUp()
49 {
50 MyDriverDidInitialize = true;
51 }
52
53 @After
54 public void doTearDown()
55 {
56 MyDriverDidInitialize = false;
57 }
58
59 @Test
60 public void testDefaultDriver() throws Exception
61 {
62 XmlToObject transformer = new XmlToObject();
63
64 assertEquals(XStreamFactory.XSTREAM_XPP_DRIVER, transformer.getDriverClass());
65 }
66
67 @Test
68 public void testCustomDriver() throws Exception
69 {
70 XmlToObject transformer = new XmlToObject();
71
72 transformer.setDriverClass(MyDOMDriver.class.getName());
73 XStream xs = transformer.getXStream();
74
75 assertNotNull(xs);
76 assertSame(xs, transformer.getXStream());
77 assertTrue(MyDriverDidInitialize);
78 }
79
80 @Test
81 public void testBadDriver() throws Exception
82 {
83 XmlToObject transformer = new XmlToObject();
84
85 transformer.setDriverClass("DudeWhereIsMyDriver");
86
87 try
88 {
89 assertNotNull(transformer.getXStream());
90 fail();
91 }
92 catch (TransformerException tex)
93 {
94
95 assertTrue(tex.getCause() instanceof ClassNotFoundException);
96 }
97 }
98
99 @Test
100 public void testClassLoader()
101 {
102
103 ClassLoader originalClassLoader = Thread.currentThread().getContextClassLoader();
104
105 try
106 {
107 TestClassLoader classLoader = new TestClassLoader();
108 Thread.currentThread().setContextClassLoader(classLoader);
109 XmlToObject transformer = new XmlToObject();
110 transformer.initialise();
111 assertEquals(classLoader, transformer.getXStream().getClassLoader());
112 }
113 catch (Exception e)
114 {
115 fail(e.getMessage());
116 }
117 finally
118 {
119 Thread.currentThread().setContextClassLoader(originalClassLoader);
120 }
121 }
122
123 private static class TestClassLoader extends ClassLoader
124 {
125 }
126
127 }