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 2016/09/29 21:57:22 UTC
cayenne git commit: CAY-2035 | Autobind items put to Map (Cayenne DI);
Repository: cayenne
Updated Branches:
refs/heads/master c093be34b -> 7296d1fef
CAY-2035 | Autobind items put to Map (Cayenne DI);
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/7296d1fe
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/7296d1fe
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/7296d1fe
Branch: refs/heads/master
Commit: 7296d1fefd67cdfd77087d2777404cad4885cf60
Parents: c093be3
Author: Savva Kolbachev <s....@gmail.com>
Authored: Fri Sep 30 00:54:47 2016 +0300
Committer: Savva Kolbachev <s....@gmail.com>
Committed: Fri Sep 30 00:54:47 2016 +0300
----------------------------------------------------------------------
.../cayenne/dbsync/CayenneDbSyncModule.java | 14 ----------
.../cayenne/di/spi/DefaultMapBuilder.java | 28 +++++++++++++++-----
2 files changed, 21 insertions(+), 21 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/7296d1fe/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/CayenneDbSyncModule.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/CayenneDbSyncModule.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/CayenneDbSyncModule.java
index 4fa43b2..cbdcd0e 100644
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/CayenneDbSyncModule.java
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/CayenneDbSyncModule.java
@@ -45,20 +45,6 @@ public class CayenneDbSyncModule implements Module {
@Override
public void configure(Binder binder) {
- // TODO: explicit binding before inserting into a map will be uneeded soon
- binder.bind(DB2MergerTokenFactory.class).to(DB2MergerTokenFactory.class);
- binder.bind(DerbyMergerTokenFactory.class).to(DerbyMergerTokenFactory.class);
- binder.bind(FirebirdMergerTokenFactory.class).to(FirebirdMergerTokenFactory.class);
- binder.bind(H2MergerTokenFactory.class).to(H2MergerTokenFactory.class);
- binder.bind(HSQLMergerTokenFactory.class).to(HSQLMergerTokenFactory.class);
- binder.bind(IngresMergerTokenFactory.class).to(IngresMergerTokenFactory.class);
- binder.bind(MySQLMergerTokenFactory.class).to(MySQLMergerTokenFactory.class);
- binder.bind(OpenBaseMergerTokenFactory.class).to(OpenBaseMergerTokenFactory.class);
- binder.bind(OracleMergerTokenFactory.class).to(OracleMergerTokenFactory.class);
- binder.bind(PostgresMergerTokenFactory.class).to(PostgresMergerTokenFactory.class);
- binder.bind(SQLServerMergerTokenFactory.class).to(SQLServerMergerTokenFactory.class);
- binder.bind(SybaseMergerTokenFactory.class).to(SybaseMergerTokenFactory.class);
-
// default and per adapter merger factories...
binder.bind(MergerTokenFactory.class).to(DefaultMergerTokenFactory.class);
binder.bindMap(MERGER_FACTORIES_MAP)
http://git-wip-us.apache.org/repos/asf/cayenne/blob/7296d1fe/cayenne-di/src/main/java/org/apache/cayenne/di/spi/DefaultMapBuilder.java
----------------------------------------------------------------------
diff --git a/cayenne-di/src/main/java/org/apache/cayenne/di/spi/DefaultMapBuilder.java b/cayenne-di/src/main/java/org/apache/cayenne/di/spi/DefaultMapBuilder.java
index c5ba93c..9461c97 100644
--- a/cayenne-di/src/main/java/org/apache/cayenne/di/spi/DefaultMapBuilder.java
+++ b/cayenne-di/src/main/java/org/apache/cayenne/di/spi/DefaultMapBuilder.java
@@ -18,15 +18,11 @@
****************************************************************/
package org.apache.cayenne.di.spi;
+import org.apache.cayenne.di.*;
+
import java.util.Map;
import java.util.Map.Entry;
-import org.apache.cayenne.di.DIRuntimeException;
-import org.apache.cayenne.di.Key;
-import org.apache.cayenne.di.MapBuilder;
-import org.apache.cayenne.di.Provider;
-import org.apache.cayenne.di.Scope;
-
/**
* @since 3.1
*/
@@ -48,8 +44,26 @@ class DefaultMapBuilder<T> implements MapBuilder<T> {
public MapBuilder<T> put(String key, Class<? extends T> interfaceType)
throws DIRuntimeException {
+ Key<?> bindingKey = Key.get(interfaceType);
+ Binding<?> binding = injector.getBinding(bindingKey);
+
+ if (binding == null) {
+ return putWithBinding(key, interfaceType);
+ }
+
// TODO: andrus 11/15/2009 - report overriding the key??
- getMapProvider().put(key, injector.getProvider(interfaceType));
+ getMapProvider().put(key, binding.getScoped());
+ return this;
+ }
+
+ <K extends T> MapBuilder<T> putWithBinding(String key, Class<K> interfaceType) {
+ Key<K> bindingKey = Key.get(interfaceType);
+
+ Provider<K> provider0 = new ConstructorInjectingProvider<>(interfaceType, injector);
+ Provider<K> provider1 = new FieldInjectingProvider<>(provider0, injector);
+ injector.putBinding(bindingKey, provider1);
+
+ getMapProvider().put(key, injector.getProvider(bindingKey));
return this;
}