Author: mcucchiara
Date: Sat Aug 13 16:58:39 2011
New Revision: 1157393

URL: http://svn.apache.org/viewvc?rev=1157393&view=rev
Log:
* small improvements
* removed duplicate code

Modified:
    
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/AbstractUITagTest.java

Modified: 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/AbstractUITagTest.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/AbstractUITagTest.java?rev=1157393&r1=1157392&r2=1157393&view=diff
==============================================================================
--- 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/AbstractUITagTest.java
 (original)
+++ 
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/AbstractUITagTest.java
 Sat Aug 13 16:58:39 2011
@@ -24,12 +24,10 @@ package org.apache.struts2.views.jsp;
 import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.util.logging.Logger;
 import com.opensymphony.xwork2.util.logging.LoggerFactory;
+import org.apache.commons.beanutils.BeanUtils;
 import org.apache.struts2.ServletActionContext;
 import org.apache.struts2.views.jsp.ui.AbstractUITag;
 
-import java.beans.IntrospectionException;
-import java.beans.Introspector;
-import java.beans.PropertyDescriptor;
 import java.io.InputStream;
 import java.lang.reflect.InvocationTargetException;
 import java.net.URL;
@@ -100,7 +98,7 @@ public abstract class AbstractUITagTest 
          *
          * @param map The map to place this instance in.
          */
-        public void addToMap(Map map) {
+        public void addToMap(Map<String, PropertyHolder> map) {
             if (map != null) {
                 map.put(this.name, this);
             }
@@ -114,32 +112,17 @@ public abstract class AbstractUITagTest 
      * TODO: Check how we can remove this crap again.
      *
      * @author <a href="mailto:gie...@it-neering.net";>Rene Gielen</a>
+     * @deprecated use BeanUtils#setProperty
      */
     public class BeanHelper {
-        Map propDescriptors;
         Object bean;
 
         public BeanHelper(Object bean) {
             this.bean = bean;
-
-            try {
-                PropertyDescriptor[] pds;
-                pds = 
Introspector.getBeanInfo(bean.getClass()).getPropertyDescriptors();
-                propDescriptors = new HashMap(pds.length + 1, 1f);
-                for (int i = 0; i < pds.length; i ++) {
-                    propDescriptors.put(pds[i].getName(), pds[i]);
-                }
-            } catch (IntrospectionException e) {
-                e.printStackTrace();
-            }
         }
 
         public void set(String name, Object value) throws 
IllegalAccessException, InvocationTargetException {
-            PropertyDescriptor pd = (PropertyDescriptor) 
propDescriptors.get(name);
-
-            if (pd != null) {
-                pd.getWriteMethod().invoke(bean, new Object[]{value});
-            }
+            BeanUtils.setProperty(this.bean, name, value);
         }
 
     }
@@ -153,8 +136,8 @@ public abstract class AbstractUITagTest 
      * @return A Map of PropertyHolders values bound to {@link 
org.apache.struts2.views.jsp.AbstractUITagTest.PropertyHolder#getName()}
      *         as key.
      */
-    protected Map initializedGenericTagTestProperties() {
-        Map result = new HashMap();
+    protected Map<String, PropertyHolder> 
initializedGenericTagTestProperties() {
+        Map<String, PropertyHolder> result = new HashMap<String, 
PropertyHolder>();
         new PropertyHolder("name", "someName").addToMap(result);
         new PropertyHolder("id", "someId").addToMap(result);
         new PropertyHolder("cssClass", "cssClass1", 
"class=\"cssClass1\"").addToMap(result);
@@ -193,7 +176,7 @@ public abstract class AbstractUITagTest 
      * @param exclude          Names of properties to exclude from particular 
test.
      * @throws Exception
      */
-    public void verifyGenericProperties(AbstractUITag tag, String theme, Map 
propertiesToTest, String[] exclude) throws Exception {
+    public void verifyGenericProperties(AbstractUITag tag, String theme, 
Map<String, PropertyHolder> propertiesToTest, String[] exclude) throws 
Exception {
         if (tag != null && propertiesToTest != null) {
             List excludeList;
             if (exclude != null) {
@@ -207,12 +190,9 @@ public abstract class AbstractUITagTest 
                 tag.setTheme(theme);
             }
 
-            BeanHelper beanHelper = new BeanHelper(tag);
-            Iterator it = propertiesToTest.values().iterator();
-            while (it.hasNext()) {
-                PropertyHolder propertyHolder = (PropertyHolder) it.next();
-                if (! excludeList.contains(propertyHolder.getName())) {
-                    beanHelper.set(propertyHolder.getName(), 
propertyHolder.getValue());
+            for (PropertyHolder propertyHolder : propertiesToTest.values()) {
+                if (!excludeList.contains(propertyHolder.getName())) {
+                    BeanUtils.setProperty(tag, propertyHolder.getName(), 
propertyHolder.getValue());
                 }
             }
             tag.doStartTag();
@@ -222,13 +202,11 @@ public abstract class AbstractUITagTest 
                 LOG.info("AbstractUITagTest - [verifyGenericProperties]: Tag 
output is " + writerString);
             }
 
-            assertTrue("Freemarker error detected in tag output: " + 
writerString, writerString.indexOf(FREEMARKER_ERROR_EXPECTATION) == -1);
+            assertFalse("Freemarker error detected in tag output: " + 
writerString, writerString.contains(normalize(FREEMARKER_ERROR_EXPECTATION)));
 
-            it = propertiesToTest.values().iterator();
-            while (it.hasNext()) {
-                PropertyHolder propertyHolder = (PropertyHolder) it.next();
-                if (! excludeList.contains(propertyHolder.getName())) {
-                    assertTrue("Expected to find: " + 
propertyHolder.getExpectation() + " in resulting String: " + writerString, 
writerString.indexOf(propertyHolder.getExpectation()) > -1);
+            for (PropertyHolder propertyHolder : propertiesToTest.values()) {
+                if (!excludeList.contains(propertyHolder.getName())) {
+                    assertTrue("Expected to find: " + 
propertyHolder.getExpectation() + " in resulting String: " + writerString, 
writerString.contains(propertyHolder.getExpectation()));
                 }
             }
         }
@@ -238,9 +216,9 @@ public abstract class AbstractUITagTest 
      * Do a generic verification that setting certain properties on a tag 
causes expected output regarding this
      * property. Which properties to test with which expectations will be 
determined by the Map retrieved by {@link 
#initializedGenericTagTestProperties()}.
      *
-     * @param tag              The fresh created tag instance to test.
-     * @param theme            The theme to use. If <tt>null</tt>, use 
configured default theme.
-     * @param exclude          Names of properties to exclude from particular 
test.
+     * @param tag     The fresh created tag instance to test.
+     * @param theme   The theme to use. If <tt>null</tt>, use configured 
default theme.
+     * @param exclude Names of properties to exclude froObjectm particular 
test.
      * @throws Exception
      */
     public void verifyGenericProperties(AbstractUITag tag, String theme, 
String[] exclude) throws Exception {
@@ -266,19 +244,19 @@ public abstract class AbstractUITagTest 
      * @throws Exception if the validation failed
      */
     public void verify(URL url) throws Exception {
-        verify(url,null);
+        verify(url, null);
     }
 
     /**
      * Attempt to verify the contents of this.writer against the contents of 
the URL specified.  verify() performs a
      * trim on both ends
      *
-     * @param url the HTML snippet that we want to validate against
+     * @param url      the HTML snippet that we want to validate against
      * @param excluded
      * @throws Exception if the validation failed
      */
     public void verify(URL url, String[] excluded) throws Exception {
-         if (url == null) {
+        if (url == null) {
             fail("unable to verify a null URL");
         } else if (this.writer == null) {
             fail("AbstractJspWriter.writer not initialized.  Unable to 
verify");
@@ -321,6 +299,17 @@ public abstract class AbstractUITagTest 
      * space, tab, \r, and \n characters are converted to a single space 
character
      *
      * @param obj the object to be normalized.  normalize will perform its 
operation on obj.toString().trim() ;
+     * @return the normalized string
+     */
+    public static String normalize(Object obj) {
+        return normalize(obj, false);
+    }
+
+    /**
+     * normalizes a string so that strings generated on different platforms 
can be compared.  any group of one or more
+     * space, tab, \r, and \n characters are converted to a single space 
character
+     *
+     * @param obj         the object to be normalized.  normalize will perform 
its operation on obj.toString().trim() ;
      * @param appendSpace
      * @return the normalized string
      */


Reply via email to