This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git
The following commit(s) were added to refs/heads/master by this push: new 07c1eb277 Test modernization 07c1eb277 is described below commit 07c1eb277a3e8534ffbc65ebe87167eff3d712f0 Author: James Bognar <james.bog...@salesforce.com> AuthorDate: Sun Aug 24 14:32:19 2025 -0400 Test modernization --- .../java/org/apache/juneau/BeanConfig_Test.java | 1369 ++++++++++---------- .../test/java/org/apache/juneau/BeanMapTest.java | 193 +-- .../apache/juneau/DynaBean_ComboRoundTripTest.java | 60 +- .../a/rttests/RoundTripTransformBeans_Test.java | 9 +- .../org/apache/juneau/html/CommonParser_Test.java | 9 +- .../java/org/apache/juneau/html/Common_Test.java | 33 +- .../remote/Remote_FormDataAnnotation_Test.java | 150 +-- .../http/remote/Remote_HeaderAnnotation_Test.java | 145 +-- .../http/remote/Remote_PathAnnotation_Test.java | 103 +- .../http/remote/Remote_QueryAnnotation_Test.java | 98 +- .../org/apache/juneau/json/CommonParserTest.java | 9 +- .../java/org/apache/juneau/json/CommonTest.java | 32 +- .../juneau/jsonschema/JsonSchemaGeneratorTest.java | 16 +- .../juneau/objecttools/ObjectMerger_Test.java | 14 +- .../java/org/apache/juneau/rest/Swagger_Test.java | 15 +- .../rest/client/RestClient_BasicCalls_Test.java | 45 +- .../client/RestClient_Config_BeanContext_Test.java | 139 +- .../apache/juneau/uon/CommonParser_UonTest.java | 9 +- .../urlencoding/CommonParser_UrlEncodingTest.java | 10 +- .../org/apache/juneau/xml/CommonParserTest.java | 9 +- .../org/apache/juneau/xml/XmlCollapsedTest.java | 83 +- .../apache/juneau/xml/XmlIgnoreComments_Test.java | 12 +- .../test/java/org/apache/juneau/xml/XmlTest.java | 11 +- 23 files changed, 971 insertions(+), 1602 deletions(-) diff --git a/juneau-utest/src/test/java/org/apache/juneau/BeanConfig_Test.java b/juneau-utest/src/test/java/org/apache/juneau/BeanConfig_Test.java index 2570bc392..f77c49966 100755 --- a/juneau-utest/src/test/java/org/apache/juneau/BeanConfig_Test.java +++ b/juneau-utest/src/test/java/org/apache/juneau/BeanConfig_Test.java @@ -1,702 +1,669 @@ -// *************************************************************************************************************************** -// * 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.Visibility.*; -import static org.apache.juneau.common.internal.Utils.*; -import static org.apache.juneau.internal.CollectionUtils.map; -import static org.junit.jupiter.api.Assertions.*; - -import java.io.*; -import java.lang.reflect.*; -import java.time.*; -import java.util.*; - -import org.apache.juneau.annotation.*; -import org.apache.juneau.collections.*; -import org.apache.juneau.json.*; -import org.apache.juneau.parser.*; -import org.apache.juneau.swap.*; -import org.junit.jupiter.api.*; - -@SuppressWarnings("rawtypes") -class BeanConfig_Test extends SimpleTestBase { - - //==================================================================================================== - // testBasic - //==================================================================================================== - @Test void a01_basic() { - - var bc = BeanContext.DEFAULT; - - var p1 = new Person(); - p1.setName("John Doe"); - p1.setAge(25); - - var a = new Address("101 Main St.", "Las Vegas", "NV", "89101"); - var p2 = new AddressablePerson(); - p2.setName("Jane Doe"); - p2.setAge(21); - p2.setAddress(a); - - // setup the reference results - var m1 = new LinkedHashMap(); - m1.put("name", p1.getName()); - m1.put("age", Integer.valueOf(p1.getAge())); - - var m2 = new LinkedHashMap(); - m2.put("street", a.getStreet()); - m2.put("city", a.getCity()); - m2.put("state", a.getState()); - m2.put("zip", a.getZip()); - - var m3 = new LinkedHashMap(); - m3.put("name", p2.getName()); - m3.put("age", Integer.valueOf(p2.getAge())); - m3.put("address", p2.getAddress()); - - var pm1 = bc.toBeanMap(p1); - - assertEquals(pm1.size(), m1.size(), ss("Bean Map size failed for: {0} / {1} / {2}", p1, pm1.size(), m1.size())); - assertEquals(pm1.keySet(), m1.keySet(), ss("Bean Map key set equality failed for: {0} / {1} / {2}", p1, pm1.keySet() , m1.keySet())); - assertEquals(m1.keySet(), pm1.keySet(), ss("Bean Map key set reverse equality failed for: {0} / {1} / {2}", p1, pm1.keySet(), m1.keySet())); - assertEquals(pm1, m1, ss("Bean Map equality failed for: {0} / {1} / {2}", p1, pm1, m1)); // NOSONAR - assertThrows(BeanRuntimeException.class, ()->bc.newBeanMap(Address.class)); // Address returned as a new bean type, but shouldn't be since it doesn't have a default constructor. - assertNull(bc.newBeanMap(java.lang.Integer.class), "java.lang.Integer incorrectly designated as bean type."); - assertNull(bc.newBeanMap(java.lang.Class.class), "java.lang.Class incorrectly designated as bean type."); - - var bm1 = bc.toBeanMap(new Address("street", "city", "state", "zip")); - - assertEquals(bm1.size(), m2.size(), ss("Bean Adapter map's key set has wrong size: {0} / {1} / {2}", a, bm1.size(), m2.size())); - - var iter = bm1.keySet().iterator(); - var temp = new HashSet(); - var count = 0; - while (iter.hasNext()) { - temp.add(iter.next()); - count++; - } - - assertEquals(count, m2.size(), ss("Iteration count over bean adpater key set failed: {0} / {1} / {2}", a, count, m2.size())); - assertEquals(m2.keySet(), temp, ss("Iteration over bean adpater key set failed: {0} / {1} / {2}", a, bm1.keySet(), m2.keySet())); - assertNotNull(bc.toBeanMap(p2), ss("Failed to identify class as bean type: {0}", p2.getClass())); - - var m5 = bc.toBeanMap(p2); - Set es1 = m5.entrySet(); - - assertEquals(es1, m3.entrySet(), ss("Entry set equality failed: {0} / {1} / {2}", p2, es1, m3.entrySet())); - assertEquals(m3.entrySet(), es1, ss("Entry set reverse equality failed: {0} / {1} / {2}", p2, es1, m3.entrySet())); - - iter = es1.iterator(); - temp = new HashSet(); - count = 0; - while (iter.hasNext()) { - temp.add(iter.next()); - count++; - } - - assertEquals(count, m3.size(), ss("Iteration count over bean adpater entry set failed: {0} / {1} / {2}", a, count, m3.size())); - assertEquals(m3.entrySet(), temp, ss("Iteration over bean adpater entry set failed: {0} / {1} / {2}", a, es1, m3.entrySet())); - } - - public static class Person { - private String name; - private int age; - - public Person() { - name = null; - age = -1; - } - - public String getName() { - return name; - } - - public void setName(String v) { - name = v; - } - - public int getAge() { - return age; - } - - public void setAge(int v) { - age = v; - } - - @Override /* Object */ - public String toString() { - return format("Person(name: {0}, age: {1})", name, age); - } - } - - public static class Address { - protected String street; - protected String city; - protected String state; - protected String zip; - - public Address(String street, String city, String state, String zip) { - this.street = street; - this.city = city; - this.state = state; - this.zip = zip; - } - - public String getStreet() { - return street; - } - - public String getCity() { - return city; - } - - public String getState() { - return state; - } - - public String getZip() { - return zip; - } - - @Override /* Object */ - public boolean equals(Object o) { - return eq(this, (Address)o, (x,y) -> eq(x.getStreet(), y.getStreet()) && eq(x.getCity(), y.getCity()) && eq(x.getState(), y.getState()) && eq(x.getZip(), y.getZip())); - } - - @Override /* Object */ - public int hashCode() { - return hash(street, city, state, zip); - } - - @Override /* Object */ - public String toString() { - return format("Address(street: {0}, city: {1}, state: {2}, zip: {3})", street, city, state, zip); - } - } - - public static class AddressablePerson extends Person { - private Address address; - - public AddressablePerson() { - this.address = null; - } - - public Address getAddress() { - return address; - } - - public void setAddress(Address v) { - address = v; - } - - @Override /* Object */ - public String toString() { - return super.toString() + "@" + this.address; - } - } - - //==================================================================================================== - // Exhaustive test of BeanContext.convertToType() - //==================================================================================================== - @Test void testBeanContextConvertToType() throws Exception { - var bc = BeanContext.DEFAULT; - Object o; - - // Primitive nulls. - o = null; - assertEquals(Integer.valueOf(0), bc.convertToType(o, Integer.TYPE)); - assertEquals(Short.valueOf((short) 0), bc.convertToType(o, Short.TYPE)); - assertEquals(Long.valueOf(0), bc.convertToType(o, Long.TYPE)); - assertEquals(Float.valueOf(0), bc.convertToType(o, Float.TYPE)); - assertEquals(Double.valueOf(0), bc.convertToType(o, Double.TYPE)); - assertEquals(Byte.valueOf((byte) 0), bc.convertToType(o, Byte.TYPE)); - assertEquals(Character.valueOf((char) 0), bc.convertToType(o, Character.TYPE)); - assertEquals(Boolean.FALSE, bc.convertToType(o, Boolean.TYPE)); - - o = "1"; - - assertEquals(Integer.valueOf(1), bc.convertToType(o, Integer.class)); - assertEquals(Short.valueOf((short) 1), bc.convertToType(o, Short.class)); - assertEquals(Long.valueOf(1), bc.convertToType(o, Long.class)); - assertEquals(Float.valueOf(1), bc.convertToType(o, Float.class)); - assertEquals(Double.valueOf(1), bc.convertToType(o, Double.class)); - assertEquals(Byte.valueOf((byte) 1), bc.convertToType(o, Byte.class)); - assertEquals(Character.valueOf('1'), bc.convertToType(o, Character.class)); - assertEquals(Boolean.FALSE, bc.convertToType(o, Boolean.class)); - - assertEquals(Integer.valueOf(1), bc.convertToType(o, Integer.TYPE)); - assertEquals(Short.valueOf((short) 1), bc.convertToType(o, Short.TYPE)); - assertEquals(Long.valueOf(1), bc.convertToType(o, Long.TYPE)); - assertEquals(Float.valueOf(1), bc.convertToType(o, Float.TYPE)); - assertEquals(Double.valueOf(1), bc.convertToType(o, Double.TYPE)); - assertEquals(Byte.valueOf((byte) 1), bc.convertToType(o, Byte.TYPE)); - assertEquals(Character.valueOf('1'), bc.convertToType(o, Character.TYPE)); - assertEquals(Boolean.FALSE, bc.convertToType(o, Boolean.TYPE)); - - o = Integer.valueOf(1); - - assertEquals(Integer.valueOf(1), bc.convertToType(o, Integer.TYPE)); - assertEquals(Short.valueOf((short) 1), bc.convertToType(o, Short.TYPE)); - assertEquals(Long.valueOf(1), bc.convertToType(o, Long.TYPE)); - assertEquals(Float.valueOf(1), bc.convertToType(o, Float.TYPE)); - assertEquals(Double.valueOf(1), bc.convertToType(o, Double.TYPE)); - assertEquals(Byte.valueOf((byte) 1), bc.convertToType(o, Byte.TYPE)); - assertEquals(Character.valueOf('1'), bc.convertToType(o, Character.TYPE)); - assertEquals(Boolean.TRUE, bc.convertToType(o, Boolean.TYPE)); - - o = Integer.valueOf(0); - assertEquals(Boolean.FALSE, bc.convertToType(o, Boolean.TYPE)); - - // Bean - o = "{name:'x',age:123}"; - assertEquals("x", bc.convertToType(o, Person.class).getName()); - assertEquals(123, bc.convertToType(o, Person.class).getAge()); - - // Read-only bean - o = "{name:'x',age:123}"; - assertEquals("x", bc.convertToType(o, ReadOnlyPerson.class).getName()); - assertEquals(123, bc.convertToType(o, ReadOnlyPerson.class).getAge()); - - // Class with forString(String) method. - o = UUID.randomUUID(); - assertEquals(o, bc.convertToType(o.toString(), UUID.class)); - - // Class with Constructor(String). - o = "xxx"; - var file = bc.convertToType(o, File.class); - assertEquals("xxx", file.getName()); - - // List of ints to array - o = JsonList.of(1, 2, 3); - assertEquals(1, bc.convertToType(o, int[].class)[0]); - - // List of beans to array - o = JsonList.of(new ReadOnlyPerson("x", 123)); - assertEquals("x", bc.convertToType(o, ReadOnlyPerson[].class)[0].getName()); - - // Multi-dimensional array of beans. - o = JsonList.ofCollections(JsonList.of(new ReadOnlyPerson("x", 123))); - assertEquals("x", bc.convertToType(o, ReadOnlyPerson[][].class)[0][0].getName()); - - // Array of strings to array of ints - o = a("1", "2", "3"); - assertEquals(Integer.valueOf(1), bc.convertToType(o, Integer[].class)[0]); - assertEquals(1, bc.convertToType(o, int[].class)[0]); - - // Array to list - o = a(1, 2, 3); - assertEquals(Integer.valueOf(1), bc.convertToType(o, LinkedList.class).get(0)); - - // HashMap to TreeMap - o = map(1, "foo"); - assertEquals("foo", bc.convertToType(o, TreeMap.class).firstEntry().getValue()); - - // String to TreeMap - o = "{1:'foo'}"; - assertEquals("foo", bc.convertToType(o, TreeMap.class).firstEntry().getValue()); - - // String to generic Map - assertEquals("foo", bc.convertToType(o, Map.class).values().iterator().next()); - - // Array to String - o = a("a", 1, false); - assertEquals("['a',1,false]", bc.convertToType(o, String.class)); - o = new Object[]{a("a", 1, false)}; - assertEquals("[['a',1,false]]", bc.convertToType(o, String.class)); - } - - //==================================================================================================== - // Test properties set through a constructor. - //==================================================================================================== - @Test void testReadOnlyProperties() throws Exception { - var bc = BeanContext.DEFAULT; - Object o; - - // Bean to String - o = new ReadOnlyPerson("x", 123); - assertEquals("{name:'x',age:123}", bc.convertToType(o, String.class)); - - // List of Maps to array of beans. - o = JsonList.of(JsonMap.ofJson("{name:'x',age:1}"), JsonMap.ofJson("{name:'y',age:2}")); - assertEquals(1, bc.convertToType(o, ReadOnlyPerson[].class)[0].getAge()); - } - - @Bean(p="name,age") - public static class ReadOnlyPerson { - private final String name; - private final int age; - - @Beanc(properties="name,age") - public ReadOnlyPerson(String name, int age) { - this.name = name; - this.age = age; - } - - public String getName() { - return name; - } - - public int getAge() { - return age; - } - - @Override /* Object */ - public String toString() { - return format("toString():name={0},age={1}", name, age); - } - } - - @Test void testReadOnlyProperties_usingConfig() throws Exception { - var bc = BeanContext.DEFAULT.copy().applyAnnotations(ReadOnlyPerson2Config.class).build(); - Object o; - - // Bean to String - o = new ReadOnlyPerson2("x", 123); - assertEquals("{name:'x',age:123}", bc.convertToType(o, String.class)); - - // List of Maps to array of beans. - o = JsonList.of(JsonMap.ofJson("{name:'x',age:1}"), JsonMap.ofJson("{name:'y',age:2}")); - assertEquals(1, bc.convertToType(o, ReadOnlyPerson2[].class)[0].getAge()); - } - - public static class ReadOnlyPerson2 { - private final String name; - private final int age; - - public ReadOnlyPerson2(String name, int age) { - this.name = name; - this.age = age; - } - - public String getName() { - return name; - } - - public int getAge() { - return age; - } - - @Override /* Object */ - public String toString() { - return format("toString():name={0},age={1}", name, age); - } - } - - @Bean(on="Dummy1",p="dummy") - @Bean(on="ReadOnlyPerson2",p="name,age") - @Bean(on="Dummy2",p="dummy") - @Beanc(on="Dummy1",properties="dummy") - @Beanc(on="ReadOnlyPerson2(String,int)",properties="name,age") - @Beanc(on="Dummy2",properties="dummy") - private static class ReadOnlyPerson2Config {} - - //==================================================================================================== - // testEnums - //==================================================================================================== - @Test void testEnums() throws Exception { - var bc = BeanContext.DEFAULT; - Object o; - - // Enum - o = "ENUM2"; - assertEquals(TestEnum.ENUM2, bc.convertToType(o, TestEnum.class)); - assertEquals("ENUM2", bc.convertToType(TestEnum.ENUM2, String.class)); - - // Array of enums - o = a("ENUM2"); - assertEquals(TestEnum.ENUM2, bc.convertToType(o, TestEnum[].class)[0]); - } - - public enum TestEnum { - ENUM1, ENUM2, ENUM3 - } - - //==================================================================================================== - // testProxyHandler - //==================================================================================================== - @Test void testProxyHandler() { - var session = BeanContext.DEFAULT_SESSION; - - var f1 = (A) Proxy.newProxyInstance(this.getClass().getClassLoader(), new Class[] { A.class }, new AHandler()); - - var bm1 = session.toBeanMap(f1); - assertNotNull(bm1, ss("Failed to obtain bean adapter for proxy: {0}", f1)); - - var bm2 = session.newBeanMap(A.class); - assertNotNull(bm2, ss("Failed to create dynamic proxy bean for interface: {0}", A.class.getName())); - - bm2.put("a", "Hello"); - bm2.put("b", Integer.valueOf(50)); - f1.setA("Hello"); - f1.setB(50); - - assertEquals(bm2.get("a"), "Hello", ss("Failed to set string property 'a' on dynamic proxy bean. {0}", bm2)); // NOSONAR - assertEquals(bm2.get("b"), Integer.valueOf(50), ss("Failed to set string property 'b' on dynamic proxy bean. {0}", bm2)); - assertEquals(bm1, bm2, ss("Failed equality test of dynamic proxies beans: {0} / {1}", bm1, bm2)); - assertEquals(bm2, bm1, ss("Failed reverse equality test of dynamic proxies beans: {0} / {1}", bm1, bm2)); - } - - public interface A { - String getA(); - - void setA(String a); - - int getB(); - - void setB(int b); - } - - public static class AHandler implements InvocationHandler { - private Map map; - - public AHandler() { - map = new HashMap(); - map.put("a", ""); - map.put("b", Integer.valueOf(0)); - } - - @Override /* InvocationHandler */ - public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { - var methodName = method.getName(); - if (methodName.equals("getA")) { - return map.get("a"); - } - if (methodName.equals("setA")) { - map.put("a", args[0]); - return null; - } - if (methodName.equals("getB")) { - return map.get("b"); - } - if (methodName.equals("setB")) { - map.put("b", args[0]); - return null; - } - if (methodName.equals("toString")) { - return map.toString(); - } - return null; - } - } - - //==================================================================================================== - // testFluentStyleSetters - //==================================================================================================== - @Test void testFluentStyleSetters() { - var t = new B2().init(); - var m = BeanContext.DEFAULT.toBeanMap(t); - m.put("f1", 2); - assertEquals(2, t.f1); - } - - public static class B { - int f1; - public int getF1() { return f1; } - public B setF1(int v) { f1 = v; return this; } - } - - public static class B2 extends B { - @Override /* B */ - public B2 setF1(int v) { f1 = v; return this; } - public B2 init() { f1 = 1; return this;} - } - - //==================================================================================================== - // testClassMetaCaching - //==================================================================================================== - @Test void testClassMetaCaching() { - var p1 = JsonParser.create(); - var p2 = JsonParser.create(); - assertSameCache(p1, p2); - - assertDifferentCache(p1.beansRequireDefaultConstructor(), p2); - assertSameCache(p1, p2.beansRequireDefaultConstructor()); - - assertDifferentCache(p1.beansRequireSerializable(), p2); - assertSameCache(p1, p2.beansRequireSerializable()); - - assertDifferentCache(p1.beansRequireSettersForGetters(), p2); - assertSameCache(p1, p2.beansRequireSettersForGetters()); - - assertDifferentCache(p1.disableBeansRequireSomeProperties(), p2); - assertSameCache(p1, p2.disableBeansRequireSomeProperties()); - - assertDifferentCache(p1.beanMapPutReturnsOldValue(), p2); - assertSameCache(p1, p2.beanMapPutReturnsOldValue()); - - assertDifferentCache(p1.beanConstructorVisibility(DEFAULT), p2); - assertSameCache(p1, p2.beanConstructorVisibility(DEFAULT)); - assertDifferentCache(p1.beanConstructorVisibility(NONE), p2); - assertSameCache(p1, p2.beanConstructorVisibility(NONE)); - assertDifferentCache(p1.beanConstructorVisibility(PRIVATE), p2); - assertSameCache(p1, p2.beanConstructorVisibility(PRIVATE)); - assertDifferentCache(p1.beanConstructorVisibility(PROTECTED), p2); - assertSameCache(p1, p2.beanConstructorVisibility(PROTECTED)); - - assertDifferentCache(p1.beanClassVisibility(DEFAULT), p2); - assertSameCache(p1, p2.beanClassVisibility(DEFAULT)); - assertDifferentCache(p1.beanClassVisibility(NONE), p2); - assertSameCache(p1, p2.beanClassVisibility(NONE)); - assertDifferentCache(p1.beanClassVisibility(PRIVATE), p2); - assertSameCache(p1, p2.beanClassVisibility(PRIVATE)); - assertDifferentCache(p1.beanClassVisibility(PROTECTED), p2); - assertSameCache(p1, p2.beanClassVisibility(PROTECTED)); - - assertDifferentCache(p1.beanFieldVisibility(DEFAULT), p2); - assertSameCache(p1, p2.beanFieldVisibility(DEFAULT)); - assertDifferentCache(p1.beanFieldVisibility(NONE), p2); - assertSameCache(p1, p2.beanFieldVisibility(NONE)); - assertDifferentCache(p1.beanFieldVisibility(PRIVATE), p2); - assertSameCache(p1, p2.beanFieldVisibility(PRIVATE)); - assertDifferentCache(p1.beanFieldVisibility(PROTECTED), p2); - assertSameCache(p1, p2.beanFieldVisibility(PROTECTED)); - - assertDifferentCache(p1.beanMethodVisibility(DEFAULT), p2); - assertSameCache(p1, p2.beanMethodVisibility(DEFAULT)); - assertDifferentCache(p1.beanMethodVisibility(NONE), p2); - assertSameCache(p1, p2.beanMethodVisibility(NONE)); - assertDifferentCache(p1.beanMethodVisibility(PRIVATE), p2); - assertSameCache(p1, p2.beanMethodVisibility(PRIVATE)); - assertDifferentCache(p1.beanMethodVisibility(PROTECTED), p2); - assertSameCache(p1, p2.beanMethodVisibility(PROTECTED)); - - assertDifferentCache(p1.useJavaBeanIntrospector(), p2); - assertSameCache(p1, p2.useJavaBeanIntrospector()); - - assertDifferentCache(p1.disableInterfaceProxies(), p2); - assertSameCache(p1, p2.disableInterfaceProxies()); - - assertDifferentCache(p1.ignoreUnknownBeanProperties(), p2); - assertSameCache(p1, p2.ignoreUnknownBeanProperties()); - - assertDifferentCache(p1.disableIgnoreUnknownNullBeanProperties(), p2); - assertSameCache(p1, p2.disableIgnoreUnknownNullBeanProperties()); - - assertDifferentCache(p1.disableIgnoreMissingSetters(), p2); - assertSameCache(p1, p2.disableIgnoreMissingSetters()); - - assertDifferentCache(p1.ignoreInvocationExceptionsOnGetters(), p2); - assertSameCache(p1, p2.ignoreInvocationExceptionsOnGetters()); - - assertDifferentCache(p1.ignoreInvocationExceptionsOnSetters(), p2); - assertSameCache(p1, p2.ignoreInvocationExceptionsOnSetters()); - - assertDifferentCache(p1.notBeanPackages("foo"), p2); - assertSameCache(p1, p2.notBeanPackages("foo")); - assertDifferentCache(p1.notBeanPackages("bar"), p2); - assertSameCache(p1, p2.notBeanPackages("bar")); - assertDifferentCache(p1.notBeanPackages("baz").notBeanPackages("bing"), p2); - assertSameCache(p2.notBeanPackages("bing").notBeanPackages("baz"), p2); - - p1.beanContext().notBeanPackages().remove("bar"); - assertDifferentCache(p1, p2); - p2.beanContext().notBeanPackages().remove("bar"); - assertSameCache(p1, p2); - - assertDifferentCache(p1.swaps(DummyPojoSwapA.class), p2); - assertSameCache(p1, p2.swaps(DummyPojoSwapA.class)); - assertDifferentCache(p1.swaps(DummyPojoSwapB.class,DummyPojoSwapC.class), p2.swaps(DummyPojoSwapC.class,DummyPojoSwapB.class)); // Order of filters is important! - } - - public static class DummyPojoSwapA extends MapSwap<A> {} - public static class DummyPojoSwapB extends MapSwap<B> {} - public static class DummyPojoSwapC extends MapSwap<C> {} - public static class C {} - - private void assertSameCache(Parser.Builder p1b, Parser.Builder p2b) { - var p1 = p1b.build(); - var p2 = p2b.build(); - assertTrue(p1.getBeanContext().hasSameCache(p2.getBeanContext())); - } - - private void assertDifferentCache(Parser.Builder p1b, Parser.Builder p2b) { - var p1 = p1b.build(); - var p2 = p2b.build(); - assertFalse(p1.getBeanContext().hasSameCache(p2.getBeanContext())); - } - - //==================================================================================================== - // testNotABeanReasons - //==================================================================================================== - @Test void testNotABeanNonStaticInnerClass() { - var bc = BeanContext.DEFAULT; - var cm = bc.getClassMeta(C1.class); - assertFalse(cm.canCreateNewInstance()); - } - - public class C1 { - public int f1; - } - - //==================================================================================================== - // testAddingToArrayProperty - // This tests the speed of the BeanMap.add() method against array properties. - // For performance reasons, array properties are stored as temporary ArrayLists until the - // BeanMap.getBean() method is called. - //==================================================================================================== - // Should be around 100ms at most. - @Test void testAddingToArrayProperty() { - assertTimeout(Duration.ofSeconds(1), () -> { - var bc = BeanContext.DEFAULT; - var bm = bc.newBeanMap(D.class); - for (var i = 0; i < 5000; i++) { - bm.add("f1", i); - bm.add("f2", i); - bm.add("f3", i); - bm.add("f4", i); - } - var d = bm.getBean(); - assertEquals(5000, d.f1.length); - assertEquals(5000, d.f2.length); - assertEquals(5003, d.f3.length); - assertEquals(5003, d.f4.length); - }); - } - - public class D { - public int[] f1; - private int[] f2; - public int[] f3 = {1,2,3}; - private int[] f4 = {1,2,3}; - public int[] getF2() {return f2;} - public void setF2(int[] v) {f2 = v;} - public int[] getF4() {return f4;} - public void setF4(int[] v) {f4 = v;} - } - - //==================================================================================================== - // testClassClassMeta - // Make sure we can get ClassMeta objects against the Class class. - //==================================================================================================== - @Test void testClassClassMeta() { - assertNotNull(BeanContext.DEFAULT.getClassMeta(Class.class)); - assertNotNull(BeanContext.DEFAULT.getClassMeta(Class[].class)); - } - - //==================================================================================================== - // testBlanks - //==================================================================================================== - @Test void testBlanks() throws Exception { - var bc = BeanContext.DEFAULT; - - // Blanks get interpreted as the default value for primitives and null for boxed objects. - assertEquals(0, (int)bc.convertToType("", int.class)); - assertNull(bc.convertToType("", Integer.class)); - - // Booleans are handled different since 'Boolean.valueOf("")' is valid and resolves to false - // while 'Integer.valueOf("")' produces an exception. - assertEquals(false, (boolean)bc.convertToType("", boolean.class)); - assertEquals(null, bc.convertToType("", Boolean.class)); - } +// *************************************************************************************************************************** +// * 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.Visibility.*; +import static org.apache.juneau.common.internal.Utils.*; +import static org.apache.juneau.internal.CollectionUtils.map; +import static org.junit.jupiter.api.Assertions.*; + +import java.io.*; +import java.lang.reflect.*; +import java.time.*; +import java.util.*; + +import org.apache.juneau.annotation.*; +import org.apache.juneau.collections.*; +import org.apache.juneau.json.*; +import org.apache.juneau.parser.*; +import org.apache.juneau.swap.*; +import org.junit.jupiter.api.*; + +@SuppressWarnings("rawtypes") +class BeanConfig_Test extends SimpleTestBase { + + //==================================================================================================== + // testBasic + //==================================================================================================== + @Test void a01_basic() { + + var bc = BeanContext.DEFAULT; + + var p1 = new Person(); + p1.setName("John Doe"); + p1.setAge(25); + + var a = new Address("101 Main St.", "Las Vegas", "NV", "89101"); + var p2 = new AddressablePerson(); + p2.setName("Jane Doe"); + p2.setAge(21); + p2.setAddress(a); + + // setup the reference results + var m1 = new LinkedHashMap(); + m1.put("name", p1.getName()); + m1.put("age", Integer.valueOf(p1.getAge())); + + var m2 = new LinkedHashMap(); + m2.put("street", a.getStreet()); + m2.put("city", a.getCity()); + m2.put("state", a.getState()); + m2.put("zip", a.getZip()); + + var m3 = new LinkedHashMap(); + m3.put("name", p2.getName()); + m3.put("age", Integer.valueOf(p2.getAge())); + m3.put("address", p2.getAddress()); + + var pm1 = bc.toBeanMap(p1); + + assertEquals(pm1.size(), m1.size(), ss("Bean Map size failed for: {0} / {1} / {2}", p1, pm1.size(), m1.size())); + assertEquals(pm1.keySet(), m1.keySet(), ss("Bean Map key set equality failed for: {0} / {1} / {2}", p1, pm1.keySet() , m1.keySet())); + assertEquals(m1.keySet(), pm1.keySet(), ss("Bean Map key set reverse equality failed for: {0} / {1} / {2}", p1, pm1.keySet(), m1.keySet())); + assertEquals(pm1, m1, ss("Bean Map equality failed for: {0} / {1} / {2}", p1, pm1, m1)); // NOSONAR + assertThrows(BeanRuntimeException.class, ()->bc.newBeanMap(Address.class)); // Address returned as a new bean type, but shouldn't be since it doesn't have a default constructor. + assertNull(bc.newBeanMap(java.lang.Integer.class), "java.lang.Integer incorrectly designated as bean type."); + assertNull(bc.newBeanMap(java.lang.Class.class), "java.lang.Class incorrectly designated as bean type."); + + var bm1 = bc.toBeanMap(new Address("street", "city", "state", "zip")); + + assertEquals(bm1.size(), m2.size(), ss("Bean Adapter map's key set has wrong size: {0} / {1} / {2}", a, bm1.size(), m2.size())); + + var iter = bm1.keySet().iterator(); + var temp = new HashSet(); + var count = 0; + while (iter.hasNext()) { + temp.add(iter.next()); + count++; + } + + assertEquals(count, m2.size(), ss("Iteration count over bean adpater key set failed: {0} / {1} / {2}", a, count, m2.size())); + assertEquals(m2.keySet(), temp, ss("Iteration over bean adpater key set failed: {0} / {1} / {2}", a, bm1.keySet(), m2.keySet())); + assertNotNull(bc.toBeanMap(p2), ss("Failed to identify class as bean type: {0}", p2.getClass())); + + var m5 = bc.toBeanMap(p2); + Set es1 = m5.entrySet(); + + assertEquals(es1, m3.entrySet(), ss("Entry set equality failed: {0} / {1} / {2}", p2, es1, m3.entrySet())); + assertEquals(m3.entrySet(), es1, ss("Entry set reverse equality failed: {0} / {1} / {2}", p2, es1, m3.entrySet())); + + iter = es1.iterator(); + temp = new HashSet(); + count = 0; + while (iter.hasNext()) { + temp.add(iter.next()); + count++; + } + + assertEquals(count, m3.size(), ss("Iteration count over bean adpater entry set failed: {0} / {1} / {2}", a, count, m3.size())); + assertEquals(m3.entrySet(), temp, ss("Iteration over bean adpater entry set failed: {0} / {1} / {2}", a, es1, m3.entrySet())); + } + + public static class Person { + + public Person() { + name = null; + age = -1; + } + + private String name; + public String getName() { return name; } + public void setName(String v) { name = v; } + + private int age; + public int getAge() { return age; } + public void setAge(int v) { age = v; } + + @Override /* Object */ + public String toString() { + return format("Person(name: {0}, age: {1})", name, age); + } + } + + public static class Address { + + public Address(String street, String city, String state, String zip) { + this.street = street; + this.city = city; + this.state = state; + this.zip = zip; + } + + protected String street; + public String getStreet() { return street; } + + protected String city; + public String getCity() { return city; } + + protected String state; + public String getState() { return state; } + + protected String zip; + public String getZip() { return zip; } + + @Override /* Object */ + public boolean equals(Object o) { + return eq(this, (Address)o, (x,y) -> eq(x.getStreet(), y.getStreet()) && eq(x.getCity(), y.getCity()) && eq(x.getState(), y.getState()) && eq(x.getZip(), y.getZip())); + } + + @Override /* Object */ + public int hashCode() { + return hash(street, city, state, zip); + } + + @Override /* Object */ + public String toString() { + return format("Address(street: {0}, city: {1}, state: {2}, zip: {3})", street, city, state, zip); + } + } + + public static class AddressablePerson extends Person { + + public AddressablePerson() { + this.address = null; + } + + private Address address; + public Address getAddress() { return address; } + public void setAddress(Address v) { address = v; } + + @Override /* Object */ + public String toString() { + return super.toString() + "@" + this.address; + } + } + + //==================================================================================================== + // Exhaustive test of BeanContext.convertToType() + //==================================================================================================== + @Test void testBeanContextConvertToType() throws Exception { + var bc = BeanContext.DEFAULT; + Object o; + + // Primitive nulls. + o = null; + assertEquals(Integer.valueOf(0), bc.convertToType(o, Integer.TYPE)); + assertEquals(Short.valueOf((short) 0), bc.convertToType(o, Short.TYPE)); + assertEquals(Long.valueOf(0), bc.convertToType(o, Long.TYPE)); + assertEquals(Float.valueOf(0), bc.convertToType(o, Float.TYPE)); + assertEquals(Double.valueOf(0), bc.convertToType(o, Double.TYPE)); + assertEquals(Byte.valueOf((byte) 0), bc.convertToType(o, Byte.TYPE)); + assertEquals(Character.valueOf((char) 0), bc.convertToType(o, Character.TYPE)); + assertEquals(Boolean.FALSE, bc.convertToType(o, Boolean.TYPE)); + + o = "1"; + + assertEquals(Integer.valueOf(1), bc.convertToType(o, Integer.class)); + assertEquals(Short.valueOf((short) 1), bc.convertToType(o, Short.class)); + assertEquals(Long.valueOf(1), bc.convertToType(o, Long.class)); + assertEquals(Float.valueOf(1), bc.convertToType(o, Float.class)); + assertEquals(Double.valueOf(1), bc.convertToType(o, Double.class)); + assertEquals(Byte.valueOf((byte) 1), bc.convertToType(o, Byte.class)); + assertEquals(Character.valueOf('1'), bc.convertToType(o, Character.class)); + assertEquals(Boolean.FALSE, bc.convertToType(o, Boolean.class)); + + assertEquals(Integer.valueOf(1), bc.convertToType(o, Integer.TYPE)); + assertEquals(Short.valueOf((short) 1), bc.convertToType(o, Short.TYPE)); + assertEquals(Long.valueOf(1), bc.convertToType(o, Long.TYPE)); + assertEquals(Float.valueOf(1), bc.convertToType(o, Float.TYPE)); + assertEquals(Double.valueOf(1), bc.convertToType(o, Double.TYPE)); + assertEquals(Byte.valueOf((byte) 1), bc.convertToType(o, Byte.TYPE)); + assertEquals(Character.valueOf('1'), bc.convertToType(o, Character.TYPE)); + assertEquals(Boolean.FALSE, bc.convertToType(o, Boolean.TYPE)); + + o = Integer.valueOf(1); + + assertEquals(Integer.valueOf(1), bc.convertToType(o, Integer.TYPE)); + assertEquals(Short.valueOf((short) 1), bc.convertToType(o, Short.TYPE)); + assertEquals(Long.valueOf(1), bc.convertToType(o, Long.TYPE)); + assertEquals(Float.valueOf(1), bc.convertToType(o, Float.TYPE)); + assertEquals(Double.valueOf(1), bc.convertToType(o, Double.TYPE)); + assertEquals(Byte.valueOf((byte) 1), bc.convertToType(o, Byte.TYPE)); + assertEquals(Character.valueOf('1'), bc.convertToType(o, Character.TYPE)); + assertEquals(Boolean.TRUE, bc.convertToType(o, Boolean.TYPE)); + + o = Integer.valueOf(0); + assertEquals(Boolean.FALSE, bc.convertToType(o, Boolean.TYPE)); + + // Bean + o = "{name:'x',age:123}"; + assertEquals("x", bc.convertToType(o, Person.class).getName()); + assertEquals(123, bc.convertToType(o, Person.class).getAge()); + + // Read-only bean + o = "{name:'x',age:123}"; + assertEquals("x", bc.convertToType(o, ReadOnlyPerson.class).getName()); + assertEquals(123, bc.convertToType(o, ReadOnlyPerson.class).getAge()); + + // Class with forString(String) method. + o = UUID.randomUUID(); + assertEquals(o, bc.convertToType(o.toString(), UUID.class)); + + // Class with Constructor(String). + o = "xxx"; + var file = bc.convertToType(o, File.class); + assertEquals("xxx", file.getName()); + + // List of ints to array + o = JsonList.of(1, 2, 3); + assertEquals(1, bc.convertToType(o, int[].class)[0]); + + // List of beans to array + o = JsonList.of(new ReadOnlyPerson("x", 123)); + assertEquals("x", bc.convertToType(o, ReadOnlyPerson[].class)[0].getName()); + + // Multi-dimensional array of beans. + o = JsonList.ofCollections(JsonList.of(new ReadOnlyPerson("x", 123))); + assertEquals("x", bc.convertToType(o, ReadOnlyPerson[][].class)[0][0].getName()); + + // Array of strings to array of ints + o = a("1", "2", "3"); + assertEquals(Integer.valueOf(1), bc.convertToType(o, Integer[].class)[0]); + assertEquals(1, bc.convertToType(o, int[].class)[0]); + + // Array to list + o = a(1, 2, 3); + assertEquals(Integer.valueOf(1), bc.convertToType(o, LinkedList.class).get(0)); + + // HashMap to TreeMap + o = map(1, "foo"); + assertEquals("foo", bc.convertToType(o, TreeMap.class).firstEntry().getValue()); + + // String to TreeMap + o = "{1:'foo'}"; + assertEquals("foo", bc.convertToType(o, TreeMap.class).firstEntry().getValue()); + + // String to generic Map + assertEquals("foo", bc.convertToType(o, Map.class).values().iterator().next()); + + // Array to String + o = a("a", 1, false); + assertEquals("['a',1,false]", bc.convertToType(o, String.class)); + o = new Object[]{a("a", 1, false)}; + assertEquals("[['a',1,false]]", bc.convertToType(o, String.class)); + } + + //==================================================================================================== + // Test properties set through a constructor. + //==================================================================================================== + @Test void testReadOnlyProperties() throws Exception { + var bc = BeanContext.DEFAULT; + Object o; + + // Bean to String + o = new ReadOnlyPerson("x", 123); + assertEquals("{name:'x',age:123}", bc.convertToType(o, String.class)); + + // List of Maps to array of beans. + o = JsonList.of(JsonMap.ofJson("{name:'x',age:1}"), JsonMap.ofJson("{name:'y',age:2}")); + assertEquals(1, bc.convertToType(o, ReadOnlyPerson[].class)[0].getAge()); + } + + @Bean(p="name,age") + public static class ReadOnlyPerson { + private final int age; + + @Beanc(properties="name,age") + public ReadOnlyPerson(String name, int age) { + this.name = name; + this.age = age; + } + + private final String name; + public String getName() { return name; } + public int getAge() { return age; } + + @Override /* Object */ + public String toString() { + return format("toString():name={0},age={1}", name, age); + } + } + + @Test void testReadOnlyProperties_usingConfig() throws Exception { + var bc = BeanContext.DEFAULT.copy().applyAnnotations(ReadOnlyPerson2Config.class).build(); + Object o; + + // Bean to String + o = new ReadOnlyPerson2("x", 123); + assertEquals("{name:'x',age:123}", bc.convertToType(o, String.class)); + + // List of Maps to array of beans. + o = JsonList.of(JsonMap.ofJson("{name:'x',age:1}"), JsonMap.ofJson("{name:'y',age:2}")); + assertEquals(1, bc.convertToType(o, ReadOnlyPerson2[].class)[0].getAge()); + } + + public static class ReadOnlyPerson2 { + private final int age; + + public ReadOnlyPerson2(String name, int age) { + this.name = name; + this.age = age; + } + + private final String name; + public String getName() { return name; } + public int getAge() { return age; } + + @Override /* Object */ + public String toString() { + return format("toString():name={0},age={1}", name, age); + } + } + + @Bean(on="Dummy1",p="dummy") + @Bean(on="ReadOnlyPerson2",p="name,age") + @Bean(on="Dummy2",p="dummy") + @Beanc(on="Dummy1",properties="dummy") + @Beanc(on="ReadOnlyPerson2(String,int)",properties="name,age") + @Beanc(on="Dummy2",properties="dummy") + private static class ReadOnlyPerson2Config {} + + //==================================================================================================== + // testEnums + //==================================================================================================== + @Test void testEnums() throws Exception { + var bc = BeanContext.DEFAULT; + Object o; + + // Enum + o = "ENUM2"; + assertEquals(TestEnum.ENUM2, bc.convertToType(o, TestEnum.class)); + assertEquals("ENUM2", bc.convertToType(TestEnum.ENUM2, String.class)); + + // Array of enums + o = a("ENUM2"); + assertEquals(TestEnum.ENUM2, bc.convertToType(o, TestEnum[].class)[0]); + } + + public enum TestEnum { + ENUM1, ENUM2, ENUM3 + } + + //==================================================================================================== + // testProxyHandler + //==================================================================================================== + @Test void testProxyHandler() { + var session = BeanContext.DEFAULT_SESSION; + + var f1 = (A) Proxy.newProxyInstance(this.getClass().getClassLoader(), new Class[] { A.class }, new AHandler()); + + var bm1 = session.toBeanMap(f1); + assertNotNull(bm1, ss("Failed to obtain bean adapter for proxy: {0}", f1)); + + var bm2 = session.newBeanMap(A.class); + assertNotNull(bm2, ss("Failed to create dynamic proxy bean for interface: {0}", A.class.getName())); + + bm2.put("a", "Hello"); + bm2.put("b", Integer.valueOf(50)); + f1.setA("Hello"); + f1.setB(50); + + assertEquals(bm2.get("a"), "Hello", ss("Failed to set string property 'a' on dynamic proxy bean. {0}", bm2)); // NOSONAR + assertEquals(bm2.get("b"), Integer.valueOf(50), ss("Failed to set string property 'b' on dynamic proxy bean. {0}", bm2)); + assertEquals(bm1, bm2, ss("Failed equality test of dynamic proxies beans: {0} / {1}", bm1, bm2)); + assertEquals(bm2, bm1, ss("Failed reverse equality test of dynamic proxies beans: {0} / {1}", bm1, bm2)); + } + + public interface A { + String getA(); + + void setA(String a); + + int getB(); + + void setB(int b); + } + + public static class AHandler implements InvocationHandler { + private Map map; + + public AHandler() { + map = new HashMap(); + map.put("a", ""); + map.put("b", Integer.valueOf(0)); + } + + @Override /* InvocationHandler */ + public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { + var methodName = method.getName(); + if (methodName.equals("getA")) { + return map.get("a"); + } + if (methodName.equals("setA")) { + map.put("a", args[0]); + return null; + } + if (methodName.equals("getB")) { + return map.get("b"); + } + if (methodName.equals("setB")) { + map.put("b", args[0]); + return null; + } + if (methodName.equals("toString")) { + return map.toString(); + } + return null; + } + } + + //==================================================================================================== + // testFluentStyleSetters + //==================================================================================================== + @Test void testFluentStyleSetters() { + var t = new B2().init(); + var m = BeanContext.DEFAULT.toBeanMap(t); + m.put("f1", 2); + assertEquals(2, t.f1); + } + + public static class B { + int f1; + public int getF1() { return f1; } + public B setF1(int v) { f1 = v; return this; } + } + + public static class B2 extends B { + @Override /* B */ + public B2 setF1(int v) { f1 = v; return this; } + public B2 init() { f1 = 1; return this;} + } + + //==================================================================================================== + // testClassMetaCaching + //==================================================================================================== + @Test void testClassMetaCaching() { + var p1 = JsonParser.create(); + var p2 = JsonParser.create(); + assertSameCache(p1, p2); + + assertDifferentCache(p1.beansRequireDefaultConstructor(), p2); + assertSameCache(p1, p2.beansRequireDefaultConstructor()); + + assertDifferentCache(p1.beansRequireSerializable(), p2); + assertSameCache(p1, p2.beansRequireSerializable()); + + assertDifferentCache(p1.beansRequireSettersForGetters(), p2); + assertSameCache(p1, p2.beansRequireSettersForGetters()); + + assertDifferentCache(p1.disableBeansRequireSomeProperties(), p2); + assertSameCache(p1, p2.disableBeansRequireSomeProperties()); + + assertDifferentCache(p1.beanMapPutReturnsOldValue(), p2); + assertSameCache(p1, p2.beanMapPutReturnsOldValue()); + + assertDifferentCache(p1.beanConstructorVisibility(DEFAULT), p2); + assertSameCache(p1, p2.beanConstructorVisibility(DEFAULT)); + assertDifferentCache(p1.beanConstructorVisibility(NONE), p2); + assertSameCache(p1, p2.beanConstructorVisibility(NONE)); + assertDifferentCache(p1.beanConstructorVisibility(PRIVATE), p2); + assertSameCache(p1, p2.beanConstructorVisibility(PRIVATE)); + assertDifferentCache(p1.beanConstructorVisibility(PROTECTED), p2); + assertSameCache(p1, p2.beanConstructorVisibility(PROTECTED)); + + assertDifferentCache(p1.beanClassVisibility(DEFAULT), p2); + assertSameCache(p1, p2.beanClassVisibility(DEFAULT)); + assertDifferentCache(p1.beanClassVisibility(NONE), p2); + assertSameCache(p1, p2.beanClassVisibility(NONE)); + assertDifferentCache(p1.beanClassVisibility(PRIVATE), p2); + assertSameCache(p1, p2.beanClassVisibility(PRIVATE)); + assertDifferentCache(p1.beanClassVisibility(PROTECTED), p2); + assertSameCache(p1, p2.beanClassVisibility(PROTECTED)); + + assertDifferentCache(p1.beanFieldVisibility(DEFAULT), p2); + assertSameCache(p1, p2.beanFieldVisibility(DEFAULT)); + assertDifferentCache(p1.beanFieldVisibility(NONE), p2); + assertSameCache(p1, p2.beanFieldVisibility(NONE)); + assertDifferentCache(p1.beanFieldVisibility(PRIVATE), p2); + assertSameCache(p1, p2.beanFieldVisibility(PRIVATE)); + assertDifferentCache(p1.beanFieldVisibility(PROTECTED), p2); + assertSameCache(p1, p2.beanFieldVisibility(PROTECTED)); + + assertDifferentCache(p1.beanMethodVisibility(DEFAULT), p2); + assertSameCache(p1, p2.beanMethodVisibility(DEFAULT)); + assertDifferentCache(p1.beanMethodVisibility(NONE), p2); + assertSameCache(p1, p2.beanMethodVisibility(NONE)); + assertDifferentCache(p1.beanMethodVisibility(PRIVATE), p2); + assertSameCache(p1, p2.beanMethodVisibility(PRIVATE)); + assertDifferentCache(p1.beanMethodVisibility(PROTECTED), p2); + assertSameCache(p1, p2.beanMethodVisibility(PROTECTED)); + + assertDifferentCache(p1.useJavaBeanIntrospector(), p2); + assertSameCache(p1, p2.useJavaBeanIntrospector()); + + assertDifferentCache(p1.disableInterfaceProxies(), p2); + assertSameCache(p1, p2.disableInterfaceProxies()); + + assertDifferentCache(p1.ignoreUnknownBeanProperties(), p2); + assertSameCache(p1, p2.ignoreUnknownBeanProperties()); + + assertDifferentCache(p1.disableIgnoreUnknownNullBeanProperties(), p2); + assertSameCache(p1, p2.disableIgnoreUnknownNullBeanProperties()); + + assertDifferentCache(p1.disableIgnoreMissingSetters(), p2); + assertSameCache(p1, p2.disableIgnoreMissingSetters()); + + assertDifferentCache(p1.ignoreInvocationExceptionsOnGetters(), p2); + assertSameCache(p1, p2.ignoreInvocationExceptionsOnGetters()); + + assertDifferentCache(p1.ignoreInvocationExceptionsOnSetters(), p2); + assertSameCache(p1, p2.ignoreInvocationExceptionsOnSetters()); + + assertDifferentCache(p1.notBeanPackages("foo"), p2); + assertSameCache(p1, p2.notBeanPackages("foo")); + assertDifferentCache(p1.notBeanPackages("bar"), p2); + assertSameCache(p1, p2.notBeanPackages("bar")); + assertDifferentCache(p1.notBeanPackages("baz").notBeanPackages("bing"), p2); + assertSameCache(p2.notBeanPackages("bing").notBeanPackages("baz"), p2); + + p1.beanContext().notBeanPackages().remove("bar"); + assertDifferentCache(p1, p2); + p2.beanContext().notBeanPackages().remove("bar"); + assertSameCache(p1, p2); + + assertDifferentCache(p1.swaps(DummyPojoSwapA.class), p2); + assertSameCache(p1, p2.swaps(DummyPojoSwapA.class)); + assertDifferentCache(p1.swaps(DummyPojoSwapB.class,DummyPojoSwapC.class), p2.swaps(DummyPojoSwapC.class,DummyPojoSwapB.class)); // Order of filters is important! + } + + public static class DummyPojoSwapA extends MapSwap<A> {} + public static class DummyPojoSwapB extends MapSwap<B> {} + public static class DummyPojoSwapC extends MapSwap<C> {} + public static class C {} + + private void assertSameCache(Parser.Builder p1b, Parser.Builder p2b) { + var p1 = p1b.build(); + var p2 = p2b.build(); + assertTrue(p1.getBeanContext().hasSameCache(p2.getBeanContext())); + } + + private void assertDifferentCache(Parser.Builder p1b, Parser.Builder p2b) { + var p1 = p1b.build(); + var p2 = p2b.build(); + assertFalse(p1.getBeanContext().hasSameCache(p2.getBeanContext())); + } + + //==================================================================================================== + // testNotABeanReasons + //==================================================================================================== + @Test void testNotABeanNonStaticInnerClass() { + var bc = BeanContext.DEFAULT; + var cm = bc.getClassMeta(C1.class); + assertFalse(cm.canCreateNewInstance()); + } + + public class C1 { + public int f1; + } + + //==================================================================================================== + // testAddingToArrayProperty + // This tests the speed of the BeanMap.add() method against array properties. + // For performance reasons, array properties are stored as temporary ArrayLists until the + // BeanMap.getBean() method is called. + //==================================================================================================== + // Should be around 100ms at most. + @Test void testAddingToArrayProperty() { + assertTimeout(Duration.ofSeconds(1), () -> { + var bc = BeanContext.DEFAULT; + var bm = bc.newBeanMap(D.class); + for (var i = 0; i < 5000; i++) { + bm.add("f1", i); + bm.add("f2", i); + bm.add("f3", i); + bm.add("f4", i); + } + var d = bm.getBean(); + assertEquals(5000, d.f1.length); + assertEquals(5000, d.f2.length); + assertEquals(5003, d.f3.length); + assertEquals(5003, d.f4.length); + }); + } + + public class D { + public int[] f1; + private int[] f2; + public int[] f3 = {1,2,3}; + private int[] f4 = {1,2,3}; + public int[] getF2() {return f2;} + public void setF2(int[] v) {f2 = v;} + public int[] getF4() {return f4;} + public void setF4(int[] v) {f4 = v;} + } + + //==================================================================================================== + // testClassClassMeta + // Make sure we can get ClassMeta objects against the Class class. + //==================================================================================================== + @Test void testClassClassMeta() { + assertNotNull(BeanContext.DEFAULT.getClassMeta(Class.class)); + assertNotNull(BeanContext.DEFAULT.getClassMeta(Class[].class)); + } + + //==================================================================================================== + // testBlanks + //==================================================================================================== + @Test void testBlanks() throws Exception { + var bc = BeanContext.DEFAULT; + + // Blanks get interpreted as the default value for primitives and null for boxed objects. + assertEquals(0, (int)bc.convertToType("", int.class)); + assertNull(bc.convertToType("", Integer.class)); + + // Booleans are handled different since 'Boolean.valueOf("")' is valid and resolves to false + // while 'Integer.valueOf("")' produces an exception. + assertEquals(false, (boolean)bc.convertToType("", boolean.class)); + assertEquals(null, bc.convertToType("", Boolean.class)); + } } \ No newline at end of file diff --git a/juneau-utest/src/test/java/org/apache/juneau/BeanMapTest.java b/juneau-utest/src/test/java/org/apache/juneau/BeanMapTest.java index 92ebc6992..91b1952fa 100755 --- a/juneau-utest/src/test/java/org/apache/juneau/BeanMapTest.java +++ b/juneau-utest/src/test/java/org/apache/juneau/BeanMapTest.java @@ -22,7 +22,6 @@ import org.apache.juneau.html.*; import org.apache.juneau.json.*; import org.apache.juneau.objecttools.*; import org.apache.juneau.parser.*; -import org.apache.juneau.serializer.*; import org.apache.juneau.uon.*; import org.apache.juneau.urlencoding.*; import org.apache.juneau.xml.*; @@ -744,21 +743,11 @@ class BeanMapTest extends SimpleTestBase { } public static class I { - public List<String> p1; - - public List<Integer> getP2() { - return null; - } - + 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,Integer> getP5() { return null; } public Map<String,? extends Integer> p6; } @@ -779,28 +768,12 @@ class BeanMapTest extends SimpleTestBase { } public static class J { - - @Beanp(params={Float.class}) - public List<String> p1; - - @Beanp(params={Float.class}) - public List<Integer> getP2() { - return null; - } - - @Beanp(params={Float.class}) - public List<? extends Integer> p3; - - @Beanp(params={Object.class, Float.class}) - public Map<String,Integer> p4; - - @Beanp(params={Object.class, Float.class}) - public Map<String,Integer> getP5() { - return null; - } - - @Beanp(params={String.class, Float.class}) - public Map<String,? extends Integer> p6; + @Beanp(params={Float.class}) public List<String> p1; + @Beanp(params={Float.class}) public List<Integer> getP2() { return null; } + @Beanp(params={Float.class}) public List<? extends Integer> p3; + @Beanp(params={Object.class, Float.class}) public Map<String,Integer> p4; + @Beanp(params={Object.class, Float.class}) public Map<String,Integer> getP5() { return null; } + @Beanp(params={String.class, Float.class}) public Map<String,? extends Integer> p6; } //==================================================================================================== @@ -820,28 +793,12 @@ class BeanMapTest extends SimpleTestBase { } public static class K { - - @Beanp(params=Float.class) - public List<String> p1; - - @Beanp(params=Float.class) - public List<Integer> getP2() { - return null; - } - - @Beanp(params=Float.class) - public List<? extends Integer> p3; - - @Beanp(params={String.class,Float.class}) - public Map<String,Integer> p4; - - @Beanp(params={String.class,Float.class}) - public Map<String,Integer> getP5() { - return null; - } - - @Beanp(params={String.class,Float.class}) - public Map<String,? extends Integer> p6; + @Beanp(params=Float.class) public List<String> p1; + @Beanp(params=Float.class) public List<Integer> getP2() { return null; } + @Beanp(params=Float.class) public List<? extends Integer> p3; + @Beanp(params={String.class,Float.class}) public Map<String,Integer> p4; + @Beanp(params={String.class,Float.class}) public Map<String,Integer> getP5() { return null; } + @Beanp(params={String.class,Float.class}) public Map<String,? extends Integer> p6; } //==================================================================================================== @@ -1095,19 +1052,13 @@ class BeanMapTest extends SimpleTestBase { @Bean(propertyNamer=PropertyNamerDLC.class) public static class P2 { - private int fooBar, bazBING; - public int getFooBar() { - return fooBar; - } - public void setFooBar(int v) { - fooBar = v; - } - public int getBazBING() { - return bazBING; - } - public void setBazBING(int v) { - bazBING = v; - } + private int fooBar; + public int getFooBar() { return fooBar; } + public void setFooBar(int v) { fooBar = v; } + + private int bazBING; + public int getBazBING() { return bazBING; } + public void setBazBING(int v) { bazBING = v; } } //==================================================================================================== @@ -1733,35 +1684,18 @@ class BeanMapTest extends SimpleTestBase { } public static class U { - public String a, b; - - public String getA() { - return a; - } - - public void setA(String v) { - a = v; - } - - @BeanIgnore - public String getB() { - return b; - } - - public void setB(String v) { - this.b = v+"(setter)"; - } + public String a; + public String getA() { return a; } + public void setA(String v) { a = v; } - @BeanIgnore - public String c; + public String b; + @BeanIgnore public String getB() { return b; } + public void setB(String v) { this.b = v+"(setter)"; } - @BeanIgnore - public String getD() { - return null; - } + @BeanIgnore public String c; - @BeanIgnore - public void setD(String v) {} // NOSONAR + @BeanIgnore public String getD() { return null; } + @BeanIgnore public void setD(String v) {} // NOSONAR } @Test void testHiddenProperties_usingConfig() { @@ -1789,35 +1723,18 @@ class BeanMapTest extends SimpleTestBase { private static class UcConfig {} public static class Uc { - public String a, b; - - public String getA() { - return a; - } - - public void setA(String a) { - this.a = a; - } - - @BeanIgnore - public String getB() { - return b; - } + public String a; + public String getA() { return a; } + public void setA(String v) { a = v; } - public void setB(String b) { - this.b = b+"(setter)"; - } + public String b; + @BeanIgnore public String getB() { return b; } + public void setB(String b) { this.b = b+"(setter)"; } - @BeanIgnore - public String c; + @BeanIgnore public String c; - @BeanIgnore - public String getD() { - return null; - } - - @BeanIgnore - public void setD(String v) {} // NOSONAR + @BeanIgnore public String getD() { return null; } + @BeanIgnore public void setD(String v) {} // NOSONAR } //==================================================================================================== @@ -1914,7 +1831,6 @@ class BeanMapTest extends SimpleTestBase { public static class X1 { public Object f1; - private Object f2; static X1 create() { var x = new X1(); @@ -1923,18 +1839,13 @@ class BeanMapTest extends SimpleTestBase { return x; } - public Object getF2() { - return f2; - } - - public void setF2(Object v) { - f2 = v; - } + private Object f2; + public Object getF2() { return f2; } + public void setF2(Object v) { f2 = v; } } public static class X2 extends X1 { public Integer f1; - private Integer f2; static X2 create() { var x = new X2(); @@ -1943,14 +1854,9 @@ class BeanMapTest extends SimpleTestBase { return x; } - @Override /* X1 */ - public Integer getF2() { - return f2; - } - - public void setF2(Integer v) { - f2 = v; - } + private Integer f2; + @Override /* X1 */ public Integer getF2() { return f2; } + public void setF2(Integer v) { f2 = v; } } @Test void testSettingCollectionPropertyMultipleTimes() { @@ -1978,12 +1884,7 @@ class BeanMapTest extends SimpleTestBase { public static class AA { private List<String> a = new ArrayList<>(); - - public List<String> getA() { - return Collections.emptyList(); - } - public void setA(List<String> v) { - a = v; - } + public List<String> getA() { return Collections.emptyList(); } + public void setA(List<String> v) { a = v; } } } \ No newline at end of file diff --git a/juneau-utest/src/test/java/org/apache/juneau/DynaBean_ComboRoundTripTest.java b/juneau-utest/src/test/java/org/apache/juneau/DynaBean_ComboRoundTripTest.java index c3037c5e4..fe23e766e 100644 --- a/juneau-utest/src/test/java/org/apache/juneau/DynaBean_ComboRoundTripTest.java +++ b/juneau-utest/src/test/java/org/apache/juneau/DynaBean_ComboRoundTripTest.java @@ -207,22 +207,16 @@ class DynaBean_ComboRoundTripTest extends ComboRoundTripTest_Base { @Bean(sort=true) public static class BeanWithDynaMethods { - private int f1, f3; private Map<String,Object> f2 = new LinkedHashMap<>(); private boolean setterCalled; - public int getF1() { - return f1; - } - public void setF1(int v) { - f1 = v; - } - public int getF3() { - return f3; - } - public void setF3(int v) { - f3 = v; - } + private int f1; + public int getF1() { return f1; } + public void setF1(int v) { f1 = v; } + + private int f3; + public int getF3() { return f3; } + public void setF3(int v) { f3 = v; } @Beanp(name="*") public Map<String, Object> xxx() { @@ -246,22 +240,16 @@ class DynaBean_ComboRoundTripTest extends ComboRoundTripTest_Base { @Bean(sort=true) public static class BeanWithDynaMethodsAndExtraKeys { - private int f1, f3; private Map<String,Object> f2 = new LinkedHashMap<>(); private boolean setterCalled; - public int getF1() { - return f1; - } - public void setF1(int v) { - f1 = v; - } - public int getF3() { - return f3; - } - public void setF3(int v) { - f3 = v; - } + private int f1; + public int getF1() { return f1; } + public void setF1(int v) { f1 = v; } + + private int f3; + public int getF3() { return f3; } + public void setF3(int v) { f3 = v; } @Beanp(name="*") public Object get(String name) { @@ -290,21 +278,15 @@ class DynaBean_ComboRoundTripTest extends ComboRoundTripTest_Base { @Bean(sort=true) public static class BeanWithDynaGetterOnly { - private int f1, f3; private Map<String,Object> f2 = new LinkedHashMap<>(); - public int getF1() { - return f1; - } - public void setF1(int v) { - f1 = v; - } - public int getF3() { - return f3; - } - public void setF3(int v) { - f3 = v; - } + private int f1; + public int getF1() { return f1; } + public void setF1(int v) { f1 = v; } + + private int f3; + public int getF3() { return f3; } + public void setF3(int v) { f3 = v; } @Beanp(name="*") public Map<String, Object> xxx() { diff --git a/juneau-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripTransformBeans_Test.java b/juneau-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripTransformBeans_Test.java index 5175a97b8..e7297166b 100755 --- a/juneau-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripTransformBeans_Test.java +++ b/juneau-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripTransformBeans_Test.java @@ -651,13 +651,8 @@ class RoundTripTransformBeans_Test extends SimpleTestBase { public static class F2c extends F2ac { - public void setC(Calendar v) { - c = v; - } - - public Calendar getC() { - return c; - } + public void setC(Calendar v) { c = v; } + public Calendar getC() { return c; } public static F2c create() { var x = new F2c(); diff --git a/juneau-utest/src/test/java/org/apache/juneau/html/CommonParser_Test.java b/juneau-utest/src/test/java/org/apache/juneau/html/CommonParser_Test.java index 54260d1b2..b729b7568 100755 --- a/juneau-utest/src/test/java/org/apache/juneau/html/CommonParser_Test.java +++ b/juneau-utest/src/test/java/org/apache/juneau/html/CommonParser_Test.java @@ -120,13 +120,10 @@ class CommonParser_Test extends SimpleTestBase { public static class C { private Collection<Integer> ints = new LinkedList<>(); + public Collection<Integer> getInts() { return ints; } + private List<B> beans = new LinkedList<>(); - public Collection<Integer> getInts() { - return ints; - } - public List<B> getBeans() { - return beans; - } + public List<B> getBeans() { return beans; } } //==================================================================================================== diff --git a/juneau-utest/src/test/java/org/apache/juneau/html/Common_Test.java b/juneau-utest/src/test/java/org/apache/juneau/html/Common_Test.java index dcc393b3b..c1c918289 100755 --- a/juneau-utest/src/test/java/org/apache/juneau/html/Common_Test.java +++ b/juneau-utest/src/test/java/org/apache/juneau/html/Common_Test.java @@ -23,7 +23,6 @@ import org.apache.juneau.*; import org.apache.juneau.annotation.*; import org.apache.juneau.collections.*; import org.apache.juneau.common.internal.*; -import org.apache.juneau.serializer.*; import org.junit.jupiter.api.*; @SuppressWarnings({"serial"}) @@ -401,32 +400,16 @@ class Common_Test extends SimpleTestBase { public static class J { private String f1; - private int f2 = -1; - private boolean f3; - - public String getF1() { - return this.f1; - } - - public void setF1(String v) { - f1 = v; - } - - public int getF2() { - return this.f2; - } - - public void setF2(int v) { - f2 = v; - } + public String getF1() { return f1; } + public void setF1(String v) { f1 = v; } - public boolean isF3() { - return this.f3; - } + private int f2 = -1; + public int getF2() { return f2; } + public void setF2(int v) { f2 = v; } - public void setF3(boolean v) { - f3 = v; - } + private boolean f3; + public boolean isF3() { return f3; } + public void setF3(boolean v) { f3 = v; } @Override /* Object */ public String toString() { diff --git a/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_FormDataAnnotation_Test.java b/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_FormDataAnnotation_Test.java index 6b2cd588b..6316130ea 100644 --- a/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_FormDataAnnotation_Test.java +++ b/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_FormDataAnnotation_Test.java @@ -717,46 +717,16 @@ class Remote_FormDataAnnotation_Test extends SimpleTestBase { } public static class K1a { - @FormData - public String getA() { - return "a1"; - } - @FormData("b") - public String getX1() { - return "b1"; - } - @FormData("c") - public String getX2() { - return "c1"; - } - @FormData("e") @Schema(aev=true) - public String getX4() { - return ""; - } - @FormData("f") - public String getX5() { - return null; - } - @FormData("g") - public String getX6() { - return "true"; - } - @FormData("h") - public String getX7() { - return "123"; - } - @FormData("i1") @Schema(sie=true) - public String getX8() { - return "foo"; - } - @FormData("i2") @Schema(sie=true) - public String getX9() { - return ""; - } - @FormData("i3") @Schema(sie=true) - public String getX10() { - return null; - } + @FormData public String getA() { return "a1"; } + @FormData("b") public String getX1() { return "b1"; } + @FormData("c") public String getX2() { return "c1"; } + @FormData("e") @Schema(aev=true) public String getX4() { return ""; } + @FormData("f") public String getX5() { return null; } + @FormData("g") public String getX6() { return "true"; } + @FormData("h") public String getX7() { return "123"; } + @FormData("i1") @Schema(sie=true) public String getX8() { return "foo"; } + @FormData("i2") @Schema(sie=true) public String getX9() { return ""; } + @FormData("i3") @Schema(sie=true) public String getX10() { return null; } } @Test void k01_requestBean_simpleVals() { @@ -778,22 +748,10 @@ class Remote_FormDataAnnotation_Test extends SimpleTestBase { } public static class K2a { - @FormData - public Map<String,Object> getA() { - return mapBuilder(String.class,Object.class).add("a1","v1").add("a2",123).add("a3",null).add("a4","").build(); - } - @FormData("*") - public Map<String,Object> getB() { - return map("b1","true","b2","123","b3","null"); - } - @FormData("*") @Schema(aev=true) - public Map<String,Object> getC() { - return mapBuilder(String.class,Object.class).add("c1","v1").add("c2",123).add("c3",null).add("c4","").build(); - } - @FormData("*") - public Map<String,Object> getD() { - return null; - } + @FormData public Map<String,Object> getA() { return mapBuilder(String.class,Object.class).add("a1","v1").add("a2",123).add("a3",null).add("a4","").build(); } + @FormData("*") public Map<String,Object> getB() { return map("b1","true","b2","123","b3","null"); } + @FormData("*") @Schema(aev=true) public Map<String,Object> getC() { return mapBuilder(String.class,Object.class).add("c1","v1").add("c2",123).add("c3",null).add("c4","").build(); } + @FormData("*") public Map<String,Object> getD() { return null; } } @Test void k02_requestBean_maps() { @@ -815,26 +773,11 @@ class Remote_FormDataAnnotation_Test extends SimpleTestBase { } public static class K3a { - @FormData - public PartList getA() { - return parts("a1","v1","a2","123","a3",null,"a4",""); - } - @FormData("*") - public PartList getB() { - return parts("b1","true","b2","123","b3","null"); - } - @FormData("*") - public PartList getC() { - return parts("c1","v1","c2","123","c3",null,"c4",""); - } - @FormData("*") - public PartList getD() { - return null; - } - @FormData - public NameValuePair[] getE() { - return parts("e1","v1","e2","123","e3",null,"e4","").getAll(); - } + @FormData public PartList getA() { return parts("a1","v1","a2","123","a3",null,"a4",""); } + @FormData("*") public PartList getB() { return parts("b1","true","b2","123","b3","null"); } + @FormData("*") public PartList getC() { return parts("c1","v1","c2","123","c3",null,"c4",""); } + @FormData("*") public PartList getD() { return null; } + @FormData public NameValuePair[] getE() { return parts("e1","v1","e2","123","e3",null,"e4","").getAll(); } } @Test void k03_requestBean_nameValuePairs() { @@ -855,10 +798,7 @@ class Remote_FormDataAnnotation_Test extends SimpleTestBase { } public static class C04_Bean { - @FormData("*") - public StringBuilder getA() { - return new StringBuilder("foo=bar&baz=qux"); - } + @FormData("*") public StringBuilder getA() { return new StringBuilder("foo=bar&baz=qux"); } } @Test void k04_requestBean_charSequence() { @@ -876,10 +816,7 @@ class Remote_FormDataAnnotation_Test extends SimpleTestBase { } public static class K5a { - @FormData("*") - public Reader getA() { - return reader("foo=bar&baz=qux"); - } + @FormData("*") public Reader getA() { return reader("foo=bar&baz=qux"); } } @Test void k05_requestBean_reader() { @@ -898,42 +835,15 @@ class Remote_FormDataAnnotation_Test extends SimpleTestBase { } public static class K6a { - @FormData - public List<Object> getA() { - return alist("foo","","true","123","null",true,123,null); - } - @FormData("b") - public List<Object> getX1() { - return alist("foo","","true","123","null",true,123,null); - } - @FormData(name="c",serializer=FakeWriterSerializer.X.class) - public List<Object> getX2() { - return alist("foo","","true","123","null",true,123,null); - } - @FormData("d") @Schema(aev=true) - public List<Object> getX3() { - return alist(); - } - @FormData("e") - public List<Object> getX4() { - return null; - } - @FormData("f") - public Object[] getX5() { - return new Object[]{"foo","","true","123","null",true,123,null}; - } - @FormData(name="g",serializer=FakeWriterSerializer.X.class) - public Object[] getX6() { - return new Object[]{"foo","","true","123","null",true,123,null}; - } - @FormData("h") @Schema(aev=true) - public Object[] getX7() { - return new Object[]{}; - } - @FormData("i") - public Object[] getX8() { - return null; - } + @FormData public List<Object> getA() { return alist("foo","","true","123","null",true,123,null); } + @FormData("b") public List<Object> getX1() { return alist("foo","","true","123","null",true,123,null); } + @FormData(name="c",serializer=FakeWriterSerializer.X.class) public List<Object> getX2() { return alist("foo","","true","123","null",true,123,null); } + @FormData("d") @Schema(aev=true) public List<Object> getX3() { return alist(); } + @FormData("e") public List<Object> getX4() { return null; } + @FormData("f") public Object[] getX5() { return new Object[]{"foo","","true","123","null",true,123,null}; } + @FormData(name="g",serializer=FakeWriterSerializer.X.class) public Object[] getX6() { return new Object[]{"foo","","true","123","null",true,123,null}; } + @FormData("h") @Schema(aev=true) public Object[] getX7() { return new Object[]{}; } + @FormData("i") public Object[] getX8() { return null; } } @Test void k06_requestBean_collections() { diff --git a/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_HeaderAnnotation_Test.java b/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_HeaderAnnotation_Test.java index a1fabe415..3c2ffbe26 100644 --- a/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_HeaderAnnotation_Test.java +++ b/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_HeaderAnnotation_Test.java @@ -679,46 +679,16 @@ class Remote_HeaderAnnotation_Test extends SimpleTestBase { } public static class K1a { - @Header - public String getA() { - return "a1"; - } - @Header("b") - public String getX1() { - return "b1"; - } - @Header(name="c") - public String getX2() { - return "c1"; - } - @Header(name="e") @Schema(allowEmptyValue=true) - public String getX4() { - return ""; - } - @Header("f") - public String getX5() { - return null; - } - @Header("g") - public String getX6() { - return "true"; - } - @Header("h") - public String getX7() { - return "123"; - } - @Header("i1") @Schema(sie=true) - public String getX8() { - return "foo"; - } - @Header("i2") @Schema(sie=true) - public String getX9() { - return ""; - } - @Header("i3") @Schema(sie=true) - public String getX10() { - return null; - } + @Header public String getA() { return "a1"; } + @Header("b") public String getX1() { return "b1"; } + @Header(name="c") public String getX2() { return "c1"; } + @Header(name="e") @Schema(allowEmptyValue=true) public String getX4() { return ""; } + @Header("f") public String getX5() { return null; } + @Header("g") public String getX6() { return "true"; } + @Header("h") public String getX7() { return "123"; } + @Header("i1") @Schema(sie=true) public String getX8() { return "foo"; } + @Header("i2") @Schema(sie=true) public String getX9() { return ""; } + @Header("i3") @Schema(sie=true) public String getX10() { return null; } } @Test void k01_requestBean_simpleVals() { @@ -740,22 +710,10 @@ class Remote_HeaderAnnotation_Test extends SimpleTestBase { } public static class K2a { - @Header - public Map<String,Object> getA() { - return mapBuilder(String.class,Object.class).add("a1","v1").add("a2",123).add("a3",null).add("a4","").build(); - } - @Header("*") - public Map<String,Object> getB() { - return map("b1","true","b2","123","b3","null"); - } - @Header(name="*") @Schema(aev=true) - public Map<String,Object> getC() { - return mapBuilder(String.class,Object.class).add("c1","v1").add("c2",123).add("c3",null).add("c4","").build(); - } - @Header("*") - public Map<String,Object> getD() { - return null; - } + @Header public Map<String,Object> getA() { return mapBuilder(String.class,Object.class).add("a1","v1").add("a2",123).add("a3",null).add("a4","").build(); } + @Header("*") public Map<String,Object> getB() { return map("b1","true","b2","123","b3","null"); } + @Header(name="*") @Schema(aev=true) public Map<String,Object> getC() { return mapBuilder(String.class,Object.class).add("c1","v1").add("c2",123).add("c3",null).add("c4","").build(); } + @Header("*") public Map<String,Object> getD() { return null; } } @Test void k02_requestBean_maps() { @@ -777,30 +735,12 @@ class Remote_HeaderAnnotation_Test extends SimpleTestBase { } public static class K3a { - @Header() @Schema(aev=true) - public HeaderList getA() { - return headerList(stringHeader("a1","v1"),integerHeader("a2",123),basicHeader("a3",null),stringHeader("a4","")); - } - @Header(value="*") @Schema(aev=true) - public HeaderList getB() { - return headers("b1","true","b2","123","b3","null"); - } - @Header("*") @Schema(aev=true) - public HeaderList getC() { - return headerList(stringHeader("c1","v1"),integerHeader("c2",123),basicHeader("c3",null),stringHeader("c4","")); - } - @Header(value="*") @Schema(aev=true) - public HeaderList getD() { - return null; - } - @Header() @Schema(aev=true) - public org.apache.http.Header[] getE() { - return headerList(stringHeader("e1","v1"),integerHeader("e2",123),basicHeader("e3",null),stringHeader("e4","")).getAll(); - } - @Header() @Schema(aev=true) - public BasicHeader[] getF() { - return headerList(stringHeader("f1","v1"),integerHeader("f2",123),basicHeader("f3",null),stringHeader("f4","")).stream().toArray(BasicHeader[]::new); - } + @Header() @Schema(aev=true) public HeaderList getA() { return headerList(stringHeader("a1","v1"),integerHeader("a2",123),basicHeader("a3",null),stringHeader("a4","")); } + @Header(value="*") @Schema(aev=true) public HeaderList getB() { return headers("b1","true","b2","123","b3","null"); } + @Header("*") @Schema(aev=true) public HeaderList getC() { return headerList(stringHeader("c1","v1"),integerHeader("c2",123),basicHeader("c3",null),stringHeader("c4","")); } + @Header(value="*") @Schema(aev=true) public HeaderList getD() { return null; } + @Header() @Schema(aev=true) public org.apache.http.Header[] getE() { return headerList(stringHeader("e1","v1"),integerHeader("e2",123),basicHeader("e3",null),stringHeader("e4","")).getAll(); } + @Header() @Schema(aev=true) public BasicHeader[] getF() { return headerList(stringHeader("f1","v1"),integerHeader("f2",123),basicHeader("f3",null),stringHeader("f4","")).stream().toArray(BasicHeader[]::new); } } @Test void k03_requestBean_headers() { @@ -822,42 +762,15 @@ class Remote_HeaderAnnotation_Test extends SimpleTestBase { } public static class K4a { - @Header - public List<Object> getA() { - return alist("foo","","true","123","null",true,123,null); - } - @Header("b") - public List<Object> getX1() { - return alist("foo","","true","123","null",true,123,null); - } - @Header(name="c",serializer=FakeWriterSerializer.X.class) - public List<Object> getX2() { - return alist("foo","","true","123","null",true,123,null); - } - @Header(name="d") @Schema(aev=true) - public List<Object> getX3() { - return alist(); - } - @Header("e") - public List<Object> getX4() { - return null; - } - @Header("f") - public Object[] getX5() { - return new Object[]{"foo","","true","123","null",true,123,null}; - } - @Header(name="g",serializer=FakeWriterSerializer.X.class) - public Object[] getX6() { - return new Object[]{"foo","","true","123","null",true,123,null}; - } - @Header(name="h") @Schema(aev=true) - public Object[] getX7() { - return new Object[]{}; - } - @Header("i") - public Object[] getX8() { - return null; - } + @Header public List<Object> getA() { return alist("foo","","true","123","null",true,123,null); } + @Header("b") public List<Object> getX1() { return alist("foo","","true","123","null",true,123,null); } + @Header(name="c",serializer=FakeWriterSerializer.X.class) public List<Object> getX2() { return alist("foo","","true","123","null",true,123,null); } + @Header(name="d") @Schema(aev=true) public List<Object> getX3() { return alist(); } + @Header("e") public List<Object> getX4() { return null; } + @Header("f") public Object[] getX5() { return new Object[]{"foo","","true","123","null",true,123,null}; } + @Header(name="g",serializer=FakeWriterSerializer.X.class) public Object[] getX6() { return new Object[]{"foo","","true","123","null",true,123,null}; } + @Header(name="h") @Schema(aev=true) public Object[] getX7() { return new Object[]{}; } + @Header("i") public Object[] getX8() { return null; } } @Test void k04_requestBean_collections() { diff --git a/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_PathAnnotation_Test.java b/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_PathAnnotation_Test.java index d8f053224..95c839812 100644 --- a/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_PathAnnotation_Test.java +++ b/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_PathAnnotation_Test.java @@ -592,30 +592,12 @@ class Remote_PathAnnotation_Test extends SimpleTestBase { } public static class K1a { - @Path - public String getA() { - return "a1"; - } - @Path("b") - public String getX1() { - return "b1"; - } - @Path("c") - public String getX2() { - return "c1"; - } - @Path("e") @Schema(aev=true) - public String getX4() { - return ""; - } - @Path("g") - public String getX6() { - return "true"; - } - @Path("h") - public String getX7() { - return "123"; - } + @Path public String getA() { return "a1"; } + @Path("b") public String getX1() { return "b1"; } + @Path("c") public String getX2() { return "c1"; } + @Path("e") @Schema(aev=true) public String getX4() { return ""; } + @Path("g") public String getX6() { return "true"; } + @Path("h") public String getX7() { return "123"; } } @Test void k01_requestBean_simpleVals() { @@ -637,22 +619,11 @@ class Remote_PathAnnotation_Test extends SimpleTestBase { } public static class K2a { - @Path("*") @Schema(aev=true) - public Map<String,Object> getA() { - return mapBuilder(String.class,Object.class).add("a1","v1").add("a2",123).add("a3",null).add("a4","").build(); - } - @Path("*") - public Map<String,Object> getB() { - return map("b1","true","b2","123","b3","null"); - } - @Path("*") @Schema(aev=true) - public Map<String,Object> getC() { - return mapBuilder(String.class,Object.class).add("c1","v1").add("c2",123).add("c3",null).add("c4","").build(); - } + @Path("*") @Schema(aev=true) public Map<String,Object> getA() { return mapBuilder(String.class,Object.class).add("a1","v1").add("a2",123).add("a3",null).add("a4","").build(); } + @Path("*") public Map<String,Object> getB() { return map("b1","true","b2","123","b3","null"); } + @Path("*") @Schema(aev=true) public Map<String,Object> getC() { return mapBuilder(String.class,Object.class).add("c1","v1").add("c2",123).add("c3",null).add("c4","").build(); } @Path("*") - public Map<String,Object> getD() { - return null; - } + public Map<String,Object> getD() { return null; } } @Test void k02_reauestBean_maps() { @@ -674,26 +645,12 @@ class Remote_PathAnnotation_Test extends SimpleTestBase { } public static class K3a { - @Path("*") @Schema(aev=true) - public PartList getA() { - return parts("a1","v1","a2","123","a3",null,"a4",""); - } + @Path("*") @Schema(aev=true) public PartList getA() { return parts("a1","v1","a2","123","a3",null,"a4",""); } + @Path("/*") public PartList getB() { return parts("b1","true","b2","123","b3","null"); } + @Path("*") @Schema(aev=true) public PartList getC() { return parts("c1","v1","c2","123","c3",null,"c4",""); } @Path("/*") - public PartList getB() { - return parts("b1","true","b2","123","b3","null"); - } - @Path("*") @Schema(aev=true) - public PartList getC() { - return parts("c1","v1","c2","123","c3",null,"c4",""); - } - @Path("/*") - public PartList getD() { - return null; - } - @Path @Schema(aev=true) - public NameValuePair[] getE() { - return parts("e1","v1","e2","123","e3",null,"e4","").getAll(); - } + public PartList getD() { return null; } + @Path @Schema(aev=true) public NameValuePair[] getE() { return parts("e1","v1","e2","123","e3",null,"e4","").getAll(); } } @Test void k03_requestBean_nameValuePairs() { @@ -715,30 +672,12 @@ class Remote_PathAnnotation_Test extends SimpleTestBase { } public static class K4a { - @Path - public List<Object> getA() { - return alist("foo","","true","123","null",true,123,null); - } - @Path("b") - public List<Object> getX1() { - return alist("foo","","true","123","null",true,123,null); - } - @Path(name="c",serializer=FakeWriterSerializer.X.class) - public List<Object> getX2() { - return alist("foo","","true","123","null",true,123,null); - } - @Path("d") @Schema(aev=true) - public List<Object> getX3() { - return alist(); - } - @Path("f") - public Object[] getX5() { - return new Object[]{"foo","","true","123","null",true,123,null}; - } - @Path(name="g",serializer=FakeWriterSerializer.X.class) - public Object[] getX6() { - return new Object[]{"foo","","true","123","null",true,123,null}; - } + @Path public List<Object> getA() { return alist("foo","","true","123","null",true,123,null); } + @Path("b") public List<Object> getX1() { return alist("foo","","true","123","null",true,123,null); } + @Path(name="c",serializer=FakeWriterSerializer.X.class) public List<Object> getX2() { return alist("foo","","true","123","null",true,123,null); } + @Path("d") @Schema(aev=true) public List<Object> getX3() { return alist(); } + @Path("f") public Object[] getX5() { return new Object[]{"foo","","true","123","null",true,123,null}; } + @Path(name="g",serializer=FakeWriterSerializer.X.class) public Object[] getX6() { return new Object[]{"foo","","true","123","null",true,123,null}; } @Path("h") @Schema(aev=true) public Object[] getX7() { return new Object[]{}; diff --git a/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_QueryAnnotation_Test.java b/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_QueryAnnotation_Test.java index 20e77560a..c634cfed7 100644 --- a/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_QueryAnnotation_Test.java +++ b/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_QueryAnnotation_Test.java @@ -742,22 +742,11 @@ class Remote_QueryAnnotation_Test extends SimpleTestBase { } public static class K2a { - @Query - public Map<String,Object> getA() { - return mapBuilder(String.class,Object.class).add("a1","v1").add("a2",123).add("a3",null).add("a4","").build(); - } - @Query("*") - public Map<String,Object> getB() { - return map("b1","true","b2","123","b3","null"); - } - @Query("*") @Schema(allowEmptyValue=true) - public Map<String,Object> getC() { - return mapBuilder(String.class,Object.class).add("c1","v1").add("c2",123).add("c3",null).add("c4","").build(); - } + @Query public Map<String,Object> getA() { return mapBuilder(String.class,Object.class).add("a1","v1").add("a2",123).add("a3",null).add("a4","").build(); } + @Query("*") public Map<String,Object> getB() { return map("b1","true","b2","123","b3","null"); } + @Query("*") @Schema(allowEmptyValue=true) public Map<String,Object> getC() { return mapBuilder(String.class,Object.class).add("c1","v1").add("c2",123).add("c3",null).add("c4","").build(); } @Query("*") - public Map<String,Object> getD() { - return null; - } + public Map<String,Object> getD() { return null; } } @Test void k02_requestBean_maps() { @@ -779,26 +768,12 @@ class Remote_QueryAnnotation_Test extends SimpleTestBase { } public static class K3a { - @Query() @Schema(aev=true) - public PartList getA() { - return parts("a1","v1","a2","123","a3",null,"a4",""); - } + @Query() @Schema(aev=true) public PartList getA() { return parts("a1","v1","a2","123","a3",null,"a4",""); } + @Query("*") public PartList getB() { return parts("b1","true","b2","123","b3","null"); } + @Query("*") @Schema(aev=true) public PartList getC() { return parts("c1","v1","c2","123","c3",null,"c4",""); } @Query("*") - public PartList getB() { - return parts("b1","true","b2","123","b3","null"); - } - @Query("*") @Schema(aev=true) - public PartList getC() { - return parts("c1","v1","c2","123","c3",null,"c4",""); - } - @Query("*") - public PartList getD() { - return null; - } - @Query() @Schema(aev=true) - public NameValuePair[] getE() { - return parts("e1","v1","e2","123","e3",null,"e4","").getAll(); - } + public PartList getD() { return null; } + @Query() @Schema(aev=true) public NameValuePair[] getE() { return parts("e1","v1","e2","123","e3",null,"e4","").getAll(); } } @Test void k03_requestBean_nameValuePairs() { @@ -818,10 +793,7 @@ class Remote_QueryAnnotation_Test extends SimpleTestBase { } public static class K4a { - @Query("*") - public StringBuilder getA() { - return new StringBuilder("foo=bar&baz=qux"); - } + @Query("*") public StringBuilder getA() { return new StringBuilder("foo=bar&baz=qux"); } } @Test void k04_requestBean_charSequence() { @@ -839,10 +811,7 @@ class Remote_QueryAnnotation_Test extends SimpleTestBase { } public static class K5a { - @Query("*") - public Reader getA() { - return reader("foo=bar&baz=qux"); - } + @Query("*") public Reader getA() { return reader("foo=bar&baz=qux"); } } @Test void k05_requestBean_reader() { @@ -861,42 +830,15 @@ class Remote_QueryAnnotation_Test extends SimpleTestBase { } public static class K6a { - @Query - public List<Object> getA() { - return alist("foo","","true","123","null",true,123,null); - } - @Query("b") - public List<Object> getX1() { - return alist("foo","","true","123","null",true,123,null); - } - @Query(name="c",serializer=FakeWriterSerializer.X.class) - public List<Object> getX2() { - return alist("foo","","true","123","null",true,123,null); - } - @Query("d") @Schema(allowEmptyValue=true) - public List<Object> getX3() { - return alist(); - } - @Query("e") - public List<Object> getX4() { - return null; - } - @Query("f") - public Object[] getX5() { - return new Object[]{"foo","","true","123","null",true,123,null}; - } - @Query(name="g",serializer=FakeWriterSerializer.X.class) - public Object[] getX6() { - return new Object[]{"foo","","true","123","null",true,123,null}; - } - @Query("h") @Schema(allowEmptyValue=true) - public Object[] getX7() { - return new Object[]{}; - } - @Query("i") - public Object[] getX8() { - return null; - } + @Query public List<Object> getA() { return alist("foo","","true","123","null",true,123,null); } + @Query("b") public List<Object> getX1() { return alist("foo","","true","123","null",true,123,null); } + @Query(name="c",serializer=FakeWriterSerializer.X.class) public List<Object> getX2() { return alist("foo","","true","123","null",true,123,null); } + @Query("d") @Schema(allowEmptyValue=true) public List<Object> getX3() { return alist(); } + @Query("e") public List<Object> getX4() { return null; } + @Query("f") public Object[] getX5() { return new Object[]{"foo","","true","123","null",true,123,null}; } + @Query(name="g",serializer=FakeWriterSerializer.X.class) public Object[] getX6() { return new Object[]{"foo","","true","123","null",true,123,null}; } + @Query("h") @Schema(allowEmptyValue=true) public Object[] getX7() { return new Object[]{}; } + @Query("i") public Object[] getX8() { return null; } } @Test void k06_requestBean_collections() { diff --git a/juneau-utest/src/test/java/org/apache/juneau/json/CommonParserTest.java b/juneau-utest/src/test/java/org/apache/juneau/json/CommonParserTest.java index 173bfa675..accc322cf 100755 --- a/juneau-utest/src/test/java/org/apache/juneau/json/CommonParserTest.java +++ b/juneau-utest/src/test/java/org/apache/juneau/json/CommonParserTest.java @@ -136,13 +136,10 @@ class CommonParserTest extends SimpleTestBase { public static class C { private Collection<Integer> ints = new LinkedList<>(); + public Collection<Integer> getInts() { return ints; } + private List<B> beans = new LinkedList<>(); - public Collection<Integer> getInts() { - return ints; - } - public List<B> getBeans() { - return beans; - } + public List<B> getBeans() { return beans; } } //==================================================================================================== diff --git a/juneau-utest/src/test/java/org/apache/juneau/json/CommonTest.java b/juneau-utest/src/test/java/org/apache/juneau/json/CommonTest.java index 275283aa6..b809acaae 100755 --- a/juneau-utest/src/test/java/org/apache/juneau/json/CommonTest.java +++ b/juneau-utest/src/test/java/org/apache/juneau/json/CommonTest.java @@ -279,32 +279,16 @@ class CommonTest extends SimpleTestBase{ public static class J { private String f1; - private int f2 = -1; - private boolean f3; - - public String getF1() { - return this.f1; - } - - public void setF1(String v) { - f1 = v; - } - - public int getF2() { - return this.f2; - } - - public void setF2(int v) { - f2 = v; - } + public String getF1() { return f1; } + public void setF1(String v) { f1 = v; } - public boolean isF3() { - return this.f3; - } + private int f2 = -1; + public int getF2() { return f2; } + public void setF2(int v) { f2 = v; } - public void setF3(boolean v) { - f3 = v; - } + private boolean f3; + public boolean isF3() { return f3; } + public void setF3(boolean v) { f3 = v; } @Override /* Object */ public String toString() { diff --git a/juneau-utest/src/test/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorTest.java b/juneau-utest/src/test/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorTest.java index bcef0baa4..5f7339d7a 100755 --- a/juneau-utest/src/test/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorTest.java +++ b/juneau-utest/src/test/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorTest.java @@ -1214,9 +1214,7 @@ class JsonSchemaGeneratorTest extends SimpleTestBase { public static class A3 { @Schema(type="foo",format="bar",description="baz") - public int getF1() { - return 123; - } + public int getF1() { return 123; } } @Test void jsonSchema_onbeangetter_usingConfig() throws Exception { @@ -1228,9 +1226,7 @@ class JsonSchemaGeneratorTest extends SimpleTestBase { private static class A3aConfig {} public static class A3a { - public int getF1() { - return 123; - } + public int getF1() { return 123; } } @Test void jsonSchema_onbeansetter() throws Exception { @@ -1239,9 +1235,7 @@ class JsonSchemaGeneratorTest extends SimpleTestBase { } public static class A4 { - public int getF1() { - return 123; - } + public int getF1() { return 123; } @Schema(type="foo",format="bar",description="baz") public void setF1(int v) { /* no-op */ } @@ -1256,9 +1250,7 @@ class JsonSchemaGeneratorTest extends SimpleTestBase { private static class A4aConfig {} public static class A4a { - public int getF1() { - return 123; - } + public int getF1() { return 123; } public void setF1(int v) { /* no-op */ } } diff --git a/juneau-utest/src/test/java/org/apache/juneau/objecttools/ObjectMerger_Test.java b/juneau-utest/src/test/java/org/apache/juneau/objecttools/ObjectMerger_Test.java index 310c950a1..833b7df4f 100644 --- a/juneau-utest/src/test/java/org/apache/juneau/objecttools/ObjectMerger_Test.java +++ b/juneau-utest/src/test/java/org/apache/juneau/objecttools/ObjectMerger_Test.java @@ -66,20 +66,12 @@ class ObjectMerger_Test extends SimpleTestBase { } public static class A implements IA { - private String a; - public A(String a) { this.a = a; } - @Override - public String getA() { - return a; - } - - @Override - public void setA(String v) { - a = v; - } + private String a; + @Override public String getA() { return a; } + @Override public void setA(String v) { a = v; } } } \ No newline at end of file diff --git a/juneau-utest/src/test/java/org/apache/juneau/rest/Swagger_Test.java b/juneau-utest/src/test/java/org/apache/juneau/rest/Swagger_Test.java index e19c5fba1..af416043c 100644 --- a/juneau-utest/src/test/java/org/apache/juneau/rest/Swagger_Test.java +++ b/juneau-utest/src/test/java/org/apache/juneau/rest/Swagger_Test.java @@ -1950,19 +1950,10 @@ class Swagger_Test extends SimpleTestBase { @Bean(sort=true) public static class T2 { private int f1; + public int getF1() { return f1; } + public T2 setF1(int v) { f1 = v; return this; } - public T2 setF1(int v) { - this.f1 = v; - return this; - } - - public int getF1() { - return f1; - } - - public int getF2() { - return 2; - } + public int getF2() { return 2; } @Example public static T2 example() { diff --git a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_BasicCalls_Test.java b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_BasicCalls_Test.java index 83759d279..769d769df 100644 --- a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_BasicCalls_Test.java +++ b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_BasicCalls_Test.java @@ -56,42 +56,15 @@ class RestClient_BasicCalls_Test extends SimpleTestBase { @Rest public static class A extends BasicRestObject { - @RestOp(path="/bean") - public ABean getBean() { - return bean; - } - @RestOp(path="/bean") - public ABean postBean(@Content ABean b) { - return b; - } - @RestOp(path="/bean") - public ABean putBean(@Content ABean b) { - return b; - } - @RestOp(path="/bean") - public ABean patchBean(@Content ABean b) { - return b; - } - @RestOp(path="/bean") - public ABean deleteBean() { - return bean; - } - @RestOp(path="/bean") - public ABean optionsBean() { - return bean; - } - @RestOp(path="/bean") - public ABean headBean() { - return bean; - } - @RestOp(path="/checkHeader") - public String[] postHeader(org.apache.juneau.rest.RestRequest req) { - return req.getHeaders().getAll(req.getHeaderParam("Check").orElse(null)).stream().map(RequestHeader::getValue).toArray(String[]::new); - } - @RestOp(path="/",method="*") - public Reader echoMethod(@Method String method) { - return reader(method); - } + @RestOp(path="/bean") public ABean getBean() { return bean; } + @RestOp(path="/bean") public ABean postBean(@Content ABean b) { return b; } + @RestOp(path="/bean") public ABean putBean(@Content ABean b) { return b; } + @RestOp(path="/bean") public ABean patchBean(@Content ABean b) { return b; } + @RestOp(path="/bean") public ABean deleteBean() { return bean; } + @RestOp(path="/bean") public ABean optionsBean() { return bean; } + @RestOp(path="/bean") public ABean headBean() { return bean; } + @RestOp(path="/checkHeader") public String[] postHeader(org.apache.juneau.rest.RestRequest req) { return req.getHeaders().getAll(req.getHeaderParam("Check").orElse(null)).stream().map(RequestHeader::getValue).toArray(String[]::new); } + @RestOp(path="/",method="*") public Reader echoMethod(@Method String method) { return reader(method); } } @Test void a01_basic() throws Exception { diff --git a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_BeanContext_Test.java b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_BeanContext_Test.java index e7974a032..921b79933 100644 --- a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_BeanContext_Test.java +++ b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_BeanContext_Test.java @@ -142,15 +142,11 @@ class RestClient_Config_BeanContext_Test extends SimpleTestBase { public static class A4b implements A4a { public int f1, f2; + private int f3; - @Override - public int getF3() { - return f3; - } - @Override - public void setF3(int v) { - f3 = v; - } + @Override public int getF3() { return f3; } + @Override public void setF3(int v) { f3 = v; } + static A4b get() { var x = new A4b(); x.f1 = 1; @@ -228,25 +224,21 @@ class RestClient_Config_BeanContext_Test extends SimpleTestBase { } public static class A5 { - private int f1, f2; - public int getF1() { - return f1; - } - public void setF1(int v) { - f1 = v; - } - protected int getF2() { - return f2; - } - protected void setF2(int f2) { - this.f2 = f2; - } + private int f1; + public int getF1() { return f1; } + public void setF1(int v) { f1 = v; } + + private int f2; + protected int getF2() { return f2; } + protected void setF2(int v) { f2 = v; } + static A5 get() { var x = new A5(); x.f1 = 1; x.f2 = 2; return x; } + @Override public String toString() { return f1 + "/" + f2; @@ -321,22 +313,20 @@ class RestClient_Config_BeanContext_Test extends SimpleTestBase { } public static class A9 { - private int f1, f2; - public int getF1() { - return f1; - } - public void setF1(int v) { - f1 = v; - } - public int getF2() { - return f2; - } + private int f1; + public int getF1() { return f1; } + public void setF1(int v) { f1 = v; } + + private int f2; + public int getF2() { return f2; } + static A9 get() { var x = new A9(); x.f1 = 1; x.f2 = 2; return x; } + @Override public String toString() { return f1 + "/" + f2; @@ -565,9 +555,8 @@ class RestClient_Config_BeanContext_Test extends SimpleTestBase { public static class A16 { private String foo; - public String getFoo() { - return foo; - } + public String getFoo() { return foo; } + static A16 get() { var x = new A16(); x.foo = "foo"; @@ -621,9 +610,8 @@ class RestClient_Config_BeanContext_Test extends SimpleTestBase { public static class A20 { private String foo; - public String getFoo() { - return foo; - } + public String getFoo() { return foo; } + public A20 foo(String foo) { this.foo = foo; return this; @@ -638,17 +626,13 @@ class RestClient_Config_BeanContext_Test extends SimpleTestBase { } public static class A21 { - @SuppressWarnings("unused") - private String foo, bar; - public String getFoo() { - return foo; - } - public void setFoo(String v) { - foo = v; - } - public String getBar() { - throw new RuntimeException("xxx"); - } + private String foo; + public String getFoo() { return foo; } + public void setFoo(String v) { foo = v; } + + @SuppressWarnings("unused") private String bar; + public String getBar() { throw new RuntimeException("xxx"); } + static A21 get() { var x = new A21(); x.foo = "1"; @@ -664,19 +648,14 @@ class RestClient_Config_BeanContext_Test extends SimpleTestBase { } public static class A22 { - private String foo, bar; - public String getFoo() { - return foo; - } - public void setFoo(String v) { - foo = v; - } - public String getBar() { - return bar; - } - public void setBar(String v) { - throw new RuntimeException("xxx"); - } + private String foo; + public String getFoo() { return foo; } + public void setFoo(String v) { foo = v; } + + private String bar; + public String getBar() { return bar; } + public void setBar(String v) { throw new RuntimeException("xxx"); } + static A22 get() { var x = new A22(); x.foo = "1"; @@ -708,14 +687,8 @@ class RestClient_Config_BeanContext_Test extends SimpleTestBase { public static class A24b implements A24a { private int foo; - @Override - public int getFoo() { - return foo; - } - @Override - public void setFoo(int v) { - foo = v; - } + @Override public int getFoo() { return foo; } + @Override public void setFoo(int v) { foo = v; } } @Test void a24_implClass() throws Exception { @@ -734,11 +707,11 @@ class RestClient_Config_BeanContext_Test extends SimpleTestBase { } public static class A25b implements A25a { - private int foo, bar; - @Override - public int getFoo() { return foo; } - @Override - public void setFoo(int v) { foo = v; } + private int foo; + @Override public int getFoo() { return foo; } + @Override public void setFoo(int v) { foo = v; } + + private int bar; public int getBar() { return bar; } // Not executed public void setBar(int v) { bar = v; } // Not executed @@ -808,6 +781,7 @@ class RestClient_Config_BeanContext_Test extends SimpleTestBase { private String foo; public String getFoo() { return foo; } public void setFoo(String v) { foo = v; } + static A30a get() { var x = new A30a(); x.foo = "foo"; @@ -840,6 +814,7 @@ class RestClient_Config_BeanContext_Test extends SimpleTestBase { private String fooBar; public String getFooBar() { return fooBar; } public void setFooBar(String v) { fooBar = v; } + static A31 get() { var x = new A31(); x.fooBar = "fooBar"; @@ -902,10 +877,8 @@ class RestClient_Config_BeanContext_Test extends SimpleTestBase { } public static class A34b extends ObjectSwap<A34a,Integer> { - @Override - public Integer swap(BeanSession session,A34a o) { return o.foo; } - @Override - public A34a unswap(BeanSession session,Integer f,ClassMeta<?> hint) {return A34a.get(); } + @Override public Integer swap(BeanSession session,A34a o) { return o.foo; } + @Override public A34a unswap(BeanSession session,Integer f,ClassMeta<?> hint) {return A34a.get(); } } @Test void a34_swaps() throws Exception { @@ -976,13 +949,11 @@ class RestClient_Config_BeanContext_Test extends SimpleTestBase { public static class A39 { private int foo; + public int getFoo() { return foo; } + public void setFoo(int v) { foo = v; } + public int bar; - public int getFoo() { - return foo; - } - public void setFoo(int v) { - foo = v; - } + static A39 get() { var x = new A39(); x.foo = 1; diff --git a/juneau-utest/src/test/java/org/apache/juneau/uon/CommonParser_UonTest.java b/juneau-utest/src/test/java/org/apache/juneau/uon/CommonParser_UonTest.java index a814ae451..9df37eee8 100755 --- a/juneau-utest/src/test/java/org/apache/juneau/uon/CommonParser_UonTest.java +++ b/juneau-utest/src/test/java/org/apache/juneau/uon/CommonParser_UonTest.java @@ -128,13 +128,10 @@ class CommonParser_UonTest extends SimpleTestBase { public static class C { private Collection<Integer> ints = new LinkedList<>(); + public Collection<Integer> getInts() { return ints; } + private List<B> beans = new LinkedList<>(); - public Collection<Integer> getInts() { - return ints; - } - public List<B> getBeans() { - return beans; - } + public List<B> getBeans() { return beans; } } //==================================================================================================== diff --git a/juneau-utest/src/test/java/org/apache/juneau/urlencoding/CommonParser_UrlEncodingTest.java b/juneau-utest/src/test/java/org/apache/juneau/urlencoding/CommonParser_UrlEncodingTest.java index b193385d0..1374fbdff 100755 --- a/juneau-utest/src/test/java/org/apache/juneau/urlencoding/CommonParser_UrlEncodingTest.java +++ b/juneau-utest/src/test/java/org/apache/juneau/urlencoding/CommonParser_UrlEncodingTest.java @@ -20,7 +20,6 @@ import org.apache.juneau.annotation.*; import org.apache.juneau.collections.*; import org.apache.juneau.parser.*; import org.apache.juneau.serializer.*; -import org.apache.juneau.uon.*; import org.junit.jupiter.api.*; @SuppressWarnings({"rawtypes","serial"}) @@ -130,13 +129,10 @@ class CommonParser_UrlEncodingTest extends SimpleTestBase { public static class C { private Collection<Integer> ints = new LinkedList<>(); + public Collection<Integer> getInts() { return ints; } + private List<B> beans = new LinkedList<>(); - public Collection<Integer> getInts() { - return ints; - } - public List<B> getBeans() { - return beans; - } + public List<B> getBeans() { return beans; } } //==================================================================================================== diff --git a/juneau-utest/src/test/java/org/apache/juneau/xml/CommonParserTest.java b/juneau-utest/src/test/java/org/apache/juneau/xml/CommonParserTest.java index fdb96cbc5..b742a068c 100755 --- a/juneau-utest/src/test/java/org/apache/juneau/xml/CommonParserTest.java +++ b/juneau-utest/src/test/java/org/apache/juneau/xml/CommonParserTest.java @@ -132,13 +132,10 @@ class CommonParserTest extends SimpleTestBase{ public static class C { private Collection<Integer> ints = new LinkedList<>(); + public Collection<Integer> getInts() { return ints; } + private List<B> beans = new LinkedList<>(); - public Collection<Integer> getInts() { - return ints; - } - public List<B> getBeans() { - return beans; - } + public List<B> getBeans() { return beans; } } //==================================================================================================== diff --git a/juneau-utest/src/test/java/org/apache/juneau/xml/XmlCollapsedTest.java b/juneau-utest/src/test/java/org/apache/juneau/xml/XmlCollapsedTest.java index 4f1dd3995..a30770e57 100755 --- a/juneau-utest/src/test/java/org/apache/juneau/xml/XmlCollapsedTest.java +++ b/juneau-utest/src/test/java/org/apache/juneau/xml/XmlCollapsedTest.java @@ -179,35 +179,19 @@ class XmlCollapsedTest extends SimpleTestBase { @Bean(properties="f1,f2,f3,f4") public static class D { + private List<String> f1 = new LinkedList<>(); + @Xml(format=COLLAPSED) public List<String> getF1() { return f1; } - private List<String> f1 = new LinkedList<>(), f3 = new LinkedList<>(); - private String[] f2, f4; + private String[] f2; + @Xml(format=COLLAPSED) public String[] getF2() { return f2;} + public void setF2(String[] v) { f2 = v; } - @Xml(format=COLLAPSED) - public List<String> getF1() { - return f1; - } - - @Xml(format=COLLAPSED) - public String[] getF2() { - return f2; - } - public void setF2(String[] v) { - f2 = v; - } - - @Xml(format=COLLAPSED,childName="xf3") - public List<String> getF3() { - return f3; - } + private List<String> f3 = new LinkedList<>(); + @Xml(format=COLLAPSED,childName="xf3") public List<String> getF3() { return f3; } - @Xml(format=COLLAPSED,childName="xf4") - public String[] getF4() { - return f4; - } - public void setF4(String[] v) { - f4 = v; - } + private String[] f4; + @Xml(format=COLLAPSED,childName="xf4") public String[] getF4() { return f4; } + public void setF4(String[] v) { f4 = v; } } //==================================================================================================== @@ -234,27 +218,15 @@ class XmlCollapsedTest extends SimpleTestBase { @Bean(properties="f1,f2") public static class E { + private ArrayList<String> f1; + @Xml(format=COLLAPSED) public ArrayList<String> getF1() { return f1; } + public void setF1(ArrayList<String> v) { f1 = v; } - private ArrayList<String> f1, f2; - - @Xml(format=COLLAPSED) - public ArrayList<String> getF1() { - return f1; - } - public void setF1(ArrayList<String> v) { - f1 = v; - } - - @Xml(format=COLLAPSED,childName="xf2") - public ArrayList<String> getF2() { - return f2; - } - public void setF2(ArrayList<String> v) { - f2 = v; - } + private ArrayList<String> f2; + @Xml(format=COLLAPSED,childName="xf2") public ArrayList<String> getF2() { return f2; } + public void setF2(ArrayList<String> v) { f2 = v; } } - //==================================================================================================== // testElementNameOnElementClass - @Xml.format=COLLAPSED, element name defined on element class. //==================================================================================================== @@ -279,9 +251,7 @@ class XmlCollapsedTest extends SimpleTestBase { } public static class FA { - - @Xml(format=COLLAPSED) - public List<F1> f1; + @Xml(format=COLLAPSED) public List<F1> f1; public static FA newInstance() { var t = new FA(); @@ -293,8 +263,7 @@ class XmlCollapsedTest extends SimpleTestBase { } public static class FB { - @Xml(format=COLLAPSED) - public F1[] f1; + @Xml(format=COLLAPSED) public F1[] f1; public static FB newInstance() { var t = new FB(); @@ -308,9 +277,7 @@ class XmlCollapsedTest extends SimpleTestBase { @Bean(typeName="xf1") public static class F1 { - - @Xml(format=TEXT) - public String text; + @Xml(format=TEXT) public String text; public static F1 newInstance(String text) { var t = new F1(); @@ -340,9 +307,7 @@ class XmlCollapsedTest extends SimpleTestBase { } public static class G { - - @Xml(format=COLLAPSED, childName="yf1") - public List<F1> f1; + @Xml(format=COLLAPSED, childName="yf1") public List<F1> f1; public static G newInstance() { var t = new G(); @@ -373,9 +338,7 @@ class XmlCollapsedTest extends SimpleTestBase { } public static class H { - - @Xml(format=COLLAPSED) - public H1 f1; + @Xml(format=COLLAPSED) public H1 f1; public static H newInstance() { var t = new H(); @@ -411,9 +374,7 @@ class XmlCollapsedTest extends SimpleTestBase { } public static class I { - - @Xml(format=COLLAPSED, childName="yf1") - public H1 f1; + @Xml(format=COLLAPSED, childName="yf1") public H1 f1; public static I newInstance() { var t = new I(); diff --git a/juneau-utest/src/test/java/org/apache/juneau/xml/XmlIgnoreComments_Test.java b/juneau-utest/src/test/java/org/apache/juneau/xml/XmlIgnoreComments_Test.java index 5be83abae..c79a0e8fd 100644 --- a/juneau-utest/src/test/java/org/apache/juneau/xml/XmlIgnoreComments_Test.java +++ b/juneau-utest/src/test/java/org/apache/juneau/xml/XmlIgnoreComments_Test.java @@ -1179,16 +1179,8 @@ class XmlIgnoreComments_Test extends SimpleTestBase { @Bean(typeName="A") public static class A extends AA { private String a; - - @Override - public String getA() { - return a; - } - - @Override - public void setA(String v) { - a = v; - } + @Override public String getA() { return a; } + @Override public void setA(String v) { a = v; } A init() { this.a = "foo"; diff --git a/juneau-utest/src/test/java/org/apache/juneau/xml/XmlTest.java b/juneau-utest/src/test/java/org/apache/juneau/xml/XmlTest.java index 1d946de00..8d4fbdbfb 100755 --- a/juneau-utest/src/test/java/org/apache/juneau/xml/XmlTest.java +++ b/juneau-utest/src/test/java/org/apache/juneau/xml/XmlTest.java @@ -162,17 +162,14 @@ class XmlTest extends SimpleTestBase { @Bean(typeName="Person1", properties="name,age") public static class Person1 { public int age; - private String name; protected Person1(String name, int age) { this.name = name; this.age = age; } - public String getName() { - return name; - } - public void setName(String v) { - name = v; - } + + private String name; + public String getName() { return name; } + public void setName(String v) { name = v; } } //====================================================================================================