/*
 * JBoss, Home of Professional Open Source.
 * Copyright 2014 Red Hat, Inc., and individual contributors
 * as indicated by the @author tags.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

package io.undertow.predicate;

import io.undertow.attribute.ExchangeAttribute;
import io.undertow.attribute.ExchangeAttributes;

Utility class used for creating predicates
Author:Stuart Douglas
/** * Utility class used for creating predicates * * * @author Stuart Douglas */
public class Predicates {
Creates a procedure that returns true if the given ExchangeAttributes are equal.
Params:
  • attributes – to be compared in the predictor.
Returns:A new EqualsPredicate.
/** * Creates a procedure that returns true if the given ExchangeAttributes are equal. * @param attributes to be compared in the predictor. * @return A new EqualsPredicate. */
public static Predicate equals(final ExchangeAttribute[] attributes){ return new EqualsPredicate(attributes); }
Creates a predicate that returns true if an only if the given predicates all return true.
/** * Creates a predicate that returns true if an only if the given predicates all * return true. */
public static Predicate and(final Predicate... predicates) { return new AndPredicate(predicates); }
Creates a predicate that returns true if any of the given predicates return true.
/** * Creates a predicate that returns true if any of the given predicates * return true. */
public static Predicate or(final Predicate... predicates) { return new OrPredicate(predicates); }
Creates a predicate that returns true if the given predicate returns false.
/** * Creates a predicate that returns true if the given predicate returns * false. */
public static Predicate not(final Predicate predicate) { return new NotPredicate(predicate); }
Creates a predicate that returns true if the given path matches exactly.
/** * Creates a predicate that returns true if the given path matches exactly. */
public static Predicate path(final String path) { return new PathMatchPredicate(path); }
Creates a predicate that returns true if any of the given paths match exactly.
/** * Creates a predicate that returns true if any of the given paths match exactly. */
public static Predicate paths(final String... paths) { final PathMatchPredicate[] predicates = new PathMatchPredicate[paths.length]; for (int i = 0; i < paths.length; ++i) { predicates[i] = new PathMatchPredicate(paths[i]); } return or(predicates); }
Creates a predicate that returns true if the request path ends with the provided suffix.
/** * Creates a predicate that returns true if the request path ends with the provided suffix. */
public static Predicate suffix(final String path) { return new PathSuffixPredicate(path); }
Creates a predicate that returns true if the request path ends with any of the provided suffixes.
/** * Creates a predicate that returns true if the request path ends with any of the provided suffixes. */
public static Predicate suffixes(final String... paths) { if(paths.length == 1) { return suffix(paths[0]); } final PathSuffixPredicate[] predicates = new PathSuffixPredicate[paths.length]; for (int i = 0; i < paths.length; ++i) { predicates[i] = new PathSuffixPredicate(paths[i]); } return or(predicates); }
Creates a predicate that returns true if the given relative path starts with the provided prefix.
/** * Creates a predicate that returns true if the given relative path starts with the provided prefix. */
public static Predicate prefix(final String path) { return new PathPrefixPredicate(path); }
Creates a predicate that returns true if the relative request path matches any of the provided prefixes.
/** * Creates a predicate that returns true if the relative request path matches any of the provided prefixes. */
public static Predicate prefixes(final String... paths) { return new PathPrefixPredicate(paths); }
Predicate that returns true if the Content-Size of a request is above a given value.
Author:Stuart Douglas
/** * Predicate that returns true if the Content-Size of a request is above a * given value. * * @author Stuart Douglas */
public static Predicate maxContentSize(final long size) { return new MaxContentSizePredicate(size); }
Predicate that returns true if the Content-Size of a request is below a given value.
/** * Predicate that returns true if the Content-Size of a request is below a * given value. */
public static Predicate minContentSize(final long size) { return new MinContentSizePredicate(size); }
Prediction which always returns true
/** * Prediction which always returns true */
public static Predicate truePredicate() { return TruePredicate.instance(); }
Predicate which always returns false.
/** * Predicate which always returns false. */
public static Predicate falsePredicate() { return FalsePredicate.instance(); }
Return a predicate that will return true if the given attribute is not null and not empty.
Params:
  • attribute – The attribute to check whether it exists or not.
/** * Return a predicate that will return true if the given attribute is not null and not empty. * * @param attribute The attribute to check whether it exists or not. */
public static Predicate exists(final ExchangeAttribute attribute) { return new ExistsPredicate(attribute); }
Returns true if the given attribute is present and contains one of the provided value.
Params:
  • attribute – The exchange attribute.
  • values – The values to check for.
/** * Returns true if the given attribute is present and contains one of the provided value. * @param attribute The exchange attribute. * @param values The values to check for. */
public static Predicate contains(final ExchangeAttribute attribute, final String ... values) { return new ContainsPredicate(attribute, values); }
Creates a predicate that matches the given attribute against a regex. A full match is not required
Params:
  • attribute – The exchange attribute to check against.
  • pattern – The pattern to look for.
/** * Creates a predicate that matches the given attribute against a regex. A full match is not required * @param attribute The exchange attribute to check against. * @param pattern The pattern to look for. */
public static Predicate regex(final ExchangeAttribute attribute, final String pattern) { return new RegularExpressionPredicate(pattern, attribute); }
Creates a predicate that matches the given attribute against a regex.
Params:
  • requireFullMatch – If a full match is required in order to return true.
  • attribute – The attribute to check against.
  • pattern – The pattern to look for.
/** * Creates a predicate that matches the given attribute against a regex. * @param requireFullMatch If a full match is required in order to return true. * @param attribute The attribute to check against. * @param pattern The pattern to look for. */
public static Predicate regex(final ExchangeAttribute attribute, final String pattern, boolean requireFullMatch) { return new RegularExpressionPredicate(pattern, attribute, requireFullMatch); }
Creates a predicate that matches the given attribute against a regex.
Params:
  • requireFullMatch – If a full match is required in order to return true.
  • attribute – The attribute to check against.
  • pattern – The pattern to look for.
/** * Creates a predicate that matches the given attribute against a regex. * @param requireFullMatch If a full match is required in order to return true. * @param attribute The attribute to check against. * @param pattern The pattern to look for. */
public static Predicate regex(final String attribute, final String pattern, final ClassLoader classLoader, final boolean requireFullMatch) { return new RegularExpressionPredicate(pattern, ExchangeAttributes.parser(classLoader).parse(attribute), requireFullMatch); }
A predicate that returns true if authentication is required
Returns:A predicate that returns true if authentication is required
/** * A predicate that returns true if authentication is required * * @return A predicate that returns true if authentication is required */
public static Predicate authRequired() { return AuthenticationRequiredPredicate.INSTANCE; }
parses the predicate string, and returns the result, using the TCCL to load predicate definitions
Params:
  • predicate – The prediate string
Returns:The predicate
/** * parses the predicate string, and returns the result, using the TCCL to load predicate definitions * @param predicate The prediate string * @return The predicate */
public static Predicate parse(final String predicate) { return PredicateParser.parse(predicate, Thread.currentThread().getContextClassLoader()); }
parses the predicate string, and returns the result
Params:
  • predicate – The prediate string
  • classLoader – The class loader to load the predicates from
Returns:The predicate
/** * parses the predicate string, and returns the result * @param predicate The prediate string * @param classLoader The class loader to load the predicates from * @return The predicate */
public static Predicate parse(final String predicate, ClassLoader classLoader) { return PredicateParser.parse(predicate, classLoader); }
Returns:A predicate that returns true if the request is secure
/** * * @return A predicate that returns true if the request is secure */
public static Predicate secure() { return SecurePredicate.INSTANCE; } private Predicates() { } }