[java-opensaml COMMIT] in /trunk: opensaml-core/src/main/java/org/opensaml/core/xml/persist/ opensaml-core/src/main/j...

noreply at shibboleth.net noreply at shibboleth.net
Fri Sep 16 22:39:48 EDT 2016


Author: putmanb
Date: Fri Sep 16 22:39:48 2016
New Revision: 4485

URL: http://svn.shibboleth.net/view/java-opensaml?rev=4485&view=rev
Log:
OSJ-168: On-disk caching of dynamically acquired metadata

Added:
    trunk/opensaml-core/src/main/java/org/opensaml/core/xml/persist/
    trunk/opensaml-core/src/main/java/org/opensaml/core/xml/persist/MapLoadSaveManager.java   (with props)
    trunk/opensaml-core/src/main/java/org/opensaml/core/xml/persist/XMLObjectLoadSaveManager.java   (with props)
    trunk/opensaml-core/src/main/java/org/opensaml/core/xml/persist/package-info.java   (with props)
    trunk/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicMetadataResolverTest.java   (with props)
Modified:
    trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicMetadataResolver.java

Modified: trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicMetadataResolver.java
URL: http://svn.shibboleth.net/view/java-opensaml/trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicMetadataResolver.java?rev=4485&r1=4484&r2=4485&view=diff
==============================================================================
--- trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicMetadataResolver.java	(original)
+++ trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicMetadataResolver.java	Fri Sep 16 22:39:48 2016
@@ -18,6 +18,7 @@
 package org.opensaml.saml.metadata.resolver.impl;
 
 import java.io.IOException;
+import java.security.NoSuchAlgorithmException;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
@@ -32,10 +33,31 @@
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
+import org.joda.time.DateTime;
+import org.joda.time.chrono.ISOChronology;
+import org.opensaml.core.criterion.EntityIdCriterion;
+import org.opensaml.core.xml.XMLObject;
+import org.opensaml.core.xml.persist.XMLObjectLoadSaveManager;
+import org.opensaml.saml.metadata.resolver.DynamicMetadataResolver;
+import org.opensaml.saml.metadata.resolver.filter.FilterException;
+import org.opensaml.saml.saml2.common.SAML2Support;
+import org.opensaml.saml.saml2.metadata.EntityDescriptor;
+import org.opensaml.security.crypto.JCAConstants;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.base.Function;
+import com.google.common.base.Predicate;
+import com.google.common.base.Predicates;
+import com.google.common.base.Strings;
+
 import net.shibboleth.utilities.java.support.annotation.Duration;
 import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
 import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
 import net.shibboleth.utilities.java.support.annotation.constraint.Positive;
+import net.shibboleth.utilities.java.support.codec.StringDigester;
+import net.shibboleth.utilities.java.support.codec.StringDigester.OutputFormat;
+import net.shibboleth.utilities.java.support.collection.Pair;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
 import net.shibboleth.utilities.java.support.component.ComponentSupport;
 import net.shibboleth.utilities.java.support.logic.Constraint;
@@ -43,19 +65,6 @@
 import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
 import net.shibboleth.utilities.java.support.resolver.ResolverException;
 
-import org.joda.time.DateTime;
-import org.joda.time.chrono.ISOChronology;
-import org.opensaml.core.criterion.EntityIdCriterion;
-import org.opensaml.core.xml.XMLObject;
-import org.opensaml.saml.metadata.resolver.DynamicMetadataResolver;
-import org.opensaml.saml.metadata.resolver.filter.FilterException;
-import org.opensaml.saml.saml2.common.SAML2Support;
-import org.opensaml.saml.saml2.metadata.EntityDescriptor;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.Strings;
-
 /**
  * Abstract subclass for metadata resolvers that resolve metadata dynamically, as needed and on demand.
  */
@@ -93,6 +102,19 @@
     /** The backing store cleanup sweeper background task. */
     private BackingStoreCleanupSweeper cleanupTask;
     
+    /** The manager for the persistent cache store for resolved metadata. */
+    private XMLObjectLoadSaveManager<EntityDescriptor> persistentCacheManager;
+    
+    /** Function for generating the String key used with the cache manager. */
+    private Function<EntityDescriptor, String> persistentCacheKeyGenerator;
+    
+    /** Predicate which determines whether a given entity should be loaded from the persistent cache
+     * at resolver initialization time. */
+    private Predicate<EntityDescriptor> initializationFromCachePredicate;
+    
+    /** Flag used to track state of whether currently initializing or not. */
+    private boolean initializing;
+    
     /**
      * Constructor.
      *
@@ -126,6 +148,77 @@
         removeIdleEntityData = true;
     }
     

[... 272 lines stripped ...]


More information about the commits mailing list