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() {