Fixed small bugs in logging and handle expiration logic. Bugzilla #312.
[java-idp.git] / src / edu / internet2 / middleware / shibboleth / aap / AttributeRule.java
1 /*
2  * The Shibboleth License, Version 1. Copyright (c) 2002 University Corporation for Advanced Internet Development, Inc.
3  * All rights reserved Redistribution and use in source and binary forms, with or without modification, are permitted
4  * provided that the following conditions are met: Redistributions of source code must retain the above copyright
5  * notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the
6  * above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other
7  * materials provided with the distribution, if any, must include the following acknowledgment: "This product includes
8  * software developed by the University Corporation for Advanced Internet Development <http://www.ucaid.edu>Internet2
9  * Project. Alternately, this acknowledegement may appear in the software itself, if and wherever such third-party
10  * acknowledgments normally appear. Neither the name of Shibboleth nor the names of its contributors, nor Internet2,
11  * nor the University Corporation for Advanced Internet Development, Inc., nor UCAID may be used to endorse or promote
12  * products derived from this software without specific prior written permission. For written permission, please
13  * contact shibboleth@shibboleth.org Products derived from this software may not be called Shibboleth, Internet2,
14  * UCAID, or the University Corporation for Advanced Internet Development, nor may Shibboleth appear in their name,
15  * without prior written permission of the University Corporation for Advanced Internet Development. THIS SOFTWARE IS
16  * PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND WITH ALL FAULTS. ANY EXPRESS OR IMPLIED WARRANTIES,
17  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND
18  * NON-INFRINGEMENT ARE DISCLAIMED AND THE ENTIRE RISK OF SATISFACTORY QUALITY, PERFORMANCE, ACCURACY, AND EFFORT IS
19  * WITH LICENSEE. IN NO EVENT SHALL THE COPYRIGHT OWNER, CONTRIBUTORS OR THE UNIVERSITY CORPORATION FOR ADVANCED
20  * INTERNET DEVELOPMENT, INC. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
22  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
23  * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
24  * POSSIBILITY OF SUCH DAMAGE.
25  */
26
27 package edu.internet2.middleware.shibboleth.aap;
28
29 import org.opensaml.SAMLAttribute;
30 import org.opensaml.SAMLException;
31
32 import edu.internet2.middleware.shibboleth.metadata.RoleDescriptor;
33
34 /**
35  * Specifies handling of a specific SAML attribute
36  * 
37  * @author Scott Cantor
38  */
39 public interface AttributeRule {
40
41     /**
42      *  Get the SAML name of the applicable attribute 
43      *
44      * @return The AttributeName
45      */
46     String getName();
47     
48     /**
49      *  Get the SAML namespace of the applicable attribute 
50      *
51      * @return The AttributeNamespace
52      */
53     String getNamespace();
54     
55     /**
56      *  Get the name of the class responsible for implementing this attribute 
57      *
58      * @return The factory class name
59      */
60     String getFactory();
61     
62     /**
63      *  Get the shorthand name of the attribute 
64      *
65      * @return The shorthand name
66      */
67     String getAlias();
68     
69     /**
70      *  Get the name of the protocol-specific header to export the attribute into 
71      *
72      * @return The header name
73      */
74     String getHeader();
75     
76     /**
77      *  Is value matching of this attribute case-sensitive? 
78      *
79      * @return The case sensitivity of the values
80      */
81     boolean getCaseSensitive();
82     
83     /**
84      *  Is the attribute formally scoped? 
85      *
86      * @return The scoped property
87      */
88     boolean getScoped();
89     
90     /**
91      *  Applies a rule to an attribute, taking into account the role in
92      *  which the issuer was acting
93      *  
94      * @param attribute The attribute to apply the filtering rule to
95      * @param role  The metadata role in which the attribute issuer is acting
96      * @throws SAMLException    Raised if the attribute is no longer valid after
97      *  the filtering process (generally if all values are deleted)
98      */
99     void apply(SAMLAttribute attribute, RoleDescriptor role) throws SAMLException;
100 }