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/04/15 09:47:36 UTC
svn commit: r1739245 - in /felix/trunk/converter/src:
main/java/org/apache/felix/converter/impl/ConvertingImpl.java
test/java/org/apache/felix/converter/impl/ConverterTest.java
Author: davidb
Date: Fri Apr 15 07:47:35 2016
New Revision: 1739245
URL: http://svn.apache.org/viewvc?rev=1739245&view=rev
Log:
Felix Converter Service - Support conversions via String Constructor
Modified:
felix/trunk/converter/src/main/java/org/apache/felix/converter/impl/ConvertingImpl.java
felix/trunk/converter/src/test/java/org/apache/felix/converter/impl/ConverterTest.java
Modified: felix/trunk/converter/src/main/java/org/apache/felix/converter/impl/ConvertingImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/converter/src/main/java/org/apache/felix/converter/impl/ConvertingImpl.java?rev=1739245&r1=1739244&r2=1739245&view=diff
==============================================================================
--- felix/trunk/converter/src/main/java/org/apache/felix/converter/impl/ConvertingImpl.java (original)
+++ felix/trunk/converter/src/main/java/org/apache/felix/converter/impl/ConvertingImpl.java Fri Apr 15 07:47:35 2016
@@ -16,6 +16,7 @@
*/
package org.apache.felix.converter.impl;
+import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.lang.reflect.Type;
import java.util.Collection;
@@ -186,7 +187,11 @@ public class ConvertingImpl implements C
return (T) m.invoke(null, object.toString());
}
} catch (Exception e) {
- return null;
+ try {
+ Constructor<T> ctr = cls.getConstructor(String.class);
+ return ctr.newInstance(object.toString());
+ } catch (Exception e2) {
+ }
}
return null;
}
Modified: felix/trunk/converter/src/test/java/org/apache/felix/converter/impl/ConverterTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/converter/src/test/java/org/apache/felix/converter/impl/ConverterTest.java?rev=1739245&r1=1739244&r2=1739245&view=diff
==============================================================================
--- felix/trunk/converter/src/test/java/org/apache/felix/converter/impl/ConverterTest.java (original)
+++ felix/trunk/converter/src/test/java/org/apache/felix/converter/impl/ConverterTest.java Fri Apr 15 07:47:35 2016
@@ -18,6 +18,7 @@ package org.apache.felix.converter.impl;
import java.math.BigDecimal;
import java.math.BigInteger;
+import java.net.URL;
import java.util.Collections;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -118,6 +119,38 @@ public class ConverterTest {
}
@Test
+ public void testFromUnknownDataTypeViaString() {
+ class MyClass {
+ @Override
+ public String toString() {
+ return "1234";
+ }
+ };
+ MyClass o = new MyClass();
+
+ assertEquals(1234, (int) converter.convert(o).to(int.class));
+ assertEquals("1234", converter.convert(o).to(String.class));
+ }
+
+ @Test
+ public void testToUnknownViaStringCtor() {
+ class MyClass {
+ @Override
+ public String toString() {
+ return "http://127.0.0.1:1234/blah";
+ }
+ };
+ MyClass o = new MyClass();
+
+ URL url = converter.convert(o).to(URL.class);
+ assertEquals("http://127.0.0.1:1234/blah", url.toString());
+ assertEquals("http", url.getProtocol());
+ assertEquals("127.0.0.1", url.getHost());
+ assertEquals(1234, url.getPort());
+ assertEquals("/blah", url.getPath());
+ }
+
+ @Test
public void testStandardStringArrayConversion() {
String[] sa = {"A", "B"};
assertEquals("A", converter.convert(sa).toString());