Dave,

i'm not sure that i understand why you want to provide a generic method like you did for accessing managers or other things that Weblogger can't possibly know about or make use of.

i think a better way to do what you want is to use subclassing and casting. so instead of what you are suggesting ...

WebloggerFactory.getInstance(MyCustomManager.class);

... you would do this ...

MyWeblogger myWeblogger = (MyWeblogger) WebloggerFactory.getWeblogger();
MyCustomManager myManager = myWeblogger.getMyManager();

... which follows our current design patterns a bit more and is more in line with our process of bootstrapping the app once and not using the Injector again after that.

-- Allen


[EMAIL PROTECTED] wrote:
Author: snoopdave
Date: Tue Jul 31 06:42:33 2007
New Revision: 561329

URL: http://svn.apache.org/viewvc?view=rev&rev=561329
Log:
Restoring ability to get instance from injector, need this to add custom 
managers and other extensions to backend.

Modified:
    
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/GuiceWebloggerProvider.java
    
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/WebloggerFactory.java
    
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/WebloggerProvider.java

Modified: 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/GuiceWebloggerProvider.java
URL: 
http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/GuiceWebloggerProvider.java?view=diff&rev=561329&r1=561328&r2=561329
==============================================================================
--- 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/GuiceWebloggerProvider.java
 (original)
+++ 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/GuiceWebloggerProvider.java
 Tue Jul 31 06:42:33 2007
@@ -30,10 +30,10 @@
 public class GuiceWebloggerProvider implements WebloggerProvider {
// Guice injector
-    private final Injector injector;
+    protected final Injector injector;
// maintain our own singleton instance of Weblogger
-    private Weblogger webloggerInstance = null;
+    protected Weblogger webloggerInstance = null;
/**
@@ -95,4 +95,10 @@
         return webloggerInstance;
     }
+ /**
+     * Get injected instance, for custom managers.
+     */
+    public <T> T getInstance(Class<T> type) {
+        return injector.getInstance(type);
+ } }

Modified: 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/WebloggerFactory.java
URL: 
http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/WebloggerFactory.java?view=diff&rev=561329&r1=561328&r2=561329
==============================================================================
--- 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/WebloggerFactory.java
 (original)
+++ 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/WebloggerFactory.java
 Tue Jul 31 06:42:33 2007
@@ -65,6 +65,18 @@
/**
+     * Get injected instance, for custom managers.
+     */
+    public <T> T getInstance(Class<T> type) {
+        if (webloggerProvider == null) {
+            throw new IllegalStateException("Roller Weblogger has not been 
bootstrapped yet");
+        }
+ + return webloggerProvider.getInstance(type);
+    }
+ + + /**
      * Bootstrap the Roller Weblogger business tier, uses default 
WebloggerProvider.
      *
      * Bootstrapping the application effectively instantiates all the necessary

Modified: 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/WebloggerProvider.java
URL: 
http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/WebloggerProvider.java?view=diff&rev=561329&r1=561328&r2=561329
==============================================================================
--- 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/WebloggerProvider.java
 (original)
+++ 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/WebloggerProvider.java
 Tue Jul 31 06:42:33 2007
@@ -35,4 +35,9 @@
      */
     public Weblogger getWeblogger();
+ + /**
+     * Get injected instance, for custom managers.
+     */
+    public <T> T getInstance(Class<T> type);
 }


Reply via email to