jackson, HTTP codes and JSON responses, xICIC/RRMConfig fix
diff --git a/src/main/java/org.onosproject.xran/entities/RnibCell.java b/src/main/java/org.onosproject.xran/entities/RnibCell.java
index e56b6b1..dae002c 100644
--- a/src/main/java/org.onosproject.xran/entities/RnibCell.java
+++ b/src/main/java/org.onosproject.xran/entities/RnibCell.java
@@ -16,6 +16,10 @@
 
 package org.onosproject.xran.entities;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
 import com.fasterxml.jackson.databind.JsonNode;
 import org.onosproject.net.DeviceId;
 import org.onosproject.xran.codecs.api.ECGI;
@@ -24,9 +28,9 @@
 import org.onosproject.xran.codecs.pdu.L2MeasConfig;
 import org.onosproject.xran.codecs.pdu.RRMConfig;
 import org.onosproject.xran.codecs.pdu.SchedMeasReportPerCell;
-import org.openmuc.jasn1.ber.BerByteArrayOutputStream;
-import org.openmuc.jasn1.ber.types.BerBitString;
-import org.openmuc.jasn1.ber.types.BerInteger;
+import org.onosproject.xran.codecs.ber.BerByteArrayOutputStream;
+import org.onosproject.xran.codecs.ber.types.BerBitString;
+import org.onosproject.xran.codecs.ber.types.BerInteger;
 
 import javax.xml.bind.DatatypeConverter;
 import java.io.ByteArrayInputStream;
@@ -41,16 +45,34 @@
 /**
  * Created by dimitris on 7/22/17.
  */
+
+@JsonPropertyOrder({
+        "ECGI",
+        "Configuration",
+        "PRB-Usage",
+        "QCI",
+        "RRMConfiguration",
+        "MeasurementConfiguration"
+})
+@JsonIgnoreProperties(ignoreUnknown = true)
 public class RnibCell {
+    @JsonIgnore
     private static final String SCHEME = "xran";
 
+    @JsonProperty("ECGI")
     private ECGI ecgi;
+    @JsonProperty("Configuration")
     private CellConfigReport conf;
+    @JsonProperty("PRB-Usage")
     private PrbUsageContainer prbUsage;
+    @JsonProperty("QCI")
     private SchedMeasReportPerCell.QciVals qci;
+    @JsonProperty("RRMConfiguration")
     private RRMConfig rrmConfig;
+    @JsonProperty("MeasurementConfiguration")
     private L2MeasConfig measConfig;
 
+    @JsonIgnore
     private String version;
 
     public RnibCell() {
@@ -95,30 +117,37 @@
         this.version = version;
     }
 
+    @JsonProperty("RRMConfiguration")
     public RRMConfig getRrmConfig() {
         return rrmConfig;
     }
 
+    @JsonProperty("RRMConfiguration")
     public void setRrmConfig(RRMConfig rrmConfig) {
         this.rrmConfig = rrmConfig;
     }
 
+    @JsonProperty("PRB-Usage")
     public PrbUsageContainer getPrbUsage() {
         return prbUsage;
     }
 
+    @JsonProperty("PRB-Usage")
     public void setPrbUsage(PrbUsageContainer prbUsage) {
         this.prbUsage = prbUsage;
     }
 
+    @JsonProperty("ECGI")
     public ECGI getEcgi() {
         return ecgi;
     }
 
+    @JsonProperty("ECGI")
     public void setEcgi(ECGI ecgi) {
         this.ecgi = ecgi;
     }
 
+    @JsonProperty("Configuration")
     public CellConfigReport getConf() {
         return conf;
     }
@@ -127,6 +156,7 @@
         return rrmConfig;
     }*/
 
+    @JsonProperty("Configuration")
     public void setConf(CellConfigReport conf) {
         this.conf = conf;
     }
@@ -136,8 +166,8 @@
         ueList.forEach(ue -> crnti.addCRNTI(ue.getRanId()));
 
         {
-            JsonNode start_prb_dl = rrmConfigNode.get("start_prb_dl");
-            if (start_prb_dl != null) {
+            JsonNode start_prb_dl = rrmConfigNode.path("start_prb_dl");
+            if (!start_prb_dl.isMissingNode()) {
                 RRMConfig.StartPrbDl startPrbDl = new RRMConfig.StartPrbDl();
                 if (start_prb_dl.isArray()) {
                     if (ueList.size() == start_prb_dl.size()) {
@@ -152,8 +182,8 @@
         }
 
         {
-            JsonNode end_prb_dl = rrmConfigNode.get("end_prb_dl");
-            if (end_prb_dl != null) {
+            JsonNode end_prb_dl = rrmConfigNode.path("end_prb_dl");
+            if (!end_prb_dl.isMissingNode()) {
                 RRMConfig.EndPrbDl endPrbDl = new RRMConfig.EndPrbDl();
                 if (end_prb_dl.isArray()) {
                     if (ueList.size() == end_prb_dl.size()) {
@@ -168,8 +198,8 @@
         }
 
         {
-            JsonNode start_prb_ul = rrmConfigNode.get("start_prb_ul");
-            if (start_prb_ul != null) {
+            JsonNode start_prb_ul = rrmConfigNode.path("start_prb_ul");
+            if (!start_prb_ul.isMissingNode()) {
                 RRMConfig.StartPrbUl startPrbUl = new RRMConfig.StartPrbUl();
                 if (start_prb_ul.isArray()) {
                     if (ueList.size() == start_prb_ul.size()) {
@@ -184,8 +214,8 @@
         }
 
         {
-            JsonNode end_prb_ul = rrmConfigNode.get("end_prb_ul");
-            if (end_prb_ul != null) {
+            JsonNode end_prb_ul = rrmConfigNode.path("end_prb_ul");
+            if (!end_prb_ul.isMissingNode()) {
                 RRMConfig.EndPrbUl endPrbUl = new RRMConfig.EndPrbUl();
                 if (end_prb_ul.isArray()) {
                     if (ueList.size() == end_prb_ul.size()) {
@@ -202,10 +232,12 @@
         rrmConfig.setCrnti(crnti);
     }
 
+    @JsonProperty("QCI")
     public SchedMeasReportPerCell.QciVals getQci() {
         return qci;
     }
 
+    @JsonProperty("QCI")
     public void setQci(SchedMeasReportPerCell.QciVals qci) {
         this.qci = qci;
     }
@@ -218,26 +250,27 @@
         this.prbUsage.secondary = secondary;
     }
 
+    @JsonProperty("MeasurementConfiguration")
     public L2MeasConfig getMeasConfig() {
         return measConfig;
     }
 
+    @JsonProperty("MeasurementConfiguration")
     public void setMeasConfig(L2MeasConfig measConfig) {
         this.measConfig = measConfig;
     }
 
     @Override
     public String toString() {
-        StringBuilder sb = new StringBuilder();
-        sb.append("{\n")
-                .append(ecgi != null ? "\"ecgi\":" + ecgi : "")
-                .append(conf != null ? ",\n\"config-report\":" + conf : "")
-                .append(prbUsage != null ? ",\n\"prb-usage\":" + prbUsage : "")
-                .append(qci != null ? ",\n\"qci-vals\":" + qci : "")
-                .append(rrmConfig != null ? ",\n\"rrm-config\":" + rrmConfig : "")
-                .append(measConfig != null ? ",\n\"l2-meas-config\":" + measConfig : "")
-                .append("\n}\n");
-        return sb.toString();
+        return "RnibCell{" +
+                "ecgi=" + ecgi +
+                ", conf=" + conf +
+                ", prbUsage=" + prbUsage +
+                ", qci=" + qci +
+                ", rrmConfig=" + rrmConfig +
+                ", measConfig=" + measConfig +
+                ", version='" + version + '\'' +
+                '}';
     }
 
     @Override
@@ -255,18 +288,37 @@
         return ecgi.hashCode();
     }
 
+    @JsonPropertyOrder({
+            "primary",
+            "secondary"
+    })
+    @JsonIgnoreProperties(ignoreUnknown = true)
     class PrbUsageContainer {
         PRBUsage primary;
         PRBUsage secondary;
 
+        public PRBUsage getPrimary() {
+            return primary;
+        }
+
+        public void setPrimary(PRBUsage primary) {
+            this.primary = primary;
+        }
+
+        public PRBUsage getSecondary() {
+            return secondary;
+        }
+
+        public void setSecondary(PRBUsage secondary) {
+            this.secondary = secondary;
+        }
+
         @Override
         public String toString() {
-            StringBuilder sb = new StringBuilder();
-            sb.append("{\n")
-                    .append(primary != null ? "\"primary\":" + primary : "")
-                    .append(secondary != null ? ",\n\"secondary\":" + secondary : "")
-                    .append("\n}\n");
-            return sb.toString();
+            return "PrbUsageContainer{" +
+                    "primary=" + primary +
+                    ", secondary=" + secondary +
+                    '}';
         }
     }
 }
diff --git a/src/main/java/org.onosproject.xran/entities/RnibLink.java b/src/main/java/org.onosproject.xran/entities/RnibLink.java
index 9b024b9..ade8f58 100644
--- a/src/main/java/org.onosproject.xran/entities/RnibLink.java
+++ b/src/main/java/org.onosproject.xran/entities/RnibLink.java
@@ -16,38 +16,58 @@
 
 package org.onosproject.xran.entities;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.google.common.collect.Lists;
 import org.onosproject.xran.codecs.api.*;
 import org.onosproject.xran.codecs.pdu.PDCPMeasReportPerUe;
 import org.onosproject.xran.codecs.pdu.RRMConfig;
 import org.onosproject.xran.identifiers.LinkId;
-import org.openmuc.jasn1.ber.types.BerBitString;
-import org.openmuc.jasn1.ber.types.BerInteger;
+import org.onosproject.xran.codecs.ber.types.BerInteger;
 
 import java.util.Arrays;
 import java.util.List;
 import java.util.Optional;
 import java.util.Timer;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
 
 /**
  * Created by dimitris on 7/22/17.
  */
+@JsonPropertyOrder({
+        "Link-ID",
+        "Type",
+        "RRMConfiguration",
+        "TrafficPercent",
+        "BearerParameters",
+        "Quality",
+        "PDCP-Throughput",
+        "PDCP-Packet-Delay",
+        "Resource-Usage"
+})
+@JsonIgnoreProperties(ignoreUnknown = true)
 public class RnibLink {
+    @JsonProperty("Link-ID")
     private LinkId linkId;
-    //    private String type;
+    @JsonProperty("RRMConfiguration")
     private RRMConfig rrmParameters;
-
+    @JsonProperty("TrafficPercent")
     private TrafficSplitPercentage trafficPercent;
+    @JsonProperty("BearerParameters")
     private ERABParams bearerParameters;
-
+    @JsonProperty("Quality")
     private LinkQuality quality;
+    @JsonProperty("PDCP-Throughput")
     private PDCPThroughput pdcpThroughput;
+    @JsonProperty("PDCP-Packet-Delay")
     private PDCPPacketDelay pdcpPackDelay;
+    @JsonProperty("Resource-Usage")
     private ResourceUsage resourceUsage;
+    @JsonProperty("Type")
     private Type type;
+    @JsonIgnore
     private Timer timer;
 
     public RnibLink(RnibCell cell, RnibUe ue) {
@@ -83,10 +103,12 @@
         this.timer = timer;
     }
 
+    @JsonProperty("Link-ID")
     public LinkId getLinkId() {
         return linkId;
     }
 
+    @JsonProperty("Link-ID")
     public void setLinkId(LinkId linkId) {
         this.linkId = linkId;
     }
@@ -96,42 +118,52 @@
         trafficPercent.setEcgi(cell.getEcgi());
     }
 
+    @JsonProperty("Type")
     public Type getType() {
         return type;
     }
 
+    @JsonProperty("Type")
     public void setType(Type type) {
         this.type = type;
     }
 
+    @JsonProperty("TrafficPercent")
     public TrafficSplitPercentage getTrafficPercent() {
         return trafficPercent;
     }
 
+    @JsonProperty("TrafficPercent")
     public void setTrafficPercent(TrafficSplitPercentage trafficPercent) {
         this.trafficPercent = trafficPercent;
     }
 
+    @JsonProperty("BearerParameters")
     public ERABParams getBearerParameters() {
         return bearerParameters;
     }
 
+    @JsonProperty("BearerParameters")
     public void setBearerParameters(ERABParams bearerParameters) {
         this.bearerParameters = bearerParameters;
     }
 
+    @JsonProperty("Quality")
     public LinkQuality getQuality() {
         return quality;
     }
 
+    @JsonProperty("Quality")
     public void setQuality(LinkQuality quality) {
         this.quality = quality;
     }
 
+    @JsonProperty("RRMConfiguration")
     public RRMConfig getRrmParameters() {
         return rrmParameters;
     }
 
+    @JsonProperty("RRMConfiguration")
     public void setRrmParameters(RRMConfig rrmParameters) {
         this.rrmParameters = rrmParameters;
     }
@@ -151,7 +183,7 @@
         }
 
         {
-            JsonNode end_prb_dl = rrmConfigNode.get("end_prb_dl");
+            JsonNode end_prb_dl = rrmConfigNode.path("end_prb_dl");
             if (!end_prb_dl.isMissingNode()) {
                 RRMConfig.EndPrbDl endPrbDl = new RRMConfig.EndPrbDl();
 
@@ -164,7 +196,7 @@
         }
 
         {
-            JsonNode start_prb_ul = rrmConfigNode.get("start_prb_ul");
+            JsonNode start_prb_ul = rrmConfigNode.path("start_prb_ul");
             if (!start_prb_ul.isMissingNode()) {
                 RRMConfig.StartPrbUl startPrbUl = new RRMConfig.StartPrbUl();
 
@@ -177,7 +209,7 @@
         }
 
         {
-            JsonNode end_prb_ul = rrmConfigNode.get("end_prb_ul");
+            JsonNode end_prb_ul = rrmConfigNode.path("end_prb_ul");
             if (!end_prb_ul.isMissingNode()) {
                 RRMConfig.EndPrbUl endPrbUl = new RRMConfig.EndPrbUl();
 
@@ -190,45 +222,50 @@
         }
     }
 
+    @JsonProperty("PDCP-Throughput")
     public PDCPThroughput getPdcpThroughput() {
         return pdcpThroughput;
     }
 
+    @JsonProperty("PDCP-Throughput")
     public void setPdcpThroughput(PDCPThroughput pdcpThroughput) {
         this.pdcpThroughput = pdcpThroughput;
     }
 
+    @JsonProperty("PDCP-Packet-Delay")
     public PDCPPacketDelay getPdcpPackDelay() {
         return pdcpPackDelay;
     }
 
+    @JsonProperty("PDCP-Packet-Delay")
     public void setPdcpPackDelay(PDCPPacketDelay pdcpPackDelay) {
         this.pdcpPackDelay = pdcpPackDelay;
     }
 
+    @JsonProperty("Resource-Usage")
     public ResourceUsage getResourceUsage() {
         return resourceUsage;
     }
 
+    @JsonProperty("Resource-Usage")
     public void setResourceUsage(ResourceUsage resourceUsage) {
         this.resourceUsage = resourceUsage;
     }
 
     @Override
     public String toString() {
-        StringBuilder sb = new StringBuilder();
-        sb.append("{\n")
-                .append(linkId != null ? "\"link-id\":" + linkId : "")
-                .append(type != null ? ",\n\"type\":" + type : "")
-                .append(rrmParameters != null ? ",\n\"rrm-params\":" + rrmParameters : "")
-                .append(trafficPercent != null ? ",\n\"traffic-percent\":" + trafficPercent : "")
-                .append(bearerParameters != null ? ",\n\"bearer-params\":" + bearerParameters : "")
-                .append(quality != null ? ",\n\"quality\":" + quality : "")
-                .append(pdcpThroughput != null ? ",\n\"pdcp-throughput\":" + pdcpThroughput : "")
-                .append(pdcpPackDelay != null ? ",\n\"pdcp-packet-delay\":" + pdcpPackDelay : "")
-                .append(resourceUsage != null ? ",\n\"resource-usage\":" + resourceUsage : "")
-                .append("\n}\n");
-        return sb.toString();
+        return "RnibLink{" +
+                "linkId=" + linkId +
+                ", rrmParameters=" + rrmParameters +
+                ", trafficPercent=" + trafficPercent +
+                ", bearerParameters=" + bearerParameters +
+                ", quality=" + quality +
+                ", pdcpThroughput=" + pdcpThroughput +
+                ", pdcpPackDelay=" + pdcpPackDelay +
+                ", resourceUsage=" + resourceUsage +
+                ", type=" + type +
+                ", timer=" + timer +
+                '}';
     }
 
     @Override
@@ -288,6 +325,11 @@
         }
     }
 
+    @JsonPropertyOrder({
+            "dl",
+            "ul"
+    })
+    @JsonIgnoreProperties(ignoreUnknown = true)
     public class PDCPThroughput {
         private PDCPMeasReportPerUe.ThroughputDl dl;
         private PDCPMeasReportPerUe.ThroughputUl ul;
@@ -310,15 +352,18 @@
 
         @Override
         public String toString() {
-            StringBuilder sb = new StringBuilder();
-            sb.append("{\n")
-                    .append(dl != null ? "\"dl\":" + dl : "")
-                    .append(ul != null ? ",\n\"ul\":" + ul : "")
-                    .append("\n}\n");
-            return sb.toString();
+            return "PDCPThroughput{" +
+                    "dl=" + dl +
+                    ", ul=" + ul +
+                    '}';
         }
     }
 
+    @JsonPropertyOrder({
+            "dl",
+            "ul"
+    })
+    @JsonIgnoreProperties(ignoreUnknown = true)
     public class PDCPPacketDelay {
         PDCPMeasReportPerUe.PktDelayDl dl;
         PDCPMeasReportPerUe.PktDelayUl ul;
@@ -341,15 +386,18 @@
 
         @Override
         public String toString() {
-            StringBuilder sb = new StringBuilder();
-            sb.append("{\n")
-                    .append(dl != null ? "\"dl\":" + dl : "")
-                    .append(ul != null ? ",\n\"ul\":" + ul : "")
-                    .append("\n}\n");
-            return sb.toString();
+            return "PDCPPacketDelay{" +
+                    "dl=" + dl +
+                    ", ul=" + ul +
+                    '}';
         }
     }
 
+    @JsonPropertyOrder({
+            "dl",
+            "ul"
+    })
+    @JsonIgnoreProperties(ignoreUnknown = true)
     public class ResourceUsage {
         PRBUsage.PrbUsageDl dl;
         PRBUsage.PrbUsageUl ul;
@@ -372,23 +420,31 @@
 
         @Override
         public String toString() {
-            StringBuilder sb = new StringBuilder();
-            sb.append("{\n")
-                    .append(dl != null ? "\"dl\":" + dl : "")
-                    .append(ul != null ? ",\n\"ul\":" + ul : "")
-                    .append("\n}\n");
-            return sb.toString();
+            return "ResourceUsage{" +
+                    "dl=" + dl +
+                    ", ul=" + ul +
+                    '}';
         }
     }
 
+    @JsonPropertyOrder({
+            "rsrp",
+            "rsrq",
+            "cqiHist",
+            "cqiMode",
+            "cqiMean",
+            "mcsDl",
+            "mcsUl"
+    })
+    @JsonIgnoreProperties(ignoreUnknown = true)
     public class LinkQuality {
         double rsrp;
         double rsrq;
         RadioRepPerServCell.CqiHist cqiHist;
         double cqiMode;
         double cqiMean;
-        SchedMeasRepPerServCell.McsDl mcs_dl;
-        SchedMeasRepPerServCell.McsUl mcs_ul;
+        SchedMeasRepPerServCell.McsDl mcsDl;
+        SchedMeasRepPerServCell.McsUl mcsUl;
 
         public double getRsrp() {
             return rsrp;
@@ -430,34 +486,33 @@
             this.cqiMean = cqiMean;
         }
 
-        public SchedMeasRepPerServCell.McsDl getMcs_dl() {
-            return mcs_dl;
+        public SchedMeasRepPerServCell.McsDl getMcsDl() {
+            return mcsDl;
         }
 
-        public void setMcs_dl(SchedMeasRepPerServCell.McsDl mcs_dl) {
-            this.mcs_dl = mcs_dl;
+        public void setMcsDl(SchedMeasRepPerServCell.McsDl mcsDl) {
+            this.mcsDl = mcsDl;
         }
 
-        public SchedMeasRepPerServCell.McsUl getMcs_ul() {
-            return mcs_ul;
+        public SchedMeasRepPerServCell.McsUl getMcsUl() {
+            return mcsUl;
         }
 
-        public void setMcs_ul(SchedMeasRepPerServCell.McsUl mcs_ul) {
-            this.mcs_ul = mcs_ul;
+        public void setMcsUl(SchedMeasRepPerServCell.McsUl mcsUl) {
+            this.mcsUl = mcsUl;
         }
 
         @Override
         public String toString() {
-            StringBuilder sb = new StringBuilder();
-            sb.append("{\n")
-                    .append("\"rsrp\":" + rsrp)
-                    .append(",\n\"rsrq\":" + rsrq)
-                    .append(",\n\"cqiMode\":" + cqiMode)
-                    .append(",\n\"cqiMean\":" + cqiMean)
-                    .append(mcs_dl != null ? ",\n\"mcs-dl\":" + mcs_dl : "")
-                    .append(mcs_ul != null ? ",\n\"mcs-ul\":" + mcs_ul : "")
-                    .append("\n}\n");
-            return sb.toString();
+            return "LinkQuality{" +
+                    "rsrp=" + rsrp +
+                    ", rsrq=" + rsrq +
+                    ", cqiHist=" + cqiHist +
+                    ", cqiMode=" + cqiMode +
+                    ", cqiMean=" + cqiMean +
+                    ", mcsDl=" + mcsDl +
+                    ", mcsUl=" + mcsUl +
+                    '}';
         }
     }
 }
diff --git a/src/main/java/org.onosproject.xran/entities/RnibSlice.java b/src/main/java/org.onosproject.xran/entities/RnibSlice.java
index 349e8ee..92e1d98 100644
--- a/src/main/java/org.onosproject.xran/entities/RnibSlice.java
+++ b/src/main/java/org.onosproject.xran/entities/RnibSlice.java
@@ -16,12 +16,15 @@
 
 package org.onosproject.xran.entities;
 
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+
 import java.util.Map;
 import java.util.Set;
 
 /**
  * Created by dimitris on 7/22/17.
  */
+@JsonIgnoreProperties(ignoreUnknown = true)
 public class RnibSlice {
     private long sliceId;
     private Set<RnibLink> links;
diff --git a/src/main/java/org.onosproject.xran/entities/RnibUe.java b/src/main/java/org.onosproject.xran/entities/RnibUe.java
index b58e77e..fb5bb71 100644
--- a/src/main/java/org.onosproject.xran/entities/RnibUe.java
+++ b/src/main/java/org.onosproject.xran/entities/RnibUe.java
@@ -16,6 +16,10 @@
 
 package org.onosproject.xran.entities;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
 import org.onlab.packet.MacAddress;
 import org.onosproject.net.HostId;
 import org.onosproject.xran.codecs.api.CRNTI;
@@ -37,20 +41,38 @@
 /**
  * Created by dimitris on 7/22/17.
  */
+@JsonPropertyOrder({
+        "IMSI",
+        "ENBUES1APID",
+        "MMEUES1APID",
+        "CRNTI",
+        "State",
+        "Capability",
+        "MeasurementConfiguration"
+})
+@JsonIgnoreProperties(ignoreUnknown = true)
 public class RnibUe {
-
+    @JsonIgnore
     private static final String SCHEME = "xran";
-
+    @JsonIgnore
     private static final Logger log =
             LoggerFactory.getLogger(RnibUe.class);
 
+    @JsonProperty("IMSI")
     private String imsi;
+    @JsonProperty("ENBUES1APID")
     private ENBUES1APID enbS1apId;
+    @JsonProperty("MMEUES1APID")
     private MMEUES1APID mmeS1apId;
+    @JsonProperty("CRNTI")
     private CRNTI ranId;
+    @JsonProperty("State")
     private State state;
+    @JsonProperty("Capability")
     private UECapabilityInfo capability;
+    @JsonProperty("MeasurementConfiguration")
     private RXSigMeasConfig measConfig;
+    @JsonIgnore
     private Timer timer;
 
     public RnibUe() {
@@ -77,48 +99,59 @@
         return new MMEUES1APID(l);
     }
 
+    @JsonIgnore
     public Timer getTimer() {
         return timer;
     }
 
+    @JsonIgnore
     public void setTimer(Timer timer) {
         this.timer.cancel();
         this.timer.purge();
         this.timer = timer;
     }
 
+    @JsonProperty("MMEUES1APID")
     public MMEUES1APID getMmeS1apId() {
         return mmeS1apId;
     }
 
+    @JsonProperty("MMEUES1APID")
     public void setMmeS1apId(MMEUES1APID mmeS1apId) {
         this.mmeS1apId = mmeS1apId;
     }
 
+    @JsonProperty("ENBUES1APID")
     public ENBUES1APID getEnbS1apId() {
         return enbS1apId;
     }
 
+    @JsonProperty("ENBUES1APID")
     public void setEnbS1apId(ENBUES1APID enbS1apId) {
         this.enbS1apId = enbS1apId;
     }
 
+    @JsonProperty("CRNTI")
     public CRNTI getRanId() {
         return ranId;
     }
 
+    @JsonProperty("CRNTI")
     public void setRanId(CRNTI ranId) {
         this.ranId = ranId;
     }
 
+    @JsonProperty("IMSI")
     public String getImsi() {
         return imsi;
     }
 
+    @JsonProperty("IMSI")
     public void setImsi(String imsi) {
         this.imsi = imsi;
     }
 
+    @JsonIgnore
     public HostId getHostId() {
         try {
             String text = this.mmeS1apId.value.toString(16),
@@ -157,44 +190,48 @@
         return null;
     }
 
-
+    @JsonProperty("MeasurementConfiguration")
     public RXSigMeasConfig getMeasConfig() {
         return measConfig;
     }
 
+    @JsonProperty("MeasurementConfiguration")
     public void setMeasConfig(RXSigMeasConfig measConfig) {
         this.measConfig = measConfig;
     }
 
+    @JsonProperty("Capability")
     public UECapabilityInfo getCapability() {
         return capability;
     }
 
+    @JsonProperty("Capability")
     public void setCapability(UECapabilityInfo capability) {
         this.capability = capability;
     }
 
+    @JsonProperty("State")
     public State getState() {
         return state;
     }
 
+    @JsonProperty("State")
     public void setState(State state) {
         this.state = state;
     }
 
     @Override
     public String toString() {
-        StringBuilder sb = new StringBuilder();
-        sb.append("{\n")
-                .append(mmeS1apId != null ? "\n\"mme-s1-ap-id\":" + mmeS1apId : "")
-                .append(enbS1apId != null ? ",\n\"enb-s1-ap-id\":" + enbS1apId : "")
-                .append(imsi != null ? ",\"imsi\":" + imsi : "")
-                .append(ranId != null ? ",\n\"ran-id\":" + ranId : "")
-                .append(state != null ? ",\n\"state\":" + state : "")
-                .append(capability != null ? ",\n\"capability\":" + capability : "")
-                .append(measConfig != null ? ",\n\"meas-config\":" + measConfig : "")
-                .append("\n}\n");
-        return sb.toString();
+        return "RnibUe{" +
+                "imsi='" + imsi + '\'' +
+                ", enbS1apId=" + enbS1apId +
+                ", mmeS1apId=" + mmeS1apId +
+                ", ranId=" + ranId +
+                ", state=" + state +
+                ", capability=" + capability +
+                ", measConfig=" + measConfig +
+                ", timer=" + timer +
+                '}';
     }
 
     @Override