This is an automated email from the ASF dual-hosted git repository.
mcgilman pushed a commit to branch NIFI-15258
in repository https://gitbox.apache.org/repos/asf/nifi.git
The following commit(s) were added to refs/heads/NIFI-15258 by this push:
new 60d1ece5de6 NIFI-15336: Created AuthorizableSecret and implemented
ParameterProviderSecretProvider to provide the Parameter Provider as the
associated Authorizable (#10644)
60d1ece5de6 is described below
commit 60d1ece5de6fee1d241458a21c3d1313e64b0c60
Author: Mark Payne <[email protected]>
AuthorDate: Mon Dec 15 12:13:19 2025 -0500
NIFI-15336: Created AuthorizableSecret and implemented
ParameterProviderSecretProvider to provide the Parameter Provider as the
associated Authorizable (#10644)
---
.../secrets/ConnectorTestRunnerAuthorizable.java | 34 ++++++++++++++
.../secrets/ConnectorTestRunnerSecretProvider.java | 4 ++
.../connector/secrets/AuthorizableSecret.java | 25 ++++++++++
.../secrets/ParameterProviderSecretProvider.java | 1 +
.../connector/secrets/StandardSecret.java | 54 +++++++++++++++++-----
5 files changed, 106 insertions(+), 12 deletions(-)
diff --git
a/nifi-connector-mock-bundle/nifi-connector-mock-server/src/main/java/org/apache/nifi/mock/connector/server/secrets/ConnectorTestRunnerAuthorizable.java
b/nifi-connector-mock-bundle/nifi-connector-mock-server/src/main/java/org/apache/nifi/mock/connector/server/secrets/ConnectorTestRunnerAuthorizable.java
new file mode 100644
index 00000000000..5600c34f143
--- /dev/null
+++
b/nifi-connector-mock-bundle/nifi-connector-mock-server/src/main/java/org/apache/nifi/mock/connector/server/secrets/ConnectorTestRunnerAuthorizable.java
@@ -0,0 +1,34 @@
+/*
+ * 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.mock.connector.server.secrets;
+
+import org.apache.nifi.authorization.Resource;
+import org.apache.nifi.authorization.resource.Authorizable;
+import org.apache.nifi.authorization.resource.ResourceFactory;
+
+public class ConnectorTestRunnerAuthorizable implements Authorizable {
+ @Override
+ public Authorizable getParentAuthorizable() {
+ return null;
+ }
+
+ @Override
+ public Resource getResource() {
+ return ResourceFactory.getControllerResource();
+ }
+}
diff --git
a/nifi-connector-mock-bundle/nifi-connector-mock-server/src/main/java/org/apache/nifi/mock/connector/server/secrets/ConnectorTestRunnerSecretProvider.java
b/nifi-connector-mock-bundle/nifi-connector-mock-server/src/main/java/org/apache/nifi/mock/connector/server/secrets/ConnectorTestRunnerSecretProvider.java
index 16e05ff4f0b..3323eb9eb9e 100644
---
a/nifi-connector-mock-bundle/nifi-connector-mock-server/src/main/java/org/apache/nifi/mock/connector/server/secrets/ConnectorTestRunnerSecretProvider.java
+++
b/nifi-connector-mock-bundle/nifi-connector-mock-server/src/main/java/org/apache/nifi/mock/connector/server/secrets/ConnectorTestRunnerSecretProvider.java
@@ -17,6 +17,7 @@
package org.apache.nifi.mock.connector.server.secrets;
+import org.apache.nifi.authorization.resource.Authorizable;
import org.apache.nifi.components.connector.Secret;
import org.apache.nifi.components.connector.secrets.SecretProvider;
import org.apache.nifi.components.connector.secrets.StandardSecret;
@@ -29,6 +30,7 @@ import java.util.Map;
public class ConnectorTestRunnerSecretProvider implements SecretProvider {
public static final String GROUP_NAME = "Default";
+ private static final Authorizable AUTHORIZABLE = new
ConnectorTestRunnerAuthorizable();
private final Map<String, String> secrets = new HashMap<>();
@@ -55,6 +57,7 @@ public class ConnectorTestRunnerSecretProvider implements
SecretProvider {
.groupName(GROUP_NAME)
.name(entry.getKey())
.value(entry.getValue())
+ .authorizable(AUTHORIZABLE)
.build();
secrets.add(secret);
@@ -76,6 +79,7 @@ public class ConnectorTestRunnerSecretProvider implements
SecretProvider {
.groupName(GROUP_NAME)
.name(secretName)
.value(value)
+ .authorizable(AUTHORIZABLE)
.build();
matchingSecrets.add(secret);
diff --git
a/nifi-framework-api/src/main/java/org/apache/nifi/components/connector/secrets/AuthorizableSecret.java
b/nifi-framework-api/src/main/java/org/apache/nifi/components/connector/secrets/AuthorizableSecret.java
new file mode 100644
index 00000000000..3bcf6b099cd
--- /dev/null
+++
b/nifi-framework-api/src/main/java/org/apache/nifi/components/connector/secrets/AuthorizableSecret.java
@@ -0,0 +1,25 @@
+/*
+ * 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.components.connector.secrets;
+
+import org.apache.nifi.authorization.resource.Authorizable;
+import org.apache.nifi.components.connector.Secret;
+
+public interface AuthorizableSecret extends Secret, Authorizable {
+
+}
diff --git
a/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/components/connector/secrets/ParameterProviderSecretProvider.java
b/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/components/connector/secrets/ParameterProviderSecretProvider.java
index 2f058f3c2a0..b7d37efc193 100644
---
a/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/components/connector/secrets/ParameterProviderSecretProvider.java
+++
b/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/components/connector/secrets/ParameterProviderSecretProvider.java
@@ -67,6 +67,7 @@ public class ParameterProviderSecretProvider implements
SecretProvider {
.name(descriptor.getName())
.description(descriptor.getDescription())
.value(parameter.getValue())
+ .authorizable(parameterProvider)
.build();
}
diff --git
a/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/components/connector/secrets/StandardSecret.java
b/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/components/connector/secrets/StandardSecret.java
index 443b19cd06f..f2da84d2332 100644
---
a/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/components/connector/secrets/StandardSecret.java
+++
b/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/components/connector/secrets/StandardSecret.java
@@ -17,16 +17,18 @@
package org.apache.nifi.components.connector.secrets;
-import org.apache.nifi.components.connector.Secret;
+import org.apache.nifi.authorization.Resource;
+import org.apache.nifi.authorization.resource.Authorizable;
import java.util.Objects;
-public class StandardSecret implements Secret {
+public class StandardSecret implements AuthorizableSecret {
private final String providerName;
private final String groupName;
private final String name;
private final String description;
private final String value;
+ private final Authorizable authorizable;
private StandardSecret(final Builder builder) {
this.providerName = builder.providerName;
@@ -34,6 +36,7 @@ public class StandardSecret implements Secret {
this.name = builder.name;
this.description = builder.description;
this.value = builder.value;
+ this.authorizable = builder.authorizable;
}
@Override
@@ -63,13 +66,12 @@ public class StandardSecret implements Secret {
@Override
public String toString() {
- return "StandardSecret[providerName=%s, groupName=%s, name=%s,
description=%s]".formatted(
- providerName, groupName, name, description);
+ return "StandardSecret[providerName=%s, groupName=%s,
name=%s]".formatted(providerName, groupName, name);
}
@Override
public int hashCode() {
- return Objects.hash(providerName, groupName, name, description);
+ return Objects.hash(providerName, groupName, name);
}
@Override
@@ -83,8 +85,17 @@ public class StandardSecret implements Secret {
final StandardSecret other = (StandardSecret) obj;
return Objects.equals(this.providerName, other.providerName)
&& Objects.equals(this.groupName, other.groupName)
- && Objects.equals(this.name, other.name)
- && Objects.equals(this.description, other.description);
+ && Objects.equals(this.name, other.name);
+ }
+
+ @Override
+ public Authorizable getParentAuthorizable() {
+ return authorizable.getParentAuthorizable();
+ }
+
+ @Override
+ public Resource getResource() {
+ return authorizable.getResource();
}
public static class Builder {
@@ -93,33 +104,52 @@ public class StandardSecret implements Secret {
private String name;
private String description;
private String value;
+ private Authorizable authorizable;
- public Builder providerName(String providerName) {
+ public Builder providerName(final String providerName) {
this.providerName = providerName;
return this;
}
- public Builder groupName(String groupName) {
+ public Builder groupName(final String groupName) {
this.groupName = groupName;
return this;
}
- public Builder name(String name) {
+ public Builder name(final String name) {
this.name = name;
return this;
}
- public Builder description(String description) {
+ public Builder description(final String description) {
this.description = description;
return this;
}
- public Builder value(String value) {
+ public Builder value(final String value) {
this.value = value;
return this;
}
+ public Builder authorizable(final Authorizable authorizable) {
+ this.authorizable = authorizable;
+ return this;
+ }
+
public StandardSecret build() {
+ if (providerName == null) {
+ throw new IllegalStateException("Provider name is required");
+ }
+ if (groupName == null) {
+ throw new IllegalStateException("Group name is required");
+ }
+ if (name == null) {
+ throw new IllegalStateException("Secret name is required");
+ }
+ if (authorizable == null) {
+ throw new IllegalStateException("Authorizable is required");
+ }
+
return new StandardSecret(this);
}
}