Cleaning up unused code in Microsemi driver

Change-Id: If7e9790d9141324dff084e41d040ba0132141de8
diff --git a/drivers/microsemi/src/main/java/org/onosproject/drivers/microsemi/yang/impl/AbstractYangServiceImpl.java b/drivers/microsemi/src/main/java/org/onosproject/drivers/microsemi/yang/impl/AbstractYangServiceImpl.java
index 27c1e86..074aad4 100644
--- a/drivers/microsemi/src/main/java/org/onosproject/drivers/microsemi/yang/impl/AbstractYangServiceImpl.java
+++ b/drivers/microsemi/src/main/java/org/onosproject/drivers/microsemi/yang/impl/AbstractYangServiceImpl.java
@@ -76,15 +76,12 @@
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
     protected YangModelRegistry yangModelRegistry;
 
-//    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
-//    protected SchemaContextProvider schemaContextProvider;
-
     protected ApplicationId appId;
 
     // xSer is not a service and is a class variable. Can be lost on deactivate.
     // Must be recreated on activate
-    protected XmlSerializer xSer;
-    protected YangSerializerContext yCtx;
+    protected XmlSerializer xSer = null;
+    protected YangSerializerContext yCtx = null;
 
     protected static final Pattern REGEX_XML_HEADER =
             Pattern.compile("(<\\?xml).*(\\?>)", Pattern.DOTALL);
@@ -107,11 +104,8 @@
     @Activate
     public void activate() {
         Set<YangSerializer> yangSer = ((YangSerializerRegistry) yangModelRegistry).getSerializers();
-        yangSer.forEach(ser -> {
-            if (ser instanceof XmlSerializer) {
-                xSer = (XmlSerializer) ser;
-            }
-        });
+        xSer = (XmlSerializer) yangSer.stream()
+                .filter(ser -> (ser instanceof XmlSerializer)).findFirst().get();
         SchemaContext context = ((SchemaContextProvider) yangModelRegistry)
                 .getSchemaContext(ResourceId.builder().addBranchPointSchema("/", null).build());
 
diff --git a/drivers/microsemi/src/main/java/org/onosproject/drivers/microsemi/yang/impl/IetfSystemManager.java b/drivers/microsemi/src/main/java/org/onosproject/drivers/microsemi/yang/impl/IetfSystemManager.java
index 0e8f4bd..9a8b471 100644
--- a/drivers/microsemi/src/main/java/org/onosproject/drivers/microsemi/yang/impl/IetfSystemManager.java
+++ b/drivers/microsemi/src/main/java/org/onosproject/drivers/microsemi/yang/impl/IetfSystemManager.java
@@ -29,14 +29,8 @@
 import org.onosproject.netconf.NetconfSession;
 import org.onosproject.yang.gen.v1.ietfsystem.rev20140806.ietfsystem.DefaultSystem;
 import org.onosproject.yang.gen.v1.ietfsystem.rev20140806.ietfsystem.DefaultSystemState;
-import org.onosproject.yang.gen.v1.ietfsystemmicrosemi.rev20160505.ietfsystemmicrosemi.doupgradeandreboot.DoUpgradeAndRebootInput;
-import org.onosproject.yang.gen.v1.ietfsystemmicrosemi.rev20160505.ietfsystemmicrosemi.doupgradeandreboot.DoUpgradeAndRebootOutput;
-import org.onosproject.yang.gen.v1.ietfsystemmicrosemi.rev20160505.ietfsystemmicrosemi.pullupdatetarfromtftp.PullUpdateTarFromTftpInput;
-import org.onosproject.yang.gen.v1.ietfsystemmicrosemi.rev20160505.ietfsystemmicrosemi.readfromsyslog.ReadFromSyslogInput;
-import org.onosproject.yang.gen.v1.ietfsystemmicrosemi.rev20160505.ietfsystemmicrosemi.readfromsyslog.ReadFromSyslogOutput;
 import org.onosproject.yang.gen.v1.ietfsystem.rev20140806.IetfSystem;
 import org.onosproject.yang.gen.v1.ietfsystem.rev20140806.IetfSystemOpParam;
-import org.onosproject.yang.gen.v1.ietfsystem.rev20140806.ietfsystem.systemrestart.SystemRestartInput;
 import org.onosproject.yang.model.DefaultModelObjectData;
 import org.onosproject.yang.model.ModelConverter;
 import org.onosproject.yang.model.ModelObject;
@@ -146,34 +140,10 @@
     }
 
     @Override
-    public void systemRestart(SystemRestartInput inputVar, NetconfSession session) {
-        throw new UnsupportedOperationException("Not yet implemented");
-    }
-
-    @Override
     public void systemShutdown(NetconfSession session) {
         throw new UnsupportedOperationException("Not yet implemented");
     }
 
-    @Override
-    public DoUpgradeAndRebootOutput doUpgradeAndReboot(DoUpgradeAndRebootInput inputVar, NetconfSession session)
-            throws NetconfException {
-        throw new UnsupportedOperationException("Not yet implemented");
-    }
-
-    @Override
-    public void pullUpdateTarFromTftp(PullUpdateTarFromTftpInput inputVar, NetconfSession session)
-            throws NetconfException {
-        throw new UnsupportedOperationException("Not yet implemented");
-    }
-
-    @Override
-    public ReadFromSyslogOutput readFromSyslog(ReadFromSyslogInput inputVar, NetconfSession session)
-            throws NetconfException {
-        throw new UnsupportedOperationException("Not yet implemented");
-    }
-
-
     /**
      * Builds a request crafted to get the configuration required to create
      * details descriptions for the device.
@@ -186,9 +156,10 @@
         rpc.append("xmlns:sysms=\"http://www.microsemi.com/microsemi-edge-assure/msea-system\">");
         rpc.append("<platform>");
         rpc.append("<os-release/>");
-        rpc.append("<sysms:device-identification>");
-        rpc.append("<sysms:serial-number/>");
-        rpc.append("</sysms:device-identification>");
+//FIXME: This has been commented out until the augment of common models issue with onos-yang-tools is sorted
+//        rpc.append("<sysms:device-identification>");
+//        rpc.append("<sysms:serial-number/>");
+//        rpc.append("</sysms:device-identification>");
         rpc.append("</platform>");
         rpc.append("<clock>");
         rpc.append("<current-datetime/>");
diff --git a/drivers/microsemi/src/main/java/org/onosproject/drivers/microsemi/yang/impl/MseaCfmManager.java b/drivers/microsemi/src/main/java/org/onosproject/drivers/microsemi/yang/impl/MseaCfmManager.java
index 43be669..695dfcb 100644
--- a/drivers/microsemi/src/main/java/org/onosproject/drivers/microsemi/yang/impl/MseaCfmManager.java
+++ b/drivers/microsemi/src/main/java/org/onosproject/drivers/microsemi/yang/impl/MseaCfmManager.java
@@ -35,7 +35,6 @@
 import org.onosproject.yang.gen.v1.mseacfm.rev20160229.mseacfm.abortloopback.AbortLoopbackInput;
 import org.onosproject.yang.gen.v1.mseacfm.rev20160229.mseacfm.mefcfm.MaintenanceDomain;
 import org.onosproject.yang.gen.v1.mseacfm.rev20160229.mseacfm.mefcfm.maintenancedomain.MaintenanceAssociation;
-import org.onosproject.yang.gen.v1.mseacfm.rev20160229.mseacfm.mefcfm.maintenancedomain.maintenanceassociation.CcmIntervalEnum;
 import org.onosproject.yang.gen.v1.mseacfm.rev20160229.mseacfm.mefcfm.maintenancedomain.maintenanceassociation.MaintenanceAssociationEndPoint;
 import org.onosproject.yang.gen.v1.mseacfm.rev20160229.mseacfm.transmitlinktrace.TransmitLinktraceInput;
 import org.onosproject.yang.gen.v1.mseacfm.rev20160229.mseacfm.transmitlinktrace.TransmitLinktraceOutput;
@@ -43,7 +42,6 @@
 import org.onosproject.yang.gen.v1.mseasoampm.rev20160229.mseasoampm.mefcfm.maintenancedomain.maintenanceassociation.maintenanceassociationendpoint.AugmentedMseaCfmMaintenanceAssociationEndPoint;
 import org.onosproject.yang.gen.v1.mseasoampm.rev20160229.mseasoampm.mefcfm.maintenancedomain.maintenanceassociation.maintenanceassociationendpoint.DefaultAugmentedMseaCfmMaintenanceAssociationEndPoint;
 import org.onosproject.yang.gen.v1.mseasoampm.rev20160229.mseasoampm.mefcfm.maintenancedomain.maintenanceassociation.maintenanceassociationendpoint.augmentedmseacfmmaintenanceassociationendpoint.delaymeasurements.DelayMeasurement;
-import org.onosproject.yang.gen.v1.mseasoampm.rev20160229.mseasoampm.mefcfm.maintenancedomain.maintenanceassociation.maintenanceassociationendpoint.augmentedmseacfmmaintenanceassociationendpoint.lossmeasurements.lossmeasurement.MessagePeriodEnum;
 import org.onosproject.yang.model.DefaultModelObjectData;
 import org.onosproject.yang.model.ModelConverter;
 import org.onosproject.yang.model.ModelObject;
@@ -56,6 +54,7 @@
 import org.onosproject.yang.runtime.DefaultCompositeStream;
 
 import java.io.ByteArrayInputStream;
+import java.util.regex.Pattern;
 
 /**
  * Implementation of the MseaCfmServiceNetconf YANG model service.
@@ -69,6 +68,16 @@
 
     public static final String MSEA_CFM_NS = "http://www.microsemi.com/microsemi-edge-assure/msea-cfm";
     public static final String MSEA_CFM_PM_NS = "http://www.microsemi.com/microsemi-edge-assure/msea-soam-pm";
+
+    //FIXME Remove when the issue with Null bits on onos-yang-tools is sorted
+    @Deprecated
+    protected static final Pattern REGEX_EMPTY_ACTIVE_DEFECTS =
+            Pattern.compile("(<active-defects)[ ]?(/>)", Pattern.DOTALL);
+    //FIXME Remove when the issue with Null bits on onos-yang-tools is sorted
+    @Deprecated
+    protected static final Pattern REGEX_EMPTY_LAST_DEFECT_SENT =
+            Pattern.compile("(<msea-soam-fm:last-defect-sent)[ ]?(/>)", Pattern.DOTALL);
+
     @Activate
     public void activate() {
         super.activate();
@@ -96,7 +105,6 @@
 
         String xmlResult = session.get(xmlQueryStr, null);
         xmlResult = removeRpcReplyData(xmlResult);
-        xmlResult = removePrefixedMessagePeriod(xmlResult);
         DefaultCompositeStream resultDcs = new DefaultCompositeStream(
                 null, new ByteArrayInputStream(xmlResult.getBytes()));
         CompositeData compositeData = xSer.decode(resultDcs, yCtx);
@@ -127,7 +135,7 @@
 
         String xmlResult = session.get(xmlQueryStr, null);
         xmlResult = removeRpcReplyData(xmlResult);
-        xmlResult = removePrefixedCcmInterval(xmlResult);
+        xmlResult = removeEmptyActiveDefects(xmlResult);
         DefaultCompositeStream resultDcs = new DefaultCompositeStream(
                 null, new ByteArrayInputStream(xmlResult.getBytes()));
         CompositeData compositeData = xSer.decode(resultDcs, yCtx);
@@ -155,7 +163,6 @@
 
         String xmlResult = session.get(xmlQueryStr, null);
         xmlResult = removeRpcReplyData(xmlResult);
-        xmlResult = removePrefixedMessagePeriod(xmlResult);
         DefaultCompositeStream resultDcs = new DefaultCompositeStream(
                 null, new ByteArrayInputStream(xmlResult.getBytes()));
         CompositeData compositeData = xSer.decode(resultDcs, yCtx);
@@ -287,6 +294,16 @@
         throw new UnsupportedOperationException("Not yet implemented");
     }
 
+    //FIXME Remove when the fix for null bits with onos-yang-tools
+    // https://gerrit.onosproject.org/#/c/15777/ is available
+    @Deprecated
+    private static String removeEmptyActiveDefects(String rpcReplyXml) throws NetconfException {
+        rpcReplyXml = REGEX_EMPTY_ACTIVE_DEFECTS.matcher(rpcReplyXml).replaceFirst("");
+        rpcReplyXml = REGEX_EMPTY_LAST_DEFECT_SENT.matcher(rpcReplyXml).replaceFirst("");
+
+        return rpcReplyXml;
+    }
+
     @Deprecated //Replace this with a ModelObject defintion
     private String buildMepEssentialsQueryString(MdId mdId, MaIdShort maId,
             MepId mepId) {
@@ -435,29 +452,4 @@
 
         return rpc.toString();
     }
-
-    private static final String removePrefixedMessagePeriod(String xmlResult) {
-        xmlResult = xmlResult.replace("message-period>3ms</",
-                "message-period>" + MessagePeriodEnum.YANGAUTOPREFIX3MS.toString() + "</");
-        xmlResult = xmlResult.replace("message-period>10ms</",
-                "message-period>" + MessagePeriodEnum.YANGAUTOPREFIX10MS.toString() + "</");
-        xmlResult = xmlResult.replace("message-period>100ms</",
-                "message-period>" + MessagePeriodEnum.YANGAUTOPREFIX100MS.toString() + "</");
-        xmlResult = xmlResult.replace("message-period>1000ms</",
-                "message-period>" + MessagePeriodEnum.YANGAUTOPREFIX1000MS.toString() + "</");
-        return xmlResult;
-    }
-
-    private static final String removePrefixedCcmInterval(String xmlResult) {
-        xmlResult = xmlResult.replace("ccm-interval>3.3ms</",
-                "ccm-interval>" + CcmIntervalEnum.YANGAUTOPREFIX3_3MS.toString() + "</");
-        xmlResult = xmlResult.replace("ccm-interval>10ms</",
-                "ccm-interval>" + CcmIntervalEnum.YANGAUTOPREFIX10MS.toString() + "</");
-        xmlResult = xmlResult.replace("ccm-interval>100ms</",
-                "ccm-interval>" + CcmIntervalEnum.YANGAUTOPREFIX100MS.toString() + "</");
-        xmlResult = xmlResult.replace("ccm-interval>1s</",
-                "ccm-interval>" + CcmIntervalEnum.YANGAUTOPREFIX1S.toString() + "</");
-        return xmlResult;
-    }
-
 }