Skip to content

Commit 8ba3989

Browse files
Merge pull request #143 from refactorfirst/#139-use-jsDelivr-instead-of-unpkg
#139 use js delivr instead of unpkg
2 parents 55597c7 + 4ceb807 commit 8ba3989

File tree

7 files changed

+210
-178
lines changed

7 files changed

+210
-178
lines changed
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
package org.hjug.graphbuilder.visitor;
2+
3+
import java.io.File;
4+
import java.io.IOException;
5+
import java.nio.file.Files;
6+
import java.nio.file.Path;
7+
import java.nio.file.Paths;
8+
import java.util.List;
9+
import java.util.stream.Collectors;
10+
import org.jgrapht.Graph;
11+
import org.jgrapht.graph.DefaultWeightedEdge;
12+
import org.jgrapht.graph.SimpleDirectedWeightedGraph;
13+
import org.junit.jupiter.api.Assertions;
14+
import org.junit.jupiter.api.Test;
15+
import org.openrewrite.ExecutionContext;
16+
import org.openrewrite.InMemoryExecutionContext;
17+
import org.openrewrite.java.JavaParser;
18+
19+
public class JavaNewClassVisitorFullTest {
20+
21+
@Test
22+
void visitNewClass() throws IOException {
23+
24+
File srcDirectory = new File("src/test/java/org/hjug/graphbuilder/visitor/testclasses/newClass");
25+
26+
JavaParser javaParser = JavaParser.fromJavaVersion().build();
27+
ExecutionContext ctx = new InMemoryExecutionContext(Throwable::printStackTrace);
28+
29+
Graph<String, DefaultWeightedEdge> classReferencesGraph =
30+
new SimpleDirectedWeightedGraph<>(DefaultWeightedEdge.class);
31+
32+
Graph<String, DefaultWeightedEdge> packageReferencesGraph =
33+
new SimpleDirectedWeightedGraph<>(DefaultWeightedEdge.class);
34+
35+
final JavaVisitor<ExecutionContext> javaVisitor =
36+
new JavaVisitor<>(classReferencesGraph, packageReferencesGraph);
37+
final JavaVariableTypeVisitor<ExecutionContext> javaVariableTypeVisitor =
38+
new JavaVariableTypeVisitor<>(classReferencesGraph, packageReferencesGraph);
39+
final JavaMethodDeclarationVisitor<ExecutionContext> javaMethodDeclarationVisitor =
40+
new JavaMethodDeclarationVisitor<>(classReferencesGraph, packageReferencesGraph);
41+
42+
List<Path> list = Files.walk(Paths.get(srcDirectory.getAbsolutePath())).collect(Collectors.toList());
43+
44+
// Parse sources with all visitors, not only
45+
javaParser.parse(list, Paths.get(srcDirectory.getAbsolutePath()), ctx).forEach(cu -> {
46+
javaVisitor.visit(cu, ctx);
47+
javaVariableTypeVisitor.visit(cu, ctx);
48+
javaMethodDeclarationVisitor.visit(cu, ctx);
49+
});
50+
51+
Graph<String, DefaultWeightedEdge> graph = javaVisitor.getClassReferencesGraph();
52+
Assertions.assertTrue(graph.containsVertex("org.hjug.graphbuilder.visitor.testclasses.newClass.A"));
53+
Assertions.assertTrue(graph.containsVertex("org.hjug.graphbuilder.visitor.testclasses.newClass.B"));
54+
Assertions.assertTrue(graph.containsVertex("org.hjug.graphbuilder.visitor.testclasses.newClass.C"));
55+
56+
// capturing counts of all types
57+
Assertions.assertEquals(
58+
6,
59+
graph.getEdgeWeight(graph.getEdge(
60+
"org.hjug.graphbuilder.visitor.testclasses.newClass.A",
61+
"org.hjug.graphbuilder.visitor.testclasses.newClass.B")));
62+
63+
Assertions.assertEquals(
64+
3,
65+
graph.getEdgeWeight(graph.getEdge(
66+
"org.hjug.graphbuilder.visitor.testclasses.newClass.A",
67+
"org.hjug.graphbuilder.visitor.testclasses.newClass.C")));
68+
}
69+
}

codebase-graph-builder/src/test/java/org/hjug/graphbuilder/visitor/JavaNewClassVisitorTest.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,13 @@ void visitNewClass() throws IOException {
4848
Assertions.assertTrue(graph.containsVertex("org.hjug.graphbuilder.visitor.testclasses.newClass.B"));
4949
Assertions.assertTrue(graph.containsVertex("org.hjug.graphbuilder.visitor.testclasses.newClass.C"));
5050

51-
// TODO: Investigate further to confirm correctness
51+
// only looking for what was visited by classDeclarationVisitor and variableTypeVisitor
52+
Assertions.assertEquals(
53+
5,
54+
graph.getEdgeWeight(graph.getEdge(
55+
"org.hjug.graphbuilder.visitor.testclasses.newClass.A",
56+
"org.hjug.graphbuilder.visitor.testclasses.newClass.B")));
57+
5258
Assertions.assertEquals(
5359
3,
5460
graph.getEdgeWeight(graph.getEdge(

codebase-graph-builder/src/test/java/org/hjug/graphbuilder/visitor/testclasses/newClass/A.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,19 @@
11
package org.hjug.graphbuilder.visitor.testclasses.newClass;
22

3+
import java.util.ArrayList;
4+
import java.util.List;
5+
36
public class A {
47

58
B newClassMethod() {
69
new C();
710
C c = new C();
811

12+
// var treated like "B", counts as 2
13+
var b = new B(null);
14+
// <> treated like <B>, counts as 2
15+
List<B> listB = new ArrayList<>();
16+
917
// TODO: add visitor for J.ReturnType
1018
return new B(c);
1119
}

refactor-first-maven-plugin/src/main/java/org/hjug/mavenreport/RefactorFirstMavenReport.java

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,7 @@ public void executeReport(Locale locale) {
7878
testSourceDirectory,
7979
projectName,
8080
projectVersion,
81-
project.getBasedir(),
82-
300)
81+
project.getBasedir())
8382
.toString();
8483

8584
mainSink.rawText(report);
@@ -95,24 +94,17 @@ private void printHead(Sink mainSink) {
9594
renderJsDeclaration(mainSink, "https://buttons.github.io/buttons.js");
9695
// google chart import
9796
renderJsDeclaration(mainSink, "https://www.gstatic.com/charts/loader.js");
98-
// d3 dot graph imports
99-
renderJsDeclaration(mainSink, "https://d3js.org/d3.v5.min.js");
100-
renderJsDeclaration(mainSink, "https://cdnjs.cloudflare.com/ajax/libs/d3-graphviz/3.0.5/d3-graphviz.min.js");
101-
renderJsDeclaration(mainSink, "https://unpkg.com/@hpcc-js/[email protected]/dist/index.min.js");
97+
// for DOT graph zooming
98+
renderJsDeclaration(mainSink, "https://cdn.jsdelivr.net/npm/[email protected]/dist/svg-pan-zoom.min.js");
10299

103100
// sigma graph imports - sigma, graphology, graphlib, and graphlib-dot
104101
renderJsDeclaration(mainSink, "https://cdnjs.cloudflare.com/ajax/libs/sigma.js/2.4.0/sigma.min.js");
105102
renderJsDeclaration(mainSink, "https://cdnjs.cloudflare.com/ajax/libs/graphology/0.25.4/graphology.umd.min.js");
103+
106104
// may only need graphlib-dot
107105
renderJsDeclaration(mainSink, "https://cdnjs.cloudflare.com/ajax/libs/graphlib/2.1.8/graphlib.min.js");
108106
renderJsDeclaration(mainSink, "https://cdn.jsdelivr.net/npm/[email protected]/dist/graphlib-dot.min.js");
109-
renderJsDeclaration(mainSink, "https://unpkg.com/3d-force-graph");
110-
111-
// renderJsDeclaration(mainSink, HtmlReport.SUGIYAMA_SIGMA_GRAPH);
112-
// renderJsDeclaration(mainSink, HtmlReport.FORCE_3D_GRAPH);
113-
// renderJsDeclaration(mainSink, HtmlReport.POPUP_FUNCTIONS);
114-
115-
// renderStyle(mainSink);
107+
renderJsDeclaration(mainSink, "https://cdn.jsdelivr.net/npm/3d-force-graph");
116108

117109
mainSink.head_();
118110
}

0 commit comments

Comments
 (0)