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