[
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)