浏览代码

fix #2691 use ParamMap

Shinsuke Sugaya 2 年之前
父节点
当前提交
ff3c294537

+ 11 - 3
src/main/java/org/codelibs/fess/entity/DataStoreParams.java

@@ -23,11 +23,11 @@ public class DataStoreParams {
     protected final Map<String, Object> params;
 
     public DataStoreParams() {
-        params = new HashMap<>();
+        params = new ParamMap<>(new HashMap<>());
     }
 
     protected DataStoreParams(final Map<String, Object> params) {
-        this.params = new HashMap<>(params);
+        this.params = new ParamMap<>(new HashMap<>(getDataMap(params)));
     }
 
     public void put(final String key, final Object value) {
@@ -70,6 +70,14 @@ public class DataStoreParams {
     }
 
     public Map<String, Object> asMap() {
-        return new HashMap<>(params);
+        return new ParamMap<>(new HashMap<>(getDataMap(params)));
+    }
+
+    protected static Map<String, Object> getDataMap(final Map<String, Object> params) {
+        if (params instanceof ParamMap<String, Object> paramMap) {
+            return paramMap.getParent();
+        } else {
+            return params;
+        }
     }
 }

+ 5 - 1
src/main/java/org/codelibs/fess/ds/ParamMap.java → src/main/java/org/codelibs/fess/entity/ParamMap.java

@@ -13,7 +13,7 @@
  * either express or implied. See the License for the specific language
  * governing permissions and limitations under the License.
  */
-package org.codelibs.fess.ds;
+package org.codelibs.fess.entity;
 
 import java.util.Collection;
 import java.util.Map;
@@ -34,6 +34,10 @@ public class ParamMap<K, V> implements Map<K, V> {
         this.parent = parent;
     }
 
+    public Map<K, V> getParent() {
+        return parent;
+    }
+
     protected Object toCamelCase(final Object key) {
         if (key == null) {
             return key;

+ 2 - 1
src/test/java/org/codelibs/fess/ds/ParamMapTest.java → src/test/java/org/codelibs/fess/entity/ParamMapTest.java

@@ -13,11 +13,12 @@
  * either express or implied. See the License for the specific language
  * governing permissions and limitations under the License.
  */
-package org.codelibs.fess.ds;
+package org.codelibs.fess.entity;
 
 import java.util.HashMap;
 import java.util.Map;
 
+import org.codelibs.fess.entity.ParamMap;
 import org.codelibs.fess.unit.UnitFessTestCase;
 
 public class ParamMapTest extends UnitFessTestCase {