RFR: JDK-8077371: Binary files in JAXP test should be removed [v3]

Lance Andersen lancea at openjdk.org
Thu Apr 20 17:11:45 UTC 2023


On Thu, 20 Apr 2023 16:20:18 GMT, Daniel Fuchs <dfuchs at openjdk.org> wrote:

> > The original version of this test was validating serialization compatibility with previous releases.
> > The current changes seems to have removed that validation in the re-write of the test
> > One option is to convert the various *.ser files to a byte array and have the test write them out or read them from a stream to do the validation
> 
> Good point. You can also base64-encode the bytes into a string - here is an example: https://github.com/openjdk/jdk/blob/master/test/jdk/java/util/logging/HigherResolutionTimeStamps/SerializeLogRecord.java

Trivial code to create a Byte array in addition to Daniel's example


    /**
     * Utility method which takes an byte array and converts to byte array
     * declaration.  For example:
     * <pre>
     *     {@code
     *        var fooJar = Files.readAllBytes(Path.of("foo.jar"));
     *        var result = createByteArray(fooJar, "FOOBYTES");
     *      }
     * </pre>
     * @param bytes A byte array used to create a byte array declaration
     * @param name Name to be used in the byte array declaration
     * @return The formatted byte array declaration
     */
    public static String createByteArray(byte[] bytes, String name) {
        StringBuilder sb = new StringBuilder(bytes.length * 5);
        Formatter fmt = new Formatter(sb);
        fmt.format("    public static byte[] %s = {", name);
        final int linelen = 8;
        for (int i = 0; i < bytes.length; i++) {
            if (i % linelen == 0) {
                fmt.format("%n        ");
            }
            fmt.format(" (byte) 0x%x,", bytes[i] & 0xff);
        }
        fmt.format("%n    };%n");
        return sb.toString();
    }

-------------

PR Comment: https://git.openjdk.org/jdk/pull/13537#issuecomment-1516672731


More information about the core-libs-dev mailing list