Skip to content

Commit da1730c

Browse files
Fix [MDEP-931] Replace PrintWriter with Writer in AbstractSerializingVisitor and subclasses
Replace PrintWriter with Writer in AbstractSerializing Visitor and subclasses Only use writer
1 parent c5b782e commit da1730c

File tree

5 files changed

+98
-56
lines changed

5 files changed

+98
-56
lines changed

src/main/java/org/apache/maven/plugins/dependency/tree/AbstractSerializingVisitor.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
*/
1919
package org.apache.maven.plugins.dependency.tree;
2020

21-
import java.io.PrintWriter;
2221
import java.io.Writer;
2322

2423
/**
@@ -31,7 +30,7 @@ public abstract class AbstractSerializingVisitor {
3130
/**
3231
* The writer to serialize to.
3332
*/
34-
protected final PrintWriter writer;
33+
protected final Writer writer;
3534

3635
/**
3736
* Constructor.
@@ -42,10 +41,6 @@ public abstract class AbstractSerializingVisitor {
4241
* @param writer the writer to serialize to.
4342
*/
4443
public AbstractSerializingVisitor(Writer writer) {
45-
if (writer instanceof PrintWriter) {
46-
this.writer = (PrintWriter) writer;
47-
} else {
48-
this.writer = new PrintWriter(writer, true);
49-
}
44+
this.writer = writer;
5045
}
5146
}

src/main/java/org/apache/maven/plugins/dependency/tree/DOTDependencyNodeVisitor.java

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
*/
1919
package org.apache.maven.plugins.dependency.tree;
2020

21+
import java.io.IOException;
22+
import java.io.UncheckedIOException;
2123
import java.io.Writer;
2224
import java.util.List;
2325

@@ -47,16 +49,22 @@ public DOTDependencyNodeVisitor(Writer writer) {
4749
*/
4850
@Override
4951
public boolean visit(DependencyNode node) {
50-
if (node.getParent() == null || node.getParent() == node) {
51-
writer.write("digraph \"" + node.toNodeString() + "\" { " + System.lineSeparator());
52-
}
52+
try {
53+
if (node.getParent() == null || node.getParent() == node) {
54+
writer.write("digraph \"" + node.toNodeString() + "\" { " + System.lineSeparator());
55+
writer.flush();
56+
}
5357

54-
// Generate "currentNode -> Child" lines
58+
// Generate "currentNode -> Child" lines
5559

56-
List<DependencyNode> children = node.getChildren();
60+
List<DependencyNode> children = node.getChildren();
5761

58-
for (DependencyNode child : children) {
59-
writer.println("\t\"" + node.toNodeString() + "\" -> \"" + child.toNodeString() + "\" ; ");
62+
for (DependencyNode child : children) {
63+
writer.write("\t\"" + node.toNodeString() + "\" -> \"" + child.toNodeString() + "\" ; " + "\n");
64+
}
65+
writer.flush();
66+
} catch (IOException e) {
67+
throw new UncheckedIOException("Failed to write DOT format output", e);
6068
}
6169

6270
return true;
@@ -67,8 +75,13 @@ public boolean visit(DependencyNode node) {
6775
*/
6876
@Override
6977
public boolean endVisit(DependencyNode node) {
70-
if (node.getParent() == null || node.getParent() == node) {
71-
writer.write(" } ");
78+
try {
79+
if (node.getParent() == null || node.getParent() == node) {
80+
writer.write(" } " + "\n");
81+
writer.flush();
82+
}
83+
} catch (IOException e) {
84+
throw new UncheckedIOException("Failed to write DOT format output", e);
7285
}
7386
return true;
7487
}

src/main/java/org/apache/maven/plugins/dependency/tree/GraphmlDependencyNodeVisitor.java

Lines changed: 33 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
*/
1919
package org.apache.maven.plugins.dependency.tree;
2020

21+
import java.io.IOException;
22+
import java.io.UncheckedIOException;
2123
import java.io.Writer;
2224

2325
import org.apache.maven.shared.dependency.graph.DependencyNode;
@@ -64,36 +66,47 @@ public GraphmlDependencyNodeVisitor(Writer writer) {
6466
*/
6567
@Override
6668
public boolean endVisit(DependencyNode node) {
67-
if (node.getParent() == null || node.getParent() == node) {
68-
writer.write(GRAPHML_FOOTER);
69-
} else {
70-
DependencyNode p = node.getParent();
71-
writer.print("<edge source=\"" + generateId(p) + "\" target=\"" + generateId(node) + "\">");
72-
if (node.getArtifact().getScope() != null) {
73-
// add Edge label
74-
writer.print("<data key=\"d1\"><y:PolyLineEdge><y:EdgeLabel>"
75-
+ node.getArtifact().getScope() + "</y:EdgeLabel></y:PolyLineEdge></data>");
69+
try {
70+
if (node.getParent() == null || node.getParent() == node) {
71+
writer.write(GRAPHML_FOOTER);
72+
} else {
73+
DependencyNode p = node.getParent();
74+
writer.write("<edge source=\"" + generateId(p) + "\" target=\"" + generateId(node) + "\">");
75+
if (node.getArtifact().getScope() != null) {
76+
// add Edge label
77+
writer.write("<data key=\"d1\"><y:PolyLineEdge><y:EdgeLabel>"
78+
+ node.getArtifact().getScope() + "</y:EdgeLabel></y:PolyLineEdge></data>");
79+
}
80+
writer.write("</edge>" + "\n");
7681
}
77-
writer.println("</edge>");
82+
writer.flush();
83+
return true;
84+
} catch (IOException e) {
85+
throw new UncheckedIOException("Failed to write GraphML format output", e);
7886
}
79-
return true;
8087
}
8188

8289
/**
8390
* {@inheritDoc}
8491
*/
8592
@Override
8693
public boolean visit(DependencyNode node) {
87-
if (node.getParent() == null || node.getParent() == node) {
88-
writer.write(GRAPHML_HEADER);
94+
try {
95+
if (node.getParent() == null || node.getParent() == node) {
96+
writer.write(GRAPHML_HEADER);
97+
writer.flush();
98+
}
99+
// write node
100+
writer.write("<node id=\"" + generateId(node) + "\">");
101+
// add node label
102+
writer.write("<data key=\"d0\"><y:ShapeNode><y:NodeLabel>" + node.toNodeString()
103+
+ "</y:NodeLabel></y:ShapeNode></data>");
104+
writer.write("</node>" + "\n");
105+
writer.flush();
106+
return true;
107+
} catch (IOException e) {
108+
throw new UncheckedIOException("Failed to write GraphML format output", e);
89109
}
90-
// write node
91-
writer.print("<node id=\"" + generateId(node) + "\">");
92-
// add node label
93-
writer.print("<data key=\"d0\"><y:ShapeNode><y:NodeLabel>" + node.toNodeString()
94-
+ "</y:NodeLabel></y:ShapeNode></data>");
95-
writer.println("</node>");
96-
return true;
97110
}
98111

99112
/**

src/main/java/org/apache/maven/plugins/dependency/tree/JsonDependencyNodeVisitor.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
*/
1919
package org.apache.maven.plugins.dependency.tree;
2020

21+
import java.io.IOException;
22+
import java.io.UncheckedIOException;
2123
import java.io.Writer;
2224
import java.util.HashSet;
2325
import java.util.Set;
@@ -44,25 +46,31 @@ public JsonDependencyNodeVisitor(Writer writer) {
4446

4547
@Override
4648
public boolean visit(DependencyNode node) {
47-
if (node.getParent() == null || node.getParent() == node) {
48-
writeRootNode(node);
49+
try {
50+
if (node.getParent() == null || node.getParent() == node) {
51+
writeRootNode(node);
52+
}
53+
return true;
54+
} catch (IOException e) {
55+
throw new UncheckedIOException("Failed to write JSON format output", e);
4956
}
50-
return true;
5157
}
5258

5359
/**
5460
* Writes the node to the writer. This method is recursive and will write all children nodes.
5561
*
5662
* @param node the node to write
63+
* @throws IOException if an I/O error occurs while writing
5764
*/
58-
private void writeRootNode(DependencyNode node) {
65+
private void writeRootNode(DependencyNode node) throws IOException {
5966
Set<DependencyNode> visited = new HashSet<>();
6067
int indent = 2;
6168
StringBuilder sb = new StringBuilder();
6269
sb.append("{").append("\n");
6370
writeNode(indent, node, sb, visited);
6471
sb.append("}").append("\n");
6572
writer.write(sb.toString());
73+
writer.flush();
6674
}
6775
/**
6876
* Appends the node and its children to the string builder.

src/main/java/org/apache/maven/plugins/dependency/tree/TGFDependencyNodeVisitor.java

Lines changed: 29 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
*/
1919
package org.apache.maven.plugins.dependency.tree;
2020

21+
import java.io.IOException;
22+
import java.io.UncheckedIOException;
2123
import java.io.Writer;
2224
import java.util.ArrayList;
2325
import java.util.List;
@@ -35,7 +37,7 @@
3537
public class TGFDependencyNodeVisitor extends AbstractSerializingVisitor implements DependencyNodeVisitor {
3638

3739
/**
38-
* Utiity class to write an Edge.
40+
* Utility class to write an Edge.
3941
*
4042
* @author <a href="mailto:[email protected]">Jerome Creignou</a>
4143
*/
@@ -102,30 +104,41 @@ public TGFDependencyNodeVisitor(Writer writer) {
102104
*/
103105
@Override
104106
public boolean endVisit(DependencyNode node) {
105-
if (node.getParent() == null || node.getParent() == node) {
106-
// dump edges on last node endVisit
107-
writer.println("#");
108-
for (EdgeAppender edge : edges) {
109-
writer.println(edge.toString());
107+
try {
108+
if (node.getParent() == null || node.getParent() == node) {
109+
// dump edges on last node endVisit
110+
writer.write("#\n");
111+
for (EdgeAppender edge : edges) {
112+
writer.write(edge.toString() + "\n");
113+
}
114+
writer.flush();
115+
} else {
116+
DependencyNode parent = node.getParent();
117+
// using scope as edge label.
118+
edges.add(new EdgeAppender(parent, node, node.getArtifact().getScope()));
110119
}
111-
} else {
112-
DependencyNode p = node.getParent();
113-
// using scope as edge label.
114-
edges.add(new EdgeAppender(p, node, node.getArtifact().getScope()));
120+
return true;
121+
} catch (IOException e) {
122+
throw new UncheckedIOException("Failed to write TGF format output", e);
115123
}
116-
return true;
117124
}
118125

119126
/**
120127
* {@inheritDoc}
121128
*/
122129
@Override
123130
public boolean visit(DependencyNode node) {
124-
// write node
125-
writer.write(generateId(node));
126-
writer.write(" ");
127-
writer.println(node.toNodeString());
128-
return true;
131+
try {
132+
// Write node
133+
writer.write(generateId(node));
134+
writer.write(" ");
135+
writer.write(node.toNodeString());
136+
writer.write("\n");
137+
writer.flush();
138+
return true;
139+
} catch (IOException e) {
140+
throw new UncheckedIOException("Failed to write TGF format output", e);
141+
}
129142
}
130143

131144
/**

0 commit comments

Comments
 (0)