ctf: no longer rely on default character encoding in Metadata.java
[deliverable/tracecompass.git] / ctf / org.eclipse.tracecompass.ctf.core / src / org / eclipse / tracecompass / ctf / core / trace / Metadata.java
index 57e93610c6534f26219f7d69dba0cc7065549f24..e5214493f294a7c361d68301e065b642c5eaec9c 100644 (file)
@@ -59,6 +59,9 @@ public class Metadata {
     // ------------------------------------------------------------------------
     // Constants
     // ------------------------------------------------------------------------
+
+    private static final Charset ASCII_CHARSET = Charset.forName("ASCII"); //$NON-NLS-1$
+
     private static final String TEXT_ONLY_METADATA_HEADER_PREFIX = "/* CTF"; //$NON-NLS-1$
 
     private static final int PREVALIDATION_SIZE = 8;
@@ -155,7 +158,7 @@ public class Metadata {
         try (FileInputStream fis = new FileInputStream(getMetadataPath());
                 FileChannel metadataFileChannel = fis.getChannel();
                 /* Check if metadata is packet-based, if not it is text based */
-                Reader metadataTextInput = (isPacketBased(metadataFileChannel) ? readBinaryMetaData(metadataFileChannel) : new FileReader(getMetadataPath()));) {
+                Reader metadataTextInput = (isPacketBased(metadataFileChannel) ? readBinaryMetaData(metadataFileChannel) : new FileReader(fis.getFD()));) {
 
             readMetaDataText(metadataTextInput);
 
@@ -221,10 +224,9 @@ public class Metadata {
                     return true;
                 }
                 bb.position(0);
-                Charset forName = Charset.forName("ASCII"); //$NON-NLS-1$
                 byte bytes[] = new byte[PREVALIDATION_SIZE];
                 bb.get(bytes);
-                String text = new String(bytes, forName);
+                String text = new String(bytes, ASCII_CHARSET);
                 return text.startsWith(TEXT_ONLY_METADATA_HEADER_PREFIX);
             } catch (IOException e) {
                 throw new CTFException(e.getMessage(), e);
@@ -442,7 +444,7 @@ public class Metadata {
         payloadByteBuffer.get(payloadByteArray, 0, payloadSize);
 
         /* Convert the byte array to a String */
-        String str = new String(payloadByteArray, 0, payloadSize);
+        String str = new String(payloadByteArray, 0, payloadSize, ASCII_CHARSET);
 
         /* Append it to the existing metadata */
         metadataText.append(str);
This page took 0.027721 seconds and 5 git commands to generate.