View Javadoc

1   /*
2    * $Id: XStreamTransformerConfigurationTestCase.java 22387 2011-07-12 03:53:36Z dirk.olmes $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
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   * Tests configuration and creation of XStream-based transformers
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          // check for XStream's default
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          // set custom driver
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          // set nonexisting driver class
85          transformer.setDriverClass("DudeWhereIsMyDriver");
86  
87          try
88          {
89              assertNotNull(transformer.getXStream());
90              fail();
91          }
92          catch (TransformerException tex)
93          {
94              // OK
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 }