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; }
static String toString(Query query) { List<String> parameters=Lists.newArrayList(); for(String paramName:query.parameterNames()) { for(String rawValue:query.getParameter(paramName).rawValues()) { parameters.add(paramName+"="+rawValue); } } StringBuilder builder=new StringBuilder(); Iterator<String> iterator=parameters.iterator(); while(iterator.hasNext()) { builder.append(iterator.next()); if(iterator.hasNext()) { builder.append("&"); } } return builder.toString(); }
@Test @Category({ HappyPath.class }) @OperateOnDeployment(DEPLOYMENT) public void testSupportForQueriesWithRepeatedValuedParameters(@ArquillianResource final URL url) throws Exception { LOGGER.info("Started {}",testName.getMethodName()); Query query=queryResource(url, "ldp4j/api/"+MyApplication.ROOT_QUERYABLE_RESOURCE_PATH+"?param1=value1¶m2=value2¶m2=value3"); assertThat(query.size(),equalTo(2)); assertThat(query.hasParameter("param1"),equalTo(true)); assertThat(query.hasParameter("param2"),equalTo(true)); assertThat(query.getParameter("param2").cardinality(),equalTo(2)); assertThat(query.getParameter("param2").rawValues(),hasItems("value2","value3")); LOGGER.info("Completed {}",testName.getMethodName()); }
static DataSet getDescription(Name<?> id, Query query) throws InvalidQueryException { DataSet dataset = DataSets.createDataSet(id); if(query.hasParameter(QueryableResourceHandler.FAILURE)) { Parameter failure=query.getParameter(QueryableResourceHandler.FAILURE); try { if(failure.rawValueAs(Boolean.class)) { for(String parameterName:query.parameterNames()) { LocalIndividual pIndividual= dataset. pIndividual.addValue(QuerySupport.TYPE, ptIndividual); pIndividual.addValue(QuerySupport.HAS_NAME, Literals.of(parameterName)); for(String rawValue:query.getParameter(parameterName).rawValues()) { pIndividual.addValue(QuerySupport.HAS_VALUE, Literals.of(rawValue));
private void assertHasParameter(Query query, String parameterName, String... rawValues) { assertThat(query.hasParameter(parameterName),equalTo(true)); Parameter parameter = query.getParameter(parameterName); assertThat(parameter,notNullValue()); assertThat(parameter.isMultivalued(),equalTo(rawValues.length>1)); assertThat(parameter.cardinality(),equalTo(rawValues.length)); assertThat(parameter.rawValue(),equalTo(rawValues[0])); assertThat(parameter.rawValues(),hasItems(rawValues)); }
@Test public void validateQueryExtraction() throws MalformedURLException, IOException { Query query = QueryResponseHelper. getQuery( new URL("http://www.example.org/"), "resource/", TestingUtil.loadResource("queries/query_dataset.ttl")); assertThat(query.size(),equalTo(2)); assertThat(query.getParameter("param1").rawValues(),contains("value1")); assertThat(query.getParameter("param2").rawValues(),contains("value2")); }
@Test @Category({ HappyPath.class }) @OperateOnDeployment(DEPLOYMENT) public void testSupportForQueriesWithValuedParameters(@ArquillianResource final URL url) throws Exception { LOGGER.info("Started {}",testName.getMethodName()); Query query=queryResource(url, "ldp4j/api/"+MyApplication.ROOT_QUERYABLE_RESOURCE_PATH+"?param1=value1¶m2=value2"); assertThat(query.size(),equalTo(2)); assertThat(query.hasParameter("param1"),equalTo(true)); assertThat(query.hasParameter("param2"),equalTo(true)); LOGGER.info("Completed {}",testName.getMethodName()); }
static Parameter constraintReportId(OperationContext context) { return context.getQuery().getParameter(CONSTRAINT_QUERY_PARAMETER); }
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(); }
@Test @Category({ ExceptionPath.class }) @OperateOnDeployment(DEPLOYMENT) public void testQuerySupport$missfailure(@ArquillianResource final URL url) throws Exception { LOGGER.info("Started {}",testName.getMethodName()); Query query=queryResource(url, "ldp4j/api/"+MyApplication.ROOT_QUERYABLE_RESOURCE_PATH+"?"+QueryableResourceHandler.FAILURE+"=false"); assertThat(query.size(),equalTo(1)); assertThat(query.hasParameter(QueryableResourceHandler.FAILURE),equalTo(true)); assertThat(query.getParameter(QueryableResourceHandler.FAILURE).rawValueAs(Boolean.class),equalTo(false)); LOGGER.info("Completed {}",testName.getMethodName()); }
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); } }
@Test @Category({ HappyPath.class }) @OperateOnDeployment(DEPLOYMENT) public void testSupportForMixedParameterQueries(@ArquillianResource final URL url) throws Exception { LOGGER.info("Started {}",testName.getMethodName()); Query query=queryResource(url, "ldp4j/api/"+MyApplication.ROOT_QUERYABLE_RESOURCE_PATH+"?param1¶m2=value2"); assertThat(query.size(),equalTo(2)); assertThat(query.hasParameter("param1"),equalTo(true)); assertThat(query.getParameter("param1").cardinality(),equalTo(1)); assertThat(query.getParameter("param1").rawValues(),hasItems("")); assertThat(query.hasParameter("param2"),equalTo(true)); assertThat(query.getParameter("param2").cardinality(),equalTo(1)); assertThat(query.getParameter("param2").rawValues(),hasItems("value2")); LOGGER.info("Completed {}",testName.getMethodName()); }
@Test @Category({ HappyPath.class }) @OperateOnDeployment(DEPLOYMENT) public void testSupportForQueriesWithoutValuedParameters(@ArquillianResource final URL url) throws Exception { LOGGER.info("Started {}",testName.getMethodName()); Query query=queryResource(url, "ldp4j/api/"+MyApplication.ROOT_QUERYABLE_RESOURCE_PATH+"?param1¶m2"); assertThat(query.size(),equalTo(2)); assertThat(query.hasParameter("param1"),equalTo(true)); assertThat(query.getParameter("param1").cardinality(),equalTo(1)); assertThat(query.getParameter("param1").rawValues(),hasItems("")); assertThat(query.hasParameter("param2"),equalTo(true)); assertThat(query.getParameter("param2").cardinality(),equalTo(1)); assertThat(query.getParameter("param2").rawValues(),hasItems("")); LOGGER.info("Completed {}",testName.getMethodName()); }
@Test @Category({ HappyPath.class }) @OperateOnDeployment(DEPLOYMENT) public void testSupportForQueriesWithRepeatedParametersWithoutValues(@ArquillianResource final URL url) throws Exception { String pName = testName.getMethodName(); LOGGER.info("Started {}",pName); String path = "ldp4j/api/"+MyApplication.ROOT_QUERYABLE_RESOURCE_PATH+"?param1&"+pName+"&"+pName; String response = IOUtils.toString(new URL(TestingUtil.resolve(url, path)).openStream()); List<String> resources=QueryResponseHelper.getResources(url, path, response); assertThat(resources,hasSize(0)); Query query=QueryResponseHelper.getQuery(url, path, response); assertThat(query.size(),equalTo(2)); assertThat(query.hasParameter("param1"),equalTo(true)); assertThat(query.getParameter("param1").cardinality(),equalTo(1)); assertThat(query.getParameter("param1").rawValues(),hasItems("")); assertThat(query.hasParameter(pName),equalTo(true)); assertThat(query.getParameter(pName).cardinality(),equalTo(1)); assertThat(query.getParameter(pName).rawValues(),hasItems("")); LOGGER.info("Completed {}",pName); }
@Test @Category({ HappyPath.class }) @OperateOnDeployment(DEPLOYMENT) public void testQueryResponsesAreNotEnrichedByTheFramework(@ArquillianResource final URL url) throws Exception { String pName = testName.getMethodName(); LOGGER.info("Started {}",pName); String path = "ldp4j/api/"+MyApplication.ROOT_QUERYABLE_RESOURCE_PATH+"?param1=value1¶m2=value2¶m2=value3¶m3"; String response = IOUtils.toString(new URL(TestingUtil.resolve(url, path)).openStream()); List<String> resources=QueryResponseHelper.getResources(url, path, response); assertThat(resources,hasSize(0)); Query query=QueryResponseHelper.getQuery(url, path, response); assertThat(query.size(),equalTo(3)); assertThat(query.hasParameter("param1"),equalTo(true)); assertThat(query.getParameter("param1").cardinality(),equalTo(1)); assertThat(query.getParameter("param1").rawValues(),hasItems("value1")); assertThat(query.hasParameter("param2"),equalTo(true)); assertThat(query.getParameter("param2").cardinality(),equalTo(2)); assertThat(query.getParameter("param2").rawValues(),hasItems("value2","value3")); assertThat(query.hasParameter("param3"),equalTo(true)); assertThat(query.getParameter("param3").cardinality(),equalTo(1)); assertThat(query.getParameter("param3").rawValues(),hasItems("")); LOGGER.info("Completed {}",pName); }