[ 
https://issues.apache.org/jira/browse/ARTEMIS-5048?focusedWorklogId=935209&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-935209
 ]

ASF GitHub Bot logged work on ARTEMIS-5048:
-------------------------------------------

                Author: ASF GitHub Bot
            Created on: 18/Sep/24 17:21
            Start Date: 18/Sep/24 17:21
    Worklog Time Spent: 10m 
      Work Description: jbertram commented on code in PR #5234:
URL: https://github.com/apache/activemq-artemis/pull/5234#discussion_r1765439095


##########
artemis-commons/src/main/java/org/apache/activemq/artemis/utils/Base64.java:
##########
@@ -1,1619 +1,58 @@
-/**
- * This file is released into the public domain.
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
  *
- * Notice from author (Robert Harder, [email protected]):
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
- * "I have released this software into the Public Domain. That means you can 
do whatever you want with it. Really. You
- * don't have to match it up with any other open source license &em; just use 
it. You can rename the files, move the
- * Java packages, whatever you want. If your lawyers say you have to have a 
license, contact me, and I'll make a special
- * release to you under whatever reasonable license you desire: MIT, BSD, GPL, 
whatever."
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 package org.apache.activemq.artemis.utils;
 
-import org.apache.activemq.artemis.logs.ActiveMQUtilLogger;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
 
-import java.nio.charset.Charset;
-import java.nio.charset.StandardCharsets;
-
-/**
- * <p>Encodes and decodes to and from Base64 notation.</p>
- * <p>Homepage: <a 
href="http://iharder.net/base64";>http://iharder.net/base64</a>.</p>
- * <p>The <code>options</code> parameter, which appears in a few places, is 
used to pass
- * several pieces of information to the encoder. In the "higher level" methods 
such as
- * encodeBytes( bytes, options ) the options parameter can be used to indicate 
such
- * things as first gzipping the bytes before encoding them, not inserting 
linefeeds
- * (though that breaks strict Base64 compatibility), and encoding using the 
URL-safe
- * and Ordered dialects.</p>
- * <p>The constants defined in Base64 can be OR-ed together to combine 
options, so you
- * might make a call like this:</p>
- * <p>
- * <code>String encoded = Base64.encodeBytes( mybytes, Base64.GZIP | 
Base64.DONT_BREAK_LINES );</code>
- * </p>
- * <p>to compress the data before encoding it and then making the output have 
no newline characters.</p>
- * <p>
- * Change Log:
- * </p>
- * <ul>
- * <li>v2.2.2 - Fixed encodeFileToFile and decodeFileToFile to use the
- * Base64.InputStream class to encode and decode on the fly which uses
- * less memory than encoding/decoding an entire file into memory before 
writing.</li>
- * <li>v2.2.1 - Fixed bug using URL_SAFE and ORDERED encodings. Fixed bug
- * when using very small files (~&lt; 40 bytes).</li>
- * <li>v2.2 - Added some helper methods for encoding/decoding directly from
- * one file to the next. Also added a main() method to support command line
- * encoding/decoding from one file to the next. Also added these Base64 
dialects:
- * <ol>
- * <li>The default is RFC3548 format.</li>
- * <li>Calling Base64.setFormat(Base64.BASE64_FORMAT.URLSAFE_FORMAT) generates
- * URL and file name friendly format as described in Section 4 of RFC3548.
- * http://www.faqs.org/rfcs/rfc3548.html</li>
- * <li>Calling Base64.setFormat(Base64.BASE64_FORMAT.ORDERED_FORMAT) generates
- * URL and file name friendly format that preserves lexical ordering as 
described
- * in http://www.faqs.org/qa/rfcc-1940.html</li>
- * </ol>
- * Special thanks to Jim Kellerman at <a 
href="http://www.powerset.com/";>http://www.powerset.com/</a>
- * for contributing the new Base64 dialects.
- * </li>
- * <li>v2.1 - Cleaned up javadoc comments and unused variables and methods. 
Added
- * some convenience methods for reading and writing to and from files.</li>
- * <li>v2.0.2 - Now specifies UTF-8 encoding in places where the code fails on 
systems
- * with other encodings (like EBCDIC).</li>
- * <li>v2.0.1 - Fixed an error when decoding a single byte, that is, when the
- * encoded data was a single byte.</li>
- * <li>v2.0 - I got rid of methods that used booleans to set options.
- * Now everything is more consolidated and cleaner. The code now detects
- * when data that's being decoded is gzip-compressed and will decompress it
- * automatically. Generally things are cleaner. You'll probably have to
- * change some method calls that you were making to support the new
- * options format (<code>int</code>s that you "OR" together).</li>
- * <li>v1.5.1 - Fixed bug when decompressing and decoding to a
- * byte[] using <code>decode( String s, boolean gzipCompressed )</code>.
- * Added the ability to "suspend" encoding in the Output Stream so
- * you can turn on and off the encoding if you need to embed base64
- * data in an otherwise "normal" stream (like an XML file).</li>
- * <li>v1.5 - Output stream pases on flush() command but doesn't do anything 
itself.
- * This helps when using GZIP streams.
- * Added the ability to GZip-compress objects before encoding them.</li>
- * <li>v1.4 - Added helper methods to read/write files.</li>
- * <li>v1.3.6 - Fixed OutputStream.flush() so that 'position' is reset.</li>
- * <li>v1.3.5 - Added flag to turn on and off line breaks. Fixed bug in input 
stream
- * where last buffer being read, if not completely full, was not returned.</li>
- * <li>v1.3.4 - Fixed when "improperly padded stream" error was thrown at the 
wrong time.</li>
- * <li>v1.3.3 - Fixed I/O streams which were totally messed up.</li>
- * </ul>
- * <p>
- * I am placing this code in the Public Domain. Do with it as you will.
- * This software comes with no guarantees or warranties but with
- * plenty of well-wishing instead!
- * Please visit <a 
href="http://iharder.net/base64";>http://iharder.net/base64</a>
- * periodically to check for updates or to contribute improvements.
- * </p>
- */
 public class Base64 {
 
-   /* ********  P U B L I C   F I E L D S  ******** */
-
-   /**
-    * No options specified. Value is zero.
-    */
-   public static final int NO_OPTIONS = 0;
-
-   /**
-    * Specify encoding.
-    */
-   public static final int ENCODE = 1;
-
-   /**
-    * Specify decoding.
-    */
-   public static final int DECODE = 0;
-
-   /**
-    * Specify that data should be gzip-compressed.
-    */
-   public static final int GZIP = 2;
-
-   /**
-    * Don't break lines when encoding (violates strict Base64 specification)
-    */
-   public static final int DONT_BREAK_LINES = 8;
-
-   /**
-    * Encode using Base64-like encoding that is URL- and Filename-safe as 
described
-    * in Section 4 of RFC3548:
-    * <a 
href="http://www.faqs.org/rfcs/rfc3548.html";>http://www.faqs.org/rfcs/rfc3548.html</a>.
-    * It is important to note that data encoded this way is <em>not</em> 
officially valid Base64,
-    * or at the very least should not be called Base64 without also specifying 
that is
-    * was encoded using the URL- and Filename-safe dialect.
-    */
-   public static final int URL_SAFE = 16;
-
-   /**
-    * Encode using the special "ordered" dialect of Base64 described here:
-    * <a 
href="http://www.faqs.org/qa/rfcc-1940.html";>http://www.faqs.org/qa/rfcc-1940.html</a>.
-    */
-   public static final int ORDERED = 32;
-
-   /* ********  P R I V A T E   F I E L D S  ******** */
-
-   /**
-    * Maximum line length (76) of Base64 output.
-    */
-   private static final int MAX_LINE_LENGTH = 76;
-
-   /**
-    * The equals sign (=) as a byte.
-    */
-   private static final byte EQUALS_SIGN = (byte) '=';
-
-   /**
-    * The new line character (\n) as a byte.
-    */
-   private static final byte NEW_LINE = (byte) '\n';
-
-   /**
-    * Preferred encoding.
-    */
-   private static final Charset PREFERRED_ENCODING = StandardCharsets.UTF_8;
-
-   // I think I end up not using the BAD_ENCODING indicator.
-   // private final static byte BAD_ENCODING = -9; // Indicates error in 
encoding
-   private static final byte WHITE_SPACE_ENC = -5; // Indicates white space in 
encoding
-
-   private static final byte EQUALS_SIGN_ENC = -1; // Indicates equals sign in 
encoding
-
-   /* ********  S T A N D A R D   B A S E 6 4   A L P H A B E T  ******** */
-
-   /**
-    * The 64 valid Base64 values.
-    */
-   // private final static byte[] ALPHABET;
-   /* Host platform me be something funny like EBCDIC, so we hardcode these 
values. */
-   private static final byte[] _STANDARD_ALPHABET = {(byte) 'A', (byte) 'B', 
(byte) 'C', (byte) 'D', (byte) 'E', (byte) 'F', (byte) 'G', (byte) 'H', (byte) 
'I', (byte) 'J', (byte) 'K', (byte) 'L', (byte) 'M', (byte) 'N', (byte) 'O', 
(byte) 'P', (byte) 'Q', (byte) 'R', (byte) 'S', (byte) 'T', (byte) 'U', (byte) 
'V', (byte) 'W', (byte) 'X', (byte) 'Y', (byte) 'Z', (byte) 'a', (byte) 'b', 
(byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f', (byte) 'g', (byte) 'h', (byte) 
'i', (byte) 'j', (byte) 'k', (byte) 'l', (byte) 'm', (byte) 'n', (byte) 'o', 
(byte) 'p', (byte) 'q', (byte) 'r', (byte) 's', (byte) 't', (byte) 'u', (byte) 
'v', (byte) 'w', (byte) 'x', (byte) 'y', (byte) 'z', (byte) '0', (byte) '1', 
(byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6', (byte) '7', (byte) 
'8', (byte) '9', (byte) '+', (byte) '/'};
-
-   /**
-    * Translates a Base64 value to either its 6-bit reconstruction value
-    * or a negative number indicating some other meaning.
-    */
-   private static final byte[] _STANDARD_DECODABET = {-9, -9, -9, -9, -9, -9, 
-9, -9, -9, // Decimal 0 - 8
-      -5, -5, // Whitespace: Tab and Linefeed
-      -9, -9, // Decimal 11 - 12
-      -5, // Whitespace: Carriage Return
-      -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, // Decimal 14 - 26
-      -9, -9, -9, -9, -9, // Decimal 27 - 31
-      -5, // Whitespace: Space
-      -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, // Decimal 33 - 42
-      62, // Plus sign at decimal 43
-      -9, -9, -9, // Decimal 44 - 46
-      63, // Slash at decimal 47
-      52, 53, 54, 55, 56, 57, 58, 59, 60, 61, // Numbers zero through nine
-      -9, -9, -9, // Decimal 58 - 60
-      -1, // Equals sign at decimal 61
-      -9, -9, -9, // Decimal 62 - 64
-      0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, // Letters 'A' through 'N'
-      14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, // Letters 'O' through 
'Z'
-      -9, -9, -9, -9, -9, -9, // Decimal 91 - 96
-      26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, // Letters 'a' 
through 'm'
-      39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, // Letters 'n' 
through 'z'
-      -9, -9, -9, -9 // Decimal 123 - 126
-   /*,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 127 - 139
-   -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 140 - 152
-   -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 153 - 165
-   -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 166 - 178
-   -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 179 - 191
-   -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 192 - 204
-   -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 205 - 217
-   -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 218 - 230
-   -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 231 - 243
-   -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9         // Decimal 244 - 255 */};
-
-   /* ********  U R L   S A F E   B A S E 6 4   A L P H A B E T  ******** */
-
-   /**
-    * Used in the URL- and Filename-safe dialect described in Section 4 of 
RFC3548:
-    * <a 
href="http://www.faqs.org/rfcs/rfc3548.html";>http://www.faqs.org/rfcs/rfc3548.html</a>.
-    * Notice that the last two bytes become "hyphen" and "underscore" instead 
of "plus" and "slash."
-    */
-   private static final byte[] _URL_SAFE_ALPHABET = {(byte) 'A', (byte) 'B', 
(byte) 'C', (byte) 'D', (byte) 'E', (byte) 'F', (byte) 'G', (byte) 'H', (byte) 
'I', (byte) 'J', (byte) 'K', (byte) 'L', (byte) 'M', (byte) 'N', (byte) 'O', 
(byte) 'P', (byte) 'Q', (byte) 'R', (byte) 'S', (byte) 'T', (byte) 'U', (byte) 
'V', (byte) 'W', (byte) 'X', (byte) 'Y', (byte) 'Z', (byte) 'a', (byte) 'b', 
(byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f', (byte) 'g', (byte) 'h', (byte) 
'i', (byte) 'j', (byte) 'k', (byte) 'l', (byte) 'm', (byte) 'n', (byte) 'o', 
(byte) 'p', (byte) 'q', (byte) 'r', (byte) 's', (byte) 't', (byte) 'u', (byte) 
'v', (byte) 'w', (byte) 'x', (byte) 'y', (byte) 'z', (byte) '0', (byte) '1', 
(byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6', (byte) '7', (byte) 
'8', (byte) '9', (byte) '-', (byte) '_'};
-
-   /**
-    * Used in decoding URL- and Filename-safe dialects of Base64.
-    */
-   private static final byte[] _URL_SAFE_DECODABET = {-9, -9, -9, -9, -9, -9, 
-9, -9, -9, // Decimal 0 - 8
-      -5, -5, // Whitespace: Tab and Linefeed
-      -9, -9, // Decimal 11 - 12
-      -5, // Whitespace: Carriage Return
-      -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, // Decimal 14 - 26
-      -9, -9, -9, -9, -9, // Decimal 27 - 31
-      -5, // Whitespace: Space
-      -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, // Decimal 33 - 42
-      -9, // Plus sign at decimal 43
-      -9, // Decimal 44
-      62, // Minus sign at decimal 45
-      -9, // Decimal 46
-      -9, // Slash at decimal 47
-      52, 53, 54, 55, 56, 57, 58, 59, 60, 61, // Numbers zero through nine
-      -9, -9, -9, // Decimal 58 - 60
-      -1, // Equals sign at decimal 61
-      -9, -9, -9, // Decimal 62 - 64
-      0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, // Letters 'A' through 'N'
-      14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, // Letters 'O' through 
'Z'
-      -9, -9, -9, -9, // Decimal 91 - 94
-      63, // Underscore at decimal 95
-      -9, // Decimal 96
-      26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, // Letters 'a' 
through 'm'
-      39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, // Letters 'n' 
through 'z'
-      -9, -9, -9, -9 // Decimal 123 - 126
-   /*,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 127 - 139
-   -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 140 - 152
-   -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 153 - 165
-   -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 166 - 178
-   -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 179 - 191
-   -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 192 - 204
-   -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 205 - 217
-   -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 218 - 230
-   -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 231 - 243
-   -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9         // Decimal 244 - 255 */};
-
-   /* ********  O R D E R E D   B A S E 6 4   A L P H A B E T  ******** */
-
-   /**
-    * I don't get the point of this technique, but it is described here:
-    * <a 
href="http://www.faqs.org/qa/rfcc-1940.html";>http://www.faqs.org/qa/rfcc-1940.html</a>.
-    */
-   private static final byte[] _ORDERED_ALPHABET = {(byte) '-', (byte) '0', 
(byte) '1', (byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6', (byte) 
'7', (byte) '8', (byte) '9', (byte) 'A', (byte) 'B', (byte) 'C', (byte) 'D', 
(byte) 'E', (byte) 'F', (byte) 'G', (byte) 'H', (byte) 'I', (byte) 'J', (byte) 
'K', (byte) 'L', (byte) 'M', (byte) 'N', (byte) 'O', (byte) 'P', (byte) 'Q', 
(byte) 'R', (byte) 'S', (byte) 'T', (byte) 'U', (byte) 'V', (byte) 'W', (byte) 
'X', (byte) 'Y', (byte) 'Z', (byte) '_', (byte) 'a', (byte) 'b', (byte) 'c', 
(byte) 'd', (byte) 'e', (byte) 'f', (byte) 'g', (byte) 'h', (byte) 'i', (byte) 
'j', (byte) 'k', (byte) 'l', (byte) 'm', (byte) 'n', (byte) 'o', (byte) 'p', 
(byte) 'q', (byte) 'r', (byte) 's', (byte) 't', (byte) 'u', (byte) 'v', (byte) 
'w', (byte) 'x', (byte) 'y', (byte) 'z'};
-
-   /**
-    * Used in decoding the "ordered" dialect of Base64.
-    */
-   private static final byte[] _ORDERED_DECODABET = {-9, -9, -9, -9, -9, -9, 
-9, -9, -9, // Decimal 0 - 8
-      -5, -5, // Whitespace: Tab and Linefeed
-      -9, -9, // Decimal 11 - 12
-      -5, // Whitespace: Carriage Return
-      -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, // Decimal 14 - 26
-      -9, -9, -9, -9, -9, // Decimal 27 - 31
-      -5, // Whitespace: Space
-      -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, // Decimal 33 - 42
-      -9, // Plus sign at decimal 43
-      -9, // Decimal 44
-      0, // Minus sign at decimal 45
-      -9, // Decimal 46
-      -9, // Slash at decimal 47
-      1, 2, 3, 4, 5, 6, 7, 8, 9, 10, // Numbers zero through nine
-      -9, -9, -9, // Decimal 58 - 60
-      -1, // Equals sign at decimal 61
-      -9, -9, -9, // Decimal 62 - 64
-      11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, // Letters 'A' 
through 'M'
-      24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, // Letters 'N' 
through 'Z'
-      -9, -9, -9, -9, // Decimal 91 - 94
-      37, // Underscore at decimal 95
-      -9, // Decimal 96
-      38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, // Letters 'a' 
through 'm'
-      51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, // Letters 'n' 
through 'z'
-      -9, -9, -9, -9 // Decimal 123 - 126
-   /*,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 127 - 139
-     -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 140 - 152
-     -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 153 - 165
-     -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 166 - 178
-     -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 179 - 191
-     -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 192 - 204
-     -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 205 - 217
-     -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 218 - 230
-     -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,     // Decimal 231 - 243
-     -9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9         // Decimal 244 - 255 */};
-
-   /* ********  D E T E R M I N E   W H I C H   A L H A B E T  ******** */
-
-   /**
-    * Returns one of the _SOMETHING_ALPHABET byte arrays depending on
-    * the options specified.
-    * It's possible, though silly, to specify ORDERED and URLSAFE
-    * in which case one of them will be picked, though there is
-    * no guarantee as to which one will be picked.
-    */
-   private static byte[] getAlphabet(final int options) {
-      if ((options & Base64.URL_SAFE) == Base64.URL_SAFE) {
-         return Base64._URL_SAFE_ALPHABET;
-      } else if ((options & Base64.ORDERED) == Base64.ORDERED) {
-         return Base64._ORDERED_ALPHABET;
-      } else {
-         return Base64._STANDARD_ALPHABET;
+   public static String encodeObject(final Serializable serializableObject) {
+      try (ByteArrayOutputStream baos = new ByteArrayOutputStream();
+           ObjectOutputStream oos = new ObjectOutputStream(baos)) {
+         oos.writeObject(serializableObject);
+         return 
java.util.Base64.getEncoder().encodeToString(baos.toByteArray());
+      } catch (Exception e) {
+         return null;

Review Comment:
   Indeed. I didn't mean to change that semantic.





Issue Time Tracking
-------------------

    Worklog Id:     (was: 935209)
    Time Spent: 1h 10m  (was: 1h)

> Use java.util.Base64
> --------------------
>
>                 Key: ARTEMIS-5048
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-5048
>             Project: ActiveMQ Artemis
>          Issue Type: Improvement
>            Reporter: Justin Bertram
>            Assignee: Justin Bertram
>            Priority: Major
>          Time Spent: 1h 10m
>  Remaining Estimate: 0h
>
> We've traditionally used {{org.apache.activemq.artemis.utils.Base64}} for 
> Base64 encoding/decoding. This implementation is based on public domain code 
> from http://iharder.net/base64. 
> In Java 8 {{java.util.Base64}} was introduced. I assumed we hadn't switched 
> to this implementation for performance reasons so I created a simple 
> JMH-based test to compare the two implementations and it appears to me that 
> {{java.util.Base64}} is significantly faster than our current implementation. 
> Using the JDK's class will simplify our code _and_ improve performance. Also, 
> it should be 100% backwards compatible since Base64 encoding/decoding is 
> standardized.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information, visit: https://activemq.apache.org/contact


Reply via email to