You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by sk...@apache.org on 2015/11/03 11:19:52 UTC
cayenne git commit: CAY-2035 | Autobind items added to collections
(Cayenne DI)
Repository: cayenne
Updated Branches:
refs/heads/master 9ddd0c92b -> bdd8d903a
CAY-2035 | Autobind items added to collections (Cayenne DI)
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/bdd8d903
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/bdd8d903
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/bdd8d903
Branch: refs/heads/master
Commit: bdd8d903ac88cf50890cdfeb126fdd636b98563c
Parents: 9ddd0c9
Author: Savva Kolbachev <s....@gmail.com>
Authored: Tue Nov 3 13:19:12 2015 +0300
Committer: Savva Kolbachev <s....@gmail.com>
Committed: Tue Nov 3 13:19:12 2015 +0300
----------------------------------------------------------------------
.../cayenne/di/spi/DefaultListBuilder.java | 17 +++++++++++++++++
.../di/spi/DefaultInjectorInjectionTest.java | 19 +++++++++++++++++++
.../configuration/server/ServerModule.java | 19 -------------------
.../server/DataDomainProviderTest.java | 15 ---------------
.../cayenne/tools/configuration/ToolsModule.java | 19 -------------------
docs/doc/src/main/resources/RELEASE-NOTES.txt | 1 +
6 files changed, 37 insertions(+), 53 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/bdd8d903/cayenne-di/src/main/java/org/apache/cayenne/di/spi/DefaultListBuilder.java
----------------------------------------------------------------------
diff --git a/cayenne-di/src/main/java/org/apache/cayenne/di/spi/DefaultListBuilder.java b/cayenne-di/src/main/java/org/apache/cayenne/di/spi/DefaultListBuilder.java
index 853bb5e..eb9654f 100644
--- a/cayenne-di/src/main/java/org/apache/cayenne/di/spi/DefaultListBuilder.java
+++ b/cayenne-di/src/main/java/org/apache/cayenne/di/spi/DefaultListBuilder.java
@@ -52,6 +52,23 @@ class DefaultListBuilder<T> implements ListBuilder<T> {
throws DIRuntimeException {
Key<?> key = Key.get(interfaceType);
+ Binding<?> binding = injector.getBinding(key);
+
+ if (binding == null) {
+ return addWithBinding(interfaceType);
+ }
+
+ getListProvider().add(key, binding.getScoped());
+ return this;
+ }
+
+ <K extends T> ListBuilder<T> addWithBinding(Class<K> interfaceType) {
+ Key<K> key = Key.get(interfaceType);
+
+ Provider<K> provider0 = new ConstructorInjectingProvider<>(interfaceType, injector);
+ Provider<K> provider1 = new FieldInjectingProvider<>(provider0, injector);
+ injector.putBinding(key, provider1);
+
getListProvider().add(key, injector.getProvider(key));
return this;
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/bdd8d903/cayenne-di/src/test/java/org/apache/cayenne/di/spi/DefaultInjectorInjectionTest.java
----------------------------------------------------------------------
diff --git a/cayenne-di/src/test/java/org/apache/cayenne/di/spi/DefaultInjectorInjectionTest.java b/cayenne-di/src/test/java/org/apache/cayenne/di/spi/DefaultInjectorInjectionTest.java
index 31b9cd3..3d81ea3 100644
--- a/cayenne-di/src/test/java/org/apache/cayenne/di/spi/DefaultInjectorInjectionTest.java
+++ b/cayenne-di/src/test/java/org/apache/cayenne/di/spi/DefaultInjectorInjectionTest.java
@@ -387,6 +387,25 @@ public class DefaultInjectorInjectionTest {
}
@Test
+ public void testListInjection_addTypeWithBinding() {
+ Module module = new Module() {
+
+ public void configure(Binder binder) {
+ binder.bind(MockInterface1.class).to(
+ MockImplementation1_ListConfiguration.class);
+
+ binder.bindList("xyz").add(MockImplementation5.class).add("yvalue");
+ }
+ };
+
+ DefaultInjector injector = new DefaultInjector(module);
+
+ MockInterface1 service = injector.getInstance(MockInterface1.class);
+ assertNotNull(service);
+ assertEquals(";xyz;yvalue", service.getName());
+ }
+
+ @Test
public void testListInjection_empty() {
Module module = new Module() {
http://git-wip-us.apache.org/repos/asf/cayenne/blob/bdd8d903/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 c761b4c..ef3f1ab 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
@@ -143,31 +143,12 @@ public class ServerModule implements Module {
// Users can
// add their own to install custom adapters automatically
- // a bit ugly - need to bind all sniffers explicitly first before
- // placing then in a list
- binder.bind(FirebirdSniffer.class).to(FirebirdSniffer.class);
- binder.bind(OpenBaseSniffer.class).to(OpenBaseSniffer.class);
- binder.bind(FrontBaseSniffer.class).to(FrontBaseSniffer.class);
- binder.bind(IngresSniffer.class).to(IngresSniffer.class);
- binder.bind(SQLiteSniffer.class).to(SQLiteSniffer.class);
- binder.bind(DB2Sniffer.class).to(DB2Sniffer.class);
- binder.bind(H2Sniffer.class).to(H2Sniffer.class);
- binder.bind(HSQLDBSniffer.class).to(HSQLDBSniffer.class);
- binder.bind(SybaseSniffer.class).to(SybaseSniffer.class);
- binder.bind(DerbySniffer.class).to(DerbySniffer.class);
- binder.bind(SQLServerSniffer.class).to(SQLServerSniffer.class);
- binder.bind(OracleSniffer.class).to(OracleSniffer.class);
- binder.bind(PostgresSniffer.class).to(PostgresSniffer.class);
- binder.bind(MySQLSniffer.class).to(MySQLSniffer.class);
-
binder.bindList(Constants.SERVER_ADAPTER_DETECTORS_LIST).add(FirebirdSniffer.class).add(OpenBaseSniffer.class)
.add(FrontBaseSniffer.class).add(IngresSniffer.class).add(SQLiteSniffer.class).add(DB2Sniffer.class)
.add(H2Sniffer.class).add(HSQLDBSniffer.class).add(SybaseSniffer.class).add(DerbySniffer.class)
.add(SQLServerSniffer.class).add(OracleSniffer.class).add(PostgresSniffer.class)
.add(MySQLSniffer.class);
- binder.bind(TransactionFilter.class).to(TransactionFilter.class);
-
// configure a filter chain with only one TransactionFilter as default
binder.bindList(Constants.SERVER_DOMAIN_FILTERS_LIST)
.add(TransactionFilter.class);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/bdd8d903/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 cc771b3..b0ba2b0 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
@@ -142,21 +142,6 @@ public class DataDomainProviderTest {
binder.bindMap(Constants.PROPERTIES_MAP);
- binder.bind(FirebirdSniffer.class).to(FirebirdSniffer.class);
- binder.bind(OpenBaseSniffer.class).to(OpenBaseSniffer.class);
- binder.bind(FrontBaseSniffer.class).to(FrontBaseSniffer.class);
- binder.bind(IngresSniffer.class).to(IngresSniffer.class);
- binder.bind(SQLiteSniffer.class).to(SQLiteSniffer.class);
- binder.bind(DB2Sniffer.class).to(DB2Sniffer.class);
- binder.bind(H2Sniffer.class).to(H2Sniffer.class);
- binder.bind(HSQLDBSniffer.class).to(HSQLDBSniffer.class);
- binder.bind(SybaseSniffer.class).to(SybaseSniffer.class);
- binder.bind(DerbySniffer.class).to(DerbySniffer.class);
- binder.bind(SQLServerSniffer.class).to(SQLServerSniffer.class);
- binder.bind(OracleSniffer.class).to(OracleSniffer.class);
- binder.bind(PostgresSniffer.class).to(PostgresSniffer.class);
- binder.bind(MySQLSniffer.class).to(MySQLSniffer.class);
-
binder.bindList(Constants.SERVER_ADAPTER_DETECTORS_LIST).add(FirebirdSniffer.class)
.add(OpenBaseSniffer.class).add(FrontBaseSniffer.class).add(IngresSniffer.class)
.add(SQLiteSniffer.class).add(DB2Sniffer.class).add(H2Sniffer.class).add(HSQLDBSniffer.class)
http://git-wip-us.apache.org/repos/asf/cayenne/blob/bdd8d903/cayenne-tools/src/main/java/org/apache/cayenne/tools/configuration/ToolsModule.java
----------------------------------------------------------------------
diff --git a/cayenne-tools/src/main/java/org/apache/cayenne/tools/configuration/ToolsModule.java b/cayenne-tools/src/main/java/org/apache/cayenne/tools/configuration/ToolsModule.java
index 91078d7..b800ea2 100644
--- a/cayenne-tools/src/main/java/org/apache/cayenne/tools/configuration/ToolsModule.java
+++ b/cayenne-tools/src/main/java/org/apache/cayenne/tools/configuration/ToolsModule.java
@@ -92,25 +92,6 @@ public class ToolsModule implements Module {
binder.bind(BatchTranslatorFactory.class).to(DefaultBatchTranslatorFactory.class);
binder.bind(JdbcEventLogger.class).to(CommonsJdbcEventLogger.class);
- // TODO: this is cloned from ServerModule... figure out how to reuse
- // this list
- // a bit ugly - need to bind all sniffers explicitly first before
- // placing then in a list
- binder.bind(FirebirdSniffer.class).to(FirebirdSniffer.class);
- binder.bind(OpenBaseSniffer.class).to(OpenBaseSniffer.class);
- binder.bind(FrontBaseSniffer.class).to(FrontBaseSniffer.class);
- binder.bind(IngresSniffer.class).to(IngresSniffer.class);
- binder.bind(SQLiteSniffer.class).to(SQLiteSniffer.class);
- binder.bind(DB2Sniffer.class).to(DB2Sniffer.class);
- binder.bind(H2Sniffer.class).to(H2Sniffer.class);
- binder.bind(HSQLDBSniffer.class).to(HSQLDBSniffer.class);
- binder.bind(SybaseSniffer.class).to(SybaseSniffer.class);
- binder.bind(DerbySniffer.class).to(DerbySniffer.class);
- binder.bind(SQLServerSniffer.class).to(SQLServerSniffer.class);
- binder.bind(OracleSniffer.class).to(OracleSniffer.class);
- binder.bind(PostgresSniffer.class).to(PostgresSniffer.class);
- binder.bind(MySQLSniffer.class).to(MySQLSniffer.class);
-
binder.bindList(Constants.SERVER_ADAPTER_DETECTORS_LIST).add(FirebirdSniffer.class).add(OpenBaseSniffer.class)
.add(FrontBaseSniffer.class).add(IngresSniffer.class).add(SQLiteSniffer.class).add(DB2Sniffer.class)
.add(H2Sniffer.class).add(HSQLDBSniffer.class).add(SybaseSniffer.class).add(DerbySniffer.class)
http://git-wip-us.apache.org/repos/asf/cayenne/blob/bdd8d903/docs/doc/src/main/resources/RELEASE-NOTES.txt
----------------------------------------------------------------------
diff --git a/docs/doc/src/main/resources/RELEASE-NOTES.txt b/docs/doc/src/main/resources/RELEASE-NOTES.txt
index b0fba2e..e4b2d5e 100644
--- a/docs/doc/src/main/resources/RELEASE-NOTES.txt
+++ b/docs/doc/src/main/resources/RELEASE-NOTES.txt
@@ -35,6 +35,7 @@ CAY-2027 Support for Expression outer join syntax in EJBQL
CAY-2028 Wrap DataChannelFilter calls in the main transaction
CAY-2029 Allow out-of-order insertion into DI lists
CAY-2030 Capturing a stream of commit changes
+CAY-2035 Autobind items added to collections (Cayenne DI)
Bug Fixes: