diff options
Diffstat (limited to 'policy-endpoints/src/main/java/org/onap/policy/common/endpoints/http/client/internal/JerseyClient.java')
-rw-r--r-- | policy-endpoints/src/main/java/org/onap/policy/common/endpoints/http/client/internal/JerseyClient.java | 38 |
1 files changed, 32 insertions, 6 deletions
diff --git a/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/http/client/internal/JerseyClient.java b/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/http/client/internal/JerseyClient.java index b55a7bb2..2287486e 100644 --- a/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/http/client/internal/JerseyClient.java +++ b/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/http/client/internal/JerseyClient.java @@ -22,7 +22,6 @@ package org.onap.policy.common.endpoints.http.client.internal; import com.fasterxml.jackson.annotation.JsonIgnore; - import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; @@ -30,7 +29,6 @@ import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import java.util.Map; import java.util.Map.Entry; - import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; @@ -39,7 +37,7 @@ import javax.ws.rs.client.ClientBuilder; import javax.ws.rs.client.Entity; import javax.ws.rs.client.Invocation.Builder; import javax.ws.rs.core.Response; - +import org.glassfish.jersey.client.ClientProperties; import org.glassfish.jersey.client.authentication.HttpAuthenticationFeature; import org.onap.policy.common.endpoints.event.comm.bus.internal.BusTopicParams; import org.onap.policy.common.endpoints.http.client.HttpClient; @@ -48,6 +46,10 @@ import org.slf4j.LoggerFactory; /** * Http Client implementation using a Jersey Client. + * + * <p>Note: the serialization provider will be ignored if the maven artifact, + * <i>jersey-media-json-jackson</i>, is included, regardless of whether it's included + * directly or indirectly. */ public class JerseyClient implements HttpClient { @@ -55,6 +57,9 @@ public class JerseyClient implements HttpClient { * Logger. */ private static Logger logger = LoggerFactory.getLogger(JerseyClient.class); + + protected static final String JERSEY_DEFAULT_SERIALIZATION_PROVIDER = + "com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider"; protected final String name; protected final boolean https; @@ -73,14 +78,17 @@ public class JerseyClient implements HttpClient { /** * Constructor. * - * <p>name the name https is it https or not selfSignedCerts are there self signed certs hostname - * the hostname port port being used basePath base context userName user password password + * <p>name the name https is it https or not selfSignedCerts are there self signed certs + * hostname the hostname port port being used basePath base context userName user + * password password * * @param busTopicParams Input parameters object * @throws KeyManagementException key exception * @throws NoSuchAlgorithmException no algorithm exception + * @throws ClassNotFoundException if the serialization provider cannot be found */ - public JerseyClient(BusTopicParams busTopicParams) throws KeyManagementException, NoSuchAlgorithmException { + public JerseyClient(BusTopicParams busTopicParams) + throws KeyManagementException, NoSuchAlgorithmException, ClassNotFoundException { super(); @@ -147,10 +155,28 @@ public class JerseyClient implements HttpClient { this.client.register(authFeature); } + registerSerProviders(busTopicParams.getSerializationProvider()); + + this.client.property(ClientProperties.METAINF_SERVICES_LOOKUP_DISABLE, "true"); + this.baseUrl = tmpBaseUrl.append(this.hostname).append(":").append(this.port).append("/") .append((this.basePath == null) ? "" : this.basePath).toString(); } + /** + * Registers the serialization provider(s) with the client. + * + * @param serializationProvider comma-separated list of serialization providers + * @throws ClassNotFoundException if the serialization provider cannot be found + */ + private void registerSerProviders(String serializationProvider) throws ClassNotFoundException { + String providers = (serializationProvider == null || serializationProvider.isEmpty() + ? JERSEY_DEFAULT_SERIALIZATION_PROVIDER : serializationProvider); + for (String prov : providers.split(",")) { + this.client.register(Class.forName(prov)); + } + } + @Override public Response get(String path) { if (path != null && !path.isEmpty()) { |