FTPSERVER-407 Wherever possible, immutable private fields should be marked final
git-svn-id: https://svn.apache.org/repos/asf/mina/ftpserver/trunk@1094579 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/DefaultCommandFactory.java b/core/src/main/java/org/apache/ftpserver/command/impl/DefaultCommandFactory.java
index 37a2814..8b0fd47 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/DefaultCommandFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/DefaultCommandFactory.java
@@ -38,6 +38,10 @@
*/
public class DefaultCommandFactory implements CommandFactory {
+ public DefaultCommandFactory() {
+ this(new HashMap<String, Command>());
+ }
+
/**
* Internal constructor, use {@link CommandFactoryFactory} instead
*/
@@ -45,7 +49,7 @@
this.commandMap = commandMap;
}
- private Map<String, Command> commandMap = new HashMap<String, Command>();
+ private final Map<String, Command> commandMap;
/**
* Get command. Returns null if not found.
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/LIST.java b/core/src/main/java/org/apache/ftpserver/command/impl/LIST.java
index c499687..e7c5de7 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/LIST.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/LIST.java
@@ -63,7 +63,7 @@
private static final LISTFileFormater LIST_FILE_FORMATER = new LISTFileFormater();
- private DirectoryLister directoryLister = new DirectoryLister();
+ private final DirectoryLister directoryLister = new DirectoryLister();
/**
* Execute command.
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/MLSD.java b/core/src/main/java/org/apache/ftpserver/command/impl/MLSD.java
index d61595a..bac5557 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/MLSD.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/MLSD.java
@@ -58,7 +58,7 @@
private final Logger LOG = LoggerFactory.getLogger(MLSD.class);
- private DirectoryLister directoryLister = new DirectoryLister();
+ private final DirectoryLister directoryLister = new DirectoryLister();
/**
* Execute command.
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/NLST.java b/core/src/main/java/org/apache/ftpserver/command/impl/NLST.java
index c620395..8033b26 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/NLST.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/NLST.java
@@ -63,7 +63,7 @@
private static final LISTFileFormater LIST_FILE_FORMATER = new LISTFileFormater();
- private DirectoryLister directoryLister = new DirectoryLister();
+ private final DirectoryLister directoryLister = new DirectoryLister();
/**
* Execute command
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/STAT.java b/core/src/main/java/org/apache/ftpserver/command/impl/STAT.java
index d807692..bdf9445 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/STAT.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/STAT.java
@@ -50,7 +50,7 @@
private static final LISTFileFormater LIST_FILE_FORMATER = new LISTFileFormater();
- private DirectoryLister directoryLister = new DirectoryLister();
+ private final DirectoryLister directoryLister = new DirectoryLister();
/**
* Execute command
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/listing/ListArgument.java b/core/src/main/java/org/apache/ftpserver/command/impl/listing/ListArgument.java
index b1002ed..1ab1df3 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/listing/ListArgument.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/listing/ListArgument.java
@@ -27,11 +27,11 @@
*/
public class ListArgument {
- private String file;
+ private final String file;
- private String pattern;
+ private final String pattern;
- private char[] options;
+ private final char[] options;
/**
* @param file
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/listing/RegexFileFilter.java b/core/src/main/java/org/apache/ftpserver/command/impl/listing/RegexFileFilter.java
index 490653e..dc1f609 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/listing/RegexFileFilter.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/listing/RegexFileFilter.java
@@ -30,9 +30,9 @@
*/
public class RegexFileFilter implements FileFilter {
- private RegularExpr regex;
+ private final RegularExpr regex;
- private FileFilter wrappedFilter;
+ private final FileFilter wrappedFilter;
/**
* Constructor with a regular expression
@@ -41,7 +41,7 @@
* The regular expression to select by
*/
public RegexFileFilter(String regex) {
- this.regex = new RegularExpr(regex);
+ this(regex, null);
}
/**
@@ -53,8 +53,7 @@
* The {@link FileFilter} to wrap
*/
public RegexFileFilter(String regex, FileFilter wrappedFilter) {
- this(regex);
-
+ this.regex = new RegularExpr(regex);
this.wrappedFilter = wrappedFilter;
}
diff --git a/core/src/main/java/org/apache/ftpserver/command/impl/listing/VisibleFileFilter.java b/core/src/main/java/org/apache/ftpserver/command/impl/listing/VisibleFileFilter.java
index e424983..9cae5f2 100644
--- a/core/src/main/java/org/apache/ftpserver/command/impl/listing/VisibleFileFilter.java
+++ b/core/src/main/java/org/apache/ftpserver/command/impl/listing/VisibleFileFilter.java
@@ -29,13 +29,13 @@
*/
public class VisibleFileFilter implements FileFilter {
- private FileFilter wrappedFilter;
+ private final FileFilter wrappedFilter;
/**
* Default constructor
*/
public VisibleFileFilter() {
- // default cstr
+ this(null);
}
/**
diff --git a/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NameEqualsFileFilter.java b/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NameEqualsFileFilter.java
index 3bacdac..980675d 100644
--- a/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NameEqualsFileFilter.java
+++ b/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NameEqualsFileFilter.java
@@ -31,9 +31,9 @@
*/
public class NameEqualsFileFilter implements FileFilter {
- private String nameToMatch;
+ private final String nameToMatch;
- private boolean caseInsensitive = false;
+ private final boolean caseInsensitive;
/**
* Constructor
diff --git a/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFileSystemView.java b/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFileSystemView.java
index 5fa1a88..589a508 100644
--- a/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFileSystemView.java
+++ b/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFileSystemView.java
@@ -51,11 +51,11 @@
// It is always with respect to the root directory.
private String currDir;
- private User user;
+ private final User user;
// private boolean writePermission;
- private boolean caseInsensitive = false;
+ private final boolean caseInsensitive;
/**
* Constructor - internal do not use directly, use {@link NativeFileSystemFactory} instead
diff --git a/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFtpFile.java b/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFtpFile.java
index c1ca143..6b8ede3 100644
--- a/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFtpFile.java
+++ b/core/src/main/java/org/apache/ftpserver/filesystem/nativefs/impl/NativeFtpFile.java
@@ -51,11 +51,11 @@
// the file name with respect to the user root.
// The path separator character will be '/' and
// it will always begin with '/'.
- private String fileName;
+ private final String fileName;
- private File file;
+ private final File file;
- private User user;
+ private final User user;
/**
* Constructor, internal do not use directly.
diff --git a/core/src/main/java/org/apache/ftpserver/impl/DefaultConnectionConfig.java b/core/src/main/java/org/apache/ftpserver/impl/DefaultConnectionConfig.java
index d881cbf..43ad406 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/DefaultConnectionConfig.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/DefaultConnectionConfig.java
@@ -30,17 +30,21 @@
*/
public class DefaultConnectionConfig implements ConnectionConfig {
- private int maxLogins = 10;
+ private final int maxLogins;
- private boolean anonymousLoginEnabled = true;
+ private final boolean anonymousLoginEnabled;
- private int maxAnonymousLogins = 10;
+ private final int maxAnonymousLogins;
- private int maxLoginFailures = 3;
+ private final int maxLoginFailures;
- private int loginFailureDelay = 500;
+ private final int loginFailureDelay;
- private int maxThreads = 0;
+ private final int maxThreads;
+
+ public DefaultConnectionConfig() {
+ this(true, 500, 10, 10, 3, 0);
+ }
/**
* Internal constructor, do not use directly. Use {@link ConnectionConfigFactory} instead
diff --git a/core/src/main/java/org/apache/ftpserver/impl/DefaultDataConnectionConfiguration.java b/core/src/main/java/org/apache/ftpserver/impl/DefaultDataConnectionConfiguration.java
index 02b609a..c8b26eb 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/DefaultDataConnectionConfiguration.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/DefaultDataConnectionConfiguration.java
@@ -34,18 +34,18 @@
DataConnectionConfiguration {
// maximum idle time in seconds
- private int idleTime;
- private SslConfiguration ssl;
+ private final int idleTime;
+ private final SslConfiguration ssl;
- private boolean activeEnabled;
- private String activeLocalAddress;
- private int activeLocalPort;
- private boolean activeIpCheck;
+ private final boolean activeEnabled;
+ private final String activeLocalAddress;
+ private final int activeLocalPort;
+ private final boolean activeIpCheck;
- private String passiveAddress;
- private String passiveExternalAddress;
- private PassivePorts passivePorts;
- private boolean passiveIpCheck;
+ private final String passiveAddress;
+ private final String passiveExternalAddress;
+ private final PassivePorts passivePorts;
+ private final boolean passiveIpCheck;
private final boolean implicitSsl;
diff --git a/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpRequest.java b/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpRequest.java
index c9a5ae8..bb58394 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpRequest.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpRequest.java
@@ -30,16 +30,16 @@
*/
public class DefaultFtpRequest implements FtpRequest {
- private String line;
+ private final String line;
- private String command;
+ private final String command;
- private String argument;
+ private final String argument;
/**
* timestamp when this request was received
*/
- private long receivedTime = 0L;
+ private final long receivedTime;
/**
* Default constructor.
@@ -51,32 +51,37 @@
//before constructing this FtpRequest object, then this method is not
//going to be accurate and need to look for an alternative solution.
this.receivedTime = System.currentTimeMillis();
- parse(requestLine);
+ line = requestLine.trim();
+ int spInd = line.indexOf(' ');
+ command = parseCmd(line, spInd);
+ argument = parseArg(line, spInd);
}
/**
* Parse the ftp command line.
*/
- private void parse(final String lineToParse) {
-
- // parse request
- line = lineToParse.trim();
- command = null;
- argument = null;
- int spInd = line.indexOf(' ');
+ private String parseCmd(final String lineToParse, int spInd) {
+ String cmd = null;
if (spInd != -1) {
- argument = line.substring(spInd + 1);
- if (argument.equals("")) {
- argument = null;
- }
- command = line.substring(0, spInd).toUpperCase();
+ cmd = line.substring(0, spInd).toUpperCase();
} else {
- command = line.toUpperCase();
+ cmd = line.toUpperCase();
}
+ if ((cmd.length() > 0) && (cmd.charAt(0) == 'X')) {
+ cmd = cmd.substring(1);
+ }
+ return cmd;
+ }
- if ((command.length() > 0) && (command.charAt(0) == 'X')) {
- command = command.substring(1);
+ private String parseArg(final String lineToParse, int spInd) {
+ String arg = null;
+ if (spInd != -1) {
+ arg = line.substring(spInd + 1);
+ if (arg.equals("")) {
+ arg = null;
+ }
}
+ return arg;
}
/**
diff --git a/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpSession.java b/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpSession.java
index cefad77..4b1471d 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpSession.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpSession.java
@@ -43,7 +43,7 @@
*/
public class DefaultFtpSession implements FtpSession {
- private FtpIoSession ioSession;
+ private final FtpIoSession ioSession;
/**
* Default constructor.
diff --git a/core/src/main/java/org/apache/ftpserver/impl/FtpIoSession.java b/core/src/main/java/org/apache/ftpserver/impl/FtpIoSession.java
index 5f0fb52..d2cd6e5 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/FtpIoSession.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/FtpIoSession.java
@@ -96,8 +96,8 @@
+ "last-access-time";
private static final String ATTRIBUTE_CACHED_REMOTE_ADDRESS = ATTRIBUTE_PREFIX
+ "cached-remote-address";
- private IoSession wrappedSession;
- private FtpServerContext context;
+ private final IoSession wrappedSession;
+ private final FtpServerContext context;
/**
* Last reply that was sent to the client, if any.
*/
diff --git a/core/src/main/java/org/apache/ftpserver/impl/IODataConnection.java b/core/src/main/java/org/apache/ftpserver/impl/IODataConnection.java
index 516e4d9..6296ced 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/IODataConnection.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/IODataConnection.java
@@ -54,11 +54,11 @@
private static final byte[] EOL = System.getProperty("line.separator").getBytes();
- private FtpIoSession session;
+ private final FtpIoSession session;
- private Socket socket;
+ private final Socket socket;
- private ServerDataConnectionFactory factory;
+ private final ServerDataConnectionFactory factory;
public IODataConnection(final Socket socket, final FtpIoSession session,
final ServerDataConnectionFactory factory) {
diff --git a/core/src/main/java/org/apache/ftpserver/impl/LocalizedDataTransferFtpReply.java b/core/src/main/java/org/apache/ftpserver/impl/LocalizedDataTransferFtpReply.java
index b325ef1..efdcacd 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/LocalizedDataTransferFtpReply.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/LocalizedDataTransferFtpReply.java
@@ -36,13 +36,13 @@
/**
* The file or directory that data transfer is related to.
*/
- private FtpFile file = null;
+ private final FtpFile file;
/**
* total number of bytes transferred (bytes sent to the client or receivved
* from the client)
*/
- private long bytesTransferred = 0L;
+ private final long bytesTransferred;
/**
* Creates a new instance of <code>LocalizedFileTransferReply</code>.
diff --git a/core/src/main/java/org/apache/ftpserver/impl/LocalizedFileActionFtpReply.java b/core/src/main/java/org/apache/ftpserver/impl/LocalizedFileActionFtpReply.java
index cdf003b..84a18a4 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/LocalizedFileActionFtpReply.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/LocalizedFileActionFtpReply.java
@@ -36,7 +36,7 @@
/**
* The file or directory that data transfer is related to.
*/
- private FtpFile file = null;
+ private final FtpFile file;
/**
* Creates a new instance of <code>LocalizedFileTransferReply</code>.
diff --git a/core/src/main/java/org/apache/ftpserver/impl/LocalizedRenameFtpReply.java b/core/src/main/java/org/apache/ftpserver/impl/LocalizedRenameFtpReply.java
index da1964a..b67a83e 100644
--- a/core/src/main/java/org/apache/ftpserver/impl/LocalizedRenameFtpReply.java
+++ b/core/src/main/java/org/apache/ftpserver/impl/LocalizedRenameFtpReply.java
@@ -37,12 +37,12 @@
/**
* The from file
*/
- private FtpFile from = null;
+ private final FtpFile from;
/**
* The to file
*/
- private FtpFile to = null;
+ private final FtpFile to;
/**
* Creates a new instance of <code>LocalizedRenameFtpReply</code>.
diff --git a/core/src/main/java/org/apache/ftpserver/ipfilter/MinaSessionFilter.java b/core/src/main/java/org/apache/ftpserver/ipfilter/MinaSessionFilter.java
index 08fcc3a..3a59f12 100644
--- a/core/src/main/java/org/apache/ftpserver/ipfilter/MinaSessionFilter.java
+++ b/core/src/main/java/org/apache/ftpserver/ipfilter/MinaSessionFilter.java
@@ -35,7 +35,7 @@
/**
* The actual (or wrapped) <code>SessionFilter</code> used by this filter.
*/
- private SessionFilter filter = null;
+ private final SessionFilter filter;
/**
* Creates a new instance of <code>MinaSessionFilter</code>.
diff --git a/core/src/main/java/org/apache/ftpserver/listener/nio/AbstractListener.java b/core/src/main/java/org/apache/ftpserver/listener/nio/AbstractListener.java
index d09751c..bb51923 100644
--- a/core/src/main/java/org/apache/ftpserver/listener/nio/AbstractListener.java
+++ b/core/src/main/java/org/apache/ftpserver/listener/nio/AbstractListener.java
@@ -40,23 +40,23 @@
*/
public abstract class AbstractListener implements Listener {
- private String serverAddress;
+ private final String serverAddress;
private int port = 21;
- private SslConfiguration ssl;
+ private final SslConfiguration ssl;
- private boolean implicitSsl = false;
+ private final boolean implicitSsl;
- private int idleTimeout;
+ private final int idleTimeout;
- private List<InetAddress> blockedAddresses;
+ private final List<InetAddress> blockedAddresses;
- private List<Subnet> blockedSubnets;
+ private final List<Subnet> blockedSubnets;
- private SessionFilter sessionFilter = null;
+ private final SessionFilter sessionFilter;
- private DataConnectionConfiguration dataConnectionConfig;
+ private final DataConnectionConfiguration dataConnectionConfig;
/**
* @deprecated Use the constructor with IpFilter instead.
@@ -66,8 +66,13 @@
public AbstractListener(String serverAddress, int port, boolean implicitSsl,
SslConfiguration sslConfiguration, DataConnectionConfiguration dataConnectionConfig,
int idleTimeout, List<InetAddress> blockedAddresses, List<Subnet> blockedSubnets) {
- this(serverAddress, port, implicitSsl, sslConfiguration,
- dataConnectionConfig, idleTimeout, createBlackListFilter(blockedAddresses, blockedSubnets));
+ this.serverAddress = serverAddress;
+ this.port = port;
+ this.implicitSsl = implicitSsl;
+ this.dataConnectionConfig = dataConnectionConfig;
+ this.ssl = sslConfiguration;
+ this.idleTimeout = idleTimeout;
+ this.sessionFilter = createBlackListFilter(blockedAddresses, blockedSubnets);
this.blockedAddresses = blockedAddresses;
this.blockedSubnets = blockedSubnets;
}
@@ -86,6 +91,8 @@
this.ssl = sslConfiguration;
this.idleTimeout = idleTimeout;
this.sessionFilter = sessionFilter;
+ this.blockedAddresses = null;
+ this.blockedSubnets = null;
}
/**
diff --git a/core/src/main/java/org/apache/ftpserver/listener/nio/FtpHandlerAdapter.java b/core/src/main/java/org/apache/ftpserver/listener/nio/FtpHandlerAdapter.java
index bab13fa..28452b5 100644
--- a/core/src/main/java/org/apache/ftpserver/listener/nio/FtpHandlerAdapter.java
+++ b/core/src/main/java/org/apache/ftpserver/listener/nio/FtpHandlerAdapter.java
@@ -39,7 +39,7 @@
*
*/
public class FtpHandlerAdapter implements IoHandler {
- private FtpServerContext context;
+ private final FtpServerContext context;
private FtpHandler ftpHandler;
diff --git a/core/src/main/java/org/apache/ftpserver/listener/nio/FtpServerProtocolCodecFactory.java b/core/src/main/java/org/apache/ftpserver/listener/nio/FtpServerProtocolCodecFactory.java
index 92da13d..63b7baf 100644
--- a/core/src/main/java/org/apache/ftpserver/listener/nio/FtpServerProtocolCodecFactory.java
+++ b/core/src/main/java/org/apache/ftpserver/listener/nio/FtpServerProtocolCodecFactory.java
@@ -35,10 +35,10 @@
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
*/
public class FtpServerProtocolCodecFactory implements ProtocolCodecFactory {
- private ProtocolDecoder decoder = new TextLineDecoder(Charset
+ private final ProtocolDecoder decoder = new TextLineDecoder(Charset
.forName("UTF-8"));
- private ProtocolEncoder encoder = new FtpResponseEncoder();
+ private final ProtocolEncoder encoder = new FtpResponseEncoder();
public ProtocolDecoder getDecoder(IoSession session) throws Exception {
return decoder;
diff --git a/core/src/main/java/org/apache/ftpserver/message/impl/DefaultMessageResource.java b/core/src/main/java/org/apache/ftpserver/message/impl/DefaultMessageResource.java
index 2b0fffa..67caaf4 100644
--- a/core/src/main/java/org/apache/ftpserver/message/impl/DefaultMessageResource.java
+++ b/core/src/main/java/org/apache/ftpserver/message/impl/DefaultMessageResource.java
@@ -57,9 +57,9 @@
private final static String RESOURCE_PATH = "org/apache/ftpserver/message/";
- private List<String> languages;
+ private final List<String> languages;
- private Map<String, PropertiesPair> messages;
+ private final Map<String, PropertiesPair> messages;
/**
* Internal constructor, do not use directly. Use {@link MessageResourceFactory} instead.
@@ -68,6 +68,8 @@
File customMessageDirectory) {
if(languages != null) {
this.languages = Collections.unmodifiableList(languages);
+ } else {
+ this.languages = null;
}
// populate different properties
diff --git a/core/src/main/java/org/apache/ftpserver/ssl/impl/AliasKeyManager.java b/core/src/main/java/org/apache/ftpserver/ssl/impl/AliasKeyManager.java
index 7ed739d..ef52628 100644
--- a/core/src/main/java/org/apache/ftpserver/ssl/impl/AliasKeyManager.java
+++ b/core/src/main/java/org/apache/ftpserver/ssl/impl/AliasKeyManager.java
@@ -40,9 +40,9 @@
*/
public final class AliasKeyManager implements X509KeyManager {
- private X509KeyManager delegate;
+ private final X509KeyManager delegate;
- private String serverKeyAlias;
+ private final String serverKeyAlias;
/**
* Constructor.
diff --git a/core/src/main/java/org/apache/ftpserver/ssl/impl/DefaultSslConfiguration.java b/core/src/main/java/org/apache/ftpserver/ssl/impl/DefaultSslConfiguration.java
index 0cb6323..04e4ab0 100644
--- a/core/src/main/java/org/apache/ftpserver/ssl/impl/DefaultSslConfiguration.java
+++ b/core/src/main/java/org/apache/ftpserver/ssl/impl/DefaultSslConfiguration.java
@@ -45,21 +45,21 @@
*/
public class DefaultSslConfiguration implements SslConfiguration {
- private KeyManagerFactory keyManagerFactory;
+ private final KeyManagerFactory keyManagerFactory;
- private TrustManagerFactory trustManagerFactory;
+ private final TrustManagerFactory trustManagerFactory;
private String sslProtocol = "TLS";
- private ClientAuth clientAuth = ClientAuth.NONE;
+ private final ClientAuth clientAuth;// = ClientAuth.NONE;
- private String keyAlias;
+ private final String keyAlias;
- private String[] enabledCipherSuites;
+ private final String[] enabledCipherSuites;
- private SSLContext sslContext = null;
+ private final SSLContext sslContext;
- private SSLSocketFactory socketFactory = null;
+ private final SSLSocketFactory socketFactory;
/**
* Internal constructor, do not use directly. Instead, use {@link SslConfigurationFactory}
@@ -76,7 +76,8 @@
this.keyManagerFactory = keyManagerFactory;
this.sslProtocol = sslProtocol;
this.trustManagerFactory = trustManagerFactory;
- initialize();
+ this.sslContext = initContext();
+ this.socketFactory = sslContext.getSocketFactory();
}
public SSLSocketFactory getSocketFactory() throws GeneralSecurityException {
@@ -116,7 +117,7 @@
}
}
- private void initialize() throws GeneralSecurityException {
+ private SSLContext initContext() throws GeneralSecurityException {
KeyManager[] keyManagers = keyManagerFactory.getKeyManagers();
// wrap key managers to allow us to control their behavior
@@ -132,9 +133,9 @@
}
// create and initialize the SSLContext
- sslContext = SSLContext.getInstance(sslProtocol);
- sslContext.init(keyManagers, trustManagerFactory.getTrustManagers(), null);
+ SSLContext ctx = SSLContext.getInstance(sslProtocol);
+ ctx.init(keyManagers, trustManagerFactory.getTrustManagers(), null);
//Create the socket factory
- socketFactory = sslContext.getSocketFactory();
+ return ctx;
}
}
diff --git a/core/src/main/java/org/apache/ftpserver/usermanager/impl/AbstractUserManager.java b/core/src/main/java/org/apache/ftpserver/usermanager/impl/AbstractUserManager.java
index ed02b01..5efc789 100644
--- a/core/src/main/java/org/apache/ftpserver/usermanager/impl/AbstractUserManager.java
+++ b/core/src/main/java/org/apache/ftpserver/usermanager/impl/AbstractUserManager.java
@@ -53,10 +53,13 @@
public static final String ATTR_MAX_LOGIN_PER_IP = "maxloginperip";
- private String adminName;
+ private final String adminName;
- private PasswordEncryptor passwordEncryptor = new Md5PasswordEncryptor();
+ private final PasswordEncryptor passwordEncryptor;
+ public AbstractUserManager() {
+ this(null, new Md5PasswordEncryptor());
+ }
/**
* Internal constructor, do not use directly
diff --git a/core/src/main/java/org/apache/ftpserver/usermanager/impl/ConcurrentLoginPermission.java b/core/src/main/java/org/apache/ftpserver/usermanager/impl/ConcurrentLoginPermission.java
index ab9ff6f..c251bde 100644
--- a/core/src/main/java/org/apache/ftpserver/usermanager/impl/ConcurrentLoginPermission.java
+++ b/core/src/main/java/org/apache/ftpserver/usermanager/impl/ConcurrentLoginPermission.java
@@ -31,9 +31,9 @@
*/
public class ConcurrentLoginPermission implements Authority {
- private int maxConcurrentLogins;
+ private final int maxConcurrentLogins;
- private int maxConcurrentLoginsPerIP;
+ private final int maxConcurrentLoginsPerIP;
public ConcurrentLoginPermission(int maxConcurrentLogins,
int maxConcurrentLoginsPerIP) {
diff --git a/core/src/main/java/org/apache/ftpserver/usermanager/impl/ConcurrentLoginRequest.java b/core/src/main/java/org/apache/ftpserver/usermanager/impl/ConcurrentLoginRequest.java
index c257343..85dab4f 100644
--- a/core/src/main/java/org/apache/ftpserver/usermanager/impl/ConcurrentLoginRequest.java
+++ b/core/src/main/java/org/apache/ftpserver/usermanager/impl/ConcurrentLoginRequest.java
@@ -30,9 +30,9 @@
*/
public class ConcurrentLoginRequest implements AuthorizationRequest {
- private int concurrentLogins;
+ private final int concurrentLogins;
- private int concurrentLoginsFromThisIP;
+ private final int concurrentLoginsFromThisIP;
private int maxConcurrentLogins = 0;