Skip to content

Commit

Permalink
SHIBUI-754: filters re-order work in progress
Browse files Browse the repository at this point in the history
  • Loading branch information
dima767 committed Aug 17, 2018
1 parent b0acb1b commit c9520b9
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ public class MetadataFiltersController {

private static final Supplier<HttpClientErrorException> HTTP_404_CLIENT_ERROR_EXCEPTION = () -> new HttpClientErrorException(NOT_FOUND);

//TODO: refactor to use RestControllerSupport class
@ExceptionHandler
public ResponseEntity<?> notFoundHandler(HttpClientErrorException ex) {
if(ex.getStatusCode() == NOT_FOUND) {
Expand Down Expand Up @@ -100,6 +101,7 @@ public ResponseEntity<?> update(@PathVariable String metadataResolverId,
// check to make sure that the relationship exists
if (!metadataResolver.getMetadataFilters().contains(filterTobeUpdated)) {
// TODO: find a better response
// TODO: refactor to use RestControllerSupport class
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
}

Expand Down Expand Up @@ -143,6 +145,7 @@ public ResponseEntity<?> delete(@PathVariable String metadataResolverId,
return ResponseEntity.noContent().build();
}

//TODO: refactor to use RestControllerSupport class
private MetadataResolver findResolverOrThrowHttp404(String resolverResourceId) {
MetadataResolver resolver = repository.findByResourceId(resolverResourceId);
if(resolver == null) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package edu.internet2.tier.shibboleth.admin.ui.controller;

import edu.internet2.tier.shibboleth.admin.ui.controller.support.RestControllersSupport;
import edu.internet2.tier.shibboleth.admin.ui.domain.filters.MetadataFilter;
import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.MetadataResolver;
import edu.internet2.tier.shibboleth.admin.ui.repository.MetadataResolverRepository;
Expand All @@ -12,6 +13,7 @@
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.bind.annotation.RestControllerAdvice;

import java.util.ArrayList;
import java.util.Arrays;
Expand All @@ -31,12 +33,15 @@ public class MetadataFiltersPositionOrderController {
@Autowired
MetadataResolverRepository metadataResolverRepository;

@Autowired
RestControllersSupport restControllersSupport;

@PostMapping
@Transactional
public ResponseEntity<?> updateFiltersPositionOrder(@PathVariable String metadataResolverId,
@RequestBody List<String> filtersResourceIds) {

MetadataResolver resolver = metadataResolverRepository.findByResourceId(metadataResolverId);
MetadataResolver resolver = restControllersSupport.findResolverOrThrowHttp404(metadataResolverId);
List<MetadataFilter> currentFilters = resolver.getMetadataFilters();
List<MetadataFilter> reOrderedFilters = new ArrayList<>();

Expand All @@ -60,7 +65,7 @@ public ResponseEntity<?> updateFiltersPositionOrder(@PathVariable String metadat
@GetMapping
@Transactional(readOnly = true)
public ResponseEntity<?> getFiltersPositionOrder(@PathVariable String metadataResolverId) {
MetadataResolver resolver = metadataResolverRepository.findByResourceId(metadataResolverId);
MetadataResolver resolver = restControllersSupport.findResolverOrThrowHttp404(metadataResolverId);
List<String> resourceIds = resolver.getMetadataFilters().stream()
.map(MetadataFilter::getResourceId)
.collect(toList());
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package edu.internet2.tier.shibboleth.admin.ui.controller.support;

import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.MetadataResolver;
import edu.internet2.tier.shibboleth.admin.ui.repository.MetadataResolverRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.client.HttpClientErrorException;

import static org.springframework.http.HttpStatus.NOT_FOUND;

/**
* Common functionality for REST controllers.
*
* @author Dmitriy Kopylenko
*/
@RestControllerAdvice
public class RestControllersSupport {

@Autowired
MetadataResolverRepository resolverRepository;

public MetadataResolver findResolverOrThrowHttp404(String resolverResourceId) {
MetadataResolver resolver = resolverRepository.findByResourceId(resolverResourceId);
if(resolver == null) {
throw new HttpClientErrorException(NOT_FOUND, "Metadata resolver is not found");
}
return resolver;
}


@ExceptionHandler
public ResponseEntity<?> notFoundHandler(HttpClientErrorException ex) {
if(ex.getStatusCode() == NOT_FOUND) {
return ResponseEntity.status(NOT_FOUND).body(ex.getStatusText());
}
throw ex;
}
}

0 comments on commit c9520b9

Please sign in to comment.