Author: pete.muir(a)jboss.org
Date: 2009-08-21 07:59:26 -0400 (Fri, 21 Aug 2009)
New Revision: 3577
Added:
ri/trunk/impl/src/main/java/org/jboss/webbeans/jsf/JsfHelper.java
Removed:
ri/trunk/impl/src/main/java/org/jboss/webbeans/el/WebBeansELResolver.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/jsf/PhaseHelper.java
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/bootstrap/Animal.java
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/bootstrap/Cow.java
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/bootstrap/InitializedObserverWhichUsesApplicationContext.java
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/bootstrap/InitializedObserverWhichUsesRequestContext.java
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/bootstrap/Tuna.java
Modified:
ri/trunk/api/src/main/java/javax/enterprise/inject/spi/BeanManager.java
ri/trunk/impl/pom.xml
ri/trunk/impl/src/main/java/org/jboss/webbeans/BeanManagerImpl.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/CurrentManager.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/RIBean.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/builtin/AbstractBuiltInBean.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/AfterBeanDiscoveryImpl.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployer.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeforeBeanDiscoveryImpl.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/WebBeansBootstrap.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/context/ContextLifecycle.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/jsf/ConversationAwareViewHandler.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/jsf/FacesUrlTransformer.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/jsf/WebBeansApplication.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/jsf/WebBeansApplicationFactory.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/jsf/WebBeansPhaseListener.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/jsp/JspInitialization.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/resources/ManagerObjectFactory.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/servlet/ConversationPropagationFilter.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/servlet/ServletLifecycle.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/servlet/WebBeansListener.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/util/serviceProvider/ServiceLoader.java
ri/trunk/porting-package/src/main/java/org/jboss/webbeans/tck/ELImpl.java
ri/trunk/porting-package/src/main/java/org/jboss/webbeans/tck/ManagersImpl.java
ri/trunk/spi/pom.xml
ri/trunk/spi/src/main/java/org/jboss/webbeans/bootstrap/api/Environments.java
ri/trunk/spi/src/main/java/org/jboss/webbeans/bootstrap/spi/Deployment.java
ri/trunk/spi/src/test/java/org/jboss/webbeans/bootstrap/api/test/BootstrapTest.java
ri/trunk/tests/pom.xml
ri/trunk/tests/src/main/java/org/jboss/webbeans/mock/MockEELifecycle.java
ri/trunk/tests/src/main/java/org/jboss/webbeans/mock/MockServletLifecycle.java
ri/trunk/tests/src/main/java/org/jboss/webbeans/mock/el/EL.java
ri/trunk/tests/src/main/java/org/jboss/webbeans/test/AbstractWebBeansTest.java
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/bootstrap/BootstrapTest.java
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/bootstrap/InitializedObserver.java
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/definition/ELResolverTest.java
Log:
switch to using deployment structure, still some hacks outside JBoss AS
Modified: ri/trunk/api/src/main/java/javax/enterprise/inject/spi/BeanManager.java
===================================================================
--- ri/trunk/api/src/main/java/javax/enterprise/inject/spi/BeanManager.java 2009-08-21
11:58:40 UTC (rev 3576)
+++ ri/trunk/api/src/main/java/javax/enterprise/inject/spi/BeanManager.java 2009-08-21
11:59:26 UTC (rev 3577)
@@ -300,14 +300,4 @@
@Deprecated
public void addBean(Bean<?> bean);
- /**
- * Associate a custom Context with a scope.
- *
- * This method may be called at any time in the applications lifecycle.
- *
- * @param context the context to register
- */
- @Deprecated
- public void addContext(Context context);
-
}
Modified: ri/trunk/impl/pom.xml
===================================================================
--- ri/trunk/impl/pom.xml 2009-08-21 11:58:40 UTC (rev 3576)
+++ ri/trunk/impl/pom.xml 2009-08-21 11:59:26 UTC (rev 3577)
@@ -76,6 +76,12 @@
</dependency>
<dependency>
+ <groupId>javax.validation</groupId>
+ <artifactId>validation-api</artifactId>
+ <optional>true</optional>
+ </dependency>
+
+ <dependency>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
<optional>true</optional>
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/BeanManagerImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/BeanManagerImpl.java 2009-08-21
11:58:40 UTC (rev 3576)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/BeanManagerImpl.java 2009-08-21
11:59:26 UTC (rev 3577)
@@ -294,6 +294,32 @@
new ArrayList<Class<?>>(),
new AtomicInteger());
}
+
+ /**
+ * Create a new, root, manager
+ *
+ * @param serviceRegistry
+ * @return
+ */
+ public static BeanManagerImpl newManager(BeanManagerImpl rootManager)
+ {
+ return new BeanManagerImpl(
+ rootManager.getServices(),
+ new CopyOnWriteArrayList<Bean<?>>(),
+ new CopyOnWriteArrayList<DecoratorBean<?>>(),
+ new CopyOnWriteArrayList<ObserverMethod<?,?>>(),
+ new CopyOnWriteArrayList<String>(),
+ rootManager.getNewEnterpriseBeanMap(),
+ new ConcurrentHashMap<String, RIBean<?>>(),
+ rootManager.getClientProxyProvider(),
+ rootManager.getContexts(),
+ new CopyOnWriteArraySet<CurrentActivity>(),
+ new HashMap<Contextual<?>, Contextual<?>>(),
+ new ArrayList<Class<?>>(),
+ new ArrayList<Class<? extends Annotation>>(),
+ new ArrayList<Class<?>>(),
+ rootManager.getIds());
+ }
/**
* Create a new child manager
@@ -301,7 +327,7 @@
* @param parentManager
* @return
*/
- public static BeanManagerImpl newChildManager(BeanManagerImpl parentManager)
+ public static BeanManagerImpl newChildActivityManager(BeanManagerImpl parentManager)
{
List<Bean<?>> beans = new CopyOnWriteArrayList<Bean<?>>();
beans.addAll(parentManager.getBeans());
@@ -942,6 +968,7 @@
* @return An instance of the bean
*
*/
+ @Deprecated
public <T> T getInstanceByType(Class<T> beanType, Annotation... bindings)
{
Set<Bean<?>> beans = getBeans(beanType, bindings);
@@ -1053,7 +1080,7 @@
public BeanManagerImpl createActivity()
{
- BeanManagerImpl childActivity = newChildManager(this);
+ BeanManagerImpl childActivity = newChildActivityManager(this);
childActivities.add(childActivity);
CurrentManager.add(childActivity);
return childActivity;
@@ -1081,7 +1108,7 @@
}
if (activeCurrentActivities.size() == 0)
{
- return CurrentManager.rootManager();
+ return this;
}
else if (activeCurrentActivities.size() == 1)
{
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/CurrentManager.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/CurrentManager.java 2009-08-21 11:58:40
UTC (rev 3576)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/CurrentManager.java 2009-08-21 11:59:26
UTC (rev 3577)
@@ -23,12 +23,15 @@
package org.jboss.webbeans;
import java.util.Map;
+import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap;
import javax.enterprise.inject.TypeLiteral;
+import org.jboss.webbeans.bootstrap.BeanDeployment;
import org.jboss.webbeans.bootstrap.api.Singleton;
import org.jboss.webbeans.bootstrap.api.SingletonProvider;
+import org.jboss.webbeans.bootstrap.spi.BeanDeploymentArchive;
/**
@@ -43,18 +46,28 @@
private static class IntegerMangerImplMap extends TypeLiteral<Map<Integer,
BeanManagerImpl>> {}
+ private static class BeanDeploymentArchiveManagerImplMap extends
TypeLiteral<Map<BeanDeploymentArchive, BeanManagerImpl>> {}
+
// The root manager instance
private static Singleton<BeanManagerImpl> rootManager =
SingletonProvider.instance().create(BeanManagerImpl.class);
+ // A map of managers keyed by ID, used for activities
+ private final static Singleton<Map<Integer, BeanManagerImpl>>
keyedManagers = SingletonProvider.instance().create(new
IntegerMangerImplMap().getRawType());
- private final static Singleton<Map<Integer, BeanManagerImpl>> managers =
SingletonProvider.instance().create(new IntegerMangerImplMap().getRawType());
+ private final static Singleton<Map<BeanDeploymentArchive,
BeanManagerImpl>> beanDeploymentArchives = SingletonProvider.instance().create(new
BeanDeploymentArchiveManagerImplMap().getRawType());
public static void clear()
{
- managers.get().clear();
+ keyedManagers.get().clear();
rootManager.clear();
- managers.clear();
+ keyedManagers.clear();
+ beanDeploymentArchives.clear();
}
+ public static boolean isAvailable()
+ {
+ return rootManager.isSet();
+ }
+
/**
* Gets the root manager
*
@@ -73,22 +86,37 @@
public static void setRootManager(BeanManagerImpl managerImpl)
{
rootManager.set(managerImpl);
- if (!managers.isSet())
+ if (!keyedManagers.isSet())
{
- managers.set(new ConcurrentHashMap<Integer, BeanManagerImpl>());
+ keyedManagers.set(new ConcurrentHashMap<Integer, BeanManagerImpl>());
}
- managers.get().put(managerImpl.getId(), managerImpl);
+ keyedManagers.get().put(managerImpl.getId(), managerImpl);
}
+ public static void setBeanDeploymentArchives(Map<BeanDeploymentArchive,
BeanDeployment> beanDeployments)
+ {
+ beanDeploymentArchives.set(new ConcurrentHashMap<BeanDeploymentArchive,
BeanManagerImpl>());
+ for (Entry<BeanDeploymentArchive, BeanDeployment> entry :
beanDeployments.entrySet())
+ {
+ beanDeploymentArchives.get().put(entry.getKey(),
entry.getValue().getBeanManager());
+ add(entry.getValue().getBeanManager());
+ }
+ }
+
+ public static Map<BeanDeploymentArchive, BeanManagerImpl>
getBeanDeploymentArchives()
+ {
+ return beanDeploymentArchives.get();
+ }
+
public static BeanManagerImpl get(Integer key)
{
- return managers.get().get(key);
+ return keyedManagers.get().get(key);
}
public static Integer add(BeanManagerImpl manager)
{
Integer id = manager.getId();
- managers.get().put(id, manager);
+ keyedManagers.get().put(id, manager);
return id;
}
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/RIBean.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/RIBean.java 2009-08-21 11:58:40
UTC (rev 3576)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/RIBean.java 2009-08-21 11:59:26
UTC (rev 3577)
@@ -49,7 +49,8 @@
protected static String createId(String prefix)
{
- AtomicInteger i = ids.putIfAbsent(prefix, new AtomicInteger());
+ ids.putIfAbsent(prefix, new AtomicInteger());
+ int i = ids.get(prefix).getAndIncrement();
return prefix + "-" + i;
}
Modified:
ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/builtin/AbstractBuiltInBean.java
===================================================================
---
ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/builtin/AbstractBuiltInBean.java 2009-08-21
11:58:40 UTC (rev 3576)
+++
ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/builtin/AbstractBuiltInBean.java 2009-08-21
11:59:26 UTC (rev 3577)
@@ -42,7 +42,7 @@
protected AbstractBuiltInBean(BeanManagerImpl manager)
{
super(manager);
- this.id = getClass().getSimpleName();
+ this.id = createId(getClass().getSimpleName());
}
@Override
Modified:
ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/AfterBeanDiscoveryImpl.java
===================================================================
---
ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/AfterBeanDiscoveryImpl.java 2009-08-21
11:58:40 UTC (rev 3576)
+++
ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/AfterBeanDiscoveryImpl.java 2009-08-21
11:59:26 UTC (rev 3577)
@@ -19,6 +19,7 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import java.util.Map;
import javax.enterprise.context.spi.Context;
import javax.enterprise.inject.spi.AfterBeanDiscovery;
@@ -26,16 +27,22 @@
import javax.enterprise.inject.spi.ObserverMethod;
import org.jboss.webbeans.BeanManagerImpl;
+import org.jboss.webbeans.bootstrap.spi.BeanDeploymentArchive;
+import org.jboss.webbeans.bootstrap.spi.Deployment;
public class AfterBeanDiscoveryImpl implements AfterBeanDiscovery
{
private final List<Throwable> definitionErrors = new
ArrayList<Throwable>();
- private final BeanManagerImpl beanManager;
+ private final Map<BeanDeploymentArchive, BeanDeployment> beanDeployments;
+ private final BeanManagerImpl deploymentManager;
+ private final Deployment deployment;
- public AfterBeanDiscoveryImpl(BeanManagerImpl beanManager)
+ public AfterBeanDiscoveryImpl(BeanManagerImpl deploymentManager,
Map<BeanDeploymentArchive, BeanDeployment> beanDeployments)
{
- this.beanManager = beanManager;
+ this.beanDeployments = beanDeployments;
+ this.deploymentManager = deploymentManager;
+ this.deployment = deploymentManager.getServices().get(Deployment.class);
}
public void addDefinitionError(Throwable t)
@@ -50,17 +57,40 @@
public void addBean(Bean<?> bean)
{
- beanManager.addBean(bean);
+ getOrCreateBeanDeployment(bean.getBeanClass()).getBeanManager().addBean(bean);
}
public void addContext(Context context)
{
- beanManager.addContext(context);
+ deploymentManager.addContext(context);
}
public void addObserverMethod(ObserverMethod<?, ?> observerMethod)
{
- beanManager.addObserver(observerMethod);
+
getOrCreateBeanDeployment(observerMethod.getBean().getBeanClass()).getBeanManager().addObserver(observerMethod);
}
+
+ private BeanDeployment getOrCreateBeanDeployment(Class<?> clazz)
+ {
+ BeanDeploymentArchive beanDeploymentArchive =
deployment.loadBeanDeploymentArchive(clazz);
+ if (beanDeploymentArchive == null)
+ {
+ throw new IllegalStateException("Unable to find Bean Deployment Archive for
" + clazz);
+ }
+ else
+ {
+ if (beanDeployments.containsKey(beanDeploymentArchive))
+ {
+ return beanDeployments.get(beanDeploymentArchive);
+ }
+ else
+ {
+ BeanDeployment beanDeployment = new BeanDeployment(beanDeploymentArchive,
deploymentManager);
+ beanDeployments.put(beanDeploymentArchive, beanDeployment);
+ return beanDeployment;
+ }
+ }
+
+ }
}
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployer.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployer.java 2009-08-21
11:58:40 UTC (rev 3576)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployer.java 2009-08-21
11:59:26 UTC (rev 3577)
@@ -34,6 +34,8 @@
*/
public class BeanDeployer extends AbstractBeanDeployer
{
+
+ private final BeanManagerImpl deploymentManager;
private final Set<WBClass<?>> classes;
@@ -41,10 +43,11 @@
* @param manager
* @param ejbDescriptors
*/
- public BeanDeployer(BeanManagerImpl manager, EjbDescriptorCache ejbDescriptors)
+ public BeanDeployer(BeanManagerImpl manager, BeanManagerImpl deploymentManager,
EjbDescriptorCache ejbDescriptors)
{
super(manager, new BeanDeployerEnvironment(ejbDescriptors, manager));
this.classes = new HashSet<WBClass<?>>();
+ this.deploymentManager = deploymentManager;
}
public AbstractBeanDeployer addClass(Class<?> clazz)
@@ -53,7 +56,7 @@
if (!clazz.isAnnotation() && !clazz.isEnum())
{
ProcessAnnotatedTypeImpl<?> event = createProcessAnnotatedTypeEvent(clazz,
classTransformer);
- getManager().fireEvent(event);
+ deploymentManager.fireEvent(event);
if (!event.isVeto())
{
if (event.getAnnotatedType() instanceof WBClass<?>)
Modified:
ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeforeBeanDiscoveryImpl.java
===================================================================
---
ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeforeBeanDiscoveryImpl.java 2009-08-21
11:58:40 UTC (rev 3576)
+++
ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeforeBeanDiscoveryImpl.java 2009-08-21
11:59:26 UTC (rev 3577)
@@ -17,11 +17,14 @@
package org.jboss.webbeans.bootstrap;
import java.lang.annotation.Annotation;
+import java.util.Map;
import javax.enterprise.inject.spi.AnnotatedType;
import javax.enterprise.inject.spi.BeforeBeanDiscovery;
import org.jboss.webbeans.BeanManagerImpl;
+import org.jboss.webbeans.bootstrap.spi.BeanDeploymentArchive;
+import org.jboss.webbeans.bootstrap.spi.Deployment;
import org.jboss.webbeans.literal.BindingTypeLiteral;
import org.jboss.webbeans.literal.InterceptorBindingTypeLiteral;
import org.jboss.webbeans.literal.ScopeTypeLiteral;
@@ -31,12 +34,16 @@
{
private final TypeStore typeStore;
- private final BeanDeployer beanDeployer;
+ private final Map<BeanDeploymentArchive, BeanDeployment> beanDeployments;
+ private final BeanManagerImpl deploymentManager;
+ private final Deployment deployment;
- public BeforeBeanDiscoveryImpl(BeanManagerImpl manager, BeanDeployer beanDeployer)
+ public BeforeBeanDiscoveryImpl(BeanManagerImpl deploymentManager,
Map<BeanDeploymentArchive, BeanDeployment> beanDeployments)
{
- this.typeStore = manager.getServices().get(TypeStore.class);
- this.beanDeployer = beanDeployer;
+ this.typeStore = deploymentManager.getServices().get(TypeStore.class);
+ this.beanDeployments = beanDeployments;
+ this.deployment = deploymentManager.getServices().get(Deployment.class);
+ this.deploymentManager = deploymentManager;
}
public void addBindingType(Class<? extends Annotation> bindingType)
@@ -63,7 +70,25 @@
public void addAnnotatedType(AnnotatedType<?> type)
{
- beanDeployer.addClass(type);
+ BeanDeploymentArchive beanDeploymentArchive =
deployment.loadBeanDeploymentArchive(type.getJavaClass());
+ if (beanDeploymentArchive == null)
+ {
+ throw new IllegalStateException("Unable to find Bean Deployment Archive for
" + type);
+ }
+ else
+ {
+ if (beanDeployments.containsKey(beanDeploymentArchive))
+ {
+ beanDeployments.get(beanDeploymentArchive).getBeanDeployer().addClass(type);
+ }
+ else
+ {
+ BeanDeployment beanDeployment = new BeanDeployment(beanDeploymentArchive,
deploymentManager);
+ beanDeployments.put(beanDeploymentArchive, beanDeployment);
+ }
+ }
}
+
+
}
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/WebBeansBootstrap.java
===================================================================
---
ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/WebBeansBootstrap.java 2009-08-21
11:58:40 UTC (rev 3576)
+++
ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/WebBeansBootstrap.java 2009-08-21
11:59:26 UTC (rev 3577)
@@ -16,10 +16,13 @@
*/
package org.jboss.webbeans.bootstrap;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.Map.Entry;
+import javax.enterprise.inject.spi.BeforeBeanDiscovery;
import javax.enterprise.inject.spi.BeforeShutdown;
import javax.enterprise.inject.spi.Extension;
@@ -29,16 +32,8 @@
import org.jboss.webbeans.DefinitionException;
import org.jboss.webbeans.DeploymentException;
import org.jboss.webbeans.Validator;
-import org.jboss.webbeans.bean.builtin.DefaultValidatorBean;
-import org.jboss.webbeans.bean.builtin.DefaultValidatorFactoryBean;
-import org.jboss.webbeans.bean.builtin.InjectionPointBean;
import org.jboss.webbeans.bean.builtin.ManagerBean;
-import org.jboss.webbeans.bean.builtin.PrincipalBean;
-import org.jboss.webbeans.bean.builtin.UserTransactionBean;
-import org.jboss.webbeans.bean.builtin.facade.EventBean;
-import org.jboss.webbeans.bean.builtin.facade.InstanceBean;
import org.jboss.webbeans.bootstrap.api.Bootstrap;
-import org.jboss.webbeans.bootstrap.api.Environments;
import org.jboss.webbeans.bootstrap.api.helpers.AbstractBootstrap;
import org.jboss.webbeans.bootstrap.api.helpers.ServiceRegistries;
import org.jboss.webbeans.bootstrap.spi.BeanDeploymentArchive;
@@ -51,15 +46,8 @@
import org.jboss.webbeans.context.SessionContext;
import org.jboss.webbeans.context.api.BeanStore;
import org.jboss.webbeans.context.api.helpers.ConcurrentHashMapBeanStore;
-import org.jboss.webbeans.conversation.ConversationImpl;
-import org.jboss.webbeans.conversation.JavaSEConversationTerminator;
-import org.jboss.webbeans.conversation.NumericConversationIdGenerator;
-import org.jboss.webbeans.conversation.ServletConversationManager;
import org.jboss.webbeans.ejb.EJBApiAbstraction;
-import org.jboss.webbeans.ejb.EjbDescriptorCache;
-import org.jboss.webbeans.ejb.spi.EjbDescriptor;
import org.jboss.webbeans.ejb.spi.EjbServices;
-import org.jboss.webbeans.introspector.WBClass;
import org.jboss.webbeans.jsf.JsfApiAbstraction;
import org.jboss.webbeans.log.Log;
import org.jboss.webbeans.log.Logging;
@@ -71,13 +59,9 @@
import org.jboss.webbeans.resources.DefaultResourceLoader;
import org.jboss.webbeans.resources.spi.ResourceLoader;
import org.jboss.webbeans.resources.spi.ResourceServices;
-import org.jboss.webbeans.security.spi.SecurityServices;
-import org.jboss.webbeans.servlet.HttpSessionManager;
import org.jboss.webbeans.servlet.ServletApiAbstraction;
import org.jboss.webbeans.transaction.spi.TransactionServices;
import org.jboss.webbeans.util.serviceProvider.ServiceLoader;
-import org.jboss.webbeans.validation.spi.ValidationServices;
-import org.jboss.webbeans.xml.BeansXmlParser;
/**
* Common bootstrapping functionality that is run at application startup and
@@ -88,67 +72,52 @@
public class WebBeansBootstrap extends AbstractBootstrap implements Bootstrap
{
- // Temporary workaround for reading from a Deployment
+ /**
+ *
+ * A Deployment visitor which can find the transitive closure of Bean
+ * Deployment Archives
+ *
+ * @author pmuir
+ *
+ */
private static class DeploymentVisitor
{
- private final Collection<Class<?>> beanClasses;
- private final Collection<URL> beansXmlUrls;
- private final Collection<EjbDescriptor<?>> ejbDescriptors;
- private final Deployment deployment;
+ private final BeanManagerImpl deploymentManager;
- public DeploymentVisitor(Deployment deployment)
+ public DeploymentVisitor(BeanManagerImpl deploymentManager)
{
- this.deployment = deployment;
- this.beanClasses = new ArrayList<Class<?>>();
- this.beansXmlUrls = new ArrayList<URL>();
- this.ejbDescriptors = new ArrayList<EjbDescriptor<?>>();
+ this.deploymentManager = deploymentManager;
}
- public DeploymentVisitor visit()
+ public Map<BeanDeploymentArchive, BeanDeployment> visit()
{
- for (BeanDeploymentArchive archvive : deployment.getBeanDeploymentArchives())
+ Set<BeanDeploymentArchive> seenBeanDeploymentArchives = new
HashSet<BeanDeploymentArchive>();
+ Map<BeanDeploymentArchive, BeanDeployment>
managerAwareBeanDeploymentArchives = new HashMap<BeanDeploymentArchive,
BeanDeployment>();
+ for (BeanDeploymentArchive archvive :
deploymentManager.getServices().get(Deployment.class).getBeanDeploymentArchives())
{
- visit(archvive);
+ visit(archvive, managerAwareBeanDeploymentArchives,
seenBeanDeploymentArchives);
}
- return this;
+ return managerAwareBeanDeploymentArchives;
}
- private void visit(BeanDeploymentArchive beanDeploymentArchive)
+ private BeanDeployment visit(BeanDeploymentArchive beanDeploymentArchive,
Map<BeanDeploymentArchive, BeanDeployment> managerAwareBeanDeploymentArchives,
Set<BeanDeploymentArchive> seenBeanDeploymentArchives)
{
- for (Class<?> clazz : beanDeploymentArchive.getBeanClasses())
- {
- beanClasses.add(clazz);
- }
- for (URL url : beanDeploymentArchive.getBeansXml())
- {
- beansXmlUrls.add(url);
- }
- for (EjbDescriptor<?> ejbDescriptor : beanDeploymentArchive.getEjbs())
- {
- ejbDescriptors.add(ejbDescriptor);
- }
+ BeanDeployment parent = new BeanDeployment(beanDeploymentArchive,
deploymentManager);
+ managerAwareBeanDeploymentArchives.put(beanDeploymentArchive, parent);
+ seenBeanDeploymentArchives.add(beanDeploymentArchive);
for (BeanDeploymentArchive archive :
beanDeploymentArchive.getBeanDeploymentArchives())
{
- visit(archive);
+ // Cut any circularties
+ if (!seenBeanDeploymentArchives.contains(archive))
+ {
+ BeanDeployment child = visit(archive, managerAwareBeanDeploymentArchives,
seenBeanDeploymentArchives);
+ parent.getBeanManager().addAccessibleBeanManager(child.getBeanManager());
+ }
}
+ return parent;
}
- public Iterable<Class<?>> getBeanClasses()
- {
- return beanClasses;
- }
-
- public Iterable<URL> getBeansXmlUrls()
- {
- return beansXmlUrls;
- }
-
- public Iterable<EjbDescriptor<?>> getEjbDescriptors()
- {
- return ejbDescriptors;
- }
-
}
// The log provider
@@ -160,8 +129,8 @@
}
// The Web Beans manager
- private BeanManagerImpl manager;
- private BeanDeployer beanDeployer;
+ private BeanManagerImpl deploymentManager;
+ private Map<BeanDeploymentArchive, BeanDeployment> beanDeployments;
private DeploymentVisitor deploymentVisitor;
private BeanStore requestBeanStore;
@@ -194,10 +163,10 @@
}
addImplementationServices();
createContexts();
- this.manager =
BeanManagerImpl.newRootManager(ServiceRegistries.unmodifiableServiceRegistry(getServices()));
- CurrentManager.setRootManager(manager);
+ this.deploymentManager =
BeanManagerImpl.newRootManager(ServiceRegistries.unmodifiableServiceRegistry(getServices()));
+ CurrentManager.setRootManager(deploymentManager);
initializeContexts();
- this.deploymentVisitor = new
DeploymentVisitor(getServices().get(Deployment.class));
+ this.deploymentVisitor = new DeploymentVisitor(deploymentManager);
return this;
}
}
@@ -220,14 +189,14 @@
public BeanManagerImpl getManager()
{
- return manager;
+ return deploymentManager;
}
public Bootstrap startInitialization()
{
synchronized (this)
{
- if (manager == null)
+ if (deploymentManager == null)
{
throw new IllegalStateException("Manager has not been
initialized");
}
@@ -236,31 +205,21 @@
throw new IllegalStateException("No application context BeanStore
set");
}
- deploymentVisitor.visit();
-
+ // Set up the contexts before we start creating bean deployers
+ // This allows us to throw errors in the parser
beginApplication(getApplicationContext());
requestBeanStore = new ConcurrentHashMapBeanStore();
- beginDeploy(requestBeanStore);
- EjbDescriptorCache ejbDescriptors = new EjbDescriptorCache();
- if (getServices().contains(EjbServices.class))
- {
- // Must populate EJB cache first, as we need it to detect whether a
- // bean is an EJB!
- ejbDescriptors.addAll(deploymentVisitor.getEjbDescriptors());
- }
+ beanDeployments = deploymentVisitor.visit();
- // TODO Should use a separate event manager for sending bootstrap events
- ExtensionBeanDeployer extensionBeanDeployer = new
ExtensionBeanDeployer(manager);
+ ExtensionBeanDeployer extensionBeanDeployer = new
ExtensionBeanDeployer(deploymentManager);
extensionBeanDeployer.addExtensions(ServiceLoader.load(Extension.class));
extensionBeanDeployer.createBeans().deploy();
- // Parse beans.xml before main bean deployment
- parseBeansXml(deploymentVisitor.getBeansXmlUrls());
+ // Add the Deployment BeanManager Bean to the Deployment BeanManager
+ deploymentManager.addBean(new ManagerBean(deploymentManager));
- beanDeployer = new BeanDeployer(manager, ejbDescriptors);
-
- fireBeforeBeanDiscoveryEvent(beanDeployer);
+ fireBeforeBeanDiscoveryEvent();
}
return this;
}
@@ -269,33 +228,10 @@
{
synchronized (this)
{
- beanDeployer.addClasses(deploymentVisitor.getBeanClasses());
- beanDeployer.getEnvironment().addBean(new ManagerBean(manager));
- beanDeployer.getEnvironment().addBean(new InjectionPointBean(manager));
- beanDeployer.getEnvironment().addBean(new EventBean(manager));
- beanDeployer.getEnvironment().addBean(new InstanceBean(manager));
- if (!getEnvironment().equals(Environments.SE))
+ for (Entry<BeanDeploymentArchive, BeanDeployment> entry :
beanDeployments.entrySet())
{
- beanDeployer.addClass(ConversationImpl.class);
- beanDeployer.addClass(ServletConversationManager.class);
- beanDeployer.addClass(JavaSEConversationTerminator.class);
- beanDeployer.addClass(NumericConversationIdGenerator.class);
- beanDeployer.addClass(HttpSessionManager.class);
+ entry.getValue().deployBeans(getEnvironment());
}
- if (getServices().contains(TransactionServices.class))
- {
- beanDeployer.getEnvironment().addBean(new UserTransactionBean(manager));
- }
- if (getServices().contains(SecurityServices.class))
- {
- beanDeployer.getEnvironment().addBean(new PrincipalBean(manager));
- }
- if (getServices().contains(ValidationServices.class))
- {
- beanDeployer.getEnvironment().addBean(new DefaultValidatorBean(manager));
- beanDeployer.getEnvironment().addBean(new
DefaultValidatorFactoryBean(manager));
- }
- beanDeployer.createBeans().deploy();
fireAfterBeanDiscoveryEvent();
log.debug("Web Beans initialized. Validating beans.");
}
@@ -306,7 +242,10 @@
{
synchronized (this)
{
- getServices().get(Validator.class).validateDeployment(manager,
beanDeployer.getEnvironment());
+ for (Entry<BeanDeploymentArchive, BeanDeployment> entry :
beanDeployments.entrySet())
+ {
+
getServices().get(Validator.class).validateDeployment(entry.getValue().getBeanManager(),
entry.getValue().getBeanDeployer().getEnvironment());
+ }
fireAfterDeploymentValidationEvent();
}
return this;
@@ -316,40 +255,15 @@
{
synchronized (this)
{
- endDeploy(requestBeanStore);
+ // Register the managers so external requests can handle them
+ CurrentManager.setBeanDeploymentArchives(beanDeployments);
}
return this;
}
-
- private void parseBeansXml(Iterable<URL> urls)
- {
- BeansXmlParser parser = new BeansXmlParser(getServices().get(ResourceLoader.class),
urls);
- parser.parse();
-
- if (parser.getEnabledPolicyClasses() != null)
- {
- manager.setEnabledPolicyClasses(parser.getEnabledPolicyClasses());
- }
- if (parser.getEnabledPolicyStereotypes() != null)
- {
- manager.setEnabledPolicyStereotypes(parser.getEnabledPolicyStereotypes());
- }
- if (parser.getEnabledDecoratorClasses() != null)
- {
- manager.setEnabledDecoratorClasses(parser.getEnabledDecoratorClasses());
- }
- if (parser.getEnabledInterceptorClasses() != null)
- {
- manager.setEnabledInterceptorClasses(parser.getEnabledInterceptorClasses());
- }
- log.debug("Enabled policies: " + manager.getEnabledPolicyClasses() +
" " + manager.getEnabledPolicyStereotypes());
- log.debug("Enabled decorator types: " +
manager.getEnabledDecoratorClasses());
- log.debug("Enabled interceptor types: " +
manager.getEnabledInterceptorClasses());
- }
- private void fireBeforeBeanDiscoveryEvent(BeanDeployer beanDeployer)
+ private void fireBeforeBeanDiscoveryEvent()
{
- BeforeBeanDiscoveryImpl event = new BeforeBeanDiscoveryImpl(getManager(),
beanDeployer);
+ BeforeBeanDiscovery event = new BeforeBeanDiscoveryImpl(deploymentManager,
beanDeployments);
try
{
getManager().fireEvent(event);
@@ -375,10 +289,10 @@
private void fireAfterBeanDiscoveryEvent()
{
- AfterBeanDiscoveryImpl event = new AfterBeanDiscoveryImpl(getManager());
+ AfterBeanDiscoveryImpl event = new AfterBeanDiscoveryImpl(deploymentManager,
beanDeployments);
try
{
- manager.fireEvent(event);
+ deploymentManager.fireEvent(event);
}
catch (Exception e)
{
@@ -398,7 +312,7 @@
try
{
- manager.fireEvent(event);
+ deploymentManager.fireEvent(event);
}
catch (Exception e)
{
@@ -425,11 +339,11 @@
protected void initializeContexts()
{
- manager.addContext(getServices().get(DependentContext.class));
- manager.addContext(getServices().get(RequestContext.class));
- manager.addContext(getServices().get(ConversationContext.class));
- manager.addContext(getServices().get(SessionContext.class));
- manager.addContext(getServices().get(ApplicationContext.class));
+ deploymentManager.addContext(getServices().get(DependentContext.class));
+ deploymentManager.addContext(getServices().get(RequestContext.class));
+ deploymentManager.addContext(getServices().get(ConversationContext.class));
+ deploymentManager.addContext(getServices().get(SessionContext.class));
+ deploymentManager.addContext(getServices().get(ApplicationContext.class));
}
protected void createContexts()
@@ -445,25 +359,11 @@
protected void beginApplication(BeanStore applicationBeanStore)
{
log.trace("Starting application");
- ApplicationContext applicationContext =
manager.getServices().get(ApplicationContext.class);
+ ApplicationContext applicationContext =
deploymentManager.getServices().get(ApplicationContext.class);
applicationContext.setBeanStore(applicationBeanStore);
applicationContext.setActive(true);
}
-
- protected void beginDeploy(BeanStore requestBeanStore)
- {
- RequestContext requestContext =
CurrentManager.rootManager().getServices().get(RequestContext.class);
- requestContext.setBeanStore(requestBeanStore);
- requestContext.setActive(true);
- }
-
- protected void endDeploy(BeanStore requestBeanStore)
- {
- RequestContext requestContext =
CurrentManager.rootManager().getServices().get(RequestContext.class);
- requestContext.setBeanStore(null);
- requestContext.setActive(false);
- }
public void shutdown()
{
@@ -473,7 +373,7 @@
}
finally
{
- manager.shutdown();
+ deploymentManager.shutdown();
}
}
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/context/ContextLifecycle.java
===================================================================
---
ri/trunk/impl/src/main/java/org/jboss/webbeans/context/ContextLifecycle.java 2009-08-21
11:58:40 UTC (rev 3576)
+++
ri/trunk/impl/src/main/java/org/jboss/webbeans/context/ContextLifecycle.java 2009-08-21
11:59:26 UTC (rev 3577)
@@ -49,12 +49,11 @@
sessionContext.setActive(true);
}
- public void endSession(String id, BeanStore sessionBeanStore)
+ public void endSession(String id, BeanStore sessionBeanStore, ConversationManager
conversationManager)
{
log.trace("Ending session " + id);
SessionContext sessionContext =
CurrentManager.rootManager().getServices().get(SessionContext.class);
sessionContext.setActive(true);
- ConversationManager conversationManager =
CurrentManager.rootManager().getInstanceByType(ConversationManager.class);
conversationManager.destroyAllConversations();
sessionContext.destroy();
sessionContext.setBeanStore(null);
Deleted: ri/trunk/impl/src/main/java/org/jboss/webbeans/el/WebBeansELResolver.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/el/WebBeansELResolver.java 2009-08-21
11:58:40 UTC (rev 3576)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/el/WebBeansELResolver.java 2009-08-21
11:59:26 UTC (rev 3577)
@@ -1,34 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2008, Red Hat Middleware LLC, and individual contributors
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
http://www.apache.org/licenses/LICENSE-2.0
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jboss.webbeans.el;
-
-import javax.el.ELResolver;
-
-import org.jboss.webbeans.CurrentManager;
-import org.jboss.webbeans.util.el.ForwardingELResolver;
-
-public class WebBeansELResolver extends ForwardingELResolver
-{
-
- @Override
- protected ELResolver delegate()
- {
- // TODO look in the correct manager
- return CurrentManager.rootManager().getCurrent().getELResolver();
- }
-
-}
Modified:
ri/trunk/impl/src/main/java/org/jboss/webbeans/jsf/ConversationAwareViewHandler.java
===================================================================
---
ri/trunk/impl/src/main/java/org/jboss/webbeans/jsf/ConversationAwareViewHandler.java 2009-08-21
11:58:40 UTC (rev 3576)
+++
ri/trunk/impl/src/main/java/org/jboss/webbeans/jsf/ConversationAwareViewHandler.java 2009-08-21
11:59:26 UTC (rev 3577)
@@ -16,11 +16,12 @@
*/
package org.jboss.webbeans.jsf;
+import static org.jboss.webbeans.jsf.JsfHelper.getModuleBeanManager;
+
import javax.faces.application.ViewHandler;
import javax.faces.application.ViewHandlerWrapper;
import javax.faces.context.FacesContext;
-import org.jboss.webbeans.CurrentManager;
import org.jboss.webbeans.conversation.ConversationImpl;
/**
@@ -66,10 +67,10 @@
public String getActionURL(FacesContext context, String viewId)
{
String actionUrl = super.getActionURL(context, viewId);
- ConversationImpl conversation =
CurrentManager.rootManager().getInstanceByType(ConversationImpl.class);
+ ConversationImpl conversation =
getModuleBeanManager(context).getInstanceByType(ConversationImpl.class);
if (conversation.isLongRunning())
{
- return new
FacesUrlTransformer(actionUrl).appendConversationIdIfNecessary(conversation.getUnderlyingId()).getUrl();
+ return new FacesUrlTransformer(actionUrl,
context).appendConversationIdIfNecessary(conversation.getUnderlyingId()).getUrl();
}
else
{
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/jsf/FacesUrlTransformer.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/jsf/FacesUrlTransformer.java 2009-08-21
11:58:40 UTC (rev 3576)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/jsf/FacesUrlTransformer.java 2009-08-21
11:59:26 UTC (rev 3577)
@@ -16,10 +16,11 @@
*/
package org.jboss.webbeans.jsf;
+import static org.jboss.webbeans.jsf.JsfHelper.getModuleBeanManager;
+
import javax.enterprise.inject.AnnotationLiteral;
import javax.faces.context.FacesContext;
-import org.jboss.webbeans.CurrentManager;
import org.jboss.webbeans.conversation.ConversationIdName;
/**
@@ -39,16 +40,17 @@
private static final String PARAMETER_ASSIGNMENT_OPERATOR = "=";
private String url;
- private FacesContext context;
+ private final FacesContext context;
- public FacesUrlTransformer(String url)
+ public FacesUrlTransformer(String url, FacesContext facesContext)
{
this.url = url;
+ this.context = facesContext;
}
public FacesUrlTransformer appendConversationIdIfNecessary(String cid)
{
- String cidParamName = CurrentManager.rootManager().getInstanceByType(String.class,
new AnnotationLiteral<ConversationIdName>(){});
+ String cidParamName = getModuleBeanManager(context).getInstanceByType(String.class,
new AnnotationLiteral<ConversationIdName>(){});
int queryStringIndex = url.indexOf(QUERY_STRING_DELIMITER);
// if there is no query string or there is a query string but the cid param is
absent, then append it
if (queryStringIndex < 0 || url.indexOf(cidParamName +
PARAMETER_ASSIGNMENT_OPERATOR, queryStringIndex) < 0)
@@ -68,7 +70,7 @@
{
if (isUrlAbsolute())
{
- String requestPath = context().getExternalContext().getRequestContextPath();
+ String requestPath = context.getExternalContext().getRequestContextPath();
url = url.substring(url.indexOf(requestPath) + requestPath.length());
}
else
@@ -84,25 +86,15 @@
public FacesUrlTransformer toActionUrl()
{
- url = context().getApplication().getViewHandler().getActionURL(context(), url);
+ url = context.getApplication().getViewHandler().getActionURL(context, url);
return this;
}
public String encode()
{
- return context().getExternalContext().encodeActionURL(url);
+ return context.getExternalContext().encodeActionURL(url);
}
- private FacesContext context()
- {
- if (context == null)
- {
- context = FacesContext.getCurrentInstance();
- }
-
- return context;
- }
-
private boolean isUrlAbsolute()
{
// TODO: any API call to do this?
Copied: ri/trunk/impl/src/main/java/org/jboss/webbeans/jsf/JsfHelper.java (from rev 3567,
ri/trunk/impl/src/main/java/org/jboss/webbeans/jsf/PhaseHelper.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/jsf/JsfHelper.java
(rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/jsf/JsfHelper.java 2009-08-21 11:59:26
UTC (rev 3577)
@@ -0,0 +1,123 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jboss.webbeans.jsf;
+
+import javax.enterprise.inject.AnnotationLiteral;
+import javax.faces.application.Application;
+import javax.faces.context.FacesContext;
+import javax.servlet.http.HttpSession;
+
+import org.jboss.webbeans.BeanManagerImpl;
+import org.jboss.webbeans.CurrentManager;
+import org.jboss.webbeans.bootstrap.spi.BeanDeploymentArchive;
+import org.jboss.webbeans.conversation.ConversationIdName;
+import org.jboss.webbeans.log.LogProvider;
+import org.jboss.webbeans.log.Logging;
+import org.jboss.webbeans.persistence.spi.helpers.JSFServices;
+import org.jboss.webbeans.util.Reflections;
+
+/**
+ * Helper class for JSF related operations
+ *
+ * @author Nicklas Karlsson
+ * @author Dan Allen
+ */
+public class JsfHelper
+{
+ private static LogProvider log = Logging.getLogProvider(JsfHelper.class);
+
+ /**
+ * Checks if the current request is a JSF postback. The JsfApiAbstraction is
+ * consulted to determine if the JSF version is compatible with JSF 2.0. If
+ * so, the {@link FacesContext#isPostback()} convenience method is used
+ * (which is technically an optimized and safer implementation). Otherwise,
+ * the ResponseStateManager is consulted directly.
+ *
+ * @return true if this request is a JSF postback, false otherwise
+ */
+ public static boolean isPostback(FacesContext facesContext)
+ {
+ if
(CurrentManager.rootManager().getServices().get(JsfApiAbstraction.class).isApiVersionCompatibleWith(2.0))
+ {
+ return (Boolean) Reflections.invokeAndWrap("isPostback",
facesContext);
+ }
+ else
+ {
+ return
facesContext.getRenderKit().getResponseStateManager().isPostback(facesContext);
+ }
+ }
+
+ /**
+ * Gets the propagated conversation id parameter from the request
+ *
+ * @return The conversation id (or null if not found)
+ */
+ public static String getConversationIdFromRequest(FacesContext facesContext)
+ {
+ BeanManagerImpl moduleBeanManager = JsfHelper.getModuleBeanManager(facesContext);
+ String cidName = moduleBeanManager.getInstanceByType(String.class, new
AnnotationLiteral<ConversationIdName>(){});
+ String cid =
facesContext.getExternalContext().getRequestParameterMap().get(cidName);
+ log.trace("Found conversation id " + cid + " in request
parameter");
+ return cid;
+ }
+
+ /**
+ * Gets the propagated conversation id.
+ *
+ * @return The conversation id (or null if not found)
+ */
+ public static String getConversationId(FacesContext facesContext)
+ {
+ String cid = getConversationIdFromRequest(facesContext);
+ log.debug("Resuming conversation with id " + cid);
+ return cid;
+ }
+
+ /**
+ * Gets the HTTP session
+ *
+ * @return The session
+ */
+ public static HttpSession getHttpSession(FacesContext facesContext)
+ {
+ Object session = facesContext.getExternalContext().getSession(true);
+ if (session instanceof HttpSession)
+ {
+ return (HttpSession) session;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ public static BeanManagerImpl getModuleBeanManager(FacesContext facesContext)
+ {
+ return getModuleBeanManager(facesContext.getApplication());
+ }
+
+ public static BeanManagerImpl getModuleBeanManager(Application application)
+ {
+ if (application == null)
+ {
+ throw new IllegalArgumentException("Must provide the JSF
Application");
+ }
+ BeanDeploymentArchive beanDeploymentArchive =
CurrentManager.rootManager().getServices().get(JSFServices.class).getBeanDeploymentArchive(application);
+ return
CurrentManager.getBeanDeploymentArchives().get(beanDeploymentArchive).getCurrent();
+ }
+
+}
Property changes on: ri/trunk/impl/src/main/java/org/jboss/webbeans/jsf/JsfHelper.java
___________________________________________________________________
Name: svn:mergeinfo
+
Deleted: ri/trunk/impl/src/main/java/org/jboss/webbeans/jsf/PhaseHelper.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/jsf/PhaseHelper.java 2009-08-21
11:58:40 UTC (rev 3576)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/jsf/PhaseHelper.java 2009-08-21
11:59:26 UTC (rev 3577)
@@ -1,105 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2008, Red Hat Middleware LLC, and individual contributors
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
http://www.apache.org/licenses/LICENSE-2.0
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jboss.webbeans.jsf;
-
-import javax.enterprise.inject.AnnotationLiteral;
-import javax.faces.context.FacesContext;
-import javax.servlet.http.HttpSession;
-
-import org.jboss.webbeans.CurrentManager;
-import org.jboss.webbeans.conversation.ConversationIdName;
-import org.jboss.webbeans.log.LogProvider;
-import org.jboss.webbeans.log.Logging;
-import org.jboss.webbeans.util.Reflections;
-
-/**
- * Helper class for JSF related operations
- *
- * @author Nicklas Karlsson
- * @author Dan Allen
- */
-public class PhaseHelper
-{
- private static LogProvider log = Logging.getLogProvider(PhaseHelper.class);
-
- /**
- * Gets a FacesContext instance
- *
- * @return The current instance
- */
- private static FacesContext context()
- {
- return FacesContext.getCurrentInstance();
- }
-
- /**
- * Checks if the current request is a JSF postback. The JsfApiAbstraction is
- * consulted to determine if the JSF version is compatible with JSF 2.0. If
- * so, the {@link FacesContext#isPostback()} convenience method is used
- * (which is technically an optimized and safer implementation). Otherwise,
- * the ResponseStateManager is consulted directly.
- *
- * @return true if this request is a JSF postback, false otherwise
- */
- public static boolean isPostback()
- {
- if
(CurrentManager.rootManager().getServices().get(JsfApiAbstraction.class).isApiVersionCompatibleWith(2.0))
- {
- return (Boolean) Reflections.invokeAndWrap("isPostback", context());
- }
- else
- {
- return
context().getRenderKit().getResponseStateManager().isPostback(context());
- }
- }
-
- /**
- * Gets the propagated conversation id parameter from the request
- *
- * @return The conversation id (or null if not found)
- */
- public static String getConversationIdFromRequest()
- {
- String cidName = CurrentManager.rootManager().getInstanceByType(String.class, new
AnnotationLiteral<ConversationIdName>(){});
- String cid = context().getExternalContext().getRequestParameterMap().get(cidName);
- log.trace("Found conversation id " + cid + " in request
parameter");
- return cid;
- }
-
- /**
- * Gets the propagated conversation id.
- *
- * @return The conversation id (or null if not found)
- */
- public static String getConversationId()
- {
- String cid = getConversationIdFromRequest();
- log.debug("Resuming conversation with id " + cid);
- return cid;
- }
-
- /**
- * Gets the HTTP session
- *
- * @return The session
- */
- public static HttpSession getHttpSession()
- {
- return (HttpSession) context().getExternalContext().getSession(true);
- }
-
-}
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/jsf/WebBeansApplication.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/jsf/WebBeansApplication.java 2009-08-21
11:58:40 UTC (rev 3576)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/jsf/WebBeansApplication.java 2009-08-21
11:59:26 UTC (rev 3577)
@@ -23,8 +23,12 @@
import javax.el.ExpressionFactory;
import javax.faces.application.Application;
+import org.jboss.webbeans.CurrentManager;
+import org.jboss.webbeans.bootstrap.spi.BeanDeploymentArchive;
import org.jboss.webbeans.el.WebBeansELContextListener;
+import org.jboss.webbeans.el.WebBeansELResolverImpl;
import org.jboss.webbeans.el.WebBeansExpressionFactory;
+import org.jboss.webbeans.persistence.spi.helpers.JSFServices;
/**
* @author pmuir
@@ -43,6 +47,8 @@
this.application = application;
this.elContextListeners = new ArrayList<ELContextListener>();
this.elContextListeners.add(new WebBeansELContextListener());
+ BeanDeploymentArchive beanDeploymentArchive =
CurrentManager.rootManager().getServices().get(JSFServices.class).getBeanDeploymentArchive(application);
+ application.addELResolver(new
WebBeansELResolverImpl(CurrentManager.getBeanDeploymentArchives().get(beanDeploymentArchive).getCurrent()));
}
@Override
Modified:
ri/trunk/impl/src/main/java/org/jboss/webbeans/jsf/WebBeansApplicationFactory.java
===================================================================
---
ri/trunk/impl/src/main/java/org/jboss/webbeans/jsf/WebBeansApplicationFactory.java 2009-08-21
11:58:40 UTC (rev 3576)
+++
ri/trunk/impl/src/main/java/org/jboss/webbeans/jsf/WebBeansApplicationFactory.java 2009-08-21
11:59:26 UTC (rev 3577)
@@ -29,6 +29,8 @@
private final ApplicationFactory applicationFactory;
+ private Application application;
+
public WebBeansApplicationFactory(ApplicationFactory applicationFactory)
{
this.applicationFactory = applicationFactory;
@@ -43,7 +45,11 @@
@Override
public Application getApplication()
{
- return new WebBeansApplication(delegate().getApplication());
+ if (application == null)
+ {
+ application = new WebBeansApplication(delegate().getApplication());
+ }
+ return application;
}
}
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/jsf/WebBeansPhaseListener.java
===================================================================
---
ri/trunk/impl/src/main/java/org/jboss/webbeans/jsf/WebBeansPhaseListener.java 2009-08-21
11:58:40 UTC (rev 3576)
+++
ri/trunk/impl/src/main/java/org/jboss/webbeans/jsf/WebBeansPhaseListener.java 2009-08-21
11:59:26 UTC (rev 3577)
@@ -22,12 +22,17 @@
*/
package org.jboss.webbeans.jsf;
+import static org.jboss.webbeans.jsf.JsfHelper.getConversationId;
+import static org.jboss.webbeans.jsf.JsfHelper.getModuleBeanManager;
+import static org.jboss.webbeans.jsf.JsfHelper.getHttpSession;
+
+import javax.faces.context.FacesContext;
import javax.faces.event.PhaseEvent;
import javax.faces.event.PhaseId;
import javax.faces.event.PhaseListener;
import javax.servlet.http.HttpSession;
-import org.jboss.webbeans.CurrentManager;
+import org.jboss.webbeans.BeanManagerImpl;
import org.jboss.webbeans.context.ConversationContext;
import org.jboss.webbeans.context.SessionContext;
import org.jboss.webbeans.conversation.ConversationImpl;
@@ -73,7 +78,7 @@
{
if (phaseEvent.getPhaseId().equals(PhaseId.RESTORE_VIEW))
{
- beforeRestoreView();
+ beforeRestoreView(phaseEvent.getFacesContext());
}
}
@@ -89,35 +94,36 @@
{
if (phaseEvent.getPhaseId().equals(PhaseId.RENDER_RESPONSE))
{
- afterRenderResponse();
+ afterRenderResponse(phaseEvent.getFacesContext());
}
// be careful with this else as it assumes only one if condition right now
else if (phaseEvent.getFacesContext().getResponseComplete())
{
- afterResponseComplete(phaseEvent.getPhaseId());
+ afterResponseComplete(phaseEvent.getFacesContext(), phaseEvent.getPhaseId());
}
}
/**
* Execute before the Restore View phase.
*/
- private void beforeRestoreView()
+ private void beforeRestoreView(FacesContext facesContext)
{
log.trace("Initiating the session and conversation before the Restore View
phase");
- initiateSessionAndConversation();
+ initiateSessionAndConversation(facesContext);
}
/**
* Execute after the Render Response phase.
*/
- private void afterRenderResponse()
+ private void afterRenderResponse(FacesContext facesContext)
{
- SessionContext sessionContext =
CurrentManager.rootManager().getServices().get(SessionContext.class);
- ConversationContext conversationContext =
CurrentManager.rootManager().getServices().get(ConversationContext.class);
+ BeanManagerImpl moduleBeanManager = getModuleBeanManager(facesContext);
+ SessionContext sessionContext =
moduleBeanManager.getServices().get(SessionContext.class);
+ ConversationContext conversationContext =
moduleBeanManager.getServices().get(ConversationContext.class);
if (sessionContext.isActive())
{
log.trace("Cleaning up the conversation after the Render Response
phase");
-
CurrentManager.rootManager().getInstanceByType(ConversationManager.class).cleanupConversation();
+
moduleBeanManager.getInstanceByType(ConversationManager.class).cleanupConversation();
conversationContext.setActive(false);
}
else
@@ -129,13 +135,14 @@
/**
* Execute after any phase that marks the response as complete.
*/
- private void afterResponseComplete(PhaseId phaseId)
+ private void afterResponseComplete(FacesContext facesContext, PhaseId phaseId)
{
- SessionContext sessionContext =
CurrentManager.rootManager().getServices().get(SessionContext.class);
+ BeanManagerImpl moduleBeanManager = getModuleBeanManager(facesContext);
+ SessionContext sessionContext =
moduleBeanManager.getServices().get(SessionContext.class);
if (sessionContext.isActive())
{
log.trace("Cleaning up the conversation after the " + phaseId + "
phase as the response has been marked complete");
-
CurrentManager.rootManager().getInstanceByType(ConversationManager.class).cleanupConversation();
+
moduleBeanManager.getInstanceByType(ConversationManager.class).cleanupConversation();
}
else
{
@@ -149,14 +156,15 @@
* conversation id token is present in the request and, in either case,
* activate the conversation context (long-running or transient).
*/
- private void initiateSessionAndConversation()
+ private void initiateSessionAndConversation(FacesContext facesContext)
{
- HttpSession session = PhaseHelper.getHttpSession();
-
CurrentManager.rootManager().getInstanceByType(HttpSessionManager.class).setSession(session);
-
CurrentManager.rootManager().getInstanceByType(ConversationManager.class).beginOrRestoreConversation(PhaseHelper.getConversationId());
- String cid =
CurrentManager.rootManager().getInstanceByType(ConversationImpl.class).getUnderlyingId();
+ HttpSession session = getHttpSession(facesContext);
+ BeanManagerImpl moduleBeanManager = getModuleBeanManager(facesContext);
+ moduleBeanManager.getInstanceByType(HttpSessionManager.class).setSession(session);
+
moduleBeanManager.getInstanceByType(ConversationManager.class).beginOrRestoreConversation(getConversationId(facesContext));
+ String cid =
moduleBeanManager.getInstanceByType(ConversationImpl.class).getUnderlyingId();
- ConversationContext conversationContext =
CurrentManager.rootManager().getServices().get(ConversationContext.class);
+ ConversationContext conversationContext =
moduleBeanManager.getServices().get(ConversationContext.class);
conversationContext.setBeanStore(new ConversationBeanStore(session, cid));
conversationContext.setActive(true);
}
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/jsp/JspInitialization.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/jsp/JspInitialization.java 2009-08-21
11:58:40 UTC (rev 3576)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/jsp/JspInitialization.java 2009-08-21
11:59:26 UTC (rev 3577)
@@ -20,7 +20,8 @@
import javax.servlet.jsp.JspApplicationContext;
import javax.servlet.jsp.JspFactory;
-import org.jboss.webbeans.el.WebBeansELResolver;
+import org.jboss.webbeans.el.WebBeansELResolverImpl;
+import org.jboss.webbeans.servlet.ServletHelper;
/**
* @author pmuir
@@ -41,7 +42,7 @@
JspApplicationContext jspAppContext =
JspFactory.getDefaultFactory().getJspApplicationContext(context);
// register compositeELResolver with JSP
- jspAppContext.addELResolver(new WebBeansELResolver());
+ jspAppContext.addELResolver(new
WebBeansELResolverImpl(ServletHelper.getModuleBeanManager(context)));
// DOesn't really achieve much :-(
//jspAppContext.addELContextListener(new WebBeansELContextListener());
Modified:
ri/trunk/impl/src/main/java/org/jboss/webbeans/resources/ManagerObjectFactory.java
===================================================================
---
ri/trunk/impl/src/main/java/org/jboss/webbeans/resources/ManagerObjectFactory.java 2009-08-21
11:58:40 UTC (rev 3576)
+++
ri/trunk/impl/src/main/java/org/jboss/webbeans/resources/ManagerObjectFactory.java 2009-08-21
11:59:26 UTC (rev 3577)
@@ -29,8 +29,15 @@
public Object getObjectInstance(Object obj, Name name, Context nameCtx,
Hashtable<?, ?> environment) throws Exception
{
- // TODO This should return the bean deployment archive manager
- return CurrentManager.rootManager().getCurrent();
+ // Temp hack for JBoss Flat Deployment
+ if (CurrentManager.getBeanDeploymentArchives().size() == 1)
+ {
+ return
CurrentManager.getBeanDeploymentArchives().entrySet().iterator().next().getValue().getCurrent();
+ }
+ else
+ {
+ throw new UnsupportedOperationException("Unable to determine which manager
to return");
+ }
}
}
Modified:
ri/trunk/impl/src/main/java/org/jboss/webbeans/servlet/ConversationPropagationFilter.java
===================================================================
---
ri/trunk/impl/src/main/java/org/jboss/webbeans/servlet/ConversationPropagationFilter.java 2009-08-21
11:58:40 UTC (rev 3576)
+++
ri/trunk/impl/src/main/java/org/jboss/webbeans/servlet/ConversationPropagationFilter.java 2009-08-21
11:59:26 UTC (rev 3577)
@@ -16,18 +16,24 @@
*/
package org.jboss.webbeans.servlet;
+import static org.jboss.webbeans.servlet.ServletHelper.getModuleBeanManager;
+
import java.io.IOException;
+import javax.enterprise.inject.AnnotationLiteral;
+import javax.faces.context.FacesContext;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
+import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;
-import org.jboss.webbeans.CurrentManager;
+import org.jboss.webbeans.conversation.ConversationIdName;
import org.jboss.webbeans.conversation.ConversationImpl;
import org.jboss.webbeans.conversation.ConversationManager;
import org.jboss.webbeans.jsf.FacesUrlTransformer;
@@ -45,32 +51,40 @@
*/
public class ConversationPropagationFilter implements Filter
{
+
+ private ServletContext ctx;
+
public void init(FilterConfig config) throws ServletException
{
+ ctx = config.getServletContext();
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain
chain) throws IOException, ServletException
{
-
- chain.doFilter(request, wrapResponse((HttpServletResponse) response));
+ if (request instanceof HttpServletRequest && response instanceof
HttpServletResponse)
+ {
+ response = wrapResponse((HttpServletResponse) response, ((HttpServletRequest)
request).getContextPath());
+ }
+ chain.doFilter(request, response);
}
public void destroy()
{
}
- private ServletResponse wrapResponse(HttpServletResponse response)
+ private ServletResponse wrapResponse(HttpServletResponse response, final String
requestPath)
{
return new HttpServletResponseWrapper(response)
{
@Override
public void sendRedirect(String path) throws IOException
{
- ConversationImpl conversation =
CurrentManager.rootManager().getInstanceByType(ConversationImpl.class);
+ ConversationImpl conversation = getModuleBeanManager(ctx)
.getInstanceByType(ConversationImpl.class);
if (conversation.isLongRunning())
{
- path = new
FacesUrlTransformer(path).toRedirectViewId().toActionUrl().appendConversationIdIfNecessary(conversation.getUnderlyingId()).encode();
-
CurrentManager.rootManager().getInstanceByType(ConversationManager.class).cleanupConversation();
+ String cidParamName =
getModuleBeanManager(ctx).getInstanceByType(String.class, new
AnnotationLiteral<ConversationIdName>(){});
+ path = new FacesUrlTransformer(path,
FacesContext.getCurrentInstance()).toRedirectViewId().toActionUrl().appendConversationIdIfNecessary(conversation.getUnderlyingId()).encode();
+
getModuleBeanManager(ctx).getInstanceByType(ConversationManager.class).cleanupConversation();
}
super.sendRedirect(path);
}
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/servlet/ServletLifecycle.java
===================================================================
---
ri/trunk/impl/src/main/java/org/jboss/webbeans/servlet/ServletLifecycle.java 2009-08-21
11:58:40 UTC (rev 3576)
+++
ri/trunk/impl/src/main/java/org/jboss/webbeans/servlet/ServletLifecycle.java 2009-08-21
11:59:26 UTC (rev 3577)
@@ -22,6 +22,8 @@
*/
package org.jboss.webbeans.servlet;
+import static org.jboss.webbeans.servlet.ServletHelper.getModuleBeanManager;
+
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
@@ -31,6 +33,7 @@
import org.jboss.webbeans.context.SessionContext;
import org.jboss.webbeans.context.api.BeanStore;
import org.jboss.webbeans.context.api.helpers.ConcurrentHashMapBeanStore;
+import org.jboss.webbeans.conversation.ConversationManager;
import org.jboss.webbeans.log.LogProvider;
import org.jboss.webbeans.log.Logging;
@@ -77,19 +80,20 @@
{
SessionContext sessionContext =
CurrentManager.rootManager().getServices().get(SessionContext.class);
RequestContext requestContext =
CurrentManager.rootManager().getServices().get(RequestContext.class);
+ ConversationManager conversationManager =
getModuleBeanManager(session.getServletContext()).getInstanceByType(ConversationManager.class);
if (sessionContext.isActive())
{
- lifecycle.endSession(session.getId(), sessionContext.getBeanStore());
+ lifecycle.endSession(session.getId(), sessionContext.getBeanStore(),
conversationManager);
}
else if (requestContext.isActive())
{
- lifecycle.endSession(session.getId(), restoreSessionContext(session));
+ lifecycle.endSession(session.getId(), restoreSessionContext(session),
conversationManager);
}
else
{
BeanStore mockRequest = new ConcurrentHashMapBeanStore();
lifecycle.beginRequest("endSession-" + session.getId(), mockRequest);
- lifecycle.endSession(session.getId(), restoreSessionContext(session));
+ lifecycle.endSession(session.getId(), restoreSessionContext(session),
conversationManager);
lifecycle.endRequest("endSession-" + session.getId(), mockRequest);
}
}
@@ -108,7 +112,7 @@
lifecycle.restoreSession(session == null ? "Inactive session" :
session.getId(), sessionBeanStore);
if (session != null)
{
-
CurrentManager.rootManager().getInstanceByType(HttpSessionManager.class).setSession(session);
+
getModuleBeanManager(session.getServletContext()).getInstanceByType(HttpSessionManager.class).setSession(session);
}
return sessionBeanStore;
}
@@ -117,7 +121,7 @@
{
BeanStore beanStore = new HttpSessionBeanStore(session);
lifecycle.restoreSession(session.getId(), beanStore);
-
CurrentManager.rootManager().getInstanceByType(HttpSessionManager.class).setSession(session);
+
getModuleBeanManager(session.getServletContext()).getInstanceByType(HttpSessionManager.class).setSession(session);
return beanStore;
}
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/servlet/WebBeansListener.java
===================================================================
---
ri/trunk/impl/src/main/java/org/jboss/webbeans/servlet/WebBeansListener.java 2009-08-21
11:58:40 UTC (rev 3576)
+++
ri/trunk/impl/src/main/java/org/jboss/webbeans/servlet/WebBeansListener.java 2009-08-21
11:59:26 UTC (rev 3577)
@@ -59,7 +59,11 @@
@Override
public void contextInitialized(ServletContextEvent sce)
{
- new JspInitialization().init(sce.getServletContext());
+ // JBoss AS will still start the deployment even if WB fails
+ if (CurrentManager.isAvailable())
+ {
+ new JspInitialization().init(sce.getServletContext());
+ }
}
/**
@@ -70,7 +74,11 @@
@Override
public void sessionCreated(HttpSessionEvent event)
{
- getLifecycle().beginSession(event.getSession());
+ // JBoss AS will still start the deployment even if WB fails
+ if (CurrentManager.isAvailable())
+ {
+ getLifecycle().beginSession(event.getSession());
+ }
}
/**
@@ -81,7 +89,11 @@
@Override
public void sessionDestroyed(HttpSessionEvent event)
{
- getLifecycle().endSession(event.getSession());
+ // JBoss AS will still start the deployment even if WB fails
+ if (CurrentManager.isAvailable())
+ {
+ getLifecycle().endSession(event.getSession());
+ }
}
/**
@@ -92,14 +104,18 @@
@Override
public void requestDestroyed(ServletRequestEvent event)
{
- if (event.getServletRequest() instanceof HttpServletRequest)
+ // JBoss AS will still start the deployment even if WB fails
+ if (CurrentManager.isAvailable())
{
- getLifecycle().endRequest((HttpServletRequest) event.getServletRequest());
+ if (event.getServletRequest() instanceof HttpServletRequest)
+ {
+ getLifecycle().endRequest((HttpServletRequest) event.getServletRequest());
+ }
+ else
+ {
+ throw new IllegalStateException("Non HTTP-Servlet lifecycle not
defined");
+ }
}
- else
- {
- throw new IllegalStateException("Non HTTP-Servlet lifecycle not
defined");
- }
}
/**
@@ -110,14 +126,18 @@
@Override
public void requestInitialized(ServletRequestEvent event)
{
- if (event.getServletRequest() instanceof HttpServletRequest)
+ // JBoss AS will still start the deployment even if WB fails
+ if (CurrentManager.isAvailable())
{
- getLifecycle().beginRequest((HttpServletRequest) event.getServletRequest());
+ if (event.getServletRequest() instanceof HttpServletRequest)
+ {
+ getLifecycle().beginRequest((HttpServletRequest) event.getServletRequest());
+ }
+ else
+ {
+ throw new IllegalStateException("Non HTTP-Servlet lifecycle not
defined");
+ }
}
- else
- {
- throw new IllegalStateException("Non HTTP-Servlet lifecycle not
defined");
- }
}
}
Modified:
ri/trunk/impl/src/main/java/org/jboss/webbeans/util/serviceProvider/ServiceLoader.java
===================================================================
---
ri/trunk/impl/src/main/java/org/jboss/webbeans/util/serviceProvider/ServiceLoader.java 2009-08-21
11:58:40 UTC (rev 3576)
+++
ri/trunk/impl/src/main/java/org/jboss/webbeans/util/serviceProvider/ServiceLoader.java 2009-08-21
11:59:26 UTC (rev 3577)
@@ -20,6 +20,7 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
+import java.lang.reflect.Constructor;
import java.net.URL;
import java.util.Enumeration;
import java.util.HashSet;
@@ -28,6 +29,7 @@
import org.jboss.webbeans.log.Log;
import org.jboss.webbeans.log.Logging;
+import org.jboss.webbeans.util.Reflections;
/**
* This class handles looking up service providers on the class path. It
@@ -118,6 +120,7 @@
}
private final String serviceFile;
+ private Class<S> expectedType;
private final ClassLoader loader;
private Set<S> providers;
@@ -126,6 +129,7 @@
{
this.loader = loader;
this.serviceFile = SERVICES + service.getName();
+ this.expectedType = service;
}
/**
@@ -181,9 +185,18 @@
{
try
{
- @SuppressWarnings("unchecked")
- Class<? extends S> clazz = (Class<? extends S>)
loader.loadClass(line);
- S instance = clazz.newInstance();
+ Class<?> clazz = loader.loadClass(line);
+ Class<? extends S> serviceClass;
+ try
+ {
+ serviceClass = clazz.asSubclass(expectedType);
+ }
+ catch (ClassCastException e)
+ {
+ throw new IllegalStateException("Extension " +
line + " does not implement Extension");
+ }
+ Constructor<? extends S> constructor =
Reflections.ensureAccessible(serviceClass.getConstructor());
+ S instance = constructor.newInstance();
providers.add(instance);
}
catch (NoClassDefFoundError e)
Modified: ri/trunk/porting-package/src/main/java/org/jboss/webbeans/tck/ELImpl.java
===================================================================
--- ri/trunk/porting-package/src/main/java/org/jboss/webbeans/tck/ELImpl.java 2009-08-21
11:58:40 UTC (rev 3576)
+++ ri/trunk/porting-package/src/main/java/org/jboss/webbeans/tck/ELImpl.java 2009-08-21
11:59:26 UTC (rev 3577)
@@ -2,12 +2,18 @@
import javax.el.ELContext;
+import org.jboss.jsr299.tck.api.JSR299Configuration;
+import org.jboss.testharness.api.Configurable;
+import org.jboss.testharness.api.Configuration;
+import org.jboss.webbeans.BeanManagerImpl;
import org.jboss.webbeans.mock.el.EL;
-public class ELImpl implements org.jboss.jsr299.tck.spi.EL
+public class ELImpl implements org.jboss.jsr299.tck.spi.EL, Configurable
{
+ private JSR299Configuration configuration;
+
@SuppressWarnings("unchecked")
public <T> T evaluateValueExpression(String expression, Class<T>
expectedType)
{
@@ -24,6 +30,26 @@
public ELContext createELContext()
{
- return EL.createELContext();
+ if (configuration.getManagers().getManager() instanceof BeanManagerImpl)
+ {
+ return EL.createELContext((BeanManagerImpl)
configuration.getManagers().getManager());
+ }
+ else
+ {
+ throw new IllegalStateException("Wrong manager");
+ }
}
+
+ public void setConfiguration(Configuration configuration)
+ {
+ if (configuration instanceof JSR299Configuration)
+ {
+ this.configuration = (JSR299Configuration) configuration;
+ }
+ else
+ {
+ throw new IllegalArgumentException("Can only use ELImpl in the CDI
TCK");
+ }
+ }
+
}
Modified: ri/trunk/porting-package/src/main/java/org/jboss/webbeans/tck/ManagersImpl.java
===================================================================
---
ri/trunk/porting-package/src/main/java/org/jboss/webbeans/tck/ManagersImpl.java 2009-08-21
11:58:40 UTC (rev 3576)
+++
ri/trunk/porting-package/src/main/java/org/jboss/webbeans/tck/ManagersImpl.java 2009-08-21
11:59:26 UTC (rev 3577)
@@ -2,18 +2,22 @@
import javax.enterprise.inject.UnproxyableResolutionException;
import javax.enterprise.inject.spi.BeanManager;
+import javax.servlet.ServletContext;
import org.jboss.jsr299.tck.spi.Managers;
-import org.jboss.webbeans.CurrentManager;
import org.jboss.webbeans.DefinitionException;
import org.jboss.webbeans.DeploymentException;
+import org.jboss.webbeans.mock.MockServletContext;
+import org.jboss.webbeans.servlet.ServletHelper;
public class ManagersImpl implements Managers
{
+
+ public static ServletContext SERVLET_CONTEXT = new MockServletContext("");
public BeanManager getManager()
{
- return CurrentManager.rootManager();
+ return ServletHelper.getModuleBeanManager(SERVLET_CONTEXT);
}
public boolean isDefinitionError(org.jboss.testharness.api.DeploymentException
deploymentException)
Modified: ri/trunk/spi/pom.xml
===================================================================
--- ri/trunk/spi/pom.xml 2009-08-21 11:58:40 UTC (rev 3576)
+++ ri/trunk/spi/pom.xml 2009-08-21 11:59:26 UTC (rev 3577)
@@ -54,14 +54,16 @@
</dependency>
<dependency>
- <groupId>javax.jms</groupId>
- <artifactId>jms</artifactId>
- </dependency>
-
- <dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
+ <optional>true</optional>
</dependency>
+
+ <dependency>
+ <groupId>javax.faces</groupId>
+ <artifactId>jsf-api</artifactId>
+ <optional>true</optional>
+ </dependency>
</dependencies>
Modified: ri/trunk/spi/src/main/java/org/jboss/webbeans/bootstrap/api/Environments.java
===================================================================
---
ri/trunk/spi/src/main/java/org/jboss/webbeans/bootstrap/api/Environments.java 2009-08-21
11:58:40 UTC (rev 3576)
+++
ri/trunk/spi/src/main/java/org/jboss/webbeans/bootstrap/api/Environments.java 2009-08-21
11:59:26 UTC (rev 3577)
@@ -23,9 +23,11 @@
import org.jboss.webbeans.bootstrap.spi.Deployment;
import org.jboss.webbeans.ejb.spi.EjbServices;
import org.jboss.webbeans.persistence.spi.JpaServices;
+import org.jboss.webbeans.persistence.spi.helpers.JSFServices;
import org.jboss.webbeans.resources.spi.ResourceLoader;
import org.jboss.webbeans.resources.spi.ResourceServices;
import org.jboss.webbeans.security.spi.SecurityServices;
+import org.jboss.webbeans.servlet.api.ServletServices;
import org.jboss.webbeans.transaction.spi.TransactionServices;
import org.jboss.webbeans.validation.spi.ValidationServices;
@@ -41,17 +43,17 @@
/**
* Java EE5 or Java EE6
*/
- EE(Deployment.class, EjbServices.class, JpaServices.class, ResourceServices.class,
TransactionServices.class, ResourceLoader.class, SecurityServices.class,
ValidationServices.class),
+ EE(Deployment.class, EjbServices.class, JpaServices.class, ResourceServices.class,
TransactionServices.class, ResourceLoader.class, SecurityServices.class,
ValidationServices.class, ServletServices.class, JSFServices.class),
/**
* Java EE6 Web Profile
*/
- EE_WEB_PROFILE(Deployment.class, EjbServices.class, JpaServices.class,
ResourceServices.class, TransactionServices.class, ResourceLoader.class,
SecurityServices.class, ValidationServices.class),
+ EE_WEB_PROFILE(Deployment.class, EjbServices.class, JpaServices.class,
ResourceServices.class, TransactionServices.class, ResourceLoader.class,
SecurityServices.class, ValidationServices.class, ServletServices.class,
JSFServices.class),
/**
* Servlet container such as Tomcat
*/
- SERVLET(Deployment.class, ResourceLoader.class),
+ SERVLET(Deployment.class, ResourceLoader.class, ServletServices.class),
/**
* Java SE
Modified: ri/trunk/spi/src/main/java/org/jboss/webbeans/bootstrap/spi/Deployment.java
===================================================================
--- ri/trunk/spi/src/main/java/org/jboss/webbeans/bootstrap/spi/Deployment.java 2009-08-21
11:58:40 UTC (rev 3576)
+++ ri/trunk/spi/src/main/java/org/jboss/webbeans/bootstrap/spi/Deployment.java 2009-08-21
11:59:26 UTC (rev 3577)
@@ -116,8 +116,9 @@
{
/**
- * Get the bean deployment archives which are accessible by this deployment
- * and adjacent to it in the deployment archive graph.
+ * Get the bean deployment archives which are part of this deployment
+ * and adjacent to it in the deployment archive graph. This should include
+ * all Java EE modules such as WARs, EJB jars and RARs.
*
* Cycles in the accessible BeanDeploymentArchive graph are allowed. If a
* cycle is detected by Web Beans, it will be automatically removed by Web
Modified:
ri/trunk/spi/src/test/java/org/jboss/webbeans/bootstrap/api/test/BootstrapTest.java
===================================================================
---
ri/trunk/spi/src/test/java/org/jboss/webbeans/bootstrap/api/test/BootstrapTest.java 2009-08-21
11:58:40 UTC (rev 3576)
+++
ri/trunk/spi/src/test/java/org/jboss/webbeans/bootstrap/api/test/BootstrapTest.java 2009-08-21
11:59:26 UTC (rev 3577)
@@ -6,9 +6,11 @@
import org.jboss.webbeans.context.api.helpers.ConcurrentHashMapBeanStore;
import org.jboss.webbeans.ejb.spi.EjbServices;
import org.jboss.webbeans.persistence.spi.JpaServices;
+import org.jboss.webbeans.persistence.spi.helpers.JSFServices;
import org.jboss.webbeans.resources.spi.ResourceLoader;
import org.jboss.webbeans.resources.spi.ResourceServices;
import org.jboss.webbeans.security.spi.SecurityServices;
+import org.jboss.webbeans.servlet.api.ServletServices;
import org.jboss.webbeans.transaction.spi.TransactionServices;
import org.jboss.webbeans.validation.spi.ValidationServices;
import org.testng.annotations.Test;
@@ -39,6 +41,8 @@
bootstrap.getServices().add(ResourceServices.class, new MockResourceServices());
bootstrap.getServices().add(SecurityServices.class, new MockSecurityServices());
bootstrap.getServices().add(ValidationServices.class, new
MockValidationServices());
+ bootstrap.getServices().add(ServletServices.class, new MockServletServices());
+ bootstrap.getServices().add(JSFServices.class, new MockJSFServices());
bootstrap.startContainer();
}
@@ -55,6 +59,8 @@
bootstrap.getServices().add(ResourceServices.class, new MockResourceServices());
bootstrap.getServices().add(SecurityServices.class, new MockSecurityServices());
bootstrap.getServices().add(ValidationServices.class, new
MockValidationServices());
+ bootstrap.getServices().add(ServletServices.class, new MockServletServices());
+ bootstrap.getServices().add(JSFServices.class, new MockJSFServices());
bootstrap.startContainer();
}
@@ -71,6 +77,8 @@
bootstrap.getServices().add(JpaServices.class, new MockJpaServices());
bootstrap.getServices().add(ResourceServices.class, new MockResourceServices());
bootstrap.getServices().add(ValidationServices.class, new
MockValidationServices());
+ bootstrap.getServices().add(ServletServices.class, new MockServletServices());
+ bootstrap.getServices().add(JSFServices.class, new MockJSFServices());
bootstrap.startContainer();
}
@@ -87,6 +95,8 @@
bootstrap.getServices().add(ResourceServices.class, new MockResourceServices());
bootstrap.getServices().add(SecurityServices.class, new MockSecurityServices());
bootstrap.getServices().add(JpaServices.class, new MockJpaServices());
+ bootstrap.getServices().add(ServletServices.class, new MockServletServices());
+ bootstrap.getServices().add(JSFServices.class, new MockJSFServices());
bootstrap.startContainer();
}
@@ -104,6 +114,8 @@
bootstrap.getServices().add(ResourceServices.class, new MockResourceServices());
bootstrap.getServices().add(SecurityServices.class, new MockSecurityServices());
bootstrap.getServices().add(ValidationServices.class, new
MockValidationServices());
+ bootstrap.getServices().add(ServletServices.class, new MockServletServices());
+ bootstrap.getServices().add(JSFServices.class, new MockJSFServices());
bootstrap.startContainer();
}
@@ -121,6 +133,8 @@
bootstrap.getServices().add(ResourceServices.class, new MockResourceServices());
bootstrap.getServices().add(SecurityServices.class, new MockSecurityServices());
bootstrap.getServices().add(ValidationServices.class, new
MockValidationServices());
+ bootstrap.getServices().add(ServletServices.class, new MockServletServices());
+ bootstrap.getServices().add(JSFServices.class, new MockJSFServices());
bootstrap.startContainer();
}
@@ -137,6 +151,8 @@
bootstrap.getServices().add(ResourceServices.class, new MockResourceServices());
bootstrap.getServices().add(SecurityServices.class, new MockSecurityServices());
bootstrap.getServices().add(ValidationServices.class, new
MockValidationServices());
+ bootstrap.getServices().add(ServletServices.class, new MockServletServices());
+ bootstrap.getServices().add(JSFServices.class, new MockJSFServices());
bootstrap.startContainer();
}
@@ -153,9 +169,47 @@
bootstrap.getServices().add(TransactionServices.class, new
MockTransactionServices());
bootstrap.getServices().add(SecurityServices.class, new MockSecurityServices());
bootstrap.getServices().add(ValidationServices.class, new
MockValidationServices());
+ bootstrap.getServices().add(ServletServices.class, new MockServletServices());
+ bootstrap.getServices().add(JSFServices.class, new MockJSFServices());
bootstrap.startContainer();
}
+ @Test(expectedExceptions=IllegalStateException.class)
+ public void testMissingJSFServices()
+ {
+ AbstractBootstrap bootstrap = new MockBootstrap();
+ bootstrap.setEnvironment(Environments.EE);
+ bootstrap.getServices().add(ResourceLoader.class, new MockResourceLoader());
+ bootstrap.setApplicationContext(new ConcurrentHashMapBeanStore());
+ bootstrap.getServices().add(EjbServices.class, new MockEjbServices());
+ bootstrap.getServices().add(Deployment.class, new MockDeployment());
+ bootstrap.getServices().add(JpaServices.class, new MockJpaServices());
+ bootstrap.getServices().add(TransactionServices.class, new
MockTransactionServices());
+ bootstrap.getServices().add(SecurityServices.class, new MockSecurityServices());
+ bootstrap.getServices().add(ValidationServices.class, new
MockValidationServices());
+ bootstrap.getServices().add(ServletServices.class, new MockServletServices());
+ bootstrap.getServices().add(ResourceServices.class, new MockResourceServices());
+ bootstrap.startContainer();
+ }
+
+ @Test(expectedExceptions=IllegalStateException.class)
+ public void testMissingServletServices()
+ {
+ AbstractBootstrap bootstrap = new MockBootstrap();
+ bootstrap.setEnvironment(Environments.EE);
+ bootstrap.getServices().add(ResourceLoader.class, new MockResourceLoader());
+ bootstrap.setApplicationContext(new ConcurrentHashMapBeanStore());
+ bootstrap.getServices().add(EjbServices.class, new MockEjbServices());
+ bootstrap.getServices().add(Deployment.class, new MockDeployment());
+ bootstrap.getServices().add(JpaServices.class, new MockJpaServices());
+ bootstrap.getServices().add(TransactionServices.class, new
MockTransactionServices());
+ bootstrap.getServices().add(SecurityServices.class, new MockSecurityServices());
+ bootstrap.getServices().add(ValidationServices.class, new
MockValidationServices());
+ bootstrap.getServices().add(ResourceServices.class, new MockResourceServices());
+ bootstrap.getServices().add(JSFServices.class, new MockJSFServices());
+ bootstrap.startContainer();
+ }
+
@Test
public void testSEEnv()
{
@@ -174,7 +228,8 @@
bootstrap.setEnvironment(Environments.SERVLET);
bootstrap.getServices().add(ResourceLoader.class, new MockResourceLoader());
bootstrap.setApplicationContext(new ConcurrentHashMapBeanStore());
- bootstrap.getServices().add(Deployment.class, new MockDeployment());
+ bootstrap.getServices().add(Deployment.class, new MockDeployment());
+ bootstrap.getServices().add(ServletServices.class, new MockServletServices());
bootstrap.startContainer();
}
Modified: ri/trunk/tests/pom.xml
===================================================================
--- ri/trunk/tests/pom.xml 2009-08-21 11:58:40 UTC (rev 3576)
+++ ri/trunk/tests/pom.xml 2009-08-21 11:59:26 UTC (rev 3577)
@@ -95,6 +95,16 @@
<artifactId>persistence-api</artifactId>
</dependency>
+ <dependency>
+ <groupId>javax.validation</groupId>
+ <artifactId>validation-api</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>javax.faces</groupId>
+ <artifactId>jsf-api</artifactId>
+ </dependency>
+
</dependencies>
<build>
Modified: ri/trunk/tests/src/main/java/org/jboss/webbeans/mock/MockEELifecycle.java
===================================================================
--- ri/trunk/tests/src/main/java/org/jboss/webbeans/mock/MockEELifecycle.java 2009-08-21
11:58:40 UTC (rev 3576)
+++ ri/trunk/tests/src/main/java/org/jboss/webbeans/mock/MockEELifecycle.java 2009-08-21
11:59:26 UTC (rev 3577)
@@ -19,6 +19,7 @@
import org.jboss.webbeans.bootstrap.api.Environments;
import org.jboss.webbeans.ejb.spi.EjbServices;
import org.jboss.webbeans.persistence.spi.JpaServices;
+import org.jboss.webbeans.persistence.spi.helpers.JSFServices;
import org.jboss.webbeans.resources.spi.ResourceServices;
import org.jboss.webbeans.security.spi.SecurityServices;
import org.jboss.webbeans.transaction.spi.TransactionServices;
@@ -38,6 +39,7 @@
getBootstrap().getServices().add(ResourceServices.class, new
MockResourceServices());
getBootstrap().getServices().add(SecurityServices.class, new
MockSecurityServices());
getBootstrap().getServices().add(ValidationServices.class, new
MockValidationServices());
+ getBootstrap().getServices().add(JSFServices.class, new MockJSFServices());
getBootstrap().setEnvironment(Environments.EE);
}
Modified: ri/trunk/tests/src/main/java/org/jboss/webbeans/mock/MockServletLifecycle.java
===================================================================
---
ri/trunk/tests/src/main/java/org/jboss/webbeans/mock/MockServletLifecycle.java 2009-08-21
11:58:40 UTC (rev 3576)
+++
ri/trunk/tests/src/main/java/org/jboss/webbeans/mock/MockServletLifecycle.java 2009-08-21
11:59:26 UTC (rev 3577)
@@ -7,6 +7,7 @@
import org.jboss.webbeans.context.api.BeanStore;
import org.jboss.webbeans.context.api.helpers.ConcurrentHashMapBeanStore;
import org.jboss.webbeans.resources.spi.ResourceLoader;
+import org.jboss.webbeans.servlet.api.ServletServices;
public class MockServletLifecycle extends ContextLifecycle
{
@@ -29,6 +30,7 @@
bootstrap.setEnvironment(Environments.SERVLET);
bootstrap.getServices().add(ResourceLoader.class, MOCK_RESOURCE_LOADER);
bootstrap.getServices().add(Deployment.class, deployment);
+ bootstrap.getServices().add(ServletServices.class, new
MockServletServices(deployment.getArchive()));
bootstrap.setApplicationContext(applicationBeanStore);
}
Modified: ri/trunk/tests/src/main/java/org/jboss/webbeans/mock/el/EL.java
===================================================================
--- ri/trunk/tests/src/main/java/org/jboss/webbeans/mock/el/EL.java 2009-08-21 11:58:40
UTC (rev 3576)
+++ ri/trunk/tests/src/main/java/org/jboss/webbeans/mock/el/EL.java 2009-08-21 11:59:26
UTC (rev 3577)
@@ -30,8 +30,8 @@
import javax.el.ResourceBundleELResolver;
import javax.el.VariableMapper;
+import org.jboss.webbeans.BeanManagerImpl;
import org.jboss.webbeans.el.WebBeansELContextListener;
-import org.jboss.webbeans.el.WebBeansELResolver;
import org.jboss.webbeans.el.WebBeansExpressionFactory;
import com.sun.el.ExpressionFactoryImpl;
@@ -46,16 +46,15 @@
*/
public class EL
{
- public static final ELResolver EL_RESOLVER = createELResolver();
public static final ExpressionFactory EXPRESSION_FACTORY = new
WebBeansExpressionFactory(new ExpressionFactoryImpl());
public static final ELContextListener[] EL_CONTEXT_LISTENERS = { new
WebBeansELContextListener() };
- private static ELResolver createELResolver()
+ private static ELResolver createELResolver(BeanManagerImpl beanManagerImpl)
{
CompositeELResolver resolver = new CompositeELResolver();
- resolver.add( new WebBeansELResolver() );
+ resolver.add( beanManagerImpl.getELResolver() );
resolver.add( new MapELResolver() );
resolver.add( new ListELResolver() );
resolver.add( new ArrayELResolver() );
@@ -64,8 +63,8 @@
return resolver;
}
- public static ELContext createELContext() {
- return createELContext( EL_RESOLVER, new FunctionMapperImpl() );
+ public static ELContext createELContext(BeanManagerImpl beanManagerImpl) {
+ return createELContext(createELResolver(beanManagerImpl), new FunctionMapperImpl()
);
}
public static ELContext createELContext(final ELResolver resolver, final
FunctionMapper functionMapper)
Modified: ri/trunk/tests/src/main/java/org/jboss/webbeans/test/AbstractWebBeansTest.java
===================================================================
---
ri/trunk/tests/src/main/java/org/jboss/webbeans/test/AbstractWebBeansTest.java 2009-08-21
11:58:40 UTC (rev 3576)
+++
ri/trunk/tests/src/main/java/org/jboss/webbeans/test/AbstractWebBeansTest.java 2009-08-21
11:59:26 UTC (rev 3577)
@@ -16,11 +16,13 @@
import javax.el.ELContext;
import javax.enterprise.inject.TypeLiteral;
import javax.enterprise.inject.spi.Bean;
+import javax.servlet.ServletContext;
import org.jboss.testharness.AbstractTest;
import org.jboss.webbeans.BeanManagerImpl;
-import org.jboss.webbeans.CurrentManager;
+import org.jboss.webbeans.mock.MockServletContext;
import org.jboss.webbeans.mock.el.EL;
+import org.jboss.webbeans.servlet.ServletHelper;
import org.jboss.webbeans.util.collections.EnumerationList;
import org.testng.ITestContext;
import org.testng.annotations.BeforeSuite;
@@ -28,6 +30,8 @@
public abstract class AbstractWebBeansTest extends AbstractTest
{
+ public static ServletContext SERVLET_CONTEXT = new MockServletContext("");
+
protected static final int BUILT_IN_BEANS = 3;
public static boolean visited = false;
@@ -40,6 +44,7 @@
{
getCurrentConfiguration().getExtraPackages().add(AbstractWebBeansTest.class.getPackage().getName());
getCurrentConfiguration().getExtraPackages().add(EL.class.getPackage().getName());
+
getCurrentConfiguration().getExtraPackages().add(MockServletContext.class.getPackage().getName());
}
super.beforeSuite(context);
}
@@ -105,7 +110,7 @@
protected BeanManagerImpl getCurrentManager()
{
- return CurrentManager.rootManager();
+ return ServletHelper.getModuleBeanManager(SERVLET_CONTEXT);
}
public boolean isExceptionInHierarchy(Throwable exception, Class<? extends
Throwable> expectedException )
@@ -164,7 +169,7 @@
@SuppressWarnings("unchecked")
public <T> T evaluateValueExpression(String expression, Class<T>
expectedType)
{
- ELContext elContext = EL.createELContext();
+ ELContext elContext = EL.createELContext(getCurrentManager().getCurrent());
return (T) EL.EXPRESSION_FACTORY.createValueExpression(elContext, expression,
expectedType).getValue(elContext);
}
Deleted: ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/bootstrap/Animal.java
===================================================================
---
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/bootstrap/Animal.java 2009-08-21
11:58:40 UTC (rev 3576)
+++
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/bootstrap/Animal.java 2009-08-21
11:59:26 UTC (rev 3577)
@@ -1,6 +0,0 @@
-package org.jboss.webbeans.test.unit.bootstrap;
-
-interface Animal
-{
-
-}
Modified:
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/bootstrap/BootstrapTest.java
===================================================================
---
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/bootstrap/BootstrapTest.java 2009-08-21
11:58:40 UTC (rev 3576)
+++
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/bootstrap/BootstrapTest.java 2009-08-21
11:59:26 UTC (rev 3577)
@@ -1,13 +1,20 @@
package org.jboss.webbeans.test.unit.bootstrap;
import org.jboss.testharness.impl.packaging.Artifact;
+import org.jboss.testharness.impl.packaging.IntegrationTest;
import org.jboss.testharness.impl.packaging.Packaging;
import org.jboss.testharness.impl.packaging.PackagingType;
+import org.jboss.testharness.impl.packaging.Resource;
+import org.jboss.testharness.impl.packaging.Resources;
import org.jboss.webbeans.test.AbstractWebBeansTest;
import org.testng.annotations.Test;
@Artifact
@Packaging(PackagingType.EAR)
+@IntegrationTest
+@Resources({
+ @Resource(source="javax.enterprise.inject.spi.Extension",
destination="META-INF/services/javax.enterprise.inject.spi.Extension")
+})
public class BootstrapTest extends AbstractWebBeansTest
{
@@ -17,16 +24,4 @@
assert InitializedObserver.observered;
}
- @Test(groups="bootstrap")
- public void testRequestContextActiveDuringInitializtionEvent()
- {
- assert InitializedObserverWhichUsesRequestContext.name == new Tuna().getName();
- }
-
- @Test(groups={"bootstrap"})
- public void testApplicationContextActiveDuringInitializtionEvent()
- {
- assert Cow.mooed;
- }
-
}
Deleted: ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/bootstrap/Cow.java
===================================================================
---
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/bootstrap/Cow.java 2009-08-21
11:58:40 UTC (rev 3576)
+++
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/bootstrap/Cow.java 2009-08-21
11:59:26 UTC (rev 3577)
@@ -1,16 +0,0 @@
-package org.jboss.webbeans.test.unit.bootstrap;
-
-import javax.enterprise.context.ApplicationScoped;
-
-@ApplicationScoped
-class Cow implements Animal
-{
-
- public static boolean mooed = false;
-
- public void moo()
- {
- mooed = true;
- }
-
-}
Modified:
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/bootstrap/InitializedObserver.java
===================================================================
---
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/bootstrap/InitializedObserver.java 2009-08-21
11:58:40 UTC (rev 3576)
+++
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/bootstrap/InitializedObserver.java 2009-08-21
11:59:26 UTC (rev 3577)
@@ -2,9 +2,10 @@
import javax.enterprise.event.Observes;
import javax.enterprise.inject.spi.AfterBeanDiscovery;
+import javax.enterprise.inject.spi.Extension;
-class InitializedObserver
+public class InitializedObserver implements Extension
{
public static boolean observered;
Deleted:
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/bootstrap/InitializedObserverWhichUsesApplicationContext.java
===================================================================
---
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/bootstrap/InitializedObserverWhichUsesApplicationContext.java 2009-08-21
11:58:40 UTC (rev 3576)
+++
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/bootstrap/InitializedObserverWhichUsesApplicationContext.java 2009-08-21
11:59:26 UTC (rev 3577)
@@ -1,17 +0,0 @@
-package org.jboss.webbeans.test.unit.bootstrap;
-
-import javax.enterprise.event.Observes;
-import javax.enterprise.inject.Current;
-import javax.enterprise.inject.spi.AfterBeanDiscovery;
-
-class InitializedObserverWhichUsesApplicationContext
-{
-
- @Current Cow cow;
-
- public void observeInitialized(@Observes AfterBeanDiscovery event)
- {
- cow.moo();
- }
-
-}
Deleted:
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/bootstrap/InitializedObserverWhichUsesRequestContext.java
===================================================================
---
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/bootstrap/InitializedObserverWhichUsesRequestContext.java 2009-08-21
11:58:40 UTC (rev 3576)
+++
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/bootstrap/InitializedObserverWhichUsesRequestContext.java 2009-08-21
11:59:26 UTC (rev 3577)
@@ -1,19 +0,0 @@
-package org.jboss.webbeans.test.unit.bootstrap;
-
-import javax.enterprise.event.Observes;
-import javax.enterprise.inject.Current;
-import javax.enterprise.inject.spi.AfterBeanDiscovery;
-
-class InitializedObserverWhichUsesRequestContext
-{
-
- public static String name;
-
- @Current Tuna tuna;
-
- public void observeInitialized(@Observes AfterBeanDiscovery event)
- {
- name = tuna.getName();
- }
-
-}
Deleted: ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/bootstrap/Tuna.java
===================================================================
---
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/bootstrap/Tuna.java 2009-08-21
11:58:40 UTC (rev 3576)
+++
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/bootstrap/Tuna.java 2009-08-21
11:59:26 UTC (rev 3577)
@@ -1,14 +0,0 @@
-package org.jboss.webbeans.test.unit.bootstrap;
-
-import javax.enterprise.context.RequestScoped;
-
-@RequestScoped
-class Tuna
-{
-
- public String getName()
- {
- return "Ophir";
- }
-
-}
Modified:
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/definition/ELResolverTest.java
===================================================================
---
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/definition/ELResolverTest.java 2009-08-21
11:58:40 UTC (rev 3576)
+++
ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/definition/ELResolverTest.java 2009-08-21
11:59:26 UTC (rev 3577)
@@ -31,7 +31,7 @@
@Test
public void testResolveBeanPropertyOfNamedBean()
{
- ELContext elContext = EL.createELContext();
+ ELContext elContext = EL.createELContext(getCurrentManager());
ExpressionFactory exprFactory = EL.EXPRESSION_FACTORY;
assertEquals(exprFactory.createValueExpression(elContext,
"#{beer.style}", String.class).getValue(elContext), "Belgium Strong Dark
Ale");
@@ -48,7 +48,7 @@
@Test
public void testResolveBeanPropertyOfProducerBean()
{
- ELContext elContext = EL.createELContext();
+ ELContext elContext = EL.createELContext(getCurrentManager());
ExpressionFactory exprFactory = EL.EXPRESSION_FACTORY;
assertEquals(exprFactory.createValueExpression(elContext,
"#{beerOnTap.style}", String.class).getValue(elContext), "IPA");