net.masterthought.cucumber.json.deserializers.EmbeddingDeserializer Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of cucumber-reporting Show documentation
Show all versions of cucumber-reporting Show documentation
Provides pretty html reports for Cucumber (Behaviour-Driven Development). It works by generating html from the
cucumber json report formatter. So can be used anywhere a json report is generated. Current use is in the
cucumber jenkins plugin and a maven mojo to generate the same report from mvn command line when running locally.
package net.masterthought.cucumber.json.deserializers;
import java.io.IOException;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;
import org.codehaus.plexus.util.Base64;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import net.masterthought.cucumber.Configuration;
import net.masterthought.cucumber.ValidationException;
import net.masterthought.cucumber.json.Embedding;
/**
* Deserializes embedding and stores it in attachment directory.
*
* @author Damian Szczepanik (damianszczepanik@github)
*/
public class EmbeddingDeserializer extends CucumberJsonDeserializer {
@Override
public Embedding deserialize(JsonParser parser, Configuration configuration)
throws IOException, JsonProcessingException {
JsonNode rootNode = parser.getCodec().readTree(parser);
String data = rootNode.get("data").asText();
String mimeType = rootNode.get("mime_type").asText();
Embedding embedding = new Embedding(mimeType, data);
storeEmbedding(embedding, configuration);
return embedding;
}
private void storeEmbedding(Embedding embedding, Configuration configuration) {
Path file = FileSystems.getDefault().getPath(configuration.getEmbeddingDirectory().getAbsolutePath(),
embedding.getFileId() + "." + embedding.getExtension());
try {
Files.write(file, Base64.decodeBase64(embedding.getData().getBytes()));
} catch (IOException e) {
throw new ValidationException(e);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy