Java 类javax.ws.rs.client.ClientRequestFilter 实例源码

项目:redhat-sso    文件:GreetingAuthzClient.java   
private Greeting getGreeting(String endpoint, String name) {
     String endpointURL = endpoints.get(endpoint);
     Client client = ClientBuilder.newClient();
     try {
         WebTarget target = client.target(endpointURL);
         // Provide the authorization information
         target.register((ClientRequestFilter) requestContext -> {
    requestContext.getHeaders().add("Authorization", "Bearer "+token);
});
         if(cmdArgs.debugLevel > 0)
    target.register(new LoggingFilter());
         IGreeting greetingClient = ((ResteasyWebTarget)target).proxy(IGreeting.class);
         Greeting greeting = greetingClient.greeting(name);
         return greeting;
     } finally {
         client.close();
     }
 }
项目:microprofile-rest-client    文件:AdditionalRegistrationTest.java   
@Test
public void shouldRegisterAMultiTypedProviderInstanceWithPriorities() {
    MultiTypedProvider provider = new MultiTypedProvider();
    Map<Class<?>, Integer> priorities = new HashMap<>();
    priorities.put(ClientRequestFilter.class, 500);
    priorities.put(ClientResponseFilter.class, 501);
    priorities.put(MessageBodyReader.class, 502);
    priorities.put(MessageBodyWriter.class, 503);
    priorities.put(ReaderInterceptor.class, 504);
    priorities.put(WriterInterceptor.class, 505);
    priorities.put(ResponseExceptionMapper.class, 506);
    priorities.put(ParamConverterProvider.class, 507);
    RestClientBuilder builder = RestClientBuilder.newBuilder().register(provider, priorities);
    Configuration configuration = builder.getConfiguration();
    assertTrue(configuration.isRegistered(MultiTypedProvider.class), MultiTypedProvider.class + " should be registered");
    assertTrue(configuration.isRegistered(provider), MultiTypedProvider.class + " should be registered");
    Map<Class<?>, Integer> contracts = configuration.getContracts(MultiTypedProvider.class);
    assertEquals(contracts.size(), priorities.size(),
        "There should be "+priorities.size()+" provider types registered");
    for(Map.Entry<Class<?>, Integer> priority : priorities.entrySet()) {
        Integer contractPriority = contracts.get(priority.getKey());
        assertEquals(contractPriority, priority.getValue(), "The priority for "+priority.getKey()+" should be "+priority.getValue());
    }
}
项目:microprofile-rest-client    文件:AdditionalRegistrationTest.java   
@Test
public void shouldRegisterAMultiTypedProviderClassWithPriorities() {
    Map<Class<?>, Integer> priorities = new HashMap<>();
    priorities.put(ClientRequestFilter.class, 500);
    priorities.put(ClientResponseFilter.class, 501);
    priorities.put(MessageBodyReader.class, 502);
    priorities.put(MessageBodyWriter.class, 503);
    priorities.put(ReaderInterceptor.class, 504);
    priorities.put(WriterInterceptor.class, 505);
    priorities.put(ResponseExceptionMapper.class, 506);
    priorities.put(ParamConverterProvider.class, 507);
    RestClientBuilder builder = RestClientBuilder.newBuilder().register(MultiTypedProvider.class, priorities);
    Configuration configuration = builder.getConfiguration();
    assertTrue(configuration.isRegistered(MultiTypedProvider.class), MultiTypedProvider.class + " should be registered");
    Map<Class<?>, Integer> contracts = configuration.getContracts(MultiTypedProvider.class);
    assertEquals(contracts.size(), priorities.size(),
        "There should be "+priorities.size()+" provider types registered");
    for(Map.Entry<Class<?>, Integer> priority : priorities.entrySet()) {
        Integer contractPriority = contracts.get(priority.getKey());
        assertEquals(contractPriority, priority.getValue(), "The priority for "+priority.getKey()+" should be "+priority.getValue());
    }
}
项目:bootique-jersey-client    文件:DefaultHttpClientFactoryTest.java   
@Test
public void testNewClient_Auth() {

    config.property("a", "b");

    Map<String, ClientRequestFilter> authFilters = new HashMap<>();
    authFilters.put("one", mockAuth1);
    authFilters.put("two", mockAuth2);

    DefaultHttpClientFactory factory = new DefaultHttpClientFactory(config, null, authFilters);
    Client c = factory.newAuthenticatedClient("one");
    assertNotNull(c);

    assertEquals("b", c.getConfiguration().getProperty("a"));
    assertTrue(c.getConfiguration().isRegistered(mockAuth1));
    assertFalse(c.getConfiguration().isRegistered(mockAuth2));
}
项目:vespa    文件:JerseyJaxRsClientFactory.java   
/**
 * Contains some workarounds for HTTP/JAX-RS/Jersey issues. See:
 *   https://jersey.java.net/apidocs/latest/jersey/org/glassfish/jersey/client/ClientProperties.html#SUPPRESS_HTTP_COMPLIANCE_VALIDATION
 *   https://jersey.java.net/apidocs/latest/jersey/org/glassfish/jersey/client/HttpUrlConnectorProvider.html#SET_METHOD_WORKAROUND
 */
@Override
public <T> T createClient(final Class<T> apiClass, final HostName hostName, final int port, final String pathPrefix, String scheme) {
    final UriBuilder uriBuilder = UriBuilder.fromPath(pathPrefix).host(hostName.s()).port(port).scheme(scheme);
    ClientBuilder builder = ClientBuilder.newBuilder()
            .property(ClientProperties.CONNECT_TIMEOUT, connectTimeoutMs)
            .property(ClientProperties.READ_TIMEOUT, readTimeoutMs)
            .property(ClientProperties.SUPPRESS_HTTP_COMPLIANCE_VALIDATION, true) // Allow empty PUT. TODO: Fix API.
            .property(HttpUrlConnectorProvider.SET_METHOD_WORKAROUND, true) // Allow e.g. PATCH method.
            .property(ClientProperties.FOLLOW_REDIRECTS, true);
    if (sslContext != null) {
        builder.sslContext(sslContext);
    }
    if (hostnameVerifier != null) {
        builder.hostnameVerifier(hostnameVerifier);
    }
    if (userAgent != null) {
        builder.register((ClientRequestFilter) context ->
                context.getHeaders().put(HttpHeaders.USER_AGENT, Collections.singletonList(userAgent)));
    }
    final WebTarget target = builder.build().target(uriBuilder);
    // TODO: Check if this fills up non-heap memory with loaded classes.
    return WebResourceFactory.newResource(apiClass, target);
}
项目:etcd-viewer    文件:EtcdProxyImpl.java   
private WebTarget getWebTarget() {
    if (client == null) {
        client = ClientBuilder.newClient();
        client.register(JacksonJsonProvider.class);

        // register the basic authentication filter if authentication information is provided
        if (authenticationToken != null) {
            client.register(new ClientRequestFilter() {
                @Override
                public void filter(ClientRequestContext requestContext) throws IOException {
                    requestContext.getHeaders().add("Authorization", "Basic " + authenticationToken);
                }
            });
        }

    }

    WebTarget target = client.target(targetUrl);

    return target;
}
项目:wordpress-rest-api-java-client    文件:WordPressClientFactory.java   
public WordPressClientFactory withCredentials(String username, String password) {
    this.clientRequestFilter = new ClientRequestFilter() {
        private final String charset = StandardCharsets.UTF_8.name();

        @Override
        public void filter(ClientRequestContext requestContext) throws IOException {

            String token = String.format("%s:%s", username, password);

            String basicAuthHeader = null;

            try {
                basicAuthHeader = "BASIC " + DatatypeConverter.printBase64Binary(token.getBytes(charset));
            }
            catch (UnsupportedEncodingException ex) {
                throw new IllegalStateException("Cannot encode with " + charset, ex);
            }

            MultivaluedMap<String, Object> headers = requestContext.getHeaders();
            headers.add("Authorization", basicAuthHeader);

            logger.trace("Added BasicAuth filter with username {}", username);
        }
    };
    return this;
}
项目:wordpress-rest-api-java-client    文件:JAXRSWordPressClient.java   
/**
 * <p>Package private constructor to encourage the caller to use this Client's associated Factory</p>
 * @param targetURI The base URI of the Wordpress REST API.  The {@code targetUri} should include the FQDN up to, but
 * not including the REST endpoints (e.g. "https://wp.foo.com/wp-json/" not
 * "https://wp.foo.com/wp-json/posts")
 * @param requestFilter A possibly null filter to pass every request this CLient makes to WordPress through.  Useful for
 * adding BasicAuth header information to every request, if appropriate.
 * @param transformer A concrete class to provide transformation services from the JSON returned by the WP-API and a POJO
 * that implements the Post marker interface
 */
JAXRSWordPressClient(URI targetURI,
                     ClientRequestFilter requestFilter,
                     Transformer<? extends Post> transformer) {
    this.targetURI = targetURI;
    this.transformer = transformer;
    this.jaxrsClient = ClientBuilder.newClient();

    // If our authenticator is provided, register it as a default ClientRequestFilter so that every request this Client
    // makes has BasicAuth information added to it
    if (requestFilter != null) {
        jaxrsClient = jaxrsClient.register(requestFilter);
    }
    logger.debug("Constructing new JAXRSWordPressClient with targetURI '{}' and transformer '{}' "
            + "and requestFilter '{}'", targetURI, transformer, requestFilter);
}
项目:redhat-sso    文件:SsoIT.java   
private static Greeting getGreeting(String url, String token, String from) {
    Client client = ClientBuilder.newClient();
    try {
        WebTarget target = client.target(url);
        System.out.println("URL : " + url);
        target.register((ClientRequestFilter) requestContext -> {
            requestContext.getHeaders().add("Authorization", "Bearer " + token);
        });
        IGreeting greetingClient = ((ResteasyWebTarget) target).proxy(IGreeting.class);
        return greetingClient.greeting(from);
    } finally {
        client.close();
    }
}
项目:microprofile-rest-client    文件:AdditionalRegistrationTest.java   
@Test
public void shouldRegisterInstanceWithPriority() {
    Integer priority = 1000;
    TestClientRequestFilter instance = new TestClientRequestFilter();
    RestClientBuilder builder = RestClientBuilder.newBuilder().register(instance, priority);
    Configuration configuration = builder.getConfiguration();
    assertTrue(configuration.isRegistered(TestClientRequestFilter.class), TestClientRequestFilter.class + " should be registered");
    assertTrue(configuration.isRegistered(instance), TestClientRequestFilter.class + " should be registered");
    Map<Class<?>, Integer> contracts = configuration.getContracts(TestClientRequestFilter.class);
    assertEquals(contracts.size(), 1, "There should be a registered contract for "+TestClientRequestFilter.class);
    assertEquals(contracts.get(ClientRequestFilter.class), priority, "The priority for "+TestClientRequestFilter.class+" should be 1000");
}
项目:microprofile-rest-client    文件:AdditionalRegistrationTest.java   
@Test
public void shouldRegisterAMultiTypedProviderInstance() {
    MultiTypedProvider provider = new MultiTypedProvider();
    Class[] providerTypes = {ClientRequestFilter.class, ClientResponseFilter.class,
        MessageBodyReader.class, MessageBodyWriter.class, ReaderInterceptor.class, WriterInterceptor.class,
        ResponseExceptionMapper.class, ParamConverterProvider.class};
    RestClientBuilder builder = RestClientBuilder.newBuilder().register(provider, providerTypes);
    Configuration configuration = builder.getConfiguration();
    assertTrue(configuration.isRegistered(MultiTypedProvider.class), MultiTypedProvider.class + " should be registered");
    assertTrue(configuration.isRegistered(provider), MultiTypedProvider.class + " should be registered");
    assertEquals(configuration.getContracts(MultiTypedProvider.class).size(), providerTypes.length,
        "There should be "+providerTypes.length+" provider types registered");
}
项目:microprofile-rest-client    文件:AdditionalRegistrationTest.java   
@Test
public void shouldRegisterProvidersWithPriority() {
    Integer priority = 1000;
    RestClientBuilder builder = RestClientBuilder.newBuilder().register(TestClientRequestFilter.class, priority);
    Configuration configuration = builder.getConfiguration();
    assertTrue(configuration.isRegistered(TestClientRequestFilter.class), TestClientRequestFilter.class + " should be registered");
    Map<Class<?>, Integer> contracts = configuration.getContracts(TestClientRequestFilter.class);
    assertEquals(contracts.size(), 1, "There should be a registered contract for "+TestClientRequestFilter.class);
    assertEquals(contracts.get(ClientRequestFilter.class), priority, "The priority for "+TestClientRequestFilter.class+" should be 1000");
}
项目:microprofile-rest-client    文件:AdditionalRegistrationTest.java   
@Test
public void shouldRegisterAMultiTypedProviderClass() {
    Class[] providerTypes = {ClientRequestFilter.class, ClientResponseFilter.class,
        MessageBodyReader.class, MessageBodyWriter.class, ReaderInterceptor.class, WriterInterceptor.class,
        ResponseExceptionMapper.class, ParamConverterProvider.class};
    RestClientBuilder builder = RestClientBuilder.newBuilder().register(MultiTypedProvider.class, providerTypes);
    Configuration configuration = builder.getConfiguration();
    assertTrue(configuration.isRegistered(MultiTypedProvider.class), MultiTypedProvider.class + " should be registered");
    assertEquals(configuration.getContracts(MultiTypedProvider.class).size(), providerTypes.length,
        "There should be "+providerTypes.length+" provider types registered");
}
项目:bootique-jersey-client    文件:HttpClientFactoryFactory.java   
protected Map<String, ClientRequestFilter> createAuthFilters(Injector injector) {
    Map<String, ClientRequestFilter> filters = new HashMap<>();

    if (auth != null) {
        auth.forEach((k, v) -> filters.put(k, v.createAuthFilter(injector)));
    }

    return filters;
}
项目:bootique-jersey-client    文件:BasicAuthenticatorFactory.java   
@Override
public ClientRequestFilter createAuthFilter(Injector injector) {
    Objects.requireNonNull(username);
    Objects.requireNonNull(password);

    return new BasicAuthenticator(username, password);
}
项目:bootique-jersey-client    文件:DefaultHttpClientFactory.java   
@Override
public Client newAuthenticatedClient(String authName) {

    ClientRequestFilter filter = authFilters.get(authName);
    if (filter == null) {
        throw new IllegalArgumentException("No authenticator configured for name: " + authName);
    }

    return newClient().register(filter);
}
项目:bootique-jersey-client    文件:DefaultHttpClientFactoryTest.java   
@Test(expected = IllegalArgumentException.class)
public void testNewClient_Auth_BadAuth() {

    config.property("a", "b");

    Map<String, ClientRequestFilter> authFilters = new HashMap<>();
    authFilters.put("one", mockAuth1);
    authFilters.put("two", mockAuth2);

    DefaultHttpClientFactory factory = new DefaultHttpClientFactory(config, null, authFilters);
    factory.newAuthenticatedClient("three");
}
项目:bootique-jersey-client    文件:Oauth2AuthenticatorFactoryIT.java   
@Test
public void testGetWithToken() {

    Oauth2AuthenticatorFactory factory = new Oauth2AuthenticatorFactory();
    factory.setPassword("p");
    factory.setUsername("u");
    factory.setTokenUrl("http://127.0.0.1:8080/token");

    ClientRequestFilter filter = factory.createAuthFilter(mock(Injector.class));

    Response r1 = ClientBuilder
            .newClient()
            .register(filter)
            .target("http://127.0.0.1:8080/require_token")
            .request()
            .get();

    assertEquals(200, r1.getStatus());

    Response r2 = ClientBuilder
            .newClient()
            .register(filter)
            .target("http://127.0.0.1:8080/require_token")
            .request()
            .get();

    assertEquals(200, r2.getStatus());
}
项目:https-github.com-g0t4-jenkins2-course-spring-boot    文件:SysVinitLaunchScriptIT.java   
private SpringBootDockerCmdExecFactory() {
    withClientRequestFilters(new ClientRequestFilter() {

        @Override
        public void filter(ClientRequestContext requestContext)
                throws IOException {
            // Workaround for https://go-review.googlesource.com/#/c/3821/
            requestContext.getHeaders().add("Connection", "close");
        }

    });
}
项目:gopay-java-api    文件:ResteasyGPConnector.java   
@Override
protected <T> T createRESTClientProxy(String apiUrl, Class<T> proxy) {
    URI i = null;
    try {
        i = new URI(apiUrl);
    } catch (URISyntaxException ex) {
        throw new RuntimeException(ex);
    }
    ResteasyClientBuilder builder = new ResteasyClientBuilder();
    builder.connectionCheckoutTimeout(CONNECTION_SETUP_TO, TimeUnit.SECONDS);
    builder.socketTimeout(CONNECTION_SETUP_TO, TimeUnit.SECONDS);
    builder.httpEngine(new URLConnectionEngine());

    ResteasyProviderFactory.getInstance().register(builder);

    ResteasyClient client = builder.build();
    client.register(new ClientRequestFilter() {
        @Override
        public void filter(ClientRequestContext requestContext) throws IOException {
            requestContext.getHeaders().add("User-Agent", getImplementationName() + "=" + getVersion());
        }
    });
    ObjectMapper mapper = new ObjectMapper();
    JacksonJaxbJsonProvider jaxbProvider
            = new JacksonJaxbJsonProvider(mapper, JacksonJaxbJsonProvider.DEFAULT_ANNOTATIONS);
    mapper.setAnnotationIntrospector(new JaxbAnnotationIntrospector());

    mapper.configure(Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
    builder.register(jaxbProvider);
    builder.register(proxy);

    ResteasyWebTarget resteasyWebTarget = client.target(i);
    return resteasyWebTarget.proxy(proxy);
}
项目:EDDI    文件:RestInterfaceFactory.java   
@Override
public <T> T get(Class<T> clazz, String targetServerUri, String securityToken) throws RestInterfaceFactoryException {
    ResteasyClient client = getResteasyClient(targetServerUri);
    ResteasyWebTarget target = client.target(targetServerUri);

    if (securityToken != null) {
        target.register((ClientRequestFilter) requestContext ->
                requestContext.getHeaders().add("Authorization", "Bearer " + securityToken));
    }

    return target.proxy(clazz);
}
项目:spring-boot-concourse    文件:SysVinitLaunchScriptIT.java   
private SpringBootDockerCmdExecFactory() {
    withClientRequestFilters(new ClientRequestFilter() {

        @Override
        public void filter(ClientRequestContext requestContext)
                throws IOException {
            // Workaround for https://go-review.googlesource.com/#/c/3821/
            requestContext.getHeaders().add("Connection", "close");
        }

    });
}
项目:blaze-storage    文件:BlazeStorageClient.java   
private WebTarget initTarget() {
    WebTarget clientTarget = client.target(serverUrl);

    // Register the non-response object providers
    clientTarget.register(BucketObjectUpdateRepresentationMessageBodyReader.class);
    clientTarget.register(BucketObjectUpdateRepresentationClientMessageBodyWriter.class);
    clientTarget.register(MultipartUploadRepresentationMessageBodyReader.class);
    clientTarget.register(MultipartUploadRepresentationMessageBodyWriter.class);

       for (ClientRequestFilter filter : requestFilters) {
        clientTarget = clientTarget.register(filter);
       }

       return new ResponseObjectWebTarget(clientTarget, responseObjectMessageReader);
}
项目:bootique-jersey-client    文件:Oauth2AuthenticatorFactory.java   
@Override
public ClientRequestFilter createAuthFilter(Injector injector) {
    return new OAuth2TokenAuthenticator(() -> getToken());
}
项目:bootique-jersey-client    文件:DefaultHttpClientFactory.java   
public DefaultHttpClientFactory(ClientConfig config, KeyStore trustStore, Map<String, ClientRequestFilter> authFilters) {
    this.authFilters = authFilters;
    this.config = config;
    this.trustStore = trustStore;
}
项目:bootique-jersey-client    文件:DefaultHttpClientFactoryTest.java   
@Before
public void before() {
    config = new ClientConfig();
    mockAuth1 = mock(ClientRequestFilter.class);
    mockAuth2 = mock(ClientRequestFilter.class);
}
项目:Hvalspik    文件:Config.java   
public ClientRequestFilter[] getClientRequestFilters() {
  return clientRequestFilters.toArray(new ClientRequestFilter[0]);
}
项目:Hvalspik    文件:Config.java   
public Config withClientRequestFilter(ClientRequestFilter clientRequestFilter) {
  this.clientRequestFilters.add(clientRequestFilter);
  return this;
}
项目:vso-intellij    文件:RestClientHelper.java   
public static ClientConfig getClientConfig(final ServerContext.Type type,
                                           final Credentials credentials,
                                           final String serverUri,
                                           final boolean includeProxySettings) {

    final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
    credentialsProvider.setCredentials(AuthScope.ANY, credentials);

    final ConnectorProvider connectorProvider = new ApacheConnectorProvider();
    // custom json provider ignores new fields that aren't recognized
    final JacksonJsonProvider jacksonJsonProvider = new JacksonJaxbJsonProvider()
            .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

    final ClientConfig clientConfig = new ClientConfig(jacksonJsonProvider).connectorProvider(connectorProvider);
    clientConfig.property(ApacheClientProperties.CREDENTIALS_PROVIDER, credentialsProvider);
    clientConfig.property(ClientProperties.REQUEST_ENTITY_PROCESSING, RequestEntityProcessing.BUFFERED);

    // For TFS OnPrem we only support NTLM authentication right now. Since 2016 servers support Basic as well,
    // we need to let the server and client negotiate the protocol instead of preemptively assuming Basic.
    // TODO: This prevents PATs from being used OnPrem. We need to fix this soon to support PATs onPrem.
    clientConfig.property(ApacheClientProperties.PREEMPTIVE_BASIC_AUTHENTICATION, type != ServerContext.Type.TFS);

    //Define a local HTTP proxy
    if (includeProxySettings) {
        final HttpProxyService proxyService = PluginServiceProvider.getInstance().getHttpProxyService();
        final String proxyUrl = proxyService.getProxyURL();
        clientConfig.property(ClientProperties.PROXY_URI, proxyUrl);
        if (proxyService.isAuthenticationRequired()) {
            // To work with authenticated proxies and TFS, we provide the proxy credentials if they are registered
            final AuthScope ntlmAuthScope =
                    new AuthScope(proxyService.getProxyHost(), proxyService.getProxyPort(),
                            AuthScope.ANY_REALM, AuthScope.ANY_SCHEME);
            credentialsProvider.setCredentials(ntlmAuthScope,
                    new UsernamePasswordCredentials(proxyService.getUserName(), proxyService.getPassword()));
        }
    }

    // if this is a onPrem server and the uri starts with https, we need to setup ssl
    if (isSSLEnabledOnPrem(type, serverUri)) {
        clientConfig.property(ApacheClientProperties.SSL_CONFIG, getSslConfigurator());
    }

    // register a filter to set the User Agent header
    clientConfig.register(new ClientRequestFilter() {
        @Override
        public void filter(final ClientRequestContext requestContext) throws IOException {
            // The default user agent is something like "Jersey/2.6"
            final String defaultUserAgent = VersionInfo.getUserAgent("Apache-HttpClient", "org.apache.http.client", HttpClientBuilder.class);
            // We get the user agent string from the Telemetry context
            final String userAgent = PluginServiceProvider.getInstance().getTelemetryContextInitializer().getUserAgent(defaultUserAgent);
            // Finally, we can add the header
            requestContext.getHeaders().add(HttpHeaders.USER_AGENT, userAgent);
        }
    });

    return clientConfig;
}
项目:blaze-storage    文件:BlazeStorageClient.java   
private BlazeStorageClient(String serverUrl, ClientRequestFilter[] requestFilters) {
    this.serverUrl = serverUrl;
    this.requestFilters = requestFilters;

    this.client = ClientBuilder.newClient();
}
项目:blaze-storage    文件:BlazeStorageClient.java   
public static BlazeStorage getInstance(String serverUrl) {
    return new BlazeStorageClient(serverUrl, new ClientRequestFilter[0]);
}
项目:blaze-storage    文件:BlazeStorageClient.java   
public static BlazeStorage getInstance(String serverUrl, ClientRequestFilter... requestFilters) {
    return new BlazeStorageClient(serverUrl, requestFilters);
}
项目:docker-java    文件:JerseyDockerCmdExecFactory.java   
public JerseyDockerCmdExecFactory withClientRequestFilters(ClientRequestFilter... clientRequestFilters) {
    this.clientRequestFilters = clientRequestFilters;
    return this;
}
项目:openstack-maven-CIET-students    文件:OpenStack.java   
private static void initialize() {

    /*
    //class MyX509TrustManager implements X509TrustManager
    TrustManager mytm[] = null;
       KeyManager mykm[] = null;

       try {
           mytm = new TrustManager[]{new MyX509TrustManager("./truststore_client", "asdfgh".toCharArray())};
           mykm = new KeyManager[]{new MyX509KeyManager("./keystore_client", "asdfgh".toCharArray())};
       } catch (Exception ex) {

       }

    SSLContext context = null;
       context = SSLContext.getInstance("SSL");
       context.init(mykm, mytm, null);

    */

    try {

        SSLContext context = null;
           context = SSLContext.getInstance("SSL");
           context.init(null, null, null);

           SslConfigurator sslConfig = SslConfigurator.newInstance();
                /*
                   .trustStoreFile("./truststore_client")
                   .trustStorePassword("asdfgh")

                   .keyStoreFile("./keystore_client")
                   .keyPassword("asdfgh");
                   */
                //old: CLIENT.property(ClientProperties.SSL_CONFIG, new SslConfig(context));

           CLIENT = ClientBuilder.newBuilder().sslContext(sslConfig.createSSLContext()).build();

        DEFAULT_MAPPER = new ObjectMapper();

        DEFAULT_MAPPER.setSerializationInclusion(Inclusion.NON_NULL);
        DEFAULT_MAPPER.enable(SerializationConfig.Feature.INDENT_OUTPUT);
        DEFAULT_MAPPER.enable(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY);
        DEFAULT_MAPPER.disable(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES);
        DEFAULT_MAPPER.enable(DeserializationConfig.Feature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT);

        WRAPPED_MAPPER = new ObjectMapper();

        WRAPPED_MAPPER.setSerializationInclusion(Inclusion.NON_NULL);
        WRAPPED_MAPPER.enable(SerializationConfig.Feature.INDENT_OUTPUT);
        WRAPPED_MAPPER.enable(SerializationConfig.Feature.WRAP_ROOT_VALUE);
        WRAPPED_MAPPER.enable(DeserializationConfig.Feature.UNWRAP_ROOT_VALUE);
        WRAPPED_MAPPER.enable(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY);
        WRAPPED_MAPPER.disable(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES);
        WRAPPED_MAPPER.enable(DeserializationConfig.Feature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT);

        CLIENT.register(new JacksonFeature()).register(new ContextResolver<ObjectMapper>() {

            public ObjectMapper getContext(Class<?> type) {
                return type.getAnnotation(JsonRootName.class) == null ? DEFAULT_MAPPER : WRAPPED_MAPPER;
            }

        });

        CLIENT.register(new ClientRequestFilter() {

            public void filter(ClientRequestContext requestContext) throws IOException {
                requestContext.getHeaders().remove("Content-Language");
                requestContext.getHeaders().remove("Content-Encoding");
            }
        });

    } catch(Exception e) {
        throw new RuntimeException(e.getMessage(), e);
    }

}
项目:bootique-jersey-client    文件:AuthenticatorFactory.java   
/**
 * @param injector DI injector that can be used to lookup extra services required by the factory.
 * @return
 * @since 0.24
 */
ClientRequestFilter createAuthFilter(Injector injector);