浏览代码

#575 use external context

Shinsuke Sugaya 9 年之前
父节点
当前提交
f748d865c4

+ 1 - 1
src/main/java/org/codelibs/fess/app/web/admin/pathmap/CreateForm.java

@@ -59,7 +59,7 @@ public class CreateForm {
     @ValidateTypeFailure
     public Long createdTime;
 
-    @Required
+    @Size(max = 1000)
     public String userAgent;
 
     public void initialize() {

+ 4 - 0
src/main/java/org/codelibs/fess/exec/Crawler.java

@@ -50,6 +50,8 @@ import org.kohsuke.args4j.CmdLineException;
 import org.kohsuke.args4j.CmdLineParser;
 import org.kohsuke.args4j.Option;
 import org.lastaflute.core.mail.Postbox;
+import org.lastaflute.di.core.external.GenericExternalContext;
+import org.lastaflute.di.core.external.GenericExternalContextComponentDefRegister;
 import org.lastaflute.di.core.factory.SingletonLaContainerFactory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -181,6 +183,8 @@ public class Crawler {
         int exitCode;
         try {
             SingletonLaContainerFactory.setConfigPath("app.xml");
+            SingletonLaContainerFactory.setExternalContext(new GenericExternalContext());
+            SingletonLaContainerFactory.setExternalContextComponentDefRegister(new GenericExternalContextComponentDefRegister());
             SingletonLaContainerFactory.init();
 
             final Thread shutdownCallback = new Thread("ShutdownHook") {

+ 4 - 0
src/main/java/org/codelibs/fess/exec/SuggestCreator.java

@@ -36,6 +36,8 @@ import org.codelibs.fess.util.ComponentUtil;
 import org.kohsuke.args4j.CmdLineException;
 import org.kohsuke.args4j.CmdLineParser;
 import org.kohsuke.args4j.Option;
+import org.lastaflute.di.core.external.GenericExternalContext;
+import org.lastaflute.di.core.external.GenericExternalContextComponentDefRegister;
 import org.lastaflute.di.core.factory.SingletonLaContainerFactory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -104,6 +106,8 @@ public class SuggestCreator implements Serializable {
         int exitCode;
         try {
             SingletonLaContainerFactory.setConfigPath("app.xml");
+            SingletonLaContainerFactory.setExternalContext(new GenericExternalContext());
+            SingletonLaContainerFactory.setExternalContextComponentDefRegister(new GenericExternalContextComponentDefRegister());
             SingletonLaContainerFactory.init();
 
             final Thread shutdownCallback = new Thread("ShutdownHook") {

+ 10 - 21
src/main/java/org/codelibs/fess/helper/PathMappingHelper.java

@@ -22,13 +22,13 @@ import java.util.Map;
 import java.util.regex.Matcher;
 
 import javax.annotation.PostConstruct;
-import javax.servlet.http.HttpServletRequest;
 
 import org.codelibs.core.lang.StringUtil;
 import org.codelibs.fess.Constants;
 import org.codelibs.fess.es.config.exbhv.PathMappingBhv;
 import org.codelibs.fess.es.config.exentity.PathMapping;
 import org.codelibs.fess.util.ComponentUtil;
+import org.lastaflute.di.core.factory.SingletonLaContainerFactory;
 import org.lastaflute.web.util.LaRequestUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -135,27 +135,16 @@ public class PathMappingHelper {
             return true;
         }
 
-        //TODO use OptionalThing
-        final HttpServletRequest request;
-        try {
-            request = LaRequestUtil.getRequest();
-        } catch (IllegalStateException e) {
-            //could not get request.
-            return false;
-        }
-        /*
-        final OptionalThing<HttpServletRequest> op = LaRequestUtil.getOptionalRequest();
-        if (!op.isPresent()) {
-            return false;
-        }
-        final HttpServletRequest request = op.get();
-        */
+        if (SingletonLaContainerFactory.getExternalContext().getRequest() != null) {
+            return LaRequestUtil.getOptionalRequest().map(request -> {
+                final String userAgent = request.getHeader("user-agent");
+                if (StringUtil.isBlank(userAgent)) {
+                    return false;
+                }
 
-        final String userAgent = request.getHeader("user-agent");
-        if (StringUtil.isBlank(userAgent)) {
-            return false;
+                return pathMapping.getUAMatcher(userAgent).find();
+            }).orElse(false);
         }
-
-        return pathMapping.getUAMatcher(userAgent).find();
+        return false;
     }
 }