diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/DefaultXmlCodec.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/DefaultXmlCodec.java
index dd78ab5..2cd6710 100644
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/DefaultXmlCodec.java
+++ b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/DefaultXmlCodec.java
@@ -84,7 +84,7 @@
             rootElement.add(Namespace.get(rootNode.getNamespace()));
         }
 
-        if (rootElement.getName().equals("config")) {
+        if ("config".equals(rootElement.getName())) {
             rootElement.add(new Namespace("nc", "urn:ietf:params:xml:ns:netconf:base:1.0"));
         }
 
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobUtils.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobUtils.java
index 54bb37f..76339b8 100644
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobUtils.java
+++ b/apps/yms/app/src/main/java/org/onosproject/yms/app/yob/YobUtils.java
@@ -134,7 +134,7 @@
                 break;
 
             case EMPTY:
-                if (leafValue == null || leafValue.equals("")) {
+                if (leafValue == null || "".equals(leafValue)) {
                     parentSetterMethod.invoke(parentBuilderObject, true);
                 } else {
                     log.info(E_INVALID_EMPTY_DATA);
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YdtBuilderFromYo.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YdtBuilderFromYo.java
index 4faa58b..76b1647 100644
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YdtBuilderFromYo.java
+++ b/apps/yms/app/src/main/java/org/onosproject/yms/app/ytb/YdtBuilderFromYo.java
@@ -800,7 +800,7 @@
                 }
                 break;
             }
-            if (!val.equals("")) {
+            if (!"".equals(val)) {
                 leafListVal.add(val);
             }
         }
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ych/DefaultYangCodecHandlerTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ych/DefaultYangCodecHandlerTest.java
index 500f180..802d0bd 100644
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/ych/DefaultYangCodecHandlerTest.java
+++ b/apps/yms/ut/src/test/java/org/onosproject/yms/app/ych/DefaultYangCodecHandlerTest.java
@@ -1251,8 +1251,7 @@
         Iterator<Object> iterator = objectList.iterator();
         while (iterator.hasNext()) {
             Object object = iterator.next();
-            if (object.getClass().getSimpleName()
-                    .equals("LogisticsManagerOpParam")) {
+            if ("LogisticsManagerOpParam".equals(object.getClass().getSimpleName())) {
                 LogisticsManagerOpParam logisticsManagerOpParam =
                         (LogisticsManagerOpParam) object;
                 assertEquals(AM_OBJ + "purchasing-spec: leaf value", "bcd",
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobListTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobListTest.java
index 4f30ca2..95ecb7d 100644
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobListTest.java
+++ b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobListTest.java
@@ -54,8 +54,7 @@
                 (YdtExtendedContext) childCtx, YdtTestUtils.
                         getSchemaRegistry());
         assertNotNull(yangObject);
-        assertTrue(yangObject.getClass().getSimpleName()
-                           .equals("RootlistOpParam"));
+        assertTrue("RootlistOpParam".equals(yangObject.getClass().getSimpleName()));
         try {
 
             Field field =
@@ -99,8 +98,7 @@
                 (YdtExtendedContext) ydtContext1, YdtTestUtils
                         .getSchemaRegistry());
         assertNotNull(yangObject);
-        assertTrue(yangObject.getClass().getSimpleName()
-                           .equals("RootlistOpParam"));
+        assertTrue("RootlistOpParam".equals(yangObject.getClass().getSimpleName()));
         try {
 
             Field field = yangObject.getClass()
diff --git a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobLogisticsManagerTest.java b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobLogisticsManagerTest.java
index 8d3b5e3..30b889d 100644
--- a/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobLogisticsManagerTest.java
+++ b/apps/yms/ut/src/test/java/org/onosproject/yms/app/yob/YobLogisticsManagerTest.java
@@ -48,7 +48,7 @@
                     (YdtExtendedContext) childCtx, YdtTestUtils
                             .getSchemaRegistry());
             Class<?> aClass = yangObject.getClass();
-            if (aClass.getSimpleName().equals("CustomssupervisorOpParam")) {
+            if ("CustomssupervisorOpParam".equals(aClass.getSimpleName())) {
                 try {
                     Field field = aClass.getDeclaredField("supervisor");
                     Field onosYangNodeOperationType = aClass
@@ -67,8 +67,7 @@
                 }
             }
 
-            if (aClass.getSimpleName().equals(
-                    "MerchandisersupervisorOpParam")) {
+            if ("MerchandisersupervisorOpParam".equals(aClass.getSimpleName())) {
                 try {
                     Field field = aClass.getDeclaredField("supervisor");
                     field.setAccessible(true);
@@ -82,7 +81,7 @@
                 }
             }
 
-            if (aClass.getSimpleName().equals("WarehousesupervisorOpParam")) {
+            if ("WarehousesupervisorOpParam".equals(aClass.getSimpleName())) {
                 try {
                     Field field = aClass.getDeclaredField("supervisor");
                     field.setAccessible(true);
