View Javadoc

1   /*
2    * Licensed to the University Corporation for Advanced Internet Development, 
3    * Inc. (UCAID) under one or more contributor license agreements.  See the 
4    * NOTICE file distributed with this work for additional information regarding
5    * copyright ownership. The UCAID licenses this file to You under the Apache 
6    * License, Version 2.0 (the "License"); you may not use this file except in 
7    * compliance with the License.  You may obtain a copy of the License at
8    *
9    *    http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  
18  package edu.internet2.middleware.shibboleth.common.attribute.filtering.provider.match.basic;
19  
20  import edu.internet2.middleware.shibboleth.common.attribute.filtering.provider.FilterProcessingException;
21  import edu.internet2.middleware.shibboleth.common.attribute.filtering.provider.MatchFunctor;
22  import edu.internet2.middleware.shibboleth.common.attribute.filtering.provider.ShibbolethFilteringContext;
23  
24  /**
25   * A match functor that performs a logical NOT on the result of another functor.
26   */
27  public class NotMatchFunctor extends AbstractMatchFunctor {
28  
29      /** Match functor to negate. */
30      private MatchFunctor targetRule;
31      
32      /**
33       * Constructor.
34       *
35       * @param rule rule to NOT
36       */
37      public NotMatchFunctor(MatchFunctor rule){
38          targetRule = rule;
39      }
40  
41      /**
42       * Gets the match functor that will be the target of the logical NOT.
43       * 
44       * @return match functor that will be the target of the logical NOT
45       */
46      public MatchFunctor getTargetRule() {
47          return targetRule;
48      }
49  
50      /**
51       * Sets the match functor that will be the target of the logical NOT.
52       * 
53       * @param target match functor that will be the target of the logical NOT
54       */
55      public void setTargetRule(MatchFunctor target) {
56          targetRule = target;
57      }
58  
59      /** {@inheritDoc} */
60      protected boolean doEvaluateValue(ShibbolethFilteringContext filterContext, String attributeId,
61              Object attributeValue) throws FilterProcessingException {
62          return !targetRule.evaluatePermitValue(filterContext, attributeId, attributeValue);
63      }
64  
65      /** {@inheritDoc} */
66      protected boolean doEvaluatePolicyRequirement(ShibbolethFilteringContext filterContext)
67              throws FilterProcessingException {
68          return !targetRule.evaluatePolicyRequirement(filterContext);
69      }
70  }