You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by lu...@apache.org on 2017/06/20 07:31:01 UTC

struts git commit: WW-4793 Reduces overhead with looking for a FileManager

Repository: struts
Updated Branches:
  refs/heads/master 93dba5bce -> 05f3b7a9b


WW-4793 Reduces overhead with looking for a FileManager


Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/05f3b7a9
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/05f3b7a9
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/05f3b7a9

Branch: refs/heads/master
Commit: 05f3b7a9b9623b1e2c1378fa37c55b1d64bad20d
Parents: 93dba5b
Author: Lukasz Lenart <lu...@apache.org>
Authored: Tue Jun 20 09:30:51 2017 +0200
Committer: Lukasz Lenart <lu...@apache.org>
Committed: Tue Jun 20 09:30:51 2017 +0200

----------------------------------------------------------------------
 .../com/opensymphony/xwork2/FileManager.java    |  2 +-
 .../util/fs/DefaultFileManagerFactory.java      | 25 ++++++++++++++++++--
 2 files changed, 24 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/struts/blob/05f3b7a9/core/src/main/java/com/opensymphony/xwork2/FileManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/com/opensymphony/xwork2/FileManager.java b/core/src/main/java/com/opensymphony/xwork2/FileManager.java
index 5c6806b..ef46567 100644
--- a/core/src/main/java/com/opensymphony/xwork2/FileManager.java
+++ b/core/src/main/java/com/opensymphony/xwork2/FileManager.java
@@ -13,7 +13,7 @@ public interface FileManager {
     /**
      * Enables configs reloading when config file changed
      *
-     * @param reloadingConfigs {@link XWorkConstants#RELOAD_XML_CONFIGURATION}
+     * @param reloadingConfigs {@link org.apache.struts2.StrutsConstants#STRUTS_CONFIGURATION_XML_RELOAD}
      */
     void setReloadingConfigs(boolean reloadingConfigs);
 

http://git-wip-us.apache.org/repos/asf/struts/blob/05f3b7a9/core/src/main/java/com/opensymphony/xwork2/util/fs/DefaultFileManagerFactory.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/com/opensymphony/xwork2/util/fs/DefaultFileManagerFactory.java b/core/src/main/java/com/opensymphony/xwork2/util/fs/DefaultFileManagerFactory.java
index c19385f..60512ca 100644
--- a/core/src/main/java/com/opensymphony/xwork2/util/fs/DefaultFileManagerFactory.java
+++ b/core/src/main/java/com/opensymphony/xwork2/util/fs/DefaultFileManagerFactory.java
@@ -2,11 +2,11 @@ package com.opensymphony.xwork2.util.fs;
 
 import com.opensymphony.xwork2.FileManager;
 import com.opensymphony.xwork2.FileManagerFactory;
-import com.opensymphony.xwork2.XWorkConstants;
 import com.opensymphony.xwork2.inject.Container;
 import com.opensymphony.xwork2.inject.Inject;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
+import org.apache.struts2.StrutsConstants;
 
 import java.util.HashSet;
 import java.util.Set;
@@ -19,6 +19,7 @@ public class DefaultFileManagerFactory implements FileManagerFactory {
     private static final Logger LOG = LogManager.getLogger(DefaultFileManagerFactory.class);
 
     private boolean reloadingConfigs;
+    private FileManagerHolder fileManagerHolder;
     private FileManager systemFileManager;
     private Container container;
 
@@ -32,20 +33,27 @@ public class DefaultFileManagerFactory implements FileManagerFactory {
         this.container = container;
     }
 
-    @Inject(value = XWorkConstants.RELOAD_XML_CONFIGURATION, required = false)
+    @Inject(value = StrutsConstants.STRUTS_CONFIGURATION_XML_RELOAD, required = false)
     public void setReloadingConfigs(String reloadingConfigs) {
         this.reloadingConfigs = Boolean.parseBoolean(reloadingConfigs);
     }
 
     public FileManager getFileManager() {
+        if (fileManagerHolder != null) {
+            return fileManagerHolder.getFileManager();
+        }
+
         FileManager fileManager = lookupFileManager();
         if (fileManager != null) {
             LOG.debug("Using FileManager implementation [{}]", fileManager.getClass().getSimpleName());
             fileManager.setReloadingConfigs(reloadingConfigs);
+            fileManagerHolder = new FileManagerHolder(fileManager);
             return fileManager;
         }
+
         LOG.debug("Using default implementation of FileManager provided under name [system]: {}", systemFileManager.getClass().getSimpleName());
         systemFileManager.setReloadingConfigs(reloadingConfigs);
+        fileManagerHolder = new FileManagerHolder(systemFileManager);
         return systemFileManager;
     }
 
@@ -77,4 +85,17 @@ public class DefaultFileManagerFactory implements FileManagerFactory {
         return null;
     }
 
+    private static class FileManagerHolder {
+
+        private final FileManager fileManager;
+
+        public FileManagerHolder(FileManager fileManager) {
+            this.fileManager = fileManager;
+        }
+
+        public FileManager getFileManager() {
+            return fileManager;
+        }
+    }
+
 }