[
https://issues.apache.org/jira/browse/NIFI-9311?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Matt Burgess updated NIFI-9311:
-------------------------------
Description:
If scripted properties are removed from a script in InvokeScriptedProcessor,
they do not become unsupported properties when the script is reloaded. For
example, load the following script:
{{
class GroovyProcessor implements Processor {
def ComponentLog log
def REL_SUCCESS = new Relationship.Builder().name("success")
.description("FlowFiles that were successfully processed").build()
@Override
Set<Relationship> getRelationships() {
return [REL_SUCCESS] as Set
}
def PASS = new PropertyDescriptor.Builder().name('Password')
.required(true).sensitive(true).addValidator(Validator.VALID).build()
def NS_USER = new PropertyDescriptor.Builder().name('NS Username')
.required(true).sensitive(false).addValidator(Validator.VALID).build()
@Override
List<PropertyDescriptor> getPropertyDescriptors() {
return [NS_USER, PASS] as List
}
@Override
PropertyDescriptor getPropertyDescriptor(String name) {
switch(name){
case 'Password': return PASS
case 'NS Username': return NS_USER
default: return null
}
}
@Override
void onTrigger(ProcessContext context, ProcessSessionFactory sessionFactory)
throws ProcessException {
try {
def session = sessionFactory.createSession()
def flowFile = session.get()
if(!flowFile) return
def pass = context.getProperty(PASS).getValue()
// do something with pass
session.transfer(flowFile,REL_SUCCESS)
session.commit()
}
catch (e) {
throw new ProcessException(e)
}
}
@Override
void initialize(ProcessorInitializationContext context) {
log = context.getLogger()
}
@Override
Collection<ValidationResult> validate(ValidationContext context) { return
null }
@Override
void onPropertyModified(PropertyDescriptor descriptor, String oldValue,
String newValue) { }
@Override
String getIdentifier() { return null }
}
processor = new GroovyProcessor()
}}
Then go back into the configuration dialog and remove one of the properties,
then click Apply. The removed property should now be an unsupported property or
at the least a dynamic property (not required).
was:
If scripted properties are removed from a script in InvokeScriptedProcessor,
they do not become unsupported properties when the script is reloaded. For
example, load the following script:
{{class GroovyProcessor implements Processor {
def ComponentLog log
def REL_SUCCESS = new Relationship.Builder().name("success")
.description("FlowFiles that were successfully processed").build()
@Override
Set<Relationship> getRelationships() {
return [REL_SUCCESS] as Set
}
def PASS = new PropertyDescriptor.Builder().name('Password')
.required(true).sensitive(true).addValidator(Validator.VALID).build()
def NS_USER = new PropertyDescriptor.Builder().name('NS Username')
.required(true).sensitive(false).addValidator(Validator.VALID).build()
@Override
List<PropertyDescriptor> getPropertyDescriptors() {
return [NS_USER, PASS] as List
}
@Override
PropertyDescriptor getPropertyDescriptor(String name) {
switch(name){
case 'Password': return PASS
case 'NS Username': return NS_USER
default: return null
}
}
@Override
void onTrigger(ProcessContext context, ProcessSessionFactory sessionFactory)
throws ProcessException {
try {
def session = sessionFactory.createSession()
def flowFile = session.get()
if(!flowFile) return
def pass = context.getProperty(PASS).getValue()
// do something with pass
session.transfer(flowFile,REL_SUCCESS)
session.commit()
}
catch (e) {
throw new ProcessException(e)
}
}
@Override
void initialize(ProcessorInitializationContext context) {
log = context.getLogger()
}
@Override
Collection<ValidationResult> validate(ValidationContext context) { return
null }
@Override
void onPropertyModified(PropertyDescriptor descriptor, String oldValue,
String newValue) { }
@Override
String getIdentifier() { return null }
}
processor = new GroovyProcessor()}}
Then go back into the configuration dialog and remove one of the properties,
then click Apply. The removed property should now be an unsupported property or
at the least a dynamic property (not required).
> Cannot remove scripted properties in InvokeScriptedProcessor
> ------------------------------------------------------------
>
> Key: NIFI-9311
> URL: https://issues.apache.org/jira/browse/NIFI-9311
> Project: Apache NiFi
> Issue Type: Bug
> Components: Extensions
> Reporter: Matt Burgess
> Priority: Major
>
> If scripted properties are removed from a script in InvokeScriptedProcessor,
> they do not become unsupported properties when the script is reloaded. For
> example, load the following script:
> {{
> class GroovyProcessor implements Processor {
> def ComponentLog log
> def REL_SUCCESS = new Relationship.Builder().name("success")
> .description("FlowFiles that were successfully processed").build()
> @Override
> Set<Relationship> getRelationships() {
> return [REL_SUCCESS] as Set
> }
> def PASS = new PropertyDescriptor.Builder().name('Password')
> .required(true).sensitive(true).addValidator(Validator.VALID).build()
> def NS_USER = new PropertyDescriptor.Builder().name('NS Username')
> .required(true).sensitive(false).addValidator(Validator.VALID).build()
> @Override
> List<PropertyDescriptor> getPropertyDescriptors() {
> return [NS_USER, PASS] as List
> }
> @Override
> PropertyDescriptor getPropertyDescriptor(String name) {
> switch(name){
> case 'Password': return PASS
> case 'NS Username': return NS_USER
> default: return null
> }
> }
> @Override
> void onTrigger(ProcessContext context, ProcessSessionFactory
> sessionFactory) throws ProcessException {
> try {
> def session = sessionFactory.createSession()
> def flowFile = session.get()
> if(!flowFile) return
> def pass = context.getProperty(PASS).getValue()
> // do something with pass
> session.transfer(flowFile,REL_SUCCESS)
> session.commit()
> }
> catch (e) {
> throw new ProcessException(e)
> }
> }
> @Override
> void initialize(ProcessorInitializationContext context) {
> log = context.getLogger()
> }
> @Override
> Collection<ValidationResult> validate(ValidationContext context) { return
> null }
> @Override
> void onPropertyModified(PropertyDescriptor descriptor, String oldValue,
> String newValue) { }
> @Override
> String getIdentifier() { return null }
> }
> processor = new GroovyProcessor()
> }}
> Then go back into the configuration dialog and remove one of the properties,
> then click Apply. The removed property should now be an unsupported property
> or at the least a dynamic property (not required).
--
This message was sent by Atlassian Jira
(v8.3.4#803005)