This is an automated email from the ASF dual-hosted git repository.
pvillard 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 5e3b93b2d6 NIFI-11238: Creating missing parameter providers when
importing inherited provided contexts
5e3b93b2d6 is described below
commit 5e3b93b2d618487770fea2f1d7d95a987f044541
Author: Joe Gresock <[email protected]>
AuthorDate: Thu Mar 2 09:33:32 2023 -0500
NIFI-11238: Creating missing parameter providers when importing inherited
provided contexts
Signed-off-by: Pierre Villard <[email protected]>
This closes #7002.
---
.../StandardVersionedComponentSynchronizer.java | 34 +++++++++++++---------
1 file changed, 21 insertions(+), 13 deletions(-)
diff --git
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/flow/synchronization/StandardVersionedComponentSynchronizer.java
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/flow/synchronization/StandardVersionedComponentSynchronizer.java
index 5659567149..bca7d81c84 100644
---
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/flow/synchronization/StandardVersionedComponentSynchronizer.java
+++
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/flow/synchronization/StandardVersionedComponentSynchronizer.java
@@ -1536,7 +1536,7 @@ public class StandardVersionedComponentSynchronizer
implements VersionedComponen
// Make sure that we have a unique name and add the Parameter
Context if none exists
if (parameterContext == null) {
final String contextId =
synchronizationOptions.getComponentIdGenerator().generateUuid(proposed.getIdentifier(),
proposed.getInstanceIdentifier(), "Controller");
- final ParameterContext added =
createParameterContext(proposed, contextId, Collections.emptyMap());
+ final ParameterContext added =
createParameterContext(proposed, contextId, Collections.emptyMap(),
Collections.emptyMap(), synchronizationOptions.getComponentIdGenerator());
LOG.info("Successfully synchronized {} by adding it to the
flow", added);
return;
}
@@ -1947,16 +1947,16 @@ public class StandardVersionedComponentSynchronizer
implements VersionedComponen
final ParameterContext selectedParameterContext;
if (contextByName == null) {
final String parameterContextId =
componentIdGenerator.generateUuid(versionedParameterContext.getName(),
versionedParameterContext.getName(), versionedParameterContext.getName());
- selectedParameterContext =
createParameterContext(versionedParameterContext, parameterContextId,
versionedParameterContexts);
+ selectedParameterContext =
createParameterContext(versionedParameterContext, parameterContextId,
versionedParameterContexts, parameterProviderReferences, componentIdGenerator);
} else {
selectedParameterContext = contextByName;
- addMissingConfiguration(versionedParameterContext,
selectedParameterContext, versionedParameterContexts);
+ addMissingConfiguration(versionedParameterContext,
selectedParameterContext, versionedParameterContexts,
parameterProviderReferences, componentIdGenerator);
}
group.setParameterContext(selectedParameterContext);
} else {
// Update the current Parameter Context so that it has any
Parameters included in the proposed context
- addMissingConfiguration(versionedParameterContext,
currentParamContext, versionedParameterContexts);
+ addMissingConfiguration(versionedParameterContext,
currentParamContext, versionedParameterContexts, parameterProviderReferences,
componentIdGenerator);
}
}
}
@@ -2081,14 +2081,15 @@ public class StandardVersionedComponentSynchronizer
implements VersionedComponen
}
private ParameterContext createParameterContext(final
VersionedParameterContext versionedParameterContext, final String
parameterContextId,
- final Map<String,
VersionedParameterContext> versionedParameterContexts) {
+ final Map<String,
VersionedParameterContext> versionedParameterContexts,
+ final Map<String,
ParameterProviderReference> parameterProviderReferences, final
ComponentIdGenerator componentIdGenerator) {
final Map<String, Parameter> parameters =
createParameterMap(versionedParameterContext.getParameters());
final List<String> parameterContextRefs = new ArrayList<>();
if (versionedParameterContext.getInheritedParameterContexts() != null)
{
versionedParameterContext.getInheritedParameterContexts().stream()
- .map(name -> createParameterReferenceId(name,
versionedParameterContexts))
+ .map(name -> createParameterReferenceId(name,
versionedParameterContexts, parameterProviderReferences, componentIdGenerator))
.forEach(parameterContextRefs::add);
}
@@ -2118,29 +2119,35 @@ public class StandardVersionedComponentSynchronizer
implements VersionedComponen
return parameters;
}
- private String createParameterReferenceId(final String
parameterContextName, final Map<String, VersionedParameterContext>
versionedParameterContexts) {
+ private String createParameterReferenceId(final String
parameterContextName, final Map<String, VersionedParameterContext>
versionedParameterContexts,
+ final Map<String,
ParameterProviderReference> parameterProviderReferences, final
ComponentIdGenerator componentIdGenerator) {
final VersionedParameterContext versionedParameterContext =
versionedParameterContexts.get(parameterContextName);
- final ParameterContext selectedParameterContext =
selectParameterContext(versionedParameterContext, versionedParameterContexts);
+ final ParameterContext selectedParameterContext =
selectParameterContext(versionedParameterContext, versionedParameterContexts,
parameterProviderReferences, componentIdGenerator);
return selectedParameterContext.getIdentifier();
}
- private ParameterContext selectParameterContext(final
VersionedParameterContext versionedParameterContext, final Map<String,
VersionedParameterContext> versionedParameterContexts) {
+ private ParameterContext selectParameterContext(final
VersionedParameterContext versionedParameterContext,
+ final Map<String,
VersionedParameterContext> versionedParameterContexts,
+ final Map<String,
ParameterProviderReference> parameterProviderReferences,
+ final ComponentIdGenerator
componentIdGenerator) {
final ParameterContext contextByName =
getParameterContextByName(versionedParameterContext.getName());
final ParameterContext selectedParameterContext;
if (contextByName == null) {
final String parameterContextId =
context.getFlowMappingOptions().getComponentIdLookup().getComponentId(Optional.ofNullable(versionedParameterContext.getIdentifier()),
versionedParameterContext.getInstanceIdentifier());
- selectedParameterContext =
createParameterContext(versionedParameterContext, parameterContextId,
versionedParameterContexts);
+ selectedParameterContext =
createParameterContext(versionedParameterContext, parameterContextId,
versionedParameterContexts, parameterProviderReferences, componentIdGenerator);
} else {
selectedParameterContext = contextByName;
- addMissingConfiguration(versionedParameterContext,
selectedParameterContext, versionedParameterContexts);
+ addMissingConfiguration(versionedParameterContext,
selectedParameterContext, versionedParameterContexts,
parameterProviderReferences, componentIdGenerator);
}
return selectedParameterContext;
}
private void addMissingConfiguration(final VersionedParameterContext
versionedParameterContext, final ParameterContext currentParameterContext,
- final Map<String,
VersionedParameterContext> versionedParameterContexts) {
+ final Map<String,
VersionedParameterContext> versionedParameterContexts,
+ final Map<String,
ParameterProviderReference> parameterProviderReferences,
+ final ComponentIdGenerator
componentIdGenerator) {
final Map<String, Parameter> parameters = new HashMap<>();
for (final VersionedParameter versionedParameter :
versionedParameterContext.getParameters()) {
final Optional<Parameter> parameterOption =
currentParameterContext.getParameter(versionedParameter.getName());
@@ -2166,10 +2173,11 @@ public class StandardVersionedComponentSynchronizer
implements VersionedComponen
if (versionedParameterContext.getInheritedParameterContexts() != null
&& !versionedParameterContext.getInheritedParameterContexts().isEmpty()
&&
currentParameterContext.getInheritedParameterContexts().isEmpty()) {
currentParameterContext.setInheritedParameterContexts(versionedParameterContext.getInheritedParameterContexts().stream()
- .map(name ->
selectParameterContext(versionedParameterContexts.get(name),
versionedParameterContexts))
+ .map(name ->
selectParameterContext(versionedParameterContexts.get(name),
versionedParameterContexts, parameterProviderReferences, componentIdGenerator))
.collect(Collectors.toList()));
}
if (versionedParameterContext.getParameterProvider() != null &&
currentParameterContext.getParameterProvider() == null) {
+ createMissingParameterProvider(versionedParameterContext,
versionedParameterContext.getParameterProvider(), parameterProviderReferences,
componentIdGenerator);
currentParameterContext.configureParameterProvider(getParameterProviderConfiguration(versionedParameterContext));
}
}