// Path: server/src/main/java/io/pne/veth/server/handlers/IJsonHandler.java
// public interface IJsonHandler<I,O> {
// 
//     O handle(I aRequest);
// 
//     Class<I> getRequestClass();
// }
// 
// Path: server/src/main/java/io/pne/veth/server/handlers/dao/IEndpointDao.java
// public interface IEndpointDao {
// 
//     void addEndpoint(TEndpoint aEndpoint);
// 
//     TEndpoint findEndPoint(String aEndpointId);
// 
//     void removeEndpoint(String aEndpointId);
// }
// 
// Path: server/src/main/java/io/pne/veth/server/handlers/dao/TEndpoint.java
// public class TEndpoint {
// 
//     public final String id;
//     public final String ipAddress;
//     public final String macAddress;
//     public final String device;
// 
//     public TEndpoint(String id, String ipAddress, String macAddress, String aDevice) {
//         this.id = id;
//         this.ipAddress = ipAddress;
//         this.macAddress = macAddress;
//         device = aDevice;
//     }
// }
// 
// Path: server/src/main/java/io/pne/veth/server/handlers/model/InfoRequest.java
// public class InfoRequest {
// 
//     @SerializedName("NetworkID") public String              networkID;
//     @SerializedName("EndpointID") public String             endpointId;
// 
//     @Override
//     public String toString() {
//         return "InfoRequest{" +
//                 "networkID='" + networkID + '\'' +
//                 ", endpointId='" + endpointId + '\'' +
//                 '}';
//     }
// }
// 
// Path: server/src/main/java/io/pne/veth/server/handlers/model/InfoResponse.java
// public class InfoResponse {
// 
//     @SerializedName("Value")  public Map<String, String> value;
// 
// }


import io.pne.veth.server.handlers.IJsonHandler;
import io.pne.veth.server.handlers.dao.IEndpointDao;
import io.pne.veth.server.handlers.dao.TEndpoint;
import io.pne.veth.server.handlers.model.InfoRequest;
import io.pne.veth.server.handlers.model.InfoResponse;
import java.util.HashMap;
package io.pne.veth.server.handlers.location.networkdriver;



public class EndpointOperInfoHandler implements IJsonHandler<InfoRequest, InfoResponse> {

    private final IEndpointDao endpointDao;

    public EndpointOperInfoHandler(IEndpointDao endpointDao) {
        this.endpointDao = endpointDao;
    }

    @Override
    public InfoResponse handle(InfoRequest aRequest) {
        /*
            "Value": {
                "hostNic.Addr": "192.168.3.2/24",
                "hostNic.HardwareAddr": "62:7b:0b:7d:54:8d",
                "hostNic.Name": "dns-1.c",
                "id": "dc90c4902a7a43cf897f91c094252f038c2e24c507083c81bb7a2ec2b7f79543",
                "srcName": "dns-1.c"
            }
         */

// Path: server/src/main/java/io/pne/veth/server/handlers/IJsonHandler.java
// public interface IJsonHandler<I,O> {
// 
//     O handle(I aRequest);
// 
//     Class<I> getRequestClass();
// }
// 
// Path: server/src/main/java/io/pne/veth/server/handlers/dao/IEndpointDao.java
// public interface IEndpointDao {
// 
//     void addEndpoint(TEndpoint aEndpoint);
// 
//     TEndpoint findEndPoint(String aEndpointId);
// 
//     void removeEndpoint(String aEndpointId);
// }
// 
// Path: server/src/main/java/io/pne/veth/server/handlers/dao/TEndpoint.java
// public class TEndpoint {
// 
//     public final String id;
//     public final String ipAddress;
//     public final String macAddress;
//     public final String device;
// 
//     public TEndpoint(String id, String ipAddress, String macAddress, String aDevice) {
//         this.id = id;
//         this.ipAddress = ipAddress;
//         this.macAddress = macAddress;
//         device = aDevice;
//     }
// }
// 
// Path: server/src/main/java/io/pne/veth/server/handlers/model/InfoRequest.java
// public class InfoRequest {
// 
//     @SerializedName("NetworkID") public String              networkID;
//     @SerializedName("EndpointID") public String             endpointId;
// 
//     @Override
//     public String toString() {
//         return "InfoRequest{" +
//                 "networkID='" + networkID + '\'' +
//                 ", endpointId='" + endpointId + '\'' +
//                 '}';
//     }
// }
// 
// Path: server/src/main/java/io/pne/veth/server/handlers/model/InfoResponse.java
// public class InfoResponse {
// 
//     @SerializedName("Value")  public Map<String, String> value;
// 
// }


// Path: server/src/main/java/io/pne/veth/server/handlers/location/networkdriver/EndpointOperInfoHandler.java
import io.pne.veth.server.handlers.IJsonHandler;
import io.pne.veth.server.handlers.dao.IEndpointDao;
import io.pne.veth.server.handlers.dao.TEndpoint;
import io.pne.veth.server.handlers.model.InfoRequest;
import io.pne.veth.server.handlers.model.InfoResponse;
import java.util.HashMap;

package io.pne.veth.server.handlers.location.networkdriver;



public class EndpointOperInfoHandler implements IJsonHandler<InfoRequest, InfoResponse> {

    private final IEndpointDao endpointDao;

    public EndpointOperInfoHandler(IEndpointDao endpointDao) {
        this.endpointDao = endpointDao;
    }

    @Override
    public InfoResponse handle(InfoRequest aRequest) {
        /*
            "Value": {
                "hostNic.Addr": "192.168.3.2/24",
                "hostNic.HardwareAddr": "62:7b:0b:7d:54:8d",
                "hostNic.Name": "dns-1.c",
                "id": "dc90c4902a7a43cf897f91c094252f038c2e24c507083c81bb7a2ec2b7f79543",
                "srcName": "dns-1.c"
            }
         */

        TEndpoint endpoint = endpointDao.findEndPoint(aRequest.endpointId);