package org.opennaas.extensions.opendaylight.vtn.protocol.client.serializers.json.deserialize;
import java.io.IOException;
import org.codehaus.jackson.JsonParser;
import org.codehaus.jackson.JsonProcessingException;
import org.codehaus.jackson.JsonToken;
import org.codehaus.jackson.map.DeserializationContext;
import org.codehaus.jackson.map.JsonDeserializer;
import org.opennaas.extensions.opendaylight.vtn.model.LogicalPort;
import org.opennaas.extensions.opendaylight.vtn.protocol.client.wrappers.LogicalPortsOFFlowsWrapper;
/**
*
* @author Josep Batallé <josep.batalle@i2cat.net>
*/
public class LogicalPortsWrapperJSONDeserializer extends JsonDeserializer<LogicalPortsOFFlowsWrapper> {
public LogicalPortsWrapperJSONDeserializer() {
}
@Override
public LogicalPortsOFFlowsWrapper deserialize(JsonParser jp, DeserializationContext dc) throws IOException, JsonProcessingException {
LogicalPortsOFFlowsWrapper wrapper = new LogicalPortsOFFlowsWrapper();
while (jp.nextToken() != JsonToken.END_OBJECT) {
String flowType = jp.getCurrentName();//logical_ports
if (jp.getCurrentName() == null || !flowType.equals("logical_ports")) {
break;
}
while (jp.nextToken() != JsonToken.END_ARRAY) {//[
if (jp.getCurrentToken() == JsonToken.START_ARRAY) {
jp.nextToken();
}
if (jp.getCurrentToken() != JsonToken.START_OBJECT) {
break;
}
LogicalPort lport = new LogicalPort();
while (jp.nextToken() != JsonToken.END_OBJECT) {//{
String n = jp.getCurrentName();
if (n == null) {
break;
}
if (n.equals("port_name")) {
lport.setPort_name(jp.getText());
} else if ("operdown_criteria".equals(n)) {
lport.setOperdown_criteria(jp.getText());
} else if ("logical_port_id".equals(n)) {
lport.setLogical_port_id(jp.getText());
} else if ("oper_status".equals(n)) {
lport.setOper_status(jp.getText());
} else if ("type".equals(n)) {
lport.setPort_name(jp.getText());
} else if ("switch_id".equals(n)) {
lport.setSwitch_id(jp.getText());
}
}
// add logical port
if (lport.getPort_name() != null) {
wrapper.add(lport);
}
}
}
return wrapper;
}
}