1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * 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 org.apache.commons.proxy2.interceptor;
19
20 import org.apache.commons.proxy2.Interceptor;
21 import org.apache.commons.proxy2.Invoker;
22 import org.apache.commons.proxy2.ObjectProvider;
23 import org.apache.commons.proxy2.provider.ObjectProviderUtils;
24
25 public final class InterceptorUtils
26 {
27 //******************************************************************************************************************
28 // Static Methods
29 //******************************************************************************************************************
30
31 /**
32 * Creates an {@link Interceptor} which always returns a constant value (for all methods).
33 *
34 * @param value
35 * the constant
36 * @return an {@link Interceptor} which always returns a constant value (for all methods)
37 */
38 public static Interceptor constant(Object value)
39 {
40 return new ObjectProviderInterceptor(ObjectProviderUtils.constant(value));
41 }
42
43 /**
44 * Creates an {@link Interceptor} which returns the resulting object from an object provider (for all methods).
45 *
46 * @param provider
47 * the object provider
48 * @return an {@link Interceptor} which returns the resulting object from an object provider (for all methods)
49 */
50 public static Interceptor provider(ObjectProvider<?> provider)
51 {
52 return new ObjectProviderInterceptor(provider);
53 }
54
55 /**
56 * Creates an {@link Interceptor} which throws a specific exception (for all methods).
57 *
58 * @param e
59 * the exception
60 * @return an {@link Interceptor} which throws a specific exception (for all methods)
61 */
62 public static Interceptor throwing(Exception e)
63 {
64 return new ThrowingInterceptor(ObjectProviderUtils.constant(e));
65 }
66
67 /**
68 * Creates an {@link Interceptor} which throws the exception provided by an object provider (for all methods).
69 *
70 * @param provider
71 * the object provider
72 * @return an {@link Interceptor} which throws the exception provided by an object provider (for all methods)
73 */
74 public static Interceptor throwing(ObjectProvider<? extends Exception> provider)
75 {
76 return new ThrowingInterceptor(provider);
77 }
78
79 /**
80 * Creates an {@link Interceptor} that delegates to the specified {@link Invoker}.
81 *
82 * @param invoker
83 * delegate
84 * @return invoker {@link Interceptor}
85 */
86 public static Interceptor invoking(Invoker invoker)
87 {
88 return new InvokerInterceptor(invoker);
89 }
90
91 //******************************************************************************************************************
92 // Constructors
93 //******************************************************************************************************************
94
95 private InterceptorUtils()
96 {
97 }
98 }