[kepler-users] Size Limitation of ArrayTokens?
Stefan Proell
sproell at sba-research.org
Mon May 21 09:20:12 PDT 2012
Dear Mailing list,
I wrote my own Actor which I need in order to encode binary files via
Base64 and pass the resulting encoded String to a REST Service. I feed
the binary file with a BinaryFileReader-Actor to my encoding Actor and
cast the Token to an Array, as I found no other solution to receive the
bytes from the file. I then use a standard (and also deprecated) method
for encoding the file first to Base64 and then send it through some
URL-safe encoding. The method looks like this:
@Override
public void fire() throws IllegalActionException {
super.fire();
// Read file from InputPort and convert to a ByteArray
ArrayToken inputToken = (ArrayToken) inputPort.get(0);
byte[] inputBytes =
ArrayToken.arrayTokenToUnsignedByteArray(inputToken);
// Encoding
String encode = new String(Base64.encodeBase64(inputBytes));
String encodedString = java.net.URLEncoder.encode(encode);
output.send(0, new StringToken(encodedString));
}
My problem is that the encoded file is truncated by the actor and hence
not usable for further processing. There seems to be a limit of 20 000
array elements (bytes), which is not sufficient for my purpose. Does
anyone have an idea why the file is chopped off after 20k letters?
Thanks in advance,
Stefan
More information about the Kepler-users
mailing list