This is an automated email from the ASF dual-hosted git repository. rmannibucau pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/openwebbeans.git
The following commit(s) were added to refs/heads/master by this push: new 65c9f59 OWB-1327 jakarta tck setup 65c9f59 is described below commit 65c9f5960d0cfe622c06fbe1fedadf42f27457fe Author: Romain Manni-Bucau <rmannibu...@gmail.com> AuthorDate: Mon Jun 8 11:28:27 2020 +0200 OWB-1327 jakarta tck setup --- pom.xml | 11 +- .../org/apache/webbeans/config/BeansDeployer.java | 7 +- .../event/ContainerEventObserverMethodImpl.java | 5 + .../webbeans/portable/events/AfterObserver.java | 27 ++ .../portable/events/ProcessAnnotatedTypeImpl.java | 29 +- .../portable/events/ProcessBeanAttributesImpl.java | 27 +- .../portable/events/ProcessInjectionPointImpl.java | 27 +- .../portable/events/ProcessObserverMethodImpl.java | 29 +- .../org/apache/webbeans/util/WebBeansUtil.java | 5 +- webbeans-tck-jakarta/dev-suite.xml | 39 +++ webbeans-tck-jakarta/pom.xml | 364 +++++++++++++++++++++ .../META-INF/openwebbeans/openwebbeans.properties | 47 +++ .../src/test/resources/META-INF/cdi-tck.properties | 25 ++ webbeans-tck-jakarta/standalone-suite.xml | 166 ++++++++++ 14 files changed, 786 insertions(+), 22 deletions(-) diff --git a/pom.xml b/pom.xml index edced5f..381bc1b 100644 --- a/pom.xml +++ b/pom.xml @@ -62,13 +62,13 @@ <geronimo_servlet.version>1.0</geronimo_servlet.version> <geronimo_ejb.version>1.0.2</geronimo_ejb.version> <geronimo_el.version>1.1</geronimo_el.version> - <geronimo_annotation.version>1.2</geronimo_annotation.version> + <geronimo_annotation.version>1.3</geronimo_annotation.version> <geronimo_jpa.version>1.1</geronimo_jpa.version> <geronimo_jta.version>1.1.1</geronimo_jta.version> <geronimo_jsp.version>1.0.1</geronimo_jsp.version> - <geronimo_cdi.version>1.1</geronimo_cdi.version> - <geronimo_atinject.version>1.1</geronimo_atinject.version> - <geronimo_interceptor.version>1.1</geronimo_interceptor.version> + <geronimo_cdi.version>1.2</geronimo_cdi.version> + <geronimo_atinject.version>1.2</geronimo_atinject.version> + <geronimo_interceptor.version>1.2</geronimo_interceptor.version> <geronimo_validation.version>1.1</geronimo_validation.version> <tomcat7.version>7.0.99</tomcat7.version> <!-- jetty 9.4.13+ broke session persistence: https://github.com/eclipse/jetty.project/issues/3597 --> @@ -469,7 +469,7 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> - <version>3.0.0-M3</version> + <version>3.0.0-M4</version> <configuration> <includes> <include>**/*Test.java</include> @@ -643,6 +643,7 @@ <module>samples</module> <module>atinject-tck</module> <module>webbeans-tck</module> + <module>webbeans-tck-jakarta</module> <module>distribution</module> <module>webbeans-maven</module> <module>webbeans-gradle</module> diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java b/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java index 5832fc1..5575472 100644 --- a/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java +++ b/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java @@ -1321,11 +1321,12 @@ public class BeansDeployer } // trigger a NoClassDefFoundError here, otherwise it would be thrown in observer methods - annotatedType.getJavaClass().getDeclaredMethods(); - annotatedType.getJavaClass().getDeclaredFields(); + Class<?> javaClass = annotatedType.getJavaClass(); + javaClass.getDeclaredMethods(); + javaClass.getDeclaredFields(); // Fires ProcessAnnotatedType - if (!annotatedType.getJavaClass().isAnnotation()) + if (!javaClass.isAnnotation()) { GProcessAnnotatedType processAnnotatedEvent = webBeansContext.getWebBeansUtil().fireProcessAnnotatedTypeEvent(annotatedType); if (!processAnnotatedEvent.isVeto()) diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/event/ContainerEventObserverMethodImpl.java b/webbeans-impl/src/main/java/org/apache/webbeans/event/ContainerEventObserverMethodImpl.java index 94b98a7..20426e9 100644 --- a/webbeans-impl/src/main/java/org/apache/webbeans/event/ContainerEventObserverMethodImpl.java +++ b/webbeans-impl/src/main/java/org/apache/webbeans/event/ContainerEventObserverMethodImpl.java @@ -20,6 +20,7 @@ package org.apache.webbeans.event; import org.apache.webbeans.component.AbstractOwbBean; import org.apache.webbeans.exception.WebBeansConfigurationException; +import org.apache.webbeans.portable.events.AfterObserver; import org.apache.webbeans.portable.events.discovery.ExtensionAware; import javax.enterprise.inject.spi.AnnotatedMethod; @@ -87,6 +88,10 @@ public class ContainerEventObserverMethodImpl<T> extends ObserverMethodImpl<T> { ExtensionAware.class.cast(extensionAware).setExtension(null); } + if (args.length > 0 && AfterObserver.class.isInstance(args[0])) + { + AfterObserver.class.cast(args[0]).afterObserver(); + } } public Class[] getWithAnnotations() diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/AfterObserver.java b/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/AfterObserver.java new file mode 100644 index 0000000..630d0d9 --- /dev/null +++ b/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/AfterObserver.java @@ -0,0 +1,27 @@ +/* + * 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.webbeans.portable.events; + +/** + * An lifecycle event implementing this API will have this callback after each observer. + */ +public interface AfterObserver +{ + void afterObserver(); +} diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessAnnotatedTypeImpl.java b/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessAnnotatedTypeImpl.java index af94499..f493ae0 100644 --- a/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessAnnotatedTypeImpl.java +++ b/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessAnnotatedTypeImpl.java @@ -30,9 +30,8 @@ import javax.enterprise.inject.spi.configurator.AnnotatedTypeConfigurator; * * @param <X> bean class info */ -public class ProcessAnnotatedTypeImpl<X> extends EventBase implements ProcessAnnotatedType<X> +public class ProcessAnnotatedTypeImpl<X> extends EventBase implements ProcessAnnotatedType<X>, AfterObserver { - private final WebBeansContext webBeansContext; @@ -90,12 +89,14 @@ public class ProcessAnnotatedTypeImpl<X> extends EventBase implements ProcessAnn public void setAnnotatedType(AnnotatedType<X> type) { checkState(); + if (configurator != null) + { + throw new IllegalStateException("You can't call " + + "setAnnotatedType() and configureAnnotatedType()"); + } annotatedType = type; modifiedAnnotatedType = true; - - // reset configurator - configurator = null; } /** @@ -123,6 +124,11 @@ public class ProcessAnnotatedTypeImpl<X> extends EventBase implements ProcessAnn public AnnotatedTypeConfigurator<X> configureAnnotatedType() { checkState(); + if (modifiedAnnotatedType) + { + throw new IllegalStateException("You can't call " + + "setAnnotatedType() and configureAnnotatedType()"); + } if (configurator == null) { @@ -142,4 +148,17 @@ public class ProcessAnnotatedTypeImpl<X> extends EventBase implements ProcessAnn return veto; } + @Override + public void afterObserver() + { + if (configurator != null) + { + annotatedType = configurator.getNewAnnotatedType(); + configurator = null; + } + else if (modifiedAnnotatedType) + { + modifiedAnnotatedType = false; + } + } } diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessBeanAttributesImpl.java b/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessBeanAttributesImpl.java index b0caf16..9c5a136 100644 --- a/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessBeanAttributesImpl.java +++ b/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessBeanAttributesImpl.java @@ -26,7 +26,7 @@ import javax.enterprise.inject.spi.configurator.BeanAttributesConfigurator; import org.apache.webbeans.config.WebBeansContext; import org.apache.webbeans.configurator.BeanAttributesConfiguratorImpl; -public class ProcessBeanAttributesImpl<T> extends EventBase implements ProcessBeanAttributes<T> +public class ProcessBeanAttributesImpl<T> extends EventBase implements ProcessBeanAttributes<T>, AfterObserver { private final WebBeansContext webBeansContext; private Annotated annotated; @@ -34,6 +34,7 @@ public class ProcessBeanAttributesImpl<T> extends EventBase implements ProcessBe private boolean veto; private Throwable definitionError; private boolean ignoreFinalMethods; + private boolean set; private BeanAttributesConfiguratorImpl beanAttributesConfigurator; public ProcessBeanAttributesImpl(WebBeansContext webBeansContext, Annotated annotated, BeanAttributes<T> attributes) @@ -61,8 +62,12 @@ public class ProcessBeanAttributesImpl<T> extends EventBase implements ProcessBe public void setBeanAttributes(BeanAttributes<T> tBeanAttributes) { checkState(); + if (beanAttributesConfigurator != null) + { + throw new IllegalStateException("you can't configure and set the bean attributes in the same extension"); + } + set = true; attributes = tBeanAttributes; - beanAttributesConfigurator = null; } @Override @@ -89,6 +94,10 @@ public class ProcessBeanAttributesImpl<T> extends EventBase implements ProcessBe public BeanAttributesConfigurator<T> configureBeanAttributes() { checkState(); + if (set) + { + throw new IllegalStateException("you can't configure and set the bean attributes in the same extension"); + } if (beanAttributesConfigurator == null) { @@ -122,5 +131,17 @@ public class ProcessBeanAttributesImpl<T> extends EventBase implements ProcessBe return definitionError; } - + @Override + public void afterObserver() + { + if (beanAttributesConfigurator != null) + { + attributes = beanAttributesConfigurator.getBeanAttributes(); + beanAttributesConfigurator = null; + } + else if (set) + { + set = false; + } + } } diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessInjectionPointImpl.java b/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessInjectionPointImpl.java index 823ea19..7f6a562 100644 --- a/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessInjectionPointImpl.java +++ b/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessInjectionPointImpl.java @@ -32,9 +32,10 @@ import javax.enterprise.inject.spi.configurator.InjectionPointConfigurator; * @param <T> bean class * @param <X> declared type */ -public class ProcessInjectionPointImpl<T, X> extends EventBase implements ProcessInjectionPoint<T, X> +public class ProcessInjectionPointImpl<T, X> extends EventBase implements ProcessInjectionPoint<T, X>, AfterObserver { + private boolean set; private InjectionPoint injectionPoint; private InjectionPointConfiguratorImpl injectionPointConfigurator; @@ -66,8 +67,12 @@ public class ProcessInjectionPointImpl<T, X> extends EventBase implements Proces public void setInjectionPoint(InjectionPoint injectionPoint) { checkState(); + if (injectionPointConfigurator != null) + { + throw new IllegalStateException("You can't set and configure the injection point at the same time"); + } + set = true; this.injectionPoint = injectionPoint; - this.injectionPointConfigurator = null; } /** @@ -84,6 +89,10 @@ public class ProcessInjectionPointImpl<T, X> extends EventBase implements Proces public InjectionPointConfigurator configureInjectionPoint() { checkState(); + if (set) + { + throw new IllegalStateException("You can't set and configure the injection point at the same time"); + } if (injectionPointConfigurator == null) { @@ -91,4 +100,18 @@ public class ProcessInjectionPointImpl<T, X> extends EventBase implements Proces } return injectionPointConfigurator; } + + @Override + public void afterObserver() + { + if (injectionPointConfigurator != null) + { + injectionPoint = injectionPointConfigurator.getInjectionPoint(); + injectionPointConfigurator = null; + } + else if (set) + { + set = false; + } + } } diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessObserverMethodImpl.java b/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessObserverMethodImpl.java index 73905b3..25cdd2a 100644 --- a/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessObserverMethodImpl.java +++ b/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessObserverMethodImpl.java @@ -36,7 +36,8 @@ import org.apache.webbeans.portable.events.discovery.ExtensionAware; * @param <X> declared bean class * @param <T> event type */ -public class ProcessObserverMethodImpl<T,X> extends EventBase implements ProcessObserverMethod<T, X>, ExtensionAware +public class ProcessObserverMethodImpl<T,X> extends EventBase implements ProcessObserverMethod<T, X>, ExtensionAware, + AfterObserver { private final WebBeansContext webBeansContext; @@ -46,6 +47,7 @@ public class ProcessObserverMethodImpl<T,X> extends EventBase implements Process /**ObserverMethod instance*/ private ObserverMethod<T> observerMethod; private boolean vetoed; + private boolean set; private ObserverMethodConfiguratorImpl observerMethodConfigurator; private Extension extension; @@ -78,6 +80,10 @@ public class ProcessObserverMethodImpl<T,X> extends EventBase implements Process public ObserverMethodConfigurator<T> configureObserverMethod() { checkState(); + if (set) + { + throw new IllegalStateException("You can't call setObserverMethod() and configureObserverMethod()"); + } if (observerMethodConfigurator == null) { @@ -114,8 +120,13 @@ public class ProcessObserverMethodImpl<T,X> extends EventBase implements Process public void setObserverMethod(ObserverMethod<T> observerMethod) { checkState(); + if (observerMethodConfigurator != null) + { + throw new IllegalStateException("You can't call " + + "setObserverMethod() and configureObserverMethod()"); + } + set = true; this.observerMethod = observerMethod; - this.observerMethodConfigurator = null; } @Override @@ -129,4 +140,18 @@ public class ProcessObserverMethodImpl<T,X> extends EventBase implements Process { return vetoed; } + + @Override + public void afterObserver() + { + if (observerMethodConfigurator != null) + { + observerMethod = observerMethodConfigurator.getObserverMethod(); + observerMethodConfigurator = null; + } + else if (set) + { + set = false; + } + } } diff --git a/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java b/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java index 108622f..2c14c6b 100644 --- a/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java +++ b/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java @@ -730,9 +730,10 @@ public final class WebBeansUtil //Fires ProcessAnnotatedType webBeansContext.getBeanManagerImpl().fireEvent(processAnnotatedEvent, true, AnnotationUtil.EMPTY_ANNOTATION_ARRAY); - if (processAnnotatedEvent.isModifiedAnnotatedType()) + AnnotatedType newAt = processAnnotatedEvent.getAnnotatedType(); + if (newAt != annotatedType) { - webBeansContext.getAnnotatedElementFactory().setAnnotatedType(processAnnotatedEvent.getAnnotatedType()); + webBeansContext.getAnnotatedElementFactory().setAnnotatedType(newAt); } return processAnnotatedEvent; diff --git a/webbeans-tck-jakarta/dev-suite.xml b/webbeans-tck-jakarta/dev-suite.xml new file mode 100644 index 0000000..97798d0 --- /dev/null +++ b/webbeans-tck-jakarta/dev-suite.xml @@ -0,0 +1,39 @@ +<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > +<!-- + + 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. +--> +<suite name="JSR-346-TCK" verbose="2" configfailurepolicy="continue"> + <test name="JSR-346 TCK"> + <classes> + <class name="org.jboss.cdi.tck.tests.extensions.beanDiscovery.event.ordering.LifecycleEventOrderingTest" /> + <!-- + + <class name="org.jboss.cdi.tck.tests.event.parameterized.ParameterizedEventTest" /> + <class name="org.jboss.cdi.tck.tests.event.fires.FireEventTest" /> + --> + </classes> + <groups> + <run> + <exclude name="integration"/> + <exclude name="javaee-full"/> + </run> + </groups> + </test> + <listeners> + <listener class-name="org.jboss.cdi.tck.impl.testng.SingleTestClassMethodInterceptor"/> + <listener class-name="org.jboss.cdi.tck.impl.testng.ProgressLoggingTestListener"/> + </listeners> +</suite> diff --git a/webbeans-tck-jakarta/pom.xml b/webbeans-tck-jakarta/pom.xml new file mode 100644 index 0000000..49a68a1 --- /dev/null +++ b/webbeans-tck-jakarta/pom.xml @@ -0,0 +1,364 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + 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. +--> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.apache.openwebbeans</groupId> + <artifactId>openwebbeans</artifactId> + <version>2.0.18-SNAPSHOT</version> + <relativePath>../pom.xml</relativePath> + </parent> + + <artifactId>openwebbeans-tck-jakarta</artifactId> + <name>CDI TCK runner (Jakarta)</name> + <packaging>jar</packaging> + <description>All TCK tests for the Apache OpenWebBeans Implementation for Jakarta flavor</description> + + <properties> + <tomcat-jakarta.version>10.0.0-M5</tomcat-jakarta.version> + <testng-suite>standalone</testng-suite> <!-- -Dtestng-suite=dev while working on TCK --> + </properties> + + <dependencyManagement> + <dependencies> + <dependency> + <groupId>org.jboss.arquillian</groupId> + <artifactId>arquillian-bom</artifactId> + <version>${arquillian.version}</version> + <type>pom</type> + <scope>import</scope> + </dependency> + </dependencies> + </dependencyManagement> + + <dependencies> + <dependency> + <groupId>org.apache.geronimo.specs</groupId> + <artifactId>geronimo-interceptor_1.2_spec</artifactId> + <version>${geronimo_interceptor.version}</version> + <classifier>jakarta</classifier> + </dependency> + <dependency> + <groupId>org.apache.geronimo.specs</groupId> + <artifactId>geronimo-annotation_1.3_spec</artifactId> + <version>${geronimo_annotation.version}</version> + <classifier>jakarta</classifier> + </dependency> + <dependency> + <groupId>org.apache.geronimo.specs</groupId> + <artifactId>geronimo-atinject_1.0_spec</artifactId> + <version>${geronimo_atinject.version}</version> + <classifier>jakarta</classifier> + </dependency> + <dependency> + <groupId>org.apache.openwebbeans</groupId> + <artifactId>openwebbeans-spi</artifactId> + <version>${project.version}</version> + <classifier>jakarta</classifier> + <exclusions> + <exclusion> + <groupId>org.apache.openwebbeans</groupId> + <artifactId>*</artifactId> + </exclusion> + <exclusion> + <groupId>org.apache.geronimo.specs</groupId> + <artifactId>*</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.apache.openwebbeans</groupId> + <artifactId>openwebbeans-impl</artifactId> + <version>${project.version}</version> + <classifier>jakarta</classifier> + <exclusions> + <exclusion> + <groupId>org.apache.openwebbeans</groupId> + <artifactId>*</artifactId> + </exclusion> + <exclusion> + <groupId>org.apache.geronimo.specs</groupId> + <artifactId>*</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> <!-- bring conversation service tck impl --> + <groupId>org.apache.openwebbeans</groupId> + <artifactId>openwebbeans-tck</artifactId> + <version>${project.version}</version> + <classifier>jakarta</classifier> + <exclusions> + <exclusion> + <groupId>*</groupId> + <artifactId>*</artifactId> + </exclusion> + </exclusions> + </dependency> + + <dependency> + <groupId>org.apache.xbean</groupId> + <artifactId>xbean-finder-shaded</artifactId> + </dependency> + + <dependency> + <groupId>org.testng</groupId> + <artifactId>testng</artifactId> + <version>6.8.8</version> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>org.apache.openwebbeans</groupId> + <artifactId>openwebbeans-ejb</artifactId> + <version>${project.version}</version> + <classifier>jakarta</classifier> + <exclusions> + <exclusion> + <groupId>*</groupId> + <artifactId>*</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.apache.openwebbeans</groupId> + <artifactId>openwebbeans-el22</artifactId> + <version>${project.version}</version> + <classifier>jakarta</classifier> + <exclusions> + <exclusion> + <groupId>*</groupId> + <artifactId>*</artifactId> + </exclusion> + </exclusions> + </dependency> + + <dependency> + <groupId>org.apache.geronimo.specs</groupId> + <artifactId>geronimo-jcdi_2.0_spec</artifactId> + <version>${geronimo_cdi.version}</version> + <classifier>jakarta</classifier> + </dependency> + + <dependency> + <groupId>org.apache.geronimo.specs</groupId> + <artifactId>geronimo-ejb_3.1_spec</artifactId> + </dependency> + + <dependency> + <groupId>jakarta.enterprise</groupId> + <artifactId>cdi-tck-impl</artifactId> + <version>3.0.0-M3</version> + <exclusions> + <exclusion> + <groupId>jakarta.enterprise</groupId> + <artifactId>jakarta.enterprise.cdi-api</artifactId> + </exclusion> + <exclusion> + <groupId>jakarta.servlet</groupId> + <artifactId>jakarta.servlet-api</artifactId> + </exclusion> + <exclusion> + <groupId>jakarta.servlet.jsp</groupId> + <artifactId>jakarta.servlet.jsp-api</artifactId> + </exclusion> + <exclusion> + <groupId>jakarta.interceptor</groupId> + <artifactId>jakarta.interceptor-api</artifactId> + </exclusion> + <exclusion> + <groupId>jakarta.annotation</groupId> + <artifactId>jakarta.annotation-api</artifactId> + </exclusion> + <exclusion> + <groupId>jakarta.el</groupId> + <artifactId>jakarta.el-api</artifactId> + </exclusion> + <exclusion> + <groupId>jakarta.inject</groupId> + <artifactId>jakarta.inject-api</artifactId> + </exclusion> + <!-- not yet G jakarta jars + <exclusion> + <groupId>jakarta.ejb</groupId> + <artifactId>jakarta.ejb-api</artifactId> + </exclusion> + <exclusion> + <groupId>jakarta.resource</groupId> + <artifactId>jakarta.resource-api</artifactId> + </exclusion> + <exclusion> + <groupId>jakarta.jms</groupId> + <artifactId>jakarta.jms-api</artifactId> + </exclusion> + <exclusion> + <groupId>jakarta.persistence</groupId> + <artifactId>jakarta.persistence-api</artifactId> + </exclusion> + <exclusion> + <groupId>jakarta.ws.rs</groupId> + <artifactId>jakarta.ws.rs-api</artifactId> + </exclusion> + <exclusion> + <groupId>jakarta.xml.ws</groupId> + <artifactId>jakarta.xml.ws-api</artifactId> + </exclusion> + <exclusion> + <groupId>jakarta.transaction</groupId> + <artifactId>jakarta.transaction-api</artifactId> + </exclusion> + <exclusion> + <groupId>jakarta.faces</groupId> + <artifactId>jakarta.faces-api</artifactId> + </exclusion> + --> + </exclusions> + </dependency> + </dependencies> + + <profiles> + <profile> + <id>tck</id> + <activation> + <activeByDefault>true</activeByDefault> + </activation> + + <dependencies> + <dependency> + <groupId>org.apache.openwebbeans</groupId> + <artifactId>openwebbeans-porting</artifactId> + <version>${project.version}</version> + <classifier>jakarta</classifier> + <exclusions> + <exclusion> + <groupId>*</groupId> + <artifactId>*</artifactId> + </exclusion> + </exclusions> + </dependency> + + <dependency> + <groupId>org.apache.openwebbeans.arquillian</groupId> + <artifactId>owb-arquillian-standalone</artifactId> + <version>${project.version}</version> + <classifier>jakarta</classifier> + <exclusions> + <exclusion> + <groupId>*</groupId> + <artifactId>*</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.jboss.arquillian.testenricher</groupId> + <artifactId>arquillian-testenricher-cdi-jakarta</artifactId> + <version>1.7.0.Alpha1</version> + </dependency> + + <dependency> + <!-- arquillian dependency hell hitting us again... --> + <groupId>org.jboss.arquillian.container</groupId> + <artifactId>arquillian-container-test-impl-base</artifactId> + <version>${arquillian.version}</version> + </dependency> + + <dependency> + <groupId>org.apache.tomcat</groupId> + <artifactId>tomcat-jsp-api</artifactId> + <version>${tomcat-jakarta.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.tomcat</groupId> + <artifactId>tomcat-el-api</artifactId> + <version>${tomcat-jakarta.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.tomcat</groupId> + <artifactId>tomcat-servlet-api</artifactId> + <version>${tomcat-jakarta.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.tomcat</groupId> + <artifactId>tomcat-jasper-el</artifactId> + <version>${tomcat-jakarta.version}</version> + <scope>test</scope> + </dependency> + <!-- + <dependency> + <groupId>org.apache.geronimo.specs</groupId> + <artifactId>geronimo-jta_1.1_spec</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.myfaces.core</groupId> + <artifactId>myfaces-api</artifactId> + <scope>test</scope> + </dependency> + --> + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <configuration> + <trimStackTrace>false</trimStackTrace> + <excludedGroups>integration,javaee-full</excludedGroups> + <suiteXmlFiles> + <suiteXmlFile>${testng-suite}-suite.xml</suiteXmlFile> + </suiteXmlFiles> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-dependency-plugin</artifactId> + <executions> + <execution> + <id>copy-tck</id> + <phase>generate-test-sources</phase> + <goals> + <goal>copy</goal> + </goals> + <configuration> + <artifactItems> + + <!-- OWB Porting Package --> + <artifactItem> + <groupId>org.apache.openwebbeans</groupId> + <artifactId>openwebbeans-porting</artifactId> + <classifier>jakarta</classifier> + <overWrite>true</overWrite> + <outputDirectory>${project.build.directory}/dependency/lib</outputDirectory> + </artifactItem> + </artifactItems> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> +</project> diff --git a/webbeans-tck-jakarta/src/main/resources/META-INF/openwebbeans/openwebbeans.properties b/webbeans-tck-jakarta/src/main/resources/META-INF/openwebbeans/openwebbeans.properties new file mode 100644 index 0000000..4637dd8 --- /dev/null +++ b/webbeans-tck-jakarta/src/main/resources/META-INF/openwebbeans/openwebbeans.properties @@ -0,0 +1,47 @@ +#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. +#--------------------------------------------------------------- +# The TCK configuration for OpenWebBeans +# +#--------------------------------------------------------------- + + +################################################################################################ +###################################### TCK CONFIGURATION SECTION ############################### +################################################################################################ + +# this is the tck configuration, thus it has a very high ordinal of 150 +configuration.ordinal=150 + +org.apache.webbeans.application.supportsProducerInterception = false + +# enable verification of programmatic qualifiers +org.apache.webbeans.strictDynamicValidation = true + +org.apache.webbeans.spi.ConversationService = org.apache.openwebbeans.tck.conversation.TckConversationService +org.apache.webbeans.application.supportsConversation=true + + +# we have to switch back to the un-cached version of the normal scoping handler +org.apache.webbeans.proxy.mapping.jakarta.enterprise.context.ApplicationScoped=org.apache.webbeans.intercept.NormalScopedBeanInterceptorHandler + + +org.apache.webbeans.container.InjectionResolver.fastMatching = false + +# only org.jboss.cdi.tck.tests.extensions.beanManager.beanAttributes.CreateBeanAttributesTest currently +# we can write an arquillian extension to avoid to set it globally +org.apache.webbeans.service.DefaultInjectionPointService.implicitSupport = false diff --git a/webbeans-tck-jakarta/src/test/resources/META-INF/cdi-tck.properties b/webbeans-tck-jakarta/src/test/resources/META-INF/cdi-tck.properties new file mode 100644 index 0000000..e01925a --- /dev/null +++ b/webbeans-tck-jakarta/src/test/resources/META-INF/cdi-tck.properties @@ -0,0 +1,25 @@ +# 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. + +org.jboss.cdi.tck.libraryDirectory=target/dependency/lib +org.jboss.cdi.tck.testDataSource=java\:default +org.jboss.cdi.tck.testJmsConnectionFactory=java\:default +org.jboss.cdi.tck.testJmsQueue=java\:default +org.jboss.cdi.tck.testJmsTopic=java\:default +org.jboss.cdi.tck.spi.Beans=org.apache.webbeans.test.tck.BeansImpl +org.jboss.cdi.tck.spi.Contexts=org.apache.webbeans.test.tck.ContextsImpl +org.jboss.cdi.tck.spi.EL=org.apache.webbeans.test.tck.ELImpl diff --git a/webbeans-tck-jakarta/standalone-suite.xml b/webbeans-tck-jakarta/standalone-suite.xml new file mode 100644 index 0000000..208b02a --- /dev/null +++ b/webbeans-tck-jakarta/standalone-suite.xml @@ -0,0 +1,166 @@ +<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > +<!-- + + 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. +--> +<suite name="JSR-346-TCK" verbose="2" configfailurepolicy="continue" > + + <listeners> + <!-- Required - avoid randomly mixed test method execution --> + <listener class-name="org.jboss.cdi.tck.impl.testng.SingleTestClassMethodInterceptor"/> + <!-- Optional - intended for debug purpose only --> + <listener class-name="org.jboss.cdi.tck.impl.testng.ConfigurationLoggingListener"/> + <listener class-name="org.jboss.cdi.tck.impl.testng.ProgressLoggingTestListener"/> + <!-- Optional - it's recommended to disable the default JUnit XML reporter --> + <!-- this is slow, activate locally if needed + <listener class-name="org.testng.reporters.SuiteHTMLReporter"/> + <listener class-name="org.testng.reporters.FailedReporter"/> + <listener class-name="org.testng.reporters.XMLReporter"/> + <listener class-name="org.testng.reporters.EmailableReporter"/> + <listener class-name="org.testng.reporters.TestHTMLReporter"/> + --> + </listeners> + + <test name="JSR-346 TCK"> + <groups> + <run> + <exclude name="integration" /> + <exclude name="javaee-full" /> + </run> + </groups> + + + <packages> + <package name="org.jboss.cdi.tck.tests.*"> + + <!--X TODO OWB-1182 CDI 2.0 exlcuded for now - current focus on ee --> + <exclude name="org.jboss.cdi.tck.tests.se.*" /> + </package> + + <package name="org.jboss.cdi.tck.interceptors.tests.*"/> + + </packages> + + + <classes> + + <!-- Tests broken in the CDI-2.0 TCK: --> + + <!-- https://issues.jboss.org/projects/CDITCK/issues/CDITCK-576 --> + <class name="org.jboss.cdi.tck.tests.context.passivating.dependency.builtin.BuiltinBeanPassivationDependencyTest"> + <methods> + <exclude name="testInjectionPoint"/> + </methods> + </class> + + <!-- https://issues.jboss.org/browse/CDITCK-577 --> + <class name="org.jboss.cdi.tck.tests.definition.bean.BeanDefinitionTest"> + <methods> + <exclude name="testRawBeanTypes"/> + </methods> + </class> + + <!-- https://issues.jboss.org/browse/CDITCK-432 --> + <class name="org.jboss.cdi.tck.tests.decorators.builtin.event.complex.ComplexEventDecoratorTest"> + <methods><exclude name=".*"/></methods> + </class> + + <!-- https://issues.jboss.org/browse/CDITCK-578, https://issues.jboss.org/browse/CDITCK-579 --> + <class name="org.jboss.cdi.tck.tests.definition.bean.custom.CustomBeanImplementationTest"> + <methods> + <exclude name="testCustomBeanIsPassivationCapable"/> + <exclude name="testCustomBeanIsPassivationCapableDependency"/> + <exclude name="testInjectionPointGetMemberIsUsedToDetermineTheClassThatDeclaresAnInjectionPoint"/> + </methods> + </class> + + <!-- this tests Weld specific internals --> + <class name="org.jboss.cdi.tck.tests.definition.bean.types.illegal.BeanTypesWithIllegalTypeTest"> + <methods><exclude name=".*"/></methods> + </class> + + <!-- https://issues.jboss.org/browse/CDITCK-580 --> + <class name="org.jboss.cdi.tck.tests.inheritance.specialization.simple.SimpleBeanSpecializationTest"> + <methods><exclude name=".*"/></methods> + </class> + + <!-- https://issues.jboss.org/browse/CDI-498 dots in EL names are not allowed by the EL spec. --> + <class name="org.jboss.cdi.tck.tests.lookup.el.ResolutionByNameTest"> + <methods><exclude name="testBeanNameWithSeparatedListOfELIdentifiers"/></methods> + </class> + + <!-- OWB provides a bit more for @New than CDI requires + https://issues.jboss.org/browse/CDITCK-581 + --> + <class name="org.jboss.cdi.tck.tests.lookup.dynamic.DynamicLookupTest"> + <methods> + <exclude name="testNewBeanNotEnabledWithouInjectionPoint"/> + <exclude name="testDuplicateBindingsThrowsException"/> + </methods> + </class> + + <!-- https://issues.jboss.org/browse/CDITCK-582 --> + <class name="org.jboss.cdi.tck.tests.deployment.discovery.BeanDiscoveryTest"> + <methods><exclude name=".*"/></methods> + </class> + + <!-- https://issues.jboss.org/browse/CDITCK-586 --> + <class name="org.jboss.cdi.tck.tests.event.observer.async.basic.MixedObserversTest"> + <methods><exclude name="testAsyncObserversCalledInDifferentThread"/></methods> + </class> + + <!-- https://issues.jboss.org/browse/CDITCK-588 equals on AnnotatedType --> + <!-- https://issues.jboss.org/browse/CDITCK-589 because the ct predicate ends up randomly removing from the wrong ct --> + <class name="org.jboss.cdi.tck.tests.extensions.configurators.annotatedTypeConfigurator.AnnotatedTypeConfiguratorTest"> + <methods><exclude name=".*"/></methods> + </class> + + <!-- https://issues.jboss.org/browse/CDITCK-573 should be solved with tck 2.0.1.Final --> + <class name="org.jboss.cdi.tck.tests.extensions.configurators.bean.BeanConfiguratorTest"> + <methods><exclude name=".*"/></methods> + </class> + + <!-- https://issues.jboss.org/browse/CDITCK-591 --> + <class name="org.jboss.cdi.tck.tests.extensions.alternative.metadata.AlternativeMetadataTest"> + <methods><exclude name=".*"/></methods> + </class> + + <!-- https://issues.jboss.org/browse/CDI-581 , both tests...--> + <class name="org.jboss.cdi.tck.tests.extensions.lifecycle.processBeanAttributes.specialization.VetoTest"> + <methods><exclude name=".*"/></methods> + </class> + <class name="org.jboss.cdi.tck.tests.extensions.lifecycle.processBeanAttributes.specialization.SpecializationTest"> + <methods><exclude name=".*"/></methods> + </class> + + <!-- CDITCK-466 --> + <class name="org.jboss.cdi.tck.tests.extensions.lifecycle.bbd.broken.passivatingScope.AddingPassivatingScopeTest"> + <methods> + <exclude name=".*"/> + </methods> + </class> + + <!-- https://issues.redhat.com/browse/CDITCK-590 --> + <class name="org.jboss.cdi.tck.tests.extensions.beanDiscovery.event.ordering.LifecycleEventOrderingTest"> + <methods> + <exclude name=".*"/> + </methods> + </class> + </classes> + + + </test> + +</suite>