Adopt Jackson 2.10.1 (#4339)
* Updated Jackson to 2.10.1
Signed-off-by: Jan Supol <jan.supol@oracle.com>
diff --git a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/annotation/JacksonFeatures.java b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/annotation/JacksonFeatures.java
index 8b79319..c1d0475 100644
--- a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/annotation/JacksonFeatures.java
+++ b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/annotation/JacksonFeatures.java
@@ -12,7 +12,7 @@
* Annotation that can be used enable and/or disable various
* features for <code>ObjectReader</code>s and <code>ObjectWriter</code>s.
*/
-@Target({ElementType.ANNOTATION_TYPE, ElementType.METHOD })
+@Target({ElementType.ANNOTATION_TYPE, ElementType.METHOD, ElementType.PARAMETER })
@Retention(RetentionPolicy.RUNTIME)
@com.fasterxml.jackson.annotation.JacksonAnnotation
public @interface JacksonFeatures
diff --git a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/base/JsonMappingExceptionMapper.java b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/base/JsonMappingExceptionMapper.java
index 7ccfd3d..25e13e5 100644
--- a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/base/JsonMappingExceptionMapper.java
+++ b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/base/JsonMappingExceptionMapper.java
@@ -1,10 +1,9 @@
package org.glassfish.jersey.jackson.internal.jackson.jaxrs.base;
+import com.fasterxml.jackson.databind.JsonMappingException;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.ExceptionMapper;
-import com.fasterxml.jackson.databind.JsonMappingException;
-
/**
* Implementation if {@link ExceptionMapper} to send down a "400 Bad Request"
* response in the event that unmappable JSON is received.
diff --git a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/base/JsonParseExceptionMapper.java b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/base/JsonParseExceptionMapper.java
index 9f8d55f..4be9aa5 100644
--- a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/base/JsonParseExceptionMapper.java
+++ b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/base/JsonParseExceptionMapper.java
@@ -1,10 +1,9 @@
package org.glassfish.jersey.jackson.internal.jackson.jaxrs.base;
+import com.fasterxml.jackson.core.JsonParseException;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.ExceptionMapper;
-import com.fasterxml.jackson.core.JsonParseException;
-
/**
* Implementation of {@link ExceptionMapper} to send down a "400 Bad Request"
* in the event unparsable JSON is received.
diff --git a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/base/ProviderBase.java b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/base/ProviderBase.java
index 170e0f8..e42e163 100644
--- a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/base/ProviderBase.java
+++ b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/base/ProviderBase.java
@@ -83,10 +83,9 @@
// then some primitive types
DEFAULT_UNTOUCHABLES.add(new ClassKey(char[].class));
- /* 27-Apr-2012, tatu: Ugh. As per
- * [https://github.com/FasterXML/jackson-jaxrs-json-provider/issues/12]
- * better revert this back, to make them untouchable again.
- */
+ // 27-Apr-2012, tatu: Ugh. As per
+ // [https://github.com/FasterXML/jackson-jaxrs-json-provider/issues/12]
+ // better revert this back, to make them untouchable again.
DEFAULT_UNTOUCHABLES.add(new ClassKey(String.class));
DEFAULT_UNTOUCHABLES.add(new ClassKey(byte[].class));
}
@@ -997,9 +996,7 @@
*/
protected IOException _createNoContentException()
{
- // 29-Jun-2016, tatu: With Jackson 2.8 we require JAX-RS 2.0 so this
- // is fine; earlier had complicated Reflection-based access
- return new NoContentException("No content (empty input stream)");
+ return new NoContentException("No content (empty input stream)");
}
/*
diff --git a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/cfg/AnnotationBundleKey.java b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/cfg/AnnotationBundleKey.java
index 854a7ed..79157f1 100644
--- a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/cfg/AnnotationBundleKey.java
+++ b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/cfg/AnnotationBundleKey.java
@@ -122,11 +122,39 @@
if (otherAnn.length != len) {
return false;
}
- for (int i = 0; i < len; ++i) {
- if (_annotations[i] != otherAnn[i]) {
+
+ // 05-May-2019, tatu: If we wanted to true equality of contents we should
+ // do order-insensitive check; however, our use case is not unifying all
+ // possible permutations but rather trying to ensure that caching of same
+ // method signature is likely to match. So false negatives are acceptable
+ // over having to do order-insensitive comparison.
+
+ switch (len) {
+ default:
+ for (int i = 0; i < len; ++i) {
+ if (!_annotations[i].equals(otherAnn[i])) {
+ return false;
+ }
+ }
+ return true;
+
+ case 3:
+ if (!_annotations[2].equals(otherAnn[2])) {
return false;
}
+ // fall through
+ case 2:
+ if (!_annotations[1].equals(otherAnn[1])) {
+ return false;
+ }
+ // fall through
+ case 1:
+ if (!_annotations[0].equals(otherAnn[0])) {
+ return false;
+ }
+ // fall through
+ case 0:
}
return true;
}
-}
+}
\ No newline at end of file
diff --git a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/cfg/EndpointConfigBase.java b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/cfg/EndpointConfigBase.java
index afc8e1a..c48b597 100644
--- a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/cfg/EndpointConfigBase.java
+++ b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/cfg/EndpointConfigBase.java
@@ -54,11 +54,6 @@
_config = config;
}
- @Deprecated // since 2.6
- protected EndpointConfigBase() {
- _config = null;
- }
-
@SuppressWarnings("unchecked")
protected THIS add(Annotation[] annotations, boolean forWriting)
{
diff --git a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/json/JacksonJsonProvider.java b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/json/JacksonJsonProvider.java
index d766495..dc5fff8 100644
--- a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/json/JacksonJsonProvider.java
+++ b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/json/JacksonJsonProvider.java
@@ -231,12 +231,4 @@
return JsonEndpointConfig.forWriting(writer, annotations,
_jsonpFunctionName);
}
-
- /**
- * @deprecated Since 2.2 use {@link #hasMatchingMediaType(MediaType)} instead
- */
- @Deprecated
- protected boolean isJsonType(MediaType mediaType) {
- return hasMatchingMediaType(mediaType);
- }
}
diff --git a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/json/JsonEndpointConfig.java b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/json/JsonEndpointConfig.java
index 5a4d9a6..cbe0b58 100644
--- a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/json/JsonEndpointConfig.java
+++ b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/json/JsonEndpointConfig.java
@@ -4,7 +4,6 @@
import org.glassfish.jersey.jackson.internal.jackson.jaxrs.cfg.EndpointConfigBase;
import org.glassfish.jersey.jackson.internal.jackson.jaxrs.json.annotation.JSONP;
-import org.glassfish.jersey.jackson.internal.jackson.jaxrs.json.annotation.JacksonFeatures;
import com.fasterxml.jackson.databind.ObjectReader;
import com.fasterxml.jackson.databind.ObjectWriter;
@@ -61,7 +60,6 @@
/**********************************************************
*/
- @SuppressWarnings("deprecation")
@Override
protected void addAnnotation(Class<? extends Annotation> type,
Annotation annotation, boolean forWriting)
@@ -70,15 +68,6 @@
if (forWriting) {
_jsonp = new JSONP.Def((JSONP) annotation);
}
- } else if (type == JacksonFeatures.class) {
- JacksonFeatures feats = (JacksonFeatures) annotation;
- if (forWriting) {
- _serEnable = nullIfEmpty(feats.serializationEnable());
- _serDisable = nullIfEmpty(feats.serializationDisable());
- } else {
- _deserEnable = nullIfEmpty(feats.deserializationEnable());
- _deserDisable = nullIfEmpty(feats.deserializationDisable());
- }
} else {
super.addAnnotation(type, annotation, forWriting);
}
diff --git a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/json/PackageVersion.java b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/json/PackageVersion.java
index 05d75b9..46376a4 100644
--- a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/json/PackageVersion.java
+++ b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/json/PackageVersion.java
@@ -11,7 +11,7 @@
*/
public final class PackageVersion implements Versioned {
public final static Version VERSION = VersionUtil.parseVersion(
- "2.8.4", "com.fasterxml.jackson.jaxrs", "jackson-jaxrs-json-provider");
+ "2.10.1", "com.fasterxml.jackson.jaxrs", "jackson-jaxrs-json-provider");
@Override
public Version version() {
diff --git a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/json/annotation/JacksonFeatures.java b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/json/annotation/JacksonFeatures.java
deleted file mode 100644
index 483107a..0000000
--- a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/json/annotation/JacksonFeatures.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package org.glassfish.jersey.jackson.internal.jackson.jaxrs.json.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.SerializationFeature;
-
-/**
- * Annotation that can be used enable and/or disable various
- * features for <code>ObjectReader</code>s and <code>ObjectWriter</code>s.
- *
- * @deprecated Since 2.2, use shared {@link com.fasterxml.jackson.jaxrs.annotation.JacksonFeatures} instead
- */
-@Target({ElementType.ANNOTATION_TYPE, ElementType.METHOD })
-@Retention(RetentionPolicy.RUNTIME)
-@com.fasterxml.jackson.annotation.JacksonAnnotation
-@Deprecated // since 2.2
-public @interface JacksonFeatures
-{
- /**
- * Deserialization features to enable.
- */
- public DeserializationFeature[] deserializationEnable() default { };
-
- /**
- * Deserialization features to disable.
- */
- public DeserializationFeature[] deserializationDisable() default { };
-
- /**
- * Serialization features to enable.
- */
- public SerializationFeature[] serializationEnable() default { };
-
- /**
- * Serialization features to disable.
- */
- public SerializationFeature[] serializationDisable() default { };
-}
diff --git a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/util/EndpointAsBeanProperty.java b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/util/EndpointAsBeanProperty.java
index 89ed89a..876a708 100644
--- a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/util/EndpointAsBeanProperty.java
+++ b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/jackson/jaxrs/util/EndpointAsBeanProperty.java
@@ -16,11 +16,12 @@
* limitations, we are only given annotations associated, and that
* has to do.
*<p>
- * NOTE: not yet used by JAX-RS provider, directly, as of Jackson 2.6.
+ * NOTE: not yet used by JAX-RS provider, directly, as of Jackson 2.9
*/
public class EndpointAsBeanProperty
extends BeanProperty.Std
{
+ private static final long serialVersionUID = 1L;
public final static PropertyName ENDPOINT_NAME = new PropertyName("JAX-RS/endpoint");
private final static AnnotationMap NO_ANNOTATIONS = new AnnotationMap();
@@ -33,7 +34,7 @@
{
// TODO: find and pass wrapper; isRequired marker?
super(name, type, /*PropertyName wrapperName*/ null,
- null, null, PropertyMetadata.STD_OPTIONAL);
+ null, PropertyMetadata.STD_OPTIONAL);
_rawAnnotations = annotations;
_annotations = null;
}
diff --git a/pom.xml b/pom.xml
index 4f3d057..7cc4167 100644
--- a/pom.xml
+++ b/pom.xml
@@ -2099,7 +2099,7 @@
<hk2.config.version>5.1.0</hk2.config.version>
<httpclient.version>4.5.9</httpclient.version>
<istack.commons.runtime.version>3.0.8</istack.commons.runtime.version>
- <jackson.version>2.9.9</jackson.version>
+ <jackson.version>2.10.1</jackson.version>
<jackson1.version>1.9.13</jackson1.version>
<jakarta.activation.version>1.2.1</jakarta.activation.version>
<javassist.version>3.25.0-GA</javassist.version>
diff --git a/tests/osgi/functional/pom.xml b/tests/osgi/functional/pom.xml
index 088ca5f..d6175cc 100644
--- a/tests/osgi/functional/pom.xml
+++ b/tests/osgi/functional/pom.xml
@@ -376,12 +376,13 @@
<artifactId>jakarta.xml.bind-api</artifactId>
<scope>test</scope>
</dependency>
- <dependency>
- <groupId>com.sun.activation</groupId>
- <artifactId>jakarta.activation</artifactId>
- <version>${jakarta.activation.version}</version>
- <scope>test</scope>
- </dependency>
+<!-- <dependency>-->
+<!-- Not needed since Jackson 2.10.1 -->
+<!-- <groupId>com.sun.activation</groupId>-->
+<!-- <artifactId>jakarta.activation</artifactId>-->
+<!-- <version>${jakarta.activation.version}</version>-->
+<!-- <scope>test</scope>-->
+<!-- </dependency>-->
<!-- logging -->
<dependency>
diff --git a/tests/osgi/functional/src/test/java/org/glassfish/jersey/osgi/test/util/Helper.java b/tests/osgi/functional/src/test/java/org/glassfish/jersey/osgi/test/util/Helper.java
index 9108cd6..c334e71 100644
--- a/tests/osgi/functional/src/test/java/org/glassfish/jersey/osgi/test/util/Helper.java
+++ b/tests/osgi/functional/src/test/java/org/glassfish/jersey/osgi/test/util/Helper.java
@@ -168,9 +168,10 @@
mavenBundle().groupId("org.glassfish.jersey.core").artifactId("jersey-client").versionAsInProject(),
// Jersey Injection provider
- mavenBundle().groupId("org.glassfish.jersey.inject").artifactId("jersey-hk2").versionAsInProject(),
+ mavenBundle().groupId("org.glassfish.jersey.inject").artifactId("jersey-hk2").versionAsInProject()
// Jaxb - api
- mavenBundle().groupId("com.sun.activation").artifactId("jakarta.activation").versionAsInProject()
+ // not needed since Jackson 2.10.1
+ // mavenBundle().groupId("com.sun.activation").artifactId("jakarta.activation").versionAsInProject()
));
}