[ 
https://issues.apache.org/jira/browse/PROXY-10?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13459185#comment-13459185
 ] 

Matt Benson commented on PROXY-10:
----------------------------------

In the 2.0 branch {{ProxyFactory}} is in fact an interface.
                
> Introducing interfaces for ProxyFactory
> ---------------------------------------
>
>                 Key: PROXY-10
>                 URL: https://issues.apache.org/jira/browse/PROXY-10
>             Project: Commons Proxy
>          Issue Type: Improvement
>    Affects Versions: 1.0
>            Reporter: Brennan Spies
>            Priority: Minor
>
> As per my conversation with James Carman, I am creating an enhancement 
> request for Apache Commons Proxy (any version).
> I think that forcing all proxy factories to extend a concrete implementation, 
> ProxyFactory, is not an optimal design choice. The obvious disadvantages are 
> that all subclasses would inherit shared state, as well as potentially 
> undesired behavior. Extending a concrete class also makes it much easier to 
> break subclasses if ProxyFactory code changes.
> Given that the public API of this class could change, I am proposing that 3 
> new interfaces be introduced: DelegatorProxyFactory, InterceptorProxyFactory, 
> and InvokerProxyFactory. This would give flexibility to add new interfaces to 
> the library (to define new proxy types) without necessarily having to change 
> existing interfaces and break potential implementations in "the wild". 
> Existing implementations would, of course, implement all three interfaces.
> public interface DelegatorProxyFactory {
>      public Object createDelegatorProxy(ObjectProvider delegateProvider, 
> Class[] proxyClasses) ;
>      public Object createDelegatorProxy(ClassLoader classLoader, 
> ObjectProvider delegateProvider, Class[] proxyClasses) ; 
> }
> public interface InterceptorProxyFactory {
>      public Object createInterceptorProxy(Object target, Interceptor 
> interceptor, Class[] proxyClasses);
>      public Object createInterceptorProxy(ClassLoader classLoader, Object 
> target, Interceptor interceptor, Class[] proxyClasses) ;
> }
> public interface InvokerProxyFactory {
>      public Object createInvokerProxy(ClassLoader classLoader, Invoker 
> invoker, Class[] proxyClasses) ;
>      public Object createInvokerProxy(Invoker invoker, Class[] proxyClasses) ;
> }
> Depending on the timing of the move to Java 5 (version 2.0?), a type-safe 
> genericized method could be introduced with a non-array Class parameter.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to