{
filesMap = new LinkedHashMap<String, Object>();
}
else
{
TAPAttribute attr = (TAPAttribute)o;
if ( attr.getMethod() != method )
{
filesMap = new LinkedHashMap<String, Object>();
}
else
{
filesMap = (Map<String, Object>) attr.getValue();
}
}
final Map<String, Object> fileMap = new LinkedHashMap<String, Object>();
final File file = screenshot.getFile();
// These properties were not randomly chosen. Some of them were
// defined in a TAP Wiki page. I know I have the link is somewhere here...
fileMap.put("File-Location", file.getAbsolutePath() );
fileMap.put("File-Title", screenshot.getTitle() );
fileMap.put("File-Description", screenshot.getDescription() );
fileMap.put("File-Size", file.length() );
fileMap.put("File-Name", file.getName());
byte[] fileData = null;
try
{
fileData = FileUtils.readFileToByteArray(file);
}
catch (IOException e)
{
Assert.fail("Failed to read file to byte array.", e);
}
final String content = Base64.encodeBase64String( fileData );
fileMap.put("File-Content", content);
fileMap.put("File-Type", screenshot.getFileType());
filesMap.put(file.getAbsolutePath(), fileMap);
final TAPAttribute attribute = new TAPAttribute(method, filesMap);
context.setAttribute("Files", attribute);
}