Converted Arp Repository Factory and ARP Repositories to use new config format.
authorwassa <wassa@ab3bd59b-922f-494d-bb5f-6f0a3c29deca>
Fri, 30 Jan 2004 05:33:00 +0000 (05:33 +0000)
committerwassa <wassa@ab3bd59b-922f-494d-bb5f-6f0a3c29deca>
Fri, 30 Jan 2004 05:33:00 +0000 (05:33 +0000)
git-svn-id: https://subversion.switch.ch/svn/shibboleth/java-idp/trunk@868 ab3bd59b-922f-494d-bb5f-6f0a3c29deca

src/edu/internet2/middleware/shibboleth/aa/AAServlet.java
src/edu/internet2/middleware/shibboleth/aa/arp/ArpEngine.java
src/edu/internet2/middleware/shibboleth/aa/arp/ArpRepositoryFactory.java
src/edu/internet2/middleware/shibboleth/aa/arp/provider/BaseArpRepository.java
src/edu/internet2/middleware/shibboleth/aa/arp/provider/FileSystemArpRepository.java
src/edu/internet2/middleware/shibboleth/aa/arp/provider/LdapArpRepository.java [deleted file]
src/edu/internet2/middleware/shibboleth/aa/arp/provider/MemoryArpRepository.java
src/schemas/origin.xsd

index f0bf9ce..51b54bf 100755 (executable)
@@ -105,6 +105,7 @@ import edu.internet2.middleware.shibboleth.common.ServiceProviderMapper;
 import edu.internet2.middleware.shibboleth.common.ServiceProviderMapperException;
 import edu.internet2.middleware.shibboleth.common.ShibResource;
 import edu.internet2.middleware.shibboleth.common.ShibbolethConfigurationException;
+import edu.internet2.middleware.shibboleth.common.ShibbolethOriginConfig;
 
 /**
  * @author Walter Hoehn
@@ -196,10 +197,10 @@ public class AAServlet extends HttpServlet {
                        //Startup Attribute Resolver
                        AttributeResolver resolver = new AttributeResolver(configuration);
 
-                       //Startup ARP Enginee
+                       //Startup ARP Engine
                        itemElements =
                                parser.getDocument().getDocumentElement().getElementsByTagNameNS(
-                                       NameIdentifierMapping.mappingNamespace,
+                                       ShibbolethOriginConfig.originConfigNamespace,
                                        "ReleasePolicyEngine");
 
                        if (itemElements.getLength() > 1) {
index 5cea6f4..1bebad9 100755 (executable)
@@ -1,50 +1,48 @@
-/* 
- * The Shibboleth License, Version 1. 
- * Copyright (c) 2002 
- * University Corporation for Advanced Internet Development, Inc. 
- * All rights reserved
+/*
+ * The Shibboleth License, Version 1. Copyright (c) 2002 University Corporation
+ * for Advanced Internet Development, Inc. All rights reserved
  * 
  * 
- * Redistribution and use in source and binary forms, with or without 
+ * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are met:
  * 
- * Redistributions of source code must retain the above copyright notice, this 
+ * Redistributions of source code must retain the above copyright notice, this
  * list of conditions and the following disclaimer.
  * 
- * Redistributions in binary form must reproduce the above copyright notice, 
- * this list of conditions and the following disclaimer in the documentation 
- * and/or other materials provided with the distribution, if any, must include 
- * the following acknowledgment: "This product includes software developed by 
- * the University Corporation for Advanced Internet Development 
- * <http://www.ucaid.edu>Internet2 Project. Alternately, this acknowledegement 
- * may appear in the software itself, if and wherever such third-party 
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution, if any, must include
+ * the following acknowledgment: "This product includes software developed by
+ * the University Corporation for Advanced Internet Development
+ * <http://www.ucaid.edu> Internet2 Project. Alternately, this acknowledegement
+ * may appear in the software itself, if and wherever such third-party
  * acknowledgments normally appear.
  * 
- * Neither the name of Shibboleth nor the names of its contributors, nor 
- * Internet2, nor the University Corporation for Advanced Internet Development, 
- * Inc., nor UCAID may be used to endorse or promote products derived from this 
- * software without specific prior written permission. For written permission, 
+ * Neither the name of Shibboleth nor the names of its contributors, nor
+ * Internet2, nor the University Corporation for Advanced Internet Development,
+ * Inc., nor UCAID may be used to endorse or promote products derived from this
+ * software without specific prior written permission. For written permission,
  * please contact shibboleth@shibboleth.org
  * 
- * Products derived from this software may not be called Shibboleth, Internet2, 
- * UCAID, or the University Corporation for Advanced Internet Development, nor 
- * may Shibboleth appear in their name, without prior written permission of the 
+ * Products derived from this software may not be called Shibboleth, Internet2,
+ * UCAID, or the University Corporation for Advanced Internet Development, nor
+ * may Shibboleth appear in their name, without prior written permission of the
  * University Corporation for Advanced Internet Development.
  * 
  * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
- * AND WITH ALL FAULTS. ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 
- * PARTICULAR PURPOSE, AND NON-INFRINGEMENT ARE DISCLAIMED AND THE ENTIRE RISK 
- * OF SATISFACTORY QUALITY, PERFORMANCE, ACCURACY, AND EFFORT IS WITH LICENSEE. 
- * IN NO EVENT SHALL THE COPYRIGHT OWNER, CONTRIBUTORS OR THE UNIVERSITY 
- * CORPORATION FOR ADVANCED INTERNET DEVELOPMENT, INC. BE LIABLE FOR ANY DIRECT, 
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND WITH ALL FAULTS. ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+ * PARTICULAR PURPOSE, AND NON-INFRINGEMENT ARE DISCLAIMED AND THE ENTIRE RISK
+ * OF SATISFACTORY QUALITY, PERFORMANCE, ACCURACY, AND EFFORT IS WITH LICENSEE.
+ * IN NO EVENT SHALL THE COPYRIGHT OWNER, CONTRIBUTORS OR THE UNIVERSITY
+ * CORPORATION FOR ADVANCED INTERNET DEVELOPMENT, INC. BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
 package edu.internet2.middleware.shibboleth.aa.arp;
@@ -60,7 +58,6 @@ import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.Map;
-import java.util.Properties;
 import java.util.Set;
 
 import org.apache.log4j.Logger;
@@ -73,8 +70,8 @@ import edu.internet2.middleware.shibboleth.aa.arp.ArpAttributeSet.ArpAttributeIt
 import edu.internet2.middleware.shibboleth.common.ShibbolethOriginConfig;
 
 /**
- *  Defines a processing engine for Attribute Release Policies.
- *
+ * Defines a processing engine for Attribute Release Policies.
+ * 
  * @author Walter Hoehn (wassa@columbia.edu)
  */
 
@@ -116,18 +113,13 @@ public class ArpEngine {
                        log.warn(
                                "Encountered multiple <ArpRepository> configuration elements.  Arp Engine currently only supports one.  Using first...");
                }
-               
+
                if (itemElements.getLength() == 0) {
                        //TODO setup a default
                }
 
-               String implementation = ((Element) itemElements.item(0)).getAttribute("implementation");
-
-               //TODO make this work
-               //TODO pass in arpTTL
-               
                try {
-                       repository = ArpRepositoryFactory.getInstance(null);
+                       repository = ArpRepositoryFactory.getInstance((Element) itemElements.item(0));
                } catch (ArpRepositoryException e) {
                        log.error("Could not start Arp Engine: " + e);
                        throw new ArpException("Could not start Arp Engine.");
@@ -150,8 +142,7 @@ public class ArpEngine {
                        if (functionObject instanceof MatchFunction) {
                                return (MatchFunction) functionObject;
                        } else {
-                               log.error(
-                                       "Improperly specified match function, (" + className + ") is not a match function.");
+                               log.error("Improperly specified match function, (" + className + ") is not a match function.");
                                throw new ArpException(
                                        "Improperly specified match function, (" + className + ") is not a match function.");
                        }
@@ -161,8 +152,7 @@ public class ArpEngine {
                }
        }
 
-       private Arp createEffectiveArp(Principal principal, String requester, URL resource)
-               throws ArpProcessingException {
+       private Arp createEffectiveArp(Principal principal, String requester, URL resource) throws ArpProcessingException {
                try {
                        Arp effectiveArp = new Arp(principal);
                        effectiveArp.setDescription("Effective ARP.");
@@ -202,11 +192,14 @@ public class ArpEngine {
        }
 
        /**
-        * Determines which attributes MIGHT be releasable for a given request.  This function 
-        * may be used to determine which attributes to resolve when a request for all
-        * attributes is made.  This is done for performance reasons only. ie: The resulting 
-        * attributes must still be filtered before release.
-        * @return an array of <code>URI</code> objects that name the possible attributes
+        * Determines which attributes MIGHT be releasable for a given request.
+        * This function may be used to determine which attributes to resolve when
+        * a request for all attributes is made. This is done for performance
+        * reasons only. ie: The resulting attributes must still be filtered before
+        * release.
+        * 
+        * @return an array of <code>URI</code> objects that name the possible
+        *         attributes
         */
        public URI[] listPossibleReleaseAttributes(Principal principal, String requester, URL resource)
                throws ArpProcessingException {
@@ -244,6 +237,7 @@ public class ArpEngine {
 
        /**
         * Applies all applicable ARPs to a set of attributes.
+        * 
         * @return the attributes to be released
         */
        public void filterAttributes(ArpAttributeSet attributes, Principal principal, String requester, URL resource)
@@ -330,25 +324,19 @@ public class ArpEngine {
                        if (!canonicalSpec.containsKey(attributes[i].getName().toString())) {
                                canonicalSpec.put(attributes[i].getName().toString(), attributes[i]);
                        } else {
-                               if (((Rule.Attribute) canonicalSpec.get(attributes[i].getName().toString()))
-                                       .denyAnyValue()) {
+                               if (((Rule.Attribute) canonicalSpec.get(attributes[i].getName().toString())).denyAnyValue()) {
                                        continue;
                                }
                                if (attributes[i].denyAnyValue()) {
-                                       ((Rule.Attribute) canonicalSpec.get(attributes[i].getName().toString())).setAnyValueDeny(
-                                               true);
+                                       ((Rule.Attribute) canonicalSpec.get(attributes[i].getName().toString())).setAnyValueDeny(true);
                                        continue;
                                }
                                if (attributes[i].releaseAnyValue()) {
-                                       (
-                                               (Rule.Attribute) canonicalSpec.get(
-                                                       attributes[i].getName().toString())).setAnyValuePermit(
-                                               true);
+                                       ((Rule.Attribute) canonicalSpec.get(attributes[i].getName().toString())).setAnyValuePermit(true);
                                }
                                Rule.AttributeValue[] values = attributes[i].getValues();
                                for (int j = 0; values.length > j; j++) {
-                                       ((Rule.Attribute) canonicalSpec.get(attributes[i].getName().toString())).addValue(
-                                               values[j]);
+                                       ((Rule.Attribute) canonicalSpec.get(attributes[i].getName().toString())).addValue(values[j]);
                                }
                        }
                }
index 8fc5a6c..3a6c88f 100755 (executable)
-/* 
- * The Shibboleth License, Version 1. 
- * Copyright (c) 2002 
- * University Corporation for Advanced Internet Development, Inc. 
- * All rights reserved
+/*
+ * The Shibboleth License, Version 1. Copyright (c) 2002 University Corporation
+ * for Advanced Internet Development, Inc. All rights reserved
  * 
  * 
- * Redistribution and use in source and binary forms, with or without 
+ * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are met:
  * 
- * Redistributions of source code must retain the above copyright notice, this 
+ * Redistributions of source code must retain the above copyright notice, this
  * list of conditions and the following disclaimer.
  * 
- * Redistributions in binary form must reproduce the above copyright notice, 
- * this list of conditions and the following disclaimer in the documentation 
- * and/or other materials provided with the distribution, if any, must include 
- * the following acknowledgment: "This product includes software developed by 
- * the University Corporation for Advanced Internet Development 
- * <http://www.ucaid.edu>Internet2 Project. Alternately, this acknowledegement 
- * may appear in the software itself, if and wherever such third-party 
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution, if any, must include
+ * the following acknowledgment: "This product includes software developed by
+ * the University Corporation for Advanced Internet Development
+ * <http://www.ucaid.edu> Internet2 Project. Alternately, this acknowledegement
+ * may appear in the software itself, if and wherever such third-party
  * acknowledgments normally appear.
  * 
- * Neither the name of Shibboleth nor the names of its contributors, nor 
- * Internet2, nor the University Corporation for Advanced Internet Development, 
- * Inc., nor UCAID may be used to endorse or promote products derived from this 
- * software without specific prior written permission. For written permission, 
+ * Neither the name of Shibboleth nor the names of its contributors, nor
+ * Internet2, nor the University Corporation for Advanced Internet Development,
+ * Inc., nor UCAID may be used to endorse or promote products derived from this
+ * software without specific prior written permission. For written permission,
  * please contact shibboleth@shibboleth.org
  * 
- * Products derived from this software may not be called Shibboleth, Internet2, 
- * UCAID, or the University Corporation for Advanced Internet Development, nor 
- * may Shibboleth appear in their name, without prior written permission of the 
+ * Products derived from this software may not be called Shibboleth, Internet2,
+ * UCAID, or the University Corporation for Advanced Internet Development, nor
+ * may Shibboleth appear in their name, without prior written permission of the
  * University Corporation for Advanced Internet Development.
  * 
  * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
- * AND WITH ALL FAULTS. ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 
- * PARTICULAR PURPOSE, AND NON-INFRINGEMENT ARE DISCLAIMED AND THE ENTIRE RISK 
- * OF SATISFACTORY QUALITY, PERFORMANCE, ACCURACY, AND EFFORT IS WITH LICENSEE. 
- * IN NO EVENT SHALL THE COPYRIGHT OWNER, CONTRIBUTORS OR THE UNIVERSITY 
- * CORPORATION FOR ADVANCED INTERNET DEVELOPMENT, INC. BE LIABLE FOR ANY DIRECT, 
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND WITH ALL FAULTS. ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+ * PARTICULAR PURPOSE, AND NON-INFRINGEMENT ARE DISCLAIMED AND THE ENTIRE RISK
+ * OF SATISFACTORY QUALITY, PERFORMANCE, ACCURACY, AND EFFORT IS WITH LICENSEE.
+ * IN NO EVENT SHALL THE COPYRIGHT OWNER, CONTRIBUTORS OR THE UNIVERSITY
+ * CORPORATION FOR ADVANCED INTERNET DEVELOPMENT, INC. BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
 package edu.internet2.middleware.shibboleth.aa.arp;
 
 import java.lang.reflect.Constructor;
-import java.util.Properties;
 
 import org.apache.log4j.Logger;
+import org.w3c.dom.Element;
 
 /**
- * Factory for generating instances of <code>ArpRepository</code>.  Configuration
- * is delegated to the Arp Repository.  Runtime options are passed to concrete constructors
- * via a <code>Properties</code> object.
- *
- * @author     Parviz Dousti (dousti@cmu.edu)
- * @created    June, 2002
+ * Factory for generating instances of <code>ArpRepository</code>.
+ * Configuration is delegated to the Arp Repository. Runtime options are passed
+ * to concrete constructors via an <ArpRepository/> element.
+ * 
+ * @author Parviz Dousti (dousti@cmu.edu) @created June, 2002
  */
 
 public class ArpRepositoryFactory {
 
        private static Logger log = Logger.getLogger(ArpRepositoryFactory.class.getName());
 
-       public static ArpRepository getInstance(Properties props) throws ArpRepositoryException {
+       public static ArpRepository getInstance(Element repositoryConfig) throws ArpRepositoryException {
+
+               String implementation = repositoryConfig.getAttribute("implementation");
 
-               if (props
-                       .getProperty("edu.internet2.middleware.shibboleth.aa.arp.ArpRepository.implementation")
-                       == null) {
+               if (repositoryConfig.getAttribute("implementation") == null) {
                        throw new ArpRepositoryException("No ARP Repository implementaiton specified.");
                }
                try {
-                       Class implementorClass =
-                               Class.forName(
-                                       props.getProperty(
-                                               "edu.internet2.middleware.shibboleth.aa.arp.ArpRepository.implementation"));
+                       Class implementorClass = Class.forName(repositoryConfig.getAttribute("implementation"));
                        Class[] params = new Class[1];
-                       params[0] = Class.forName("java.util.Properties");
+                       params[0] = Class.forName("org.w3c.dom.Element");
                        Constructor implementorConstructor = implementorClass.getConstructor(params);
                        Object[] args = new Object[1];
-                       args[0] = props;
+                       args[0] = repositoryConfig;
                        log.debug("Initializing Arp Repository of type (" + implementorClass.getName() + ").");
                        return (ArpRepository) implementorConstructor.newInstance(args);
 
                } catch (NoSuchMethodException nsme) {
                        log.error(
                                "Failed to instantiate an Arp Repository: ArpRepository "
-                                       + "implementation must contain a constructor that accepts a Properties bundle for "
+                                       + "implementation must contain a constructor that accepts an <ArpRepository> element as "
                                        + "configuration data.");
                        throw new ArpRepositoryException("Failed to instantiate an Arp Repository.");
                } catch (Exception e) {
                        log.error("Failed to instantiate an Arp Repository: " + e);
-                       throw new ArpRepositoryException(
-                               "Failed to instantiate an Arp Repository: " + e.getMessage());
+                       throw new ArpRepositoryException("Failed to instantiate an Arp Repository: " + e.getMessage());
 
                }
        }
index d26717f..080faf0 100755 (executable)
@@ -1,50 +1,48 @@
-/* 
- * The Shibboleth License, Version 1. 
- * Copyright (c) 2002 
- * University Corporation for Advanced Internet Development, Inc. 
- * All rights reserved
+/*
+ * The Shibboleth License, Version 1. Copyright (c) 2002 University Corporation
+ * for Advanced Internet Development, Inc. All rights reserved
  * 
  * 
- * Redistribution and use in source and binary forms, with or without 
+ * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are met:
  * 
- * Redistributions of source code must retain the above copyright notice, this 
+ * Redistributions of source code must retain the above copyright notice, this
  * list of conditions and the following disclaimer.
  * 
- * Redistributions in binary form must reproduce the above copyright notice, 
- * this list of conditions and the following disclaimer in the documentation 
- * and/or other materials provided with the distribution, if any, must include 
- * the following acknowledgment: "This product includes software developed by 
- * the University Corporation for Advanced Internet Development 
- * <http://www.ucaid.edu>Internet2 Project. Alternately, this acknowledegement 
- * may appear in the software itself, if and wherever such third-party 
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution, if any, must include
+ * the following acknowledgment: "This product includes software developed by
+ * the University Corporation for Advanced Internet Development
+ * <http://www.ucaid.edu> Internet2 Project. Alternately, this acknowledegement
+ * may appear in the software itself, if and wherever such third-party
  * acknowledgments normally appear.
  * 
- * Neither the name of Shibboleth nor the names of its contributors, nor 
- * Internet2, nor the University Corporation for Advanced Internet Development, 
- * Inc., nor UCAID may be used to endorse or promote products derived from this 
- * software without specific prior written permission. For written permission, 
+ * Neither the name of Shibboleth nor the names of its contributors, nor
+ * Internet2, nor the University Corporation for Advanced Internet Development,
+ * Inc., nor UCAID may be used to endorse or promote products derived from this
+ * software without specific prior written permission. For written permission,
  * please contact shibboleth@shibboleth.org
  * 
- * Products derived from this software may not be called Shibboleth, Internet2, 
- * UCAID, or the University Corporation for Advanced Internet Development, nor 
- * may Shibboleth appear in their name, without prior written permission of the 
+ * Products derived from this software may not be called Shibboleth, Internet2,
+ * UCAID, or the University Corporation for Advanced Internet Development, nor
+ * may Shibboleth appear in their name, without prior written permission of the
  * University Corporation for Advanced Internet Development.
  * 
  * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
- * AND WITH ALL FAULTS. ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 
- * PARTICULAR PURPOSE, AND NON-INFRINGEMENT ARE DISCLAIMED AND THE ENTIRE RISK 
- * OF SATISFACTORY QUALITY, PERFORMANCE, ACCURACY, AND EFFORT IS WITH LICENSEE. 
- * IN NO EVENT SHALL THE COPYRIGHT OWNER, CONTRIBUTORS OR THE UNIVERSITY 
- * CORPORATION FOR ADVANCED INTERNET DEVELOPMENT, INC. BE LIABLE FOR ANY DIRECT, 
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND WITH ALL FAULTS. ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+ * PARTICULAR PURPOSE, AND NON-INFRINGEMENT ARE DISCLAIMED AND THE ENTIRE RISK
+ * OF SATISFACTORY QUALITY, PERFORMANCE, ACCURACY, AND EFFORT IS WITH LICENSEE.
+ * IN NO EVENT SHALL THE COPYRIGHT OWNER, CONTRIBUTORS OR THE UNIVERSITY
+ * CORPORATION FOR ADVANCED INTERNET DEVELOPMENT, INC. BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
 package edu.internet2.middleware.shibboleth.aa.arp.provider;
@@ -55,7 +53,6 @@ import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.Map;
-import java.util.Properties;
 import java.util.Set;
 
 import org.apache.log4j.Logger;
@@ -68,8 +65,8 @@ import edu.internet2.middleware.shibboleth.aa.arp.ArpRepository;
 import edu.internet2.middleware.shibboleth.aa.arp.ArpRepositoryException;
 
 /**
- * Provides marshalling/unmarshalling functionality common among 
- * <code>ArpRepository</code> implementations.
+ * Provides marshalling/unmarshalling functionality common among <code>ArpRepository</code>
+ * implementations.
  * 
  * @author Walter Hoehn (wassa@columbia.edu)
  */
@@ -79,31 +76,21 @@ public abstract class BaseArpRepository implements ArpRepository {
        private static Logger log = Logger.getLogger(BaseArpRepository.class.getName());
        private ArpCache arpCache;
 
-       BaseArpRepository(Properties properties) throws ArpRepositoryException {
+       BaseArpRepository(Element config) throws ArpRepositoryException {
+
+               String rawArpTTL = config.getAttribute("arpTTL");
+               long arpTTL = 0;
                try {
-                       if (properties
-                               .getProperty(
-                                       "edu.internet2.middleware.shibboleth.aa.arp.BaseArpRepository.ArpTTL",
-                                       null)
-                               != null) {
-                               if (Long
-                                       .parseLong(
-                                               properties.getProperty(
-                                                       "edu.internet2.middleware.shibboleth.aa.arp.BaseArpRepository.ArpTTL",
-                                                       null))
-                                       != 0) {
-                                       arpCache = ArpCache.instance();
-                                       arpCache.setCacheLength(
-                                               Long.parseLong(
-                                                       properties.getProperty(
-                                                               "edu.internet2.middleware.shibboleth.aa.arp.BaseArpRepository.ArpTTL",
-                                                               null)));
-                               }
+                       if (rawArpTTL != null && !rawArpTTL.equals("")) {
+                               arpTTL = Long.parseLong(rawArpTTL);
                        }
-               } catch (NumberFormatException nfe) {
-                       log.error(
-                               "Value for (edu.internet2.middleware.shibboleth.aa.arp.BaseArpRepository.ArpTTL) must be a long integer.");
-                       throw new ArpRepositoryException("Value for (edu.internet2.middleware.shibboleth.aa.arp.BaseArpRepository.ArpTTL) must be a long integer.");
+               } catch (NumberFormatException e) {
+                       log.error("ARP TTL must be set to a long integer.");
+               }
+
+               if (arpTTL > 0) {
+                       arpCache = ArpCache.instance();
+                       arpCache.setCacheLength(arpTTL);
                }
        }
 
@@ -112,10 +99,7 @@ public abstract class BaseArpRepository implements ArpRepository {
         */
 
        public Arp[] getAllPolicies(Principal principal) throws ArpRepositoryException {
-               log.debug(
-                       "Received a query for all policies applicable to principal: ("
-                               + principal.getName()
-                               + ").");
+               log.debug("Received a query for all policies applicable to principal: (" + principal.getName() + ").");
                Set allPolicies = new HashSet();
                Arp sitePolicy = getSitePolicy();
                if (sitePolicy != null) {
@@ -173,6 +157,7 @@ public abstract class BaseArpRepository implements ArpRepository {
 
        /**
         * Inheritors must return the site Arp as an xml element.
+        * 
         * @return Element
         */
        protected abstract Element retrieveSiteArpXml() throws IOException, SAXException;
@@ -218,10 +203,10 @@ public abstract class BaseArpRepository implements ArpRepository {
 
        /**
         * Inheritors must return the user Arp as an xml element.
+        * 
         * @return Element
         */
-       protected abstract Element retrieveUserArpXml(Principal principal)
-               throws IOException, SAXException;
+       protected abstract Element retrieveUserArpXml(Principal principal) throws IOException, SAXException;
 
 }
 
index 21c1554..4e847fb 100755 (executable)
@@ -1,50 +1,48 @@
-/* 
- * The Shibboleth License, Version 1. 
- * Copyright (c) 2002 
- * University Corporation for Advanced Internet Development, Inc. 
- * All rights reserved
+/*
+ * The Shibboleth License, Version 1. Copyright (c) 2002 University Corporation
+ * for Advanced Internet Development, Inc. All rights reserved
  * 
  * 
- * Redistribution and use in source and binary forms, with or without 
+ * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are met:
  * 
- * Redistributions of source code must retain the above copyright notice, this 
+ * Redistributions of source code must retain the above copyright notice, this
  * list of conditions and the following disclaimer.
  * 
- * Redistributions in binary form must reproduce the above copyright notice, 
- * this list of conditions and the following disclaimer in the documentation 
- * and/or other materials provided with the distribution, if any, must include 
- * the following acknowledgment: "This product includes software developed by 
- * the University Corporation for Advanced Internet Development 
- * <http://www.ucaid.edu>Internet2 Project. Alternately, this acknowledegement 
- * may appear in the software itself, if and wherever such third-party 
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution, if any, must include
+ * the following acknowledgment: "This product includes software developed by
+ * the University Corporation for Advanced Internet Development
+ * <http://www.ucaid.edu> Internet2 Project. Alternately, this acknowledegement
+ * may appear in the software itself, if and wherever such third-party
  * acknowledgments normally appear.
  * 
- * Neither the name of Shibboleth nor the names of its contributors, nor 
- * Internet2, nor the University Corporation for Advanced Internet Development, 
- * Inc., nor UCAID may be used to endorse or promote products derived from this 
- * software without specific prior written permission. For written permission, 
+ * Neither the name of Shibboleth nor the names of its contributors, nor
+ * Internet2, nor the University Corporation for Advanced Internet Development,
+ * Inc., nor UCAID may be used to endorse or promote products derived from this
+ * software without specific prior written permission. For written permission,
  * please contact shibboleth@shibboleth.org
  * 
- * Products derived from this software may not be called Shibboleth, Internet2, 
- * UCAID, or the University Corporation for Advanced Internet Development, nor 
- * may Shibboleth appear in their name, without prior written permission of the 
+ * Products derived from this software may not be called Shibboleth, Internet2,
+ * UCAID, or the University Corporation for Advanced Internet Development, nor
+ * may Shibboleth appear in their name, without prior written permission of the
  * University Corporation for Advanced Internet Development.
  * 
  * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
- * AND WITH ALL FAULTS. ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 
- * PARTICULAR PURPOSE, AND NON-INFRINGEMENT ARE DISCLAIMED AND THE ENTIRE RISK 
- * OF SATISFACTORY QUALITY, PERFORMANCE, ACCURACY, AND EFFORT IS WITH LICENSEE. 
- * IN NO EVENT SHALL THE COPYRIGHT OWNER, CONTRIBUTORS OR THE UNIVERSITY 
- * CORPORATION FOR ADVANCED INTERNET DEVELOPMENT, INC. BE LIABLE FOR ANY DIRECT, 
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND WITH ALL FAULTS. ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+ * PARTICULAR PURPOSE, AND NON-INFRINGEMENT ARE DISCLAIMED AND THE ENTIRE RISK
+ * OF SATISFACTORY QUALITY, PERFORMANCE, ACCURACY, AND EFFORT IS WITH LICENSEE.
+ * IN NO EVENT SHALL THE COPYRIGHT OWNER, CONTRIBUTORS OR THE UNIVERSITY
+ * CORPORATION FOR ADVANCED INTERNET DEVELOPMENT, INC. BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
 package edu.internet2.middleware.shibboleth.aa.arp.provider;
@@ -53,11 +51,12 @@ import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.security.Principal;
-import java.util.Properties;
 
 import org.apache.log4j.Logger;
 import org.apache.xerces.parsers.DOMParser;
 import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
 import org.xml.sax.EntityResolver;
 import org.xml.sax.ErrorHandler;
 import org.xml.sax.InputSource;
@@ -68,9 +67,11 @@ import edu.internet2.middleware.shibboleth.aa.arp.Arp;
 import edu.internet2.middleware.shibboleth.aa.arp.ArpRepository;
 import edu.internet2.middleware.shibboleth.aa.arp.ArpRepositoryException;
 import edu.internet2.middleware.shibboleth.common.ShibResource;
+import edu.internet2.middleware.shibboleth.common.ShibbolethOriginConfig;
 
 /**
- * Simple <code>ArpRepository</code> implementation that uses a filesystem for storage.
+ * Simple <code>ArpRepository</code> implementation that uses a filesystem
+ * for storage.
  * 
  * @author Walter Hoehn (wassa@columbia.edu)
  */
@@ -82,48 +83,43 @@ public class FileSystemArpRepository extends BaseArpRepository implements ArpRep
 
        private String dataStorePath;
 
-       public FileSystemArpRepository(Properties props) throws ArpRepositoryException {
-               super(props);
-               if (props
-                       .getProperty(
-                               "edu.internet2.middleware.shibboleth.aa.arp.provider.FileSystemArpRepository.Path",
-                               null)
-                       == null) {
-                       log.error(
-                               "Cannot initialize FileSystemArpRepository: attribute (edu.internet2.middleware.shibboleth.aa.arp.provider.FileSystemArpRepository.Path) not specified");
-                       throw new ArpRepositoryException("Cannot initialize FileSystemArpRepository");
+       public FileSystemArpRepository(Element config) throws ArpRepositoryException {
+               super(config);
+
+               NodeList itemElements = config.getElementsByTagNameNS(ShibbolethOriginConfig.originConfigNamespace, "Path");
+
+               if (itemElements.getLength() > 1) {
+                       log.warn(
+                               "Encountered multiple <Path> configuration elements for the File System ARP Repository.  Using first...");
+               }
+               Node tnode = itemElements.item(0).getFirstChild();
+               String path = null;
+               if (tnode != null && tnode.getNodeType() == Node.TEXT_NODE) {
+                       path = tnode.getNodeValue();
+               }
+               if (path == null || path.equals("")) {
+                       log.error("ARP repository path not specified.");
+                       throw new ArpRepositoryException("Cannot initialize FileSystemArpRepository: <ArpRepository> element must contain a <Path> element.");
                }
 
                try {
-                       File givenPath =
-                               new ShibResource(
-                                       props.getProperty(
-                                               "edu.internet2.middleware.shibboleth.aa.arp.provider.FileSystemArpRepository.Path"),
-                                       this.getClass())
-                                       .getFile();
-
-                       if (!givenPath.isDirectory()) {
+                       File realPath = new ShibResource(path, this.getClass()).getFile();
+
+                       if (!realPath.isDirectory()) {
                                log.error(
                                        "Cannot initialize FileSystemArpRepository: specified path is not a directory: ("
-                                               + givenPath.getPath()
+                                               + realPath.getPath()
                                                + ").");
                                throw new ArpRepositoryException("Cannot initialize FileSystemArpRepository");
                        }
 
-                       dataStorePath =
-                               props.getProperty(
-                                       "edu.internet2.middleware.shibboleth.aa.arp.provider.FileSystemArpRepository.Path");
+                       dataStorePath = path;
                        if (!dataStorePath.endsWith("/")) {
                                dataStorePath += "/";
                        }
                        log.info("Initializing File System Arp Repository with a root of (" + dataStorePath + ").");
                } catch (Exception e) {
-                       log.error(
-                               "Cannot initialize FileSystemArpRepository: error accessing path: ("
-                                       + props.getProperty(
-                                               "edu.internet2.middleware.shibboleth.aa.arp.provider.FileSystemArpRepository.Path")
-                                       + "): "
-                                       + e);
+                       log.error("Cannot initialize FileSystemArpRepository: error accessing path: (" + path + "): " + e);
                        throw new ArpRepositoryException("Cannot initialize FileSystemArpRepository");
                }
        }
@@ -165,13 +161,13 @@ public class FileSystemArpRepository extends BaseArpRepository implements ArpRep
                        parser.setFeature("http://xml.org/sax/features/validation", true);
                        parser.setFeature("http://apache.org/xml/features/validation/schema", true);
                        parser.setEntityResolver(new EntityResolver() {
-                               public InputSource resolveEntity(String publicId, String systemId)
-                                       throws SAXException {
+                               public InputSource resolveEntity(String publicId, String systemId) throws SAXException {
 
                                        if (systemId.endsWith("shibboleth-arp-1.0.xsd")) {
                                                InputStream stream;
                                                try {
-                                                       return new InputSource(new ShibResource("/schemas/shibboleth-arp-1.0.xsd", this.getClass()).getInputStream());
+                                                       return new InputSource(
+                                                               new ShibResource("/schemas/shibboleth-arp-1.0.xsd", this.getClass()).getInputStream());
                                                } catch (IOException e) {
                                                        throw new SAXException("Could not load entity: " + e);
                                                }
@@ -204,13 +200,8 @@ public class FileSystemArpRepository extends BaseArpRepository implements ArpRep
         * @see edu.internet2.middleware.shibboleth.aa.arp.provider.BaseArpRepository#retrieveUserArpXml(Principal)
         */
        protected Element retrieveUserArpXml(Principal principal) throws IOException, SAXException {
-               String fileName =
-                       dataStorePath
-                               + "arp.user."
-                               + principal.getName()
-                               + ".xml";
-               log.debug(
-                       "Attempting to load user (" + principal.getName() + ") ARP from: (" + fileName + ").");
+               String fileName = dataStorePath + "arp.user." + principal.getName() + ".xml";
+               log.debug("Attempting to load user (" + principal.getName() + ") ARP from: (" + fileName + ").");
                return retrieveArpXml(fileName);
        }
 
diff --git a/src/edu/internet2/middleware/shibboleth/aa/arp/provider/LdapArpRepository.java b/src/edu/internet2/middleware/shibboleth/aa/arp/provider/LdapArpRepository.java
deleted file mode 100755 (executable)
index 6b2ffec..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-/* 
- * The Shibboleth License, Version 1. 
- * Copyright (c) 2002 
- * University Corporation for Advanced Internet Development, Inc. 
- * All rights reserved
- * 
- * 
- * Redistribution and use in source and binary forms, with or without 
- * modification, are permitted provided that the following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this 
- * list of conditions and the following disclaimer.
- * 
- * Redistributions in binary form must reproduce the above copyright notice, 
- * this list of conditions and the following disclaimer in the documentation 
- * and/or other materials provided with the distribution, if any, must include 
- * the following acknowledgment: "This product includes software developed by 
- * the University Corporation for Advanced Internet Development 
- * <http://www.ucaid.edu>Internet2 Project. Alternately, this acknowledegement 
- * may appear in the software itself, if and wherever such third-party 
- * acknowledgments normally appear.
- * 
- * Neither the name of Shibboleth nor the names of its contributors, nor 
- * Internet2, nor the University Corporation for Advanced Internet Development, 
- * Inc., nor UCAID may be used to endorse or promote products derived from this 
- * software without specific prior written permission. For written permission, 
- * please contact shibboleth@shibboleth.org
- * 
- * Products derived from this software may not be called Shibboleth, Internet2, 
- * UCAID, or the University Corporation for Advanced Internet Development, nor 
- * may Shibboleth appear in their name, without prior written permission of the 
- * University Corporation for Advanced Internet Development.
- * 
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
- * AND WITH ALL FAULTS. ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 
- * PARTICULAR PURPOSE, AND NON-INFRINGEMENT ARE DISCLAIMED AND THE ENTIRE RISK 
- * OF SATISFACTORY QUALITY, PERFORMANCE, ACCURACY, AND EFFORT IS WITH LICENSEE. 
- * IN NO EVENT SHALL THE COPYRIGHT OWNER, CONTRIBUTORS OR THE UNIVERSITY 
- * CORPORATION FOR ADVANCED INTERNET DEVELOPMENT, INC. BE LIABLE FOR ANY DIRECT, 
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.internet2.middleware.shibboleth.aa.arp.provider;
-
-import java.security.Principal;
-
-import edu.internet2.middleware.shibboleth.aa.arp.Arp;
-import edu.internet2.middleware.shibboleth.aa.arp.ArpRepository;
-import edu.internet2.middleware.shibboleth.aa.arp.ArpRepositoryException;
-
-/**
- * An <code>ArpRepository</code> implementation that uses an LDAP directory for 
- * storage/lookup.
- * 
- * @author Walter Hoehn (wassa@columbia.edu)
- */
-
-public class LdapArpRepository implements ArpRepository {
-
-       /**
-        * @see edu.internet2.middleware.shibboleth.aa.arp.ArpRepository#getAllPolicies(Principal)
-        */
-       public Arp[] getAllPolicies(Principal principal) throws ArpRepositoryException {
-               return null;
-       }
-
-       /**
-        * @see edu.internet2.middleware.shibboleth.aa.arp.ArpRepository#getSitePolicy()
-        */
-       public Arp getSitePolicy() throws ArpRepositoryException {
-               return null;
-       }
-
-       /**
-        * @see edu.internet2.middleware.shibboleth.aa.arp.ArpRepository#getUserPolicy(Principal)
-        */
-       public Arp getUserPolicy(Principal principal) throws ArpRepositoryException {
-               return null;
-       }
-
-       /**
-        * @see edu.internet2.middleware.shibboleth.aa.arp.ArpRepository#remove(Arp)
-        */
-       public void remove(Arp arp) throws ArpRepositoryException {
-       }
-
-       /**
-        * @see edu.internet2.middleware.shibboleth.aa.arp.ArpRepository#update(Arp)
-        */
-       public void update(Arp arp) throws ArpRepositoryException {
-       }
-
-}
index 86cff7a..9284d90 100755 (executable)
@@ -54,10 +54,10 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
-import java.util.Properties;
 import java.util.Set;
 
 import org.apache.log4j.Logger;
+import org.w3c.dom.Element;
 
 import edu.internet2.middleware.shibboleth.aa.arp.Arp;
 import edu.internet2.middleware.shibboleth.aa.arp.ArpRepository;
@@ -75,7 +75,7 @@ public class MemoryArpRepository implements ArpRepository {
        private Arp sitePolicy;
        private static Logger log = Logger.getLogger(MemoryArpRepository.class.getName());
 
-       public MemoryArpRepository(Properties props) {
+       public MemoryArpRepository(Element config) {
        }
 
        /**
index 26e363f..892f27b 100644 (file)
                                                                                <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
                                                                        </xs:sequence>
                                                                        <xs:attribute name="implementation" type="xs:string" use="required"/>
-                                                                       <xs:anyAttribute namespace="##any"/>
+                                                                       <xs:anyAttribute namespace="##any" processContents="lax"/>
                                                                </xs:complexType>
                                                        </xs:element>
                                                </xs:sequence>
-                                               <xs:attribute name="arpTTL" type="xs:integer" use="optional"/>
                                        </xs:complexType>
                                </xs:element>
                                <xs:sequence>