Author: nthaker
Date: Tue Nov 16 20:00:10 2010
New Revision: 1035769

URL: http://svn.apache.org/viewvc?rev=1035769&view=rev
Log:
Fix for JIRA AXIS2-4884

With this change @PostConstruct on non-public methods can now be invoked and we 
will not see java.lang.IllegalAccessException.

Modified:
    
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/lifecycle/BaseLifecycleManager.java

Modified: 
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/lifecycle/BaseLifecycleManager.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/lifecycle/BaseLifecycleManager.java?rev=1035769&r1=1035768&r2=1035769&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/lifecycle/BaseLifecycleManager.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/lifecycle/BaseLifecycleManager.java
 Tue Nov 16 20:00:10 2010
@@ -49,10 +49,32 @@ public abstract class BaseLifecycleManag
         }
     }
 
-    protected void invokePostConstruct(Method method) throws 
LifecycleException {
+    protected void invokePostConstruct(final Method method) throws 
LifecycleException {
         if (log.isDebugEnabled()) {
             log.debug("Invoking Method with @PostConstruct annotation");
         }
+        /*
+         * As per JSR-250 pre destroy and post construct can be
+         * public, protected, private or default encapsulation.
+         * I will check and make sure the methods are accessible
+         * before we invoke them.
+         * 
+         */
+        
+        try {
+            AccessController.doPrivileged(
+                    new PrivilegedExceptionAction() {
+                        public Object run() throws InvocationTargetException, 
IllegalAccessException {
+                            if(!method.isAccessible()){
+                                method.setAccessible(true);
+                            }
+                            return null;
+                        }
+                    }
+            );
+        } catch (PrivilegedActionException e) {
+            throw new LifecycleException(e.getException());
+        }
         invokeMethod(method, null);
         if (log.isDebugEnabled()) {
             log.debug("Completed invoke on Method with @PostConstruct 
annotation");


Reply via email to