[java-opensaml COMMIT] /trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynam...
noreply at shibboleth.net
noreply at shibboleth.net
Fri Oct 4 20:42:31 EDT 2013
Author: putmanb
Date: Fri Oct 4 20:42:31 2013
New Revision: 3461
URL: http://svn.shibboleth.net/view/java-opensaml?rev=3461&view=rev
Log:
More work on abstract base class for dynamic metadata resolvers.
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=3461&r1=3460&r2=3461&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 Oct 4 20:42:31 2013
@@ -17,22 +17,36 @@
package org.opensaml.saml.metadata.resolver.impl;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URI;
+import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Timer;
import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReadWriteLock;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
import javax.annotation.Nonnull;
import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
import net.shibboleth.utilities.java.support.component.ComponentSupport;
import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.utilities.java.support.primitive.StringSupport;
import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
import net.shibboleth.utilities.java.support.resolver.ResolverException;
+import org.apache.http.Header;
+import org.apache.http.HttpResponse;
+import org.apache.http.HttpStatus;
import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpUriRequest;
import org.opensaml.core.criterion.EntityIdCriterion;
import org.opensaml.core.xml.XMLObject;
+import org.opensaml.core.xml.io.UnmarshallingException;
import org.opensaml.saml.metadata.resolver.filter.FilterException;
import org.opensaml.saml.saml2.metadata.EntitiesDescriptor;
import org.opensaml.saml.saml2.metadata.EntityDescriptor;
@@ -44,7 +58,11 @@
/**
* Abstract subclass for metadata resolvers that resolve metadata dynamically, as needed and on demand.
*/
-public class AbstractDynamicMetadataResolver extends AbstractMetadataResolver {
+public abstract class AbstractDynamicMetadataResolver extends AbstractMetadataResolver {
+
+ /** Default list of supported content MIME types. */
+ public static final String[] DEFAULT_CONTENT_TYPES =
+ new String[] {"application/samlmetadata+xml", "application/xml", "text/xml"};
/** Class logger. */
private final Logger log = LoggerFactory.getLogger(AbstractDynamicMetadataResolver.class);
@@ -57,6 +75,13 @@
/** Whether we created our own task timer during object construction. */
private boolean createdOwnTaskTimer;
+
+ /** List of supported MIME types for use in Accept request header and validation of
+ * response Content-Type header.*/
+ private List<String> supportedContentTypes;
+
+ /** Generated Accept request header value. */
+ private String supportedContentTypesValue;
/**
* Constructor.
@@ -86,6 +111,27 @@
}
}
+ /**
+ * Get the list of supported MIME types for use in Accept request header and validation of
+ * response Content-Type header
+ *
+ * @return the supported content types
+ */
+ public List<String> getSupportedContentTypes() {
+ return supportedContentTypes;
+ }
+
+ /**
+ * Set the list of supported MIME types for use in Accept request header and validation of
+ * response Content-Type header
+ *
+ * @param types the new supported content types to set
+ */
+ public void setSupportedContentTypes(List<String> types) {
+ ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+ supportedContentTypes = types;
+ }
+
/** {@inheritDoc} */
@Nonnull public Iterable<EntityDescriptor> resolve(CriteriaSet criteria) throws ResolverException {
ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
@@ -96,56 +142,151 @@
throw new ResolverException("Entity Id was not supplied in criteria set");
}
- // TODO lock for reading, or otherwise deal with concurrency
- List<EntityDescriptor> descriptors = lookupEntityID(entityIdCriterion.getEntityId());
-
- if (!descriptors.isEmpty()) {
- return descriptors;
- } else {
- return fetchByCriteria(criteria);
- }
[... 327 lines stripped ...]
More information about the commits
mailing list