From f36b822d53a42c94afa77416595f5a17c35b378c Mon Sep 17 00:00:00 2001 From: Matej Novotny Date: Thu, 21 Sep 2023 10:38:04 +0200 Subject: [PATCH] WELD-2757 Support inspectable CC impl for CDI TCK SPI --- pom.xml | 4 +- .../weld/tck/CreationalContextsImpl.java | 62 +++++++++++++++++++ .../resources/META-INF/cdi-tck.properties | 3 +- 3 files changed, 66 insertions(+), 3 deletions(-) create mode 100644 porting-package/src/main/java/org/jboss/weld/tck/CreationalContextsImpl.java diff --git a/pom.xml b/pom.xml index ef38464611e..88f25adca02 100644 --- a/pom.xml +++ b/pom.xml @@ -61,7 +61,7 @@ 1.0.0.Final 2.0.1 - 4.0.10 + 4.1.0-SNAPSHOT @@ -90,7 +90,7 @@ 2.0.0 3.1.4 7.4.0 - 5.0.SP3 + 6.0-SNAPSHOT 1.0.3.Final 5.0.0.Alpha5 diff --git a/porting-package/src/main/java/org/jboss/weld/tck/CreationalContextsImpl.java b/porting-package/src/main/java/org/jboss/weld/tck/CreationalContextsImpl.java new file mode 100644 index 00000000000..1def0054845 --- /dev/null +++ b/porting-package/src/main/java/org/jboss/weld/tck/CreationalContextsImpl.java @@ -0,0 +1,62 @@ +package org.jboss.weld.tck; + +import java.util.ArrayList; +import java.util.List; + +import jakarta.enterprise.context.spi.Contextual; + +import org.jboss.cdi.tck.spi.CreationalContexts; +import org.jboss.weld.contexts.CreationalContextImpl; + +public class CreationalContextsImpl implements CreationalContexts { + @Override + public Inspectable create(Contextual contextual) { + return new InspectableCreationalContext<>(contextual); + } + + private class InspectableCreationalContext extends CreationalContextImpl implements Inspectable { + private List beansPushed = new ArrayList<>(); + private Object lastBeanPushed = null; + private boolean pushCalled = false; + private boolean releaseCalled = false; + + public InspectableCreationalContext(Contextual contextual) { + super(contextual); + } + + public void push(T incompleteInstance) { + pushCalled = true; + lastBeanPushed = incompleteInstance; + beansPushed.add(incompleteInstance); + super.push(incompleteInstance); + } + + public Object getLastBeanPushed() { + return lastBeanPushed; + } + + public boolean isPushCalled() { + return pushCalled; + } + + public boolean isReleaseCalled() { + return releaseCalled; + } + + /** + * We need to override this method because internally, Weld uses this enhanced method to release CCs so long + * as the CC is instance of {@link org.jboss.weld.contexts.WeldCreationalContext} which will hold true for + * this impl as well. + */ + public void release(Contextual contextual, T instance) { + releaseCalled = true; + super.release(contextual, instance); + } + + public void release() { + releaseCalled = true; + super.release(); + } + + } +} diff --git a/porting-package/src/main/resources/META-INF/cdi-tck.properties b/porting-package/src/main/resources/META-INF/cdi-tck.properties index d1ffa0c5255..154516a5a19 100644 --- a/porting-package/src/main/resources/META-INF/cdi-tck.properties +++ b/porting-package/src/main/resources/META-INF/cdi-tck.properties @@ -1,4 +1,5 @@ # CDI TCK configuration - porting package org.jboss.cdi.tck.spi.Beans=org.jboss.weld.tck.BeansImpl org.jboss.cdi.tck.spi.Contexts=org.jboss.weld.tck.ContextsImpl -org.jboss.cdi.tck.spi.EL=org.jboss.weld.tck.ELImpl \ No newline at end of file +org.jboss.cdi.tck.spi.EL=org.jboss.weld.tck.ELImpl +org.jboss.cdi.tck.spi.CreationalContexts=org.jboss.weld.tck.CreationalContextsImpl \ No newline at end of file