You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by ff...@apache.org on 2012/07/03 09:01:06 UTC
svn commit: r1356583 - in /cxf/branches/2.6.x-fixes: ./
api/src/main/java/org/apache/cxf/common/util/
api/src/main/java/org/apache/cxf/configuration/spring/
api/src/main/java/org/apache/cxf/endpoint/
api/src/main/java/org/apache/cxf/helpers/ rt/core/sr...
Author: ffang
Date: Tue Jul 3 07:01:04 2012
New Revision: 1356583
URL: http://svn.apache.org/viewvc?rev=1356583&view=rev
Log:
Merged revisions 1356579 via svnmerge from
https://svn.apache.org/repos/asf/cxf/trunk
........
r1356579 | ffang | 2012-07-03 14:34:44 +0800 (二, 03 7 2012) | 1 line
[CXF-4404]potential atomicity violation issues because of misusing concurrent collections
........
Modified:
cxf/branches/2.6.x-fixes/ (props changed)
cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/common/util/ASMHelper.java
cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/configuration/spring/AbstractSpringBeanMap.java
cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/endpoint/ClientImpl.java
cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/helpers/HttpHeaderHelper.java
cxf/branches/2.6.x-fixes/rt/core/src/main/java/org/apache/cxf/bus/osgi/CXFExtensionBundleListener.java
cxf/branches/2.6.x-fixes/rt/features/clustering/src/main/java/org/apache/cxf/clustering/FailoverTargetSelector.java
cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/ClassResourceInfo.java
cxf/branches/2.6.x-fixes/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/JSONProvider.java
cxf/branches/2.6.x-fixes/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPServerEngineFactory.java
cxf/branches/2.6.x-fixes/rt/transports/local/src/main/java/org/apache/cxf/transport/local/LocalTransportFactory.java
Propchange: cxf/branches/2.6.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/common/util/ASMHelper.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/common/util/ASMHelper.java?rev=1356583&r1=1356582&r2=1356583&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/common/util/ASMHelper.java (original)
+++ cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/common/util/ASMHelper.java Tue Jul 3 07:01:04 2012
@@ -294,7 +294,7 @@ public class ASMHelper {
}
public static class TypeHelperClassLoader extends ClassLoader {
- Map<String, Class<?>> defined = new ConcurrentHashMap<String, Class<?>>();
+ ConcurrentHashMap<String, Class<?>> defined = new ConcurrentHashMap<String, Class<?>>();
TypeHelperClassLoader(ClassLoader parent) {
super(parent);
@@ -303,7 +303,7 @@ public class ASMHelper {
return defined.get(name.replace('/', '.'));
}
- public synchronized Class<?> defineClass(String name, byte bytes[]) {
+ public Class<?> defineClass(String name, byte bytes[]) {
Class<?> ret = defined.get(name.replace('/', '.'));
if (ret != null) {
return ret;
@@ -323,7 +323,10 @@ public class ASMHelper {
}
ret = super.defineClass(name.replace('/', '.'), bytes, 0, bytes.length);
- defined.put(name.replace('/', '.'), ret);
+ Class<?> tmpRet = defined.putIfAbsent(name.replace('/', '.'), ret);
+ if (tmpRet != null) {
+ ret = tmpRet;
+ }
return ret;
}
}
Modified: cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/configuration/spring/AbstractSpringBeanMap.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/configuration/spring/AbstractSpringBeanMap.java?rev=1356583&r1=1356582&r2=1356583&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/configuration/spring/AbstractSpringBeanMap.java (original)
+++ cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/configuration/spring/AbstractSpringBeanMap.java Tue Jul 3 07:01:04 2012
@@ -47,8 +47,8 @@ abstract class AbstractSpringBeanMap<X,
protected Class<?> type;
protected String idsProperty;
protected String staticFieldName;
- protected Map<X, List<String>> idToBeanName = new ConcurrentHashMap<X, List<String>>();
- protected Map<X, V> putStore = new ConcurrentHashMap<X, V>(4, 0.75f, 4);
+ protected ConcurrentHashMap<X, List<String>> idToBeanName = new ConcurrentHashMap<X, List<String>>();
+ protected ConcurrentHashMap<X, V> putStore = new ConcurrentHashMap<X, V>(4, 0.75f, 4);
public void setApplicationContext(ApplicationContext ctx) throws BeansException {
this.context = ctx;
@@ -64,11 +64,11 @@ abstract class AbstractSpringBeanMap<X,
protected abstract void processBeans(ApplicationContext beanFactory);
- protected synchronized List<String> getBeanListForId(X id) {
- List<String> lst = idToBeanName.get(id);
- if (lst == null) {
- lst = new CopyOnWriteArrayList<String>();
- idToBeanName.put(id, lst);
+ protected List<String> getBeanListForId(X id) {
+ List<String> lst = new CopyOnWriteArrayList<String>();
+ List<String> tmpLst = idToBeanName.putIfAbsent(id, lst);
+ if (tmpLst != null) {
+ lst = tmpLst;
}
return lst;
}
@@ -151,11 +151,11 @@ abstract class AbstractSpringBeanMap<X,
for (String name : names) {
context.getBean(name);
}
- if (putStore.containsKey(key)) {
- return putStore.get(key);
- }
V v = (V)context.getBean(names.get(0));
- putStore.put((X)key, v);
+ V tmpV = putStore.putIfAbsent((X)key, v);
+ if (tmpV != null) {
+ v = tmpV;
+ }
idToBeanName.remove(key);
return v;
} else {
Modified: cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/endpoint/ClientImpl.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/endpoint/ClientImpl.java?rev=1356583&r1=1356582&r2=1356583&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/endpoint/ClientImpl.java (original)
+++ cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/endpoint/ClientImpl.java Tue Jul 3 07:01:04 2012
@@ -299,8 +299,8 @@ public class ClientImpl
}
public boolean isThreadLocalRequestContext() {
- if (currentRequestContext.containsKey(THREAD_LOCAL_REQUEST_CONTEXT)) {
- Object o = currentRequestContext.get(THREAD_LOCAL_REQUEST_CONTEXT);
+ Object o = currentRequestContext.get(THREAD_LOCAL_REQUEST_CONTEXT);
+ if (o != null) {
boolean local = false;
if (o instanceof Boolean) {
local = ((Boolean)o).booleanValue();
Modified: cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/helpers/HttpHeaderHelper.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/helpers/HttpHeaderHelper.java?rev=1356583&r1=1356582&r2=1356583&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/helpers/HttpHeaderHelper.java (original)
+++ cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/helpers/HttpHeaderHelper.java Tue Jul 3 07:01:04 2012
@@ -43,7 +43,7 @@ public final class HttpHeaderHelper {
private static final String ISO88591 = Charset.forName("ISO-8859-1").name();
private static Map<String, String> internalHeaders = new HashMap<String, String>();
- private static Map<String, String> encodings = new ConcurrentHashMap<String, String>();
+ private static ConcurrentHashMap<String, String> encodings = new ConcurrentHashMap<String, String>();
static {
internalHeaders.put("Accept-Encoding", "accept-encoding");
@@ -124,7 +124,10 @@ public final class HttpHeaderHelper {
} catch (UnsupportedCharsetException uce) {
return null;
}
- encodings.put(enc, newenc);
+ String tmpenc = encodings.putIfAbsent(enc, newenc);
+ if (tmpenc != null) {
+ newenc = tmpenc;
+ }
}
return newenc;
}
Modified: cxf/branches/2.6.x-fixes/rt/core/src/main/java/org/apache/cxf/bus/osgi/CXFExtensionBundleListener.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/rt/core/src/main/java/org/apache/cxf/bus/osgi/CXFExtensionBundleListener.java?rev=1356583&r1=1356582&r2=1356583&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/rt/core/src/main/java/org/apache/cxf/bus/osgi/CXFExtensionBundleListener.java (original)
+++ cxf/branches/2.6.x-fixes/rt/core/src/main/java/org/apache/cxf/bus/osgi/CXFExtensionBundleListener.java Tue Jul 3 07:01:04 2012
@@ -90,7 +90,10 @@ public class CXFExtensionBundleListener
List<Extension> list = extensions.get(bundle.getBundleId());
if (list == null) {
list = new CopyOnWriteArrayList<Extension>();
- extensions.put(bundle.getBundleId(), list);
+ List<Extension> preList = extensions.putIfAbsent(bundle.getBundleId(), list);
+ if (preList != null) {
+ list = preList;
+ }
}
for (Extension ext : orig) {
list.add(new OSGiExtension(ext, bundle));
Modified: cxf/branches/2.6.x-fixes/rt/features/clustering/src/main/java/org/apache/cxf/clustering/FailoverTargetSelector.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/rt/features/clustering/src/main/java/org/apache/cxf/clustering/FailoverTargetSelector.java?rev=1356583&r1=1356582&r2=1356583&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/rt/features/clustering/src/main/java/org/apache/cxf/clustering/FailoverTargetSelector.java (original)
+++ cxf/branches/2.6.x-fixes/rt/features/clustering/src/main/java/org/apache/cxf/clustering/FailoverTargetSelector.java Tue Jul 3 07:01:04 2012
@@ -48,7 +48,7 @@ public class FailoverTargetSelector exte
private static final Logger LOG =
LogUtils.getL7dLogger(FailoverTargetSelector.class);
- protected Map<InvocationKey, InvocationContext> inProgress
+ protected ConcurrentHashMap<InvocationKey, InvocationContext> inProgress
= new ConcurrentHashMap<InvocationKey, InvocationContext>();;
protected FailoverStrategy failoverStrategy;
@@ -73,7 +73,7 @@ public class FailoverTargetSelector exte
*
* @param message the current Message
*/
- public synchronized void prepare(Message message) {
+ public void prepare(Message message) {
Exchange exchange = message.getExchange();
InvocationKey key = new InvocationKey(exchange);
if (!inProgress.containsKey(key)) {
@@ -88,7 +88,7 @@ public class FailoverTargetSelector exte
bindingOperationInfo,
params,
context);
- inProgress.put(key, invocation);
+ inProgress.putIfAbsent(key, invocation);
}
}
Modified: cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/ClassResourceInfo.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/ClassResourceInfo.java?rev=1356583&r1=1356582&r2=1356583&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/ClassResourceInfo.java (original)
+++ cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/ClassResourceInfo.java Tue Jul 3 07:01:04 2012
@@ -133,7 +133,10 @@ public class ClassResourceInfo extends A
cri = ResourceUtils.createClassResourceInfo(typedClass, instanceClass, false, enableStatic,
getBus());
if (cri != null) {
- subResources.putIfAbsent(key, cri);
+ ClassResourceInfo tmpCri = subResources.putIfAbsent(key, cri);
+ if (tmpCri != null) {
+ cri = tmpCri;
+ }
}
}
return cri;
Modified: cxf/branches/2.6.x-fixes/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/JSONProvider.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/JSONProvider.java?rev=1356583&r1=1356582&r2=1356583&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/JSONProvider.java (original)
+++ cxf/branches/2.6.x-fixes/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/JSONProvider.java Tue Jul 3 07:01:04 2012
@@ -401,8 +401,8 @@ public class JSONProvider<T> extends Abs
}
String prefix = "";
if (!ignoreNamespaces) {
- if (namespaceMap.containsKey(qname.getNamespaceURI())) {
- prefix = namespaceMap.get(qname.getNamespaceURI());
+ prefix = namespaceMap.get(qname.getNamespaceURI());
+ if (prefix != null) {
if (prefix.length() > 0) {
prefix += ".";
}
@@ -410,6 +410,7 @@ public class JSONProvider<T> extends Abs
prefix = "ns1.";
}
}
+ prefix = (prefix == null) ? "" : prefix;
startTag = "{\"" + prefix + qname.getLocalPart() + "\":[";
endTag = "]}";
} else if (serializeAsArray) {
Modified: cxf/branches/2.6.x-fixes/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPServerEngineFactory.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPServerEngineFactory.java?rev=1356583&r1=1356582&r2=1356583&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPServerEngineFactory.java (original)
+++ cxf/branches/2.6.x-fixes/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPServerEngineFactory.java Tue Jul 3 07:01:04 2012
@@ -104,7 +104,7 @@ public class JettyHTTPServerEngineFactor
setBus(b);
}
- private static synchronized JettyHTTPServerEngine getOrCreate(JettyHTTPServerEngineFactory factory,
+ private static JettyHTTPServerEngine getOrCreate(JettyHTTPServerEngineFactory factory,
String host,
int port,
TLSServerParameters tlsParams) throws IOException, GeneralSecurityException {
@@ -115,8 +115,11 @@ public class JettyHTTPServerEngineFactor
if (tlsParams != null) {
ref.setTlsServerParameters(tlsParams);
}
- portMap.put(port, ref);
+ JettyHTTPServerEngine tmpRef = portMap.putIfAbsent(port, ref);
ref.finalizeConfig();
+ if (tmpRef != null) {
+ ref = tmpRef;
+ }
}
return ref;
}
Modified: cxf/branches/2.6.x-fixes/rt/transports/local/src/main/java/org/apache/cxf/transport/local/LocalTransportFactory.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/rt/transports/local/src/main/java/org/apache/cxf/transport/local/LocalTransportFactory.java?rev=1356583&r1=1356582&r2=1356583&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/rt/transports/local/src/main/java/org/apache/cxf/transport/local/LocalTransportFactory.java (original)
+++ cxf/branches/2.6.x-fixes/rt/transports/local/src/main/java/org/apache/cxf/transport/local/LocalTransportFactory.java Tue Jul 3 07:01:04 2012
@@ -127,7 +127,10 @@ public class LocalTransportFactory exten
d = destinations.get(addr);
if (d == null) {
d = createDestination(ei, reference);
- destinations.put(addr, d);
+ Destination tmpD = destinations.putIfAbsent(addr, d);
+ if (tmpD != null) {
+ d = tmpD;
+ }
}
return d;
}