Add bin/build/dist to top-level svn:ignore.
[java-idp.git] / src / edu / internet2 / middleware / shibboleth / metadata / FilesystemMetadataProvider.java
1
2 package edu.internet2.middleware.shibboleth.metadata;
3
4 import java.io.IOException;
5
6 import org.apache.log4j.Logger;
7 import org.opensaml.saml2.metadata.provider.MetadataProvider;
8 import org.opensaml.saml2.metadata.provider.MetadataProviderException;
9 import org.w3c.dom.Element;
10
11 import edu.internet2.middleware.shibboleth.common.ShibResource;
12 import edu.internet2.middleware.shibboleth.common.ShibResource.ResourceNotAvailableException;
13
14 /**
15  * Loads metadata from a path specified in the IdP configuration.
16  * 
17  * @author Walter Hoehn
18  */
19 public class FilesystemMetadataProvider extends ShibbolethConfigurableMetadataProvider implements MetadataProvider {
20
21         private static Logger log = Logger.getLogger(FilesystemMetadataProvider.class.getName());
22
23         public FilesystemMetadataProvider(Element configuration) throws MetadataProviderException {
24
25                 super(configuration);
26
27                 // Grab the path from the config
28                 String path = ((Element) configuration).getAttribute("path");
29                 if (path == null || path.equals("")) {
30                         log.error("Unable to load File System Metadata Provider.  A (path) attribute is required.  "
31                                         + "Add a (path) attribute to <MetadataProvider/>.");
32                         throw new MetadataProviderException("Required configuration not specified.");
33                 }
34
35                 // Construct provider from config
36                 try {
37                         provider = new org.opensaml.saml2.metadata.provider.FilesystemMetadataProvider(new ShibResource(path)
38                                         .getFile());
39
40                 } catch (MetadataProviderException e) {
41                         log.error("Unable to load URL Metadata Provider: " + e);
42                         throw e;
43                 } catch (ResourceNotAvailableException e) {
44                         log.error("Unable to load File System Metadata Provider.  Could not access file at (" + path + ").");
45                         throw new MetadataProviderException("Supplied configuration is invalid.");
46                 } catch (IOException e) {
47                         log.error("Unable to load File System Metadata Provider.  Error while reading file: " + e);
48                         throw new MetadataProviderException("Supplied configuration is invalid.");
49                 }
50         }
51 }