You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2007/10/21 18:22:15 UTC

svn commit: r586915 - /tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/test/TapestryTestCase.java

Author: hlship
Date: Sun Oct 21 09:22:12 2007
New Revision: 586915

URL: http://svn.apache.org/viewvc?rev=586915&view=rev
Log:
TAPESTRY-1845: Need a simple way to access a component's messages for use in testing

Modified:
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/test/TapestryTestCase.java

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/test/TapestryTestCase.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/test/TapestryTestCase.java?rev=586915&r1=586914&r2=586915&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/test/TapestryTestCase.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/test/TapestryTestCase.java Sun Oct 21 09:22:12 2007
@@ -22,6 +22,7 @@
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
+import java.io.InputStream;
 import java.io.OutputStream;
 import java.lang.annotation.Annotation;
 import java.net.URL;
@@ -29,6 +30,7 @@
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
+import java.util.Properties;
 
 import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletRequest;
@@ -54,6 +56,8 @@
 import org.apache.tapestry.annotations.Path;
 import org.apache.tapestry.beaneditor.BeanModel;
 import org.apache.tapestry.beaneditor.PropertyModel;
+import org.apache.tapestry.internal.TapestryInternalUtils;
+import org.apache.tapestry.internal.services.MapMessages;
 import org.apache.tapestry.internal.services.MarkupWriterImpl;
 import org.apache.tapestry.ioc.AnnotationProvider;
 import org.apache.tapestry.ioc.Locatable;
@@ -62,6 +66,7 @@
 import org.apache.tapestry.ioc.ObjectLocator;
 import org.apache.tapestry.ioc.Resource;
 import org.apache.tapestry.ioc.annotations.Inject;
+import org.apache.tapestry.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry.ioc.test.IOCTestCase;
 import org.apache.tapestry.model.ComponentModel;
 import org.apache.tapestry.model.MutableComponentModel;
@@ -980,4 +985,49 @@
         return newMock(FormSupport.class);
     }
 
+    /**
+     * Provides access to component messages, suitable for testing. Reads the associated .properties
+     * file for the class (NOT any localization of it). Only the messages directly in the
+     * .properties file is available.
+     * 
+     * @param componentClass
+     *            component class whose messages are needed *
+     * @return the Messages instance
+     */
+    protected final Messages messagesFor(Class componentClass) throws IOException
+    {
+        String file = componentClass.getSimpleName() + ".properties";
+
+        Properties properties = new Properties();
+
+        InputStream is = null;
+
+        try
+        {
+            is = componentClass.getResourceAsStream(file);
+
+            if (is == null)
+                throw new RuntimeException(String.format(
+                        "Class %s does not have a message catalog.",
+                        componentClass.getName()));
+
+            properties.load(is);
+        }
+        finally
+        {
+            TapestryInternalUtils.close(is);
+        }
+
+        Map<String, String> map = CollectionFactory.newCaseInsensitiveMap();
+
+        for (Object key : properties.keySet())
+        {
+
+            String skey = (String) key;
+
+            map.put(skey, properties.getProperty(skey));
+        }
+
+        return new MapMessages(map);
+    }
 }