ok! This should be working? Because it throws the same exception.
This is the class, which bolt depends.
--------------------------------------------------------------------------------------------------------------------------------
import java.io.IOException;
import java.util.Calendar;
import org.codehaus.jackson.JsonFactory;
import org.codehaus.jackson.JsonParser;
import org.codehaus.jackson.map.DeserializationConfig;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.ObjectReader;
import clojure.lang.PersistentVector;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
public class GetDirection implements Serializable {
public static final int TOPIC = 0;
public static final int YEAR = 1;
public static final int MONTH = 2;
public static final int DAY = 3;
public static final int HOUR = 4;
public static final int MINUTE = 5;
public PersistentVector process (String tupleStr, String topic) throws IOException{
/*
* Mapeamos el evento en una clase usando Jackson (json)
*/
GetDirection getDir = new GetDirection();
String eventoStr = getDir.choose(tupleStr, "{", "}");
//System.out.println("\n" + "EVENTO:D:"+ eventoStr+ "\n");
JsonFactory f = new JsonFactory();
JsonParser jp = f.createJsonParser(eventoStr);
//jp.nextToken();
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false); //Solamente campos necesarios.
ObjectReader reader = mapper.reader(SchemeEvent.class);
SchemeEvent event = reader.readValue(jp);
/*
* Convertir el timestamp en un objeto del tipo Calendario, para
* obtener posteriormente AÑO,MES,DIA,HORA,MINUTO.
*/
Long timestampLong = new Long(event.timestamp);
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(timestampLong * 1000);
/*
* Creamos el Array de los datos necesarios para generar tanto el
* PATH, como el fichero de los eventos.
*/
List<String> lista= new ArrayList<String>();
lista.add(topic);
lista.add(String.valueOf(cal.get(Calendar.YEAR)));
lista.add(String.valueOf(cal.get(Calendar.MONTH)));
lista.add(String.valueOf(cal.get(Calendar.DAY_OF_MONTH)));
lista.add(String.valueOf(cal.get(Calendar.HOUR_OF_DAY)));
lista.add(String.valueOf(cal.get(Calendar.MINUTE)));
lista.add(event.sensor_name);
lista.add(event.type);
lista.add(event.sig_generator);
lista.add(event.sig_id);
lista.add(event.src_str);
lista.add(event.dst_str);
/* ImmutableList<String> direction = ImmutableList.of(
topic,
String.valueOf(cal.get(Calendar.YEAR)),
String.valueOf(cal.get(Calendar.MONTH)),
String.valueOf(cal.get(Calendar.DAY_OF_MONTH)),
String.valueOf(cal.get(Calendar.HOUR_OF_DAY)),
String.valueOf(cal.get(Calendar.MINUTE)),
event.sensor_name,
event.type,
event.sig_generator,
event.sig_id,
event.src_str,
event.dst_str
); */
/*
* Añadimos un '0' si la fecha es menor de 10 --| 9 -> 09
*/
if(cal.get(Calendar.DAY_OF_MONTH)<10)
lista.set(DAY, "0"+lista.get(DAY));
if(cal.get(Calendar.MINUTE)<10)
lista.set(MINUTE, "0"+lista.get(MINUTE));
if(cal.get(Calendar.HOUR_OF_DAY)<10)
lista.set(HOUR, "0"+lista.get(HOUR));
if(cal.get(Calendar.MONTH)<10)
lista.set(MONTH, "0"+lista.get(MONTH));
PersistentVector direction = PersistentVector.create(lista);
return direction;
}
private String choose (String tupleStr, String startString, String endString){
StringBuilder event = new StringBuilder (tupleStr);
int start=event.indexOf(startString);
int end=event.indexOf(endString);
String result = event.substring(start, end+1);
return result;
}
}
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------