http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ab15d45b/juneau-core-test/src/test/java/org/apache/juneau/BeanMapTest.java ---------------------------------------------------------------------- diff --git a/juneau-core-test/src/test/java/org/apache/juneau/BeanMapTest.java b/juneau-core-test/src/test/java/org/apache/juneau/BeanMapTest.java deleted file mode 100755 index 679dd70..0000000 --- a/juneau-core-test/src/test/java/org/apache/juneau/BeanMapTest.java +++ /dev/null @@ -1,1927 +0,0 @@ -// *************************************************************************************************************************** -// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file * -// * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file * -// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance * -// * with the License. You may obtain a copy of the License at * -// * * -// * http://www.apache.org/licenses/LICENSE-2.0 * -// * * -// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an * -// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the * -// * specific language governing permissions and limitations under the License. * -// *************************************************************************************************************************** -package org.apache.juneau; - -import static org.apache.juneau.TestUtils.*; -import static org.junit.Assert.*; - -import java.util.*; - -import org.apache.juneau.annotation.*; -import org.apache.juneau.html.*; -import org.apache.juneau.json.*; -import org.apache.juneau.parser.*; -import org.apache.juneau.transforms.*; -import org.apache.juneau.uon.*; -import org.apache.juneau.urlencoding.*; -import org.apache.juneau.utils.*; -import org.apache.juneau.xml.*; -import org.junit.*; - -@SuppressWarnings({"unchecked","rawtypes","serial","javadoc"}) -public class BeanMapTest { - - JsonSerializer serializer = JsonSerializer.DEFAULT_LAX; - - BeanContext bc = PropertyStore.create() - .setBeanDictionary(MyBeanDictionaryMap.class) - .setPojoSwaps(CalendarSwap.ISO8601DTZ.class) - .getBeanContext(); - BeanSession session = bc.createSession(); - - public static class MyBeanDictionaryMap extends BeanDictionaryMap { - public MyBeanDictionaryMap() { - addClass("StringArray", String[].class); - addClass("String2dArray", String[][].class); - addClass("IntArray", int[].class); - addClass("Int2dArray", int[][].class); - addClass("S", S.class); - addClass("R1", R1.class); - addClass("R2", R2.class); - addClass("LinkedList", LinkedList.class); - addClass("TreeMap", TreeMap.class); - addCollectionClass("LinkedListOfInts", LinkedList.class, Integer.class); - addCollectionClass("LinkedListOfR1", LinkedList.class, R1.class); - addCollectionClass("LinkedListOfCalendar", LinkedList.class, Calendar.class); - } - } - - //==================================================================================================== - // Primitive field properties - //==================================================================================================== - @Test - public void testPrimitiveFieldProperties() { - A t = new A(); - Map m = session.toBeanMap(t); - - // Make sure setting primitive values to null causes them to get default values. - m.put("i1", null); - m.put("s1", null); - m.put("l1", null); - m.put("d1", null); - m.put("f1", null); - m.put("b1", null); - assertEquals(new Integer(0), m.get("i1")); - assertEquals(new Short((short)0), m.get("s1")); - assertEquals(new Long(0l), m.get("l1")); - assertEquals(new Double(0d), m.get("d1")); - assertEquals(new Float(0f), m.get("f1")); - assertEquals(new Boolean(false), m.get("b1")); - - // Make sure setting non-primitive values to null causes them to set to null. - m.put("i2", null); - m.put("s2", null); - m.put("l2", null); - m.put("d2", null); - m.put("f2", null); - m.put("b2", null); - assertNull(m.get("i2")); - assertNull(m.get("s2")); - assertNull(m.get("l2")); - assertNull(m.get("d2")); - assertNull(m.get("f2")); - assertNull(m.get("b2")); - - // Make sure setting them all to an integer is kosher. - m.put("i1", 1); - m.put("s1", 1); - m.put("l1", 1); - m.put("d1", 1); - m.put("f1", 1); - m.put("i2", 1); - m.put("s2", 1); - m.put("l2", 1); - m.put("d2", 1); - m.put("f2", 1); - assertEquals(new Integer(1), m.get("i1")); - assertEquals(new Integer(1), m.get("i2")); - assertEquals(new Short((short)1), m.get("s1")); - assertEquals(new Short((short)1), m.get("s2")); - assertEquals(new Long(1), m.get("l1")); - assertEquals(new Long(1), m.get("l2")); - assertEquals(new Double(1), m.get("d1")); - assertEquals(new Double(1), m.get("d2")); - assertEquals(new Float(1), m.get("f1")); - assertEquals(new Float(1), m.get("f2")); - - m.put("b1", true); - m.put("b2", new Boolean(true)); - assertEquals(new Boolean(true), m.get("b1")); - assertEquals(new Boolean(true), m.get("b2")); - } - - public static class A { - public int i1; - public Integer i2; - public short s1; - public Short s2; - public long l1; - public Long l2; - public double d1; - public Double d2; - public float f1; - public Float f2; - public boolean b1; - public Boolean b2; - } - - //==================================================================================================== - // Primitive method properties - //==================================================================================================== - @Test - public void testPrimitiveMethodProperties() { - B t = new B(); - Map m = session.toBeanMap(t); - - // Make sure setting primitive values to null causes them to get default values. - m.put("i1", null); - m.put("s1", null); - m.put("l1", null); - m.put("d1", null); - m.put("f1", null); - m.put("b1", null); - assertEquals(new Integer(0), m.get("i1")); - assertEquals(new Short((short)0), m.get("s1")); - assertEquals(new Long(0l), m.get("l1")); - assertEquals(new Double(0d), m.get("d1")); - assertEquals(new Float(0f), m.get("f1")); - assertEquals(new Boolean(false), m.get("b1")); - - // Make sure setting non-primitive values to null causes them to set to null. - m.put("i2", null); - m.put("s2", null); - m.put("l2", null); - m.put("d2", null); - m.put("f2", null); - m.put("b2", null); - assertNull(m.get("i2")); - assertNull(m.get("s2")); - assertNull(m.get("l2")); - assertNull(m.get("d2")); - assertNull(m.get("f2")); - assertNull(m.get("b2")); - - // Make sure setting them all to an integer is kosher. - m.put("i1", 1); - m.put("s1", 1); - m.put("l1", 1); - m.put("d1", 1); - m.put("f1", 1); - m.put("i2", 1); - m.put("s2", 1); - m.put("l2", 1); - m.put("d2", 1); - m.put("f2", 1); - assertEquals(new Integer(1), m.get("i1")); - assertEquals(new Integer(1), m.get("i2")); - assertEquals(new Short((short)1), m.get("s1")); - assertEquals(new Short((short)1), m.get("s2")); - assertEquals(new Long(1), m.get("l1")); - assertEquals(new Long(1), m.get("l2")); - assertEquals(new Double(1), m.get("d1")); - assertEquals(new Double(1), m.get("d2")); - assertEquals(new Float(1), m.get("f1")); - assertEquals(new Float(1), m.get("f2")); - - m.put("b1", true); - m.put("b2", true); - assertEquals(new Boolean(true), m.get("b1")); - assertEquals(new Boolean(true), m.get("b2")); - } - - public static class B { - private int i1; - private Integer i2; - private short s1; - private Short s2; - private long l1; - private Long l2; - private double d1; - private Double d2; - private float f1; - private Float f2; - private boolean b1; - private Boolean b2; - - public int getI1() {return i1;} - public void setI1(int i1) {this.i1 = i1;} - public Integer getI2() {return i2;} - public void setI2(Integer i2) {this.i2 = i2;} - - public short getS1() {return s1;} - public void setS1(short s1) {this.s1 = s1;} - public Short getS2() {return s2;} - public void setS2(Short s2) {this.s2 = s2;} - - public long getL1() {return l1;} - public void setL1(long l1) {this.l1 = l1;} - public Long getL2() {return l2;} - public void setL2(Long l2) {this.l2 = l2;} - - public double getD1() {return d1;} - public void setD1(double d1) {this.d1 = d1;} - public Double getD2() {return d2;} - public void setD2(Double d2) {this.d2 = d2;} - - public float getF1() {return f1;} - public void setF1(float f1) {this.f1 = f1;} - public Float getF2() {return f2;} - public void setF2(Float f2) {this.f2 = f2;} - - public boolean getB1() {return b1;} - public void setB1(boolean b1) {this.b1 = b1;} - public Boolean getB2() {return b2;} - public void setB2(Boolean b2) {this.b2 = b2;} - } - - //==================================================================================================== - // testCollectionFieldProperties - //==================================================================================================== - @Test - public void testCollectionFieldProperties() throws Exception { - C t = new C(); - Map m = session.toBeanMap(t); - - // Non-initialized list fields. - m.put("l1", new ObjectList("[1,2,3]")); - m.put("al1", new ObjectList("[1,2,3]")); - m.put("ll1", new ObjectList("[1,2,3]")); - m.put("c1", new ObjectList("[1,2,3]")); - m.put("jl1", new ObjectList("[1,2,3]")); - - // al1 should be initialized with an ArrayList, since it's not a superclass of ObjectList. - assertEquals(ArrayList.class.getName(), m.get("al1").getClass().getName()); - - // The rest are proper superclasses of ObjectList. - assertEquals(ObjectList.class.getName(), m.get("l1").getClass().getName()); - assertEquals(LinkedList.class.getName(), m.get("ll1").getClass().getName()); - assertEquals(ObjectList.class.getName(), m.get("c1").getClass().getName()); - assertEquals(ObjectList.class.getName(), m.get("jl1").getClass().getName()); - - // Non-initialized map fields. - m.put("m1", new ObjectMap("{foo:'bar'}")); - m.put("hm1", new ObjectMap("{foo:'bar'}")); - m.put("jm1", new ObjectMap("{foo:'bar'}")); - m.put("tm1", new ObjectMap("{foo:'bar'}")); - - // tm1 should be initialized with TreeMap, since it's not a superclass of ObjectMap. - assertEquals(TreeMap.class.getName(), m.get("tm1").getClass().getName()); - - // The rest are propert superclasses of ObjectMap - assertEquals(ObjectMap.class.getName(), m.get("m1").getClass().getName()); - assertEquals(HashMap.class.getName(), m.get("hm1").getClass().getName()); - assertEquals(ObjectMap.class.getName(), m.get("jm1").getClass().getName()); - - // Initialized fields should reuse existing field value. - m.put("l2", new ObjectList("[1,2,3]")); - m.put("al2", new ObjectList("[1,2,3]")); - m.put("ll2", new ObjectList("[1,2,3]")); - m.put("c2", new ObjectList("[1,2,3]")); - m.put("m2", new ObjectMap("{foo:'bar'}")); - m.put("hm2", new ObjectMap("{foo:'bar'}")); - m.put("tm2", new ObjectMap("{foo:'bar'}")); - m.put("jm2", new ObjectMap("{foo:'bar'}")); - m.put("jl2", new ObjectList("[1,2,3]")); - - assertEquals(ArrayList.class.getName(), m.get("l2").getClass().getName()); - assertEquals(ArrayList.class.getName(), m.get("al2").getClass().getName()); - assertEquals(LinkedList.class.getName(), m.get("ll2").getClass().getName()); - assertEquals(ArrayList.class.getName(), m.get("c2").getClass().getName()); - assertEquals(HashMap.class.getName(), m.get("m2").getClass().getName()); - assertEquals(HashMap.class.getName(), m.get("hm2").getClass().getName()); - assertEquals(TreeMap.class.getName(), m.get("tm2").getClass().getName()); - assertEquals(ObjectMap.class.getName(), m.get("jm2").getClass().getName()); - assertEquals(ObjectList.class.getName(), m.get("jl2").getClass().getName()); - } - - public static class C { - public List l1; - public ArrayList al1; - public LinkedList ll1; - public Collection c1; - public Map m1; - public HashMap hm1; - public ObjectMap jm1; - public TreeMap tm1; - public ObjectList jl1; - public List l2 = new ArrayList(); - public ArrayList al2 = new ArrayList(); - public LinkedList ll2 = new LinkedList(); - public Collection c2 = new ArrayList(); - public Map m2 = new HashMap(); - public HashMap hm2 = new HashMap(); - public TreeMap tm2 = new TreeMap(); - public ObjectMap jm2 = new ObjectMap(); - public ObjectList jl2 = new ObjectList(); - } - - //==================================================================================================== - // testCollectionMethodProperties - //==================================================================================================== - @Test - public void testCollectionMethodProperties() throws Exception { - D t = new D(); - Map m = session.toBeanMap(t); - - // Non-initialized list fields. - m.put("l1", new ObjectList("[1,2,3]")); - m.put("al1", new ObjectList("[1,2,3]")); - m.put("ll1", new ObjectList("[1,2,3]")); - m.put("c1", new ObjectList("[1,2,3]")); - m.put("jl1", new ObjectList("[1,2,3]")); - - // al1 should be initialized with an ArrayList, since it's not a superclass of ObjectList. - assertEquals(ArrayList.class.getName(), m.get("al1").getClass().getName()); - - // The rest are proper superclasses of ObjectList. - assertEquals(ObjectList.class.getName(), m.get("l1").getClass().getName()); - assertEquals(LinkedList.class.getName(), m.get("ll1").getClass().getName()); - assertEquals(ObjectList.class.getName(), m.get("c1").getClass().getName()); - assertEquals(ObjectList.class.getName(), m.get("jl1").getClass().getName()); - - // Non-initialized map fields. - m.put("m1", new ObjectMap("{foo:'bar'}")); - m.put("hm1", new ObjectMap("{foo:'bar'}")); - m.put("jm1", new ObjectMap("{foo:'bar'}")); - m.put("tm1", new ObjectMap("{foo:'bar'}")); - - // tm1 should be initialized with TreeMap, since it's not a superclass of ObjectMap. - assertEquals(TreeMap.class.getName(), m.get("tm1").getClass().getName()); - - // The rest are propert superclasses of ObjectMap - assertEquals(ObjectMap.class.getName(), m.get("m1").getClass().getName()); - assertEquals(HashMap.class.getName(), m.get("hm1").getClass().getName()); - assertEquals(ObjectMap.class.getName(), m.get("jm1").getClass().getName()); - - // Initialized fields should reuse existing field value. - m.put("l2", new ObjectList("[1,2,3]")); - m.put("al2", new ObjectList("[1,2,3]")); - m.put("ll2", new ObjectList("[1,2,3]")); - m.put("c2", new ObjectList("[1,2,3]")); - m.put("m2", new ObjectMap("{foo:'bar'}")); - m.put("hm2", new ObjectMap("{foo:'bar'}")); - m.put("tm2", new ObjectMap("{foo:'bar'}")); - m.put("jm2", new ObjectMap("{foo:'bar'}")); - m.put("jl2", new ObjectList("[1,2,3]")); - - assertEquals(ArrayList.class.getName(), m.get("l2").getClass().getName()); - assertEquals(ArrayList.class.getName(), m.get("al2").getClass().getName()); - assertEquals(LinkedList.class.getName(), m.get("ll2").getClass().getName()); - assertEquals(ArrayList.class.getName(), m.get("c2").getClass().getName()); - assertEquals(HashMap.class.getName(), m.get("m2").getClass().getName()); - assertEquals(HashMap.class.getName(), m.get("hm2").getClass().getName()); - assertEquals(TreeMap.class.getName(), m.get("tm2").getClass().getName()); - assertEquals(ObjectMap.class.getName(), m.get("jm2").getClass().getName()); - assertEquals(ObjectList.class.getName(), m.get("jl2").getClass().getName()); - } - - public static class D { - private List l1; - public List getL1() {return l1;} - public void setL1(List l1) {this.l1 = l1;} - - private ArrayList al1; - public ArrayList getAl1() {return al1;} - public void setAl1(ArrayList al1) {this.al1 = al1;} - - private LinkedList ll1; - public LinkedList getLl1() {return ll1;} - public void setLl1(LinkedList ll1) {this.ll1 = ll1;} - - private Collection c1; - public Collection getC1() {return c1;} - public void setC1(Collection c1) {this.c1 = c1;} - - private Map m1; - public Map getM1() {return m1;} - public void setM1(Map m1) {this.m1 = m1;} - - private HashMap hm1; - public HashMap getHm1() {return hm1;} - public void setHm1(HashMap hm1) {this.hm1 = hm1;} - - private ObjectMap jm1; - public ObjectMap getJm1() {return jm1;} - public void setJm1(ObjectMap jm1) {this.jm1 = jm1;} - - private TreeMap tm1; - public TreeMap getTm1() {return tm1;} - public void setTm1(TreeMap tm1) {this.tm1 = tm1;} - - private ObjectList jl1; - public ObjectList getJl1() {return jl1;} - public void setJl1(ObjectList jl1) {this.jl1 = jl1;} - - private List l2 = new ArrayList(); - public List getL2() {return l2;} - public void setL2(List l2) {this.l2 = l2;} - - private ArrayList al2 = new ArrayList(); - public ArrayList getAl2() {return al2;} - public void setAl2(ArrayList al2) {this.al2 = al2;} - - private LinkedList ll2 = new LinkedList(); - public LinkedList getLl2() {return ll2;} - public void setLl2(LinkedList ll2) {this.ll2 = ll2;} - - private Collection c2 = new ArrayList(); - public Collection getC2() {return c2;} - public void setC2(Collection c2) {this.c2 = c2;} - - private Map m2 = new HashMap(); - public Map getM2() {return m2;} - public void setM2(Map m2) {this.m2 = m2;} - - private HashMap hm2 = new HashMap(); - public HashMap getHm2() {return hm2;} - public void setHm2(HashMap hm2) {this.hm2 = hm2;} - - private TreeMap tm2 = new TreeMap(); - public TreeMap getTm2() {return tm2;} - public void setTm2(TreeMap tm2) {this.tm2 = tm2;} - - private ObjectMap jm2 = new ObjectMap(); - public ObjectMap getJm2() {return jm2;} - public void setJm2(ObjectMap jm2) {this.jm2 = jm2;} - - private ObjectList jl2 = new ObjectList(); - public ObjectList getJl2() {return jl2;} - public void setJl2(ObjectList jl2) {this.jl2 = jl2;} - } - - //==================================================================================================== - // testArrayProperties - //==================================================================================================== - @Test - public void testArrayProperties() throws Exception { - D1 t = new D1(); - Map m = session.toBeanMap(t); - m.put("b", new ObjectMap("{s:'foo'}")); - assertNotNull(t.b); - assertEquals("foo", t.b.s); - - Map m2 = new TreeMap(); - m2.put("s", "bar"); - m.put("b", m2); - assertNotNull(t.b); - assertEquals("bar", t.b.s); - - m.put("b", new D2()); - assertEquals("default", t.b.s); - - JsonParser p = new JsonParserBuilder().beanDictionary(D2.class).build(); - m.put("lb1", new ObjectList("[{_type:'D2',s:'foobar'}]", p)); - assertEquals(ObjectList.class.getName(), t.lb1.getClass().getName()); - assertEquals(D2.class.getName(), t.lb1.get(0).getClass().getName()); - assertEquals("foobar", (t.lb1.get(0)).s); - - m.put("lb2", new ObjectList("[{_type:'D2',s:'foobar'}]", p)); - assertEquals(ArrayList.class.getName(), t.lb2.getClass().getName()); - assertEquals(D2.class.getName(), t.lb2.get(0).getClass().getName()); - assertEquals("foobar", (t.lb2.get(0)).s); - - m.put("ab1", new ObjectList("[{_type:'D2',s:'foobar'}]", p)); - assertEquals("[L"+D2.class.getName()+";", t.ab1.getClass().getName()); - assertEquals(D2.class.getName(), t.ab1[0].getClass().getName()); - assertEquals("foobar", t.ab1[0].s); - - m.put("ab2", new ObjectList("[{_type:'D2',s:'foobar'}]", p)); - assertEquals("[L"+D2.class.getName()+";", t.ab2.getClass().getName()); - assertEquals(D2.class.getName(), t.ab2[0].getClass().getName()); - assertEquals("foobar", t.ab2[0].s); - } - - public static class D1 { - public D2 b; - public List<D2> lb1; - public List<D2> lb2 = new ArrayList<D2>(); - public D2[] ab1; - public D2[] ab2 = new D2[0]; - } - - @Bean(typeName="D2") - public static class D2 { - public String s = "default"; - } - - //==================================================================================================== - // testArrayPropertiesInObjectList - //==================================================================================================== - @Test - public void testArrayPropertiesInObjectList() throws Exception { - E t = new E(); - Map m = session.toBeanMap(t); - m.put("s", new ObjectList("['foo']")); - m.put("s2", new ObjectList("[['foo']]")); - m.put("i", new ObjectList("[1,2,3]")); - m.put("i2", new ObjectList("[[1,2,3],[4,5,6]]")); - assertEquals("{s:['foo'],s2:[['foo']],i:[1,2,3],i2:[[1,2,3],[4,5,6]]}", JsonSerializer.DEFAULT_LAX.serialize(t)); - m.put("i", new ObjectList("[null,null,null]")); - m.put("i2", new ObjectList("[[null,null,null],[null,null,null]]")); - assertEquals("{s:['foo'],s2:[['foo']],i:[0,0,0],i2:[[0,0,0],[0,0,0]]}", JsonSerializer.DEFAULT_LAX.serialize(t)); - } - - public static class E { - public String[] s; - public String[][] s2; - public int[] i; - public int[][] i2; - } - - //==================================================================================================== - // BeanMap.invokeMethod() - //==================================================================================================== - @Test - public void testInvokeMethod() throws Exception { - F t5 = new F(); - ReaderParser p = JsonParser.DEFAULT; - BeanMap m = session.toBeanMap(t5); - new PojoIntrospector(t5, p).invokeMethod("doSetAProperty(java.lang.String)", "['baz']"); - assertEquals("baz", m.get("prop")); - } - - public static class F { - public String prop; - - public boolean doSetAProperty(String prop) { - this.prop = prop; - return true; - } - } - - //==================================================================================================== - // @BeanProperty tests - //==================================================================================================== - @Test - public void testBeanPropertyAnnotation() throws Exception { - G1 t6 = new G1(); - BeanMap m = session.toBeanMap(t6); - - try { - m.put("l1", "[{a:'a',i:1}]"); - throw new Exception("Expected exception on unsettable field."); - } catch (Exception e) { - // Good. - } - - m.put("l2", "[{a:'a',i:1}]"); - assertEquals("java.util.LinkedList", m.get("l2").getClass().getName()); - assertEquals("org.apache.juneau.BeanMapTest$G", ((List)m.get("l2")).get(0).getClass().getName()); - - m.put("l3", "[{a:'a',i:1}]"); - assertEquals("org.apache.juneau.ObjectList", m.get("l3").getClass().getName()); - assertEquals("org.apache.juneau.BeanMapTest$G", ((List)m.get("l3")).get(0).getClass().getName()); - - m.put("l4", "[{a:'a',i:1}]"); - assertEquals("java.util.LinkedList", m.get("l4").getClass().getName()); - assertEquals("org.apache.juneau.BeanMapTest$G", ((List)m.get("l4")).get(0).getClass().getName()); - - try { - m.put("m1", "[{a:'a',i:1}]"); - throw new Exception("Expected exception on unsettable field."); - } catch (Exception e) { - // Good. - } - - m.put("m2", "[{a:'a',i:1}]"); - assertEquals("java.util.LinkedList", m.get("m2").getClass().getName()); - assertEquals("org.apache.juneau.BeanMapTest$G", ((List)m.get("m2")).get(0).getClass().getName()); - - m.put("m3", "[{a:'a',i:1}]"); - assertEquals("org.apache.juneau.ObjectList", m.get("m3").getClass().getName()); - assertEquals("org.apache.juneau.BeanMapTest$G", ((List)m.get("m3")).get(0).getClass().getName()); - - m.put("m4", "[{a:'a',i:1}]"); - assertEquals("java.util.LinkedList", m.get("m4").getClass().getName()); - assertEquals("org.apache.juneau.BeanMapTest$G", ((List)m.get("m4")).get(0).getClass().getName()); - } - - public static class G { - public String a; - public int i; - } - - public static class G1 { - - public List<G> l1; - - public List<G> l2 = new LinkedList<G>(); - - @BeanProperty(type=List.class,params={G.class}) - public List<G> l3; - - @BeanProperty(type=LinkedList.class,params={G.class}) - public List<G> l4; - - private List<G> m1; - public List<G> getM1() { return m1; } - public void setM1(List<G> m1) { this.m1 = m1; } - - private List<G> m2 = new LinkedList<G>(); - public List<G> getM2() { return m2; } - public void setM2(List<G> m2) { this.m2 = m2; } - - private List<G> m3; - @BeanProperty(type=List.class,params={G.class}) - public List<G> getM3() { return m3; } - public void setM3(List<G> m3) { this.m3 = m3; } - - private List<G> m4; - @BeanProperty(type=LinkedList.class,params={G.class}) - public List<G> getM4() { return m4; } - public void setM4(List<G> m4) { this.m4 = m4; } - } - - //==================================================================================================== - // Enum tests - //==================================================================================================== - @Test - public void testEnum() throws Exception { - - // Initialize existing bean. - H t7 = new H(); - BeanMap m = session.toBeanMap(t7); - m.put("enum1", "ONE"); - m.put("enum2", "TWO"); - assertEquals("{_type:'H',enum1:'ONE',enum2:'TWO'}", serializer.serialize(t7)); - assertEquals(HEnum.ONE, t7.enum1); - assertEquals(HEnum.TWO, t7.getEnum2()); - - // Use BeanContext to create bean instance. - m = BeanContext.DEFAULT.createSession().newBeanMap(H.class).load("{enum1:'TWO',enum2:'THREE'}"); - assertEquals("{_type:'H',enum1:'TWO',enum2:'THREE'}", serializer.serialize(m.getBean())); - t7 = (H)m.getBean(); - assertEquals(HEnum.TWO, t7.enum1); - assertEquals(HEnum.THREE, t7.getEnum2()); - - // Create instance directly from JSON. - JsonParser p = new JsonParserBuilder().beanDictionary(H.class).build(); - t7 = (H)p.parse("{_type:'H',enum1:'THREE',enum2:'ONE'}", Object.class); - assertEquals("{_type:'H',enum1:'THREE',enum2:'ONE'}", serializer.serialize(t7)); - assertEquals(HEnum.THREE, t7.enum1); - assertEquals(HEnum.ONE, t7.getEnum2()); - } - - public static enum HEnum { - ONE, TWO, THREE - } - - @Bean(typeName="H") - public static class H { - - public HEnum enum1; - - private HEnum enum2; - - public HEnum getEnum2() { - return enum2; - } - - public void setEnum2(HEnum enum2) { - this.enum2 = enum2; - } - } - - //==================================================================================================== - // Automatic detection of generic types - //==================================================================================================== - @Test - public void testAutomaticDetectionOfGenericTypes() throws Exception { - BeanMap bm = BeanContext.DEFAULT.createSession().newBeanMap(I.class); - assertEquals(String.class, bm.getProperty("p1").getMeta().getClassMeta().getElementType().getInnerClass()); - assertEquals(Integer.class, bm.getProperty("p2").getMeta().getClassMeta().getElementType().getInnerClass()); - assertEquals(Object.class, bm.getProperty("p3").getMeta().getClassMeta().getElementType().getInnerClass()); - assertEquals(String.class, bm.getProperty("p4").getMeta().getClassMeta().getKeyType().getInnerClass()); - assertEquals(Integer.class, bm.getProperty("p4").getMeta().getClassMeta().getValueType().getInnerClass()); - assertEquals(String.class, bm.getProperty("p5").getMeta().getClassMeta().getKeyType().getInnerClass()); - assertEquals(Integer.class, bm.getProperty("p5").getMeta().getClassMeta().getValueType().getInnerClass()); - assertEquals(Object.class, bm.getProperty("p6").getMeta().getClassMeta().getKeyType().getInnerClass()); - assertEquals(Object.class, bm.getProperty("p6").getMeta().getClassMeta().getValueType().getInnerClass()); - } - - public static class I { - - public List<String> p1; - - public List<Integer> getP2() { - return null; - } - - public List<? extends Integer> p3; - - public Map<String,Integer> p4; - - public Map<String,Integer> getP5() { - return null; - } - - public Map<String,? extends Integer> p6; - } - - //==================================================================================================== - // Overriding detection of generic types. - //==================================================================================================== - @Test - public void testOverridingDetectionOfGenericTypes() throws Exception { - BeanMap bm = BeanContext.DEFAULT.createSession().newBeanMap(J.class); - assertEquals(Float.class, bm.getProperty("p1").getMeta().getClassMeta().getElementType().getInnerClass()); - assertEquals(Float.class, bm.getProperty("p2").getMeta().getClassMeta().getElementType().getInnerClass()); - assertEquals(Float.class, bm.getProperty("p3").getMeta().getClassMeta().getElementType().getInnerClass()); - assertEquals(Object.class, bm.getProperty("p4").getMeta().getClassMeta().getKeyType().getInnerClass()); - assertEquals(Float.class, bm.getProperty("p4").getMeta().getClassMeta().getValueType().getInnerClass()); - assertEquals(Object.class, bm.getProperty("p5").getMeta().getClassMeta().getKeyType().getInnerClass()); - assertEquals(Float.class, bm.getProperty("p5").getMeta().getClassMeta().getValueType().getInnerClass()); - assertEquals(String.class, bm.getProperty("p6").getMeta().getClassMeta().getKeyType().getInnerClass()); - assertEquals(Float.class, bm.getProperty("p6").getMeta().getClassMeta().getValueType().getInnerClass()); - } - - public static class J { - - @BeanProperty(params={Float.class}) - public List<String> p1; - - @BeanProperty(params={Float.class}) - public List<Integer> getP2() { - return null; - } - - @BeanProperty(params={Float.class}) - public List<? extends Integer> p3; - - @BeanProperty(params={Object.class, Float.class}) - public Map<String,Integer> p4; - - @BeanProperty(params={Object.class, Float.class}) - public Map<String,Integer> getP5() { - return null; - } - - @BeanProperty(params={String.class, Float.class}) - public Map<String,? extends Integer> p6; - } - - //==================================================================================================== - // Overriding detection of generic types. - //==================================================================================================== - @Test - public void testOverridingDetectionOfGenericTypes2() throws Exception { - BeanMap bm = session.newBeanMap(K.class); - assertEquals(Float.class, bm.getProperty("p1").getMeta().getClassMeta().getElementType().getInnerClass()); - assertEquals(Float.class, bm.getProperty("p2").getMeta().getClassMeta().getElementType().getInnerClass()); - assertEquals(Float.class, bm.getProperty("p3").getMeta().getClassMeta().getElementType().getInnerClass()); - assertEquals(String.class, bm.getProperty("p4").getMeta().getClassMeta().getKeyType().getInnerClass()); - assertEquals(Float.class, bm.getProperty("p4").getMeta().getClassMeta().getValueType().getInnerClass()); - assertEquals(String.class, bm.getProperty("p5").getMeta().getClassMeta().getKeyType().getInnerClass()); - assertEquals(Float.class, bm.getProperty("p5").getMeta().getClassMeta().getValueType().getInnerClass()); - assertEquals(String.class, bm.getProperty("p6").getMeta().getClassMeta().getKeyType().getInnerClass()); - assertEquals(Float.class, bm.getProperty("p6").getMeta().getClassMeta().getValueType().getInnerClass()); - } - - public static class K { - - @BeanProperty(params=Float.class) - public List<String> p1; - - @BeanProperty(params=Float.class) - public List<Integer> getP2() { - return null; - } - - @BeanProperty(params=Float.class) - public List<? extends Integer> p3; - - @BeanProperty(params={String.class,Float.class}) - public Map<String,Integer> p4; - - @BeanProperty(params={String.class,Float.class}) - public Map<String,Integer> getP5() { - return null; - } - - @BeanProperty(params={String.class,Float.class}) - public Map<String,? extends Integer> p6; - } - - //==================================================================================================== - // List<E> subclass properties - //==================================================================================================== - @Test - public void testGenericListSubclass() throws Exception { - BeanMap<L> bm = session.newBeanMap(L.class); - bm.put("list", "[{name:'1',value:'1'},{name:'2',value:'2'}]"); - L b = bm.getBean(); - assertEquals("1", b.list.get(0).name); - } - - public static class L { - public L1 list; - } - - public static class L1 extends LinkedList<L2> { - } - - public static class L2 { - public String name, value; - public L2(){} - public L2(String name, String value) { - this.name = name; - this.value = value; - } - } - - //==================================================================================================== - // Generic fields. - //==================================================================================================== - @Test - public void testGenericFields() throws Exception { - - M2 t1 = new M2(); - BeanMap<M2> bm = session.toBeanMap(t1); - assertEquals(1, bm.get("x")); - - M3 t2 = new M3(); - BeanMap<M3> cm = session.toBeanMap(t2); - assertEquals(2, cm.get("x")); - - M4 t3 = new M4(); - BeanMap<M4> dm = session.toBeanMap(t3); - assertEquals(3, dm.get("x")); - - M5 t4 = new M5(); - BeanMap<M5> em = session.toBeanMap(t4); - assertEquals(4, em.get("x")); - } - - public static class M1<T> { - public T x; - } - - public static class M2 extends M1<Integer> { - public M2() { - this.x = 1; - } - } - - public static class M3 extends M2 { - public M3() { - this.x = 2; - } - } - - public static class M4<T extends Number> extends M1<T> { - public M4() { - this.x = (T)new Integer(3); - } - } - - public static class M5 extends M4<Integer> { - public M5() { - this.x = new Integer(4); - } - } - - //==================================================================================================== - // Generic methods - //==================================================================================================== - @Test - public void testGenericMethods() throws Exception { - - N2 t1 = new N2(); - BeanMap<N2> bm = session.toBeanMap(t1); - assertEquals(1, bm.get("x")); - - N3 t2 = new N3(); - BeanMap<N3> cm = session.toBeanMap(t2); - assertEquals(2, cm.get("x")); - - N4 t3 = new N4(); - BeanMap<N4> dm = session.toBeanMap(t3); - assertEquals(3, dm.get("x")); - - N5 t4 = new N5(); - BeanMap<N5> em = session.toBeanMap(t4); - assertEquals(4, em.get("x")); - } - - public static class N1<T> { - private T x; - public void setX(T x) { - this.x = x; - } - public T getX() { - return x; - } - } - - public static class N2 extends N1<Integer> { - public N2() { - setX(1); - } - } - - public static class N3 extends N2 { - public N3() { - setX(2); - } - } - - public static class N4<T extends Number> extends N1<T> { - public N4() { - setX((T)new Integer(3)); - } - } - - public static class N5 extends N4<Integer> { - public N5() { - setX(4); - } - } - - //==================================================================================================== - // Test ignoreUnknownBeanProperties setting - //==================================================================================================== - @Test - public void testIgnoreUnknownBeanPropertiesSetting() throws Exception { - ReaderParser p = null; - O t; - - // JSON - String json = "{baz:789,foo:123,bar:456}"; - p = new JsonParserBuilder().ignoreUnknownBeanProperties(true).build(); - t = p.parse(json, O.class); - assertEquals(123, t.foo); - - try { - p = JsonParser.DEFAULT; - t = p.parse(json, O.class); - fail("Expected exception never occurred"); - } catch (Exception e) { - // Good. - } - - // XML - String xml = "<object><baz type='number'>789</baz><foo type='number'>123</foo><bar type='number'>456</bar></object>"; - p = new XmlParserBuilder().ignoreUnknownBeanProperties(true).build(); - t = p.parse(xml, O.class); - assertEquals(123, t.foo); - - try { - p = XmlParser.DEFAULT; - t = p.parse(json, O.class); - fail("Expected exception never occurred"); - } catch (Exception e) { - // Good. - } - - // HTML - String html = "<table _type='object'><tr><th><string>key</string></th><th><string>value</string></th></tr><tr><td><string>baz</string></td><td><number>789</number></td></tr><tr><td><string>foo</string></td><td><number>123</number></td></tr><tr><td><string>bar</string></td><td><number>456</number></td></tr></table>"; - p = new HtmlParserBuilder().ignoreUnknownBeanProperties(true).build(); - t = p.parse(html, O.class); - assertEquals(123, t.foo); - - try { - p = HtmlParser.DEFAULT; - t = p.parse(json, O.class); - fail("Expected exception never occurred"); - } catch (Exception e) { - // Good. - } - - // UON - String uon = "(baz=789,foo=123,bar=456)"; - p = new UonParserBuilder().ignoreUnknownBeanProperties(true).build(); - t = p.parse(uon, O.class); - assertEquals(123, t.foo); - - try { - p = UonParser.DEFAULT; - t = p.parse(json, O.class); - fail("Expected exception never occurred"); - } catch (Exception e) { - // Good. - } - - // URL-Encoding - String urlencoding = "baz=789&foo=123&bar=456"; - p = new UrlEncodingParserBuilder().ignoreUnknownBeanProperties(true).build(); - t = p.parse(urlencoding, O.class); - assertEquals(123, t.foo); - - try { - p = UrlEncodingParser.DEFAULT; - t = p.parse(json, O.class); - fail("Expected exception never occurred"); - } catch (Exception e) { - // Good. - } - - } - - public static class O { - public int foo; - } - - //==================================================================================================== - // testPropertyNameFactoryDashedLC1 - //==================================================================================================== - @Test - public void testPropertyNameFactoryDashedLC1() throws Exception { - BeanMap<P1> m = session.newBeanMap(P1.class).load("{'foo':1,'bar-baz':2,'bing-boo-url':3}"); - assertEquals(1, m.get("foo")); - assertEquals(2, m.get("bar-baz")); - assertEquals(3, m.get("bing-boo-url")); - P1 b = m.getBean(); - assertEquals(1, b.foo); - assertEquals(2, b.barBaz); - assertEquals(3, b.bingBooURL); - m.put("foo", 4); - m.put("bar-baz", 5); - m.put("bing-boo-url", 6); - assertEquals(4, b.foo); - assertEquals(5, b.barBaz); - assertEquals(6, b.bingBooURL); - } - - @Bean(propertyNamer=PropertyNamerDLC.class) - public static class P1 { - public int foo, barBaz, bingBooURL; - } - - //==================================================================================================== - // testPropertyNameFactoryDashedLC2 - //==================================================================================================== - @Test - public void testPropertyNameFactoryDashedLC2() throws Exception { - BeanSession session = BeanContext.DEFAULT_SORTED.createSession(); - BeanMap<P2> m = session.newBeanMap(P2.class).load("{'foo-bar':1,'baz-bing':2}"); - assertEquals(1, m.get("foo-bar")); - assertEquals(2, m.get("baz-bing")); - P2 b = m.getBean(); - assertEquals(1, b.getFooBar()); - assertEquals(2, b.getBazBING()); - m.put("foo-bar", 3); - m.put("baz-bing", 4); - assertEquals(3, b.getFooBar()); - assertEquals(4, b.getBazBING()); - } - - @Bean(propertyNamer=PropertyNamerDLC.class) - public static class P2 { - private int fooBar, bazBING; - public int getFooBar() { - return fooBar; - } - public void setFooBar(int fooBar) { - this.fooBar = fooBar; - } - public int getBazBING() { - return bazBING; - } - public void setBazBING(int bazBING) { - this.bazBING = bazBING; - } - } - - //==================================================================================================== - // testBeanWithFluentStyleSetters - //==================================================================================================== - @Test - public void testBeanWithFluentStyleSetters() throws Exception { - Q2 t = new Q2(); - BeanMap m = BeanContext.DEFAULT_SORTED.createSession().toBeanMap(t); - m.put("f1", 1); - m.put("f2", 2); - m.put("f3", 3); - - assertSortedObjectEquals("{f1:1,f2:2,f3:0}", m); - } - - public static class Q1 {} - - public static class Q2 extends Q1 { - private int f1, f2, f3; - - public Q1 setF1(int f1) { - this.f1 = f1; - return this; - } - - public Q2 setF2(int f2) { - this.f2 = f2; - return this; - } - - // Shouldn't be detected as a setter. - public String setF3(int f3) { - this.f3 = f3; - return null; - } - - public int getF1() { return f1; } - public int getF2() { return f2; } - public int getF3() { return f3; } - } - - //==================================================================================================== - // testCastWithNormalBean - //==================================================================================================== - @Test - public void testCastWithNormalBean() throws Exception { - - // With _type - ObjectMap m = new ObjectMap(session); - m.put("_type", "R2"); - m.put("f1", 1); - m.put("f2", "2"); - - R2 t = (R2)m.cast(Object.class); - assertEquals(1, t.f1); - - t = (R2)m.cast(R1.class); - assertEquals(1, t.f1); - assertEquals(2, t.f2); - - t = (R2)m.cast(session.getClassMeta(R1.class)); - assertEquals(1, t.f1); - assertEquals(2, t.f2); - - // Without _type - m = new ObjectMap(session); - m.put("f1", 1); - m.put("f2", "2"); - - m = (ObjectMap)m.cast(Object.class); - assertEquals(1, t.f1); - assertEquals(2, t.f2); - - t = m.cast(R2.class); - assertEquals(1, t.f1); - assertEquals(2, t.f2); - - t = m.cast(session.getClassMeta(R2.class)); - assertEquals(1, t.f1); - assertEquals(2, t.f2); - } - - // Bean with no properties - public static class R1 { - public int f1; - } - - public static class R2 extends R1 { - public int f2; - } - - //==================================================================================================== - // testCastWithNestedBean - //==================================================================================================== - @Test - public void testCastWithNestedBean() throws Exception { - - // With _type - ObjectMap m = new ObjectMap(session); - m.put("_type", "S"); - m.put("f1", new ObjectMap(session).append("_type", "R1").append("f1", 1)); - - S t = (S)m.cast(Object.class); - assertEquals(1, t.f1.f1); - - t = m.cast(S.class); - assertEquals(1, t.f1.f1); - - t = m.cast(session.getClassMeta(S.class)); - assertEquals(1, t.f1.f1); - - // Without _type - m = new ObjectMap(session); - m.put("f1", new ObjectMap(session).append("_type", R1.class.getName()).append("f1", 1)); - - m = (ObjectMap)m.cast(Object.class); - assertEquals(1, t.f1.f1); - - t = m.cast(S.class); - assertEquals(1, t.f1.f1); - - t = m.cast(session.getClassMeta(S.class)); - assertEquals(1, t.f1.f1); - } - - public static class S { - public R1 f1; - } - - //==================================================================================================== - // testCastToAnotherMapType - //==================================================================================================== - @Test - public void testCastToAnotherMapType() throws Exception { - Map m2; - - // With _type - ObjectMap m = new ObjectMap(session); - m.put("_type", "TreeMap"); - m.put("1", "ONE"); - - m2 = (Map)m.cast(Object.class); - assertTrue(m2 instanceof TreeMap); - assertEquals("ONE", m2.get("1")); - - m2 = m.cast(Map.class); - assertTrue(m2 instanceof TreeMap); - assertEquals("ONE", m2.get("1")); - - m2 = m.cast(bc.getClassMeta(TreeMap.class)); - assertTrue(m2 instanceof TreeMap); - assertEquals("ONE", m2.get("1")); - - m2 = (Map)m.cast(bc.getClassMeta(TreeMap.class, Integer.class, TEnum.class)); - assertTrue(m2 instanceof TreeMap); - Map.Entry e = (Map.Entry)m2.entrySet().iterator().next(); - assertTrue(e.getKey() instanceof Integer); - assertTrue(e.getValue() instanceof TEnum); - assertEquals(TEnum.ONE, m2.get(1)); - - m2 = m.cast(bc.getClassMeta(TreeMap.class)); - assertTrue(m2 instanceof TreeMap); - e = (Map.Entry)m2.entrySet().iterator().next(); - assertTrue(e.getKey() instanceof String); - assertTrue(e.getValue() instanceof String); - assertEquals("ONE", m2.get("1")); - - m2 = (Map)m.cast(bc.getClassMeta(HashMap.class, Integer.class, TEnum.class)); - assertTrue(m2 instanceof HashMap); - e = (Map.Entry)m2.entrySet().iterator().next(); - assertTrue(e.getKey() instanceof Integer); - assertTrue(e.getValue() instanceof TEnum); - assertEquals(TEnum.ONE, m2.get(1)); - - // Without _type - m = new ObjectMap(); - m.put("1", "ONE"); - - m2 = (ObjectMap)m.cast(Object.class); - assertTrue(m2 instanceof ObjectMap); - assertEquals("ONE", m2.get("1")); - - m2 = m.cast(Map.class); - assertTrue(m2 instanceof ObjectMap); - assertEquals("ONE", m2.get("1")); - - m2 = m.cast(bc.getClassMeta(TreeMap.class)); - assertTrue(m2 instanceof TreeMap); - assertEquals("ONE", m2.get("1")); - - m2 = (Map)m.cast(bc.getClassMeta(TreeMap.class, Integer.class, TEnum.class)); - assertTrue(m2 instanceof TreeMap); - e = (Map.Entry)m2.entrySet().iterator().next(); - assertTrue(e.getKey() instanceof Integer); - assertTrue(e.getValue() instanceof TEnum); - assertEquals(TEnum.ONE, m2.get(1)); - - m2 = m.cast(bc.getClassMeta(TreeMap.class)); - assertTrue(m2 instanceof TreeMap); - e = (Map.Entry)m2.entrySet().iterator().next(); - assertTrue(e.getKey() instanceof String); - assertTrue(e.getValue() instanceof String); - assertEquals("ONE", m2.get("1")); - } - - public static enum TEnum { - ONE, TWO, THREE; - } - - //==================================================================================================== - // testCastToLinkedList - //==================================================================================================== - @Test - public void testCastToLinkedList() throws Exception { - - // With _type - ObjectMap m = new ObjectMap(session); - m.put("_type", "LinkedList"); - m.put("items", new ObjectList().append("1").append("2")); - - List l = (List)m.cast(Object.class); - assertTrue(l instanceof LinkedList); - assertEquals("1", l.get(0)); - - l = m.cast(List.class); - assertTrue(l instanceof LinkedList); - assertEquals("1", l.get(0)); - - l = m.cast(bc.getClassMeta(List.class)); - assertTrue(l instanceof LinkedList); - assertEquals("1", l.get(0)); - - l = m.cast(bc.getClassMeta(ArrayList.class)); - assertTrue(l instanceof ArrayList); - assertEquals("1", l.get(0)); - - // Without _type - m = new ObjectMap(); - m.put("items", new ObjectList().append("1").append("2")); - - l = m.cast(List.class); - assertTrue(l instanceof ObjectList); - assertEquals("1", l.get(0)); - - l = m.cast(LinkedList.class); - assertTrue(l instanceof LinkedList); - assertEquals("1", l.get(0)); - - l = m.cast(bc.getClassMeta(List.class)); - assertTrue(l instanceof ObjectList); - assertEquals("1", l.get(0)); - - l = m.cast(bc.getClassMeta(ArrayList.class)); - assertTrue(l instanceof ArrayList); - assertEquals("1", l.get(0)); - - l = (List)m.cast(bc.getClassMeta(List.class, Integer.class)); - assertTrue(l instanceof LinkedList); - assertTrue(l.get(0) instanceof Integer); - assertEquals(1, l.get(0)); - } - - //==================================================================================================== - // testToLinkedListInteger - cast() to LinkedList<Integer> - //==================================================================================================== - @Test - public void testToLinkedListInteger() throws Exception { - - // With _type - ObjectMap m = new ObjectMap(session); - m.put("_type", "LinkedListOfInts"); - m.put("items", new ObjectList().append("1").append("2")); - - List l = (List)m.cast(Object.class); - assertTrue(l instanceof LinkedList); - assertEquals(1, l.get(0)); - - l = m.cast(List.class); - assertTrue(l instanceof LinkedList); - assertEquals(1, l.get(0)); - - l = m.cast(ArrayList.class); - assertTrue(l instanceof ArrayList); - assertEquals(1, l.get(0)); - - l = m.cast(bc.getClassMeta(List.class)); - assertTrue(l instanceof LinkedList); - assertEquals(1, l.get(0)); - - l = m.cast(bc.getClassMeta(ArrayList.class)); - assertTrue(l instanceof ArrayList); - assertEquals(1, l.get(0)); - - l = (List)m.cast(bc.getClassMeta(List.class, String.class)); - assertTrue(l instanceof LinkedList); - assertTrue(l.get(0) instanceof String); - assertEquals("1", l.get(0)); - - // Without _type - m = new ObjectMap(); - m.put("items", new ObjectList().append("1").append("2")); - - l = m.cast(List.class); - assertTrue(l instanceof ObjectList); - assertEquals("1", l.get(0)); - - l = m.cast(ArrayList.class); - assertTrue(l instanceof ArrayList); - assertEquals("1", l.get(0)); - - l = m.cast(bc.getClassMeta(List.class)); - assertTrue(l instanceof ObjectList); - assertEquals("1", l.get(0)); - - l = m.cast(bc.getClassMeta(ArrayList.class)); - assertTrue(l instanceof ArrayList); - assertEquals("1", l.get(0)); - - l = (List)m.cast(bc.getClassMeta(List.class, Integer.class)); - assertTrue(l instanceof ObjectList); - assertTrue(l.get(0) instanceof Integer); - assertEquals(1, l.get(0)); - } - - //==================================================================================================== - // testCastToLinkedListBean - cast() to LinkedList<R1> - //==================================================================================================== - @Test - public void testCastToLinkedListBean() throws Exception { - - // With _type - ObjectMap m = new ObjectMap(session); - m.put("_type", "LinkedListOfR1"); - m.put("items", new ObjectList(session).append("{f1:1}")); - - List l = (List)m.cast(Object.class); - assertTrue(l instanceof LinkedList); - assertTrue(l.get(0) instanceof R1); - assertEquals(1, ((R1)l.get(0)).f1); - - l = m.cast(List.class); - assertTrue(l instanceof LinkedList); - assertTrue(l.get(0) instanceof R1); - assertEquals(1, ((R1)l.get(0)).f1); - - l = m.cast(ArrayList.class); - assertTrue(l instanceof ArrayList); - assertTrue(l.get(0) instanceof R1); - assertEquals(1, ((R1)l.get(0)).f1); - - l = m.cast(session.getClassMeta(List.class)); - assertTrue(l instanceof LinkedList); - assertTrue(l.get(0) instanceof R1); - assertEquals(1, ((R1)l.get(0)).f1); - - l = m.cast(session.getClassMeta(ArrayList.class)); - assertTrue(l instanceof ArrayList); - assertTrue(l.get(0) instanceof R1); - assertEquals(1, ((R1)l.get(0)).f1); - - l = (List)m.cast(session.getClassMeta(List.class, HashMap.class)); - assertTrue(l instanceof LinkedList); - assertTrue(l.get(0) instanceof HashMap); - assertEquals(1, ((Map)l.get(0)).get("f1")); - - // Without _type - m = new ObjectMap(session); - m.put("items", new ObjectList(session).append("{f1:1}")); - - l = m.cast(List.class); - assertTrue(l instanceof ObjectList); - assertTrue(l.get(0) instanceof String); - assertEquals("{f1:1}", l.get(0)); - - l = m.cast(ArrayList.class); - assertTrue(l instanceof ArrayList); - assertTrue(l.get(0) instanceof String); - assertEquals("{f1:1}", l.get(0)); - - l = m.cast(session.getClassMeta(List.class)); - assertTrue(l instanceof ObjectList); - assertTrue(l.get(0) instanceof String); - assertEquals("{f1:1}", l.get(0)); - - l = m.cast(session.getClassMeta(ArrayList.class)); - assertTrue(l instanceof ArrayList); - assertTrue(l.get(0) instanceof String); - assertEquals("{f1:1}", l.get(0)); - - l = (List)m.cast(session.getClassMeta(List.class, R1.class)); - assertTrue(l instanceof LinkedList); - assertTrue(l.get(0) instanceof R1); - assertEquals(1, ((R1)l.get(0)).f1); - - l = (List)m.cast(session.getClassMeta(List.class, HashMap.class)); - assertTrue(l instanceof LinkedList); - assertTrue(l.get(0) instanceof HashMap); - assertEquals(1, ((Map)l.get(0)).get("f1")); - - l = (List)m.cast(session.getClassMeta(List.class, Map.class)); - assertTrue(l instanceof LinkedList); - assertTrue(l.get(0) instanceof ObjectMap); - assertEquals(1, ((Map)l.get(0)).get("f1")); - } - - //==================================================================================================== - // testCastToLinkedListUsingSwap - cast() to LinkedList<Calendar> using CalendarSwap - //==================================================================================================== - @Test - public void testCastToLinkedListUsingSwap() throws Exception { - - // With _type - ObjectMap m = new ObjectMap(session); - m.put("_type", "LinkedListOfCalendar"); - m.put("items", new ObjectList().append("2001-07-04T15:30:45Z")); - - List l = (List)m.cast(Object.class); - assertTrue(l instanceof LinkedList); - assertEquals(2001, ((Calendar)l.get(0)).get(Calendar.YEAR)); - - l = m.cast(List.class); - assertTrue(l instanceof LinkedList); - assertEquals(2001, ((Calendar)l.get(0)).get(Calendar.YEAR)); - - l = m.cast(ArrayList.class); - assertTrue(l instanceof ArrayList); - assertEquals(2001, ((Calendar)l.get(0)).get(Calendar.YEAR)); - - m.cast(HashSet.class); - - l = m.cast(session.getClassMeta(List.class)); - assertTrue(l instanceof LinkedList); - assertEquals(2001, ((Calendar)l.get(0)).get(Calendar.YEAR)); - - l = m.cast(session.getClassMeta(ArrayList.class)); - assertTrue(l instanceof ArrayList); - assertEquals(2001, ((Calendar)l.get(0)).get(Calendar.YEAR)); - - l = (List)m.cast(session.getClassMeta(List.class, String.class)); - assertTrue(l instanceof LinkedList); - assertTrue(l.get(0) instanceof String); - assertEquals("2001-07-04T15:30:45Z", l.get(0)); - - // Without _type - m = new ObjectMap().setBeanSession(session); - m.put("items", new ObjectList().append("2001-07-04T15:30:45Z")); - - l = m.cast(List.class); - assertTrue(l instanceof LinkedList); - - l = m.cast(ArrayList.class); - assertTrue(l instanceof ArrayList); - - m.cast(HashSet.class); - - l = m.cast(session.getClassMeta(List.class)); - assertTrue(l instanceof LinkedList); - - l = m.cast(session.getClassMeta(ArrayList.class)); - assertTrue(l instanceof ArrayList); - - l = (List)m.cast(session.getClassMeta(List.class, Calendar.class)); - assertTrue(l instanceof LinkedList); - assertTrue(l.get(0) instanceof Calendar); - assertEquals(2001, ((Calendar)l.get(0)).get(Calendar.YEAR)); - } - - //==================================================================================================== - // testCastToStringArray - cast() to String[] - //==================================================================================================== - @Test - public void testCastToStringArray() throws Exception { - - // With _type - ObjectMap m = new ObjectMap(session); - m.put("_type", "StringArray"); - m.put("items", new ObjectList().append("1").append("2")); - - String[] l = (String[])m.cast(Object.class); - assertEquals("1", l[0]); - - l = m.cast(String[].class); - assertEquals("1", l[0]); - - StringBuffer[] l2 = m.cast(StringBuffer[].class); - assertEquals("1", l2[0].toString()); - - int[] l3 = m.cast(int[].class); - assertEquals(1, l3[0]); - - l = m.cast(bc.getClassMeta(String[].class)); - assertEquals("1", l[0]); - - l2 = m.cast(bc.getClassMeta(StringBuffer[].class)); - assertEquals("1", l2[0].toString()); - - l3 = m.cast(bc.getClassMeta(int[].class)); - assertEquals("1", l2[0].toString()); - - // Without _type - m = new ObjectMap(); - m.put("items", new ObjectList().append("1").append("2")); - - l = m.cast(String[].class); - assertEquals("1", l[0]); - - l = m.cast(bc.getClassMeta(String[].class)); - assertEquals("1", l[0]); - - l2 = m.cast(bc.getClassMeta(StringBuffer[].class)); - assertEquals("1", l[0].toString()); - } - - //==================================================================================================== - // testCastToIntArray - cast() to int[] - //==================================================================================================== - @Test - public void testCastToIntArray() throws Exception { - - // With _type - ObjectMap m = new ObjectMap(session); - m.put("_type", "IntArray"); - m.put("items", new ObjectList().append("1").append("2")); - - int[] l = (int[])m.cast(Object.class); - assertEquals(1, l[0]); - - l = m.cast(int[].class); - assertEquals(1, l[0]); - - l = m.cast(bc.getClassMeta(int[].class)); - assertEquals(1, l[0]); - - long[] l2; - - l2 = m.cast(long[].class); - assertEquals(1, l2[0]); - - l2 = m.cast(bc.getClassMeta(long[].class)); - assertEquals(1, l2[0]); - - // Without _type - m = new ObjectMap(); - m.put("items", new ObjectList().append("1").append("2")); - - l = m.cast(int[].class); - assertEquals(1, l[0]); - - l = m.cast(bc.getClassMeta(int[].class)); - assertEquals(1, l[0]); - - l2 = m.cast(long[].class); - assertEquals(1, l2[0]); - - l2 = m.cast(bc.getClassMeta(long[].class)); - assertEquals(1, l2[0]); - } - - //==================================================================================================== - // testCastToString2dArray - cast() to String[][] - //==================================================================================================== - @Test - public void testCastToString2dArray() throws Exception { - - // With _type - ObjectMap m = new ObjectMap(session); - m.put("_type", "String2dArray"); - m.put("items", new ObjectList().append(new ObjectList().append("1")).append(new ObjectList().append("2"))); - - String[][] l = (String[][])m.cast(Object.class); - assertEquals("1", l[0][0]); - assertEquals("2", l[1][0]); - - l = m.cast(String[][].class); - assertEquals("1", l[0][0]); - - l = m.cast(bc.getClassMeta(String[][].class)); - assertEquals("2", l[1][0]); - - // Without _type - m = new ObjectMap(); - m.put("items", new ObjectList().append(new ObjectList().append("1")).append(new ObjectList().append("2"))); - - l = m.cast(String[][].class); - assertEquals("1", l[0][0]); - - l = m.cast(bc.getClassMeta(String[][].class)); - assertEquals("2", l[1][0]); - } - - //==================================================================================================== - // testCastToInt2dArray - cast() to int[][] - //==================================================================================================== - @Test - public void testCastToInt2dArray() throws Exception { - - // With _type - ObjectMap m = new ObjectMap(session); - m.put("_type", "Int2dArray"); - m.put("items", new ObjectList().append(new ObjectList().append("1")).append(new ObjectList().append("2"))); - - int[][] l = (int[][])m.cast(Object.class); - assertEquals(1, l[0][0]); - assertEquals(2, l[1][0]); - - l = m.cast(int[][].class); - assertEquals(1, l[0][0]); - - l = m.cast(bc.getClassMeta(int[][].class)); - assertEquals(2, l[1][0]); - - // Without _type - m = new ObjectMap(); - m.put("items", new ObjectList().append(new ObjectList().append("1")).append(new ObjectList().append("2"))); - - l = m.cast(int[][].class); - assertEquals(1, l[0][0]); - - l = m.cast(bc.getClassMeta(int[][].class)); - assertEquals(2, l[1][0]); - } - - //==================================================================================================== - // testHiddenProperties - //==================================================================================================== - @Test - public void testHiddenProperties() throws Exception { - JsonSerializer s = JsonSerializer.DEFAULT_LAX; - BeanMeta bm = s.getBeanContext().getBeanMeta(U.class); - assertNotNull(bm.getPropertyMeta("a")); - assertNotNull(bm.getPropertyMeta("b")); - assertNull(bm.getPropertyMeta("c")); - assertNull(bm.getPropertyMeta("d")); - - U t = new U(); - t.a = "a"; - t.b = "b"; - String r = s.serialize(t); - assertEquals("{a:'a',b:'b'}", r); - - // Make sure setters are used if present. - t = JsonParser.DEFAULT.parse(r, U.class); - assertEquals("b(setter)", t.b); - } - - public static class U { - public String a, b; - - public String getA() { - return a; - } - - public void setA(String a) { - this.a = a; - } - - @BeanIgnore - public String getB() { - return b; - } - - public void setB(String b) { - this.b = b+"(setter)"; - } - - @BeanIgnore - public String c; - - @BeanIgnore - public String getD() { - return null; - } - - @BeanIgnore - public void setD(String d) { - } - } - - //==================================================================================================== - // testBeanPropertyOrder - //==================================================================================================== - @Test - public void testBeanPropertyOrder() throws Exception { - assertObjectEquals("{a1:'1',a2:'2',a3:'3',a4:'4'}", new V2()); - assertObjectEquals("{a3:'3',a4:'4',a5:'5',a6:'6'}", new V3()); - } - - public static class V { - public String a1="1", a2="2"; - } - - public static class V2 extends V { - public String a3="3", a4="4"; - } - - @Bean(stopClass=V.class) - public static class V3 extends V2 { - public String a5="5", a6="6"; - } - - //==================================================================================================== - // testBeanMethodOrder - //==================================================================================================== - @Test - public void testBeanMethodOrder() throws Exception { - assertSortedObjectEquals("{a1:'1',a2:'2',a3:'3',a4:'4'}", new W2()); - assertSortedObjectEquals("{a3:'3',a4:'4',a5:'5',a6:'6'}", new W3()); - } - - public static class W { - public String getA1() {return "1";} - public String getA2() {return "2";} - } - - public static class W2 extends W { - public String getA3() {return "3";} - public String getA4() {return "4";} - } - - @Bean(stopClass=W.class) - public static class W3 extends W2 { - public String getA5() {return "5";} - public String getA6() {return "6";} - } - - //==================================================================================================== - // testResourceDescription - //==================================================================================================== - @Test - public void testOverriddenPropertyTypes() throws Exception { - JsonSerializer s = JsonSerializer.DEFAULT_LAX; - JsonParser p = JsonParser.DEFAULT; - String r; - - X1 t1 = X1.create(); - r = s.serialize(t1); - assertEquals("{f1:'1',f2:'2'}", r); - t1 = p.parse(r, X1.class); - assertEquals("1", t1.f1); - assertEquals("2", t1.getF2()); - - X2 t2 = X2.create(); - r = s.serialize(t2); - assertEquals("{f1:1,f2:2}", r); - t2 = p.parse(r, X2.class); - assertEquals(1, t2.f1.intValue()); - assertEquals(2, t2.getF2().intValue()); - } - - public static class X1 { - public Object f1; - private Object f2; - - static X1 create() { - X1 x = new X1(); - x.f1 = "1"; - x.f2 = "2"; - return x; - } - - public Object getF2() { - return f2; - } - - public void setF2(Object f2) { - this.f2 = f2; - } - } - - public static class X2 extends X1 { - public Integer f1; - private Integer f2; - - static X2 create() { - X2 x = new X2(); - x.f1 = 1; - x.f2 = 2; - return x; - } - - @Override /* X1 */ - public Integer getF2() { - return f2; - } - - public void setF2(Integer f2) { - this.f2 = f2; - } - } - - @Test - public void testSettingCollectionPropertyMultipleTimes() throws Exception { - - BeanMap m = BeanContext.DEFAULT.createSession().newBeanMap(Y.class); - m.put("f1", new ObjectList().append("a")); - m.put("f1", new ObjectList().append("b")); - assertEquals("{f1=[b]}", m.toString()); - } - - public static class Y { - public List<String> f1 = new LinkedList<String>(); - } - - //==================================================================================================== - // entrySet(false). - //==================================================================================================== - @Test - public void testIgnoreNulls() { - Z z = new Z(); - BeanMap<Z> bm = BeanContext.DEFAULT.createSession().toBeanMap(z); - - Iterator i = bm.getValues(true).iterator(); - assertFalse(i.hasNext()); - - z.b = ""; - i = bm.getValues(true).iterator(); - assertTrue(i.hasNext()); - i.next(); - assertFalse(i.hasNext()); - - i = bm.getValues(false).iterator(); - assertTrue(i.hasNext()); - i.next(); - assertTrue(i.hasNext()); - i.next(); - assertTrue(i.hasNext()); - i.next(); - assertFalse(i.hasNext()); - } - - public static class Z { - public String a, b, c; - } -} \ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ab15d45b/juneau-core-test/src/test/java/org/apache/juneau/ClassMetaTest.java ---------------------------------------------------------------------- diff --git a/juneau-core-test/src/test/java/org/apache/juneau/ClassMetaTest.java b/juneau-core-test/src/test/java/org/apache/juneau/ClassMetaTest.java deleted file mode 100755 index e01e5d5..0000000 --- a/juneau-core-test/src/test/java/org/apache/juneau/ClassMetaTest.java +++ /dev/null @@ -1,281 +0,0 @@ -// *************************************************************************************************************************** -// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file * -// * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file * -// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance * -// * with the License. You may obtain a copy of the License at * -// * * -// * http://www.apache.org/licenses/LICENSE-2.0 * -// * * -// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an * -// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the * -// * specific language governing permissions and limitations under the License. * -// *************************************************************************************************************************** -package org.apache.juneau; - -import static org.junit.Assert.*; - -import java.util.*; - -import org.apache.juneau.transform.*; -import org.junit.*; - -@SuppressWarnings({"rawtypes","serial","javadoc"}) -public class ClassMetaTest { - - BeanContext bc = BeanContext.DEFAULT; - - //==================================================================================================== - // Map<String,String> field - //==================================================================================================== - public Map<String,String> fa; - - @Test - public void testMap() throws Exception { - ClassMeta t = bc.getClassMeta(this.getClass().getField("fa").getGenericType()); - assertEquals("java.util.Map<java.lang.String,java.lang.String>", t.toString()); - assertTrue(t.isMap()); - assertFalse(t.isCollection()); - assertNull(t.newInstance()); - assertEquals(Map.class, t.getInnerClass()); - assertEquals(String.class, t.getKeyType().getInnerClass()); - assertEquals(String.class, t.getValueType().getInnerClass()); - } - - //==================================================================================================== - // String field - //==================================================================================================== - public String fb; - - @Test - public void testString() throws Exception { - ClassMeta t = bc.getClassMeta(this.getClass().getField("fb").getGenericType()); - assertEquals(String.class, t.getInnerClass()); - t = bc.getClassMeta(this.getClass().getField("fb").getType()); - assertEquals(String.class, t.getInnerClass()); - } - - //==================================================================================================== - // Map<String,Map<String,Integer>> field - //==================================================================================================== - public Map<String,Map<String,Integer>> fc; - - @Test - public void testMapWithMapValues() throws Exception { - ClassMeta t = bc.getClassMeta(this.getClass().getField("fc").getGenericType()); - assertEquals("java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.Integer>>", t.toString()); - t = bc.getClassMeta(this.getClass().getField("fc").getType()); - assertEquals("java.util.Map", t.toString()); - } - - //==================================================================================================== - // List<Map<String,List>> field - //==================================================================================================== - public List<Map<String,List>> fd; - - @Test - public void testListWithMapValues() throws Exception { - ClassMeta t = bc.getClassMeta(this.getClass().getField("fd").getGenericType()); - assertEquals("java.util.List<java.util.Map<java.lang.String,java.util.List>>", t.toString()); - } - - //==================================================================================================== - // List<? extends String> field, List<? super String> field - //==================================================================================================== - public List<? extends String> fe1; - public List<? super String> fe2; - - @Test - public void testListWithUpperBoundGenericEntryTypes() throws Exception { - ClassMeta t = bc.getClassMeta(this.getClass().getField("fe1").getGenericType()); - assertEquals("java.util.List", t.toString()); - t = bc.getClassMeta(this.getClass().getField("fe2").getGenericType()); - assertEquals("java.util.List", t.toString()); - } - - //==================================================================================================== - // Bean extends HashMap<String,Object> field - //==================================================================================================== - public class G extends HashMap<String,Object> {} - public G g; - - @Test - public void testBeanExtendsMap() throws Exception { - ClassMeta t = bc.getClassMeta(this.getClass().getField("g").getGenericType()); - assertEquals("org.apache.juneau.ClassMetaTest$G<java.lang.String,java.lang.Object>", t.toString()); - assertTrue(t.isMap()); - assertFalse(t.isCollection()); - } - - //==================================================================================================== - // testSwaps - // Ensure swaps on parent and child classes are properly detected. - //==================================================================================================== - @Test - public void testSwaps() throws Exception { - BeanContext bc; - ClassMeta<?> ooo, hi1, hc1, hi2, hc2; - - bc = PropertyStore.create().getBeanContext(); - ooo = bc.getClassMeta(Object.class); - hi1 = bc.getClassMeta(HI1.class); - hc1 = bc.getClassMeta(HC1.class); - hi2 = bc.getClassMeta(HI2.class); - hc2 = bc.getClassMeta(HC2.class); - assertFalse(ooo.hasChildPojoSwaps()); - assertFalse(hi1.hasChildPojoSwaps()); - assertFalse(hc1.hasChildPojoSwaps()); - assertFalse(hi2.hasChildPojoSwaps()); - assertFalse(hc2.hasChildPojoSwaps()); - assertNull(ooo.getPojoSwap()); - assertNull(hi1.getPojoSwap()); - assertNull(hc1.getPojoSwap()); - assertNull(hi2.getPojoSwap()); - assertNull(hc2.getPojoSwap()); - assertEquals(ooo.getSerializedClassMeta().getInnerClass(), Object.class); - assertEquals(hi1.getSerializedClassMeta().getInnerClass(), HI1.class); - assertEquals(hc1.getSerializedClassMeta().getInnerClass(), HC1.class); - assertEquals(hi2.getSerializedClassMeta().getInnerClass(), HI2.class); - assertEquals(hc2.getSerializedClassMeta().getInnerClass(), HC2.class); - - bc = PropertyStore.create().setPojoSwaps(HI1Swap.class).getBeanContext(); - ooo = bc.getClassMeta(Object.class); - hi1 = bc.getClassMeta(HI1.class); - hc1 = bc.getClassMeta(HC1.class); - hi2 = bc.getClassMeta(HI2.class); - hc2 = bc.getClassMeta(HC2.class); - assertTrue(ooo.hasChildPojoSwaps()); - assertTrue(hi1.hasChildPojoSwaps()); - assertFalse(hc1.hasChildPojoSwaps()); - assertFalse(hi2.hasChildPojoSwaps()); - assertFalse(hc2.hasChildPojoSwaps()); - assertNull(ooo.getPojoSwap()); - assertEquals(hi1.getPojoSwap().getClass(), HI1Swap.class); - assertEquals(hc1.getPojoSwap().getClass(), HI1Swap.class); - assertEquals(hi2.getPojoSwap().getClass(), HI1Swap.class); - assertEquals(hc2.getPojoSwap().getClass(), HI1Swap.class); - assertEquals(ooo.getSerializedClassMeta().getInnerClass(), Object.class); - assertEquals(hi1.getSerializedClassMeta().getInnerClass(), Map.class); - assertEquals(hc1.getSerializedClassMeta().getInnerClass(), Map.class); - assertEquals(hi2.getSerializedClassMeta().getInnerClass(), Map.class); - assertEquals(hc2.getSerializedClassMeta().getInnerClass(), Map.class); - - bc = PropertyStore.create().setPojoSwaps(HC1Swap.class).getBeanContext(); - ooo = bc.getClassMeta(Object.class); - hi1 = bc.getClassMeta(HI1.class); - hc1 = bc.getClassMeta(HC1.class); - hi2 = bc.getClassMeta(HI2.class); - hc2 = bc.getClassMeta(HC2.class); - assertTrue(ooo.hasChildPojoSwaps()); - assertTrue(hi1.hasChildPojoSwaps()); - assertTrue(hc1.hasChildPojoSwaps()); - assertFalse(hi2.hasChildPojoSwaps()); - assertFalse(hc2.hasChildPojoSwaps()); - assertNull(ooo.getPojoSwap()); - assertNull(hi1.getPojoSwap()); - assertEquals(hc1.getPojoSwap().getClass(), HC1Swap.class); - assertNull(hi2.getPojoSwap()); - assertEquals(hc2.getPojoSwap().getClass(), HC1Swap.class); - assertEquals(ooo.getSerializedClassMeta().getInnerClass(), Object.class); - assertEquals(hi1.getSerializedClassMeta().getInnerClass(), HI1.class); - assertEquals(hc1.getSerializedClassMeta().getInnerClass(), Map.class); - assertEquals(hi2.getSerializedClassMeta().getInnerClass(), HI2.class); - assertEquals(hc2.getSerializedClassMeta().getInnerClass(), Map.class); - - bc = PropertyStore.create().setPojoSwaps(HI2Swap.class).getBeanContext(); - ooo = bc.getClassMeta(Object.class); - hi1 = bc.getClassMeta(HI1.class); - hc1 = bc.getClassMeta(HC1.class); - hi2 = bc.getClassMeta(HI2.class); - hc2 = bc.getClassMeta(HC2.class); - assertTrue(ooo.hasChildPojoSwaps()); - assertTrue(hi1.hasChildPojoSwaps()); - assertFalse(hc1.hasChildPojoSwaps()); - assertTrue(hi2.hasChildPojoSwaps()); - assertFalse(hc2.hasChildPojoSwaps()); - assertNull(ooo.getPojoSwap()); - assertNull(hi1.getPojoSwap()); - assertNull(hc1.getPojoSwap()); - assertEquals(hi2.getPojoSwap().getClass(), HI2Swap.class); - assertEquals(hc2.getPojoSwap().getClass(), HI2Swap.class); - assertEquals(ooo.getSerializedClassMeta().getInnerClass(), Object.class); - assertEquals(hi1.getSerializedClassMeta().getInnerClass(), HI1.class); - assertEquals(hc1.getSerializedClassMeta().getInnerClass(), HC1.class); - assertEquals(hi2.getSerializedClassMeta().getInnerClass(), Map.class); - assertEquals(hc2.getSerializedClassMeta().getInnerClass(), Map.class); - - bc = PropertyStore.create().setPojoSwaps(HC2Swap.class).getBeanContext(); - ooo = bc.getClassMeta(Object.class); - hi1 = bc.getClassMeta(HI1.class); - hc1 = bc.getClassMeta(HC1.class); - hi2 = bc.getClassMeta(HI2.class); - hc2 = bc.getClassMeta(HC2.class); - assertTrue(ooo.hasChildPojoSwaps()); - assertTrue(hi1.hasChildPojoSwaps()); - assertTrue(hc1.hasChildPojoSwaps()); - assertTrue(hi2.hasChildPojoSwaps()); - assertTrue(hc2.hasChildPojoSwaps()); - assertNull(ooo.getPojoSwap()); - assertNull(hi1.getPojoSwap()); - assertNull(hc1.getPojoSwap()); - assertNull(hi2.getPojoSwap()); - assertEquals(hc2.getPojoSwap().getClass(), HC2Swap.class); - assertEquals(ooo.getSerializedClassMeta().getInnerClass(), Object.class); - assertEquals(hi1.getSerializedClassMeta().getInnerClass(), HI1.class); - assertEquals(hc1.getSerializedClassMeta().getInnerClass(), HC1.class); - assertEquals(hi2.getSerializedClassMeta().getInnerClass(), HI2.class); - assertEquals(hc2.getSerializedClassMeta().getInnerClass(), Map.class); - - bc = PropertyStore.create().setPojoSwaps(HI1Swap.class,HC1Swap.class,HI2Swap.class,HC2Swap.class).getBeanContext(); - ooo = bc.getClassMeta(Object.class); - hi1 = bc.getClassMeta(HI1.class); - hc1 = bc.getClassMeta(HC1.class); - hi2 = bc.getClassMeta(HI2.class); - hc2 = bc.getClassMeta(HC2.class); - assertTrue(ooo.hasChildPojoSwaps()); - assertTrue(hi1.hasChildPojoSwaps()); - assertTrue(hc1.hasChildPojoSwaps()); - assertTrue(hi2.hasChildPojoSwaps()); - assertTrue(hc2.hasChildPojoSwaps()); - assertNull(ooo.getPojoSwap()); - assertEquals(hi1.getPojoSwap().getClass(), HI1Swap.class); - assertEquals(hc1.getPojoSwap().getClass(), HI1Swap.class); - assertEquals(hi2.getPojoSwap().getClass(), HI1Swap.class); - assertEquals(hc2.getPojoSwap().getClass(), HI1Swap.class); - assertEquals(ooo.getSerializedClassMeta().getInnerClass(), Object.class); - assertEquals(hi1.getSerializedClassMeta().getInnerClass(), Map.class); - assertEquals(hc1.getSerializedClassMeta().getInnerClass(), Map.class); - assertEquals(hi2.getSerializedClassMeta().getInnerClass(), Map.class); - assertEquals(hc2.getSerializedClassMeta().getInnerClass(), Map.class); - - bc = PropertyStore.create().setPojoSwaps(HC2Swap.class,HI2Swap.class,HC1Swap.class,HI1Swap.class).getBeanContext(); - ooo = bc.getClassMeta(Object.class); - hi1 = bc.getClassMeta(HI1.class); - hc1 = bc.getClassMeta(HC1.class); - hi2 = bc.getClassMeta(HI2.class); - hc2 = bc.getClassMeta(HC2.class); - assertTrue(ooo.hasChildPojoSwaps()); - assertTrue(hi1.hasChildPojoSwaps()); - assertTrue(hc1.hasChildPojoSwaps()); - assertTrue(hi2.hasChildPojoSwaps()); - assertTrue(hc2.hasChildPojoSwaps()); - assertNull(ooo.getPojoSwap()); - assertEquals(hi1.getPojoSwap().getClass(), HI1Swap.class); - assertEquals(hc1.getPojoSwap().getClass(), HC1Swap.class); - assertEquals(hi2.getPojoSwap().getClass(), HI2Swap.class); - assertEquals(hc2.getPojoSwap().getClass(), HC2Swap.class); - assertEquals(ooo.getSerializedClassMeta().getInnerClass(), Object.class); - assertEquals(hi1.getSerializedClassMeta().getInnerClass(), Map.class); - assertEquals(hc1.getSerializedClassMeta().getInnerClass(), Map.class); - assertEquals(hi2.getSerializedClassMeta().getInnerClass(), Map.class); - assertEquals(hc2.getSerializedClassMeta().getInnerClass(), Map.class); - } - - public interface HI1 {} - public class HC1 implements HI1 {} - public interface HI2 extends HI1 {} - public class HC2 extends HC1 implements HI2 {} - public static class HC1Swap extends PojoSwap<HC1,Map> {} - public static class HI1Swap extends PojoSwap<HI1,Map> {} - public static class HC2Swap extends PojoSwap<HC2,Map> {} - public static class HI2Swap extends PojoSwap<HI2,Map> {} -} http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ab15d45b/juneau-core-test/src/test/java/org/apache/juneau/ComboInput.java ---------------------------------------------------------------------- diff --git a/juneau-core-test/src/test/java/org/apache/juneau/ComboInput.java b/juneau-core-test/src/test/java/org/apache/juneau/ComboInput.java deleted file mode 100644 index 3ee1389..0000000 --- a/juneau-core-test/src/test/java/org/apache/juneau/ComboInput.java +++ /dev/null @@ -1,98 +0,0 @@ -// *************************************************************************************************************************** -// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file * -// * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file * -// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance * -// * with the License. You may obtain a copy of the License at * -// * * -// * http://www.apache.org/licenses/LICENSE-2.0 * -// * * -// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an * -// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the * -// * specific language governing permissions and limitations under the License. * -// *************************************************************************************************************************** -package org.apache.juneau; - -import java.lang.reflect.*; - -/** - * Represents the input to a ComboTest. - * @param <T> - */ -public class ComboInput<T> { - - final String label; - private final T in; - final Type type; - final String json, jsonT, jsonR, xml, xmlT, xmlR, xmlNs, html, htmlT, htmlR, uon, uonT, uonR, urlEncoding, - urlEncodingT, urlEncodingR, msgPack, msgPackT, rdfXml, rdfXmlT, rdfXmlR; - - public ComboInput( - String label, - Type type, - T in, - String json, - String jsonT, - String jsonR, - String xml, - String xmlT, - String xmlR, - String xmlNs, - String html, - String htmlT, - String htmlR, - String uon, - String uonT, - String uonR, - String urlEncoding, - String urlEncodingT, - String urlEncodingR, - String msgPack, - String msgPackT, - String rdfXml, - String rdfXmlT, - String rdfXmlR - ) { - this.label = label; - this.type = type; - this.in = in; - this.json = json; - this.jsonT = jsonT; - this.jsonR = jsonR; - this.xml = xml; - this.xmlT = xmlT; - this.xmlR = xmlR; - this.xmlNs = xmlNs; - this.html = html; - this.htmlT = htmlT; - this.htmlR = htmlR; - this.uon = uon; - this.uonT = uonT; - this.uonR = uonR; - this.urlEncoding = urlEncoding; - this.urlEncodingT = urlEncodingT; - this.urlEncodingR = urlEncodingR; - this.msgPack = msgPack; - this.msgPackT = msgPackT; - this.rdfXml = rdfXml; - this.rdfXmlT = rdfXmlT; - this.rdfXmlR = rdfXmlR; - } - - /** - * Returns the input object. - * Override this method if you want it dynamically created each time. - * @throws Exception - */ - public T getInput() throws Exception { - return in; - } - - /** - * Override this method if you want to do a post-parse verification on the object. - * <p> - * Note that a Function would be preferred here, but it's not available in Java 6. - * - * @param o The object returned by the parser. - */ - public void verify(T o) {} -}