You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by ab...@apache.org on 2019/01/18 13:11:22 UTC
[cayenne] branch master updated (d6ae2be -> 290b2e6)
This is an automated email from the ASF dual-hosted git repository.
abulatski pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git.
from d6ae2be Merge pull request #359 from aarrsseni/CAY-2509
new 77d67e7 CAY-2514 Set SERVER_CONTEXTS_SYNC_PROPERTY default value to false
new 905a1c9 Cleanup
new 290b2e6 Update UPGRADE.txt
The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
RELEASE-NOTES.txt | 1 +
UPGRADE.txt | 3 +
.../configuration/rop/client/ClientModule.java | 11 ++--
.../CayenneContextClientChannelEventsIT.java | 4 +-
.../configuration/rop/client/ClientModuleTest.java | 10 +++-
.../rop/client/ClientRuntimeTest.java | 10 +++-
...ClientCase.java => ClientCaseContextsSync.java} | 25 +++++---
.../unit/di/client/ClientRuntimeProvider.java | 24 +++++---
.../client/ClientRuntimeProviderContextsSync.java | 28 ++++-----
.../dbsync/unit/DbSyncServerRuntimeProvider.java | 9 ++-
.../jcache/unit/CacheServerRuntimeProvider.java | 3 +-
.../configuration/DefaultObjectStoreFactory.java | 2 +-
.../cayenne/configuration/server/ServerModule.java | 12 ++--
.../EventManagerProvider.java} | 17 +++---
.../apache/cayenne/event/NoopEventManager.java} | 69 +++++++++-------------
.../access/DataContextDataChannelEventsIT.java | 4 +-
.../access/DataContextDelegateSharedCacheIT.java | 8 +--
.../access/DataContextSharedCacheEmpiricIT.java | 10 ++--
.../cayenne/access/DataContextSharedCacheIT.java | 16 ++---
.../access/NestedDataContextParentEventsIT.java | 4 +-
.../NestedDataContextParentPeerEventsIT.java | 4 +-
.../access/NestedDataContextPeerEventsIT.java | 4 +-
.../apache/cayenne/access/jdbc/SelectActionIT.java | 8 +--
.../unit/di/server/ServerCaseContextsSync.java | 34 +++++++----
.../unit/di/server/ServerRuntimeProvider.java | 10 ++--
.../server/ServerRuntimeProviderContextsSync.java | 33 ++++++-----
...WeakReferenceStrategyServerRuntimeProvider.java | 9 ++-
27 files changed, 197 insertions(+), 175 deletions(-)
copy cayenne-client/src/test/java/org/apache/cayenne/unit/di/client/{ClientCase.java => ClientCaseContextsSync.java} (72%)
copy cayenne-jcache/src/main/java/org/apache/cayenne/jcache/JCacheServerModuleProvider.java => cayenne-client/src/test/java/org/apache/cayenne/unit/di/client/ClientRuntimeProviderContextsSync.java (66%)
copy cayenne-server/src/main/java/org/apache/cayenne/{cache/MapQueryCacheProvider.java => event/EventManagerProvider.java} (74%)
copy cayenne-server/src/{test/java/org/apache/cayenne/event/MockEventManager.java => main/java/org/apache/cayenne/event/NoopEventManager.java} (62%)
copy cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/unit/DbSyncCase.java => cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseContextsSync.java (69%)
copy cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/unit/DbSyncServerRuntimeProvider.java => cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/ServerRuntimeProviderContextsSync.java (62%)
[cayenne] 02/03: Cleanup
Posted by ab...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
abulatski pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git
commit 905a1c9d9c40386718f4b0586fcfe21934353bab
Author: Arseni Bulatski <an...@gmail.com>
AuthorDate: Fri Jan 18 13:10:51 2019 +0300
Cleanup
---
.../unit/di/client/ClientRuntimeProvider.java | 24 +++++++++----
.../client/ClientRuntimeProviderContextsSync.java | 42 +++++++---------------
.../dbsync/unit/DbSyncServerRuntimeProvider.java | 9 +++--
.../jcache/unit/CacheServerRuntimeProvider.java | 3 +-
.../unit/di/server/ServerRuntimeProvider.java | 10 +++---
.../server/ServerRuntimeProviderContextsSync.java | 27 ++++----------
...WeakReferenceStrategyServerRuntimeProvider.java | 9 +++--
7 files changed, 50 insertions(+), 74 deletions(-)
diff --git a/cayenne-client/src/test/java/org/apache/cayenne/unit/di/client/ClientRuntimeProvider.java b/cayenne-client/src/test/java/org/apache/cayenne/unit/di/client/ClientRuntimeProvider.java
index 3c1ff8c..a898f22 100644
--- a/cayenne-client/src/test/java/org/apache/cayenne/unit/di/client/ClientRuntimeProvider.java
+++ b/cayenne-client/src/test/java/org/apache/cayenne/unit/di/client/ClientRuntimeProvider.java
@@ -18,6 +18,10 @@
****************************************************************/
package org.apache.cayenne.unit.di.client;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+
import org.apache.cayenne.ConfigurationException;
import org.apache.cayenne.DataChannel;
import org.apache.cayenne.configuration.rop.client.ClientRuntime;
@@ -25,6 +29,7 @@ import org.apache.cayenne.configuration.rop.client.LocalConnectionProvider;
import org.apache.cayenne.configuration.server.ServerRuntime;
import org.apache.cayenne.di.Inject;
import org.apache.cayenne.di.Key;
+import org.apache.cayenne.di.Module;
import org.apache.cayenne.di.Provider;
import org.apache.cayenne.remote.ClientConnection;
@@ -37,16 +42,21 @@ public class ClientRuntimeProvider implements Provider<ClientRuntime> {
@Inject
protected ClientCaseProperties clientCaseProperties;
+ protected Collection<? extends Module> getModules() {
+ return Collections.singleton(binder -> {
+ // add an interceptor between client and server parts to capture and inspect the traffic
+ binder.bind(Key.get(DataChannel.class, ClientRuntime.CLIENT_SERVER_CHANNEL_KEY))
+ .toProviderInstance(new InterceptingClientServerChannelProvider(serverRuntimeProvider.get().getInjector()));
+ // create local connection
+ binder.bind(ClientConnection.class).toProviderInstance(new LocalConnectionProvider());
+ });
+ }
+
public ClientRuntime get() throws ConfigurationException {
+ Collection<Module> modules = new ArrayList<>(getModules());
return ClientRuntime.builder()
.properties(clientCaseProperties.getRuntimeProperties())
- .addModule(binder -> {
- // add an interceptor between client and server parts to capture and inspect the traffic
- binder.bind(Key.get(DataChannel.class, ClientRuntime.CLIENT_SERVER_CHANNEL_KEY))
- .toProviderInstance(new InterceptingClientServerChannelProvider(serverRuntimeProvider.get().getInjector()));
- // create local connection
- binder.bind(ClientConnection.class).toProviderInstance(new LocalConnectionProvider());
- })
+ .addModules(modules)
.build();
}
}
diff --git a/cayenne-client/src/test/java/org/apache/cayenne/unit/di/client/ClientRuntimeProviderContextsSync.java b/cayenne-client/src/test/java/org/apache/cayenne/unit/di/client/ClientRuntimeProviderContextsSync.java
index 01c6d7a..a48ce76 100644
--- a/cayenne-client/src/test/java/org/apache/cayenne/unit/di/client/ClientRuntimeProviderContextsSync.java
+++ b/cayenne-client/src/test/java/org/apache/cayenne/unit/di/client/ClientRuntimeProviderContextsSync.java
@@ -18,43 +18,25 @@
****************************************************************/
package org.apache.cayenne.unit.di.client;
-import org.apache.cayenne.ConfigurationException;
-import org.apache.cayenne.DataChannel;
+import java.util.ArrayList;
+import java.util.Collection;
+
import org.apache.cayenne.configuration.Constants;
-import org.apache.cayenne.configuration.rop.client.ClientRuntime;
-import org.apache.cayenne.configuration.rop.client.LocalConnectionProvider;
import org.apache.cayenne.configuration.server.ServerModule;
-import org.apache.cayenne.configuration.server.ServerRuntime;
-import org.apache.cayenne.di.Inject;
-import org.apache.cayenne.di.Key;
-import org.apache.cayenne.di.Provider;
-import org.apache.cayenne.remote.ClientConnection;
+import org.apache.cayenne.di.Module;
/**
* @since 4.1
*/
-public class ClientRuntimeProviderContextsSync implements Provider<ClientRuntime> {
-
- // injecting provider to make this provider independent from scoping of ServerRuntime
- @Inject
- protected Provider<ServerRuntime> serverRuntimeProvider;
-
- @Inject
- protected ClientCaseProperties clientCaseProperties;
+public class ClientRuntimeProviderContextsSync extends ClientRuntimeProvider {
- public ClientRuntime get() throws ConfigurationException {
- return ClientRuntime.builder()
- .properties(clientCaseProperties.getRuntimeProperties())
- .addModule(binder -> {
- // add an interceptor between client and server parts to capture and inspect the traffic
- binder.bind(Key.get(DataChannel.class, ClientRuntime.CLIENT_SERVER_CHANNEL_KEY))
- .toProviderInstance(new InterceptingClientServerChannelProvider(serverRuntimeProvider.get().getInjector()));
- // create local connection
- binder.bind(ClientConnection.class).toProviderInstance(new LocalConnectionProvider());
- ServerModule.contributeProperties(binder)
- .put(Constants.SERVER_CONTEXTS_SYNC_PROPERTY, String.valueOf(true));
- })
- .build();
+ @Override
+ protected Collection<? extends Module> getModules() {
+ Collection<Module> modules = new ArrayList<>(super.getModules());
+ modules.add(binder ->
+ ServerModule.contributeProperties(binder)
+ .put(Constants.SERVER_CONTEXTS_SYNC_PROPERTY, String.valueOf(true)));
+ return modules;
}
}
diff --git a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/unit/DbSyncServerRuntimeProvider.java b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/unit/DbSyncServerRuntimeProvider.java
index 32b3b57..c39038d 100644
--- a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/unit/DbSyncServerRuntimeProvider.java
+++ b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/unit/DbSyncServerRuntimeProvider.java
@@ -18,6 +18,9 @@
****************************************************************/
package org.apache.cayenne.dbsync.unit;
+import java.util.ArrayList;
+import java.util.Collection;
+
import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.dbsync.DbSyncModule;
import org.apache.cayenne.di.Inject;
@@ -28,9 +31,6 @@ import org.apache.cayenne.unit.di.server.ServerCaseDataSourceFactory;
import org.apache.cayenne.unit.di.server.ServerCaseProperties;
import org.apache.cayenne.unit.di.server.ServerRuntimeProvider;
-import java.util.ArrayList;
-import java.util.Collection;
-
public class DbSyncServerRuntimeProvider extends ServerRuntimeProvider {
public DbSyncServerRuntimeProvider(@Inject ServerCaseDataSourceFactory dataSourceFactory,
@@ -42,8 +42,7 @@ public class DbSyncServerRuntimeProvider extends ServerRuntimeProvider {
@Override
protected Collection<? extends Module> getExtraModules() {
- Collection<Module> modules = new ArrayList<>();
- modules.addAll(super.getExtraModules());
+ Collection<Module> modules = new ArrayList<>(super.getExtraModules());
modules.add(new DbSyncModule());
return modules;
}
diff --git a/cayenne-jcache/src/test/java/org/apache/cayenne/jcache/unit/CacheServerRuntimeProvider.java b/cayenne-jcache/src/test/java/org/apache/cayenne/jcache/unit/CacheServerRuntimeProvider.java
index 4595a28..d9df7f6 100644
--- a/cayenne-jcache/src/test/java/org/apache/cayenne/jcache/unit/CacheServerRuntimeProvider.java
+++ b/cayenne-jcache/src/test/java/org/apache/cayenne/jcache/unit/CacheServerRuntimeProvider.java
@@ -43,8 +43,7 @@ public class CacheServerRuntimeProvider extends ServerRuntimeProvider {
@Override
protected Collection<? extends Module> getExtraModules() {
- Collection<Module> modules = new ArrayList<>();
- modules.addAll(super.getExtraModules());
+ Collection<Module> modules = new ArrayList<>(super.getExtraModules());
modules.add(new JCacheModule());
return modules;
}
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/ServerRuntimeProvider.java b/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/ServerRuntimeProvider.java
index 843b910..fd0c841 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/ServerRuntimeProvider.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/ServerRuntimeProvider.java
@@ -18,6 +18,10 @@
****************************************************************/
package org.apache.cayenne.unit.di.server;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+
import org.apache.cayenne.ConfigurationException;
import org.apache.cayenne.access.DataDomain;
import org.apache.cayenne.configuration.Constants;
@@ -31,9 +35,6 @@ import org.apache.cayenne.di.Module;
import org.apache.cayenne.di.Provider;
import org.apache.cayenne.unit.UnitDbAdapter;
-import java.util.Collection;
-import java.util.Collections;
-
public class ServerRuntimeProvider implements Provider<ServerRuntime> {
private ServerCaseProperties properties;
@@ -53,7 +54,6 @@ public class ServerRuntimeProvider implements Provider<ServerRuntime> {
this.unitDbAdapter = unitDbAdapter;
}
- @SuppressWarnings("unchecked")
@Override
public ServerRuntime get() throws ConfigurationException {
@@ -63,7 +63,7 @@ public class ServerRuntimeProvider implements Provider<ServerRuntime> {
+ "annotate your test case with @UseServerRuntime");
}
- Collection modules = getExtraModules();
+ Collection<Module> modules = new ArrayList<>(getExtraModules());
return ServerRuntime.builder()
.addConfig(configurationLocation)
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/ServerRuntimeProviderContextsSync.java b/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/ServerRuntimeProviderContextsSync.java
index f5e38df..95a76c4 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/ServerRuntimeProviderContextsSync.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/ServerRuntimeProviderContextsSync.java
@@ -18,14 +18,14 @@
****************************************************************/
package org.apache.cayenne.unit.di.server;
+import java.util.ArrayList;
import java.util.Collection;
-import org.apache.cayenne.ConfigurationException;
import org.apache.cayenne.configuration.Constants;
import org.apache.cayenne.configuration.server.ServerModule;
-import org.apache.cayenne.configuration.server.ServerRuntime;
import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.di.Inject;
+import org.apache.cayenne.di.Module;
import org.apache.cayenne.di.Provider;
import org.apache.cayenne.unit.UnitDbAdapter;
@@ -34,31 +34,18 @@ import org.apache.cayenne.unit.UnitDbAdapter;
*/
public class ServerRuntimeProviderContextsSync extends ServerRuntimeProvider {
- private ServerCaseProperties properties;
-
public ServerRuntimeProviderContextsSync(@Inject ServerCaseDataSourceFactory dataSourceFactory,
@Inject ServerCaseProperties properties,
@Inject Provider<DbAdapter> dbAdapterProvider,
@Inject UnitDbAdapter unitDbAdapter) {
super(dataSourceFactory, properties, dbAdapterProvider, unitDbAdapter);
- this.properties = properties;
}
- @SuppressWarnings("unchecked")
@Override
- public ServerRuntime get() throws ConfigurationException {
- String configurationLocation = properties.getConfigurationLocation();
- if (configurationLocation == null) {
- throw new NullPointerException("Null 'configurationLocation', "
- + "annotate your test case with @UseServerRuntime");
- }
- Collection modules = getExtraModules();
-
- return ServerRuntime.builder()
- .addConfig(configurationLocation)
- .addModules(modules)
- .addModule(binder -> ServerModule.contributeProperties(binder)
- .put(Constants.SERVER_CONTEXTS_SYNC_PROPERTY, String.valueOf(true)))
- .build();
+ protected Collection<? extends Module> getExtraModules() {
+ Collection<Module> modules = new ArrayList<>(super.getExtraModules());
+ modules.add(binder -> ServerModule.contributeProperties(binder)
+ .put(Constants.SERVER_CONTEXTS_SYNC_PROPERTY, String.valueOf(true)));
+ return modules;
}
}
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/WeakReferenceStrategyServerRuntimeProvider.java b/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/WeakReferenceStrategyServerRuntimeProvider.java
index c067c49..c4beed3 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/WeakReferenceStrategyServerRuntimeProvider.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/WeakReferenceStrategyServerRuntimeProvider.java
@@ -1,14 +1,14 @@
package org.apache.cayenne.unit.di.server;
+import java.util.ArrayList;
+import java.util.Collection;
+
import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.di.Inject;
import org.apache.cayenne.di.Module;
import org.apache.cayenne.di.Provider;
import org.apache.cayenne.unit.UnitDbAdapter;
-import java.util.ArrayList;
-import java.util.Collection;
-
public class WeakReferenceStrategyServerRuntimeProvider extends ServerRuntimeProvider {
public WeakReferenceStrategyServerRuntimeProvider(@Inject ServerCaseDataSourceFactory dataSourceFactory,
@@ -20,8 +20,7 @@ public class WeakReferenceStrategyServerRuntimeProvider extends ServerRuntimePro
@Override
protected Collection<? extends Module> getExtraModules() {
- Collection<Module> modules = new ArrayList<>();
- modules.addAll(super.getExtraModules());
+ Collection<Module> modules = new ArrayList<>(super.getExtraModules());
modules.add(new WeakReferenceStrategyModule());
return modules;
}
[cayenne] 03/03: Update UPGRADE.txt
Posted by ab...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
abulatski pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git
commit 290b2e6e18c0bb82f4ddaccbf5722c857aafe4b3
Author: Arseni Bulatski <an...@gmail.com>
AuthorDate: Fri Jan 18 15:51:30 2019 +0300
Update UPGRADE.txt
---
UPGRADE.txt | 3 +++
1 file changed, 3 insertions(+)
diff --git a/UPGRADE.txt b/UPGRADE.txt
index d752cdb..c7eb958 100644
--- a/UPGRADE.txt
+++ b/UPGRADE.txt
@@ -10,6 +10,9 @@ UPGRADING TO 4.2.M1
* Per CAY-2467 Property class is replaced with a type-aware Property API, it's mostly backwards compatible.
To take advantage of this new API you should regenerate code via Modeler ("Tools" -> "Generate Classes") or cgen tools.
+UPGRADING TO 4.1.M3
+
+* Per CAY-2514 SERVER_CONTEXTS_SYNC_PROPERTY default value was set to false.
UPGRADING TO 4.1.M2
[cayenne] 01/03: CAY-2514 Set SERVER_CONTEXTS_SYNC_PROPERTY default
value to false
Posted by ab...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
abulatski pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git
commit 77d67e724a1c112fed161d14202947229776d80a
Author: Arseni Bulatski <an...@gmail.com>
AuthorDate: Fri Jan 18 10:38:00 2019 +0300
CAY-2514 Set SERVER_CONTEXTS_SYNC_PROPERTY default value to false
---
RELEASE-NOTES.txt | 1 +
.../configuration/rop/client/ClientModule.java | 11 ++-
.../CayenneContextClientChannelEventsIT.java | 4 +-
.../configuration/rop/client/ClientModuleTest.java | 10 ++-
.../rop/client/ClientRuntimeTest.java | 10 ++-
.../unit/di/client/ClientCaseContextsSync.java | 70 +++++++++++++++++++
.../client/ClientRuntimeProviderContextsSync.java | 60 ++++++++++++++++
.../configuration/DefaultObjectStoreFactory.java | 2 +-
.../cayenne/configuration/server/ServerModule.java | 12 ++--
.../apache/cayenne/event/EventManagerProvider.java | 44 ++++++++++++
.../org/apache/cayenne/event/NoopEventManager.java | 81 ++++++++++++++++++++++
.../access/DataContextDataChannelEventsIT.java | 4 +-
.../access/DataContextDelegateSharedCacheIT.java | 8 +--
.../access/DataContextSharedCacheEmpiricIT.java | 10 +--
.../cayenne/access/DataContextSharedCacheIT.java | 16 ++---
.../access/NestedDataContextParentEventsIT.java | 4 +-
.../NestedDataContextParentPeerEventsIT.java | 4 +-
.../access/NestedDataContextPeerEventsIT.java | 4 +-
.../apache/cayenne/access/jdbc/SelectActionIT.java | 8 +--
.../unit/di/server/ServerCaseContextsSync.java | 65 +++++++++++++++++
.../server/ServerRuntimeProviderContextsSync.java | 64 +++++++++++++++++
21 files changed, 443 insertions(+), 49 deletions(-)
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 628300f..ecbaa20 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -45,6 +45,7 @@ CAY-2491 Remaster Db Import View
CAY-2493 Save cgen configuration with datamap XML
CAY-2494 Rename dbImport tag from 'config' to 'dbImport'
CAY-2499 Support for COUNT(DISTINCT(column)) function aggregate
+CAY-2514 Set SERVER_CONTEXTS_SYNC_PROPERTY default value to false
Bug Fixes:
diff --git a/cayenne-client/src/main/java/org/apache/cayenne/configuration/rop/client/ClientModule.java b/cayenne-client/src/main/java/org/apache/cayenne/configuration/rop/client/ClientModule.java
index 4a95df6..ba07559 100644
--- a/cayenne-client/src/main/java/org/apache/cayenne/configuration/rop/client/ClientModule.java
+++ b/cayenne-client/src/main/java/org/apache/cayenne/configuration/rop/client/ClientModule.java
@@ -18,8 +18,6 @@
****************************************************************/
package org.apache.cayenne.configuration.rop.client;
-import java.util.Map;
-
import org.apache.cayenne.DataChannel;
import org.apache.cayenne.cache.MapQueryCacheProvider;
import org.apache.cayenne.cache.QueryCache;
@@ -28,13 +26,14 @@ import org.apache.cayenne.configuration.ObjectContextFactory;
import org.apache.cayenne.configuration.RuntimeProperties;
import org.apache.cayenne.configuration.server.ServerModule;
import org.apache.cayenne.di.Binder;
-import org.apache.cayenne.di.MapBuilder;
import org.apache.cayenne.di.Module;
-import org.apache.cayenne.event.DefaultEventManager;
import org.apache.cayenne.event.EventManager;
+import org.apache.cayenne.event.EventManagerProvider;
import org.apache.cayenne.remote.ClientConnection;
import org.apache.cayenne.remote.RemoteService;
-import org.apache.cayenne.rop.*;
+import org.apache.cayenne.rop.HttpClientConnectionProvider;
+import org.apache.cayenne.rop.ProxyRemoteService;
+import org.apache.cayenne.rop.ROPSerializationService;
import org.apache.cayenne.rop.http.ClientHessianSerializationServiceProvider;
/**
@@ -61,7 +60,7 @@ public class ClientModule implements Module {
binder.bind(ROPSerializationService.class).toProvider(ClientHessianSerializationServiceProvider.class);
binder.bind(RemoteService.class).to(ProxyRemoteService.class);
binder.bind(ClientConnection.class).toProvider(HttpClientConnectionProvider.class);
- binder.bind(EventManager.class).to(DefaultEventManager.class);
+ binder.bind(EventManager.class).toProvider(EventManagerProvider.class);
binder.bind(RuntimeProperties.class).to(DefaultRuntimeProperties.class);
binder.bind(DataChannel.class).toProvider(ClientChannelProvider.class);
binder.bind(QueryCache.class).toProvider(MapQueryCacheProvider.class);
diff --git a/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextClientChannelEventsIT.java b/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextClientChannelEventsIT.java
index 891f146..49ef1f5 100644
--- a/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextClientChannelEventsIT.java
+++ b/cayenne-client/src/test/java/org/apache/cayenne/CayenneContextClientChannelEventsIT.java
@@ -29,7 +29,7 @@ import org.apache.cayenne.testdo.mt.ClientMtTable1;
import org.apache.cayenne.testdo.mt.ClientMtTable2;
import org.apache.cayenne.testdo.mt.ClientMtTable4;
import org.apache.cayenne.testdo.mt.ClientMtTable5;
-import org.apache.cayenne.unit.di.client.ClientCase;
+import org.apache.cayenne.unit.di.client.ClientCaseContextsSync;
import org.apache.cayenne.unit.di.client.ClientRuntimeProperty;
import org.apache.cayenne.unit.di.server.CayenneProjects;
import org.apache.cayenne.unit.di.server.UseServerRuntime;
@@ -45,7 +45,7 @@ import static org.junit.Assert.*;
@ClientRuntimeProperty({
ClientConstants.ROP_CHANNEL_EVENTS_PROPERTY, "true"
})
-public class CayenneContextClientChannelEventsIT extends ClientCase {
+public class CayenneContextClientChannelEventsIT extends ClientCaseContextsSync {
@Inject
private DBHelper dbHelper;
diff --git a/cayenne-client/src/test/java/org/apache/cayenne/configuration/rop/client/ClientModuleTest.java b/cayenne-client/src/test/java/org/apache/cayenne/configuration/rop/client/ClientModuleTest.java
index 2480c26..0fb1005 100644
--- a/cayenne-client/src/test/java/org/apache/cayenne/configuration/rop/client/ClientModuleTest.java
+++ b/cayenne-client/src/test/java/org/apache/cayenne/configuration/rop/client/ClientModuleTest.java
@@ -18,8 +18,13 @@
****************************************************************/
package org.apache.cayenne.configuration.rop.client;
+import java.util.HashMap;
+import java.util.Map;
+
import org.apache.cayenne.DataChannel;
+import org.apache.cayenne.configuration.Constants;
import org.apache.cayenne.configuration.ObjectContextFactory;
+import org.apache.cayenne.configuration.server.ServerModule;
import org.apache.cayenne.di.Binder;
import org.apache.cayenne.di.DIBootstrap;
import org.apache.cayenne.di.Injector;
@@ -29,9 +34,6 @@ import org.apache.cayenne.remote.ClientConnection;
import org.apache.cayenne.remote.MockClientConnection;
import org.junit.Test;
-import java.util.HashMap;
-import java.util.Map;
-
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertSame;
@@ -75,6 +77,8 @@ public class ClientModuleTest {
// use a noop connection to prevent startup errors...
binder.bind(ClientConnection.class).to(MockClientConnection.class);
+ ServerModule.contributeProperties(binder)
+ .put(Constants.SERVER_CONTEXTS_SYNC_PROPERTY, String.valueOf(true));
}
};
diff --git a/cayenne-client/src/test/java/org/apache/cayenne/configuration/rop/client/ClientRuntimeTest.java b/cayenne-client/src/test/java/org/apache/cayenne/configuration/rop/client/ClientRuntimeTest.java
index 1b28d45..8fdb593 100644
--- a/cayenne-client/src/test/java/org/apache/cayenne/configuration/rop/client/ClientRuntimeTest.java
+++ b/cayenne-client/src/test/java/org/apache/cayenne/configuration/rop/client/ClientRuntimeTest.java
@@ -18,9 +18,14 @@
****************************************************************/
package org.apache.cayenne.configuration.rop.client;
+import java.util.HashMap;
+import java.util.Map;
+
import org.apache.cayenne.CayenneContext;
import org.apache.cayenne.DataChannel;
import org.apache.cayenne.ObjectContext;
+import org.apache.cayenne.configuration.Constants;
+import org.apache.cayenne.configuration.server.ServerModule;
import org.apache.cayenne.di.Binder;
import org.apache.cayenne.di.Module;
import org.apache.cayenne.event.DefaultEventManager;
@@ -30,9 +35,6 @@ import org.apache.cayenne.remote.ClientConnection;
import org.apache.cayenne.remote.MockClientConnection;
import org.junit.Test;
-import java.util.HashMap;
-import java.util.Map;
-
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNotSame;
@@ -98,6 +100,8 @@ public class ClientRuntimeTest {
Map<String, String> properties = new HashMap<>();
ClientRuntime runtime = ClientRuntime.builder()
.properties(properties)
+ .addModule(binder -> ServerModule.contributeProperties(binder)
+ .put(Constants.SERVER_CONTEXTS_SYNC_PROPERTY, String.valueOf(true)))
.build();
// make sure objects to be shut down are resolved
diff --git a/cayenne-client/src/test/java/org/apache/cayenne/unit/di/client/ClientCaseContextsSync.java b/cayenne-client/src/test/java/org/apache/cayenne/unit/di/client/ClientCaseContextsSync.java
new file mode 100644
index 0000000..2e48a80
--- /dev/null
+++ b/cayenne-client/src/test/java/org/apache/cayenne/unit/di/client/ClientCaseContextsSync.java
@@ -0,0 +1,70 @@
+/*****************************************************************
+ * 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.unit.di.client;
+
+import org.apache.cayenne.configuration.rop.client.ClientRuntime;
+import org.apache.cayenne.configuration.server.ServerRuntime;
+import org.apache.cayenne.di.DIBootstrap;
+import org.apache.cayenne.di.Inject;
+import org.apache.cayenne.di.Injector;
+import org.apache.cayenne.di.spi.DefaultScope;
+import org.apache.cayenne.unit.di.DICase;
+import org.apache.cayenne.unit.di.server.DBCleaner;
+import org.apache.cayenne.unit.di.server.SchemaBuilder;
+import org.apache.cayenne.unit.di.server.ServerCaseModule;
+import org.apache.cayenne.unit.di.server.ServerRuntimeProviderContextsSync;
+import org.junit.Before;
+
+/**
+ * @since 4.1
+ */
+public class ClientCaseContextsSync extends DICase {
+
+ private static final Injector injector;
+
+ @Inject
+ private DBCleaner dbCleaner;
+
+ static {
+ DefaultScope testScope = new DefaultScope();
+ injector = DIBootstrap.createInjector(
+ new ServerCaseModule(testScope),
+ new ClientCaseModule(testScope),
+ binder -> {
+ binder.bind(ClientRuntime.class).toProvider(ClientRuntimeProviderContextsSync.class);
+ binder.bind(ServerRuntime.class).toProvider(ServerRuntimeProviderContextsSync.class);
+ });
+
+ injector.getInstance(SchemaBuilder.class).rebuildSchema();
+ }
+
+ @Before
+ public void cleanUpDB() throws Exception {
+ try {
+ dbCleaner.clean();
+ } catch (Exception ex) {
+ dbCleaner.clean();
+ }
+ }
+
+ @Override
+ protected Injector getUnitTestInjector() {
+ return injector;
+ }
+}
diff --git a/cayenne-client/src/test/java/org/apache/cayenne/unit/di/client/ClientRuntimeProviderContextsSync.java b/cayenne-client/src/test/java/org/apache/cayenne/unit/di/client/ClientRuntimeProviderContextsSync.java
new file mode 100644
index 0000000..01c6d7a
--- /dev/null
+++ b/cayenne-client/src/test/java/org/apache/cayenne/unit/di/client/ClientRuntimeProviderContextsSync.java
@@ -0,0 +1,60 @@
+/*****************************************************************
+ * 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.unit.di.client;
+
+import org.apache.cayenne.ConfigurationException;
+import org.apache.cayenne.DataChannel;
+import org.apache.cayenne.configuration.Constants;
+import org.apache.cayenne.configuration.rop.client.ClientRuntime;
+import org.apache.cayenne.configuration.rop.client.LocalConnectionProvider;
+import org.apache.cayenne.configuration.server.ServerModule;
+import org.apache.cayenne.configuration.server.ServerRuntime;
+import org.apache.cayenne.di.Inject;
+import org.apache.cayenne.di.Key;
+import org.apache.cayenne.di.Provider;
+import org.apache.cayenne.remote.ClientConnection;
+
+/**
+ * @since 4.1
+ */
+public class ClientRuntimeProviderContextsSync implements Provider<ClientRuntime> {
+
+ // injecting provider to make this provider independent from scoping of ServerRuntime
+ @Inject
+ protected Provider<ServerRuntime> serverRuntimeProvider;
+
+ @Inject
+ protected ClientCaseProperties clientCaseProperties;
+
+ public ClientRuntime get() throws ConfigurationException {
+ return ClientRuntime.builder()
+ .properties(clientCaseProperties.getRuntimeProperties())
+ .addModule(binder -> {
+ // add an interceptor between client and server parts to capture and inspect the traffic
+ binder.bind(Key.get(DataChannel.class, ClientRuntime.CLIENT_SERVER_CHANNEL_KEY))
+ .toProviderInstance(new InterceptingClientServerChannelProvider(serverRuntimeProvider.get().getInjector()));
+ // create local connection
+ binder.bind(ClientConnection.class).toProviderInstance(new LocalConnectionProvider());
+ ServerModule.contributeProperties(binder)
+ .put(Constants.SERVER_CONTEXTS_SYNC_PROPERTY, String.valueOf(true));
+ })
+ .build();
+ }
+
+}
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/configuration/DefaultObjectStoreFactory.java b/cayenne-server/src/main/java/org/apache/cayenne/configuration/DefaultObjectStoreFactory.java
index 820ca07..29d5c99 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/configuration/DefaultObjectStoreFactory.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/configuration/DefaultObjectStoreFactory.java
@@ -40,7 +40,7 @@ public class DefaultObjectStoreFactory implements ObjectStoreFactory {
protected ObjectMapRetainStrategy retainStrategy;
public ObjectStore createObjectStore(DataRowStore dataRowCache) {
- boolean sync = runtimeProperties.getBoolean(Constants.SERVER_CONTEXTS_SYNC_PROPERTY, true);
+ boolean sync = runtimeProperties.getBoolean(Constants.SERVER_CONTEXTS_SYNC_PROPERTY, false);
return sync ? new ObjectStore(dataRowCache, retainStrategy.createObjectMap())
: new NoSyncObjectStore(dataRowCache, retainStrategy.createObjectMap());
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 0fa82b8..197ad72 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
@@ -18,6 +18,9 @@
****************************************************************/
package org.apache.cayenne.configuration.server;
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+
import org.apache.cayenne.DataChannel;
import org.apache.cayenne.DataChannelFilter;
import org.apache.cayenne.DataChannelQueryFilter;
@@ -132,9 +135,9 @@ import org.apache.cayenne.di.MapBuilder;
import org.apache.cayenne.di.Module;
import org.apache.cayenne.di.spi.DefaultAdhocObjectFactory;
import org.apache.cayenne.di.spi.DefaultClassLoaderManager;
-import org.apache.cayenne.event.DefaultEventManager;
import org.apache.cayenne.event.EventBridge;
import org.apache.cayenne.event.EventManager;
+import org.apache.cayenne.event.EventManagerProvider;
import org.apache.cayenne.event.NoopEventBridgeProvider;
import org.apache.cayenne.log.JdbcEventLogger;
import org.apache.cayenne.log.Slf4jJdbcEventLogger;
@@ -151,9 +154,6 @@ import org.apache.cayenne.tx.TransactionFilter;
import org.apache.cayenne.tx.TransactionManager;
import org.xml.sax.XMLReader;
-import java.util.Calendar;
-import java.util.GregorianCalendar;
-
/**
* A DI module containing all Cayenne server runtime configuration.
*
@@ -342,6 +342,8 @@ public class ServerModule implements Module {
// configure global stack properties
contributeProperties(binder)
.put(Constants.SERVER_MAX_ID_QUALIFIER_SIZE_PROPERTY, String.valueOf(DEFAULT_MAX_ID_QUALIFIER_SIZE));
+ contributeProperties(binder)
+ .put(Constants.SERVER_CONTEXTS_SYNC_PROPERTY, String.valueOf(false));
binder.bind(JdbcEventLogger.class).to(Slf4jJdbcEventLogger.class);
binder.bind(ClassLoaderManager.class).to(DefaultClassLoaderManager.class);
@@ -430,7 +432,7 @@ public class ServerModule implements Module {
binder.bind(ConfigurationNameMapper.class).to(DefaultConfigurationNameMapper.class);
- binder.bind(EventManager.class).to(DefaultEventManager.class);
+ binder.bind(EventManager.class).toProvider(EventManagerProvider.class);
binder.bind(QueryCache.class).toProvider(MapQueryCacheProvider.class);
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/event/EventManagerProvider.java b/cayenne-server/src/main/java/org/apache/cayenne/event/EventManagerProvider.java
new file mode 100644
index 0000000..8a14169
--- /dev/null
+++ b/cayenne-server/src/main/java/org/apache/cayenne/event/EventManagerProvider.java
@@ -0,0 +1,44 @@
+/*****************************************************************
+ * 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.event;
+
+import org.apache.cayenne.ConfigurationException;
+import org.apache.cayenne.configuration.Constants;
+import org.apache.cayenne.configuration.RuntimeProperties;
+import org.apache.cayenne.di.Inject;
+import org.apache.cayenne.di.Provider;
+
+/**
+ * @since 4.1
+ */
+public class EventManagerProvider implements Provider<EventManager> {
+
+ protected RuntimeProperties properties;
+
+ public EventManagerProvider(@Inject RuntimeProperties properties) {
+ this.properties = properties;
+ }
+
+ @Override
+ public EventManager get() throws ConfigurationException {
+ boolean sync = properties.getBoolean(Constants.SERVER_CONTEXTS_SYNC_PROPERTY, false);
+
+ return sync ? new DefaultEventManager() : new NoopEventManager();
+ }
+}
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/event/NoopEventManager.java b/cayenne-server/src/main/java/org/apache/cayenne/event/NoopEventManager.java
new file mode 100644
index 0000000..14d2f51
--- /dev/null
+++ b/cayenne-server/src/main/java/org/apache/cayenne/event/NoopEventManager.java
@@ -0,0 +1,81 @@
+/*****************************************************************
+ * 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.event;
+
+import java.util.EventObject;
+
+/**
+ * @since 4.1
+ */
+public class NoopEventManager implements EventManager {
+ @Override
+ public boolean isSingleThreaded() {
+ return false;
+ }
+
+ @Override
+ public void addListener(Object listener, String methodName, Class<?> eventParameterClass, EventSubject subject) {
+
+ }
+
+ @Override
+ public void addNonBlockingListener(Object listener, String methodName, Class<?> eventParameterClass, EventSubject subject) {
+
+ }
+
+ @Override
+ public void addListener(Object listener, String methodName, Class<?> eventParameterClass, EventSubject subject, Object sender) {
+
+ }
+
+ @Override
+ public void addNonBlockingListener(Object listener, String methodName, Class<?> eventParameterClass, EventSubject subject, Object sender) {
+
+ }
+
+ @Override
+ public boolean removeListener(Object listener) {
+ return false;
+ }
+
+ @Override
+ public boolean removeAllListeners(EventSubject subject) {
+ return false;
+ }
+
+ @Override
+ public boolean removeListener(Object listener, EventSubject subject) {
+ return false;
+ }
+
+ @Override
+ public boolean removeListener(Object listener, EventSubject subject, Object sender) {
+ return false;
+ }
+
+ @Override
+ public void postEvent(EventObject event, EventSubject subject) {
+
+ }
+
+ @Override
+ public void postNonBlockingEvent(EventObject event, EventSubject subject) {
+
+ }
+}
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextDataChannelEventsIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextDataChannelEventsIT.java
index 2cff155..914845a 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextDataChannelEventsIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextDataChannelEventsIT.java
@@ -28,7 +28,7 @@ import org.apache.cayenne.graph.GraphEvent;
import org.apache.cayenne.test.parallel.ParallelTestContainer;
import org.apache.cayenne.testdo.testmap.Artist;
import org.apache.cayenne.unit.di.server.CayenneProjects;
-import org.apache.cayenne.unit.di.server.ServerCase;
+import org.apache.cayenne.unit.di.server.ServerCaseContextsSync;
import org.apache.cayenne.unit.di.server.UseServerRuntime;
import org.apache.cayenne.util.EventUtil;
import org.junit.Test;
@@ -40,7 +40,7 @@ import static org.junit.Assert.assertTrue;
* Tests that DataContext sends DataChannel events.
*/
@UseServerRuntime(CayenneProjects.TESTMAP_PROJECT)
-public class DataContextDataChannelEventsIT extends ServerCase {
+public class DataContextDataChannelEventsIT extends ServerCaseContextsSync {
@Inject
private DataContext context;
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextDelegateSharedCacheIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextDelegateSharedCacheIT.java
index 79c66a5..5548e21 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextDelegateSharedCacheIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextDelegateSharedCacheIT.java
@@ -19,6 +19,8 @@
package org.apache.cayenne.access;
+import java.util.Date;
+
import org.apache.cayenne.DataObject;
import org.apache.cayenne.DataRow;
import org.apache.cayenne.PersistenceState;
@@ -26,13 +28,11 @@ import org.apache.cayenne.di.Inject;
import org.apache.cayenne.test.parallel.ParallelTestContainer;
import org.apache.cayenne.testdo.testmap.Artist;
import org.apache.cayenne.unit.di.server.CayenneProjects;
-import org.apache.cayenne.unit.di.server.ServerCase;
+import org.apache.cayenne.unit.di.server.ServerCaseContextsSync;
import org.apache.cayenne.unit.di.server.UseServerRuntime;
import org.junit.Before;
import org.junit.Test;
-import java.util.Date;
-
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
@@ -40,7 +40,7 @@ import static org.junit.Assert.assertNotSame;
import static org.junit.Assert.assertTrue;
@UseServerRuntime(CayenneProjects.TESTMAP_PROJECT)
-public class DataContextDelegateSharedCacheIT extends ServerCase {
+public class DataContextDelegateSharedCacheIT extends ServerCaseContextsSync {
@Inject
private DataContext context;
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 5bae357..c834de9 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
@@ -19,6 +19,9 @@
package org.apache.cayenne.access;
+import java.util.Collections;
+import java.util.List;
+
import org.apache.cayenne.DataRow;
import org.apache.cayenne.configuration.DefaultRuntimeProperties;
import org.apache.cayenne.configuration.ObjectStoreFactory;
@@ -31,21 +34,18 @@ import org.apache.cayenne.test.jdbc.TableHelper;
import org.apache.cayenne.test.parallel.ParallelTestContainer;
import org.apache.cayenne.testdo.testmap.Artist;
import org.apache.cayenne.unit.di.server.CayenneProjects;
-import org.apache.cayenne.unit.di.server.ServerCase;
+import org.apache.cayenne.unit.di.server.ServerCaseContextsSync;
import org.apache.cayenne.unit.di.server.UseServerRuntime;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
-import java.util.Collections;
-import java.util.List;
-
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
@UseServerRuntime(CayenneProjects.TESTMAP_PROJECT)
-public class DataContextSharedCacheEmpiricIT extends ServerCase {
+public class DataContextSharedCacheEmpiricIT extends ServerCaseContextsSync {
private static final String NEW_NAME = "versionX";
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextSharedCacheIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextSharedCacheIT.java
index 4ba1a2d..20fe8d2 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextSharedCacheIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextSharedCacheIT.java
@@ -19,6 +19,12 @@
package org.apache.cayenne.access;
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
import org.apache.cayenne.DataRow;
import org.apache.cayenne.ObjectId;
import org.apache.cayenne.PersistenceState;
@@ -31,18 +37,12 @@ import org.apache.cayenne.test.parallel.ParallelTestContainer;
import org.apache.cayenne.testdo.testmap.Artist;
import org.apache.cayenne.testdo.testmap.Painting;
import org.apache.cayenne.unit.di.server.CayenneProjects;
-import org.apache.cayenne.unit.di.server.ServerCase;
+import org.apache.cayenne.unit.di.server.ServerCaseContextsSync;
import org.apache.cayenne.unit.di.server.UseServerRuntime;
import org.apache.cayenne.unit.util.SQLTemplateCustomizer;
import org.junit.Before;
import org.junit.Test;
-import java.util.Collection;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
@@ -56,7 +56,7 @@ import static org.junit.Assert.assertTrue;
* DataDomain.
*/
@UseServerRuntime(CayenneProjects.TESTMAP_PROJECT)
-public class DataContextSharedCacheIT extends ServerCase {
+public class DataContextSharedCacheIT extends ServerCaseContextsSync {
@Inject
private DataContext context;
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/NestedDataContextParentEventsIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/NestedDataContextParentEventsIT.java
index 34512bf..3eb69da 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/NestedDataContextParentEventsIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/NestedDataContextParentEventsIT.java
@@ -25,7 +25,7 @@ import org.apache.cayenne.di.Inject;
import org.apache.cayenne.test.parallel.ParallelTestContainer;
import org.apache.cayenne.testdo.testmap.Artist;
import org.apache.cayenne.unit.di.server.CayenneProjects;
-import org.apache.cayenne.unit.di.server.ServerCase;
+import org.apache.cayenne.unit.di.server.ServerCaseContextsSync;
import org.apache.cayenne.unit.di.server.UseServerRuntime;
import org.junit.Test;
@@ -35,7 +35,7 @@ import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
@UseServerRuntime(CayenneProjects.TESTMAP_PROJECT)
-public class NestedDataContextParentEventsIT extends ServerCase {
+public class NestedDataContextParentEventsIT extends ServerCaseContextsSync {
@Inject
protected ServerRuntime runtime;
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/NestedDataContextParentPeerEventsIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/NestedDataContextParentPeerEventsIT.java
index 3b62cbf..9ce8a1d 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/NestedDataContextParentPeerEventsIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/NestedDataContextParentPeerEventsIT.java
@@ -26,7 +26,7 @@ import org.apache.cayenne.test.parallel.ParallelTestContainer;
import org.apache.cayenne.testdo.relationships_child_master.Child;
import org.apache.cayenne.testdo.relationships_child_master.Master;
import org.apache.cayenne.unit.di.server.CayenneProjects;
-import org.apache.cayenne.unit.di.server.ServerCase;
+import org.apache.cayenne.unit.di.server.ServerCaseContextsSync;
import org.apache.cayenne.unit.di.server.UseServerRuntime;
import org.junit.Test;
@@ -37,7 +37,7 @@ import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
@UseServerRuntime(CayenneProjects.RELATIONSHIPS_CHILD_MASTER_PROJECT)
-public class NestedDataContextParentPeerEventsIT extends ServerCase {
+public class NestedDataContextParentPeerEventsIT extends ServerCaseContextsSync {
@Inject
private ServerRuntime runtime;
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/NestedDataContextPeerEventsIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/NestedDataContextPeerEventsIT.java
index 5c71361..d3448e8 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/NestedDataContextPeerEventsIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/NestedDataContextPeerEventsIT.java
@@ -27,7 +27,7 @@ import org.apache.cayenne.test.parallel.ParallelTestContainer;
import org.apache.cayenne.testdo.testmap.Artist;
import org.apache.cayenne.testdo.testmap.Painting;
import org.apache.cayenne.unit.di.server.CayenneProjects;
-import org.apache.cayenne.unit.di.server.ServerCase;
+import org.apache.cayenne.unit.di.server.ServerCaseContextsSync;
import org.apache.cayenne.unit.di.server.UseServerRuntime;
import org.junit.Test;
@@ -37,7 +37,7 @@ import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
@UseServerRuntime(CayenneProjects.TESTMAP_PROJECT)
-public class NestedDataContextPeerEventsIT extends ServerCase {
+public class NestedDataContextPeerEventsIT extends ServerCaseContextsSync {
@Inject
private DataContext context;
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/jdbc/SelectActionIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/jdbc/SelectActionIT.java
index b58f2fa..3cd2365 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/jdbc/SelectActionIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/jdbc/SelectActionIT.java
@@ -18,6 +18,8 @@
****************************************************************/
package org.apache.cayenne.access.jdbc;
+import java.util.List;
+
import org.apache.cayenne.DataRow;
import org.apache.cayenne.access.DataContext;
import org.apache.cayenne.di.Inject;
@@ -29,17 +31,15 @@ import org.apache.cayenne.testdo.lob.ClobTestEntity;
import org.apache.cayenne.testdo.lob.ClobTestRelation;
import org.apache.cayenne.unit.UnitDbAdapter;
import org.apache.cayenne.unit.di.server.CayenneProjects;
-import org.apache.cayenne.unit.di.server.ServerCase;
+import org.apache.cayenne.unit.di.server.ServerCaseContextsSync;
import org.apache.cayenne.unit.di.server.UseServerRuntime;
import org.junit.Test;
-import java.util.List;
-
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
@UseServerRuntime(CayenneProjects.LOB_PROJECT)
-public class SelectActionIT extends ServerCase {
+public class SelectActionIT extends ServerCaseContextsSync {
@Inject
private DataContext context;
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseContextsSync.java b/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseContextsSync.java
new file mode 100644
index 0000000..8b514ac
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/ServerCaseContextsSync.java
@@ -0,0 +1,65 @@
+/*****************************************************************
+ * 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.unit.di.server;
+
+import org.apache.cayenne.configuration.Constants;
+import org.apache.cayenne.configuration.server.ServerModule;
+import org.apache.cayenne.configuration.server.ServerRuntime;
+import org.apache.cayenne.di.DIBootstrap;
+import org.apache.cayenne.di.Inject;
+import org.apache.cayenne.di.Injector;
+import org.apache.cayenne.di.spi.DefaultScope;
+import org.apache.cayenne.unit.di.DICase;
+import org.junit.Before;
+
+/**
+ * @since 4.1
+ */
+public class ServerCaseContextsSync extends DICase {
+ private static final Injector injector;
+
+ @Inject
+ private DBCleaner dbCleaner;
+
+ static {
+ DefaultScope testScope = new DefaultScope();
+ injector = DIBootstrap.createInjector(
+ new ServerCaseModule(testScope),
+ binder -> {
+ binder.bind(ServerRuntime.class).toProvider(ServerRuntimeProviderContextsSync.class).in(testScope);
+ ServerModule.contributeProperties(binder)
+ .put(Constants.SERVER_CONTEXTS_SYNC_PROPERTY, String.valueOf(true));
+ });
+ injector.getInstance(SchemaBuilder.class).rebuildSchema();
+ }
+
+ @Before
+ public void cleanUpDB() throws Exception {
+ try {
+ dbCleaner.clean();
+ } catch (Exception ex) {
+ dbCleaner.clean();
+ }
+ }
+
+ @Override
+ protected Injector getUnitTestInjector() {
+ return injector;
+ }
+}
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/ServerRuntimeProviderContextsSync.java b/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/ServerRuntimeProviderContextsSync.java
new file mode 100644
index 0000000..f5e38df
--- /dev/null
+++ b/cayenne-server/src/test/java/org/apache/cayenne/unit/di/server/ServerRuntimeProviderContextsSync.java
@@ -0,0 +1,64 @@
+/*****************************************************************
+ * 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.unit.di.server;
+
+import java.util.Collection;
+
+import org.apache.cayenne.ConfigurationException;
+import org.apache.cayenne.configuration.Constants;
+import org.apache.cayenne.configuration.server.ServerModule;
+import org.apache.cayenne.configuration.server.ServerRuntime;
+import org.apache.cayenne.dba.DbAdapter;
+import org.apache.cayenne.di.Inject;
+import org.apache.cayenne.di.Provider;
+import org.apache.cayenne.unit.UnitDbAdapter;
+
+/**
+ * @since 4.1
+ */
+public class ServerRuntimeProviderContextsSync extends ServerRuntimeProvider {
+
+ private ServerCaseProperties properties;
+
+ public ServerRuntimeProviderContextsSync(@Inject ServerCaseDataSourceFactory dataSourceFactory,
+ @Inject ServerCaseProperties properties,
+ @Inject Provider<DbAdapter> dbAdapterProvider,
+ @Inject UnitDbAdapter unitDbAdapter) {
+ super(dataSourceFactory, properties, dbAdapterProvider, unitDbAdapter);
+ this.properties = properties;
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public ServerRuntime get() throws ConfigurationException {
+ String configurationLocation = properties.getConfigurationLocation();
+ if (configurationLocation == null) {
+ throw new NullPointerException("Null 'configurationLocation', "
+ + "annotate your test case with @UseServerRuntime");
+ }
+ Collection modules = getExtraModules();
+
+ return ServerRuntime.builder()
+ .addConfig(configurationLocation)
+ .addModules(modules)
+ .addModule(binder -> ServerModule.contributeProperties(binder)
+ .put(Constants.SERVER_CONTEXTS_SYNC_PROPERTY, String.valueOf(true)))
+ .build();
+ }
+}