ActiveIO compromises java.lang.System.properties
------------------------------------------------

         Key: AMQ-704
         URL: https://issues.apache.org/activemq/browse/AMQ-704
     Project: ActiveMQ
        Type: Bug

 Environment: ActiveMQ 4.0RC2 (confirmed still around in the current ActiveIO 
SVN),  Java 1.5 on Windows (but should be a problem anywhere).
    Reporter: matt hoffman
     Fix For: 4.0 RC2


When using the ActiveIO journal, it's putting a java.util.HashSet into the 
System.properties (using a properties.put() call that circumvents the  normal 
System.putProperty() method, that only allows strings).   This isn't allowed, 
according to java.util.Properties' contract, and therefore breaks other 
packages that rely on System.properties adhering to its contract.  Most 
notably, it chokes Hibernate; however, anything that iterates through the 
System properties will fail after ActiveIO has compromised it with a non-String 
value.

Honestly, I don't know why Properties doesn't allow non-String values, but oh 
well.  From the java.lang.Properties docs: 

"Because Properties inherits from Hashtable, the put and putAll methods can be 
applied to a Properties object. Their use is strongly discouraged as they allow 
the caller to insert entries whose keys or values are not Strings. The 
setProperty method should be used instead. If the store or save method is 
called on a "compromised" Properties object that contains a non-String key or 
value, the call will fail."

The call is being made in org.apache.activeio.journal.active.ControlFile; I 
suppose a hack could be created that stringifies the HashSet before placing it 
in the properties and recreates it before getting it out again; atlernately, a 
simple singleton or static set could be used.  I'd be happy to implement either 
one, if you'd like. 



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

Reply via email to