diff --git a/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/service/JPAMetadataResolverServiceImpl.groovy b/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/service/JPAMetadataResolverServiceImpl.groovy index 9177fb137..5885eae26 100644 --- a/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/service/JPAMetadataResolverServiceImpl.groovy +++ b/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/service/JPAMetadataResolverServiceImpl.groovy @@ -222,4 +222,36 @@ class JPAMetadataResolverServiceImpl implements MetadataResolverService { childNodes() } } + + void constructXmlNodeForResolver(LocalDynamicMetadataResolver resolver, def markupBuilderDelegate, Closure childNodes) { + markupBuilderDelegate.MetadataProvider(sourceDirectory: resolver.sourceDirectory, + sourceManagerRef: resolver.sourceManagerRef, + sourceKeyGeneratorRef: resolver.sourceKeyGeneratorRef, + + id: resolver.name, + 'xsi:type': 'DynamicHttpMetadataProvider', + requireValidMetadata: !resolver.requireValidMetadata ?: null, + failFastInitialization: !resolver.failFastInitialization ?: null, + sortKey: resolver.sortKey, + criterionPredicateRegistryRef: resolver.criterionPredicateRegistryRef, + useDefaultPredicateRegistry: !resolver.useDefaultPredicateRegistry ?: null, + satisfyAnyPredicates: resolver.satisfyAnyPredicates ?: null, + parserPoolRef: resolver.dynamicMetadataResolverAttributes?.parserPoolRef, + taskTimerRef: resolver.dynamicMetadataResolverAttributes?.taskTimerRef, + refreshDelayFactor: resolver.dynamicMetadataResolverAttributes?.refreshDelayFactor, + minCacheDuration: resolver.dynamicMetadataResolverAttributes?.minCacheDuration, + maxCacheDuration: resolver.dynamicMetadataResolverAttributes?.maxCacheDuration, + maxIdleEntityData: resolver.dynamicMetadataResolverAttributes?.maxIdleEntityData, + removeIdleEntityData: !resolver.dynamicMetadataResolverAttributes?.removeIdleEntityData ?: null, + cleanupTaskInterval: resolver.dynamicMetadataResolverAttributes?.cleanupTaskInterval, + persistentCacheManagerRef: resolver.dynamicMetadataResolverAttributes?.persistentCacheManagerRef, + persistentCacheManagerDirectory: resolver.dynamicMetadataResolverAttributes?.persistentCacheManagerDirectory, + persistentCacheKeyGeneratorRef: resolver.dynamicMetadataResolverAttributes?.persistentCacheKeyGeneratorRef, + initializeFromPersistentCacheInBackground: !resolver.dynamicMetadataResolverAttributes?.initializeFromPersistentCacheInBackground ?: null, + backgroundInitializationFromCacheDelay: resolver.dynamicMetadataResolverAttributes?.backgroundInitializationFromCacheDelay, + initializationFromCachePredicateRef: resolver.dynamicMetadataResolverAttributes?.initializationFromCachePredicateRef) { + + childNodes() + } + } } diff --git a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/service/IncommonJPAMetadataResolverServiceImplTests.groovy b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/service/IncommonJPAMetadataResolverServiceImplTests.groovy index af9497b6e..c9af03e34 100644 --- a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/service/IncommonJPAMetadataResolverServiceImplTests.groovy +++ b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/service/IncommonJPAMetadataResolverServiceImplTests.groovy @@ -109,6 +109,9 @@ class IncommonJPAMetadataResolverServiceImplTests extends Specification { // Generate and test edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.DynamicHttpMetadataResolver. metadataResolverRepository.save(new TestObjectGenerator(attributeUtility).dynamicHttpMetadataResolver()) + + // Generate and test edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.LocalDynamicMetadataResolver. + metadataResolverRepository.save(new TestObjectGenerator(attributeUtility).localDynamicMetadataResolver()) } return resolver diff --git a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/util/TestObjectGenerator.groovy b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/util/TestObjectGenerator.groovy index e7f2eb949..e42534914 100644 --- a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/util/TestObjectGenerator.groovy +++ b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/util/TestObjectGenerator.groovy @@ -324,6 +324,13 @@ class TestObjectGenerator { } } + LocalDynamicMetadataResolver localDynamicMetadataResolver() { + new LocalDynamicMetadataResolver().with { + it.name = 'LocalDynamic' + it + } + } + FileBackedHttpMetadataResolver buildFileBackedHttpMetadataResolver() { def resolver = new FileBackedHttpMetadataResolver() resolver.name = generator.randomString(10) diff --git a/backend/src/test/resources/conf/278.2.xml b/backend/src/test/resources/conf/278.2.xml index 94bf255f8..208501c45 100644 --- a/backend/src/test/resources/conf/278.2.xml +++ b/backend/src/test/resources/conf/278.2.xml @@ -50,5 +50,15 @@ md:SPSSODescriptor + + + + + md:SPSSODescriptor + + diff --git a/backend/src/test/resources/conf/278.xml b/backend/src/test/resources/conf/278.xml index 5b3577044..0d08ba252 100644 --- a/backend/src/test/resources/conf/278.xml +++ b/backend/src/test/resources/conf/278.xml @@ -43,5 +43,14 @@ md:SPSSODescriptor - + + + + + md:SPSSODescriptor + +