You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by si...@apache.org on 2011/06/07 18:49:47 UTC
svn commit: r1133095 -
/labs/magma/trunk/foundation-beans/src/main/java/org/apache/magma/beans/PropertyInfo.java
Author: simoneg
Date: Tue Jun 7 16:49:47 2011
New Revision: 1133095
URL: http://svn.apache.org/viewvc?rev=1133095&view=rev
Log:
Better access to underlying property, with easier support for ITDs and other aspects
Modified:
labs/magma/trunk/foundation-beans/src/main/java/org/apache/magma/beans/PropertyInfo.java
Modified: labs/magma/trunk/foundation-beans/src/main/java/org/apache/magma/beans/PropertyInfo.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-beans/src/main/java/org/apache/magma/beans/PropertyInfo.java?rev=1133095&r1=1133094&r2=1133095&view=diff
==============================================================================
--- labs/magma/trunk/foundation-beans/src/main/java/org/apache/magma/beans/PropertyInfo.java (original)
+++ labs/magma/trunk/foundation-beans/src/main/java/org/apache/magma/beans/PropertyInfo.java Tue Jun 7 16:49:47 2011
@@ -141,7 +141,7 @@ public class PropertyInfo implements Clo
*/
private boolean isUnderlying = false;
-
+ private PropertyDescriptor descriptor = null;
private Method readMethod;
private Method writeMethod;
@@ -199,7 +199,10 @@ public class PropertyInfo implements Clo
public boolean isEnum() {
return this.isEnum;
}
-
+
+ public void init(PropertyDescriptor descriptor, Class beanClass) {
+ this.init(descriptor, beanClass, false);
+ }
/**
* Initializes this class, parsing the {@link PropertyDescriptor} and eventually annotations found on the getter or setter methods.
*
@@ -209,7 +212,9 @@ public class PropertyInfo implements Clo
* @param beanClass the class of the bean containing the property.
*/
@SuppressWarnings("unchecked")
- public void init(PropertyDescriptor descriptor, Class beanClass) {
+ public void init(PropertyDescriptor descriptor, Class beanClass, boolean underlying) {
+ this.isUnderlying = underlying;
+ this.descriptor = descriptor;
this.beanClass = beanClass;
this.name = descriptor.getName();
readMethod = descriptor.getReadMethod();
@@ -218,7 +223,7 @@ public class PropertyInfo implements Clo
Consider consider = null;
if (readMethod != null) consider = readMethod.getAnnotation(Consider.class);
if (consider == null && writeMethod != null) consider = writeMethod.getAnnotation(Consider.class);
- if (consider != null) {
+ if (consider != null && !underlying) {
this.underlyingType = descriptor.getPropertyType();
this.type = consider.value();
this.underlyingConverter = Converters.getConverterFor(this.type, this.underlyingType);
@@ -252,15 +257,14 @@ public class PropertyInfo implements Clo
this.readable = readMethod != null;
this.writeable = writeMethod != null;
this.underlyingWriteable = this.writeable;
- if ((readMethod != null && readMethod.isAnnotationPresent(MagReadOnly.class)) ||
- (writeMethod != null && writeMethod.isAnnotationPresent(MagReadOnly.class)) ||
- beanClass.isAnnotationPresent(MagReadOnly.class)) {
- this.writeable = false;
+ if (!underlying) {
+ if ((readMethod != null && readMethod.isAnnotationPresent(MagReadOnly.class)) ||
+ (writeMethod != null && writeMethod.isAnnotationPresent(MagReadOnly.class)) ||
+ beanClass.isAnnotationPresent(MagReadOnly.class)) {
+ this.writeable = false;
+ }
}
- initType();
- }
-
- private void initType() {
+
if (this.type != null) {
this.isCollection = Collection.class.isAssignableFrom(this.type);
this.isMap = Map.class.isAssignableFrom(this.type);
@@ -299,13 +303,7 @@ public class PropertyInfo implements Clo
}
protected void initAsUnderlying(PropertyInfo sup) {
- this.isUnderlying = true;
- this.name = sup.name;
- this.beanClass = sup.beanClass;
- this.readable = sup.readable;
- this.type = sup.underlyingType;
- this.writeable = sup.underlyingWriteable;
- this.initType();
+ this.init(sup.descriptor, sup.beanClass, true);
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org