You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2016/08/12 15:18:19 UTC
[1/2] cayenne git commit: CAY-2101 DataContext.currentSnapshot()
doesn't set snapshot entity name
Repository: cayenne
Updated Branches:
refs/heads/STABLE-3.1 83ca8fe44 -> 45e413de0
CAY-2101 DataContext.currentSnapshot() doesn't set snapshot entity name
* unit tests
* integration tests
* the fix
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/5e92ab99
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/5e92ab99
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/5e92ab99
Branch: refs/heads/STABLE-3.1
Commit: 5e92ab996e2f22ece77d3f6bba9d6431f10fadcd
Parents: 83ca8fe
Author: Andrus Adamchik <an...@objectstyle.com>
Authored: Fri Aug 12 17:15:56 2016 +0300
Committer: Andrus Adamchik <an...@objectstyle.com>
Committed: Fri Aug 12 18:14:12 2016 +0300
----------------------------------------------------------------------
framework/cayenne-jdk1.5-unpublished/pom.xml | 10 +++++-
.../org/apache/cayenne/access/DataContext.java | 22 ++++++------
.../apache/cayenne/access/ObjectResolver.java | 30 +++++++++++-----
...ataContextObjectIdQuery_PolymorphicTest.java | 36 ++++++++++++++++++--
4 files changed, 74 insertions(+), 24 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/5e92ab99/framework/cayenne-jdk1.5-unpublished/pom.xml
----------------------------------------------------------------------
diff --git a/framework/cayenne-jdk1.5-unpublished/pom.xml b/framework/cayenne-jdk1.5-unpublished/pom.xml
index f201c57..9f8789f 100644
--- a/framework/cayenne-jdk1.5-unpublished/pom.xml
+++ b/framework/cayenne-jdk1.5-unpublished/pom.xml
@@ -239,6 +239,14 @@
</execution>
</executions>
</plugin>
- </plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <source>1.6</source>
+ <target>1.6</target>
+ </configuration>
+ </plugin>
+ </plugins>
</build>
</project>
http://git-wip-us.apache.org/repos/asf/cayenne/blob/5e92ab99/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataContext.java
----------------------------------------------------------------------
diff --git a/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataContext.java b/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataContext.java
index f8b8947..1e725c3 100644
--- a/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataContext.java
+++ b/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataContext.java
@@ -19,16 +19,6 @@
package org.apache.cayenne.access;
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
import org.apache.cayenne.BaseContext;
import org.apache.cayenne.CayenneException;
import org.apache.cayenne.CayenneRuntimeException;
@@ -44,7 +34,6 @@ import org.apache.cayenne.QueryResponse;
import org.apache.cayenne.access.util.IteratedSelectObserver;
import org.apache.cayenne.cache.NestedQueryCache;
import org.apache.cayenne.configuration.CayenneRuntime;
-import org.apache.cayenne.configuration.RuntimeProperties;
import org.apache.cayenne.event.EventManager;
import org.apache.cayenne.graph.ChildDiffLoader;
import org.apache.cayenne.graph.CompoundDiff;
@@ -67,6 +56,16 @@ import org.apache.cayenne.util.EventUtil;
import org.apache.cayenne.util.GenericResponse;
import org.apache.cayenne.util.Util;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
/**
* The most common implementation of {@link ObjectContext}. DataContext is an isolated
* container of an object graph, in a sense that any uncommitted changes to persistent
@@ -328,6 +327,7 @@ public class DataContext extends BaseContext {
final ClassDescriptor descriptor = getEntityResolver().getClassDescriptor(
entity.getName());
final DataRow snapshot = new DataRow(10);
+ snapshot.setEntityName(entity.getName());
descriptor.visitProperties(new PropertyVisitor() {
http://git-wip-us.apache.org/repos/asf/cayenne/blob/5e92ab99/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/ObjectResolver.java
----------------------------------------------------------------------
diff --git a/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/ObjectResolver.java b/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/ObjectResolver.java
index a9db1da..1d46af6 100644
--- a/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/ObjectResolver.java
+++ b/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/ObjectResolver.java
@@ -19,12 +19,6 @@
package org.apache.cayenne.access;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.DataObject;
import org.apache.cayenne.DataRow;
@@ -37,6 +31,14 @@ import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.EntityResolver;
import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.reflect.ClassDescriptor;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
/**
* DataRows-to-objects converter for a specific ObjEntity.
@@ -45,6 +47,8 @@ import org.apache.cayenne.reflect.ClassDescriptor;
*/
class ObjectResolver {
+ private static final Log LOGGER = LogFactory.getLog(ObjectResolver.class);
+
DataContext context;
ClassDescriptor descriptor;
Collection<DbAttribute> primaryKey;
@@ -275,9 +279,17 @@ class ObjectResolver {
public final ClassDescriptor descriptorForRow(DataRow row) {
String entityName = row.getEntityName();
- // null probably means that inheritance qualifiers are messed up
- return (entityName != null) ? context.getEntityResolver().getClassDescriptor(
- entityName) : descriptor;
+ // null either means a bug in Cayenne (e.g. CAY-2101) or the inheritance qualifiers are messed up
+ if(entityName == null) {
+
+ if(LOGGER.isWarnEnabled()) {
+ LOGGER.warn("** Null entity name for DataRow, can't resolve sub descriptor for "
+ + descriptor.getEntity().getName());
+ return descriptor;
+ }
+ }
+
+ return context.getEntityResolver().getClassDescriptor(entityName);
}
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/5e92ab99/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 13375c8..1805274 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,8 +1,5 @@
package org.apache.cayenne.access;
-import java.sql.SQLException;
-import java.sql.Types;
-
import org.apache.cayenne.Cayenne;
import org.apache.cayenne.ObjectId;
import org.apache.cayenne.di.Inject;
@@ -10,12 +7,16 @@ import org.apache.cayenne.query.ObjectIdQuery;
import org.apache.cayenne.test.jdbc.DBHelper;
import org.apache.cayenne.test.jdbc.TableHelper;
import org.apache.cayenne.testdo.inherit.AbstractPerson;
+import org.apache.cayenne.testdo.inherit.Employee;
import org.apache.cayenne.testdo.inherit.Manager;
import org.apache.cayenne.unit.di.DataChannelInterceptor;
import org.apache.cayenne.unit.di.UnitTestClosure;
import org.apache.cayenne.unit.di.server.ServerCase;
import org.apache.cayenne.unit.di.server.UseServerRuntime;
+import java.sql.SQLException;
+import java.sql.Types;
+
@UseServerRuntime(ServerCase.PEOPLE_PROJECT)
public class DataContextObjectIdQuery_PolymorphicTest extends ServerCase {
@@ -84,4 +85,33 @@ public class DataContextObjectIdQuery_PolymorphicTest extends ServerCase {
}
});
}
+
+ public void testPolymorphicSharedCache_AfterCayenneInsert() throws SQLException {
+
+
+ // see CAY-2101... we are trying to get a snapshot from a new object in the shared cache, and then read this
+ // object via a relationship, so that shared cache is consulted
+ Employee e = context1.newObject(Employee.class);
+ e.setName("E1");
+ e.setSalary(1234.01f);
+
+ context1.commitChanges();
+
+
+ final ObjectIdQuery q1 = new ObjectIdQuery(
+ new ObjectId("AbstractPerson", "PERSON_ID", Cayenne.intPKForObject(e)),
+ false,
+ ObjectIdQuery.CACHE);
+
+
+ queryInterceptor.runWithQueriesBlocked(new UnitTestClosure() {
+
+ @Override
+ public void execute() {
+ // use different context to ensure we hit shared cache
+ AbstractPerson ap1 = (AbstractPerson) Cayenne.objectForQuery(context2, q1);
+ assertTrue(ap1 instanceof Employee);
+ }
+ });
+ }
}
[2/2] cayenne git commit: CAY-2101 DataContext.currentSnapshot()
doesn't set snapshot entity name
Posted by aa...@apache.org.
CAY-2101 DataContext.currentSnapshot() doesn't set snapshot entity name
* release notes
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/45e413de
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/45e413de
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/45e413de
Branch: refs/heads/STABLE-3.1
Commit: 45e413de058b1b7763e8e4052662c7b73758740a
Parents: 5e92ab9
Author: Andrus Adamchik <an...@objectstyle.com>
Authored: Fri Aug 12 17:15:56 2016 +0300
Committer: Andrus Adamchik <an...@objectstyle.com>
Committed: Fri Aug 12 18:18:06 2016 +0300
----------------------------------------------------------------------
docs/doc/src/main/resources/RELEASE-NOTES.txt | 1 +
1 file changed, 1 insertion(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/45e413de/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 1e888be..a7113a5 100644
--- a/docs/doc/src/main/resources/RELEASE-NOTES.txt
+++ b/docs/doc/src/main/resources/RELEASE-NOTES.txt
@@ -15,6 +15,7 @@ Date: not yet released
Bug Fixes Since 3.1.1:
CAY-2084 ObjectIdQuery - no cache access polymorphism
+CAY-2101 DataContext.currentSnapshot() doesn't set snapshot entity name
----------------------------------
Release: 3.1.1