OpenJPA
  1. OpenJPA
  2. OPENJPA-1855

OpenJPA shouldn't silently ignore an invalid javax.persistence.xxxx configuration property

    Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Minor Minor
    • Resolution: Fixed
    • Affects Version/s: 2.0.0, 2.0.1, 2.1.0
    • Fix Version/s: 2.1.0
    • Component/s: logging
    • Labels:
      None

      Description

      While I was working on a unit test I had the following property set and it was being silently ignored by the runtime. After digging around a bunch, I figured out that it is actually an invalid configuration. I can specify this property on em.setProperty(...)[3.7.2], but I can't set a 'default' value at the provider(emf) level.

      <property name="javax.persistence.cache.storeMode" value="BYPASS"/>

      [3.7.2] -
      Cache retrieve mode and cache store mode properties may be specified at the level of the persistence
      context by means of the EntityManager setProperty method. These properties may be specified for
      the EntityManager find and refresh methods and the Query and TypedQuery setHint methods.
      Cache retrieve mode and/or cache store mode properties specified for the find, refresh, and
      Query and TypedQuery setHint methods override those specified for the persistence context for
      the specified find and refresh invocations, and for the execution of the specified queries respectively.

      With this JIRA I want to detect some of the invalid configurations and log a .... [INFO,WARN,TRACE]? message. Per the spec (8.2.1.9) "If a persistence provider does not recognize a property (other than a property defined by this specification), the provider must ignore it." I believe this gives us the leeway to do something about the condition that I ran into.

        Activity

        Hide
        Rick Curtis added a comment -

        The change I'm proposing entails logging a WARNING message anytime "javax.persistence.cache.retrieveMode" or "javax.persistence.cache.storeMode" in encountered. I went back and forth with TRACE vs WARN and I think WARN is the correct direction. This can easily be extended to other javax.persistence.[xx] properties that can't be configured at the provider level.

        The message looks something like this :

        16 test WARN [main] openjpa.Runtime - The property "javax.persistence.cache.storeMode=BYPASS" was detected while loading configuration. However, it is invalid and cannot be configured at the provider level, so it is ignored. Please consult the documentation for the correct usage of this property.

        Show
        Rick Curtis added a comment - The change I'm proposing entails logging a WARNING message anytime "javax.persistence.cache.retrieveMode" or "javax.persistence.cache.storeMode" in encountered. I went back and forth with TRACE vs WARN and I think WARN is the correct direction. This can easily be extended to other javax.persistence. [xx] properties that can't be configured at the provider level. The message looks something like this : 16 test WARN [main] openjpa.Runtime - The property "javax.persistence.cache.storeMode=BYPASS" was detected while loading configuration. However, it is invalid and cannot be configured at the provider level, so it is ignored. Please consult the documentation for the correct usage of this property.
        Hide
        Rick Curtis added a comment -

        Committed revision 1028064 to trunk.

        Show
        Rick Curtis added a comment - Committed revision 1028064 to trunk.

          People

          • Assignee:
            Rick Curtis
            Reporter:
            Rick Curtis
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development