refactoring for api

This commit is contained in:
Shinsuke Sugaya 2015-10-15 22:24:15 +09:00
parent 38f7262b2e
commit 87a28313e3
6 changed files with 82 additions and 30 deletions

View file

@ -26,7 +26,7 @@ import org.codelibs.core.exception.IORuntimeException;
import org.lastaflute.web.util.LaRequestUtil;
import org.lastaflute.web.util.LaResponseUtil;
public class BaseApiManager {
public abstract class BaseApiManager implements WebApiManager {
protected static final String FAVORITES_API = "/favoritesApi";
protected static final String FAVORITE_API = "/favoriteApi";
@ -37,12 +37,18 @@ public class BaseApiManager {
protected static final String SEARCH_API = "/searchApi";
protected String pathPrefix;
protected static enum FormatType {
SEARCH, LABEL, SUGGEST, HOTSEARCHWORD, FAVORITE, FAVORITES, OTHER, PING;
}
public BaseApiManager() {
super();
public String getPathPrefix() {
return pathPrefix;
}
public void setPathPrefix(final String pathPrefix) {
this.pathPrefix = pathPrefix;
}
protected FormatType getFormatType(final String formatType) {

View file

@ -0,0 +1,41 @@
package org.codelibs.fess.api.es;
import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.codelibs.fess.api.BaseApiManager;
import org.codelibs.fess.app.web.base.login.FessLoginAssist;
import org.codelibs.fess.util.ComponentUtil;
public class EsApiManager extends BaseApiManager {
protected String[] acceptedRoles = new String[] { "admin" };
public EsApiManager() {
setPathPrefix("/admin/server");
}
@Override
public boolean matches(HttpServletRequest request) {
final String servletPath = request.getServletPath();
if (servletPath.startsWith(pathPrefix)) {
FessLoginAssist loginAssist = ComponentUtil.getLoginAssist();
return loginAssist.getSessionUserBean().map(user -> user.hasRoles(acceptedRoles)).orElseGet(() -> Boolean.FALSE).booleanValue();
}
return false;
}
@Override
public void process(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
}
public void setAcceptedRoles(String[] acceptedRoles) {
this.acceptedRoles = acceptedRoles;
}
}

View file

@ -33,7 +33,6 @@ import org.codelibs.core.CoreLibConstants;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.Constants;
import org.codelibs.fess.api.BaseApiManager;
import org.codelibs.fess.api.WebApiManager;
import org.codelibs.fess.api.WebApiRequest;
import org.codelibs.fess.api.WebApiResponse;
import org.codelibs.fess.entity.PingResponse;
@ -48,11 +47,13 @@ import org.lastaflute.web.util.LaRequestUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class JsonApiManager extends BaseApiManager implements WebApiManager {
public class JsonApiManager extends BaseApiManager {
private static final Logger logger = LoggerFactory.getLogger(JsonApiManager.class);
protected String jsonPathPrefix = "/json";
public JsonApiManager() {
setPathPrefix("/json");
}
@Override
public boolean matches(final HttpServletRequest request) {
@ -61,7 +62,7 @@ public class JsonApiManager extends BaseApiManager implements WebApiManager {
}
final String servletPath = request.getServletPath();
return servletPath.startsWith(jsonPathPrefix);
return servletPath.startsWith(pathPrefix);
}
@Override
@ -670,12 +671,4 @@ public class JsonApiManager extends BaseApiManager implements WebApiManager {
return Integer.toHexString(ch).toUpperCase();
}
public String getJsonPathPrefix() {
return jsonPathPrefix;
}
public void setJsonPathPrefix(final String jsonPathPrefix) {
this.jsonPathPrefix = jsonPathPrefix;
}
}

View file

@ -32,7 +32,6 @@ import org.codelibs.core.CoreLibConstants;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.Constants;
import org.codelibs.fess.api.BaseApiManager;
import org.codelibs.fess.api.WebApiManager;
import org.codelibs.fess.api.WebApiRequest;
import org.codelibs.fess.api.WebApiResponse;
import org.codelibs.fess.entity.PingResponse;
@ -45,10 +44,12 @@ import org.codelibs.fess.util.WebApiUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class XmlApiManager extends BaseApiManager implements WebApiManager {
public class XmlApiManager extends BaseApiManager {
private static final Logger logger = LoggerFactory.getLogger(XmlApiManager.class);
protected String xmlPathPrefix = "/xml";
public XmlApiManager() {
setPathPrefix("/xml");
}
@Override
public boolean matches(final HttpServletRequest request) {
@ -57,7 +58,7 @@ public class XmlApiManager extends BaseApiManager implements WebApiManager {
}
final String servletPath = request.getServletPath();
return servletPath.startsWith(xmlPathPrefix);
return servletPath.startsWith(pathPrefix);
}
@Override
@ -403,11 +404,4 @@ public class XmlApiManager extends BaseApiManager implements WebApiManager {
return buf.toString();
}
public String getXmlPathPrefix() {
return xmlPathPrefix;
}
public void setXmlPathPrefix(final String xmlPathPrefix) {
this.xmlPathPrefix = xmlPathPrefix;
}
}

View file

@ -15,6 +15,8 @@
*/
package org.codelibs.fess.mylasta.action;
import java.util.stream.Stream;
import org.codelibs.fess.es.exentity.User;
import org.lastaflute.web.login.TypicalUserBean;
@ -37,10 +39,6 @@ public class FessUserBean extends TypicalUserBean<String> { // #change_it also L
// ===================================================================================
// Constructor
// ===========
public FessUserBean() {
// TODO needed?
}
public FessUserBean(final User user) {
this.user = user;
}
@ -56,4 +54,19 @@ public class FessUserBean extends TypicalUserBean<String> { // #change_it also L
// ===================================================================================
// Accessor
// ========
public String[] getRoles() {
return user.getRoles();
}
public String[] getGroups() {
return user.getGroups();
}
public boolean hasRole(String role) {
return Stream.of(user.getRoles()).anyMatch(s -> s.equals(role));
}
public boolean hasRoles(String[] acceptedRoles) {
return Stream.of(user.getRoles()).anyMatch(s1 -> Stream.of(acceptedRoles).anyMatch(s2 -> s2.equals(s1)));
}
}

View file

@ -51,6 +51,7 @@ import org.codelibs.fess.job.JobExecutor;
import org.lastaflute.core.message.MessageManager;
import org.lastaflute.di.core.SingletonLaContainer;
import org.lastaflute.di.core.factory.SingletonLaContainerFactory;
import org.lastaflute.web.servlet.session.SessionManager;
public final class ComponentUtil {
private static final String DICTIONARY_MANAGER = "dictionaryManager";
@ -263,6 +264,10 @@ public final class ComponentUtil {
return getComponent(FessLoginAssist.class);
}
public static SessionManager getSessionManager() {
return getComponent(SessionManager.class);
}
public static <T> T getComponent(final Class<T> clazz) {
return SingletonLaContainer.getComponent(clazz);
}