com.cedarsoftware.util.ProxyFactory Maven / Gradle / Ivy
The newest version!
package com.cedarsoftware.util;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;
/**
* Handy utilities for working with Java arrays.
*
* @author Ken Partlow
*
* Copyright (c) Cedar Software LLC
*
* 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
*
* License
*
* 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.
*/
@Deprecated
public final class ProxyFactory
{
/**
* This class should be used statically
*/
private ProxyFactory() {}
/**
* Returns an instance of a proxy class for the specified interfaces
* that dispatches method invocations to the specified invocation
* handler.
*
* @param intf the interface for the proxy to implement
* @param h the invocation handler to dispatch method invocations to
* @return a proxy instance with the specified invocation handler of a
* proxy class that is defined by the specified class loader
* and that implements the specified interfaces
* @throws IllegalArgumentException if any of the restrictions on the
* parameters that may be passed to getProxyClass
* are violated
* @throws NullPointerException if the interfaces
array
* argument or any of its elements are null
, or
* if the invocation handler, h
, is
* null
*/
public static T create(Class intf, InvocationHandler h) {
return create(h.getClass().getClassLoader(), intf, h);
}
/**
* Returns an instance of a proxy class for the specified interfaces
* that dispatches method invocations to the specified invocation
* handler.
*
* @param loader the class loader to define the proxy class
* @param intf the interface for the proxy to implement
* @param h the invocation handler to dispatch method invocations to
* @return a proxy instance with the specified invocation handler of a
* proxy class that is defined by the specified class loader
* and that implements the specified interfaces
* @throws IllegalArgumentException if any of the restrictions on the
* parameters that may be passed to getProxyClass
* are violated
* @throws NullPointerException if the interfaces
array
* argument or any of its elements are null
, or
* if the invocation handler, h
, is
* null
*/
@SuppressWarnings("unchecked")
public static T create(ClassLoader loader, Class intf, InvocationHandler h) {
return (T)Proxy.newProxyInstance(loader, new Class[]{intf}, h);
}
}