blob: 7751bc139d6f97e70023842ad4203fb51285879b [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 org.apache.commons.proxy2.interceptor;
import org.apache.commons.proxy2.Interceptor;
import org.apache.commons.proxy2.Invoker;
import org.apache.commons.proxy2.ObjectProvider;
import org.apache.commons.proxy2.provider.ObjectProviderUtils;
public final class InterceptorUtils
{
//----------------------------------------------------------------------------------------------------------------------
// Static Methods
//----------------------------------------------------------------------------------------------------------------------
/**
* Creates an {@link Interceptor} which always returns a constant value (for all methods).
* @param value the constant
* @return an {@link Interceptor} which always returns a constant value (for all methods)
*/
public static Interceptor constant(Object value)
{
return new ObjectProviderInterceptor(ObjectProviderUtils.constant(value));
}
/**
* Creates an {@link Interceptor} which returns the resulting object from an
* object provider (for all methods).
* @param provider the object provider
* @return an {@link Interceptor} which returns the resulting object from an
* object provider (for all methods)
*/
public static Interceptor provider(ObjectProvider<?> provider)
{
return new ObjectProviderInterceptor(provider);
}
/**
* Creates an {@link Interceptor} which throws a specific exception (for all methods).
* @param e the exception
* @return an {@link Interceptor} which throws a specific exception (for all methods)
*/
public static Interceptor throwing(Exception e)
{
return new ThrowingInterceptor(ObjectProviderUtils.constant(e));
}
/**
* Creates an {@link Interceptor} which throws the exception provided by an object
* provider (for all methods).
* @param provider the object provider
* @return an {@link Interceptor} which throws the exception provided by an object
* provider (for all methods)
*/
public static Interceptor throwing(ObjectProvider<? extends Exception> provider)
{
return new ThrowingInterceptor(provider);
}
/**
* Creates an {@link Interceptor} that delegates to the specified {@link Invoker}.
* @param invoker delegate
* @return invoker {@link Interceptor}
*/
public static Interceptor invoking(Invoker invoker)
{
return new InvokerInterceptor(invoker);
}
//----------------------------------------------------------------------------------------------------------------------
// Constructors
//----------------------------------------------------------------------------------------------------------------------
private InterceptorUtils()
{
}
}