Author: sergeyb
Date: Fri Feb  7 10:51:43 2014
New Revision: 1565616

URL: http://svn.apache.org/r1565616
Log:
[CXF-5542] Minor updates

Modified:
    
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/AbstractResourceInfo.java
    
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java
    
cxf/trunk/systests/jaxrs/src/test/resources/jaxrs_jackson_provider/WEB-INF/beans.xml

Modified: 
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/AbstractResourceInfo.java
URL: 
http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/AbstractResourceInfo.java?rev=1565616&r1=1565615&r2=1565616&view=diff
==============================================================================
--- 
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/AbstractResourceInfo.java
 (original)
+++ 
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/AbstractResourceInfo.java
 Fri Feb  7 10:51:43 2014
@@ -130,7 +130,6 @@ public abstract class AbstractResourceIn
     }
     
     private static ThreadLocalProxy<?> getFieldThreadLocalProxy(Field f, 
Object provider) {
-        ThreadLocalProxy<?> defaultValue = 
InjectionUtils.createThreadLocalProxy(f.getType()); 
         if (provider != null) {
             Object proxy = null;
             synchronized (provider) {
@@ -140,18 +139,17 @@ public abstract class AbstractResourceIn
                     // continue
                 }
                 if (!(proxy instanceof ThreadLocalProxy)) {
-                    proxy = defaultValue;
+                    proxy = InjectionUtils.createThreadLocalProxy(f.getType());
                     InjectionUtils.injectFieldValue(f, provider, proxy);
                 }
             }
             return (ThreadLocalProxy<?>)proxy;
         } else {
-            return defaultValue;
+            return InjectionUtils.createThreadLocalProxy(f.getType());
         }
     }
     
     private static ThreadLocalProxy<?> getMethodThreadLocalProxy(Method m, 
Object provider) {
-        ThreadLocalProxy<?> defaultValue = 
InjectionUtils.createThreadLocalProxy(m.getParameterTypes()[0]); 
         if (provider != null) {
             Object proxy = null;
             synchronized (provider) {
@@ -163,24 +161,27 @@ public abstract class AbstractResourceIn
                     // continue
                 }
                 if (!(proxy instanceof ThreadLocalProxy)) {
-                    proxy = defaultValue;
+                    proxy = 
InjectionUtils.createThreadLocalProxy(m.getParameterTypes()[0]);
                     InjectionUtils.injectThroughMethod(provider, m, proxy);
                 }
             }
             return (ThreadLocalProxy<?>)proxy;
         } else {
-            return defaultValue;
+            return 
InjectionUtils.createThreadLocalProxy(m.getParameterTypes()[0]);
         }
     }
     
     @SuppressWarnings("unchecked")
     private <T> Map<Class<?>, Map<T, ThreadLocalProxy<?>>> 
getProxyMap(Class<T> keyCls, String prop, boolean create) {
-        Object property = bus.getProperty(prop);
-        if (property == null && create) {
-            Map<Class<?>, Map<T, ThreadLocalProxy<?>>> map
-                = new ConcurrentHashMap<Class<?>, Map<T, 
ThreadLocalProxy<?>>>(2);
-            bus.setProperty(prop, map);
-            property = map;
+        Object property = null;
+        synchronized (bus) {
+            property = bus.getProperty(prop);
+            if (property == null && create) {
+                Map<Class<?>, Map<T, ThreadLocalProxy<?>>> map
+                    = new ConcurrentHashMap<Class<?>, Map<T, 
ThreadLocalProxy<?>>>(2);
+                bus.setProperty(prop, map);
+                property = map;
+            }
         }
         return (Map<Class<?>, Map<T, ThreadLocalProxy<?>>>)property;
     }
@@ -321,8 +322,9 @@ public abstract class AbstractResourceIn
     }
     
     private Map<Class<?>, List<Field>> addContextField(Map<Class<?>, 
List<Field>> theFields, Field f) {
-        
-        theFields = theFields == null ? new HashMap<Class<?>, List<Field>>() : 
theFields;
+        if (theFields == null) {
+            theFields = new HashMap<Class<?>, List<Field>>();
+        }
         
         List<Field> fields = theFields.get(serviceClass);
         if (fields == null) {
@@ -335,12 +337,13 @@ public abstract class AbstractResourceIn
         return theFields;
     }
     
-    private <T, V> void addToMap(Map<Class<?>, Map<T, V>> theFields, 
-                               T f, V proxy) {
-        Map<T, V> proxies = theFields.get(serviceClass);
+    private <T, V> void addToMap(Map<Class<?>, Map<T, V>> proxyMap,
+                                 T f, 
+                                 V proxy) {
+        Map<T, V> proxies = proxyMap.get(serviceClass);
         if (proxies == null) {
             proxies = new HashMap<T, V>();
-            theFields.put(serviceClass, proxies);
+            proxyMap.put(serviceClass, proxies);
         }
         if (!proxies.containsKey(f)) {
             proxies.put(f, proxy);

Modified: 
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java
URL: 
http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java?rev=1565616&r1=1565615&r2=1565616&view=diff
==============================================================================
--- 
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java
 (original)
+++ 
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java
 Fri Feb  7 10:51:43 2014
@@ -992,37 +992,35 @@ public final class InjectionUtils {
         if (!cri.contextsAvailable() || !cri.isSingleton()) {
             return;
         }
-        
-        for (Map.Entry<Class<?>, Method> entry : 
cri.getContextMethods().entrySet()) {
-            Method method = entry.getValue();
-            Object value = method.getParameterTypes()[0] == Application.class 
-                ? app : cri.getContextSetterProxy(method);
-            try {
-                synchronized (instance) {
+        synchronized (instance) {        
+            for (Map.Entry<Class<?>, Method> entry : 
cri.getContextMethods().entrySet()) {
+                Method method = entry.getValue();
+                Object value = method.getParameterTypes()[0] == 
Application.class 
+                    ? app : cri.getContextSetterProxy(method);
+                try {
                     if (value == InjectionUtils.extractFromMethod(instance, 
                                                                   
getGetterFromSetter(method), 
                                                                   false)) {
                         continue;
                     }
+                    
+                } catch (Throwable t) {
+                    // continue
                 }
-            } catch (Throwable t) {
-                // continue
+                InjectionUtils.injectThroughMethod(instance, method, value);
             }
-            InjectionUtils.injectThroughMethod(instance, method, value);
-        }
-        
-        for (Field f : cri.getContextFields()) {
-            Object value = f.getType() == Application.class ? app : 
cri.getContextFieldProxy(f);
-            try {
-                synchronized (instance) {
+            
+            for (Field f : cri.getContextFields()) {
+                Object value = f.getType() == Application.class ? app : 
cri.getContextFieldProxy(f);
+                try {
                     if (value == InjectionUtils.extractFieldValue(f, 
instance)) {
                         continue;
                     }
+                } catch (Throwable t) {
+                    // continue
                 }
-            } catch (Throwable t) {
-                // continue
+                InjectionUtils.injectFieldValue(f, instance, value);
             }
-            InjectionUtils.injectFieldValue(f, instance, value);
         }
     }
     

Modified: 
cxf/trunk/systests/jaxrs/src/test/resources/jaxrs_jackson_provider/WEB-INF/beans.xml
URL: 
http://svn.apache.org/viewvc/cxf/trunk/systests/jaxrs/src/test/resources/jaxrs_jackson_provider/WEB-INF/beans.xml?rev=1565616&r1=1565615&r2=1565616&view=diff
==============================================================================
--- 
cxf/trunk/systests/jaxrs/src/test/resources/jaxrs_jackson_provider/WEB-INF/beans.xml
 (original)
+++ 
cxf/trunk/systests/jaxrs/src/test/resources/jaxrs_jackson_provider/WEB-INF/beans.xml
 Fri Feb  7 10:51:43 2014
@@ -79,12 +79,13 @@ http://cxf.apache.org/schemas/jaxrs.xsd";
             <ref bean="gBookStore2"/>
         </jaxrs:serviceBeans>
         <jaxrs:providers>
-            <ref bean="jackson"/>
+            <ref bean="jackson2"/>
             <ref bean="jaxb"/>
         </jaxrs:providers>
     </jaxrs:server>
     
     <bean id="jackson" 
class="com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider"/>
+    <bean id="jackson2" 
class="com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider"/>
     <bean id="jaxb" class="org.apache.cxf.jaxrs.provider.JAXBElementProvider">
         <property name="unmarshallAsJaxbElement" value="true"/>
         <property name="marshallAsJaxbElement" value="true"/>


Reply via email to