You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2014/12/28 22:29:31 UTC
[1/2] tomee git commit: replacing default conversation service by our
own just using servlet api
Repository: tomee
Updated Branches:
refs/heads/develop 9f7bfd4b4 -> eca9915ca
replacing default conversation service by our own just using servlet api
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/3a94878b
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/3a94878b
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/3a94878b
Branch: refs/heads/develop
Commit: 3a94878be8979b25f4315d27cadbe497c5b93198
Parents: 9f7bfd4
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Sun Dec 28 22:10:15 2014 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Sun Dec 28 22:10:15 2014 +0100
----------------------------------------------------------------------
.../openejb/assembler/classic/Assembler.java | 15 ++++-----
.../openejb/cdi/CdiAppContextsService.java | 22 ++++++++++--
.../openejb/cdi/OpenEJBTransactionService.java | 15 +++------
.../openejb/cdi/ThreadSingletonServiceImpl.java | 35 ++++++++------------
tck/cdi-embedded/src/test/resources/failing.xml | 2 +-
5 files changed, 45 insertions(+), 44 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/3a94878b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
index dcfef92..b46ac25 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
@@ -1424,7 +1424,6 @@ public class Assembler extends AssemblerTool implements org.apache.openejb.spi.A
services.put(JNDIService.class, new OpenEJBJndiService());
services.put(AppContext.class, appContext);
- services.put(TransactionService.class, new OpenEJBTransactionService());
services.put(ScannerService.class, new CdiScanner());
services.put(BeanArchiveService.class, new OpenEJBBeanInfoService());
services.put(ELAdaptor.class, new CustomELAdapter(appContext));
@@ -1432,18 +1431,16 @@ public class Assembler extends AssemblerTool implements org.apache.openejb.spi.A
final Properties properties = new Properties();
properties.setProperty(org.apache.webbeans.spi.SecurityService.class.getName(), ManagedSecurityService.class.getName());
+ properties.setProperty(ContextsService.class.getName(), CdiAppContextsService.class.getName());
+ properties.setProperty(ResourceInjectionService.class.getName(), CdiResourceInjectionService.class.getName());
+ properties.setProperty(TransactionService.class.getName(), OpenEJBTransactionService.class.getName());
webBeansContext = new WebBeansContext(services, properties);
- webBeansContext.registerService(ContextsService.class, new CdiAppContextsService(webBeansContext, true));
- webBeansContext.registerService(ResourceInjectionService.class, new CdiResourceInjectionService(webBeansContext));
-
appContext.setCdiEnabled(false);
- OpenEJBTransactionService.class.cast(services.get(TransactionService.class)).setWebBeansContext(webBeansContext);
-
- appContext.set(WebBeansContext.class, webBeansContext);
- appContext.setWebBeansContext(webBeansContext);
- }
+ appContext.set(WebBeansContext.class, webBeansContext);
+ appContext.setWebBeansContext(webBeansContext);
+ }
}
private TransactionPolicyFactory createTransactionPolicyFactory(final EjbJarInfo ejbJar, final ClassLoader classLoader) {
http://git-wip-us.apache.org/repos/asf/tomee/blob/3a94878b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java
index 28bca5d..a83a96c 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java
@@ -60,7 +60,7 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Map;
-public class CdiAppContextsService extends AbstractContextsService implements ContextsService {
+public class CdiAppContextsService extends AbstractContextsService implements ContextsService, ConversationService {
private static final Logger logger = Logger.getInstance(LogCategory.OPENEJB.createChild("cdi"), CdiAppContextsService.class);
@@ -87,7 +87,7 @@ public class CdiAppContextsService extends AbstractContextsService implements Co
private static final ThreadLocal<Collection<Runnable>> endRequestRunnables = new ThreadLocal<Collection<Runnable>>() {
@Override
protected Collection<Runnable> initialValue() {
- return new ArrayList<Runnable>();
+ return new ArrayList<>();
}
};
@@ -134,6 +134,16 @@ public class CdiAppContextsService extends AbstractContextsService implements Co
endRequestRunnables.get().add(runnable);
}
+ @Override
+ public String getConversationId() {
+ return getHttpParameter("cid");
+ }
+
+ @Override
+ public String getConversationSessionId() {
+ return currentSessionId();
+ }
+
public String currentSessionId() {
final ServletRequestContext rc = requestContext.get();
if (rc != null) {
@@ -650,6 +660,14 @@ public class CdiAppContextsService extends AbstractContextsService implements Co
return old;
}
+ public String getHttpParameter(final String name) {
+ final ServletRequestContext req = getRequestContext(false);
+ if (req != null && req.getServletRequest() != null) {
+ return req.getServletRequest().getParameter(name);
+ }
+ return null;
+ }
+
public static class State {
private final ServletRequestContext request;
private final SessionContext session;
http://git-wip-us.apache.org/repos/asf/tomee/blob/3a94878b/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBTransactionService.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBTransactionService.java b/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBTransactionService.java
index 63393b7..4a7e719 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBTransactionService.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBTransactionService.java
@@ -46,10 +46,11 @@ public class OpenEJBTransactionService implements TransactionService {
private static final Logger logger = Logger.getInstance(LogCategory.OPENEJB_CDI, OpenEJBTransactionService.class);
private final ContainerSystem containerSystem;
- private WebBeansContext webBeansContext;
+ private final WebBeansContext webBeansContext;
- public OpenEJBTransactionService() {
- containerSystem = SystemInstance.get().getComponent(ContainerSystem.class);
+ public OpenEJBTransactionService(final WebBeansContext webBeansContext) {
+ this.containerSystem = SystemInstance.get().getComponent(ContainerSystem.class);
+ this.webBeansContext = webBeansContext;
}
@Override
@@ -94,12 +95,4 @@ public class OpenEJBTransactionService implements TransactionService {
new EventMetadataImpl(observer.getObservedType(), null, null,
qualifiers.toArray(new Annotation[qualifiers.size()]), webBeansContext));
}
-
- public void setWebBeansContext(final WebBeansContext webBeansContext) {
- this.webBeansContext = webBeansContext;
- }
-
- public WebBeansContext getWebBeansContext() {
- return webBeansContext;
- }
}
http://git-wip-us.apache.org/repos/asf/tomee/blob/3a94878b/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java b/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java
index be5d649..ffd72d0 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java
@@ -90,7 +90,7 @@ public class ThreadSingletonServiceImpl implements ThreadSingletonService {
//initialize owb context, cf geronimo's OpenWebBeansGBean
final Properties properties = new Properties();
- final Map<Class<?>, Object> services = new HashMap<Class<?>, Object>();
+ final Map<Class<?>, Object> services = new HashMap<>();
properties.setProperty(OpenWebBeansConfiguration.APPLICATION_IS_JSP, "true");
properties.setProperty(OpenWebBeansConfiguration.USE_EJB_DISCOVERY, "true");
//from CDI builder
@@ -131,10 +131,14 @@ public class ThreadSingletonServiceImpl implements ThreadSingletonService {
properties.putAll(appContext.getProperties());
+ // services needing WBC as constructor param
+ properties.put(ContextsService.class.getName(), CdiAppContextsService.class.getName());
+ properties.put(ResourceInjectionService.class.getName(), CdiResourceInjectionService.class.getName());
+ properties.put(TransactionService.class.getName(), OpenEJBTransactionService.class.getName());
+
services.put(BeanArchiveService.class, new OpenEJBBeanInfoService());
services.put(AppContext.class, appContext);
services.put(JNDIService.class, new OpenEJBJndiService());
- services.put(TransactionService.class, new OpenEJBTransactionService());
services.put(ELAdaptor.class, new CustomELAdapter(appContext));
services.put(ScannerService.class, new CdiScanner());
services.put(ApplicationBoundaryService.class, new DefaultApplicationBoundaryService());
@@ -145,8 +149,6 @@ public class ThreadSingletonServiceImpl implements ThreadSingletonService {
services.put(LoaderService.class, loaderService);
}
- optional(services, ConversationService.class, "org.apache.webbeans.jsf.DefaultConversationService");
-
final ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader();
final ClassLoader cl;
if (oldClassLoader != ThreadSingletonServiceImpl.class.getClassLoader() && ThreadSingletonServiceImpl.class.getClassLoader() != oldClassLoader.getParent()) {
@@ -155,6 +157,7 @@ public class ThreadSingletonServiceImpl implements ThreadSingletonService {
cl = oldClassLoader;
}
Thread.currentThread().setContextClassLoader(cl);
+
final WebBeansContext webBeansContext;
Object old = null;
try {
@@ -165,16 +168,18 @@ public class ThreadSingletonServiceImpl implements ThreadSingletonService {
webBeansContext = new WebappWebBeansContext(services, properties, appContext.getWebBeansContext());
startupObject.getWebContext().setWebbeansContext(webBeansContext);
}
+
+ // we want the same reference as the ContextsService if that's our impl
+ if (webBeansContext.getOpenWebBeansConfiguration().supportsConversation()
+ && "org.apache.webbeans.jsf.DefaultConversationService".equals(webBeansContext.getOpenWebBeansConfiguration().getProperty(ConversationService.class.getName()))) {
+ webBeansContext.registerService(ConversationService.class, ConversationService.class.cast(webBeansContext.getService(ContextsService.class)));
+ }
+
final BeanManagerImpl beanManagerImpl = webBeansContext.getBeanManagerImpl();
beanManagerImpl.addContext(new TransactionContext());
beanManagerImpl.addAdditionalInterceptorBindings(Transactional.class);
SystemInstance.get().fireEvent(new WebBeansContextCreated(webBeansContext));
- OpenEJBTransactionService.class.cast(services.get(TransactionService.class)).setWebBeansContext(webBeansContext);
-
- // do it only here to get the webbeanscontext
- services.put(ContextsService.class, new CdiAppContextsService(webBeansContext, true));
- services.put(ResourceInjectionService.class, new CdiResourceInjectionService(webBeansContext));
old = contextEntered(webBeansContext);
setConfiguration(webBeansContext.getOpenWebBeansConfiguration());
@@ -198,18 +203,6 @@ public class ThreadSingletonServiceImpl implements ThreadSingletonService {
return false;
}
- private <T> void optional(final Map<Class<?>, Object> services, final Class<T> type, final String implementation) {
- try { // use TCCL since we can use webapp enrichment for services
- final Class clazz = Thread.currentThread().getContextClassLoader().loadClass(implementation);
- services.put(type, type.cast(clazz.newInstance()));
- logger.debug(String.format("CDI Service Installed: %s = %s", type.getName(), implementation));
- } catch (final ClassNotFoundException e) {
- logger.debug(String.format("CDI Service not installed: %s", type.getName()));
- } catch (final Exception e) {
- throw new IllegalStateException(e);
- }
- }
-
//not sure what openejb will need
private void setConfiguration(final OpenWebBeansConfiguration configuration) {
http://git-wip-us.apache.org/repos/asf/tomee/blob/3a94878b/tck/cdi-embedded/src/test/resources/failing.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/resources/failing.xml b/tck/cdi-embedded/src/test/resources/failing.xml
index afef25c..aed8972 100644
--- a/tck/cdi-embedded/src/test/resources/failing.xml
+++ b/tck/cdi-embedded/src/test/resources/failing.xml
@@ -26,7 +26,7 @@
-Dopenejb.deploymentId.format={appId}/{ejbJarId}/{ejbName}
-->
<classes>
- <class name="org.jboss.cdi.tck.tests.context.application.async.ApplicationContextAsyncListenerTest" />
+ <class name="org.jboss.cdi.tck.tests.context.conversation.filter.ConversationFilterTest" />
</classes>
</test>
</suite>
[2/2] tomee git commit: don't create conversation lazily automatically
Posted by rm...@apache.org.
don't create conversation lazily automatically
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/eca9915c
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/eca9915c
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/eca9915c
Branch: refs/heads/develop
Commit: eca9915ca1d5b0c8af8b6ac0fff2b5b1d49d248b
Parents: 3a94878
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Sun Dec 28 22:23:49 2014 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Sun Dec 28 22:23:49 2014 +0100
----------------------------------------------------------------------
.../main/java/org/apache/openejb/cdi/CdiAppContextsService.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/eca9915c/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java
index a83a96c..8adc167 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java
@@ -255,7 +255,7 @@ public class CdiAppContextsService extends AbstractContextsService implements Co
} else if (scopeType.equals(ApplicationScoped.class)) {
return getApplicationContext();
} else if (supportsConversation() && scopeType.equals(ConversationScoped.class)) {
- return getConversationContext(true);
+ return getConversationContext(false);
} else if (scopeType.equals(Dependent.class)) {
return dependentContext;
} else if (scopeType.equals(Singleton.class)) {