Merge "Fixed path for generated Java files."
diff --git a/compiler/base/datamodel/src/main/java/org/onosproject/yang/compiler/datamodel/YangBits.java b/compiler/base/datamodel/src/main/java/org/onosproject/yang/compiler/datamodel/YangBits.java
index 48131c7..3cfff69 100644
--- a/compiler/base/datamodel/src/main/java/org/onosproject/yang/compiler/datamodel/YangBits.java
+++ b/compiler/base/datamodel/src/main/java/org/onosproject/yang/compiler/datamodel/YangBits.java
@@ -225,17 +225,21 @@
     /**
      * Returns the object of YANG bits based on specific set of bit names.
      *
-     * @param bits set of bit names
+     * @param bits set of bit names. Treats null the same as empty string
      * @return Object of YANG bits
      */
     public YangBits fromString(String bits) {
+        if (bits == null || bits.isEmpty()) {
+            bitDataSet.clear();
+            return this;
+        }
         try {
             String[] bitNames = bits.trim().split(Pattern.quote(SPACE));
             setBitDataSet(bitNames);
             return this;
         } catch (Exception e) {
+            return null;
         }
-        return null;
     }
 
     /**
diff --git a/compiler/base/datamodel/src/test/java/org/onosproject/yang/compiler/datamodel/DataValidator.java b/compiler/base/datamodel/src/test/java/org/onosproject/yang/compiler/datamodel/DataValidatorTest.java
similarity index 89%
rename from compiler/base/datamodel/src/test/java/org/onosproject/yang/compiler/datamodel/DataValidator.java
rename to compiler/base/datamodel/src/test/java/org/onosproject/yang/compiler/datamodel/DataValidatorTest.java
index 8603e85..1886542 100644
--- a/compiler/base/datamodel/src/test/java/org/onosproject/yang/compiler/datamodel/DataValidator.java
+++ b/compiler/base/datamodel/src/test/java/org/onosproject/yang/compiler/datamodel/DataValidatorTest.java
@@ -17,9 +17,11 @@
 
 import org.junit.Test;
 import org.onosproject.yang.compiler.datamodel.exceptions.DataModelException;
+import org.onosproject.yang.compiler.datamodel.utils.builtindatatype.DataTypeException;
 import org.onosproject.yang.compiler.datamodel.utils.builtindatatype.YangDataTypes;
 import org.onosproject.yang.compiler.datamodel.utils.builtindatatype.YangInt8;
 
+import static org.junit.Assert.fail;
 import static org.onosproject.yang.compiler.datamodel.CheckValidationTest.dataValidation;
 import static org.onosproject.yang.compiler.datamodel.CheckValidationTest.rangeCheck;
 import static org.onosproject.yang.compiler.datamodel.utils.builtindatatype.YangDataTypes.BINARY;
@@ -40,7 +42,7 @@
  * Unit tests for data type validations.Creates and validates different data
  * types against their data types covering different scenarios.
  */
-public class DataValidator {
+public class DataValidatorTest {
 
     /*
      * Creating nodes of type INT8 and testing the data validation.
@@ -174,6 +176,36 @@
     }
 
     /**
+     * Creating nodes of type BIT and testing valid and invalid values.
+     */
+    @Test
+    public void positiveBits() throws DataModelException {
+
+        YangType<YangBits> newNode = new YangType<>();
+        newNode.setDataType(BITS);
+        YangBits bitNode = new YangBits();
+        YangBit yb1 = new YangBit();
+        yb1.setBitName("test1");
+        bitNode.addBitInfo(yb1);
+        newNode.setDataTypeExtendedInfo(bitNode);
+        try {
+            newNode.isValidValue("test1");
+        } catch (DataModelException e) {
+            fail("'test1' is valid. Unexpected " + e.getMessage());
+        }
+        try {
+            newNode.isValidValue("test2");
+            fail("Expecting exception.");
+        } catch (DataTypeException e) {
+        }
+        try {
+            newNode.isValidValue(null);
+        } catch (DataModelException e) {
+            fail("null is valid. Unexpected " + e.getMessage());
+        }
+    }
+
+    /**
      * Creating nodes of type BIT and testing the data validation.
      */
     @Test