diff --git a/pom.xml b/pom.xml
index 4c50ffff..570926ee 100644
--- a/pom.xml
+++ b/pom.xml
@@ -100,7 +100,7 @@
5.0.0.Beta1
4.0.1
4.0.0
- 3.2.0
+ 4.0.0-M4
2.0.1
2.2.0
6.1.0
diff --git a/weld-spi/src/main/java/org/jboss/weld/injection/spi/JpaInjectionServices.java b/weld-spi/src/main/java/org/jboss/weld/injection/spi/JpaInjectionServices.java
index 5330bcac..132a08b2 100644
--- a/weld-spi/src/main/java/org/jboss/weld/injection/spi/JpaInjectionServices.java
+++ b/weld-spi/src/main/java/org/jboss/weld/injection/spi/JpaInjectionServices.java
@@ -17,8 +17,10 @@
package org.jboss.weld.injection.spi;
import jakarta.enterprise.inject.spi.InjectionPoint;
+import jakarta.persistence.EntityAgent;
import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityManagerFactory;
+import jakarta.persistence.PersistenceAgent;
import jakarta.persistence.PersistenceContext;
import jakarta.persistence.PersistenceUnit;
@@ -61,4 +63,18 @@ public interface JpaInjectionServices extends Service {
*/
ResourceReferenceFactory registerPersistenceUnitInjectionPoint(InjectionPoint injectionPoint);
+ /**
+ * Register a persistence agent injection point. The implementation validates the injection point. If the validation passes,
+ * an instance of {@link ResourceReferenceFactory} is returned which may be used at runtime for creating instances of the
+ * resource.
+ *
+ * @param injectionPoint the injection point metadata
+ * @return factory for obtaining {@link EntityAgent} instances
+ * @throws IllegalArgumentException if the injection point is not annotated with {@link PersistenceAgent},
+ * if the injection point is a method that doesn't follow JavaBean conventions
+ * @throws IllegalStateException if no suitable persistence units can be resolved
+ * @since 7.0
+ */
+ ResourceReferenceFactory registerPersistenceAgentInjectionPoint(InjectionPoint injectionPoint);
+
}
diff --git a/weld-spi/src/main/java/org/jboss/weld/injection/spi/helpers/ForwardingJpaInjectionServices.java b/weld-spi/src/main/java/org/jboss/weld/injection/spi/helpers/ForwardingJpaInjectionServices.java
index 235a5988..4ca29c8f 100644
--- a/weld-spi/src/main/java/org/jboss/weld/injection/spi/helpers/ForwardingJpaInjectionServices.java
+++ b/weld-spi/src/main/java/org/jboss/weld/injection/spi/helpers/ForwardingJpaInjectionServices.java
@@ -17,6 +17,7 @@
package org.jboss.weld.injection.spi.helpers;
import jakarta.enterprise.inject.spi.InjectionPoint;
+import jakarta.persistence.EntityAgent;
import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityManagerFactory;
@@ -48,6 +49,10 @@ public ResourceReferenceFactory registerPersistenceUnitInj
return delegate().registerPersistenceUnitInjectionPoint(injectionPoint);
}
+ public ResourceReferenceFactory registerPersistenceAgentInjectionPoint(InjectionPoint injectionPoint) {
+ return delegate().registerPersistenceAgentInjectionPoint(injectionPoint);
+ }
+
@Override
public String toString() {
return delegate().toString();
diff --git a/weld-spi/src/test/java/org/jboss/weld/bootstrap/api/test/MockJpaServices.java b/weld-spi/src/test/java/org/jboss/weld/bootstrap/api/test/MockJpaServices.java
index 0fc5c919..870fb033 100644
--- a/weld-spi/src/test/java/org/jboss/weld/bootstrap/api/test/MockJpaServices.java
+++ b/weld-spi/src/test/java/org/jboss/weld/bootstrap/api/test/MockJpaServices.java
@@ -17,6 +17,7 @@
package org.jboss.weld.bootstrap.api.test;
import jakarta.enterprise.inject.spi.InjectionPoint;
+import jakarta.persistence.EntityAgent;
import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityManagerFactory;
@@ -34,4 +35,9 @@ public ResourceReferenceFactory registerPersistenceContextInjecti
public ResourceReferenceFactory registerPersistenceUnitInjectionPoint(InjectionPoint injectionPoint) {
return new MockResourceFactory();
}
+
+ @Override
+ public ResourceReferenceFactory registerPersistenceAgentInjectionPoint(InjectionPoint injectionPoint) {
+ return new MockResourceFactory();
+ }
}