fix #497 : ignore request locale on api

This commit is contained in:
Shinsuke Sugaya 2016-05-06 12:24:45 +09:00
parent e0e40ec1d4
commit 07c6d84e24
8 changed files with 61 additions and 14 deletions

View file

@ -26,6 +26,7 @@ import java.util.Date;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Map.Entry;
import java.util.regex.Matcher;
@ -99,8 +100,8 @@ public class GsaApiManager extends BaseApiManager implements WebApiManager {
boolean xmlDtd = false;
try {
final SearchRenderData data = new SearchRenderData();
final SearchApiRequestParams params = new SearchApiRequestParams(request, fessConfig);
searchService.search(request, params, data, OptionalThing.empty());
final GsaRequestParams params = new GsaRequestParams(request, fessConfig);
searchService.search(params, data, OptionalThing.empty());
query = params.getQuery();
final String execTime = data.getExecTime();
final long allRecordCount = data.getAllRecordCount();
@ -365,7 +366,7 @@ public class GsaApiManager extends BaseApiManager implements WebApiManager {
}
}
protected static class SearchApiRequestParams implements SearchRequestParams {
protected static class GsaRequestParams implements SearchRequestParams {
private final HttpServletRequest request;
@ -375,7 +376,7 @@ public class GsaApiManager extends BaseApiManager implements WebApiManager {
private int pageSize = -1;
protected SearchApiRequestParams(final HttpServletRequest request, final FessConfig fessConfig) {
protected GsaRequestParams(final HttpServletRequest request, final FessConfig fessConfig) {
this.request = request;
this.fessConfig = fessConfig;
}
@ -520,5 +521,15 @@ public class GsaApiManager extends BaseApiManager implements WebApiManager {
return false;
}
@Override
public Object getAttribute(String name) {
return request.getAttribute(name);
}
@Override
public Locale getLocale() {
return Locale.ROOT;
}
}
}

View file

@ -143,8 +143,8 @@ public class JsonApiManager extends BaseApiManager {
request.setAttribute(Constants.SEARCH_LOG_ACCESS_TYPE, Constants.SEARCH_LOG_ACCESS_TYPE_JSON);
try {
final SearchRenderData data = new SearchRenderData();
final SearchApiRequestParams params = new SearchApiRequestParams(request, fessConfig);
searchService.search(request, params, data, OptionalThing.empty());
final JsonRequestParams params = new JsonRequestParams(request, fessConfig);
searchService.search(params, data, OptionalThing.empty());
query = params.getQuery();
final String execTime = data.getExecTime();
final String queryTime = Long.toString(data.getQueryTime());
@ -673,7 +673,7 @@ public class JsonApiManager extends BaseApiManager {
return Integer.toHexString(ch).toUpperCase();
}
protected static class SearchApiRequestParams implements SearchRequestParams {
protected static class JsonRequestParams implements SearchRequestParams {
private final HttpServletRequest request;
@ -683,7 +683,7 @@ public class JsonApiManager extends BaseApiManager {
private int pageSize = -1;
protected SearchApiRequestParams(final HttpServletRequest request, final FessConfig fessConfig) {
protected JsonRequestParams(final HttpServletRequest request, final FessConfig fessConfig) {
this.request = request;
this.fessConfig = fessConfig;
}
@ -788,5 +788,15 @@ public class JsonApiManager extends BaseApiManager {
return false;
}
@Override
public Object getAttribute(String name) {
return request.getAttribute(name);
}
@Override
public Locale getLocale() {
return Locale.ROOT;
}
}
}

View file

@ -83,8 +83,7 @@ public class SearchService {
// Method
// ==============
public void search(final HttpServletRequest request, final SearchRequestParams params, final SearchRenderData data,
final OptionalThing<FessUserBean> userBean) {
public void search(final SearchRequestParams params, final SearchRenderData data, final OptionalThing<FessUserBean> userBean) {
final long requestedTime = systemHelper.getCurrentTimeAsLong();
final long startTime = System.currentTimeMillis();
@ -119,7 +118,7 @@ public class SearchService {
data.setFacetResponse(queryResponseList.getFacetResponse());
@SuppressWarnings("unchecked")
final Set<String> highlightQueries = (Set<String>) request.getAttribute(Constants.HIGHLIGHT_QUERIES);
final Set<String> highlightQueries = (Set<String>) params.getAttribute(Constants.HIGHLIGHT_QUERIES);
if (highlightQueries != null) {
final StringBuilder buf = new StringBuilder(100);
highlightQueries.stream().forEach(q -> {
@ -129,7 +128,7 @@ public class SearchService {
}
queryResponseList.setExecTime(System.currentTimeMillis() - startTime);
final NumberFormat nf = NumberFormat.getInstance(request.getLocale());
final NumberFormat nf = NumberFormat.getInstance(params.getLocale());
nf.setMaximumIntegerDigits(2);
nf.setMaximumFractionDigits(2);
String execTime;

View file

@ -124,7 +124,7 @@ public class AdminSearchlistAction extends FessAdminAction {
final WebRenderData renderData = new WebRenderData();
form.initialize();
try {
searchService.search(request, form, renderData, getUserBean());
searchService.search(form, renderData, getUserBean());
return asListHtml().renderWith(data -> {
renderData.register(data);
});

View file

@ -17,6 +17,7 @@ package org.codelibs.fess.app.web.admin.searchlist;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import javax.validation.constraints.Size;
@ -28,6 +29,7 @@ import org.codelibs.fess.entity.SearchRequestParams;
import org.codelibs.fess.mylasta.direction.FessConfig;
import org.codelibs.fess.util.ComponentUtil;
import org.codelibs.fess.util.StreamUtil;
import org.lastaflute.web.util.LaRequestUtil;
import org.lastaflute.web.validation.theme.conversion.ValidateTypeFailure;
/**
@ -138,4 +140,13 @@ public class ListForm implements SearchRequestParams, Serializable {
return true;
}
@Override
public Object getAttribute(String name) {
return LaRequestUtil.getRequest().getAttribute(name);
}
@Override
public Locale getLocale() {
return LaRequestUtil.getRequest().getLocale();
}
}

View file

@ -17,6 +17,7 @@ package org.codelibs.fess.app.web.base;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import javax.validation.constraints.Size;
@ -28,6 +29,7 @@ import org.codelibs.fess.entity.SearchRequestParams;
import org.codelibs.fess.mylasta.direction.FessConfig;
import org.codelibs.fess.util.ComponentUtil;
import org.codelibs.fess.util.StreamUtil;
import org.lastaflute.web.util.LaRequestUtil;
import org.lastaflute.web.validation.theme.conversion.ValidateTypeFailure;
public class SearchForm implements SearchRequestParams, Serializable {
@ -133,4 +135,13 @@ public class SearchForm implements SearchRequestParams, Serializable {
return false;
}
@Override
public Object getAttribute(String name) {
return LaRequestUtil.getRequest().getAttribute(name);
}
@Override
public Locale getLocale() {
return LaRequestUtil.getRequest().getLocale();
}
}

View file

@ -122,7 +122,7 @@ public class SearchAction extends FessSearchAction {
form.lang = searchService.getLanguages(request, form);
request.setAttribute(Constants.REQUEST_LANGUAGES, form.lang);
final WebRenderData renderData = new WebRenderData();
searchService.search(request, form, renderData, getUserBean());
searchService.search(form, renderData, getUserBean());
return asHtml(path_SearchJsp).renderWith(data -> {
renderData.register(data);
// favorite or screenshot

View file

@ -15,6 +15,7 @@
*/
package org.codelibs.fess.entity;
import java.util.Locale;
import java.util.Map;
public interface SearchRequestParams {
@ -39,4 +40,8 @@ public interface SearchRequestParams {
String[] getExtraQueries();
Object getAttribute(String name);
Locale getLocale();
}