fix #2579 add AbstractConfigHelper

This commit is contained in:
Shinsuke Sugaya 2021-06-24 08:36:02 +09:00
parent 6375002de0
commit 92a618477b
8 changed files with 75 additions and 54 deletions

View file

@ -0,0 +1,40 @@
/*
* Copyright 2012-2021 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.helper;
import org.codelibs.core.concurrent.CommonPoolUtil;
import org.codelibs.core.lang.ThreadUtil;
public abstract class AbstractConfigHelper {
protected long reloadInterval = 1000L;
public void update() {
CommonPoolUtil.execute(() -> load());
}
protected void waitForNext() {
if (reloadInterval > 0) {
ThreadUtil.sleep(reloadInterval);
}
}
public abstract int load();
public void setReloadInterval(final long reloadInterval) {
this.reloadInterval = reloadInterval;
}
}

View file

@ -26,9 +26,7 @@ import javax.annotation.PostConstruct;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.codelibs.core.concurrent.CommonPoolUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.core.lang.ThreadUtil;
import org.codelibs.core.misc.Tuple3;
import org.codelibs.fesen.index.query.BoolQueryBuilder;
import org.codelibs.fesen.index.query.QueryBuilder;
@ -46,24 +44,18 @@ import org.codelibs.fess.mylasta.direction.FessConfig;
import org.codelibs.fess.util.ComponentUtil;
import org.codelibs.fess.util.DocumentUtil;
public class KeyMatchHelper {
public class KeyMatchHelper extends AbstractConfigHelper {
private static final Logger logger = LogManager.getLogger(KeyMatchHelper.class);
protected volatile Map<String, Map<String, List<Tuple3<String, QueryBuilder, ScoreFunctionBuilder<?>>>>> keyMatchQueryMap =
Collections.emptyMap();
protected long reloadInterval = 1000L;
@PostConstruct
public void init() {
if (logger.isDebugEnabled()) {
logger.debug("Initialize {}", this.getClass().getSimpleName());
}
reload(0);
}
public void update() {
CommonPoolUtil.execute(() -> reload(reloadInterval));
load();
}
public List<KeyMatch> getAvailableKeyMatchList() {
@ -73,7 +65,8 @@ public class KeyMatchHelper {
});
}
protected void reload(final long interval) {
@Override
public int load() {
final FessConfig fessConfig = ComponentUtil.getFessConfig();
final Map<String, Map<String, List<Tuple3<String, QueryBuilder, ScoreFunctionBuilder<?>>>>> keyMatchQueryMap = new HashMap<>();
getAvailableKeyMatchList().stream().forEach(keyMatch -> {
@ -116,14 +109,13 @@ public class KeyMatchHelper {
logger.debug("No KeyMatch boost docs");
}
if (interval > 0) {
ThreadUtil.sleep(interval);
}
waitForNext();
} catch (final Exception e) {
logger.warn("Cannot load {}", keyMatch, e);
}
});
this.keyMatchQueryMap = keyMatchQueryMap;
return keyMatchQueryMap.size();
}
protected List<Map<String, Object>> getDocumentList(final KeyMatch keyMatch) {
@ -136,14 +128,6 @@ public class KeyMatchHelper {
.responseFields(new String[] { fessConfig.getIndexFieldDocId() }).build());
}
public long getReloadInterval() {
return reloadInterval;
}
public void setReloadInterval(final long reloadInterval) {
this.reloadInterval = reloadInterval;
}
protected Map<String, List<Tuple3<String, QueryBuilder, ScoreFunctionBuilder<?>>>> getQueryMap(final String key) {
final Map<String, List<Tuple3<String, QueryBuilder, ScoreFunctionBuilder<?>>>> map = keyMatchQueryMap.get(key);
if (map != null) {

View file

@ -39,7 +39,7 @@ import org.codelibs.fess.entity.SearchRequestParams.SearchRequestType;
import org.codelibs.fess.es.config.exentity.LabelType;
import org.codelibs.fess.util.ComponentUtil;
public class LabelTypeHelper {
public class LabelTypeHelper extends AbstractConfigHelper {
private static final Logger logger = LogManager.getLogger(LabelTypeHelper.class);
protected volatile List<LabelTypeItem> labelTypeItemList;
@ -51,10 +51,11 @@ public class LabelTypeHelper {
if (logger.isDebugEnabled()) {
logger.debug("Initialize {}", this.getClass().getSimpleName());
}
update();
load();
}
public int update() {
@Override
public int load() {
final List<LabelType> labelTypeList = ComponentUtil.getComponent(LabelTypeService.class).getLabelTypeList();
buildLabelTypeItems(labelTypeList);
buildLabelTypePatternList(labelTypeList);

View file

@ -36,7 +36,7 @@ import org.lastaflute.di.core.exception.ComponentNotFoundException;
import org.lastaflute.di.core.factory.SingletonLaContainerFactory;
import org.lastaflute.web.util.LaRequestUtil;
public class PathMappingHelper {
public class PathMappingHelper extends AbstractConfigHelper {
private static final Logger logger = LogManager.getLogger(PathMappingHelper.class);
@ -53,10 +53,11 @@ public class PathMappingHelper {
if (logger.isDebugEnabled()) {
logger.debug("Initialize {}", this.getClass().getSimpleName());
}
update();
load();
}
public int update() {
@Override
public int load() {
final List<String> ptList = getProcessTypeList();
try {

View file

@ -33,11 +33,11 @@ import org.codelibs.fess.es.config.exbhv.RelatedContentBhv;
import org.codelibs.fess.es.config.exentity.RelatedContent;
import org.codelibs.fess.util.ComponentUtil;
public class RelatedContentHelper {
public class RelatedContentHelper extends AbstractConfigHelper {
private static final Logger logger = LogManager.getLogger(RelatedContentHelper.class);
protected volatile Map<String, Pair<Map<String, String>, List<Pair<Pattern, String>>>> relatedContentMap = Collections.emptyMap();
protected Map<String, Pair<Map<String, String>, List<Pair<Pattern, String>>>> relatedContentMap = Collections.emptyMap();
protected String regexPrefix = "regex:";
@ -48,15 +48,10 @@ public class RelatedContentHelper {
if (logger.isDebugEnabled()) {
logger.debug("Initialize {}", this.getClass().getSimpleName());
}
reload();
}
public int update() {
return reload();
load();
}
public List<RelatedContent> getAvailableRelatedContentList() {
return ComponentUtil.getComponent(RelatedContentBhv.class).selectList(cb -> {
cb.query().matchAll();
cb.query().addOrderBy_SortOrder_Asc();
@ -65,7 +60,8 @@ public class RelatedContentHelper {
});
}
protected int reload() {
@Override
public int load() {
final Map<String, Pair<Map<String, String>, List<Pair<Pattern, String>>>> relatedContentMap = new HashMap<>();
getAvailableRelatedContentList().stream().forEach(entity -> {
final String key = getHostKey(entity);

View file

@ -30,7 +30,7 @@ import org.codelibs.fess.es.config.exbhv.RelatedQueryBhv;
import org.codelibs.fess.es.config.exentity.RelatedQuery;
import org.codelibs.fess.util.ComponentUtil;
public class RelatedQueryHelper {
public class RelatedQueryHelper extends AbstractConfigHelper {
private static final Logger logger = LogManager.getLogger(RelatedQueryHelper.class);
protected volatile Map<String, Map<String, String[]>> relatedQueryMap = Collections.emptyMap();
@ -40,11 +40,7 @@ public class RelatedQueryHelper {
if (logger.isDebugEnabled()) {
logger.debug("Initialize {}", this.getClass().getSimpleName());
}
reload();
}
public int update() {
return reload();
load();
}
public List<RelatedQuery> getAvailableRelatedQueryList() {
@ -56,7 +52,8 @@ public class RelatedQueryHelper {
});
}
protected int reload() {
@Override
public int load() {
final Map<String, Map<String, String[]>> relatedQueryMap = new HashMap<>();
getAvailableRelatedQueryList().stream().forEach(entity -> {
final String key = getHostKey(entity);

View file

@ -468,15 +468,18 @@ public class SystemHelper {
public void reloadConfiguration() {
ComponentUtil.getSearchEngineClient().refresh();
ComponentUtil.getLabelTypeHelper().init();
ComponentUtil.getPathMappingHelper().init();
ComponentUtil.getSuggestHelper().init();
ComponentUtil.getPopularWordHelper().init();
ComponentUtil.getJobManager().reboot();
ComponentUtil.getLdapManager().updateConfig();
ComponentUtil.getLabelTypeHelper().update();
ComponentUtil.getPathMappingHelper().update();
ComponentUtil.getRelatedContentHelper().update();
ComponentUtil.getRelatedQueryHelper().update();
ComponentUtil.getKeyMatchHelper().update();
ComponentUtil.getLdapManager().updateConfig();
ComponentUtil.getJobManager().reboot();
updateSystemProperties();
}
@ -506,10 +509,11 @@ public class SystemHelper {
public String updateConfiguration() {
final StringBuilder buf = new StringBuilder();
buf.append("Label: ").append(ComponentUtil.getLabelTypeHelper().update()).append("\n");
buf.append("PathMapping: ").append(ComponentUtil.getPathMappingHelper().update()).append("\n");
buf.append("RelatedContent: ").append(ComponentUtil.getRelatedContentHelper().update()).append("\n");
buf.append("RelatedQuery: ").append(ComponentUtil.getRelatedQueryHelper().update()).append("\n");
buf.append("Label: ").append(ComponentUtil.getLabelTypeHelper().load()).append("\n");
buf.append("PathMapping: ").append(ComponentUtil.getPathMappingHelper().load()).append("\n");
buf.append("RelatedContent: ").append(ComponentUtil.getRelatedContentHelper().load()).append("\n");
buf.append("RelatedQuery: ").append(ComponentUtil.getRelatedQueryHelper().load()).append("\n");
buf.append("KeyMatch: ").append(ComponentUtil.getKeyMatchHelper().load()).append("\n");
return buf.toString();
}

View file

@ -15,8 +15,6 @@
*/
package org.codelibs.fess.job;
import org.codelibs.fess.Constants;
public abstract class JobExecutor {
protected ShutdownListener shutdownListener;