Technology Blogs by Members
Explore a vibrant mix of technical expertise, industry insights, and tech buzz in member blogs covering SAP products, technology, and events. Get in the mix!
cancel
Showing results for 
Search instead for 
Did you mean: 
engswee
Active Contributor

Update 4 Sep 2018: Now available in CPI as well.


Introduction

Base64 is an encoding scheme to represent binary data in a textual format. In the area of integration, occasionally there are requirements to handle content that are encoded in Base64. Below are some example usage of Base64:-

  • Store binary data (PDF, image) in text format

  • Embed binary data in an XML

  • Compress data for efficient transfer over text-based transmission medium


Currently, there is no standard feature in PI/PO to handle Base64 content. It is normally handled through custom development of UDFs or Java mappings. Unfortunately, although there is an idea submission at Idea Place by aaron.myers for a Base64 standard adapter module (in the likes of PayloapZipBean, etc), the status of the submission has not changed in the past two years since the submission

Enter Base64DecodeConverter, the latest addition to the family of FormatConversionBean converters It is a reusable and reconfigurable converter that handles decoding of Base64 content in plain text file or embedded in an XML payload.

Source Code and Deployment Archive

Refer to following blog on location of source code and/or EAR deployment file.

FormatConversionBean - One Bean to rule them all!

Usage of Module in Communication Channel

Module Processing Sequence

















Number Module Name Type Module Key


<Depending on position of module in chain>

1) Asynchronous scenario,

Normally before the last module in channels

2) Synchronous scenario,

Before last module to convert request payload

After last module to convert response payload
Custom_AF_Modules/FormatConversionBean Local Enterprise Bean <Any Arbitrary Value>

Module Parameter Reference

Below are the parameters for configuration of the module for Base64 decoding. Certain parameters will automatically inherit the default values if it is not configured.





















































Parameter Name Allowed values Default value Remarks
converterClass

PI - com.equalize.xpi.af.modules.base64.Base64DecodeConverter

CPI - com.equalize.converter.core.Base64DecodeConverter
Required field. Determines conversion class
inputType plain, xml Required field. Indicates type of input data

  • plain = Base64 string provided as plain input text

  • xml = Base64 string embedded in XML element of XML payload


xpath

Required field when inputType = 'xml'.

XPath expression to location of XML element containing Base64 string
zippedContent Y,N N Indicates that content was compressed before encoding into Base64 string
contentType Specifies the MIME content type of the output after decoding. Available only in PI
messageLog pre, post Saves a log version of the message that is viewable in Message Monitor

  • pre = saves payload before conversion

  • post = saves payload after conversion


Available only in PI
logLocation Name of log version when messageLog is populated. Location defaulted to value in messageLog if logLocation not populated. Available only in PI

Example Scenarios

Here are some example scenarios of the behavior of the conversion based on different configuration options.

Scenario 1

  • Base64 string in plain input text

  • Content was compressed before encoding into Base64, therefore decompression is required after decoding


Module parameters





















Parameter Name Parameter Value
converterClass com.equalize.xpi.af.modules.base64.Base64DecodeConverter
inputType plain
zippedContent Y

Result











Input
Output

Scenario 2

Screenshot of actual configuration and testing are shown below.

  • Base64 string embedded in XML payload

  • XPath expression to location of field containing Base64 content provided

  • Output MIME content type specified


The test data is created by using Base64 Encode - Online to produce the Base64 string as shown below, and embedding it in an XML.



Module configuration on an SFTP receiver channel.



The XML input payload is sent via the Send Test message function.



The log version 'post' shows the content after decoding. The decoded content matches the original content as expected.



The audit log shows the trace of steps being executed by the module.



Conclusion

With this new addition to FormatConversionBean, decoding of Base64 content can now be easily handled without additional custom development

12 Comments
Labels in this area