You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomee.apache.org by Romain Manni-Bucau <rm...@gmail.com> on 2015/03/13 19:01:17 UTC

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

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>.
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>
>