src/jdk.jfr/share/classes/jdk/jfr/internal/consumer/StringParser.java
branchJEP-349-branch
changeset 58197 0ef79bd7fb5c
parent 58180 0a8943b4d0dd
--- a/src/jdk.jfr/share/classes/jdk/jfr/internal/consumer/StringParser.java	Tue Sep 17 19:37:49 2019 +0200
+++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/consumer/StringParser.java	Wed Sep 18 03:45:46 2019 +0200
@@ -28,15 +28,35 @@
 import java.io.IOException;
 import java.nio.charset.Charset;
 
-import jdk.jfr.internal.consumer.Parser;
-import jdk.jfr.internal.consumer.RecordingInput;
-import jdk.jfr.internal.consumer.StringEncoding;
+public final class StringParser extends Parser {
+
+    public enum Encoding {
+        NULL(0),
+        EMPTY_STRING(1),
+        CONSTANT_POOL(2),
+        UT8_BYTE_ARRAY(3),
+        CHAR_ARRAY(4),
+        LATIN1_BYTE_ARRAY(5);
+
+        private byte byteValue;
 
-public final class StringParser extends Parser {
+        private Encoding(int byteValue) {
+            this.byteValue = (byte) byteValue;
+        }
+
+        public byte byteValue() {
+            return byteValue;
+        }
+
+        public boolean is(byte value) {
+            return value == byteValue;
+        }
+
+    }
     private final static Charset UTF8 = Charset.forName("UTF-8");
     private final static Charset LATIN1 = Charset.forName("ISO-8859-1");
 
-    final static class CharsetParser extends Parser {
+    private final static class CharsetParser extends Parser {
         private final Charset charset;
         private int lastSize;
         private byte[] buffer = new byte[16];
@@ -86,7 +106,7 @@
         }
     }
 
-    final static class CharArrayParser extends Parser {
+    private final static class CharArrayParser extends Parser {
         private char[] buffer = new char[16];
         private int lastSize = -1;
         private String lastString = null;
@@ -146,7 +166,7 @@
     @Override
     public Object parse(RecordingInput input) throws IOException {
         byte encoding = input.readByte();
-        if (encoding == StringEncoding.STRING_ENCODING_CONSTANT_POOL) {
+        if (Encoding.CONSTANT_POOL.is(encoding)) {
             long key = input.readLong();
             if (event) {
                 return stringLookup.getCurrentResolved(key);
@@ -154,19 +174,19 @@
                 return stringLookup.getCurrent(key);
             }
         }
-        if (encoding == StringEncoding.STRING_ENCODING_NULL) {
+        if (Encoding.NULL.is(encoding)) {
             return null;
         }
-        if (encoding == StringEncoding.STRING_ENCODING_EMPTY_STRING) {
+        if (Encoding.EMPTY_STRING.is(encoding)) {
             return "";
         }
-        if (encoding == StringEncoding.STRING_ENCODING_CHAR_ARRAY) {
+        if (Encoding.CHAR_ARRAY.is(encoding)) {
             return charArrayParser.parse(input);
         }
-        if (encoding == StringEncoding.STRING_ENCODING_UTF8_BYTE_ARRAY) {
+        if (Encoding.UT8_BYTE_ARRAY.is(encoding)) {
             return utf8parser.parse(input);
         }
-        if (encoding == StringEncoding.STRING_ENCODING_LATIN1_BYTE_ARRAY) {
+        if (Encoding.LATIN1_BYTE_ARRAY.is(encoding)) {
             return latin1parser.parse(input);
         }
         throw new IOException("Unknown string encoding " + encoding);
@@ -175,25 +195,25 @@
     @Override
     public void skip(RecordingInput input) throws IOException {
         byte encoding = input.readByte();
-        if (encoding == StringEncoding.STRING_ENCODING_CONSTANT_POOL) {
+        if (Encoding.CONSTANT_POOL.is(encoding)) {
             input.readLong();
             return;
         }
-        if (encoding == StringEncoding.STRING_ENCODING_EMPTY_STRING) {
+        if (Encoding.EMPTY_STRING.is(encoding)) {
             return;
         }
-        if (encoding == StringEncoding.STRING_ENCODING_NULL) {
+        if (Encoding.NULL.is(encoding)) {
             return;
         }
-        if (encoding == StringEncoding.STRING_ENCODING_CHAR_ARRAY) {
+        if (Encoding.CHAR_ARRAY.is(encoding)) {
             charArrayParser.skip(input);
             return;
         }
-        if (encoding == StringEncoding.STRING_ENCODING_UTF8_BYTE_ARRAY) {
+        if (Encoding.UT8_BYTE_ARRAY.is(encoding)) {
             utf8parser.skip(input);
             return;
         }
-        if (encoding == StringEncoding.STRING_ENCODING_LATIN1_BYTE_ARRAY) {
+        if (Encoding.LATIN1_BYTE_ARRAY.is(encoding)) {
             latin1parser.skip(input);
             return;
         }