You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by se...@apache.org on 2011/11/26 03:43:03 UTC

svn commit: r1206394 - /jmeter/trunk/src/core/org/apache/jmeter/testbeans/gui/GenericTestBeanCustomizer.java

Author: sebb
Date: Sat Nov 26 02:43:03 2011
New Revision: 1206394

URL: http://svn.apache.org/viewvc?rev=1206394&view=rev
Log:
Log some warnings for inconsistent descriptor attributes

Modified:
    jmeter/trunk/src/core/org/apache/jmeter/testbeans/gui/GenericTestBeanCustomizer.java

Modified: jmeter/trunk/src/core/org/apache/jmeter/testbeans/gui/GenericTestBeanCustomizer.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/testbeans/gui/GenericTestBeanCustomizer.java?rev=1206394&r1=1206393&r2=1206394&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/testbeans/gui/GenericTestBeanCustomizer.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/testbeans/gui/GenericTestBeanCustomizer.java Sat Nov 26 02:43:03 2011
@@ -96,6 +96,7 @@ public class GenericTestBeanCustomizer e
 
     private static final Logger log = LoggingManager.getLoggerForClass();
 
+    // should be quicker to find the editors if they are registered.
     static {
         PropertyEditorManager.registerEditor(Long.class,    LongPropertyEditor.class);
         PropertyEditorManager.registerEditor(Integer.class, IntegerPropertyEditor.class);
@@ -206,6 +207,8 @@ public class GenericTestBeanCustomizer e
                 continue;
             }
 
+            validateAttributes(descriptor);
+
             PropertyEditor propertyEditor;
             Object guiType = descriptor.getValue(GUITYPE);
             if (guiType instanceof GuiEditor) {
@@ -276,6 +279,40 @@ public class GenericTestBeanCustomizer e
     }
 
     /**
+     * Validate the descriptor attributes.
+     * 
+     * @param pd
+     */
+    private static void validateAttributes(PropertyDescriptor pd) {
+        if (notNull(pd) && pd.getValue(DEFAULT) == null) {
+            log.warn(getDetails(pd) + " requires a value but does not provide a default.");
+        }
+        if (notOther(pd) && pd.getValue(TAGS) == null) {
+            log.warn(getDetails(pd) + " does not have tags but other values are not allowed.");
+        }
+        if (!notNull(pd)) {
+            Class<?> propertyType = pd.getPropertyType();
+            if (propertyType.isPrimitive()) {
+                log.warn(getDetails(pd) + " allows null but is a primitive type");
+            }
+        }
+    }
+
+    /**
+     * Identify the property from the descriptor.
+     * 
+     * @param pd
+     * @return
+     */
+    private static String getDetails(PropertyDescriptor pd) {
+        StringBuilder sb = new StringBuilder();
+        sb.append(pd.getReadMethod().getDeclaringClass().getName());
+        sb.append('#');
+        sb.append(pd.getName());
+        return sb.toString();
+    }
+
+    /**
      * Find the default typeEditor and a suitable guiEditor for the given
      * property descriptor, and combine them in a WrapperEditor.
      *