diff --git a/dbflute.xml b/dbflute.xml index e33b2e784..75556ae0f 100644 --- a/dbflute.xml +++ b/dbflute.xml @@ -2,7 +2,7 @@ - + diff --git a/plugin.xml b/plugin.xml index 01d989ad1..7cd941259 100644 --- a/plugin.xml +++ b/plugin.xml @@ -13,66 +13,66 @@ - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + diff --git a/pom.xml b/pom.xml index 3c70e4993..53b9cf282 100644 --- a/pom.xml +++ b/pom.xml @@ -63,10 +63,10 @@ 2.2.0-SNAPSHOT - 6.2.1 + 6.3.0-SNAPSHOT - 6.2.4 + 6.3.0 6.0.0 ${elasticsearch.version}.0 @@ -1265,6 +1265,11 @@ corelib 0.4.0-SNAPSHOT + + org.codelibs + curl4j + 1.0.0 + org.codelibs spnego diff --git a/src/main/java/org/codelibs/fess/api/es/EsApiManager.java b/src/main/java/org/codelibs/fess/api/es/EsApiManager.java index c2ab7df24..cb722dd57 100644 --- a/src/main/java/org/codelibs/fess/api/es/EsApiManager.java +++ b/src/main/java/org/codelibs/fess/api/es/EsApiManager.java @@ -33,8 +33,8 @@ import javax.servlet.http.HttpServletResponse; import org.apache.catalina.connector.ClientAbortException; import org.codelibs.core.io.CopyUtil; import org.codelibs.core.lang.StringUtil; -import org.codelibs.elasticsearch.runner.net.Curl.Method; -import org.codelibs.elasticsearch.runner.net.CurlRequest; +import org.codelibs.curl.Curl.Method; +import org.codelibs.curl.CurlRequest; import org.codelibs.fess.Constants; import org.codelibs.fess.api.BaseApiManager; import org.codelibs.fess.exception.FessSystemException; diff --git a/src/main/java/org/codelibs/fess/api/json/JsonApiManager.java b/src/main/java/org/codelibs/fess/api/json/JsonApiManager.java index 76843712a..fca85c059 100644 --- a/src/main/java/org/codelibs/fess/api/json/JsonApiManager.java +++ b/src/main/java/org/codelibs/fess/api/json/JsonApiManager.java @@ -15,7 +15,9 @@ */ package org.codelibs.fess.api.json; +import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.io.OutputStream; import java.net.URLDecoder; import java.util.ArrayList; import java.util.Arrays; @@ -56,7 +58,6 @@ import org.codelibs.fess.util.FacetResponse; import org.codelibs.fess.util.FacetResponse.Field; import org.dbflute.optional.OptionalThing; import org.elasticsearch.common.xcontent.ToXContent; -import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentFactory; import org.elasticsearch.script.Script; import org.slf4j.Logger; @@ -371,9 +372,9 @@ public class JsonApiManager extends BaseJsonApiManager { } protected String toGeoRequestString(final GeoInfo geoInfo) { - try { - final XContentBuilder builder = XContentFactory.jsonBuilder(); - return geoInfo.toQueryBuilder().toXContent(builder, ToXContent.EMPTY_PARAMS).string(); + try (OutputStream out = + geoInfo.toQueryBuilder().toXContent(XContentFactory.jsonBuilder(), ToXContent.EMPTY_PARAMS).getOutputStream()) { + return ((ByteArrayOutputStream) out).toString(Constants.UTF_8); } catch (final Exception e) { return "{\"error\":\"" + detailedMessage(e) + "\"}"; } diff --git a/src/main/java/org/codelibs/fess/app/web/admin/backup/AdminBackupAction.java b/src/main/java/org/codelibs/fess/app/web/admin/backup/AdminBackupAction.java index 0d9248bf1..847cbd3bd 100644 --- a/src/main/java/org/codelibs/fess/app/web/admin/backup/AdminBackupAction.java +++ b/src/main/java/org/codelibs/fess/app/web/admin/backup/AdminBackupAction.java @@ -41,7 +41,7 @@ import org.apache.commons.text.StringEscapeUtils; import org.codelibs.core.exception.IORuntimeException; import org.codelibs.core.io.CopyUtil; import org.codelibs.core.misc.Pair; -import org.codelibs.elasticsearch.runner.net.CurlResponse; +import org.codelibs.curl.CurlResponse; import org.codelibs.fess.Constants; import org.codelibs.fess.app.web.base.FessAdminAction; import org.codelibs.fess.es.config.exbhv.FileConfigBhv; diff --git a/src/main/java/org/codelibs/fess/app/web/admin/esreq/AdminEsreqAction.java b/src/main/java/org/codelibs/fess/app/web/admin/esreq/AdminEsreqAction.java index fa91ca77f..c46071203 100644 --- a/src/main/java/org/codelibs/fess/app/web/admin/esreq/AdminEsreqAction.java +++ b/src/main/java/org/codelibs/fess/app/web/admin/esreq/AdminEsreqAction.java @@ -25,8 +25,8 @@ import java.util.Locale; import org.codelibs.core.io.CopyUtil; import org.codelibs.core.io.ReaderUtil; import org.codelibs.core.lang.StringUtil; -import org.codelibs.elasticsearch.runner.net.CurlRequest; -import org.codelibs.elasticsearch.runner.net.CurlResponse; +import org.codelibs.curl.CurlRequest; +import org.codelibs.curl.CurlResponse; import org.codelibs.fess.Constants; import org.codelibs.fess.app.web.base.FessAdminAction; import org.codelibs.fess.helper.CurlHelper; diff --git a/src/main/java/org/codelibs/fess/app/web/api/admin/backup/ApiAdminBackupAction.java b/src/main/java/org/codelibs/fess/app/web/api/admin/backup/ApiAdminBackupAction.java index 15e42d0c2..acb1eb7c9 100644 --- a/src/main/java/org/codelibs/fess/app/web/api/admin/backup/ApiAdminBackupAction.java +++ b/src/main/java/org/codelibs/fess/app/web/api/admin/backup/ApiAdminBackupAction.java @@ -33,7 +33,7 @@ import java.util.List; import java.util.Map; import java.util.function.Consumer; -import org.codelibs.elasticsearch.runner.net.CurlResponse; +import org.codelibs.curl.CurlResponse; import org.codelibs.fess.Constants; import org.codelibs.fess.app.web.api.ApiResult; import org.codelibs.fess.app.web.api.ApiResult.ApiBackupFilesResponse; diff --git a/src/main/java/org/codelibs/fess/dict/DictionaryManager.java b/src/main/java/org/codelibs/fess/dict/DictionaryManager.java index b84218fcb..e6a3fffe6 100644 --- a/src/main/java/org/codelibs/fess/dict/DictionaryManager.java +++ b/src/main/java/org/codelibs/fess/dict/DictionaryManager.java @@ -27,7 +27,8 @@ import java.util.Map; import javax.annotation.PostConstruct; import org.codelibs.core.io.FileUtil; -import org.codelibs.elasticsearch.runner.net.CurlResponse; +import org.codelibs.curl.CurlResponse; +import org.codelibs.elasticsearch.runner.net.EcrCurl; import org.codelibs.fess.Constants; import org.codelibs.fess.util.ComponentUtil; import org.dbflute.optional.OptionalEntity; @@ -50,7 +51,7 @@ public class DictionaryManager { try (CurlResponse response = ComponentUtil.getCurlHelper().get("/_configsync/file").param("fields", "path,@timestamp") .param("size", ComponentUtil.getFessConfig().getPageDictionaryMaxFetchSize()).execute()) { - final Map contentMap = response.getContentAsMap(); + final Map contentMap = response.getContent(EcrCurl.jsonParser); @SuppressWarnings("unchecked") final List> fileList = (List>) contentMap.get("file"); return fileList @@ -96,7 +97,7 @@ public class DictionaryManager { try (CurlResponse response = ComponentUtil.getCurlHelper().post("/_configsync/file").param("path", dictFile.getPath()) .body(FileUtil.readUTF8(file)).execute()) { - final Map contentMap = response.getContentAsMap(); + final Map contentMap = response.getContent(EcrCurl.jsonParser); if (!Constants.TRUE.equalsIgnoreCase(contentMap.get("acknowledged").toString())) { throw new DictionaryException("Failed to update " + dictFile.getPath()); } diff --git a/src/main/java/org/codelibs/fess/entity/PingResponse.java b/src/main/java/org/codelibs/fess/entity/PingResponse.java index c2bb951e3..cd204a25d 100644 --- a/src/main/java/org/codelibs/fess/entity/PingResponse.java +++ b/src/main/java/org/codelibs/fess/entity/PingResponse.java @@ -15,13 +15,15 @@ */ package org.codelibs.fess.entity; +import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.io.OutputStream; import org.codelibs.core.lang.StringUtil; +import org.codelibs.fess.Constants; import org.elasticsearch.action.admin.cluster.health.ClusterHealthResponse; import org.elasticsearch.cluster.health.ClusterHealthStatus; import org.elasticsearch.common.xcontent.ToXContent; -import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentFactory; public class PingResponse { @@ -37,10 +39,8 @@ public class PingResponse { status = response.getStatus() == ClusterHealthStatus.RED ? 1 : 0; clusterName = response.getClusterName(); clusterStatus = response.getStatus().toString(); - try { - final XContentBuilder builder = XContentFactory.jsonBuilder(); - response.toXContent(builder, ToXContent.EMPTY_PARAMS); - message = builder.string(); + try (OutputStream out = response.toXContent(XContentFactory.jsonBuilder(), ToXContent.EMPTY_PARAMS).getOutputStream()) { + message = ((ByteArrayOutputStream) out).toString(Constants.UTF_8); } catch (final IOException e) { message = "{ \"error\" : \"" + e.getMessage() + "\"}"; } diff --git a/src/main/java/org/codelibs/fess/es/client/FessEsClient.java b/src/main/java/org/codelibs/fess/es/client/FessEsClient.java index 8e10b594f..bdb5c34cf 100644 --- a/src/main/java/org/codelibs/fess/es/client/FessEsClient.java +++ b/src/main/java/org/codelibs/fess/es/client/FessEsClient.java @@ -43,9 +43,9 @@ import org.codelibs.core.exception.ResourceNotFoundRuntimeException; import org.codelibs.core.io.FileUtil; import org.codelibs.core.io.ResourceUtil; import org.codelibs.core.lang.StringUtil; +import org.codelibs.curl.CurlResponse; import org.codelibs.elasticsearch.runner.ElasticsearchClusterRunner; import org.codelibs.elasticsearch.runner.ElasticsearchClusterRunner.Configs; -import org.codelibs.elasticsearch.runner.net.CurlResponse; import org.codelibs.fess.Constants; import org.codelibs.fess.entity.FacetInfo; import org.codelibs.fess.entity.GeoInfo; diff --git a/src/main/java/org/codelibs/fess/helper/CurlHelper.java b/src/main/java/org/codelibs/fess/helper/CurlHelper.java index b6d4d69d8..34c7d0874 100644 --- a/src/main/java/org/codelibs/fess/helper/CurlHelper.java +++ b/src/main/java/org/codelibs/fess/helper/CurlHelper.java @@ -15,8 +15,8 @@ */ package org.codelibs.fess.helper; -import org.codelibs.elasticsearch.runner.net.Curl.Method; -import org.codelibs.elasticsearch.runner.net.CurlRequest; +import org.codelibs.curl.Curl.Method; +import org.codelibs.curl.CurlRequest; import org.codelibs.fess.util.ResourceUtil; public class CurlHelper { diff --git a/src/main/java/org/codelibs/fess/timer/SystemMonitorTarget.java b/src/main/java/org/codelibs/fess/timer/SystemMonitorTarget.java index 0445ee3e0..55646276f 100644 --- a/src/main/java/org/codelibs/fess/timer/SystemMonitorTarget.java +++ b/src/main/java/org/codelibs/fess/timer/SystemMonitorTarget.java @@ -15,6 +15,8 @@ */ package org.codelibs.fess.timer; +import java.io.ByteArrayOutputStream; +import java.io.OutputStream; import java.util.Arrays; import java.util.List; import java.util.function.Supplier; @@ -22,6 +24,7 @@ import java.util.stream.Collectors; import org.apache.commons.text.StringEscapeUtils; import org.codelibs.core.timer.TimeoutTarget; +import org.codelibs.fess.Constants; import org.codelibs.fess.es.client.FessEsClient; import org.codelibs.fess.util.ComponentUtil; import org.elasticsearch.action.admin.cluster.node.stats.NodesStatsResponse; @@ -179,14 +182,16 @@ public class SystemMonitorTarget implements TimeoutTarget { try { final FessEsClient esClient = ComponentUtil.getFessEsClient(); final NodesStatsResponse response = - esClient.admin().cluster().prepareNodesStats().ingest(false).setBreaker(false).setDiscovery(false).setFs(true) + esClient.admin().cluster().prepareNodesStats().setIngest(false).setBreaker(false).setDiscovery(false).setFs(true) .setHttp(false).setIndices(true).setJvm(true).setOs(true).setProcess(true).setScript(false).setThreadPool(true) .setTransport(true).execute().actionGet(10000L); final XContentBuilder builder = XContentFactory.jsonBuilder(); builder.startObject(); - response.toXContent(builder, ToXContent.EMPTY_PARAMS); + response.toXContent(XContentFactory.jsonBuilder(), ToXContent.EMPTY_PARAMS); builder.endObject(); - stats = builder.string(); + try (OutputStream out = builder.getOutputStream()) { + stats = ((ByteArrayOutputStream) out).toString(Constants.UTF_8); + } } catch (final Exception e) { logger.debug("Failed to access Elasticsearch stats.", e); } diff --git a/src/main/java/org/codelibs/fess/util/UpgradeUtil.java b/src/main/java/org/codelibs/fess/util/UpgradeUtil.java index 90d88f6a3..f13ab104a 100644 --- a/src/main/java/org/codelibs/fess/util/UpgradeUtil.java +++ b/src/main/java/org/codelibs/fess/util/UpgradeUtil.java @@ -20,7 +20,7 @@ import java.util.function.Consumer; import org.codelibs.core.exception.ResourceNotFoundRuntimeException; import org.codelibs.core.io.FileUtil; -import org.codelibs.elasticsearch.runner.net.CurlResponse; +import org.codelibs.curl.CurlResponse; import org.codelibs.fess.mylasta.direction.FessConfig; import org.elasticsearch.action.ActionListener; import org.elasticsearch.action.admin.indices.alias.IndicesAliasesResponse; diff --git a/src/test/java/org/codelibs/fess/helper/AccessTokenHelperTest.java b/src/test/java/org/codelibs/fess/helper/AccessTokenHelperTest.java index efbbb2bb9..5948ac0e5 100644 --- a/src/test/java/org/codelibs/fess/helper/AccessTokenHelperTest.java +++ b/src/test/java/org/codelibs/fess/helper/AccessTokenHelperTest.java @@ -15,14 +15,13 @@ */ package org.codelibs.fess.helper; +import static org.junit.jupiter.api.Assertions.assertThrows; + import java.util.ArrayList; import java.util.List; -import static org.junit.jupiter.api.Assertions.assertThrows; - -import org.codelibs.fess.unit.UnitFessTestCase; import org.codelibs.fess.exception.InvalidAccessTokenException; -import org.codelibs.fess.util.ComponentUtil; +import org.codelibs.fess.unit.UnitFessTestCase; import org.dbflute.utflute.mocklet.MockletHttpServletRequest; public class AccessTokenHelperTest extends UnitFessTestCase { diff --git a/src/test/java/org/codelibs/fess/helper/QueryHelperTest.java b/src/test/java/org/codelibs/fess/helper/QueryHelperTest.java index c330b915e..65cb46005 100644 --- a/src/test/java/org/codelibs/fess/helper/QueryHelperTest.java +++ b/src/test/java/org/codelibs/fess/helper/QueryHelperTest.java @@ -115,13 +115,13 @@ public class QueryHelperTest extends UnitFessTestCase { "{\"function_score\":{\"query\":{\"wildcard\":{\"title\":{\"wildcard\":\"*\",\"boost\":1.0}}},\"functions\":[{\"filter\":{\"match_all\":{\"boost\":1.0}},\"field_value_factor\":{\"field\":\"boost\",\"factor\":1.0,\"modifier\":\"none\"}}],\"score_mode\":\"multiply\",\"max_boost\":3.4028235E38,\"boost\":1.0}}", buildQuery("allintitle:").toString().replaceAll("\\s", "")); assertEquals( - "{\"function_score\":{\"query\":{\"match_phrase\":{\"title\":{\"query\":\"test\",\"slop\":0,\"boost\":1.0}}},\"functions\":[{\"filter\":{\"match_all\":{\"boost\":1.0}},\"field_value_factor\":{\"field\":\"boost\",\"factor\":1.0,\"modifier\":\"none\"}}],\"score_mode\":\"multiply\",\"max_boost\":3.4028235E38,\"boost\":1.0}}", + "{\"function_score\":{\"query\":{\"match_phrase\":{\"title\":{\"query\":\"test\",\"slop\":0,\"zero_terms_query\":\"NONE\",\"boost\":1.0}}},\"functions\":[{\"filter\":{\"match_all\":{\"boost\":1.0}},\"field_value_factor\":{\"field\":\"boost\",\"factor\":1.0,\"modifier\":\"none\"}}],\"score_mode\":\"multiply\",\"max_boost\":3.4028235E38,\"boost\":1.0}}", buildQuery("allintitle:test").toString().replaceAll("\\s", "")); assertEquals( - "{\"function_score\":{\"query\":{\"match_phrase\":{\"title\":{\"query\":\"test\",\"slop\":0,\"boost\":1.0}}},\"functions\":[{\"filter\":{\"match_all\":{\"boost\":1.0}},\"field_value_factor\":{\"field\":\"boost\",\"factor\":1.0,\"modifier\":\"none\"}}],\"score_mode\":\"multiply\",\"max_boost\":3.4028235E38,\"boost\":1.0}}", + "{\"function_score\":{\"query\":{\"match_phrase\":{\"title\":{\"query\":\"test\",\"slop\":0,\"zero_terms_query\":\"NONE\",\"boost\":1.0}}},\"functions\":[{\"filter\":{\"match_all\":{\"boost\":1.0}},\"field_value_factor\":{\"field\":\"boost\",\"factor\":1.0,\"modifier\":\"none\"}}],\"score_mode\":\"multiply\",\"max_boost\":3.4028235E38,\"boost\":1.0}}", buildQuery("allintitle: test").toString().replaceAll("\\s", "")); assertEquals( - "{\"function_score\":{\"query\":{\"bool\":{\"must\":[{\"match_phrase\":{\"title\":{\"query\":\"aaa\",\"slop\":0,\"boost\":1.0}}},{\"match_phrase\":{\"title\":{\"query\":\"bbb\",\"slop\":0,\"boost\":1.0}}}],\"adjust_pure_negative\":true,\"boost\":1.0}},\"functions\":[{\"filter\":{\"match_all\":{\"boost\":1.0}},\"field_value_factor\":{\"field\":\"boost\",\"factor\":1.0,\"modifier\":\"none\"}}],\"score_mode\":\"multiply\",\"max_boost\":3.4028235E38,\"boost\":1.0}}", + "{\"function_score\":{\"query\":{\"bool\":{\"must\":[{\"match_phrase\":{\"title\":{\"query\":\"aaa\",\"slop\":0,\"zero_terms_query\":\"NONE\",\"boost\":1.0}}},{\"match_phrase\":{\"title\":{\"query\":\"bbb\",\"slop\":0,\"zero_terms_query\":\"NONE\",\"boost\":1.0}}}],\"adjust_pure_negative\":true,\"boost\":1.0}},\"functions\":[{\"filter\":{\"match_all\":{\"boost\":1.0}},\"field_value_factor\":{\"field\":\"boost\",\"factor\":1.0,\"modifier\":\"none\"}}],\"score_mode\":\"multiply\",\"max_boost\":3.4028235E38,\"boost\":1.0}}", buildQuery("allintitle: aaa bbb").toString().replaceAll("\\s", "")); assertEquals( diff --git a/src/test/java/org/codelibs/fess/it/admin/SearchListTests.java b/src/test/java/org/codelibs/fess/it/admin/SearchListTests.java index 6396309df..b3f263a89 100644 --- a/src/test/java/org/codelibs/fess/it/admin/SearchListTests.java +++ b/src/test/java/org/codelibs/fess/it/admin/SearchListTests.java @@ -15,13 +15,11 @@ */ package org.codelibs.fess.it.admin; -import static org.junit.jupiter.api.Assertions.assertTrue; import static org.hamcrest.Matchers.equalTo; import java.util.HashMap; -import java.util.Map; import java.util.List; -import java.util.Set; +import java.util.Map; import org.codelibs.fess.it.CrudTestBase; import org.junit.jupiter.api.Tag; diff --git a/src/test/java/org/codelibs/fess/util/DocMapTest.java b/src/test/java/org/codelibs/fess/util/DocMapTest.java index 0bdb02e3c..9c521c8c6 100644 --- a/src/test/java/org/codelibs/fess/util/DocMapTest.java +++ b/src/test/java/org/codelibs/fess/util/DocMapTest.java @@ -15,12 +15,11 @@ */ package org.codelibs.fess.util; -import java.util.Map; -import java.util.Set; -import java.util.List; import java.util.Arrays; import java.util.LinkedHashMap; -import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; import org.codelibs.fess.unit.UnitFessTestCase; diff --git a/src/test/java/org/codelibs/fess/util/KuromojiCSVUtilTest.java b/src/test/java/org/codelibs/fess/util/KuromojiCSVUtilTest.java index 4003a97e0..116cc8321 100644 --- a/src/test/java/org/codelibs/fess/util/KuromojiCSVUtilTest.java +++ b/src/test/java/org/codelibs/fess/util/KuromojiCSVUtilTest.java @@ -15,11 +15,12 @@ */ package org.codelibs.fess.util; -import java.util.List; -import java.util.Arrays; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.is; +import java.util.Arrays; +import java.util.List; + import org.codelibs.fess.unit.UnitFessTestCase; public class KuromojiCSVUtilTest extends UnitFessTestCase {