Repository: cxf Updated Branches: refs/heads/3.1.x-fixes d1a1cc523 -> 9bbf7417e
[CXF-7447] Add doPrivs to avoid AccessControlExceptions Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/e70b0043 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/e70b0043 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/e70b0043 Branch: refs/heads/3.1.x-fixes Commit: e70b0043c8ca2ef9edb00a5af682ec3604c82bb8 Parents: d1a1cc5 Author: Andy McCright <j.andrew.mccri...@gmail.com> Authored: Mon Jul 17 15:10:19 2017 -0500 Committer: Daniel Kulp <dk...@apache.org> Committed: Fri Jul 28 12:08:34 2017 -0400 ---------------------------------------------------------------------- .../org/apache/cxf/jaxrs/provider/ProviderCache.java | 9 +++++++++ .../cxf/transport/http/URLConnectionHTTPConduit.java | 15 ++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cxf/blob/e70b0043/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderCache.java ---------------------------------------------------------------------- diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderCache.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderCache.java index 15fdd03..6d66b89 100644 --- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderCache.java +++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderCache.java @@ -19,6 +19,8 @@ package org.apache.cxf.jaxrs.provider; +import java.security.AccessController; +import java.security.PrivilegedAction; import java.util.Collections; import java.util.List; import java.util.Map; @@ -33,6 +35,13 @@ import org.apache.cxf.jaxrs.model.ProviderInfo; public class ProviderCache { private static final int MAX_PROVIDER_CACHE_SIZE = Integer.getInteger("org.apache.cxf.jaxrs.max_provider_cache_size", 100); + private static final int MAX_PROVIDER_CACHE_SIZE = + AccessController.doPrivileged(new PrivilegedAction<Integer>() { + @Override + public Integer run() { + return Integer.getInteger("org.apache.cxf.jaxrs.max_provider_cache_size", 100); + } }).intValue(); + private final Map<String, List<ProviderInfo<MessageBodyReader<?>>>> readerProviderCache = new ConcurrentHashMap<String, List<ProviderInfo<MessageBodyReader<?>>>>(); http://git-wip-us.apache.org/repos/asf/cxf/blob/e70b0043/rt/transports/http/src/main/java/org/apache/cxf/transport/http/URLConnectionHTTPConduit.java ---------------------------------------------------------------------- diff --git a/rt/transports/http/src/main/java/org/apache/cxf/transport/http/URLConnectionHTTPConduit.java b/rt/transports/http/src/main/java/org/apache/cxf/transport/http/URLConnectionHTTPConduit.java index 450ee9c..cf44c39 100644 --- a/rt/transports/http/src/main/java/org/apache/cxf/transport/http/URLConnectionHTTPConduit.java +++ b/rt/transports/http/src/main/java/org/apache/cxf/transport/http/URLConnectionHTTPConduit.java @@ -371,7 +371,20 @@ public class URLConnectionHTTPConduit extends HTTPConduit { } } protected int getResponseCode() throws IOException { - return connection.getResponseCode(); + try { + return AccessController.doPrivileged(new PrivilegedExceptionAction<Integer>() { + + @Override + public Integer run() throws IOException { + return connection.getResponseCode(); + } }); + } catch (PrivilegedActionException e) { + Throwable t = e.getCause(); + if (t instanceof IOException) { + throw (IOException) t; + } + throw new RuntimeException(t); + } } protected String getResponseMessage() throws IOException { Object o = this.outMessage.getContextualProperty(SET_REASON_PHRASE_NOT_NULL);