You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by mt...@apache.org on 2019/06/27 14:40:25 UTC

svn commit: r1862228 - in /ofbiz/ofbiz-framework/trunk/framework/base/src: main/java/org/apache/ofbiz/base/conversion/ main/java/org/apache/ofbiz/base/util/ test/java/org/apache/ofbiz/base/conversion/ test/java/org/apache/ofbiz/base/util/

Author: mthl
Date: Thu Jun 27 14:40:25 2019
New Revision: 1862228

URL: http://svn.apache.org/viewvc?rev=1862228&view=rev
Log:
Improved: Inline ‘StringUtil#toMap’
(OFBIZ-11014)

‘StringUtil#toMap’ was only used in the ‘CollectionConverters.StringToMap’
converter so in order to clean ‘StringUtil’ it seems better to inline it.  The
corresponding tests has been adapted to check
‘CollectionConverters.StringToMap#convert’ behavior instead.

Added:
    ofbiz/ofbiz-framework/trunk/framework/base/src/test/java/org/apache/ofbiz/base/conversion/CollectionConvertersTest.java   (with props)
Modified:
    ofbiz/ofbiz-framework/trunk/framework/base/src/main/java/org/apache/ofbiz/base/conversion/CollectionConverters.java
    ofbiz/ofbiz-framework/trunk/framework/base/src/main/java/org/apache/ofbiz/base/util/StringUtil.java
    ofbiz/ofbiz-framework/trunk/framework/base/src/test/java/org/apache/ofbiz/base/util/StringUtilTests.java

Modified: ofbiz/ofbiz-framework/trunk/framework/base/src/main/java/org/apache/ofbiz/base/conversion/CollectionConverters.java
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/base/src/main/java/org/apache/ofbiz/base/conversion/CollectionConverters.java?rev=1862228&r1=1862227&r2=1862228&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/framework/base/src/main/java/org/apache/ofbiz/base/conversion/CollectionConverters.java (original)
+++ ofbiz/ofbiz-framework/trunk/framework/base/src/main/java/org/apache/ofbiz/base/conversion/CollectionConverters.java Thu Jun 27 14:40:25 2019
@@ -25,6 +25,7 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.stream.Collectors;
 
 import org.apache.ofbiz.base.util.StringUtil;
 import org.apache.ofbiz.base.util.UtilGenerics;
@@ -167,10 +168,14 @@ public class CollectionConverters implem
 
         @Override
         public Map<String, String> convert(String obj) throws ConversionException {
-            if (obj.startsWith("{") && obj.endsWith("}")) {
-                return StringUtil.toMap(obj);
+            if (!obj.startsWith("{") || !obj.endsWith("}")) {
+                throw new ConversionException("Could not convert " + obj + " to Map: ");
             }
-            throw new ConversionException("Could not convert " + obj + " to Map: ");
+            String kvs = obj.substring(1, obj.length() - 1);
+            return Arrays.stream(kvs.split("\\,\\s"))
+                    .map(entry -> entry.split("\\="))
+                    .filter(kv -> kv.length == 2)
+                    .collect(Collectors.toMap(kv -> kv[0], kv -> kv[1]));
         }
     }
 

Modified: ofbiz/ofbiz-framework/trunk/framework/base/src/main/java/org/apache/ofbiz/base/util/StringUtil.java
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/base/src/main/java/org/apache/ofbiz/base/util/StringUtil.java?rev=1862228&r1=1862227&r2=1862228&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/framework/base/src/main/java/org/apache/ofbiz/base/util/StringUtil.java (original)
+++ ofbiz/ofbiz-framework/trunk/framework/base/src/main/java/org/apache/ofbiz/base/util/StringUtil.java Thu Jun 27 14:40:25 2019
@@ -212,33 +212,6 @@ public class StringUtil {
         return strToMap(str, "|", false);
     }
 
-
-    /**
-     * Reads a String version of a Map (should contain only strings) and creates a new Map.
-     * Partial Map elements are skipped: <code>{foo=fooValue, bar=}</code> will contain only
-     * the foo element.
-     *
-     * @param s String value of a Map ({n1=v1, n2=v2})
-     * @return new Map
-     */
-    public static Map<String, String> toMap(String s) {
-        Map<String, String> newMap = new HashMap<>();
-        if (s.startsWith("{") && s.endsWith("}")) {
-            s = s.substring(1, s.length() - 1);
-            String[] entries = s.split("\\,\\s");
-            for (String entry: entries) {
-                String[] nv = entry.split("\\=");
-                if (nv.length == 2) {
-                    newMap.put(nv[0], nv[1]);
-                }
-            }
-        } else {
-            throw new IllegalArgumentException("String is not from Map.toString()");
-        }
-
-        return newMap;
-    }
-
     /**
      * Reads a String version of a List (should contain only strings) and creates a new List
      *

Added: ofbiz/ofbiz-framework/trunk/framework/base/src/test/java/org/apache/ofbiz/base/conversion/CollectionConvertersTest.java
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/base/src/test/java/org/apache/ofbiz/base/conversion/CollectionConvertersTest.java?rev=1862228&view=auto
==============================================================================
--- ofbiz/ofbiz-framework/trunk/framework/base/src/test/java/org/apache/ofbiz/base/conversion/CollectionConvertersTest.java (added)
+++ ofbiz/ofbiz-framework/trunk/framework/base/src/test/java/org/apache/ofbiz/base/conversion/CollectionConvertersTest.java Thu Jun 27 14:40:25 2019
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.ofbiz.base.conversion;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.util.Map;
+
+import org.apache.ofbiz.base.util.UtilMisc;
+import org.junit.Test;
+
+public class CollectionConvertersTest {
+
+    @Test
+    public void testToMap() throws ConversionException {
+        Converter<String, Map<String, String>> cvt = new CollectionConverters.StringToMap();
+        for (String s: new String[] {"", "{", "}", "}{"}) {
+            ConversionException caught = null;
+            try {
+                cvt.convert(s);
+            } catch (ConversionException e) {
+                caught = e;
+            } finally {
+                assertNotNull("bad(" + s + ")", caught);
+            }
+        }
+        assertEquals("single", UtilMisc.toMap("1", "one"), cvt.convert("{1=one}"));
+        assertEquals("double", UtilMisc.toMap("2", "two", "1", "one"), cvt.convert("{1=one, 2=two}"));
+        assertEquals("double-space", UtilMisc.toMap("2", "two ", " 1", "one"), cvt.convert("{ 1=one, 2=two }"));
+    }
+}

Propchange: ofbiz/ofbiz-framework/trunk/framework/base/src/test/java/org/apache/ofbiz/base/conversion/CollectionConvertersTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/ofbiz-framework/trunk/framework/base/src/test/java/org/apache/ofbiz/base/conversion/CollectionConvertersTest.java
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author URL Id

Propchange: ofbiz/ofbiz-framework/trunk/framework/base/src/test/java/org/apache/ofbiz/base/conversion/CollectionConvertersTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: ofbiz/ofbiz-framework/trunk/framework/base/src/test/java/org/apache/ofbiz/base/util/StringUtilTests.java
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/base/src/test/java/org/apache/ofbiz/base/util/StringUtilTests.java?rev=1862228&r1=1862227&r2=1862228&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/framework/base/src/test/java/org/apache/ofbiz/base/util/StringUtilTests.java (original)
+++ ofbiz/ofbiz-framework/trunk/framework/base/src/test/java/org/apache/ofbiz/base/util/StringUtilTests.java Thu Jun 27 14:40:25 2019
@@ -84,23 +84,6 @@ public class StringUtilTests {
     }
 
     @Test
-    public void testToMap() {
-        for (String s: new String[] {"", "{", "}", "}{"}) {
-            IllegalArgumentException caught = null;
-            try {
-                StringUtil.toMap(s);
-            } catch (IllegalArgumentException e) {
-                caught = e;
-            } finally {
-                assertNotNull("bad(" + s + ")", caught);
-            }
-        }
-        assertEquals("single", UtilMisc.toMap("1", "one"), StringUtil.toMap("{1=one}"));
-        assertEquals("double", UtilMisc.toMap("2", "two", "1", "one"), StringUtil.toMap("{1=one, 2=two}"));
-        assertEquals("double-space", UtilMisc.toMap("2", "two ", " 1", "one"), StringUtil.toMap("{ 1=one, 2=two }"));
-    }
-
-    @Test
     public void testToList() {
         for (String s: new String[] {"", "[", "]", "]["}) {
             IllegalArgumentException caught = null;