View Javadoc

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