[ 
http://issues.apache.org/jira/browse/FTPSERVER-41?page=comments#action_12411995 
] 

Sergey Vladimirov commented on FTPSERVER-41:
--------------------------------------------

Patch applied to SVN.

One can close the issue, it seems I have no enought rights yet.

> PropertiesConfiguration constructor can produce misleading results
> ------------------------------------------------------------------
>
>          Key: FTPSERVER-41
>          URL: http://issues.apache.org/jira/browse/FTPSERVER-41
>      Project: FtpServer
>         Type: Bug

>     Reporter: John Wood
>     Priority: Minor
>  Attachments: patch.txt
>
> I was using the PropertiesConfiguration class to manually set properties in 
> code (to save having a configuration file).
> To do this I used the PropertiesConfiguration(Properties prop) constructor 
> which allows you to provide your own Properties class:
>   Properties properties = new Properties();
>   // Trying to set my own "SIZE" command handler
>   properties.setProperty("config.command-factory.command.SIZE", 
> "com.foo.MySizeHandler");
>   PropertiesConfiguration config = new PropertiesConfiguration(properties);
>   new FtpServer(new IFtpConfig(config)).start();
>   
> However this doesn't work as expected. The problem appears to be in the 
> PropertiesConfiguration consructor: 
>     /**
>      * Constructor - set the properties.
>      */
>     public PropertiesConfiguration(Properties prop) {
>         this.prop = new Properties(prop);
>     }    
> The problem is that this uses the Properties(Properties prop) constructor. 
> This constructor is used to specify *defaults* which are used if the looked 
> up key cannot be found. It does NOT simply use the input properties and copy 
> them into itself. So, for example if you do this:
>   Properties a = new Properties();
>   a.setProperty("foo", "bah");
>   a.setProperty("abc", "xyz");
>   System.out.println(a.size());
>   Properties b = new Properties(a);
>   System.out.println(b.size());
>   
> The result will be:
>   
>   2
>   0
> i.e., the keys are not actually present in the second Properties object when 
> you call size() or keys() etc.
> This causes problems in the CommandFactory.configure() where it ultimately 
> calls Properties.keys(). If the Properties object is initialised as described 
> above then this returns an empty list.
> My suggestion is to change the PropertiesConfiguration constructor so that it 
> actually manually adds each of the keys to the internally stored Properties 
> object.  
>   

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to