You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by dk...@apache.org on 2013/12/29 16:26:00 UTC

svn commit: r1554037 - in /cayenne/main/trunk: cayenne-client/src/test/java/org/apache/cayenne/query/ClientSelectQueryExpressionTest.java cayenne-server/src/main/java/org/apache/cayenne/exp/parser/PatternMatchNode.java

Author: dkazimirchyk
Date: Sun Dec 29 15:25:59 2013
New Revision: 1554037

URL: http://svn.apache.org/r1554037
Log:
CAY-1799 ROP: Server can't deserialize LIKE expression with pattern already compiled

patch by Oleg Artyukevich

Added:
    cayenne/main/trunk/cayenne-client/src/test/java/org/apache/cayenne/query/ClientSelectQueryExpressionTest.java
Modified:
    cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/exp/parser/PatternMatchNode.java

Added: cayenne/main/trunk/cayenne-client/src/test/java/org/apache/cayenne/query/ClientSelectQueryExpressionTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-client/src/test/java/org/apache/cayenne/query/ClientSelectQueryExpressionTest.java?rev=1554037&view=auto
==============================================================================
--- cayenne/main/trunk/cayenne-client/src/test/java/org/apache/cayenne/query/ClientSelectQueryExpressionTest.java (added)
+++ cayenne/main/trunk/cayenne-client/src/test/java/org/apache/cayenne/query/ClientSelectQueryExpressionTest.java Sun Dec 29 15:25:59 2013
@@ -0,0 +1,70 @@
+/*****************************************************************
+ *   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.cayenne.query;
+
+import java.util.List;
+
+import org.apache.cayenne.CayenneContext;
+import org.apache.cayenne.di.Inject;
+import org.apache.cayenne.exp.Expression;
+import org.apache.cayenne.exp.ExpressionFactory;
+import org.apache.cayenne.test.jdbc.DBHelper;
+import org.apache.cayenne.test.jdbc.TableHelper;
+import org.apache.cayenne.testdo.mt.ClientMtTable1;
+import org.apache.cayenne.unit.di.client.ClientCase;
+import org.apache.cayenne.unit.di.server.UseServerRuntime;
+
+@UseServerRuntime(ClientCase.MULTI_TIER_PROJECT)
+public class ClientSelectQueryExpressionTest extends ClientCase{
+
+	@Inject
+	private CayenneContext context;
+
+	@Inject
+	private DBHelper dbHelper;
+
+	private TableHelper tMtTable1;
+
+	@Override
+	protected void setUpAfterInjection() throws Exception{
+		dbHelper.deleteAll("MT_TABLE1");
+
+		tMtTable1 = new TableHelper(dbHelper, "MT_TABLE1");
+		tMtTable1.setColumns("TABLE1_ID", "GLOBAL_ATTRIBUTE1", "SERVER_ATTRIBUTE1");
+	}
+
+	protected void createMtTable1DataSet() throws Exception {
+		for (int i = 1; i <= 20; i++) {
+			tMtTable1.insert(i, "globalAttr" + i, "serverAttr" + i);
+		}
+	}
+
+	public void testDoubleSelectLikeExpression() throws Exception{
+		createMtTable1DataSet();
+
+		List<ClientMtTable1> mtTable1List = context.select(SelectQuery.query(ClientMtTable1.class));
+
+		Expression exp = ExpressionFactory.likeExp(ClientMtTable1.GLOBAL_ATTRIBUTE1_PROPERTY, "globalAttr1%");
+		exp.filterObjects(mtTable1List);
+
+		List<ClientMtTable1> matchingMtTableList = context.select(SelectQuery.query(ClientMtTable1.class, exp));
+
+		assertEquals(11, matchingMtTableList.size());
+	}
+}

Modified: cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/exp/parser/PatternMatchNode.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/exp/parser/PatternMatchNode.java?rev=1554037&r1=1554036&r2=1554037&view=diff
==============================================================================
--- cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/exp/parser/PatternMatchNode.java (original)
+++ cayenne/main/trunk/cayenne-server/src/main/java/org/apache/cayenne/exp/parser/PatternMatchNode.java Sun Dec 29 15:25:59 2013
@@ -32,8 +32,8 @@ import org.apache.cayenne.util.Util;
  */
 public abstract class PatternMatchNode extends ConditionNode {
 
-    protected Pattern pattern;
-    protected boolean patternCompiled;
+    protected transient Pattern pattern;
+    protected transient boolean patternCompiled;
     protected boolean ignoringCase;
     protected char escapeChar;