fix #726 set container to groovy context

This commit is contained in:
Shinsuke Sugaya 2016-10-03 22:55:13 +09:00
parent 51c3017f35
commit a834890f24
6 changed files with 18 additions and 16 deletions

View file

@ -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;
}

View file

@ -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());
}
}

View file

@ -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();
}

View file

@ -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);

View file

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

View file

@ -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*");