You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2015/07/02 15:23:02 UTC

cxf git commit: [CXF-6483] Sorting ConfigurerImpl matchers

Repository: cxf
Updated Branches:
  refs/heads/master 28f5da32c -> 01fbddbf6


[CXF-6483] Sorting ConfigurerImpl matchers


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

Branch: refs/heads/master
Commit: 01fbddbf6c2e9a935a43f86079734daf27ee445d
Parents: 28f5da3
Author: Sergey Beryozkin <sb...@talend.com>
Authored: Thu Jul 2 14:22:43 2015 +0100
Committer: Sergey Beryozkin <sb...@talend.com>
Committed: Thu Jul 2 14:22:43 2015 +0100

----------------------------------------------------------------------
 .../apache/cxf/bus/blueprint/ConfigurerImpl.java  | 17 +++++++++++++++++
 .../cxf/configuration/spring/ConfigurerImpl.java  | 18 ++++++++++++++++++
 .../jaxrs/security/jaxrs-https-client2.xml        |  7 ++++---
 3 files changed, 39 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/01fbddbf/core/src/main/java/org/apache/cxf/bus/blueprint/ConfigurerImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/cxf/bus/blueprint/ConfigurerImpl.java b/core/src/main/java/org/apache/cxf/bus/blueprint/ConfigurerImpl.java
index 128fee4..b2a09b5 100644
--- a/core/src/main/java/org/apache/cxf/bus/blueprint/ConfigurerImpl.java
+++ b/core/src/main/java/org/apache/cxf/bus/blueprint/ConfigurerImpl.java
@@ -21,6 +21,8 @@ package org.apache.cxf.bus.blueprint;
 
 import java.lang.reflect.Method;
 import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -89,6 +91,10 @@ public class ConfigurerImpl implements Configurer {
                 }
             }
         }
+        Comparator<MatcherHolder> comp = new MatcherHolderComparator();
+        for (Map.Entry<String, List<MatcherHolder>> entry : wildCardBeanDefinitions.entrySet()) {
+            Collections.sort(entry.getValue(), comp);
+        }
     }
 
     public void configureBean(Object beanInstance) {
@@ -175,5 +181,16 @@ public class ConfigurerImpl implements Configurer {
       
         return beanName;
     }
+    private static class MatcherHolderComparator implements Comparator<MatcherHolder> {
 
+        @Override
+        public int compare(MatcherHolder mh1, MatcherHolder mh2) {
+            Integer literalCharsLen1 = mh1.wildCardId.replaceAll("\\*", "").length();
+            Integer literalCharsLen2 = mh2.wildCardId.replaceAll("\\*", "").length();
+            // The expression with more literal characters should end up on the top of the list
+            return literalCharsLen1.compareTo(literalCharsLen2) * -1;
+            
+        }
+        
+    }
 }

http://git-wip-us.apache.org/repos/asf/cxf/blob/01fbddbf/core/src/main/java/org/apache/cxf/configuration/spring/ConfigurerImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/cxf/configuration/spring/ConfigurerImpl.java b/core/src/main/java/org/apache/cxf/configuration/spring/ConfigurerImpl.java
index 0b59288..c481de3 100644
--- a/core/src/main/java/org/apache/cxf/configuration/spring/ConfigurerImpl.java
+++ b/core/src/main/java/org/apache/cxf/configuration/spring/ConfigurerImpl.java
@@ -21,6 +21,8 @@ package org.apache.cxf.configuration.spring;
 
 import java.lang.reflect.Method;
 import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
@@ -118,6 +120,10 @@ public class ConfigurerImpl extends BeanConfigurerSupport
                 }
             }
         }
+        Comparator<MatcherHolder> comp = new MatcherHolderComparator();
+        for (Map.Entry<String, List<MatcherHolder>> entry : wildCardBeanDefinitions.entrySet()) {
+            Collections.sort(entry.getValue(), comp);
+        }
     }
 
     public void configureBean(Object beanInstance) {
@@ -278,4 +284,16 @@ public class ConfigurerImpl extends BeanConfigurerSupport
     protected Set<ApplicationContext> getAppContexts() {
         return appContexts;
     }
+    private static class MatcherHolderComparator implements Comparator<MatcherHolder> {
+
+        @Override
+        public int compare(MatcherHolder mh1, MatcherHolder mh2) {
+            Integer literalCharsLen1 = mh1.wildCardId.replaceAll("\\*", "").length();
+            Integer literalCharsLen2 = mh2.wildCardId.replaceAll("\\*", "").length();
+            // The expression with more literal characters should end up on the top of the list
+            return literalCharsLen1.compareTo(literalCharsLen2) * -1;
+            
+        }
+        
+    }
 }

http://git-wip-us.apache.org/repos/asf/cxf/blob/01fbddbf/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/security/jaxrs-https-client2.xml
----------------------------------------------------------------------
diff --git a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/security/jaxrs-https-client2.xml b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/security/jaxrs-https-client2.xml
index b2464fc..f02b741 100644
--- a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/security/jaxrs-https-client2.xml
+++ b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/security/jaxrs-https-client2.xml
@@ -18,9 +18,10 @@ specific language governing permissions and limitations
 under the License.
 -->
 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:http="http://cxf.apache.org/transports/http/configuration" xmlns:httpj="http://cxf.apache.org/transports/http-jetty/configuration" xmlns:sec="http://cxf.apache.org/configuration/security" xsi:schemaLocation="         http://www.springframework.org/schema/beans                 http://www.springframework.org/schema/beans/spring-beans.xsd         http://cxf.apache.org/transports/http/configuration         http://cxf.apache.org/schemas/configuration/http-conf.xsd         http://cxf.apache.org/transports/http-jetty/configuration   http://cxf.apache.org/schemas/configuration/http-jetty.xsd         http://cxf.apache.org/configuration/security                http://cxf.apache.org/schemas/configuration/security.xsd         ">
-    <!-- -->
-    <!-- HTTP/S configuration for proxy & web clients -->
-    <!-- -->
+    <!-- this conduit is less specific and should not be selected  -->
+    <http:conduit name="*.http-conduit">
+        <http:client ConnectionTimeout="3000000" ReceiveTimeout="3000000"/>
+    </http:conduit>
     <http:conduit name="https://localhost:.*/bookstore/securebooks.*">
         <http:client ConnectionTimeout="3000000" ReceiveTimeout="3000000"/>
         <http:tlsClientParameters disableCNCheck="true">