Author: hlship
Date: Wed Nov 15 10:23:31 2006
New Revision: 475344

URL: http://svn.apache.org/viewvc?view=rev&rev=475344
Log:
Start adding support for the SupportsInformalParameters annotation (and 
ComponentModel property).
Remove some compiler warnings.

Added:
    
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/annotations/SupportsInformalParameters.java
    
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/SupportsInformalParametersWorker.java
    
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/SupportsInformalParametersWorkerTest.java
Modified:
    
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/StrategyServiceBuilderImpl.java
    
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/model/MutableComponentModelImpl.java
    
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageLoaderImpl.java
    
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/model/ComponentModel.java
    
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/model/MutableComponentModel.java
    
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/TapestryModule.java
    
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/BaseTestCase.java
    
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/pages/InstanceMixin.java
    
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/bindings/PropBindingFactoryTest.java
    
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/model/MutableComponentModelImplTest.java
    
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/IntegrationTest.java

Added: 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/annotations/SupportsInformalParameters.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/annotations/SupportsInformalParameters.java?view=auto&rev=475344
==============================================================================
--- 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/annotations/SupportsInformalParameters.java
 (added)
+++ 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/annotations/SupportsInformalParameters.java
 Wed Nov 15 10:23:31 2006
@@ -0,0 +1,25 @@
+package org.apache.tapestry.annotations;
+
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import org.apache.tapestry.model.ComponentModel;
+
+/** Used, in conjunction with [EMAIL PROTECTED] ComponentClass}, to identify a 
component that
+ * can support informal parameters.
+ * 
+ * @see ComponentModel#getSupportsInformalParameters()
+ *
+ */
[EMAIL PROTECTED](TYPE)
[EMAIL PROTECTED](RUNTIME)
[EMAIL PROTECTED]
[EMAIL PROTECTED]
+public @interface SupportsInformalParameters {
+
+}

Modified: 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/StrategyServiceBuilderImpl.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/StrategyServiceBuilderImpl.java?view=diff&rev=475344&r1=475343&r2=475344
==============================================================================
--- 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/StrategyServiceBuilderImpl.java
 (original)
+++ 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/ioc/services/StrategyServiceBuilderImpl.java
 Wed Nov 15 10:23:31 2006
@@ -14,21 +14,15 @@
 
 package org.apache.tapestry.internal.ioc.services;
 
-import org.apache.tapestry.ioc.services.ClassFactory;
 import org.apache.tapestry.ioc.services.StrategyServiceBuilder;
 import org.apache.tapestry.util.StrategyRegistry;
 
-/**
- * 
- */
 public class StrategyServiceBuilderImpl implements StrategyServiceBuilder
 {
-    private ClassFactory _classFactory;
-
+    
     public <S> S build(StrategyRegistry<S> registry)
     {
-        Class interfaceType = registry.getAdapterType();
-
+    
         return null;
     }
 

Modified: 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/model/MutableComponentModelImpl.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/model/MutableComponentModelImpl.java?view=diff&rev=475344&r1=475343&r2=475344
==============================================================================
--- 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/model/MutableComponentModelImpl.java
 (original)
+++ 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/model/MutableComponentModelImpl.java
 Wed Nov 15 10:23:31 2006
@@ -56,6 +56,8 @@
 
     private List<String> _mixinClassNames;
 
+    private boolean _informalParametersSupported;
+
     public MutableComponentModelImpl(String componentClassName, Log log, 
Resource baseResource,
             ComponentModel parentModel)
     {
@@ -241,4 +243,13 @@
         return Collections.unmodifiableList(_mixinClassNames);
     }
 
+    public void enableSupportsInformalParameters()
+    {
+        _informalParametersSupported = true;
+    }
+
+    public boolean getSupportsInformalParameters()
+    {
+      return _informalParametersSupported;
+    }
 }

Modified: 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageLoaderImpl.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageLoaderImpl.java?view=diff&rev=475344&r1=475343&r2=475344
==============================================================================
--- 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageLoaderImpl.java
 (original)
+++ 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageLoaderImpl.java
 Wed Nov 15 10:23:31 2006
@@ -361,14 +361,6 @@
         }
     }
 
-    private void addMixinsToComponent(ComponentPageElement component, 
ComponentModel model)
-    {
-        for (String mixinClassName : model.getMixinClassNames())
-        {
-            _pageElementFactory.addMixinByClassName(component, mixinClassName);
-        }
-    }
-
     private void addMixinsToComponent(ComponentPageElement component, 
EmbeddedComponentModel model,
             String mixins)
     {

Added: 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/SupportsInformalParametersWorker.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/SupportsInformalParametersWorker.java?view=auto&rev=475344
==============================================================================
--- 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/SupportsInformalParametersWorker.java
 (added)
+++ 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/SupportsInformalParametersWorker.java
 Wed Nov 15 10:23:31 2006
@@ -0,0 +1,22 @@
+package org.apache.tapestry.internal.services;
+
+import org.apache.tapestry.annotations.SupportsInformalParameters;
+import org.apache.tapestry.model.MutableComponentModel;
+import org.apache.tapestry.services.ClassTransformation;
+import org.apache.tapestry.services.ComponentClassTransformWorker;
+
+/**
+ * Checks for the [EMAIL PROTECTED] SupportsInformalParameters} annotation, 
settting the corresponding
+ * flag on the model if present. 
+ *
+ */
+public class SupportsInformalParametersWorker implements 
ComponentClassTransformWorker
+{
+
+    public void transform(ClassTransformation transformation, 
MutableComponentModel model)
+    {
+        if (transformation.getAnnotation(SupportsInformalParameters.class) != 
null)
+            model.enableSupportsInformalParameters();
+    }
+
+}

Modified: 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/model/ComponentModel.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/model/ComponentModel.java?view=diff&rev=475344&r1=475343&r2=475344
==============================================================================
--- 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/model/ComponentModel.java
 (original)
+++ 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/model/ComponentModel.java
 Wed Nov 15 10:23:31 2006
@@ -20,37 +20,25 @@
 import org.apache.tapestry.Resource;
 import org.apache.tapestry.annotations.ComponentClass;
 import org.apache.tapestry.annotations.Persist;
+import org.apache.tapestry.annotations.SupportsInformalParameters;
 
 /**
  * Defines a component in terms of its capabilities, parameters, 
sub-components, etc. During
  * <em>runtime</em>, the component model is immutable. During 
<em>construction</em> time, when
- * the class is being transformed a loaded, the model is mutable.
+ * the class is being transformed and loaded, the model is mutable.
  * 
- * @see
+ * @see MutableComponentModel
  */
 public interface ComponentModel
 {
-    /** The FQCN of the component. */
-    String getComponentClassName();
-
     /**
      * Returns the resource corresponding to the class file for this 
component. This is used to find
      * related resources, such as the component's template and message catalog.
      */
     Resource getBaseResource();
 
-    /** Returns object that will be used to log warnings and errors related to 
this component. */
-    Log getLog();
-
-    /**
-     * Returns an alphabetically sorted list of the names of all formal 
parameters. This includes
-     * parameters defined by a base class.
-     */
-
-    List<String> getParameterNames();
-
-    /** Return a single parameter model by parameter name, or null if the 
parameter is not defined. */
-    ParameterModel getParameterModel(String parameterName);
+    /** The FQCN of the component. */
+    String getComponentClassName();
 
     /**
      * Returns the ids of all embedded components defined within the component 
class (via the
@@ -68,14 +56,6 @@
     EmbeddedComponentModel getEmbeddedComponentModel(String componentId);
 
     /**
-     * Returns a list of the names of all persistent fields (within this 
class, or any super-class).
-     * The names are sorted alphabetically.
-     * 
-     * @see Persist
-     */
-    List<String> getPersistentFieldNames();
-
-    /**
      * Returns the persistent strategy associated with the field.
      * 
      * @param fieldName
@@ -84,6 +64,30 @@
      */
     String getFieldPersistenceStrategy(String fieldName);
 
+    /** Returns object that will be used to log warnings and errors related to 
this component. */
+    Log getLog();
+
+    /** Returns a list of the class names of mixins that are part of the 
component's implementation. */
+    List<String> getMixinClassNames();
+
+    /** Return a single parameter model by parameter name, or null if the 
parameter is not defined. */
+    ParameterModel getParameterModel(String parameterName);
+
+    /**
+     * Returns an alphabetically sorted list of the names of all formal 
parameters. This includes
+     * parameters defined by a base class.
+     */
+
+    List<String> getParameterNames();
+
+    /**
+     * Returns a list of the names of all persistent fields (within this 
class, or any super-class).
+     * The names are sorted alphabetically.
+     * 
+     * @see Persist
+     */
+    List<String> getPersistentFieldNames();
+
     /**
      * Returns true if the modeled component is a root class, a component 
class whose parent does
      * not have the [EMAIL PROTECTED] ComponentClass} annotation. This is 
often used to determine whether to
@@ -93,6 +97,13 @@
      */
     boolean isRootClass();
 
-    /** Returns a list of the class names of mixins that are part of the 
component's implementation. */
-    List<String> getMixinClassNames();
+    /**
+     * Returns true if the model indicates that informal parameters, 
additional parameters beyond
+     * the formal parameter defined for the component, are supported. This is 
false in most cases,
+     * but may be set to true for specific classes (when the [EMAIL PROTECTED] 
SupportsInformalParameters}
+     * annotation is present, or inherited from a super-class).
+     * 
+     * @return true if this component model supports informal parameters
+     */
+    boolean getSupportsInformalParameters();
 }

Modified: 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/model/MutableComponentModel.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/model/MutableComponentModel.java?view=diff&rev=475344&r1=475343&r2=475344
==============================================================================
--- 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/model/MutableComponentModel.java
 (original)
+++ 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/model/MutableComponentModel.java
 Wed Nov 15 10:23:31 2006
@@ -67,4 +67,7 @@
 
     /** Adds a mixin to the component's implementation. */
     void addMixinClassName(String mixinClassName);
+    
+    /** Sets the internal flag to indicate that this model (and all models 
that extend from it) support informal parameters. */
+    void enableSupportsInformalParameters();
 }

Modified: 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/TapestryModule.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/TapestryModule.java?view=diff&rev=475344&r1=475343&r2=475344
==============================================================================
--- 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/TapestryModule.java
 (original)
+++ 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/TapestryModule.java
 Wed Nov 15 10:23:31 2006
@@ -69,6 +69,7 @@
 import org.apache.tapestry.internal.services.RetainWorker;
 import org.apache.tapestry.internal.services.SessionPersistentFieldStrategy;
 import org.apache.tapestry.internal.services.StaticFilesFilter;
+import org.apache.tapestry.internal.services.SupportsInformalParametersWorker;
 import org.apache.tapestry.internal.services.UnclaimedFieldWorker;
 import org.apache.tapestry.internal.services.WebContextImpl;
 import org.apache.tapestry.internal.services.WebRequestImpl;
@@ -379,7 +380,7 @@
         add(configuration, locator, PersistentFieldManager.class);
         add(configuration, locator, Environment.class);
         add(configuration, locator, ComponentSource.class);
-        
+
         configuration.add(new InfrastructureContribution("request", request));
         configuration.add(new InfrastructureContribution("response", 
response));
         configuration.add(new InfrastructureContribution("typeCoercer", 
typeCoercer));
@@ -493,6 +494,7 @@
      * <li>Mixin -- adds a mixin as part of a component's implementation</li>
      * <li>Environment -- allows fields to contain values extracted from the 
[EMAIL PROTECTED] Environment}
      * service</li>
+     * <li>SupportsInformalParameters -- checks for the annotation</li>
      * <li>UnclaimedField -- identifies unclaimed fields and resets them to 
null/0/false at the end
      * of the request</li>
      * <li>SetupRender, BeginRender, etc. -- correspond to component render 
phases and annotations</li>
@@ -516,6 +518,7 @@
         configuration.add("Environment", new EnvironmentalWorker(environment));
         configuration.add("Mixin", new MixinWorker(resolver));
         configuration.add("OnEvent", new OnEventWorker());
+        configuration.add("SupportsInformalParameters", new 
SupportsInformalParametersWorker());
 
         // Workers for the component rendering state machine methods; this is 
in typical
         // execution order.

Modified: 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/BaseTestCase.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/BaseTestCase.java?view=diff&rev=475344&r1=475343&r2=475344
==============================================================================
--- 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/BaseTestCase.java
 (original)
+++ 
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/BaseTestCase.java
 Wed Nov 15 10:23:31 2006
@@ -590,4 +590,10 @@
         response.encodeRedirectURL(URI);
         setReturnValue(encoded);
     }
+
+    protected final <T extends Annotation> void 
train_getAnnotation(ClassTransformation transformation, Class<T> 
annotationClass, T annotation)
+    {
+        transformation.getAnnotation(annotationClass);
+        setReturnValue(annotation);
+    }
 }

Modified: 
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/pages/InstanceMixin.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/pages/InstanceMixin.java?view=diff&rev=475344&r1=475343&r2=475344
==============================================================================
--- 
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/pages/InstanceMixin.java
 (original)
+++ 
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/pages/InstanceMixin.java
 Wed Nov 15 10:23:31 2006
@@ -32,11 +32,13 @@
 @ComponentClass
 public class InstanceMixin
 {
+    @SuppressWarnings("unused")
     @Component(parameters =
     { "value=date2", "format=format", "test=showEmphasis" })
     @Mixins("Emphasis")
     private Output _output2;
 
+    @SuppressWarnings("unused")
     @Component(parameters =
     { "value=date3", "format=format", "test=showEmphasis" })
     @MixinClasses(Emphasis.class)

Modified: 
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/bindings/PropBindingFactoryTest.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/bindings/PropBindingFactoryTest.java?view=diff&rev=475344&r1=475343&r2=475344
==============================================================================
--- 
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/bindings/PropBindingFactoryTest.java
 (original)
+++ 
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/bindings/PropBindingFactoryTest.java
 Wed Nov 15 10:23:31 2006
@@ -33,8 +33,6 @@
 
 public class PropBindingFactoryTest extends InternalBaseTestCase
 {
-    private static final String BEAN_CLASS = TargetBean.class.getName();
-
     private BindingFactory _factory;
 
     @BeforeClass

Modified: 
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/model/MutableComponentModelImplTest.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/model/MutableComponentModelImplTest.java?view=diff&rev=475344&r1=475343&r2=475344
==============================================================================
--- 
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/model/MutableComponentModelImplTest.java
 (original)
+++ 
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/model/MutableComponentModelImplTest.java
 Wed Nov 15 10:23:31 2006
@@ -496,4 +496,23 @@
         verify();
     }
 
+    @Test
+    public void default_for_supports_informal_parameters_is_false()
+    {
+        Resource r = newResource();
+        Log log = newLog();
+
+        replay();
+
+        MutableComponentModel model = new 
MutableComponentModelImpl(CLASS_NAME, log, r, null);
+
+        assertFalse(model.getSupportsInformalParameters());
+
+        model.enableSupportsInformalParameters();
+
+        assertTrue(model.getSupportsInformalParameters());
+
+        verify();
+    }
+    
 }

Added: 
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/SupportsInformalParametersWorkerTest.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/SupportsInformalParametersWorkerTest.java?view=auto&rev=475344
==============================================================================
--- 
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/SupportsInformalParametersWorkerTest.java
 (added)
+++ 
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/SupportsInformalParametersWorkerTest.java
 Wed Nov 15 10:23:31 2006
@@ -0,0 +1,45 @@
+package org.apache.tapestry.internal.services;
+
+
+import org.apache.tapestry.annotations.SupportsInformalParameters;
+import org.apache.tapestry.internal.test.InternalBaseTestCase;
+import org.apache.tapestry.model.MutableComponentModel;
+import org.apache.tapestry.services.ClassTransformation;
+import org.testng.annotations.Test;
+
+public class SupportsInformalParametersWorkerTest extends InternalBaseTestCase
+{
+
+    @Test
+    public void annotation_present()
+    {
+        ClassTransformation ct = newClassTransformation();
+        MutableComponentModel model = newMutableComponentModel();
+        SupportsInformalParameters annotation = 
newMock(SupportsInformalParameters.class);
+        
+        train_getAnnotation(ct, SupportsInformalParameters.class, annotation);
+        model.enableSupportsInformalParameters();
+        
+        replay();
+        
+        new SupportsInformalParametersWorker().transform(ct, model);
+        
+        verify();
+    }
+    
+    @Test
+    public void annotation_missing()
+    {
+        ClassTransformation ct = newClassTransformation();
+        MutableComponentModel model = newMutableComponentModel();
+        
+        train_getAnnotation(ct, SupportsInformalParameters.class, null);
+        
+        replay();
+        
+        new SupportsInformalParametersWorker().transform(ct, model);
+        
+        verify();
+    
+    }
+}

Modified: 
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/IntegrationTest.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/IntegrationTest.java?view=diff&rev=475344&r1=475343&r2=475344
==============================================================================
--- 
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/IntegrationTest.java
 (original)
+++ 
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/ioc/IntegrationTest.java
 Wed Nov 15 10:23:31 2006
@@ -361,6 +361,9 @@
 
         Registry r = buildRegistry(EagerLoadModule.class);
 
+        // Prevents warning: r is never read
+        assertNotNull(r);
+        
         assertTrue(EagerLoadModule._eagerLoadDidHappen);
 
         r = null;


Reply via email to