diff --git a/src/main/config/es/fess_config.json b/src/main/config/es/fess_config.json index f1435622e..0d9dc056f 100644 --- a/src/main/config/es/fess_config.json +++ b/src/main/config/es/fess_config.json @@ -1,7 +1,7 @@ { ".fess_config" : { "mappings" : { - "api_token": { + "access_token": { "_all": { "enabled": false }, @@ -14,6 +14,14 @@ "type": "string", "index": "not_analyzed" }, + "permissions": { + "type": "string", + "index": "not_analyzed" + }, + "parameter_name" : { + "type": "string", + "index": "not_analyzed" + }, "createdBy": { "type": "string", "index": "not_analyzed" @@ -957,6 +965,13 @@ "index" : { "refresh_interval" : "1s", "dbflute" : { + "access_token" : { + "properties" : { + "permissions" : { + "array" : "true" + } + } + }, "data_config" : { "properties" : { "permissions" : { diff --git a/src/main/java/org/codelibs/fess/api/gsa/GsaApiManager.java b/src/main/java/org/codelibs/fess/api/gsa/GsaApiManager.java index 6e0392de2..cd41f8a3f 100644 --- a/src/main/java/org/codelibs/fess/api/gsa/GsaApiManager.java +++ b/src/main/java/org/codelibs/fess/api/gsa/GsaApiManager.java @@ -505,11 +505,6 @@ public class GsaApiManager extends BaseApiManager implements WebApiManager { return pageSize; } - @Override - public boolean isAdministrativeAccess() { - return false; - } - @Override public Object getAttribute(final String name) { return request.getAttribute(name); @@ -520,5 +515,10 @@ public class GsaApiManager extends BaseApiManager implements WebApiManager { return Locale.ROOT; } + @Override + public SearchRequestType getType() { + return SearchRequestType.GSA; + } + } } 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 155dc1ace..999867682 100644 --- a/src/main/java/org/codelibs/fess/api/json/JsonApiManager.java +++ b/src/main/java/org/codelibs/fess/api/json/JsonApiManager.java @@ -43,6 +43,7 @@ import org.codelibs.fess.entity.GeoInfo; import org.codelibs.fess.entity.PingResponse; import org.codelibs.fess.entity.SearchRenderData; import org.codelibs.fess.entity.SearchRequestParams; +import org.codelibs.fess.entity.SearchRequestParams.SearchRequestType; import org.codelibs.fess.es.client.FessEsClient; import org.codelibs.fess.exception.WebApiException; import org.codelibs.fess.helper.LabelTypeHelper; @@ -288,7 +289,7 @@ public class JsonApiManager extends BaseApiManager { Exception err = null; final StringBuilder buf = new StringBuilder(255); // TODO replace response stream try { - final List> labelTypeItems = labelTypeHelper.getLabelTypeItemList(); + final List> labelTypeItems = labelTypeHelper.getLabelTypeItemList(SearchRequestType.JSON); buf.append("\"record_count\":"); buf.append(labelTypeItems.size()); if (!labelTypeItems.isEmpty()) { @@ -338,7 +339,7 @@ public class JsonApiManager extends BaseApiManager { Exception err = null; final StringBuilder buf = new StringBuilder(255); // TODO replace response stream try { - final List popularWordList = popularWordHelper.getWordList(seed, tags, null, fields, excludes); + final List popularWordList = popularWordHelper.getWordList(SearchRequestType.JSON, seed, tags, null, fields, excludes); buf.append("\"result\":["); boolean first1 = true; @@ -804,11 +805,6 @@ public class JsonApiManager extends BaseApiManager { return pageSize; } - @Override - public boolean isAdministrativeAccess() { - return false; - } - @Override public Object getAttribute(final String name) { return request.getAttribute(name); @@ -819,5 +815,10 @@ public class JsonApiManager extends BaseApiManager { return Locale.ROOT; } + @Override + public SearchRequestType getType() { + return SearchRequestType.JSON; + } + } } diff --git a/src/main/java/org/codelibs/fess/api/suggest/SuggestApiManager.java b/src/main/java/org/codelibs/fess/api/suggest/SuggestApiManager.java index c57be33bf..634df0464 100644 --- a/src/main/java/org/codelibs/fess/api/suggest/SuggestApiManager.java +++ b/src/main/java/org/codelibs/fess/api/suggest/SuggestApiManager.java @@ -34,6 +34,7 @@ import org.codelibs.fess.app.service.SearchService; import org.codelibs.fess.entity.FacetInfo; import org.codelibs.fess.entity.GeoInfo; import org.codelibs.fess.entity.SearchRequestParams; +import org.codelibs.fess.entity.SearchRequestParams.SearchRequestType; import org.codelibs.fess.helper.RoleQueryHelper; import org.codelibs.fess.helper.SuggestHelper; import org.codelibs.fess.suggest.entity.SuggestItem; @@ -73,7 +74,7 @@ public class SuggestApiManager extends BaseApiManager { final SuggestRequestBuilder builder = suggestHelper.suggester().suggest(); builder.setQuery(parameter.getQuery()); stream(parameter.getSuggestFields()).of(stream -> stream.forEach(builder::addField)); - roleQueryHelper.build().stream().forEach(builder::addRole); + roleQueryHelper.build(SearchRequestType.SUGGEST).stream().forEach(builder::addRole); builder.setSize(parameter.getNum()); stream(langs).of(stream -> stream.forEach(builder::addLang)); @@ -237,11 +238,6 @@ public class SuggestApiManager extends BaseApiManager { throw new UnsupportedOperationException(); } - @Override - public boolean isAdministrativeAccess() { - return false; - } - @Override public String[] getExtraQueries() { throw new UnsupportedOperationException(); @@ -256,5 +252,10 @@ public class SuggestApiManager extends BaseApiManager { public Locale getLocale() { throw new UnsupportedOperationException(); } + + @Override + public SearchRequestType getType() { + return SearchRequestType.SUGGEST; + } } } diff --git a/src/main/java/org/codelibs/fess/app/job/ScriptExecutorJob.java b/src/main/java/org/codelibs/fess/app/job/ScriptExecutorJob.java index 0506f4479..8740e1295 100644 --- a/src/main/java/org/codelibs/fess/app/job/ScriptExecutorJob.java +++ b/src/main/java/org/codelibs/fess/app/job/ScriptExecutorJob.java @@ -108,7 +108,7 @@ public class ScriptExecutorJob implements LaJob { if (task != null) { try { task.stop(); - } catch (Exception e) { + } catch (final Exception e) { logger.warn("Failed to stop " + jobLog, e); } } diff --git a/src/main/java/org/codelibs/fess/app/pager/ApiTokenPager.java b/src/main/java/org/codelibs/fess/app/pager/AccessTokenPager.java similarity index 98% rename from src/main/java/org/codelibs/fess/app/pager/ApiTokenPager.java rename to src/main/java/org/codelibs/fess/app/pager/AccessTokenPager.java index efd912ccf..b4a0c843b 100644 --- a/src/main/java/org/codelibs/fess/app/pager/ApiTokenPager.java +++ b/src/main/java/org/codelibs/fess/app/pager/AccessTokenPager.java @@ -20,7 +20,7 @@ import java.util.List; import org.codelibs.fess.Constants; -public class ApiTokenPager implements Serializable { +public class AccessTokenPager implements Serializable { private static final long serialVersionUID = 1L; public static final int DEFAULT_CURRENT_PAGE_NUMBER = 1; diff --git a/src/main/java/org/codelibs/fess/app/service/AccessTokenService.java b/src/main/java/org/codelibs/fess/app/service/AccessTokenService.java new file mode 100644 index 000000000..ddf1f9155 --- /dev/null +++ b/src/main/java/org/codelibs/fess/app/service/AccessTokenService.java @@ -0,0 +1,90 @@ +/* + * 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.app.service; + +import java.util.List; + +import javax.annotation.Resource; + +import org.codelibs.core.beans.util.BeanUtil; +import org.codelibs.fess.Constants; +import org.codelibs.fess.app.pager.AccessTokenPager; +import org.codelibs.fess.es.config.cbean.AccessTokenCB; +import org.codelibs.fess.es.config.exbhv.AccessTokenBhv; +import org.codelibs.fess.es.config.exentity.AccessToken; +import org.codelibs.fess.mylasta.direction.FessConfig; +import org.dbflute.cbean.result.PagingResultBean; +import org.dbflute.optional.OptionalEntity; + +public class AccessTokenService { + + @Resource + protected AccessTokenBhv accessTokenBhv; + + @Resource + protected FessConfig fessConfig; + + public List getAccessTokenList(final AccessTokenPager accessTokenPager) { + + final PagingResultBean accessTokenList = accessTokenBhv.selectPage(cb -> { + cb.paging(accessTokenPager.getPageSize(), accessTokenPager.getCurrentPageNumber()); + setupListCondition(cb, accessTokenPager); + }); + + // update pager + BeanUtil.copyBeanToBean(accessTokenList, accessTokenPager, option -> option.include(Constants.PAGER_CONVERSION_RULE)); + accessTokenPager.setPageNumberList(accessTokenList.pageRange(op -> op.rangeSize(5)).createPageNumberList()); + + return accessTokenList; + } + + public OptionalEntity getAccessToken(final String id) { + return accessTokenBhv.selectByPK(id); + } + + public void store(final AccessToken accessToken) { + + accessTokenBhv.insertOrUpdate(accessToken, op -> op.setRefresh(true)); + + } + + public void delete(final AccessToken accessToken) { + + accessTokenBhv.delete(accessToken, op -> op.setRefresh(true)); + + } + + protected void setupListCondition(final AccessTokenCB cb, final AccessTokenPager accessTokenPager) { + if (accessTokenPager.id != null) { + cb.query().docMeta().setId_Equal(accessTokenPager.id); + } + // TODO Long, Integer, String supported only. + + // setup condition + cb.query().addOrderBy_Name_Asc(); + cb.query().addOrderBy_CreatedTime_Asc(); + + // search + + } + + public OptionalEntity getAccessTokenByToken(final String token) { + return accessTokenBhv.selectEntity(cb -> { + cb.query().setToken_CommonTerms(token); + }); + } + +} \ No newline at end of file diff --git a/src/main/java/org/codelibs/fess/app/service/ApiTokenService.java b/src/main/java/org/codelibs/fess/app/service/ApiTokenService.java deleted file mode 100644 index bdf565af9..000000000 --- a/src/main/java/org/codelibs/fess/app/service/ApiTokenService.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * 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.app.service; - -import java.util.List; - -import javax.annotation.Resource; - -import org.codelibs.core.beans.util.BeanUtil; -import org.codelibs.fess.Constants; -import org.codelibs.fess.app.pager.ApiTokenPager; -import org.codelibs.fess.es.config.cbean.ApiTokenCB; -import org.codelibs.fess.es.config.exbhv.ApiTokenBhv; -import org.codelibs.fess.es.config.exentity.ApiToken; -import org.codelibs.fess.mylasta.direction.FessConfig; -import org.dbflute.cbean.result.PagingResultBean; -import org.dbflute.optional.OptionalEntity; - -public class ApiTokenService { - - @Resource - protected ApiTokenBhv apiTokenBhv; - - @Resource - protected FessConfig fessConfig; - - public List getApiTokenList(final ApiTokenPager apiTokenPager) { - - final PagingResultBean apiTokenList = apiTokenBhv.selectPage(cb -> { - cb.paging(apiTokenPager.getPageSize(), apiTokenPager.getCurrentPageNumber()); - setupListCondition(cb, apiTokenPager); - }); - - // update pager - BeanUtil.copyBeanToBean(apiTokenList, apiTokenPager, option -> option.include(Constants.PAGER_CONVERSION_RULE)); - apiTokenPager.setPageNumberList(apiTokenList.pageRange(op -> op.rangeSize(5)).createPageNumberList()); - - return apiTokenList; - } - - public OptionalEntity getApiToken(final String id) { - return apiTokenBhv.selectByPK(id); - } - - public void store(final ApiToken apiToken) { - - apiTokenBhv.insertOrUpdate(apiToken, op -> op.setRefresh(true)); - - } - - public void delete(final ApiToken apiToken) { - - apiTokenBhv.delete(apiToken, op -> op.setRefresh(true)); - - } - - protected void setupListCondition(final ApiTokenCB cb, final ApiTokenPager apiTokenPager) { - if (apiTokenPager.id != null) { - cb.query().docMeta().setId_Equal(apiTokenPager.id); - } - // TODO Long, Integer, String supported only. - - // setup condition - cb.query().addOrderBy_Name_Asc(); - cb.query().addOrderBy_CreatedTime_Asc(); - - // search - - } - -} \ No newline at end of file diff --git a/src/main/java/org/codelibs/fess/app/service/JobLogService.java b/src/main/java/org/codelibs/fess/app/service/JobLogService.java index b3e9fec1c..d66bf5df7 100644 --- a/src/main/java/org/codelibs/fess/app/service/JobLogService.java +++ b/src/main/java/org/codelibs/fess/app/service/JobLogService.java @@ -118,7 +118,7 @@ public class JobLogService { } } - public void setExpiredJobInterval(long expiredJobInterval) { + public void setExpiredJobInterval(final long expiredJobInterval) { this.expiredJobInterval = expiredJobInterval; } diff --git a/src/main/java/org/codelibs/fess/app/service/SearchService.java b/src/main/java/org/codelibs/fess/app/service/SearchService.java index 7785e2f59..4217092a5 100644 --- a/src/main/java/org/codelibs/fess/app/service/SearchService.java +++ b/src/main/java/org/codelibs/fess/app/service/SearchService.java @@ -101,8 +101,7 @@ public class SearchService { return SearchConditionBuilder.builder(searchRequestBuilder) .query(StringUtil.isBlank(sortField) ? query : query + " sort:" + sortField).offset(pageStart) .size(pageSize).facetInfo(params.getFacetInfo()).geoInfo(params.getGeoInfo()) - .responseFields(queryHelper.getResponseFields()).administrativeAccess(params.isAdministrativeAccess()) - .build(); + .responseFields(queryHelper.getResponseFields()).searchRequestType(params.getType()).build(); }, (searchRequestBuilder, execTime, searchResponse) -> { final QueryResponseList queryResponseList = ComponentUtil.getQueryResponseList(); queryResponseList.init(searchResponse, pageStart, pageSize); @@ -155,8 +154,8 @@ public class SearchService { // search log if (searchLogSupport) { - ComponentUtil.getSearchLogHelper().addSearchLog(DfTypeUtil.toLocalDateTime(requestedTime), queryId, query, pageStart, pageSize, - queryResponseList); + ComponentUtil.getSearchLogHelper().addSearchLog(params, DfTypeUtil.toLocalDateTime(requestedTime), queryId, query, pageStart, + pageSize, queryResponseList); } } @@ -165,7 +164,7 @@ public class SearchService { final String query = QueryStringBuilder.query(params.getQuery()).extraQueries(params.getExtraQueries()).fields(params.getFields()).build(); - final QueryContext queryContext = queryHelper.build(query, context -> { + final QueryContext queryContext = queryHelper.build(params.getType(), query, context -> { context.skipRoleQuery(); }); return fessEsClient.deleteByQuery(fessConfig.getIndexDocumentUpdateIndex(), fessConfig.getIndexDocumentType(), diff --git a/src/main/java/org/codelibs/fess/app/web/admin/apitoken/AdminApitokenAction.java b/src/main/java/org/codelibs/fess/app/web/admin/accesstoken/AdminAccesstokenAction.java similarity index 79% rename from src/main/java/org/codelibs/fess/app/web/admin/apitoken/AdminApitokenAction.java rename to src/main/java/org/codelibs/fess/app/web/admin/accesstoken/AdminAccesstokenAction.java index 7a182884a..ba9f30d3f 100644 --- a/src/main/java/org/codelibs/fess/app/web/admin/apitoken/AdminApitokenAction.java +++ b/src/main/java/org/codelibs/fess/app/web/admin/accesstoken/AdminAccesstokenAction.java @@ -13,16 +13,16 @@ * either express or implied. See the License for the specific language * governing permissions and limitations under the License. */ -package org.codelibs.fess.app.web.admin.apitoken; +package org.codelibs.fess.app.web.admin.accesstoken; import javax.annotation.Resource; import org.codelibs.fess.Constants; -import org.codelibs.fess.app.pager.ApiTokenPager; -import org.codelibs.fess.app.service.ApiTokenService; +import org.codelibs.fess.app.pager.AccessTokenPager; +import org.codelibs.fess.app.service.AccessTokenService; import org.codelibs.fess.app.web.CrudMode; import org.codelibs.fess.app.web.base.FessAdminAction; -import org.codelibs.fess.es.config.exentity.ApiToken; +import org.codelibs.fess.es.config.exentity.AccessToken; import org.codelibs.fess.util.RenderDataUtil; import org.dbflute.optional.OptionalEntity; import org.dbflute.optional.OptionalThing; @@ -34,15 +34,15 @@ import org.lastaflute.web.ruts.process.ActionRuntime; /** * @author shinsuke */ -public class AdminApitokenAction extends FessAdminAction { +public class AdminAccesstokenAction extends FessAdminAction { // =================================================================================== // Attribute // ========= @Resource - private ApiTokenService apiTokenService; + private AccessTokenService accessTokenService; @Resource - private ApiTokenPager apiTokenPager; + private AccessTokenPager accessTokenPager; // =================================================================================== // Hook @@ -50,7 +50,7 @@ public class AdminApitokenAction extends FessAdminAction { @Override protected void setupHtmlData(final ActionRuntime runtime) { super.setupHtmlData(runtime); - runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameApitoken())); + runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNameAccesstoken())); } // =================================================================================== @@ -64,36 +64,36 @@ public class AdminApitokenAction extends FessAdminAction { @Execute public HtmlResponse list(final OptionalThing pageNumber, final SearchForm form) { pageNumber.ifPresent(num -> { - apiTokenPager.setCurrentPageNumber(pageNumber.get()); + accessTokenPager.setCurrentPageNumber(pageNumber.get()); }).orElse(() -> { - apiTokenPager.setCurrentPageNumber(0); + accessTokenPager.setCurrentPageNumber(0); }); - return asHtml(path_AdminApitoken_AdminApitokenJsp).renderWith(data -> { + return asHtml(path_AdminAccesstoken_AdminAccesstokenJsp).renderWith(data -> { searchPaging(data, form); }); } @Execute public HtmlResponse search(final SearchForm form) { - copyBeanToBean(form, apiTokenPager, op -> op.exclude(Constants.PAGER_CONVERSION_RULE)); - return asHtml(path_AdminApitoken_AdminApitokenJsp).renderWith(data -> { + copyBeanToBean(form, accessTokenPager, op -> op.exclude(Constants.PAGER_CONVERSION_RULE)); + return asHtml(path_AdminAccesstoken_AdminAccesstokenJsp).renderWith(data -> { searchPaging(data, form); }); } @Execute public HtmlResponse reset(final SearchForm form) { - apiTokenPager.clear(); - return asHtml(path_AdminApitoken_AdminApitokenJsp).renderWith(data -> { + accessTokenPager.clear(); + return asHtml(path_AdminAccesstoken_AdminAccesstokenJsp).renderWith(data -> { searchPaging(data, form); }); } protected void searchPaging(final RenderData data, final SearchForm form) { - RenderDataUtil.register(data, "apiTokenItems", apiTokenService.getApiTokenList(apiTokenPager)); // page navi + RenderDataUtil.register(data, "accessTokenItems", accessTokenService.getAccessTokenList(accessTokenPager)); // page navi // restore from pager - copyBeanToBean(apiTokenPager, form, op -> op.include("id")); + copyBeanToBean(accessTokenPager, form, op -> op.include("id")); } // =================================================================================== @@ -122,7 +122,7 @@ public class AdminApitokenAction extends FessAdminAction { saveToken(); return asDetailsHtml().useForm(EditForm.class, op -> { op.setup(form -> { - apiTokenService.getApiToken(id).ifPresent(entity -> { + accessTokenService.getAccessToken(id).ifPresent(entity -> { copyBeanToBean(entity, form, copyOp -> { copyOp.excludeNull(); }); @@ -142,11 +142,11 @@ public class AdminApitokenAction extends FessAdminAction { verifyCrudMode(form.crudMode, CrudMode.CREATE); validate(form, messages -> {}, () -> asEditHtml()); verifyToken(() -> asEditHtml()); - getApiToken(form).ifPresent( + getAccessToken(form).ifPresent( entity -> { - entity.setToken(systemHelper.generateApiToken()); + entity.setToken(systemHelper.generateAccessToken()); try { - apiTokenService.store(entity); + accessTokenService.store(entity); saveInfo(messages -> messages.addSuccessCrudCreateCrudTable(GLOBAL)); } catch (final Exception e) { throwValidationError(messages -> messages.addErrorsCrudFailedToCreateCrudTable(GLOBAL, buildThrowableMessage(e)), @@ -164,12 +164,12 @@ public class AdminApitokenAction extends FessAdminAction { validate(form, messages -> {}, () -> asDetailsHtml()); verifyToken(() -> asDetailsHtml()); final String id = form.id; - apiTokenService - .getApiToken(id) + accessTokenService + .getAccessToken(id) .ifPresent( entity -> { try { - apiTokenService.delete(entity); + accessTokenService.delete(entity); saveInfo(messages -> messages.addSuccessCrudDeleteCrudTable(GLOBAL)); } catch (final Exception e) { throwValidationError( @@ -186,17 +186,17 @@ public class AdminApitokenAction extends FessAdminAction { // Assist Logic // ============ - private OptionalEntity getEntity(final CreateForm form, final String username, final long currentTime) { + private OptionalEntity getEntity(final CreateForm form, final String username, final long currentTime) { switch (form.crudMode) { case CrudMode.CREATE: - return OptionalEntity.of(new ApiToken()).map(entity -> { + return OptionalEntity.of(new AccessToken()).map(entity -> { entity.setCreatedBy(username); entity.setCreatedTime(currentTime); return entity; }); case CrudMode.EDIT: if (form instanceof EditForm) { - return apiTokenService.getApiToken(((EditForm) form).id); + return accessTokenService.getAccessToken(((EditForm) form).id); } break; default: @@ -205,7 +205,7 @@ public class AdminApitokenAction extends FessAdminAction { return OptionalEntity.empty(); } - protected OptionalEntity getApiToken(final CreateForm form) { + protected OptionalEntity getAccessToken(final CreateForm form) { final String username = systemHelper.getUsername(); final long currentTime = systemHelper.getCurrentTimeAsLong(); return getEntity(form, username, currentTime).map(entity -> { @@ -232,21 +232,21 @@ public class AdminApitokenAction extends FessAdminAction { // ========= private HtmlResponse asListHtml() { - return asHtml(path_AdminApitoken_AdminApitokenJsp).renderWith(data -> { - RenderDataUtil.register(data, "apiTokenItems", apiTokenService.getApiTokenList(apiTokenPager)); + return asHtml(path_AdminAccesstoken_AdminAccesstokenJsp).renderWith(data -> { + RenderDataUtil.register(data, "accessTokenItems", accessTokenService.getAccessTokenList(accessTokenPager)); }).useForm(SearchForm.class, setup -> { setup.setup(form -> { - copyBeanToBean(apiTokenPager, form, op -> op.include("id")); + copyBeanToBean(accessTokenPager, form, op -> op.include("id")); }); }); } private HtmlResponse asEditHtml() { - return asHtml(path_AdminApitoken_AdminApitokenEditJsp); + return asHtml(path_AdminAccesstoken_AdminAccesstokenEditJsp); } private HtmlResponse asDetailsHtml() { - return asHtml(path_AdminApitoken_AdminApitokenDetailsJsp); + return asHtml(path_AdminAccesstoken_AdminAccesstokenDetailsJsp); } } diff --git a/src/main/java/org/codelibs/fess/app/web/admin/apitoken/CreateForm.java b/src/main/java/org/codelibs/fess/app/web/admin/accesstoken/CreateForm.java similarity index 96% rename from src/main/java/org/codelibs/fess/app/web/admin/apitoken/CreateForm.java rename to src/main/java/org/codelibs/fess/app/web/admin/accesstoken/CreateForm.java index 5a42e0db8..e5dd2c5d1 100644 --- a/src/main/java/org/codelibs/fess/app/web/admin/apitoken/CreateForm.java +++ b/src/main/java/org/codelibs/fess/app/web/admin/accesstoken/CreateForm.java @@ -13,7 +13,7 @@ * either express or implied. See the License for the specific language * governing permissions and limitations under the License. */ -package org.codelibs.fess.app.web.admin.apitoken; +package org.codelibs.fess.app.web.admin.accesstoken; import javax.validation.constraints.Size; diff --git a/src/main/java/org/codelibs/fess/app/web/admin/apitoken/EditForm.java b/src/main/java/org/codelibs/fess/app/web/admin/accesstoken/EditForm.java similarity index 95% rename from src/main/java/org/codelibs/fess/app/web/admin/apitoken/EditForm.java rename to src/main/java/org/codelibs/fess/app/web/admin/accesstoken/EditForm.java index 3a368fca4..1c60ae693 100644 --- a/src/main/java/org/codelibs/fess/app/web/admin/apitoken/EditForm.java +++ b/src/main/java/org/codelibs/fess/app/web/admin/accesstoken/EditForm.java @@ -13,7 +13,7 @@ * either express or implied. See the License for the specific language * governing permissions and limitations under the License. */ -package org.codelibs.fess.app.web.admin.apitoken; +package org.codelibs.fess.app.web.admin.accesstoken; import javax.validation.constraints.Size; diff --git a/src/main/java/org/codelibs/fess/app/web/admin/apitoken/SearchForm.java b/src/main/java/org/codelibs/fess/app/web/admin/accesstoken/SearchForm.java similarity index 93% rename from src/main/java/org/codelibs/fess/app/web/admin/apitoken/SearchForm.java rename to src/main/java/org/codelibs/fess/app/web/admin/accesstoken/SearchForm.java index 53119a37c..8c1ab87c7 100644 --- a/src/main/java/org/codelibs/fess/app/web/admin/apitoken/SearchForm.java +++ b/src/main/java/org/codelibs/fess/app/web/admin/accesstoken/SearchForm.java @@ -13,7 +13,7 @@ * either express or implied. See the License for the specific language * governing permissions and limitations under the License. */ -package org.codelibs.fess.app.web.admin.apitoken; +package org.codelibs.fess.app.web.admin.accesstoken; /** * @author codelibs diff --git a/src/main/java/org/codelibs/fess/app/web/admin/searchlist/ListForm.java b/src/main/java/org/codelibs/fess/app/web/admin/searchlist/ListForm.java index 0f076a48d..a3ae52600 100644 --- a/src/main/java/org/codelibs/fess/app/web/admin/searchlist/ListForm.java +++ b/src/main/java/org/codelibs/fess/app/web/admin/searchlist/ListForm.java @@ -125,11 +125,6 @@ public class ListForm implements SearchRequestParams { } } - @Override - public boolean isAdministrativeAccess() { - return true; - } - @Override public Object getAttribute(final String name) { return LaRequestUtil.getRequest().getAttribute(name); @@ -139,4 +134,9 @@ public class ListForm implements SearchRequestParams { public Locale getLocale() { return LaRequestUtil.getRequest().getLocale(); } + + @Override + public SearchRequestType getType() { + return SearchRequestType.ADMIN_SEARCH; + } } diff --git a/src/main/java/org/codelibs/fess/app/web/admin/upgrade/AdminUpgradeAction.java b/src/main/java/org/codelibs/fess/app/web/admin/upgrade/AdminUpgradeAction.java index 0b40e1ed6..a750a470e 100644 --- a/src/main/java/org/codelibs/fess/app/web/admin/upgrade/AdminUpgradeAction.java +++ b/src/main/java/org/codelibs/fess/app/web/admin/upgrade/AdminUpgradeAction.java @@ -715,7 +715,7 @@ public class AdminUpgradeAction extends FessAdminAction { "{\"name\":\"Thumbnail Purger\",\"target\":\"all\",\"cronExpression\":\"0 0 * * *\",\"scriptType\":\"groovy\",\"scriptData\":\"return container.getComponent(\\\"purgeThumbnailJob\\\").expiry(30 * 24 * 60 * 60 * 1000).execute();\",\"jobLogging\":true,\"crawler\":false,\"available\":true,\"sortOrder\":6,\"createdBy\":\"system\",\"createdTime\":0,\"updatedBy\":\"system\",\"updatedTime\":0}"); // alias - IndicesOptions indexOrAliasOptions = IndicesOptions.fromOptions(false, false, true, true); + final IndicesOptions indexOrAliasOptions = IndicesOptions.fromOptions(false, false, true, true); if (!existsIndex(indicesClient, searchIndex, indexOrAliasOptions)) { try { final IndicesAliasesResponse response = @@ -1060,7 +1060,7 @@ public class AdminUpgradeAction extends FessAdminAction { jsonBuilder().startObject().startObject("analysis").startObject(type).field(name).copyCurrentStructure(contentParser) .endObject().endObject().endObject(); indicesClient.prepareUpdateSettings(index).setSettings(builder.string()).execute().actionGet(); - } catch (Exception e) { + } catch (final Exception e) { logger.warn("Failed to set analyzer to " + index, e); } } @@ -1069,12 +1069,12 @@ public class AdminUpgradeAction extends FessAdminAction { try { final IndexRequest indexRequest = new IndexRequest(index, type, id).source(source); fessEsClient.index(indexRequest).actionGet(); - } catch (Exception e) { + } catch (final Exception e) { logger.warn("Failed to add " + id + " to " + index + "/" + type, e); } } - private boolean existsIndex(IndicesAdminClient indicesClient, String index, IndicesOptions options) { + private boolean existsIndex(final IndicesAdminClient indicesClient, final String index, final IndicesOptions options) { try { final IndicesExistsResponse response = indicesClient.prepareExists(index).setIndicesOptions(options).execute().actionGet(fessConfig.getIndexSearchTimeout()); @@ -1089,13 +1089,13 @@ public class AdminUpgradeAction extends FessAdminAction { indicesClient.prepareDelete(index).execute(new ActionListener() { @Override - public void onResponse(DeleteIndexResponse response) { + public void onResponse(final DeleteIndexResponse response) { logger.info("Deleted " + index + " index."); comsumer.accept(response); } @Override - public void onFailure(Throwable e) { + public void onFailure(final Throwable e) { logger.warn("Failed to delete " + index + " index.", e); } }); diff --git a/src/main/java/org/codelibs/fess/app/web/base/FessSearchAction.java b/src/main/java/org/codelibs/fess/app/web/base/FessSearchAction.java index fe6dc3cf5..2e5c0f3cf 100644 --- a/src/main/java/org/codelibs/fess/app/web/base/FessSearchAction.java +++ b/src/main/java/org/codelibs/fess/app/web/base/FessSearchAction.java @@ -30,6 +30,7 @@ import org.codelibs.core.lang.StringUtil; import org.codelibs.core.net.URLUtil; import org.codelibs.fess.Constants; import org.codelibs.fess.app.web.sso.SsoAction; +import org.codelibs.fess.entity.SearchRequestParams.SearchRequestType; import org.codelibs.fess.es.client.FessEsClient; import org.codelibs.fess.helper.LabelTypeHelper; import org.codelibs.fess.helper.OpenSearchHelper; @@ -98,7 +99,7 @@ public abstract class FessSearchAction extends FessBaseAction { runtime.registerData("favoriteSupport", favoriteSupport); runtime.registerData("thumbnailSupport", thumbnailSupport); if (fessConfig.isWebApiPopularWord()) { - runtime.registerData("popularWords", popularWordHelper.getWordList(null, null, null, null, null)); + runtime.registerData("popularWords", popularWordHelper.getWordList(SearchRequestType.SEARCH, null, null, null, null, null)); } return super.hookBefore(runtime); } @@ -113,7 +114,7 @@ public abstract class FessSearchAction extends FessBaseAction { super.setupHtmlData(runtime); runtime.registerData("osddLink", openSearchHelper.hasOpenSearchFile()); - final List> labelTypeItems = labelTypeHelper.getLabelTypeItemList(); + final List> labelTypeItems = labelTypeHelper.getLabelTypeItemList(SearchRequestType.SEARCH); runtime.registerData("labelTypeItems", labelTypeItems); runtime.registerData("displayLabelTypeItems", labelTypeItems != null && !labelTypeItems.isEmpty()); @@ -143,7 +144,7 @@ public abstract class FessSearchAction extends FessBaseAction { protected void buildFormParams(final SearchForm form) { // label - final List> labelTypeItems = labelTypeHelper.getLabelTypeItemList(); + final List> labelTypeItems = labelTypeHelper.getLabelTypeItemList(SearchRequestType.SEARCH); if (!labelTypeItems.isEmpty() && !form.fields.containsKey(FessSearchAction.LABEL_FIELD)) { final String[] defaultLabelValues = fessConfig.getDefaultLabelValues(getUserBean()); diff --git a/src/main/java/org/codelibs/fess/app/web/base/SearchForm.java b/src/main/java/org/codelibs/fess/app/web/base/SearchForm.java index 2018e79df..5bcee9909 100644 --- a/src/main/java/org/codelibs/fess/app/web/base/SearchForm.java +++ b/src/main/java/org/codelibs/fess/app/web/base/SearchForm.java @@ -122,11 +122,6 @@ public class SearchForm implements SearchRequestParams { return sort; } - @Override - public boolean isAdministrativeAccess() { - return false; - } - @Override public Object getAttribute(final String name) { return LaRequestUtil.getRequest().getAttribute(name); @@ -136,4 +131,9 @@ public class SearchForm implements SearchRequestParams { public Locale getLocale() { return LaRequestUtil.getRequest().getLocale(); } + + @Override + public SearchRequestType getType() { + return SearchRequestType.SEARCH; + } } diff --git a/src/main/java/org/codelibs/fess/app/web/search/SearchAction.java b/src/main/java/org/codelibs/fess/app/web/search/SearchAction.java index cc17e577d..e3cf13340 100644 --- a/src/main/java/org/codelibs/fess/app/web/search/SearchAction.java +++ b/src/main/java/org/codelibs/fess/app/web/search/SearchAction.java @@ -32,6 +32,7 @@ import org.codelibs.fess.app.service.SearchService; import org.codelibs.fess.app.web.base.FessSearchAction; import org.codelibs.fess.app.web.base.SearchForm; import org.codelibs.fess.entity.SearchRenderData; +import org.codelibs.fess.entity.SearchRequestParams.SearchRequestType; import org.codelibs.fess.exception.InvalidQueryException; import org.codelibs.fess.exception.ResultOffsetExceededException; import org.codelibs.fess.util.RenderDataUtil; @@ -136,7 +137,8 @@ public class SearchAction extends FessSearchAction { thumbnailManager.storeRequest(queryId, documentItems); } } - RenderDataUtil.register(data, "displayQuery", getDisplayQuery(form, labelTypeHelper.getLabelTypeItemList())); + RenderDataUtil.register(data, "displayQuery", + getDisplayQuery(form, labelTypeHelper.getLabelTypeItemList(SearchRequestType.SEARCH))); createPagingQuery(form); }); } catch (final InvalidQueryException e) { diff --git a/src/main/java/org/codelibs/fess/crawler/transformer/FessXpathTransformer.java b/src/main/java/org/codelibs/fess/crawler/transformer/FessXpathTransformer.java index ab34989ee..69abd9bc1 100644 --- a/src/main/java/org/codelibs/fess/crawler/transformer/FessXpathTransformer.java +++ b/src/main/java/org/codelibs/fess/crawler/transformer/FessXpathTransformer.java @@ -251,7 +251,7 @@ public class FessXpathTransformer extends XpathTransformer implements FessTransf // site putResultDataBody(dataMap, fessConfig.getIndexFieldSite(), getSite(url, urlEncoding)); // filename - String fileName = getFileName(url, urlEncoding); + final String fileName = getFileName(url, urlEncoding); if (StringUtil.isNotBlank(fileName)) { putResultDataBody(dataMap, fessConfig.getIndexFieldFilename(), fileName); } @@ -359,7 +359,7 @@ public class FessXpathTransformer extends XpathTransformer implements FessTransf protected String normalizeCanonicalUrl(final String baseUrl, final String canonicalUrl) { try { return new URL(new URL(baseUrl), canonicalUrl).toString(); - } catch (MalformedURLException e) { + } catch (final MalformedURLException e) { logger.warn("Invalid canonical url: " + baseUrl + " : " + canonicalUrl, e); } return null; diff --git a/src/main/java/org/codelibs/fess/ds/impl/FileListIndexUpdateCallbackImpl.java b/src/main/java/org/codelibs/fess/ds/impl/FileListIndexUpdateCallbackImpl.java index 2bbea80c7..ecfc65291 100644 --- a/src/main/java/org/codelibs/fess/ds/impl/FileListIndexUpdateCallbackImpl.java +++ b/src/main/java/org/codelibs/fess/ds/impl/FileListIndexUpdateCallbackImpl.java @@ -222,7 +222,7 @@ public class FileListIndexUpdateCallbackImpl implements IndexUpdateCallback { } executor.shutdown(); executor.awaitTermination(executorTerminationTimeout, TimeUnit.SECONDS); - } catch (InterruptedException e) { + } catch (final InterruptedException e) { if (logger.isDebugEnabled()) { logger.debug("Failed to interrupt executor.", e); } @@ -266,7 +266,7 @@ public class FileListIndexUpdateCallbackImpl implements IndexUpdateCallback { this.maxRedirectCount = maxRedirectCount; } - public void setExecutorTerminationTimeout(int executorTerminationTimeout) { + public void setExecutorTerminationTimeout(final int executorTerminationTimeout) { this.executorTerminationTimeout = executorTerminationTimeout; } diff --git a/src/main/java/org/codelibs/fess/ds/impl/GitBucketDataStoreImpl.java b/src/main/java/org/codelibs/fess/ds/impl/GitBucketDataStoreImpl.java index 71e117b20..cb2891db9 100644 --- a/src/main/java/org/codelibs/fess/ds/impl/GitBucketDataStoreImpl.java +++ b/src/main/java/org/codelibs/fess/ds/impl/GitBucketDataStoreImpl.java @@ -66,16 +66,16 @@ public class GitBucketDataStoreImpl extends AbstractDataStoreImpl { try { final String name = (String) repository.get("name"); final String owner = (String) repository.get("owner"); - final boolean isPrivate = (boolean) repository.get("is_private"); // TODO Use this info for roles + repository.get("is_private"); - List pathList = collectFileNames(rootURL, authToken, owner, name, "", 0, readInterval); - for (String path : pathList) { + final List pathList = collectFileNames(rootURL, authToken, owner, name, "", 0, readInterval); + for (final String path : pathList) { storeFileContent(rootURL, authToken, owner, name, path, dataConfig, callback, paramMap, scriptMap, defaultDataMap); if (readInterval > 0) { sleep(readInterval); } } - } catch (Exception e) { + } catch (final Exception e) { logger.warn("Failed to access to " + repository, e); } } @@ -103,12 +103,12 @@ public class GitBucketDataStoreImpl extends AbstractDataStoreImpl { protected List> getRepositoryList(final String rootURL, final String authToken) { final String url = rootURL + "api/v3/fess/repos"; try (CurlResponse curlResponse = Curl.get(url).header("Authorization", "token " + authToken).execute()) { - final String content = curlResponse.getContentAsString(); + curlResponse.getContentAsString(); final Map map = curlResponse.getContentAsMap(); assert (map.containsKey("repositories")); final List> repoList = (List>) map.get("repositories"); return repoList; - } catch (Exception e) { + } catch (final Exception e) { logger.warn("Failed to access to " + rootURL, e); return Collections.emptyList(); } @@ -140,7 +140,7 @@ public class GitBucketDataStoreImpl extends AbstractDataStoreImpl { callback.store(paramMap, dataMap); - } catch (Exception e) { + } catch (final Exception e) { // TODO CrawlingAccessException? logger.warn("Failed to parse " + url, e); } @@ -154,15 +154,15 @@ public class GitBucketDataStoreImpl extends AbstractDataStoreImpl { return Collections.emptyList(); } - List resultList = new ArrayList(); + final List resultList = new ArrayList<>(); final String url = rootURL + "api/v3/repos/" + owner + "/" + name + "/contents/" + path; try (CurlResponse curlResponse = Curl.get(url).header("Authorization", "token " + authToken).execute()) { final InputStream iStream = curlResponse.getContentAsStream(); - List fileList = parseList(iStream); + final List fileList = parseList(iStream); for (int i = 0; i < fileList.size(); ++i) { - Map file = (Map) fileList.get(i); + final Map file = (Map) fileList.get(i); final String newPath = path.isEmpty() ? file.get("name") : path + "/" + file.get("name"); switch (file.get("type")) { case "file": @@ -176,7 +176,7 @@ public class GitBucketDataStoreImpl extends AbstractDataStoreImpl { break; } } - } catch (Exception e) { + } catch (final Exception e) { logger.warn("Failed to access to " + url, e); } return resultList; diff --git a/src/main/java/org/codelibs/fess/entity/SearchRequestParams.java b/src/main/java/org/codelibs/fess/entity/SearchRequestParams.java index e5cbaf052..c50f0ffe0 100644 --- a/src/main/java/org/codelibs/fess/entity/SearchRequestParams.java +++ b/src/main/java/org/codelibs/fess/entity/SearchRequestParams.java @@ -42,14 +42,14 @@ public interface SearchRequestParams { int getPageSize(); - boolean isAdministrativeAccess(); - String[] getExtraQueries(); Object getAttribute(String name); Locale getLocale(); + SearchRequestType getType(); + public default String[] simplifyArray(final String[] values) { return stream(values).get(stream -> stream.filter(StringUtil::isNotBlank).distinct().toArray(n -> new String[n])); } @@ -89,4 +89,8 @@ public interface SearchRequestParams { public default GeoInfo createGeoInfo(final HttpServletRequest request) { return new GeoInfo(request); } + + public enum SearchRequestType { + SEARCH, ADMIN_SEARCH, JSON, GSA, SUGGEST; + } } 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 ee79183fc..f3df4899d 100644 --- a/src/main/java/org/codelibs/fess/es/client/FessEsClient.java +++ b/src/main/java/org/codelibs/fess/es/client/FessEsClient.java @@ -52,6 +52,7 @@ import org.codelibs.fess.entity.FacetInfo; import org.codelibs.fess.entity.GeoInfo; import org.codelibs.fess.entity.PingResponse; import org.codelibs.fess.entity.QueryContext; +import org.codelibs.fess.entity.SearchRequestParams.SearchRequestType; import org.codelibs.fess.exception.FessSystemException; import org.codelibs.fess.exception.InvalidQueryException; import org.codelibs.fess.exception.ResultOffsetExceededException; @@ -864,7 +865,7 @@ public class FessEsClient implements Client { private int size = Constants.DEFAULT_PAGE_SIZE; private GeoInfo geoInfo; private FacetInfo facetInfo; - private boolean administrativeAccess = false; + private SearchRequestType searchRequestType = SearchRequestType.SEARCH; public static SearchConditionBuilder builder(final SearchRequestBuilder searchRequestBuilder) { return new SearchConditionBuilder(searchRequestBuilder); @@ -879,8 +880,8 @@ public class FessEsClient implements Client { return this; } - public SearchConditionBuilder administrativeAccess(final boolean administrativeAccess) { - this.administrativeAccess = administrativeAccess; + public SearchConditionBuilder searchRequestType(final SearchRequestType searchRequestType) { + this.searchRequestType = searchRequestType; return this; } @@ -920,8 +921,8 @@ public class FessEsClient implements Client { throw new ResultOffsetExceededException("The number of result size is exceeded."); } - final QueryContext queryContext = queryHelper.build(query, context -> { - if (administrativeAccess) { + final QueryContext queryContext = queryHelper.build(searchRequestType, query, context -> { + if (SearchRequestType.ADMIN_SEARCH.equals(searchRequestType)) { context.skipRoleQuery(); } // geo diff --git a/src/main/java/org/codelibs/fess/es/config/bsbhv/BsApiTokenBhv.java b/src/main/java/org/codelibs/fess/es/config/bsbhv/BsAccessTokenBhv.java similarity index 61% rename from src/main/java/org/codelibs/fess/es/config/bsbhv/BsApiTokenBhv.java rename to src/main/java/org/codelibs/fess/es/config/bsbhv/BsAccessTokenBhv.java index 0e6d96ed5..38e6740c1 100644 --- a/src/main/java/org/codelibs/fess/es/config/bsbhv/BsApiTokenBhv.java +++ b/src/main/java/org/codelibs/fess/es/config/bsbhv/BsAccessTokenBhv.java @@ -20,9 +20,9 @@ import java.util.Map; import org.codelibs.fess.es.config.allcommon.EsAbstractBehavior; import org.codelibs.fess.es.config.allcommon.EsAbstractEntity.RequestOptionCall; -import org.codelibs.fess.es.config.bsentity.dbmeta.ApiTokenDbm; -import org.codelibs.fess.es.config.cbean.ApiTokenCB; -import org.codelibs.fess.es.config.exentity.ApiToken; +import org.codelibs.fess.es.config.bsentity.dbmeta.AccessTokenDbm; +import org.codelibs.fess.es.config.cbean.AccessTokenCB; +import org.codelibs.fess.es.config.exentity.AccessToken; import org.dbflute.Entity; import org.dbflute.bhv.readable.CBCall; import org.dbflute.bhv.readable.EntityRowHandler; @@ -39,7 +39,7 @@ import org.elasticsearch.action.index.IndexRequestBuilder; /** * @author ESFlute (using FreeGen) */ -public abstract class BsApiTokenBhv extends EsAbstractBehavior { +public abstract class BsAccessTokenBhv extends EsAbstractBehavior { // =================================================================================== // Control Override @@ -56,25 +56,27 @@ public abstract class BsApiTokenBhv extends EsAbstractBehavior RESULT createEntity(Map source, Class entityType) { + protected RESULT createEntity(Map source, Class entityType) { try { final RESULT result = entityType.newInstance(); result.setName(DfTypeUtil.toString(source.get("name"))); result.setToken(DfTypeUtil.toString(source.get("token"))); + result.setPermissions(toStringArray(source.get("permissions"))); + result.setParameterName(DfTypeUtil.toString(source.get("parameter_name"))); result.setCreatedBy(DfTypeUtil.toString(source.get("createdBy"))); result.setCreatedTime(DfTypeUtil.toLong(source.get("createdTime"))); result.setUpdatedBy(DfTypeUtil.toString(source.get("updatedBy"))); @@ -89,25 +91,25 @@ public abstract class BsApiTokenBhv extends EsAbstractBehavior cbLambda) { + public int selectCount(CBCall cbLambda) { return facadeSelectCount(createCB(cbLambda)); } - public OptionalEntity selectEntity(CBCall cbLambda) { + public OptionalEntity selectEntity(CBCall cbLambda) { return facadeSelectEntity(createCB(cbLambda)); } - protected OptionalEntity facadeSelectEntity(ApiTokenCB cb) { + protected OptionalEntity facadeSelectEntity(AccessTokenCB cb) { return doSelectOptionalEntity(cb, typeOfSelectedEntity()); } - protected OptionalEntity doSelectOptionalEntity(ApiTokenCB cb, Class tp) { + protected OptionalEntity doSelectOptionalEntity(AccessTokenCB cb, Class tp) { return createOptionalEntity(doSelectEntity(cb, tp), cb); } @Override - public ApiTokenCB newConditionBean() { - return new ApiTokenCB(); + public AccessTokenCB newConditionBean() { + return new AccessTokenCB(); } @Override @@ -115,141 +117,141 @@ public abstract class BsApiTokenBhv extends EsAbstractBehavior cbLambda) { + public AccessToken selectEntityWithDeletedCheck(CBCall cbLambda) { return facadeSelectEntityWithDeletedCheck(createCB(cbLambda)); } - public OptionalEntity selectByPK(String id) { + public OptionalEntity selectByPK(String id) { return facadeSelectByPK(id); } - protected OptionalEntity facadeSelectByPK(String id) { + protected OptionalEntity facadeSelectByPK(String id) { return doSelectOptionalByPK(id, typeOfSelectedEntity()); } - protected ENTITY doSelectByPK(String id, Class tp) { + protected ENTITY doSelectByPK(String id, Class tp) { return doSelectEntity(xprepareCBAsPK(id), tp); } - protected ApiTokenCB xprepareCBAsPK(String id) { + protected AccessTokenCB xprepareCBAsPK(String id) { assertObjectNotNull("id", id); return newConditionBean().acceptPK(id); } - protected OptionalEntity doSelectOptionalByPK(String id, Class tp) { + protected OptionalEntity doSelectOptionalByPK(String id, Class tp) { return createOptionalEntity(doSelectByPK(id, tp), id); } @Override - protected Class typeOfSelectedEntity() { - return ApiToken.class; + protected Class typeOfSelectedEntity() { + return AccessToken.class; } @Override - protected Class typeOfHandlingEntity() { - return ApiToken.class; + protected Class typeOfHandlingEntity() { + return AccessToken.class; } @Override - protected Class typeOfHandlingConditionBean() { - return ApiTokenCB.class; + protected Class typeOfHandlingConditionBean() { + return AccessTokenCB.class; } - public ListResultBean selectList(CBCall cbLambda) { + public ListResultBean selectList(CBCall cbLambda) { return facadeSelectList(createCB(cbLambda)); } - public PagingResultBean selectPage(CBCall cbLambda) { + public PagingResultBean selectPage(CBCall cbLambda) { // #pending same? - return (PagingResultBean) facadeSelectList(createCB(cbLambda)); + return (PagingResultBean) facadeSelectList(createCB(cbLambda)); } - public void selectCursor(CBCall cbLambda, EntityRowHandler entityLambda) { + public void selectCursor(CBCall cbLambda, EntityRowHandler entityLambda) { facadeSelectCursor(createCB(cbLambda), entityLambda); } - public void selectBulk(CBCall cbLambda, EntityRowHandler> entityLambda) { + public void selectBulk(CBCall cbLambda, EntityRowHandler> entityLambda) { delegateSelectBulk(createCB(cbLambda), entityLambda, typeOfSelectedEntity()); } // =================================================================================== // Update // ====== - public void insert(ApiToken entity) { + public void insert(AccessToken entity) { doInsert(entity, null); } - public void insert(ApiToken entity, RequestOptionCall opLambda) { + public void insert(AccessToken entity, RequestOptionCall opLambda) { entity.asDocMeta().indexOption(opLambda); doInsert(entity, null); } - public void update(ApiToken entity) { + public void update(AccessToken entity) { doUpdate(entity, null); } - public void update(ApiToken entity, RequestOptionCall opLambda) { + public void update(AccessToken entity, RequestOptionCall opLambda) { entity.asDocMeta().indexOption(opLambda); doUpdate(entity, null); } - public void insertOrUpdate(ApiToken entity) { + public void insertOrUpdate(AccessToken entity) { doInsertOrUpdate(entity, null, null); } - public void insertOrUpdate(ApiToken entity, RequestOptionCall opLambda) { + public void insertOrUpdate(AccessToken entity, RequestOptionCall opLambda) { entity.asDocMeta().indexOption(opLambda); doInsertOrUpdate(entity, null, null); } - public void delete(ApiToken entity) { + public void delete(AccessToken entity) { doDelete(entity, null); } - public void delete(ApiToken entity, RequestOptionCall opLambda) { + public void delete(AccessToken entity, RequestOptionCall opLambda) { entity.asDocMeta().deleteOption(opLambda); doDelete(entity, null); } - public int queryDelete(CBCall cbLambda) { + public int queryDelete(CBCall cbLambda) { return doQueryDelete(createCB(cbLambda), null); } - public int[] batchInsert(List list) { + public int[] batchInsert(List list) { return batchInsert(list, null, null); } - public int[] batchInsert(List list, RequestOptionCall call) { + public int[] batchInsert(List list, RequestOptionCall call) { return batchInsert(list, call, null); } - public int[] batchInsert(List list, RequestOptionCall call, + public int[] batchInsert(List list, RequestOptionCall call, RequestOptionCall entityCall) { return doBatchInsert(new BulkList<>(list, call, entityCall), null); } - public int[] batchUpdate(List list) { + public int[] batchUpdate(List list) { return batchUpdate(list, null, null); } - public int[] batchUpdate(List list, RequestOptionCall call) { + public int[] batchUpdate(List list, RequestOptionCall call) { return batchUpdate(list, call, null); } - public int[] batchUpdate(List list, RequestOptionCall call, + public int[] batchUpdate(List list, RequestOptionCall call, RequestOptionCall entityCall) { return doBatchUpdate(new BulkList<>(list, call, entityCall), null); } - public int[] batchDelete(List list) { + public int[] batchDelete(List list) { return batchDelete(list, null, null); } - public int[] batchDelete(List list, RequestOptionCall call) { + public int[] batchDelete(List list, RequestOptionCall call) { return batchDelete(list, call, null); } - public int[] batchDelete(List list, RequestOptionCall call, + public int[] batchDelete(List list, RequestOptionCall call, RequestOptionCall entityCall) { return doBatchDelete(new BulkList<>(list, call, entityCall), null); } diff --git a/src/main/java/org/codelibs/fess/es/config/bsentity/BsApiToken.java b/src/main/java/org/codelibs/fess/es/config/bsentity/BsAccessToken.java similarity index 82% rename from src/main/java/org/codelibs/fess/es/config/bsentity/BsApiToken.java rename to src/main/java/org/codelibs/fess/es/config/bsentity/BsAccessToken.java index a918ff55d..9858f91ae 100644 --- a/src/main/java/org/codelibs/fess/es/config/bsentity/BsApiToken.java +++ b/src/main/java/org/codelibs/fess/es/config/bsentity/BsAccessToken.java @@ -20,13 +20,13 @@ import java.util.HashMap; import java.util.Map; import org.codelibs.fess.es.config.allcommon.EsAbstractEntity; -import org.codelibs.fess.es.config.bsentity.dbmeta.ApiTokenDbm; +import org.codelibs.fess.es.config.bsentity.dbmeta.AccessTokenDbm; /** * ${table.comment} * @author ESFlute (using FreeGen) */ -public class BsApiToken extends EsAbstractEntity { +public class BsAccessToken extends EsAbstractEntity { // =================================================================================== // Definition @@ -43,6 +43,12 @@ public class BsApiToken extends EsAbstractEntity { /** token */ protected String token; + /** permissions */ + protected String[] permissions; + + /** parameter_name */ + protected String parameterName; + /** createdBy */ protected String createdBy; @@ -61,13 +67,13 @@ public class BsApiToken extends EsAbstractEntity { // DB Meta // ======= @Override - public ApiTokenDbm asDBMeta() { - return ApiTokenDbm.getInstance(); + public AccessTokenDbm asDBMeta() { + return AccessTokenDbm.getInstance(); } @Override public String asTableDbName() { - return "api_token"; + return "access_token"; } // =================================================================================== @@ -82,6 +88,12 @@ public class BsApiToken extends EsAbstractEntity { if (token != null) { sourceMap.put("token", token); } + if (permissions != null) { + sourceMap.put("permissions", permissions); + } + if (parameterName != null) { + sourceMap.put("parameter_name", parameterName); + } if (createdBy != null) { sourceMap.put("createdBy", createdBy); } @@ -105,6 +117,8 @@ public class BsApiToken extends EsAbstractEntity { StringBuilder sb = new StringBuilder(); sb.append(dm).append(name); sb.append(dm).append(token); + sb.append(dm).append(permissions); + sb.append(dm).append(parameterName); sb.append(dm).append(createdBy); sb.append(dm).append(createdTime); sb.append(dm).append(updatedBy); @@ -139,6 +153,26 @@ public class BsApiToken extends EsAbstractEntity { this.token = value; } + public String[] getPermissions() { + checkSpecifiedProperty("permissions"); + return permissions; + } + + public void setPermissions(String[] value) { + registerModifiedProperty("permissions"); + this.permissions = value; + } + + public String getParameterName() { + checkSpecifiedProperty("parameterName"); + return convertEmptyToNull(parameterName); + } + + public void setParameterName(String value) { + registerModifiedProperty("parameterName"); + this.parameterName = value; + } + public String getCreatedBy() { checkSpecifiedProperty("createdBy"); return convertEmptyToNull(createdBy); diff --git a/src/main/java/org/codelibs/fess/es/config/bsentity/dbmeta/ApiTokenDbm.java b/src/main/java/org/codelibs/fess/es/config/bsentity/dbmeta/AccessTokenDbm.java similarity index 76% rename from src/main/java/org/codelibs/fess/es/config/bsentity/dbmeta/ApiTokenDbm.java rename to src/main/java/org/codelibs/fess/es/config/bsentity/dbmeta/AccessTokenDbm.java index a7982aaa8..fd322df67 100644 --- a/src/main/java/org/codelibs/fess/es/config/bsentity/dbmeta/ApiTokenDbm.java +++ b/src/main/java/org/codelibs/fess/es/config/bsentity/dbmeta/AccessTokenDbm.java @@ -19,7 +19,7 @@ import java.time.LocalDateTime; import java.util.List; import java.util.Map; -import org.codelibs.fess.es.config.exentity.ApiToken; +import org.codelibs.fess.es.config.exentity.AccessToken; import org.dbflute.Entity; import org.dbflute.dbmeta.AbstractDBMeta; import org.dbflute.dbmeta.info.ColumnInfo; @@ -32,19 +32,19 @@ import org.dbflute.util.DfTypeUtil; /** * @author ESFlute (using FreeGen) */ -public class ApiTokenDbm extends AbstractDBMeta { +public class AccessTokenDbm extends AbstractDBMeta { protected static final Class suppressUnusedImportLocalDateTime = LocalDateTime.class; // =================================================================================== // Singleton // ========= - private static final ApiTokenDbm _instance = new ApiTokenDbm(); + private static final AccessTokenDbm _instance = new AccessTokenDbm(); - private ApiTokenDbm() { + private AccessTokenDbm() { } - public static ApiTokenDbm getInstance() { + public static AccessTokenDbm getInstance() { return _instance; } @@ -79,15 +79,19 @@ public class ApiTokenDbm extends AbstractDBMeta { // --------------- protected final Map _epgMap = newHashMap(); { - setupEpg(_epgMap, et -> ((ApiToken) et).getName(), (et, vl) -> ((ApiToken) et).setName(DfTypeUtil.toString(vl)), "name"); - setupEpg(_epgMap, et -> ((ApiToken) et).getToken(), (et, vl) -> ((ApiToken) et).setToken(DfTypeUtil.toString(vl)), "token"); - setupEpg(_epgMap, et -> ((ApiToken) et).getCreatedBy(), (et, vl) -> ((ApiToken) et).setCreatedBy(DfTypeUtil.toString(vl)), + setupEpg(_epgMap, et -> ((AccessToken) et).getName(), (et, vl) -> ((AccessToken) et).setName(DfTypeUtil.toString(vl)), "name"); + setupEpg(_epgMap, et -> ((AccessToken) et).getToken(), (et, vl) -> ((AccessToken) et).setToken(DfTypeUtil.toString(vl)), "token"); + setupEpg(_epgMap, et -> ((AccessToken) et).getPermissions(), (et, vl) -> ((AccessToken) et).setPermissions((String[]) vl), + "permissions"); + setupEpg(_epgMap, et -> ((AccessToken) et).getParameterName(), + (et, vl) -> ((AccessToken) et).setParameterName(DfTypeUtil.toString(vl)), "parameterName"); + setupEpg(_epgMap, et -> ((AccessToken) et).getCreatedBy(), (et, vl) -> ((AccessToken) et).setCreatedBy(DfTypeUtil.toString(vl)), "createdBy"); - setupEpg(_epgMap, et -> ((ApiToken) et).getCreatedTime(), (et, vl) -> ((ApiToken) et).setCreatedTime(DfTypeUtil.toLong(vl)), + setupEpg(_epgMap, et -> ((AccessToken) et).getCreatedTime(), (et, vl) -> ((AccessToken) et).setCreatedTime(DfTypeUtil.toLong(vl)), "createdTime"); - setupEpg(_epgMap, et -> ((ApiToken) et).getUpdatedBy(), (et, vl) -> ((ApiToken) et).setUpdatedBy(DfTypeUtil.toString(vl)), + setupEpg(_epgMap, et -> ((AccessToken) et).getUpdatedBy(), (et, vl) -> ((AccessToken) et).setUpdatedBy(DfTypeUtil.toString(vl)), "updatedBy"); - setupEpg(_epgMap, et -> ((ApiToken) et).getUpdatedTime(), (et, vl) -> ((ApiToken) et).setUpdatedTime(DfTypeUtil.toLong(vl)), + setupEpg(_epgMap, et -> ((AccessToken) et).getUpdatedTime(), (et, vl) -> ((AccessToken) et).setUpdatedTime(DfTypeUtil.toLong(vl)), "updatedTime"); } @@ -99,9 +103,9 @@ public class ApiTokenDbm extends AbstractDBMeta { // =================================================================================== // Table Info // ========== - protected final String _tableDbName = "api_token"; - protected final String _tableDispName = "api_token"; - protected final String _tablePropertyName = "ApiToken"; + protected final String _tableDbName = "access_token"; + protected final String _tableDispName = "access_token"; + protected final String _tablePropertyName = "AccessToken"; public String getTableDbName() { return _tableDbName; @@ -129,6 +133,10 @@ public class ApiTokenDbm extends AbstractDBMeta { 0, null, false, null, null, null, null, null, false); protected final ColumnInfo _columnToken = cci("token", "token", null, null, String.class, "token", null, false, false, false, "String", 0, 0, null, false, null, null, null, null, null, false); + protected final ColumnInfo _columnPermissions = cci("permissions", "permissions", null, null, String[].class, "permissions", null, + false, false, false, "String", 0, 0, null, false, null, null, null, null, null, false); + protected final ColumnInfo _columnParameterName = cci("parameter_name", "parameter_name", null, null, String.class, "parameterName", + null, false, false, false, "String", 0, 0, null, false, null, null, null, null, null, false); protected final ColumnInfo _columnCreatedBy = cci("createdBy", "createdBy", null, null, String.class, "createdBy", null, false, false, false, "String", 0, 0, null, false, null, null, null, null, null, false); protected final ColumnInfo _columnCreatedTime = cci("createdTime", "createdTime", null, null, Long.class, "createdTime", null, false, @@ -146,6 +154,14 @@ public class ApiTokenDbm extends AbstractDBMeta { return _columnToken; } + public ColumnInfo columnPermissions() { + return _columnPermissions; + } + + public ColumnInfo columnParameterName() { + return _columnParameterName; + } + public ColumnInfo columnCreatedBy() { return _columnCreatedBy; } @@ -166,6 +182,8 @@ public class ApiTokenDbm extends AbstractDBMeta { List ls = newArrayList(); ls.add(columnName()); ls.add(columnToken()); + ls.add(columnPermissions()); + ls.add(columnParameterName()); ls.add(columnCreatedBy()); ls.add(columnCreatedTime()); ls.add(columnUpdatedBy()); @@ -196,17 +214,17 @@ public class ApiTokenDbm extends AbstractDBMeta { // ========= @Override public String getEntityTypeName() { - return "org.codelibs.fess.es.config.exentity.ApiToken"; + return "org.codelibs.fess.es.config.exentity.AccessToken"; } @Override public String getConditionBeanTypeName() { - return "org.codelibs.fess.es.config.cbean.ApiTokenCB"; + return "org.codelibs.fess.es.config.cbean.AccessTokenCB"; } @Override public String getBehaviorTypeName() { - return "org.codelibs.fess.es.config.exbhv.ApiTokenBhv"; + return "org.codelibs.fess.es.config.exbhv.AccessTokenBhv"; } // =================================================================================== @@ -214,7 +232,7 @@ public class ApiTokenDbm extends AbstractDBMeta { // =========== @Override public Class getEntityType() { - return ApiToken.class; + return AccessToken.class; } // =================================================================================== @@ -222,7 +240,7 @@ public class ApiTokenDbm extends AbstractDBMeta { // =============== @Override public Entity newEntity() { - return new ApiToken(); + return new AccessToken(); } // =================================================================================== diff --git a/src/main/java/org/codelibs/fess/es/config/cbean/ApiTokenCB.java b/src/main/java/org/codelibs/fess/es/config/cbean/AccessTokenCB.java similarity index 86% rename from src/main/java/org/codelibs/fess/es/config/cbean/ApiTokenCB.java rename to src/main/java/org/codelibs/fess/es/config/cbean/AccessTokenCB.java index cbdd961c5..ab66d12d2 100644 --- a/src/main/java/org/codelibs/fess/es/config/cbean/ApiTokenCB.java +++ b/src/main/java/org/codelibs/fess/es/config/cbean/AccessTokenCB.java @@ -15,10 +15,10 @@ */ package org.codelibs.fess.es.config.cbean; -import org.codelibs.fess.es.config.cbean.bs.BsApiTokenCB; +import org.codelibs.fess.es.config.cbean.bs.BsAccessTokenCB; /** * @author ESFlute (using FreeGen) */ -public class ApiTokenCB extends BsApiTokenCB { +public class AccessTokenCB extends BsAccessTokenCB { } diff --git a/src/main/java/org/codelibs/fess/es/config/cbean/bs/BsApiTokenCB.java b/src/main/java/org/codelibs/fess/es/config/cbean/bs/BsAccessTokenCB.java similarity index 84% rename from src/main/java/org/codelibs/fess/es/config/cbean/bs/BsApiTokenCB.java rename to src/main/java/org/codelibs/fess/es/config/cbean/bs/BsAccessTokenCB.java index f6d4d6920..148f076a0 100644 --- a/src/main/java/org/codelibs/fess/es/config/cbean/bs/BsApiTokenCB.java +++ b/src/main/java/org/codelibs/fess/es/config/cbean/bs/BsAccessTokenCB.java @@ -20,10 +20,10 @@ import java.util.List; import java.util.Map; import org.codelibs.fess.es.config.allcommon.EsAbstractConditionBean; -import org.codelibs.fess.es.config.bsentity.dbmeta.ApiTokenDbm; -import org.codelibs.fess.es.config.cbean.ApiTokenCB; -import org.codelibs.fess.es.config.cbean.cq.ApiTokenCQ; -import org.codelibs.fess.es.config.cbean.cq.bs.BsApiTokenCQ; +import org.codelibs.fess.es.config.bsentity.dbmeta.AccessTokenDbm; +import org.codelibs.fess.es.config.cbean.AccessTokenCB; +import org.codelibs.fess.es.config.cbean.cq.AccessTokenCQ; +import org.codelibs.fess.es.config.cbean.cq.bs.BsAccessTokenCQ; import org.dbflute.cbean.ConditionQuery; import org.elasticsearch.action.search.SearchRequestBuilder; import org.elasticsearch.index.query.QueryBuilder; @@ -31,25 +31,25 @@ import org.elasticsearch.index.query.QueryBuilder; /** * @author ESFlute (using FreeGen) */ -public class BsApiTokenCB extends EsAbstractConditionBean { +public class BsAccessTokenCB extends EsAbstractConditionBean { // =================================================================================== // Attribute // ========= - protected BsApiTokenCQ _conditionQuery; + protected BsAccessTokenCQ _conditionQuery; protected HpSpecification _specification; // =================================================================================== // Control // ======= @Override - public ApiTokenDbm asDBMeta() { - return ApiTokenDbm.getInstance(); + public AccessTokenDbm asDBMeta() { + return AccessTokenDbm.getInstance(); } @Override public String asTableDbName() { - return "api_token"; + return "access_token"; } @Override @@ -65,11 +65,11 @@ public class BsApiTokenCB extends EsAbstractConditionBean { // =================================================================================== // Primary Key // =========== - public ApiTokenCB acceptPK(String id) { + public AccessTokenCB acceptPK(String id) { assertObjectNotNull("id", id); - BsApiTokenCB cb = this; + BsAccessTokenCB cb = this; cb.query().docMeta().setId_Equal(id); - return (ApiTokenCB) this; + return (AccessTokenCB) this; } @Override @@ -103,20 +103,20 @@ public class BsApiTokenCB extends EsAbstractConditionBean { // =================================================================================== // Query // ===== - public BsApiTokenCQ query() { + public BsAccessTokenCQ query() { assertQueryPurpose(); return doGetConditionQuery(); } - protected BsApiTokenCQ doGetConditionQuery() { + protected BsAccessTokenCQ doGetConditionQuery() { if (_conditionQuery == null) { _conditionQuery = createLocalCQ(); } return _conditionQuery; } - protected BsApiTokenCQ createLocalCQ() { - return new ApiTokenCQ(); + protected BsAccessTokenCQ createLocalCQ() { + return new AccessTokenCQ(); } // =================================================================================== @@ -155,6 +155,14 @@ public class BsApiTokenCB extends EsAbstractConditionBean { doColumn("token"); } + public void columnPermissions() { + doColumn("permissions"); + } + + public void columnParameterName() { + doColumn("parameter_name"); + } + public void columnCreatedBy() { doColumn("createdBy"); } diff --git a/src/main/java/org/codelibs/fess/es/config/cbean/cq/ApiTokenCQ.java b/src/main/java/org/codelibs/fess/es/config/cbean/cq/AccessTokenCQ.java similarity index 85% rename from src/main/java/org/codelibs/fess/es/config/cbean/cq/ApiTokenCQ.java rename to src/main/java/org/codelibs/fess/es/config/cbean/cq/AccessTokenCQ.java index 43c5d46fb..b4cb3ff01 100644 --- a/src/main/java/org/codelibs/fess/es/config/cbean/cq/ApiTokenCQ.java +++ b/src/main/java/org/codelibs/fess/es/config/cbean/cq/AccessTokenCQ.java @@ -15,10 +15,10 @@ */ package org.codelibs.fess.es.config.cbean.cq; -import org.codelibs.fess.es.config.cbean.cq.bs.BsApiTokenCQ; +import org.codelibs.fess.es.config.cbean.cq.bs.BsAccessTokenCQ; /** * @author ESFlute (using FreeGen) */ -public class ApiTokenCQ extends BsApiTokenCQ { +public class AccessTokenCQ extends BsAccessTokenCQ { } diff --git a/src/main/java/org/codelibs/fess/es/config/cbean/cq/bs/BsApiTokenCQ.java b/src/main/java/org/codelibs/fess/es/config/cbean/cq/bs/BsAccessTokenCQ.java similarity index 72% rename from src/main/java/org/codelibs/fess/es/config/cbean/cq/bs/BsApiTokenCQ.java rename to src/main/java/org/codelibs/fess/es/config/cbean/cq/bs/BsAccessTokenCQ.java index d9307b84d..da0e1a5eb 100644 --- a/src/main/java/org/codelibs/fess/es/config/cbean/cq/bs/BsApiTokenCQ.java +++ b/src/main/java/org/codelibs/fess/es/config/cbean/cq/bs/BsAccessTokenCQ.java @@ -19,7 +19,7 @@ import java.time.LocalDateTime; import java.util.Collection; import org.codelibs.fess.es.config.allcommon.EsAbstractConditionQuery; -import org.codelibs.fess.es.config.cbean.cq.ApiTokenCQ; +import org.codelibs.fess.es.config.cbean.cq.AccessTokenCQ; import org.dbflute.cbean.ckey.ConditionKey; import org.elasticsearch.index.query.BoolQueryBuilder; import org.elasticsearch.index.query.CommonTermsQueryBuilder; @@ -37,7 +37,7 @@ import org.elasticsearch.index.query.WildcardQueryBuilder; /** * @author ESFlute (using FreeGen) */ -public abstract class BsApiTokenCQ extends EsAbstractConditionQuery { +public abstract class BsAccessTokenCQ extends EsAbstractConditionQuery { protected static final Class suppressUnusedImportLocalDateTime = LocalDateTime.class; @@ -46,44 +46,44 @@ public abstract class BsApiTokenCQ extends EsAbstractConditionQuery { // ============= @Override public String asTableDbName() { - return "api_token"; + return "access_token"; } @Override public String xgetAliasName() { - return "api_token"; + return "access_token"; } // =================================================================================== // Query Control // ============= - public void filtered(FilteredCall filteredLambda) { + public void filtered(FilteredCall filteredLambda) { filtered(filteredLambda, null); } - public void filtered(FilteredCall filteredLambda, ConditionOptionCall opLambda) { + public void filtered(FilteredCall filteredLambda, ConditionOptionCall opLambda) { bool((must, should, mustNot, filter) -> { filteredLambda.callback(must, filter); }, opLambda); } - public void not(OperatorCall notLambda) { + public void not(OperatorCall notLambda) { not(notLambda, null); } - public void not(final OperatorCall notLambda, final ConditionOptionCall opLambda) { + public void not(final OperatorCall notLambda, final ConditionOptionCall opLambda) { bool((must, should, mustNot, filter) -> notLambda.callback(mustNot), opLambda); } - public void bool(BoolCall boolLambda) { + public void bool(BoolCall boolLambda) { bool(boolLambda, null); } - public void bool(BoolCall boolLambda, ConditionOptionCall opLambda) { - ApiTokenCQ mustQuery = new ApiTokenCQ(); - ApiTokenCQ shouldQuery = new ApiTokenCQ(); - ApiTokenCQ mustNotQuery = new ApiTokenCQ(); - ApiTokenCQ filterQuery = new ApiTokenCQ(); + public void bool(BoolCall boolLambda, ConditionOptionCall opLambda) { + AccessTokenCQ mustQuery = new AccessTokenCQ(); + AccessTokenCQ shouldQuery = new AccessTokenCQ(); + AccessTokenCQ mustNotQuery = new AccessTokenCQ(); + AccessTokenCQ filterQuery = new AccessTokenCQ(); boolLambda.callback(mustQuery, shouldQuery, mustNotQuery, filterQuery); if (mustQuery.hasQueries() || shouldQuery.hasQueries() || mustNotQuery.hasQueries() || filterQuery.hasQueries()) { BoolQueryBuilder builder = @@ -152,12 +152,12 @@ public abstract class BsApiTokenCQ extends EsAbstractConditionQuery { setId_Terms(idList, opLambda); } - public BsApiTokenCQ addOrderBy_Id_Asc() { + public BsAccessTokenCQ addOrderBy_Id_Asc() { regOBA("_id"); return this; } - public BsApiTokenCQ addOrderBy_Id_Desc() { + public BsAccessTokenCQ addOrderBy_Id_Desc() { regOBD("_id"); return this; } @@ -359,12 +359,12 @@ public abstract class BsApiTokenCQ extends EsAbstractConditionQuery { } } - public BsApiTokenCQ addOrderBy_Name_Asc() { + public BsAccessTokenCQ addOrderBy_Name_Asc() { regOBA("name"); return this; } - public BsApiTokenCQ addOrderBy_Name_Desc() { + public BsAccessTokenCQ addOrderBy_Name_Desc() { regOBD("name"); return this; } @@ -566,16 +566,430 @@ public abstract class BsApiTokenCQ extends EsAbstractConditionQuery { } } - public BsApiTokenCQ addOrderBy_Token_Asc() { + public BsAccessTokenCQ addOrderBy_Token_Asc() { regOBA("token"); return this; } - public BsApiTokenCQ addOrderBy_Token_Desc() { + public BsAccessTokenCQ addOrderBy_Token_Desc() { regOBD("token"); return this; } + public void setPermissions_Equal(String permissions) { + setPermissions_Term(permissions, null); + } + + public void setPermissions_Equal(String permissions, ConditionOptionCall opLambda) { + setPermissions_Term(permissions, opLambda); + } + + public void setPermissions_Term(String permissions) { + setPermissions_Term(permissions, null); + } + + public void setPermissions_Term(String permissions, ConditionOptionCall opLambda) { + TermQueryBuilder builder = regTermQ("permissions", permissions); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setPermissions_NotEqual(String permissions) { + setPermissions_NotTerm(permissions, null); + } + + public void setPermissions_NotTerm(String permissions) { + setPermissions_NotTerm(permissions, null); + } + + public void setPermissions_NotEqual(String permissions, ConditionOptionCall opLambda) { + setPermissions_NotTerm(permissions, opLambda); + } + + public void setPermissions_NotTerm(String permissions, ConditionOptionCall opLambda) { + not(not -> not.setPermissions_Term(permissions), opLambda); + } + + public void setPermissions_Terms(Collection permissionsList) { + setPermissions_Terms(permissionsList, null); + } + + public void setPermissions_Terms(Collection permissionsList, ConditionOptionCall opLambda) { + TermsQueryBuilder builder = regTermsQ("permissions", permissionsList); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setPermissions_InScope(Collection permissionsList) { + setPermissions_Terms(permissionsList, null); + } + + public void setPermissions_InScope(Collection permissionsList, ConditionOptionCall opLambda) { + setPermissions_Terms(permissionsList, opLambda); + } + + public void setPermissions_Match(String permissions) { + setPermissions_Match(permissions, null); + } + + public void setPermissions_Match(String permissions, ConditionOptionCall opLambda) { + MatchQueryBuilder builder = regMatchQ("permissions", permissions); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setPermissions_MatchPhrase(String permissions) { + setPermissions_MatchPhrase(permissions, null); + } + + public void setPermissions_MatchPhrase(String permissions, ConditionOptionCall opLambda) { + MatchQueryBuilder builder = regMatchPhraseQ("permissions", permissions); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setPermissions_MatchPhrasePrefix(String permissions) { + setPermissions_MatchPhrasePrefix(permissions, null); + } + + public void setPermissions_MatchPhrasePrefix(String permissions, ConditionOptionCall opLambda) { + MatchQueryBuilder builder = regMatchPhrasePrefixQ("permissions", permissions); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setPermissions_Fuzzy(String permissions) { + setPermissions_Fuzzy(permissions, null); + } + + public void setPermissions_Fuzzy(String permissions, ConditionOptionCall opLambda) { + FuzzyQueryBuilder builder = regFuzzyQ("permissions", permissions); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setPermissions_Prefix(String permissions) { + setPermissions_Prefix(permissions, null); + } + + public void setPermissions_Prefix(String permissions, ConditionOptionCall opLambda) { + PrefixQueryBuilder builder = regPrefixQ("permissions", permissions); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setPermissions_Wildcard(String permissions) { + setPermissions_Wildcard(permissions, null); + } + + public void setPermissions_Wildcard(String permissions, ConditionOptionCall opLambda) { + WildcardQueryBuilder builder = regWildcardQ("permissions", permissions); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setPermissions_Regexp(String permissions) { + setPermissions_Regexp(permissions, null); + } + + public void setPermissions_Regexp(String permissions, ConditionOptionCall opLambda) { + RegexpQueryBuilder builder = regRegexpQ("permissions", permissions); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setPermissions_GreaterThan(String permissions) { + setPermissions_GreaterThan(permissions, null); + } + + public void setPermissions_GreaterThan(String permissions, ConditionOptionCall opLambda) { + RangeQueryBuilder builder = regRangeQ("permissions", ConditionKey.CK_GREATER_THAN, permissions); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setPermissions_LessThan(String permissions) { + setPermissions_LessThan(permissions, null); + } + + public void setPermissions_LessThan(String permissions, ConditionOptionCall opLambda) { + RangeQueryBuilder builder = regRangeQ("permissions", ConditionKey.CK_LESS_THAN, permissions); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setPermissions_GreaterEqual(String permissions) { + setPermissions_GreaterEqual(permissions, null); + } + + public void setPermissions_GreaterEqual(String permissions, ConditionOptionCall opLambda) { + RangeQueryBuilder builder = regRangeQ("permissions", ConditionKey.CK_GREATER_EQUAL, permissions); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setPermissions_LessEqual(String permissions) { + setPermissions_LessEqual(permissions, null); + } + + public void setPermissions_LessEqual(String permissions, ConditionOptionCall opLambda) { + RangeQueryBuilder builder = regRangeQ("permissions", ConditionKey.CK_LESS_EQUAL, permissions); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setPermissions_Exists() { + setPermissions_Exists(null); + } + + public void setPermissions_Exists(ConditionOptionCall opLambda) { + ExistsQueryBuilder builder = regExistsQ("permissions"); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setPermissions_CommonTerms(String permissions) { + setPermissions_CommonTerms(permissions, null); + } + + public void setPermissions_CommonTerms(String permissions, ConditionOptionCall opLambda) { + CommonTermsQueryBuilder builder = regCommonTermsQ("permissions", permissions); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public BsAccessTokenCQ addOrderBy_Permissions_Asc() { + regOBA("permissions"); + return this; + } + + public BsAccessTokenCQ addOrderBy_Permissions_Desc() { + regOBD("permissions"); + return this; + } + + public void setParameterName_Equal(String parameterName) { + setParameterName_Term(parameterName, null); + } + + public void setParameterName_Equal(String parameterName, ConditionOptionCall opLambda) { + setParameterName_Term(parameterName, opLambda); + } + + public void setParameterName_Term(String parameterName) { + setParameterName_Term(parameterName, null); + } + + public void setParameterName_Term(String parameterName, ConditionOptionCall opLambda) { + TermQueryBuilder builder = regTermQ("parameter_name", parameterName); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setParameterName_NotEqual(String parameterName) { + setParameterName_NotTerm(parameterName, null); + } + + public void setParameterName_NotTerm(String parameterName) { + setParameterName_NotTerm(parameterName, null); + } + + public void setParameterName_NotEqual(String parameterName, ConditionOptionCall opLambda) { + setParameterName_NotTerm(parameterName, opLambda); + } + + public void setParameterName_NotTerm(String parameterName, ConditionOptionCall opLambda) { + not(not -> not.setParameterName_Term(parameterName), opLambda); + } + + public void setParameterName_Terms(Collection parameterNameList) { + setParameterName_Terms(parameterNameList, null); + } + + public void setParameterName_Terms(Collection parameterNameList, ConditionOptionCall opLambda) { + TermsQueryBuilder builder = regTermsQ("parameter_name", parameterNameList); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setParameterName_InScope(Collection parameterNameList) { + setParameterName_Terms(parameterNameList, null); + } + + public void setParameterName_InScope(Collection parameterNameList, ConditionOptionCall opLambda) { + setParameterName_Terms(parameterNameList, opLambda); + } + + public void setParameterName_Match(String parameterName) { + setParameterName_Match(parameterName, null); + } + + public void setParameterName_Match(String parameterName, ConditionOptionCall opLambda) { + MatchQueryBuilder builder = regMatchQ("parameter_name", parameterName); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setParameterName_MatchPhrase(String parameterName) { + setParameterName_MatchPhrase(parameterName, null); + } + + public void setParameterName_MatchPhrase(String parameterName, ConditionOptionCall opLambda) { + MatchQueryBuilder builder = regMatchPhraseQ("parameter_name", parameterName); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setParameterName_MatchPhrasePrefix(String parameterName) { + setParameterName_MatchPhrasePrefix(parameterName, null); + } + + public void setParameterName_MatchPhrasePrefix(String parameterName, ConditionOptionCall opLambda) { + MatchQueryBuilder builder = regMatchPhrasePrefixQ("parameter_name", parameterName); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setParameterName_Fuzzy(String parameterName) { + setParameterName_Fuzzy(parameterName, null); + } + + public void setParameterName_Fuzzy(String parameterName, ConditionOptionCall opLambda) { + FuzzyQueryBuilder builder = regFuzzyQ("parameter_name", parameterName); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setParameterName_Prefix(String parameterName) { + setParameterName_Prefix(parameterName, null); + } + + public void setParameterName_Prefix(String parameterName, ConditionOptionCall opLambda) { + PrefixQueryBuilder builder = regPrefixQ("parameter_name", parameterName); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setParameterName_Wildcard(String parameterName) { + setParameterName_Wildcard(parameterName, null); + } + + public void setParameterName_Wildcard(String parameterName, ConditionOptionCall opLambda) { + WildcardQueryBuilder builder = regWildcardQ("parameterName", parameterName); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setParameterName_Regexp(String parameterName) { + setParameterName_Regexp(parameterName, null); + } + + public void setParameterName_Regexp(String parameterName, ConditionOptionCall opLambda) { + RegexpQueryBuilder builder = regRegexpQ("parameterName", parameterName); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setParameterName_GreaterThan(String parameterName) { + setParameterName_GreaterThan(parameterName, null); + } + + public void setParameterName_GreaterThan(String parameterName, ConditionOptionCall opLambda) { + RangeQueryBuilder builder = regRangeQ("parameter_name", ConditionKey.CK_GREATER_THAN, parameterName); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setParameterName_LessThan(String parameterName) { + setParameterName_LessThan(parameterName, null); + } + + public void setParameterName_LessThan(String parameterName, ConditionOptionCall opLambda) { + RangeQueryBuilder builder = regRangeQ("parameter_name", ConditionKey.CK_LESS_THAN, parameterName); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setParameterName_GreaterEqual(String parameterName) { + setParameterName_GreaterEqual(parameterName, null); + } + + public void setParameterName_GreaterEqual(String parameterName, ConditionOptionCall opLambda) { + RangeQueryBuilder builder = regRangeQ("parameter_name", ConditionKey.CK_GREATER_EQUAL, parameterName); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setParameterName_LessEqual(String parameterName) { + setParameterName_LessEqual(parameterName, null); + } + + public void setParameterName_LessEqual(String parameterName, ConditionOptionCall opLambda) { + RangeQueryBuilder builder = regRangeQ("parameter_name", ConditionKey.CK_LESS_EQUAL, parameterName); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setParameterName_Exists() { + setParameterName_Exists(null); + } + + public void setParameterName_Exists(ConditionOptionCall opLambda) { + ExistsQueryBuilder builder = regExistsQ("parameterName"); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setParameterName_CommonTerms(String parameterName) { + setParameterName_CommonTerms(parameterName, null); + } + + public void setParameterName_CommonTerms(String parameterName, ConditionOptionCall opLambda) { + CommonTermsQueryBuilder builder = regCommonTermsQ("parameterName", parameterName); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public BsAccessTokenCQ addOrderBy_ParameterName_Asc() { + regOBA("parameter_name"); + return this; + } + + public BsAccessTokenCQ addOrderBy_ParameterName_Desc() { + regOBD("parameter_name"); + return this; + } + public void setCreatedBy_Equal(String createdBy) { setCreatedBy_Term(createdBy, null); } @@ -773,12 +1187,12 @@ public abstract class BsApiTokenCQ extends EsAbstractConditionQuery { } } - public BsApiTokenCQ addOrderBy_CreatedBy_Asc() { + public BsAccessTokenCQ addOrderBy_CreatedBy_Asc() { regOBA("createdBy"); return this; } - public BsApiTokenCQ addOrderBy_CreatedBy_Desc() { + public BsAccessTokenCQ addOrderBy_CreatedBy_Desc() { regOBD("createdBy"); return this; } @@ -947,12 +1361,12 @@ public abstract class BsApiTokenCQ extends EsAbstractConditionQuery { } } - public BsApiTokenCQ addOrderBy_CreatedTime_Asc() { + public BsAccessTokenCQ addOrderBy_CreatedTime_Asc() { regOBA("createdTime"); return this; } - public BsApiTokenCQ addOrderBy_CreatedTime_Desc() { + public BsAccessTokenCQ addOrderBy_CreatedTime_Desc() { regOBD("createdTime"); return this; } @@ -1154,12 +1568,12 @@ public abstract class BsApiTokenCQ extends EsAbstractConditionQuery { } } - public BsApiTokenCQ addOrderBy_UpdatedBy_Asc() { + public BsAccessTokenCQ addOrderBy_UpdatedBy_Asc() { regOBA("updatedBy"); return this; } - public BsApiTokenCQ addOrderBy_UpdatedBy_Desc() { + public BsAccessTokenCQ addOrderBy_UpdatedBy_Desc() { regOBD("updatedBy"); return this; } @@ -1328,12 +1742,12 @@ public abstract class BsApiTokenCQ extends EsAbstractConditionQuery { } } - public BsApiTokenCQ addOrderBy_UpdatedTime_Asc() { + public BsAccessTokenCQ addOrderBy_UpdatedTime_Asc() { regOBA("updatedTime"); return this; } - public BsApiTokenCQ addOrderBy_UpdatedTime_Desc() { + public BsAccessTokenCQ addOrderBy_UpdatedTime_Desc() { regOBD("updatedTime"); return this; } diff --git a/src/main/java/org/codelibs/fess/es/config/exbhv/ApiTokenBhv.java b/src/main/java/org/codelibs/fess/es/config/exbhv/AccessTokenBhv.java similarity index 85% rename from src/main/java/org/codelibs/fess/es/config/exbhv/ApiTokenBhv.java rename to src/main/java/org/codelibs/fess/es/config/exbhv/AccessTokenBhv.java index de8de6387..5659f4d2d 100644 --- a/src/main/java/org/codelibs/fess/es/config/exbhv/ApiTokenBhv.java +++ b/src/main/java/org/codelibs/fess/es/config/exbhv/AccessTokenBhv.java @@ -15,11 +15,11 @@ */ package org.codelibs.fess.es.config.exbhv; -import org.codelibs.fess.es.config.bsbhv.BsApiTokenBhv; +import org.codelibs.fess.es.config.bsbhv.BsAccessTokenBhv; /** * @author FreeGen */ -public class ApiTokenBhv extends BsApiTokenBhv { +public class AccessTokenBhv extends BsAccessTokenBhv { } diff --git a/src/main/java/org/codelibs/fess/es/config/exentity/ApiToken.java b/src/main/java/org/codelibs/fess/es/config/exentity/AccessToken.java similarity index 70% rename from src/main/java/org/codelibs/fess/es/config/exentity/ApiToken.java rename to src/main/java/org/codelibs/fess/es/config/exentity/AccessToken.java index 1fe5cb26d..316108a45 100644 --- a/src/main/java/org/codelibs/fess/es/config/exentity/ApiToken.java +++ b/src/main/java/org/codelibs/fess/es/config/exentity/AccessToken.java @@ -15,12 +15,14 @@ */ package org.codelibs.fess.es.config.exentity; -import org.codelibs.fess.es.config.bsentity.BsApiToken; +import java.util.Arrays; + +import org.codelibs.fess.es.config.bsentity.BsAccessToken; /** * @author ESFlute (using FreeGen) */ -public class ApiToken extends BsApiToken { +public class AccessToken extends BsAccessToken { private static final long serialVersionUID = 1L; @@ -42,8 +44,9 @@ public class ApiToken extends BsApiToken { @Override public String toString() { - return "ApiToken [name=" + name + ", token=" + token + ", createdBy=" + createdBy + ", createdTime=" + createdTime + ", updatedBy=" - + updatedBy + ", updatedTime=" + updatedTime + ", docMeta=" + docMeta + "]"; + return "AccessToken [name=" + name + ", token=" + token + ", permissions=" + Arrays.toString(permissions) + ", parameterName=" + + parameterName + ", createdBy=" + createdBy + ", createdTime=" + createdTime + ", updatedBy=" + updatedBy + + ", updatedTime=" + updatedTime + ", docMeta=" + docMeta + "]"; } } diff --git a/src/main/java/org/codelibs/fess/exception/InvalidAccessTokenException.java b/src/main/java/org/codelibs/fess/exception/InvalidAccessTokenException.java new file mode 100644 index 000000000..53cccaa77 --- /dev/null +++ b/src/main/java/org/codelibs/fess/exception/InvalidAccessTokenException.java @@ -0,0 +1,33 @@ +/* + * 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.exception; + +public class InvalidAccessTokenException extends FessSystemException { + + private static final long serialVersionUID = 1L; + + private final String type; + + public InvalidAccessTokenException(final String type, final String message) { + super(message); + this.type = type; + } + + public String getType() { + return type; + } + +} diff --git a/src/main/java/org/codelibs/fess/helper/DocumentHelper.java b/src/main/java/org/codelibs/fess/helper/DocumentHelper.java index 183b0dfab..90a9dfec4 100644 --- a/src/main/java/org/codelibs/fess/helper/DocumentHelper.java +++ b/src/main/java/org/codelibs/fess/helper/DocumentHelper.java @@ -119,7 +119,7 @@ public class DocumentHelper { final long startTime = System.currentTimeMillis(); try (final ResponseData responseData = client.execute(RequestDataBuilder.newRequestData().get().url(url).build())) { if (responseData.getRedirectLocation() != null) { - Set childUrlList = new HashSet<>(); + final Set childUrlList = new HashSet<>(); childUrlList.add(RequestDataBuilder.newRequestData().get().url(responseData.getRedirectLocation()).build()); throw new ChildUrlsException(childUrlList, "Redirected from " + url); } diff --git a/src/main/java/org/codelibs/fess/helper/JobHelper.java b/src/main/java/org/codelibs/fess/helper/JobHelper.java index 7652a726b..cd74114df 100644 --- a/src/main/java/org/codelibs/fess/helper/JobHelper.java +++ b/src/main/java/org/codelibs/fess/helper/JobHelper.java @@ -137,17 +137,17 @@ public class JobHelper { } public TimeoutTask startMonitorTask(final JobLog jobLog) { - TimeoutTarget target = new MonitorTarget(jobLog); + final TimeoutTarget target = new MonitorTarget(jobLog); return TimeoutManager.getInstance().addTimeoutTarget(target, monitorInterval, true); } - public void setMonitorInterval(int monitorInterval) { + public void setMonitorInterval(final int monitorInterval) { this.monitorInterval = monitorInterval; } static class MonitorTarget implements TimeoutTarget { - private JobLog jobLog; + private final JobLog jobLog; public MonitorTarget(final JobLog jobLog) { this.jobLog = jobLog; diff --git a/src/main/java/org/codelibs/fess/helper/KeyMatchHelper.java b/src/main/java/org/codelibs/fess/helper/KeyMatchHelper.java index 60768cddc..491af6f73 100644 --- a/src/main/java/org/codelibs/fess/helper/KeyMatchHelper.java +++ b/src/main/java/org/codelibs/fess/helper/KeyMatchHelper.java @@ -26,6 +26,7 @@ import javax.annotation.PostConstruct; import org.codelibs.core.misc.Pair; import org.codelibs.fess.Constants; import org.codelibs.fess.app.service.KeyMatchService; +import org.codelibs.fess.entity.SearchRequestParams.SearchRequestType; import org.codelibs.fess.es.client.FessEsClient; import org.codelibs.fess.es.client.FessEsClient.SearchConditionBuilder; import org.codelibs.fess.es.config.exentity.KeyMatch; @@ -100,8 +101,8 @@ public class KeyMatchHelper { fessConfig.getIndexDocumentType(), searchRequestBuilder -> { return SearchConditionBuilder.builder(searchRequestBuilder.setPreference(Constants.SEARCH_PREFERENCE_PRIMARY)) - .administrativeAccess(true).size(keyMatch.getMaxSize()).query(keyMatch.getQuery()) - .responseFields(new String[] { fessConfig.getIndexFieldDocId() }).build(); + .searchRequestType(SearchRequestType.ADMIN_SEARCH).size(keyMatch.getMaxSize()) + .query(keyMatch.getQuery()).responseFields(new String[] { fessConfig.getIndexFieldDocId() }).build(); }); return documentList; } diff --git a/src/main/java/org/codelibs/fess/helper/LabelTypeHelper.java b/src/main/java/org/codelibs/fess/helper/LabelTypeHelper.java index 6370f1c2f..cd4b0464c 100644 --- a/src/main/java/org/codelibs/fess/helper/LabelTypeHelper.java +++ b/src/main/java/org/codelibs/fess/helper/LabelTypeHelper.java @@ -33,6 +33,7 @@ import javax.annotation.Resource; import org.codelibs.core.lang.StringUtil; import org.codelibs.fess.Constants; import org.codelibs.fess.app.service.LabelTypeService; +import org.codelibs.fess.entity.SearchRequestParams.SearchRequestType; import org.codelibs.fess.es.config.exentity.LabelType; import org.codelibs.fess.util.ComponentUtil; import org.slf4j.Logger; @@ -70,13 +71,13 @@ public class LabelTypeHelper { labelTypeItemList = itemList; } - public List> getLabelTypeItemList() { + public List> getLabelTypeItemList(final SearchRequestType searchRequestType) { if (labelTypeItemList == null) { init(); } final List> itemList = new ArrayList<>(); - final Set roleSet = roleQueryHelper.build(); + final Set roleSet = roleQueryHelper.build(searchRequestType); if (roleSet.isEmpty()) { for (final LabelTypeItem item : labelTypeItemList) { if (item.getPermissions().length == 0) { diff --git a/src/main/java/org/codelibs/fess/helper/PopularWordHelper.java b/src/main/java/org/codelibs/fess/helper/PopularWordHelper.java index e047f13bf..1b78e9f1b 100644 --- a/src/main/java/org/codelibs/fess/helper/PopularWordHelper.java +++ b/src/main/java/org/codelibs/fess/helper/PopularWordHelper.java @@ -26,6 +26,7 @@ import java.util.concurrent.TimeUnit; import javax.annotation.PostConstruct; import org.codelibs.core.lang.StringUtil; +import org.codelibs.fess.entity.SearchRequestParams.SearchRequestType; import org.codelibs.fess.mylasta.direction.FessConfig; import org.codelibs.fess.suggest.request.popularwords.PopularWordsRequestBuilder; import org.codelibs.fess.util.ComponentUtil; @@ -52,12 +53,12 @@ public class PopularWordHelper { .expireAfterWrite(fessConfig.getSuggestPopularWordCacheExpireAsInteger().longValue(), TimeUnit.MINUTES).build(); } - public List getWordList(final String seed, final String[] tags, final String[] roles, final String[] fields, - final String[] excludes) { + public List getWordList(final SearchRequestType searchRequestType, final String seed, final String[] tags, + final String[] roles, final String[] fields, final String[] excludes) { final String baseSeed = seed != null ? seed : fessConfig.getSuggestPopularWordSeed(); final String[] baseTags = tags != null ? tags : fessConfig.getSuggestPopularWordTagsAsArray(); final String[] baseRoles = - roles != null ? roles : ComponentUtil.getRoleQueryHelper().build().stream().filter(StringUtil::isNotBlank) + roles != null ? roles : ComponentUtil.getRoleQueryHelper().build(searchRequestType).stream().filter(StringUtil::isNotBlank) .toArray(n -> new String[n]); final String[] baseFields = fields != null ? fields : fessConfig.getSuggestPopularWordFieldsAsArray(); final String[] baseExcludes = excludes != null ? excludes : fessConfig.getSuggestPopularWordExcludesAsArray(); diff --git a/src/main/java/org/codelibs/fess/helper/QueryHelper.java b/src/main/java/org/codelibs/fess/helper/QueryHelper.java index 528d85f35..5ae4bec93 100644 --- a/src/main/java/org/codelibs/fess/helper/QueryHelper.java +++ b/src/main/java/org/codelibs/fess/helper/QueryHelper.java @@ -53,6 +53,7 @@ import org.codelibs.fess.Constants; import org.codelibs.fess.entity.FacetInfo; import org.codelibs.fess.entity.GeoInfo; import org.codelibs.fess.entity.QueryContext; +import org.codelibs.fess.entity.SearchRequestParams.SearchRequestType; import org.codelibs.fess.exception.InvalidQueryException; import org.codelibs.fess.mylasta.direction.FessConfig; import org.codelibs.fess.util.ComponentUtil; @@ -283,7 +284,7 @@ public class QueryHelper { } } - public QueryContext build(final String query, final Consumer context) { + public QueryContext build(final SearchRequestType searchRequestType, final String query, final Consumer context) { String q; if (additionalQuery != null && StringUtil.isNotBlank(query)) { q = query + " " + additionalQuery; @@ -294,7 +295,7 @@ public class QueryHelper { final QueryContext queryContext = new QueryContext(q, true); buildBaseQuery(queryContext, context); buildBoostQuery(queryContext); - buildRoleQuery(queryContext); + buildRoleQuery(queryContext, searchRequestType); if (!queryContext.hasSorts() && defaultSortBuilders != null) { queryContext.addSorts(defaultSortBuilders); @@ -302,9 +303,9 @@ public class QueryHelper { return queryContext; } - protected void buildRoleQuery(final QueryContext queryContext) { + protected void buildRoleQuery(final QueryContext queryContext, final SearchRequestType searchRequestType) { if (roleQueryHelper != null && queryContext.roleQueryEnabled()) { - final Set roleSet = roleQueryHelper.build(); + final Set roleSet = roleQueryHelper.build(searchRequestType); if (!roleSet.isEmpty()) { queryContext.addQuery(boolQuery -> { final BoolQueryBuilder roleQuery = QueryBuilders.boolQuery(); diff --git a/src/main/java/org/codelibs/fess/helper/RoleQueryHelper.java b/src/main/java/org/codelibs/fess/helper/RoleQueryHelper.java index b28080582..76a6c3ff3 100644 --- a/src/main/java/org/codelibs/fess/helper/RoleQueryHelper.java +++ b/src/main/java/org/codelibs/fess/helper/RoleQueryHelper.java @@ -18,7 +18,6 @@ package org.codelibs.fess.helper; import static org.codelibs.core.stream.StreamUtil.stream; import java.util.ArrayList; -import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -31,6 +30,9 @@ import javax.servlet.http.HttpServletRequest; import org.codelibs.core.crypto.CachedCipher; import org.codelibs.core.lang.StringUtil; +import org.codelibs.fess.app.service.AccessTokenService; +import org.codelibs.fess.entity.SearchRequestParams.SearchRequestType; +import org.codelibs.fess.exception.InvalidAccessTokenException; import org.codelibs.fess.mylasta.action.FessUserBean; import org.codelibs.fess.mylasta.direction.FessConfig; import org.codelibs.fess.util.ComponentUtil; @@ -49,6 +51,8 @@ import org.slf4j.LoggerFactory; */ public class RoleQueryHelper { + private static final String USER_ROLES = "userRoles"; + private static final Logger logger = LoggerFactory.getLogger(RoleQueryHelper.class); public CachedCipher cipher; @@ -80,80 +84,125 @@ public class RoleQueryHelper { })); } - public Set build() { - final Set roleList = new HashSet<>(); + public Set build(final SearchRequestType searchRequestType) { + final Set roleSet = new HashSet<>(); final HttpServletRequest request = LaRequestUtil.getOptionalRequest().orElse(null); + final boolean isApiRequest = + !SearchRequestType.SEARCH.equals(searchRequestType) && !SearchRequestType.ADMIN_SEARCH.equals(searchRequestType); - // request parameter - if (request != null && StringUtil.isNotBlank(parameterKey)) { - roleList.addAll(buildByParameter(request)); - } + if (request != null) { + @SuppressWarnings("unchecked") + final Set list = (Set) request.getAttribute(USER_ROLES); + if (list != null) { + return list; + } - // request header - if (request != null && StringUtil.isNotBlank(headerKey)) { - roleList.addAll(buildByHeader(request)); - } + // request parameter + if (StringUtil.isNotBlank(parameterKey)) { + processParameter(request, roleSet); + } - // cookie - if (request != null && StringUtil.isNotBlank(cookieKey)) { - roleList.addAll(buildByCookie(request)); - } + // request header + if (StringUtil.isNotBlank(headerKey)) { + processHeader(request, roleSet); + } - // cookie mapping - if (cookieNameMap != null) { - roleList.addAll(buildByCookieNameMapping(request)); + // cookie + if (StringUtil.isNotBlank(cookieKey)) { + processCookie(request, roleSet); + } + + // cookie mapping + if (cookieNameMap != null) { + buildByCookieNameMapping(request, roleSet); + } + + if (isApiRequest) { + processAccessToken(request, roleSet); + } } final FessConfig fessConfig = ComponentUtil.getFessConfig(); final RequestManager requestManager = ComponentUtil.getRequestManager(); try { requestManager.findUserBean(FessUserBean.class) - .ifPresent(fessUserBean -> stream(fessUserBean.getPermissions()).of(stream -> stream.forEach(roleList::add))) - .orElse(() -> roleList.addAll(fessConfig.getSearchGuestPermissionList())); + .ifPresent(fessUserBean -> stream(fessUserBean.getPermissions()).of(stream -> stream.forEach(roleSet::add))) + .orElse(() -> { + if (isApiRequest && ComponentUtil.getFessConfig().getApiAccessTokenRequiredAsBoolean()) { + throw new InvalidAccessTokenException("invalid_token", "Access token is requried."); + } + roleSet.addAll(fessConfig.getSearchGuestPermissionList()); + }); } catch (final RuntimeException e) { requestManager.findLoginManager(FessUserBean.class).ifPresent(manager -> manager.logout()); throw e; } if (defaultRoleList != null) { - roleList.addAll(defaultRoleList); + roleSet.addAll(defaultRoleList); } if (logger.isDebugEnabled()) { - logger.debug("roleList: " + roleList); + logger.debug("roleSet: " + roleSet); } - return roleList; + if (request != null) { + request.setAttribute(USER_ROLES, roleSet); + } + return roleSet; } - protected Set buildByParameter(final HttpServletRequest request) { + protected void processAccessToken(final HttpServletRequest request, final Set roleSet) { + final String token = request.getHeader("Authorization"); + if (StringUtil.isNotBlank(token)) { + final AccessTokenService accessTokenService = ComponentUtil.getComponent(AccessTokenService.class); + accessTokenService.getAccessTokenByToken(token).ifPresent(accessToken -> { + stream(accessToken.getPermissions()).of(stream -> stream.forEach(roleSet::add)); + final String name = accessToken.getParameterName(); + stream(request.getParameterValues(name)).of(stream -> stream.filter(StringUtil::isNotBlank).forEach(roleSet::add)); + }).orElse(() -> { + throw new InvalidAccessTokenException("invalid_token", "Invalid token: " + token); + }); + } + } + + protected String getAccessToken(final HttpServletRequest request) { + final String token = request.getHeader("Authorization"); + if (token != null) { + final String[] values = token.trim().split(" "); + if (values.length == 2 && "Bearer".equals(values[0])) { + return values[1]; + } + throw new InvalidAccessTokenException("invalid_request", "Invalid format: " + token); + } + return request.getParameter("access_token"); + } + + protected void processParameter(final HttpServletRequest request, final Set roleSet) { final String parameter = request.getParameter(parameterKey); if (logger.isDebugEnabled()) { logger.debug(parameterKey + ":" + parameter); } if (StringUtil.isNotEmpty(parameter)) { - return decodedRoleList(parameter, encryptedParameterValue); + parseRoleSet(parameter, encryptedParameterValue, roleSet); } - return Collections.emptySet(); } - protected Set buildByHeader(final HttpServletRequest request) { + protected void processHeader(final HttpServletRequest request, final Set roleSet) { final String parameter = request.getHeader(headerKey); if (logger.isDebugEnabled()) { logger.debug(headerKey + ":" + parameter); } if (StringUtil.isNotEmpty(parameter)) { - return decodedRoleList(parameter, encryptedHeaderValue); + parseRoleSet(parameter, encryptedHeaderValue, roleSet); } - return Collections.emptySet(); - } - protected Set buildByCookie(final HttpServletRequest request) { + protected void processCookie(final HttpServletRequest request, final Set roleSet) { final Cookie[] cookies = request.getCookies(); if (cookies != null) { @@ -164,26 +213,22 @@ public class RoleQueryHelper { logger.debug(cookieKey + ":" + value); } if (StringUtil.isNotEmpty(value)) { - return decodedRoleList(value, encryptedCookieValue); + parseRoleSet(value, encryptedCookieValue, roleSet); } } } } - return Collections.emptySet(); } - protected Set buildByCookieNameMapping(final HttpServletRequest request) { - - final Set roleNameSet = new HashSet<>(); + protected void buildByCookieNameMapping(final HttpServletRequest request, final Set roleSet) { final Cookie[] cookies = request.getCookies(); if (cookies != null) { for (final Cookie cookie : cookies) { - addRoleFromCookieMapping(roleNameSet, cookie); + addRoleFromCookieMapping(roleSet, cookie); } } - return roleNameSet; } protected void addRoleFromCookieMapping(final Set roleNameList, final Cookie cookie) { @@ -193,13 +238,12 @@ public class RoleQueryHelper { } } - protected Set decodedRoleList(final String value, final boolean encrypted) { + protected void parseRoleSet(final String value, final boolean encrypted, final Set roleSet) { String rolesStr = value; if (encrypted && cipher != null) { rolesStr = cipher.decryptoText(rolesStr); } - final Set roleSet = new HashSet<>(); if (valueSeparator.length() > 0) { final String[] values = rolesStr.split(valueSeparator); if (values.length > 1) { @@ -218,7 +262,6 @@ public class RoleQueryHelper { } } } - return roleSet; } public void addCookieNameMapping(final String cookieName, final String roleName) { diff --git a/src/main/java/org/codelibs/fess/helper/SearchLogHelper.java b/src/main/java/org/codelibs/fess/helper/SearchLogHelper.java index 9b950ba30..0e730fe0e 100644 --- a/src/main/java/org/codelibs/fess/helper/SearchLogHelper.java +++ b/src/main/java/org/codelibs/fess/helper/SearchLogHelper.java @@ -33,6 +33,7 @@ import org.codelibs.core.collection.LruHashMap; import org.codelibs.core.lang.StringUtil; import org.codelibs.fess.Constants; import org.codelibs.fess.app.service.SearchService; +import org.codelibs.fess.entity.SearchRequestParams; import org.codelibs.fess.es.log.exbhv.ClickLogBhv; import org.codelibs.fess.es.log.exbhv.FavoriteLogBhv; import org.codelibs.fess.es.log.exbhv.SearchFieldLogBhv; @@ -72,8 +73,8 @@ public class SearchLogHelper { userInfoCache = new LruHashMap<>(userInfoCacheSize); } - public void addSearchLog(final LocalDateTime requestedTime, final String queryId, final String query, final int pageStart, - final int pageSize, final QueryResponseList queryResponseList) { + public void addSearchLog(final SearchRequestParams params, final LocalDateTime requestedTime, final String queryId, final String query, + final int pageStart, final int pageSize, final QueryResponseList queryResponseList) { final RoleQueryHelper roleQueryHelper = ComponentUtil.getRoleQueryHelper(); final UserInfoHelper userInfoHelper = ComponentUtil.getUserInfoHelper(); @@ -86,7 +87,7 @@ public class SearchLogHelper { } } - searchLog.setRoles(roleQueryHelper.build().stream().toArray(n -> new String[n])); + searchLog.setRoles(roleQueryHelper.build(params.getType()).stream().toArray(n -> new String[n])); searchLog.setQueryId(queryId); searchLog.setHitCount(queryResponseList.getAllRecordCount()); searchLog.setResponseTime(queryResponseList.getExecTime()); diff --git a/src/main/java/org/codelibs/fess/helper/SystemHelper.java b/src/main/java/org/codelibs/fess/helper/SystemHelper.java index 96ed58f24..41017e83c 100644 --- a/src/main/java/org/codelibs/fess/helper/SystemHelper.java +++ b/src/main/java/org/codelibs/fess/helper/SystemHelper.java @@ -303,12 +303,12 @@ public class SystemHelper { ComponentUtil.getJobManager().reboot(); } - public String generateApiToken() { - return RandomStringUtils.random(ComponentUtil.getFessConfig().getApiTokenLengthAsInteger().intValue(), 0, 0, true, true, null, - random); + public String generateAccessToken() { + return RandomStringUtils.random(ComponentUtil.getFessConfig().getApiAccessTokenLengthAsInteger().intValue(), 0, 0, true, true, + null, random); } - public void setRandom(Random random) { + public void setRandom(final Random random) { this.random = random; } diff --git a/src/main/java/org/codelibs/fess/mylasta/action/FessHtmlPath.java b/src/main/java/org/codelibs/fess/mylasta/action/FessHtmlPath.java index c00990ab0..4c24178f8 100644 --- a/src/main/java/org/codelibs/fess/mylasta/action/FessHtmlPath.java +++ b/src/main/java/org/codelibs/fess/mylasta/action/FessHtmlPath.java @@ -23,14 +23,14 @@ import org.lastaflute.web.response.next.HtmlNext; */ public interface FessHtmlPath { - /** The path of the HTML: /admin/apitoken/admin_apitoken.jsp */ - HtmlNext path_AdminApitoken_AdminApitokenJsp = new HtmlNext("/admin/apitoken/admin_apitoken.jsp"); + /** The path of the HTML: /admin/accesstoken/admin_accesstoken.jsp */ + HtmlNext path_AdminAccesstoken_AdminAccesstokenJsp = new HtmlNext("/admin/accesstoken/admin_accesstoken.jsp"); - /** The path of the HTML: /admin/apitoken/admin_apitoken_details.jsp */ - HtmlNext path_AdminApitoken_AdminApitokenDetailsJsp = new HtmlNext("/admin/apitoken/admin_apitoken_details.jsp"); + /** The path of the HTML: /admin/accesstoken/admin_accesstoken_details.jsp */ + HtmlNext path_AdminAccesstoken_AdminAccesstokenDetailsJsp = new HtmlNext("/admin/accesstoken/admin_accesstoken_details.jsp"); - /** The path of the HTML: /admin/apitoken/admin_apitoken_edit.jsp */ - HtmlNext path_AdminApitoken_AdminApitokenEditJsp = new HtmlNext("/admin/apitoken/admin_apitoken_edit.jsp"); + /** The path of the HTML: /admin/accesstoken/admin_accesstoken_edit.jsp */ + HtmlNext path_AdminAccesstoken_AdminAccesstokenEditJsp = new HtmlNext("/admin/accesstoken/admin_accesstoken_edit.jsp"); /** The path of the HTML: /admin/backup/admin_backup.jsp */ HtmlNext path_AdminBackup_AdminBackupJsp = new HtmlNext("/admin/backup/admin_backup.jsp"); diff --git a/src/main/java/org/codelibs/fess/mylasta/action/FessLabels.java b/src/main/java/org/codelibs/fess/mylasta/action/FessLabels.java index 893b95869..f1fb5540d 100644 --- a/src/main/java/org/codelibs/fess/mylasta/action/FessLabels.java +++ b/src/main/java/org/codelibs/fess/mylasta/action/FessLabels.java @@ -560,8 +560,8 @@ public class FessLabels extends UserMessages { /** The key of the message: Back Up */ public static final String LABELS_menu_backup = "{labels.menu_backup}"; - /** The key of the message: API Token */ - public static final String LABELS_menu_api_token = "{labels.menu_api_token}"; + /** The key of the message: Access Token */ + public static final String LABELS_menu_access_token = "{labels.menu_access_token}"; /** The key of the message: Search... */ public static final String LABELS_SIDEBAR_placeholder_search = "{labels.sidebar.placeholder_search}"; @@ -2082,23 +2082,23 @@ public class FessLabels extends UserMessages { /** The key of the message: Sort Order */ public static final String LABELS_boost_document_rule_sort_order = "{labels.boost_document_rule_sort_order}"; - /** The key of the message: API Token */ - public static final String LABELS_api_token_configuration = "{labels.api_token_configuration}"; + /** The key of the message: Access Token */ + public static final String LABELS_access_token_configuration = "{labels.access_token_configuration}"; - /** The key of the message: API Token */ - public static final String LABELS_api_token_title_details = "{labels.api_token_title_details}"; + /** The key of the message: Access Token */ + public static final String LABELS_access_token_title_details = "{labels.access_token_title_details}"; /** The key of the message: Name */ - public static final String LABELS_api_token_list_name = "{labels.api_token_list_name}"; + public static final String LABELS_access_token_list_name = "{labels.access_token_list_name}"; /** The key of the message: Name */ - public static final String LABELS_api_token_name = "{labels.api_token_name}"; + public static final String LABELS_access_token_name = "{labels.access_token_name}"; /** The key of the message: Token */ - public static final String LABELS_api_token_token = "{labels.api_token_token}"; + public static final String LABELS_access_token_token = "{labels.access_token_token}"; /** The key of the message: Created */ - public static final String LABELS_api_token_updated_time = "{labels.api_token_updated_time}"; + public static final String LABELS_access_token_updated_time = "{labels.access_token_updated_time}"; /** The key of the message: Additional Word */ public static final String LABELS_elevate_word_configuration = "{labels.elevate_word_configuration}"; diff --git a/src/main/java/org/codelibs/fess/mylasta/direction/FessConfig.java b/src/main/java/org/codelibs/fess/mylasta/direction/FessConfig.java index 8684bc465..d11839be5 100644 --- a/src/main/java/org/codelibs/fess/mylasta/direction/FessConfig.java +++ b/src/main/java/org/codelibs/fess/mylasta/direction/FessConfig.java @@ -117,7 +117,10 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction String SUPPORTED_LANGUAGES = "supported.languages"; /** The key of the configuration. e.g. 60 */ - String API_TOKEN_LENGTH = "api.token.length"; + String API_ACCESS_TOKEN_LENGTH = "api.access.token.length"; + + /** The key of the configuration. e.g. false */ + String API_ACCESS_TOKEN_REQUIRED = "api.access.token.required"; /** The key of the configuration. e.g. 50 */ String CRAWLER_DOCUMENT_MAX_SITE_LENGTH = "crawler.document.max.site.length"; @@ -775,8 +778,8 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction /** The key of the configuration. e.g. esreq */ String ONLINE_HELP_NAME_ESREQ = "online.help.name.esreq"; - /** The key of the configuration. e.g. apitoken */ - String ONLINE_HELP_NAME_APITOKEN = "online.help.name.apitoken"; + /** The key of the configuration. e.g. accesstoken */ + String ONLINE_HELP_NAME_ACCESSTOKEN = "online.help.name.accesstoken"; /** The key of the configuration. e.g. ja */ String ONLINE_HELP_SUPPORTED_LANGS = "online.help.supported.langs"; @@ -1282,19 +1285,33 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction String getSupportedLanguages(); /** - * Get the value for the key 'api.token.length'.
+ * Get the value for the key 'api.access.token.length'.
* The value is, e.g. 60
* @return The value of found property. (NotNull: if not found, exception but basically no way) */ - String getApiTokenLength(); + String getApiAccessTokenLength(); /** - * Get the value for the key 'api.token.length' as {@link Integer}.
+ * Get the value for the key 'api.access.token.length' as {@link Integer}.
* The value is, e.g. 60
* @return The value of found property. (NotNull: if not found, exception but basically no way) * @throws NumberFormatException When the property is not integer. */ - Integer getApiTokenLengthAsInteger(); + Integer getApiAccessTokenLengthAsInteger(); + + /** + * Get the value for the key 'api.access.token.required'.
+ * The value is, e.g. false
+ * @return The value of found property. (NotNull: if not found, exception but basically no way) + */ + String getApiAccessTokenRequired(); + + /** + * Is the property for the key 'api.access.token.required' true?
+ * The value is, e.g. false
+ * @return The determination, true or false. (if not found, exception but basically no way) + */ + boolean isApiAccessTokenRequired(); /** * Get the value for the key 'crawler.document.max.site.length'.
@@ -3468,11 +3485,11 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction String getOnlineHelpNameEsreq(); /** - * Get the value for the key 'online.help.name.apitoken'.
- * The value is, e.g. apitoken
+ * Get the value for the key 'online.help.name.accesstoken'.
+ * The value is, e.g. accesstoken
* @return The value of found property. (NotNull: if not found, exception but basically no way) */ - String getOnlineHelpNameApitoken(); + String getOnlineHelpNameAccesstoken(); /** * Get the value for the key 'online.help.supported.langs'.
@@ -4432,12 +4449,20 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction return get(FessConfig.SUPPORTED_LANGUAGES); } - public String getApiTokenLength() { - return get(FessConfig.API_TOKEN_LENGTH); + public String getApiAccessTokenLength() { + return get(FessConfig.API_ACCESS_TOKEN_LENGTH); } - public Integer getApiTokenLengthAsInteger() { - return getAsInteger(FessConfig.API_TOKEN_LENGTH); + public Integer getApiAccessTokenLengthAsInteger() { + return getAsInteger(FessConfig.API_ACCESS_TOKEN_LENGTH); + } + + public String getApiAccessTokenRequired() { + return get(FessConfig.API_ACCESS_TOKEN_REQUIRED); + } + + public boolean isApiAccessTokenRequired() { + return is(FessConfig.API_ACCESS_TOKEN_REQUIRED); } public String getCrawlerDocumentMaxSiteLength() { @@ -5588,8 +5613,8 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction return get(FessConfig.ONLINE_HELP_NAME_ESREQ); } - public String getOnlineHelpNameApitoken() { - return get(FessConfig.ONLINE_HELP_NAME_APITOKEN); + public String getOnlineHelpNameAccesstoken() { + return get(FessConfig.ONLINE_HELP_NAME_ACCESSTOKEN); } public String getOnlineHelpSupportedLangs() { diff --git a/src/main/java/org/codelibs/fess/mylasta/direction/FessProp.java b/src/main/java/org/codelibs/fess/mylasta/direction/FessProp.java index ce53ac273..f2b180855 100644 --- a/src/main/java/org/codelibs/fess/mylasta/direction/FessProp.java +++ b/src/main/java/org/codelibs/fess/mylasta/direction/FessProp.java @@ -589,6 +589,12 @@ public interface FessProp { return Constants.TRUE.equalsIgnoreCase(getIndexerFavoriteCountEnabled()); } + String getApiAccessTokenRequired(); + + public default boolean getApiAccessTokenRequiredAsBoolean() { + return Constants.TRUE.equalsIgnoreCase(getApiAccessTokenRequired()); + } + String getIndexerThreadDumpEnabled(); public default boolean getIndexerThreadDumpEnabledAsBoolean() { @@ -1306,7 +1312,7 @@ public interface FessProp { public default int[] getCrawlerDocumentSpaceCharsAsArray() { int[] spaceChars = (int[]) propMap.get(CRAWLER_DOCUMENT_SPACE_CHARS); if (spaceChars == null) { - String spaceStr = getCrawlerDocumentSpaceChars(); + final String spaceStr = getCrawlerDocumentSpaceChars(); if (spaceStr.startsWith("u")) { spaceChars = split(spaceStr, "u").get( @@ -1326,7 +1332,7 @@ public interface FessProp { String getQueryAdditionalResponseFields(); - public default String[] getQueryAdditionalResponseFields(String... fields) { + public default String[] getQueryAdditionalResponseFields(final String... fields) { final List list = new ArrayList<>(fields.length + 10); stream(fields).of(stream -> stream.forEach(list::add)); split(getQueryAdditionalResponseFields(), ",").of( @@ -1336,7 +1342,7 @@ public interface FessProp { String getQueryAdditionalCacheResponseFields(); - public default String[] getQueryAdditionalCacheResponseFields(String... fields) { + public default String[] getQueryAdditionalCacheResponseFields(final String... fields) { final List list = new ArrayList<>(fields.length + 10); stream(fields).of(stream -> stream.forEach(list::add)); split(getQueryAdditionalCacheResponseFields(), ",").of( @@ -1346,7 +1352,7 @@ public interface FessProp { String getQueryAdditionalHighlightedFields(); - public default String[] getQueryAdditionalHighlightedFields(String... fields) { + public default String[] getQueryAdditionalHighlightedFields(final String... fields) { final List list = new ArrayList<>(fields.length + 10); stream(fields).of(stream -> stream.forEach(list::add)); split(getQueryAdditionalHighlightedFields(), ",").of( @@ -1356,7 +1362,7 @@ public interface FessProp { String getQueryAdditionalSearchFields(); - public default String[] getQueryAdditionalSearchFields(String... fields) { + public default String[] getQueryAdditionalSearchFields(final String... fields) { final List list = new ArrayList<>(fields.length + 10); stream(fields).of(stream -> stream.forEach(list::add)); split(getQueryAdditionalSearchFields(), ",").of( @@ -1366,7 +1372,7 @@ public interface FessProp { String getQueryAdditionalFacetFields(); - public default String[] getQueryAdditionalFacetFields(String... fields) { + public default String[] getQueryAdditionalFacetFields(final String... fields) { final List list = new ArrayList<>(fields.length + 10); stream(fields).of(stream -> stream.forEach(list::add)); split(getQueryAdditionalFacetFields(), ",").of( @@ -1376,7 +1382,7 @@ public interface FessProp { String getQueryAdditionalSortFields(); - public default String[] getQueryAdditionalSortFields(String... fields) { + public default String[] getQueryAdditionalSortFields(final String... fields) { final List list = new ArrayList<>(fields.length + 10); stream(fields).of(stream -> stream.forEach(list::add)); split(getQueryAdditionalSortFields(), ",") @@ -1386,7 +1392,7 @@ public interface FessProp { String getQueryAdditionalApiResponseFields(); - public default String[] getQueryAdditionalApiResponseFields(String... fields) { + public default String[] getQueryAdditionalApiResponseFields(final String... fields) { final List list = new ArrayList<>(fields.length + 10); stream(fields).of(stream -> stream.forEach(list::add)); split(getQueryAdditionalApiResponseFields(), ",").of( @@ -1396,7 +1402,7 @@ public interface FessProp { String getQueryAdditionalNotAnalyzedFields(); - public default String[] getQueryAdditionalNotAnalyzedFields(String... fields) { + public default String[] getQueryAdditionalNotAnalyzedFields(final String... fields) { final List list = new ArrayList<>(fields.length + 10); stream(fields).of(stream -> stream.forEach(list::add)); split(getQueryAdditionalNotAnalyzedFields(), ",").of( diff --git a/src/main/resources/esflute_config.xml b/src/main/resources/esflute_config.xml index 2bda4d402..975e2ac25 100644 --- a/src/main/resources/esflute_config.xml +++ b/src/main/resources/esflute_config.xml @@ -8,7 +8,7 @@ - + diff --git a/src/main/resources/fess_config.properties b/src/main/resources/fess_config.properties index 40270d2ec..eb749e02c 100644 --- a/src/main/resources/fess_config.properties +++ b/src/main/resources/fess_config.properties @@ -71,7 +71,8 @@ supported.uploaded.css.extentions=css supported.uploaded.media.extentions=jpg,jpeg,gif,png,swf supported.uploaded.files=license.properties supported.languages=ar,bg,ca,da,de,el,en,es,eu,fa,fi,fr,ga,gl,hi,hu,hy,id,it,ja,lv,ko,nl,no,pt,ro,ru,sv,th,tr,zh_CN,zh_TW,zh -api.token.length=60 +api.access.token.length=60 +api.access.token.required=false # ======================================================================================== # Index @@ -403,7 +404,7 @@ online.help.name.crawlinginfo=crawlinginfo online.help.name.backup=backup online.help.name.upgrade=upgrade online.help.name.esreq=esreq -online.help.name.apitoken=apitoken +online.help.name.accesstoken=accesstoken online.help.supported.langs=ja diff --git a/src/main/resources/fess_indices/.fess_config/api_token.json b/src/main/resources/fess_indices/.fess_config/access_token.json similarity index 73% rename from src/main/resources/fess_indices/.fess_config/api_token.json rename to src/main/resources/fess_indices/.fess_config/access_token.json index ab777a2ed..ae83f10a0 100644 --- a/src/main/resources/fess_indices/.fess_config/api_token.json +++ b/src/main/resources/fess_indices/.fess_config/access_token.json @@ -1,5 +1,5 @@ { - "api_token": { + "access_token": { "_source": { "enabled": true }, @@ -15,6 +15,14 @@ "type": "string", "index": "not_analyzed" }, + "permissions": { + "type": "string", + "index": "not_analyzed" + }, + "parameter_name" : { + "type": "string", + "index": "not_analyzed" + }, "createdBy": { "type": "string", "index": "not_analyzed" diff --git a/src/main/resources/fess_label.properties b/src/main/resources/fess_label.properties index 6f9a72ffd..716c11fea 100644 --- a/src/main/resources/fess_label.properties +++ b/src/main/resources/fess_label.properties @@ -177,7 +177,7 @@ labels.menu_jobLog=Job Log labels.menu_failure_url=Failure URL labels.menu_search_list=Search labels.menu_backup=Back Up -labels.menu_api_token=API Token +labels.menu_access_token=Access Token labels.sidebar.placeholder_search=Search... labels.sidebar.menu=MENU labels.footer.copyright=Copyright(C) 2009-2016 CodeLibs Project. All Rights Reserved. @@ -684,12 +684,12 @@ labels.boost_document_rule_list_url_expr=Condition labels.boost_document_rule_url_expr=Condition labels.boost_document_rule_boost_expr=Boost Expr labels.boost_document_rule_sort_order=Sort Order -labels.api_token_configuration=API Token -labels.api_token_title_details=API Token -labels.api_token_list_name=Name -labels.api_token_name=Name -labels.api_token_token=Token -labels.api_token_updated_time=Created +labels.access_token_configuration=Access Token +labels.access_token_title_details=Access Token +labels.access_token_list_name=Name +labels.access_token_name=Name +labels.access_token_token=Token +labels.access_token_updated_time=Created labels.elevate_word_configuration=Additional Word labels.elevate_word_title_details=Additional Word labels.elevate_word_link_list=List diff --git a/src/main/resources/fess_label_en.properties b/src/main/resources/fess_label_en.properties index 18f868506..2a379e1fb 100644 --- a/src/main/resources/fess_label_en.properties +++ b/src/main/resources/fess_label_en.properties @@ -177,7 +177,7 @@ labels.menu_jobLog=Job Log labels.menu_failure_url=Failure URL labels.menu_search_list=Search labels.menu_backup=Back Up -labels.menu_api_token=API Token +labels.menu_access_token=Access Token labels.sidebar.placeholder_search=Search... labels.sidebar.menu=MENU labels.footer.copyright=Copyright(C) 2009-2016 CodeLibs Project. All Rights Reserved. @@ -684,12 +684,12 @@ labels.boost_document_rule_list_url_expr=Condition labels.boost_document_rule_url_expr=Condition labels.boost_document_rule_boost_expr=Boost Expr labels.boost_document_rule_sort_order=Sort Order -labels.api_token_configuration=API Token -labels.api_token_title_details=API Token -labels.api_token_list_name=Name -labels.api_token_name=Name -labels.api_token_token=Token -labels.api_token_updated_time=Created +labels.access_token_configuration=Access Token +labels.access_token_title_details=Access Token +labels.access_token_list_name=Name +labels.access_token_name=Name +labels.access_token_token=Token +labels.access_token_updated_time=Created labels.elevate_word_configuration=Additional Word labels.elevate_word_title_details=Additional Word labels.elevate_word_link_list=List diff --git a/src/main/resources/fess_label_ja.properties b/src/main/resources/fess_label_ja.properties index 0ec751223..35610c91b 100644 --- a/src/main/resources/fess_label_ja.properties +++ b/src/main/resources/fess_label_ja.properties @@ -173,7 +173,7 @@ labels.menu_jobLog=\u30b8\u30e7\u30d6\u30ed\u30b0 labels.menu_failure_url=\u969c\u5bb3URL labels.menu_search_list=\u691c\u7d22 labels.menu_backup=\u30d0\u30c3\u30af\u30a2\u30c3\u30d7 -labels.menu_api_token=API\u30c8\u30fc\u30af\u30f3 +labels.menu_access_token=\u30a2\u30af\u30bb\u30b9\u30c8\u30fc\u30af\u30f3 labels.sidebar.placeholder_search=\u691c\u7d22... labels.sidebar.menu=\u30e1\u30cb\u30e5\u30fc labels.footer.copyright=Copyright(C) 2009-2016 CodeLibs Project. All Rights Reserved. @@ -682,12 +682,12 @@ labels.boost_document_rule_list_url_expr=\u72b6\u614b labels.boost_document_rule_url_expr=\u72b6\u614b labels.boost_document_rule_boost_expr=\u30d6\u30fc\u30b9\u30c8\u5024\u5f0f labels.boost_document_rule_sort_order=\u30bd\u30fc\u30c8\u9806 -labels.api_token_configuration=API\u30c8\u30fc\u30af\u30f3 -labels.api_token_title_details=API\u30c8\u30fc\u30af\u30f3 -labels.api_token_list_name=\u540d\u524d -labels.api_token_name=\u540d\u524d -labels.api_token_token=\u30c8\u30fc\u30af\u30f3 -labels.api_token_updated_time=\u4f5c\u6210\u65e5 +labels.access_token_configuration=\u30a2\u30af\u30bb\u30b9\u30c8\u30fc\u30af\u30f3 +labels.access_token_title_details=\u30a2\u30af\u30bb\u30b9\u30c8\u30fc\u30af\u30f3 +labels.access_token_list_name=\u540d\u524d +labels.access_token_name=\u540d\u524d +labels.access_token_token=\u30c8\u30fc\u30af\u30f3 +labels.access_token_updated_time=\u4f5c\u6210\u65e5 labels.elevate_word_configuration=\u8ffd\u52a0\u306e\u5358\u8a9e labels.elevate_word_title_details=\u8ffd\u52a0\u306e\u5358\u8a9e labels.elevate_word_link_list=\u4e00\u89a7 diff --git a/src/main/webapp/WEB-INF/view/admin/apitoken/admin_apitoken.jsp b/src/main/webapp/WEB-INF/view/admin/accesstoken/admin_accesstoken.jsp similarity index 81% rename from src/main/webapp/WEB-INF/view/admin/apitoken/admin_apitoken.jsp rename to src/main/webapp/WEB-INF/view/admin/accesstoken/admin_accesstoken.jsp index a5b32cff1..d647cf29a 100644 --- a/src/main/webapp/WEB-INF/view/admin/apitoken/admin_apitoken.jsp +++ b/src/main/webapp/WEB-INF/view/admin/accesstoken/admin_accesstoken.jsp @@ -3,7 +3,7 @@ <la:message key="labels.admin_brand_title" /> | <la:message - key="labels.api_token_configuration" /> + key="labels.access_token_configuration" /> @@ -11,12 +11,12 @@ - +

- +

@@ -37,7 +37,7 @@
<%-- List --%> - +
@@ -45,21 +45,21 @@
- +
+ key="labels.access_token_list_name" /> + items="${accessTokenItems}"> + data-href="${contextPath}/admin/accesstoken/details/4/${f:u(data.id)}"> @@ -67,7 +67,7 @@
${f:h(data.name)}
-
diff --git a/src/main/webapp/WEB-INF/view/admin/apitoken/admin_apitoken_details.jsp b/src/main/webapp/WEB-INF/view/admin/accesstoken/admin_accesstoken_details.jsp similarity index 92% rename from src/main/webapp/WEB-INF/view/admin/apitoken/admin_apitoken_details.jsp rename to src/main/webapp/WEB-INF/view/admin/accesstoken/admin_accesstoken_details.jsp index 441a67a9b..bff473eee 100644 --- a/src/main/webapp/WEB-INF/view/admin/apitoken/admin_apitoken_details.jsp +++ b/src/main/webapp/WEB-INF/view/admin/accesstoken/admin_accesstoken_details.jsp @@ -3,7 +3,7 @@ <la:message key="labels.admin_brand_title" /> | <la:message - key="labels.api_token_configuration" /> + key="labels.access_token_configuration" /> @@ -11,17 +11,17 @@ - +

- +

- + @@ -51,17 +51,17 @@ + key="labels.access_token_name" /> ${f:h(name)} + key="labels.access_token_token" /> ${f:h(token)} + key="labels.access_token_updated_time" /> ${fe:date(updatedTime)} diff --git a/src/main/webapp/WEB-INF/view/admin/apitoken/admin_apitoken_edit.jsp b/src/main/webapp/WEB-INF/view/admin/accesstoken/admin_accesstoken_edit.jsp similarity index 88% rename from src/main/webapp/WEB-INF/view/admin/apitoken/admin_apitoken_edit.jsp rename to src/main/webapp/WEB-INF/view/admin/accesstoken/admin_accesstoken_edit.jsp index 4faa56ac1..1459e25d0 100644 --- a/src/main/webapp/WEB-INF/view/admin/apitoken/admin_apitoken_edit.jsp +++ b/src/main/webapp/WEB-INF/view/admin/accesstoken/admin_accesstoken_edit.jsp @@ -3,7 +3,7 @@ <la:message key="labels.admin_brand_title" /> | <la:message - key="labels.api_token_configuration" /> + key="labels.access_token_configuration" /> @@ -11,17 +11,17 @@ - +

- +

- + @@ -46,7 +46,7 @@
+ key="labels.access_token_name" />
diff --git a/src/main/webapp/WEB-INF/view/common/admin/sidebar.jsp b/src/main/webapp/WEB-INF/view/common/admin/sidebar.jsp index 3d239c873..580f2da0d 100644 --- a/src/main/webapp/WEB-INF/view/common/admin/sidebar.jsp +++ b/src/main/webapp/WEB-INF/view/common/admin/sidebar.jsp @@ -70,10 +70,10 @@ -
  • class="active"> +
  • class="active"> - +
  • diff --git a/src/test/java/org/codelibs/fess/helper/QueryHelperTest.java b/src/test/java/org/codelibs/fess/helper/QueryHelperTest.java index 0910a7ec2..bbddee110 100644 --- a/src/test/java/org/codelibs/fess/helper/QueryHelperTest.java +++ b/src/test/java/org/codelibs/fess/helper/QueryHelperTest.java @@ -19,6 +19,7 @@ import org.apache.lucene.analysis.core.WhitespaceAnalyzer; import org.apache.lucene.queryparser.classic.QueryParser; import org.apache.lucene.queryparser.ext.ExtendableQueryParser; import org.codelibs.fess.Constants; +import org.codelibs.fess.entity.SearchRequestParams.SearchRequestType; import org.codelibs.fess.mylasta.direction.FessConfig; import org.codelibs.fess.unit.UnitFessTestCase; import org.codelibs.fess.util.ComponentUtil; @@ -100,7 +101,7 @@ public class QueryHelperTest extends UnitFessTestCase { } private QueryBuilder buildQuery(String query) { - return queryHelper.build(query, context -> { + return queryHelper.build(SearchRequestType.SEARCH, query, context -> { context.skipRoleQuery(); }).getQueryBuilder(); } diff --git a/src/test/java/org/codelibs/fess/helper/RoleQueryHelperTest.java b/src/test/java/org/codelibs/fess/helper/RoleQueryHelperTest.java index 9f5bee189..13ed146f6 100644 --- a/src/test/java/org/codelibs/fess/helper/RoleQueryHelperTest.java +++ b/src/test/java/org/codelibs/fess/helper/RoleQueryHelperTest.java @@ -15,43 +15,67 @@ */ package org.codelibs.fess.helper; +import java.util.HashSet; import java.util.Set; import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; import org.codelibs.core.crypto.CachedCipher; import org.codelibs.core.exception.IllegalBlockSizeRuntimeException; import org.codelibs.fess.unit.UnitFessTestCase; public class RoleQueryHelperTest extends UnitFessTestCase { - public RoleQueryHelper roleQueryHelperImpl; public CachedCipher cipher; @Override public void setUp() throws Exception { super.setUp(); - roleQueryHelperImpl = new RoleQueryHelper(); cipher = new CachedCipher(); cipher.setKey("1234567890123456"); } + private Set buildByParameter(final RoleQueryHelper roleQueryHelperImpl, final HttpServletRequest request) { + Set roleSet = new HashSet<>(); + roleQueryHelperImpl.processParameter(request, roleSet); + return roleSet; + } + + private Set buildByHeader(final RoleQueryHelper roleQueryHelperImpl, final HttpServletRequest request) { + Set roleSet = new HashSet<>(); + roleQueryHelperImpl.processHeader(request, roleSet); + return roleSet; + } + + private Set buildByCookie(final RoleQueryHelper roleQueryHelperImpl, final HttpServletRequest request) { + Set roleSet = new HashSet<>(); + roleQueryHelperImpl.processCookie(request, roleSet); + return roleSet; + } + + private Set decodedRoleList(final RoleQueryHelper roleQueryHelperImpl, final String value, final boolean encrypted) { + Set roleSet = new HashSet<>(); + roleQueryHelperImpl.parseRoleSet(value, encrypted, roleSet); + return roleSet; + } + public void test_buildByParameter() { final RoleQueryHelper roleQueryHelperImpl = new RoleQueryHelper(); Set roleSet; - roleSet = roleQueryHelperImpl.buildByParameter(getMockRequest()); + roleSet = buildByParameter(roleQueryHelperImpl, getMockRequest()); assertEquals(0, roleSet.size()); roleQueryHelperImpl.parameterKey = "fess1"; getMockRequest().setParameter("aaa", "bbb"); - roleSet = roleQueryHelperImpl.buildByParameter(getMockRequest()); + roleSet = buildByParameter(roleQueryHelperImpl, getMockRequest()); assertEquals(0, roleSet.size()); roleQueryHelperImpl.encryptedParameterValue = false; getMockRequest().setParameter("fess1", "xxx\nrole1,role2,role3"); - roleSet = roleQueryHelperImpl.buildByParameter(getMockRequest()); + roleSet = buildByParameter(roleQueryHelperImpl, getMockRequest()); assertEquals(3, roleSet.size()); assertTrue(roleSet.contains("role1")); assertTrue(roleSet.contains("role2")); @@ -62,7 +86,7 @@ public class RoleQueryHelperTest extends UnitFessTestCase { roleQueryHelperImpl.cipher = cipher; roleQueryHelperImpl.encryptedParameterValue = true; getMockRequest().setParameter("fess2", cipher.encryptoText("xxx\nrole1,role2,role3")); - roleSet = roleQueryHelperImpl.buildByParameter(getMockRequest()); + roleSet = buildByParameter(roleQueryHelperImpl, getMockRequest()); assertEquals(3, roleSet.size()); assertTrue(roleSet.contains("role1")); assertTrue(roleSet.contains("role2")); @@ -70,7 +94,7 @@ public class RoleQueryHelperTest extends UnitFessTestCase { getMockRequest().setParameter("fess2", "fail"); try { - roleSet = roleQueryHelperImpl.buildByParameter(getMockRequest()); + roleSet = buildByParameter(roleQueryHelperImpl, getMockRequest()); fail(); } catch (final IllegalBlockSizeRuntimeException e) { // ok @@ -79,14 +103,14 @@ public class RoleQueryHelperTest extends UnitFessTestCase { roleQueryHelperImpl.parameterKey = "fess3"; roleQueryHelperImpl.encryptedParameterValue = false; - roleSet = roleQueryHelperImpl.buildByParameter(getMockRequest()); + roleSet = buildByParameter(roleQueryHelperImpl, getMockRequest()); assertEquals(0, roleSet.size()); roleQueryHelperImpl.parameterKey = "fess4"; roleQueryHelperImpl.cipher = cipher; roleQueryHelperImpl.encryptedParameterValue = true; - roleSet = roleQueryHelperImpl.buildByParameter(getMockRequest()); + roleSet = buildByParameter(roleQueryHelperImpl, getMockRequest()); assertEquals(0, roleSet.size()); } @@ -97,7 +121,7 @@ public class RoleQueryHelperTest extends UnitFessTestCase { Set roleSet; try { - roleSet = roleQueryHelperImpl.buildByHeader(getMockRequest()); + roleSet = buildByHeader(roleQueryHelperImpl, getMockRequest()); fail(); } catch (final NullPointerException e) { //ok @@ -106,12 +130,12 @@ public class RoleQueryHelperTest extends UnitFessTestCase { roleQueryHelperImpl.headerKey = "fess1"; getMockRequest().addHeader("aaa", "bbb"); - roleSet = roleQueryHelperImpl.buildByHeader(getMockRequest()); + roleSet = buildByHeader(roleQueryHelperImpl, getMockRequest()); assertEquals(0, roleSet.size()); roleQueryHelperImpl.encryptedHeaderValue = false; getMockRequest().addHeader("fess1", "xxx\nrole1,role2,role3"); - roleSet = roleQueryHelperImpl.buildByHeader(getMockRequest()); + roleSet = buildByHeader(roleQueryHelperImpl, getMockRequest()); assertEquals(3, roleSet.size()); assertTrue(roleSet.contains("role1")); assertTrue(roleSet.contains("role2")); @@ -122,7 +146,7 @@ public class RoleQueryHelperTest extends UnitFessTestCase { roleQueryHelperImpl.cipher = cipher; roleQueryHelperImpl.encryptedHeaderValue = true; getMockRequest().addHeader("fess2", cipher.encryptoText("xxx\nrole1,role2,role3")); - roleSet = roleQueryHelperImpl.buildByHeader(getMockRequest()); + roleSet = buildByHeader(roleQueryHelperImpl, getMockRequest()); assertEquals(3, roleSet.size()); assertTrue(roleSet.contains("role1")); assertTrue(roleSet.contains("role2")); @@ -131,7 +155,7 @@ public class RoleQueryHelperTest extends UnitFessTestCase { roleQueryHelperImpl.headerKey = "fess2x"; getMockRequest().addHeader("fess2x", "fail"); try { - roleSet = roleQueryHelperImpl.buildByHeader(getMockRequest()); + roleSet = buildByHeader(roleQueryHelperImpl, getMockRequest()); fail(); } catch (final IllegalBlockSizeRuntimeException e) { // ok @@ -140,14 +164,14 @@ public class RoleQueryHelperTest extends UnitFessTestCase { roleQueryHelperImpl.headerKey = "fess3"; roleQueryHelperImpl.encryptedHeaderValue = false; - roleSet = roleQueryHelperImpl.buildByHeader(getMockRequest()); + roleSet = buildByHeader(roleQueryHelperImpl, getMockRequest()); assertEquals(0, roleSet.size()); roleQueryHelperImpl.headerKey = "fess4"; roleQueryHelperImpl.cipher = cipher; roleQueryHelperImpl.encryptedHeaderValue = true; - roleSet = roleQueryHelperImpl.buildByHeader(getMockRequest()); + roleSet = buildByHeader(roleQueryHelperImpl, getMockRequest()); assertEquals(0, roleSet.size()); } @@ -157,13 +181,13 @@ public class RoleQueryHelperTest extends UnitFessTestCase { Set roleSet; Cookie cookie; - roleSet = roleQueryHelperImpl.buildByCookie(getMockRequest()); + roleSet = buildByCookie(roleQueryHelperImpl, getMockRequest()); assertEquals(0, roleSet.size()); cookie = new Cookie("aaa", "bbb"); getMockRequest().addCookie(cookie); try { - roleSet = roleQueryHelperImpl.buildByCookie(getMockRequest()); + roleSet = buildByCookie(roleQueryHelperImpl, getMockRequest()); fail(); } catch (final NullPointerException e) { // ok @@ -171,13 +195,13 @@ public class RoleQueryHelperTest extends UnitFessTestCase { roleQueryHelperImpl.cookieKey = "fess1"; - roleSet = roleQueryHelperImpl.buildByCookie(getMockRequest()); + roleSet = buildByCookie(roleQueryHelperImpl, getMockRequest()); assertEquals(0, roleSet.size()); roleQueryHelperImpl.encryptedCookieValue = false; cookie = new Cookie("fess1", "xxx\nrole1,role2,role3"); getMockRequest().addCookie(cookie); - roleSet = roleQueryHelperImpl.buildByCookie(getMockRequest()); + roleSet = buildByCookie(roleQueryHelperImpl, getMockRequest()); assertEquals(3, roleSet.size()); assertTrue(roleSet.contains("role1")); assertTrue(roleSet.contains("role2")); @@ -189,7 +213,7 @@ public class RoleQueryHelperTest extends UnitFessTestCase { roleQueryHelperImpl.encryptedCookieValue = true; cookie = new Cookie("fess2", cipher.encryptoText("xxx\nrole1,role2,role3")); getMockRequest().addCookie(cookie); - roleSet = roleQueryHelperImpl.buildByCookie(getMockRequest()); + roleSet = buildByCookie(roleQueryHelperImpl, getMockRequest()); assertEquals(3, roleSet.size()); assertTrue(roleSet.contains("role1")); assertTrue(roleSet.contains("role2")); @@ -202,7 +226,7 @@ public class RoleQueryHelperTest extends UnitFessTestCase { cookie = new Cookie("fess2x", "fail"); getMockRequest().addCookie(cookie); try { - roleSet = roleQueryHelperImpl.buildByCookie(getMockRequest()); + roleSet = buildByCookie(roleQueryHelperImpl, getMockRequest()); fail(); } catch (final Exception e) { // ok @@ -211,14 +235,14 @@ public class RoleQueryHelperTest extends UnitFessTestCase { roleQueryHelperImpl.cookieKey = "fess3"; roleQueryHelperImpl.encryptedCookieValue = false; - roleSet = roleQueryHelperImpl.buildByCookie(getMockRequest()); + roleSet = buildByCookie(roleQueryHelperImpl, getMockRequest()); assertEquals(0, roleSet.size()); roleQueryHelperImpl.cookieKey = "fess4"; roleQueryHelperImpl.cipher = cipher; roleQueryHelperImpl.encryptedCookieValue = true; - roleSet = roleQueryHelperImpl.buildByCookie(getMockRequest()); + roleSet = buildByCookie(roleQueryHelperImpl, getMockRequest()); assertEquals(0, roleSet.size()); } @@ -232,28 +256,28 @@ public class RoleQueryHelperTest extends UnitFessTestCase { encrypted = false; value = ""; - roleSet = roleQueryHelperImpl.decodedRoleList(value, encrypted); + roleSet = decodedRoleList(roleQueryHelperImpl, value, encrypted); assertEquals(0, roleSet.size()); encrypted = false; value = "role1"; - roleSet = roleQueryHelperImpl.decodedRoleList(value, encrypted); + roleSet = decodedRoleList(roleQueryHelperImpl, value, encrypted); assertEquals(0, roleSet.size()); encrypted = false; value = "role1,role2"; - roleSet = roleQueryHelperImpl.decodedRoleList(value, encrypted); + roleSet = decodedRoleList(roleQueryHelperImpl, value, encrypted); assertEquals(0, roleSet.size()); encrypted = false; value = "xxx\nrole1"; - roleSet = roleQueryHelperImpl.decodedRoleList(value, encrypted); + roleSet = decodedRoleList(roleQueryHelperImpl, value, encrypted); assertEquals(1, roleSet.size()); assertTrue(roleSet.contains("role1")); encrypted = false; value = "xxx\nrole1,role2"; - roleSet = roleQueryHelperImpl.decodedRoleList(value, encrypted); + roleSet = decodedRoleList(roleQueryHelperImpl, value, encrypted); assertEquals(2, roleSet.size()); assertTrue(roleSet.contains("role1")); assertTrue(roleSet.contains("role2")); @@ -262,25 +286,25 @@ public class RoleQueryHelperTest extends UnitFessTestCase { encrypted = false; value = ""; - roleSet = roleQueryHelperImpl.decodedRoleList(value, encrypted); + roleSet = decodedRoleList(roleQueryHelperImpl, value, encrypted); assertEquals(0, roleSet.size()); encrypted = false; value = "role1"; - roleSet = roleQueryHelperImpl.decodedRoleList(value, encrypted); + roleSet = decodedRoleList(roleQueryHelperImpl, value, encrypted); assertEquals(1, roleSet.size()); assertTrue(roleSet.contains("role1")); encrypted = false; value = "role1,role2"; - roleSet = roleQueryHelperImpl.decodedRoleList(value, encrypted); + roleSet = decodedRoleList(roleQueryHelperImpl, value, encrypted); assertEquals(2, roleSet.size()); assertTrue(roleSet.contains("role1")); assertTrue(roleSet.contains("role2")); encrypted = false; value = "role1,role2,role3"; - roleSet = roleQueryHelperImpl.decodedRoleList(value, encrypted); + roleSet = decodedRoleList(roleQueryHelperImpl, value, encrypted); assertEquals(3, roleSet.size()); assertTrue(roleSet.contains("role1")); assertTrue(roleSet.contains("role2")); @@ -298,28 +322,28 @@ public class RoleQueryHelperTest extends UnitFessTestCase { encrypted = true; value = cipher.encryptoText(""); - roleSet = roleQueryHelperImpl.decodedRoleList(value, encrypted); + roleSet = decodedRoleList(roleQueryHelperImpl, value, encrypted); assertEquals(0, roleSet.size()); encrypted = true; value = cipher.encryptoText("role1"); - roleSet = roleQueryHelperImpl.decodedRoleList(value, encrypted); + roleSet = decodedRoleList(roleQueryHelperImpl, value, encrypted); assertEquals(0, roleSet.size()); encrypted = true; value = cipher.encryptoText("role1,role2"); - roleSet = roleQueryHelperImpl.decodedRoleList(value, encrypted); + roleSet = decodedRoleList(roleQueryHelperImpl, value, encrypted); assertEquals(0, roleSet.size()); encrypted = true; value = cipher.encryptoText("xxx\nrole1"); - roleSet = roleQueryHelperImpl.decodedRoleList(value, encrypted); + roleSet = decodedRoleList(roleQueryHelperImpl, value, encrypted); assertEquals(1, roleSet.size()); assertTrue(roleSet.contains("role1")); encrypted = true; value = cipher.encryptoText("xxx\nrole1,role2"); - roleSet = roleQueryHelperImpl.decodedRoleList(value, encrypted); + roleSet = decodedRoleList(roleQueryHelperImpl, value, encrypted); assertEquals(2, roleSet.size()); assertTrue(roleSet.contains("role1")); assertTrue(roleSet.contains("role2")); @@ -328,25 +352,25 @@ public class RoleQueryHelperTest extends UnitFessTestCase { encrypted = true; value = cipher.encryptoText(""); - roleSet = roleQueryHelperImpl.decodedRoleList(value, encrypted); + roleSet = decodedRoleList(roleQueryHelperImpl, value, encrypted); assertEquals(0, roleSet.size()); encrypted = true; value = cipher.encryptoText("role1"); - roleSet = roleQueryHelperImpl.decodedRoleList(value, encrypted); + roleSet = decodedRoleList(roleQueryHelperImpl, value, encrypted); assertEquals(1, roleSet.size()); assertTrue(roleSet.contains("role1")); encrypted = true; value = cipher.encryptoText("role1,role2"); - roleSet = roleQueryHelperImpl.decodedRoleList(value, encrypted); + roleSet = decodedRoleList(roleQueryHelperImpl, value, encrypted); assertEquals(2, roleSet.size()); assertTrue(roleSet.contains("role1")); assertTrue(roleSet.contains("role2")); encrypted = true; value = cipher.encryptoText("role1,role2,role3"); - roleSet = roleQueryHelperImpl.decodedRoleList(value, encrypted); + roleSet = decodedRoleList(roleQueryHelperImpl, value, encrypted); assertEquals(3, roleSet.size()); assertTrue(roleSet.contains("role1")); assertTrue(roleSet.contains("role2"));