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