@Override public Link linkToCollectionResource(Class<?> type) { return getPluginFor(type).linkToCollectionResource(type); }
/** * Lists all repositories exported by creating a link list pointing to resources exposing the repositories. * * @return */ @RequestMapping(value = { "/", "" }, method = RequestMethod.GET) public HttpEntity<RepositoryLinksResource> listRepositories() { RepositoryLinksResource resource = new RepositoryLinksResource(); for (Class<?> domainType : repositories) { ResourceMetadata metadata = mappings.getMetadataFor(domainType); if (metadata.isExported()) { resource.add(entityLinks.linkToCollectionResource(domainType)); } } return new ResponseEntity<RepositoryLinksResource>(resource, HttpStatus.OK); } }
/** * Creates the {@link Descriptor}s for pagination parameters. * * @param type * @return */ private List<Descriptor> getPaginationDescriptors(Class<?> type, HttpMethod method) { RepositoryInformation information = repositories.getRequiredRepositoryInformation(type); if (!information.isPagingRepository() || !getType(method).equals(Type.SAFE)) { return Collections.emptyList(); } Link linkToCollectionResource = entityLinks.linkToCollectionResource(type); List<TemplateVariable> variables = linkToCollectionResource.getVariables(); List<Descriptor> descriptors = new ArrayList<Descriptor>(variables.size()); ProjectionDefinitionConfiguration projectionConfiguration = configuration.getProjectionConfiguration(); for (TemplateVariable variable : variables) { // Skip projection parameter if (projectionConfiguration.getParameterName().equals(variable.getName())) { continue; } ResourceDescription description = SimpleResourceDescription.defaultFor(variable.getDescription()); descriptors.add(// descriptor().// name(variable.getName()).// type(Type.SEMANTIC).// doc(getDocFor(description)).// build()); } return descriptors; }
@Override public Link linkToCollectionResource(Class<?> type) { return getPluginFor(type).linkToCollectionResource(type); }
/** * Lists all repositories exported by creating a link list pointing to resources exposing the repositories. * * @return */ @RequestMapping(value = { "/", "" }, method = RequestMethod.GET) public HttpEntity<RepositoryLinksResource> listRepositories() { RepositoryLinksResource resource = new RepositoryLinksResource(); for (Class<?> domainType : repositories) { ResourceMetadata metadata = mappings.getMetadataFor(domainType); if (metadata.isExported()) { resource.add(entityLinks.linkToCollectionResource(domainType)); } } return new ResponseEntity<RepositoryLinksResource>(resource, HttpStatus.OK); } }
@RequestMapping(method = RequestMethod.GET, produces = MediaTypes.HAL_JSON_VALUE) public RootResource info() { String streamTemplated = entityLinks.linkToCollectionResource(StreamMetrics.class).getHref() + "?{name}"; RootResource rootResource = new RootResource(); rootResource.add(new Link(streamTemplated).withRel("/collector/metrics/streams")); return rootResource; } }
/** * Return a {@link ResourceSupport} object containing the resources * served by the admin server. * * @return {@code ResourceSupport} object containing the admin server's resources */ @RequestMapping("/") public ResourceSupport info() { ResourceSupport resourceSupport = new ResourceSupport(); resourceSupport.add(entityLinks.linkToCollectionResource(StreamDefinitionResource.class).withRel("streams/definitions")); resourceSupport.add(unescapeTemplateVariables(entityLinks.linkToSingleResource(StreamDefinitionResource.class, "{name}").withRel("streams/definitions/definition"))); resourceSupport.add(entityLinks.linkToCollectionResource(StreamDeploymentResource.class).withRel("streams/deployments")); resourceSupport.add(unescapeTemplateVariables(entityLinks.linkToSingleResource(StreamDeploymentResource.class, "{name}").withRel("streams/deployments/deployment"))); resourceSupport.add(entityLinks.linkToCollectionResource(TaskDefinitionResource.class).withRel("tasks")); resourceSupport.add(entityLinks.linkToCollectionResource(CounterResource.class).withRel("counters")); resourceSupport.add(unescapeTemplateVariables(entityLinks.linkToSingleResource(CounterResource.class, "{name}").withRel("counters/counter"))); resourceSupport.add(entityLinks.linkToCollectionResource(ModuleRegistrationResource.class).withRel("modules")); resourceSupport.add(entityLinks.linkToCollectionResource(LibraryRegistrationResource.class).withRel("libraries")); resourceSupport.add(entityLinks.linkToCollectionResource(ModuleStatusResource.class).withRel("runtime/modules")); resourceSupport.add(unescapeTemplateVariables(entityLinks.linkForSingleResource(ModuleStatusResource.class, "{moduleId}").withRel("runtime/module"))); resourceSupport.add(unescapeTemplateVariables(entityLinks.linkFor(ModuleInstanceStatusResource.class, UriComponents.UriTemplateVariables.SKIP_VALUE).withRel("runtime/modules/instances"))); String templated = entityLinks.linkFor(CompletionProposalsResource.class).withSelfRel().getHref() + ("/stream{?start,detailLevel}"); resourceSupport.add(new Link(templated).withRel("completions/stream")); return resourceSupport; }
/** * Creates the {@link Descriptor}s for pagination parameters. * * @param type * @return */ private List<Descriptor> getPaginationDescriptors(Class<?> type, HttpMethod method) { RepositoryInformation information = repositories.getRequiredRepositoryInformation(type); if (!information.isPagingRepository() || !getType(method).equals(Type.SAFE)) { return Collections.emptyList(); } Link linkToCollectionResource = entityLinks.linkToCollectionResource(type); List<TemplateVariable> variables = linkToCollectionResource.getVariables(); List<Descriptor> descriptors = new ArrayList<Descriptor>(variables.size()); ProjectionDefinitionConfiguration projectionConfiguration = configuration.getProjectionConfiguration(); for (TemplateVariable variable : variables) { // Skip projection parameter if (projectionConfiguration.getParameterName().equals(variable.getName())) { continue; } ResourceDescription description = SimpleResourceDescription.defaultFor(variable.getDescription()); descriptors.add(// descriptor().// name(variable.getName()).// type(Type.SEMANTIC).// doc(getDocFor(description)).// build()); } return descriptors; }
root.add(entityLinks.linkToCollectionResource(StreamDefinitionResource.class) .withRel("streams/definitions")); root.add( root.add(entityLinks.linkToCollectionResource(LauncherResource.class).withRel("tasks/platforms")); root.add(entityLinks.linkToCollectionResource(TaskDefinitionResource.class).withRel("tasks/definitions")); root.add(unescapeTemplateVariables(entityLinks.linkToSingleResource(TaskDefinitionResource.class, "{name}") .withRel("tasks/definitions/definition"))); root.add(entityLinks.linkToCollectionResource(TaskExecutionResource.class).withRel("tasks/executions")); String taskTemplated = entityLinks.linkToCollectionResource(TaskExecutionResource.class).getHref() + "{?name}"; root.add(new Link(taskTemplated).withRel("tasks/executions/name")); root.add(entityLinks.linkToCollectionResource(ScheduleInfoResource.class).withRel("tasks/schedules")); String scheduleTemplated = entityLinks.linkToCollectionResource(ScheduleInfoResource.class).getHref() + "/instances/{taskDefinitionName}"; root.add(new Link(scheduleTemplated).withRel("tasks/schedules/instances")); root.add(entityLinks.linkToCollectionResource(JobExecutionResource.class).withRel("jobs/executions")); taskTemplated = entityLinks.linkToCollectionResource(JobExecutionResource.class).getHref() + "{?name}"; root.add(new Link(taskTemplated).withRel("jobs/executions/name")); root.add(unescapeTemplateVariables(entityLinks.linkToSingleResource(JobExecutionResource.class, "{id}") entityLinks.linkFor(StepExecutionProgressInfoResource.class, "{jobExecutionId}").slash("{stepId}") .slash("progress").withRel("jobs/executions/execution/steps/step/progress"))); taskTemplated = entityLinks.linkToCollectionResource(JobInstanceResource.class).getHref() + "{?name}"; root.add(new Link(taskTemplated).withRel("jobs/instances/name")); root.add(unescapeTemplateVariables(entityLinks.linkToSingleResource(JobInstanceResource.class, "{id}")
root.add(entityLinks.linkToCollectionResource(StreamDefinitionResource.class) .withRel("streams/definitions")); root.add( root.add(unescapeTemplateVariables(entityLinks.linkToSingleResource(StreamAppStatusResource.class, "{name}") .withRel("streams/validation"))); root.add(entityLinks.linkToCollectionResource(AppStatusResource.class).withRel("runtime/apps")); root.add(unescapeTemplateVariables( entityLinks.linkForSingleResource(AppStatusResource.class, "{appId}").withRel("runtime/apps/app"))); root.add(entityLinks.linkToCollectionResource(TaskDefinitionResource.class).withRel("tasks/definitions")); root.add(unescapeTemplateVariables(entityLinks.linkToSingleResource(TaskDefinitionResource.class, "{name}") .withRel("tasks/definitions/definition"))); root.add(entityLinks.linkToCollectionResource(TaskExecutionResource.class).withRel("tasks/executions")); String taskTemplated = entityLinks.linkToCollectionResource(TaskExecutionResource.class).getHref() + "{?name}"; root.add(new Link(taskTemplated).withRel("tasks/executions/name")); root.add(entityLinks.linkToCollectionResource(ScheduleInfoResource.class).withRel("tasks/schedules")); String scheduleTemplated = entityLinks.linkToCollectionResource(ScheduleInfoResource.class).getHref() + "/instances/{taskDefinitionName}"; root.add(new Link(scheduleTemplated).withRel("tasks/schedules/instances")); root.add(entityLinks.linkToCollectionResource(JobExecutionResource.class).withRel("jobs/executions")); taskTemplated = entityLinks.linkToCollectionResource(JobExecutionResource.class).getHref() + "{?name}"; root.add(new Link(taskTemplated).withRel("jobs/executions/name")); root.add(unescapeTemplateVariables(entityLinks.linkToSingleResource(JobExecutionResource.class, "{id}") entityLinks.linkFor(StepExecutionProgressInfoResource.class, "{jobExecutionId}").slash("{stepId}")