/* * Copyright 2013-2014 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.xd.dirt.rest; import java.util.ArrayList; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.web.PagedResourcesAssembler; import org.springframework.hateoas.ExposesResourceFor; import org.springframework.hateoas.PagedResources; import org.springframework.hateoas.mvc.ResourceAssemblerSupport; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseStatus; //import org.springframework.xd.dirt.module.ModuleNotDeployedException; //import org.springframework.xd.dirt.module.store.ModuleMetadata; //import org.springframework.xd.dirt.module.store.ModuleMetadataRepository; import org.springframework.xd.rest.domain.ModuleMetadataResource; /** * Controller that handles the interaction with the deployed modules. * * @author Ilayaperumal Gopinathan * @author Gunnar Hillert */ @Controller @RequestMapping("/runtime/modules") @ExposesResourceFor(ModuleMetadataResource.class) public class ModulesMetadataController { // private ModuleMetadataRepository moduleMetadataRepository; // // private ResourceAssemblerSupport<ModuleMetadata, ModuleMetadataResource> moduleMetadataResourceAssembler; // // @Autowired // public ModulesMetadataController(ModuleMetadataRepository moduleMetadataRepository) { // this.moduleMetadataRepository = moduleMetadataRepository; // moduleMetadataResourceAssembler = new ModuleMetadataResourceAssembler(); // } /** * List module metadata for all the deployed modules. * * @param pageable pagination information * @param assembler paged resource assembler * @return paged {@link ModuleMetadataResource} */ // @RequestMapping(value = "", method = RequestMethod.GET) // @ResponseStatus(HttpStatus.OK) // @ResponseBody // public PagedResources<ModuleMetadataResource> list(Pageable pageable, // PagedResourcesAssembler<ModuleMetadata> assembler) { // Page<ModuleMetadata> page = this.moduleMetadataRepository.findAll(pageable); // return assembler.toResource(page, moduleMetadataResourceAssembler); // } /** * List the module metadata for all the modules that are deployed to the given container. * * @param pageable pagination information * @param assembler paged resource assembler * @param containerId the container id of the container to choose * @return paged {@link ModuleMetadataResource} */ // @RequestMapping(value = "", method = RequestMethod.GET, params = { "containerId" }) // @ResponseStatus(HttpStatus.OK) // @ResponseBody // public PagedResources<ModuleMetadataResource> listByContainer(Pageable pageable, // PagedResourcesAssembler<ModuleMetadata> assembler, // @RequestParam("containerId") String containerId) { // return assembler.toResource(this.moduleMetadataRepository.findAllByContainerId(pageable, containerId), // moduleMetadataResourceAssembler); // } /** * List the module metadata for all the modules with the given moduleId. * * @param pageable pagination information * @param assembler paged resource assembler * @param moduleId the module id of the module metadata to list * @return paged {@link ModuleMetadataResource} */ // @RequestMapping(value = "", method = RequestMethod.GET, params = { "moduleId" }) // @ResponseStatus(HttpStatus.OK) // @ResponseBody // public PagedResources<ModuleMetadataResource> listByModule(Pageable pageable, // PagedResourcesAssembler<ModuleMetadata> assembler, // @RequestParam("moduleId") String moduleId) { // return assembler.toResource(this.moduleMetadataRepository.findAllByModuleId(pageable, moduleId), // moduleMetadataResourceAssembler); // } /** * List the module metadata for the given moduleId and deployed to the given containerId. * * @param containerId the container id of the container to choose * @param moduleId the module id of the module metadata to list * @return the {@link ModuleMetadataResource} of the module */ // @RequestMapping(value = "", method = RequestMethod.GET, params = { "containerId", "moduleId" }) // @ResponseStatus(HttpStatus.OK) // @ResponseBody // public ModuleMetadataResource listByContainerAndModuleId( // @RequestParam("containerId") String containerId, // @RequestParam("moduleId") String moduleId) { // ModuleMetadata moduleMetadata = this.moduleMetadataRepository.findOne(containerId, moduleId); // if (moduleMetadata == null) { // throw new ModuleNotDeployedException(containerId, moduleId); // } // return moduleMetadataResourceAssembler.toResource(moduleMetadata); // // } /** * Will return a collection of {@link ModuleMetadata} that are associated with * the provided {@code jobname} request parameter. * * @param jobName parameter must not be null * @return Collection of {@link ModuleMetadata}, might be empty but never {@code null} */ // @RequestMapping(value = "", method = RequestMethod.GET, params = { "jobname" }) // @ResponseStatus(HttpStatus.OK) // @ResponseBody // public List<ModuleMetadataResource> displayForJobname(@RequestParam("jobname") String jobName) { // // final Iterable<ModuleMetadata> moduleMetadataIterable = this.moduleMetadataRepository.findAll(); // final List<ModuleMetadata> moduleMetadataListToReturn = new ArrayList<ModuleMetadata>(); // // for (ModuleMetadata moduleMetadata : moduleMetadataIterable) { // final String jobnameFragment[] = moduleMetadata.getId().split("\\.job\\."); // // if (jobnameFragment.length > 0 && jobName.equals(jobnameFragment[0])) { // moduleMetadataListToReturn.add(moduleMetadata); // } // } // // return moduleMetadataResourceAssembler.toResources(moduleMetadataListToReturn); // } }