[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 &lt;MetadataProvider&gt; can be found. If it is found inside a
+ * &lt;RelyingPartyGroup&gt; or a &lt;ChainingMetadataPRovider&gt; 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