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 <thi...@arsmachina.com.br> 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; }