ContextualInstance.java
package io.github.jonasrutishauser.thread.context.impl;
import jakarta.enterprise.context.spi.Contextual;
import jakarta.enterprise.context.spi.CreationalContext;
class ContextualInstance<T> {
private final Contextual<T> contextual;
private final CreationalContext<T> ctx;
private T instance;
public ContextualInstance(Contextual<T> contextual, CreationalContext<T> ctx) {
this.contextual = contextual;
this.ctx = ctx;
}
public T getInstance() {
if (instance == null) {
instance = contextual.create(ctx);
}
return instance;
}
public void destroy() {
contextual.destroy(instance, ctx);
}
}