You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by sk...@apache.org on 2015/11/30 17:06:03 UTC
[1/2] cayenne git commit: using AtomicLong.getAndIncrement() instead
of UUID.randomUUID() in DefaultListBuilder
Repository: cayenne
Updated Branches:
refs/heads/master fcc9d922d -> 5bb12cd36
using AtomicLong.getAndIncrement() instead of UUID.randomUUID() in DefaultListBuilder
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/82c2ed59
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/82c2ed59
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/82c2ed59
Branch: refs/heads/master
Commit: 82c2ed5917041fa47a2f2046d6569a44809501bf
Parents: fcc9d92
Author: Savva Kolbachev <s....@gmail.com>
Authored: Mon Nov 30 16:30:14 2015 +0300
Committer: Savva Kolbachev <s....@gmail.com>
Committed: Mon Nov 30 16:30:14 2015 +0300
----------------------------------------------------------------------
.../java/org/apache/cayenne/di/spi/DefaultListBuilder.java | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/82c2ed59/cayenne-di/src/main/java/org/apache/cayenne/di/spi/DefaultListBuilder.java
----------------------------------------------------------------------
diff --git a/cayenne-di/src/main/java/org/apache/cayenne/di/spi/DefaultListBuilder.java b/cayenne-di/src/main/java/org/apache/cayenne/di/spi/DefaultListBuilder.java
index fcf6a28..c05ae10 100644
--- a/cayenne-di/src/main/java/org/apache/cayenne/di/spi/DefaultListBuilder.java
+++ b/cayenne-di/src/main/java/org/apache/cayenne/di/spi/DefaultListBuilder.java
@@ -29,13 +29,14 @@ import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
-import java.util.UUID;
+import java.util.concurrent.atomic.AtomicLong;
/**
* @since 3.1
*/
class DefaultListBuilder<T> implements ListBuilder<T> {
+ protected static AtomicLong incrementer = new AtomicLong();
protected DefaultInjector injector;
protected Key<List<?>> bindingKey;
@@ -80,7 +81,7 @@ class DefaultListBuilder<T> implements ListBuilder<T> {
Provider<T> provider0 = new InstanceProvider<T>(object);
Provider<T> provider1 = new FieldInjectingProvider<T>(provider0, injector);
- getListProvider().add(Key.get(object.getClass(), UUID.randomUUID().toString()), provider1);
+ getListProvider().add(Key.get(object.getClass(), String.valueOf(incrementer.getAndIncrement())), provider1);
return this;
}
@@ -124,7 +125,7 @@ class DefaultListBuilder<T> implements ListBuilder<T> {
Provider<T> provider0 = new InstanceProvider<T>(object);
Provider<T> provider1 = new FieldInjectingProvider<T>(provider0, injector);
- keyProviderMap.put(Key.get(object.getClass(), UUID.randomUUID().toString()), provider1);
+ keyProviderMap.put(Key.get(object.getClass(), String.valueOf(incrementer.getAndIncrement())), provider1);
}
getListProvider().addAll(keyProviderMap);
[2/2] cayenne git commit: CAY-2039 | lifecycle events docs
Posted by sk...@apache.org.
CAY-2039 | lifecycle events docs
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/5bb12cd3
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/5bb12cd3
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/5bb12cd3
Branch: refs/heads/master
Commit: 5bb12cd36f0d87e3b217cdc20c22a0f6dc9613f3
Parents: 82c2ed5
Author: Savva Kolbachev <s....@gmail.com>
Authored: Mon Nov 30 19:05:28 2015 +0300
Committer: Savva Kolbachev <s....@gmail.com>
Committed: Mon Nov 30 19:05:28 2015 +0300
----------------------------------------------------------------------
.../reflect/LifecycleCallbackOrderIT.java | 100 +++++++++++++++++++
.../lifecycle_callbacks_order/Lifecycle.java | 38 +++++++
.../auto/_Lifecycle.java | 27 +++++
.../cayenne/unit/di/server/CayenneProjects.java | 1 +
.../cayenne/unit/di/server/SchemaBuilder.java | 2 +-
.../cayenne-lifecycle-callbacks-order.xml | 4 +
.../resources/lifecycle-callbacks-order.map.xml | 16 +++
.../src/docbkx/lifecycle-events.xml | 4 +-
8 files changed, 189 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/5bb12cd3/cayenne-server/src/test/java/org/apache/cayenne/reflect/LifecycleCallbackOrderIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/reflect/LifecycleCallbackOrderIT.java b/cayenne-server/src/test/java/org/apache/cayenne/reflect/LifecycleCallbackOrderIT.java
new file mode 100644
index 0000000..309013a
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/reflect/LifecycleCallbackOrderIT.java
@@ -0,0 +1,100 @@
+/*****************************************************************
+ * 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.reflect;
+
+import org.apache.cayenne.ObjectContext;
+import org.apache.cayenne.annotation.PostPersist;
+import org.apache.cayenne.annotation.PostRemove;
+import org.apache.cayenne.annotation.PostUpdate;
+import org.apache.cayenne.annotation.PrePersist;
+import org.apache.cayenne.annotation.PreRemove;
+import org.apache.cayenne.annotation.PreUpdate;
+import org.apache.cayenne.di.Inject;
+import org.apache.cayenne.testdo.lifecycle_callbacks_order.Lifecycle;
+import org.apache.cayenne.unit.di.server.CayenneProjects;
+import org.apache.cayenne.unit.di.server.ServerCase;
+import org.apache.cayenne.unit.di.server.UseServerRuntime;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+@UseServerRuntime(CayenneProjects.LIFECYCLE_CALLBACKS_ORDER_PROJECT)
+public class LifecycleCallbackOrderIT extends ServerCase {
+
+ @Inject
+ private ObjectContext context;
+
+ @Test
+ public void testLifecycleCallbackOrder() {
+ LifecycleCallbackRegistry registry = new LifecycleCallbackRegistry(context.getEntityResolver());
+ context.getEntityResolver().setCallbackRegistry(registry);
+
+ LifecycleEventListener eventListener = new LifecycleEventListener();
+ registry.addListener(eventListener);
+
+ Lifecycle lifecycle = context.newObject(Lifecycle.class);
+ context.commitChanges();
+ assertEquals("validateForInsert;PrePersist;PostPersist;", lifecycle.getCallbackBufferValueAndReset());
+
+ lifecycle.setName("CallbackOrderTest");
+ context.commitChanges();
+ assertEquals("validateForUpdate;PreUpdate;PostUpdate;", lifecycle.getCallbackBufferValueAndReset());
+
+ context.deleteObject(lifecycle);
+ assertEquals("PreRemove;", lifecycle.getCallbackBuffer().toString());
+ context.commitChanges();
+ assertEquals("PreRemove;validateForDelete;PostRemove;", lifecycle.getCallbackBufferValueAndReset());
+ }
+
+ class LifecycleEventListener {
+
+ @PrePersist(Lifecycle.class)
+ void prePersist(Lifecycle lifecycle) {
+ lifecycle.getCallbackBuffer().append("PrePersist;");
+ }
+
+ @PostPersist(Lifecycle.class)
+ void postPersist(Lifecycle lifecycle) {
+ lifecycle.getCallbackBuffer().append("PostPersist;");
+ }
+
+ @PreUpdate(Lifecycle.class)
+ void preUpdate(Lifecycle lifecycle) {
+ lifecycle.getCallbackBuffer().append("PreUpdate;");
+ }
+
+ @PostUpdate(Lifecycle.class)
+ void postUpdate(Lifecycle lifecycle) {
+ lifecycle.getCallbackBuffer().append("PostUpdate;");
+ }
+
+ @PreRemove(Lifecycle.class)
+ void preRemove(Lifecycle lifecycle) {
+ lifecycle.getCallbackBuffer().append("PreRemove;");
+ }
+
+ @PostRemove(Lifecycle.class)
+ void postRemove(Lifecycle lifecycle) {
+ lifecycle.getCallbackBuffer().append("PostRemove;");
+ }
+
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/5bb12cd3/cayenne-server/src/test/java/org/apache/cayenne/testdo/lifecycle_callbacks_order/Lifecycle.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/lifecycle_callbacks_order/Lifecycle.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/lifecycle_callbacks_order/Lifecycle.java
new file mode 100644
index 0000000..49ee979
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/lifecycle_callbacks_order/Lifecycle.java
@@ -0,0 +1,38 @@
+package org.apache.cayenne.testdo.lifecycle_callbacks_order;
+
+import org.apache.cayenne.testdo.lifecycle_callbacks_order.auto._Lifecycle;
+import org.apache.cayenne.validation.ValidationResult;
+
+public class Lifecycle extends _Lifecycle {
+
+ private static final long serialVersionUID = 1L;
+ private StringBuilder callbackBuffer = new StringBuilder();
+
+ @Override
+ public void validateForInsert(ValidationResult validationResult) {
+ callbackBuffer.append("validateForInsert;");
+ super.validateForInsert(validationResult);
+ }
+
+ @Override
+ public void validateForUpdate(ValidationResult validationResult) {
+ callbackBuffer.append("validateForUpdate;");
+ super.validateForUpdate(validationResult);
+ }
+
+ @Override
+ public void validateForDelete(ValidationResult validationResult) {
+ callbackBuffer.append("validateForDelete;");
+ super.validateForDelete(validationResult);
+ }
+
+ public StringBuilder getCallbackBuffer() {
+ return callbackBuffer;
+ }
+
+ public String getCallbackBufferValueAndReset() {
+ String v = callbackBuffer.toString();
+ callbackBuffer = new StringBuilder();
+ return v;
+ }
+}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/5bb12cd3/cayenne-server/src/test/java/org/apache/cayenne/testdo/lifecycle_callbacks_order/auto/_Lifecycle.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/lifecycle_callbacks_order/auto/_Lifecycle.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/lifecycle_callbacks_order/auto/_Lifecycle.java
new file mode 100644
index 0000000..76958cd
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/lifecycle_callbacks_order/auto/_Lifecycle.java
@@ -0,0 +1,27 @@
+package org.apache.cayenne.testdo.lifecycle_callbacks_order.auto;
+
+import org.apache.cayenne.CayenneDataObject;
+import org.apache.cayenne.exp.Property;
+
+/**
+ * Class _Lifecycle was generated by Cayenne.
+ * It is probably a good idea to avoid changing this class manually,
+ * since it may be overwritten next time code is regenerated.
+ * If you need to make any customizations, please use subclass.
+ */
+public abstract class _Lifecycle extends CayenneDataObject {
+
+ private static final long serialVersionUID = 1L;
+
+ public static final String ID_PK_COLUMN = "ID";
+
+ public static final Property<String> NAME = new Property<String>("name");
+
+ public void setName(String name) {
+ writeProperty("name", name);
+ }
+ public String getName() {
+ return (String)readProperty("name");
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/5bb12cd3/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/CayenneProjects.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/CayenneProjects.java b/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/CayenneProjects.java
index 2d92da8..99a98da 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/CayenneProjects.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/CayenneProjects.java
@@ -40,6 +40,7 @@ public class CayenneProjects {
public static final String INHERITANCE_PROJECT = "cayenne-inheritance.xml";
public static final String INHERITANCE_SINGLE_TABLE1_PROJECT = "cayenne-inheritance-single-table1.xml";
public static final String INHERITANCE_VERTICAL_PROJECT = "cayenne-inheritance-vertical.xml";
+ public static final String LIFECYCLE_CALLBACKS_ORDER_PROJECT = "cayenne-lifecycle-callbacks-order.xml";
public static final String LIFECYCLES_PROJECT = "cayenne-lifecycles.xml";
public static final String LOB_PROJECT = "cayenne-lob.xml";
public static final String LOCKING_PROJECT = "cayenne-locking.xml";
http://git-wip-us.apache.org/repos/asf/cayenne/blob/5bb12cd3/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/SchemaBuilder.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/SchemaBuilder.java b/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/SchemaBuilder.java
index 8cba086..8c8a208 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/SchemaBuilder.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/SchemaBuilder.java
@@ -79,7 +79,7 @@ public class SchemaBuilder {
"relationships-clob.map.xml", "relationships-flattened.map.xml", "relationships-set-to-many.map.xml",
"relationships-to-many-fk.map.xml", "relationships-to-one-fk.map.xml", "return-types.map.xml",
"uuid.map.xml", "multi-tier.map.xml", "persistent.map.xml", "reflexive.map.xml", "delete-rules.map.xml",
- "lifecycles.map.xml", "map-to-many.map.xml", "toone.map.xml", "meaningful-pk.map.xml",
+ "lifecycle-callbacks-order.map.xml", "lifecycles.map.xml", "map-to-many.map.xml", "toone.map.xml", "meaningful-pk.map.xml",
"table-primitives.map.xml", "generic.map.xml", "map-db1.map.xml", "map-db2.map.xml", "embeddable.map.xml",
"qualified.map.xml", "quoted-identifiers.map.xml", "inheritance-single-table1.map.xml",
"inheritance-vertical.map.xml", "oneway-rels.map.xml", "unsupported-distinct-types.map.xml",
http://git-wip-us.apache.org/repos/asf/cayenne/blob/5bb12cd3/cayenne-server/src/test/resources/cayenne-lifecycle-callbacks-order.xml
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/resources/cayenne-lifecycle-callbacks-order.xml b/cayenne-server/src/test/resources/cayenne-lifecycle-callbacks-order.xml
new file mode 100644
index 0000000..2764943
--- /dev/null
+++ b/cayenne-server/src/test/resources/cayenne-lifecycle-callbacks-order.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<domain project-version="7">
+ <map name="lifecycle-callbacks-order"/>
+</domain>
http://git-wip-us.apache.org/repos/asf/cayenne/blob/5bb12cd3/cayenne-server/src/test/resources/lifecycle-callbacks-order.map.xml
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/resources/lifecycle-callbacks-order.map.xml b/cayenne-server/src/test/resources/lifecycle-callbacks-order.map.xml
new file mode 100644
index 0000000..6ca4768
--- /dev/null
+++ b/cayenne-server/src/test/resources/lifecycle-callbacks-order.map.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<data-map xmlns="http://cayenne.apache.org/schema/7/modelMap"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://cayenne.apache.org/schema/7/modelMap http://cayenne.apache.org/schema/7/modelMap.xsd"
+ project-version="7">
+ <property name="defaultPackage" value="org.apache.cayenne.testdo.lifecycle_callbacks_order"/>
+ <property name="clientSupported" value="true"/>
+ <property name="defaultClientPackage" value="org.apache.cayenne.testdo.lifecycle_callbacks_order"/>
+ <db-entity name="LIFECYCLE">
+ <db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
+ <db-attribute name="NAME" type="VARCHAR" length="100"/>
+ </db-entity>
+ <obj-entity name="Lifecycle" className="org.apache.cayenne.testdo.lifecycle_callbacks_order.Lifecycle" dbEntityName="LIFECYCLE">
+ <obj-attribute name="name" type="java.lang.String" db-attribute-path="NAME"/>
+ </obj-entity>
+</data-map>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cayenne/blob/5bb12cd3/docs/docbook/cayenne-guide/src/docbkx/lifecycle-events.xml
----------------------------------------------------------------------
diff --git a/docs/docbook/cayenne-guide/src/docbkx/lifecycle-events.xml b/docs/docbook/cayenne-guide/src/docbkx/lifecycle-events.xml
index 253dc25..09eefd6 100644
--- a/docs/docbook/cayenne-guide/src/docbkx/lifecycle-events.xml
+++ b/docs/docbook/cayenne-guide/src/docbkx/lifecycle-events.xml
@@ -60,14 +60,14 @@
<td>PrePersist</td>
<td>right before a new object is committed, inside
<code>ObjectContext.commitChanges()</code> and
- <code>ObjectContext.commitChangesToParent()</code> (and prior to
+ <code>ObjectContext.commitChangesToParent()</code> (and after
"<code>validateForInsert()</code>").</td>
</tr>
<tr>
<td>PreUpdate</td>
<td>right before a modified object is committed, inside
<code>ObjectContext.commitChanges()</code> and
- <code>ObjectContext.commitChangesToParent()</code> (and prior to
+ <code>ObjectContext.commitChangesToParent()</code> (and after
"<code>validateForUpdate()</code>").</td>
</tr>
<tr>