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
The following commit(s) were added to refs/heads/better-page-invalidation by
this push:
new 7ff7b3e89 TAP-2742: code cleanup
7ff7b3e89 is described below
commit 7ff7b3e894767de2bf525596e0da381390554779
Author: Thiago H. de Paula Figueiredo <[email protected]>
AuthorDate: Sat Apr 29 17:30:07 2023 -0300
TAP-2742: code cleanup
---
.../internal/bindings/PropBindingFactory.java | 3 -
.../internal/renderers/RequestRenderer.java | 173 ++++++++++-----------
.../services/ComponentInstantiatorSourceImpl.java | 3 -
.../internal/services/RequestErrorFilter.java | 118 +-------------
.../rest/DefaultOpenApiDescriptionGenerator.java | 8 +-
.../internal/structure/ComponentPageElement.java | 1 -
.../PageClassloaderContextManagerImpl.java | 45 +-----
7 files changed, 102 insertions(+), 249 deletions(-)
diff --git
a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/PropBindingFactory.java
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/PropBindingFactory.java
index e2bcd29e7..acf7448e1 100644
---
a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/PropBindingFactory.java
+++
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/PropBindingFactory.java
@@ -49,7 +49,6 @@ public class PropBindingFactory implements BindingFactory
ComponentResources component, String expression,
Location location)
{
- // TODO: need to get correct classloader here, probably
Object target = container.getComponent();
Class targetClass = target.getClass();
targetClass = getClassLoaderAppropriateClass(targetClass);
@@ -68,10 +67,8 @@ public class PropBindingFactory implements BindingFactory
try
{
final PageClassloaderContext context =
pageClassloaderContextManager.get(className);
-// System.out.printf("XXXXX Target class (before): %s classloader :
%s\n", targetClass.getSimpleName(), targetClass.getClassLoader());
targetClass = context.getProxyFactory()
.getClassLoader().loadClass(className);
-// System.out.printf("XXXXX Target class (after) : %s classloader :
%s context %s\n", targetClass.getSimpleName(), targetClass.getClassLoader(),
context.getName());
} catch (ClassNotFoundException e)
{
throw new TapestryException(e.getMessage(), e);
diff --git
a/tapestry-core/src/main/java/org/apache/tapestry5/internal/renderers/RequestRenderer.java
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/renderers/RequestRenderer.java
index c0b0e956f..952ef050f 100644
---
a/tapestry-core/src/main/java/org/apache/tapestry5/internal/renderers/RequestRenderer.java
+++
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/renderers/RequestRenderer.java
@@ -78,9 +78,8 @@ public class RequestRenderer implements
ObjectRenderer<Request>
attributes(request, writer);
context(writer);
- // TODO: remove methods below
- pageClassloaderContext(writer);
- pages(writer);
+// pageClassloaderContext(writer);
+// pages(writer);
}
private void coreProperties(Request request, MarkupWriter writer)
@@ -276,89 +275,89 @@ public class RequestRenderer implements
ObjectRenderer<Request>
writer.end(); // dl
}
- private void pageClassloaderContext(MarkupWriter writer)
- {
- if (!productionMode)
- {
- section(writer, "Page Classloader Context");
- writer.element("ul");
- render(pageClassloaderContextManager.getRoot(), writer);
- writer.end(); // ul
- }
- }
-
- private void render(PageClassloaderContext context, MarkupWriter writer)
- {
- if (context != null)
- {
-
- writer.element("li");
-
- writer.element("p");
- writer.element("em");
- writer.write(context.getName());
- writer.write(", ");
- writer.write(context.getClassLoader().toString());
- writer.end(); // em
- writer.end(); // p
-
- writer.element("p");
-
writer.write(context.getClassNames().stream().collect(Collectors.joining(",
")));
- writer.end(); // p
-
- if (!context.getChildren().isEmpty())
- {
- writer.element("ul");
- for (PageClassloaderContext child : context.getChildren())
- {
- render(child, writer);
- }
- writer.end(); // ul
- }
- writer.end(); // li
-
- }
-
- }
-
- private void pages(MarkupWriter writer)
- {
- if (!productionMode)
- {
- section(writer, "Pages");
- writer.element("table", "class", "table table-condensed
table-hover table-striped exception-report-threads");
- writer.element("thead");
-
- writer.element("td");
- writer.write("Name");
- writer.end(); //td Name
-
- writer.element("td");
- writer.write("Context");
- writer.end(); //td Context
-
- writer.end(); // thead
-
- writer.element("tbody");
-
- List<Page> pages = new ArrayList<>(pageSource.getAllPages());
- Collections.sort(pages, Comparator.comparing(Page::getName));
-
- for (Page page : pages) {
- writer.element("tr");
- writer.element("td");
- writer.write(page.getName());
- writer.end(); // td
- writer.element("td");
-
writer.write(pageClassloaderContextManager.getRoot().findByClassName(componentClassResolver.getClassName(page.getName())).toString());
- writer.end(); // td
- writer.end(); // tr
- }
-
- writer.end(); // tbody
-
- writer.end(); // table
- }
- }
+// private void pageClassloaderContext(MarkupWriter writer)
+// {
+// if (!productionMode)
+// {
+// section(writer, "Page Classloader Context");
+// writer.element("ul");
+// render(pageClassloaderContextManager.getRoot(), writer);
+// writer.end(); // ul
+// }
+// }
+//
+// private void render(PageClassloaderContext context, MarkupWriter writer)
+// {
+// if (context != null)
+// {
+//
+// writer.element("li");
+//
+// writer.element("p");
+// writer.element("em");
+// writer.write(context.getName());
+// writer.write(", ");
+// writer.write(context.getClassLoader().toString());
+// writer.end(); // em
+// writer.end(); // p
+//
+// writer.element("p");
+//
writer.write(context.getClassNames().stream().collect(Collectors.joining(",
")));
+// writer.end(); // p
+//
+// if (!context.getChildren().isEmpty())
+// {
+// writer.element("ul");
+// for (PageClassloaderContext child : context.getChildren())
+// {
+// render(child, writer);
+// }
+// writer.end(); // ul
+// }
+// writer.end(); // li
+//
+// }
+//
+// }
+//
+// private void pages(MarkupWriter writer)
+// {
+// if (!productionMode)
+// {
+// section(writer, "Pages");
+// writer.element("table", "class", "table table-condensed
table-hover table-striped exception-report-threads");
+// writer.element("thead");
+//
+// writer.element("td");
+// writer.write("Name");
+// writer.end(); //td Name
+//
+// writer.element("td");
+// writer.write("Context");
+// writer.end(); //td Context
+//
+// writer.end(); // thead
+//
+// writer.element("tbody");
+//
+// List<Page> pages = new ArrayList<>(pageSource.getAllPages());
+// Collections.sort(pages, Comparator.comparing(Page::getName));
+//
+// for (Page page : pages) {
+// writer.element("tr");
+// writer.element("td");
+// writer.write(page.getName());
+// writer.end(); // td
+// writer.element("td");
+//
writer.write(pageClassloaderContextManager.getRoot().findByClassName(componentClassResolver.getClassName(page.getName())).toString());
+// writer.end(); // td
+// writer.end(); // tr
+// }
+//
+// writer.end(); // tbody
+//
+// writer.end(); // table
+// }
+// }
}
diff --git
a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImpl.java
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImpl.java
index 63edfcb0b..d1b8f258f 100644
---
a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImpl.java
+++
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImpl.java
@@ -241,7 +241,6 @@ public final class ComponentInstantiatorSourceImpl
implements ComponentInstantia
final String className =
classToInstantiatorIterator.next().getKey();
if (!className.equals(currentPage) &&
classNames.contains(className))
{
-// System.out.println("WWWWW Removing class instantiator " +
className);
classToInstantiatorIterator.remove();
}
}
@@ -252,7 +251,6 @@ public final class ComponentInstantiatorSourceImpl
implements ComponentInstantia
final String className = classToModelIterator.next().getKey();
if (!className.equals(currentPage) &&
classNames.contains(className))
{
-// System.out.println("WWWWW Removing class model " +
className);
classToModelIterator.remove();
}
}
@@ -353,7 +351,6 @@ public final class ComponentInstantiatorSourceImpl
implements ComponentInstantia
{
if (!OPEN_INSTANTIATORS.get().contains(dependency))
{
-// System.out.println("TTTTT calling
createInstaniatoForClass " + dependency);
createInstantiatorForClass(dependency);
}
}
diff --git
a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestErrorFilter.java
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestErrorFilter.java
index f1fdc6c87..20dc209ae 100644
---
a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestErrorFilter.java
+++
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestErrorFilter.java
@@ -1,27 +1,13 @@
package org.apache.tapestry5.internal.services;
import java.io.IOException;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.apache.tapestry5.commons.services.InvalidationEventHub;
-import org.apache.tapestry5.commons.util.DifferentClassVersionsException;
-import org.apache.tapestry5.corelib.pages.ExceptionReport;
-import org.apache.tapestry5.http.Link;
+
+import org.apache.tapestry5.beanmodel.services.*;
import org.apache.tapestry5.http.services.Request;
import org.apache.tapestry5.http.services.RequestFilter;
import org.apache.tapestry5.http.services.RequestHandler;
import org.apache.tapestry5.http.services.Response;
-import org.apache.tapestry5.ioc.annotations.ComponentClasses;
-import org.apache.tapestry5.services.ComponentEventLinkEncoder;
-import org.apache.tapestry5.services.ComponentEventRequestParameters;
-import org.apache.tapestry5.services.PageRenderRequestParameters;
import org.apache.tapestry5.services.RequestExceptionHandler;
-import org.apache.tapestry5.services.pageload.PageClassloaderContext;
-import org.apache.tapestry5.services.pageload.PageClassloaderContextManager;
/**
* Filter for the {@link org.apache.tapestry5.http.services.RequestHandler}
pipeline used to intercept and report
@@ -31,24 +17,11 @@ public class RequestErrorFilter implements RequestFilter
{
private final InternalRequestGlobals internalRequestGlobals;
private final RequestExceptionHandler exceptionHandler;
- private final InvalidationEventHub classesInvalidationHub;
- private final ComponentEventLinkEncoder componentEventLinkEncoder;
- private final ComponentInstantiatorSource componentInstantiatorSource;
- private final PageClassloaderContextManager pageClassloaderContextManager;
- private final static String QUERY_PARAMETER =
"RequestErrorFilterRedirected";
- private final static Pattern CCE_PATTERN = Pattern.compile("((.*)\\scannot
be cast to (.*))(.*)");
-
- public RequestErrorFilter(InternalRequestGlobals internalRequestGlobals,
RequestExceptionHandler exceptionHandler,
- @ComponentClasses InvalidationEventHub classesInvalidationHub,
ComponentEventLinkEncoder componentEventLinkEncoder,
- ComponentInstantiatorSource componentInstantiatorSource,
- PageClassloaderContextManager pageClassloaderContextManager)
+
+ public RequestErrorFilter(InternalRequestGlobals internalRequestGlobals,
RequestExceptionHandler exceptionHandler)
{
this.internalRequestGlobals = internalRequestGlobals;
this.exceptionHandler = exceptionHandler;
- this.classesInvalidationHub = classesInvalidationHub;
- this.componentEventLinkEncoder = componentEventLinkEncoder;
- this.componentInstantiatorSource = componentInstantiatorSource;
- this.pageClassloaderContextManager = pageClassloaderContextManager;
}
public boolean service(Request request, Response response, RequestHandler
handler) throws IOException
@@ -64,53 +37,10 @@ public class RequestErrorFilter implements RequestFilter
}
catch (Throwable ex)
{
-
- // TODO: evaluate removing this
- if (request.getParameter(QUERY_PARAMETER) == null)
- {
-
- Throwable rootCause = ex.getCause();
- String classToInvalidate = getClassToInvalidate(rootCause);
-
- if (classToInvalidate != null)
- {
-
- final List<String> classesToInvalidate =
- Arrays.asList(classToInvalidate,
ExceptionReport.class.getName());
-
classesInvalidationHub.fireInvalidationEvent(classesToInvalidate);
-
- Link link = null;
-
- final ComponentEventRequestParameters
componentEventParameters =
componentEventLinkEncoder.decodeComponentEventRequest(request);
- if (componentEventParameters != null)
- {
- link =
componentEventLinkEncoder.createComponentEventLink(componentEventParameters,
false);
- }
-
- final PageRenderRequestParameters pageRenderParameters =
componentEventLinkEncoder.decodePageRenderRequest(request);
- if (pageRenderParameters != null)
- {
- link =
componentEventLinkEncoder.createPageRenderLink(pageRenderParameters);
- }
-
- if (link != null)
- {
- link.addParameter(QUERY_PARAMETER, "true");
- response.sendRedirect(link);
- return true;
- }
-
- }
-
- }
-
// Most of the time, we've got exception linked up the kazoo ...
but when ClassLoaders
// get involved, things go screwy. Exceptions when transforming
classes can cause
// a NoClassDefFoundError with no cause; here we're trying to link
the cause back in.
// TAPESTRY-2078
-
- System.out.println("YYYYYY" +
pageClassloaderContextManager.getRoot().toRecursiveString());
- ex.printStackTrace();
Throwable exceptionToReport = attachNewCause(ex,
internalRequestGlobals.getClassLoaderException());
@@ -123,46 +53,6 @@ public class RequestErrorFilter implements RequestFilter
}
}
- private String getClassToInvalidate(Throwable rootCause) {
- String classToInvalidate = null;
- while (rootCause != null && rootCause.getCause() != null)
- {
- rootCause = rootCause.getCause();
- }
- if (rootCause instanceof DifferentClassVersionsException)
- {
- DifferentClassVersionsException dcve =
(DifferentClassVersionsException) rootCause;
- classToInvalidate = dcve.getClassName();
- }
- else if (rootCause instanceof ClassCastException)
- {
- String message = rootCause.getMessage();
- if (message != null)
- {
-
- // Handling both Java 8 and Java 11 messages
- message = message.replace("class ", "");
- final int index = message.indexOf(" (");
- if (index > 0)
- {
- message = message.substring(0, index);
- }
-
- final Matcher matcher = CCE_PATTERN.matcher(message);
- if (matcher.matches() && matcher.groupCount() >= 3)
- {
- final String class1 = matcher.group(2);
- final String class2 = matcher.group(3);
- if (class1.equals(class2))
- {
- classToInvalidate = class1;
- }
- }
- }
- }
- return classToInvalidate;
- }
-
private Throwable attachNewCause(Throwable exception, Throwable
underlyingCause)
{
if (underlyingCause == null) return exception;
diff --git
a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/rest/DefaultOpenApiDescriptionGenerator.java
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/rest/DefaultOpenApiDescriptionGenerator.java
index b3bdb539b..d0bd12f66 100644
---
a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/rest/DefaultOpenApiDescriptionGenerator.java
+++
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/rest/DefaultOpenApiDescriptionGenerator.java
@@ -595,10 +595,10 @@ public class DefaultOpenApiDescriptionGenerator
implements OpenApiDescriptionGen
}
}
}
- if (method == null &&
pageClass.getName().equals("org.apache.tapestry5.integration.app1.pages.rest.RestTypeDescriptionsDemo"))
- {
- System.out.println("WTF!");
- }
+// if (method == null &&
pageClass.getName().equals("org.apache.tapestry5.integration.app1.pages.rest.RestTypeDescriptionsDemo"))
+// {
+// System.out.println("WTF!");
+// }
// In case of the same class being loaded from different classloaders,
// let's try to find the method in a different way.
// if (method == null)
diff --git
a/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElement.java
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElement.java
index 2fdf0b1ff..1e17fe90b 100644
---
a/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElement.java
+++
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElement.java
@@ -106,7 +106,6 @@ public interface ComponentPageElement extends
ComponentResourcesCommon, Internal
*/
ComponentPageElement getEmbeddedElement(String id);
- // TODO: remove
/**
* Returns the ids of all embedded elements defined within the component.
* @since 5.8.3
diff --git
a/tapestry-core/src/main/java/org/apache/tapestry5/services/pageload/PageClassloaderContextManagerImpl.java
b/tapestry-core/src/main/java/org/apache/tapestry5/services/pageload/PageClassloaderContextManagerImpl.java
index 52fb9300c..d7753876a 100644
---
a/tapestry-core/src/main/java/org/apache/tapestry5/services/pageload/PageClassloaderContextManagerImpl.java
+++
b/tapestry-core/src/main/java/org/apache/tapestry5/services/pageload/PageClassloaderContextManagerImpl.java
@@ -349,13 +349,7 @@ public class PageClassloaderContextManagerImpl implements
PageClassloaderContext
try
{
final ClassLoader classLoader =
context.getPlasticManager().getClassLoader();
- final Class<?> clasz = classLoader.loadClass(className);
- // TODO: do were really need this loop?
- for (Class<?> c : clasz.getDeclaredClasses())
- {
- final Class<?> cccc = classLoader.loadClass(c.getName());
- }
- return clasz;
+ return classLoader.loadClass(className);
} catch (Exception e) {
throw new RuntimeException(e);
}
@@ -510,7 +504,6 @@ public class PageClassloaderContextManagerImpl implements
PageClassloaderContext
private List<String> listen(List<String> resources)
{
-// System.out.println("XXXXXX Before PageClassloaderContextManager
listen: " + root.toRecursiveString());
if (INVALIDATING_CONTEXT.get())
{
return Collections.emptyList();
@@ -587,35 +580,13 @@ public class PageClassloaderContextManagerImpl implements
PageClassloaderContext
{
context = get(className);
}
-// final String pageClassName =
componentClassResolver.resolvePageNameToClassName(pageName);
-// final PageClassloaderContext context = get(pageClassName);
-// PageClassloaderContext ancestor = context.getParent();
-//
-// if (!className.equals(pageClassName))
-// {
-//
-// while (ancestor != null &&
!ancestor.getClassNames().contains(className))
-// {
-// ancestor = ancestor.getParent();
-// }
-//
-// if (ancestor == null)
-// {
-// ancestor = context;
-// }
-//
-// if (clasz.getSimpleName().equals("TextField"))
-// {
-// System.out.printf("XXXXX Target class (before): %s page %s
context : %s\n", clasz.getSimpleName(), pageName, clasz.getClassLoader());
-// }
- try
- {
- clasz =
context.getProxyFactory().getClassLoader().loadClass(className);
- } catch (ClassNotFoundException e)
- {
- throw new TapestryException(e.getMessage(), e);
- }
-// }
+ try
+ {
+ clasz =
context.getProxyFactory().getClassLoader().loadClass(className);
+ } catch (ClassNotFoundException e)
+ {
+ throw new TapestryException(e.getMessage(), e);
+ }
return clasz;
}