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 2017/03/04 16:44:38 UTC
svn commit: r1785505 - in /felix/trunk/converter/converter/src:
main/java/org/apache/felix/converter/impl/
test/java/org/apache/felix/converter/impl/
Author: davidb
Date: Sat Mar 4 16:44:38 2017
New Revision: 1785505
URL: http://svn.apache.org/viewvc?rev=1785505&view=rev
Log:
Felix converter - remove map-key based conversions
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/apache/felix/converter/impl/InternalConverting.java
felix/trunk/converter/converter/src/main/java/org/apache/felix/converter/impl/MapDelegate.java
felix/trunk/converter/converter/src/test/java/org/apache/felix/converter/impl/ConverterBuilderTest.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=1785505&r1=1785504&r2=1785505&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 Sat Mar 4 16:44:38 2017
@@ -105,24 +105,6 @@ public class AdapterImpl implements Inte
}
@Override
- public InternalConverting key(Object ... ks) {
- for (Object k : ks) {
- keys.add(k);
- del.key(k);
- }
-
- return this;
- }
-
- @Override
- public InternalConverting root(Object rootObject) {
- if (root == null)
- root = rootObject;
- del.root(rootObject);
- return this;
- }
-
- @Override
public void setConverter(Converter c) {
del.setConverter(c);
}
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=1785505&r1=1785504&r2=1785505&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 Sat Mar 4 16:44:38 2017
@@ -67,8 +67,6 @@ public class ConvertingImpl implements C
private volatile Class<?> targetClass;
private volatile Class<?> targetAsClass;
volatile Type[] typeArguments;
- List<Object> keys = new ArrayList<>();
- private volatile Object root;
private volatile boolean forceCopy = false;
private volatile boolean sourceAsJavaBean = false;
@SuppressWarnings( "unused" )
@@ -141,22 +139,6 @@ public class ConvertingImpl implements C
}
@Override
- public InternalConverting key(Object ... ks) {
- for (Object k : ks) {
- keys.add(k);
- }
-
- return this;
- }
-
- @Override
- public InternalConverting root(Object rootObject) {
- if (root == null)
- root = rootObject;
- return this;
- }
-
- @Override
public void setConverter(Converter c) {
if (c instanceof InternalConverter)
converter = (InternalConverter) c;
@@ -345,10 +327,6 @@ public class ConvertingImpl implements C
Map m = mapView(object, sourceClass, converter);
if (m == null)
return null;
- Type targetKeyType = null;
- if (typeArguments != null && typeArguments.length > 0) {
- targetKeyType = typeArguments[0];
- }
Class<?> ctrCls = interfaceImplementations.get(targetClass);
if (ctrCls == null)
@@ -359,21 +337,16 @@ public class ConvertingImpl implements C
return null;
for (Map.Entry entry : (Set<Entry>) m.entrySet()) {
- List<Object> ks = new ArrayList<>(keys);
Object key = entry.getKey();
- if (targetKeyType != null)
- key = converter.convert(key).key(ks.toArray()).to(targetKeyType);
- ks.add(key);
-
Object value = entry.getValue();
- value = convertMapValue(value, ks.toArray());
+ value = convertMapValue(value);
instance.put(key, value);
}
return instance;
}
- Object convertMapValue(Object value, Object[] ka) {
+ Object convertMapValue(Object value) {
Type targetValueType = null;
if (typeArguments != null && typeArguments.length > 1) {
targetValueType = typeArguments[1];
@@ -381,16 +354,16 @@ public class ConvertingImpl implements C
if (value != null) {
if (targetValueType != null) {
- value = converter.convert(value).key(ka).to(targetValueType);
+ value = converter.convert(value).to(targetValueType);
} else {
Class<?> cls = value.getClass();
if (isCopyRequiredType(cls)) {
cls = getConstructableType(cls);
}
if (sourceAsDTO && DTO.class.isAssignableFrom(cls))
- value = converter.convert(value).key(ka).sourceAsDTO().to(cls);
+ value = converter.convert(value).sourceAsDTO().to(cls);
else
- value = converter.convert(value).key(ka).to(cls);
+ value = converter.convert(value).to(cls);
}
}
return value;
@@ -780,15 +753,7 @@ public class ConvertingImpl implements C
return; // Field with this name was already handled
try {
- List<Object> ks = new ArrayList<>(keys);
- ks.add(fn);
- Object[] ka = ks.toArray();
-
Object fVal = field.get(obj);
- if (isMapType(field.getType())) {
- fVal = converter.convert(fVal).key(ka).to(Map.class);
- }
-
result.put(fn, fVal);
handledFields.add(fn);
} catch (Exception e) {
Modified: felix/trunk/converter/converter/src/main/java/org/apache/felix/converter/impl/InternalConverting.java
URL: http://svn.apache.org/viewvc/felix/trunk/converter/converter/src/main/java/org/apache/felix/converter/impl/InternalConverting.java?rev=1785505&r1=1785504&r2=1785505&view=diff
==============================================================================
--- felix/trunk/converter/converter/src/main/java/org/apache/felix/converter/impl/InternalConverting.java (original)
+++ felix/trunk/converter/converter/src/main/java/org/apache/felix/converter/impl/InternalConverting.java Sat Mar 4 16:44:38 2017
@@ -21,8 +21,4 @@ import org.osgi.util.converter.Convertin
public interface InternalConverting extends Converting {
void setConverter(Converter c);
-
- InternalConverting key(Object ... keys);
-
- InternalConverting root(Object rootObject);
}
Modified: felix/trunk/converter/converter/src/main/java/org/apache/felix/converter/impl/MapDelegate.java
URL: http://svn.apache.org/viewvc/felix/trunk/converter/converter/src/main/java/org/apache/felix/converter/impl/MapDelegate.java?rev=1785505&r1=1785504&r2=1785505&view=diff
==============================================================================
--- felix/trunk/converter/converter/src/main/java/org/apache/felix/converter/impl/MapDelegate.java (original)
+++ felix/trunk/converter/converter/src/main/java/org/apache/felix/converter/impl/MapDelegate.java Sat Mar 4 16:44:38 2017
@@ -92,9 +92,7 @@ class MapDelegate<K, V> implements Map<K
}
private Object getConvertedValue(Object key, Object val) {
- List<Object> ks = new ArrayList<>(convertingImpl.keys);
- ks.add(key);
- return convertingImpl.convertMapValue(val, ks.toArray());
+ return convertingImpl.convertMapValue(val);
}
private Object findConvertedKey(Set<?> keySet, Object key) {
Modified: felix/trunk/converter/converter/src/test/java/org/apache/felix/converter/impl/ConverterBuilderTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/converter/converter/src/test/java/org/apache/felix/converter/impl/ConverterBuilderTest.java?rev=1785505&r1=1785504&r2=1785505&view=diff
==============================================================================
--- felix/trunk/converter/converter/src/test/java/org/apache/felix/converter/impl/ConverterBuilderTest.java (original)
+++ felix/trunk/converter/converter/src/test/java/org/apache/felix/converter/impl/ConverterBuilderTest.java Sat Mar 4 16:44:38 2017
@@ -19,7 +19,6 @@ package org.apache.felix.converter.impl;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Dictionary;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
@@ -200,48 +199,6 @@ public class ConverterBuilderTest {
assertEquals("17", cc.convert(mb).sourceAs(MyIntf.class).to(MyCustomDTO.class).field);
}
- @Test
- public void testConvertWithKeys() {
- ConverterBuilder cb = converter.newConverterBuilder();
- ConvertFunction<Number, String> ntc = new ConvertFunction<Number, String>() {
- @Override
- public String convert(Number obj, Type targetType, Object root, Object[] key) throws Exception {
- if ("cost".equals(key[0]))
- return "$" + obj + ".00";
- else
- return "" + obj;
- }
- };
- ConvertFunction<String, Number> ctn = new ConvertFunction<String, Number>() {
- @Override
- public Number convert(String obj, Type targetType, Object root, Object[] key) throws Exception {
- if ("cost".equals(key[0])) {
- int dotIdx = obj.indexOf('.');
- obj = obj.substring(1, dotIdx); // eat off dollar sign and decimals
- }
- return Integer.parseInt(obj);
- }
- };
- cb.rule(new Rule<Number, String>(Number.class, String.class, ntc, ctn));
- Converter c = cb.build();
-
- Map<String, Integer> m = new HashMap<>();
- m.put("amount", 7);
- m.put("cost", 100);
-
- // Convert to Dictionary<String,String>
- Dictionary<String,String> d = c.convert(m).to(new TypeReference<Dictionary<String, String>>(){});
- assertEquals(2, d.size());
- assertEquals("7", d.get("amount"));
- assertEquals("$100.00", d.get("cost"));
-
- // Convert back to HashMap<String,Integer>
- HashMap<String, Integer> hm = c.convert(d).to(new TypeReference<HashMap<String, Integer>>() {});
- assertEquals(2, hm.size());
- assertEquals(7, (int) hm.get("amount"));
- assertEquals(100, (int) hm.get("cost"));
- }
-
@SuppressWarnings("rawtypes")
@Test @Ignore("This test assumes that the all the embedded objects are also converted to maps, but they aren't")
public void testConvertWithKeysDeep() {