Remove obsolete schema method from PluggableConfigurationComponent interface
[java-idp.git] / src / edu / internet2 / middleware / shibboleth / serviceprovider / XMLAAPImpl.java
1 /*
2  * Copyright [2005] [University Corporation for Advanced Internet Development, Inc.]
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 /*
18  * XMLAAPImpl.java
19  * 
20  * Implement the AAP and AttributeRule interfaces using the XML Beans
21  * generated from the <AttributeAcceptancePolicy> root element.
22  * 
23  * If an external AAP file is changed and reparsed, then a new instance
24  * of this object must be created from the new XMLBean to replace the
25  * previous object in the Config Map of AAP interface implementing 
26  * objects key by its URI.
27  * 
28  */
29 package edu.internet2.middleware.shibboleth.serviceprovider;
30
31 import java.util.Iterator;
32
33 import org.opensaml.SAMLException;
34
35 import edu.internet2.middleware.shibboleth.aap.provider.XMLAAPProvider;
36 import edu.internet2.middleware.shibboleth.aap.AAP;
37 import edu.internet2.middleware.shibboleth.aap.AttributeRule;
38 import edu.internet2.middleware.shibboleth.common.ShibbolethConfigurationException;
39
40 import org.w3c.dom.Document;
41 import org.w3c.dom.Element;
42 import org.w3c.dom.Node;
43
44 /**
45  * An XMLAAPImpl object implements the AAP interface by creating
46  * and maintaining objects that implement the AttributeRule interface.
47  * The real work is done in AttributeRule.apply() where a 
48  * SAML Attribute Assertion is compared to policy and invalid values
49  * or assertions are removed.
50  * 
51  * A new instance of this object should be created whenever the
52  * AAP XML configuration file is changed and reparsed. The new object
53  * should then replace the old object in the Map that ServiceProviderConfig
54  * maintains keyed by file URI, holding implementors of the AAP interface.
55  */
56 public class XMLAAPImpl 
57         implements AAP,
58         PluggableConfigurationComponent {
59         
60     XMLAAPProvider realObject = null;
61         
62     public void initialize(Node dom) throws ShibbolethConfigurationException {
63         try {
64             // Assuming this just gets a DOM tree containing the AAP,
65             // hopefully this will "just work".
66             realObject =
67                 new edu.internet2.middleware.shibboleth.aap.provider.XMLAAPProvider(
68                         (dom instanceof Element) ? (Element)dom : ((dom instanceof Document) ? ((Document)dom).getDocumentElement() : null)
69                     );
70         }
71         catch (SAMLException e) {
72             throw new ShibbolethConfigurationException("Exception initializing AAP: " + e);
73         }
74     }
75         
76     public boolean anyAttribute() {
77         return realObject.anyAttribute();
78     }
79         
80         public AttributeRule lookup(String name, String namespace) {
81         return realObject.lookup(name,namespace);
82         }
83
84         public AttributeRule lookup(String alias) {
85                 return realObject.lookup(alias);
86         }
87
88         public Iterator getAttributeRules() {
89                 return realObject.getAttributeRules();
90         }
91         
92 }