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 <thi...@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();
+                }
             }
         });
     }

Reply via email to