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 java.util.regex.Pattern; 21 22 /** 23 * Base class for match function that match a string value against a given regular expression. 24 */ 25 public abstract class AbstractRegexMatchFunctor extends AbstractMatchFunctor { 26 27 /** Regular expression to match. */ 28 private Pattern regex; 29 30 /** 31 * Gets the regular expression to match. 32 * 33 * @return regular expression to match 34 */ 35 public String getRegularExpression() { 36 return regex.pattern(); 37 } 38 39 /** 40 * Sets the regular expression to match. 41 * 42 * @param expression regular expression to match 43 */ 44 public void setRegularExpression(String expression) { 45 regex = Pattern.compile(expression); 46 } 47 48 /** 49 * Matches the given value against the provided regular expression. {@link Object#toString()} is used to produce the 50 * string value to evaluate. 51 * 52 * @param value the value to evaluate 53 * 54 * @return true if the value matches the given match string, false if not 55 */ 56 protected boolean isMatch(Object value) { 57 if (regex == null || value == null) { 58 return false; 59 } 60 61 if (regex.matcher(value.toString()).matches()) { 62 return true; 63 } 64 65 return false; 66 } 67 }