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
+
+