You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by nt...@apache.org on 2017/11/10 16:06:43 UTC
[1/6] cayenne git commit: CAY-2276 PrePersist listener registered as
PostPersist
Repository: cayenne
Updated Branches:
refs/heads/STABLE-3.1 814de6546 -> 93e1c8c10
CAY-2276 PrePersist listener registered as PostPersist
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/e1667f6a
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/e1667f6a
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/e1667f6a
Branch: refs/heads/STABLE-3.1
Commit: e1667f6ab09d9a128fbb6845dc0a8a91d16062b3
Parents: 814de65
Author: Nikita Timofeev <st...@gmail.com>
Authored: Fri Nov 10 13:11:02 2017 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Fri Nov 10 13:11:02 2017 +0300
----------------------------------------------------------------------
docs/doc/src/main/resources/RELEASE-NOTES.txt | 3 ++-
.../org/apache/cayenne/reflect/LifecycleCallbackRegistry.java | 2 +-
2 files changed, 3 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/e1667f6a/docs/doc/src/main/resources/RELEASE-NOTES.txt
----------------------------------------------------------------------
diff --git a/docs/doc/src/main/resources/RELEASE-NOTES.txt b/docs/doc/src/main/resources/RELEASE-NOTES.txt
index 37c6509..3ee5c48 100644
--- a/docs/doc/src/main/resources/RELEASE-NOTES.txt
+++ b/docs/doc/src/main/resources/RELEASE-NOTES.txt
@@ -17,10 +17,11 @@ Bug Fixes Since 3.1.1:
CAY-2084 ObjectIdQuery - no cache access polymorphism
CAY-2101 DataContext.currentSnapshot() doesn't set snapshot entity name
CAY-2226 PK generation for Frontbase: PK cache size must be ignored
+CAY-2276 PrePersist listener registered as PostPersist in LifecycleCallbackRegistry.addListener(Class<?>, LifecycleListener)
----------------------------------
Release: 3.1.1
-Date: not yet released
+Date: 16 May 2016
----------------------------------
Changes/New Features Since 3.1
http://git-wip-us.apache.org/repos/asf/cayenne/blob/e1667f6a/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/LifecycleCallbackRegistry.java
----------------------------------------------------------------------
diff --git a/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/LifecycleCallbackRegistry.java b/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/LifecycleCallbackRegistry.java
index aa01ca8..e38ca99 100644
--- a/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/LifecycleCallbackRegistry.java
+++ b/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/LifecycleCallbackRegistry.java
@@ -128,7 +128,7 @@ public class LifecycleCallbackRegistry {
*/
public void addListener(Class<?> entityClass, LifecycleListener listener) {
addListener(LifecycleEvent.POST_ADD, entityClass, listener, "postAdd");
- addListener(LifecycleEvent.POST_PERSIST, entityClass, listener, "prePersist");
+ addListener(LifecycleEvent.PRE_PERSIST, entityClass, listener, "prePersist");
addListener(LifecycleEvent.POST_PERSIST, entityClass, listener, "postPersist");
addListener(LifecycleEvent.PRE_REMOVE, entityClass, listener, "preRemove");
addListener(LifecycleEvent.POST_REMOVE, entityClass, listener, "postRemove");
[4/6] cayenne git commit: CAY-1969 Malformed EJBQL Yields NPE
Posted by nt...@apache.org.
CAY-1969 Malformed EJBQL Yields NPE
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/9c66242a
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/9c66242a
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/9c66242a
Branch: refs/heads/STABLE-3.1
Commit: 9c66242a1a999dfca0aa62e394db73caa4e47b9b
Parents: 37faf1d
Author: Nikita Timofeev <st...@gmail.com>
Authored: Fri Nov 10 15:45:11 2017 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Fri Nov 10 15:45:11 2017 +0300
----------------------------------------------------------------------
docs/doc/src/main/resources/RELEASE-NOTES.txt | 1 +
.../apache/cayenne/ejbql/parser/Compiler.java | 3 +++
.../ejbql/EJBQLCompiledExpressionTest.java | 21 ++++++++++++++++++++
3 files changed, 25 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/9c66242a/docs/doc/src/main/resources/RELEASE-NOTES.txt
----------------------------------------------------------------------
diff --git a/docs/doc/src/main/resources/RELEASE-NOTES.txt b/docs/doc/src/main/resources/RELEASE-NOTES.txt
index 569ece0..a8966e5 100644
--- a/docs/doc/src/main/resources/RELEASE-NOTES.txt
+++ b/docs/doc/src/main/resources/RELEASE-NOTES.txt
@@ -14,6 +14,7 @@ Date: not yet released
Bug Fixes Since 3.1.1:
+CAY-1969 Malformed EJBQL Yields NPE
CAY-2084 ObjectIdQuery - no cache access polymorphism
CAY-2101 DataContext.currentSnapshot() doesn't set snapshot entity name
CAY-2137 When generating SQL from EJBQL, use "AND" to separate multiple join conditions
http://git-wip-us.apache.org/repos/asf/cayenne/blob/9c66242a/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ejbql/parser/Compiler.java
----------------------------------------------------------------------
diff --git a/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ejbql/parser/Compiler.java b/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ejbql/parser/Compiler.java
index 30f8189..7d37b80 100644
--- a/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ejbql/parser/Compiler.java
+++ b/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ejbql/parser/Compiler.java
@@ -312,6 +312,9 @@ class Compiler {
if (descriptor == null) {
descriptor = descriptorsById.get(expression.getText());
}
+ if(descriptor == null) {
+ throw new EJBQLException("the entity variable '" + id +"' does not refer to any entity in the FROM clause");
+ }
final EntityResult entityResult = new EntityResult(descriptor.getObjectClass());
final String prefix = "ec" + position + "_";
final int[] index = {
http://git-wip-us.apache.org/repos/asf/cayenne/blob/9c66242a/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/ejbql/EJBQLCompiledExpressionTest.java
----------------------------------------------------------------------
diff --git a/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/ejbql/EJBQLCompiledExpressionTest.java b/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/ejbql/EJBQLCompiledExpressionTest.java
index 82f6392..0dcea40 100644
--- a/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/ejbql/EJBQLCompiledExpressionTest.java
+++ b/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/ejbql/EJBQLCompiledExpressionTest.java
@@ -140,4 +140,25 @@ public class EJBQLCompiledExpressionTest extends ServerCase {
assertNotNull(select2.getEntityDescriptor("PaInTinGAlIaS"));
}
+ /**
+ * <p>If an expression has an 'entity variable' used in the SELECT clause then there should be a
+ * corresponding definition for the 'entity variable' in the FROM clause. This did, at some
+ * point throw an NPE.</p>
+ */
+ public void testMissingEntityBeanVariable() {
+ String ejbql = "SELECT b FROM Artist a";
+ EJBQLQuery query = new EJBQLQuery(ejbql);
+
+ try {
+ runtime.getContext().performQuery(query);
+ fail("expected an instance of " + EJBQLException.class.getSimpleName() + " to have been thrown.");
+ }
+ catch(EJBQLException e) {
+ assertEquals("the entity variable 'b' does not refer to any entity in the FROM clause", e.getUnlabeledMessage());
+ }
+ catch(Throwable th) {
+ fail("expected an instance of " + EJBQLException.class.getSimpleName() + " to have been thrown.");
+ }
+ }
+
}
[3/6] cayenne git commit: CAY-2175 AliasName used in EJBQLQuery is
not working if it contains mixed case
Posted by nt...@apache.org.
CAY-2175 AliasName used in EJBQLQuery is not working if it contains mixed case
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/37faf1d3
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/37faf1d3
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/37faf1d3
Branch: refs/heads/STABLE-3.1
Commit: 37faf1d392bc5cc64d2bb3a2028241857938aedf
Parents: e210860
Author: Nikita Timofeev <st...@gmail.com>
Authored: Fri Nov 10 15:44:52 2017 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Fri Nov 10 15:44:52 2017 +0300
----------------------------------------------------------------------
docs/doc/src/main/resources/RELEASE-NOTES.txt | 1 +
.../apache/cayenne/ejbql/parser/Compiler.java | 68 +++++++++++---------
.../ejbql/EJBQLCompiledExpressionTest.java | 32 +++++++++
3 files changed, 69 insertions(+), 32 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/37faf1d3/docs/doc/src/main/resources/RELEASE-NOTES.txt
----------------------------------------------------------------------
diff --git a/docs/doc/src/main/resources/RELEASE-NOTES.txt b/docs/doc/src/main/resources/RELEASE-NOTES.txt
index 19fd5a1..569ece0 100644
--- a/docs/doc/src/main/resources/RELEASE-NOTES.txt
+++ b/docs/doc/src/main/resources/RELEASE-NOTES.txt
@@ -17,6 +17,7 @@ Bug Fixes Since 3.1.1:
CAY-2084 ObjectIdQuery - no cache access polymorphism
CAY-2101 DataContext.currentSnapshot() doesn't set snapshot entity name
CAY-2137 When generating SQL from EJBQL, use "AND" to separate multiple join conditions
+CAY-2175 AliasName used in EJBQLQuery is not working if it contains mixed case
CAY-2226 PK generation for Frontbase: PK cache size must be ignored
CAY-2276 PrePersist listener registered as PostPersist in LifecycleCallbackRegistry.addListener(Class<?>, LifecycleListener)
http://git-wip-us.apache.org/repos/asf/cayenne/blob/37faf1d3/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ejbql/parser/Compiler.java
----------------------------------------------------------------------
diff --git a/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ejbql/parser/Compiler.java b/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ejbql/parser/Compiler.java
index ba8c9f6..30f8189 100644
--- a/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ejbql/parser/Compiler.java
+++ b/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ejbql/parser/Compiler.java
@@ -34,6 +34,7 @@ import org.apache.cayenne.ejbql.EJBQLExpressionVisitor;
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.DbJoin;
import org.apache.cayenne.map.DbRelationship;
+import org.apache.cayenne.map.Entity;
import org.apache.cayenne.map.EntityResolver;
import org.apache.cayenne.map.EntityResult;
import org.apache.cayenne.map.ObjAttribute;
@@ -87,49 +88,48 @@ class Compiler {
Map<EJBQLPath, Integer> pathsInSelect = new HashMap<EJBQLPath, Integer>();
- if (parsed != null) {
- for (int i = 0; i < parsed.getChildrenCount(); i++) {
- if (parsed.getChild(i) instanceof EJBQLSelectClause) {
+ for (int i = 0; i < parsed.getChildrenCount(); i++) {
+ if (parsed.getChild(i) instanceof EJBQLSelectClause) {
- EJBQLExpression parsedTemp = parsed.getChild(i);
- boolean stop = false;
+ EJBQLExpression parsedTemp = parsed.getChild(i);
+ boolean stop = false;
- while (parsedTemp.getChildrenCount() > 0 && !stop) {
- EJBQLExpression newParsedTemp = null;
- for (int j = 0; j < parsedTemp.getChildrenCount(); j++) {
- if (parsedTemp.getChild(j) instanceof EJBQLSelectExpression) {
- for (int k = 0; k < parsedTemp
- .getChild(j)
- .getChildrenCount(); k++) {
+ while (parsedTemp.getChildrenCount() > 0 && !stop) {
+ EJBQLExpression newParsedTemp = null;
+ for (int j = 0; j < parsedTemp.getChildrenCount(); j++) {
+ if (parsedTemp.getChild(j) instanceof EJBQLSelectExpression) {
+ for (int k = 0; k < parsedTemp
+ .getChild(j)
+ .getChildrenCount(); k++) {
- if (parsedTemp.getChild(j).getChild(k) instanceof EJBQLPath) {
- pathsInSelect.put((EJBQLPath) parsedTemp
- .getChild(j)
- .getChild(k), j);
+ if (parsedTemp.getChild(j).getChild(k) instanceof EJBQLPath) {
+ pathsInSelect.put((EJBQLPath) parsedTemp
+ .getChild(j)
+ .getChild(k), j);
- }
}
}
+ }
+ else {
+ if (parsedTemp.getChild(j).getChildrenCount() == 0) {
+ stop = true;
+ }
else {
- if (parsedTemp.getChild(j).getChildrenCount() == 0) {
- stop = true;
- }
- else {
- newParsedTemp = parsedTemp.getChild(j);
- }
+ newParsedTemp = parsedTemp.getChild(j);
}
}
+ }
- if (!stop && newParsedTemp != null) {
- parsedTemp = newParsedTemp;
- }
- else {
- stop = true;
- }
+ if (!stop && newParsedTemp != null) {
+ parsedTemp = newParsedTemp;
+ }
+ else {
+ stop = true;
}
}
}
}
+
// postprocess paths, now that all id vars are resolved
if (paths != null) {
for (EJBQLPath path : paths) {
@@ -147,6 +147,10 @@ class Compiler {
for (int i = 1; i < path.getChildrenCount(); i++) {
String pathChunk = path.getChild(i).getText();
+ if(pathChunk.endsWith(Entity.OUTER_JOIN_INDICATOR)) {
+ pathChunk = pathChunk.substring(0, pathChunk.length() - 1);
+ }
+
buffer.append('.').append(pathChunk);
Property property = descriptor.getProperty(pathChunk);
@@ -173,7 +177,7 @@ class Compiler {
Integer integer = pathsInSelect.get(path);
if (integer != null) {
resultComponents.remove(integer.intValue());
- resultComponents.add(pathsInSelect.get(path).intValue(), ident);
+ resultComponents.add(integer, ident);
rootId = pathRelationshipString;
}
}
@@ -530,7 +534,7 @@ class Compiler {
@Override
public boolean visitPath(EJBQLExpression expression, int finishedChildIndex) {
if (finishedChildIndex + 1 < expression.getChildrenCount()) {
- this.id = ((EJBQLPath) expression).getId();
+ this.id = normalizeIdPath(((EJBQLPath) expression).getId());
this.descriptor = descriptorsById.get(id);
if (descriptor == null) {
@@ -560,7 +564,7 @@ class Compiler {
public boolean visitIdentifier(EJBQLExpression expression) {
if (incoming != null) {
- String aliasId = expression.getText();
+ String aliasId = expression.getText().toLowerCase();
// map id variable to class descriptor
ClassDescriptor old = descriptorsById.put(aliasId, descriptor);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/37faf1d3/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/ejbql/EJBQLCompiledExpressionTest.java
----------------------------------------------------------------------
diff --git a/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/ejbql/EJBQLCompiledExpressionTest.java b/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/ejbql/EJBQLCompiledExpressionTest.java
index 5e16edb..82f6392 100644
--- a/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/ejbql/EJBQLCompiledExpressionTest.java
+++ b/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/ejbql/EJBQLCompiledExpressionTest.java
@@ -21,6 +21,7 @@ package org.apache.cayenne.ejbql;
import org.apache.cayenne.configuration.server.ServerRuntime;
import org.apache.cayenne.di.Inject;
import org.apache.cayenne.map.EntityResolver;
+import org.apache.cayenne.query.EJBQLQuery;
import org.apache.cayenne.unit.di.server.ServerCase;
import org.apache.cayenne.unit.di.server.UseServerRuntime;
@@ -108,4 +109,35 @@ public class EJBQLCompiledExpressionTest extends ServerCase {
assertNotNull(select3.getEntityDescriptor("a"));
assertNotNull(select3.getEntityDescriptor("A"));
}
+
+ /**
+ * CAY-2175
+ */
+ public void testGetEntityDescriptorCaseSensitivityInJoin() {
+ EntityResolver resolver = runtime.getDataDomain().getEntityResolver();
+ EJBQLParser parser = EJBQLParserFactory.getParser();
+
+ EJBQLCompiledExpression select1 = parser.compile(
+ "SELECT artistAlias FROM Artist artistAlias " +
+ "WHERE artistAlias.artistName = 'Abcd'",
+ resolver
+ );
+ assertNotNull(select1.getEntityDescriptor("artistalias"));
+ assertNotNull(select1.getEntityDescriptor("artistAlias"));
+ assertNotNull(select1.getEntityDescriptor("ArTiStAlIaS"));
+
+ EJBQLCompiledExpression select2 = parser.compile(
+ "SELECT artistalias from Artist AS ArtistAlias JOIN artistalias.paintingArray as PaintingAlias " +
+ "where aRtistALiaS.artistName = 'Abcd'",
+ resolver
+ );
+ assertNotNull(select2.getEntityDescriptor("artistalias"));
+ assertNotNull(select2.getEntityDescriptor("artistAlias"));
+ assertNotNull(select2.getEntityDescriptor("ArTiStAlIaS"));
+
+ assertNotNull(select2.getEntityDescriptor("PaintingAlias"));
+ assertNotNull(select2.getEntityDescriptor("paintingalias"));
+ assertNotNull(select2.getEntityDescriptor("PaInTinGAlIaS"));
+ }
+
}
[2/6] cayenne git commit: CAY-2137 When generating SQL from EJBQL,
use "AND" to separate multiple join conditions
Posted by nt...@apache.org.
CAY-2137 When generating SQL from EJBQL, use "AND" to separate multiple join conditions
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/e2108602
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/e2108602
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/e2108602
Branch: refs/heads/STABLE-3.1
Commit: e21086027aeda9e2cba44bf8ec1a08ddb3ab0200
Parents: e1667f6
Author: Nikita Timofeev <st...@gmail.com>
Authored: Fri Nov 10 15:32:44 2017 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Fri Nov 10 15:32:44 2017 +0300
----------------------------------------------------------------------
docs/doc/src/main/resources/RELEASE-NOTES.txt | 1 +
.../cayenne/access/jdbc/EJBQLJoinAppender.java | 2 +-
.../apache/cayenne/query/EJBQLQueryTest.java | 28 ++++++++++++++++++++
3 files changed, 30 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/e2108602/docs/doc/src/main/resources/RELEASE-NOTES.txt
----------------------------------------------------------------------
diff --git a/docs/doc/src/main/resources/RELEASE-NOTES.txt b/docs/doc/src/main/resources/RELEASE-NOTES.txt
index 3ee5c48..19fd5a1 100644
--- a/docs/doc/src/main/resources/RELEASE-NOTES.txt
+++ b/docs/doc/src/main/resources/RELEASE-NOTES.txt
@@ -16,6 +16,7 @@ Bug Fixes Since 3.1.1:
CAY-2084 ObjectIdQuery - no cache access polymorphism
CAY-2101 DataContext.currentSnapshot() doesn't set snapshot entity name
+CAY-2137 When generating SQL from EJBQL, use "AND" to separate multiple join conditions
CAY-2226 PK generation for Frontbase: PK cache size must be ignored
CAY-2276 PrePersist listener registered as PostPersist in LifecycleCallbackRegistry.addListener(Class<?>, LifecycleListener)
http://git-wip-us.apache.org/repos/asf/cayenne/blob/e2108602/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLJoinAppender.java
----------------------------------------------------------------------
diff --git a/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLJoinAppender.java b/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLJoinAppender.java
index 0334dbb..fe47ba3 100644
--- a/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLJoinAppender.java
+++ b/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLJoinAppender.java
@@ -210,7 +210,7 @@ public class EJBQLJoinAppender {
}
while (it.hasNext()) {
- context.append(", ");
+ context.append(" AND ");
DbJoin dbJoin = it.next();
context
.append(sourceAlias)
http://git-wip-us.apache.org/repos/asf/cayenne/blob/e2108602/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/EJBQLQueryTest.java
----------------------------------------------------------------------
diff --git a/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/EJBQLQueryTest.java b/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/EJBQLQueryTest.java
index 072a17a..d0ca97e 100644
--- a/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/EJBQLQueryTest.java
+++ b/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/query/EJBQLQueryTest.java
@@ -34,6 +34,8 @@ import org.apache.cayenne.map.EntityResolver;
import org.apache.cayenne.test.jdbc.DBHelper;
import org.apache.cayenne.test.jdbc.TableHelper;
import org.apache.cayenne.testdo.testmap.Artist;
+import org.apache.cayenne.testdo.testmap.CompoundFkTestEntity;
+import org.apache.cayenne.testdo.testmap.CompoundPkTestEntity;
import org.apache.cayenne.testdo.testmap.Painting;
import org.apache.cayenne.unit.di.DataChannelInterceptor;
import org.apache.cayenne.unit.di.UnitTestClosure;
@@ -403,4 +405,30 @@ public class EJBQLQueryTest extends ServerCase {
+ "a.artistName = a.artistName");
assertTrue(context.performQuery(query).size() > 0);
}
+
+ private void createCompoundPkDataSet() throws Exception {
+ TableHelper tCompoundPk = new TableHelper(dbHelper, "COMPOUND_PK_TEST");
+ tCompoundPk.setColumns("KEY1", "KEY2", "NAME");
+
+ TableHelper tCompoundFk = new TableHelper(dbHelper, "COMPOUND_FK_TEST");
+ tCompoundFk.setColumns("F_KEY1", "F_KEY2", "NAME", "PKEY");
+
+ tCompoundPk.insert("a", "b", "abc");
+ tCompoundPk.insert("c", "d", "cde");
+
+ tCompoundFk.insert("a", "b", "test", 1);
+ tCompoundFk.insert("c", "d", "nottest", 2);
+ }
+
+ public void testEJBQLCompoundJoin() throws Exception {
+ createCompoundPkDataSet();
+
+ EJBQLQuery query = new EJBQLQuery(
+ "select f from CompoundFkTestEntity f inner join f.toCompoundPk p where p.name like 'a%'");
+ List res = context.performQuery(query);
+ assertEquals(1, res.size());
+ assertTrue(res.get(0) instanceof CompoundFkTestEntity);
+ assertEquals("test", ((CompoundFkTestEntity)res.get(0)).getName());
+ }
+
}
[5/6] cayenne git commit: Cleanup
Posted by nt...@apache.org.
Cleanup
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/8933c799
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/8933c799
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/8933c799
Branch: refs/heads/STABLE-3.1
Commit: 8933c799de5ba31f254e85c1d5c5f1a01dc08a8f
Parents: 9c66242
Author: Nikita Timofeev <st...@gmail.com>
Authored: Fri Nov 10 16:17:26 2017 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Fri Nov 10 16:17:26 2017 +0300
----------------------------------------------------------------------
.../src/main/java/org/apache/cayenne/ejbql/parser/Compiler.java | 4 ----
1 file changed, 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/8933c799/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ejbql/parser/Compiler.java
----------------------------------------------------------------------
diff --git a/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ejbql/parser/Compiler.java b/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ejbql/parser/Compiler.java
index 7d37b80..913cad2 100644
--- a/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ejbql/parser/Compiler.java
+++ b/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ejbql/parser/Compiler.java
@@ -147,10 +147,6 @@ class Compiler {
for (int i = 1; i < path.getChildrenCount(); i++) {
String pathChunk = path.getChild(i).getText();
- if(pathChunk.endsWith(Entity.OUTER_JOIN_INDICATOR)) {
- pathChunk = pathChunk.substring(0, pathChunk.length() - 1);
- }
-
buffer.append('.').append(pathChunk);
Property property = descriptor.getProperty(pathChunk);
[6/6] cayenne git commit: Fix failing tests + cleanup
Posted by nt...@apache.org.
Fix failing tests + cleanup
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/93e1c8c1
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/93e1c8c1
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/93e1c8c1
Branch: refs/heads/STABLE-3.1
Commit: 93e1c8c107116da3740a8dab51ad125dbc792c71
Parents: 8933c79
Author: Nikita Timofeev <st...@gmail.com>
Authored: Fri Nov 10 19:05:39 2017 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Fri Nov 10 19:05:39 2017 +0300
----------------------------------------------------------------------
.../access/DataContextEJBQLInheritanceTest.java | 9 +++++--
...ataContextObjectIdQuery_PolymorphicTest.java | 27 +++++++++++++++++++-
.../modeler/cayennemodeler-strings.properties | 2 +-
rat.sh | 3 ++-
4 files changed, 36 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/93e1c8c1/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLInheritanceTest.java
----------------------------------------------------------------------
diff --git a/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLInheritanceTest.java b/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLInheritanceTest.java
index d43abb6..b709b7c 100644
--- a/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLInheritanceTest.java
+++ b/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLInheritanceTest.java
@@ -43,8 +43,6 @@ public class DataContextEJBQLInheritanceTest extends ServerCase {
@Override
protected void setUpAfterInjection() throws Exception {
- dbHelper.deleteAll("PERSON");
-
TableHelper person = new TableHelper(dbHelper, "PERSON");
person.setColumns("PERSON_ID", "NAME", "PERSON_TYPE", "SALARY")
.setColumnTypes(
@@ -53,6 +51,13 @@ public class DataContextEJBQLInheritanceTest extends ServerCase {
Types.CHAR,
Types.FLOAT);
+ person.update().set("DEPARTMENT_ID", null, Types.INTEGER).execute();
+ dbHelper.deleteAll("ADDRESS");
+ dbHelper.deleteAll("DEPARTMENT");
+ dbHelper.deleteAll("PERSON_NOTES");
+ dbHelper.deleteAll("PERSON");
+ dbHelper.deleteAll("CLIENT_COMPANY");
+
person.insert(1, "a", "EE", 20000);
person.insert(2, "b", "EE", 25000);
person.insert(4, "c", "EM", 30000);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/93e1c8c1/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextObjectIdQuery_PolymorphicTest.java
----------------------------------------------------------------------
diff --git a/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextObjectIdQuery_PolymorphicTest.java b/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextObjectIdQuery_PolymorphicTest.java
index e656b7d..99f3cfb 100644
--- a/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextObjectIdQuery_PolymorphicTest.java
+++ b/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextObjectIdQuery_PolymorphicTest.java
@@ -1,3 +1,22 @@
+/*****************************************************************
+ * 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.access;
import org.apache.cayenne.Cayenne;
@@ -36,9 +55,15 @@ public class DataContextObjectIdQuery_PolymorphicTest extends ServerCase {
@Override
protected void setUpAfterInjection() throws Exception {
- dbHelper.deleteAll("PERSON");
tPerson = new TableHelper(dbHelper, "PERSON").setColumns("PERSON_ID", "NAME", "PERSON_TYPE")
.setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.CHAR);
+
+ tPerson.update().set("DEPARTMENT_ID", null, Types.INTEGER).execute();
+ dbHelper.deleteAll("ADDRESS");
+ dbHelper.deleteAll("DEPARTMENT");
+ dbHelper.deleteAll("PERSON_NOTES");
+ dbHelper.deleteAll("PERSON");
+ dbHelper.deleteAll("CLIENT_COMPANY");
}
public void testPolymorphicSharedCache() throws SQLException {
http://git-wip-us.apache.org/repos/asf/cayenne/blob/93e1c8c1/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/cayennemodeler-strings.properties
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/cayennemodeler-strings.properties b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/cayennemodeler-strings.properties
index 3ac1d27..de6e56a 100644
--- a/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/cayennemodeler-strings.properties
+++ b/modeler/cayenne-modeler/src/main/resources/org/apache/cayenne/modeler/cayennemodeler-strings.properties
@@ -17,7 +17,7 @@
cayenne.bugreport.url = http://issues.apache.org/jira/browse/CAY
-cayenne.modeler.about.info = (c) 2001-2016 Apache Software Foundation and individual authors.\
+cayenne.modeler.about.info = (c) 2001-2017 Apache Software Foundation and individual authors.\
<br><br>http://cayenne.apache.org/<br>
http://git-wip-us.apache.org/repos/asf/cayenne/blob/93e1c8c1/rat.sh
----------------------------------------------------------------------
diff --git a/rat.sh b/rat.sh
index 648efbc..092d823 100755
--- a/rat.sh
+++ b/rat.sh
@@ -63,6 +63,7 @@ java -jar $RAT -d $DIR \
-e 'CLOVER.txt' \
-e '*.html' \
-e '*.css' \
- -e 'derby.log'
+ -e 'derby.log' \
+ -e '*.iml'