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 <[email protected]> Authored: Tue Jun 20 09:30:51 2017 +0200 Committer: Lukasz Lenart <[email protected]> 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; + } + } + }
