Skip to content

Commit

Permalink
[SHIBUI-517]
Browse files Browse the repository at this point in the history
First pass at FileBackedHttpMetadataProviderController. More to come.
  • Loading branch information
Bill Smith committed May 21, 2018
1 parent 978c71f commit 65b42b3
Show file tree
Hide file tree
Showing 3 changed files with 87 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
package edu.internet2.tier.shibboleth.admin.ui.controller;

import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.FileBackedHttpMetadataResolver;
import edu.internet2.tier.shibboleth.admin.ui.repository.FileBackedHttpMetadataResolverRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.support.ServletUriComponentsBuilder;

import java.net.URI;

/**
* @author Bill Smith (wsmith@unicon.net)
*/
@RestController
@RequestMapping("/api/MetadataProvider/FileBackedHttp")
public class FileBackedHttpMetadataProviderController {

@Autowired
FileBackedHttpMetadataResolverRepository repository;

@DeleteMapping("/{resourceId}")
public ResponseEntity<?> deleteByResourceId(@PathVariable String resourceId) {
if (repository.deleteByResourceId(resourceId)) {
return ResponseEntity.accepted().build();
} else {
return ResponseEntity.notFound().build();
}
}

@GetMapping("/name/{metadataProviderName}")
@Transactional(readOnly = true)
public ResponseEntity<?> getOneByName(@PathVariable String metadataProviderName) {
return ResponseEntity.ok(repository.findByName(metadataProviderName));
}

@GetMapping("/{resourceId}")
@Transactional(readOnly = true)
public ResponseEntity<?> getOneByResourceId(@PathVariable String resourceId) {
return ResponseEntity.ok(repository.findByResourceId(resourceId));
}

@PostMapping
public ResponseEntity<?> create(@RequestBody FileBackedHttpMetadataResolver resolver) {
//TODO: Check for duplicates based on name
FileBackedHttpMetadataResolver persistedResolver = repository.save(resolver);

return ResponseEntity
.created(getResourceUriFor(persistedResolver))
.body(persistedResolver);

}

@PutMapping
public ResponseEntity<?> update(@RequestBody FileBackedHttpMetadataResolver resolver) {
FileBackedHttpMetadataResolver existingResolver = repository.findByResourceId(resolver.getResourceId());
//TODO: Handle not found.
//TODO: Handle contention.

resolver.setAudId(existingResolver.getAudId());

FileBackedHttpMetadataResolver updatedResolver = repository.save(resolver);

return ResponseEntity.ok(updatedResolver);
}

private static URI getResourceUriFor(FileBackedHttpMetadataResolver resolver) {
return ServletUriComponentsBuilder
.fromCurrentServletMapping().path("/api/MetadataProvider/FileBackedHttp/")
.pathSegment(resolver.getResourceId())
.build()
.toUri();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import lombok.ToString;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
Expand All @@ -27,8 +28,10 @@
@ToString
public class MetadataResolver extends AbstractAuditable {

@Column(unique=true)
private String name;

@Column(unique=true)
private String resourceId = UUID.randomUUID().toString();

private Boolean requireValidMetadata;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,6 @@
public interface FileBackedHttpMetadataResolverRepository extends CrudRepository<FileBackedHttpMetadataResolver, Long> {

FileBackedHttpMetadataResolver findByName(String name);
boolean deleteByResourceId(String resourceId);
FileBackedHttpMetadataResolver findByResourceId(String resourceId);
}

0 comments on commit 65b42b3

Please sign in to comment.