diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/ShibbolethUiApplication.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/ShibbolethUiApplication.java index 42e7901e7..b2470b8c5 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/ShibbolethUiApplication.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/ShibbolethUiApplication.java @@ -21,6 +21,8 @@ import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; +import javax.script.ScriptException; + @SpringBootApplication @ComponentScan(excludeFilters = @ComponentScan.Filter(type = FilterType.REGEX, pattern = "edu.internet2.tier.shibboleth.admin.ui.configuration.auto.*")) @EntityScan(basePackages = {"edu.internet2.tier.shibboleth.admin.ui.domain", "edu.internet2.tier.shibboleth.admin.ui.envers", "edu.internet2.tier.shibboleth.admin.ui.security.model"}) @@ -69,7 +71,16 @@ public void initializeResolvers(ApplicationStartedEvent e) { metadataResolverRepository.findAll() .forEach(it -> { logger.info(String.format("Reloading filters for resolver [%s: %s]", it.getName(), it.getResourceId())); - metadataResolverService.reloadFilters(it.getResourceId()); + try { + metadataResolverService.reloadFilters(it.getResourceId()); + } + catch (Throwable ex) { + if(ex instanceof ScriptException) { + logger.warn("Caught invalid script parsing error. Please fix the script data.", ex); + return; + } + throw ex; + } }); } } diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataFiltersController.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataFiltersController.java index c2a6f4c07..87c7a8bd3 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataFiltersController.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataFiltersController.java @@ -97,6 +97,7 @@ public ResponseEntity create(@PathVariable String metadataResolverId, @Reques } @PutMapping("/Filters/{resourceId}") + @Transactional public ResponseEntity update(@PathVariable String metadataResolverId, @PathVariable String resourceId, @RequestBody MetadataFilter updatedFilter) {