1
2
3
4
5
6
7
8
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
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 }