From 3d160aaa62877d089134a23fb896efb471f7d664 Mon Sep 17 00:00:00 2001 From: Bill Smith Date: Wed, 15 Aug 2018 17:44:44 -0700 Subject: [PATCH] [SHIBUI-723] Added DurationUtility. Updated all duration-related code. Updated tests to mostly not break. Still need to address TODOs. --- .../MetadataResolversController.java | 4 +- ...penSamlFileBackedHTTPMetadataResolver.java | 6 ++- .../OpenSamlFilesystemMetadataResolver.java | 2 + ...tionDrivenDynamicHTTPMetadataResolver.java | 2 + .../OpenSamlLocalDynamicMetadataResolver.java | 2 + ...SamlMetadataResolverConstructorHelper.java | 30 +++++++------- ...penSamlResourceBackedMetadataResolver.java | 2 + .../MetadataResolverConverterServiceImpl.java | 13 +++++-- .../admin/util/DurationUtility.java | 39 +++++++++++++++++++ ...ResolversControllerIntegrationTests.groovy | 10 +++-- .../admin/ui/util/TestObjectGenerator.groovy | 16 +++++++- 11 files changed, 103 insertions(+), 23 deletions(-) create mode 100644 backend/src/main/java/edu/internet2/tier/shibboleth/admin/util/DurationUtility.java diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataResolversController.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataResolversController.java index c407bcc3b..74fbd8689 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataResolversController.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataResolversController.java @@ -40,6 +40,7 @@ import java.io.IOException; import java.io.StringWriter; import java.net.URI; +import java.util.ArrayList; import java.util.List; import static edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.MetadataResolverValidator.ValidationResult; @@ -133,13 +134,14 @@ public ResponseEntity create(@RequestBody MetadataResolver newResolver) throw private void updateChainingMetadataResolver(MetadataResolver persistedResolver) throws IOException, ResolverException { org.opensaml.saml.metadata.resolver.MetadataResolver openSamlResolver = metadataResolverConverterService.convertToOpenSamlRepresentation(persistedResolver); - List resolverList = ((ChainingMetadataResolver) chainingMetadataResolver).getResolvers(); + List resolverList = new ArrayList<>(((ChainingMetadataResolver) chainingMetadataResolver).getResolvers()); for (org.opensaml.saml.metadata.resolver.MetadataResolver resolver : resolverList) { if (resolver.getId().equals(persistedResolver.getResourceId())) { resolverList.remove(resolver); } } resolverList.add(openSamlResolver); + ((ChainingMetadataResolver) chainingMetadataResolver).setResolvers(resolverList); } @PutMapping("/MetadataResolvers/{resourceId}") diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlFileBackedHTTPMetadataResolver.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlFileBackedHTTPMetadataResolver.java index 58da65cb8..76d3d9384 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlFileBackedHTTPMetadataResolver.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlFileBackedHTTPMetadataResolver.java @@ -11,6 +11,8 @@ import javax.annotation.Nullable; +import static edu.internet2.tier.shibboleth.admin.util.DurationUtility.toMillis; + /** * @author Bill Smith (wsmith@unicon.net) */ @@ -27,13 +29,15 @@ public OpenSamlFileBackedHTTPMetadataResolver(IndexWriter indexWriter, this.sourceResolver = sourceResolver; this.delegate = new OpenSamlMetadataResolverDelegate(); + this.setId(sourceResolver.getResourceId()); + OpenSamlMetadataResolverConstructorHelper.updateOpenSamlMetadataResolverFromHttpMetadataResolverAttributes( this, sourceResolver.getHttpMetadataResolverAttributes()); OpenSamlMetadataResolverConstructorHelper.updateOpenSamlMetadataResolverFromReloadableMetadataResolverAttributes( this, sourceResolver.getReloadableMetadataResolverAttributes()); this.setBackupFile(sourceResolver.getBackingFile()); - this.setBackupFileInitNextRefreshDelay(Long.parseLong(sourceResolver.getBackupFileInitNextRefreshDelay())); + this.setBackupFileInitNextRefreshDelay(toMillis(sourceResolver.getBackupFileInitNextRefreshDelay())); this.setInitializeFromBackupFile(sourceResolver.getInitializeFromBackupFile()); //TODO: Where does this get set in OpenSAML land? diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlFilesystemMetadataResolver.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlFilesystemMetadataResolver.java index 39b5ecca9..94ded9133 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlFilesystemMetadataResolver.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlFilesystemMetadataResolver.java @@ -25,6 +25,8 @@ public OpenSamlFilesystemMetadataResolver(File metadataFile, this.sourceResolver = sourceResolver; this.delegate = new OpenSamlMetadataResolverDelegate(); + this.setId(sourceResolver.getResourceId()); + OpenSamlMetadataResolverConstructorHelper.updateOpenSamlMetadataResolverFromReloadableMetadataResolverAttributes( this, sourceResolver.getReloadableMetadataResolverAttributes()); } diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlFunctionDrivenDynamicHTTPMetadataResolver.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlFunctionDrivenDynamicHTTPMetadataResolver.java index 077bb1671..2887fa85a 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlFunctionDrivenDynamicHTTPMetadataResolver.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlFunctionDrivenDynamicHTTPMetadataResolver.java @@ -21,6 +21,8 @@ public OpenSamlFunctionDrivenDynamicHTTPMetadataResolver(IndexWriter indexWriter this.sourceResolver = sourceResolver; this.delegate = new OpenSamlMetadataResolverDelegate(); + this.setId(sourceResolver.getResourceId()); + OpenSamlMetadataResolverConstructorHelper.updateOpenSamlMetadataResolverFromDynamicMetadataResolverAttributes( this, sourceResolver.getDynamicMetadataResolverAttributes()); diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlLocalDynamicMetadataResolver.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlLocalDynamicMetadataResolver.java index b693fa315..abbfbd26b 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlLocalDynamicMetadataResolver.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlLocalDynamicMetadataResolver.java @@ -24,6 +24,8 @@ public OpenSamlLocalDynamicMetadataResolver(@Nonnull XMLObjectLoadSaveManager