FAQ
Hi Dennis,

I have a problem with the handling of ManagedBeans in
VariableResolverImpl. According to the spec the VariableResolverImpl
should only delegate to the application elresolver now. The managed
beans where resolved in a new ManagedBeanResolver. We already have an
implementation for this so I ask you to implement this into the
ManagedBeanResolver.

I currently change VariableResolverImpl and ElResolver setup according
to the spec.

Cheers,
Mathias

2007/2/24, dennisbyrne@apache.org <dennisbyrne@apache.org>:
Author: dennisbyrne
Date: Fri Feb 23 22:59:15 2007
New Revision: 511230

URL: http://svn.apache.org/viewvc?view=rev&rev=511230
Log:
implemented sectoin 5.4.1 as far as @PostConstruct is concerned, @PreDestroy is still left
refactored ManagedBeanBuilder and both Resolvers

Added:
myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/config/annotation/
myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/config/annotation/AnnotatedManagedBeanHandler.java
myfaces/core/branches/jsf12/impl/src/test/java/org/apache/myfaces/config/annotation/
myfaces/core/branches/jsf12/impl/src/test/java/org/apache/myfaces/config/annotation/AnnotatedExceptionManagedBeanHandlerTestCase.java
myfaces/core/branches/jsf12/impl/src/test/java/org/apache/myfaces/config/annotation/AnnotatedManagedBean.java
myfaces/core/branches/jsf12/impl/src/test/java/org/apache/myfaces/config/annotation/AnnotatedManagedBeanHandlerTestCase.java
myfaces/core/branches/jsf12/impl/src/test/java/org/apache/myfaces/config/annotation/AnnotatedRuntimeExceptionManagedBeanHandlerTestCase.java
Modified:
myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/config/ManagedBeanBuilder.java
myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/el/VariableResolverImpl.java
myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/el/unified/resolver/ManagedBeanResolver.java

Modified: myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/config/ManagedBeanBuilder.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/config/ManagedBeanBuilder.java?view=diff&rev=511230&r1=511229&r2=511230
==============================================================================
--- myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/config/ManagedBeanBuilder.java (original)
+++ myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/config/ManagedBeanBuilder.java Fri Feb 23 22:59:15 2007
@@ -15,23 +15,34 @@
*/
package org.apache.myfaces.config;

+import java.lang.reflect.Array;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
import javax.el.ELContext;
+import javax.el.ELException;
import javax.el.ELResolver;
import javax.el.ExpressionFactory;
import javax.el.ValueExpression;
-import org.apache.myfaces.config.element.*;
-import org.apache.commons.beanutils.PropertyUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
import javax.faces.FacesException;
import javax.faces.application.Application;
-import javax.faces.context.FacesContext;
import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
import javax.faces.webapp.UIComponentTag;
-import java.util.*;
-import java.lang.reflect.Array;
-import javax.el.ELException;
+
+import org.apache.commons.beanutils.PropertyUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.myfaces.config.annotation.AnnotatedManagedBeanHandler;
+import org.apache.myfaces.config.element.ListEntries;
+import org.apache.myfaces.config.element.ListEntry;
+import org.apache.myfaces.config.element.ManagedBean;
+import org.apache.myfaces.config.element.ManagedProperty;
+import org.apache.myfaces.config.element.MapEntries;
+import org.apache.myfaces.config.element.MapEntry;
import org.apache.myfaces.shared_impl.util.ClassUtils;


@@ -45,12 +56,22 @@
{
private static Log log = LogFactory.getLog(ManagedBeanBuilder.class);
private RuntimeConfig _runtimeConfig;
-
+ public final static String REQUEST = "request";
+ public final static String APPLICATION = "application";
+ public final static String SESSION = "session";
+ public final static String NONE = "none";

public Object buildManagedBean(FacesContext facesContext, ManagedBean beanConfiguration) throws FacesException
{
- Object bean = ClassUtils.newInstance(beanConfiguration.getManagedBeanClassName());
+ final Object bean = ClassUtils.newInstance(beanConfiguration.getManagedBeanClassName());

+ final AnnotatedManagedBeanHandler handler = new AnnotatedManagedBeanHandler(bean, beanConfiguration);
+
+ final boolean threwUnchecked = handler.run();
+
+ if(threwUnchecked)
+ return null;
+
switch (beanConfiguration.getInitMode())
{
case ManagedBean.INIT_MODE_PROPERTIES:
@@ -240,18 +261,18 @@
String valueScope = getScope(facesContext, expression);

// if the target scope is 'none' value scope has to be 'none', too
- if (targetScope == null || targetScope.equalsIgnoreCase("none")) {
- if (valueScope != null && !(valueScope.equalsIgnoreCase("none"))) {
+ if (targetScope == null || targetScope.equalsIgnoreCase(NONE)) {
+ if (valueScope != null && !(valueScope.equalsIgnoreCase(NONE))) {
return false;
}
return true;
}

// 'application' scope can reference 'application' and 'none'
- if (targetScope.equalsIgnoreCase("application")) {
+ if (targetScope.equalsIgnoreCase(APPLICATION)) {
if (valueScope != null) {
- if (valueScope.equalsIgnoreCase("request") ||
- valueScope.equalsIgnoreCase("session")) {
+ if (valueScope.equalsIgnoreCase(REQUEST) ||
+ valueScope.equalsIgnoreCase(SESSION)) {
return false;
}
}
@@ -259,9 +280,9 @@
}

// 'session' scope can reference 'session', 'application', and 'none' but not 'request'
- if (targetScope.equalsIgnoreCase("session")) {
+ if (targetScope.equalsIgnoreCase(SESSION)) {
if (valueScope != null) {
- if (valueScope.equalsIgnoreCase("request")) {
+ if (valueScope.equalsIgnoreCase(REQUEST)) {
return false;
}
}
@@ -269,7 +290,7 @@
}

// 'request' scope can reference any value scope
- if (targetScope.equalsIgnoreCase("request")) {
+ if (targetScope.equalsIgnoreCase(REQUEST)) {
return true;
}
}
@@ -282,60 +303,59 @@
String beanName = getFirstSegment(expression);
ExternalContext externalContext = facesContext.getExternalContext();

- // check scope objects
+
+ // check scope objects
if (beanName.equalsIgnoreCase("requestScope")) {
- return "request";
+ return REQUEST;
}
- if (beanName.equalsIgnoreCase("sessionScope")) {
- return "session";
+ if (beanName.equalsIgnoreCase("sessionScope")) {
+ return SESSION;
}
- if (beanName.equalsIgnoreCase("applicationScope")) {
- return "application";
+ if (beanName.equalsIgnoreCase("applicationScope")) {
+ return APPLICATION;
}

// check implicit objects
if (beanName.equalsIgnoreCase("cookie")) {
- return "request";
+ return REQUEST;
}
if (beanName.equalsIgnoreCase("facesContext")) {
- return "request";
+ return REQUEST;
}

if (beanName.equalsIgnoreCase("header")) {
- return "request";
+ return REQUEST;
}
if (beanName.equalsIgnoreCase("headerValues")) {
- return "request";
+ return REQUEST;
}

if (beanName.equalsIgnoreCase("initParam")) {
- return "application";
+ return APPLICATION;
}
if (beanName.equalsIgnoreCase("param")) {
- return "request";
+ return REQUEST;
}
if (beanName.equalsIgnoreCase("paramValues")) {
- return "request";
+ return REQUEST;
}
if (beanName.equalsIgnoreCase("view")) {
- return "request";
+ return REQUEST;
}

-
// not found so far - check all scopes
if (externalContext.getRequestMap().get(beanName) != null) {
- return "request";
+ return REQUEST;
}
if (externalContext.getSessionMap().get(beanName) != null) {
- return "session";
+ return SESSION;
}
if (externalContext.getApplicationMap().get(beanName) != null) {
- return "application";
+ return APPLICATION;
}

//not found - check mangaged bean config

-
ManagedBean mbc = getRuntimeConfig(facesContext).getManagedBean(beanName);

if (mbc != null) {
@@ -344,9 +364,6 @@

return null;
}
-
-
-

/**
* Extract the first expression segment, that is the substring up to the first '.' or '['

Added: myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/config/annotation/AnnotatedManagedBeanHandler.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/config/annotation/AnnotatedManagedBeanHandler.java?view=auto&rev=511230
==============================================================================
--- myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/config/annotation/AnnotatedManagedBeanHandler.java (added)
+++ myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/config/annotation/AnnotatedManagedBeanHandler.java Fri Feb 23 22:59:15 2007
@@ -0,0 +1,136 @@
+package org.apache.myfaces.config.annotation;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+import javax.faces.FacesException;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.myfaces.config.ManagedBeanBuilder;
+import org.apache.myfaces.config.element.ManagedBean;
+
+/**
+ * @see JSF spec 1.2, section 5.4
+ * @warn Do not import javax.annotation.* in this class
+ * @author Dennis Byrne
+ */
+
+public class AnnotatedManagedBeanHandler {
+
+ private static Log log = LogFactory.getLog(AnnotatedManagedBeanHandler.class);
+
+ private Object managedBean;
+
+ private ManagedBean beanConfiguration;
+
+ public AnnotatedManagedBeanHandler(Object managedBean, ManagedBean beanConfiguration) {
+
+ if (managedBean == null) {
+ throw new NullPointerException("Object managedBean");
+ }
+
+ if (beanConfiguration == null) {
+ throw new NullPointerException("ManagedBean beanConfiguration");
+ }
+
+ this.managedBean = managedBean;
+ this.beanConfiguration = beanConfiguration;
+
+ }
+
+ public boolean run() {
+
+ boolean threwUnchecked = false;
+
+ if (ManagedBeanBuilder.NONE.equals(beanConfiguration.getManagedBeanScope())) {
+ ; // this only applies to a, s, and r scope beans
+ } else {
+ threwUnchecked = run(managedBean.getClass().getMethods());
+ }
+
+ return threwUnchecked;
+ }
+
+ private boolean run(Method[] methods) {
+
+ boolean threwUnchecked = false;
+
+ for (Method method : methods)
+ if (run(method)) {
+ threwUnchecked = true;
+ break;
+ }// break if we invoke method ? or invoke all w/ annoation?
+
+ return threwUnchecked;
+ }
+
+ private boolean run(Method method) {
+
+ Annotation[] annotations = method.getAnnotations();
+ boolean threwUnchecked = false;
+
+ for (Annotation annotation : annotations) {
+ if (isPostConstruct(annotation)) {
+ if (run(annotation, method)) {
+ threwUnchecked = true;
+ break; // spec says not to call anymore methods on this
+ }
+ }
+ }
+
+ return threwUnchecked;
+ }
+
+ private boolean run(Annotation annotation, Method method) {
+
+ boolean threwUnchecked = true; // start w/ pessimism
+
+ try {
+
+ method.invoke(managedBean, null);
+
+ threwUnchecked = false;
+
+ } catch (InvocationTargetException ite) { // catch most specific first
+
+ final Throwable cause = ite.getCause();
+
+ handleException(method, cause == null ? ite : cause);
+
+ } catch (Exception e) {
+
+ handleException(method, e);
+ }
+
+ return threwUnchecked;
+ }
+
+ private void handleException(Method method, Throwable e) {
+ final String genericLoggingMessage = getGenericLoggingMessage(method, e);
+
+ if (e instanceof RuntimeException) // why did they make RE extend E ?
+ {
+ log.error(genericLoggingMessage + " MyFaces cannot " + " put the bean in "
+ + beanConfiguration.getManagedBeanScope() + " scope " + " ... execution continues. ");
+ } else {
+ throw new FacesException(genericLoggingMessage + " The spec is ambivalent on checked exceptions.");
+ }
+ }
+
+ private String getGenericLoggingMessage(Method method, Throwable e) {
+ return "When invoking " + method.getName() + " on a managed bean '" + beanConfiguration.getManagedBeanName()
+ + "'," + " an exception " + e.getClass() + "{" + e.getMessage() + "} was thrown. "
+ + " See section 5.4.1 of the JSF specification.";
+ }
+
+ private boolean isPostConstruct(Annotation annotation) {
+
+ final Class<? extends Annotation> annotationType = annotation.annotationType();
+ final String name = annotationType.getName();
+ // use the literal String because we want to avoid ClassDefNotFoundError
+ return "javax.annotation.PostConstruct".equals(name);
+
+ }
+}

Modified: myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/el/VariableResolverImpl.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/el/VariableResolverImpl.java?view=diff&rev=511230&r1=511229&r2=511230
==============================================================================
--- myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/el/VariableResolverImpl.java (original)
+++ myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/el/VariableResolverImpl.java Fri Feb 23 22:59:15 2007
@@ -29,6 +29,7 @@
import org.apache.myfaces.config.ManagedBeanBuilder;
import org.apache.myfaces.config.RuntimeConfig;
import org.apache.myfaces.config.element.ManagedBean;
+import org.apache.myfaces.el.unified.resolver.ManagedBeanResolver.Scope;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -313,25 +314,7 @@
beansUnderConstruction.remove(managedBeanName);
}

- // put in scope
- String scopeKey = mbc.getManagedBeanScope();
-
- // find the scope handler object
- Scope scope = (Scope) _scopes.get(scopeKey);
- if (scope == null)
- {
- log.error("Managed bean '" + name + "' has illegal scope: "
- + scopeKey);
- }
- else
- {
- scope.put(externalContext, name, obj);
- }
-
- if(obj==null && log.isDebugEnabled())
- {
- log.debug("Variable '" + name + "' could not be resolved.");
- }
+ putInScope(mbc, externalContext, obj);

return obj;
}
@@ -344,6 +327,28 @@
return null;
}

+ private void putInScope(ManagedBean managedBean, ExternalContext extContext, Object obj) {
+
+ final String managedBeanName = managedBean.getManagedBeanName();
+
+ if (obj == null) {
+ if (log.isDebugEnabled())
+ log.debug("Variable '" + managedBeanName + "' could not be resolved.");
+ } else {
+
+ String scopeKey = managedBean.getManagedBeanScope();
+
+ // find the scope handler object
+ Scope scope = (Scope) _scopes.get(scopeKey);
+ if (scope == null) {
+ log.error("Managed bean '" + managedBeanName + "' has illegal scope: " + scopeKey);
+ } else {
+ scope.put(extContext, managedBeanName, obj);
+ }
+ }
+
+ }
+
protected RuntimeConfig getRuntimeConfig(FacesContext facesContext)
{
if (_runtimeConfig == null)

Modified: myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/el/unified/resolver/ManagedBeanResolver.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/el/unified/resolver/ManagedBeanResolver.java?view=diff&rev=511230&r1=511229&r2=511230
==============================================================================
--- myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/el/unified/resolver/ManagedBeanResolver.java (original)
+++ myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/el/unified/resolver/ManagedBeanResolver.java Fri Feb 23 22:59:15 2007
@@ -192,22 +192,30 @@
beansUnderConstruction.remove(managedBeanName);
}

- // put in scope
- String scopeKey = managedBean.getManagedBeanScope();
+ putInScope(managedBean, extContext, obj);
+ }
+
+ private void putInScope(ManagedBean managedBean, ExternalContext extContext, Object obj) {

- // find the scope handler object
- Scope scope = (Scope) _scopes.get(scopeKey);
- if (scope == null) {
- log.error("Managed bean '" + managedBeanName + "' has illegal scope: "
- + scopeKey);
- } else {
- scope.put(extContext, managedBeanName, obj);
- }
+ final String managedBeanName = managedBean.getManagedBeanName();
+
+ if (obj == null) {
+ if (log.isDebugEnabled())
+ log.debug("Variable '" + managedBeanName + "' could not be resolved.");
+ } else {

- if(obj==null && log.isDebugEnabled()) {
- log.debug("Variable '" + managedBeanName + "' could not be resolved.");
- }
- }
+ String scopeKey = managedBean.getManagedBeanScope();
+
+ // find the scope handler object
+ Scope scope = (Scope) _scopes.get(scopeKey);
+ if (scope == null) {
+ log.error("Managed bean '" + managedBeanName + "' has illegal scope: " + scopeKey);
+ } else {
+ scope.put(extContext, managedBeanName, obj);
+ }
+ }
+
+ }

// get the FacesContext from the ELContext
private FacesContext facesContext(ELContext context) {

Added: myfaces/core/branches/jsf12/impl/src/test/java/org/apache/myfaces/config/annotation/AnnotatedExceptionManagedBeanHandlerTestCase.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/impl/src/test/java/org/apache/myfaces/config/annotation/AnnotatedExceptionManagedBeanHandlerTestCase.java?view=auto&rev=511230
==============================================================================
--- myfaces/core/branches/jsf12/impl/src/test/java/org/apache/myfaces/config/annotation/AnnotatedExceptionManagedBeanHandlerTestCase.java (added)
+++ myfaces/core/branches/jsf12/impl/src/test/java/org/apache/myfaces/config/annotation/AnnotatedExceptionManagedBeanHandlerTestCase.java Fri Feb 23 22:59:15 2007
@@ -0,0 +1,88 @@
+package org.apache.myfaces.config.annotation;
+
+import org.apache.myfaces.config.ManagedBeanBuilder;
+import org.apache.myfaces.config.annotation.AnnotatedManagedBeanHandler;
+import org.apache.myfaces.config.impl.digester.elements.ManagedBean;
+
+import junit.framework.TestCase;
+
+/**
+ * @author Dennis Byrne
+ */
+
+public class AnnotatedExceptionManagedBeanHandlerTestCase extends TestCase {
+
+ protected AnnotatedManagedBean managedBean;
+
+ protected AnnotatedManagedBeanHandler handler;
+
+ protected ManagedBean managedBeanConf;
+
+ public void setUp() {
+ managedBean = new AnnotatedManagedBean(new Exception());
+ managedBeanConf = new ManagedBean();
+ handler = new AnnotatedManagedBeanHandler(managedBean, managedBeanConf);
+ }
+
+ public void testShouldNotBlowUpForNoneScope() {
+
+ managedBeanConf.setScope(ManagedBeanBuilder.NONE);
+
+ boolean exceptionThrown = false;
+
+ try {
+ handler.run();
+ } catch (Exception e) {
+ exceptionThrown = true;
+ }
+
+ assertFalse(managedBean.isPostConstructCalled());
+ assertFalse(exceptionThrown);
+ }
+
+ public void testShouldBlowUpForRequestScope() {
+
+ managedBeanConf.setScope(ManagedBeanBuilder.REQUEST);
+
+ boolean exceptionThrown = false;
+
+ try {
+ handler.run();
+ } catch (Exception e) {
+ exceptionThrown = true;
+ }
+
+ assertTrue(exceptionThrown);
+ }
+
+ public void testShouldBlowUpForSessionScope() {
+
+ managedBeanConf.setScope(ManagedBeanBuilder.SESSION);
+
+ boolean exceptionThrown = false;
+
+ try {
+ handler.run();
+ } catch (Exception e) {
+ exceptionThrown = true;
+ }
+
+ assertTrue(exceptionThrown);
+ }
+
+ public void testShouldBlowUpForApplicationScope() {
+
+ managedBeanConf.setScope(ManagedBeanBuilder.APPLICATION);
+
+ boolean exceptionThrown = false;
+
+ try {
+ handler.run();
+ } catch (Exception e) {
+ exceptionThrown = true;
+ }
+
+ assertTrue(exceptionThrown);
+ }
+
+}

Added: myfaces/core/branches/jsf12/impl/src/test/java/org/apache/myfaces/config/annotation/AnnotatedManagedBean.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/impl/src/test/java/org/apache/myfaces/config/annotation/AnnotatedManagedBean.java?view=auto&rev=511230
==============================================================================
--- myfaces/core/branches/jsf12/impl/src/test/java/org/apache/myfaces/config/annotation/AnnotatedManagedBean.java (added)
+++ myfaces/core/branches/jsf12/impl/src/test/java/org/apache/myfaces/config/annotation/AnnotatedManagedBean.java Fri Feb 23 22:59:15 2007
@@ -0,0 +1,46 @@
+package org.apache.myfaces.config.annotation;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+
+/**
+ * @author Dennis Byrne
+ */
+
+class AnnotatedManagedBean {
+
+ private boolean postConstructCalled = false; // using a stub for a mock
+
+ private boolean preDestroyCalled = false; // using a stob for a mock here
+
+ private Throwable throwable;
+
+ public AnnotatedManagedBean(Throwable throwable) {
+ this.throwable = throwable;
+ }
+
+ @PostConstruct
+ public void postConstruct() throws Throwable {
+ postConstructCalled = true;
+
+ if (throwable != null)
+ throw throwable;
+ }
+
+ @PreDestroy
+ public void preDestroy() throws Throwable {
+ preDestroyCalled = true;
+
+ if (throwable != null)
+ throw throwable;
+ }
+
+ boolean isPostConstructCalled() {
+ return postConstructCalled;
+ }
+
+ boolean isPreDestroyCalled() {
+ return preDestroyCalled;
+ }
+
+}

Added: myfaces/core/branches/jsf12/impl/src/test/java/org/apache/myfaces/config/annotation/AnnotatedManagedBeanHandlerTestCase.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/impl/src/test/java/org/apache/myfaces/config/annotation/AnnotatedManagedBeanHandlerTestCase.java?view=auto&rev=511230
==============================================================================
--- myfaces/core/branches/jsf12/impl/src/test/java/org/apache/myfaces/config/annotation/AnnotatedManagedBeanHandlerTestCase.java (added)
+++ myfaces/core/branches/jsf12/impl/src/test/java/org/apache/myfaces/config/annotation/AnnotatedManagedBeanHandlerTestCase.java Fri Feb 23 22:59:15 2007
@@ -0,0 +1,61 @@
+package org.apache.myfaces.config.annotation;
+
+import junit.framework.TestCase;
+
+import org.apache.myfaces.config.ManagedBeanBuilder;
+import org.apache.myfaces.config.annotation.AnnotatedManagedBeanHandler;
+import org.apache.myfaces.config.impl.digester.elements.ManagedBean;
+
+/**
+ * @author Dennis Byrne
+ */
+
+public class AnnotatedManagedBeanHandlerTestCase extends TestCase {
+
+ protected AnnotatedManagedBean managedBean;
+ protected AnnotatedManagedBeanHandler handler;
+ protected ManagedBean managedBeanConf;
+
+ public void setUp() {
+ managedBean = new AnnotatedManagedBean(null);
+ managedBeanConf = new ManagedBean();
+ handler = new AnnotatedManagedBeanHandler(managedBean, managedBeanConf);
+ }
+
+ public void testShouldNotInvokeForNoneScope() {
+
+ managedBeanConf.setScope(ManagedBeanBuilder.NONE);
+ boolean threwUnchecked = handler.run();
+
+ assertFalse(threwUnchecked);
+ assertFalse(managedBean.isPostConstructCalled());
+ }
+
+ public void testShouldInvokeForRequestScope() {
+
+ managedBeanConf.setScope(ManagedBeanBuilder.REQUEST);
+ boolean threwUnchecked = handler.run();
+
+ assertFalse(threwUnchecked);
+ assertTrue(managedBean.isPostConstructCalled());
+ }
+
+ public void testShouldInvokeForSessionScope() {
+
+ managedBeanConf.setScope(ManagedBeanBuilder.SESSION);
+ boolean threwUnchecked = handler.run();
+
+ assertFalse(threwUnchecked);
+ assertTrue(managedBean.isPostConstructCalled());
+ }
+
+ public void testShouldInvokeForApplicationScope() {
+
+ managedBeanConf.setScope(ManagedBeanBuilder.APPLICATION);
+ boolean threwUnchecked = handler.run();
+
+ assertFalse(threwUnchecked);
+ assertTrue(managedBean.isPostConstructCalled());
+ }
+
+}

Added: myfaces/core/branches/jsf12/impl/src/test/java/org/apache/myfaces/config/annotation/AnnotatedRuntimeExceptionManagedBeanHandlerTestCase.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/impl/src/test/java/org/apache/myfaces/config/annotation/AnnotatedRuntimeExceptionManagedBeanHandlerTestCase.java?view=auto&rev=511230
==============================================================================
--- myfaces/core/branches/jsf12/impl/src/test/java/org/apache/myfaces/config/annotation/AnnotatedRuntimeExceptionManagedBeanHandlerTestCase.java (added)
+++ myfaces/core/branches/jsf12/impl/src/test/java/org/apache/myfaces/config/annotation/AnnotatedRuntimeExceptionManagedBeanHandlerTestCase.java Fri Feb 23 22:59:15 2007
@@ -0,0 +1,61 @@
+package org.apache.myfaces.config.annotation;
+
+import junit.framework.TestCase;
+
+import org.apache.myfaces.config.ManagedBeanBuilder;
+import org.apache.myfaces.config.annotation.AnnotatedManagedBeanHandler;
+import org.apache.myfaces.config.impl.digester.elements.ManagedBean;
+
+/**
+ * @author Dennis Byrne
+ */
+
+public class AnnotatedRuntimeExceptionManagedBeanHandlerTestCase extends TestCase {
+
+ protected AnnotatedManagedBean managedBean;
+ protected AnnotatedManagedBeanHandler handler;
+ protected ManagedBean managedBeanConf;
+
+ public void setUp() {
+ managedBean = new AnnotatedManagedBean(new RuntimeException());
+ managedBeanConf = new ManagedBean();
+ handler = new AnnotatedManagedBeanHandler(managedBean, managedBeanConf);
+ }
+
+ public void testShouldNotInvokeForNoneScope() {
+
+ managedBeanConf.setScope(ManagedBeanBuilder.NONE);
+ boolean threwUnchecked = handler.run();
+
+ assertFalse(threwUnchecked);
+ assertFalse(managedBean.isPostConstructCalled());
+ }
+
+ public void testShouldInvokeForRequestScope() {
+
+ managedBeanConf.setScope(ManagedBeanBuilder.REQUEST);
+ boolean threwUnchecked = handler.run();
+
+ assertTrue(threwUnchecked);
+ assertTrue(managedBean.isPostConstructCalled());
+ }
+
+ public void testShouldInvokeForSessionScope() {
+
+ managedBeanConf.setScope(ManagedBeanBuilder.SESSION);
+ boolean threwUnchecked = handler.run();
+
+ assertTrue(threwUnchecked);
+ assertTrue(managedBean.isPostConstructCalled());
+ }
+
+ public void testShouldInvokeForApplicationScope() {
+
+ managedBeanConf.setScope(ManagedBeanBuilder.APPLICATION);
+ boolean threwUnchecked = handler.run();
+
+ assertTrue(threwUnchecked);
+ assertTrue(managedBean.isPostConstructCalled());
+ }
+
+}


--
Mathias

Search Discussions

Discussion Posts

Follow ups

Related Discussions

Discussion Navigation
viewthread | post
posts ‹ prev | 1 of 5 | next ›
Discussion Overview
groupdev @
categoriesmyfaces
postedFeb 24, '07 at 3:25p
activeFeb 24, '07 at 4:44p
posts5
users2
websitemyfaces.apache.org

People

Translate

site design / logo © 2019 Grokbase