fix #474 : evalue value without groovy
This commit is contained in:
parent
d5ee67e99b
commit
35ff9c83de
2 changed files with 58 additions and 9 deletions
|
@ -30,6 +30,7 @@ import org.codelibs.fess.helper.CrawlingInfoHelper;
|
|||
import org.codelibs.fess.helper.SystemHelper;
|
||||
import org.codelibs.fess.mylasta.direction.FessConfig;
|
||||
import org.codelibs.fess.util.ComponentUtil;
|
||||
import org.codelibs.fess.util.GroovyUtil;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
|
@ -114,16 +115,11 @@ public abstract class AbstractDataStoreImpl implements DataStore {
|
|||
return StringUtil.EMPTY;
|
||||
}
|
||||
|
||||
try {
|
||||
final Object value = new GroovyShell(new Binding(paramMap)).evaluate(template);
|
||||
if (value == null) {
|
||||
return null;
|
||||
}
|
||||
return value;
|
||||
} catch (final Exception e) {
|
||||
logger.warn("Invalid value format: " + template + " => " + paramMap, e);
|
||||
return null;
|
||||
if (paramMap.containsKey(template)) {
|
||||
return paramMap.get(template);
|
||||
}
|
||||
|
||||
return GroovyUtil.evaluate(template, paramMap);
|
||||
}
|
||||
|
||||
protected long getReadInterval(final Map<String, String> paramMap) {
|
||||
|
|
53
src/main/java/org/codelibs/fess/util/GroovyUtil.java
Normal file
53
src/main/java/org/codelibs/fess/util/GroovyUtil.java
Normal file
|
@ -0,0 +1,53 @@
|
|||
/*
|
||||
* Copyright 2012-2016 CodeLibs Project and the Others.
|
||||
*
|
||||
* Licensed 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.codelibs.fess.util;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import groovy.lang.Binding;
|
||||
import groovy.lang.GroovyClassLoader;
|
||||
import groovy.lang.GroovyShell;
|
||||
|
||||
public final class GroovyUtil {
|
||||
private static final Logger logger = LoggerFactory.getLogger(GroovyUtil.class);
|
||||
|
||||
private GroovyUtil() {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public static <T> Object evaluate(final String template, final Map<String, T> paramMap) {
|
||||
final GroovyShell groovyShell = new GroovyShell(new Binding(paramMap));
|
||||
try {
|
||||
return groovyShell.evaluate(template);
|
||||
} catch (final Exception e) {
|
||||
logger.warn("Failed to evalue groovy script: " + template + " => " + paramMap, e);
|
||||
return null;
|
||||
} finally {
|
||||
final GroovyClassLoader loader = groovyShell.getClassLoader();
|
||||
// StreamUtil.of(loader.getLoadedClasses()).forEach(c -> {
|
||||
// try {
|
||||
// GroovySystem.getMetaClassRegistry().removeMetaClass(c);
|
||||
// } catch (Throwable t) {
|
||||
// logger.warn("Failed to delete " + c, t);
|
||||
// }
|
||||
// });
|
||||
loader.clearCache();
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue