You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by mg...@apache.org on 2015/03/11 15:54:51 UTC

isis git commit: ISIS-1081 Guice bean provider

Repository: isis
Updated Branches:
  refs/heads/ISIS-1081-guice-bean-provider [created] 1c0d4da68


ISIS-1081 Guice bean provider


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/1c0d4da6
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/1c0d4da6
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/1c0d4da6

Branch: refs/heads/ISIS-1081-guice-bean-provider
Commit: 1c0d4da6834e29d586598c6c4110bc3b4a766c61
Parents: e8c7a11
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Wed Mar 11 16:54:22 2015 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Wed Mar 11 16:54:22 2015 +0200

----------------------------------------------------------------------
 .../services/guice/GuiceBeanProvider.java       | 19 +++++++++++++++
 .../services/GuiceBeanProviderWicket.java       | 25 ++++++++++++++++++++
 2 files changed, 44 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/1c0d4da6/core/applib/src/main/java/org/apache/isis/applib/services/guice/GuiceBeanProvider.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/guice/GuiceBeanProvider.java b/core/applib/src/main/java/org/apache/isis/applib/services/guice/GuiceBeanProvider.java
new file mode 100644
index 0000000..5f39f40
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/guice/GuiceBeanProvider.java
@@ -0,0 +1,19 @@
+package org.apache.isis.applib.services.guice;
+
+import org.apache.isis.applib.annotation.DomainService;
+
+/**
+ * A domain service acting as a bridge between Isis services and Guice.
+ */
+@DomainService
+public interface GuiceBeanProvider {
+
+    /**
+     * Looks up a Guice bean by class type
+     *
+     * @param cls The class type of the Guice bean
+     * @param <T> The type of the Guice bean
+     * @return The found
+     */
+    <T> T lookup(Class<T> cls);
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/1c0d4da6/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/GuiceBeanProviderWicket.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/GuiceBeanProviderWicket.java b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/GuiceBeanProviderWicket.java
new file mode 100644
index 0000000..4108f1d
--- /dev/null
+++ b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/GuiceBeanProviderWicket.java
@@ -0,0 +1,25 @@
+package org.apache.isis.viewer.wicket.viewer.services;
+
+import com.google.inject.Binding;
+import com.google.inject.Injector;
+import com.google.inject.Provider;
+import org.apache.wicket.Application;
+import org.apache.wicket.guice.GuiceInjectorHolder;
+import org.apache.isis.applib.services.guice.GuiceBeanProvider;
+
+/**
+ * An implementation of {@link org.apache.isis.applib.services.guice.GuiceBeanProvider}
+ * that uses the Injector configured for Wicket
+ */
+public class GuiceBeanProviderWicket implements GuiceBeanProvider {
+
+    @Override
+    public <T> T lookup(Class<T> cls) {
+        Application application = Application.get();
+        GuiceInjectorHolder injectorHolder = application.getMetaData(GuiceInjectorHolder.INJECTOR_KEY);
+        Injector injector = injectorHolder.getInjector();
+        Binding<T> binding = injector.getBinding(cls);
+        Provider<T> provider = binding.getProvider();
+        return provider.get();
+    }
+}