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 {