Migration Guide : Migrating from Version 8.6 : Deprecate and replace classes AbtBase64Coder and SstBase64Coder
Deprecate and replace classes AbtBase64Coder and SstBase64Coder
Reason for change
There are many different Base64 encoding formats defined (see Base64 on Wikipedia, RFC 4648: The Base16, Base32, and Base64 Data Encodings and RFC 2045: Multipurpose Internet Mail Extensions (MIME) Part 1: Format of Internet Message Bodies). The format supported by both AbtBase64Coder and SstBase64Coder classes most closely resembles MIME Base64 Content-Transfer-Encoding, but the encoding is not exactly correct. The 2 classes provide the same function – neither provides any unique function.
In addition, other encoding formats are needed by VA Smalltalk applications.
Change
A new application – EsBase64CoderApp – has been created to contain the classes supporting the different Base64 encoding formats. This application contains the following classes:
Base64Coder
Base64CoderMime
Base64CoderUrl
Base64CoderXmlNmToken
Base64CoderXmlName
This new application is included in the ENVY/Image Base configuration map and in the kernel.ic Image Component (IC).
The AbtBase64Coder and SstBase64Coder classes are deprecated. Their constructor methods (AbtBase64Coder class>>#current and SstBase64Coder class>>#new) will now answer an instance of Base64CoderMime since it provides the function closest to what these 2 classes provided. All other methods in these 2 classes have been removed.
The Base64 Encoding standards describe the returned value from a decoding operation as a string while the current AbtBase64Coder and SstBase64Coder classes answer a ByteArray. The new Base64 classes will answer a String as the result of a decoding operation in accordance with the standards.
Action required
Encoding
If you have specific references to AbtBase64Coder and/or SstBase64Coder in your applications, you should consider the environment where you are using the Base64 encoding:
Base64CoderMime should be used for encoding elements of email messages
Base64Coder should be used in almost all other instances
Base64CoderUrl, Base64CoderXmlNmToken, and Base64CoderXmlName should be used in special situations where the normal set of encoding characters is inappropriate
Once you have chosen the class appropriate to your environment, replace AbtBase64Coder current or SstBase64Coder new with Base64Coder<type> current.
Decoding
Instances of Base64Coder and Base64CoderMime can be used interchangeably to decode standard-, new Mime-, and old (deprecated) Mime-encoded data. However, data encoded using Base64CoderUrl, Base64CoderXmlNmToken, and Base64CoderXmlName must be decoded using the same class that was used for its encoding since the encoding character set is different for each of them (and also different from the encoding character set of Base64Coder and Base64CoderMime).
If the senders of #decode: in your application expect (and need) a ByteArray, you should send #asByteArray to the result of the #decode: operation.
Other
You should add EsBase64CoderApp as an explicit prerequisite to your applications that use the new Base64 coder classes.
 
Last modified date: 07/02/2019