You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@struts.apache.org by "Stefaan Dutry (JIRA)" <ji...@apache.org> on 2017/04/30 22:40:04 UTC

[jira] [Created] (WW-4793) Don't add JBossFileManager as a possible FileManager when not on JBoss

Stefaan Dutry created WW-4793:
---------------------------------

             Summary: Don't add JBossFileManager as a possible FileManager when not on JBoss
                 Key: WW-4793
                 URL: https://issues.apache.org/jira/browse/WW-4793
             Project: Struts 2
          Issue Type: Improvement
          Components: Core
    Affects Versions: 2.5.10
            Reporter: Stefaan Dutry
            Priority: Trivial


When the application starts and there is no FileManager specified as initParam, the {{JBossFileManager}} gets added.

This results in the check happening everytime a FileManager is requested.
(When turning on logging, i can see it happening 12 times when starting a simple application)

{code:java|title=org.apache.struts2.dispatcher.Dispatcher}
...
    private void init_FileManager() throws ClassNotFoundException {
        if (initParams.containsKey(StrutsConstants.STRUTS_FILE_MANAGER)) {
            ...
        } else {
            // add any other Struts 2 provided implementations of FileManager
            configurationManager.addContainerProvider(new FileManagerProvider(JBossFileManager.class, "jboss"));
        }
        ...
    }
...
{code}
{code:java|title=com.opensymphony.xwork2.util.fs.DefaultFileManagerFactory}
    private FileManager lookupFileManager() {
        Set<String> names = container.getInstanceNames(FileManager.class);
        ...
        for (FileManager fm : internals) {
            if (fm.support()) {
                return fm;
            }
        }
        return null;
    }
{code}

My suggestion would be to not add it if it's not supported.

I don't know what the best way to do this would be.

The possibility i was thinking of so far involves the following:
* Creating a seperate utility class to check if it can support it 
** perhaps a public static innerclass of {{JBossFileManager}} with public static method(s) to check it?
** or a seperate class (although i think this might be awkward) 
* adding a test around adding the JBossFileManager to only do it when it could be supported.


additional information:
* log messages were noticed by adjusting the log4j2 configuration in the {{form-processing}} application from {{struts-examples}} and starting it.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)