Implement audience/condition tests
[java-idp.git] / src / edu / internet2 / middleware / shibboleth / serviceprovider / XMLMetadataImpl.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  * 
19  * Process Shibboleth 1.2 Metadata and present an EntityDescriptor
20  * interface.
21  * 
22  */
23 package edu.internet2.middleware.shibboleth.serviceprovider;
24
25 import org.apache.xmlbeans.XmlException;
26 import org.opensaml.SAMLException;
27 import org.opensaml.artifact.Artifact;
28 import org.w3c.dom.Document;
29 import org.w3c.dom.Element;
30 import org.w3c.dom.Node;
31
32 import edu.internet2.middleware.shibboleth.common.ShibbolethConfigurationException;
33 import edu.internet2.middleware.shibboleth.metadata.EntityDescriptor;
34 import edu.internet2.middleware.shibboleth.metadata.Metadata;
35 import edu.internet2.middleware.shibboleth.metadata.provider.XMLMetadataProvider;
36
37
38 /**
39  * Wrap the metadata.provider.XMLMetadataProvider with a class that implements
40  * the SP PluggableConfigurationComponent interface. Delegate all processing 
41  * calls to the wrapped object.
42  * 
43  * <p>XMLMetadataProvider takes Node as a Constructor argument, but in the SP
44  * a Pluggable has to be a Bean that can be created with a default constructor
45  * and then be passed a Node to complete initialization.<p>
46  */
47 class XMLMetadataImpl 
48         implements 
49                 Metadata,
50                 PluggableConfigurationComponent
51         {
52     
53     
54         XMLMetadataProvider realObject = null;
55         
56
57         public void initialize(Node dom) 
58                 throws XmlException, ShibbolethConfigurationException {
59             try {
60              realObject =
61                 new edu.internet2.middleware.shibboleth.metadata.provider.XMLMetadataProvider(
62                         (dom instanceof Element) ? 
63                                 (Element)dom : 
64                                 ((dom instanceof Document) ? 
65                                         ((Document)dom).getDocumentElement() : 
66                                           null)
67                     );
68         }
69         catch (SAMLException e) {
70             throw new ShibbolethConfigurationException("Exception initializing metadata: " + e);
71         }
72         }
73         
74     public EntityDescriptor lookup(String id) {
75         return realObject.lookup(id);
76     }
77
78     public EntityDescriptor lookup(Artifact artifact) {
79         return realObject.lookup(artifact);
80     }
81 }