// Path: src/main/java/net/floodlightcontroller/topology/NodePortTuple.java
// public class NodePortTuple implements Comparable<NodePortTuple> {
//     protected long nodeId; // switch DPID
//     protected short portId; // switch port id
// 
//     /**
//      * Creates a NodePortTuple
//      * @param nodeId The DPID of the switch
//      * @param portId The port of the switch
//      */
//     public NodePortTuple(long nodeId, short portId) {
//         this.nodeId = nodeId;
//         this.portId = portId;
//     }
// 
//     public NodePortTuple(long nodeId, int portId) {
//         this.nodeId = nodeId;
//         this.portId = (short) portId;
//     }
// 
//     @JsonProperty("switch")
//     @JsonSerialize(using=DPIDSerializer.class)
//     public long getNodeId() {
//         return nodeId;
//     }
//     public void setNodeId(long nodeId) {
//         this.nodeId = nodeId;
//     }
//     @JsonProperty("port")
//     @JsonSerialize(using=UShortSerializer.class)
//     public short getPortId() {
//         return portId;
//     }
//     public void setPortId(short portId) {
//         this.portId = portId;
//     }
//     
//     public String toString() {
//         return "[id=" + HexString.toHexString(nodeId) + ", port=" + new Short(portId) + "]";
//     }
// 
//     @Override
//     public int hashCode() {
//         final int prime = 31;
//         int result = 1;
//         result = prime * result + (int) (nodeId ^ (nodeId >>> 32));
//         result = prime * result + portId;
//         return result;
//     }
// 
//     @Override
//     public boolean equals(Object obj) {
//         if (this == obj)
//             return true;
//         if (obj == null)
//             return false;
//         if (getClass() != obj.getClass())
//             return false;
//         NodePortTuple other = (NodePortTuple) obj;
//         if (nodeId != other.nodeId)
//             return false;
//         if (portId != other.portId)
//             return false;
//         return true;
//     }
// 
//     /**
//      * API to return a String value formed wtih NodeID and PortID
//      * The portID is a 16-bit field, so mask it as an integer to get full
//      * positive value
//      * @return
//      */
//     public String toKeyString() {
//         return (HexString.toHexString(nodeId)+ "|" + (portId & 0xffff));
//     }
// 
//     @Override
//     public int compareTo(NodePortTuple obj) {
//         final int BEFORE = -1;
//         final int EQUAL = 0;
//         final int AFTER = 1;
// 
//         if (this.getNodeId() < obj.getNodeId())
//             return BEFORE;
//         if (this.getNodeId() > obj.getNodeId())
//             return AFTER;
// 
//         if (this.getPortId() < obj.getPortId())
//             return BEFORE;
//         if (this.getPortId() > obj.getPortId())
//             return AFTER;
// 
//         return EQUAL;
//     }
// }


import java.util.List;
import net.floodlightcontroller.routing.IRoutingService;
import net.floodlightcontroller.routing.Route;
import net.floodlightcontroller.topology.NodePortTuple;
import org.openflow.util.HexString;
import org.restlet.resource.Get;
import org.restlet.resource.ServerResource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
 *    Copyright 2013, Big Switch Networks, Inc.
 *
 *    Licensed under the Apache License, Version 2.0 (the "License"); you may
 *    not use this file except in compliance with the License. You may obtain
 *    a copy of the License at
 *
 *         http://www.apache.org/licenses/LICENSE-2.0
 *
 *    Unless required by applicable law or agreed to in writing, software
 *    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 *    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 *    License for the specific language governing permissions and limitations
 *    under the License.
 **/

package net.floodlightcontroller.topology.web;




public class RouteResource extends ServerResource {

    protected static Logger log = LoggerFactory.getLogger(RouteResource.class);

    @Get("json")
// Path: src/main/java/net/floodlightcontroller/topology/NodePortTuple.java
// public class NodePortTuple implements Comparable<NodePortTuple> {
//     protected long nodeId; // switch DPID
//     protected short portId; // switch port id
// 
//     /**
//      * Creates a NodePortTuple
//      * @param nodeId The DPID of the switch
//      * @param portId The port of the switch
//      */
//     public NodePortTuple(long nodeId, short portId) {
//         this.nodeId = nodeId;
//         this.portId = portId;
//     }
// 
//     public NodePortTuple(long nodeId, int portId) {
//         this.nodeId = nodeId;
//         this.portId = (short) portId;
//     }
// 
//     @JsonProperty("switch")
//     @JsonSerialize(using=DPIDSerializer.class)
//     public long getNodeId() {
//         return nodeId;
//     }
//     public void setNodeId(long nodeId) {
//         this.nodeId = nodeId;
//     }
//     @JsonProperty("port")
//     @JsonSerialize(using=UShortSerializer.class)
//     public short getPortId() {
//         return portId;
//     }
//     public void setPortId(short portId) {
//         this.portId = portId;
//     }
//     
//     public String toString() {
//         return "[id=" + HexString.toHexString(nodeId) + ", port=" + new Short(portId) + "]";
//     }
// 
//     @Override
//     public int hashCode() {
//         final int prime = 31;
//         int result = 1;
//         result = prime * result + (int) (nodeId ^ (nodeId >>> 32));
//         result = prime * result + portId;
//         return result;
//     }
// 
//     @Override
//     public boolean equals(Object obj) {
//         if (this == obj)
//             return true;
//         if (obj == null)
//             return false;
//         if (getClass() != obj.getClass())
//             return false;
//         NodePortTuple other = (NodePortTuple) obj;
//         if (nodeId != other.nodeId)
//             return false;
//         if (portId != other.portId)
//             return false;
//         return true;
//     }
// 
//     /**
//      * API to return a String value formed wtih NodeID and PortID
//      * The portID is a 16-bit field, so mask it as an integer to get full
//      * positive value
//      * @return
//      */
//     public String toKeyString() {
//         return (HexString.toHexString(nodeId)+ "|" + (portId & 0xffff));
//     }
// 
//     @Override
//     public int compareTo(NodePortTuple obj) {
//         final int BEFORE = -1;
//         final int EQUAL = 0;
//         final int AFTER = 1;
// 
//         if (this.getNodeId() < obj.getNodeId())
//             return BEFORE;
//         if (this.getNodeId() > obj.getNodeId())
//             return AFTER;
// 
//         if (this.getPortId() < obj.getPortId())
//             return BEFORE;
//         if (this.getPortId() > obj.getPortId())
//             return AFTER;
// 
//         return EQUAL;
//     }
// }


// Path: src/main/java/net/floodlightcontroller/topology/web/RouteResource.java
import java.util.List;
import net.floodlightcontroller.routing.IRoutingService;
import net.floodlightcontroller.routing.Route;
import net.floodlightcontroller.topology.NodePortTuple;
import org.openflow.util.HexString;
import org.restlet.resource.Get;
import org.restlet.resource.ServerResource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 *    Copyright 2013, Big Switch Networks, Inc.
 *
 *    Licensed under the Apache License, Version 2.0 (the "License"); you may
 *    not use this file except in compliance with the License. You may obtain
 *    a copy of the License at
 *
 *         http://www.apache.org/licenses/LICENSE-2.0
 *
 *    Unless required by applicable law or agreed to in writing, software
 *    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 *    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 *    License for the specific language governing permissions and limitations
 *    under the License.
 **/

package net.floodlightcontroller.topology.web;




public class RouteResource extends ServerResource {

    protected static Logger log = LoggerFactory.getLogger(RouteResource.class);

    @Get("json")
    public List<NodePortTuple> retrieve() {