Example usage for org.springframework.web.client RestTemplate exchange

List of usage examples for org.springframework.web.client RestTemplate exchange

Introduction

In this page you can find the example usage for org.springframework.web.client RestTemplate exchange.

Prototype

@Override
    public <T> ResponseEntity<T> exchange(String url, HttpMethod method, @Nullable HttpEntity<?> requestEntity,
            ParameterizedTypeReference<T> responseType, Map<String, ?> uriVariables) throws RestClientException 

Source Link

Usage

From source file:com.bose.aem.spring.config.ConfigServicePropertySourceLocator.java

private Environment getRemoteEnvironment(RestTemplate restTemplate, String uri, String name, String profile,
        String label) {/* w  w w  .  ja v  a  2  s .c o  m*/
    String path = "/{name}/{profile}";
    Object[] args = new String[] { name, profile };
    if (StringUtils.hasText(label)) {
        args = new String[] { name, profile, label };
        path = path + "/{label}";
    }
    ResponseEntity<Environment> response = null;

    try {
        response = restTemplate.exchange(uri + path, HttpMethod.GET, new HttpEntity<Void>((Void) null),
                Environment.class, args);
    } catch (HttpClientErrorException e) {
        if (e.getStatusCode() != HttpStatus.NOT_FOUND) {
            throw e;
        }
    }

    if (response == null || response.getStatusCode() != HttpStatus.OK) {
        return null;
    }
    Environment result = response.getBody();
    return result;
}

From source file:org.trustedanalytics.servicebroker.gearpump.service.CloudFoundryService.java

private ResponseEntity<String> executeWithHeaders(String url, HttpMethod method, String body,
        HttpHeaders headers, Object... urlVariables) throws RestClientException {
    RestTemplate restTemplate = cfCaller.createRestTemplate();
    HttpEntity<String> request = cfCaller.createJsonRequest(body, headers);
    URI expanded = (new UriTemplate(url)).expand(urlVariables);
    LOGGER.info("Performing call: {}", expanded.toString());
    ResponseEntity<String> response = restTemplate.exchange(url, method, request, String.class, urlVariables);
    LOGGER.debug("Response status: {}", response.getStatusCode());
    return response;
}

From source file:org.cloudfoundry.identity.uaa.api.common.impl.UaaConnectionHelper.java

/**
 * Make a REST call with custom headers//from  www .  j  ava  2 s . co  m
 * 
 * @param method the Http Method (GET, POST, etc)
 * @param uri the URI of the endpoint (relative to the base URL set in the constructor)
 * @param body the request body
 * @param responseType the object type to be returned
 * @param uriVariables any uri variables
 * @return the response body
 * @see org.springframework.web.client.RestTemplate#exchange(String, HttpMethod, HttpEntity, ParameterizedTypeReference, Object...)
 */
private <RequestType, ResponseType> ResponseType exchange(HttpMethod method, HttpHeaders headers,
        RequestType body, String uri, ParameterizedTypeReference<ResponseType> responseType,
        Object... uriVariables) {
    getHeaders(headers);

    RestTemplate template = new RestTemplate();
    template.setInterceptors(LoggerInterceptor.INTERCEPTOR);

    HttpEntity<RequestType> requestEntity = null;
    if (body == null) {
        requestEntity = new HttpEntity<RequestType>(headers);
    } else {
        requestEntity = new HttpEntity<RequestType>(body, headers);
    }

    // combine url into the varargs
    List<Object> varList = new ArrayList<Object>();
    varList.add(url);
    if (uriVariables != null && uriVariables.length > 0) {
        varList.addAll(Arrays.asList(uriVariables));
    }

    ResponseEntity<ResponseType> responseEntity = template.exchange("{base}" + uri, method, requestEntity,
            responseType, varList.toArray());

    if (HttpStatus.Series.SUCCESSFUL.equals(responseEntity.getStatusCode().series())) {
        return responseEntity.getBody();
    } else {
        return null;
    }
}

From source file:org.cloudfoundry.identity.uaa.integration.feature.SamlLoginWithLocalIdpIT.java

public static SamlServiceProvider createOrUpdateSamlServiceProvider(String accessToken, String url,
        SamlServiceProvider provider) {/*from   ww w  .j av a 2  s  . c  om*/
    RestTemplate client = new RestTemplate();
    MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
    headers.add("Accept", MediaType.APPLICATION_JSON_VALUE);
    headers.add("Authorization", "bearer " + accessToken);
    headers.add("Content-Type", MediaType.APPLICATION_JSON_VALUE);
    headers.add(IdentityZoneSwitchingFilter.HEADER, provider.getIdentityZoneId());
    List<SamlServiceProvider> existing = getSamlServiceProviders(accessToken, url,
            provider.getIdentityZoneId());
    if (existing != null) {
        for (SamlServiceProvider p : existing) {
            if (p.getEntityId().equals(provider.getEntityId())
                    && p.getIdentityZoneId().equals(provider.getIdentityZoneId())) {
                provider.setId(p.getId());
                HttpEntity<SamlServiceProvider> putHeaders = new HttpEntity<SamlServiceProvider>(provider,
                        headers);
                ResponseEntity<String> providerPut = client.exchange(url + "/saml/service-providers/{id}",
                        HttpMethod.PUT, putHeaders, String.class, provider.getId());
                if (providerPut.getStatusCode() == HttpStatus.OK) {
                    return JsonUtils.readValue(providerPut.getBody(), SamlServiceProvider.class);
                }
            }
        }
    }

    HttpEntity<SamlServiceProvider> postHeaders = new HttpEntity<SamlServiceProvider>(provider, headers);
    ResponseEntity<String> providerPost = client.exchange(url + "/saml/service-providers/{id}", HttpMethod.POST,
            postHeaders, String.class, provider.getId());
    if (providerPost.getStatusCode() == HttpStatus.CREATED) {
        return JsonUtils.readValue(providerPost.getBody(), SamlServiceProvider.class);
    }
    throw new IllegalStateException(
            "Invalid result code returned, unable to create identity provider:" + providerPost.getStatusCode());
}

From source file:org.cloudfoundry.identity.uaa.integration.util.IntegrationTestUtils.java

public static ScimGroup getGroup(String token, String zoneId, String url, String displayName) {
    RestTemplate template = new RestTemplate();
    MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
    headers.add("Accept", APPLICATION_JSON_VALUE);
    headers.add("Authorization", "bearer " + token);
    headers.add("Content-Type", APPLICATION_JSON_VALUE);
    if (StringUtils.hasText(zoneId)) {
        headers.add(IdentityZoneSwitchingFilter.HEADER, zoneId);
    }/*ww  w . j  av  a 2s . co  m*/
    ResponseEntity<SearchResults<ScimGroup>> findGroup = template.exchange(
            url + "/Groups?filter=displayName eq \"{groupId}\"", HttpMethod.GET, new HttpEntity(headers),
            new ParameterizedTypeReference<SearchResults<ScimGroup>>() {
            }, displayName);
    if (findGroup.getBody().getTotalResults() == 0) {
        return null;
    } else {
        return findGroup.getBody().getResources().iterator().next();
    }
}

From source file:org.cloudfoundry.identity.uaa.integration.util.IntegrationTestUtils.java

public static ScimGroup updateGroup(String token, String zoneId, String url, ScimGroup group) {
    RestTemplate template = new RestTemplate();
    MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
    headers.add("Accept", APPLICATION_JSON_VALUE);
    headers.add("Authorization", "bearer " + token);
    headers.add("If-Match", "*");
    headers.add("Content-Type", APPLICATION_JSON_VALUE);
    if (StringUtils.hasText(zoneId)) {
        headers.add(IdentityZoneSwitchingFilter.HEADER, zoneId);
    }/* w  w w  . j  a  v  a  2 s .c  o m*/
    ResponseEntity<ScimGroup> updateGroup = template.exchange(url + "/Groups/{groupId}", HttpMethod.PUT,
            new HttpEntity(JsonUtils.writeValueAsBytes(group), headers), ScimGroup.class, group.getId());
    assertEquals(HttpStatus.OK, updateGroup.getStatusCode());
    return updateGroup.getBody();
}

From source file:org.cloudfoundry.identity.uaa.integration.util.IntegrationTestUtils.java

public static IdentityProvider createOrUpdateProvider(String accessToken, String url,
        IdentityProvider provider) {/*from w ww  . j ava2s.  c  om*/
    RestTemplate client = new RestTemplate();
    MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
    headers.add("Accept", APPLICATION_JSON_VALUE);
    headers.add("Authorization", "bearer " + accessToken);
    headers.add("Content-Type", APPLICATION_JSON_VALUE);
    headers.add(IdentityZoneSwitchingFilter.HEADER, provider.getIdentityZoneId());
    List<IdentityProvider> existing = getProviders(accessToken, url, provider.getIdentityZoneId());
    if (existing != null) {
        for (IdentityProvider p : existing) {
            if (p.getOriginKey().equals(provider.getOriginKey())
                    && p.getIdentityZoneId().equals(provider.getIdentityZoneId())) {
                provider.setId(p.getId());
                HttpEntity putHeaders = new HttpEntity(provider, headers);
                ResponseEntity<String> providerPut = client.exchange(url + "/identity-providers/{id}",
                        HttpMethod.PUT, putHeaders, String.class, provider.getId());
                if (providerPut.getStatusCode() == HttpStatus.OK) {
                    return JsonUtils.readValue(providerPut.getBody(), IdentityProvider.class);
                }
            }
        }
    }

    HttpEntity postHeaders = new HttpEntity(provider, headers);
    ResponseEntity<String> providerPost = client.exchange(url + "/identity-providers/{id}", HttpMethod.POST,
            postHeaders, String.class, provider.getId());
    if (providerPost.getStatusCode() == HttpStatus.CREATED) {
        return JsonUtils.readValue(providerPost.getBody(), IdentityProvider.class);
    }
    throw new IllegalStateException(
            "Invalid result code returned, unable to create identity provider:" + providerPost.getStatusCode());
}

From source file:org.springframework.batch.admin.web.server.JsonIntegrationTests.java

@Test
public void testListedResourcesWithGet() throws Exception {

    Map<String, String> params = new HashMap<String, String>();
    params.put("jobName", "job2");
    // These should be there if the previous test cases worked
    params.put("jobInstanceId", "0");
    params.put("jobExecutionId", "0");
    params.put("stepExecutionId", "0");

    RestTemplate template = new RestTemplate();

    PropertiesFactoryBean propertiesFactoryBean = new PropertiesFactoryBean();
    propertiesFactoryBean.setLocation(//from   w w w .j  a v a2  s.c o  m
            new ClassPathResource("/org/springframework/batch/admin/web/manager/json-resources.properties"));
    propertiesFactoryBean.afterPropertiesSet();
    Properties properties = propertiesFactoryBean.getObject();

    for (String path : properties.stringPropertyNames()) {
        if (!StringUtils.hasText(path) || !path.startsWith("GET")) {
            continue;
        }
        path = path.substring(path.indexOf("/"));
        ResponseEntity<String> result = template.exchange(serverRunning.getUrl() + path, HttpMethod.GET, null,
                String.class, params);
        JsonWrapper wrapper = new JsonWrapper(result.getBody());
        // System.err.println(wrapper);
        assertNotNull(wrapper);
    }
}

From source file:org.springframework.cloud.config.client.ConfigServicePropertySourceLocator.java

private Environment getRemoteEnvironment(RestTemplate restTemplate, ConfigClientProperties properties,
        String label, String state) {
    String path = "/{name}/{profile}";
    String name = properties.getName();
    String profile = properties.getProfile();
    String token = properties.getToken();
    String uri = properties.getRawUri();

    Object[] args = new String[] { name, profile };
    if (StringUtils.hasText(label)) {
        args = new String[] { name, profile, label };
        path = path + "/{label}";
    }/*from   w ww.  j a v a  2s .  c o m*/
    ResponseEntity<Environment> response = null;

    try {
        HttpHeaders headers = new HttpHeaders();
        if (StringUtils.hasText(token)) {
            headers.add(TOKEN_HEADER, token);
        }
        if (StringUtils.hasText(state)) { //TODO: opt in to sending state?
            headers.add(STATE_HEADER, state);
        }
        final HttpEntity<Void> entity = new HttpEntity<>((Void) null, headers);
        response = restTemplate.exchange(uri + path, HttpMethod.GET, entity, Environment.class, args);
    } catch (HttpClientErrorException e) {
        if (e.getStatusCode() != HttpStatus.NOT_FOUND) {
            throw e;
        }
    }

    if (response == null || response.getStatusCode() != HttpStatus.OK) {
        return null;
    }
    Environment result = response.getBody();
    return result;
}