Great news! :) On 13 Mar 2015 14:02, "Romain Manni-Bucau" <[email protected]> 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: <[email protected]> > 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: [email protected] > > > 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 <[email protected]> > Authored: Fri Mar 13 18:59:58 2015 +0100 > Committer: Romain Manni-Bucau <[email protected]> > 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> >
