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());