Mark Struberg created OWB-768:
---------------------------------

             Summary: add support for proxying protected methods in 
NormalScopedProxyFactory 
                 Key: OWB-768
                 URL: https://issues.apache.org/jira/browse/OWB-768
             Project: OpenWebBeans
          Issue Type: Bug
          Components: Core
    Affects Versions: 1.2.0
            Reporter: Mark Struberg
            Assignee: Mark Struberg
             Fix For: 1.2.0


Our Normalscoping  proxies now roughly look like the following. For a 

public class User { 
  public String getName() { return "Hans"; }
}

we create a dynamic subclass with ASM:

public class User$OwbNormalscopeProxy extends User {
  private Provider<User> owbContextualInstanceProvider; // will be set by the 
proxy factory
  public String getName() {
    return owbContextualInstanceProvider.get().getName();
  }
}

The problem arises when getName() is not public but protected. In this case 
various access restrictions for protected variables kick in. For more details 
please read Java Langspec 3.0 ยง6.6.2 [1]. Especially take note of the second 
sample in 6.6.2.2.
There are additional restrictions listed in the JVM spec becaues 2 packages 
technically are only counted as equals if they get loaded by the same 
ClassLoader. 

For those reasons I currently disabled proxying of protected methods for now. 
The long time solution might be to use reflection to invoke the proxied 
methods. I will introduce a static method in the NormalScopeProxyFactory which 
will contain all the necessary handling and can easily be used concurrently by 
all generated proxies.




[1] http://docs.oracle.com/javase/specs/jls/se7/html/jls-6.html#jls-6.6.2

--
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