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 Transformer getRoundTripTransformer() throws Exception
43 {
44 Transformer trans = super.getRoundTripTransformer();
45 EndpointBuilder builder = new EndpointURIEndpointBuilder("test://test", muleContext);
46 builder.setEncoding(ENCODING);
47 ImmutableEndpoint endpoint = muleContext.getRegistry().lookupEndpointFactory().getInboundEndpoint(
48 builder);
49 trans.setEndpoint(endpoint);
50 return trans;
51 }
52
53 @Override
54 public Transformer getTransformer() throws Exception
55 {
56 Transformer trans = super.getTransformer();
57 trans.setReturnDataType(new SimpleDataType<byte[]>(byte[].class));
58 EndpointBuilder builder = new EndpointURIEndpointBuilder("test://test", muleContext);
59 builder.setEncoding(ENCODING);
60 ImmutableEndpoint endpoint = muleContext.getRegistry().lookupEndpointFactory().getInboundEndpoint(
61 builder);
62 trans.setEndpoint(endpoint);
63 return trans;
64 }
65
66 @Override
67 public Object getTestData()
68 {
69 return jsonObject;
70 }
71
72 @Override
73 public Object getResultData()
74 {
75 try
76 {
77 return jsonString.getBytes(ENCODING);
78 }
79 catch (UnsupportedEncodingException e)
80 {
81 fail();
82 return null;
83 }
84 }
85
86 private String getBrandOfOrange(Locale locale)
87 {
88 return LocaleMessageHandler.getString("test-data", locale, "JsonBeanRoundTripNonAsciiTestCase.getBrandOfOrange", new Object[] {});
89 }
90 }