You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by da...@apache.org on 2016/11/15 13:29:29 UTC

svn commit: r1769829 - in /felix/trunk/converter/converter/src: main/java/org/apache/felix/converter/impl/ main/java/org/osgi/util/converter/ test/java/org/apache/felix/converter/impl/

Author: davidb
Date: Tue Nov 15 13:29:28 2016
New Revision: 1769829

URL: http://svn.apache.org/viewvc?rev=1769829&view=rev
Log:
Felix Converter - Fix Java Bean handling.

Modified:
    felix/trunk/converter/converter/src/main/java/org/apache/felix/converter/impl/AdapterImpl.java
    felix/trunk/converter/converter/src/main/java/org/apache/felix/converter/impl/ConvertingImpl.java
    felix/trunk/converter/converter/src/main/java/org/osgi/util/converter/ConvertingTypeSettings.java
    felix/trunk/converter/converter/src/test/java/org/apache/felix/converter/impl/ConverterMapTest.java
    felix/trunk/converter/converter/src/test/java/org/apache/felix/converter/impl/ConverterTest.java

Modified: felix/trunk/converter/converter/src/main/java/org/apache/felix/converter/impl/AdapterImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/converter/converter/src/main/java/org/apache/felix/converter/impl/AdapterImpl.java?rev=1769829&r1=1769828&r2=1769829&view=diff
==============================================================================
--- felix/trunk/converter/converter/src/main/java/org/apache/felix/converter/impl/AdapterImpl.java (original)
+++ felix/trunk/converter/converter/src/main/java/org/apache/felix/converter/impl/AdapterImpl.java Tue Nov 15 13:29:28 2016
@@ -132,8 +132,8 @@ public class AdapterImpl implements Inte
         public ConvertingTypeSettings source() {
             return new ConvertingTypeSettings() {
                 @Override
-                public Converting asJavaBean() {
-                    // TODO Auto-generated method stub
+                public Converting asBean() {
+                    del.source().asBean();
                     return ConvertingWrapper.this;
                 }
 
@@ -150,7 +150,7 @@ public class AdapterImpl implements Inte
         public ConvertingTypeSettings target() {
             return new ConvertingTypeSettings() {
                 @Override
-                public Converting asJavaBean() {
+                public Converting asBean() {
                     return ConvertingWrapper.this;
                 }
 

Modified: felix/trunk/converter/converter/src/main/java/org/apache/felix/converter/impl/ConvertingImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/converter/converter/src/main/java/org/apache/felix/converter/impl/ConvertingImpl.java?rev=1769829&r1=1769828&r2=1769829&view=diff
==============================================================================
--- felix/trunk/converter/converter/src/main/java/org/apache/felix/converter/impl/ConvertingImpl.java (original)
+++ felix/trunk/converter/converter/src/main/java/org/apache/felix/converter/impl/ConvertingImpl.java Tue Nov 15 13:29:28 2016
@@ -81,7 +81,7 @@ public class ConvertingImpl implements C
     public ConvertingTypeSettings source() {
         return new ConvertingTypeSettings() {
             @Override
-            public Converting asJavaBean() {
+            public Converting asBean() {
                 sourceAsJavaBean = true;
                 return ConvertingImpl.this;
             }
@@ -98,7 +98,7 @@ public class ConvertingImpl implements C
     public ConvertingTypeSettings target() {
         return new ConvertingTypeSettings() {
             @Override
-            public Converting asJavaBean() {
+            public Converting asBean() {
                 // TODO not yet implemented
                 return ConvertingImpl.this;
             }
@@ -646,6 +646,14 @@ public class ConvertingImpl implements C
 
     @SuppressWarnings("rawtypes")
     private static Map createMapFromInterface(Object obj) {
+        Class intf = null;
+        for (Class i : obj.getClass().getInterfaces()) {
+            intf = i;
+            break;
+        }
+        if (intf == null)
+            throw new ConversionException("" + obj);
+
         Set<String> invokedMethods = new HashSet<>();
 
         Map result = new HashMap();
@@ -823,7 +831,7 @@ public class ConvertingImpl implements C
         else if (isDTOType(sourceCls))
             return createMapFromDTO(obj, converter);
         else {
-            if (treatAsJavaBean()) {
+            if (sourceAsJavaBean) {
                 Map<?,?> m = createMapFromBeanAccessors(obj, sourceCls);
                 if (m.size() > 0)
                     return m;
@@ -832,10 +840,6 @@ public class ConvertingImpl implements C
         return createMapFromInterface(obj);
     }
 
-    private static boolean treatAsJavaBean() {
-        return false;
-    }
-
     private static boolean isCopyRequiredType(Class<?> cls) {
         return Map.class.isAssignableFrom(cls) ||
                 Collection.class.isAssignableFrom(cls) ||

Modified: felix/trunk/converter/converter/src/main/java/org/osgi/util/converter/ConvertingTypeSettings.java
URL: http://svn.apache.org/viewvc/felix/trunk/converter/converter/src/main/java/org/osgi/util/converter/ConvertingTypeSettings.java?rev=1769829&r1=1769828&r2=1769829&view=diff
==============================================================================
--- felix/trunk/converter/converter/src/main/java/org/osgi/util/converter/ConvertingTypeSettings.java (original)
+++ felix/trunk/converter/converter/src/main/java/org/osgi/util/converter/ConvertingTypeSettings.java Tue Nov 15 13:29:28 2016
@@ -36,5 +36,5 @@ public interface ConvertingTypeSettings
      * @return The current {@code Converting} object so that additional calls
      *         can be chained.
      */
-    Converting asJavaBean();
+    Converting asBean();
 }

Modified: felix/trunk/converter/converter/src/test/java/org/apache/felix/converter/impl/ConverterMapTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/converter/converter/src/test/java/org/apache/felix/converter/impl/ConverterMapTest.java?rev=1769829&r1=1769828&r2=1769829&view=diff
==============================================================================
--- felix/trunk/converter/converter/src/test/java/org/apache/felix/converter/impl/ConverterMapTest.java (original)
+++ felix/trunk/converter/converter/src/test/java/org/apache/felix/converter/impl/ConverterMapTest.java Tue Nov 15 13:29:28 2016
@@ -27,7 +27,6 @@ import java.util.Map;
 
 import org.junit.After;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.osgi.util.converter.Converter;
 import org.osgi.util.converter.ConverterBuilder;
@@ -77,7 +76,7 @@ public class ConverterMapTest {
         assertSame(url, d.get(bi));
     }
 
-    @Test @Ignore("Fix JavaBean handling")
+    @Test
     public void testJavaBeanToMap() {
         MyBean mb = new MyBean();
         mb.setMe("You");
@@ -85,7 +84,7 @@ public class ConverterMapTest {
         mb.setNumbers(new int[] {3,2,1});
 
         @SuppressWarnings("rawtypes")
-        Map m = converter.convert(mb).to(Map.class);
+        Map m = converter.convert(mb).source().asBean().to(Map.class);
         assertEquals(5, m.size());
         assertEquals("You", m.get("me"));
         assertTrue((boolean) m.get("f"));
@@ -93,7 +92,7 @@ public class ConverterMapTest {
         assertArrayEquals(new int [] {3,2,1}, (int[]) m.get("numbers"));
     }
 
-    @Test @Ignore("Fix JavaBean handling")
+    @Test
     public void testJavaBeanToMapCustom() {
         SimpleDateFormat sdf = new SimpleDateFormat("yyMMddHHmmssZ");
         Date d = new Date();
@@ -106,7 +105,7 @@ public class ConverterMapTest {
         ConverterBuilder cb = new StandardConverter().newConverterBuilder();
         cb.rule(Date.class, String.class, v -> sdf.format(v), v -> sdf.parse(v));
         Converter ca = cb.build();
-        Map<String, String> m = ca.convert(mb).to(new TypeReference<Map<String, String>>(){});
+        Map<String, String> m = ca.convert(mb).source().asBean().to(new TypeReference<Map<String, String>>(){});
         assertEquals("true", m.get("enabled"));
         assertEquals(expectedDate, m.get("startDate"));
     }

Modified: felix/trunk/converter/converter/src/test/java/org/apache/felix/converter/impl/ConverterTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/converter/converter/src/test/java/org/apache/felix/converter/impl/ConverterTest.java?rev=1769829&r1=1769828&r2=1769829&view=diff
==============================================================================
--- felix/trunk/converter/converter/src/test/java/org/apache/felix/converter/impl/ConverterTest.java (original)
+++ felix/trunk/converter/converter/src/test/java/org/apache/felix/converter/impl/ConverterTest.java Tue Nov 15 13:29:28 2016
@@ -50,7 +50,6 @@ import org.apache.felix.converter.impl.M
 import org.apache.felix.converter.impl.MyEmbeddedDTO.Alpha;
 import org.junit.After;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.osgi.util.converter.ConversionException;
 import org.osgi.util.converter.Converter;
@@ -571,14 +570,14 @@ public class ConverterTest {
         assertNotSame(m, m2);
     }
 
-    @Test @Ignore("Fix JavaBean handling")
+    @Test
     public void testConversionPriority() {
         MyBean mb = new MyBean();
         mb.intfVal = 17;
         mb.beanVal = "Hello";
 
         assertEquals(Collections.singletonMap("value", "Hello"),
-                converter.convert(mb).to(Map.class));
+                converter.convert(mb).source().asBean().to(Map.class));
     }
 
     @Test
@@ -591,14 +590,14 @@ public class ConverterTest {
                 converter.convert(mb).source().as(MyIntf.class).to(Map.class).get("value"));
     }
 
-    @Test  @Ignore("Fix JavaBean handling")
+    @Test
     public void testConvertAs2() {
         MyBean mb = new MyBean();
         mb.intfVal = 17;
         mb.beanVal = "Hello";
 
         assertEquals(Collections.singletonMap("value", "Hello"),
-                converter.convert(mb).source().as(MyBean.class).to(Map.class));
+                converter.convert(mb).source().asBean().to(Map.class));
     }
 
     static class MyClass2 {