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 2022/10/11 07:08:02 UTC

[cayenne] branch master updated: CAY-2760 add new methods for removing user properties

This is an automated email from the ASF dual-hosted git repository.

ntimofeev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git


The following commit(s) were added to refs/heads/master by this push:
     new dcd58c500 CAY-2760 add new methods for removing user properties
     new c528601fe Merge pull request #524 from aperaverzeu/4.3-FEATURE-CAY-2760-add-new-methods-for-userProperties
dcd58c500 is described below

commit dcd58c500d6674a1e28d14895a48892465725c2c
Author: Aliaskei Peraverzeu <de...@gmail.com>
AuthorDate: Mon Oct 10 17:56:43 2022 +0300

    CAY-2760 add new methods for removing user properties
---
 .../main/java/org/apache/cayenne/BaseContext.java    | 20 ++++++++++++++++++++
 .../main/java/org/apache/cayenne/ObjectContext.java  | 14 ++++++++++++++
 .../apache/cayenne/access/DataContextExtrasIT.java   | 20 ++++++++++++++++++++
 3 files changed, 54 insertions(+)

diff --git a/cayenne-server/src/main/java/org/apache/cayenne/BaseContext.java b/cayenne-server/src/main/java/org/apache/cayenne/BaseContext.java
index 981db73c7..d31f69917 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/BaseContext.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/BaseContext.java
@@ -615,6 +615,26 @@ public abstract class BaseContext implements ObjectContext {
 		getUserProperties().put(key, value);
 	}
 
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @since 4.3
+	 */
+	@Override
+	public void removeUserProperty(String key) {
+		getUserProperties().remove(key);
+	}
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @since 4.3
+	 */
+	@Override
+	public void clearUserProperties() {
+		getUserProperties().clear();
+	}
+
 	/**
 	 * If ObjEntity qualifier is set, asks it to inject initial value to an
 	 * object. Also performs all Persistent initialization operations
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/ObjectContext.java b/cayenne-server/src/main/java/org/apache/cayenne/ObjectContext.java
index 2b6810378..d8e1776ed 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/ObjectContext.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/ObjectContext.java
@@ -304,4 +304,18 @@ public interface ObjectContext extends DataChannel, Serializable {
      * @since 3.0
      */
     void setUserProperty(String key, Object value);
+
+    /**
+     * Removes a user-defined property.
+     *
+     * @since 4.3
+     */
+    void removeUserProperty(String key);
+
+    /**
+     * Removes all user-defined properties.
+     *
+     * @since 4.3
+     */
+    void clearUserProperties();
 }
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextExtrasIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextExtrasIT.java
index 644d750f5..59c09ceea 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextExtrasIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextExtrasIT.java
@@ -181,6 +181,26 @@ public class DataContextExtrasIT extends ServerCase {
         assertSame(object, context.getUserProperty("ABC"));
     }
 
+    @Test
+    public void testUserPropertiesRemove() {
+        Object object = new Object();
+
+        context.setUserProperty("ABC", object);
+        assertSame(object, context.getUserProperty("ABC"));
+
+        context.removeUserProperty("ABC");
+        assertNull(context.getUserProperty("ABC"));
+
+        context.setUserProperty("CBA", object);
+        context.setUserProperty("BCA", object);
+        assertSame(object, context.getUserProperty("CBA"));
+        assertSame(object, context.getUserProperty("BCA"));
+
+        context.clearUserProperties();
+        assertNull(context.getUserProperty("CBA"));
+        assertNull(context.getUserProperty("BCA"));
+    }
+
     @Test
     public void testHasChangesNew() {