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 0436ffb06e72cf41a317d72218dff000c837dbcd Author: Thiago H. de Paula Figueiredo <thi...@arsmachina.com.br> AuthorDate: Sun Jun 4 20:59:03 2023 -0300 TAP5-2742: specific stylig for superclass and inject page dependencies --- .../ComponentDependencyGraphvizGeneratorImpl.java | 59 +++++++++++++++------- 1 file changed, 41 insertions(+), 18 deletions(-) diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentDependencyGraphvizGeneratorImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentDependencyGraphvizGeneratorImpl.java index 005f2a26a..908633b9d 100644 --- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentDependencyGraphvizGeneratorImpl.java +++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentDependencyGraphvizGeneratorImpl.java @@ -49,24 +49,20 @@ public class ComponentDependencyGraphvizGeneratorImpl implements ComponentDepend final Set<String> allClasses = new HashSet<>(); - for (DependencyType dependencyType : DependencyType.values()) + for (String className : classNames) { - - for (String className : classNames) + final Node node = createNode(componentClassResolver.getLogicalName(className), className); + dotFile.append(getNodeDefinition(node)); + for (DependencyType dependencyType : DependencyType.values()) { addDependencies(className, allClasses, dependencyType); } final StringBuilder dependencySection = new StringBuilder(); - for (String className : allClasses) + for (Dependency dependency : node.dependencies) { - final Node node = createNode(componentClassResolver.getLogicalName(className), className, dependencyType); - dotFile.append(getNodeDefinition(node, dependencyType)); - for (String dependency : node.dependencies) - { - dependencySection.append(getNodeDependencyDefinition(node, dependency)); - } + dependencySection.append(getNodeDependencyDefinition(node, dependency.className, dependency.type)); } dotFile.append("\n"); @@ -81,15 +77,21 @@ public class ComponentDependencyGraphvizGeneratorImpl implements ComponentDepend return dotFile.toString(); } - private String getNodeDefinition(Node node, DependencyType dependencyType) + private String getNodeDefinition(Node node) { - // TODO: add some diferentiation between dependency types return String.format("\t%s [label=\"%s\", tooltip=\"%s\"];\n", node.id, node.label, node.className); } - private String getNodeDependencyDefinition(Node node, String dependency) + private String getNodeDependencyDefinition(Node node, String dependency, DependencyType dependencyType) { - return String.format("\t%s -> %s\n", node.id, escapeNodeId(getNodeLabel(dependency))); + String extraDefinition; + switch (dependencyType) + { + case INJECT_PAGE: extraDefinition = " [style=dashed]"; break; + case SUPERCLASS: extraDefinition = " [arrowhead=empty]"; break; + default: extraDefinition = ""; + } + return String.format("\t%s -> %s%s\n", node.id, escapeNodeId(getNodeLabel(dependency)), extraDefinition); } private String getNodeLabel(String className) @@ -136,9 +138,30 @@ public class ComponentDependencyGraphvizGeneratorImpl implements ComponentDepend } } - private Node createNode(String logicalName, String className, DependencyType type) + private Node createNode(String logicalName, String className) { - return new Node(logicalName, className, componentDependencyRegistry.getDependencies(className, type)); + Collection<Dependency> deps = new HashSet<>(); + for (DependencyType type : DependencyType.values()) + { + final Set<String> dependencies = componentDependencyRegistry.getDependencies(className, type); + for (String dependency : dependencies) + { + deps.add(new Dependency(dependency, type)); + } + } + return new Node(logicalName, className, deps); + } + + private static final class Dependency + { + final private String className; + final private DependencyType type; + public Dependency(String className, DependencyType type) + { + super(); + this.className = className; + this.type = type; + } } private static final class Node { @@ -146,9 +169,9 @@ public class ComponentDependencyGraphvizGeneratorImpl implements ComponentDepend final private String id; final private String className; final private String label; - final private Set<String> dependencies = new HashSet<>(); + final private Set<Dependency> dependencies = new HashSet<>(); - public Node(String logicalName, String className, Collection<String> dependencies) + public Node(String logicalName, String className, Collection<Dependency> dependencies) { super(); this.label = getNodeLabel(className, logicalName, true);