Author: sergeyb
Date: Tue Dec 11 18:13:34 2012
New Revision: 1420315

URL: http://svn.apache.org/viewvc?rev=1420315&view=rev
Log:
Merged revisions 1420311 via svnmerge from 
https://svn.apache.org/repos/asf/cxf/trunk

........
  r1420311 | sergeyb | 2012-12-11 18:03:36 +0000 (Tue, 11 Dec 2012) | 1 line
  
  [CXF-4693] Making the String based converters thread-safe ready when needed
........

Added:
    
cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/visitor/
      - copied from r1420311, 
cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/visitor/
    
cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/visitor/AbstractSearchConditionVisitor.java
      - copied unchanged from r1420311, 
cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/visitor/AbstractSearchConditionVisitor.java
    
cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/visitor/AbstractUntypedSearchConditionVisitor.java
      - copied unchanged from r1420311, 
cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/visitor/AbstractUntypedSearchConditionVisitor.java
    
cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/visitor/LocalVisitorState.java
      - copied unchanged from r1420311, 
cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/visitor/LocalVisitorState.java
    
cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/visitor/SBThreadLocalVisitorState.java
      - copied unchanged from r1420311, 
cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/visitor/SBThreadLocalVisitorState.java
    
cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/visitor/ThreadLocalVisitorState.java
      - copied unchanged from r1420311, 
cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/visitor/ThreadLocalVisitorState.java
    
cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/visitor/VisitorState.java
      - copied unchanged from r1420311, 
cxf/trunk/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/visitor/VisitorState.java
Removed:
    
cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/AbstractSearchConditionVisitor.java
Modified:
    cxf/branches/2.6.x-fixes/   (props changed)
    
cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/jpa/AbstractJPATypedQueryVisitor.java
    
cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/ldap/LdapQueryVisitor.java
    
cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/sql/SQLPrinterVisitor.java
    
cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/sql/SQLPrinterVisitorTest.java

Propchange: cxf/branches/2.6.x-fixes/
------------------------------------------------------------------------------
    svn:mergeinfo = /cxf/trunk:1420311

Propchange: cxf/branches/2.6.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: 
cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/jpa/AbstractJPATypedQueryVisitor.java
URL: 
http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/jpa/AbstractJPATypedQueryVisitor.java?rev=1420315&r1=1420314&r2=1420315&view=diff
==============================================================================
--- 
cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/jpa/AbstractJPATypedQueryVisitor.java
 (original)
+++ 
cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/jpa/AbstractJPATypedQueryVisitor.java
 Tue Dec 11 18:13:34 2012
@@ -35,11 +35,11 @@ import javax.persistence.criteria.Path;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
 
-import org.apache.cxf.jaxrs.ext.search.AbstractSearchConditionVisitor;
 import org.apache.cxf.jaxrs.ext.search.ConditionType;
 import org.apache.cxf.jaxrs.ext.search.OrSearchCondition;
 import org.apache.cxf.jaxrs.ext.search.PrimitiveStatement;
 import org.apache.cxf.jaxrs.ext.search.SearchCondition;
+import org.apache.cxf.jaxrs.ext.search.visitor.AbstractSearchConditionVisitor;
 
 public abstract class AbstractJPATypedQueryVisitor<T, T1, E> 
     extends AbstractSearchConditionVisitor<T, E> {
@@ -239,5 +239,4 @@ public abstract class AbstractJPATypedQu
         return joinProperties == null ? false : joinProperties.contains(prop);
     }
     
-    
 }

Modified: 
cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/ldap/LdapQueryVisitor.java
URL: 
http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/ldap/LdapQueryVisitor.java?rev=1420315&r1=1420314&r2=1420315&view=diff
==============================================================================
--- 
cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/ldap/LdapQueryVisitor.java
 (original)
+++ 
cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/ldap/LdapQueryVisitor.java
 Tue Dec 11 18:13:34 2012
@@ -21,17 +21,15 @@ package org.apache.cxf.jaxrs.ext.search.
 import java.util.Collections;
 import java.util.Map;
 
-import org.apache.cxf.jaxrs.ext.search.AbstractSearchConditionVisitor;
 import org.apache.cxf.jaxrs.ext.search.ConditionType;
 import org.apache.cxf.jaxrs.ext.search.PrimitiveStatement;
 import org.apache.cxf.jaxrs.ext.search.SearchCondition;
+import 
org.apache.cxf.jaxrs.ext.search.visitor.AbstractUntypedSearchConditionVisitor;
 /**
  * Initial Implementation of http://tools.ietf.org/html/rfc4515
  */
-public class LdapQueryVisitor<T> extends AbstractSearchConditionVisitor<T, 
String> {
+public class LdapQueryVisitor<T> extends 
AbstractUntypedSearchConditionVisitor<T, String> {
 
-    private StringBuilder sb = new StringBuilder();
-    
     public LdapQueryVisitor() {
         this(Collections.<String, String>emptyMap());
     }
@@ -41,6 +39,11 @@ public class LdapQueryVisitor<T> extends
     }
     
     public void visit(SearchCondition<T> sc) {
+    
+        StringBuilder sb = getStringBuilder();
+        if (sb == null) {
+            sb = new StringBuilder();
+        }
         
         PrimitiveStatement statement = sc.getStatement();
         if (statement != null) {
@@ -67,15 +70,15 @@ public class LdapQueryVisitor<T> extends
             }
             
             for (SearchCondition<T> condition : sc.getSearchConditions()) {
+                saveStringBuilder(sb);
                 condition.accept(this);
+                sb = getStringBuilder();
             }
             sb.append(")");
         }
+        saveStringBuilder(sb);
     }
     
-    public String getQuery() {
-        return sb.toString();
-    }
     
     public static String conditionTypeToLdapOperator(ConditionType ct) {
         String op;

Modified: 
cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/sql/SQLPrinterVisitor.java
URL: 
http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/sql/SQLPrinterVisitor.java?rev=1420315&r1=1420314&r2=1420315&view=diff
==============================================================================
--- 
cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/sql/SQLPrinterVisitor.java
 (original)
+++ 
cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/sql/SQLPrinterVisitor.java
 Tue Dec 11 18:13:34 2012
@@ -23,15 +23,14 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.cxf.jaxrs.ext.search.AbstractSearchConditionVisitor;
 import org.apache.cxf.jaxrs.ext.search.PrimitiveStatement;
 import org.apache.cxf.jaxrs.ext.search.SearchCondition;
 import org.apache.cxf.jaxrs.ext.search.SearchUtils;
+import 
org.apache.cxf.jaxrs.ext.search.visitor.AbstractUntypedSearchConditionVisitor;
 
 
-public class SQLPrinterVisitor<T> extends AbstractSearchConditionVisitor<T, 
String> {
+public class SQLPrinterVisitor<T> extends 
AbstractUntypedSearchConditionVisitor<T, String> {
 
-    private StringBuilder sb;
     private String table;
     private String tableAlias;
     private List<String> columns;
@@ -56,19 +55,14 @@ public class SQLPrinterVisitor<T> extend
                              String tableAlias,
                              List<String> columns) {
         super(fieldMap);
+        
         this.columns = columns;
         this.table = table;
         this.tableAlias = tableAlias;
     }
     
     public void visit(SearchCondition<T> sc) {
-        
-        if (sb == null) {
-            sb = new StringBuilder();
-            if (table != null) {
-                SearchUtils.startSqlQuery(sb, table, tableAlias, columns);
-            }
-        }
+        StringBuilder sb = getStringBuilder();
         
         PrimitiveStatement statement = sc.getStatement();
         if (statement != null) {
@@ -93,19 +87,27 @@ public class SQLPrinterVisitor<T> extend
                     first = false;
                 }
                 sb.append("(");
+                saveStringBuilder(sb);
                 condition.accept(this);
+                sb = getStringBuilder();
                 sb.append(")");
             }
         }
+        
+        saveStringBuilder(sb);
     }
     
-
-    @Deprecated
-    public String getResult() {
-        return getQuery();
+    protected StringBuilder getStringBuilder() {
+        StringBuilder sb = super.getStringBuilder();
+        if (sb == null) {
+            sb = new StringBuilder();
+            if (table != null) {
+                SearchUtils.startSqlQuery(sb, table, tableAlias, columns);
+            }
+        }
+        return sb;
     }
     
-    public String getQuery() {
-        return sb == null ? null : sb.toString();
-    }
+    
+    
 }

Modified: 
cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/sql/SQLPrinterVisitorTest.java
URL: 
http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/sql/SQLPrinterVisitorTest.java?rev=1420315&r1=1420314&r2=1420315&view=diff
==============================================================================
--- 
cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/sql/SQLPrinterVisitorTest.java
 (original)
+++ 
cxf/branches/2.6.x-fixes/rt/rs/extensions/search/src/test/java/org/apache/cxf/jaxrs/ext/search/sql/SQLPrinterVisitorTest.java
 Tue Dec 11 18:13:34 2012
@@ -25,6 +25,7 @@ import org.apache.cxf.jaxrs.ext.search.S
 import org.apache.cxf.jaxrs.ext.search.SearchCondition;
 import org.apache.cxf.jaxrs.ext.search.SearchParseException;
 import org.apache.cxf.jaxrs.ext.search.fiql.FiqlParser;
+import org.apache.cxf.jaxrs.ext.search.visitor.SBThreadLocalVisitorState;
 
 import org.junit.Assert;
 import org.junit.Ignore;
@@ -105,6 +106,20 @@ public class SQLPrinterVisitorTest exten
     }
     
     @Test
+    public void testSQL4WithTLStateAndSingleThread() throws 
SearchParseException {
+        SearchCondition<Condition> filter = 
parser.parse("(name==test,level==18);(name==test1,level!=19)");
+        SQLPrinterVisitor<Condition> visitor = new 
SQLPrinterVisitor<Condition>("table");
+        visitor.setVisitorState(new SBThreadLocalVisitorState());
+        
+        filter.accept(visitor);
+        String sql = visitor.getQuery();
+        assertTrue(("SELECT * FROM table WHERE ((name = 'test') OR (level = 
'18'))"
+                   + " AND ((name = 'test1') OR (level <> '19'))").equals(sql)
+                   || ("SELECT * FROM table WHERE ((name = 'test1') OR (level 
<> '19'))"
+                   + " AND ((name = 'test') OR (level = '18'))").equals(sql));
+    }
+    
+    @Test
     public void testSQL5() throws SearchParseException {
         SearchCondition<Condition> filter = parser.parse("name==test");
         SQLPrinterVisitor<Condition> visitor = new 
SQLPrinterVisitor<Condition>("table");


Reply via email to