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/05 21:33:39 UTC
svn commit: r1737872 - in /felix/trunk/converter/src:
main/java/org/apache/felix/converter/impl/ConvertingImpl.java
main/java/org/osgi/service/converter/Converting.java
test/java/org/apache/felix/converter/impl/ConverterTest.java
Author: davidb
Date: Tue Apr 5 19:33:38 2016
New Revision: 1737872
URL: http://svn.apache.org/viewvc?rev=1737872&view=rev
Log:
Additional simple tests for the converter and some tiny tweaks to the impl...
Modified:
felix/trunk/converter/src/main/java/org/apache/felix/converter/impl/ConvertingImpl.java
felix/trunk/converter/src/main/java/org/osgi/service/converter/Converting.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=1737872&r1=1737871&r2=1737872&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 Tue Apr 5 19:33:38 2016
@@ -78,4 +78,9 @@ public class ConvertingImpl implements C
}
return null;
}
+
+ @Override
+ public String toString() {
+ return to(String.class);
+ }
}
Modified: felix/trunk/converter/src/main/java/org/osgi/service/converter/Converting.java
URL: http://svn.apache.org/viewvc/felix/trunk/converter/src/main/java/org/osgi/service/converter/Converting.java?rev=1737872&r1=1737871&r2=1737872&view=diff
==============================================================================
--- felix/trunk/converter/src/main/java/org/osgi/service/converter/Converting.java (original)
+++ felix/trunk/converter/src/main/java/org/osgi/service/converter/Converting.java Tue Apr 5 19:33:38 2016
@@ -21,13 +21,13 @@ import java.lang.reflect.Type;
* This interface is used to specify the target that an object should be
* converted to. A {@link Converting} instance can be obtained via the
* {@link Converter} service by starting a conversion for a specific object.
- *
+ *
* @author $Id:$
*/
public interface Converting {
/**
* Specify the target object type for the conversion as a class object.
- *
+ *
* @param cls The class to convert to.
* @return The converted object.
*/
@@ -38,13 +38,13 @@ public interface Converting {
* class carries generics information a TypeReference should be used as this
* preserves the generic information whereas a Class object has this
* information erased. Example use:
- *
+ *
* <pre>
* List<String> result =
* converter.convert(Arrays.asList(1,2,3)).
* to(new TypeReference<List<String>>() {});
* </pre>
- *
+ *
* @param ref A type reference to the object being converted to.
* @return The converted object.
*/
@@ -52,10 +52,17 @@ public interface Converting {
/**
* Specify the target object type as a Java Refelection Type object.
- *
+ *
* @param type A Type object to represent the target type to be converted
* to.
* @return The converted object.
*/
Object to(Type type);
+
+ /**
+ * Same as to(String.class)
+ * @return The converted object.
+ */
+ @Override
+ String toString();
}
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=1737872&r1=1737871&r2=1737872&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 Tue Apr 5 19:33:38 2016
@@ -16,16 +16,62 @@
*/
package org.apache.felix.converter.impl;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import org.junit.After;
+import org.junit.Before;
import org.junit.Test;
+import org.osgi.service.converter.Adapter;
import org.osgi.service.converter.Converter;
+import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
public class ConverterTest {
+ private Converter converter;
+
+ @Before
+ public void setUp() {
+ converter = new ConverterImpl();
+ }
+
+ @After
+ public void tearDown() {
+ converter = null;
+ }
+
+ @Test
+ public void testSimpleConversions() {
+ assertEquals(Integer.valueOf(123), converter.convert("123").to(Integer.class));
+ //assertEquals(Integer.valueOf(123), c.convert("123").to(int.class));
+ assertEquals(Long.valueOf(123), converter.convert("123").to(Long.class));
+// assertEquals(Character.valueOf(123), c.convert("123").to(Character.class));
+ assertEquals(Byte.valueOf((byte) 123), converter.convert("123").to(Byte.class));
+ assertEquals(Float.valueOf("12.3"), converter.convert("12.3").to(Float.class));
+ assertEquals(Double.valueOf("12.3"), converter.convert("12.3").to(Double.class));
+ assertEquals("123", converter.convert(123).to(String.class));
+ }
+
@Test
- public void testConverter() {
- Converter c = new ConverterImpl();
- int i = c.convert("123").to(Integer.class);
- assertEquals(123, i);
+ public void testStandardStringArrayConversion() {
+ String[] sa = {"A", "B"};
+ assertEquals("A", converter.convert(sa).toString());
+ assertEquals("A", converter.convert(sa).to(String.class));
+
+ String[] sa2 = {"A"};
+ assertArrayEquals(sa2, converter.convert("A").to(String[].class));
+ }
+
+ @Test
+ public void testCustomStringArrayConverstion() {
+ Adapter adapter = converter.getAdapter();
+ adapter.rule(String[].class, String.class,
+ v -> Stream.of(v).collect(Collectors.joining(",")),
+ v -> v.split(","));
+
+ String[] sa = {"A", "B"};
+ assertEquals("A,B", adapter.convert(sa).to(String.class));
+ assertArrayEquals(sa, adapter.convert("A,B").to(String[].class));
}
}