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 2015/03/13 19:00:12 UTC
tomee git commit: more validation for ejb specialization + remote
interfaces are not part of the ejb api (for cdi) + better cdi tck state clean
up using arquillian API
Repository: tomee
Updated Branches:
refs/heads/master 5359f312b -> ba30d45dc
more validation for ejb specialization + remote interfaces are not part of the ejb api (for cdi) + better cdi tck state clean up using arquillian API
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/ba30d45d
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/ba30d45d
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/ba30d45d
Branch: refs/heads/master
Commit: ba30d45dcca686ba2c3a28a8d9314ffacfb3300b
Parents: 5359f31
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Fri Mar 13 18:59:58 2015 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Fri Mar 13 18:59:58 2015 +0100
----------------------------------------------------------------------
.../java/org/apache/openejb/cdi/CdiEjbBean.java | 3 +-
.../java/org/apache/openejb/cdi/CdiPlugin.java | 15 +++++++--
tck/cdi-embedded/pom.xml | 1 -
.../ArquillianTestCleanUpExtension.java | 35 ++++++++++++++++++++
.../tck/cdi/embedded/CleanUpAssembler.java | 34 -------------------
....jboss.arquillian.core.spi.LoadableExtension | 1 +
tck/cdi-embedded/src/test/resources/failing.xml | 2 +-
7 files changed, 52 insertions(+), 39 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/ba30d45d/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
index b3a1702..0480090 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
@@ -36,7 +36,6 @@ import org.apache.webbeans.intercept.InterceptorResolutionService;
import org.apache.webbeans.portable.InjectionTargetImpl;
import org.apache.webbeans.util.GenericsUtil;
-import java.io.Serializable;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;
@@ -363,12 +362,14 @@ public class CdiEjbBean<T> extends BaseEjbBean<T> implements InterceptedMarker,
}
}
+ /* not in EJB types - 3.2.2 of cdi 1.2
final List<Class> clRemote = beanContext.getBusinessRemoteInterfaces();
if (clRemote != null && !clRemote.isEmpty()) {
for (final Class<?> c : clRemote) {
ejbTypes.add(c); // parentInterfaces(c), but is it useful in practise?
}
}
+ */
ejbTypes.add(Object.class);
}
http://git-wip-us.apache.org/repos/asf/tomee/blob/ba30d45d/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
index a06ea9b..8dab787 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
@@ -49,6 +49,7 @@ import org.apache.webbeans.spi.plugins.AbstractOwbPlugin;
import org.apache.webbeans.spi.plugins.OpenWebBeansEjbPlugin;
import org.apache.webbeans.spi.plugins.OpenWebBeansJavaEEPlugin;
import org.apache.webbeans.spi.plugins.OpenWebBeansWebPlugin;
+import org.apache.webbeans.util.GenericsUtil;
import org.apache.webbeans.util.WebBeansUtil;
import javax.enterprise.context.ApplicationScoped;
@@ -300,8 +301,18 @@ public class CdiPlugin extends AbstractOwbPlugin implements OpenWebBeansJavaEEPl
public <T> Bean<T> defineSessionBean(final Class<T> clazz, final BeanAttributes<T> attributes, final AnnotatedType<T> annotatedType) {
final BeanContext bc = findBeanContext(webBeansContext, clazz);
final Class<?> superClass = bc.getManagedClass().getSuperclass();
- if (superClass != Object.class && !isSessionBean(superClass) && annotatedType.isAnnotationPresent(Specializes.class)) {
- throw new DefinitionException("You can only specialize another EJB: " + clazz);
+ if (annotatedType.isAnnotationPresent(Specializes.class)) {
+ if (superClass != Object.class && !isSessionBean(superClass)) {
+ throw new DefinitionException("You can only specialize another EJB: " + clazz);
+ }
+ final BeanContext parentBc = findBeanContext(webBeansContext, superClass);
+ final List<Class> businessLocalInterfaces = new ArrayList<>(parentBc.getBusinessLocalInterfaces());
+ for (final Class<?> api : bc.getBusinessLocalInterfaces()) {
+ businessLocalInterfaces.removeAll(GenericsUtil.getTypeClosure(api));
+ }
+ if (!businessLocalInterfaces.isEmpty()) {
+ throw new DefinitionException("You can only specialize another EJB with at least the same API: " + clazz);
+ }
}
final CdiEjbBean<T> bean = new OpenEJBBeanBuilder<T>(bc, webBeansContext, annotatedType, attributes).createBean(clazz, !annotatedType.isAnnotationPresent(Vetoed.class));
http://git-wip-us.apache.org/repos/asf/tomee/blob/ba30d45d/tck/cdi-embedded/pom.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/pom.xml b/tck/cdi-embedded/pom.xml
index 8ee76d9..e2c9e08 100644
--- a/tck/cdi-embedded/pom.xml
+++ b/tck/cdi-embedded/pom.xml
@@ -203,7 +203,6 @@
<openejb.cdi.producer.interception>false</openejb.cdi.producer.interception>
<openejb.cdi.filter.classloader>false</openejb.cdi.filter.classloader>
- <openejb.assembler>org.apache.openejb.tck.cdi.embedded.CleanUpAssembler</openejb.assembler>
<openejb.jul.forceReload>true</openejb.jul.forceReload>
<openejb.strict.interface.declaration>true</openejb.strict.interface.declaration>
<openejb.http.mock-request>true</openejb.http.mock-request>
http://git-wip-us.apache.org/repos/asf/tomee/blob/ba30d45d/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/ArquillianTestCleanUpExtension.java
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/ArquillianTestCleanUpExtension.java b/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/ArquillianTestCleanUpExtension.java
new file mode 100644
index 0000000..b0fda02
--- /dev/null
+++ b/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/ArquillianTestCleanUpExtension.java
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.openejb.tck.cdi.embedded;
+
+import org.jboss.arquillian.core.api.annotation.Observes;
+import org.jboss.arquillian.core.spi.LoadableExtension;
+import org.jboss.arquillian.test.spi.event.suite.AfterClass;
+import org.jboss.cdi.tck.util.ActionSequence;
+
+public class ArquillianTestCleanUpExtension implements LoadableExtension {
+ @Override
+ public void register(final ExtensionBuilder extensionBuilder) {
+ extensionBuilder.observer(CleanUpObserver.class);
+ }
+
+ public static class CleanUpObserver {
+ public void cleanup(@Observes final AfterClass ignored) {
+ ActionSequence.reset(); // avoids to leak between tests, works in war cause of classloading but not in embedded mode
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/tomee/blob/ba30d45d/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/CleanUpAssembler.java
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/CleanUpAssembler.java b/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/CleanUpAssembler.java
deleted file mode 100644
index c31bd36..0000000
--- a/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/CleanUpAssembler.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.apache.openejb.tck.cdi.embedded;
-
-import org.apache.openejb.UndeployException;
-import org.apache.openejb.assembler.classic.AppInfo;
-import org.apache.openejb.assembler.classic.Assembler;
-import org.apache.openejb.loader.SystemInstance;
-import org.apache.openejb.spi.ContainerSystem;
-import org.jboss.cdi.tck.util.ActionSequence;
-
-public class CleanUpAssembler extends Assembler {
- @Override
- public void destroyApplication(final AppInfo appInfo) throws UndeployException {
- super.destroyApplication(appInfo);
- if (SystemInstance.get().getComponent(ContainerSystem.class).getAppContexts().isEmpty()) {
- ActionSequence.reset();
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/tomee/blob/ba30d45d/tck/cdi-embedded/src/test/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension b/tck/cdi-embedded/src/test/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension
new file mode 100644
index 0000000..e7e35c9
--- /dev/null
+++ b/tck/cdi-embedded/src/test/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension
@@ -0,0 +1 @@
+org.apache.openejb.tck.cdi.embedded.ArquillianTestCleanUpExtension
http://git-wip-us.apache.org/repos/asf/tomee/blob/ba30d45d/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 b0a5663..9cad804 100644
--- a/tck/cdi-embedded/src/test/resources/failing.xml
+++ b/tck/cdi-embedded/src/test/resources/failing.xml
@@ -31,7 +31,7 @@
-Dopenejb.embedded.try-jsp=true
-->
<classes>
- <class name="org.jboss.cdi.tck.tests.lookup.modules.SpecializedBeanInjectionNotAvailable02Test" />
+ <class name="org.jboss.cdi.tck.tests.inheritance.specialization.enterprise.EnterpriseBeanSpecializationTest" />
</classes>
</test>
</suite>
Re: Fwd: tomee git commit: more validation for ejb specialization +
remote interfaces are not part of the ejb api (for cdi) + better cdi tck
state clean up using arquillian API
Posted by Romain Manni-Bucau <rm...@gmail.com>.
once exceptions propagated to client side more properly:
Tests passed/Failed/Skipped:1437/42/20
Romain Manni-Bucau
@rmannibucau <https://twitter.com/rmannibucau> | Blog
<http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> |
LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber
<http://www.tomitribe.com>
2015-03-14 20:13 GMT+01:00 Romain Manni-Bucau <rm...@gmail.com>:
> FYI on tomee we are here:
>
> Tests passed/Failed/Skipped:1174/40/285
>
>
> Romain Manni-Bucau
> @rmannibucau <https://twitter.com/rmannibucau> | Blog
> <http://rmannibucau.wordpress.com> | Github
> <https://github.com/rmannibucau> | LinkedIn
> <https://www.linkedin.com/in/rmannibucau> | Tomitriber
> <http://www.tomitribe.com>
>
> 2015-03-13 19:04 GMT+01:00 Thiago Veronezi <th...@veronezi.org>:
>
>> Great news! :)
>> On 13 Mar 2015 14:02, "Romain Manni-Bucau" <rm...@gmail.com> wrote:
>>
>> > Tests run: 1499, Failures: 0, Errors: 0, Skipped: 0
>> >
>> > [INFO]
>> > [INFO] --- maven-jar-plugin:2.5:jar (default-jar) @ cdi-embedded ---
>> > [INFO] Building jar:
>> >
>> >
>> /home/rmannibucau/dev/Apache/tomee-trunk/tck/cdi-embedded/target/cdi-embedded-2.0.0-SNAPSHOT.jar
>> > [INFO]
>> > [INFO] --- maven-site-plugin:3.4:attach-descriptor (attach-descriptor) @
>> > cdi-embedded ---
>> > [INFO]
>> > [INFO] --- maven-install-plugin:2.5.2:install (default-install) @
>> > cdi-embedded ---
>> > [INFO] Installing
>> >
>> >
>> /home/rmannibucau/dev/Apache/tomee-trunk/tck/cdi-embedded/target/cdi-embedded-2.0.0-SNAPSHOT.jar
>> > to
>> >
>> >
>> /home/rmannibucau/.m2/repository/org/apache/openejb/cdi-embedded/2.0.0-SNAPSHOT/cdi-embedded-2.0.0-SNAPSHOT.jar
>> > [INFO] Installing
>> > /home/rmannibucau/dev/Apache/tomee-trunk/tck/cdi-embedded/pom.xml to
>> >
>> >
>> /home/rmannibucau/.m2/repository/org/apache/openejb/cdi-embedded/2.0.0-SNAPSHOT/cdi-embedded-2.0.0-SNAPSHOT.pom
>> > [INFO]
>> > ------------------------------------------------------------------------
>> > [INFO] BUILD SUCCESS
>> > [INFO]
>> > ------------------------------------------------------------------------
>> > [INFO] Total time: 05:31 min
>> > [INFO] Finished at: 2015-03-13T18:59:53+01:00
>> > [INFO] Final Memory: 47M/615M
>> > [INFO]
>> > ------------------------------------------------------------------------
>> >
>> > :)
>> >
>> > next step tomee but needs a bit of investment since setup is not done at
>> > all yet
>> >
>> > Romain Manni-Bucau
>> > @rmannibucau <https://twitter.com/rmannibucau> | Blog
>> > <http://rmannibucau.wordpress.com> | Github <
>> > https://github.com/rmannibucau> |
>> > LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber
>> > <http://www.tomitribe.com>
>> >
>> > ---------- Forwarded message ----------
>> > From: <rm...@apache.org>
>> > Date: 2015-03-13 19:00 GMT+01:00
>> > Subject: tomee git commit: more validation for ejb specialization +
>> remote
>> > interfaces are not part of the ejb api (for cdi) + better cdi tck state
>> > clean up using arquillian API
>> > To: commits@tomee.apache.org
>> >
>> >
>> > Repository: tomee
>> > Updated Branches:
>> > refs/heads/master 5359f312b -> ba30d45dc
>> >
>> >
>> > more validation for ejb specialization + remote interfaces are not part
>> of
>> > the ejb api (for cdi) + better cdi tck state clean up using arquillian
>> API
>> >
>> >
>> > Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
>> > Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/ba30d45d
>> > Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/ba30d45d
>> > Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/ba30d45d
>> >
>> > Branch: refs/heads/master
>> > Commit: ba30d45dcca686ba2c3a28a8d9314ffacfb3300b
>> > Parents: 5359f31
>> > Author: Romain Manni-Bucau <rm...@apache.org>
>> > Authored: Fri Mar 13 18:59:58 2015 +0100
>> > Committer: Romain Manni-Bucau <rm...@apache.org>
>> > Committed: Fri Mar 13 18:59:58 2015 +0100
>> >
>> > ----------------------------------------------------------------------
>> > .../java/org/apache/openejb/cdi/CdiEjbBean.java | 3 +-
>> > .../java/org/apache/openejb/cdi/CdiPlugin.java | 15 +++++++--
>> > tck/cdi-embedded/pom.xml | 1 -
>> > .../ArquillianTestCleanUpExtension.java | 35
>> ++++++++++++++++++++
>> > .../tck/cdi/embedded/CleanUpAssembler.java | 34
>> -------------------
>> > ....jboss.arquillian.core.spi.LoadableExtension | 1 +
>> > tck/cdi-embedded/src/test/resources/failing.xml | 2 +-
>> > 7 files changed, 52 insertions(+), 39 deletions(-)
>> > ----------------------------------------------------------------------
>> >
>> >
>> >
>> >
>> http://git-wip-us.apache.org/repos/asf/tomee/blob/ba30d45d/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
>> > ----------------------------------------------------------------------
>> > diff --git
>> >
>> >
>> a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
>> >
>> >
>> b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
>> > index b3a1702..0480090 100644
>> > ---
>> >
>> >
>> a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
>> > +++
>> >
>> >
>> b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
>> > @@ -36,7 +36,6 @@ import
>> > org.apache.webbeans.intercept.InterceptorResolutionService;
>> > import org.apache.webbeans.portable.InjectionTargetImpl;
>> > import org.apache.webbeans.util.GenericsUtil;
>> >
>> > -import java.io.Serializable;
>> > import java.lang.reflect.InvocationHandler;
>> > import java.lang.reflect.Method;
>> > import java.lang.reflect.ParameterizedType;
>> > @@ -363,12 +362,14 @@ public class CdiEjbBean<T> extends BaseEjbBean<T>
>> > implements InterceptedMarker,
>> > }
>> > }
>> >
>> > + /* not in EJB types - 3.2.2 of cdi 1.2
>> > final List<Class> clRemote =
>> > beanContext.getBusinessRemoteInterfaces();
>> > if (clRemote != null && !clRemote.isEmpty()) {
>> > for (final Class<?> c : clRemote) {
>> > ejbTypes.add(c); // parentInterfaces(c), but is it
>> > useful in practise?
>> > }
>> > }
>> > + */
>> >
>> > ejbTypes.add(Object.class);
>> > }
>> >
>> >
>> >
>> http://git-wip-us.apache.org/repos/asf/tomee/blob/ba30d45d/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
>> > ----------------------------------------------------------------------
>> > diff --git
>> >
>> >
>> a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
>> >
>> >
>> b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
>> > index a06ea9b..8dab787 100644
>> > ---
>> >
>> >
>> a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
>> > +++
>> >
>> >
>> b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
>> > @@ -49,6 +49,7 @@ import
>> org.apache.webbeans.spi.plugins.AbstractOwbPlugin;
>> > import org.apache.webbeans.spi.plugins.OpenWebBeansEjbPlugin;
>> > import org.apache.webbeans.spi.plugins.OpenWebBeansJavaEEPlugin;
>> > import org.apache.webbeans.spi.plugins.OpenWebBeansWebPlugin;
>> > +import org.apache.webbeans.util.GenericsUtil;
>> > import org.apache.webbeans.util.WebBeansUtil;
>> >
>> > import javax.enterprise.context.ApplicationScoped;
>> > @@ -300,8 +301,18 @@ public class CdiPlugin extends AbstractOwbPlugin
>> > implements OpenWebBeansJavaEEPl
>> > public <T> Bean<T> defineSessionBean(final Class<T> clazz, final
>> > BeanAttributes<T> attributes, final AnnotatedType<T> annotatedType) {
>> > final BeanContext bc = findBeanContext(webBeansContext, clazz);
>> > final Class<?> superClass =
>> bc.getManagedClass().getSuperclass();
>> > - if (superClass != Object.class && !isSessionBean(superClass) &&
>> > annotatedType.isAnnotationPresent(Specializes.class)) {
>> > - throw new DefinitionException("You can only specialize
>> another
>> > EJB: " + clazz);
>> > + if (annotatedType.isAnnotationPresent(Specializes.class)) {
>> > + if (superClass != Object.class &&
>> !isSessionBean(superClass))
>> > {
>> > + throw new DefinitionException("You can only specialize
>> > another EJB: " + clazz);
>> > + }
>> > + final BeanContext parentBc =
>> findBeanContext(webBeansContext,
>> > superClass);
>> > + final List<Class> businessLocalInterfaces = new
>> > ArrayList<>(parentBc.getBusinessLocalInterfaces());
>> > + for (final Class<?> api : bc.getBusinessLocalInterfaces())
>> {
>> > +
>> > businessLocalInterfaces.removeAll(GenericsUtil.getTypeClosure(api));
>> > + }
>> > + if (!businessLocalInterfaces.isEmpty()) {
>> > + throw new DefinitionException("You can only specialize
>> > another EJB with at least the same API: " + clazz);
>> > + }
>> > }
>> > final CdiEjbBean<T> bean = new OpenEJBBeanBuilder<T>(bc,
>> > webBeansContext, annotatedType, attributes).createBean(clazz,
>> > !annotatedType.isAnnotationPresent(Vetoed.class));
>> >
>> >
>> >
>> >
>> http://git-wip-us.apache.org/repos/asf/tomee/blob/ba30d45d/tck/cdi-embedded/pom.xml
>> > ----------------------------------------------------------------------
>> > diff --git a/tck/cdi-embedded/pom.xml b/tck/cdi-embedded/pom.xml
>> > index 8ee76d9..e2c9e08 100644
>> > --- a/tck/cdi-embedded/pom.xml
>> > +++ b/tck/cdi-embedded/pom.xml
>> > @@ -203,7 +203,6 @@
>> >
>> >
>> >
>> <openejb.cdi.producer.interception>false</openejb.cdi.producer.interception>
>> >
>> > <openejb.cdi.filter.classloader>false</openejb.cdi.filter.classloader>
>> >
>> > -
>> >
>> >
>> <openejb.assembler>org.apache.openejb.tck.cdi.embedded.CleanUpAssembler</openejb.assembler>
>> > <openejb.jul.forceReload>true</openejb.jul.forceReload>
>> >
>> >
>> >
>> <openejb.strict.interface.declaration>true</openejb.strict.interface.declaration>
>> > <openejb.http.mock-request>true</openejb.http.mock-request>
>> >
>> >
>> >
>> http://git-wip-us.apache.org/repos/asf/tomee/blob/ba30d45d/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/ArquillianTestCleanUpExtension.java
>> > ----------------------------------------------------------------------
>> > diff --git
>> >
>> >
>> a/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/ArquillianTestCleanUpExtension.java
>> >
>> >
>> b/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/ArquillianTestCleanUpExtension.java
>> > new file mode 100644
>> > index 0000000..b0fda02
>> > --- /dev/null
>> > +++
>> >
>> >
>> b/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/ArquillianTestCleanUpExtension.java
>> > @@ -0,0 +1,35 @@
>> > +/*
>> > + * Licensed to the Apache Software Foundation (ASF) under one or more
>> > + * contributor license agreements. See the NOTICE file distributed
>> with
>> > + * this work for additional information regarding copyright ownership.
>> > + * The ASF licenses this file to You 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.apache.openejb.tck.cdi.embedded;
>> > +
>> > +import org.jboss.arquillian.core.api.annotation.Observes;
>> > +import org.jboss.arquillian.core.spi.LoadableExtension;
>> > +import org.jboss.arquillian.test.spi.event.suite.AfterClass;
>> > +import org.jboss.cdi.tck.util.ActionSequence;
>> > +
>> > +public class ArquillianTestCleanUpExtension implements
>> LoadableExtension {
>> > + @Override
>> > + public void register(final ExtensionBuilder extensionBuilder) {
>> > + extensionBuilder.observer(CleanUpObserver.class);
>> > + }
>> > +
>> > + public static class CleanUpObserver {
>> > + public void cleanup(@Observes final AfterClass ignored) {
>> > + ActionSequence.reset(); // avoids to leak between tests,
>> works
>> > in war cause of classloading but not in embedded mode
>> > + }
>> > + }
>> > +}
>> >
>> >
>> >
>> http://git-wip-us.apache.org/repos/asf/tomee/blob/ba30d45d/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/CleanUpAssembler.java
>> > ----------------------------------------------------------------------
>> > diff --git
>> >
>> >
>> a/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/CleanUpAssembler.java
>> >
>> >
>> b/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/CleanUpAssembler.java
>> > deleted file mode 100644
>> > index c31bd36..0000000
>> > ---
>> >
>> >
>> a/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/CleanUpAssembler.java
>> > +++ /dev/null
>> > @@ -1,34 +0,0 @@
>> > -/*
>> > - * Licensed to the Apache Software Foundation (ASF) under one or more
>> > - * contributor license agreements. See the NOTICE file distributed
>> with
>> > - * this work for additional information regarding copyright ownership.
>> > - * The ASF licenses this file to You 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.apache.openejb.tck.cdi.embedded;
>> > -
>> > -import org.apache.openejb.UndeployException;
>> > -import org.apache.openejb.assembler.classic.AppInfo;
>> > -import org.apache.openejb.assembler.classic.Assembler;
>> > -import org.apache.openejb.loader.SystemInstance;
>> > -import org.apache.openejb.spi.ContainerSystem;
>> > -import org.jboss.cdi.tck.util.ActionSequence;
>> > -
>> > -public class CleanUpAssembler extends Assembler {
>> > - @Override
>> > - public void destroyApplication(final AppInfo appInfo) throws
>> > UndeployException {
>> > - super.destroyApplication(appInfo);
>> > - if
>> >
>> >
>> (SystemInstance.get().getComponent(ContainerSystem.class).getAppContexts().isEmpty())
>> > {
>> > - ActionSequence.reset();
>> > - }
>> > - }
>> > -}
>> >
>> >
>> >
>> http://git-wip-us.apache.org/repos/asf/tomee/blob/ba30d45d/tck/cdi-embedded/src/test/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension
>> > ----------------------------------------------------------------------
>> > diff --git
>> >
>> >
>> a/tck/cdi-embedded/src/test/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension
>> >
>> >
>> b/tck/cdi-embedded/src/test/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension
>> > new file mode 100644
>> > index 0000000..e7e35c9
>> > --- /dev/null
>> > +++
>> >
>> >
>> b/tck/cdi-embedded/src/test/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension
>> > @@ -0,0 +1 @@
>> > +org.apache.openejb.tck.cdi.embedded.ArquillianTestCleanUpExtension
>> >
>> >
>> >
>> http://git-wip-us.apache.org/repos/asf/tomee/blob/ba30d45d/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 b0a5663..9cad804 100644
>> > --- a/tck/cdi-embedded/src/test/resources/failing.xml
>> > +++ b/tck/cdi-embedded/src/test/resources/failing.xml
>> > @@ -31,7 +31,7 @@
>> > -Dopenejb.embedded.try-jsp=true
>> > -->
>> > <classes>
>> > - <class
>> >
>> >
>> name="org.jboss.cdi.tck.tests.lookup.modules.SpecializedBeanInjectionNotAvailable02Test"
>> > />
>> > + <class
>> >
>> >
>> name="org.jboss.cdi.tck.tests.inheritance.specialization.enterprise.EnterpriseBeanSpecializationTest"
>> > />
>> > </classes>
>> > </test>
>> > </suite>
>> >
>>
>
>
Re: Fwd: tomee git commit: more validation for ejb specialization +
remote interfaces are not part of the ejb api (for cdi) + better cdi tck
state clean up using arquillian API
Posted by Romain Manni-Bucau <rm...@gmail.com>.
FYI on tomee we are here:
Tests passed/Failed/Skipped:1174/40/285
Romain Manni-Bucau
@rmannibucau <https://twitter.com/rmannibucau> | Blog
<http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> |
LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber
<http://www.tomitribe.com>
2015-03-13 19:04 GMT+01:00 Thiago Veronezi <th...@veronezi.org>:
> Great news! :)
> On 13 Mar 2015 14:02, "Romain Manni-Bucau" <rm...@gmail.com> wrote:
>
> > Tests run: 1499, Failures: 0, Errors: 0, Skipped: 0
> >
> > [INFO]
> > [INFO] --- maven-jar-plugin:2.5:jar (default-jar) @ cdi-embedded ---
> > [INFO] Building jar:
> >
> >
> /home/rmannibucau/dev/Apache/tomee-trunk/tck/cdi-embedded/target/cdi-embedded-2.0.0-SNAPSHOT.jar
> > [INFO]
> > [INFO] --- maven-site-plugin:3.4:attach-descriptor (attach-descriptor) @
> > cdi-embedded ---
> > [INFO]
> > [INFO] --- maven-install-plugin:2.5.2:install (default-install) @
> > cdi-embedded ---
> > [INFO] Installing
> >
> >
> /home/rmannibucau/dev/Apache/tomee-trunk/tck/cdi-embedded/target/cdi-embedded-2.0.0-SNAPSHOT.jar
> > to
> >
> >
> /home/rmannibucau/.m2/repository/org/apache/openejb/cdi-embedded/2.0.0-SNAPSHOT/cdi-embedded-2.0.0-SNAPSHOT.jar
> > [INFO] Installing
> > /home/rmannibucau/dev/Apache/tomee-trunk/tck/cdi-embedded/pom.xml to
> >
> >
> /home/rmannibucau/.m2/repository/org/apache/openejb/cdi-embedded/2.0.0-SNAPSHOT/cdi-embedded-2.0.0-SNAPSHOT.pom
> > [INFO]
> > ------------------------------------------------------------------------
> > [INFO] BUILD SUCCESS
> > [INFO]
> > ------------------------------------------------------------------------
> > [INFO] Total time: 05:31 min
> > [INFO] Finished at: 2015-03-13T18:59:53+01:00
> > [INFO] Final Memory: 47M/615M
> > [INFO]
> > ------------------------------------------------------------------------
> >
> > :)
> >
> > next step tomee but needs a bit of investment since setup is not done at
> > all yet
> >
> > Romain Manni-Bucau
> > @rmannibucau <https://twitter.com/rmannibucau> | Blog
> > <http://rmannibucau.wordpress.com> | Github <
> > https://github.com/rmannibucau> |
> > LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber
> > <http://www.tomitribe.com>
> >
> > ---------- Forwarded message ----------
> > From: <rm...@apache.org>
> > Date: 2015-03-13 19:00 GMT+01:00
> > Subject: tomee git commit: more validation for ejb specialization +
> remote
> > interfaces are not part of the ejb api (for cdi) + better cdi tck state
> > clean up using arquillian API
> > To: commits@tomee.apache.org
> >
> >
> > Repository: tomee
> > Updated Branches:
> > refs/heads/master 5359f312b -> ba30d45dc
> >
> >
> > more validation for ejb specialization + remote interfaces are not part
> of
> > the ejb api (for cdi) + better cdi tck state clean up using arquillian
> API
> >
> >
> > Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
> > Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/ba30d45d
> > Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/ba30d45d
> > Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/ba30d45d
> >
> > Branch: refs/heads/master
> > Commit: ba30d45dcca686ba2c3a28a8d9314ffacfb3300b
> > Parents: 5359f31
> > Author: Romain Manni-Bucau <rm...@apache.org>
> > Authored: Fri Mar 13 18:59:58 2015 +0100
> > Committer: Romain Manni-Bucau <rm...@apache.org>
> > Committed: Fri Mar 13 18:59:58 2015 +0100
> >
> > ----------------------------------------------------------------------
> > .../java/org/apache/openejb/cdi/CdiEjbBean.java | 3 +-
> > .../java/org/apache/openejb/cdi/CdiPlugin.java | 15 +++++++--
> > tck/cdi-embedded/pom.xml | 1 -
> > .../ArquillianTestCleanUpExtension.java | 35
> ++++++++++++++++++++
> > .../tck/cdi/embedded/CleanUpAssembler.java | 34 -------------------
> > ....jboss.arquillian.core.spi.LoadableExtension | 1 +
> > tck/cdi-embedded/src/test/resources/failing.xml | 2 +-
> > 7 files changed, 52 insertions(+), 39 deletions(-)
> > ----------------------------------------------------------------------
> >
> >
> >
> >
> http://git-wip-us.apache.org/repos/asf/tomee/blob/ba30d45d/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
> > ----------------------------------------------------------------------
> > diff --git
> >
> >
> a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
> >
> >
> b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
> > index b3a1702..0480090 100644
> > ---
> >
> >
> a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
> > +++
> >
> >
> b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
> > @@ -36,7 +36,6 @@ import
> > org.apache.webbeans.intercept.InterceptorResolutionService;
> > import org.apache.webbeans.portable.InjectionTargetImpl;
> > import org.apache.webbeans.util.GenericsUtil;
> >
> > -import java.io.Serializable;
> > import java.lang.reflect.InvocationHandler;
> > import java.lang.reflect.Method;
> > import java.lang.reflect.ParameterizedType;
> > @@ -363,12 +362,14 @@ public class CdiEjbBean<T> extends BaseEjbBean<T>
> > implements InterceptedMarker,
> > }
> > }
> >
> > + /* not in EJB types - 3.2.2 of cdi 1.2
> > final List<Class> clRemote =
> > beanContext.getBusinessRemoteInterfaces();
> > if (clRemote != null && !clRemote.isEmpty()) {
> > for (final Class<?> c : clRemote) {
> > ejbTypes.add(c); // parentInterfaces(c), but is it
> > useful in practise?
> > }
> > }
> > + */
> >
> > ejbTypes.add(Object.class);
> > }
> >
> >
> >
> http://git-wip-us.apache.org/repos/asf/tomee/blob/ba30d45d/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
> > ----------------------------------------------------------------------
> > diff --git
> >
> >
> a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
> >
> >
> b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
> > index a06ea9b..8dab787 100644
> > ---
> >
> >
> a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
> > +++
> >
> >
> b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
> > @@ -49,6 +49,7 @@ import
> org.apache.webbeans.spi.plugins.AbstractOwbPlugin;
> > import org.apache.webbeans.spi.plugins.OpenWebBeansEjbPlugin;
> > import org.apache.webbeans.spi.plugins.OpenWebBeansJavaEEPlugin;
> > import org.apache.webbeans.spi.plugins.OpenWebBeansWebPlugin;
> > +import org.apache.webbeans.util.GenericsUtil;
> > import org.apache.webbeans.util.WebBeansUtil;
> >
> > import javax.enterprise.context.ApplicationScoped;
> > @@ -300,8 +301,18 @@ public class CdiPlugin extends AbstractOwbPlugin
> > implements OpenWebBeansJavaEEPl
> > public <T> Bean<T> defineSessionBean(final Class<T> clazz, final
> > BeanAttributes<T> attributes, final AnnotatedType<T> annotatedType) {
> > final BeanContext bc = findBeanContext(webBeansContext, clazz);
> > final Class<?> superClass =
> bc.getManagedClass().getSuperclass();
> > - if (superClass != Object.class && !isSessionBean(superClass) &&
> > annotatedType.isAnnotationPresent(Specializes.class)) {
> > - throw new DefinitionException("You can only specialize
> another
> > EJB: " + clazz);
> > + if (annotatedType.isAnnotationPresent(Specializes.class)) {
> > + if (superClass != Object.class &&
> !isSessionBean(superClass))
> > {
> > + throw new DefinitionException("You can only specialize
> > another EJB: " + clazz);
> > + }
> > + final BeanContext parentBc =
> findBeanContext(webBeansContext,
> > superClass);
> > + final List<Class> businessLocalInterfaces = new
> > ArrayList<>(parentBc.getBusinessLocalInterfaces());
> > + for (final Class<?> api : bc.getBusinessLocalInterfaces()) {
> > +
> > businessLocalInterfaces.removeAll(GenericsUtil.getTypeClosure(api));
> > + }
> > + if (!businessLocalInterfaces.isEmpty()) {
> > + throw new DefinitionException("You can only specialize
> > another EJB with at least the same API: " + clazz);
> > + }
> > }
> > final CdiEjbBean<T> bean = new OpenEJBBeanBuilder<T>(bc,
> > webBeansContext, annotatedType, attributes).createBean(clazz,
> > !annotatedType.isAnnotationPresent(Vetoed.class));
> >
> >
> >
> >
> http://git-wip-us.apache.org/repos/asf/tomee/blob/ba30d45d/tck/cdi-embedded/pom.xml
> > ----------------------------------------------------------------------
> > diff --git a/tck/cdi-embedded/pom.xml b/tck/cdi-embedded/pom.xml
> > index 8ee76d9..e2c9e08 100644
> > --- a/tck/cdi-embedded/pom.xml
> > +++ b/tck/cdi-embedded/pom.xml
> > @@ -203,7 +203,6 @@
> >
> >
> >
> <openejb.cdi.producer.interception>false</openejb.cdi.producer.interception>
> >
> > <openejb.cdi.filter.classloader>false</openejb.cdi.filter.classloader>
> >
> > -
> >
> >
> <openejb.assembler>org.apache.openejb.tck.cdi.embedded.CleanUpAssembler</openejb.assembler>
> > <openejb.jul.forceReload>true</openejb.jul.forceReload>
> >
> >
> >
> <openejb.strict.interface.declaration>true</openejb.strict.interface.declaration>
> > <openejb.http.mock-request>true</openejb.http.mock-request>
> >
> >
> >
> http://git-wip-us.apache.org/repos/asf/tomee/blob/ba30d45d/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/ArquillianTestCleanUpExtension.java
> > ----------------------------------------------------------------------
> > diff --git
> >
> >
> a/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/ArquillianTestCleanUpExtension.java
> >
> >
> b/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/ArquillianTestCleanUpExtension.java
> > new file mode 100644
> > index 0000000..b0fda02
> > --- /dev/null
> > +++
> >
> >
> b/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/ArquillianTestCleanUpExtension.java
> > @@ -0,0 +1,35 @@
> > +/*
> > + * Licensed to the Apache Software Foundation (ASF) under one or more
> > + * contributor license agreements. See the NOTICE file distributed with
> > + * this work for additional information regarding copyright ownership.
> > + * The ASF licenses this file to You 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.apache.openejb.tck.cdi.embedded;
> > +
> > +import org.jboss.arquillian.core.api.annotation.Observes;
> > +import org.jboss.arquillian.core.spi.LoadableExtension;
> > +import org.jboss.arquillian.test.spi.event.suite.AfterClass;
> > +import org.jboss.cdi.tck.util.ActionSequence;
> > +
> > +public class ArquillianTestCleanUpExtension implements
> LoadableExtension {
> > + @Override
> > + public void register(final ExtensionBuilder extensionBuilder) {
> > + extensionBuilder.observer(CleanUpObserver.class);
> > + }
> > +
> > + public static class CleanUpObserver {
> > + public void cleanup(@Observes final AfterClass ignored) {
> > + ActionSequence.reset(); // avoids to leak between tests,
> works
> > in war cause of classloading but not in embedded mode
> > + }
> > + }
> > +}
> >
> >
> >
> http://git-wip-us.apache.org/repos/asf/tomee/blob/ba30d45d/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/CleanUpAssembler.java
> > ----------------------------------------------------------------------
> > diff --git
> >
> >
> a/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/CleanUpAssembler.java
> >
> >
> b/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/CleanUpAssembler.java
> > deleted file mode 100644
> > index c31bd36..0000000
> > ---
> >
> >
> a/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/CleanUpAssembler.java
> > +++ /dev/null
> > @@ -1,34 +0,0 @@
> > -/*
> > - * Licensed to the Apache Software Foundation (ASF) under one or more
> > - * contributor license agreements. See the NOTICE file distributed with
> > - * this work for additional information regarding copyright ownership.
> > - * The ASF licenses this file to You 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.apache.openejb.tck.cdi.embedded;
> > -
> > -import org.apache.openejb.UndeployException;
> > -import org.apache.openejb.assembler.classic.AppInfo;
> > -import org.apache.openejb.assembler.classic.Assembler;
> > -import org.apache.openejb.loader.SystemInstance;
> > -import org.apache.openejb.spi.ContainerSystem;
> > -import org.jboss.cdi.tck.util.ActionSequence;
> > -
> > -public class CleanUpAssembler extends Assembler {
> > - @Override
> > - public void destroyApplication(final AppInfo appInfo) throws
> > UndeployException {
> > - super.destroyApplication(appInfo);
> > - if
> >
> >
> (SystemInstance.get().getComponent(ContainerSystem.class).getAppContexts().isEmpty())
> > {
> > - ActionSequence.reset();
> > - }
> > - }
> > -}
> >
> >
> >
> http://git-wip-us.apache.org/repos/asf/tomee/blob/ba30d45d/tck/cdi-embedded/src/test/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension
> > ----------------------------------------------------------------------
> > diff --git
> >
> >
> a/tck/cdi-embedded/src/test/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension
> >
> >
> b/tck/cdi-embedded/src/test/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension
> > new file mode 100644
> > index 0000000..e7e35c9
> > --- /dev/null
> > +++
> >
> >
> b/tck/cdi-embedded/src/test/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension
> > @@ -0,0 +1 @@
> > +org.apache.openejb.tck.cdi.embedded.ArquillianTestCleanUpExtension
> >
> >
> >
> http://git-wip-us.apache.org/repos/asf/tomee/blob/ba30d45d/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 b0a5663..9cad804 100644
> > --- a/tck/cdi-embedded/src/test/resources/failing.xml
> > +++ b/tck/cdi-embedded/src/test/resources/failing.xml
> > @@ -31,7 +31,7 @@
> > -Dopenejb.embedded.try-jsp=true
> > -->
> > <classes>
> > - <class
> >
> >
> name="org.jboss.cdi.tck.tests.lookup.modules.SpecializedBeanInjectionNotAvailable02Test"
> > />
> > + <class
> >
> >
> name="org.jboss.cdi.tck.tests.inheritance.specialization.enterprise.EnterpriseBeanSpecializationTest"
> > />
> > </classes>
> > </test>
> > </suite>
> >
>
Re: Fwd: tomee git commit: more validation for ejb specialization +
remote interfaces are not part of the ejb api (for cdi) + better cdi tck
state clean up using arquillian API
Posted by Thiago Veronezi <th...@veronezi.org>.
Great news! :)
On 13 Mar 2015 14:02, "Romain Manni-Bucau" <rm...@gmail.com> wrote:
> Tests run: 1499, Failures: 0, Errors: 0, Skipped: 0
>
> [INFO]
> [INFO] --- maven-jar-plugin:2.5:jar (default-jar) @ cdi-embedded ---
> [INFO] Building jar:
>
> /home/rmannibucau/dev/Apache/tomee-trunk/tck/cdi-embedded/target/cdi-embedded-2.0.0-SNAPSHOT.jar
> [INFO]
> [INFO] --- maven-site-plugin:3.4:attach-descriptor (attach-descriptor) @
> cdi-embedded ---
> [INFO]
> [INFO] --- maven-install-plugin:2.5.2:install (default-install) @
> cdi-embedded ---
> [INFO] Installing
>
> /home/rmannibucau/dev/Apache/tomee-trunk/tck/cdi-embedded/target/cdi-embedded-2.0.0-SNAPSHOT.jar
> to
>
> /home/rmannibucau/.m2/repository/org/apache/openejb/cdi-embedded/2.0.0-SNAPSHOT/cdi-embedded-2.0.0-SNAPSHOT.jar
> [INFO] Installing
> /home/rmannibucau/dev/Apache/tomee-trunk/tck/cdi-embedded/pom.xml to
>
> /home/rmannibucau/.m2/repository/org/apache/openejb/cdi-embedded/2.0.0-SNAPSHOT/cdi-embedded-2.0.0-SNAPSHOT.pom
> [INFO]
> ------------------------------------------------------------------------
> [INFO] BUILD SUCCESS
> [INFO]
> ------------------------------------------------------------------------
> [INFO] Total time: 05:31 min
> [INFO] Finished at: 2015-03-13T18:59:53+01:00
> [INFO] Final Memory: 47M/615M
> [INFO]
> ------------------------------------------------------------------------
>
> :)
>
> next step tomee but needs a bit of investment since setup is not done at
> all yet
>
> Romain Manni-Bucau
> @rmannibucau <https://twitter.com/rmannibucau> | Blog
> <http://rmannibucau.wordpress.com> | Github <
> https://github.com/rmannibucau> |
> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber
> <http://www.tomitribe.com>
>
> ---------- Forwarded message ----------
> From: <rm...@apache.org>
> Date: 2015-03-13 19:00 GMT+01:00
> Subject: tomee git commit: more validation for ejb specialization + remote
> interfaces are not part of the ejb api (for cdi) + better cdi tck state
> clean up using arquillian API
> To: commits@tomee.apache.org
>
>
> Repository: tomee
> Updated Branches:
> refs/heads/master 5359f312b -> ba30d45dc
>
>
> more validation for ejb specialization + remote interfaces are not part of
> the ejb api (for cdi) + better cdi tck state clean up using arquillian API
>
>
> Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
> Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/ba30d45d
> Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/ba30d45d
> Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/ba30d45d
>
> Branch: refs/heads/master
> Commit: ba30d45dcca686ba2c3a28a8d9314ffacfb3300b
> Parents: 5359f31
> Author: Romain Manni-Bucau <rm...@apache.org>
> Authored: Fri Mar 13 18:59:58 2015 +0100
> Committer: Romain Manni-Bucau <rm...@apache.org>
> Committed: Fri Mar 13 18:59:58 2015 +0100
>
> ----------------------------------------------------------------------
> .../java/org/apache/openejb/cdi/CdiEjbBean.java | 3 +-
> .../java/org/apache/openejb/cdi/CdiPlugin.java | 15 +++++++--
> tck/cdi-embedded/pom.xml | 1 -
> .../ArquillianTestCleanUpExtension.java | 35 ++++++++++++++++++++
> .../tck/cdi/embedded/CleanUpAssembler.java | 34 -------------------
> ....jboss.arquillian.core.spi.LoadableExtension | 1 +
> tck/cdi-embedded/src/test/resources/failing.xml | 2 +-
> 7 files changed, 52 insertions(+), 39 deletions(-)
> ----------------------------------------------------------------------
>
>
>
> http://git-wip-us.apache.org/repos/asf/tomee/blob/ba30d45d/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
> ----------------------------------------------------------------------
> diff --git
>
> a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
>
> b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
> index b3a1702..0480090 100644
> ---
>
> a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
> +++
>
> b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
> @@ -36,7 +36,6 @@ import
> org.apache.webbeans.intercept.InterceptorResolutionService;
> import org.apache.webbeans.portable.InjectionTargetImpl;
> import org.apache.webbeans.util.GenericsUtil;
>
> -import java.io.Serializable;
> import java.lang.reflect.InvocationHandler;
> import java.lang.reflect.Method;
> import java.lang.reflect.ParameterizedType;
> @@ -363,12 +362,14 @@ public class CdiEjbBean<T> extends BaseEjbBean<T>
> implements InterceptedMarker,
> }
> }
>
> + /* not in EJB types - 3.2.2 of cdi 1.2
> final List<Class> clRemote =
> beanContext.getBusinessRemoteInterfaces();
> if (clRemote != null && !clRemote.isEmpty()) {
> for (final Class<?> c : clRemote) {
> ejbTypes.add(c); // parentInterfaces(c), but is it
> useful in practise?
> }
> }
> + */
>
> ejbTypes.add(Object.class);
> }
>
>
> http://git-wip-us.apache.org/repos/asf/tomee/blob/ba30d45d/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
> ----------------------------------------------------------------------
> diff --git
>
> a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
>
> b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
> index a06ea9b..8dab787 100644
> ---
>
> a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
> +++
>
> b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
> @@ -49,6 +49,7 @@ import org.apache.webbeans.spi.plugins.AbstractOwbPlugin;
> import org.apache.webbeans.spi.plugins.OpenWebBeansEjbPlugin;
> import org.apache.webbeans.spi.plugins.OpenWebBeansJavaEEPlugin;
> import org.apache.webbeans.spi.plugins.OpenWebBeansWebPlugin;
> +import org.apache.webbeans.util.GenericsUtil;
> import org.apache.webbeans.util.WebBeansUtil;
>
> import javax.enterprise.context.ApplicationScoped;
> @@ -300,8 +301,18 @@ public class CdiPlugin extends AbstractOwbPlugin
> implements OpenWebBeansJavaEEPl
> public <T> Bean<T> defineSessionBean(final Class<T> clazz, final
> BeanAttributes<T> attributes, final AnnotatedType<T> annotatedType) {
> final BeanContext bc = findBeanContext(webBeansContext, clazz);
> final Class<?> superClass = bc.getManagedClass().getSuperclass();
> - if (superClass != Object.class && !isSessionBean(superClass) &&
> annotatedType.isAnnotationPresent(Specializes.class)) {
> - throw new DefinitionException("You can only specialize another
> EJB: " + clazz);
> + if (annotatedType.isAnnotationPresent(Specializes.class)) {
> + if (superClass != Object.class && !isSessionBean(superClass))
> {
> + throw new DefinitionException("You can only specialize
> another EJB: " + clazz);
> + }
> + final BeanContext parentBc = findBeanContext(webBeansContext,
> superClass);
> + final List<Class> businessLocalInterfaces = new
> ArrayList<>(parentBc.getBusinessLocalInterfaces());
> + for (final Class<?> api : bc.getBusinessLocalInterfaces()) {
> +
> businessLocalInterfaces.removeAll(GenericsUtil.getTypeClosure(api));
> + }
> + if (!businessLocalInterfaces.isEmpty()) {
> + throw new DefinitionException("You can only specialize
> another EJB with at least the same API: " + clazz);
> + }
> }
> final CdiEjbBean<T> bean = new OpenEJBBeanBuilder<T>(bc,
> webBeansContext, annotatedType, attributes).createBean(clazz,
> !annotatedType.isAnnotationPresent(Vetoed.class));
>
>
>
> http://git-wip-us.apache.org/repos/asf/tomee/blob/ba30d45d/tck/cdi-embedded/pom.xml
> ----------------------------------------------------------------------
> diff --git a/tck/cdi-embedded/pom.xml b/tck/cdi-embedded/pom.xml
> index 8ee76d9..e2c9e08 100644
> --- a/tck/cdi-embedded/pom.xml
> +++ b/tck/cdi-embedded/pom.xml
> @@ -203,7 +203,6 @@
>
>
> <openejb.cdi.producer.interception>false</openejb.cdi.producer.interception>
>
> <openejb.cdi.filter.classloader>false</openejb.cdi.filter.classloader>
>
> -
>
> <openejb.assembler>org.apache.openejb.tck.cdi.embedded.CleanUpAssembler</openejb.assembler>
> <openejb.jul.forceReload>true</openejb.jul.forceReload>
>
>
> <openejb.strict.interface.declaration>true</openejb.strict.interface.declaration>
> <openejb.http.mock-request>true</openejb.http.mock-request>
>
>
> http://git-wip-us.apache.org/repos/asf/tomee/blob/ba30d45d/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/ArquillianTestCleanUpExtension.java
> ----------------------------------------------------------------------
> diff --git
>
> a/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/ArquillianTestCleanUpExtension.java
>
> b/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/ArquillianTestCleanUpExtension.java
> new file mode 100644
> index 0000000..b0fda02
> --- /dev/null
> +++
>
> b/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/ArquillianTestCleanUpExtension.java
> @@ -0,0 +1,35 @@
> +/*
> + * Licensed to the Apache Software Foundation (ASF) under one or more
> + * contributor license agreements. See the NOTICE file distributed with
> + * this work for additional information regarding copyright ownership.
> + * The ASF licenses this file to You 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.apache.openejb.tck.cdi.embedded;
> +
> +import org.jboss.arquillian.core.api.annotation.Observes;
> +import org.jboss.arquillian.core.spi.LoadableExtension;
> +import org.jboss.arquillian.test.spi.event.suite.AfterClass;
> +import org.jboss.cdi.tck.util.ActionSequence;
> +
> +public class ArquillianTestCleanUpExtension implements LoadableExtension {
> + @Override
> + public void register(final ExtensionBuilder extensionBuilder) {
> + extensionBuilder.observer(CleanUpObserver.class);
> + }
> +
> + public static class CleanUpObserver {
> + public void cleanup(@Observes final AfterClass ignored) {
> + ActionSequence.reset(); // avoids to leak between tests, works
> in war cause of classloading but not in embedded mode
> + }
> + }
> +}
>
>
> http://git-wip-us.apache.org/repos/asf/tomee/blob/ba30d45d/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/CleanUpAssembler.java
> ----------------------------------------------------------------------
> diff --git
>
> a/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/CleanUpAssembler.java
>
> b/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/CleanUpAssembler.java
> deleted file mode 100644
> index c31bd36..0000000
> ---
>
> a/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/CleanUpAssembler.java
> +++ /dev/null
> @@ -1,34 +0,0 @@
> -/*
> - * Licensed to the Apache Software Foundation (ASF) under one or more
> - * contributor license agreements. See the NOTICE file distributed with
> - * this work for additional information regarding copyright ownership.
> - * The ASF licenses this file to You 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.apache.openejb.tck.cdi.embedded;
> -
> -import org.apache.openejb.UndeployException;
> -import org.apache.openejb.assembler.classic.AppInfo;
> -import org.apache.openejb.assembler.classic.Assembler;
> -import org.apache.openejb.loader.SystemInstance;
> -import org.apache.openejb.spi.ContainerSystem;
> -import org.jboss.cdi.tck.util.ActionSequence;
> -
> -public class CleanUpAssembler extends Assembler {
> - @Override
> - public void destroyApplication(final AppInfo appInfo) throws
> UndeployException {
> - super.destroyApplication(appInfo);
> - if
>
> (SystemInstance.get().getComponent(ContainerSystem.class).getAppContexts().isEmpty())
> {
> - ActionSequence.reset();
> - }
> - }
> -}
>
>
> http://git-wip-us.apache.org/repos/asf/tomee/blob/ba30d45d/tck/cdi-embedded/src/test/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension
> ----------------------------------------------------------------------
> diff --git
>
> a/tck/cdi-embedded/src/test/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension
>
> b/tck/cdi-embedded/src/test/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension
> new file mode 100644
> index 0000000..e7e35c9
> --- /dev/null
> +++
>
> b/tck/cdi-embedded/src/test/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension
> @@ -0,0 +1 @@
> +org.apache.openejb.tck.cdi.embedded.ArquillianTestCleanUpExtension
>
>
> http://git-wip-us.apache.org/repos/asf/tomee/blob/ba30d45d/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 b0a5663..9cad804 100644
> --- a/tck/cdi-embedded/src/test/resources/failing.xml
> +++ b/tck/cdi-embedded/src/test/resources/failing.xml
> @@ -31,7 +31,7 @@
> -Dopenejb.embedded.try-jsp=true
> -->
> <classes>
> - <class
>
> name="org.jboss.cdi.tck.tests.lookup.modules.SpecializedBeanInjectionNotAvailable02Test"
> />
> + <class
>
> name="org.jboss.cdi.tck.tests.inheritance.specialization.enterprise.EnterpriseBeanSpecializationTest"
> />
> </classes>
> </test>
> </suite>
>
Fwd: tomee git commit: more validation for ejb specialization +
remote interfaces are not part of the ejb api (for cdi) + better cdi tck
state clean up using arquillian API
Posted by Romain Manni-Bucau <rm...@gmail.com>.
Tests run: 1499, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO] --- maven-jar-plugin:2.5:jar (default-jar) @ cdi-embedded ---
[INFO] Building jar:
/home/rmannibucau/dev/Apache/tomee-trunk/tck/cdi-embedded/target/cdi-embedded-2.0.0-SNAPSHOT.jar
[INFO]
[INFO] --- maven-site-plugin:3.4:attach-descriptor (attach-descriptor) @
cdi-embedded ---
[INFO]
[INFO] --- maven-install-plugin:2.5.2:install (default-install) @
cdi-embedded ---
[INFO] Installing
/home/rmannibucau/dev/Apache/tomee-trunk/tck/cdi-embedded/target/cdi-embedded-2.0.0-SNAPSHOT.jar
to
/home/rmannibucau/.m2/repository/org/apache/openejb/cdi-embedded/2.0.0-SNAPSHOT/cdi-embedded-2.0.0-SNAPSHOT.jar
[INFO] Installing
/home/rmannibucau/dev/Apache/tomee-trunk/tck/cdi-embedded/pom.xml to
/home/rmannibucau/.m2/repository/org/apache/openejb/cdi-embedded/2.0.0-SNAPSHOT/cdi-embedded-2.0.0-SNAPSHOT.pom
[INFO]
------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO]
------------------------------------------------------------------------
[INFO] Total time: 05:31 min
[INFO] Finished at: 2015-03-13T18:59:53+01:00
[INFO] Final Memory: 47M/615M
[INFO]
------------------------------------------------------------------------
:)
next step tomee but needs a bit of investment since setup is not done at
all yet
Romain Manni-Bucau
@rmannibucau <https://twitter.com/rmannibucau> | Blog
<http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> |
LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber
<http://www.tomitribe.com>
---------- Forwarded message ----------
From: <rm...@apache.org>
Date: 2015-03-13 19:00 GMT+01:00
Subject: tomee git commit: more validation for ejb specialization + remote
interfaces are not part of the ejb api (for cdi) + better cdi tck state
clean up using arquillian API
To: commits@tomee.apache.org
Repository: tomee
Updated Branches:
refs/heads/master 5359f312b -> ba30d45dc
more validation for ejb specialization + remote interfaces are not part of
the ejb api (for cdi) + better cdi tck state clean up using arquillian API
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/ba30d45d
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/ba30d45d
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/ba30d45d
Branch: refs/heads/master
Commit: ba30d45dcca686ba2c3a28a8d9314ffacfb3300b
Parents: 5359f31
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Fri Mar 13 18:59:58 2015 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Fri Mar 13 18:59:58 2015 +0100
----------------------------------------------------------------------
.../java/org/apache/openejb/cdi/CdiEjbBean.java | 3 +-
.../java/org/apache/openejb/cdi/CdiPlugin.java | 15 +++++++--
tck/cdi-embedded/pom.xml | 1 -
.../ArquillianTestCleanUpExtension.java | 35 ++++++++++++++++++++
.../tck/cdi/embedded/CleanUpAssembler.java | 34 -------------------
....jboss.arquillian.core.spi.LoadableExtension | 1 +
tck/cdi-embedded/src/test/resources/failing.xml | 2 +-
7 files changed, 52 insertions(+), 39 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/ba30d45d/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
----------------------------------------------------------------------
diff --git
a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
index b3a1702..0480090 100644
---
a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
+++
b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
@@ -36,7 +36,6 @@ import
org.apache.webbeans.intercept.InterceptorResolutionService;
import org.apache.webbeans.portable.InjectionTargetImpl;
import org.apache.webbeans.util.GenericsUtil;
-import java.io.Serializable;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;
@@ -363,12 +362,14 @@ public class CdiEjbBean<T> extends BaseEjbBean<T>
implements InterceptedMarker,
}
}
+ /* not in EJB types - 3.2.2 of cdi 1.2
final List<Class> clRemote =
beanContext.getBusinessRemoteInterfaces();
if (clRemote != null && !clRemote.isEmpty()) {
for (final Class<?> c : clRemote) {
ejbTypes.add(c); // parentInterfaces(c), but is it
useful in practise?
}
}
+ */
ejbTypes.add(Object.class);
}
http://git-wip-us.apache.org/repos/asf/tomee/blob/ba30d45d/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
----------------------------------------------------------------------
diff --git
a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
index a06ea9b..8dab787 100644
---
a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
+++
b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
@@ -49,6 +49,7 @@ import org.apache.webbeans.spi.plugins.AbstractOwbPlugin;
import org.apache.webbeans.spi.plugins.OpenWebBeansEjbPlugin;
import org.apache.webbeans.spi.plugins.OpenWebBeansJavaEEPlugin;
import org.apache.webbeans.spi.plugins.OpenWebBeansWebPlugin;
+import org.apache.webbeans.util.GenericsUtil;
import org.apache.webbeans.util.WebBeansUtil;
import javax.enterprise.context.ApplicationScoped;
@@ -300,8 +301,18 @@ public class CdiPlugin extends AbstractOwbPlugin
implements OpenWebBeansJavaEEPl
public <T> Bean<T> defineSessionBean(final Class<T> clazz, final
BeanAttributes<T> attributes, final AnnotatedType<T> annotatedType) {
final BeanContext bc = findBeanContext(webBeansContext, clazz);
final Class<?> superClass = bc.getManagedClass().getSuperclass();
- if (superClass != Object.class && !isSessionBean(superClass) &&
annotatedType.isAnnotationPresent(Specializes.class)) {
- throw new DefinitionException("You can only specialize another
EJB: " + clazz);
+ if (annotatedType.isAnnotationPresent(Specializes.class)) {
+ if (superClass != Object.class && !isSessionBean(superClass)) {
+ throw new DefinitionException("You can only specialize
another EJB: " + clazz);
+ }
+ final BeanContext parentBc = findBeanContext(webBeansContext,
superClass);
+ final List<Class> businessLocalInterfaces = new
ArrayList<>(parentBc.getBusinessLocalInterfaces());
+ for (final Class<?> api : bc.getBusinessLocalInterfaces()) {
+
businessLocalInterfaces.removeAll(GenericsUtil.getTypeClosure(api));
+ }
+ if (!businessLocalInterfaces.isEmpty()) {
+ throw new DefinitionException("You can only specialize
another EJB with at least the same API: " + clazz);
+ }
}
final CdiEjbBean<T> bean = new OpenEJBBeanBuilder<T>(bc,
webBeansContext, annotatedType, attributes).createBean(clazz,
!annotatedType.isAnnotationPresent(Vetoed.class));
http://git-wip-us.apache.org/repos/asf/tomee/blob/ba30d45d/tck/cdi-embedded/pom.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/pom.xml b/tck/cdi-embedded/pom.xml
index 8ee76d9..e2c9e08 100644
--- a/tck/cdi-embedded/pom.xml
+++ b/tck/cdi-embedded/pom.xml
@@ -203,7 +203,6 @@
<openejb.cdi.producer.interception>false</openejb.cdi.producer.interception>
<openejb.cdi.filter.classloader>false</openejb.cdi.filter.classloader>
-
<openejb.assembler>org.apache.openejb.tck.cdi.embedded.CleanUpAssembler</openejb.assembler>
<openejb.jul.forceReload>true</openejb.jul.forceReload>
<openejb.strict.interface.declaration>true</openejb.strict.interface.declaration>
<openejb.http.mock-request>true</openejb.http.mock-request>
http://git-wip-us.apache.org/repos/asf/tomee/blob/ba30d45d/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/ArquillianTestCleanUpExtension.java
----------------------------------------------------------------------
diff --git
a/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/ArquillianTestCleanUpExtension.java
b/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/ArquillianTestCleanUpExtension.java
new file mode 100644
index 0000000..b0fda02
--- /dev/null
+++
b/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/ArquillianTestCleanUpExtension.java
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.openejb.tck.cdi.embedded;
+
+import org.jboss.arquillian.core.api.annotation.Observes;
+import org.jboss.arquillian.core.spi.LoadableExtension;
+import org.jboss.arquillian.test.spi.event.suite.AfterClass;
+import org.jboss.cdi.tck.util.ActionSequence;
+
+public class ArquillianTestCleanUpExtension implements LoadableExtension {
+ @Override
+ public void register(final ExtensionBuilder extensionBuilder) {
+ extensionBuilder.observer(CleanUpObserver.class);
+ }
+
+ public static class CleanUpObserver {
+ public void cleanup(@Observes final AfterClass ignored) {
+ ActionSequence.reset(); // avoids to leak between tests, works
in war cause of classloading but not in embedded mode
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/tomee/blob/ba30d45d/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/CleanUpAssembler.java
----------------------------------------------------------------------
diff --git
a/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/CleanUpAssembler.java
b/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/CleanUpAssembler.java
deleted file mode 100644
index c31bd36..0000000
---
a/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/CleanUpAssembler.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.apache.openejb.tck.cdi.embedded;
-
-import org.apache.openejb.UndeployException;
-import org.apache.openejb.assembler.classic.AppInfo;
-import org.apache.openejb.assembler.classic.Assembler;
-import org.apache.openejb.loader.SystemInstance;
-import org.apache.openejb.spi.ContainerSystem;
-import org.jboss.cdi.tck.util.ActionSequence;
-
-public class CleanUpAssembler extends Assembler {
- @Override
- public void destroyApplication(final AppInfo appInfo) throws
UndeployException {
- super.destroyApplication(appInfo);
- if
(SystemInstance.get().getComponent(ContainerSystem.class).getAppContexts().isEmpty())
{
- ActionSequence.reset();
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/tomee/blob/ba30d45d/tck/cdi-embedded/src/test/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension
----------------------------------------------------------------------
diff --git
a/tck/cdi-embedded/src/test/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension
b/tck/cdi-embedded/src/test/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension
new file mode 100644
index 0000000..e7e35c9
--- /dev/null
+++
b/tck/cdi-embedded/src/test/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension
@@ -0,0 +1 @@
+org.apache.openejb.tck.cdi.embedded.ArquillianTestCleanUpExtension
http://git-wip-us.apache.org/repos/asf/tomee/blob/ba30d45d/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 b0a5663..9cad804 100644
--- a/tck/cdi-embedded/src/test/resources/failing.xml
+++ b/tck/cdi-embedded/src/test/resources/failing.xml
@@ -31,7 +31,7 @@
-Dopenejb.embedded.try-jsp=true
-->
<classes>
- <class
name="org.jboss.cdi.tck.tests.lookup.modules.SpecializedBeanInjectionNotAvailable02Test"
/>
+ <class
name="org.jboss.cdi.tck.tests.inheritance.specialization.enterprise.EnterpriseBeanSpecializationTest"
/>
</classes>
</test>
</suite>