Title: [waffle-scm] [804] trunk/waffle-core/src/main/java/org/codehaus/waffle/bind: Minor changes to make binder implementations more readable.
Revision
804
Author
mauro
Date
2008-09-03 06:33:44 -0500 (Wed, 03 Sep 2008)

Log Message

Minor changes to make binder implementations more readable.

Modified Paths


Diff

Modified: trunk/waffle-core/src/main/java/org/codehaus/waffle/bind/IntrospectingViewDataBinder.java (803 => 804)

--- trunk/waffle-core/src/main/java/org/codehaus/waffle/bind/IntrospectingViewDataBinder.java	2008-09-03 11:28:45 UTC (rev 803)
+++ trunk/waffle-core/src/main/java/org/codehaus/waffle/bind/IntrospectingViewDataBinder.java	2008-09-03 11:33:44 UTC (rev 804)
@@ -16,7 +16,8 @@
 import org.codehaus.waffle.monitor.BindMonitor;
 
 /**
- * ViewDataBinder implementation which uses Java beans introspector.
+ * ViewDataBinder implementation which uses Java beans introspector to bind [EMAIL PROTECTED] PropertyDescriptor#getReadMethod()
+ * read methods}.
  * 
  * @author Michael Ward
  * @author Mauro Talevi
@@ -37,7 +38,7 @@
             for (PropertyDescriptor propertyDescriptor : propertyDescriptors) {
                 Method readMethod = propertyDescriptor.getReadMethod();
 
-                if(readMethod != null && readMethod.getParameterTypes().length == 0 && !readMethod.getName().equals("getClass")) {
+                if (isBindable(readMethod)) {
                     String name = propertyDescriptor.getName();
                     request.setAttribute(name, readMethod.invoke(controller));
                     Object value = request.getAttribute(name);
@@ -56,5 +57,8 @@
         }
     }
 
-   
+    private boolean isBindable(Method method) {
+        return method != null && method.getParameterTypes().length == 0 && !method.getName().equals("getClass");
+    }
+
 }

Modified: trunk/waffle-core/src/main/java/org/codehaus/waffle/bind/ognl/OgnlControllerDataBinder.java (803 => 804)

--- trunk/waffle-core/src/main/java/org/codehaus/waffle/bind/ognl/OgnlControllerDataBinder.java	2008-09-03 11:28:45 UTC (rev 803)
+++ trunk/waffle-core/src/main/java/org/codehaus/waffle/bind/ognl/OgnlControllerDataBinder.java	2008-09-03 11:33:44 UTC (rev 804)
@@ -24,29 +24,33 @@
 import org.codehaus.waffle.validation.ErrorsContext;
 
 /**
- * ControllerDataBinder implementation backed by <a href="" Object Graph Notation Language</a>.
- *
+ * ControllerDataBinder implementation backed by <a href="" Graph Notation Language</a>. The
+ * [EMAIL PROTECTED] TypeConverter} allows for any custom conversion to be defined.
+ * 
  * @author Michael Ward
  * @author Mauro Talevi
  */
 public class OgnlControllerDataBinder implements ControllerDataBinder {
+    private static final String COMMA = ",";
     private final TypeConverter typeConverter;
     private final BindErrorMessageResolver bindErrorMessageResolver;
     private final BindMonitor bindMonitor;
 
-    public OgnlControllerDataBinder(ValueConverterFinder valueConverterFinder, BindErrorMessageResolver bindErrorMessageResolver, BindMonitor bindMonitor) {
+    public OgnlControllerDataBinder(ValueConverterFinder valueConverterFinder,
+            BindErrorMessageResolver bindErrorMessageResolver, BindMonitor bindMonitor) {
         this.typeConverter = new DelegatingTypeConverter(valueConverterFinder, bindMonitor);
         this.bindErrorMessageResolver = bindErrorMessageResolver;
         this.bindMonitor = bindMonitor;
     }
-    
-    @SuppressWarnings({"unchecked"})
-    public void bind(HttpServletRequest request, HttpServletResponse response, ErrorsContext errorsContext, Object controller) {
+
+    @SuppressWarnings( { "unchecked" })
+    public void bind(HttpServletRequest request, HttpServletResponse response, ErrorsContext errorsContext,
+            Object controller) {
         Enumeration<String> parameterNames = request.getParameterNames();
 
         while (parameterNames.hasMoreElements()) {
-            String parameterName = parameterNames.nextElement();           
-            String parameterValue = getParameterValue(request, parameterName);
+            String parameterName = parameterNames.nextElement();
+            String parameterValue = csvParameterValue(request, parameterName);
 
             try {
                 Object dataValue = handleConvert(parameterName, parameterValue, controller);
@@ -55,7 +59,7 @@
                 String message = bindErrorMessageResolver.resolve(controller, parameterName, parameterValue);
                 BindErrorMessage errorMessage = new BindErrorMessage(parameterName, parameterValue, message, e);
                 errorsContext.addErrorMessage(errorMessage);
-                bindMonitor.controllerBindFailed(controller, errorMessage, e);                
+                bindMonitor.controllerBindFailed(controller, errorMessage, e);
             } catch (BindException e) {
                 // by convention BindExceptions should provide the correct bind error message to display to the end-user
                 BindErrorMessage errorMessage = new BindErrorMessage(parameterName, parameterValue, e.getMessage(), e);
@@ -65,22 +69,24 @@
         }
     }
 
-    private String getParameterValue(HttpServletRequest request, String name) {
-        // Look for multiple values and join them if found
+    /**
+     * Looks for multiple parameter values and join them if found
+     */
+    private String csvParameterValue(HttpServletRequest request, String name) {
         String[] values = request.getParameterValues(name);
-        if ( values == null ){
+        if (values == null) {
             return null;
         }
         // Joining a single value will return the equivalent of request.getParameter(name)
-        return join(values, ",");
+        return join(values, COMMA);
     }
 
     // Could use commons-lang StringUtils.join() but avoid introducing a dependency for such a trivial operation
     private String join(String[] values, String separator) {
         StringBuilder sb = new StringBuilder();
-        for ( int i = 0; i < values.length; i++ ){
+        for (int i = 0; i < values.length; i++) {
             sb.append(values[i]);
-            if ( i < values.length - 1 ){
+            if (i < values.length - 1) {
                 sb.append(separator);
             }
         }
@@ -88,9 +94,8 @@
     }
 
     @SuppressWarnings("unchecked")
-    protected Object handleConvert(String propertyName,
-                                 String parameterValue,
-                                 Object controller) throws OgnlException, BindException {
+    protected Object handleConvert(String propertyName, String parameterValue, Object controller) throws OgnlException,
+            BindException {
         try {
             Object tree = Ognl.parseExpression(propertyName);
             Map ognlContext = Ognl.createDefaultContext(controller);


To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Reply via email to