1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17 package org.apache.juneau;
18
19 import static org.junit.jupiter.api.Assertions.*;
20
21 import org.apache.juneau.collections.*;
22 import org.apache.juneau.json.*;
23 import org.apache.juneau.parser.*;
24 import org.apache.juneau.serializer.*;
25 import org.apache.juneau.swap.*;
26 import org.junit.jupiter.api.*;
27
28 class ObjectSwap_Test extends TestBase {
29
30 //====================================================================================================
31 // Test same type
32 // If you define a ObjectSwap<String,String> filter, then it should be invoked on all strings.
33 //====================================================================================================
34 @Test void a01_sameType() throws Exception {
35 var s = JsonSerializer.create().json5().swaps(ASwap.class).build();
36 var p = JsonParser.create().swaps(ASwap.class).build();
37 var r = s.serialize("foobar");
38
39 assertEquals("'xfoobarx'", r);
40 r = p.parse(r, String.class);
41 assertEquals("foobar", r);
42
43 var m = JsonMap.ofJson("{foo:'bar'}");
44 r = s.serialize(m);
45 assertEquals("{xfoox:'xbarx'}", r);
46 }
47
48 public static class ASwap extends StringSwap<String> {
49 @Override
50 public String swap(BeanSession session, String o) throws SerializeException {
51 return "x" + o + "x";
52 }
53
54 @Override
55 public String unswap(BeanSession session, String f, ClassMeta<?> hint) throws ParseException {
56 return f.substring(1, f.length()-1);
57 }
58 }
59 }