diff --git a/jaxrs-api/src/main/java/jakarta/ws/rs/ApplicationPath.java b/jaxrs-api/src/main/java/jakarta/ws/rs/ApplicationPath.java
index f4ef0627b..01e94c7f3 100644
--- a/jaxrs-api/src/main/java/jakarta/ws/rs/ApplicationPath.java
+++ b/jaxrs-api/src/main/java/jakarta/ws/rs/ApplicationPath.java
@@ -22,6 +22,9 @@
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.enterprise.inject.Stereotype;
+
/**
* Identifies the application path that serves as the base URI for all resource URIs provided by
* {@link jakarta.ws.rs.Path}. May only be applied to a subclass of {@link jakarta.ws.rs.core.Application}.
@@ -40,6 +43,8 @@
@Documented
@Target({ ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
+@Stereotype
+@ApplicationScoped
public @interface ApplicationPath {
/**
diff --git a/jaxrs-api/src/main/java/jakarta/ws/rs/BeanParam.java b/jaxrs-api/src/main/java/jakarta/ws/rs/BeanParam.java
index 59d27969a..1e3f0a52c 100644
--- a/jaxrs-api/src/main/java/jakarta/ws/rs/BeanParam.java
+++ b/jaxrs-api/src/main/java/jakarta/ws/rs/BeanParam.java
@@ -22,6 +22,8 @@
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
+import jakarta.inject.Qualifier;
+
/**
* The annotation that may be used to inject custom JAX-RS "parameter aggregator" value object into a resource class
* field, property or resource method parameter.
@@ -68,5 +70,6 @@
@Target({ ElementType.PARAMETER, ElementType.METHOD, ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
+@Qualifier
public @interface BeanParam {
}
diff --git a/jaxrs-api/src/main/java/jakarta/ws/rs/CookieParam.java b/jaxrs-api/src/main/java/jakarta/ws/rs/CookieParam.java
index 8ec032610..b48eca4e1 100644
--- a/jaxrs-api/src/main/java/jakarta/ws/rs/CookieParam.java
+++ b/jaxrs-api/src/main/java/jakarta/ws/rs/CookieParam.java
@@ -22,6 +22,8 @@
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
+import jakarta.inject.Qualifier;
+
/**
* Binds the value of a HTTP cookie to a resource method parameter, resource class field, or resource class bean
* property. A default value can be specified using the {@link DefaultValue} annotation.
@@ -55,6 +57,7 @@
@Target({ ElementType.PARAMETER, ElementType.METHOD, ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
+@Qualifier
public @interface CookieParam {
/**
diff --git a/jaxrs-api/src/main/java/jakarta/ws/rs/FormParam.java b/jaxrs-api/src/main/java/jakarta/ws/rs/FormParam.java
index 1df6ae13b..445b130e5 100644
--- a/jaxrs-api/src/main/java/jakarta/ws/rs/FormParam.java
+++ b/jaxrs-api/src/main/java/jakarta/ws/rs/FormParam.java
@@ -22,6 +22,8 @@
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
+import jakarta.inject.Qualifier;
+
/**
* Binds the value(s) of a form parameter contained within a request entity body to a resource method parameter. Values
* are URL decoded unless this is disabled using the {@link Encoded} annotation. A default value can be specified using
@@ -66,6 +68,7 @@
@Target({ ElementType.PARAMETER, ElementType.METHOD, ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
+@Qualifier
public @interface FormParam {
/**
diff --git a/jaxrs-api/src/main/java/jakarta/ws/rs/HeaderParam.java b/jaxrs-api/src/main/java/jakarta/ws/rs/HeaderParam.java
index 2bdc64060..8957f1f2f 100644
--- a/jaxrs-api/src/main/java/jakarta/ws/rs/HeaderParam.java
+++ b/jaxrs-api/src/main/java/jakarta/ws/rs/HeaderParam.java
@@ -22,6 +22,8 @@
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
+import jakarta.inject.Qualifier;
+
/**
* Binds the value(s) of a HTTP header to a resource method parameter, resource class field, or resource class bean
* property. A default value can be specified using the {@link DefaultValue} annotation.
@@ -58,6 +60,7 @@
@Target({ ElementType.PARAMETER, ElementType.METHOD, ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
+@Qualifier
public @interface HeaderParam {
/**
diff --git a/jaxrs-api/src/main/java/jakarta/ws/rs/MatrixParam.java b/jaxrs-api/src/main/java/jakarta/ws/rs/MatrixParam.java
index 1abd05eb9..faacea0e0 100644
--- a/jaxrs-api/src/main/java/jakarta/ws/rs/MatrixParam.java
+++ b/jaxrs-api/src/main/java/jakarta/ws/rs/MatrixParam.java
@@ -22,6 +22,8 @@
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
+import jakarta.inject.Qualifier;
+
/**
* Binds the value(s) of a URI matrix parameter to a resource method parameter, resource class field, or resource class
* bean property. Values are URL decoded unless this is disabled using the {@link Encoded} annotation. A default value
@@ -66,6 +68,7 @@
@Target({ ElementType.PARAMETER, ElementType.METHOD, ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
+@Qualifier
public @interface MatrixParam {
/**
diff --git a/jaxrs-api/src/main/java/jakarta/ws/rs/Path.java b/jaxrs-api/src/main/java/jakarta/ws/rs/Path.java
index 5245dc667..024804f2a 100644
--- a/jaxrs-api/src/main/java/jakarta/ws/rs/Path.java
+++ b/jaxrs-api/src/main/java/jakarta/ws/rs/Path.java
@@ -22,6 +22,9 @@
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
+import jakarta.enterprise.context.RequestScoped;
+import jakarta.enterprise.inject.Stereotype;
+
/**
* Identifies the URI path that a resource class or class method will serve requests for.
*
@@ -65,6 +68,8 @@
@Target({ ElementType.TYPE, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
+@Stereotype
+@RequestScoped
public @interface Path {
/**
diff --git a/jaxrs-api/src/main/java/jakarta/ws/rs/PathParam.java b/jaxrs-api/src/main/java/jakarta/ws/rs/PathParam.java
index 93850e82c..32429c176 100644
--- a/jaxrs-api/src/main/java/jakarta/ws/rs/PathParam.java
+++ b/jaxrs-api/src/main/java/jakarta/ws/rs/PathParam.java
@@ -22,6 +22,8 @@
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
+import jakarta.inject.Qualifier;
+
/**
* Binds the value of a URI template parameter or a path segment containing the template parameter to a resource method
* parameter, resource class field, or resource class bean property. The value is URL decoded unless this is disabled
@@ -67,6 +69,7 @@
@Target({ ElementType.PARAMETER, ElementType.METHOD, ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
+@Qualifier
public @interface PathParam {
/**
diff --git a/jaxrs-api/src/main/java/jakarta/ws/rs/QueryParam.java b/jaxrs-api/src/main/java/jakarta/ws/rs/QueryParam.java
index 423258b29..9264e66de 100644
--- a/jaxrs-api/src/main/java/jakarta/ws/rs/QueryParam.java
+++ b/jaxrs-api/src/main/java/jakarta/ws/rs/QueryParam.java
@@ -22,6 +22,8 @@
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
+import jakarta.inject.Qualifier;
+
/**
* Binds the value(s) of a HTTP query parameter to a resource method parameter, resource class field, or resource class
* bean property. Values are URL decoded unless this is disabled using the {@link Encoded} annotation. A default value
@@ -60,6 +62,7 @@
@Target({ ElementType.PARAMETER, ElementType.METHOD, ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
+@Qualifier
public @interface QueryParam {
/**
diff --git a/jaxrs-api/src/main/java/jakarta/ws/rs/ext/Provider.java b/jaxrs-api/src/main/java/jakarta/ws/rs/ext/Provider.java
index b8d1ae716..8fdcbc665 100644
--- a/jaxrs-api/src/main/java/jakarta/ws/rs/ext/Provider.java
+++ b/jaxrs-api/src/main/java/jakarta/ws/rs/ext/Provider.java
@@ -22,6 +22,9 @@
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.enterprise.inject.Stereotype;
+
/**
* Marks an implementation of an extension interface that should be discoverable by JAX-RS runtime during a provider
* scanning phase.
@@ -33,5 +36,7 @@
@Target({ ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Documented
+@Stereotype
+@ApplicationScoped
public @interface Provider {
}
diff --git a/jaxrs-api/src/main/java/module-info.java b/jaxrs-api/src/main/java/module-info.java
index aa24390e0..36409dbf7 100644
--- a/jaxrs-api/src/main/java/module-info.java
+++ b/jaxrs-api/src/main/java/module-info.java
@@ -22,6 +22,8 @@
requires static jakarta.xml.bind;
requires java.logging;
+ requires jakarta.cdi;
+ requires jakarta.inject;
exports jakarta.ws.rs;
exports jakarta.ws.rs.client;
diff --git a/jaxrs-tck/pom.xml b/jaxrs-tck/pom.xml
index 1fd7cdde9..0437c168e 100644
--- a/jaxrs-tck/pom.xml
+++ b/jaxrs-tck/pom.xml
@@ -40,6 +40,14 @@
jakarta.ws.rs-api
${project.version}
+
+ jakarta.inject
+ jakarta.inject-api
+
+
+ jakarta.enterprise
+ jakarta.enterprise.cdi-api
+
jakarta.json.bind
@@ -97,12 +105,6 @@
provided
-
- org.netbeans.tools
- sigtest-maven-plugin
- 1.4
-
-
org.junit.jupiter
@@ -147,9 +149,9 @@
- org.netbeans.tools
+ jakarta.tck
sigtest-maven-plugin
- 1.4
+ 2.0
@@ -158,10 +160,16 @@
- ${project.build.directory}/jakarta.ws.rs.sig_${project.parent.version}
- jakarta.ws.rs,jakarta.ws.rs.client,jakarta.ws.rs.core,jakarta.ws.rs.container,jakarta.ws.rs.ext,jakarta.ws.rs.sse
+ jakarta.ws.rs,
+ jakarta.ws.rs.client,
+ jakarta.ws.rs.core,
+ jakarta.ws.rs.container,
+ jakarta.ws.rs.ext,
+ jakarta.ws.rs.sse
+ false
+ ${project.build.directory}/jakarta.ws.rs.sig_${project.parent.version}
diff --git a/jaxrs-tck/src/main/resources/ee/jakarta/tck/ws/rs/signaturetest/jakarta.ws.rs.sig_3.1.0 b/jaxrs-tck/src/main/resources/ee/jakarta/tck/ws/rs/signaturetest/jakarta.ws.rs.sig_3.2.0
similarity index 98%
rename from jaxrs-tck/src/main/resources/ee/jakarta/tck/ws/rs/signaturetest/jakarta.ws.rs.sig_3.1.0
rename to jaxrs-tck/src/main/resources/ee/jakarta/tck/ws/rs/signaturetest/jakarta.ws.rs.sig_3.2.0
index 9838fc9e4..cf3472d44 100644
--- a/jaxrs-tck/src/main/resources/ee/jakarta/tck/ws/rs/signaturetest/jakarta.ws.rs.sig_3.1.0
+++ b/jaxrs-tck/src/main/resources/ee/jakarta/tck/ws/rs/signaturetest/jakarta.ws.rs.sig_3.2.0
@@ -1,10 +1,49 @@
#Signature file v4.1
-#Version 3.1.0
+#Version 3.2.0
+
+CLSS public abstract interface !annotation jakarta.enterprise.context.ApplicationScoped
+ anno 0 jakarta.enterprise.context.NormalScope(boolean passivating=false)
+ anno 0 java.lang.annotation.Documented()
+ anno 0 java.lang.annotation.Inherited()
+ anno 0 java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy value=RUNTIME)
+ anno 0 java.lang.annotation.Target(java.lang.annotation.ElementType[] value=[TYPE, METHOD, FIELD])
+innr public final static Literal
+intf java.lang.annotation.Annotation
+
+CLSS public abstract interface !annotation jakarta.enterprise.context.NormalScope
+ anno 0 java.lang.annotation.Documented()
+ anno 0 java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy value=RUNTIME)
+ anno 0 java.lang.annotation.Target(java.lang.annotation.ElementType[] value=[ANNOTATION_TYPE])
+intf java.lang.annotation.Annotation
+meth public abstract !hasdefault boolean passivating()
+
+CLSS public abstract interface !annotation jakarta.enterprise.context.RequestScoped
+ anno 0 jakarta.enterprise.context.NormalScope(boolean passivating=false)
+ anno 0 java.lang.annotation.Documented()
+ anno 0 java.lang.annotation.Inherited()
+ anno 0 java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy value=RUNTIME)
+ anno 0 java.lang.annotation.Target(java.lang.annotation.ElementType[] value=[TYPE, METHOD, FIELD])
+innr public final static Literal
+intf java.lang.annotation.Annotation
+
+CLSS public abstract interface !annotation jakarta.enterprise.inject.Stereotype
+ anno 0 java.lang.annotation.Documented()
+ anno 0 java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy value=RUNTIME)
+ anno 0 java.lang.annotation.Target(java.lang.annotation.ElementType[] value=[ANNOTATION_TYPE])
+intf java.lang.annotation.Annotation
+
+CLSS public abstract interface !annotation jakarta.inject.Qualifier
+ anno 0 java.lang.annotation.Documented()
+ anno 0 java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy value=RUNTIME)
+ anno 0 java.lang.annotation.Target(java.lang.annotation.ElementType[] value=[ANNOTATION_TYPE])
+intf java.lang.annotation.Annotation
CLSS public abstract interface !annotation jakarta.ws.rs.ApplicationPath
anno 0 java.lang.annotation.Documented()
anno 0 java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy value=RUNTIME)
anno 0 java.lang.annotation.Target(java.lang.annotation.ElementType[] value=[TYPE])
+ anno 0 jakarta.enterprise.context.ApplicationScoped()
+ anno 0 jakarta.enterprise.inject.Stereotype()
intf java.lang.annotation.Annotation
meth public abstract java.lang.String value()
@@ -24,6 +63,7 @@ CLSS public abstract interface !annotation jakarta.ws.rs.BeanParam
anno 0 java.lang.annotation.Documented()
anno 0 java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy value=RUNTIME)
anno 0 java.lang.annotation.Target(java.lang.annotation.ElementType[] value=[PARAMETER, METHOD, FIELD])
+ anno 0 jakarta.inject.Qualifier()
intf java.lang.annotation.Annotation
CLSS public jakarta.ws.rs.ClientErrorException
@@ -61,6 +101,7 @@ CLSS public abstract interface !annotation jakarta.ws.rs.CookieParam
anno 0 java.lang.annotation.Documented()
anno 0 java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy value=RUNTIME)
anno 0 java.lang.annotation.Target(java.lang.annotation.ElementType[] value=[PARAMETER, METHOD, FIELD])
+ anno 0 jakarta.inject.Qualifier()
intf java.lang.annotation.Annotation
meth public abstract java.lang.String value()
@@ -100,6 +141,7 @@ CLSS public abstract interface !annotation jakarta.ws.rs.FormParam
anno 0 java.lang.annotation.Documented()
anno 0 java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy value=RUNTIME)
anno 0 java.lang.annotation.Target(java.lang.annotation.ElementType[] value=[PARAMETER, METHOD, FIELD])
+ anno 0 jakarta.inject.Qualifier()
intf java.lang.annotation.Annotation
meth public abstract java.lang.String value()
@@ -121,6 +163,7 @@ CLSS public abstract interface !annotation jakarta.ws.rs.HeaderParam
anno 0 java.lang.annotation.Documented()
anno 0 java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy value=RUNTIME)
anno 0 java.lang.annotation.Target(java.lang.annotation.ElementType[] value=[PARAMETER, METHOD, FIELD])
+ anno 0 jakarta.inject.Qualifier()
intf java.lang.annotation.Annotation
meth public abstract java.lang.String value()
@@ -154,6 +197,7 @@ CLSS public abstract interface !annotation jakarta.ws.rs.MatrixParam
anno 0 java.lang.annotation.Documented()
anno 0 java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy value=RUNTIME)
anno 0 java.lang.annotation.Target(java.lang.annotation.ElementType[] value=[PARAMETER, METHOD, FIELD])
+ anno 0 jakarta.inject.Qualifier()
intf java.lang.annotation.Annotation
meth public abstract java.lang.String value()
@@ -256,6 +300,8 @@ CLSS public abstract interface !annotation jakarta.ws.rs.Path
anno 0 java.lang.annotation.Documented()
anno 0 java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy value=RUNTIME)
anno 0 java.lang.annotation.Target(java.lang.annotation.ElementType[] value=[TYPE, METHOD])
+ anno 0 jakarta.enterprise.context.RequestScoped()
+ anno 0 jakarta.enterprise.inject.Stereotype()
intf java.lang.annotation.Annotation
meth public abstract java.lang.String value()
@@ -263,6 +309,7 @@ CLSS public abstract interface !annotation jakarta.ws.rs.PathParam
anno 0 java.lang.annotation.Documented()
anno 0 java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy value=RUNTIME)
anno 0 java.lang.annotation.Target(java.lang.annotation.ElementType[] value=[PARAMETER, METHOD, FIELD])
+ anno 0 jakarta.inject.Qualifier()
intf java.lang.annotation.Annotation
meth public abstract java.lang.String value()
@@ -293,6 +340,7 @@ CLSS public abstract interface !annotation jakarta.ws.rs.QueryParam
anno 0 java.lang.annotation.Documented()
anno 0 java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy value=RUNTIME)
anno 0 java.lang.annotation.Target(java.lang.annotation.ElementType[] value=[PARAMETER, METHOD, FIELD])
+ anno 0 jakarta.inject.Qualifier()
intf java.lang.annotation.Annotation
meth public abstract java.lang.String value()
@@ -1685,6 +1733,8 @@ CLSS public abstract interface !annotation jakarta.ws.rs.ext.Provider
anno 0 java.lang.annotation.Documented()
anno 0 java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy value=RUNTIME)
anno 0 java.lang.annotation.Target(java.lang.annotation.ElementType[] value=[TYPE])
+ anno 0 jakarta.enterprise.context.ApplicationScoped()
+ anno 0 jakarta.enterprise.inject.Stereotype()
intf java.lang.annotation.Annotation
CLSS public abstract interface jakarta.ws.rs.ext.Providers
diff --git a/jaxrs-tck/src/main/resources/ee/jakarta/tck/ws/rs/signaturetest/sig-test.map b/jaxrs-tck/src/main/resources/ee/jakarta/tck/ws/rs/signaturetest/sig-test.map
index 895b2bed7..04b30da97 100644
--- a/jaxrs-tck/src/main/resources/ee/jakarta/tck/ws/rs/signaturetest/sig-test.map
+++ b/jaxrs-tck/src/main/resources/ee/jakarta/tck/ws/rs/signaturetest/sig-test.map
@@ -17,4 +17,4 @@
###############################################################
# The signature test mapping file for the JAX-RS TCK.
###############################################################
-jakarta.ws.rs=3.1.0
+jakarta.ws.rs=3.2.0
diff --git a/pom.xml b/pom.xml
index 6ed12eec1..9850ec24e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -103,7 +103,7 @@
3.0.0
2.0.0
4.0.0
- 3.0.0
+ 4.1.0-M1
5.8.2
4.0.3
4.1.2