| package net.onrc.onos.core.newintent.web; |
| |
| import java.io.IOException; |
| import java.util.Set; |
| |
| import net.floodlightcontroller.restserver.CustomSerializerHelper; |
| import net.onrc.onos.api.newintent.Intent; |
| import net.onrc.onos.api.newintent.IntentFloodlightService; |
| import net.onrc.onos.api.newintent.IntentId; |
| |
| import org.codehaus.jackson.JsonGenerator; |
| import org.codehaus.jackson.JsonProcessingException; |
| import org.codehaus.jackson.map.SerializerProvider; |
| import org.codehaus.jackson.map.ser.std.SerializerBase; |
| import org.restlet.ext.jackson.JacksonRepresentation; |
| import org.restlet.representation.Representation; |
| import org.restlet.resource.Get; |
| import org.restlet.resource.ServerResource; |
| |
| /** |
| * Handles REST requests for intent resources. |
| */ |
| public class IntentResource extends ServerResource { |
| |
| CustomSerializerHelper intentSerializers; |
| |
| /** |
| * Constructs an IntentResource. |
| * <p/> |
| * A custom serializer for {@link IntentId} is automatically registered, |
| * because IntentId can't be serialized by default. |
| */ |
| public IntentResource() { |
| intentSerializers = new CustomSerializerHelper(); |
| intentSerializers.addSerializer(IntentId.class, |
| new SerializerBase<IntentId>(IntentId.class) { |
| @Override |
| public void serialize(IntentId id, JsonGenerator jGen, |
| SerializerProvider sp) throws IOException, |
| JsonProcessingException { |
| jGen.writeString(id.toString()); |
| } |
| }); |
| } |
| |
| /** |
| * Handles REST requests for all intent resources. |
| * |
| * @return JSON-serializable Representation of all intent resources |
| */ |
| @Get("json") |
| public Representation retrieve() { |
| IntentFloodlightService intentService = |
| (IntentFloodlightService) getContext().getAttributes() |
| .get(IntentFloodlightService.class.getCanonicalName()); |
| |
| Set<Intent> intents = intentService.getIntents(); |
| |
| return intentSerializers.applySerializers( |
| (JacksonRepresentation<?>) toRepresentation(intents, null)); |
| } |
| } |