[RICPLT-2157] Restructure handlers and converters.......
[ric-plt/e2mgr.git] / E2Manager / controllers / nodeb_controller.go
index 50cb49b..802537d 100644 (file)
@@ -32,7 +32,7 @@ import (
        "github.com/go-ozzo/ozzo-validation"
        "github.com/go-ozzo/ozzo-validation/is"
        "github.com/golang/protobuf/jsonpb"
-       "github.com/julienschmidt/httprouter"
+       "github.com/gorilla/mux"
        "net/http"
        "net/http/httputil"
        "strings"
@@ -58,6 +58,13 @@ var E2Sessions = make(sessions.E2Sessions)
 var messageChannel chan *models.E2RequestMessage
 var errorChannel chan error
 
+type INodebController interface {
+       HandleRequest(writer http.ResponseWriter, request *http.Request)
+       GetNodebIdList (writer http.ResponseWriter, request *http.Request)
+       GetNodeb(writer http.ResponseWriter, request *http.Request)
+       HandleHealthCheckRequest(writer http.ResponseWriter, request *http.Request)
+}
+
 type NodebController struct {
        rmrService         *services.RmrService
        Logger             *logger.Logger
@@ -65,8 +72,7 @@ type NodebController struct {
        rnibWriterProvider func() rNibWriter.RNibWriter
 }
 
-func NewNodebController(logger *logger.Logger, rmrService *services.RmrService, rnibReaderProvider func() reader.RNibReader,
-       rnibWriterProvider func() rNibWriter.RNibWriter) *NodebController {
+func NewNodebController(logger *logger.Logger, rmrService *services.RmrService, rnibReaderProvider func() reader.RNibReader, rnibWriterProvider func() rNibWriter.RNibWriter) *NodebController {
        messageChannel = make(chan *models.E2RequestMessage)
        errorChannel = make(chan error)
        return &NodebController{
@@ -83,11 +89,12 @@ func prettifyRequest(request *http.Request) string {
        return strings.Replace(requestPrettyPrint, "\n", "", -1)
 }
 
-func (rc NodebController) HandleRequest(writer http.ResponseWriter, request *http.Request, params httprouter.Params) {
+func (rc NodebController) HandleRequest(writer http.ResponseWriter, request *http.Request) {
        startTime := time.Now()
        rc.Logger.Infof("[Client -> E2 Manager] #nodeb_controller.HandleRequest - request: %v", prettifyRequest(request))
 
-       messageTypeParam := params.ByName("messageType")
+       vars := mux.Vars(request)
+       messageTypeParam := vars["messageType"]
        requestHandlerProvider := httpmsghandlerprovider.NewRequestHandlerProvider(rc.rnibWriterProvider)
        handler, err := requestHandlerProvider.GetHandler(rc.Logger, messageTypeParam)
 
@@ -138,7 +145,7 @@ func (rc NodebController) HandleRequest(writer http.ResponseWriter, request *htt
        printHandlingRequestElapsedTimeInMs(rc.Logger, startTime)
 }
 
-func (rc NodebController) GetNodebIdList(writer http.ResponseWriter, request *http.Request, params httprouter.Params) {
+func (rc NodebController) GetNodebIdList (writer http.ResponseWriter, request *http.Request) {
        startTime := time.Now()
        rnibReaderService := services.NewRnibReaderService(rc.rnibReaderProvider)
        nodebIdList, rnibError := rnibReaderService.GetNodebIdList()
@@ -150,7 +157,7 @@ func (rc NodebController) GetNodebIdList(writer http.ResponseWriter, request *ht
                return;
        }
 
-       pmList := utils.ConvertNodebIdListToProtoMessageList(*nodebIdList)
+       pmList := utils.ConvertNodebIdListToProtoMessageList(nodebIdList)
        result, err := utils.MarshalProtoMessageListToJsonArray(pmList)
 
        if err != nil {
@@ -164,9 +171,10 @@ func (rc NodebController) GetNodebIdList(writer http.ResponseWriter, request *ht
        writer.Write([]byte(result))
 }
 
-func (rc NodebController) GetNodeb(writer http.ResponseWriter, request *http.Request, params httprouter.Params) {
+func (rc NodebController) GetNodeb(writer http.ResponseWriter, request *http.Request) {
        startTime := time.Now()
-       ranName := params.ByName("ranName")
+       vars := mux.Vars(request)
+       ranName := vars["ranName"]
        // WAS: respondingNode, rnibError := reader.GetRNibReader().GetNodeb(ranName)
        rnibReaderService := services.NewRnibReaderService(rc.rnibReaderProvider);
        respondingNode, rnibError := rnibReaderService.GetNodeb(ranName)
@@ -191,7 +199,7 @@ func (rc NodebController) GetNodeb(writer http.ResponseWriter, request *http.Req
        writer.Write([]byte(result))
 }
 
-func (rc NodebController) HandleHealthCheckRequest(writer http.ResponseWriter, request *http.Request, params httprouter.Params) {
+func (rc NodebController) HandleHealthCheckRequest(writer http.ResponseWriter, request *http.Request) {
        //fmt.Println("[X-APP -> Client] #HandleHealthCheckRequest - http status: 200")
        writer.WriteHeader(http.StatusOK)
 }
@@ -241,13 +249,13 @@ func printHandlingRequestElapsedTimeInMs(logger *logger.Logger, startTime time.T
                float64(time.Since(startTime))/float64(time.Millisecond))
 }
 
-func rnibErrorToHttpError(rnibError common.IRNibError) (int, int, string) {
-       switch rnibError.GetCode() {
-       case common.RESOURCE_NOT_FOUND:
+func rnibErrorToHttpError(rnibError error) (int, int, string) {
+       switch rnibError.(type) {
+       case *common.ResourceNotFoundError:
                return http.StatusNotFound, notFoundErrorCode, notFoundErrorMessage
-       case common.INTERNAL_ERROR:
+       case *common.InternalError:
                return http.StatusInternalServerError, internalErrorCode, internalErrorMessage
-       case common.VALIDATION_ERROR:
+       case *common.ValidationError:
                return http.StatusBadRequest, validationErrorCode, validationFailedMessage
        default:
                return http.StatusInternalServerError, internalErrorCode, internalErrorMessage