View Javadoc

1   /**
2    * Licensed to jclouds, Inc. (jclouds) under one or more
3    * contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  jclouds licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.jclouds.predicates;
20  
21  import com.google.common.base.Predicate;
22  
23  import org.jclouds.javax.annotation.Nullable;
24  
25  /**
26   * Abstract class that creates a bridge between {@link com.google.common.base.Predicate}
27   * and {@link org.jclouds.rest.annotations.ParamValidators}s.
28   *
29   * @param <T> Type of object to be validated. For generic
30   * validation (where object's class is determined in {@link #validate(Object)},
31   * use {@link Object}.
32   *
33   * @see com.google.common.base.Predicate
34   *
35   * @author Oleksiy Yarmula
36   */
37  public abstract class Validator<T> implements Predicate<T> {
38  
39      @Override
40      public boolean apply(@Nullable T t) {
41          validate(t);
42          return true; // by contract, if no exception thrown
43      }
44  
45      /**
46       * Validates the parameter
47       * @param t parameter to be validated
48       * @throws IllegalArgumentException if validation failed
49       */
50      public abstract void validate(@Nullable T t) throws IllegalArgumentException;
51  }