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/03/15 08:27:30 UTC
cayenne git commit: Change DataRowStore settings to use
RuntimeProperties. Add user-friendly contribution method to ServerModule.
Repository: cayenne
Updated Branches:
refs/heads/master daaa20381 -> 46450e751
Change DataRowStore settings to use RuntimeProperties.
Add user-friendly contribution method to ServerModule.
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/46450e75
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/46450e75
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/46450e75
Branch: refs/heads/master
Commit: 46450e7513b17def75737b97232fa6167182b5f7
Parents: daaa203
Author: Nikita Timofeev <st...@gmail.com>
Authored: Wed Mar 15 11:11:47 2017 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Wed Mar 15 11:11:47 2017 +0300
----------------------------------------------------------------------
.../org/apache/cayenne/access/DataRowStore.java | 41 ++++-----
.../access/DefaultDataRowStoreFactory.java | 6 +-
.../apache/cayenne/configuration/Constants.java | 89 ++++++++++----------
.../configuration/server/ServerModule.java | 13 ++-
.../access/DataContextSerializationIT.java | 5 +-
.../access/DataContextSharedCacheEmpiricIT.java | 9 +-
.../org/apache/cayenne/access/DataDomainIT.java | 6 +-
.../apache/cayenne/access/DataRowStoreIT.java | 8 +-
.../access/DefaultDataRowStoreFactoryIT.java | 13 +--
.../apache/cayenne/access/MockDataRowStore.java | 10 ++-
.../server/DataContextFactoryTest.java | 7 +-
.../server/DataDomainProviderTest.java | 1 -
docs/doc/src/main/resources/UPGRADE.txt | 10 +--
13 files changed, 106 insertions(+), 112 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/46450e75/cayenne-server/src/main/java/org/apache/cayenne/access/DataRowStore.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/DataRowStore.java b/cayenne-server/src/main/java/org/apache/cayenne/access/DataRowStore.java
index fcc49a8..8c518db 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/DataRowStore.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/DataRowStore.java
@@ -26,11 +26,12 @@ import org.apache.cayenne.ObjectId;
import org.apache.cayenne.PersistenceState;
import org.apache.cayenne.Persistent;
import org.apache.cayenne.access.event.SnapshotEvent;
+import org.apache.cayenne.configuration.Constants;
+import org.apache.cayenne.configuration.RuntimeProperties;
import org.apache.cayenne.event.EventBridge;
import org.apache.cayenne.event.EventManager;
import org.apache.cayenne.event.EventSubject;
import org.apache.cayenne.util.concurrentlinkedhashmap.ConcurrentLinkedHashMap;
-import org.apache.commons.collections.ExtendedProperties;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -53,8 +54,16 @@ public class DataRowStore implements Serializable {
private static Log logger = LogFactory.getLog(DataRowStore.class);
- // property keys
+ /**
+ * @deprecated since 4.0, never used actually
+ */
+ @Deprecated
public static final String SNAPSHOT_EXPIRATION_PROPERTY = "cayenne.DataRowStore.snapshot.expiration";
+
+ /**
+ * @deprecated since 4.0, use {@link org.apache.cayenne.configuration.Constants#SNAPSHOT_CACHE_SIZE_PROPERTY}
+ */
+ @Deprecated
public static final String SNAPSHOT_CACHE_SIZE_PROPERTY = "cayenne.DataRowStore.snapshot.size";
/**
@@ -112,7 +121,7 @@ public class DataRowStore implements Serializable {
* events.
* @since 1.2
*/
- public DataRowStore(String name, Map<String, String> properties, EventManager eventManager) {
+ public DataRowStore(String name, RuntimeProperties properties, EventManager eventManager) {
if (name == null) {
throw new IllegalArgumentException("DataRowStore name can't be null.");
}
@@ -127,36 +136,18 @@ public class DataRowStore implements Serializable {
return EventSubject.getSubject(this.getClass(), name);
}
- protected void initWithProperties(Map<String, String> properties) {
- ExtendedProperties propertiesWrapper = new ExtendedProperties();
-
- if (properties != null) {
- propertiesWrapper.putAll(properties);
- }
+ protected void initWithProperties(RuntimeProperties properties) {
- long snapshotsExpiration = propertiesWrapper.getLong(
- SNAPSHOT_EXPIRATION_PROPERTY,
- SNAPSHOT_EXPIRATION_DEFAULT);
-
- maxSize = propertiesWrapper.getInt(
- SNAPSHOT_CACHE_SIZE_PROPERTY,
- SNAPSHOT_CACHE_SIZE_DEFAULT);
+ // expiration time is never used actually
+ maxSize = properties.getInt(Constants.SNAPSHOT_CACHE_SIZE_PROPERTY, SNAPSHOT_CACHE_SIZE_DEFAULT);
if (logger.isDebugEnabled()) {
- logger.debug("DataRowStore property "
- + SNAPSHOT_EXPIRATION_PROPERTY
- + " = "
- + snapshotsExpiration);
- logger.debug("DataRowStore property "
- + SNAPSHOT_CACHE_SIZE_PROPERTY
- + " = "
- + maxSize);
+ logger.debug("DataRowStore property " + Constants.SNAPSHOT_CACHE_SIZE_PROPERTY + " = " + maxSize);
}
this.snapshots = new ConcurrentLinkedHashMap.Builder<ObjectId, DataRow>()
.maximumWeightedCapacity(maxSize)
.build();
-
}
protected void setEventBridge(EventBridge eventBridge) {
http://git-wip-us.apache.org/repos/asf/cayenne/blob/46450e75/cayenne-server/src/main/java/org/apache/cayenne/access/DefaultDataRowStoreFactory.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/DefaultDataRowStoreFactory.java b/cayenne-server/src/main/java/org/apache/cayenne/access/DefaultDataRowStoreFactory.java
index 787c177..22b5e2f 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/DefaultDataRowStoreFactory.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/DefaultDataRowStoreFactory.java
@@ -20,7 +20,7 @@
package org.apache.cayenne.access;
import org.apache.cayenne.CayenneRuntimeException;
-import org.apache.cayenne.configuration.Constants;
+import org.apache.cayenne.configuration.RuntimeProperties;
import org.apache.cayenne.di.DIRuntimeException;
import org.apache.cayenne.di.Inject;
import org.apache.cayenne.event.EventBridge;
@@ -40,13 +40,13 @@ public class DefaultDataRowStoreFactory implements DataRowStoreFactory {
EventManager eventManager;
- Map<String, String> properties;
+ RuntimeProperties properties;
boolean isNoopEventBridge;
public DefaultDataRowStoreFactory(@Inject EventBridge eventBridge,
@Inject EventManager eventManager,
- @Inject(Constants.DATA_ROW_STORE_PROPERTIES_MAP) Map<String, String> properties) {
+ @Inject RuntimeProperties properties) {
this.eventBridge = eventBridge;
this.eventManager = eventManager;
this.properties = properties;
http://git-wip-us.apache.org/repos/asf/cayenne/blob/46450e75/cayenne-server/src/main/java/org/apache/cayenne/configuration/Constants.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/configuration/Constants.java b/cayenne-server/src/main/java/org/apache/cayenne/configuration/Constants.java
index 18c42cd..091af8a 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/configuration/Constants.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/configuration/Constants.java
@@ -35,14 +35,14 @@ public interface Constants {
*
* @see org.apache.cayenne.configuration.server.ServerModule#contributeProperties(Binder).
*/
- public static final String PROPERTIES_MAP = "cayenne.properties";
+ String PROPERTIES_MAP = "cayenne.properties";
/**
* A DI container key for the List<DbAdapterDetector> that contains
* objects that can discover the type of current database and install the
* correct DbAdapter in runtime.
*/
- public static final String SERVER_ADAPTER_DETECTORS_LIST = "cayenne.server.adapter_detectors";
+ String SERVER_ADAPTER_DETECTORS_LIST = "cayenne.server.adapter_detectors";
/**
* A DI container key for the List<DataChannelFilter> storing
@@ -50,13 +50,13 @@ public interface Constants {
*
* @see org.apache.cayenne.configuration.server.ServerModule#contributeDomainFilters(Binder).
*/
- public static final String SERVER_DOMAIN_FILTERS_LIST = "cayenne.server.domain_filters";
+ String SERVER_DOMAIN_FILTERS_LIST = "cayenne.server.domain_filters";
/**
* A DI container key for the List<String> storing locations of the
* one of more project configuration files.
*/
- public static final String SERVER_PROJECT_LOCATIONS_LIST = "cayenne.server.project_locations";
+ String SERVER_PROJECT_LOCATIONS_LIST = "cayenne.server.project_locations";
/**
* A DI container key for the List<ExtendedType> storing default
@@ -64,7 +64,7 @@ public interface Constants {
*
* @see org.apache.cayenne.configuration.server.ServerModule#contributeDefaultTypes(Binder).
*/
- public static final String SERVER_DEFAULT_TYPES_LIST = "cayenne.server.default_types";
+ String SERVER_DEFAULT_TYPES_LIST = "cayenne.server.default_types";
/**
* A DI container key for the List<ExtendedType> storing a
@@ -72,7 +72,7 @@ public interface Constants {
*
* @see org.apache.cayenne.configuration.server.ServerModule#contributeUserTypes(Binder).
*/
- public static final String SERVER_USER_TYPES_LIST = "cayenne.server.user_types";
+ String SERVER_USER_TYPES_LIST = "cayenne.server.user_types";
/**
* A DI container key for the List<ExtendedTypeFactory> storing
@@ -80,32 +80,32 @@ public interface Constants {
*
* @see org.apache.cayenne.configuration.server.ServerModule#contributeTypeFactories(Binder).
*/
- public static final String SERVER_TYPE_FACTORIES_LIST = "cayenne.server.type_factories";
+ String SERVER_TYPE_FACTORIES_LIST = "cayenne.server.type_factories";
/**
* A server-side DI container key for binding {@link org.apache.cayenne.resource.ResourceLocator}
*/
- public final static String SERVER_RESOURCE_LOCATOR = "cayenne.server.resource_locator";
+ String SERVER_RESOURCE_LOCATOR = "cayenne.server.resource_locator";
/**
* A server-side DI container key for the Map<String, String> storing
* event bridge properties passed to the ROP client on bootstrap.
*/
- public static final String SERVER_ROP_EVENT_BRIDGE_PROPERTIES_MAP = "cayenne.server.rop_event_bridge_properties";
+ String SERVER_ROP_EVENT_BRIDGE_PROPERTIES_MAP = "cayenne.server.rop_event_bridge_properties";
// Runtime properties
- public static final String JDBC_DRIVER_PROPERTY = "cayenne.jdbc.driver";
+ String JDBC_DRIVER_PROPERTY = "cayenne.jdbc.driver";
- public static final String JDBC_URL_PROPERTY = "cayenne.jdbc.url";
+ String JDBC_URL_PROPERTY = "cayenne.jdbc.url";
- public static final String JDBC_USERNAME_PROPERTY = "cayenne.jdbc.username";
+ String JDBC_USERNAME_PROPERTY = "cayenne.jdbc.username";
- public static final String JDBC_PASSWORD_PROPERTY = "cayenne.jdbc.password";
+ String JDBC_PASSWORD_PROPERTY = "cayenne.jdbc.password";
- public static final String JDBC_MIN_CONNECTIONS_PROPERTY = "cayenne.jdbc.min_connections";
+ String JDBC_MIN_CONNECTIONS_PROPERTY = "cayenne.jdbc.min_connections";
- public static final String JDBC_MAX_CONNECTIONS_PROPERTY = "cayenne.jdbc.max_connections";
+ String JDBC_MAX_CONNECTIONS_PROPERTY = "cayenne.jdbc.max_connections";
/**
* Defines a maximum time in milliseconds that a connection request could
@@ -116,12 +116,12 @@ public interface Constants {
*
* @since 4.0
*/
- public static final String JDBC_MAX_QUEUE_WAIT_TIME = "cayenne.jdbc.max_wait";
+ String JDBC_MAX_QUEUE_WAIT_TIME = "cayenne.jdbc.max_wait";
/**
* @since 4.0
*/
- public static final String JDBC_VALIDATION_QUERY_PROPERTY = "cayenne.jdbc.validation_query";
+ String JDBC_VALIDATION_QUERY_PROPERTY = "cayenne.jdbc.validation_query";
/**
* An integer property defining the maximum number of entries in the query
@@ -129,7 +129,7 @@ public interface Constants {
* MapQueryCache uses it, but the rest would use alternative configuration
* methods.
*/
- public static final String QUERY_CACHE_SIZE_PROPERTY = "cayenne.querycache.size";
+ String QUERY_CACHE_SIZE_PROPERTY = "cayenne.querycache.size";
/**
* An optional name of the runtime DataDomain. If not specified (which is
@@ -137,25 +137,25 @@ public interface Constants {
*
* @since 4.0
*/
- public static final String SERVER_DOMAIN_NAME_PROPERTY = "cayenne.server.domain.name";
+ String SERVER_DOMAIN_NAME_PROPERTY = "cayenne.server.domain.name";
/**
* A boolean property defining whether cross-contexts synchronization is
* enabled. Possible values are "true" or "false".
*/
- public static final String SERVER_CONTEXTS_SYNC_PROPERTY = "cayenne.server.contexts_sync_strategy";
+ String SERVER_CONTEXTS_SYNC_PROPERTY = "cayenne.server.contexts_sync_strategy";
/**
* A String property that defines how ObjectContexts should retain cached
* committed objects. Possible values are "weak", "soft", "hard".
*/
- public static final String SERVER_OBJECT_RETAIN_STRATEGY_PROPERTY = "cayenne.server.object_retain_strategy";
+ String SERVER_OBJECT_RETAIN_STRATEGY_PROPERTY = "cayenne.server.object_retain_strategy";
/**
* A boolean property that defines whether runtime should use external
* transactions. Possible values are "true" or "false".
*/
- public static final String SERVER_EXTERNAL_TX_PROPERTY = "cayenne.server.external_tx";
+ String SERVER_EXTERNAL_TX_PROPERTY = "cayenne.server.external_tx";
/**
* The name of the {@link org.apache.cayenne.event.EventBridgeFactory} that
@@ -164,7 +164,7 @@ public interface Constants {
* stored in {@link #SERVER_ROP_EVENT_BRIDGE_PROPERTIES_MAP}, not
* {@link #PROPERTIES_MAP}.
*/
- public static final String SERVER_ROP_EVENT_BRIDGE_FACTORY_PROPERTY = "cayenne.server.rop_event_bridge_factory";
+ String SERVER_ROP_EVENT_BRIDGE_FACTORY_PROPERTY = "cayenne.server.rop_event_bridge_factory";
/**
* A property that defines a maximum number of ID qualifiers in where clause
@@ -173,7 +173,7 @@ public interface Constants {
* DISJOINT_BY_ID prefetch processing. This is needed to avoid where clause
* size limitations and memory usage efficiency.
*/
- public static final String SERVER_MAX_ID_QUALIFIER_SIZE_PROPERTY = "cayenne.server.max_id_qualifier_size";
+ String SERVER_MAX_ID_QUALIFIER_SIZE_PROPERTY = "cayenne.server.max_id_qualifier_size";
/**
* Defines a maximum time in milliseconds that a connection request could
@@ -184,12 +184,12 @@ public interface Constants {
*
* @deprecated since 4.0 renamed to {@link #JDBC_MAX_QUEUE_WAIT_TIME}. Property name is preserved.
*/
- public static final String SERVER_MAX_QUEUE_WAIT_TIME = JDBC_MAX_QUEUE_WAIT_TIME;
+ String SERVER_MAX_QUEUE_WAIT_TIME = JDBC_MAX_QUEUE_WAIT_TIME;
/**
* Defines if database uses case-insensitive collation
*/
- public final static String CI_PROPERTY = "cayenne.runtime.db.collation.assume.ci";
+ String CI_PROPERTY = "cayenne.runtime.db.collation.assume.ci";
/**
* A integer property that enables logging for just long running queries
@@ -199,31 +199,38 @@ public interface Constants {
*
* @since 4.0
*/
- public final static String QUERY_EXECUTION_TIME_LOGGING_THRESHOLD_PROPERTY = "cayenne.server.query_execution_time_logging_threshold";
+ String QUERY_EXECUTION_TIME_LOGGING_THRESHOLD_PROPERTY = "cayenne.server.query_execution_time_logging_threshold";
+
+ /**
+ * Snapshot cache max size
+ * @see org.apache.cayenne.configuration.server.ServerModule#setSnapshotCacheSize(Binder, int)
+ * @since 4.0
+ */
+ String SNAPSHOT_CACHE_SIZE_PROPERTY = "cayenne.DataRowStore.snapshot.size";
/**
* @deprecated since 4.0 moved to cayenne-client org.apache.cayenne.configuration.rop.client.ClientConstants.
*/
@Deprecated
- public static final String ROP_SERVICE_URL_PROPERTY = "cayenne.rop.service_url";
+ String ROP_SERVICE_URL_PROPERTY = "cayenne.rop.service_url";
/**
* @deprecated since 4.0 moved to cayenne-client org.apache.cayenne.configuration.rop.client.ClientConstants.
*/
@Deprecated
- public static final String ROP_SERVICE_USERNAME_PROPERTY = "cayenne.rop.service_username";
+ String ROP_SERVICE_USERNAME_PROPERTY = "cayenne.rop.service_username";
/**
* @deprecated since 4.0 moved to cayenne-client org.apache.cayenne.configuration.rop.client.ClientConstants.
*/
@Deprecated
- public static final String ROP_SERVICE_PASSWORD_PROPERTY = "cayenne.rop.service_password";
+ String ROP_SERVICE_PASSWORD_PROPERTY = "cayenne.rop.service_password";
/**
* @deprecated since 4.0 moved to cayenne-client org.apache.cayenne.configuration.rop.client.ClientConstants.
*/
@Deprecated
- public static final String ROP_SERVICE_REALM_PROPERTY = "cayenne.rop.service_realm";
+ String ROP_SERVICE_REALM_PROPERTY = "cayenne.rop.service_realm";
/**
* A boolean property that defines whether ALPN should be used.
@@ -232,44 +239,36 @@ public interface Constants {
* @deprecated since 4.0 moved to cayenne-client org.apache.cayenne.configuration.rop.client.ClientConstants.
*/
@Deprecated
- public static final String ROP_SERVICE_USE_ALPN_PROPERTY = "cayenne.rop.service_use_alpn";
+ String ROP_SERVICE_USE_ALPN_PROPERTY = "cayenne.rop.service_use_alpn";
/**
* @deprecated since 4.0 moved to cayenne-client org.apache.cayenne.configuration.rop.client.ClientConstants.
*/
@Deprecated
- public static final String ROP_SERVICE_SHARED_SESSION_PROPERTY = "cayenne.rop.shared_session_name";
+ String ROP_SERVICE_SHARED_SESSION_PROPERTY = "cayenne.rop.shared_session_name";
/**
* @deprecated since 4.0 moved to cayenne-client org.apache.cayenne.configuration.rop.client.ClientConstants.
*/
@Deprecated
- public static final String ROP_SERVICE_TIMEOUT_PROPERTY = "cayenne.rop.service_timeout";
+ String ROP_SERVICE_TIMEOUT_PROPERTY = "cayenne.rop.service_timeout";
/**
* @deprecated since 4.0 moved to cayenne-client org.apache.cayenne.configuration.rop.client.ClientConstants.
*/
@Deprecated
- public static final String ROP_CHANNEL_EVENTS_PROPERTY = "cayenne.rop.channel_events";
+ String ROP_CHANNEL_EVENTS_PROPERTY = "cayenne.rop.channel_events";
/**
* @deprecated since 4.0 moved to cayenne-client org.apache.cayenne.configuration.rop.client.ClientConstants.
*/
@Deprecated
- public static final String ROP_CONTEXT_CHANGE_EVENTS_PROPERTY = "cayenne.rop.context_change_events";
+ String ROP_CONTEXT_CHANGE_EVENTS_PROPERTY = "cayenne.rop.context_change_events";
/**
* @deprecated since 4.0 moved to cayenne-client org.apache.cayenne.configuration.rop.client.ClientConstants.
*/
@Deprecated
- public static final String ROP_CONTEXT_LIFECYCLE_EVENTS_PROPERTY = "cayenne.rop.context_lifecycle_events";
-
- /**
- * A DI container key for the Map<String, String> storing
- * {@link org.apache.cayenne.access.DataRowStore} properties
- *
- * @since 4.0
- */
- public static final String DATA_ROW_STORE_PROPERTIES_MAP = "cayenne.server.data_row_store";
+ String ROP_CONTEXT_LIFECYCLE_EVENTS_PROPERTY = "cayenne.rop.context_lifecycle_events";
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/46450e75/cayenne-server/src/main/java/org/apache/cayenne/configuration/server/ServerModule.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/configuration/server/ServerModule.java b/cayenne-server/src/main/java/org/apache/cayenne/configuration/server/ServerModule.java
index 5a4bf66..49b9624 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/configuration/server/ServerModule.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/configuration/server/ServerModule.java
@@ -137,6 +137,17 @@ public class ServerModule implements Module {
}
/**
+ * Sets max size of snapshot cache, in pre 4.0 version this was set in the Modeler.
+ *
+ * @param binder DI binder passed to the module during injector startup.
+ * @param size max size of snapshot cache
+ * @since 4.0
+ */
+ public static void setSnapshotCacheSize(Binder binder, int size) {
+ contributeProperties(binder).put(Constants.SNAPSHOT_CACHE_SIZE_PROPERTY, Integer.toString(size));
+ }
+
+ /**
* Provides access to a DI collection builder for String locations that allows downstream modules to
* "contribute" their own Cayenne project locations.
*
@@ -301,8 +312,6 @@ public class ServerModule implements Module {
binder.bind(DataRowStoreFactory.class).to(DefaultDataRowStoreFactory.class);
- binder.bindMap(Constants.DATA_ROW_STORE_PROPERTIES_MAP);
-
// a service to provide the main stack DataDomain
binder.bind(DataDomain.class).toProvider(DataDomainProvider.class);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/46450e75/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextSerializationIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextSerializationIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextSerializationIT.java
index 5ac9f0c..7c3e621 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextSerializationIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextSerializationIT.java
@@ -24,6 +24,7 @@ import org.apache.cayenne.ObjectContext;
import org.apache.cayenne.PersistenceState;
import org.apache.cayenne.Persistent;
import org.apache.cayenne.configuration.CayenneRuntime;
+import org.apache.cayenne.configuration.DefaultRuntimeProperties;
import org.apache.cayenne.configuration.server.ServerRuntime;
import org.apache.cayenne.di.Inject;
import org.apache.cayenne.log.JdbcEventLogger;
@@ -149,10 +150,10 @@ public class DataContextSerializationIT extends ServerCase {
DataDomain domain = context.getParentDataDomain();
DataRowStore snapshotCache = new DataRowStore(
domain.getName(),
- domain.getProperties(),
+ new DefaultRuntimeProperties(domain.getProperties()),
domain.getEventManager());
- Map<Object, Persistent> map = new HashMap<Object, Persistent>();
+ Map<Object, Persistent> map = new HashMap<>();
DataContext localCacheContext = new DataContext(domain, new ObjectStore(
snapshotCache,
http://git-wip-us.apache.org/repos/asf/cayenne/blob/46450e75/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextSharedCacheEmpiricIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextSharedCacheEmpiricIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextSharedCacheEmpiricIT.java
index dec040c..5bae357 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextSharedCacheEmpiricIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextSharedCacheEmpiricIT.java
@@ -20,6 +20,7 @@
package org.apache.cayenne.access;
import org.apache.cayenne.DataRow;
+import org.apache.cayenne.configuration.DefaultRuntimeProperties;
import org.apache.cayenne.configuration.ObjectStoreFactory;
import org.apache.cayenne.configuration.server.ServerRuntime;
import org.apache.cayenne.di.Inject;
@@ -67,7 +68,7 @@ public class DataContextSharedCacheEmpiricIT extends ServerCase {
eventManager = new DefaultEventManager();
DataRowStore cache = new DataRowStore(
"cacheTest",
- Collections.EMPTY_MAP,
+ new DefaultRuntimeProperties(Collections.<String, String>emptyMap()),
eventManager);
c1 = new DataContext(runtime.getDataDomain(),
@@ -91,7 +92,7 @@ public class DataContextSharedCacheEmpiricIT extends ServerCase {
@Test
public void testSelectSelectCommitRefresh() throws Exception {
- SelectQuery query = new SelectQuery(Artist.class);
+ SelectQuery<Artist> query = new SelectQuery<>(Artist.class);
// select both, a2 should go second...
List<?> artists = c1.performQuery(query);
@@ -112,7 +113,7 @@ public class DataContextSharedCacheEmpiricIT extends ServerCase {
@Test
public void testSelectSelectCommitRefreshReverse() throws Exception {
- SelectQuery query = new SelectQuery(Artist.class);
+ SelectQuery<Artist> query = new SelectQuery<>(Artist.class);
List<?> altArtists = c2.performQuery(query);
final Artist a2 = (Artist) altArtists.get(0);
@@ -132,7 +133,7 @@ public class DataContextSharedCacheEmpiricIT extends ServerCase {
@Test
public void testSelectUpdateSelectCommitRefresh() throws Exception {
- SelectQuery query = new SelectQuery(Artist.class);
+ SelectQuery<Artist> query = new SelectQuery<>(Artist.class);
List<?> artists = c1.performQuery(query);
Artist a1 = (Artist) artists.get(0);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/46450e75/cayenne-server/src/test/java/org/apache/cayenne/access/DataDomainIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DataDomainIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DataDomainIT.java
index 05acc0e..21f4d3a 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DataDomainIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DataDomainIT.java
@@ -23,6 +23,7 @@ import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.ObjectContext;
import org.apache.cayenne.Persistent;
import org.apache.cayenne.annotation.PostAdd;
+import org.apache.cayenne.configuration.DefaultRuntimeProperties;
import org.apache.cayenne.configuration.server.ServerRuntime;
import org.apache.cayenne.di.Inject;
import org.apache.cayenne.event.DefaultEventManager;
@@ -227,8 +228,9 @@ public class DataDomainIT extends ServerCase {
DefaultEventManager eventManager = new DefaultEventManager();
try {
- DataRowStore cache = new DataRowStore("Y", Collections.EMPTY_MAP, eventManager) {
-
+ DataRowStore cache = new DataRowStore("Y",
+ new DefaultRuntimeProperties(Collections.<String, String>emptyMap()),
+ eventManager) {
@Override
public void shutdown() {
cacheShutdown[0] = true;
http://git-wip-us.apache.org/repos/asf/cayenne/blob/46450e75/cayenne-server/src/test/java/org/apache/cayenne/access/DataRowStoreIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DataRowStoreIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DataRowStoreIT.java
index 889abd8..d2180b2 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DataRowStoreIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DataRowStoreIT.java
@@ -21,6 +21,8 @@ package org.apache.cayenne.access;
import org.apache.cayenne.DataRow;
import org.apache.cayenne.ObjectId;
+import org.apache.cayenne.configuration.Constants;
+import org.apache.cayenne.configuration.DefaultRuntimeProperties;
import org.apache.cayenne.testdo.testmap.Artist;
import org.apache.cayenne.unit.di.server.CayenneProjects;
import org.apache.cayenne.unit.di.server.ServerCase;
@@ -59,7 +61,7 @@ public class DataRowStoreIT extends ServerCase {
public void testDefaultConstructor() {
cache = new DataRowStore(
"cacheXYZ",
- Collections.<String, String>emptyMap(),
+ new DefaultRuntimeProperties(Collections.<String, String>emptyMap()),
null);
assertEquals("cacheXYZ", cache.getName());
assertNotNull(cache.getSnapshotEventSubject());
@@ -72,11 +74,11 @@ public class DataRowStoreIT extends ServerCase {
@Test
public void testMaxSize() throws Exception {
Map<String, String> props = new HashMap<>();
- props.put(DataRowStore.SNAPSHOT_CACHE_SIZE_PROPERTY, String.valueOf(2));
+ props.put(Constants.SNAPSHOT_CACHE_SIZE_PROPERTY, String.valueOf(2));
cache = new DataRowStore(
"cacheXYZ",
- props,
+ new DefaultRuntimeProperties(props),
null);
assertEquals(2, cache.maximumSize());
assertEquals(0, cache.size());
http://git-wip-us.apache.org/repos/asf/cayenne/blob/46450e75/cayenne-server/src/test/java/org/apache/cayenne/access/DefaultDataRowStoreFactoryIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DefaultDataRowStoreFactoryIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DefaultDataRowStoreFactoryIT.java
index 779396a..7aeb303 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DefaultDataRowStoreFactoryIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DefaultDataRowStoreFactoryIT.java
@@ -19,9 +19,9 @@
package org.apache.cayenne.access;
-import org.apache.cayenne.configuration.Constants;
import org.apache.cayenne.configuration.DefaultRuntimeProperties;
import org.apache.cayenne.configuration.RuntimeProperties;
+import org.apache.cayenne.configuration.server.ServerModule;
import org.apache.cayenne.configuration.server.ServerRuntime;
import org.apache.cayenne.di.Binder;
import org.apache.cayenne.di.DIBootstrap;
@@ -64,12 +64,9 @@ public class DefaultDataRowStoreFactoryIT extends ServerCase {
final DataDomain DOMAIN = new DataDomain("test");
final EventManager EVENT_MANAGER = new DefaultEventManager();
final int CACHE_SIZE = 500;
- final int EXPIRATION_PROPERTY = 60 * 60 * 24;
Module testModule = new Module() {
-
public void configure(Binder binder) {
- binder.bindMap(Constants.PROPERTIES_MAP);
binder.bind(DataDomain.class).toInstance(DOMAIN);
binder.bind(EventManager.class).toInstance(EVENT_MANAGER);
binder.bind(TransactionManager.class).to(DefaultTransactionManager.class);
@@ -78,9 +75,7 @@ public class DefaultDataRowStoreFactoryIT extends ServerCase {
binder.bind(RuntimeProperties.class).to(DefaultRuntimeProperties.class);
binder.bind(EventBridge.class).toProvider(NoopEventBridgeProvider.class);
binder.bind(DataRowStoreFactory.class).to(DefaultDataRowStoreFactory.class);
- binder.bindMap(Constants.DATA_ROW_STORE_PROPERTIES_MAP)
- .put(DataRowStore.SNAPSHOT_CACHE_SIZE_PROPERTY, String.valueOf(CACHE_SIZE))
- .put(DataRowStore.SNAPSHOT_EXPIRATION_PROPERTY, String.valueOf(EXPIRATION_PROPERTY));
+ ServerModule.setSnapshotCacheSize(binder, CACHE_SIZE);
}
};
@@ -98,9 +93,7 @@ public class DefaultDataRowStoreFactoryIT extends ServerCase {
final EventManager EVENT_MANAGER = new DefaultEventManager();
Module testModule = new Module() {
-
public void configure(Binder binder) {
- binder.bindMap(Constants.PROPERTIES_MAP);
binder.bind(DataDomain.class).toInstance(DOMAIN);
binder.bind(EventManager.class).toInstance(EVENT_MANAGER);
binder.bind(TransactionManager.class).to(DefaultTransactionManager.class);
@@ -109,7 +102,7 @@ public class DefaultDataRowStoreFactoryIT extends ServerCase {
binder.bind(RuntimeProperties.class).to(DefaultRuntimeProperties.class);
binder.bind(EventBridge.class).toProvider(MockEventBridgeProvider.class);
binder.bind(DataRowStoreFactory.class).to(DefaultDataRowStoreFactory.class);
- binder.bindMap(Constants.DATA_ROW_STORE_PROPERTIES_MAP);
+ ServerModule.contributeProperties(binder);
}
};
http://git-wip-us.apache.org/repos/asf/cayenne/blob/46450e75/cayenne-server/src/test/java/org/apache/cayenne/access/MockDataRowStore.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/MockDataRowStore.java b/cayenne-server/src/test/java/org/apache/cayenne/access/MockDataRowStore.java
index 76ac2cb..a2e48d5 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/MockDataRowStore.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/MockDataRowStore.java
@@ -21,6 +21,8 @@ package org.apache.cayenne.access;
import org.apache.cayenne.DataRow;
import org.apache.cayenne.ObjectId;
+import org.apache.cayenne.configuration.Constants;
+import org.apache.cayenne.configuration.DefaultRuntimeProperties;
import org.apache.cayenne.event.MockEventManager;
import java.util.HashMap;
@@ -31,14 +33,14 @@ import java.util.Map;
*/
public class MockDataRowStore extends DataRowStore {
- private static final Map TEST_DEFAULTS = new HashMap();
+ private static final Map<String, String> TEST_DEFAULTS = new HashMap<>();
static {
- TEST_DEFAULTS.put(DataRowStore.SNAPSHOT_CACHE_SIZE_PROPERTY, new Integer(10));
+ TEST_DEFAULTS.put(Constants.SNAPSHOT_CACHE_SIZE_PROPERTY, Integer.toString(10));
}
public MockDataRowStore() {
- super("mock DataRowStore", TEST_DEFAULTS, new MockEventManager());
+ super("mock DataRowStore", new DefaultRuntimeProperties(TEST_DEFAULTS), new MockEventManager());
}
/**
@@ -48,7 +50,7 @@ public class MockDataRowStore extends DataRowStore {
snapshots.put(id, snapshot);
}
- public void putSnapshot(ObjectId id, Map snapshot) {
+ public void putSnapshot(ObjectId id, Map<String, ?> snapshot) {
snapshots.put(id, new DataRow(snapshot));
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/46450e75/cayenne-server/src/test/java/org/apache/cayenne/configuration/server/DataContextFactoryTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/configuration/server/DataContextFactoryTest.java b/cayenne-server/src/test/java/org/apache/cayenne/configuration/server/DataContextFactoryTest.java
index f7a362d..3eca368 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/configuration/server/DataContextFactoryTest.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/configuration/server/DataContextFactoryTest.java
@@ -26,7 +26,6 @@ import org.apache.cayenne.access.DefaultObjectMapRetainStrategy;
import org.apache.cayenne.access.ObjectMapRetainStrategy;
import org.apache.cayenne.cache.MapQueryCache;
import org.apache.cayenne.cache.QueryCache;
-import org.apache.cayenne.configuration.Constants;
import org.apache.cayenne.configuration.DefaultObjectStoreFactory;
import org.apache.cayenne.configuration.DefaultRuntimeProperties;
import org.apache.cayenne.configuration.ObjectStoreFactory;
@@ -73,7 +72,7 @@ public class DataContextFactoryTest {
binder.bind(EventManager.class).toInstance(eventManager);
binder.bind(QueryCache.class).toInstance(new MapQueryCache(5));
binder.bind(RuntimeProperties.class).toInstance(
- new DefaultRuntimeProperties(Collections.EMPTY_MAP));
+ new DefaultRuntimeProperties(Collections.<String, String>emptyMap()));
binder.bind(ObjectMapRetainStrategy.class).to(
DefaultObjectMapRetainStrategy.class);
binder.bind(ObjectStoreFactory.class).to(DefaultObjectStoreFactory.class);
@@ -82,7 +81,6 @@ public class DataContextFactoryTest {
binder.bind(DataRowStoreFactory.class).to(DefaultDataRowStoreFactory.class);
binder.bind(EventBridge.class).toProvider(NoopEventBridgeProvider.class);
binder.bind(DataRowStoreFactory.class).to(DefaultDataRowStoreFactory.class);
- binder.bindMap(Constants.DATA_ROW_STORE_PROPERTIES_MAP);
}
};
@@ -114,7 +112,7 @@ public class DataContextFactoryTest {
binder.bind(EventManager.class).toInstance(eventManager);
binder.bind(QueryCache.class).toInstance(new MapQueryCache(5));
binder.bind(RuntimeProperties.class).toInstance(
- new DefaultRuntimeProperties(Collections.EMPTY_MAP));
+ new DefaultRuntimeProperties(Collections.<String, String>emptyMap()));
binder.bind(ObjectMapRetainStrategy.class).to(
DefaultObjectMapRetainStrategy.class);
binder.bind(ObjectStoreFactory.class).to(DefaultObjectStoreFactory.class);
@@ -122,7 +120,6 @@ public class DataContextFactoryTest {
binder.bind(TransactionManager.class).to(DefaultTransactionManager.class);
binder.bind(EventBridge.class).toProvider(NoopEventBridgeProvider.class);
binder.bind(DataRowStoreFactory.class).to(DefaultDataRowStoreFactory.class);
- binder.bindMap(Constants.DATA_ROW_STORE_PROPERTIES_MAP);
}
};
http://git-wip-us.apache.org/repos/asf/cayenne/blob/46450e75/cayenne-server/src/test/java/org/apache/cayenne/configuration/server/DataDomainProviderTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/configuration/server/DataDomainProviderTest.java b/cayenne-server/src/test/java/org/apache/cayenne/configuration/server/DataDomainProviderTest.java
index 7fe4763..3e96950 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/configuration/server/DataDomainProviderTest.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/configuration/server/DataDomainProviderTest.java
@@ -199,7 +199,6 @@ public class DataDomainProviderTest {
binder.bind(EventBridge.class).toProvider(NoopEventBridgeProvider.class);
binder.bind(DataRowStoreFactory.class).to(DefaultDataRowStoreFactory.class);
- binder.bindMap(Constants.DATA_ROW_STORE_PROPERTIES_MAP);
}
};
http://git-wip-us.apache.org/repos/asf/cayenne/blob/46450e75/docs/doc/src/main/resources/UPGRADE.txt
----------------------------------------------------------------------
diff --git a/docs/doc/src/main/resources/UPGRADE.txt b/docs/doc/src/main/resources/UPGRADE.txt
index f90a816..6afe47d 100644
--- a/docs/doc/src/main/resources/UPGRADE.txt
+++ b/docs/doc/src/main/resources/UPGRADE.txt
@@ -7,14 +7,12 @@ IMPORTANT: be sure to read all notes for the intermediate releases between your
UPGRADING TO 4.0.M6
-* Per CAY-1873 and CAY-2266 Cache and remote notification configuration was moved
- from Modeler into runtime DI settings. To set custom cache size and expiration time,
- you should use custom module like this:
+* Per CAY-1873 and CAY-2266 Cache and remote notification configuration was moved from Modeler into
+ runtime DI settings. To set custom cache size, you should use custom module like this:
Module module = binder -> {
- binder.bindMap(Constants.DATA_ROW_STORE_PROPERTIES_MAP)
- .put(DataRowStore.SNAPSHOT_EXPIRATION_PROPERTY, "10800")
- .put(DataRowStore.SNAPSHOT_CACHE_SIZE_PROPERTY, "20000");
+ ServerModule.setSnapshotCacheSize(binder, 20000);
};
+ Or you can use cmd line arg: -Dcayenne.DataRowStore.snapshot.size=20000
If you have used remote notifications, you should include one of the following modules into your project:
- cayenne-jgroups