Author: ash2k Date: Sun Jul 13 05:35:27 2014 New Revision: 1610114 URL: http://svn.apache.org/r1610114 Log: ONAMI-112 call setAccessible() inside doPrivileged()
Modified: onami/trunk/lifecycle/core/src/main/java/org/apache/onami/lifecycle/core/StageableMethod.java onami/trunk/logging/core/src/main/java/org/apache/onami/logging/core/AbstractLoggerInjector.java onami/trunk/test/src/main/java/org/apache/onami/test/OnamiRunner.java onami/trunk/test/src/main/java/org/apache/onami/test/OnamiSuite.java onami/trunk/test/src/main/java/org/apache/onami/test/mock/guice/MockMembersInjector.java Modified: onami/trunk/lifecycle/core/src/main/java/org/apache/onami/lifecycle/core/StageableMethod.java URL: http://svn.apache.org/viewvc/onami/trunk/lifecycle/core/src/main/java/org/apache/onami/lifecycle/core/StageableMethod.java?rev=1610114&r1=1610113&r2=1610114&view=diff ============================================================================== --- onami/trunk/lifecycle/core/src/main/java/org/apache/onami/lifecycle/core/StageableMethod.java (original) +++ onami/trunk/lifecycle/core/src/main/java/org/apache/onami/lifecycle/core/StageableMethod.java Sun Jul 13 05:35:27 2014 @@ -21,6 +21,8 @@ package org.apache.onami.lifecycle.core; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.security.AccessController; +import java.security.PrivilegedAction; /** * A {@link StageableMethod} is a reference to a stageable injectee @@ -55,10 +57,17 @@ final class StageableMethod { try { - if ( !stageMethod.isAccessible() ) + AccessController.doPrivileged( new PrivilegedAction<Void>() { - stageMethod.setAccessible( true ); - } + + @Override + public Void run() + { + stageMethod.setAccessible( true ); + return null; + } + + } ); stageMethod.invoke( object ); } catch ( InvocationTargetException e ) Modified: onami/trunk/logging/core/src/main/java/org/apache/onami/logging/core/AbstractLoggerInjector.java URL: http://svn.apache.org/viewvc/onami/trunk/logging/core/src/main/java/org/apache/onami/logging/core/AbstractLoggerInjector.java?rev=1610114&r1=1610113&r2=1610114&view=diff ============================================================================== --- onami/trunk/logging/core/src/main/java/org/apache/onami/logging/core/AbstractLoggerInjector.java (original) +++ onami/trunk/logging/core/src/main/java/org/apache/onami/logging/core/AbstractLoggerInjector.java Sun Jul 13 05:35:27 2014 @@ -23,6 +23,8 @@ import static java.lang.String.format; import static java.lang.reflect.Modifier.isFinal; import java.lang.reflect.Field; +import java.security.AccessController; +import java.security.PrivilegedAction; import com.google.inject.MembersInjector; import com.google.inject.ProvisionException; @@ -45,10 +47,19 @@ public abstract class AbstractLoggerInje * * @param field the logger field has to be injected. */ - public AbstractLoggerInjector( Field field ) + public AbstractLoggerInjector( final Field field ) { this.field = field; - this.field.setAccessible(true); + AccessController.doPrivileged( new PrivilegedAction<Void>() + { + + public Void run() + { + field.setAccessible( true ); + return null; + } + + } ); } /** Modified: onami/trunk/test/src/main/java/org/apache/onami/test/OnamiRunner.java URL: http://svn.apache.org/viewvc/onami/trunk/test/src/main/java/org/apache/onami/test/OnamiRunner.java?rev=1610114&r1=1610113&r2=1610114&view=diff ============================================================================== --- onami/trunk/test/src/main/java/org/apache/onami/test/OnamiRunner.java (original) +++ onami/trunk/test/src/main/java/org/apache/onami/test/OnamiRunner.java Sun Jul 13 05:35:27 2014 @@ -21,6 +21,8 @@ package org.apache.onami.test; import java.lang.reflect.Field; import java.lang.reflect.Modifier; +import java.security.AccessController; +import java.security.PrivilegedAction; import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedList; @@ -456,7 +458,16 @@ public class OnamiRunner LOGGER.finer( " inject static mock field: " + field.getName() ); } - field.setAccessible( true ); + AccessController.doPrivileged( new PrivilegedAction<Void>() + { + + public Void run() + { + field.setAccessible( true ); + return null; + } + + } ); field.set( field.getDeclaringClass(), mock ); } } Modified: onami/trunk/test/src/main/java/org/apache/onami/test/OnamiSuite.java URL: http://svn.apache.org/viewvc/onami/trunk/test/src/main/java/org/apache/onami/test/OnamiSuite.java?rev=1610114&r1=1610113&r2=1610114&view=diff ============================================================================== --- onami/trunk/test/src/main/java/org/apache/onami/test/OnamiSuite.java (original) +++ onami/trunk/test/src/main/java/org/apache/onami/test/OnamiSuite.java Sun Jul 13 05:35:27 2014 @@ -21,6 +21,8 @@ package org.apache.onami.test; import java.lang.reflect.Field; import java.lang.reflect.Modifier; +import java.security.AccessController; +import java.security.PrivilegedAction; import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedList; @@ -414,7 +416,16 @@ public class OnamiSuite LOGGER.finer( " inject static mock field: " + field.getName() ); } - field.setAccessible( true ); + AccessController.doPrivileged( new PrivilegedAction<Void>() + { + + public Void run() + { + field.setAccessible( true ); + return null; + } + + } ); field.set( field.getDeclaringClass(), mock ); } } Modified: onami/trunk/test/src/main/java/org/apache/onami/test/mock/guice/MockMembersInjector.java URL: http://svn.apache.org/viewvc/onami/trunk/test/src/main/java/org/apache/onami/test/mock/guice/MockMembersInjector.java?rev=1610114&r1=1610113&r2=1610114&view=diff ============================================================================== --- onami/trunk/test/src/main/java/org/apache/onami/test/mock/guice/MockMembersInjector.java (original) +++ onami/trunk/test/src/main/java/org/apache/onami/test/mock/guice/MockMembersInjector.java Sun Jul 13 05:35:27 2014 @@ -20,6 +20,8 @@ package org.apache.onami.test.mock.guice */ import java.lang.reflect.Field; +import java.security.AccessController; +import java.security.PrivilegedAction; import java.util.Map; import com.google.inject.MembersInjector; @@ -43,10 +45,20 @@ public class MockMembersInjector<T> * @param field the field that has to be injected. * @param mockedObjects the map of mocked object. */ - public MockMembersInjector( Field field, Map<Field, Object> mockedObjects ) + public MockMembersInjector( final Field field, Map<Field, Object> mockedObjects ) { this.field = field; this.mockedObjects = mockedObjects; + AccessController.doPrivileged( new PrivilegedAction<Void>() + { + + public Void run() + { + field.setAccessible( true ); + return null; + } + + } ); } /** @@ -54,9 +66,6 @@ public class MockMembersInjector<T> */ public void injectMembers( T t ) { - boolean wasAccessible = field.isAccessible(); - field.setAccessible( true ); - try { field.set( t, mockedObjects.get( field ) ); @@ -65,10 +74,6 @@ public class MockMembersInjector<T> { throw new RuntimeException( e ); } - finally - { - field.setAccessible( wasAccessible ); - } } }