/** * Send a request with payload. */ private ResponseEntity retrieveResponseFromRequest( final String method, final String uri, final String payload, final MediaType payloadType, final int responseCode, final MediaType accept, final List<Pair<String,Predicate<String>>> headerFields ) { ClientRequest request; try { if ( payload != null ) { request = withHeaders( REQUEST_BUILDER ).type( payloadType ).accept( accept ).entity( payload ) .build( new URI( uri ), method ); } else { request = withHeaders( REQUEST_BUILDER ).accept( accept ).build( new URI( uri ), method ); } } catch ( URISyntaxException e ) { throw new RuntimeException( e ); } return retrieveResponse( uri, responseCode, accept, headerFields, request ); }
private <T extends Builder> T withHeaders( T builder ) { for ( Entry<String,String> entry : addedRequestHeaders.entrySet() ) { builder.header(entry.getKey(),entry.getValue()); } return builder; }
private void reportSync(final Measurement[] measurements) { final ClientRequest request = ClientRequest.create() .type(MediaType.APPLICATION_JSON_TYPE) .entity(measurements) .build(batchResource.getURI(), HttpMethod.POST); final ClientResponse response; try { response = batchResource.getHeadHandler().handle(request); } catch (final ClientHandlerException e) { LOGGER.log(Level.WARNING, String.format("Unable to send measurements to %s", batchResource.getURI()), e); saveMeasurements(measurements); return; } switch (response.getStatus()) { case 204: case 200: LOGGER.fine("Successfully submitted measurements"); //only one thread can be used for resending measurements at a time if (resending.compareAndSet(false, true)) try { resendMeasurements(); } finally { resending.set(false); } return; default: LOGGER.warning(String.format("Failed to submit measurements. Response code is %s (%s)", response.getStatus(), response.getStatusInfo().getReasonPhrase())); saveMeasurements(measurements); } }
protected FamilyTreePersonState updatePreferredRelationship(String rel, String treeUserId, String personId, PreferredRelationshipState relationshipState, StateTransitionOption[] options) { Link link = getLink(rel); if (link == null || link.getTemplate() == null) { return null; } String template = link.getTemplate(); String uri; try{ uri = UriTemplate.fromTemplate(template).set("pid", personId).set("uid", treeUserId).expand(); } catch (VariableExpansionException e) { throw new GedcomxApplicationException(e); } catch (MalformedUriTemplateException e) { throw new GedcomxApplicationException(e); } ClientRequest request = RequestUtil.applyFamilySearchConneg(createAuthenticatedRequest()).header("Location", relationshipState.getSelfUri()).build(java.net.URI.create(uri), HttpMethod.PUT); return ((FamilyTreeStateFactory)this.stateFactory).newPersonState(request, invoke(request, options), this.accessToken); }
protected GedcomxApplicationState readPage(String rel, StateTransitionOption... options) { Link link = getLink(rel); if (link == null || link.getHref() == null) { return null; } ClientRequest.Builder builder = createAuthenticatedRequest(); Object accept = this.request.getHeaders().getFirst("Accept"); Object contentType = this.request.getHeaders().getFirst("Content-Type"); if (accept != null) { builder = builder.accept(String.valueOf(accept)); } if (contentType != null) { builder = builder.type(String.valueOf(contentType)); } ClientRequest request = builder.build(link.getHref().toURI(), HttpMethod.GET); return clone(request, invoke(request, options)); }
protected ClientRequest.Builder createRequest() { return ClientRequest.create().header(HttpHeaders.USER_AGENT, "gedcomx-java-sdk/" + SDK_VERSION); }