You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by pc...@apache.org on 2007/08/21 04:21:44 UTC

svn commit: r567911 - in /openjpa/trunk/openjpa-kernel/src/main: java/org/apache/openjpa/enhance/PCEnhancer.java resources/org/apache/openjpa/enhance/localizer.properties

Author: pcl
Date: Mon Aug 20 19:21:44 2007
New Revision: 567911

URL: http://svn.apache.org/viewvc?rev=567911&view=rev
Log:
OPENJPA-293. Fixed bug with property access and booleans and 'is' accessors.

Modified:
    openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCEnhancer.java
    openjpa/trunk/openjpa-kernel/src/main/resources/org/apache/openjpa/enhance/localizer.properties

Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCEnhancer.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCEnhancer.java?rev=567911&r1=567910&r2=567911&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCEnhancer.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCEnhancer.java Mon Aug 20 19:21:44 2007
@@ -658,13 +658,6 @@
     }
 
     /**
-     * Return the name of the getter method for the given field.
-     */
-    private static String getGetterName(FieldMetaData fmd) {
-        return "get" + StringUtils.capitalize(fmd.getName());
-    }
-
-    /**
      * Return the field returned by the given method, or null if none.
      * Package-protected and static for testing.
      */
@@ -3325,8 +3318,12 @@
     }
 
     private boolean setVisibilityToSuperMethod(BCMethod method) {
-        BCMethod superMeth = _managedType.getMethods(method.getName(),
-            method.getParamTypes())[0];
+        BCMethod[] methods = _managedType.getMethods(method.getName(),
+            method.getParamTypes());
+        if (methods.length == 0)
+            throw new UserException(_loc.get("no-accessor",
+                _managedType.getName(), method.getName()));
+        BCMethod superMeth = methods[0];
         if (superMeth.isPrivate()) {
             method.makePrivate();
             return true;
@@ -3348,7 +3345,9 @@
      * performs any necessary field tracking.
      */
     private void addSubclassGetMethod(FieldMetaData fmd) {
-        String methName = getGetterName(fmd);
+        String methName = "get" + StringUtils.capitalize(fmd.getName());
+        if (_managedType.getMethods(methName, new Class[0]).length == 0)
+            methName = "is" + StringUtils.capitalize(fmd.getName());
         BCMethod getter = _pc.declareMethod(methName, fmd.getDeclaredType(),
             null);
         setVisibilityToSuperMethod(getter);

Modified: openjpa/trunk/openjpa-kernel/src/main/resources/org/apache/openjpa/enhance/localizer.properties
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/resources/org/apache/openjpa/enhance/localizer.properties?rev=567911&r1=567910&r2=567911&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/resources/org/apache/openjpa/enhance/localizer.properties (original)
+++ openjpa/trunk/openjpa-kernel/src/main/resources/org/apache/openjpa/enhance/localizer.properties Mon Aug 20 19:21:44 2007
@@ -194,3 +194,4 @@
     lazily loaded, but lazy loading is not available for classes that use field\
     access when not running the OpenJPA enhancer or when dynamic class \
     redefinition is not available.
+no-accessor: Could not find method called {0} in type {1}.
\ No newline at end of file