Seam SVN: r10705 - in modules/trunk/faces/src: test and 15 other directories.
by seam-commits@lists.jboss.org
Author: dan.j.allen
Date: 2009-04-29 02:01:57 -0400 (Wed, 29 Apr 2009)
New Revision: 10705
Added:
modules/trunk/faces/src/test/
modules/trunk/faces/src/test/java/
modules/trunk/faces/src/test/java/org/
modules/trunk/faces/src/test/java/org/jboss/
modules/trunk/faces/src/test/java/org/jboss/seam/
modules/trunk/faces/src/test/java/org/jboss/seam/faces/
modules/trunk/faces/src/test/java/org/jboss/seam/faces/FacesContextProducerTest.java
modules/trunk/faces/src/test/java/org/jboss/seam/faces/FacesExpressionsTest.java
modules/trunk/faces/src/test/java/org/jboss/seam/faces/FacesStatusMessagesTest.java
modules/trunk/faces/src/test/resources/
modules/trunk/faces/src/test/resources/org/
modules/trunk/faces/src/test/resources/org/jboss/
modules/trunk/faces/src/test/resources/org/jboss/seam/
modules/trunk/faces/src/test/resources/org/jboss/seam/faces/
modules/trunk/faces/src/test/resources/org/jboss/seam/faces/beans.xml
modules/trunk/faces/src/test/resources/org/jboss/testharness/
modules/trunk/faces/src/test/resources/org/jboss/testharness/impl/
modules/trunk/faces/src/test/resources/org/jboss/testharness/impl/packaging/
modules/trunk/faces/src/test/resources/org/jboss/testharness/impl/packaging/jsr299/
modules/trunk/faces/src/test/resources/org/jboss/testharness/impl/packaging/jsr299/default/
modules/trunk/faces/src/test/resources/org/jboss/testharness/impl/packaging/jsr299/default/beans.xml
modules/trunk/faces/src/test/resources/test-suite.xml
Log:
add a bunch of tests
Added: modules/trunk/faces/src/test/java/org/jboss/seam/faces/FacesContextProducerTest.java
===================================================================
--- modules/trunk/faces/src/test/java/org/jboss/seam/faces/FacesContextProducerTest.java (rev 0)
+++ modules/trunk/faces/src/test/java/org/jboss/seam/faces/FacesContextProducerTest.java 2009-04-29 06:01:57 UTC (rev 10705)
@@ -0,0 +1,50 @@
+package org.jboss.seam.faces;
+
+import javax.faces.context.FacesContext;
+import org.jboss.seam.mock.faces.MockFacesContext;
+import static org.testng.Assert.*;
+
+import org.jboss.testharness.impl.packaging.Artifact;
+import org.jboss.testharness.impl.packaging.Classes;
+import org.jboss.webbeans.test.AbstractWebBeansTest;
+import org.testng.annotations.Test;
+
+/**
+ * Verify that the FacesContextProducer produces the same FacesContext
+ * as returned by FacesContext#getCurrentInstance().
+ *
+ * @author Dan Allen
+ */
+@Artifact(addCurrentPackage = false)
+(a)Classes(FacesContextProducer.class)
+public class FacesContextProducerTest extends AbstractWebBeansTest
+{
+ @Override
+ public void beforeMethod()
+ {
+ super.beforeMethod();
+ installFacesContext();
+ }
+
+ @Test
+ public void testProduceCurrentFacesContext()
+ {
+ FacesContext actualFacesContext = FacesContext.getCurrentInstance();
+ FacesContextProducer standaloneProducer = new FacesContextProducer();
+ assertSame(standaloneProducer.getFacesContext(), actualFacesContext);
+ assertSame(getFacesContextInstance(), actualFacesContext);
+ }
+
+ private void installFacesContext()
+ {
+ new MockFacesContext().setCurrent();
+ }
+
+ /**
+ * Retrieve the FacesContextProducer instance
+ */
+ private FacesContext getFacesContextInstance()
+ {
+ return getCurrentManager().getInstanceByType(FacesContext.class);
+ }
+}
Added: modules/trunk/faces/src/test/java/org/jboss/seam/faces/FacesExpressionsTest.java
===================================================================
--- modules/trunk/faces/src/test/java/org/jboss/seam/faces/FacesExpressionsTest.java (rev 0)
+++ modules/trunk/faces/src/test/java/org/jboss/seam/faces/FacesExpressionsTest.java 2009-04-29 06:01:57 UTC (rev 10705)
@@ -0,0 +1,62 @@
+package org.jboss.seam.faces;
+
+import static org.testng.Assert.*;
+
+import javax.el.CompositeELResolver;
+
+import javax.faces.context.FacesContext;
+import javax.faces.event.PhaseId;
+import org.jboss.seam.el.Expressions;
+import org.jboss.seam.el.SeamEL;
+import org.jboss.seam.mock.faces.MockFacesContext;
+import org.jboss.testharness.impl.packaging.Artifact;
+import org.jboss.testharness.impl.packaging.Classes;
+import org.jboss.testharness.impl.packaging.jsr299.BeansXml;
+import org.jboss.webbeans.test.AbstractWebBeansTest;
+import org.testng.annotations.Test;
+
+/**
+ * First and foremost, ensure that FacesExpressions is configured properly
+ * to specialize Expressions and will thus load successfully. Once loaded,
+ * verify that Expressions adds the appropriate JSF-specific functionality.
+ *
+ * @author Dan Allen
+ */
+@Artifact(addCurrentPackage = false)
+@BeansXml("beans.xml")
+@Classes(
+{
+ FacesExpressions.class, Expressions.class
+})
+public class FacesExpressionsTest extends AbstractWebBeansTest
+{
+ @Override
+ public void beforeMethod()
+ {
+ super.beforeMethod();
+ installMockFacesContext();
+ }
+
+ @Test
+ public void testUsesELFromFacesContext()
+ {
+ Expressions expressions = getExpressionInstance();
+ FacesContext facesContext = FacesContext.getCurrentInstance();
+ facesContext.setCurrentPhaseId(PhaseId.RENDER_RESPONSE);
+ assertSame(expressions.getELContext(), facesContext.getELContext());
+ }
+
+ private Expressions getExpressionInstance()
+ {
+ Expressions expressions = getCurrentManager().getInstanceByType(Expressions.class);
+ assert expressions instanceof FacesExpressions;
+ return expressions;
+ }
+
+ private void installMockFacesContext()
+ {
+ MockFacesContext facesContext = new MockFacesContext();
+ facesContext.setELContext(SeamEL.createELContext(new CompositeELResolver()));
+ facesContext.setCurrent();
+ }
+}
Added: modules/trunk/faces/src/test/java/org/jboss/seam/faces/FacesStatusMessagesTest.java
===================================================================
--- modules/trunk/faces/src/test/java/org/jboss/seam/faces/FacesStatusMessagesTest.java (rev 0)
+++ modules/trunk/faces/src/test/java/org/jboss/seam/faces/FacesStatusMessagesTest.java 2009-04-29 06:01:57 UTC (rev 10705)
@@ -0,0 +1,100 @@
+package org.jboss.seam.faces;
+
+import javax.faces.application.FacesMessage;
+import static org.testng.Assert.*;
+
+import javax.faces.context.FacesContext;
+import javax.faces.event.PhaseId;
+import org.jboss.seam.el.Expressions;
+import org.jboss.seam.international.Interpolator;
+import org.jboss.seam.international.LocaleProducer;
+import org.jboss.seam.international.StatusMessages;
+import org.jboss.seam.mock.faces.MockFacesContext;
+import org.jboss.testharness.impl.packaging.Artifact;
+import org.jboss.testharness.impl.packaging.Classes;
+import org.jboss.testharness.impl.packaging.jsr299.BeansXml;
+import org.jboss.webbeans.context.ConversationContext;
+import org.jboss.webbeans.context.api.helpers.ConcurrentHashMapBeanStore;
+import org.jboss.webbeans.test.AbstractWebBeansTest;
+import org.testng.annotations.Test;
+
+/**
+ * First and foremost, ensure that FacesStatusMessage is configured properly
+ * to specialize StatusMessage and will thus load successfully. Once loaded,
+ * verify that FacesStatusMessage adds the appropriate JSF-specific functionality
+ * to the status message repository.
+ *
+ * @author Dan Allen
+ *
+ * @see FacesStatusMessages
+ * @see StatusMessages
+ */
+@Artifact(addCurrentPackage = false)
+@BeansXml("beans.xml")
+@Classes(
+{
+ FacesStatusMessages.class, StatusMessages.class, Interpolator.class, Expressions.class, LocaleProducer.class
+})
+public class FacesStatusMessagesTest extends AbstractWebBeansTest
+{
+ @Override
+ public void beforeMethod()
+ {
+ super.beforeMethod();
+ activateConversationContext();
+ installMockFacesContext();
+ }
+
+ /**
+ * Test that the StatusMessage objects properly tranfer to FacesMessage objects
+ * upon the call to onBeforeRender().
+ */
+ @Test
+ public void testStatusMessagesTransferToFacesMessages()
+ {
+ FacesContext facesContext = FacesContext.getCurrentInstance();
+ facesContext.setCurrentPhaseId(PhaseId.INVOKE_APPLICATION);
+ StatusMessages statusMessages = getStatusMessagesInstance();
+
+ statusMessages.add("You've booked a night at {0}. Bon chance!", "Mandalay Bay");
+
+ assertEquals(statusMessages.getGlobalMessages().size(), 1);
+ assertEquals(facesContext.getMessageList().size(), 0);
+
+ facesContext.setCurrentPhaseId(PhaseId.RENDER_RESPONSE);
+ statusMessages.onBeforeRender();
+
+ assertEquals(statusMessages.getGlobalMessages().size(), 0);
+ assertEquals(facesContext.getMessageList().size(), 1);
+ assertEquals(facesContext.getMessageList(null).size(), 1);
+ FacesMessage facesMessage = facesContext.getMessageList().get(0);
+ assertEquals(facesMessage.getSeverity(), FacesMessage.SEVERITY_INFO);
+ assertEquals(facesMessage.getSummary(), "You've booked a night at Mandalay Bay. Bon chance!");
+ // this assignment happens inside the FacesMessage implementation
+ assertEquals(facesMessage.getSummary(), facesMessage.getDetail());
+ }
+
+ // TODO test addToControl() because there is important logic in the getClientId() method
+ // TODO either test TransferStatusMessagesListener here or create a dedicated test for it
+
+ private void installMockFacesContext()
+ {
+ new MockFacesContext().setCurrent();
+ }
+
+ private void activateConversationContext()
+ {
+ ConversationContext.instance().setBeanStore(new ConcurrentHashMapBeanStore());
+ ConversationContext.instance().setActive(true);
+ }
+
+ /**
+ * Retrieve the StatusMessage instance, which is expected to be the type FacesMessages.
+ */
+ private StatusMessages getStatusMessagesInstance()
+ {
+ StatusMessages statusMessages = getCurrentManager().getInstanceByType(StatusMessages.class);
+ assert statusMessages instanceof FacesStatusMessages;
+ return statusMessages;
+ }
+}
Added: modules/trunk/faces/src/test/resources/org/jboss/seam/faces/beans.xml
===================================================================
--- modules/trunk/faces/src/test/resources/org/jboss/seam/faces/beans.xml (rev 0)
+++ modules/trunk/faces/src/test/resources/org/jboss/seam/faces/beans.xml 2009-04-29 06:01:57 UTC (rev 10705)
@@ -0,0 +1,8 @@
+<Beans xmlns="urn:java:ee"
+ xmlns:faces="urn:java:org.jboss.seam.faces">
+ <Deploy>
+ <Standard/>
+ <Production/>
+ <faces:Faces/>
+ </Deploy>
+</Beans>
Added: modules/trunk/faces/src/test/resources/org/jboss/testharness/impl/packaging/jsr299/default/beans.xml
===================================================================
Added: modules/trunk/faces/src/test/resources/test-suite.xml
===================================================================
--- modules/trunk/faces/src/test/resources/test-suite.xml (rev 0)
+++ modules/trunk/faces/src/test/resources/test-suite.xml 2009-04-29 06:01:57 UTC (rev 10705)
@@ -0,0 +1,15 @@
+<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
+<suite name="Seam Faces Module Test Suite" verbose="1">
+ <test name="Seam Faces Module - Unit Tests">
+ <!--
+ <method-selectors>
+ <method-selector>
+ <selector-class name="org.jboss.testharness.impl.testng.DisableIntegrationTestsMethodSelector"/>
+ </method-selector>
+ </method-selectors>
+ -->
+ <packages>
+ <package name="org.jboss.seam.faces"/>
+ </packages>
+ </test>
+</suite>
15 years, 9 months
Seam SVN: r10704 - modules/trunk/faces/src/main/java/org/jboss/seam/faces.
by seam-commits@lists.jboss.org
Author: dan.j.allen
Date: 2009-04-29 02:01:29 -0400 (Wed, 29 Apr 2009)
New Revision: 10704
Added:
modules/trunk/faces/src/main/java/org/jboss/seam/faces/FacesStatusMessages.java
Removed:
modules/trunk/faces/src/main/java/org/jboss/seam/faces/FacesMessages.java
Modified:
modules/trunk/faces/src/main/java/org/jboss/seam/faces/FacesExpressions.java
Log:
make FacesExpressions and FacesStatusMessages specialize standard components from international package
Modified: modules/trunk/faces/src/main/java/org/jboss/seam/faces/FacesExpressions.java
===================================================================
--- modules/trunk/faces/src/main/java/org/jboss/seam/faces/FacesExpressions.java 2009-04-29 06:00:15 UTC (rev 10703)
+++ modules/trunk/faces/src/main/java/org/jboss/seam/faces/FacesExpressions.java 2009-04-29 06:01:29 UTC (rev 10704)
@@ -1,10 +1,10 @@
//$Id: FacesExpressions.java 9684 2008-12-01 21:41:20Z dan.j.allen $
package org.jboss.seam.faces;
-import javax.annotation.Named;
import javax.context.ApplicationScoped;
import javax.el.ELContext;
import javax.faces.context.FacesContext;
+import javax.inject.Specializes;
import org.jboss.seam.el.Expressions;
/**
@@ -13,7 +13,8 @@
* @author Gavin King
*/
public
-@Named
+@Faces
+@Specializes
@ApplicationScoped
class FacesExpressions extends Expressions
{
Deleted: modules/trunk/faces/src/main/java/org/jboss/seam/faces/FacesMessages.java
===================================================================
--- modules/trunk/faces/src/main/java/org/jboss/seam/faces/FacesMessages.java 2009-04-29 06:00:15 UTC (rev 10703)
+++ modules/trunk/faces/src/main/java/org/jboss/seam/faces/FacesMessages.java 2009-04-29 06:01:29 UTC (rev 10704)
@@ -1,139 +0,0 @@
-package org.jboss.seam.faces;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import javax.context.ConversationScoped;
-import javax.faces.application.FacesMessage;
-import javax.faces.component.UIComponent;
-import javax.faces.context.FacesContext;
-
-import org.jboss.seam.international.StatusMessage;
-import org.jboss.seam.international.StatusMessages;
-
-/**
- * A Seam component that propagates FacesMessages across redirects
- * and interpolates EL expressions in the message string.
- *
- * @author Gavin King
- * @author Pete Muir
- */
-@ConversationScoped
-public class FacesMessages extends StatusMessages
-{
- /**
- * Called by Seam to transfer messages from Seam status messages to real JSF messages
- */
- public void beforeRenderView()
- {
- for (StatusMessage statusMessage : getMessages())
- {
- FacesContext.getCurrentInstance().addMessage(null, toFacesMessage(statusMessage));
- }
- for (Map.Entry<String, List<StatusMessage>> entry : getKeyedMessages().entrySet())
- {
- for (StatusMessage statusMessage : entry.getValue())
- {
- String clientId = getClientId(entry.getKey());
- FacesContext.getCurrentInstance().addMessage(clientId, toFacesMessage(statusMessage));
- }
- }
- clear();
- }
-
- /**
- * Convert a StatusMessage to a FacesMessage
- */
- private static FacesMessage toFacesMessage(StatusMessage statusMessage)
- {
- if (statusMessage.getSummary() != null && statusMessage.getSummary().length() > 0)
- {
- return new FacesMessage(toSeverity(statusMessage.getSeverity()), statusMessage.getSummary(), statusMessage.getDetail());
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Convert a StatusMessage.Severity to a FacesMessage.Severity
- */
- private static javax.faces.application.FacesMessage.Severity toSeverity(org.jboss.seam.international.StatusMessage.Severity severity)
- {
- switch (severity)
- {
- case ERROR:
- return FacesMessage.SEVERITY_ERROR;
- case FATAL:
- return FacesMessage.SEVERITY_FATAL;
- case INFO:
- return FacesMessage.SEVERITY_INFO;
- case WARN:
- return FacesMessage.SEVERITY_WARN;
- default:
- return null;
- }
- }
-
- /**
- * Convert a FacesMessage.Severity to a StatusMessage.Severity
- */
- private static org.jboss.seam.international.StatusMessage.Severity toSeverity(javax.faces.application.FacesMessage.Severity severity)
- {
- if (FacesMessage.SEVERITY_ERROR.equals(severity))
- {
- return org.jboss.seam.international.StatusMessage.Severity.ERROR;
- }
- else if (FacesMessage.SEVERITY_FATAL.equals(severity))
- {
- return org.jboss.seam.international.StatusMessage.Severity.FATAL;
- }
- else if (FacesMessage.SEVERITY_INFO.equals(severity))
- {
- return org.jboss.seam.international.StatusMessage.Severity.INFO;
- }
- else if (FacesMessage.SEVERITY_WARN.equals(severity))
- {
- return org.jboss.seam.international.StatusMessage.Severity.WARN;
- }
- else
- {
- return null;
- }
- }
-
- /**
- * Calculate the JSF client ID from the provided widget ID
- */
- private String getClientId(String id)
- {
- FacesContext facesContext = FacesContext.getCurrentInstance();
- return getClientId(facesContext.getViewRoot(), id, facesContext);
- }
-
- private static String getClientId(UIComponent component, String id, FacesContext facesContext)
- {
- String componentId = component.getId();
- if (componentId != null && componentId.equals(id))
- {
- return component.getClientId(facesContext);
- }
- else
- {
- Iterator iter = component.getFacetsAndChildren();
- while (iter.hasNext())
- {
- UIComponent child = (UIComponent) iter.next();
- String clientId = getClientId(child, id, facesContext);
- if (clientId != null)
- {
- return clientId;
- }
- }
- return null;
- }
- }
-}
Copied: modules/trunk/faces/src/main/java/org/jboss/seam/faces/FacesStatusMessages.java (from rev 10668, modules/trunk/faces/src/main/java/org/jboss/seam/faces/FacesMessages.java)
===================================================================
--- modules/trunk/faces/src/main/java/org/jboss/seam/faces/FacesStatusMessages.java (rev 0)
+++ modules/trunk/faces/src/main/java/org/jboss/seam/faces/FacesStatusMessages.java 2009-04-29 06:01:29 UTC (rev 10704)
@@ -0,0 +1,170 @@
+package org.jboss.seam.faces;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import javax.context.ConversationScoped;
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+
+import javax.inject.Initializer;
+import javax.inject.Specializes;
+import org.jboss.seam.international.Interpolator;
+import org.jboss.seam.international.StatusMessage;
+import org.jboss.seam.international.StatusMessages;
+import org.jboss.webbeans.log.LogProvider;
+import org.jboss.webbeans.log.Logging;
+
+/**
+ * <p>A bean which specializes StatusMessage to provide support for
+ * JSF. Generic StatusMessage objects are translated into JSF
+ * FacesMessage objects just prior to when the view is rendered.</p>
+ *
+ * <p>To access the JSF FacesMessage objects once they have been registered
+ * with the FacesContext, you should use the methods getMessageList()
+ * and getMessagesList(String), which were added to FacesContext in JSF 2.0.</p>
+ *
+ * <p>For instance, to retrieve the list of global messages, you can use
+ * the following value expression in your page:</p>
+ *
+ * <pre>#{facesContext.getMessageList(null)}</pre>
+ *
+ * <p>To retrieve the list of messages for a "client id", you can use this
+ * expression:</p>
+ *
+ * <pre>#{facesContext.getMessageList('username')}</pre>
+ *
+ * <p>These examples rely, of course, on the JBoss EL.</p>
+ *
+ * QUESTION: should we set Flash#setKeepMessages(boolean)?
+ *
+ * @author Gavin King
+ * @author Pete Muir
+ */
+public
+@Faces
+@Specializes
+@ConversationScoped
+class FacesStatusMessages extends StatusMessages
+{
+ private static final LogProvider log = Logging.getLogProvider(FacesStatusMessages.class);
+
+ public FacesStatusMessages()
+ {
+ super();
+ }
+
+ public @Initializer FacesStatusMessages(Interpolator interpolator)
+ {
+ super(interpolator);
+ }
+
+ /**
+ * Called by a JSF SystemEventListener listening for the PreRenderViewEvent
+ * to transpose Seam status messages to real JSF messages and register them
+ * with the FacesContext.
+ */
+ @Override
+ public void onBeforeRender()
+ {
+ super.onBeforeRender();
+ FacesContext facesContext = FacesContext.getCurrentInstance();
+ for (StatusMessage statusMessage : getGlobalMessages())
+ {
+ facesContext.addMessage(null, toFacesMessage(statusMessage));
+ }
+ for (Map.Entry<String, List<StatusMessage>> messagesForKey : getKeyedMessages().entrySet())
+ {
+ String clientId = getClientId(messagesForKey.getKey(), facesContext);
+ if (clientId == null)
+ {
+ log.warn("Could not locate clientId " + clientId + " when registering JSF messages for control. A global message will be created instead.");
+ }
+ for (StatusMessage statusMessage : messagesForKey.getValue())
+ {
+ facesContext.addMessage(clientId, toFacesMessage(statusMessage));
+ }
+ }
+ clear();
+ }
+
+ /**
+ * Convert a StatusMessage to a FacesMessage
+ */
+ private FacesMessage toFacesMessage(StatusMessage statusMessage)
+ {
+ if (statusMessage.getSummary() != null && statusMessage.getSummary().length() > 0)
+ {
+ return new FacesMessage(toFacesSeverity(statusMessage.getSeverity()), statusMessage.getSummary(), statusMessage.getDetail());
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ /**
+ * Convert a StatusMessage.Severity to a FacesMessage.Severity
+ */
+ private javax.faces.application.FacesMessage.Severity toFacesSeverity(org.jboss.seam.international.StatusMessage.Severity severity)
+ {
+ switch (severity)
+ {
+ case ERROR:
+ return FacesMessage.SEVERITY_ERROR;
+ case FATAL:
+ return FacesMessage.SEVERITY_FATAL;
+ case WARN:
+ return FacesMessage.SEVERITY_WARN;
+ case INFO:
+ default:
+ return FacesMessage.SEVERITY_INFO;
+ }
+ }
+
+ /**
+ * Calculate the JSF client ID from the provided widget ID.
+ * TODO It would be great if this could do suffix maching.
+ */
+ private String getClientId(String targetId, FacesContext facesContext)
+ {
+ if (isAbsoluteClientIdPresent(targetId, facesContext))
+ {
+ return targetId;
+ }
+ else
+ {
+ return getClientId(facesContext.getViewRoot(), targetId, facesContext);
+ }
+ }
+
+ private boolean isAbsoluteClientIdPresent(String targetId, FacesContext facesContext)
+ {
+ return facesContext.getViewRoot().findComponent(":" + targetId) != null;
+ }
+
+ private String getClientId(UIComponent component, String targetLocalId, FacesContext facesContext)
+ {
+ String currentLocalId = component.getId();
+ if (currentLocalId != null && currentLocalId.equals(targetLocalId))
+ {
+ return component.getClientId(facesContext);
+ }
+ else
+ {
+ Iterator iter = component.getFacetsAndChildren();
+ while (iter.hasNext())
+ {
+ UIComponent child = (UIComponent) iter.next();
+ String clientId = getClientId(child, targetLocalId, facesContext);
+ if (clientId != null)
+ {
+ return clientId;
+ }
+ }
+ return null;
+ }
+ }
+}
15 years, 9 months
Seam SVN: r10703 - modules/trunk/faces.
by seam-commits@lists.jboss.org
Author: dan.j.allen
Date: 2009-04-29 02:00:15 -0400 (Wed, 29 Apr 2009)
New Revision: 10703
Modified:
modules/trunk/faces/pom.xml
Log:
add surefire config
add seam-mock and validation-api test dependencies
Modified: modules/trunk/faces/pom.xml
===================================================================
--- modules/trunk/faces/pom.xml 2009-04-29 05:59:55 UTC (rev 10702)
+++ modules/trunk/faces/pom.xml 2009-04-29 06:00:15 UTC (rev 10703)
@@ -14,10 +14,39 @@
<version>3.0.0-SNAPSHOT</version>
<name>Seam Faces Module</name>
+ <build>
+ <plugins>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <suiteXmlFiles>
+ <suiteXmlFile>src/test/resources/test-suite.xml</suiteXmlFile>
+ </suiteXmlFiles>
+ </configuration>
+ </plugin>
+
+ </plugins>
+ </build>
+
<dependencies>
<dependency>
<groupId>${seam.groupId}</groupId>
+ <artifactId>seam-mock</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <!-- doesn't inherit from seam-international because scope is provided -->
+ <dependency>
+ <groupId>javax.validation</groupId>
+ <artifactId>validation-api</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>${seam.groupId}</groupId>
<artifactId>seam-el</artifactId>
</dependency>
15 years, 9 months
Seam SVN: r10702 - modules/trunk/version-matrix.
by seam-commits@lists.jboss.org
Author: dan.j.allen
Date: 2009-04-29 01:59:55 -0400 (Wed, 29 Apr 2009)
New Revision: 10702
Modified:
modules/trunk/version-matrix/pom.xml
Log:
add seam-mock module to dependency versioning
Modified: modules/trunk/version-matrix/pom.xml
===================================================================
--- modules/trunk/version-matrix/pom.xml 2009-04-29 05:58:43 UTC (rev 10701)
+++ modules/trunk/version-matrix/pom.xml 2009-04-29 05:59:55 UTC (rev 10702)
@@ -260,6 +260,12 @@
<artifactId>seam-international</artifactId>
<version>${seam.version}</version>
</dependency>
+
+ <dependency>
+ <groupId>${seam.groupId}</groupId>
+ <artifactId>seam-mock</artifactId>
+ <version>${seam.version}</version>
+ </dependency>
<dependency>
<groupId>${seam.groupId}</groupId>
15 years, 9 months
Seam SVN: r10701 - modules/trunk/faces/src/main/java/org/jboss/seam/faces.
by seam-commits@lists.jboss.org
Author: dan.j.allen
Date: 2009-04-29 01:58:43 -0400 (Wed, 29 Apr 2009)
New Revision: 10701
Added:
modules/trunk/faces/src/main/java/org/jboss/seam/faces/Faces.java
Log:
add deployment type annotation for specializing
Added: modules/trunk/faces/src/main/java/org/jboss/seam/faces/Faces.java
===================================================================
--- modules/trunk/faces/src/main/java/org/jboss/seam/faces/Faces.java (rev 0)
+++ modules/trunk/faces/src/main/java/org/jboss/seam/faces/Faces.java 2009-04-29 05:58:43 UTC (rev 10701)
@@ -0,0 +1,27 @@
+package org.jboss.seam.faces;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+import javax.inject.DeploymentType;
+
+/**
+ * A binding type used on a JSF-specific implementation
+ * that specializes Seam's standard implementation.
+ *
+ * @author Dan Allen
+ */
+@Target( { TYPE, METHOD, PARAMETER, FIELD })
+@Retention(RUNTIME)
+@Documented
+@DeploymentType
+@Inherited
+public @interface Faces {
+}
15 years, 9 months
Seam SVN: r10700 - in modules/trunk/faces/src/main: resources/META-INF and 1 other directory.
by seam-commits@lists.jboss.org
Author: dan.j.allen
Date: 2009-04-29 01:58:25 -0400 (Wed, 29 Apr 2009)
New Revision: 10700
Added:
modules/trunk/faces/src/main/java/org/jboss/seam/faces/lifecycle/TransferStatusMessagesListener.java
Removed:
modules/trunk/faces/src/main/java/org/jboss/seam/faces/lifecycle/StatusMessagesTranslator.java
Modified:
modules/trunk/faces/src/main/resources/META-INF/faces-config.xml
Log:
go back to using XML to configure preRenderViewEvent listener
rename component
support both absolute and relative client ids for messages
Deleted: modules/trunk/faces/src/main/java/org/jboss/seam/faces/lifecycle/StatusMessagesTranslator.java
===================================================================
--- modules/trunk/faces/src/main/java/org/jboss/seam/faces/lifecycle/StatusMessagesTranslator.java 2009-04-29 05:57:37 UTC (rev 10699)
+++ modules/trunk/faces/src/main/java/org/jboss/seam/faces/lifecycle/StatusMessagesTranslator.java 2009-04-29 05:58:25 UTC (rev 10700)
@@ -1,42 +0,0 @@
-package org.jboss.seam.faces.lifecycle;
-
-import java.beans.Introspector;
-import javax.faces.component.UIViewRoot;
-import javax.faces.context.FacesContext;
-import javax.faces.event.AbortProcessingException;
-import javax.faces.event.ComponentSystemEvent;
-import javax.faces.event.ComponentSystemEventListener;
-import javax.faces.event.ListenerFor;
-import javax.faces.event.PreRenderViewEvent;
-import org.jboss.seam.faces.FacesMessages;
-import org.jboss.seam.international.StatusMessages;
-
-/**
- * A {@link ComponentSystemEventListener} that observes the PreRenderViewEvent and
- * transposes Seam StatusMessage objects into FacesMessage objects
- * and stores them in the FacesContext.
- *
- * @author Dan Allen
- */
-@ListenerFor(systemEventClass = PreRenderViewEvent.class, sourceClass = UIViewRoot.class)
-public class StatusMessagesTranslator implements ComponentSystemEventListener {
-
- public void processEvent(ComponentSystemEvent preRenderViewEvent) throws AbortProcessingException
- {
- FacesContext context = FacesContext.getCurrentInstance();
- FacesMessages facesMessages = (FacesMessages) context.getApplication().getExpressionFactory()
- .createValueExpression(getBeanExpression(StatusMessages.class), FacesMessages.class).getValue(context.getELContext());
- facesMessages.beforeRenderView();
- }
-
- private String getBeanName(Class beanClass)
- {
- return beanClass.getPackage() + "." + Introspector.decapitalize(beanClass.getSimpleName());
- }
-
- private String getBeanExpression(Class beanClass)
- {
- return "#{" + getBeanName(beanClass) + "}";
- }
-
-}
Copied: modules/trunk/faces/src/main/java/org/jboss/seam/faces/lifecycle/TransferStatusMessagesListener.java (from rev 10677, modules/trunk/faces/src/main/java/org/jboss/seam/faces/lifecycle/StatusMessagesTranslator.java)
===================================================================
--- modules/trunk/faces/src/main/java/org/jboss/seam/faces/lifecycle/TransferStatusMessagesListener.java (rev 0)
+++ modules/trunk/faces/src/main/java/org/jboss/seam/faces/lifecycle/TransferStatusMessagesListener.java 2009-04-29 05:58:25 UTC (rev 10700)
@@ -0,0 +1,44 @@
+package org.jboss.seam.faces.lifecycle;
+
+import java.beans.Introspector;
+import javax.faces.context.FacesContext;
+import javax.faces.event.ComponentSystemEventListener;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
+import org.jboss.seam.el.Expressions;
+import org.jboss.seam.faces.FacesExpressions;
+import org.jboss.seam.international.StatusMessages;
+
+/**
+ * A {@link SystemEventListener} that observes the PreRenderViewEvent and
+ * transposes Seam StatusMessage objects into FacesMessage objects
+ * and transfers them to the FacesContext.
+ *
+ * @author Dan Allen
+ */
+//@ListenerFor(systemEventClass = PreRenderViewEvent.class, sourceClass = UIViewRoot.class)
+public class TransferStatusMessagesListener implements SystemEventListener
+{
+ public void processEvent(SystemEvent preRenderViewEvent)
+ {
+ Expressions expressions = new FacesExpressions();
+ // FIXME this is kind of ugly...reminds me of the bad old days of JSF managed beans
+ StatusMessages statusMessages = (StatusMessages) expressions.createValueExpression(getBeanExpression(StatusMessages.class)).getValue();
+ statusMessages.onBeforeRender();
+ }
+
+ public boolean isListenerForSource(Object source)
+ {
+ return true;
+ }
+
+ private String getBeanName(Class beanClass)
+ {
+ return beanClass.getPackage().getName() + "." + Introspector.decapitalize(beanClass.getSimpleName());
+ }
+
+ private String getBeanExpression(Class beanClass)
+ {
+ return "#{" + getBeanName(beanClass) + "}";
+ }
+}
Modified: modules/trunk/faces/src/main/resources/META-INF/faces-config.xml
===================================================================
--- modules/trunk/faces/src/main/resources/META-INF/faces-config.xml 2009-04-29 05:57:37 UTC (rev 10699)
+++ modules/trunk/faces/src/main/resources/META-INF/faces-config.xml 2009-04-29 05:58:25 UTC (rev 10700)
@@ -16,6 +16,10 @@
<application>
<el-resolver>org.jboss.seam.el.SeamELResolver</el-resolver>
<el-resolver>org.jboss.seam.faces.el.SeamFacesELResolver</el-resolver>
+ <system-event-listener>
+ <system-event-class>javax.faces.event.PreRenderViewEvent</system-event-class>
+ <system-event-listener-class>org.jboss.seam.faces.lifecycle.TransferStatusMessagesListener</system-event-listener-class>
+ </system-event-listener>
</application>
</faces-config>
15 years, 9 months
Seam SVN: r10699 - modules/trunk/faces/src/main/java/org/jboss/seam/faces.
by seam-commits@lists.jboss.org
Author: dan.j.allen
Date: 2009-04-29 01:57:37 -0400 (Wed, 29 Apr 2009)
New Revision: 10699
Modified:
modules/trunk/faces/src/main/java/org/jboss/seam/faces/FacesResourceLoader.java
Log:
disable broken injections
Modified: modules/trunk/faces/src/main/java/org/jboss/seam/faces/FacesResourceLoader.java
===================================================================
--- modules/trunk/faces/src/main/java/org/jboss/seam/faces/FacesResourceLoader.java 2009-04-29 05:57:05 UTC (rev 10698)
+++ modules/trunk/faces/src/main/java/org/jboss/seam/faces/FacesResourceLoader.java 2009-04-29 05:57:37 UTC (rev 10699)
@@ -18,7 +18,8 @@
public class FacesResourceLoader extends ResourceLoader
{
private static final LogProvider log = Logging.getLogProvider(FacesResourceLoader.class);
- @Current
+
+ //@Current
FacesContext facesContext;
@Override
15 years, 9 months
Seam SVN: r10698 - modules/trunk/faces/src/main/resources/META-INF.
by seam-commits@lists.jboss.org
Author: dan.j.allen
Date: 2009-04-29 01:57:05 -0400 (Wed, 29 Apr 2009)
New Revision: 10698
Added:
modules/trunk/faces/src/main/resources/META-INF/beans.xml
Log:
add beans.xml
Added: modules/trunk/faces/src/main/resources/META-INF/beans.xml
===================================================================
15 years, 9 months
Seam SVN: r10697 - in modules/trunk/international/src: test/java/org/jboss/seam/international and 1 other directory.
by seam-commits@lists.jboss.org
Author: dan.j.allen
Date: 2009-04-29 01:56:28 -0400 (Wed, 29 Apr 2009)
New Revision: 10697
Modified:
modules/trunk/international/src/main/java/org/jboss/seam/international/Interpolator.java
modules/trunk/international/src/main/java/org/jboss/seam/international/LocaleProducer.java
modules/trunk/international/src/main/java/org/jboss/seam/international/MessagesProducer.java
modules/trunk/international/src/main/java/org/jboss/seam/international/ResourceLoader.java
modules/trunk/international/src/main/java/org/jboss/seam/international/StatusMessages.java
modules/trunk/international/src/test/java/org/jboss/seam/international/StatusMessagesTest.java
Log:
remove unnecessary @Dependent scope declaration
disable broken injections
refactor test
Modified: modules/trunk/international/src/main/java/org/jboss/seam/international/Interpolator.java
===================================================================
--- modules/trunk/international/src/main/java/org/jboss/seam/international/Interpolator.java 2009-04-29 05:55:12 UTC (rev 10696)
+++ modules/trunk/international/src/main/java/org/jboss/seam/international/Interpolator.java 2009-04-29 05:56:28 UTC (rev 10697)
@@ -6,7 +6,6 @@
import java.util.Locale;
import java.util.StringTokenizer;
-import javax.context.Dependent;
import javax.inject.Current;
import org.jboss.webbeans.log.LogProvider;
import org.jboss.webbeans.log.Logging;
@@ -16,9 +15,7 @@
*
* @author Gavin King
*/
-public
-@Dependent
-class Interpolator implements Serializable
+public class Interpolator implements Serializable
{
private static final LogProvider log = Logging.getLogProvider(Interpolator.class);
Modified: modules/trunk/international/src/main/java/org/jboss/seam/international/LocaleProducer.java
===================================================================
--- modules/trunk/international/src/main/java/org/jboss/seam/international/LocaleProducer.java 2009-04-29 05:55:12 UTC (rev 10696)
+++ modules/trunk/international/src/main/java/org/jboss/seam/international/LocaleProducer.java 2009-04-29 05:56:28 UTC (rev 10697)
@@ -1,6 +1,6 @@
package org.jboss.seam.international;
-import javax.context.Dependent;
+import javax.annotation.Named;
import javax.inject.Produces;
/**
@@ -10,14 +10,13 @@
*
* @author Gavin King
*/
-public
-@Dependent
-class LocaleProducer
+public class LocaleProducer
{
public
@Produces
+ @Named("org.jboss.seam.international.locale")
java.util.Locale getLocale()
{
return java.util.Locale.getDefault();
}
-}
\ No newline at end of file
+}
Modified: modules/trunk/international/src/main/java/org/jboss/seam/international/MessagesProducer.java
===================================================================
--- modules/trunk/international/src/main/java/org/jboss/seam/international/MessagesProducer.java 2009-04-29 05:55:12 UTC (rev 10696)
+++ modules/trunk/international/src/main/java/org/jboss/seam/international/MessagesProducer.java 2009-04-29 05:56:28 UTC (rev 10697)
@@ -27,7 +27,8 @@
{
//TODO: now we have ELResolver, it doesn't *have* to be a Map...
- @Current ResourceBundle bundle;
+ //@Current
+ ResourceBundle bundle;
protected Map createMap()
{
Modified: modules/trunk/international/src/main/java/org/jboss/seam/international/ResourceLoader.java
===================================================================
--- modules/trunk/international/src/main/java/org/jboss/seam/international/ResourceLoader.java 2009-04-29 05:55:12 UTC (rev 10696)
+++ modules/trunk/international/src/main/java/org/jboss/seam/international/ResourceLoader.java 2009-04-29 05:56:28 UTC (rev 10697)
@@ -5,7 +5,6 @@
import java.net.URL;
import java.util.Locale;
import java.util.MissingResourceException;
-import javax.context.Dependent;
import javax.inject.Current;
import javax.inject.manager.Manager;
import org.jboss.webbeans.log.LogProvider;
@@ -16,14 +15,14 @@
*
* @author Gavin King
*/
-@Dependent
public class ResourceLoader
{
private static final LogProvider log = Logging.getLogProvider(ResourceLoader.class);
private String[] bundleNames = { "messages" };
- @Current Manager manager;
+ //@Current
+ Manager manager;
/**
* The configurable list of delegate resource bundle names
Modified: modules/trunk/international/src/main/java/org/jboss/seam/international/StatusMessages.java
===================================================================
--- modules/trunk/international/src/main/java/org/jboss/seam/international/StatusMessages.java 2009-04-29 05:55:12 UTC (rev 10696)
+++ modules/trunk/international/src/main/java/org/jboss/seam/international/StatusMessages.java 2009-04-29 05:56:28 UTC (rev 10697)
@@ -50,7 +50,8 @@
*
* <p>Seam will interpolate value expressions and positional parameters in
* message templates. Interpolation is deferred until just before the next view
- * in the conversation is rendered.</p>
+ * in the conversation is rendered, allowing value expressions to resolve to
+ * the final state of the action as with the rest of the view.</p>
*
* @author Pete Muir
* @author Dan Allen
Modified: modules/trunk/international/src/test/java/org/jboss/seam/international/StatusMessagesTest.java
===================================================================
--- modules/trunk/international/src/test/java/org/jboss/seam/international/StatusMessagesTest.java 2009-04-29 05:55:12 UTC (rev 10696)
+++ modules/trunk/international/src/test/java/org/jboss/seam/international/StatusMessagesTest.java 2009-04-29 05:56:28 UTC (rev 10697)
@@ -26,8 +26,7 @@
public void beforeMethod()
{
super.beforeMethod();
- ConversationContext.instance().setBeanStore(new ConcurrentHashMapBeanStore());
- ConversationContext.instance().setActive(true);
+ activateConversationContext();
}
@Test
@@ -43,6 +42,12 @@
// TODO test loading messages from resource bundle when resource bundle is ready
+ private void activateConversationContext()
+ {
+ ConversationContext.instance().setBeanStore(new ConcurrentHashMapBeanStore());
+ ConversationContext.instance().setActive(true);
+ }
+
private StatusMessages getStatusMessagesInstance()
{
return getCurrentManager().getInstanceByType(StatusMessages.class);
15 years, 9 months
Seam SVN: r10696 - modules/trunk/international/src/test/resources.
by seam-commits@lists.jboss.org
Author: dan.j.allen
Date: 2009-04-29 01:55:12 -0400 (Wed, 29 Apr 2009)
New Revision: 10696
Modified:
modules/trunk/international/src/test/resources/test-suite.xml
Log:
rename suite for consistency
Modified: modules/trunk/international/src/test/resources/test-suite.xml
===================================================================
--- modules/trunk/international/src/test/resources/test-suite.xml 2009-04-29 05:55:00 UTC (rev 10695)
+++ modules/trunk/international/src/test/resources/test-suite.xml 2009-04-29 05:55:12 UTC (rev 10696)
@@ -1,6 +1,6 @@
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
-<suite name="Seam International Module Unit Tests" verbose="1">
- <test name="Seam International Module Unit Tests">
+<suite name="Seam International Module Test Suite" verbose="1">
+ <test name="Seam International Module - Unit Tests">
<!--
<method-selectors>
<method-selector>
15 years, 9 months