You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by th...@apache.org on 2023/06/10 14:57:42 UTC
[tapestry-5] 02/02: TAP5-2742: reenabling resource -> class tracking
This is an automated email from the ASF dual-hosted git repository.
thiagohp pushed a commit to branch better-page-invalidation
in repository https://gitbox.apache.org/repos/asf/tapestry-5.git
commit 5a330e6eda17a2c4e60785359d1f7e91ea4df557
Author: Thiago H. de Paula Figueiredo <th...@arsmachina.com.br>
AuthorDate: Sat Jun 10 11:57:27 2023 -0300
TAP5-2742: reenabling resource -> class tracking
---
.../tapestry5/internal/transform/ImportWorker.java | 29 +++++++++++++++++++---
1 file changed, 26 insertions(+), 3 deletions(-)
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ImportWorker.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ImportWorker.java
index a3801a6ea..e47553fbd 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ImportWorker.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ImportWorker.java
@@ -14,11 +14,13 @@ package org.apache.tapestry5.internal.transform;
import org.apache.tapestry5.Asset;
import org.apache.tapestry5.ComponentResources;
+import org.apache.tapestry5.SymbolConstants;
import org.apache.tapestry5.annotations.Import;
import org.apache.tapestry5.annotations.SetupRender;
import org.apache.tapestry5.func.F;
import org.apache.tapestry5.func.Mapper;
import org.apache.tapestry5.func.Worker;
+import org.apache.tapestry5.internal.services.assets.ResourceChangeTracker;
import org.apache.tapestry5.ioc.services.SymbolSource;
import org.apache.tapestry5.model.MutableComponentModel;
import org.apache.tapestry5.plastic.*;
@@ -44,6 +46,10 @@ public class ImportWorker implements ComponentClassTransformWorker2
private final SymbolSource symbolSource;
private final AssetSource assetSource;
+
+ private final ResourceChangeTracker resourceChangeTracker;
+
+ private final boolean multipleClassLoaders;
private final Worker<Asset> importLibrary = new Worker<Asset>()
{
@@ -69,21 +75,29 @@ public class ImportWorker implements ComponentClassTransformWorker2
}
};
- public ImportWorker(JavaScriptSupport javascriptSupport, SymbolSource symbolSource, AssetSource assetSource)
+ public ImportWorker(JavaScriptSupport javascriptSupport, SymbolSource symbolSource, AssetSource assetSource,
+ ResourceChangeTracker resourceChangeTracker)
{
this.javascriptSupport = javascriptSupport;
this.symbolSource = symbolSource;
this.assetSource = assetSource;
+ this.resourceChangeTracker = resourceChangeTracker;
+ this.multipleClassLoaders =
+ !Boolean.valueOf(symbolSource.valueForSymbol(SymbolConstants.PRODUCTION_MODE)) &&
+ Boolean.valueOf(symbolSource.valueForSymbol(SymbolConstants.MULTIPLE_CLASSLOADERS));
}
public void transform(PlasticClass componentClass, TransformationSupport support, MutableComponentModel model)
{
+ resourceChangeTracker.setCurrentClassName(model.getComponentClassName());
processClassAnnotationAtSetupRenderPhase(componentClass, model);
for (PlasticMethod m : componentClass.getMethodsWithAnnotation(Import.class))
{
decorateMethod(componentClass, model, m);
}
+
+ resourceChangeTracker.clearCurrentClassName();
}
private void processClassAnnotationAtSetupRenderPhase(PlasticClass componentClass, MutableComponentModel model)
@@ -112,8 +126,6 @@ public class ImportWorker implements ComponentClassTransformWorker2
{
importStacks(method, annotation.stack());
- String libraryName = model.getLibraryName();
-
importLibraries(componentClass, model, method, annotation.library());
importStylesheets(componentClass, model, method, annotation.stylesheet());
@@ -264,6 +276,7 @@ public class ImportWorker implements ComponentClassTransformWorker2
private void addMethodAssetOperationAdvice(PlasticMethod method, final FieldHandle access,
final Worker<Asset> operation)
{
+ final String className = method.getPlasticClass().getClassName();
method.addAdvice(new MethodAdvice()
{
public void advise(MethodInvocation invocation)
@@ -272,7 +285,17 @@ public class ImportWorker implements ComponentClassTransformWorker2
Asset[] assets = (Asset[]) access.get(invocation.getInstance());
+ if (multipleClassLoaders)
+ {
+ resourceChangeTracker.setCurrentClassName(className);
+ }
+
F.flow(assets).each(operation);
+
+ if (multipleClassLoaders)
+ {
+ resourceChangeTracker.clearCurrentClassName();
+ }
}
});
}