Преглед на файлове

fix #726 set container to groovy context

Shinsuke Sugaya преди 8 години
родител
ревизия
a834890f24

+ 1 - 1
src/main/java/org/codelibs/fess/ds/impl/AbstractDataStoreImpl.java

@@ -107,7 +107,7 @@ public abstract class AbstractDataStoreImpl implements DataStore {
 
     }
 
-    protected <T> Object convertValue(final String template, final Map<String, T> paramMap) {
+    protected Object convertValue(final String template, final Map<String, Object> paramMap) {
         if (StringUtil.isEmpty(template)) {
             return StringUtil.EMPTY;
         }

+ 2 - 2
src/main/java/org/codelibs/fess/ds/impl/CsvDataStoreImpl.java

@@ -190,7 +190,7 @@ public class CsvDataStoreImpl extends AbstractDataStoreImpl {
             while ((list = csvReader.readValues()) != null && loop && alive) {
                 final Map<String, Object> dataMap = new HashMap<>();
                 dataMap.putAll(defaultDataMap);
-                final Map<String, String> resultMap = new LinkedHashMap<>();
+                final Map<String, Object> resultMap = new LinkedHashMap<>();
                 resultMap.putAll(paramMap);
                 resultMap.put("csvfile", csvFile.getAbsolutePath());
                 resultMap.put("csvfilename", csvFile.getName());
@@ -219,7 +219,7 @@ public class CsvDataStoreImpl extends AbstractDataStoreImpl {
                 }
 
                 if (logger.isDebugEnabled()) {
-                    for (final Map.Entry<String, String> entry : resultMap.entrySet()) {
+                    for (final Map.Entry<String, Object> entry : resultMap.entrySet()) {
                         logger.debug(entry.getKey() + "=" + entry.getValue());
                     }
                 }

+ 8 - 8
src/main/java/org/codelibs/fess/ds/impl/DatabaseDataStoreImpl.java

@@ -193,8 +193,8 @@ public class DatabaseDataStoreImpl extends AbstractDataStoreImpl {
         return convertValue(template, new ResultSetParamMap(rs, paramMap));
     }
 
-    protected static class ResultSetParamMap implements Map<String, String> {
-        private final Map<String, String> paramMap = new HashMap<>();
+    protected static class ResultSetParamMap implements Map<String, Object> {
+        private final Map<String, Object> paramMap = new HashMap<>();
 
         public ResultSetParamMap(final ResultSet resultSet, final Map<String, String> paramMap) {
             this.paramMap.putAll(paramMap);
@@ -233,12 +233,12 @@ public class DatabaseDataStoreImpl extends AbstractDataStoreImpl {
         }
 
         @Override
-        public Set<java.util.Map.Entry<String, String>> entrySet() {
+        public Set<java.util.Map.Entry<String, Object>> entrySet() {
             return paramMap.entrySet();
         }
 
         @Override
-        public String get(final Object key) {
+        public Object get(final Object key) {
             return paramMap.get(key);
         }
 
@@ -253,17 +253,17 @@ public class DatabaseDataStoreImpl extends AbstractDataStoreImpl {
         }
 
         @Override
-        public String put(final String key, final String value) {
+        public Object put(final String key, final Object value) {
             return paramMap.put(key, value);
         }
 
         @Override
-        public void putAll(final Map<? extends String, ? extends String> m) {
+        public void putAll(final Map<? extends String, ? extends Object> m) {
             paramMap.putAll(m);
         }
 
         @Override
-        public String remove(final Object key) {
+        public Object remove(final Object key) {
             return paramMap.remove(key);
         }
 
@@ -273,7 +273,7 @@ public class DatabaseDataStoreImpl extends AbstractDataStoreImpl {
         }
 
         @Override
-        public Collection<String> values() {
+        public Collection<Object> values() {
             return paramMap.values();
         }
 

+ 0 - 2
src/main/java/org/codelibs/fess/job/impl/GroovyExecutor.java

@@ -20,14 +20,12 @@ import java.util.Map;
 
 import org.codelibs.fess.job.JobExecutor;
 import org.codelibs.fess.util.GroovyUtil;
-import org.lastaflute.di.core.factory.SingletonLaContainerFactory;
 
 public class GroovyExecutor extends JobExecutor {
 
     @Override
     public Object execute(final String script) {
         final Map<String, Object> params = new HashMap<>();
-        params.put("container", SingletonLaContainerFactory.getContainer());
         params.put("executor", this);
 
         return GroovyUtil.evaluate(script, params);

+ 6 - 2
src/main/java/org/codelibs/fess/util/GroovyUtil.java

@@ -15,8 +15,10 @@
  */
 package org.codelibs.fess.util;
 
+import java.util.HashMap;
 import java.util.Map;
 
+import org.lastaflute.di.core.factory.SingletonLaContainerFactory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -31,8 +33,10 @@ public final class GroovyUtil {
         // nothing
     }
 
-    public static <T> Object evaluate(final String template, final Map<String, T> paramMap) {
-        final GroovyShell groovyShell = new GroovyShell(new Binding(paramMap));
+    public static Object evaluate(final String template, final Map<String, Object> paramMap) {
+        final Map<String, Object> bindingMap = new HashMap<>(paramMap);
+        bindingMap.put("container", SingletonLaContainerFactory.getContainer());
+        final GroovyShell groovyShell = new GroovyShell(new Binding(bindingMap));
         try {
             return groovyShell.evaluate(template);
         } catch (final Exception e) {

+ 1 - 1
src/test/java/org/codelibs/fess/ds/impl/DatabaseDataStoreImplTest.java

@@ -31,7 +31,7 @@ public class DatabaseDataStoreImplTest extends UnitFessTestCase {
 
     public void test_convertValue() {
         String value;
-        final Map<String, String> paramMap = new HashMap<String, String>();
+        final Map<String, Object> paramMap = new HashMap<>();
         paramMap.put("param1", "PARAM1");
         paramMap.put("param2", "PARAM2+");
         paramMap.put("param3", "PARAM3*");