This is an automated email from the ASF dual-hosted git repository.

exceptionfactory pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git


The following commit(s) were added to refs/heads/main by this push:
     new 56d0061da4 NIFI-10764 Fixed handling BIT STRING in nifi-asn1-services
56d0061da4 is described below

commit 56d0061da482def0e5b908dcc1b38bfc8d21ad93
Author: Tamas Palfy <[email protected]>
AuthorDate: Fri Nov 4 19:36:01 2022 +0100

    NIFI-10764 Fixed handling BIT STRING in nifi-asn1-services
    
    Representing as a string of 1s and 0s (e.g. "010011000")
    
    This closes #6622
    
    Signed-off-by: David Handermann <[email protected]>
---
 .../jasn1/convert/converters/BerBitStringConverter.java   |   4 ++--
 .../java/org/apache/nifi/jasn1/ExampleDataGenerator.java  |   2 ++
 .../java/org/apache/nifi/jasn1/TestJASN1RecordReader.java |   1 +
 .../nifi/jasn1/TestJASN1RecordReaderWithComplexTypes.java |   9 +++++++--
 .../nifi/jasn1/TestJASN1RecordReaderWithSimpleTypes.java  |   4 ++--
 .../nifi-asn1-services/src/test/resources/example.asn     |   3 ++-
 .../src/test/resources/examples/basic-types.dat           | Bin 61 -> 65 bytes
 7 files changed, 16 insertions(+), 7 deletions(-)

diff --git 
a/nifi-nar-bundles/nifi-asn1-bundle/nifi-asn1-services/src/main/java/org/apache/nifi/jasn1/convert/converters/BerBitStringConverter.java
 
b/nifi-nar-bundles/nifi-asn1-bundle/nifi-asn1-services/src/main/java/org/apache/nifi/jasn1/convert/converters/BerBitStringConverter.java
index 63572f6c02..22d3245141 100644
--- 
a/nifi-nar-bundles/nifi-asn1-bundle/nifi-asn1-services/src/main/java/org/apache/nifi/jasn1/convert/converters/BerBitStringConverter.java
+++ 
b/nifi-nar-bundles/nifi-asn1-bundle/nifi-asn1-services/src/main/java/org/apache/nifi/jasn1/convert/converters/BerBitStringConverter.java
@@ -31,7 +31,7 @@ public class BerBitStringConverter implements 
JASN1TypeAndValueConverter {
 
     @Override
     public DataType convertType(Class<?> berType, JASN1Converter converter) {
-        return 
RecordFieldType.ARRAY.getArrayDataType(RecordFieldType.BOOLEAN.getDataType());
+        return RecordFieldType.STRING.getDataType();
     }
 
     @Override
@@ -43,6 +43,6 @@ public class BerBitStringConverter implements 
JASN1TypeAndValueConverter {
     public Object convertValue(BerType value, DataType dataType, 
JASN1Converter converter) {
         final BerBitString berValue = (BerBitString) value;
 
-        return berValue.getValueAsBooleans();
+        return berValue.toString();
     }
 }
diff --git 
a/nifi-nar-bundles/nifi-asn1-bundle/nifi-asn1-services/src/test/java/org/apache/nifi/jasn1/ExampleDataGenerator.java
 
b/nifi-nar-bundles/nifi-asn1-bundle/nifi-asn1-services/src/test/java/org/apache/nifi/jasn1/ExampleDataGenerator.java
index 878e821ccd..f73ad45ab4 100644
--- 
a/nifi-nar-bundles/nifi-asn1-bundle/nifi-asn1-services/src/test/java/org/apache/nifi/jasn1/ExampleDataGenerator.java
+++ 
b/nifi-nar-bundles/nifi-asn1-bundle/nifi-asn1-services/src/test/java/org/apache/nifi/jasn1/ExampleDataGenerator.java
@@ -17,6 +17,7 @@
 package org.apache.nifi.jasn1;
 
 import com.beanit.asn1bean.ber.ReverseByteArrayOutputStream;
+import com.beanit.asn1bean.ber.types.BerBitString;
 import com.beanit.asn1bean.ber.types.BerBoolean;
 import com.beanit.asn1bean.ber.types.BerInteger;
 import com.beanit.asn1bean.ber.types.BerOctetString;
@@ -62,6 +63,7 @@ public class ExampleDataGenerator {
             basicTypes.setI(new BerInteger(789));
             basicTypes.setOctStr(new BerOctetString(new byte[]{1, 2, 3, 4, 
5}));
             basicTypes.setUtf8Str(new BerUTF8String("Some UTF-8 String. 
こんにちは世界。"));
+            basicTypes.setBitStr(new BerBitString(new boolean[]{false, true, 
true, false, true, false, false, false}));
             final int encoded = basicTypes.encode(rev);
             out.write(rev.getArray(), 0, encoded);
             LOG.info("Generated {} bytes to {}", encoded, file);
diff --git 
a/nifi-nar-bundles/nifi-asn1-bundle/nifi-asn1-services/src/test/java/org/apache/nifi/jasn1/TestJASN1RecordReader.java
 
b/nifi-nar-bundles/nifi-asn1-bundle/nifi-asn1-services/src/test/java/org/apache/nifi/jasn1/TestJASN1RecordReader.java
index e40027c149..c1fb12c24d 100644
--- 
a/nifi-nar-bundles/nifi-asn1-bundle/nifi-asn1-services/src/test/java/org/apache/nifi/jasn1/TestJASN1RecordReader.java
+++ 
b/nifi-nar-bundles/nifi-asn1-bundle/nifi-asn1-services/src/test/java/org/apache/nifi/jasn1/TestJASN1RecordReader.java
@@ -59,6 +59,7 @@ public class TestJASN1RecordReader implements 
JASN1ReadRecordTester {
             assertEquals(789, record.getAsInt("i").intValue());
             assertEquals("0102030405", record.getValue("octStr"));
             assertEquals("Some UTF-8 String. こんにちは世界。", 
record.getValue("utf8Str"));
+            assertEquals("01101000", record.getValue("bitStr"));
 
             record = reader.nextRecord(true, false);
             assertNull(record);
diff --git 
a/nifi-nar-bundles/nifi-asn1-bundle/nifi-asn1-services/src/test/java/org/apache/nifi/jasn1/TestJASN1RecordReaderWithComplexTypes.java
 
b/nifi-nar-bundles/nifi-asn1-bundle/nifi-asn1-services/src/test/java/org/apache/nifi/jasn1/TestJASN1RecordReaderWithComplexTypes.java
index b438998530..f90b63228a 100644
--- 
a/nifi-nar-bundles/nifi-asn1-bundle/nifi-asn1-services/src/test/java/org/apache/nifi/jasn1/TestJASN1RecordReaderWithComplexTypes.java
+++ 
b/nifi-nar-bundles/nifi-asn1-bundle/nifi-asn1-services/src/test/java/org/apache/nifi/jasn1/TestJASN1RecordReaderWithComplexTypes.java
@@ -16,6 +16,7 @@
  */
 package org.apache.nifi.jasn1;
 
+import com.beanit.asn1bean.ber.types.BerBitString;
 import com.beanit.asn1bean.ber.types.BerBoolean;
 import com.beanit.asn1bean.ber.types.BerInteger;
 import com.beanit.asn1bean.ber.types.BerOctetString;
@@ -79,19 +80,22 @@ public class TestJASN1RecordReaderWithComplexTypes 
implements JASN1ReadRecordTes
         basicTypes.setI(new BerInteger(789));
         basicTypes.setOctStr(new BerOctetString(new byte[]{1, 2, 3, 4, 5}));
         basicTypes.setUtf8Str(new BerUTF8String("Some UTF-8 String. 
こんにちは世界。"));
+        basicTypes.setBitStr(new BerBitString(new boolean[] { true, false, 
true, true}));
 
         Map<String, Object> expectedValues = new HashMap<String, Object>() {{
             put("b", true);
             put("i", BigInteger.valueOf(789));
             put("octStr", "0102030405");
             put("utf8Str", "Some UTF-8 String. こんにちは世界。");
+            put("bitStr", "1011");
         }};
 
         RecordSchema expectedSchema = new SimpleRecordSchema(Arrays.asList(
                 new RecordField("b", RecordFieldType.BOOLEAN.getDataType()),
                 new RecordField("i", RecordFieldType.BIGINT.getDataType()),
                 new RecordField("octStr", 
RecordFieldType.STRING.getDataType()),
-                new RecordField("utf8Str", 
RecordFieldType.STRING.getDataType())
+                new RecordField("utf8Str", 
RecordFieldType.STRING.getDataType()),
+                new RecordField("bitStr", RecordFieldType.STRING.getDataType())
         ));
 
         testReadRecord(dataFile, basicTypes, expectedValues, expectedSchema);
@@ -156,7 +160,8 @@ public class TestJASN1RecordReaderWithComplexTypes 
implements JASN1ReadRecordTes
                 new RecordField("b", RecordFieldType.BOOLEAN.getDataType()),
                 new RecordField("i", RecordFieldType.BIGINT.getDataType()),
                 new RecordField("octStr", 
RecordFieldType.STRING.getDataType()),
-                new RecordField("utf8Str", 
RecordFieldType.STRING.getDataType())
+                new RecordField("utf8Str", 
RecordFieldType.STRING.getDataType()),
+                new RecordField("bitStr", RecordFieldType.STRING.getDataType())
         ));
 
         RecordSchema expectedSchema = new SimpleRecordSchema(Arrays.asList(
diff --git 
a/nifi-nar-bundles/nifi-asn1-bundle/nifi-asn1-services/src/test/java/org/apache/nifi/jasn1/TestJASN1RecordReaderWithSimpleTypes.java
 
b/nifi-nar-bundles/nifi-asn1-bundle/nifi-asn1-services/src/test/java/org/apache/nifi/jasn1/TestJASN1RecordReaderWithSimpleTypes.java
index 67cf5c6419..90aed38331 100644
--- 
a/nifi-nar-bundles/nifi-asn1-bundle/nifi-asn1-services/src/test/java/org/apache/nifi/jasn1/TestJASN1RecordReaderWithSimpleTypes.java
+++ 
b/nifi-nar-bundles/nifi-asn1-bundle/nifi-asn1-services/src/test/java/org/apache/nifi/jasn1/TestJASN1RecordReaderWithSimpleTypes.java
@@ -106,11 +106,11 @@ public class TestJASN1RecordReaderWithSimpleTypes 
implements JASN1ReadRecordTest
         berValue.setValue(new BerBitString(new boolean[]{false, true, false, 
false, true, true, true, true, false, true, false, false}));
 
         Map<String, Object> expectedValues = new HashMap<String, Object>() {{
-            put("value", new boolean[]{false, true, false, false, true, true, 
true, true, false, true, false, false});
+            put("value", "010011110100");
         }};
 
         RecordSchema expectedSchema = new SimpleRecordSchema(Arrays.asList(
-                new RecordField("value", 
RecordFieldType.ARRAY.getArrayDataType(RecordFieldType.BOOLEAN.getDataType())))
+                new RecordField("value", RecordFieldType.STRING.getDataType()))
         );
 
         testReadRecord(dataFile, berValue, expectedValues, expectedSchema);
diff --git 
a/nifi-nar-bundles/nifi-asn1-bundle/nifi-asn1-services/src/test/resources/example.asn
 
b/nifi-nar-bundles/nifi-asn1-bundle/nifi-asn1-services/src/test/resources/example.asn
index 82eed88f87..66fd9b3d8c 100644
--- 
a/nifi-nar-bundles/nifi-asn1-bundle/nifi-asn1-services/src/test/resources/example.asn
+++ 
b/nifi-nar-bundles/nifi-asn1-bundle/nifi-asn1-services/src/test/resources/example.asn
@@ -13,7 +13,8 @@ BasicTypes            ::= SEQUENCE
     b         [0] BOOLEAN,
     i         [1] INTEGER,
     octStr    [2] OCTET STRING (SIZE (1..10)),
-    utf8Str   [3] UTF8String OPTIONAL
+    utf8Str   [3] UTF8String OPTIONAL,
+    bitStr    [4] BIT STRING OPTIONAL
 }
 
 Composite             ::= SEQUENCE
diff --git 
a/nifi-nar-bundles/nifi-asn1-bundle/nifi-asn1-services/src/test/resources/examples/basic-types.dat
 
b/nifi-nar-bundles/nifi-asn1-bundle/nifi-asn1-services/src/test/resources/examples/basic-types.dat
index a0fb624a03..42d965910b 100644
Binary files 
a/nifi-nar-bundles/nifi-asn1-bundle/nifi-asn1-services/src/test/resources/examples/basic-types.dat
 and 
b/nifi-nar-bundles/nifi-asn1-bundle/nifi-asn1-services/src/test/resources/examples/basic-types.dat
 differ

Reply via email to