[1/2] cxf git commit: [CXF-6826] Cache MediaTypeHeaderProvider.valueOf results (with automatic cache cleanup when reaching a threshold)

2016-03-11 Thread asoldano
Repository: cxf
Updated Branches:
  refs/heads/3.1.x-fixes 810063b93 -> e4cab6471


[CXF-6826] Cache MediaTypeHeaderProvider.valueOf results (with automatic cache 
cleanup when reaching a threshold)


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/8a9f6cda
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/8a9f6cda
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/8a9f6cda

Branch: refs/heads/3.1.x-fixes
Commit: 8a9f6cdafc87a22314c805e995fc5d286fe8beed
Parents: 810063b
Author: Alessio Soldano 
Authored: Thu Mar 10 20:39:49 2016 +0100
Committer: Alessio Soldano 
Committed: Fri Mar 11 10:38:08 2016 +0100

--
 .../cxf/jaxrs/impl/MediaTypeHeaderProvider.java | 20 +++-
 1 file changed, 19 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/cxf/blob/8a9f6cda/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/MediaTypeHeaderProvider.java
--
diff --git 
a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/MediaTypeHeaderProvider.java
 
b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/MediaTypeHeaderProvider.java
index 39f484e..5d297b6 100644
--- 
a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/MediaTypeHeaderProvider.java
+++ 
b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/MediaTypeHeaderProvider.java
@@ -25,6 +25,7 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.StringTokenizer;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.logging.Logger;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -45,17 +46,34 @@ public class MediaTypeHeaderProvider implements 
HeaderDelegate {
 private static final Pattern COMPLEX_PARAMETERS = 
 Pattern.compile("(([\\w-]+=\"[^\"]*\")|([\\w-]+=[\\w-/\\+]+))");
 
+private static Map map = new ConcurrentHashMap();
+private static final int MAX_MT_CACHE_SIZE = 
+Integer.getInteger("org.apache.cxf.jaxrs.max_mediatype_cache_size", 
200);
+
 public MediaType fromString(String mType) {
 
 return valueOf(mType);
 }
 
 public static MediaType valueOf(String mType) {
-
 if (mType == null) {
 throw new IllegalArgumentException("Media type value can not be 
null");
 }
 
+MediaType result = map.get(mType);
+if (result == null) {
+result = internalValueOf(mType);
+final int size = map.size();
+if (size >= MAX_MT_CACHE_SIZE) {
+map.clear();
+}
+map.put(mType, result);
+}
+return result;
+}
+
+public static MediaType internalValueOf(String mType) {
+
 int i = mType.indexOf('/');
 if (i == -1) {
 return handleMediaTypeWithoutSubtype(mType.trim());



[1/2] cxf git commit: [CXF-6826] Cache MediaTypeHeaderProvider.valueOf results (with automatic cache cleanup when reaching a threshold)

2016-03-11 Thread asoldano
Repository: cxf
Updated Branches:
  refs/heads/master 15504ab90 -> 2196b6c2c


[CXF-6826] Cache MediaTypeHeaderProvider.valueOf results (with automatic cache 
cleanup when reaching a threshold)


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/fa973bd7
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/fa973bd7
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/fa973bd7

Branch: refs/heads/master
Commit: fa973bd7ab43099151f83beea351b80c7140eaab
Parents: 53aed2e
Author: Alessio Soldano 
Authored: Thu Mar 10 20:39:49 2016 +0100
Committer: Alessio Soldano 
Committed: Thu Mar 10 20:39:49 2016 +0100

--
 .../cxf/jaxrs/impl/MediaTypeHeaderProvider.java | 20 +++-
 1 file changed, 19 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/cxf/blob/fa973bd7/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/MediaTypeHeaderProvider.java
--
diff --git 
a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/MediaTypeHeaderProvider.java
 
b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/MediaTypeHeaderProvider.java
index 39f484e..5d297b6 100644
--- 
a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/MediaTypeHeaderProvider.java
+++ 
b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/MediaTypeHeaderProvider.java
@@ -25,6 +25,7 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.StringTokenizer;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.logging.Logger;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -45,17 +46,34 @@ public class MediaTypeHeaderProvider implements 
HeaderDelegate {
 private static final Pattern COMPLEX_PARAMETERS = 
 Pattern.compile("(([\\w-]+=\"[^\"]*\")|([\\w-]+=[\\w-/\\+]+))");
 
+private static Map map = new ConcurrentHashMap();
+private static final int MAX_MT_CACHE_SIZE = 
+Integer.getInteger("org.apache.cxf.jaxrs.max_mediatype_cache_size", 
200);
+
 public MediaType fromString(String mType) {
 
 return valueOf(mType);
 }
 
 public static MediaType valueOf(String mType) {
-
 if (mType == null) {
 throw new IllegalArgumentException("Media type value can not be 
null");
 }
 
+MediaType result = map.get(mType);
+if (result == null) {
+result = internalValueOf(mType);
+final int size = map.size();
+if (size >= MAX_MT_CACHE_SIZE) {
+map.clear();
+}
+map.put(mType, result);
+}
+return result;
+}
+
+public static MediaType internalValueOf(String mType) {
+
 int i = mType.indexOf('/');
 if (i == -1) {
 return handleMediaTypeWithoutSubtype(mType.trim());