package storm.applications.spout.parser;
import com.google.common.collect.ImmutableList;
import com.google.gson.Gson;
import com.google.gson.JsonSyntaxException;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import storm.applications.util.stream.StreamValues;
/**
*
* @author Maycon Viana Bordin <mayconbordin@gmail.com>
*/
public class JsonEmailParser extends Parser {
private static final Logger LOG = LoggerFactory.getLogger(JsonEmailParser.class);
private final Gson gson = new Gson();
@Override
public List<StreamValues> parse(String str) {
StreamValues values = null;
try {
Email email = gson.fromJson(str, Email.class);
values = new StreamValues();
values.add(email.id);
values.add(email.message);
values.setMessageId(email.id);
if (email.isSpam != null) {
values.add(email.isSpam);
}
} catch (JsonSyntaxException ex) {
LOG.error("Error parsing JSON encoded email", ex);
}
return ImmutableList.of(values);
}
private static class Email {
public String id;
public String message;
public Boolean isSpam = null;
}
}