You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by fm...@apache.org on 2012/02/02 18:05:19 UTC
svn commit: r1239726 - in
/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src:
main/java/org/apache/chemistry/opencmis/client/runtime/
test/java/org/apache/chemistry/opencmis/client/runtime/
Author: fmui
Date: Thu Feb 2 17:05:19 2012
New Revision: 1239726
URL: http://svn.apache.org/viewvc?rev=1239726&view=rev
Log:
CMIS-498: Fixed apostrophe handing in QueryStatementImpl
Added:
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/test/java/org/apache/chemistry/opencmis/client/runtime/QueryStatementTest.java (with props)
Modified:
chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/QueryStatementImpl.java
Modified: chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/QueryStatementImpl.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/QueryStatementImpl.java?rev=1239726&r1=1239725&r2=1239726&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/QueryStatementImpl.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/QueryStatementImpl.java Thu Feb 2 17:05:19 2012
@@ -303,7 +303,8 @@ public class QueryStatementImpl implemen
} else {
inStr = !inStr;
}
- } else if (c == '?') {
+ sb.append(c);
+ } else if (c == '?' && !inStr) {
parameterIndex++;
String s = parametersMap.get(parameterIndex);
if (s == null) {
Added: chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/test/java/org/apache/chemistry/opencmis/client/runtime/QueryStatementTest.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/test/java/org/apache/chemistry/opencmis/client/runtime/QueryStatementTest.java?rev=1239726&view=auto
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/test/java/org/apache/chemistry/opencmis/client/runtime/QueryStatementTest.java (added)
+++ chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/test/java/org/apache/chemistry/opencmis/client/runtime/QueryStatementTest.java Thu Feb 2 17:05:19 2012
@@ -0,0 +1,116 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.chemistry.opencmis.client.runtime;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.GregorianCalendar;
+import java.util.HashMap;
+import java.util.TimeZone;
+
+import org.apache.chemistry.opencmis.client.api.QueryStatement;
+import org.apache.chemistry.opencmis.client.api.Session;
+import org.junit.Test;
+
+public class QueryStatementTest {
+
+ @Test
+ public void testStaticQueries() {
+ Session session = new SessionImpl(new HashMap<String, String>(), null, null, null);
+ String query;
+ QueryStatement st;
+
+ query = "SELECT cmis:name FROM cmis:folder";
+ st = new QueryStatementImpl(session, query);
+ assertEquals(query, st.toQueryString());
+
+ query = "SELECT * FROM cmis:document WHERE cmis:createdBy = \'admin\' AND abc:int = 42";
+ st = new QueryStatementImpl(session, query);
+ assertEquals(query, st.toQueryString());
+
+ query = "SELECT * FROM cmis:document WHERE abc:test = 'x?z'";
+ st = new QueryStatementImpl(session, query);
+ st.setString(1, "y");
+ assertEquals(query, st.toQueryString());
+ }
+
+ @Test
+ public void testWherePlacholder() {
+ Session session = new SessionImpl(new HashMap<String, String>(), null, null, null);
+ String query;
+ QueryStatement st;
+
+ // strings
+ query = "SELECT * FROM cmis:document WHERE abc:string = ?";
+ st = new QueryStatementImpl(session, query);
+ st.setString(1, "test");
+ assertEquals("SELECT * FROM cmis:document WHERE abc:string = 'test'", st.toQueryString());
+
+ query = "SELECT * FROM cmis:document WHERE abc:string = ?";
+ st = new QueryStatementImpl(session, query);
+ st.setString(1, "te'st");
+ assertEquals("SELECT * FROM cmis:document WHERE abc:string = 'te\\'st'", st.toQueryString());
+
+ // likes
+ query = "SELECT * FROM cmis:document WHERE abc:string LIKE ?";
+ st = new QueryStatementImpl(session, query);
+ st.setStringLike(1, "%test%");
+ assertEquals("SELECT * FROM cmis:document WHERE abc:string LIKE '%test%'", st.toQueryString());
+
+ query = "SELECT * FROM cmis:document WHERE abc:string LIKE ?";
+ st = new QueryStatementImpl(session, query);
+ st.setStringLike(1, "\\_test\\%blah\\\\blah");
+ assertEquals("SELECT * FROM cmis:document WHERE abc:string LIKE '\\_test\\%blah\\\\\\\\blah'",
+ st.toQueryString());
+
+ // ids
+ query = "SELECT * FROM cmis:document WHERE abc:id = ?";
+ st = new QueryStatementImpl(session, query);
+ st.setId(1, new ObjectIdImpl("123"));
+ assertEquals("SELECT * FROM cmis:document WHERE abc:id = '123'", st.toQueryString());
+
+ // booleans
+ query = "SELECT * FROM cmis:document WHERE abc:bool = ?";
+ st = new QueryStatementImpl(session, query);
+ st.setBoolean(1, true);
+ assertEquals("SELECT * FROM cmis:document WHERE abc:bool = TRUE", st.toQueryString());
+
+ // numbers
+ query = "SELECT * FROM cmis:document WHERE abc:int = ? AND abc:int2 = 123";
+ st = new QueryStatementImpl(session, query);
+ st.setNumber(1, 42);
+ assertEquals("SELECT * FROM cmis:document WHERE abc:int = 42 AND abc:int2 = 123", st.toQueryString());
+
+ // dateTime
+ query = "SELECT * FROM cmis:document WHERE abc:dateTime = TIMESTAMP ?";
+ GregorianCalendar cal = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
+ cal.clear();
+ cal.set(2012, 1, 2, 3, 4, 5);
+
+ st = new QueryStatementImpl(session, query);
+ st.setDateTime(1, cal);
+ assertEquals("SELECT * FROM cmis:document WHERE abc:dateTime = TIMESTAMP '2012-02-02T03:04:05.000Z'",
+ st.toQueryString());
+
+ st = new QueryStatementImpl(session, query);
+ st.setDateTime(1, cal.getTimeInMillis());
+ assertEquals("SELECT * FROM cmis:document WHERE abc:dateTime = TIMESTAMP '2012-02-02T03:04:05.000Z'",
+ st.toQueryString());
+ }
+}
Propchange: chemistry/opencmis/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/test/java/org/apache/chemistry/opencmis/client/runtime/QueryStatementTest.java
------------------------------------------------------------------------------
svn:eol-style = native