public static String getRealClientIpAddr(final ResourceContext context) { // If some upstream device added an X-Forwarded-For header // use it for the client ip // This will support scenarios where load balancers or gateways // front the Azkaban web server and a changing Ip address invalidates // the session final Map<String, String> headers = context.getRequestHeaders(); final WebUtils utils = new WebUtils(); return utils.getRealClientIpAddr(headers, (String) context.getRawRequestContext().getLocalAttr("REMOTE_ADDR")); } }
@Override public Map<ComplexResourceKey<JobExecutionQuery, EmptyRecord>, JobExecutionQueryResult> batchGet( Set<ComplexResourceKey<JobExecutionQuery, EmptyRecord>> keys) { Map<ComplexResourceKey<JobExecutionQuery, EmptyRecord>, JobExecutionQueryResult> results = Maps.newHashMap(); for (ComplexResourceKey<JobExecutionQuery, EmptyRecord> key : keys) { JobExecutionQueryResult result = get(key); if (result != null) { results.put(key, get(key)); } } ResourceContext rc = this.getContext(); rc.setResponseHeader("Access-Control-Allow-Origin", "*"); this.setContext(rc); return results; } }
@Override public void get(Long key, @CallbackParam Callback<Greeting> callback) { if (getContext().responseAttachmentsSupported()) { final GreetingWriter greetingWriter = new GreetingWriter(ByteString.copy(greetingBytes)); final RestLiResponseAttachments streamingAttachments = new RestLiResponseAttachments.Builder().appendSingleAttachment(greetingWriter).build(); getContext().setResponseAttachments(streamingAttachments); final String headerValue = getContext().getRequestHeaders().get("getHeader"); getContext().setResponseHeader("getHeader", headerValue); callback.onSuccess(new Greeting().setMessage("Your greeting has an attachment since you were kind and " + "decided you wanted to read it!").setId(key)); } callback.onError(new RestLiServiceException(HttpStatus.S_400_BAD_REQUEST, "You must be able to receive attachments!")); }
private Properties getHeaders() { Properties headerProperties = new Properties(); for (Map.Entry<String, String> entry : getContext().getRequestHeaders().entrySet()) { if (ALLOWED_METADATA.contains(entry.getKey())) { headerProperties.put(entry.getKey(), entry.getValue()); } } return headerProperties; } }
public void create(Greeting entity, @CallbackParam Callback<CreateResponse> callback, @RestLiAttachmentsParam RestLiAttachmentReader attachmentReader) { if (attachmentReader != null) { final String headerValue = getContext().getRequestHeaders().get("createHeader"); getContext().setResponseHeader("createHeader", headerValue); attachmentReader.registerAttachmentReaderCallback(new GreetingBlobReaderCallback(callback)); return; } callback.onError(new RestLiServiceException(HttpStatus.S_400_BAD_REQUEST, "You must supply some attachments!")); }
if (result instanceof UpdateEntityResponse && resourceContext.shouldReturnEntity()) final DataMap data = RestUtils.projectFields(entityData, resourceContext.getProjectionMode(), resourceContext.getProjectionMask());
private void respondWithResponseAttachment(final Callback<UpdateResponse> callback) { if (getContext().responseAttachmentsSupported()) { //Echo the bytes back from the header final String headerValue = getContext().getRequestHeaders().get("getHeader"); final GreetingWriter greetingWriter = new GreetingWriter(ByteString.copy(headerValue.getBytes())); final RestLiResponseAttachments streamingAttachments = new RestLiResponseAttachments.Builder().appendSingleAttachment(greetingWriter).build(); getContext().setResponseAttachments(streamingAttachments); callback.onSuccess(new UpdateResponse(HttpStatus.S_200_OK)); } callback.onError(new RestLiServiceException(HttpStatus.S_400_BAD_REQUEST, "You must be able to receive attachments!")); }
ProjectionMode.AUTOMATIC, resourceContext.getPagingProjectionMask())); .projectFields(entry.data(), resourceContext.getProjectionMode(), resourceContext.getProjectionMask()))); .projectFields(customMetadata.data(), resourceContext.getMetadataProjectionMode(), resourceContext.getMetadataProjectionMask()));
final DataMap data = RestUtils.projectFields(record.data(), resourceContext.getProjectionMode(), resourceContext.getProjectionMask());
context.setProjectionMode(ProjectionMode.MANUAL); MaskTree mask = context.getProjectionMask(); if(mask != null && ignoreProjection == false)
@Action(name = "modifyCustomContext") public void modifyCustomContext(BaseResource resource) { java.util.Optional<Object> foo = resource.getContext().getCustomContextData("foo"); if (foo.isPresent() && foo.get().equals("bar")) { resource.getContext().putCustomContextData("foo", "newbar"); return; } throw new RestLiServiceException(HttpStatus.S_500_INTERNAL_SERVER_ERROR); } }
/** * Concatonates request cookies and add it as a single response cookie. */ private void setResponseCookie() { ResourceContext context = getContext(); List<HttpCookie> requestCookies = context.getRequestCookies(); if (requestCookies.size() > 0) { for (HttpCookie elem : requestCookies) { context.addResponseCookie(new HttpCookie(elem.getValue(), elem.getName())); } } else { context.addResponseCookie(new HttpCookie("empty_name", "empty_cookie")); } }
private void addListenerFromContext(Task<Object> task, ResourceContext resourceContext) { @SuppressWarnings("unchecked") PromiseListener<Object> listener = (PromiseListener<Object>) resourceContext.getRawRequestContext().getLocalAttr(ATTRIBUTE_PROMISE_LISTENER); if (listener != null) { task.addListener(new PromiseListener<Object>() { @Override public void onResolved(Promise<Object> promise) { // ParSeq engine doesn't guarantee that the Promise passed in is the task object this listener attached to. // The original listener's business logic may depend on the task. We need this intermediate listener to relay // the task to the original listener. listener.onResolved(task); } }); } }
private Properties getHeaders() { Properties headerProperties = new Properties(); for (Map.Entry<String, String> entry : getContext().getRequestHeaders().entrySet()) { if (ALLOWED_METADATA.contains(entry.getKey())) { headerProperties.put(entry.getKey(), entry.getValue()); } } return headerProperties; } }
if (result instanceof BatchCreateKVResult && resourceContext.shouldReturnEntity()) resourceContext.getProjectionMode(), resourceContext.getProjectionMask());
@Override public JobExecutionQueryResult get(ComplexResourceKey<JobExecutionQuery, EmptyRecord> key) { JobExecutionQuery query = key.getKey(); JobExecutionInfoArray jobExecutionInfos = new JobExecutionInfoArray(); try { for (JobExecutionInfo jobExecutionInfo : this.jobHistoryStore.get(query)) { jobExecutionInfos.add(jobExecutionInfo); } } catch (Throwable t) { LOGGER .error(String.format("Failed to execute query [id = %s, type = %s]", query.getId(), query.getIdType().name()), t); return null; } JobExecutionQueryResult result = new JobExecutionQueryResult(); result.setJobExecutions(jobExecutionInfos); ResourceContext rc = this.getContext(); rc.setResponseHeader("Access-Control-Allow-Origin", "*"); this.setContext(rc); return result; }
@Override public CreateResponse create(Greeting greeting) { Map<String, String> requestHeaders = getContext().getRequestHeaders(); if (!requestHeaders.get(TEST1_HEADER).equals(TEST1_VALUE) || !requestHeaders.get(TEST2_HEADER).equals(TEST2_VALUE)) { throw new RestLiServiceException(HttpStatus.S_500_INTERNAL_SERVER_ERROR, "Request headers are not modified from filter."); } return new CreateResponse(1234L); } }
if (createResponse instanceof CreateKVResponse && resourceContext.shouldReturnEntity()) final DataMap data = RestUtils.projectFields(entityData, resourceContext.getProjectionMode(), resourceContext.getProjectionMask()); idResponse = new AnyRecord(data);
@Override public Map<ComplexResourceKey<JobExecutionQuery, EmptyRecord>, JobExecutionQueryResult> batchGet( Set<ComplexResourceKey<JobExecutionQuery, EmptyRecord>> keys) { Map<ComplexResourceKey<JobExecutionQuery, EmptyRecord>, JobExecutionQueryResult> results = Maps.newHashMap(); for (ComplexResourceKey<JobExecutionQuery, EmptyRecord> key : keys) { JobExecutionQueryResult result = get(key); if (result != null) { results.put(key, get(key)); } } ResourceContext rc = this.getContext(); rc.setResponseHeader("Access-Control-Allow-Origin", "*"); this.setContext(rc); return results; } }
String bestEncoding = pickBestEncoding(resourceContext.getRequestHeaders().get(RestConstants.HEADER_ACCEPT), Collections.emptySet());