Author: ash2k
Date: Sun Mar  2 10:28:48 2014
New Revision: 1573277

URL: http://svn.apache.org/r1573277
Log:
Do not use Guice internal APIs

Modified:
    
onami/trunk/scopes/src/main/java/org/apache/onami/scopes/ConcurrentLazySingletonScopeImpl.java

Modified: 
onami/trunk/scopes/src/main/java/org/apache/onami/scopes/ConcurrentLazySingletonScopeImpl.java
URL: 
http://svn.apache.org/viewvc/onami/trunk/scopes/src/main/java/org/apache/onami/scopes/ConcurrentLazySingletonScopeImpl.java?rev=1573277&r1=1573276&r2=1573277&view=diff
==============================================================================
--- 
onami/trunk/scopes/src/main/java/org/apache/onami/scopes/ConcurrentLazySingletonScopeImpl.java
 (original)
+++ 
onami/trunk/scopes/src/main/java/org/apache/onami/scopes/ConcurrentLazySingletonScopeImpl.java
 Sun Mar  2 10:28:48 2014
@@ -23,7 +23,6 @@ import com.google.inject.Key;
 import com.google.inject.Provider;
 import com.google.inject.ProvisionException;
 import com.google.inject.Scope;
-import com.google.inject.internal.CircularDependencyProxy;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -61,13 +60,24 @@ class ConcurrentLazySingletonScopeImpl
                             {
                                 T provided = creator.get();
 
-                                // don't remember proxies; these exist only to 
serve circular dependencies
-                                if ( provided instanceof 
CircularDependencyProxy )
-                                {
-                                    return provided;
-                                }
+                                                               Object 
providedOrSentinel;
+                                                               if ( provided 
== null )
+                                                               {
+                                                                       
providedOrSentinel = NULL;
+                                                               }
+                                                               else
+                                                               {
+                                                                       for ( 
Class<?> clazz : provided.getClass().getInterfaces() )
+                                                                       {
+                                                                               
// don't remember proxies; these exist only to serve circular dependencies
+                                                                               
if ( 
clazz.getName().equals("com.google.inject.internal.CircularDependencyProxy") )
+                                                                               
{
+                                                                               
        return provided;
+                                                                               
}
+                                                                       }
+                                                                       
providedOrSentinel = provided;
+                                                               }
 
-                                Object providedOrSentinel = ( provided == null 
) ? NULL : provided;
                                 if ( ( instance != null ) && ( instance != 
providedOrSentinel ) )
                                 {
                                     throw new ProvisionException( "Provider 
was reentrant while creating a singleton" );


Reply via email to