View Javadoc

1   /*
2    * $Id: JsonBeanRoundTripNonAsciiTestCase.java 22377 2011-07-11 12:41:42Z 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.module.json.transformers;
12  
13  import org.mule.api.endpoint.EndpointBuilder;
14  import org.mule.api.endpoint.ImmutableEndpoint;
15  import org.mule.api.transformer.Transformer;
16  import org.mule.config.i18n.LocaleMessageHandler;
17  import org.mule.endpoint.EndpointURIEndpointBuilder;
18  import org.mule.tck.testmodels.fruit.Apple;
19  import org.mule.tck.testmodels.fruit.Orange;
20  import org.mule.transformer.types.SimpleDataType;
21  
22  import java.io.UnsupportedEncodingException;
23  import java.util.Locale;
24  
25  import static org.junit.Assert.fail;
26  
27  public class JsonBeanRoundTripNonAsciiTestCase extends JsonBeanRoundTripTestCase
28  {
29      private static final String ENCODING = "Windows-31J";
30  
31      private final String jsonString;
32      private final FruitCollection jsonObject;
33  
34      public JsonBeanRoundTripNonAsciiTestCase()
35      {
36          jsonString = "{\"apple\":{\"bitten\":true,\"washed\":false},\"orange\":{\"brand\":\""
37              +  getBrandOfOrange(Locale.JAPAN)
38              + "\",\"segments\":8,\"radius\":3.45,\"listProperties\":null,\"mapProperties\":null,\"arrayProperties\":null}}";
39  
40          jsonObject = new FruitCollection(new Apple(true), null, new Orange(8, 3.45, getBrandOfOrange(Locale.JAPAN)));
41      }
42  
43      @Override
44      public void testTransform() throws Exception
45      {
46          // This test fails under Java 1.6 on Windows, because the Java fields are serialized in a different order.
47          String javaVersion = System.getProperty("java.specification.version", "<None>");
48          String osName = System.getProperty("os.name", "<None>");
49          if (javaVersion.equals("1.6") && osName.startsWith("Windows"))
50          {
51              return;
52          }
53          super.testTransform();
54      }
55  
56      @Override
57      public Transformer getRoundTripTransformer() throws Exception
58      {
59          Transformer trans = super.getRoundTripTransformer();
60          EndpointBuilder builder = new EndpointURIEndpointBuilder("test://test", muleContext);
61          builder.setEncoding(ENCODING);
62          ImmutableEndpoint endpoint = muleContext.getEndpointFactory().getInboundEndpoint(
63              builder);
64          trans.setEndpoint(endpoint);
65          return trans;
66      }
67  
68      @Override
69      public Transformer getTransformer() throws Exception
70      {
71          Transformer trans = super.getTransformer();
72          trans.setReturnDataType(new SimpleDataType<byte[]>(byte[].class));
73          EndpointBuilder builder = new EndpointURIEndpointBuilder("test://test", muleContext);
74          builder.setEncoding(ENCODING);
75          ImmutableEndpoint endpoint = muleContext.getEndpointFactory().getInboundEndpoint(
76              builder);
77          trans.setEndpoint(endpoint);
78          return trans;
79      }
80      
81      @Override
82      public Object getTestData()
83      {
84          return jsonObject;
85      }
86  
87      @Override
88      public Object getResultData()
89      {
90          try
91          {
92              return jsonString.getBytes(ENCODING);
93          }
94          catch (UnsupportedEncodingException e)
95          {
96              fail();
97              return null;
98          }
99      }
100 
101     private String getBrandOfOrange(Locale locale)
102     {
103         return LocaleMessageHandler.getString("test-data", locale, "JsonBeanRoundTripNonAsciiTestCase.getBrandOfOrange", new Object[] {});
104     }
105 }