You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by hl...@apache.org on 2009/02/05 23:54:27 UTC

svn commit: r741335 - in /tapestry/tapestry5/trunk: src/site/apt/ tapestry-core/src/main/java/org/apache/tapestry5/ tapestry-core/src/main/java/org/apache/tapestry5/internal/ tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/ tapestry-...

Author: hlship
Date: Thu Feb  5 22:54:26 2009
New Revision: 741335

URL: http://svn.apache.org/viewvc?rev=741335&view=rev
Log:
TAP5-485: Tracking issue for changes required by com.formos.tapestry:tapestry-template
- back out prior change, make all AssetBindings invariant (in light of AssetPathEncoder)

Removed:
    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/bindings/AssetBindingTest.java
Modified:
    tapestry/tapestry5/trunk/src/site/apt/upgrade.apt
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/Asset.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/InternalSymbols.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/AssetBinding.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/AssetBindingFactory.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/ContextBindingFactory.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/InvariantBinding.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AbstractAsset.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClasspathAssetFactory.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ClasspathAssetFactoryTest.java

Modified: tapestry/tapestry5/trunk/src/site/apt/upgrade.apt
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/src/site/apt/upgrade.apt?rev=741335&r1=741334&r2=741335&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/src/site/apt/upgrade.apt (original)
+++ tapestry/tapestry5/trunk/src/site/apt/upgrade.apt Thu Feb  5 22:54:26 2009
@@ -46,9 +46,4 @@
   Extra public methods on module classes (methods that do not define services, contribute to services,
   or decorate or advise services) are now errors.
 
-* Asset Interface
-
-  The {{{apidocs/org/apache/tapestry5/Asset.html}Asset}} interface has added a new method,
-  isInvariant().  This should only concern developers who have created their own Asset
-  implementations.
 

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/Asset.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/Asset.java?rev=741335&r1=741334&r2=741335&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/Asset.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/Asset.java Thu Feb  5 22:54:26 2009
@@ -32,8 +32,10 @@
      * Tapestry's built-in asset types (context and classpath) always incorporate a version number as part of the path,
      * and alternate implementation are encouraged to do so as well. In addition, Tapestry ensures that context and
      * classpath assets have a far-future expires header (to ensure aggresive caching by the client).
-     *
-     * @see org.apache.tapestry5.services.AssetPathConverter
+     * <p/>
+     * This value is considered <em>variant</em>; because of {@link org.apache.tapestry5.services.AssetPathConverter},
+     * it is conceivable for the return value to be different at different times, depending on how the converter changes
+     * the default path.
      */
     String toClientURL();
 
@@ -41,14 +43,4 @@
      * Returns the underlying Resource for the Asset.
      */
     Resource getResource();
-
-    /**
-     * Determines if an asset is variant or invariant: a normal asset is invariant, and always return the same value
-     * from {@link #toClientURL()}.  All the builtin types of assets are invariant. Variant assets calculate their
-     * clientURL dynamically, possibly incorporating user-specific details.
-     *
-     * @return true if the asset's client URL does not change, false if the clientURL is calculated more dynamically.
-     * @since 5.1.0.0
-     */
-    boolean isInvariant();
 }

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/InternalSymbols.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/InternalSymbols.java?rev=741335&r1=741334&r2=741335&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/InternalSymbols.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/InternalSymbols.java Thu Feb  5 22:54:26 2009
@@ -27,10 +27,4 @@
      * resources related to the application.
      */
     public static final String APP_NAME = "tapestry.app-name";
-
-    /**
-     * If true, then all assets should be variant (normally this is false, and asset bindings follow {@link
-     * org.apache.tapestry5.Asset#isInvariant()}
-     */
-    public static final String FORCE_ASSET_BINDINGS_VARIANT = "tapestry.force-assets-bindings-variant";
 }

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/AssetBinding.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/AssetBinding.java?rev=741335&r1=741334&r2=741335&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/AssetBinding.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/AssetBinding.java Thu Feb  5 22:54:26 2009
@@ -17,27 +17,15 @@
 import org.apache.tapestry5.Asset;
 import org.apache.tapestry5.ioc.Location;
 
-public class AssetBinding extends AbstractBinding
+public class AssetBinding extends InvariantBinding
 {
-    private final String description;
-
     private final Asset asset;
 
-    private final boolean forceVariant;
-
-    AssetBinding(Location location, String description, Asset asset, boolean forceVariant)
+    AssetBinding(Location location, String description, Asset asset)
     {
-        super(location);
+        super(location, Asset.class, description);
 
-        this.description = description;
         this.asset = asset;
-        this.forceVariant = forceVariant;
-    }
-
-    @Override
-    public Class getBindingType()
-    {
-        return Asset.class;
     }
 
     public Object get()
@@ -45,18 +33,6 @@
         return asset;
     }
 
-    /**
-     * Queries the underlying Asset to determine if {@linkplain org.apache.tapestry5.Asset#isInvariant() it is
-     * invariant}.
-     *
-     * @see org.apache.tapestry5.internal.InternalSymbols#FORCE_ASSET_BINDINGS_VARIANT
-     */
-    @Override
-    public boolean isInvariant()
-    {
-        return !forceVariant && asset.isInvariant();
-    }
-
     @Override
     public String toString()
     {

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/AssetBindingFactory.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/AssetBindingFactory.java?rev=741335&r1=741334&r2=741335&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/AssetBindingFactory.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/AssetBindingFactory.java Thu Feb  5 22:54:26 2009
@@ -17,10 +17,8 @@
 import org.apache.tapestry5.Asset;
 import org.apache.tapestry5.Binding;
 import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.internal.InternalSymbols;
 import org.apache.tapestry5.ioc.Location;
 import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.annotations.Symbol;
 import org.apache.tapestry5.services.AssetSource;
 import org.apache.tapestry5.services.BindingFactory;
 
@@ -34,15 +32,9 @@
 {
     private final AssetSource source;
 
-    private final boolean forceVariant;
-
-    public AssetBindingFactory(AssetSource source,
-
-                               @Symbol(InternalSymbols.FORCE_ASSET_BINDINGS_VARIANT)
-                               boolean forceVariant)
+    public AssetBindingFactory(AssetSource source)
     {
         this.source = source;
-        this.forceVariant = forceVariant;
     }
 
     public Binding newBinding(String description, ComponentResources container, ComponentResources component,
@@ -52,6 +44,6 @@
 
         Asset asset = source.getAsset(baseResource, expression, container.getLocale());
 
-        return new AssetBinding(location, description, asset, forceVariant);
+        return new AssetBinding(location, description, asset);
     }
 }

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/ContextBindingFactory.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/ContextBindingFactory.java?rev=741335&r1=741334&r2=741335&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/ContextBindingFactory.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/ContextBindingFactory.java Thu Feb  5 22:54:26 2009
@@ -17,9 +17,7 @@
 import org.apache.tapestry5.Asset;
 import org.apache.tapestry5.Binding;
 import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.internal.InternalSymbols;
 import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.annotations.Symbol;
 import org.apache.tapestry5.services.AssetSource;
 import org.apache.tapestry5.services.BindingFactory;
 
@@ -33,15 +31,9 @@
 {
     private final AssetSource source;
 
-    private final boolean forceVariant;
-
-    public ContextBindingFactory(AssetSource source,
-
-                                 @Symbol(InternalSymbols.FORCE_ASSET_BINDINGS_VARIANT)
-                                 boolean forceVariant)
+    public ContextBindingFactory(AssetSource source)
     {
         this.source = source;
-        this.forceVariant = forceVariant;
     }
 
     public Binding newBinding(String description, ComponentResources container, ComponentResources component,
@@ -49,6 +41,6 @@
     {
         Asset asset = source.getContextAsset(expression, container.getLocale());
 
-        return new AssetBinding(location, description, asset, forceVariant);
+        return new AssetBinding(location, description, asset);
     }
 }

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/InvariantBinding.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/InvariantBinding.java?rev=741335&r1=741334&r2=741335&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/InvariantBinding.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/InvariantBinding.java Thu Feb  5 22:54:26 2009
@@ -24,7 +24,7 @@
 {
     private final Class bindingType;
 
-    private final String description;
+    protected final String description;
 
     public InvariantBinding(Location location, Class bindingType, String description)
     {
@@ -34,6 +34,9 @@
         this.description = description;
     }
 
+    /**
+     * Returns true.
+     */
     @Override
     public boolean isInvariant()
     {

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AbstractAsset.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AbstractAsset.java?rev=741335&r1=741334&r2=741335&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AbstractAsset.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AbstractAsset.java Thu Feb  5 22:54:26 2009
@@ -23,13 +23,6 @@
  */
 public abstract class AbstractAsset implements Asset
 {
-    /**
-     * Returns true which is correct for most Asset types.
-     */
-    public boolean isInvariant()
-    {
-        return true;
-    }
 
     @Override
     public String toString()

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClasspathAssetFactory.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClasspathAssetFactory.java?rev=741335&r1=741334&r2=741335&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClasspathAssetFactory.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClasspathAssetFactory.java Thu Feb  5 22:54:26 2009
@@ -19,9 +19,9 @@
 import org.apache.tapestry5.ioc.internal.util.ClasspathResource;
 import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.services.AssetFactory;
+import org.apache.tapestry5.services.AssetPathConverter;
 import org.apache.tapestry5.services.ClasspathAssetAliasManager;
 import org.apache.tapestry5.services.InvalidationListener;
-import org.apache.tapestry5.services.AssetPathConverter;
 
 import java.util.Map;
 
@@ -37,7 +37,7 @@
 
     private final ClasspathAssetAliasManager aliasManager;
 
-    private final Map<Resource, String> resourceToClientURL = CollectionFactory.newConcurrentMap();
+    private final Map<Resource, String> resourceToDefaultPath = CollectionFactory.newConcurrentMap();
 
     private final ClasspathResource rootResource;
 
@@ -55,26 +55,24 @@
 
     public void objectWasInvalidated()
     {
-        resourceToClientURL.clear();
+        resourceToDefaultPath.clear();
     }
 
     private String clientURL(Resource resource)
     {
-        String clientURL = resourceToClientURL.get(resource);
+        String defaultPath = resourceToDefaultPath.get(resource);
 
-        if (clientURL == null)
+        if (defaultPath == null)
         {
-            clientURL = buildClientURL(resource);
-            resourceToClientURL.put(resource, clientURL);
-        }
+            defaultPath = buildDefaultPath(resource);
 
-        // The path generated is partially request-dependent and therefore can't be cached, it will even
-        // vary from request to the next.
+            resourceToDefaultPath.put(resource, defaultPath);
+        }
 
-        return aliasManager.toClientURL(clientURL);
+        return converter.convertAssetPath(defaultPath);
     }
 
-    private String buildClientURL(Resource resource)
+    private String buildDefaultPath(Resource resource)
     {
         boolean requiresDigest = cache.requiresDigest(resource);
 
@@ -89,7 +87,7 @@
             path = path.substring(0, lastdotx + 1) + cache.getDigest(resource) + path.substring(lastdotx);
         }
 
-        return converter.convertAssetPath(path);
+        return aliasManager.toClientURL(path);
     }
 
     public Asset createAsset(final Resource resource)

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java?rev=741335&r1=741334&r2=741335&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java Thu Feb  5 22:54:26 2009
@@ -1982,8 +1982,6 @@
 
         configuration.add(SymbolConstants.OMIT_GENERATOR_META, "false");
         configuration.add(SymbolConstants.GZIP_COMPRESSION_ENABLED, "true");
-
-        configuration.add(InternalSymbols.FORCE_ASSET_BINDINGS_VARIANT, "false");
     }
 
 

Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ClasspathAssetFactoryTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ClasspathAssetFactoryTest.java?rev=741335&r1=741334&r2=741335&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ClasspathAssetFactoryTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ClasspathAssetFactoryTest.java Thu Feb  5 22:54:26 2009
@@ -20,7 +20,6 @@
 import org.apache.tapestry5.ioc.internal.util.ClasspathResource;
 import org.apache.tapestry5.services.AssetFactory;
 import org.apache.tapestry5.services.ClasspathAssetAliasManager;
-import org.easymock.EasyMock;
 import org.testng.annotations.Test;
 
 public class ClasspathAssetFactoryTest extends InternalBaseTestCase
@@ -40,11 +39,10 @@
 
         train_toClientURL(aliasManager, "foo/Bar.txt", expectedClientURL);
 
-        EasyMock.expectLastCall().times(2); // Cache of the raw path, not the final path which may be optimized
-
         replay();
 
-        ClasspathAssetFactory factory = new ClasspathAssetFactory(cache, aliasManager, new IdentityAssetPathConverter());
+        ClasspathAssetFactory factory = new ClasspathAssetFactory(cache, aliasManager,
+                                                                  new IdentityAssetPathConverter());
 
         Asset asset = factory.createAsset(r);
 
@@ -84,8 +82,6 @@
 
         train_toClientURL(aliasManager, "foo/Bar.txt", expectedClientURL);
 
-        EasyMock.expectLastCall().times(2); // 2nd time is the toString() call
-
         replay();
 
         AssetFactory factory = new ClasspathAssetFactory(cache, aliasManager, new IdentityAssetPathConverter());
@@ -115,8 +111,6 @@
 
         train_toClientURL(aliasManager, "foo/Bar.ABC123.txt", expectedClientURL);
 
-        EasyMock.expectLastCall().times(2); // 2nd time is the toString() call
-
         replay();
 
         AssetFactory factory = new ClasspathAssetFactory(cache, aliasManager, new IdentityAssetPathConverter());