[ https://issues.apache.org/jira/browse/NIFI-4857?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16409620#comment-16409620 ]
ASF GitHub Bot commented on NIFI-4857: -------------------------------------- Github user markap14 commented on a diff in the pull request: https://github.com/apache/nifi/pull/2570#discussion_r176439185 --- Diff: nifi-commons/nifi-record-path/src/main/java/org/apache/nifi/record/path/functions/ToBytes.java --- @@ -0,0 +1,85 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.nifi.record.path.functions; + +import org.apache.nifi.record.path.FieldValue; +import org.apache.nifi.record.path.RecordPathEvaluationContext; +import org.apache.nifi.record.path.StandardFieldValue; +import org.apache.nifi.record.path.paths.RecordPathSegment; +import org.apache.nifi.record.path.util.RecordPathUtils; +import org.apache.nifi.serialization.record.RecordFieldType; +import org.apache.nifi.serialization.record.util.DataTypeUtils; + +import java.nio.charset.Charset; +import java.util.stream.Stream; + +public class ToBytes extends RecordPathSegment { + + private final RecordPathSegment recordPath; + private final RecordPathSegment charsetSegment; + + public ToBytes(final RecordPathSegment recordPath, final RecordPathSegment charsetSegment, final boolean absolute) { + super("toBytes", null, absolute); + this.recordPath = recordPath; + this.charsetSegment = charsetSegment; + } + + @Override + public Stream<FieldValue> evaluate(RecordPathEvaluationContext context) { + final Stream<FieldValue> fieldValues = recordPath.evaluate(context); + return fieldValues.filter(fv -> fv.getValue() != null) + .map(fv -> { + + if (!(fv.getValue() instanceof String)) { + return fv; --- End diff -- We should probably be throwing an Exception in this case? The user in this case is attempting to coerce a type that is not valid to coerce. Or otherwise filter it out from the results. It seems wrong to me to just ignore the conversion. > Record components do not support String <-> byte[] conversions > -------------------------------------------------------------- > > Key: NIFI-4857 > URL: https://issues.apache.org/jira/browse/NIFI-4857 > Project: Apache NiFi > Issue Type: Improvement > Components: Extensions > Reporter: Matt Burgess > Assignee: Matt Burgess > Priority: Major > > When trying to perform a conversion of a field between a String and a byte > array, various errors are reporting (depending on where the conversion is > taking place). Here are some examples: > 1) CSVReader, if a column with String values is specified in the schema as > "bytes" > 2) ConvertRecord, if an input field is of type String and the output field is > of type "bytes" > 3) ConvertRecord, if an input field is of type "bytes" and the output field > is of type "String" > Many/most/all of the record components use utility methods to convert values, > I believe these methods need to be updated to support conversion between > String and byte[] values. > -- This message was sent by Atlassian JIRA (v7.6.3#76005)