Re: [PR] NIFI-12386 Adds processor FilterAttribute (Java 1.8 / NiFi 1.x) [nifi]
mosermw closed pull request #8064: NIFI-12386 Adds processor FilterAttribute (Java 1.8 / NiFi 1.x) URL: https://github.com/apache/nifi/pull/8064 -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@nifi.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org
Re: [PR] NIFI-12386 Adds processor FilterAttribute (Java 1.8 / NiFi 1.x) [nifi]
mosermw commented on PR #8064: URL: https://github.com/apache/nifi/pull/8064#issuecomment-1834609921 I've finished testing on the support/nifi-1.x branch and this processor works in the supported scenarios. So +1 I will merge. We should have plenty of time to resolve NIFI-12446 before the next release(s). As you can probably tell, my reviews tend to be lenient when it comes to code style, as long as readability, functionality and performance goals are met. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@nifi.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org
Re: [PR] NIFI-12386 Adds processor FilterAttribute (Java 1.8 / NiFi 1.x) [nifi]
EndzeitBegins commented on code in PR #8064: URL: https://github.com/apache/nifi/pull/8064#discussion_r1411247112 ## nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/FilterAttribute.java: ## @@ -0,0 +1,273 @@ +/* + * 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.processors.standard; + +import org.apache.nifi.annotation.behavior.DefaultRunDuration; +import org.apache.nifi.annotation.behavior.InputRequirement; +import org.apache.nifi.annotation.behavior.SideEffectFree; +import org.apache.nifi.annotation.behavior.SupportsBatching; +import org.apache.nifi.annotation.documentation.CapabilityDescription; +import org.apache.nifi.annotation.documentation.Tags; +import org.apache.nifi.annotation.lifecycle.OnScheduled; +import org.apache.nifi.components.AllowableValue; +import org.apache.nifi.components.PropertyDescriptor; +import org.apache.nifi.expression.ExpressionLanguageScope; +import org.apache.nifi.flowfile.FlowFile; +import org.apache.nifi.processor.AbstractProcessor; +import org.apache.nifi.processor.ProcessContext; +import org.apache.nifi.processor.ProcessSession; +import org.apache.nifi.processor.Relationship; +import org.apache.nifi.processor.exception.ProcessException; +import org.apache.nifi.processor.util.StandardValidators; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.function.Predicate; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +@SideEffectFree +@SupportsBatching(defaultDuration = DefaultRunDuration.TWENTY_FIVE_MILLIS) +@InputRequirement(InputRequirement.Requirement.INPUT_REQUIRED) +@Tags({"attributes", "modification", "filter", "retain", "remove", "delete", "regex", "regular expression", "Attribute Expression Language"}) +@CapabilityDescription("Filters the attributes of a FlowFile by retaining specified attributes and removing the rest or by removing specified attributes and retaining the rest.") +public class FilterAttribute extends AbstractProcessor { + +public static final Relationship REL_SUCCESS = new Relationship.Builder() +.description("All successful FlowFiles are routed to this relationship").name("success").build(); + +private final static Set relationships = Collections.singleton(REL_SUCCESS); + + +public static final AllowableValue FILTER_MODE_VALUE_RETAIN = new AllowableValue( +"RETAIN", Review Comment: I've written your suggestions in the Jira ticket, @exceptionfactory. Please let me know if I missed something or you'd like to change something. Unless communicated otherwise, I will wait for this PR to be merged and start working on NIFI-12446 afterwards, when I can get to it. Or does one of you both want to have a swing at it? -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@nifi.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org
Re: [PR] NIFI-12386 Adds processor FilterAttribute (Java 1.8 / NiFi 1.x) [nifi]
exceptionfactory commented on code in PR #8064: URL: https://github.com/apache/nifi/pull/8064#discussion_r1411228506 ## nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/FilterAttribute.java: ## @@ -0,0 +1,273 @@ +/* + * 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.processors.standard; + +import org.apache.nifi.annotation.behavior.DefaultRunDuration; +import org.apache.nifi.annotation.behavior.InputRequirement; +import org.apache.nifi.annotation.behavior.SideEffectFree; +import org.apache.nifi.annotation.behavior.SupportsBatching; +import org.apache.nifi.annotation.documentation.CapabilityDescription; +import org.apache.nifi.annotation.documentation.Tags; +import org.apache.nifi.annotation.lifecycle.OnScheduled; +import org.apache.nifi.components.AllowableValue; +import org.apache.nifi.components.PropertyDescriptor; +import org.apache.nifi.expression.ExpressionLanguageScope; +import org.apache.nifi.flowfile.FlowFile; +import org.apache.nifi.processor.AbstractProcessor; +import org.apache.nifi.processor.ProcessContext; +import org.apache.nifi.processor.ProcessSession; +import org.apache.nifi.processor.Relationship; +import org.apache.nifi.processor.exception.ProcessException; +import org.apache.nifi.processor.util.StandardValidators; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.function.Predicate; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +@SideEffectFree +@SupportsBatching(defaultDuration = DefaultRunDuration.TWENTY_FIVE_MILLIS) +@InputRequirement(InputRequirement.Requirement.INPUT_REQUIRED) +@Tags({"attributes", "modification", "filter", "retain", "remove", "delete", "regex", "regular expression", "Attribute Expression Language"}) +@CapabilityDescription("Filters the attributes of a FlowFile by retaining specified attributes and removing the rest or by removing specified attributes and retaining the rest.") +public class FilterAttribute extends AbstractProcessor { + +public static final Relationship REL_SUCCESS = new Relationship.Builder() +.description("All successful FlowFiles are routed to this relationship").name("success").build(); + +private final static Set relationships = Collections.singleton(REL_SUCCESS); + + +public static final AllowableValue FILTER_MODE_VALUE_RETAIN = new AllowableValue( +"RETAIN", Review Comment: Thanks @EndzeitBegins and @mosermw, that sounds good, I appreciate the response! -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@nifi.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org
Re: [PR] NIFI-12386 Adds processor FilterAttribute (Java 1.8 / NiFi 1.x) [nifi]
EndzeitBegins commented on code in PR #8064: URL: https://github.com/apache/nifi/pull/8064#discussion_r1411227342 ## nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/FilterAttribute.java: ## @@ -0,0 +1,273 @@ +/* + * 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.processors.standard; + +import org.apache.nifi.annotation.behavior.DefaultRunDuration; +import org.apache.nifi.annotation.behavior.InputRequirement; +import org.apache.nifi.annotation.behavior.SideEffectFree; +import org.apache.nifi.annotation.behavior.SupportsBatching; +import org.apache.nifi.annotation.documentation.CapabilityDescription; +import org.apache.nifi.annotation.documentation.Tags; +import org.apache.nifi.annotation.lifecycle.OnScheduled; +import org.apache.nifi.components.AllowableValue; +import org.apache.nifi.components.PropertyDescriptor; +import org.apache.nifi.expression.ExpressionLanguageScope; +import org.apache.nifi.flowfile.FlowFile; +import org.apache.nifi.processor.AbstractProcessor; +import org.apache.nifi.processor.ProcessContext; +import org.apache.nifi.processor.ProcessSession; +import org.apache.nifi.processor.Relationship; +import org.apache.nifi.processor.exception.ProcessException; +import org.apache.nifi.processor.util.StandardValidators; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.function.Predicate; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +@SideEffectFree +@SupportsBatching(defaultDuration = DefaultRunDuration.TWENTY_FIVE_MILLIS) +@InputRequirement(InputRequirement.Requirement.INPUT_REQUIRED) +@Tags({"attributes", "modification", "filter", "retain", "remove", "delete", "regex", "regular expression", "Attribute Expression Language"}) +@CapabilityDescription("Filters the attributes of a FlowFile by retaining specified attributes and removing the rest or by removing specified attributes and retaining the rest.") +public class FilterAttribute extends AbstractProcessor { + +public static final Relationship REL_SUCCESS = new Relationship.Builder() +.description("All successful FlowFiles are routed to this relationship").name("success").build(); + +private final static Set relationships = Collections.singleton(REL_SUCCESS); + + +public static final AllowableValue FILTER_MODE_VALUE_RETAIN = new AllowableValue( +"RETAIN", Review Comment: That sounds like a reasonable approach. We just have to ensure that the new PRs are merged before the next releases of 1.x and 2.0. I opened [NIFI-12446](https://issues.apache.org/jira/browse/NIFI-12446) to track the desired changes. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@nifi.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org
Re: [PR] NIFI-12386 Adds processor FilterAttribute (Java 1.8 / NiFi 1.x) [nifi]
exceptionfactory commented on code in PR #8064: URL: https://github.com/apache/nifi/pull/8064#discussion_r1411218921 ## nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/FilterAttribute.java: ## @@ -0,0 +1,273 @@ +/* + * 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.processors.standard; + +import org.apache.nifi.annotation.behavior.DefaultRunDuration; +import org.apache.nifi.annotation.behavior.InputRequirement; +import org.apache.nifi.annotation.behavior.SideEffectFree; +import org.apache.nifi.annotation.behavior.SupportsBatching; +import org.apache.nifi.annotation.documentation.CapabilityDescription; +import org.apache.nifi.annotation.documentation.Tags; +import org.apache.nifi.annotation.lifecycle.OnScheduled; +import org.apache.nifi.components.AllowableValue; +import org.apache.nifi.components.PropertyDescriptor; +import org.apache.nifi.expression.ExpressionLanguageScope; +import org.apache.nifi.flowfile.FlowFile; +import org.apache.nifi.processor.AbstractProcessor; +import org.apache.nifi.processor.ProcessContext; +import org.apache.nifi.processor.ProcessSession; +import org.apache.nifi.processor.Relationship; +import org.apache.nifi.processor.exception.ProcessException; +import org.apache.nifi.processor.util.StandardValidators; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.function.Predicate; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +@SideEffectFree +@SupportsBatching(defaultDuration = DefaultRunDuration.TWENTY_FIVE_MILLIS) +@InputRequirement(InputRequirement.Requirement.INPUT_REQUIRED) +@Tags({"attributes", "modification", "filter", "retain", "remove", "delete", "regex", "regular expression", "Attribute Expression Language"}) +@CapabilityDescription("Filters the attributes of a FlowFile by retaining specified attributes and removing the rest or by removing specified attributes and retaining the rest.") +public class FilterAttribute extends AbstractProcessor { + +public static final Relationship REL_SUCCESS = new Relationship.Builder() +.description("All successful FlowFiles are routed to this relationship").name("success").build(); + +private final static Set relationships = Collections.singleton(REL_SUCCESS); + + +public static final AllowableValue FILTER_MODE_VALUE_RETAIN = new AllowableValue( +"RETAIN", Review Comment: No problem @mosermw, I should have followed up earlier on the pull request for the main branch. Under the circumstances, it sounds like it may be best to move forward with this pull request after you have completed the review, and then address the naming convention questions in a new Jira issue, with pull requests to both branches. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@nifi.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org
Re: [PR] NIFI-12386 Adds processor FilterAttribute (Java 1.8 / NiFi 1.x) [nifi]
mosermw commented on code in PR #8064: URL: https://github.com/apache/nifi/pull/8064#discussion_r1411216311 ## nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/FilterAttribute.java: ## @@ -0,0 +1,273 @@ +/* + * 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.processors.standard; + +import org.apache.nifi.annotation.behavior.DefaultRunDuration; +import org.apache.nifi.annotation.behavior.InputRequirement; +import org.apache.nifi.annotation.behavior.SideEffectFree; +import org.apache.nifi.annotation.behavior.SupportsBatching; +import org.apache.nifi.annotation.documentation.CapabilityDescription; +import org.apache.nifi.annotation.documentation.Tags; +import org.apache.nifi.annotation.lifecycle.OnScheduled; +import org.apache.nifi.components.AllowableValue; +import org.apache.nifi.components.PropertyDescriptor; +import org.apache.nifi.expression.ExpressionLanguageScope; +import org.apache.nifi.flowfile.FlowFile; +import org.apache.nifi.processor.AbstractProcessor; +import org.apache.nifi.processor.ProcessContext; +import org.apache.nifi.processor.ProcessSession; +import org.apache.nifi.processor.Relationship; +import org.apache.nifi.processor.exception.ProcessException; +import org.apache.nifi.processor.util.StandardValidators; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.function.Predicate; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +@SideEffectFree +@SupportsBatching(defaultDuration = DefaultRunDuration.TWENTY_FIVE_MILLIS) +@InputRequirement(InputRequirement.Requirement.INPUT_REQUIRED) +@Tags({"attributes", "modification", "filter", "retain", "remove", "delete", "regex", "regular expression", "Attribute Expression Language"}) +@CapabilityDescription("Filters the attributes of a FlowFile by retaining specified attributes and removing the rest or by removing specified attributes and retaining the rest.") +public class FilterAttribute extends AbstractProcessor { + +public static final Relationship REL_SUCCESS = new Relationship.Builder() +.description("All successful FlowFiles are routed to this relationship").name("success").build(); + +private final static Set relationships = Collections.singleton(REL_SUCCESS); + + +public static final AllowableValue FILTER_MODE_VALUE_RETAIN = new AllowableValue( +"RETAIN", Review Comment: @exceptionfactory I didn't realize you had more comments and I already merged #8049 to main. We should make sure whatever changes made to the support/nifi-1.x branch in this PR make their way into main, especially any changes to PropertyDescriptors. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@nifi.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org
Re: [PR] NIFI-12386 Adds processor FilterAttribute (Java 1.8 / NiFi 1.x) [nifi]
exceptionfactory commented on code in PR #8064: URL: https://github.com/apache/nifi/pull/8064#discussion_r1411211679 ## nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/FilterAttribute.java: ## @@ -0,0 +1,273 @@ +/* + * 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.processors.standard; + +import org.apache.nifi.annotation.behavior.DefaultRunDuration; +import org.apache.nifi.annotation.behavior.InputRequirement; +import org.apache.nifi.annotation.behavior.SideEffectFree; +import org.apache.nifi.annotation.behavior.SupportsBatching; +import org.apache.nifi.annotation.documentation.CapabilityDescription; +import org.apache.nifi.annotation.documentation.Tags; +import org.apache.nifi.annotation.lifecycle.OnScheduled; +import org.apache.nifi.components.AllowableValue; +import org.apache.nifi.components.PropertyDescriptor; +import org.apache.nifi.expression.ExpressionLanguageScope; +import org.apache.nifi.flowfile.FlowFile; +import org.apache.nifi.processor.AbstractProcessor; +import org.apache.nifi.processor.ProcessContext; +import org.apache.nifi.processor.ProcessSession; +import org.apache.nifi.processor.Relationship; +import org.apache.nifi.processor.exception.ProcessException; +import org.apache.nifi.processor.util.StandardValidators; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.function.Predicate; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +@SideEffectFree +@SupportsBatching(defaultDuration = DefaultRunDuration.TWENTY_FIVE_MILLIS) +@InputRequirement(InputRequirement.Requirement.INPUT_REQUIRED) +@Tags({"attributes", "modification", "filter", "retain", "remove", "delete", "regex", "regular expression", "Attribute Expression Language"}) +@CapabilityDescription("Filters the attributes of a FlowFile by retaining specified attributes and removing the rest or by removing specified attributes and retaining the rest.") +public class FilterAttribute extends AbstractProcessor { + +public static final Relationship REL_SUCCESS = new Relationship.Builder() +.description("All successful FlowFiles are routed to this relationship").name("success").build(); + +private final static Set relationships = Collections.singleton(REL_SUCCESS); + + +public static final AllowableValue FILTER_MODE_VALUE_RETAIN = new AllowableValue( +"RETAIN", +"Retain", +"Retains only the attributes matching the filter, all other attributes are removed." +); + +public static final AllowableValue FILTER_MODE_VALUE_REMOVE = new AllowableValue( +"REMOVE", +"Remove", +"Removes the attributes matching the filter, all other attributes are retained." +); + +public static final PropertyDescriptor FILTER_MODE = new PropertyDescriptor.Builder() +.name("FILTER_MODE") +.displayName("Filter mode") Review Comment: That's true, sorry for not flagging this earlier. We should make the change on the main branch as well, then we can make sure both are aligned for the next releases. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@nifi.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org
Re: [PR] NIFI-12386 Adds processor FilterAttribute (Java 1.8 / NiFi 1.x) [nifi]
exceptionfactory commented on code in PR #8064: URL: https://github.com/apache/nifi/pull/8064#discussion_r1411210531 ## nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/FilterAttribute.java: ## @@ -0,0 +1,273 @@ +/* + * 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.processors.standard; + +import org.apache.nifi.annotation.behavior.DefaultRunDuration; +import org.apache.nifi.annotation.behavior.InputRequirement; +import org.apache.nifi.annotation.behavior.SideEffectFree; +import org.apache.nifi.annotation.behavior.SupportsBatching; +import org.apache.nifi.annotation.documentation.CapabilityDescription; +import org.apache.nifi.annotation.documentation.Tags; +import org.apache.nifi.annotation.lifecycle.OnScheduled; +import org.apache.nifi.components.AllowableValue; +import org.apache.nifi.components.PropertyDescriptor; +import org.apache.nifi.expression.ExpressionLanguageScope; +import org.apache.nifi.flowfile.FlowFile; +import org.apache.nifi.processor.AbstractProcessor; +import org.apache.nifi.processor.ProcessContext; +import org.apache.nifi.processor.ProcessSession; +import org.apache.nifi.processor.Relationship; +import org.apache.nifi.processor.exception.ProcessException; +import org.apache.nifi.processor.util.StandardValidators; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.function.Predicate; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +@SideEffectFree +@SupportsBatching(defaultDuration = DefaultRunDuration.TWENTY_FIVE_MILLIS) +@InputRequirement(InputRequirement.Requirement.INPUT_REQUIRED) +@Tags({"attributes", "modification", "filter", "retain", "remove", "delete", "regex", "regular expression", "Attribute Expression Language"}) +@CapabilityDescription("Filters the attributes of a FlowFile by retaining specified attributes and removing the rest or by removing specified attributes and retaining the rest.") +public class FilterAttribute extends AbstractProcessor { + +public static final Relationship REL_SUCCESS = new Relationship.Builder() +.description("All successful FlowFiles are routed to this relationship").name("success").build(); + +private final static Set relationships = Collections.singleton(REL_SUCCESS); + + +public static final AllowableValue FILTER_MODE_VALUE_RETAIN = new AllowableValue( +"RETAIN", +"Retain", +"Retains only the attributes matching the filter, all other attributes are removed." +); + +public static final AllowableValue FILTER_MODE_VALUE_REMOVE = new AllowableValue( +"REMOVE", +"Remove", +"Removes the attributes matching the filter, all other attributes are retained." +); + +public static final PropertyDescriptor FILTER_MODE = new PropertyDescriptor.Builder() +.name("FILTER_MODE") +.displayName("Filter mode") +.description("Specifies the strategy to apply on filtered attributes. Either 'Remove' or 'Retain' only the matching attributes.") +.required(true) +.allowableValues(FILTER_MODE_VALUE_RETAIN, FILTER_MODE_VALUE_REMOVE) +.expressionLanguageSupported(ExpressionLanguageScope.NONE) +.defaultValue(FILTER_MODE_VALUE_RETAIN.getValue()) +.build(); + +public static final AllowableValue MATCHING_STRATEGY_VALUE_ENUMERATION = new AllowableValue( +"ENUMERATION", +"Enumerate attributes", +"Provides a set of attribute keys to filter for, separated by a comma delimiter ','." +); + +public static final AllowableValue MATCHING_STRATEGY_VALUE_REGEX = new AllowableValue( +"REGEX", +"Use regular expression", +"Provides a regular expression to match keys of attributes to filter for." +); + +public static final PropertyDescriptor MATCHING_STRATEGY = new PropertyDescriptor.Builder() +.name("MATCHING_STRATEGY") +.displayName("Attribute matching
Re: [PR] NIFI-12386 Adds processor FilterAttribute (Java 1.8 / NiFi 1.x) [nifi]
exceptionfactory commented on code in PR #8064: URL: https://github.com/apache/nifi/pull/8064#discussion_r1411197372 ## nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/FilterAttribute.java: ## @@ -0,0 +1,273 @@ +/* + * 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.processors.standard; + +import org.apache.nifi.annotation.behavior.DefaultRunDuration; +import org.apache.nifi.annotation.behavior.InputRequirement; +import org.apache.nifi.annotation.behavior.SideEffectFree; +import org.apache.nifi.annotation.behavior.SupportsBatching; +import org.apache.nifi.annotation.documentation.CapabilityDescription; +import org.apache.nifi.annotation.documentation.Tags; +import org.apache.nifi.annotation.lifecycle.OnScheduled; +import org.apache.nifi.components.AllowableValue; +import org.apache.nifi.components.PropertyDescriptor; +import org.apache.nifi.expression.ExpressionLanguageScope; +import org.apache.nifi.flowfile.FlowFile; +import org.apache.nifi.processor.AbstractProcessor; +import org.apache.nifi.processor.ProcessContext; +import org.apache.nifi.processor.ProcessSession; +import org.apache.nifi.processor.Relationship; +import org.apache.nifi.processor.exception.ProcessException; +import org.apache.nifi.processor.util.StandardValidators; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.function.Predicate; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +@SideEffectFree +@SupportsBatching(defaultDuration = DefaultRunDuration.TWENTY_FIVE_MILLIS) +@InputRequirement(InputRequirement.Requirement.INPUT_REQUIRED) +@Tags({"attributes", "modification", "filter", "retain", "remove", "delete", "regex", "regular expression", "Attribute Expression Language"}) +@CapabilityDescription("Filters the attributes of a FlowFile by retaining specified attributes and removing the rest or by removing specified attributes and retaining the rest.") +public class FilterAttribute extends AbstractProcessor { + +public static final Relationship REL_SUCCESS = new Relationship.Builder() +.description("All successful FlowFiles are routed to this relationship").name("success").build(); + +private final static Set relationships = Collections.singleton(REL_SUCCESS); + + +public static final AllowableValue FILTER_MODE_VALUE_RETAIN = new AllowableValue( +"RETAIN", +"Retain", +"Retains only the attributes matching the filter, all other attributes are removed." +); + +public static final AllowableValue FILTER_MODE_VALUE_REMOVE = new AllowableValue( +"REMOVE", +"Remove", +"Removes the attributes matching the filter, all other attributes are retained." +); + +public static final PropertyDescriptor FILTER_MODE = new PropertyDescriptor.Builder() +.name("FILTER_MODE") +.displayName("Filter mode") +.description("Specifies the strategy to apply on filtered attributes. Either 'Remove' or 'Retain' only the matching attributes.") +.required(true) +.allowableValues(FILTER_MODE_VALUE_RETAIN, FILTER_MODE_VALUE_REMOVE) +.expressionLanguageSupported(ExpressionLanguageScope.NONE) +.defaultValue(FILTER_MODE_VALUE_RETAIN.getValue()) +.build(); + +public static final AllowableValue MATCHING_STRATEGY_VALUE_ENUMERATION = new AllowableValue( +"ENUMERATION", +"Enumerate attributes", +"Provides a set of attribute keys to filter for, separated by a comma delimiter ','." +); + +public static final AllowableValue MATCHING_STRATEGY_VALUE_REGEX = new AllowableValue( +"REGEX", +"Use regular expression", +"Provides a regular expression to match keys of attributes to filter for." +); + +public static final PropertyDescriptor MATCHING_STRATEGY = new PropertyDescriptor.Builder() +.name("MATCHING_STRATEGY") +.displayName("Attribute matching
Re: [PR] NIFI-12386 Adds processor FilterAttribute (Java 1.8 / NiFi 1.x) [nifi]
EndzeitBegins commented on code in PR #8064: URL: https://github.com/apache/nifi/pull/8064#discussion_r1411204064 ## nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/FilterAttribute.java: ## @@ -0,0 +1,273 @@ +/* + * 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.processors.standard; + +import org.apache.nifi.annotation.behavior.DefaultRunDuration; +import org.apache.nifi.annotation.behavior.InputRequirement; +import org.apache.nifi.annotation.behavior.SideEffectFree; +import org.apache.nifi.annotation.behavior.SupportsBatching; +import org.apache.nifi.annotation.documentation.CapabilityDescription; +import org.apache.nifi.annotation.documentation.Tags; +import org.apache.nifi.annotation.lifecycle.OnScheduled; +import org.apache.nifi.components.AllowableValue; +import org.apache.nifi.components.PropertyDescriptor; +import org.apache.nifi.expression.ExpressionLanguageScope; +import org.apache.nifi.flowfile.FlowFile; +import org.apache.nifi.processor.AbstractProcessor; +import org.apache.nifi.processor.ProcessContext; +import org.apache.nifi.processor.ProcessSession; +import org.apache.nifi.processor.Relationship; +import org.apache.nifi.processor.exception.ProcessException; +import org.apache.nifi.processor.util.StandardValidators; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.function.Predicate; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +@SideEffectFree +@SupportsBatching(defaultDuration = DefaultRunDuration.TWENTY_FIVE_MILLIS) +@InputRequirement(InputRequirement.Requirement.INPUT_REQUIRED) +@Tags({"attributes", "modification", "filter", "retain", "remove", "delete", "regex", "regular expression", "Attribute Expression Language"}) +@CapabilityDescription("Filters the attributes of a FlowFile by retaining specified attributes and removing the rest or by removing specified attributes and retaining the rest.") +public class FilterAttribute extends AbstractProcessor { + +public static final Relationship REL_SUCCESS = new Relationship.Builder() +.description("All successful FlowFiles are routed to this relationship").name("success").build(); + +private final static Set relationships = Collections.singleton(REL_SUCCESS); + + +public static final AllowableValue FILTER_MODE_VALUE_RETAIN = new AllowableValue( +"RETAIN", +"Retain", +"Retains only the attributes matching the filter, all other attributes are removed." +); + +public static final AllowableValue FILTER_MODE_VALUE_REMOVE = new AllowableValue( +"REMOVE", +"Remove", +"Removes the attributes matching the filter, all other attributes are retained." +); + +public static final PropertyDescriptor FILTER_MODE = new PropertyDescriptor.Builder() +.name("FILTER_MODE") +.displayName("Filter mode") Review Comment: I'm not against this suggestion, but I think the name should align with the one used for NiFi 2.0 / branch `main`. Thus, we either have to keep this as is or push another commit to `main`, changing the name there as well, before the next release is made, to avoid breaking changes between versions. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@nifi.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org
Re: [PR] NIFI-12386 Adds processor FilterAttribute (Java 1.8 / NiFi 1.x) [nifi]
EndzeitBegins commented on code in PR #8064: URL: https://github.com/apache/nifi/pull/8064#discussion_r1411201844 ## nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/FilterAttribute.java: ## @@ -0,0 +1,273 @@ +/* + * 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.processors.standard; + +import org.apache.nifi.annotation.behavior.DefaultRunDuration; +import org.apache.nifi.annotation.behavior.InputRequirement; +import org.apache.nifi.annotation.behavior.SideEffectFree; +import org.apache.nifi.annotation.behavior.SupportsBatching; +import org.apache.nifi.annotation.documentation.CapabilityDescription; +import org.apache.nifi.annotation.documentation.Tags; +import org.apache.nifi.annotation.lifecycle.OnScheduled; +import org.apache.nifi.components.AllowableValue; +import org.apache.nifi.components.PropertyDescriptor; +import org.apache.nifi.expression.ExpressionLanguageScope; +import org.apache.nifi.flowfile.FlowFile; +import org.apache.nifi.processor.AbstractProcessor; +import org.apache.nifi.processor.ProcessContext; +import org.apache.nifi.processor.ProcessSession; +import org.apache.nifi.processor.Relationship; +import org.apache.nifi.processor.exception.ProcessException; +import org.apache.nifi.processor.util.StandardValidators; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.function.Predicate; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +@SideEffectFree +@SupportsBatching(defaultDuration = DefaultRunDuration.TWENTY_FIVE_MILLIS) +@InputRequirement(InputRequirement.Requirement.INPUT_REQUIRED) +@Tags({"attributes", "modification", "filter", "retain", "remove", "delete", "regex", "regular expression", "Attribute Expression Language"}) +@CapabilityDescription("Filters the attributes of a FlowFile by retaining specified attributes and removing the rest or by removing specified attributes and retaining the rest.") +public class FilterAttribute extends AbstractProcessor { + +public static final Relationship REL_SUCCESS = new Relationship.Builder() +.description("All successful FlowFiles are routed to this relationship").name("success").build(); + +private final static Set relationships = Collections.singleton(REL_SUCCESS); + + +public static final AllowableValue FILTER_MODE_VALUE_RETAIN = new AllowableValue( +"RETAIN", +"Retain", +"Retains only the attributes matching the filter, all other attributes are removed." +); + +public static final AllowableValue FILTER_MODE_VALUE_REMOVE = new AllowableValue( +"REMOVE", +"Remove", +"Removes the attributes matching the filter, all other attributes are retained." +); + +public static final PropertyDescriptor FILTER_MODE = new PropertyDescriptor.Builder() +.name("FILTER_MODE") +.displayName("Filter mode") +.description("Specifies the strategy to apply on filtered attributes. Either 'Remove' or 'Retain' only the matching attributes.") +.required(true) +.allowableValues(FILTER_MODE_VALUE_RETAIN, FILTER_MODE_VALUE_REMOVE) +.expressionLanguageSupported(ExpressionLanguageScope.NONE) +.defaultValue(FILTER_MODE_VALUE_RETAIN.getValue()) +.build(); + +public static final AllowableValue MATCHING_STRATEGY_VALUE_ENUMERATION = new AllowableValue( +"ENUMERATION", +"Enumerate attributes", +"Provides a set of attribute keys to filter for, separated by a comma delimiter ','." +); + +public static final AllowableValue MATCHING_STRATEGY_VALUE_REGEX = new AllowableValue( +"REGEX", +"Use regular expression", +"Provides a regular expression to match keys of attributes to filter for." +); + +public static final PropertyDescriptor MATCHING_STRATEGY = new PropertyDescriptor.Builder() +.name("MATCHING_STRATEGY") +.displayName("Attribute matching
Re: [PR] NIFI-12386 Adds processor FilterAttribute (Java 1.8 / NiFi 1.x) [nifi]
exceptionfactory commented on code in PR #8064: URL: https://github.com/apache/nifi/pull/8064#discussion_r1411195445 ## nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/FilterAttribute.java: ## @@ -0,0 +1,273 @@ +/* + * 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.processors.standard; + +import org.apache.nifi.annotation.behavior.DefaultRunDuration; +import org.apache.nifi.annotation.behavior.InputRequirement; +import org.apache.nifi.annotation.behavior.SideEffectFree; +import org.apache.nifi.annotation.behavior.SupportsBatching; +import org.apache.nifi.annotation.documentation.CapabilityDescription; +import org.apache.nifi.annotation.documentation.Tags; +import org.apache.nifi.annotation.lifecycle.OnScheduled; +import org.apache.nifi.components.AllowableValue; +import org.apache.nifi.components.PropertyDescriptor; +import org.apache.nifi.expression.ExpressionLanguageScope; +import org.apache.nifi.flowfile.FlowFile; +import org.apache.nifi.processor.AbstractProcessor; +import org.apache.nifi.processor.ProcessContext; +import org.apache.nifi.processor.ProcessSession; +import org.apache.nifi.processor.Relationship; +import org.apache.nifi.processor.exception.ProcessException; +import org.apache.nifi.processor.util.StandardValidators; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.function.Predicate; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +@SideEffectFree +@SupportsBatching(defaultDuration = DefaultRunDuration.TWENTY_FIVE_MILLIS) +@InputRequirement(InputRequirement.Requirement.INPUT_REQUIRED) +@Tags({"attributes", "modification", "filter", "retain", "remove", "delete", "regex", "regular expression", "Attribute Expression Language"}) +@CapabilityDescription("Filters the attributes of a FlowFile by retaining specified attributes and removing the rest or by removing specified attributes and retaining the rest.") +public class FilterAttribute extends AbstractProcessor { + +public static final Relationship REL_SUCCESS = new Relationship.Builder() +.description("All successful FlowFiles are routed to this relationship").name("success").build(); + +private final static Set relationships = Collections.singleton(REL_SUCCESS); + + +public static final AllowableValue FILTER_MODE_VALUE_RETAIN = new AllowableValue( +"RETAIN", +"Retain", +"Retains only the attributes matching the filter, all other attributes are removed." +); + +public static final AllowableValue FILTER_MODE_VALUE_REMOVE = new AllowableValue( +"REMOVE", +"Remove", +"Removes the attributes matching the filter, all other attributes are retained." +); + +public static final PropertyDescriptor FILTER_MODE = new PropertyDescriptor.Builder() +.name("FILTER_MODE") +.displayName("Filter mode") +.description("Specifies the strategy to apply on filtered attributes. Either 'Remove' or 'Retain' only the matching attributes.") +.required(true) +.allowableValues(FILTER_MODE_VALUE_RETAIN, FILTER_MODE_VALUE_REMOVE) +.expressionLanguageSupported(ExpressionLanguageScope.NONE) +.defaultValue(FILTER_MODE_VALUE_RETAIN.getValue()) +.build(); + +public static final AllowableValue MATCHING_STRATEGY_VALUE_ENUMERATION = new AllowableValue( +"ENUMERATION", +"Enumerate attributes", +"Provides a set of attribute keys to filter for, separated by a comma delimiter ','." +); + +public static final AllowableValue MATCHING_STRATEGY_VALUE_REGEX = new AllowableValue( +"REGEX", +"Use regular expression", +"Provides a regular expression to match keys of attributes to filter for." +); + +public static final PropertyDescriptor MATCHING_STRATEGY = new PropertyDescriptor.Builder() +.name("MATCHING_STRATEGY") +.displayName("Attribute matching
Re: [PR] NIFI-12386 Adds processor FilterAttribute (Java 1.8 / NiFi 1.x) [nifi]
EndzeitBegins commented on PR #8064: URL: https://github.com/apache/nifi/pull/8064#issuecomment-1834442892 No worries, I just wasn't sure you're aware there is a backport available. Thanks for your work. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@nifi.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org
Re: [PR] NIFI-12386 Adds processor FilterAttribute (Java 1.8 / NiFi 1.x) [nifi]
mosermw commented on PR #8064: URL: https://github.com/apache/nifi/pull/8064#issuecomment-1834438804 Yes, sorry, I meant to note that I'm testing this one now. The code looks good, just doing a final test. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@nifi.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org
Re: [PR] NIFI-12386 Adds processor FilterAttribute (Java 1.8 / NiFi 1.x) [nifi]
EndzeitBegins commented on PR #8064: URL: https://github.com/apache/nifi/pull/8064#issuecomment-1834427491 Thank you for reviewing and merging #8049, @mosermw. Can we backport the new processor for the 1.x track as well? I would appreciate a review as you're familiar with the implementation on `main` already. As the `main` branch has diverted quite a lot from 1.x already, I backported the changes manually. Besides some changes required for compatibility with Java 1.8, the implementations should align. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@nifi.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org