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 9be96f5  Clean up unused AutoStringSwap class.
9be96f5 is described below

commit 9be96f505669fc139c99096d5eb92ec81e3b40f9
Author: JamesBognar <[email protected]>
AuthorDate: Fri Aug 9 12:55:03 2019 -0400

    Clean up unused AutoStringSwap class.
---
 .../juneau/transform/AutoStringSwapTest.java       | 271 ---------------------
 .../src/main/java/org/apache/juneau/ClassMeta.java |   3 -
 .../apache/juneau/transform/AutoStringSwap.java    | 147 -----------
 .../org/apache/juneau/transform/DefaultSwaps.java  |   1 +
 .../org/apache/juneau/transforms/ClassSwap.java    |  32 +++
 .../11.Transforms/02.DefaultPojoSwaps.html         |   3 +-
 .../{07.SwapMethods.html => 03.AutoPojoSwaps.html} |   2 +-
 7 files changed, 36 insertions(+), 423 deletions(-)

diff --git 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transform/AutoStringSwapTest.java
 
b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transform/AutoStringSwapTest.java
deleted file mode 100644
index 87e2e73..0000000
--- 
a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transform/AutoStringSwapTest.java
+++ /dev/null
@@ -1,271 +0,0 @@
-// 
***************************************************************************************************************************
-// * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
-// * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file        *
-// * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance            *
-// * with the License.  You may obtain a copy of the License at                
                                              *
-// *                                                                           
                                              *
-// *  http://www.apache.org/licenses/LICENSE-2.0                               
                                              *
-// *                                                                           
                                              *
-// * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an  *
-// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
express or implied.  See the License for the        *
-// * specific language governing permissions and limitations under the 
License.                                              *
-// 
***************************************************************************************************************************
-package org.apache.juneau.transform;
-
-import static org.junit.Assert.*;
-
-import java.util.*;
-
-import org.apache.juneau.annotation.*;
-import org.apache.juneau.parser.*;
-import org.apache.juneau.reflect.*;
-import org.junit.*;
-import org.junit.runners.*;
-
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-@SuppressWarnings({"unchecked","rawtypes"})
-public class AutoStringSwapTest {
-
-       private static PojoSwap find(Class<?> c) {
-               return AutoStringSwap.find(ClassInfo.of(c));
-       }
-
-       
//------------------------------------------------------------------------------------------------------------------
-       // Unswap methods
-       
//------------------------------------------------------------------------------------------------------------------
-
-       public static class B01 {
-               public static B01 fromString(String o) {
-                       assertEquals("foo", o);
-                       return new B01();
-               }
-       }
-       public static class B02 {
-               public static B02 fromValue(String o) {
-                       assertEquals("foo", o);
-                       return new B02();
-               }
-       }
-       public static class B03 {
-               public static B03 valueOf(String o) {
-                       assertEquals("foo", o);
-                       return new B03();
-               }
-       }
-       public static class B04 {
-               public static B04 parse(String o) {
-                       assertEquals("foo", o);
-                       return new B04();
-               }
-       }
-       public static class B05 {
-               public static B05 parseString(String o) {
-                       assertEquals("foo", o);
-                       return new B05();
-               }
-       }
-       public static class B06 {
-               public static B06 forName(String o) {
-                       assertEquals("foo", o);
-                       return new B06();
-               }
-       }
-       public static class B07 {
-               public static B07 forString(String o) {
-                       assertEquals("foo", o);
-                       return new B07();
-               }
-       }
-
-       @Test
-       public void b01_unswap_fromString() throws Exception {
-               assertNotNull(find(B01.class).unswap(null, "foo", null));
-       }
-
-       @Test
-       public void b02_unswap_fromValue() throws Exception {
-               assertNotNull(find(B02.class).unswap(null, "foo", null));
-       }
-
-       @Test
-       public void b03_unswap_valueOf() throws Exception {
-               assertNotNull(find(B03.class).unswap(null, "foo", null));
-       }
-
-       @Test
-       public void b04_unswap_parse() throws Exception {
-               assertNotNull(find(B04.class).unswap(null, "foo", null));
-       }
-
-       @Test
-       public void b05_unswap_parseString() throws Exception {
-               assertNotNull(find(B05.class).unswap(null, "foo", null));
-       }
-
-       @Test
-       public void b06_unswap_forName() throws Exception {
-               assertNotNull(find(B06.class).unswap(null, "foo", null));
-       }
-
-       @Test
-       public void b07_unswap_forString() throws Exception {
-               assertNotNull(find(B07.class).unswap(null, "foo", null));
-       }
-
-       
//------------------------------------------------------------------------------------------------------------------
-       // Unswap constructor
-       
//------------------------------------------------------------------------------------------------------------------
-
-       public static class C01 {
-               public C01() {}
-               public C01(String o) {
-                       assertEquals("foo", o);
-               }
-       }
-       public static class C02 {
-               public C02() {}
-               public C02(String o) {
-                       throw new RuntimeException("foo");
-               }
-       }
-       public static class C03 {
-               public C03() {}
-               public C03(String o) throws ParseException {
-                       throw new ParseException("foo");
-               }
-       }
-
-       @Test
-       public void c01_unswapConstructor() throws Exception {
-               assertNotNull(find(C01.class).unswap(null, "foo", null));
-       }
-
-       @Test(expected = ParseException.class)
-       public void c02_unswapConstructor_runtimeException() throws Exception {
-               assertNotNull(find(C02.class).unswap(null, "foo", null));
-       }
-
-       @Test(expected = ParseException.class)
-       public void c03_unswapConstructor_parseException() throws Exception {
-               assertNotNull(find(C03.class).unswap(null, "foo", null));
-       }
-
-       
//------------------------------------------------------------------------------------------------------------------
-       // Ignore class
-       
//------------------------------------------------------------------------------------------------------------------
-
-       @BeanIgnore
-       public static class D01 {
-               public static D01 fromString(String s) {
-                       return new D01();
-               }
-       }
-       public static class D02 {
-               public class D02A {
-                       public D02A fromString(String s) {
-                               return new D02A();
-                       }
-               }
-       }
-
-       @Test
-       public void d01_ignoreClass_beanIgnore() throws Exception {
-               assertNull(find(D01.class));
-       }
-
-       @Test
-       public void d02_ignoreClass_memberClass() throws Exception {
-               assertNull(find(D02.D02A.class));
-       }
-
-       
//------------------------------------------------------------------------------------------------------------------
-       // Ignore unswap method
-       
//------------------------------------------------------------------------------------------------------------------
-
-       public static class F01 {
-               @BeanIgnore
-               public static F01 fromString(String o) {
-                       return null;
-               }
-       }
-       public static class F02 {
-               @Deprecated
-               public static F02 fromString(String o) {
-                       return null;
-               }
-       }
-       public static class F03 {
-               public static Object fromString(String o) {
-                       return null;
-               }
-       }
-       public static class F04 {
-               public static F04 fromString(Map<String,String> o) {
-                       return null;
-               }
-       }
-       public static class F05 {
-               public F05 fromString(String o) {
-                       return null;
-               }
-       }
-       public static class F06 {
-               public static F06 createx(String o) {
-                       return null;
-               }
-       }
-
-       @Test
-       public void f01_ignoreUnswapMethod_beanIgnore() throws Exception {
-               assertNull(find(F01.class));
-       }
-
-       @Test
-       public void f02_ignoreUnswapMethod_deprecated() throws Exception {
-               assertNull(find(F02.class));
-       }
-
-       @Test
-       public void f03_ignoreUnswapMethod_wrongReturnType() throws Exception {
-               assertNull(find(F03.class));
-       }
-
-       @Test
-       public void f04_ignoreUnswapMethod_wrongParameters() throws Exception {
-               assertNull(find(F04.class));
-       }
-
-       @Test
-       public void f05_ignoreUnswapMethod_notStatic() throws Exception {
-               assertNull(find(F05.class));
-       }
-
-       @Test
-       public void f06_ignoreUnswapMethod_wrongName() throws Exception {
-               assertNull(find(F06.class));
-       }
-
-       
//------------------------------------------------------------------------------------------------------------------
-       // Ignore constructor
-       
//------------------------------------------------------------------------------------------------------------------
-
-       public static class G01 {
-               @BeanIgnore
-               public G01(String o) {}
-       }
-
-       public static class G02 {
-               @Deprecated
-               public G02(String o) {}
-       }
-
-       @Test
-       public void g01_ignoreUnswapConstructor_beanIgnore() throws Exception {
-               assertNull(find(G01.class));
-       }
-
-       @Test
-       public void g02_ignoreUnswapConstructor_deprecated() throws Exception {
-               assertNull(find(G02.class));
-       }
-}
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ClassMeta.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ClassMeta.java
index bd59a8e..2a0dc9e 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ClassMeta.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ClassMeta.java
@@ -693,9 +693,6 @@ public final class ClassMeta<T> implements Type {
                                defaultSwap = AutoMapSwap.find(ci);
                        if (defaultSwap == null)
                                defaultSwap = AutoListSwap.find(ci);
-                       // TODO
-                       //if (defaultSwap == null)
-                       //      defaultSwap = AutoStringSwap.find(ci);
                        if (defaultSwap != null)
                                l.add(defaultSwap);
                }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/transform/AutoStringSwap.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/transform/AutoStringSwap.java
deleted file mode 100644
index dc8b6c2..0000000
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/transform/AutoStringSwap.java
+++ /dev/null
@@ -1,147 +0,0 @@
-// 
***************************************************************************************************************************
-// * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
-// * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file        *
-// * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance            *
-// * with the License.  You may obtain a copy of the License at                
                                              *
-// *                                                                           
                                              *
-// *  http://www.apache.org/licenses/LICENSE-2.0                               
                                              *
-// *                                                                           
                                              *
-// * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an  *
-// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
express or implied.  See the License for the        *
-// * specific language governing permissions and limitations under the 
License.                                              *
-// 
***************************************************************************************************************************
-package org.apache.juneau.transform;
-
-import static org.apache.juneau.internal.ClassUtils.*;
-import static org.apache.juneau.internal.CollectionUtils.*;
-
-import java.lang.reflect.*;
-import java.util.*;
-
-import org.apache.juneau.*;
-import org.apache.juneau.annotation.*;
-import org.apache.juneau.parser.*;
-import org.apache.juneau.reflect.*;
-import org.apache.juneau.serializer.*;
-
-/**
- * A dynamic POJO swap based on reflection of a Java class that converts POJOs 
to serializable String objects.
- *
- * <p>
- * Looks for methods on the class that can be called to swap-in surrogate 
String objects before serialization and swap-out
- * surrogate String objects after parsing.
- *
- * <h5 class='figure'>Valid unswap methods (N = Normal type)</h5>
- * <ul>
- *     <li class='jm'><c><jk>public static</jk> N fromString(String)</c>
- *     <li class='jm'><c><jk>public static</jk> N fromString(BeanSession, 
String)</c>
- *     <li class='jm'><c><jk>public static</jk> N fromValue(String)</c>
- *     <li class='jm'><c><jk>public static</jk> N fromValue(BeanSession, 
String)</c>
- *     <li class='jm'><c><jk>public static</jk> N valueOf(String)</c>
- *     <li class='jm'><c><jk>public static</jk> N valueOf(BeanSession, 
String)</c>
- *     <li class='jm'><c><jk>public static</jk> N parse(String)</c>
- *     <li class='jm'><c><jk>public static</jk> N parse(BeanSession, 
String)</c>
- *     <li class='jm'><c><jk>public static</jk> N parseString(String)</c>
- *     <li class='jm'><c><jk>public static</jk> N parseString(BeanSession, 
String)</c>
- *     <li class='jm'><c><jk>public static</jk> N forName(String)</c>
- *     <li class='jm'><c><jk>public static</jk> N forName(BeanSession, 
String)</c>
- *     <li class='jm'><c><jk>public static</jk> N forString(String)</c>
- *     <li class='jm'><c><jk>public static</jk> N forString(BeanSession, 
String)</c>
- *     <li class='jm'><c><jk>public</jk> N(String)</c>
- * </ul>
- *
- * <p>
- * Classes are ignored if any of the following are true:
- * <ul>
- *     <li>Classes annotated with {@link BeanIgnore @BeanIgnore}.
- *     <li>Non-static member classes.
- * </ul>
- *
- * <p>
- * Members/constructors are ignored if any of the following are true:
- * <ul>
- *     <li>Members/constructors annotated with {@link BeanIgnore @BeanIgnore}.
- *     <li>Deprecated members/constructors.
- * </ul>
- *
- * @param <T> The normal class type.
- */
-public class AutoStringSwap<T> extends 
org.apache.juneau.transform.StringSwap<T> {
-
-       private static final Set<String>
-               UNSWAP_METHOD_NAMES = newUnmodifiableHashSet("fromString", 
"fromValue", "valueOf", "parse", "parseString", "forName", "forString");
-
-       /**
-        * Look for constructors and methods on this class and construct a 
dynamic swap if it's possible to do so.
-        *
-        * @param ci The class to try to constructor a dynamic swap on.
-        * @return A POJO swap instance, or <jk>null</jk> if one could not be 
created.
-        */
-       @SuppressWarnings({ "rawtypes" })
-       public static PojoSwap<?,?> find(ClassInfo ci) {
-
-               if (shouldIgnore(ci))
-                       return null;
-
-               for (MethodInfo m : ci.getPublicMethods())
-                       if (isUnswapMethod(m, ci))
-                               return new AutoStringSwap(ci, m, null);
-
-               for (ConstructorInfo cs : ci.getPublicConstructors())
-                       if (isUnswapConstructor(cs))
-                               return new AutoStringSwap(ci, null, cs);
-
-               return null;
-       }
-
-       private static boolean shouldIgnore(ClassInfo ci) {
-               return
-                       ci.hasAnnotation(BeanIgnore.class)
-                       || ci.isNonStaticMemberClass();
-       }
-
-       private static boolean isUnswapMethod(MethodInfo mi, ClassInfo ci) {
-               return
-                       mi.isNotDeprecated()
-                       && mi.isStatic()
-                       && mi.hasName(UNSWAP_METHOD_NAMES)
-                       && mi.hasFuzzyParamTypes(BeanSession.class, 
String.class)
-                       && mi.hasReturnTypeParent(ci)
-                       && ! mi.hasAnnotation(BeanIgnore.class);
-       }
-
-       private static boolean isUnswapConstructor(ConstructorInfo cs) {
-               return
-                       cs.isNotDeprecated()
-                       && cs.hasParamTypes(String.class)
-                       && ! cs.hasAnnotation(BeanIgnore.class);
-       }
-
-       
//------------------------------------------------------------------------------------------------------------------
-
-       private final Method unswapMethod;
-       private final Constructor<?> unswapConstructor;
-
-       private AutoStringSwap(ClassInfo ci, MethodInfo unswapMethod, 
ConstructorInfo unswapConstructor) {
-               super(ci.inner());
-               this.unswapMethod = unswapMethod == null ? null : 
unswapMethod.inner();
-               this.unswapConstructor = unswapConstructor == null ? null : 
unswapConstructor.inner();
-       }
-
-       @Override /* PojoSwap */
-       public String swap(BeanSession session, T o) throws SerializeException {
-               return o.toString();
-       }
-
-       @SuppressWarnings("unchecked")
-       @Override /* PojoSwap */
-       public T unswap(BeanSession session, String f, ClassMeta<?> hint) 
throws ParseException {
-               try {
-                       if (unswapMethod != null)
-                               return (T)unswapMethod.invoke(null, 
getMatchingArgs(unswapMethod.getParameterTypes(), session, f));
-                       return (T)unswapConstructor.newInstance(f);
-               } catch (Exception e) {
-                       throw ParseException.create(e);
-               }
-       }
-}
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/transform/DefaultSwaps.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/transform/DefaultSwaps.java
index 69f63a0..0667bfe 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/transform/DefaultSwaps.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/transform/DefaultSwaps.java
@@ -32,6 +32,7 @@ public class DefaultSwaps {
                POJO_SWAPS.put(Enumeration.class, new EnumerationSwap());
                POJO_SWAPS.put(Iterator.class, new IteratorSwap());
                POJO_SWAPS.put(Locale.class, new LocaleSwap());
+               POJO_SWAPS.put(Class.class, new ClassSwap());
                POJO_SWAPS.put(Calendar.class, new 
TemporalCalendarSwap.IsoOffsetDateTime());
                POJO_SWAPS.put(Date.class, new 
TemporalDateSwap.IsoLocalDateTime());
                POJO_SWAPS.put(Instant.class, new TemporalSwap.IsoInstant());
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/transforms/ClassSwap.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/transforms/ClassSwap.java
new file mode 100644
index 0000000..04b7554
--- /dev/null
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/transforms/ClassSwap.java
@@ -0,0 +1,32 @@
+// 
***************************************************************************************************************************
+// * 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.transforms;
+
+import org.apache.juneau.*;
+import org.apache.juneau.transform.*;
+
+/**
+ * Transforms {@link Class} objects to and from {@link String Strings}.
+ */
+public class ClassSwap extends StringSwap<Class<?>> {
+
+       @Override /* PojoSwap */
+       public String swap(BeanSession session, Class<?> o) throws Exception {
+               return o == null ? null : o.getName();
+       }
+
+       @Override /* PojoSwap */
+       public Class<?> unswap(BeanSession session, String o, ClassMeta<?> 
hint) throws Exception {
+               return o == null ? null : Class.forName(o);
+       }
+}
diff --git 
a/juneau-doc/docs/Topics/02.juneau-marshall/11.Transforms/02.DefaultPojoSwaps.html
 
b/juneau-doc/docs/Topics/02.juneau-marshall/11.Transforms/02.DefaultPojoSwaps.html
index d76af81..2556448 100644
--- 
a/juneau-doc/docs/Topics/02.juneau-marshall/11.Transforms/02.DefaultPojoSwaps.html
+++ 
b/juneau-doc/docs/Topics/02.juneau-marshall/11.Transforms/02.DefaultPojoSwaps.html
@@ -13,7 +13,7 @@
  
***************************************************************************************************************************/
  -->
 
-{todo} Default PojoSwaps
+Default PojoSwaps
 
 <p>
        By default, all serializers and parsers have built in <c>PojoSwaps</c> 
defined for the following common data types:
@@ -22,6 +22,7 @@
        <li class='jc'>{@link java.util.Enumeration}
        <li class='jc'>{@link java.util.Iterator}
        <li class='jc'>{@link java.util.Locale}
+       <li class='jc'>{@link java.util.Class}
        <li class='jc'>{@link java.util.Calendar} - ISO offset date-time.
        <li class='jc'>{@link java.util.Date} - Local date-time
        <li class='jc'>{@link java.time.Instant} - ISO instant.
diff --git 
a/juneau-doc/docs/Topics/02.juneau-marshall/11.Transforms/07.SwapMethods.html 
b/juneau-doc/docs/Topics/02.juneau-marshall/11.Transforms/03.AutoPojoSwaps.html
similarity index 99%
rename from 
juneau-doc/docs/Topics/02.juneau-marshall/11.Transforms/07.SwapMethods.html
rename to 
juneau-doc/docs/Topics/02.juneau-marshall/11.Transforms/03.AutoPojoSwaps.html
index 91ff45b..f222843 100644
--- 
a/juneau-doc/docs/Topics/02.juneau-marshall/11.Transforms/07.SwapMethods.html
+++ 
b/juneau-doc/docs/Topics/02.juneau-marshall/11.Transforms/03.AutoPojoSwaps.html
@@ -13,7 +13,7 @@
  
***************************************************************************************************************************/
  -->
 
-{updated} Swap Methods
+{new} Auto-detected POJO swaps
 
 <p>
        Various methods can be defined on a class directly to affect how it 
gets serialized.

Reply via email to