ctf: no longer rely on default character encoding in Metadata.java
authorMatthew Khouzam <matthew.khouzam@ericsson.com>
Thu, 14 Jan 2016 21:41:48 +0000 (16:41 -0500)
committerMatthew Khouzam <matthew.khouzam@ericsson.com>
Tue, 19 Jan 2016 02:01:12 +0000 (21:01 -0500)
Change-Id: I0aac8cbcef9871352545101978c09916278e59c5
Signed-off-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
Reviewed-on: https://git.eclipse.org/r/64411
Reviewed-by: Marc-Andre Laperle <marc-andre.laperle@ericsson.com>
Tested-by: Marc-Andre Laperle <marc-andre.laperle@ericsson.com>
Reviewed-by: Hudson CI
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.032913 seconds and 5 git commands to generate.