static String retrievalLog(OperationContext context) { StringBuilder builder=new StringBuilder(); Query query=context.getQuery(); if(query.isEmpty()) { builder.append("Executing resource retrieval:").append(NL); } else { builder.append("Executing resource query:").append(NL); builder.append(" - Parameters:").append(NL); for(String parameter:query.parameterNames()) { builder.append(" + ").append(parameter).append(" : ").append(query.getParameter(parameter).rawValues()); } } ContentPreferences preferences=context.contentPreferences(); if(preferences!=null) { builder.append(" - Using preferences: ").append(preferences).append(NL); } else { builder.append(" - Using default preferences: ").append(ContentPreferences.defaultPreferences()).append(NL); } return builder.toString(); }
static RetrievalScenario forContext(OperationContext context) { Query query=context.getQuery(); RetrievalScenario result=RESOURCE_RETRIEVAL; if(!query.isEmpty()) { if(query.hasParameter(CONSTRAINT_QUERY_PARAMETER)) { if(query.size()==1) { result=CONSTRAINT_REPORT_RETRIEVAL; } else { result=MIXED_QUERY; } } else if(!context.isResourceQueryable()) { result=QUERY_NOT_SUPPORTED; } } return result; }
private Response prepareResourceRetrievalResponse( OperationContext context, Variant variant, DataSet entity, boolean includeEntity) { ResponseBuilder builder=prepareRetrievalResponse(context, variant, entity, includeEntity); addOptionsMandatoryHeaders(context, builder); ContentPreferences preferences = context.contentPreferences(); if(preferences!=null) { builder. header( ContentPreferencesUtils.PREFERENCE_APPLIED_HEADER, ContentPreferencesUtils.asPreferenceAppliedHeader(preferences)); } Query query=context.getQuery(); if(!query.isEmpty()) { builder. header( HttpHeaders.LINK, EndpointControllerUtils. createQueryOfLink( context.base().resolve(context.path()), query)); } return builder.build(); }
private Response handleResourceRetrieval(OperationContext context, boolean includeEntity, Variant variant) { try { if(LOGGER.isDebugEnabled()) { LOGGER.debug(EndpointControllerUtils.retrievalLog(context)); } PublicResource resource=context.resource(); Query query=context.getQuery(); ContentPreferences preferences = Optional. fromNullable(context.contentPreferences()). or(new DefaultContentPreferencesSupplier()); DataSet entity= query.isEmpty()? resource.entity(preferences): resource.query(query,preferences); if(LOGGER.isTraceEnabled()) { LOGGER.trace(EndpointControllerUtils.retrievalResultLog(entity)); } return prepareResourceRetrievalResponse(context,variant,entity,includeEntity); } catch (ApplicationExecutionException e) { throw diagnoseApplicationExecutionException(context, e); } catch (ApplicationContextException e) { throw new InternalServerException(context,e); } }