[weld-commits] Weld SVN: r6575 - extensions/trunk/src/main/java/org/jboss/weld/extensions/util/properties/query.
weld-commits at lists.jboss.org
weld-commits at lists.jboss.org
Wed Jun 23 21:25:21 EDT 2010
Author: shane.bryzak at jboss.com
Date: 2010-06-23 21:25:21 -0400 (Wed, 23 Jun 2010)
New Revision: 6575
Modified:
extensions/trunk/src/main/java/org/jboss/weld/extensions/util/properties/query/PropertyQuery.java
Log:
fix query logic, exclude duplicate properties from result
Modified: extensions/trunk/src/main/java/org/jboss/weld/extensions/util/properties/query/PropertyQuery.java
===================================================================
--- extensions/trunk/src/main/java/org/jboss/weld/extensions/util/properties/query/PropertyQuery.java 2010-06-21 12:43:30 UTC (rev 6574)
+++ extensions/trunk/src/main/java/org/jboss/weld/extensions/util/properties/query/PropertyQuery.java 2010-06-24 01:25:21 UTC (rev 6575)
@@ -43,36 +43,52 @@
{
List<Property<V>> results = new ArrayList<Property<V>>();
- Class<?> cls = targetClass;
+ // First check public methods (we ignore private methods)
+ for (Method method : targetClass.getMethods())
+ {
+ boolean match = true;
+ for (PropertyCriteria c : criteria)
+ {
+ if (!c.methodMatches(method))
+ {
+ match = false;
+ }
+ }
+ if (match) results.add(Properties.<V>createProperty(method));
+ }
+
+ Class<?> cls = targetClass;
while (!cls.equals(Object.class))
{
- // First check declared fields
+ // Now check declared fields
for (Field field : cls.getDeclaredFields())
{
+ boolean match = true;
for (PropertyCriteria c : criteria)
{
- if (c.fieldMatches(field))
+ if (!c.fieldMatches(field))
{
- results.add(Properties.<V>createProperty(field));
+ match = false;
}
}
+ Property<V> prop = Properties.<V>createProperty(field);
+
+ if (match && !resultsContainsProperty(results, prop.getName())) results.add(prop);
}
cls = cls.getSuperclass();
}
-
- // Then check public methods (we ignore private methods)
- for (Method method : targetClass.getMethods())
- {
- for (PropertyCriteria c : criteria)
- {
- if (c.methodMatches(method))
- {
- results.add(Properties.<V>createProperty(method));
- }
- }
- }
+
return results;
}
+
+ private boolean resultsContainsProperty(List<Property<V>> results, String propertyName)
+ {
+ for (Property<V> p : results)
+ {
+ if (propertyName.equals(p.getName())) return true;
+ }
+ return false;
+ }
}
More information about the weld-commits
mailing list