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.saml;
19  
20  import java.util.regex.Matcher;
21  import java.util.regex.Pattern;
22  
23  import org.opensaml.xml.util.DatatypeHelper;
24  
25  /**
26   * Base class for match functors that perform an regular expression match of a given attribute string value against
27   * entity attribute value.
28   */
29  public abstract class AbstractEntityAttributeRegexMatchFunctor extends AbstractEntityAttributeMatchFunctor {
30  
31      /** The value of the entity attribute the entity must have. */
32      private Pattern valueRegex;
33  
34      /**
35       * Gets the value of the entity attribute the entity must have.
36       * 
37       * @return value of the entity attribute the entity must have
38       */
39      public Pattern getValueRegex() {
40          return valueRegex;
41      }
42  
43      /**
44       * Sets the value of the entity attribute the entity must have.
45       * 
46       * @param attributeValueRegex value of the entity attribute the entity must have
47       */
48      public void setValueRegex(Pattern attributeValueRegex) {
49          valueRegex = attributeValueRegex;
50      }
51  
52      /** {@inheritDoc} */
53      protected boolean entityAttributeValueMatches(String entityAttributeValue) {
54          Matcher valueMatcher = valueRegex.matcher(DatatypeHelper.safeTrim(entityAttributeValue));
55          return valueMatcher.matches();
56      }
57  }