You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mina.apache.org by "Uma Maheswara Rao G (JIRA)" <ji...@apache.org> on 2013/10/18 06:49:42 UTC
[jira] [Commented] (FTPSERVER-450) PropertiesUserManager
userDataFile is always NULL.
[ https://issues.apache.org/jira/browse/FTPSERVER-450?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13798795#comment-13798795 ]
Uma Maheswara Rao G commented on FTPSERVER-450:
-----------------------------------------------
I think we are already calling loadFromFile in the Ctor of PropertiesUserManager.
{code}
/**
* Internal constructor, do not use directly. Use {@link PropertiesUserManagerFactory} instead.
*/
public PropertiesUserManager(PasswordEncryptor passwordEncryptor,
File userDataFile, String adminName) {
super(adminName, passwordEncryptor);
loadFromFile(userDataFile);
}
{code}
In the loadFromFile, if you pass non null value and files exist means we are calling this.userDataFile = userDataFile;
Please look at the below peice of code.
{code}
private void loadFromFile(File userDataFile) {
try {
userDataProp = new BaseProperties();
if (userDataFile != null) {
LOG.debug("File configured, will try loading");
if (userDataFile.exists()) {
this.userDataFile = userDataFile;
LOG.debug("File found on file system");
FileInputStream fis = null;
try {
fis = new FileInputStream(userDataFile);
userDataProp.load(fis);
} finally {
IoUtils.close(fis);
}
} else {
// try loading it from the classpath
LOG
.debug("File not found on file system, try loading from classpath");
InputStream is = getClass().getClassLoader()
.getResourceAsStream(userDataFile.getPath());
if (is != null) {
try {
userDataProp.load(is);
} finally {
IoUtils.close(is);
}
} else {
throw new FtpServerConfigurationException(
"User data file specified but could not be located, "
+ "neither on the file system or in the classpath: "
+ userDataFile.getPath());
}
}
}
} catch (IOException e) {
throw new FtpServerConfigurationException(
"Error loading user data file : " + userDataFile, e);
}
}
{code}
Please ensure file present in classpath.
> PropertiesUserManager userDataFile is always NULL.
> ---------------------------------------------------
>
> Key: FTPSERVER-450
> URL: https://issues.apache.org/jira/browse/FTPSERVER-450
> Project: FtpServer
> Issue Type: Bug
> Components: Core
> Affects Versions: 1.0.6
> Environment: JDK 6
> Windows 7 64 BIT
> Reporter: Aizaz AZ
> Priority: Blocker
>
> PropertiesUserManager userDataFile is always NULL. Because you didn't set your class variable value equal to what you get in constructor when PropertiesUserManagerFactory calls your constructor new PropertiesUserManager(passwordEncryptor, userDataFile, adminName); of PropertiesUserManager,just need to do below super this.userDataFile = userDataFile; and issue is fixed
> PropertiesUserManagerFactory propUserManagerFactory = new PropertiesUserManagerFactory();
> propUserManagerFactory.setFile(new File("ftpusers.properties"));
> propUserManagerFactory.setPasswordEncryptor(new ClearTextPasswordEncryptor());
> mUserManager = (PropertiesUserManager) propUserManagerFactory.createUserManager();
> mFTPServerFactory.setUserManager(mUserManager);
> Set file has no effect because factory will call your constructor PropertiesUserManager(passwordEncryptor, userDataFile,
> adminName)
> and you didn't set this.userDataFile = userDataFile;
> complete
> public PropertiesUserManager(PasswordEncryptor passwordEncryptor,
> File userDataFile, String adminName) {
> super(adminName, passwordEncryptor);
>
> this.userDataFile = userDataFile;
>
> loadFromFile(userDataFile);
> }
> Issue fixed
--
This message was sent by Atlassian JIRA
(v6.1#6144)