Skip to content

Commit 7053f0b

Browse files
committed
Use a ArrayDeque and enable test only for JDK < 1.8
1 parent b341280 commit 7053f0b

File tree

2 files changed

+10
-9
lines changed

2 files changed

+10
-9
lines changed

src/main/java/org/codehaus/plexus/util/xml/PrettyPrintXMLWriter.java

+4-7
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818

1919
import java.io.PrintWriter;
2020
import java.io.Writer;
21+
import java.util.ArrayDeque;
22+
import java.util.Deque;
2123
import java.util.LinkedList;
2224
import java.util.regex.Matcher;
2325
import java.util.regex.Pattern;
@@ -35,7 +37,7 @@ public class PrettyPrintXMLWriter
3537

3638
private PrintWriter writer;
3739

38-
private LinkedList<String> elementStack = new LinkedList<String>();
40+
private final Deque<String> elementStack = new ArrayDeque<>();
3941

4042
private boolean tagInProgress;
4143

@@ -307,11 +309,6 @@ public void endElement()
307309
{
308310
finishTag();
309311

310-
// see issue #51: https://github.com/codehaus-plexus/plexus-utils/issues/51
311-
// Rationale: replaced 1 write() with string concatenations with 3 write()
312-
// (this avoids the string concatenation optimization bug detected in Java 7)
313-
// TODO: change the below code to a more efficient expression when the library
314-
// be ready to target Java 8.
315312
write( "</" );
316313
write( elementStack.removeLast() );
317314
write( ">" );
@@ -518,7 +515,7 @@ protected String getDocType()
518515
/**
519516
* @return the current elementStack;
520517
*/
521-
protected LinkedList<String> getElementStack()
518+
protected Deque<String> getElementStack()
522519
{
523520
return elementStack;
524521
}

src/test/java/org/codehaus/plexus/util/xml/PrettyPrintXMLWriterTest.java

+6-2
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,9 @@
1818

1919
import java.io.File;
2020
import java.io.IOException;
21-
import java.io.OutputStreamWriter;
2221
import java.io.StringWriter;
22+
import java.io.Writer;
23+
import java.nio.charset.StandardCharsets;
2324
import java.nio.file.Files;
2425
import java.util.NoSuchElementException;
2526

@@ -29,6 +30,8 @@
2930
import org.junit.jupiter.api.AfterEach;
3031
import org.junit.jupiter.api.BeforeEach;
3132
import org.junit.jupiter.api.Test;
33+
import org.junit.jupiter.api.condition.DisabledForJreRange;
34+
import org.junit.jupiter.api.condition.JRE;
3235

3336
import static org.junit.jupiter.api.Assertions.assertEquals;
3437
import static org.junit.jupiter.api.Assertions.assertThrows;
@@ -178,6 +181,7 @@ public void testendElementAlreadyClosed()
178181
*
179182
* @throws java.io.IOException if an I/O error occurs
180183
*/
184+
@DisabledForJreRange(min = JRE.JAVA_8)
181185
@Test
182186
public void testIssue51DetectJava7ConcatenationBug()
183187
throws IOException
@@ -191,7 +195,7 @@ public void testIssue51DetectJava7ConcatenationBug()
191195

192196
int iterations = 20000;
193197

194-
try ( OutputStreamWriter osw = new OutputStreamWriter( Files.newOutputStream( xmlFile.toPath() ), "UTF-8" ) )
198+
try ( Writer osw = Files.newBufferedWriter( xmlFile.toPath(), StandardCharsets.UTF_8 ) )
195199
{
196200
writer = new PrettyPrintXMLWriter( osw );
197201
for ( int i = 0; i < iterations; ++i )

0 commit comments

Comments
 (0)