Allow multiple keys for the same property to be specified at different levels
-----------------------------------------------------------------------------

                 Key: OPENJPA-910
                 URL: https://issues.apache.org/jira/browse/OPENJPA-910
             Project: OpenJPA
          Issue Type: Improvement
          Components: kernel
    Affects Versions: 2.0.0-M1
            Reporter: Dianne Richards
            Priority: Minor
             Fix For: 2.0.0


In OPENJPA-850, support was provided for some 2.0 spec properties. Some of 
these properties are equivalent to current openjpa properties, resulting in 
some properties supported by 2 different keys. As part of this enhancement, an 
exception is thrown if the same property is specified more than once with 
different keys. An issue has been raised related to this suggesting that one 
key could be specified at one level (such as the persistence.xml) but another 
key could be specified at another level (such as a system property), and that 
we should allow this. This was discussed among several people, with the 
resulting conclusion documented by Pinaki as follows:

Rule 1: OpenJPA configurations can be specified at following levels (from 
lowest to highest)
I have changed Mike's order to reflect how the code (perhaps) now uses 
precedence (changing such order may require hard tweaks)
> 1. openjpa.xml (globals)
> 5. java.lang.System.getProperties()  
> 2. persistence.xml (<properties></properties>)
> 3. A map passed in to the call to createEntityManagerFactory()
> 4. A map passed in to getEntityManager() 


Rule 2: Each property is identified by a key. A key must have one, but can have 
multiple monikers. For example, 'ConnectionDriver' property has two monikers 
'openjpa.ConnectionDriverName' and 'javax.persistence.jdbc.driver'. All 
monikers for a key are treated as interchangeable for all purpose other than 
when a key appears in the returned list of EMF.getProperties() -- which is 
always the moniker whose corresponding value is 'in effect' in the 
configuration.

Rule 3: If the same key is specified at the same level, a error message is 
generated.

Rule 4: If the same key is specified at different levels, the higher level 
value overwrite the lower level value. 
INFO/TRACE message is printed if the values are overwritten or attempted to be 
overwritten respectively. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to