You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cxf.apache.org by Daniel Kulp <dk...@apache.org> on 2012/10/19 16:00:25 UTC
Re: svn commit: r1400082 - in /cxf/trunk: api/src/main/java/org/apache/cxf/configuration/spring/ rt/transports/http/src/main/java/org/apache/cxf/transport/http/ testutils/src/main/java/org/apache/cxf/testutil/common/
Colm,
We have a utility for this:
ReflectionUtil.setAccessible(….)
Ideally, the calls to cls.getDeclaredField would be replaced with calls to ReflectionUtil.getDeclaredField(…) as well for the same reason.
Dan
On Oct 19, 2012, at 9:14 AM, coheigea@apache.org wrote:
> Author: coheigea
> Date: Fri Oct 19 13:14:25 2012
> New Revision: 1400082
>
> URL: http://svn.apache.org/viewvc?rev=1400082&view=rev
> Log:
> Minor cleanup
>
> Modified:
> cxf/trunk/api/src/main/java/org/apache/cxf/configuration/spring/SpringBeanQNameMap.java
> cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/CXFAuthenticator.java
> cxf/trunk/testutils/src/main/java/org/apache/cxf/testutil/common/AbstractClientServerTestBase.java
>
> Modified: cxf/trunk/api/src/main/java/org/apache/cxf/configuration/spring/SpringBeanQNameMap.java
> URL: http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/configuration/spring/SpringBeanQNameMap.java?rev=1400082&r1=1400081&r2=1400082&view=diff
> ==============================================================================
> --- cxf/trunk/api/src/main/java/org/apache/cxf/configuration/spring/SpringBeanQNameMap.java (original)
> +++ cxf/trunk/api/src/main/java/org/apache/cxf/configuration/spring/SpringBeanQNameMap.java Fri Oct 19 13:14:25 2012
> @@ -19,6 +19,8 @@
> package org.apache.cxf.configuration.spring;
>
> import java.lang.reflect.Field;
> +import java.security.AccessController;
> +import java.security.PrivilegedAction;
> import java.util.ArrayList;
> import java.util.Collection;
>
> @@ -83,8 +85,14 @@ public class SpringBeanQNameMap<V>
> if (ids == null && staticFieldName != null) {
> Class<?> cls = context.getType(beanNames[i]);
> try {
> - Field f = cls.getDeclaredField(staticFieldName);
> - f.setAccessible(true);
> + final Field f = cls.getDeclaredField(staticFieldName);
> + AccessController.doPrivileged(new PrivilegedAction<Void>() {
> + public Void run() {
> + f.setAccessible(true);
> + return null;
> + }
> + });
> +
> Collection<QName> sids = CastUtils.cast((Collection<?>)f.get(null));
> if (sids != null) {
> ids = new ArrayList<QName>(sids);
>
> Modified: cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/CXFAuthenticator.java
> URL: http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/CXFAuthenticator.java?rev=1400082&r1=1400081&r2=1400082&view=diff
> ==============================================================================
> --- cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/CXFAuthenticator.java (original)
> +++ cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/CXFAuthenticator.java Fri Oct 19 13:14:25 2012
> @@ -24,6 +24,8 @@ import java.lang.reflect.Method;
> import java.lang.reflect.Modifier;
> import java.net.Authenticator;
> import java.net.PasswordAuthentication;
> +import java.security.AccessController;
> +import java.security.PrivilegedAction;
>
> import org.apache.cxf.message.Exchange;
> import org.apache.cxf.message.Message;
> @@ -40,9 +42,15 @@ public class CXFAuthenticator extends Au
>
> public CXFAuthenticator() {
> try {
> - for (Field f : Authenticator.class.getDeclaredFields()) {
> + for (final Field f : Authenticator.class.getDeclaredFields()) {
> if (f.getType().equals(Authenticator.class)) {
> - f.setAccessible(true);
> + AccessController.doPrivileged(new PrivilegedAction<Void>() {
> + public Void run() {
> + f.setAccessible(true);
> + return null;
> + }
> + });
> +
> wrapped = (Authenticator)f.get(null);
> }
> }
> @@ -66,14 +74,24 @@ public class CXFAuthenticator extends Au
> PasswordAuthentication auth = null;
> if (wrapped != null) {
> try {
> - for (Field f : Authenticator.class.getDeclaredFields()) {
> + for (final Field f : Authenticator.class.getDeclaredFields()) {
> if (!Modifier.isStatic(f.getModifiers())) {
> - f.setAccessible(true);
> + AccessController.doPrivileged(new PrivilegedAction<Void>() {
> + public Void run() {
> + f.setAccessible(true);
> + return null;
> + }
> + });
> f.set(wrapped, f.get(this));
> }
> }
> - Method m = Authenticator.class.getDeclaredMethod("getPasswordAuthentication");
> - m.setAccessible(true);
> + final Method m = Authenticator.class.getDeclaredMethod("getPasswordAuthentication");
> + AccessController.doPrivileged(new PrivilegedAction<Void>() {
> + public Void run() {
> + m.setAccessible(true);
> + return null;
> + }
> + });
> auth = (PasswordAuthentication)m.invoke(wrapped);
> } catch (Throwable t) {
> //ignore
>
> Modified: cxf/trunk/testutils/src/main/java/org/apache/cxf/testutil/common/AbstractClientServerTestBase.java
> URL: http://svn.apache.org/viewvc/cxf/trunk/testutils/src/main/java/org/apache/cxf/testutil/common/AbstractClientServerTestBase.java?rev=1400082&r1=1400081&r2=1400082&view=diff
> ==============================================================================
> --- cxf/trunk/testutils/src/main/java/org/apache/cxf/testutil/common/AbstractClientServerTestBase.java (original)
> +++ cxf/trunk/testutils/src/main/java/org/apache/cxf/testutil/common/AbstractClientServerTestBase.java Fri Oct 19 13:14:25 2012
> @@ -25,6 +25,8 @@ import java.lang.reflect.Method;
> import java.lang.reflect.Proxy;
> import java.net.MalformedURLException;
> import java.net.URL;
> +import java.security.AccessController;
> +import java.security.PrivilegedAction;
> import java.util.ArrayList;
> import java.util.List;
> import java.util.Map;
> @@ -147,8 +149,14 @@ public abstract class AbstractClientServ
> }
> if (c == null) {
> try {
> - Method m = o.getClass().getDeclaredMethod("getClient");
> - m.setAccessible(true);
> + final Method m = o.getClass().getDeclaredMethod("getClient");
> + AccessController.doPrivileged(new PrivilegedAction<Void>() {
> + public Void run() {
> + m.setAccessible(true);
> + return null;
> + }
> + });
> +
> c = (Client)m.invoke(o);
> } catch (Throwable t) {
> //ignore
>
>
--
Daniel Kulp
dkulp@apache.org - http://dankulp.com/blog
Talend Community Coder - http://coders.talend.com
Re: svn commit: r1400082 - in /cxf/trunk: api/src/main/java/org/apache/cxf/configuration/spring/
rt/transports/http/src/main/java/org/apache/cxf/transport/http/ testutils/src/main/java/org/apache/cxf/testutil/common/
Posted by Colm O hEigeartaigh <co...@apache.org>.
Ok thanks - I've fixed this (and for any other examples of setAccessible()
not using ReflectionUtil).
Colm.
On Fri, Oct 19, 2012 at 3:00 PM, Daniel Kulp <dk...@apache.org> wrote:
>
> Colm,
>
> We have a utility for this:
>
> ReflectionUtil.setAccessible(….)
>
> Ideally, the calls to cls.getDeclaredField would be replaced with calls
> to ReflectionUtil.getDeclaredField(…) as well for the same reason.
>
> Dan
>
>
>
> On Oct 19, 2012, at 9:14 AM, coheigea@apache.org wrote:
>
> > Author: coheigea
> > Date: Fri Oct 19 13:14:25 2012
> > New Revision: 1400082
> >
> > URL: http://svn.apache.org/viewvc?rev=1400082&view=rev
> > Log:
> > Minor cleanup
> >
> > Modified:
> >
> cxf/trunk/api/src/main/java/org/apache/cxf/configuration/spring/SpringBeanQNameMap.java
> >
> cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/CXFAuthenticator.java
> >
> cxf/trunk/testutils/src/main/java/org/apache/cxf/testutil/common/AbstractClientServerTestBase.java
> >
> > Modified:
> cxf/trunk/api/src/main/java/org/apache/cxf/configuration/spring/SpringBeanQNameMap.java
> > URL:
> http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/configuration/spring/SpringBeanQNameMap.java?rev=1400082&r1=1400081&r2=1400082&view=diff
> >
> ==============================================================================
> > ---
> cxf/trunk/api/src/main/java/org/apache/cxf/configuration/spring/SpringBeanQNameMap.java
> (original)
> > +++
> cxf/trunk/api/src/main/java/org/apache/cxf/configuration/spring/SpringBeanQNameMap.java
> Fri Oct 19 13:14:25 2012
> > @@ -19,6 +19,8 @@
> > package org.apache.cxf.configuration.spring;
> >
> > import java.lang.reflect.Field;
> > +import java.security.AccessController;
> > +import java.security.PrivilegedAction;
> > import java.util.ArrayList;
> > import java.util.Collection;
> >
> > @@ -83,8 +85,14 @@ public class SpringBeanQNameMap<V>
> > if (ids == null && staticFieldName != null) {
> > Class<?> cls = context.getType(beanNames[i]);
> > try {
> > - Field f = cls.getDeclaredField(staticFieldName);
> > - f.setAccessible(true);
> > + final Field f =
> cls.getDeclaredField(staticFieldName);
> > + AccessController.doPrivileged(new
> PrivilegedAction<Void>() {
> > + public Void run() {
> > + f.setAccessible(true);
> > + return null;
> > + }
> > + });
> > +
> > Collection<QName> sids =
> CastUtils.cast((Collection<?>)f.get(null));
> > if (sids != null) {
> > ids = new ArrayList<QName>(sids);
> >
> > Modified:
> cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/CXFAuthenticator.java
> > URL:
> http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/CXFAuthenticator.java?rev=1400082&r1=1400081&r2=1400082&view=diff
> >
> ==============================================================================
> > ---
> cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/CXFAuthenticator.java
> (original)
> > +++
> cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/CXFAuthenticator.java
> Fri Oct 19 13:14:25 2012
> > @@ -24,6 +24,8 @@ import java.lang.reflect.Method;
> > import java.lang.reflect.Modifier;
> > import java.net.Authenticator;
> > import java.net.PasswordAuthentication;
> > +import java.security.AccessController;
> > +import java.security.PrivilegedAction;
> >
> > import org.apache.cxf.message.Exchange;
> > import org.apache.cxf.message.Message;
> > @@ -40,9 +42,15 @@ public class CXFAuthenticator extends Au
> >
> > public CXFAuthenticator() {
> > try {
> > - for (Field f : Authenticator.class.getDeclaredFields()) {
> > + for (final Field f :
> Authenticator.class.getDeclaredFields()) {
> > if (f.getType().equals(Authenticator.class)) {
> > - f.setAccessible(true);
> > + AccessController.doPrivileged(new
> PrivilegedAction<Void>() {
> > + public Void run() {
> > + f.setAccessible(true);
> > + return null;
> > + }
> > + });
> > +
> > wrapped = (Authenticator)f.get(null);
> > }
> > }
> > @@ -66,14 +74,24 @@ public class CXFAuthenticator extends Au
> > PasswordAuthentication auth = null;
> > if (wrapped != null) {
> > try {
> > - for (Field f : Authenticator.class.getDeclaredFields())
> {
> > + for (final Field f :
> Authenticator.class.getDeclaredFields()) {
> > if (!Modifier.isStatic(f.getModifiers())) {
> > - f.setAccessible(true);
> > + AccessController.doPrivileged(new
> PrivilegedAction<Void>() {
> > + public Void run() {
> > + f.setAccessible(true);
> > + return null;
> > + }
> > + });
> > f.set(wrapped, f.get(this));
> > }
> > }
> > - Method m =
> Authenticator.class.getDeclaredMethod("getPasswordAuthentication");
> > - m.setAccessible(true);
> > + final Method m =
> Authenticator.class.getDeclaredMethod("getPasswordAuthentication");
> > + AccessController.doPrivileged(new
> PrivilegedAction<Void>() {
> > + public Void run() {
> > + m.setAccessible(true);
> > + return null;
> > + }
> > + });
> > auth = (PasswordAuthentication)m.invoke(wrapped);
> > } catch (Throwable t) {
> > //ignore
> >
> > Modified:
> cxf/trunk/testutils/src/main/java/org/apache/cxf/testutil/common/AbstractClientServerTestBase.java
> > URL:
> http://svn.apache.org/viewvc/cxf/trunk/testutils/src/main/java/org/apache/cxf/testutil/common/AbstractClientServerTestBase.java?rev=1400082&r1=1400081&r2=1400082&view=diff
> >
> ==============================================================================
> > ---
> cxf/trunk/testutils/src/main/java/org/apache/cxf/testutil/common/AbstractClientServerTestBase.java
> (original)
> > +++
> cxf/trunk/testutils/src/main/java/org/apache/cxf/testutil/common/AbstractClientServerTestBase.java
> Fri Oct 19 13:14:25 2012
> > @@ -25,6 +25,8 @@ import java.lang.reflect.Method;
> > import java.lang.reflect.Proxy;
> > import java.net.MalformedURLException;
> > import java.net.URL;
> > +import java.security.AccessController;
> > +import java.security.PrivilegedAction;
> > import java.util.ArrayList;
> > import java.util.List;
> > import java.util.Map;
> > @@ -147,8 +149,14 @@ public abstract class AbstractClientServ
> > }
> > if (c == null) {
> > try {
> > - Method m = o.getClass().getDeclaredMethod("getClient");
> > - m.setAccessible(true);
> > + final Method m =
> o.getClass().getDeclaredMethod("getClient");
> > + AccessController.doPrivileged(new
> PrivilegedAction<Void>() {
> > + public Void run() {
> > + m.setAccessible(true);
> > + return null;
> > + }
> > + });
> > +
> > c = (Client)m.invoke(o);
> > } catch (Throwable t) {
> > //ignore
> >
> >
>
> --
> Daniel Kulp
> dkulp@apache.org - http://dankulp.com/blog
> Talend Community Coder - http://coders.talend.com
>
>
--
Colm O hEigeartaigh
Talend Community Coder
http://coders.talend.com