[java-identity-provider COMMIT] in /trunk: idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relying...
noreply at shibboleth.net
noreply at shibboleth.net
Fri May 2 09:02:54 EDT 2014
Author: rdw
Date: Fri May 2 09:02:54 2014
New Revision: 5830
URL: http://svn.shibboleth.net/view/java-identity-provider?rev=5830&view=rev
Log:
IDP-391 Special casing of a <MetadataResolver/> being the topmost element of a file - to allow such files to be injected into a ReloadingRelyingPartyMetadataProvider
Modified:
trunk/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/AbstractMetadataProviderParser.java
trunk/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/AbstractReloadingMetadataProviderParser.java
trunk/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/ChainingMetadataProviderParser.java
trunk/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/FileBackedHTTPMetadataProviderParser.java
trunk/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/FilesystemMetadataProviderParser.java
trunk/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/HTTPMetadataProviderParser.java
trunk/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/InlineMetadataProviderParser.java
trunk/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/ResourceBackedMetadataProviderParser.java
trunk/idp-profile-spring/src/test/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/AbstractMetadataParserTest.java
trunk/idp-profile-spring/src/test/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/FileBackedHTTPMetadataProviderParserTest.java
trunk/idp-profile-spring/src/test/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/ResourceMetadataParserTest.java
trunk/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/RelyingPartyMetadataProvider.java
Modified: trunk/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/AbstractMetadataProviderParser.java
URL: http://svn.shibboleth.net/view/java-identity-provider/trunk/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/AbstractMetadataProviderParser.java?rev=5830&r1=5829&r2=5830&view=diff
==============================================================================
--- trunk/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/AbstractMetadataProviderParser.java (original)
+++ trunk/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/relyingparty/metadata/AbstractMetadataProviderParser.java Fri May 2 09:02:54 2014
@@ -21,10 +21,12 @@
import javax.annotation.Nonnull;
+import net.shibboleth.idp.saml.metadata.impl.RelyingPartyMetadataProvider;
import net.shibboleth.idp.spring.SpringSupport;
import net.shibboleth.utilities.java.support.xml.DomTypeSupport;
import net.shibboleth.utilities.java.support.xml.ElementSupport;
+import org.opensaml.saml.metadata.resolver.MetadataResolver;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.parsing.BeanDefinitionParsingException;
@@ -34,9 +36,15 @@
import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;
import org.springframework.beans.factory.xml.ParserContext;
import org.w3c.dom.Element;
+import org.w3c.dom.Node;
/**
* Parser for the MetadataProviderType in the <code>urn:mace:shibboleth:2.0:metadata</code> namespace.
+ *
+ * This also handles the ambivalence of where the <MetadataProvider> can be found. If it is found inside a
+ * <RelyingPartyGroup> or a <ChainingMetadataPRovider> then we just emit a MetadataResolver of the correct
+ * type and the outer parsers will deal with the rest. If we are the top most element then we need to summon up a
+ * {@link RelyingPartyMetadataProvider} and inject what we would usually create into that.
*/
public abstract class AbstractMetadataProviderParser extends AbstractSingleBeanDefinitionParser {
@@ -66,9 +74,61 @@
return true;
}
+ /** Is this the element at the top of the file?
+ * @param element the element.
+ * @return whether it is the outmost element.
+ */
+ private boolean isOuterElement(@Nonnull Element element) {
+ return element.getParentNode().getNodeType() == Node.DOCUMENT_NODE;
+
+ }
+
+ /**
+ * Return the real class implement by this type. This has the same function as the more usual
+ * {@link AbstractSingleBeanDefinitionParser#getBeanClass(Element)} but it may need to be shimmed in
+ * {@link AbstractMetadataProviderParser} which may need to insert an extra bean.
+ *
+ * @param element the {@code Element} that is being parsed
+ * @return the {@link Class} of the bean that is being defined via parsing the supplied {@code Element}, or
+ * {@code null} if none
+ * @see #getBeanClassName
+ */
[... 355 lines stripped ...]
More information about the commits
mailing list