You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2007/02/19 21:45:12 UTC

svn commit: r509327 - in /tapestry/tapestry5/tapestry-core/trunk/src: main/java/org/apache/tapestry/corelib/mixins/ main/java/org/apache/tapestry/internal/services/ main/java/org/apache/tapestry/services/ main/java/org/apache/tapestry/test/ test/java/o...

Author: hlship
Date: Mon Feb 19 12:45:11 2007
New Revision: 509327

URL: http://svn.apache.org/viewvc?view=rev&rev=509327
Log:
Make use of ClassTransformation.extendConstructor() to inject resources, when possible.

Modified:
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/mixins/DiscardBody.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/CommonResourcesInjectionProvider.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentResourcesInjectionProvider.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InjectAssetWorker.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InternalClassTransformationImpl.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/ClassTransformation.java
    tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/TapestryTestCase.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/InjectAssetWorkerTest.java
    tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/InternalClassTransformationImplTest.java

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/mixins/DiscardBody.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/mixins/DiscardBody.java?view=diff&rev=509327&r1=509326&r2=509327
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/mixins/DiscardBody.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/mixins/DiscardBody.java Mon Feb 19 12:45:11 2007
@@ -20,7 +20,8 @@
 /**
  * Discards a component's body. Returns false from the {@link BeforeRenderBody} phase, which
  * prevents the rendering of the body. Set up as a "MixinAfter" so that components can render their
- * body if they so desire before this mixin cancels the body.
+ * an alternative body if they so desire before this mixin cancels the normal body (from the
+ * container's template).
  */
 @MixinAfter
 public class DiscardBody

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/CommonResourcesInjectionProvider.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/CommonResourcesInjectionProvider.java?view=diff&rev=509327&r1=509326&r2=509327
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/CommonResourcesInjectionProvider.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/CommonResourcesInjectionProvider.java Mon Feb 19 12:45:11 2007
@@ -1,4 +1,4 @@
-// Copyright 2006 The Apache Software Foundation
+// Copyright 2006, 2007 The Apache Software Foundation
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -25,7 +25,6 @@
 import org.apache.tapestry.model.MutableComponentModel;
 import org.apache.tapestry.services.ClassTransformation;
 import org.apache.tapestry.services.InjectionProvider;
-import org.apache.tapestry.services.TransformConstants;
 
 /**
  * Allows for a number of annonymous injections based on the type of field that is to be injected.
@@ -65,7 +64,7 @@
 
         transformation.makeReadOnly(fieldName);
 
-        transformation.extendMethod(TransformConstants.CONTAINING_PAGE_DID_LOAD_SIGNATURE, body);
+        transformation.extendConstructor(body);
 
         return true;
     }

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentResourcesInjectionProvider.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentResourcesInjectionProvider.java?view=diff&rev=509327&r1=509326&r2=509327
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentResourcesInjectionProvider.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/ComponentResourcesInjectionProvider.java Mon Feb 19 12:45:11 2007
@@ -1,4 +1,4 @@
-// Copyright 2006 The Apache Software Foundation
+// Copyright 2006, 2007 The Apache Software Foundation
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -21,7 +21,6 @@
 import org.apache.tapestry.model.MutableComponentModel;
 import org.apache.tapestry.services.ClassTransformation;
 import org.apache.tapestry.services.InjectionProvider;
-import org.apache.tapestry.services.TransformConstants;
 
 /**
  * Allows for the injection of the component's {@link org.apache.tapestry.ComponentResources}.
@@ -37,8 +36,7 @@
         {
             String body = format("%s = %s;", fieldName, transformation.getResourcesFieldName());
 
-            transformation
-                    .extendMethod(TransformConstants.CONTAINING_PAGE_DID_LOAD_SIGNATURE, body);
+            transformation.extendConstructor(body);
 
             transformation.makeReadOnly(fieldName);
 

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InjectAssetWorker.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InjectAssetWorker.java?view=diff&rev=509327&r1=509326&r2=509327
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InjectAssetWorker.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InjectAssetWorker.java Mon Feb 19 12:45:11 2007
@@ -24,7 +24,6 @@
 import org.apache.tapestry.services.AssetSource;
 import org.apache.tapestry.services.ClassTransformation;
 import org.apache.tapestry.services.ComponentClassTransformWorker;
-import org.apache.tapestry.services.TransformConstants;
 
 /**
  * Supports injection for fields of type {@link Asset}. This worker must be scheduled
@@ -110,8 +109,7 @@
 
         builder.end();
 
-        transformation.extendMethod(TransformConstants.CONTAINING_PAGE_DID_LOAD_SIGNATURE, builder
-                .toString());
+        transformation.extendConstructor(builder.toString());
 
     }
 }

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InternalClassTransformationImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InternalClassTransformationImpl.java?view=diff&rev=509327&r1=509326&r2=509327
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InternalClassTransformationImpl.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/InternalClassTransformationImpl.java Mon Feb 19 12:45:11 2007
@@ -1115,7 +1115,7 @@
     {
         _constructorArgs.add(new ConstructorArg(fieldType, value));
 
-        _constructor.append(format("  %s = $%d;\n", fieldName, _constructorArgs.size()));
+        extendConstructor(format("  %s = $%d;", fieldName, _constructorArgs.size()));
     }
 
     public void injectField(String fieldName, Object value)
@@ -1491,13 +1491,14 @@
         return _log;
     }
 
-    public void addToConstructor(String statement)
+    public void extendConstructor(String statement)
     {
         Defense.notNull(statement, "statement");
 
         failIfFrozen();
 
         _constructor.append(statement);
+        _constructor.append("\n");
     }
 
 }

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/ClassTransformation.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/ClassTransformation.java?view=diff&rev=509327&r1=509326&r2=509327
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/ClassTransformation.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/services/ClassTransformation.java Mon Feb 19 12:45:11 2007
@@ -1,4 +1,4 @@
-// Copyright 2006 The Apache Software Foundation
+// Copyright 2006, 2007 The Apache Software Foundation
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -279,12 +279,12 @@
     void addMethod(MethodSignature signature, String methodBody);
 
     /**
-     * Adds a statement to the constructor.
+     * Adds a statement to the constructor. The statement is added as is, though a newline is added.
      * 
      * @param statement
      *            the statement to add, which should end with a semicolon
      */
-    void addToConstructor(String statement);
+    void extendConstructor(String statement);
 
     /**
      * Replaces all read-references to the specified field with invocations of the specified method

Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/TapestryTestCase.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/TapestryTestCase.java?view=diff&rev=509327&r1=509326&r2=509327
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/TapestryTestCase.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/TapestryTestCase.java Mon Feb 19 12:45:11 2007
@@ -213,6 +213,11 @@
         transformation.extendMethod(eq(signature), codeEq(join(body)));
     }
 
+    protected final void train_extendConstructor(ClassTransformation transformation, String... body)
+    {
+        transformation.extendConstructor(codeEq(join(body)));
+    }
+
     protected final void train_getResourcesFieldName(ClassTransformation transformation, String name)
     {
         expect(transformation.getResourcesFieldName()).andReturn(name).atLeastOnce();
@@ -769,7 +774,6 @@
     {
         expect(source.get(strategyName)).andReturn(strategy).atLeastOnce();
     }
-
 
     protected final <T extends Annotation> void train_getAnnotation(AnnotationProvider provider,
             Class<T> annotationClass, T annotation)

Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/InjectAssetWorkerTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/InjectAssetWorkerTest.java?view=diff&rev=509327&r1=509326&r2=509327
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/InjectAssetWorkerTest.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/InjectAssetWorkerTest.java Mon Feb 19 12:45:11 2007
@@ -1,4 +1,4 @@
-// Copyright 2006 The Apache Software Foundation
+// Copyright 2006, 2007 The Apache Software Foundation
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -20,7 +20,6 @@
 import org.apache.tapestry.model.MutableComponentModel;
 import org.apache.tapestry.services.AssetSource;
 import org.apache.tapestry.services.ClassTransformation;
-import org.apache.tapestry.services.TransformConstants;
 import org.testng.annotations.Test;
 
 public class InjectAssetWorkerTest extends InternalBaseTestCase
@@ -87,9 +86,8 @@
         ct.makeReadOnly("_fred");
         ct.claimField("_fred", annotation);
 
-        train_extendMethod(
+        train_extendConstructor(
                 ct,
-                TransformConstants.CONTAINING_PAGE_DID_LOAD_SIGNATURE,
                 "{",
                 "_fred = as.findAsset(res, \"foo.gif\", resources.getLocale());",
                 "}");

Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/InternalClassTransformationImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/InternalClassTransformationImplTest.java?view=diff&rev=509327&r1=509326&r2=509327
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/InternalClassTransformationImplTest.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/InternalClassTransformationImplTest.java Mon Feb 19 12:45:11 2007
@@ -742,7 +742,7 @@
         InternalClassTransformation ct = new InternalClassTransformationImpl(targetObjectCtClass,
                 _contextClassLoader, log, null);
 
-        ct.addToConstructor("_value = \"from constructor\";");
+        ct.extendConstructor("_value = \"from constructor\";");
 
         ct.finish();