fix #2579 add AbstractConfigHelper
This commit is contained in:
parent
6375002de0
commit
92a618477b
8 changed files with 75 additions and 54 deletions
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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) {
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -15,8 +15,6 @@
|
|||
*/
|
||||
package org.codelibs.fess.job;
|
||||
|
||||
import org.codelibs.fess.Constants;
|
||||
|
||||
public abstract class JobExecutor {
|
||||
protected ShutdownListener shutdownListener;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue