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