Rely on BeanManager to determine whether @FlowScoped is passivating.
Changes FlowScopeBeanHolder not to assume that @FlowScoped is a
passivating scope and to ask the BeanManager instead. This enables
@FlowScoped to work on Quarkus, which does not have passivating
scopes.
diff --git a/impl/src/main/java/org/apache/myfaces/flow/cdi/FlowScopeBeanHolder.java b/impl/src/main/java/org/apache/myfaces/flow/cdi/FlowScopeBeanHolder.java
index be4b29c..61227e1 100644
--- a/impl/src/main/java/org/apache/myfaces/flow/cdi/FlowScopeBeanHolder.java
+++ b/impl/src/main/java/org/apache/myfaces/flow/cdi/FlowScopeBeanHolder.java
@@ -36,6 +36,7 @@
import javax.faces.context.FacesContext;
import javax.faces.flow.Flow;
import javax.faces.flow.FlowHandler;
+import javax.faces.flow.FlowScoped;
import javax.faces.lifecycle.ClientWindow;
import javax.inject.Inject;
import javax.servlet.ServletContext;
@@ -104,7 +105,9 @@
*/
public ContextualStorage getContextualStorage(BeanManager beanManager, String flowClientWindowId)
{
- return storageMap.computeIfAbsent(flowClientWindowId, k -> new ContextualStorage(beanManager, true, true));
+ return storageMap.computeIfAbsent(
+ flowClientWindowId,
+ k -> new ContextualStorage(beanManager, true, beanManager.isPassivatingScope(FlowScoped.class)));
}
public ContextualStorage getContextualStorageNoCreate(BeanManager beanManager, String flowClientWindowId)