package org.oddjob.framework; /** * Something the can create a wrapper for a component. * * @author rob * * @param <T> The type of the component to be wrapped. */ public interface WrapperFactory<T> { /** * Get the Interfaces the wrapper adds to the component. * * @param wrapped The component to be wrapped. * * @return */ public Class<?>[] wrappingInterfacesFor(T wrapped); /** * Create a wrapper. * * @param wrapped The component to be wrapped. * @param proxy The dynamic proxy. * * @return The Wrapper. */ public ComponentWrapper wrapperFor(T wrapped, Object proxy); }