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 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
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 }