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");