update CI scripts
Signed-off-by: Raymond Augé <rotty3000@apache.org>
diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
index bd7817d..23708d0 100644
--- a/.github/workflows/maven.yml
+++ b/.github/workflows/maven.yml
@@ -10,20 +10,121 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-name: Java CI
+name: CI Build
on: [push, pull_request]
+env:
+ LC_ALL: en_US.UTF-8
+
jobs:
- build:
-
+ OpenJDK8_Linux:
+ name: OpenJDK8 Linux
runs-on: ubuntu-latest
-
steps:
- - uses: actions/checkout@v1
- - name: Set up JDK 1.8
+ - name: Git Checkout
+ uses: actions/checkout@v1
+ - name: Set up Java
uses: actions/setup-java@v1
with:
java-version: 1.8
- - name: Build with Maven - Java 8
- run: mvn -U -e -B -ntp verify
+ - name: Build OpenJDK8 Linux
+ run: mvn -U -e -B -ntp install -Pitests
+ OpenJDK11_Linux:
+ name: OpenJDK11 Linux
+ runs-on: ubuntu-latest
+ steps:
+ - name: Git Checkout
+ uses: actions/checkout@v1
+ - name: Set up Java
+ uses: actions/setup-java@v1
+ with:
+ java-version: 11
+ - name: Build OpenJDK11 Linux
+ run: mvn -U -e -B -ntp install -Pitests
+ OpenJDK13_Linux:
+ name: OpenJDK13 Linux
+ runs-on: ubuntu-latest
+ steps:
+ - name: Git Checkout
+ uses: actions/checkout@v1
+ - name: Set up Java
+ uses: actions/setup-java@v1
+ with:
+ java-version: 13
+ - name: Build OpenJDK13 Linux
+ run: mvn -U -e -B -ntp install -Pitests
+ OpenJDK8_Windows:
+ name: OpenJDK8 Windows
+ runs-on: windows-latest
+ steps:
+ - name: Git Checkout
+ uses: actions/checkout@v1
+ - name: Set up Java
+ uses: actions/setup-java@v1
+ with:
+ java-version: 1.8
+ - name: Build OpenJDK8 Windows
+ shell: bash
+ run: mvn -U -e -B -ntp install -Pitests
+ OpenJDK8_macOS:
+ name: OpenJDK8 macOS
+ runs-on: macos-latest
+ steps:
+ - name: Git Checkout
+ uses: actions/checkout@v1
+ - name: Set up Java
+ uses: actions/setup-java@v1
+ with:
+ java-version: 1.8
+ - name: Build OpenJDK8 macOS
+ shell: bash
+ run: mvn -U -e -B -ntp install -Pitests
+ OpenJDK8_Linux_Experimental:
+ name: OpenJDK8 Linux Experimental
+ runs-on: ubuntu-latest
+ steps:
+ - name: Git Checkout
+ uses: actions/checkout@v1
+ - name: Set up Java
+ uses: actions/setup-java@v1
+ with:
+ java-version: 1.8
+ - name: Build OpenJDK8 Linux Experimental
+ run: mvn -U -e -B -ntp install -Pexperimental
+ OpenJDK11_Linux_Experimental:
+ name: OpenJDK11 Linux Experimental
+ runs-on: ubuntu-latest
+ steps:
+ - name: Git Checkout
+ uses: actions/checkout@v1
+ - name: Set up Java
+ uses: actions/setup-java@v1
+ with:
+ java-version: 11
+ - name: Build OpenJDK11 Linux Experimental
+ run: mvn -U -e -B -ntp install -Pexperimental
+ OpenJDK13_Linux_Experimental:
+ name: OpenJDK13 Linux Experimental
+ runs-on: ubuntu-latest
+ steps:
+ - name: Git Checkout
+ uses: actions/checkout@v1
+ - name: Set up Java
+ uses: actions/setup-java@v1
+ with:
+ java-version: 13
+ - name: Build OpenJDK13 Linux Experimental
+ run: mvn -U -e -B -ntp install -Pexperimental
+# OpenJDK14_Linux_Experimental:
+# name: OpenJDK14 Linux Experimental
+# runs-on: ubuntu-latest
+# steps:
+# - name: Git Checkout
+# uses: actions/checkout@v1
+# - name: Set up Java
+# uses: actions/setup-java@v1
+# with:
+# java-version: 14.0.0-ea
+# - name: Build OpenJDK14 Linux Experimental
+# run: mvn -U -e -B -ntp install -Pexperimental
diff --git a/cdi-executable/base.bndrun b/cdi-executable/base.bndrun
index 6216eda..0219519 100644
--- a/cdi-executable/base.bndrun
+++ b/cdi-executable/base.bndrun
@@ -14,7 +14,7 @@
#-runvm: -Xdebug, "-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000"
-standalone: true
--runee: JavaSE-1.8
+-runee: JavaSE-${if;${startswith;${java.version};1.};${substring;${java.version};0;3};${subst;${java.version};\\..*}}
-runfw: org.eclipse.osgi
-runkeep: true
-runproperties: \
diff --git a/cdi-extender/pom.xml b/cdi-extender/pom.xml
index 9e47dbf..c373daf 100644
--- a/cdi-extender/pom.xml
+++ b/cdi-extender/pom.xml
@@ -210,7 +210,7 @@
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
- <version>2.13.0</version>
+ <version>3.2.4</version>
<scope>test</scope>
</dependency>
<dependency>
diff --git a/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ReferenceSync.java b/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ReferenceSync.java
index a4ef0dc..5a8d14c 100644
--- a/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ReferenceSync.java
+++ b/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/container/ReferenceSync.java
@@ -140,7 +140,7 @@
}
try (Syncro open = _syncro.open()) {
- _referenceDTO.matches.removeIf(d -> d.id == SRs.id(reference));
+ _referenceDTO.matches.removeIf(d -> SRs.id(reference) == d.id);
if (collectionType == CollectionType.BINDER_SERVICE ||
collectionType == CollectionType.BINDER_REFERENCE ||
diff --git a/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/FactoryActivator.java b/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/FactoryActivator.java
index d358161..68b782c 100644
--- a/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/FactoryActivator.java
+++ b/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/FactoryActivator.java
@@ -14,6 +14,8 @@
package org.apache.aries.cdi.container.internal.model;
+import static java.util.Objects.requireNonNull;
+
import java.lang.annotation.Annotation;
import java.util.Arrays;
import java.util.Map;
@@ -69,14 +71,15 @@
serviceRegistration = null;
}
- _instance.activations.removeIf(
+ _instance.activations.forEach(
a -> {
ExtendedActivationDTO extended = (ExtendedActivationDTO)a;
- extended.onClose.accept(extended);
- return true;
+ requireNonNull(extended.onClose).accept(extended);
}
);
+ _instance.activations.clear();
+
_instance.active = false;
return true;
diff --git a/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/SingleActivator.java b/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/SingleActivator.java
index a59d5a3..ee02cfd 100644
--- a/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/SingleActivator.java
+++ b/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/model/SingleActivator.java
@@ -14,11 +14,12 @@
package org.apache.aries.cdi.container.internal.model;
+import static java.util.Objects.requireNonNull;
+
import java.lang.annotation.Annotation;
import java.util.Arrays;
import java.util.Map;
import java.util.Map.Entry;
-import java.util.Objects;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
@@ -69,16 +70,15 @@
serviceRegistration = null;
}
- _instance.activations.removeIf(
+ _instance.activations.forEach(
a -> {
ExtendedActivationDTO extended = (ExtendedActivationDTO)a;
- Objects.requireNonNull(extended);
- Objects.requireNonNull(extended.onClose);
- extended.onClose.accept(extended);
- return true;
+ requireNonNull(extended.onClose).accept(extended);
}
);
+ _instance.activations.clear();
+
_instance.active = false;
return true;
diff --git a/cdi-extension-mp-config/base-itest.bndrun b/cdi-extension-mp-config/base-itest.bndrun
index b12de6f..f7dc2a3 100644
--- a/cdi-extension-mp-config/base-itest.bndrun
+++ b/cdi-extension-mp-config/base-itest.bndrun
@@ -13,7 +13,7 @@
#-runjdb: 8000
-standalone: true
--runee: JavaSE-1.8
+-runee: JavaSE-${if;${startswith;${java.version};1.};${substring;${java.version};0;3};${subst;${java.version};\\..*}}
-runfw: org.eclipse.osgi
-runproperties: \
eclipse.log.enabled=false,\
diff --git a/cdi-extension-mp-config/pom.xml b/cdi-extension-mp-config/pom.xml
index 34ce7c3..0c62b97 100644
--- a/cdi-extension-mp-config/pom.xml
+++ b/cdi-extension-mp-config/pom.xml
@@ -209,6 +209,12 @@
<artifactId>org.osgi.test.assertj</artifactId>
<version>1.0.0-SNAPSHOT</version>
<scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.osgi</groupId>
+ <artifactId>osgi.promise</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
@@ -228,7 +234,7 @@
<execution>
<id>bnd-process-test</id>
<goals>
- <goal>bnd-process-test</goal>
+ <goal>bnd-process-tests</goal>
</goals>
<configuration>
<bnd><![CDATA[
diff --git a/cdi-extension-mp-config/src/test/java/org/apache/aries/cdi/extension/mp/config/test/BaseTestCase.java b/cdi-extension-mp-config/src/test/java/org/apache/aries/cdi/extension/mp/config/test/BaseTestCase.java
index ad8165d..b2075d7 100644
--- a/cdi-extension-mp-config/src/test/java/org/apache/aries/cdi/extension/mp/config/test/BaseTestCase.java
+++ b/cdi-extension-mp-config/src/test/java/org/apache/aries/cdi/extension/mp/config/test/BaseTestCase.java
@@ -35,7 +35,7 @@
@RequireCDIExtension("eclipse.microprofile.config")
public abstract class BaseTestCase {
- public static final long timeout = 500;
+ public static final long timeout = 5000;
@Rule
public BundleContextRule bcr = new BundleContextRule();
@@ -55,6 +55,18 @@
}
};
+ public <S,T> CloseableTracker<S, T> track(Class<S> typeToTrack) {
+ CloseableTracker<S, T> tracker = new CloseableTracker<>(bcr.getBundleContext(), typeToTrack);
+ tracker.open();
+ return tracker;
+ }
+
+ public <S,T> CloseableTracker<S, T> track(Class<S> typeToTrack, String pattern, Object... objects) {
+ CloseableTracker<S, T> tracker = new CloseableTracker<>(bcr.getBundleContext(), format("(&(objectClass=%s)%s)", typeToTrack.getName(), format(pattern, objects)));
+ tracker.open();
+ return tracker;
+ }
+
public <S,T> CloseableTracker<S, T> track(Filter filter) {
CloseableTracker<S, T> tracker = new CloseableTracker<>(bcr.getBundleContext(), filter);
tracker.open();
@@ -114,6 +126,10 @@
public static class CloseableTracker<S, T> extends ServiceTracker<S, T> implements AutoCloseable {
+ public CloseableTracker(BundleContext context, Class<S> typeToTrack) {
+ super(context, typeToTrack, null);
+ }
+
public CloseableTracker(BundleContext context, Filter filter) {
super(context, filter, null);
}
diff --git a/cdi-extension-mp-config/src/test/java/org/apache/aries/cdi/extension/mp/config/test/MpConfigTests.java b/cdi-extension-mp-config/src/test/java/org/apache/aries/cdi/extension/mp/config/test/MpConfigTests.java
index 917179e..87690c8 100644
--- a/cdi-extension-mp-config/src/test/java/org/apache/aries/cdi/extension/mp/config/test/MpConfigTests.java
+++ b/cdi-extension-mp-config/src/test/java/org/apache/aries/cdi/extension/mp/config/test/MpConfigTests.java
@@ -16,19 +16,26 @@
import static org.assertj.core.api.Assertions.assertThat;
+import javax.enterprise.inject.spi.BeanManager;
+
import org.apache.aries.cdi.extension.mp.config.test.interfaces.Pojo;
import org.junit.Test;
+import org.osgi.framework.Bundle;
public class MpConfigTests extends BaseTestCase {
@Test
public void testConfigIsSet() throws Exception {
- bcr.installBundle("tb01.jar");
+ Bundle bundle = bcr.installBundle("tb01.jar");
- try (CloseableTracker<Pojo, Pojo> tracker = track("(objectClass=%s)", Pojo.class.getName())) {
- Pojo pojo = tracker.waitForService(timeout);
+ try (CloseableTracker<BeanManager, BeanManager> bmt = track(BeanManager.class, "(service.bundleid=%d)", bundle.getBundleId())) {
+ assertThat(bmt.waitForService(timeout)).isNotNull();
- assertThat(pojo).extracting(it -> it.foo(null)).isEqualTo("[foo]");
+ try (CloseableTracker<Pojo, Pojo> tracker = track("(objectClass=%s)", Pojo.class.getName())) {
+ Pojo pojo = tracker.waitForService(timeout);
+
+ assertThat(pojo).isNotNull().extracting(it -> it.foo(null)).isEqualTo("[foo]");
+ }
}
}
diff --git a/cdi-extension-mp-jwt-auth/base-itest.bndrun b/cdi-extension-mp-jwt-auth/base-itest.bndrun
index b12de6f..f7dc2a3 100644
--- a/cdi-extension-mp-jwt-auth/base-itest.bndrun
+++ b/cdi-extension-mp-jwt-auth/base-itest.bndrun
@@ -13,7 +13,7 @@
#-runjdb: 8000
-standalone: true
--runee: JavaSE-1.8
+-runee: JavaSE-${if;${startswith;${java.version};1.};${substring;${java.version};0;3};${subst;${java.version};\\..*}}
-runfw: org.eclipse.osgi
-runproperties: \
eclipse.log.enabled=false,\
diff --git a/cdi-extension-mp-jwt-auth/pom.xml b/cdi-extension-mp-jwt-auth/pom.xml
index 42da435..a40f057 100644
--- a/cdi-extension-mp-jwt-auth/pom.xml
+++ b/cdi-extension-mp-jwt-auth/pom.xml
@@ -365,7 +365,7 @@
<execution>
<id>bnd-process-test</id>
<goals>
- <goal>bnd-process-test</goal>
+ <goal>bnd-process-tests</goal>
</goals>
<configuration>
<bnd><![CDATA[
diff --git a/cdi-extension-mp-jwt-auth/src/test/java/org/apache/aries/cdi/extension/mp/jwt/test/BaseTestCase.java b/cdi-extension-mp-jwt-auth/src/test/java/org/apache/aries/cdi/extension/mp/jwt/test/BaseTestCase.java
index b5f6d0f..f36e8ed 100644
--- a/cdi-extension-mp-jwt-auth/src/test/java/org/apache/aries/cdi/extension/mp/jwt/test/BaseTestCase.java
+++ b/cdi-extension-mp-jwt-auth/src/test/java/org/apache/aries/cdi/extension/mp/jwt/test/BaseTestCase.java
@@ -33,7 +33,7 @@
public abstract class BaseTestCase {
- public static final long timeout = 500;
+ public static final long timeout = 5000;
@Rule
public BundleContextRule bcr = new BundleContextRule();
diff --git a/cdi-extension-mp-metrics/base-itest.bndrun b/cdi-extension-mp-metrics/base-itest.bndrun
index b12de6f..f7dc2a3 100644
--- a/cdi-extension-mp-metrics/base-itest.bndrun
+++ b/cdi-extension-mp-metrics/base-itest.bndrun
@@ -13,7 +13,7 @@
#-runjdb: 8000
-standalone: true
--runee: JavaSE-1.8
+-runee: JavaSE-${if;${startswith;${java.version};1.};${substring;${java.version};0;3};${subst;${java.version};\\..*}}
-runfw: org.eclipse.osgi
-runproperties: \
eclipse.log.enabled=false,\
diff --git a/cdi-extension-mp-metrics/pom.xml b/cdi-extension-mp-metrics/pom.xml
index 7b808d0..d57b04d 100644
--- a/cdi-extension-mp-metrics/pom.xml
+++ b/cdi-extension-mp-metrics/pom.xml
@@ -270,7 +270,7 @@
<execution>
<id>bnd-process-test</id>
<goals>
- <goal>bnd-process-test</goal>
+ <goal>bnd-process-tests</goal>
</goals>
<configuration>
<bnd><![CDATA[
diff --git a/cdi-extension-mp-metrics/src/test/java/org/apache/aries/cdi/extension/mp/metrics/test/BaseTestCase.java b/cdi-extension-mp-metrics/src/test/java/org/apache/aries/cdi/extension/mp/metrics/test/BaseTestCase.java
index 392c44d..b4a9161 100644
--- a/cdi-extension-mp-metrics/src/test/java/org/apache/aries/cdi/extension/mp/metrics/test/BaseTestCase.java
+++ b/cdi-extension-mp-metrics/src/test/java/org/apache/aries/cdi/extension/mp/metrics/test/BaseTestCase.java
@@ -33,7 +33,7 @@
public abstract class BaseTestCase {
- public static final long timeout = 500;
+ public static final long timeout = 5000;
@Rule
public BundleContextRule bcr = new BundleContextRule();
@@ -53,6 +53,18 @@
}
};
+ public <S,T> CloseableTracker<S, T> track(Class<S> typeToTrack) {
+ CloseableTracker<S, T> tracker = new CloseableTracker<>(bcr.getBundleContext(), typeToTrack);
+ tracker.open();
+ return tracker;
+ }
+
+ public <S,T> CloseableTracker<S, T> track(Class<S> typeToTrack, String pattern, Object... objects) {
+ CloseableTracker<S, T> tracker = new CloseableTracker<>(bcr.getBundleContext(), format("(&(objectClass=%s)%s)", typeToTrack.getName(), format(pattern, objects)));
+ tracker.open();
+ return tracker;
+ }
+
public <S,T> CloseableTracker<S, T> track(Filter filter) {
CloseableTracker<S, T> tracker = new CloseableTracker<>(bcr.getBundleContext(), filter);
tracker.open();
@@ -112,6 +124,10 @@
public static class CloseableTracker<S, T> extends ServiceTracker<S, T> implements AutoCloseable {
+ public CloseableTracker(BundleContext context, Class<S> typeToTrack) {
+ super(context, typeToTrack, null);
+ }
+
public CloseableTracker(BundleContext context, Filter filter) {
super(context, filter, null);
}
diff --git a/cdi-extension-mp-metrics/src/test/java/org/apache/aries/cdi/extension/mp/metrics/test/MpMetricsTests.java b/cdi-extension-mp-metrics/src/test/java/org/apache/aries/cdi/extension/mp/metrics/test/MpMetricsTests.java
index 8d004fa..d7b8751 100644
--- a/cdi-extension-mp-metrics/src/test/java/org/apache/aries/cdi/extension/mp/metrics/test/MpMetricsTests.java
+++ b/cdi-extension-mp-metrics/src/test/java/org/apache/aries/cdi/extension/mp/metrics/test/MpMetricsTests.java
@@ -14,45 +14,68 @@
package org.apache.aries.cdi.extension.mp.metrics.test;
+import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
+import static javax.ws.rs.core.MediaType.APPLICATION_JSON_TYPE;
+import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
+import static org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants.JAX_RS_MEDIA_TYPE;
+import javax.enterprise.inject.spi.BeanManager;
+import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.Response;
+import javax.ws.rs.ext.MessageBodyReader;
import org.apache.aries.cdi.extension.mp.metrics.test.interfaces.Pojo;
import org.assertj.core.api.Assertions;
+import org.junit.Rule;
import org.junit.Test;
+import org.osgi.framework.Bundle;
+import org.osgi.test.junit4.service.ServiceUseRule;
public class MpMetricsTests extends JaxrsBaseTestCase {
+ @Rule
+ @SuppressWarnings("rawtypes")
+ public ServiceUseRule<MessageBodyReader> mbr = new ServiceUseRule.Builder<>(MessageBodyReader.class) //
+ .filter("(%s=%s)", JAX_RS_MEDIA_TYPE, APPLICATION_JSON)
+ .build();
+
@Test
public void testMetrics() throws Exception {
- bcr.installBundle("tb01.jar");
+ Bundle bundle = bcr.installBundle("tb01.jar");
- try (CloseableTracker<Pojo, Pojo> tracker = track("(objectClass=%s)", Pojo.class.getName())) {
- Pojo pojo = tracker.waitForService(timeout);
- assertNotNull(pojo);
+ try (CloseableTracker<BeanManager, BeanManager> bmt = track(BeanManager.class, "(service.bundleid=%d)", bundle.getBundleId())) {
+ assertThat(bmt.waitForService(timeout)).isNotNull();
- WebTarget webTarget = cbr.getService().build().target(getJaxrsEndpoint()).path("/metrics/application");
+ try (CloseableTracker<Pojo, Pojo> tracker = track("(objectClass=%s)", Pojo.class.getName())) {
+ Pojo pojo = tracker.waitForService(timeout);
+ assertNotNull(pojo);
- Response response = webTarget.request().get();
+ final ClientBuilder cb = cbr.getService();
+ cb.register(mbr.getService());
- assertEquals(response.readEntity(String.class),200, response.getStatus());
+ WebTarget webTarget = cb.build().target(getJaxrsEndpoint()).path("/metrics/application");
- String result = response.readEntity(String.class);
+ Response response = webTarget.request(APPLICATION_JSON_TYPE).get();
- assertEquals("{\"org.apache.aries.cdi.extension.mp.metrics.test.tb01.A.applicationCount\":0}", result);
+ assertEquals(response.readEntity(String.class),200, response.getStatus());
- Assertions.assertThat(pojo.foo("Count: ")).isEqualTo("Count: 1");
+ String result = response.readEntity(String.class);
- response = webTarget.request().get();
+ assertEquals("{\"org.apache.aries.cdi.extension.mp.metrics.test.tb01.A.applicationCount\":0}", result);
- assertEquals(200, response.getStatus());
+ Assertions.assertThat(pojo.foo("Count: ")).isEqualTo("Count: 1");
- result = response.readEntity(String.class);
+ response = webTarget.request(APPLICATION_JSON_TYPE).get();
- assertEquals("{\"org.apache.aries.cdi.extension.mp.metrics.test.tb01.A.applicationCount\":1}", result);
+ assertEquals(200, response.getStatus());
+
+ result = response.readEntity(String.class);
+
+ assertEquals("{\"org.apache.aries.cdi.extension.mp.metrics.test.tb01.A.applicationCount\":1}", result);
+ }
}
}
diff --git a/cdi-extension-servlet-weld/src/main/java/org/apache/aries/cdi/extension/servlet/weld/WeldServletExtension.java b/cdi-extension-servlet-weld/src/main/java/org/apache/aries/cdi/extension/servlet/weld/WeldServletExtension.java
index c1c1e8d..a91af52 100644
--- a/cdi-extension-servlet-weld/src/main/java/org/apache/aries/cdi/extension/servlet/weld/WeldServletExtension.java
+++ b/cdi-extension-servlet-weld/src/main/java/org/apache/aries/cdi/extension/servlet/weld/WeldServletExtension.java
@@ -23,6 +23,8 @@
import java.util.Dictionary;
import java.util.Hashtable;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import javax.annotation.Priority;
@@ -135,6 +137,7 @@
implements HttpSessionListener, ServletContextListener, ServletRequestListener {
private final T delegate;
+ private final CountDownLatch latch = new CountDownLatch(1);
public ListenerWrapper(T delegate) {
this.delegate = delegate;
@@ -143,7 +146,9 @@
@Override
public void contextDestroyed(ServletContextEvent sce) {
try {
+ latch.await(20, TimeUnit.SECONDS);
delegate.contextDestroyed(sce);
+ } catch (InterruptedException e) {
}
finally {
destroyed.set(true);
@@ -153,26 +158,43 @@
@Override
public void contextInitialized(ServletContextEvent sce) {
delegate.contextInitialized(sce);
+ latch.countDown();
}
@Override
public void requestDestroyed(ServletRequestEvent sre) {
- delegate.requestDestroyed(sre);
+ try {
+ latch.await(20, TimeUnit.SECONDS);
+ delegate.requestDestroyed(sre);
+ } catch (InterruptedException e) {
+ }
}
@Override
public void requestInitialized(ServletRequestEvent sre) {
- delegate.requestInitialized(sre);
+ try {
+ latch.await(20, TimeUnit.SECONDS);
+ delegate.requestInitialized(sre);
+ } catch (InterruptedException e) {
+ }
}
@Override
public void sessionCreated(HttpSessionEvent se) {
- delegate.sessionCreated(se);
+ try {
+ latch.await(20, TimeUnit.SECONDS);
+ delegate.sessionCreated(se);
+ } catch (InterruptedException e) {
+ }
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
- delegate.sessionDestroyed(se);
+ try {
+ latch.await(20, TimeUnit.SECONDS);
+ delegate.sessionDestroyed(se);
+ } catch (InterruptedException e) {
+ }
}
}
diff --git a/cdi-itests/base-itest.bndrun b/cdi-itests/base-itest.bndrun
index 9a421cb..92a9782 100644
--- a/cdi-itests/base-itest.bndrun
+++ b/cdi-itests/base-itest.bndrun
@@ -13,7 +13,7 @@
#-runjdb: 8000
-standalone: true
--runee: JavaSE-1.8
+-runee: JavaSE-${if;${startswith;${java.version};1.};${substring;${java.version};0;3};${subst;${java.version};\\..*}}
-runfw: org.eclipse.osgi
-runproperties: \
eclipse.log.enabled=false,\
diff --git a/cdi-itests/pom.xml b/cdi-itests/pom.xml
index d478c15..40459a0 100644
--- a/cdi-itests/pom.xml
+++ b/cdi-itests/pom.xml
@@ -357,15 +357,4 @@
</plugin>
</plugins>
</build>
-
- <repositories>
- <repository>
- <id>Sonatype OSSR</id>
- <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
- <layout>default</layout>
- <releases>
- <enabled>false</enabled>
- </releases>
- </repository>
- </repositories>
</project>
diff --git a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/CdiExtenderTests.java b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/CdiExtenderTests.java
index 0a83e39..f195bbb 100644
--- a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/CdiExtenderTests.java
+++ b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/CdiExtenderTests.java
@@ -30,7 +30,7 @@
public void testStopExtender() throws Exception {
Bundle cdiExtenderBundle = getCdiExtenderBundle();
- try (CloseableTracker<BeanManager, BeanManager> tracker = trackBM(cdiBundle);) {
+ try (CloseableTracker<BeanManager, BeanManager> tracker = trackBM(cdiBundle.getBundleId());) {
BeanManager beanManager = tracker.waitForService(timeout);
assertNotNull(beanManager);
diff --git a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/JndiExtensionTests.java b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/JndiExtensionTests.java
index e4680fc..de0928e 100644
--- a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/JndiExtensionTests.java
+++ b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/JndiExtensionTests.java
@@ -18,6 +18,8 @@
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
+import java.util.Arrays;
+
import javax.enterprise.inject.spi.BeanManager;
import javax.naming.InitialContext;
@@ -34,9 +36,7 @@
@Test
public void testGetBeanManagerThroughJNDI() throws Exception {
- Bundle testBundle = bcr.installBundle("tb21.jar", false);
-
- testBundle.start();
+ Bundle testBundle = bcr.installBundle("tb21.jar");
assertNotNull(getBeanManager(testBundle));
@@ -68,26 +68,40 @@
}
};
bundleTracker.open();
+ assertFalse(bundleTracker.isEmpty());
- Bundle testBundle = bcr.installBundle("tb21.jar", false);
-
- testBundle.start();
try (CloseableTracker<Pojo, Pojo> tracker = track("(objectClass=%s)", Pojo.class.getName())) {
- assertFalse(bundleTracker.isEmpty());
-
Bundle extensionBundle = bundleTracker.getBundles()[0];
- try (CloseableTracker<BeanManager, BeanManager> bmTracker = trackBM(testBundle);) {
- assertNotNull(bmTracker.waitForService(timeout));
+ Bundle testBundle = bcr.installBundle("tb21.jar", false);
+
+ try (CloseableTracker<BeanManager, BeanManager> bmTracker = trackBM(testBundle.getBundleId());) {
+ assertThat(bmTracker).matches(CloseableTracker::isEmpty, "BeanManager tracker is empty");
+
+ int trackingCount = bmTracker.getTrackingCount();
+
+ testBundle.start();
+
+ for (int i = 1000; (i > 0) && bmTracker.getTrackingCount() == trackingCount; i--) {
+ Thread.sleep(20);
+ }
+
+ assertThat(bmTracker).matches(t -> !t.isEmpty(), "BeanManager tracker is not empty");
+
+ trackingCount = bmTracker.getTrackingCount();
extensionBundle.stop();
- for (int i = 100; (i > 0) && !bmTracker.isEmpty(); i--) {
- Thread.sleep(100);
+ for (int i = 1000; (i > 0) && bmTracker.getTrackingCount() == trackingCount; i--) {
+ Thread.sleep(20);
}
- assertThat(bmTracker).matches(CloseableTracker::isEmpty, "Is empty");
+ assertThat(extensionBundle).matches(b -> (b.getState() & Bundle.ACTIVE) == 0, "JNDI Extension Bundle is not Active");
+
+ assertThat(bmTracker).matches(
+ CloseableTracker::isEmpty, String.format("Is empty: <%s>", Arrays.toString(bmTracker.getServiceReferences()))
+ );
extensionBundle.start();
diff --git a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/base/BaseTestCase.java b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/base/BaseTestCase.java
index 62de0f3..ece8cf0 100644
--- a/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/base/BaseTestCase.java
+++ b/cdi-itests/src/main/java/org/apache/aries/cdi/test/cases/base/BaseTestCase.java
@@ -182,16 +182,20 @@
}
public BeanManager getBeanManager(Bundle bundle) throws Exception {
- return trackBM(bundle).waitForService(timeout);
+ return trackBM(bundle.getBundleId()).waitForService(timeout);
}
- public CloseableTracker<BeanManager, BeanManager> trackBM(Bundle bundle) throws Exception {
+ public BeanManager getBeanManager(long bundleId) throws Exception {
+ return trackBM(bundleId).waitForService(timeout);
+ }
+
+ public CloseableTracker<BeanManager, BeanManager> trackBM(long bundleId) throws Exception {
CloseableTracker<BeanManager, BeanManager> serviceTracker = new CloseableTracker<>(
- bundle.getBundleContext(),
+ bcr.getBundleContext(),
format(
"(&(objectClass=%s)(service.bundleid=%d))",
BeanManager.class.getName(),
- bundle.getBundleId()),
+ bundleId),
null);
serviceTracker.open();
return serviceTracker;
diff --git a/pom.xml b/pom.xml
index 9730e3a..bc29786 100644
--- a/pom.xml
+++ b/pom.xml
@@ -33,10 +33,10 @@
<packaging>pom</packaging>
<properties>
- <java.version>1.8</java.version>
- <!-- <maven.compiler.release>${java.version}</maven.compiler.release> -->
- <maven.compiler.source>${java.version}</maven.compiler.source>
- <maven.compiler.target>${java.version}</maven.compiler.target>
+ <java.build.version>1.8</java.build.version>
+ <!-- <maven.compiler.release>${java.build.version}</maven.compiler.release> -->
+ <maven.compiler.source>${java.build.version}</maven.compiler.source>
+ <maven.compiler.target>${java.build.version}</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.site.skip>true</maven.site.skip>
<maven.site.deploy.skip>true</maven.site.deploy.skip>
@@ -45,6 +45,8 @@
<bnd.version>4.3.1</bnd.version>
<byte.buddy.version>1.10.6</byte.buddy.version>
<jax.rs.whiteboard.version>1.0.6</jax.rs.whiteboard.version>
+ <jaxb.api.version>2.3.2</jaxb.api.version>
+ <jakarta.xml.ws-api>2.3.2</jakarta.xml.ws-api>
<jsp.version>2.0</jsp.version>
<mp.config.version>1.3</mp.config.version>
<mp.jwt.auth.version>1.1.1</mp.jwt.auth.version>
@@ -90,6 +92,27 @@
<dependencyManagement>
<dependencies>
<dependency>
+ <groupId>com.sun.xml.bind</groupId>
+ <artifactId>jaxb-impl</artifactId>
+ <version>${jaxb.api.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>jakarta.xml.ws</groupId>
+ <artifactId>jakarta.xml.ws-api</artifactId>
+ <version>${jakarta.xml.ws-api}</version>
+ <scope>runtime</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>jakarta.activation</groupId>
+ <artifactId>jakarta.activation-api</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>jakarta.annotation</groupId>
+ <artifactId>jakarta.annotation-api</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.converter</artifactId>
<version>1.0.12</version>
@@ -112,6 +135,11 @@
</dependency>
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-activation_1.1_spec</artifactId>
+ <version>1.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-atinject_1.0_spec</artifactId>
<version>1.1</version>
</dependency>
@@ -222,6 +250,16 @@
<modules>
<module>cdi-itests</module>
</modules>
+ <repositories>
+ <repository>
+ <id>Sonatype OSSR</id>
+ <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
+ <layout>default</layout>
+ <releases>
+ <enabled>false</enabled>
+ </releases>
+ </repository>
+ </repositories>
</profile>
<profile>
@@ -246,6 +284,22 @@
<enabled>false</enabled>
</releases>
</repository>
+ <repository>
+ <id>bnd-snapshots</id>
+ <url>https://bndtools.jfrog.io/bndtools/libs-snapshot/</url>
+ <layout>default</layout>
+ <releases>
+ <enabled>false</enabled>
+ </releases>
+ </repository>
+ <repository>
+ <id>Sonatype OSSR</id>
+ <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
+ <layout>default</layout>
+ <releases>
+ <enabled>false</enabled>
+ </releases>
+ </repository>
</repositories>
<pluginRepositories>