Validate Signatures
[java-idp.git] / src / edu / internet2 / middleware / shibboleth / serviceprovider / XMLAAPImpl.java
1 /*
2  * XMLAAPImpl.java
3  * 
4  * Implement the AAP and AttributeRule interfaces using the XML Beans
5  * generated from the <AttributeAcceptancePolicy> root element.
6  * 
7  * If an external AAP file is changed and reparsed, then a new instance
8  * of this object must be created from the new XMLBean to replace the
9  * previous object in the Config Map of AAP interface implementing 
10  * objects key by its URI.
11  * 
12  * --------------------
13  * Copyright 2002, 2004 
14  * University Corporation for Advanced Internet Development, Inc. 
15  * All rights reserved
16  * [Thats all we have to say to protect ourselves]
17  * Your permission to use this code is governed by "The Shibboleth License".
18  * A copy may be found at http://shibboleth.internet2.edu/license.html
19  * [Nothing in copyright law requires license text in every file.]
20  */
21 package edu.internet2.middleware.shibboleth.serviceprovider;
22
23 import java.util.Iterator;
24
25 import org.apache.log4j.Logger;
26 import org.opensaml.SAMLException;
27
28 import edu.internet2.middleware.shibboleth.aap.provider.XMLAAPProvider;
29 import edu.internet2.middleware.shibboleth.aap.AAP;
30 import edu.internet2.middleware.shibboleth.aap.AttributeRule;
31 import edu.internet2.middleware.shibboleth.common.ShibbolethConfigurationException;
32
33 import org.w3c.dom.Document;
34 import org.w3c.dom.Element;
35 import org.w3c.dom.Node;
36
37 /**
38  * An XMLAAPImpl object implements the AAP interface by creating
39  * and maintaining objects that implement the AttributeRule interface.
40  * The real work is done in AttributeRule.apply() where a 
41  * SAML Attribute Assertion is compared to policy and invalid values
42  * or assertions are removed.
43  * 
44  * A new instance of this object should be created whenever the
45  * AAP XML configuration file is changed and reparsed. The new object
46  * should then replace the old object in the Map that ServiceProviderConfig
47  * maintains keyed by file URI, holding implementors of the AAP interface.
48  */
49 public class XMLAAPImpl 
50         implements AAP,
51         PluggableConfigurationComponent {
52         
53         private static Logger log = Logger.getLogger(XMLAAPImpl.class);
54     XMLAAPProvider realObject = null;
55         
56     public void initialize(Node dom) throws ShibbolethConfigurationException {
57         try {
58             // Assuming this just gets a DOM tree containing the AAP,
59             // hopefully this will "just work".
60             realObject =
61                 new edu.internet2.middleware.shibboleth.aap.provider.XMLAAPProvider(
62                         (dom instanceof Element) ? (Element)dom : ((dom instanceof Document) ? ((Document)dom).getDocumentElement() : null)
63                     );
64         }
65         catch (SAMLException e) {
66             throw new ShibbolethConfigurationException("Exception initializing AAP: " + e);
67         }
68     }
69         
70     public boolean anyAttribute() {
71         return realObject.anyAttribute();
72     }
73         
74         public AttributeRule lookup(String name, String namespace) {
75         return realObject.lookup(name,namespace);
76         }
77
78         public AttributeRule lookup(String alias) {
79                 return realObject.lookup(alias);
80         }
81
82         public Iterator getAttributeRules() {
83                 return realObject.getAttributeRules();
84         }
85         
86     public String getSchemaPathname() {
87        return null;
88     }
89 }