Skip to content

Commit 3050624

Browse files
author
Niall Pemberton
committed
Remove unsafe *static* MessageFormats instances.
From the MessageFormat JavaDocs: "Message formats are not synchronized. It is recommended to create separate format instances for each thread. If multiple threads access a format concurrently, it must be synchronized externally." git-svn-id: https://svn.apache.org/repos/asf/commons/proper/io/trunk@1004511 13f79535-47bb-0310-9956-ffa450edef68
1 parent ac50046 commit 3050624

1 file changed

Lines changed: 26 additions & 36 deletions

File tree

src/main/java/org/apache/commons/io/input/XmlStreamReader.java

Lines changed: 26 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -500,32 +500,28 @@ private String calculateRawEncoding(String bomEnc, String xmlGuessEnc,
500500
}
501501
} else if (bomEnc.equals(UTF_8)) {
502502
if (xmlGuessEnc != null && !xmlGuessEnc.equals(UTF_8)) {
503-
throw new XmlStreamReaderException(RAW_EX_1
504-
.format(new Object[] { bomEnc, xmlGuessEnc, xmlEnc }),
505-
bomEnc, xmlGuessEnc, xmlEnc);
503+
String msg = MessageFormat.format(RAW_EX_1, new Object[] { bomEnc, xmlGuessEnc, xmlEnc });
504+
throw new XmlStreamReaderException(msg, bomEnc, xmlGuessEnc, xmlEnc);
506505
}
507506
if (xmlEnc != null && !xmlEnc.equals(UTF_8)) {
508-
throw new XmlStreamReaderException(RAW_EX_1
509-
.format(new Object[] { bomEnc, xmlGuessEnc, xmlEnc }),
510-
bomEnc, xmlGuessEnc, xmlEnc);
507+
String msg = MessageFormat.format(RAW_EX_1, new Object[] { bomEnc, xmlGuessEnc, xmlEnc });
508+
throw new XmlStreamReaderException(msg, bomEnc, xmlGuessEnc, xmlEnc);
511509
}
512510
encoding = UTF_8;
513511
} else if (bomEnc.equals(UTF_16BE) || bomEnc.equals(UTF_16LE)) {
514512
if (xmlGuessEnc != null && !xmlGuessEnc.equals(bomEnc)) {
515-
throw new IOException(RAW_EX_1.format(new Object[] { bomEnc,
516-
xmlGuessEnc, xmlEnc }));
513+
String msg = MessageFormat.format(RAW_EX_1, new Object[] { bomEnc, xmlGuessEnc, xmlEnc });
514+
throw new IOException(msg);
517515
}
518516
if (xmlEnc != null && !xmlEnc.equals(UTF_16)
519517
&& !xmlEnc.equals(bomEnc)) {
520-
throw new XmlStreamReaderException(RAW_EX_1
521-
.format(new Object[] { bomEnc, xmlGuessEnc, xmlEnc }),
522-
bomEnc, xmlGuessEnc, xmlEnc);
518+
String msg = MessageFormat.format(RAW_EX_1, new Object[] { bomEnc, xmlGuessEnc, xmlEnc });
519+
throw new XmlStreamReaderException(msg, bomEnc, xmlGuessEnc, xmlEnc);
523520
}
524521
encoding = bomEnc;
525522
} else {
526-
throw new XmlStreamReaderException(RAW_EX_2.format(new Object[] {
527-
bomEnc, xmlGuessEnc, xmlEnc }), bomEnc, xmlGuessEnc,
528-
xmlEnc);
523+
String msg = MessageFormat.format(RAW_EX_2, new Object[] { bomEnc, xmlGuessEnc, xmlEnc });
524+
throw new XmlStreamReaderException(msg, bomEnc, xmlGuessEnc, xmlEnc);
529525
}
530526
return encoding;
531527
}
@@ -565,27 +561,21 @@ private String calculateHttpEncoding(String cTMime, String cTEnc,
565561
}
566562
} else if (bomEnc != null
567563
&& (cTEnc.equals(UTF_16BE) || cTEnc.equals(UTF_16LE))) {
568-
throw new XmlStreamReaderException(HTTP_EX_1
569-
.format(new Object[] { cTMime, cTEnc, bomEnc,
570-
xmlGuessEnc, xmlEnc }), cTMime, cTEnc,
571-
bomEnc, xmlGuessEnc, xmlEnc);
564+
String msg = MessageFormat.format(HTTP_EX_1, cTMime, cTEnc, bomEnc, xmlGuessEnc, xmlEnc);
565+
throw new XmlStreamReaderException(msg, cTMime, cTEnc, bomEnc, xmlGuessEnc, xmlEnc);
572566
} else if (cTEnc.equals(UTF_16)) {
573567
if (bomEnc != null && bomEnc.startsWith(UTF_16)) {
574568
encoding = bomEnc;
575569
} else {
576-
throw new XmlStreamReaderException(HTTP_EX_2
577-
.format(new Object[] { cTMime, cTEnc, bomEnc,
578-
xmlGuessEnc, xmlEnc }), cTMime, cTEnc,
579-
bomEnc, xmlGuessEnc, xmlEnc);
570+
String msg = MessageFormat.format(HTTP_EX_2, cTMime, cTEnc, bomEnc, xmlGuessEnc, xmlEnc);
571+
throw new XmlStreamReaderException(msg, cTMime, cTEnc, bomEnc, xmlGuessEnc, xmlEnc);
580572
}
581573
} else {
582574
encoding = cTEnc;
583575
}
584576
} else {
585-
throw new XmlStreamReaderException(HTTP_EX_3
586-
.format(new Object[] { cTMime, cTEnc, bomEnc,
587-
xmlGuessEnc, xmlEnc }), cTMime, cTEnc, bomEnc,
588-
xmlGuessEnc, xmlEnc);
577+
String msg = MessageFormat.format(HTTP_EX_3, cTMime, cTEnc, bomEnc, xmlGuessEnc, xmlEnc);
578+
throw new XmlStreamReaderException(msg, cTMime, cTEnc, bomEnc, xmlGuessEnc, xmlEnc);
589579
}
590580
}
591581
return encoding;
@@ -724,19 +714,19 @@ private static boolean isTextXml(String mime) {
724714
(mime.startsWith("text/") && mime.endsWith("+xml")));
725715
}
726716

727-
private static final MessageFormat RAW_EX_1 = new MessageFormat(
728-
"Invalid encoding, BOM [{0}] XML guess [{1}] XML prolog [{2}] encoding mismatch");
717+
private static final String RAW_EX_1 =
718+
"Invalid encoding, BOM [{0}] XML guess [{1}] XML prolog [{2}] encoding mismatch";
729719

730-
private static final MessageFormat RAW_EX_2 = new MessageFormat(
731-
"Invalid encoding, BOM [{0}] XML guess [{1}] XML prolog [{2}] unknown BOM");
720+
private static final String RAW_EX_2 =
721+
"Invalid encoding, BOM [{0}] XML guess [{1}] XML prolog [{2}] unknown BOM";
732722

733-
private static final MessageFormat HTTP_EX_1 = new MessageFormat(
734-
"Invalid encoding, CT-MIME [{0}] CT-Enc [{1}] BOM [{2}] XML guess [{3}] XML prolog [{4}], BOM must be NULL");
723+
private static final String HTTP_EX_1 =
724+
"Invalid encoding, CT-MIME [{0}] CT-Enc [{1}] BOM [{2}] XML guess [{3}] XML prolog [{4}], BOM must be NULL";
735725

736-
private static final MessageFormat HTTP_EX_2 = new MessageFormat(
737-
"Invalid encoding, CT-MIME [{0}] CT-Enc [{1}] BOM [{2}] XML guess [{3}] XML prolog [{4}], encoding mismatch");
726+
private static final String HTTP_EX_2 =
727+
"Invalid encoding, CT-MIME [{0}] CT-Enc [{1}] BOM [{2}] XML guess [{3}] XML prolog [{4}], encoding mismatch";
738728

739-
private static final MessageFormat HTTP_EX_3 = new MessageFormat(
740-
"Invalid encoding, CT-MIME [{0}] CT-Enc [{1}] BOM [{2}] XML guess [{3}] XML prolog [{4}], Invalid MIME");
729+
private static final String HTTP_EX_3 =
730+
"Invalid encoding, CT-MIME [{0}] CT-Enc [{1}] BOM [{2}] XML guess [{3}] XML prolog [{4}], Invalid MIME";
741731

742732
}

0 commit comments

Comments
 (0)