[java-opensaml] 02/02: OSJ-206: Promote new public methods to MetadataResolver subinterfaces

Brent Putman putmanb at georgetown.edu
Thu Apr 18 01:49:12 EDT 2019


This is an automated email from the git hooks/post-receive script.

putmanb pushed a commit to branch master
in repository java-opensaml.

View the commit online:
http://git.shibboleth.net/view/?p=java-opensaml.git;a=commit;h=0576a11b7100a1cee2662fb8e6817fff586c0b6a

commit 0576a11b7100a1cee2662fb8e6817fff586c0b6a
Author: Brent Putman <putmanb at georgetown.edu>
AuthorDate: Wed Apr 17 22:06:24 2019 -0400

    OSJ-206: Promote new public methods to MetadataResolver subinterfaces
---
 .../metadata/resolver/BatchMetadataResolver.java   | 18 ++++++++-
 .../resolver/ChainingMetadataResolver.java         | 29 ++++++++++++++
 .../resolver/ExtendedBatchMetadataResolver.java    | 45 ----------------------
 .../ExtendedRefreshableMetadataResolver.java       | 45 ----------------------
 .../resolver/RefreshableMetadataResolver.java      | 15 +++++++-
 .../impl/AbstractBatchMetadataResolver.java        |  5 ++-
 .../impl/AbstractReloadingMetadataResolver.java    |  4 +-
 .../resolver/impl/CompositeMetadataResolver.java   | 29 ++++++++++++++
 8 files changed, 93 insertions(+), 97 deletions(-)

diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/metadata/resolver/BatchMetadataResolver.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/metadata/resolver/BatchMetadataResolver.java
index 35a1ce6..0546a4c 100644
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/metadata/resolver/BatchMetadataResolver.java
+++ b/opensaml-saml-api/src/main/java/org/opensaml/saml/metadata/resolver/BatchMetadataResolver.java
@@ -17,6 +17,10 @@
 
 package org.opensaml.saml.metadata.resolver;
 
+import java.time.Instant;
+
+import javax.annotation.Nullable;
+
 /**
  * Marker interface for {@link MetadataResolver} implementations which resolve
  * metadata from a batch of data loaded and processed in advance of resolution operations,
@@ -25,6 +29,18 @@ package org.opensaml.saml.metadata.resolver;
  */
 public interface BatchMetadataResolver extends MetadataResolver {
 
-    //TODO For 4.0: promote getRootValidUntil() and isRootValid() from ExtendedBatchMetadataResolver
+    /**
+     * Get the validUntil of of the metadata batch root element, if present.
+     *
+     * @return the validUntil date/time of the root element, or null if not available
+     */
+    @Nullable public Instant getRootValidUntil();
+
+    /**
+     * Get the validity state of the metadata batch root element, as determined in an implementation-specific manner.
+     *
+     * @return true if root element is valid, false if not valid, null if indeterminate
+     */
+    @Nullable public Boolean isRootValid();
 
 }
diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/metadata/resolver/ChainingMetadataResolver.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/metadata/resolver/ChainingMetadataResolver.java
index 559eadf..6d32b7a 100644
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/metadata/resolver/ChainingMetadataResolver.java
+++ b/opensaml-saml-api/src/main/java/org/opensaml/saml/metadata/resolver/ChainingMetadataResolver.java
@@ -211,6 +211,35 @@ public class ChainingMetadataResolver extends AbstractIdentifiableInitializableC
     }
     
     /** {@inheritDoc} */
+    public Instant getLastSuccessfulRefresh() {
+        Instant ret = null;
+        for (final MetadataResolver resolver : resolvers) {
+            if (resolver instanceof RefreshableMetadataResolver) {
+                final Instant lastSuccessRefresh = ((RefreshableMetadataResolver) resolver).getLastSuccessfulRefresh();
+                if (ret == null || ret.isBefore(lastSuccessRefresh)) {
+                    ret = lastSuccessRefresh;
+                }
+            }
+        }
+        
+        return ret;
+    }
+
+    /** {@inheritDoc} */
+    public Boolean wasLastRefreshSuccess() {
+        for (final MetadataResolver resolver : resolvers) {
+            if (resolver instanceof RefreshableMetadataResolver) {
+                final RefreshableMetadataResolver refreshable = (RefreshableMetadataResolver) resolver;
+                if (refreshable.wasLastRefreshSuccess() != null && !refreshable.wasLastRefreshSuccess()) {
+                    return false;
+                }
+            }
+        }
+        
+        return true;
+    }
+    
+    /** {@inheritDoc} */
     @Override protected void doInitialize() throws ComponentInitializationException {
         super.doInitialize();
         if (resolvers == null) {
diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/metadata/resolver/ExtendedBatchMetadataResolver.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/metadata/resolver/ExtendedBatchMetadataResolver.java
deleted file mode 100644
index 6552f40..0000000
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/metadata/resolver/ExtendedBatchMetadataResolver.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Licensed to the University Corporation for Advanced Internet Development,
- * Inc. (UCAID) under one or more contributor license agreements.  See the
- * NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The UCAID licenses this file to You under the Apache
- * License, Version 2.0 (the "License"); you may not use this file except in
- * compliance with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.opensaml.saml.metadata.resolver;
-
-import java.time.Instant;
-
-import javax.annotation.Nullable;
-
-/**
- * Extended {@link BatchMetadataResolver}.
- */
-public interface ExtendedBatchMetadataResolver extends BatchMetadataResolver {
-    
-    //TODO promote methods up and remove in 4.0.0
-    
-    /**
-     * Get the validUntil of of the metadata batch root element, if present.
-     *
-     * @return the validUntil date/time of the root element, or null if not available
-     */
-    @Nullable public Instant getRootValidUntil();
-
-    /**
-     * Get the validity state of the metadata batch root element, as determined in an implementation-specific manner.
-     *
-     * @return true if root element is valid, false if not valid, null if indeterminate
-     */
-    @Nullable public Boolean isRootValid();
-
-}
diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/metadata/resolver/ExtendedRefreshableMetadataResolver.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/metadata/resolver/ExtendedRefreshableMetadataResolver.java
deleted file mode 100644
index f87eb33..0000000
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/metadata/resolver/ExtendedRefreshableMetadataResolver.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Licensed to the University Corporation for Advanced Internet Development,
- * Inc. (UCAID) under one or more contributor license agreements.  See the
- * NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The UCAID licenses this file to You under the Apache
- * License, Version 2.0 (the "License"); you may not use this file except in
- * compliance with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.opensaml.saml.metadata.resolver;
-
-import java.time.Instant;
-
-import javax.annotation.Nullable;
-
-/**
- * Extended {@link RefreshableMetadataResolver}.
- */
-public interface ExtendedRefreshableMetadataResolver extends RefreshableMetadataResolver {
-    
-    //TODO promote methods up and remove in 4.0.0
-    
-    /**
-     * Gets the time the last successful refresh cycle occurred.
-     * 
-     * @return time the last successful refresh cycle occurred
-     */
-    @Nullable public Instant getLastSuccessfulRefresh();
-
-    /**
-     * Gets whether the last refresh cycle was successful.
-     * 
-     * @return true if last refresh cycle was successful, false if not
-     */
-    @Nullable public Boolean wasLastRefreshSuccess();
-
-}
diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/metadata/resolver/RefreshableMetadataResolver.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/metadata/resolver/RefreshableMetadataResolver.java
index 30ed744..b0fac11 100644
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/metadata/resolver/RefreshableMetadataResolver.java
+++ b/opensaml-saml-api/src/main/java/org/opensaml/saml/metadata/resolver/RefreshableMetadataResolver.java
@@ -56,7 +56,18 @@ public interface RefreshableMetadataResolver extends MetadataResolver {
      */
     @Nullable Instant getLastUpdate();
     
-    //TODO For 4.0: promote getLastSuccessfulRefresh() and wasLastRefreshSuccess() 
-    //     from ExtendedRefreshableMetadataResolver
+    /**
+     * Gets the time the last successful refresh cycle occurred.
+     * 
+     * @return time the last successful refresh cycle occurred
+     */
+    @Nullable public Instant getLastSuccessfulRefresh();
+
+    /**
+     * Gets whether the last refresh cycle was successful.
+     * 
+     * @return true if last refresh cycle was successful, false if not
+     */
+    @Nullable public Boolean wasLastRefreshSuccess();
     
 }
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractBatchMetadataResolver.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractBatchMetadataResolver.java
index c42fcb9..b994a3b 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractBatchMetadataResolver.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractBatchMetadataResolver.java
@@ -18,6 +18,7 @@
 package org.opensaml.saml.metadata.resolver.impl;
 
 import java.time.Instant;
+
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.Iterator;
@@ -29,7 +30,7 @@ import javax.annotation.Nullable;
 import org.opensaml.core.criterion.EntityIdCriterion;
 import org.opensaml.core.xml.XMLObject;
 import org.opensaml.saml.metadata.IterableMetadataSource;
-import org.opensaml.saml.metadata.resolver.ExtendedBatchMetadataResolver;
+import org.opensaml.saml.metadata.resolver.BatchMetadataResolver;
 import org.opensaml.saml.metadata.resolver.filter.FilterException;
 import org.opensaml.saml.metadata.resolver.index.MetadataIndex;
 import org.opensaml.saml.metadata.resolver.index.impl.MetadataIndexManager;
@@ -58,7 +59,7 @@ import net.shibboleth.utilities.java.support.resolver.ResolverException;
  * in time from a single metadata source document.
  */
 public abstract class AbstractBatchMetadataResolver extends AbstractMetadataResolver 
-        implements ExtendedBatchMetadataResolver, IterableMetadataSource {
+        implements BatchMetadataResolver, IterableMetadataSource {
     
     /** Class logger. */
     private final Logger log = LoggerFactory.getLogger(AbstractBatchMetadataResolver.class);
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractReloadingMetadataResolver.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractReloadingMetadataResolver.java
index 5db4c5d..619847c 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractReloadingMetadataResolver.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractReloadingMetadataResolver.java
@@ -32,7 +32,7 @@ import javax.annotation.Nullable;
 
 import org.opensaml.core.xml.XMLObject;
 import org.opensaml.core.xml.io.UnmarshallingException;
-import org.opensaml.saml.metadata.resolver.ExtendedRefreshableMetadataResolver;
+import org.opensaml.saml.metadata.resolver.RefreshableMetadataResolver;
 import org.opensaml.saml.metadata.resolver.filter.FilterException;
 import org.opensaml.saml.saml2.common.SAML2Support;
 import org.opensaml.saml.saml2.common.TimeBoundSAMLObject;
@@ -61,7 +61,7 @@ import net.shibboleth.utilities.java.support.resolver.ResolverException;
  * expires.
  */
 public abstract class AbstractReloadingMetadataResolver extends AbstractBatchMetadataResolver 
-        implements ExtendedRefreshableMetadataResolver {
+        implements RefreshableMetadataResolver {
 
     /** Class logger. */
     @Nonnull private final Logger log = LoggerFactory.getLogger(AbstractReloadingMetadataResolver.class);
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/CompositeMetadataResolver.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/CompositeMetadataResolver.java
index 9fde86d..d566af7 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/CompositeMetadataResolver.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/CompositeMetadataResolver.java
@@ -211,6 +211,35 @@ public class CompositeMetadataResolver extends AbstractIdentifiedInitializableCo
         
         return ret;
     }
+    
+    /** {@inheritDoc} */
+    public Instant getLastSuccessfulRefresh() {
+        Instant ret = null;
+        for (final MetadataResolver resolver : resolvers) {
+            if (resolver instanceof RefreshableMetadataResolver) {
+                final Instant lastSuccessRefresh = ((RefreshableMetadataResolver) resolver).getLastSuccessfulRefresh();
+                if (ret == null || ret.isBefore(lastSuccessRefresh)) {
+                    ret = lastSuccessRefresh;
+                }
+            }
+        }
+        
+        return ret;
+    }
+
+    /** {@inheritDoc} */
+    public Boolean wasLastRefreshSuccess() {
+        for (final MetadataResolver resolver : resolvers) {
+            if (resolver instanceof RefreshableMetadataResolver) {
+                final RefreshableMetadataResolver refreshable = (RefreshableMetadataResolver) resolver;
+                if (refreshable.wasLastRefreshSuccess() != null && !refreshable.wasLastRefreshSuccess()) {
+                    return false;
+                }
+            }
+        }
+        
+        return true;
+    }
 
     /**
      * {@link Iterable} implementation that provides an {@link Iterator} that lazily iterates over each composed

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list