http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6f26290d/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/RegistryConfiguration.java ---------------------------------------------------------------------- diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/RegistryConfiguration.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/RegistryConfiguration.java new file mode 100644 index 0000000..6c16a68 --- /dev/null +++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/RegistryConfiguration.java @@ -0,0 +1,78 @@ +/* + * 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.registry; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +@ApiModel(value = "registryConfiguration") +public class RegistryConfiguration { + + private Boolean supportsManagedAuthorizer; + private Boolean supportsConfigurableAuthorizer; + private Boolean supportsConfigurableUsersAndGroups; + + /** + * @return whether this NiFi Registry supports a managed authorizer. Managed authorizers can visualize users, groups, + * and policies in the UI. This value is read only + */ + @ApiModelProperty( + value = "Whether this NiFi Registry supports a managed authorizer. Managed authorizers can visualize users, groups, and policies in the UI.", + readOnly = true + ) + public Boolean getSupportsManagedAuthorizer() { + return supportsManagedAuthorizer; + } + + public void setSupportsManagedAuthorizer(Boolean supportsManagedAuthorizer) { + this.supportsManagedAuthorizer = supportsManagedAuthorizer; + } + + /** + * @return whether this NiFi Registry supports configurable users and groups. This value is read only + */ + @ApiModelProperty( + value = "Whether this NiFi Registry supports configurable users and groups.", + readOnly = true + ) + public Boolean getSupportsConfigurableUsersAndGroups() { + return supportsConfigurableUsersAndGroups; + } + + public void setSupportsConfigurableUsersAndGroups(Boolean supportsConfigurableUsersAndGroups) { + this.supportsConfigurableUsersAndGroups = supportsConfigurableUsersAndGroups; + } + + /** + * @return whether this NiFi Registry supports a configurable authorizer. This value is read only + */ + @ApiModelProperty( + value = "Whether this NiFi Registry supports a configurable authorizer.", + readOnly = true + ) + public Boolean getSupportsConfigurableAuthorizer() { + return supportsConfigurableAuthorizer; + } + + public void setSupportsConfigurableAuthorizer(Boolean supportsConfigurableAuthorizer) { + this.supportsConfigurableAuthorizer = supportsConfigurableAuthorizer; + } + +}
http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6f26290d/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/AccessPolicy.java ---------------------------------------------------------------------- diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/AccessPolicy.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/AccessPolicy.java new file mode 100644 index 0000000..2cf51f0 --- /dev/null +++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/AccessPolicy.java @@ -0,0 +1,72 @@ +/* + * 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.registry.authorization; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; + +/** + * Access policy details, including the users and user groups to which the policy applies. + */ +@ApiModel("accessPolicy") +public class AccessPolicy extends AccessPolicySummary { + + private Set<Tenant> users; + private Set<Tenant> userGroups; + + @ApiModelProperty(value = "The set of user IDs associated with this access policy.") + public Set<Tenant> getUsers() { + return users; + } + + public void setUsers(Set<Tenant> users) { + this.users = users; + } + + public void addUsers(Collection<? extends Tenant> users) { + if (users != null) { + if (this.users == null) { + this.users = new HashSet<>(); + } + this.users.addAll(users); + } + } + + @ApiModelProperty(value = "The set of user group IDs associated with this access policy.") + public Set<Tenant> getUserGroups() { + return userGroups; + } + + public void setUserGroups(Set<Tenant> userGroups) { + this.userGroups = userGroups; + } + + public void addUserGroups(Collection<? extends Tenant> userGroups) { + if (userGroups != null) { + if (this.userGroups == null) { + this.userGroups = new HashSet<>(); + } + this.userGroups.addAll(userGroups); + } + } + +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6f26290d/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/AccessPolicySummary.java ---------------------------------------------------------------------- diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/AccessPolicySummary.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/AccessPolicySummary.java new file mode 100644 index 0000000..525eb19 --- /dev/null +++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/AccessPolicySummary.java @@ -0,0 +1,74 @@ +/* + * 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.registry.authorization; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +/** + * Access policy summary of which actions ("read', "write", "delete") are allowable for a specified web resource. + */ +@ApiModel("accessPolicySummary") +public class AccessPolicySummary { + + private String identifier; + private String resource; + private String action; + private Boolean configurable; + + @ApiModelProperty(value = "The id of the policy. Set by server at creation time.", readOnly = true) + public String getIdentifier() { + return identifier; + } + + public void setIdentifier(String identifier) { + this.identifier = identifier; + } + + @ApiModelProperty(value = "The resource for this access policy.", required = true + ) + public String getResource() { + return resource; + } + + public void setResource(String resource) { + this.resource = resource; + } + + @ApiModelProperty( + value = "The action associated with this access policy.", + allowableValues = "read, write, delete", + required = true + ) + public String getAction() { + return action; + } + + public void setAction(String action) { + this.action = action; + } + + @ApiModelProperty(value = "Indicates if this access policy is configurable, based on which Authorizer has been configured to manage it.", readOnly = true) + public Boolean getConfigurable() { + return configurable; + } + + public void setConfigurable(Boolean configurable) { + this.configurable = configurable; + } +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6f26290d/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/CurrentUser.java ---------------------------------------------------------------------- diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/CurrentUser.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/CurrentUser.java new file mode 100644 index 0000000..0d21c62 --- /dev/null +++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/CurrentUser.java @@ -0,0 +1,55 @@ +/* + * 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.registry.authorization; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +@ApiModel("currentUser") +public class CurrentUser { + + private String identity; + private boolean anonymous; + private ResourcePermissions resourcePermissions; + + @ApiModelProperty(value = "The identity of the current user", readOnly = true) + public String getIdentity() { + return identity; + } + + public void setIdentity(String identity) { + this.identity = identity; + } + + @ApiModelProperty(value = "Indicates if the current user is anonymous", readOnly = true) + public boolean isAnonymous() { + return anonymous; + } + + public void setAnonymous(boolean anonymous) { + this.anonymous = anonymous; + } + + @ApiModelProperty(value = "The access that the current user has to top level resources", readOnly = true) + public ResourcePermissions getResourcePermissions() { + return resourcePermissions; + } + + public void setResourcePermissions(ResourcePermissions resourcePermissions) { + this.resourcePermissions = resourcePermissions; + } +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6f26290d/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/Permissions.java ---------------------------------------------------------------------- diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/Permissions.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/Permissions.java new file mode 100644 index 0000000..c76a41f --- /dev/null +++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/Permissions.java @@ -0,0 +1,130 @@ +/* + * 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.registry.authorization; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +@ApiModel("permissions") +public class Permissions { + + private boolean canRead = false; + private boolean canWrite = false; + private boolean canDelete = false; + + public Permissions() { + } + + public Permissions(Permissions permissions) { + if (permissions == null) { + throw new IllegalArgumentException("Cannot call copy constructor with null argument"); + } + + this.canRead = permissions.getCanRead(); + this.canWrite = permissions.getCanWrite(); + this.canDelete = permissions.getCanDelete(); + } + + /** + * @return Indicates whether the user can read a given resource. + */ + @ApiModelProperty( + value = "Indicates whether the user can read a given resource.", + readOnly = true + ) + public boolean getCanRead() { + return canRead; + } + + public void setCanRead(boolean canRead) { + this.canRead = canRead; + } + + public Permissions withCanRead(boolean canRead) { + setCanRead(canRead); + return this; + } + + /** + * @return Indicates whether the user can write a given resource. + */ + @ApiModelProperty( + value = "Indicates whether the user can write a given resource.", + readOnly = true + ) + public boolean getCanWrite() { + return canWrite; + } + + public void setCanWrite(boolean canWrite) { + this.canWrite = canWrite; + } + + public Permissions withCanWrite(boolean canWrite) { + setCanWrite(canWrite); + return this; + } + + /** + * @return Indicates whether the user can delete a given resource. + */ + @ApiModelProperty( + value = "Indicates whether the user can delete a given resource.", + readOnly = true + ) + public boolean getCanDelete() { + return canDelete; + } + + public void setCanDelete(boolean canDelete) { + this.canDelete = canDelete; + } + + public Permissions withCanDelete(boolean canDelete) { + setCanDelete(canDelete); + return this; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + Permissions that = (Permissions) o; + + if (canRead != that.canRead) return false; + if (canWrite != that.canWrite) return false; + return canDelete == that.canDelete; + } + + @Override + public int hashCode() { + int result = (canRead ? 1 : 0); + result = 31 * result + (canWrite ? 1 : 0); + result = 31 * result + (canDelete ? 1 : 0); + return result; + } + + @Override + public String toString() { + return "Permissions{" + + "canRead=" + canRead + + ", canWrite=" + canWrite + + ", canDelete=" + canDelete + + '}'; + } +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6f26290d/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/Resource.java ---------------------------------------------------------------------- diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/Resource.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/Resource.java new file mode 100644 index 0000000..7dd4493 --- /dev/null +++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/Resource.java @@ -0,0 +1,56 @@ +/* + * 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.registry.authorization; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +@ApiModel("resource") +public class Resource { + + private String identifier; + private String name; + + /** + * The name of the resource. + * + * @return The name of the resource + */ + @ApiModelProperty(value = "The name of the resource.", readOnly = true) + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + /** + * The identifier of the resource. + * + * @return The identifier of the resource + */ + @ApiModelProperty(value = "The identifier of the resource.", readOnly = true) + public String getIdentifier() { + return identifier; + } + + public void setIdentifier(String identifier) { + this.identifier = identifier; + } + +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6f26290d/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/ResourcePermissions.java ---------------------------------------------------------------------- diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/ResourcePermissions.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/ResourcePermissions.java new file mode 100644 index 0000000..80e95c0 --- /dev/null +++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/ResourcePermissions.java @@ -0,0 +1,127 @@ +/* + * 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.registry.authorization; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +@ApiModel("resourcePermissions") +public class ResourcePermissions { + + private Permissions buckets = new Permissions(); + private Permissions tenants = new Permissions(); + private Permissions policies = new Permissions(); + private Permissions proxy = new Permissions(); + + @ApiModelProperty( + value = "The access that the current user has to any top level resources (a logical 'OR' of all other values)", + readOnly = true) + public Permissions getAnyTopLevelResource() { + return new Permissions() + .withCanRead(buckets.getCanRead() + || tenants.getCanRead() + || policies.getCanRead() + || proxy.getCanRead()) + .withCanWrite(buckets.getCanWrite() + || tenants.getCanWrite() + || policies.getCanWrite() + || proxy.getCanWrite()) + .withCanDelete(buckets.getCanDelete() + || tenants.getCanDelete() + || policies.getCanDelete() + || proxy.getCanDelete()); + } + + @ApiModelProperty( + value = "The access that the current user has to the top level /buckets resource of this NiFi Registry (i.e., access to all buckets)", + readOnly = true) + public Permissions getBuckets() { + return buckets; + } + + public void setBuckets(Permissions buckets) { + this.buckets = buckets; + } + + @ApiModelProperty( + value = "The access that the current user has to the top level /tenants resource of this NiFi Registry", + readOnly = true) + public Permissions getTenants() { + return tenants; + } + + public void setTenants(Permissions tenants) { + this.tenants = tenants; + } + + @ApiModelProperty( + value = "The access that the current user has to the top level /policies resource of this NiFi Registry", + readOnly = true) + public Permissions getPolicies() { + return policies; + } + + public void setPolicies(Permissions policies) { + this.policies = policies; + } + + @ApiModelProperty( + value = "The access that the current user has to the top level /proxy resource of this NiFi Registry", + readOnly = true) + public Permissions getProxy() { + return proxy; + } + + public void setProxy(Permissions proxy) { + this.proxy = proxy; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + ResourcePermissions that = (ResourcePermissions) o; + + if (buckets != null ? !buckets.equals(that.buckets) : that.buckets != null) + return false; + if (tenants != null ? !tenants.equals(that.tenants) : that.tenants != null) + return false; + if (policies != null ? !policies.equals(that.policies) : that.policies != null) + return false; + return proxy != null ? proxy.equals(that.proxy) : that.proxy == null; + } + + @Override + public int hashCode() { + int result = buckets != null ? buckets.hashCode() : 0; + result = 31 * result + (tenants != null ? tenants.hashCode() : 0); + result = 31 * result + (policies != null ? policies.hashCode() : 0); + result = 31 * result + (proxy != null ? proxy.hashCode() : 0); + return result; + } + + @Override + public String toString() { + return "ResourcePermissions{" + + "buckets=" + buckets + + ", tenants=" + tenants + + ", policies=" + policies + + ", proxy=" + proxy + + '}'; + } +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6f26290d/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/Tenant.java ---------------------------------------------------------------------- diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/Tenant.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/Tenant.java new file mode 100644 index 0000000..19eee90 --- /dev/null +++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/Tenant.java @@ -0,0 +1,117 @@ +/* + * 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.registry.authorization; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; + +/** + * A tenant of this NiFi Registry + */ +@ApiModel("tenant") +public class Tenant { + + private String identifier; + private String identity; + private Boolean configurable; + private ResourcePermissions resourcePermissions; + private Set<AccessPolicySummary> accessPolicies; + + public Tenant() {} + + public Tenant(String identifier, String identity) { + this.identifier = identifier; + this.identity = identity; + } + + /** + * @return tenant's unique identifier + */ + @ApiModelProperty( + value = "The computer-generated identifier of the tenant.", + readOnly = true) + public String getIdentifier() { + return identifier; + } + + public void setIdentifier(String identifier) { + this.identifier = identifier; + } + + /** + * @return tenant's identity + */ + @ApiModelProperty( + value = "The human-facing identity of the tenant. This can only be changed if the tenant is configurable.", + required = true) + public String getIdentity() { + return identity; + } + + public void setIdentity(String identity) { + this.identity = identity; + } + + @ApiModelProperty( + value = "Indicates if this tenant is configurable, based on which UserGroupProvider has been configured to manage it.", + readOnly = true) + public Boolean getConfigurable() { + return configurable; + } + + public void setConfigurable(Boolean configurable) { + this.configurable = configurable; + } + + @ApiModelProperty( + value = "A summary top-level resource access policies granted to this tenant.", + readOnly = true + ) + public ResourcePermissions getResourcePermissions() { + return resourcePermissions; + } + + public void setResourcePermissions(ResourcePermissions resourcePermissions) { + this.resourcePermissions = resourcePermissions; + } + + @ApiModelProperty( + value = "The access policies granted to this tenant.", + readOnly = true + ) + public Set<AccessPolicySummary> getAccessPolicies() { + return accessPolicies; + } + + public void setAccessPolicies(Set<AccessPolicySummary> accessPolicies) { + this.accessPolicies = accessPolicies; + } + + public void addAccessPolicies(Collection<AccessPolicySummary> accessPolicies) { + if (accessPolicies != null) { + if (this.accessPolicies == null) { + this.accessPolicies = new HashSet<>(); + } + this.accessPolicies.addAll(accessPolicies); + } + } + +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6f26290d/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/User.java ---------------------------------------------------------------------- diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/User.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/User.java new file mode 100644 index 0000000..6a820ab --- /dev/null +++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/User.java @@ -0,0 +1,58 @@ +/* + * 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.registry.authorization; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; + +@ApiModel("user") +public class User extends Tenant { + + private Set<Tenant> userGroups; + + public User() {} + + public User(String identifier, String identity) { + super(identifier, identity); + } + + @ApiModelProperty( + value = "The groups to which the user belongs.", + readOnly = true + ) + public Set<Tenant> getUserGroups() { + return userGroups; + } + + public void setUserGroups(Set<Tenant> userGroups) { + this.userGroups = userGroups; + } + + public void addUserGroups(Collection<? extends Tenant> userGroups) { + if (userGroups != null) { + if (this.userGroups == null) { + this.userGroups = new HashSet<>(); + } + this.userGroups.addAll(userGroups); + } + } + +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6f26290d/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/UserGroup.java ---------------------------------------------------------------------- diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/UserGroup.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/UserGroup.java new file mode 100644 index 0000000..570502d --- /dev/null +++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/UserGroup.java @@ -0,0 +1,70 @@ +/* + * 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.registry.authorization; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; + +/** + * A user group, used to apply a single set of authorization policies to a group of users. + */ +@ApiModel("userGroup") +public class UserGroup extends Tenant { + + private Set<Tenant> users; + + public UserGroup() {} + + public UserGroup(String identifier, String identity) { + super(identifier, identity); + } + + /** + * @return The users that belong to this user group. + */ + @ApiModelProperty(value = "The users that belong to this user group. This can only be changed if this group is configurable.") + public Set<Tenant> getUsers() { + return users; + } + + public void setUsers(Set<Tenant> users) { + this.users = users; + } + + public void addUsers(Collection<? extends Tenant> users) { + if (users != null) { + if (this.users == null) { + this.users = new HashSet<>(); + } + this.users.addAll(users); + } + } + + public void addUser(Tenant user) { + if (user != null) { + if (this.users == null) { + this.users = new HashSet<>(); + } + this.users.add(user); + } + } + +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6f26290d/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/bucket/Bucket.java ---------------------------------------------------------------------- diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/bucket/Bucket.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/bucket/Bucket.java new file mode 100644 index 0000000..94402a9 --- /dev/null +++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/bucket/Bucket.java @@ -0,0 +1,109 @@ +/* + * 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.registry.bucket; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import org.apache.nifi.registry.authorization.Permissions; +import org.apache.nifi.registry.link.LinkableEntity; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; +import javax.xml.bind.annotation.XmlRootElement; +import java.util.Objects; + +@XmlRootElement +@ApiModel(value = "bucket") +public class Bucket extends LinkableEntity { + + @NotBlank + private String identifier; + + @NotBlank + private String name; + + @Min(1) + private long createdTimestamp; + + private String description; + + private Permissions permissions; + + @ApiModelProperty(value = "An ID to uniquely identify this object.", readOnly = true) + public String getIdentifier() { + return identifier; + } + + public void setIdentifier(String identifier) { + this.identifier = identifier; + } + + @ApiModelProperty(value = "The name of the bucket.", required = true) + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @ApiModelProperty(value = "The timestamp of when the bucket was first created. This is set by the server at creation time.", readOnly = true) + public long getCreatedTimestamp() { + return createdTimestamp; + } + + public void setCreatedTimestamp(long createdTimestamp) { + this.createdTimestamp = createdTimestamp; + } + + @ApiModelProperty("A description of the bucket.") + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + @ApiModelProperty(value = "The access that the current user has to this bucket.", readOnly = true) + public Permissions getPermissions() { + return permissions; + } + + public void setPermissions(Permissions permissions) { + this.permissions = permissions; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.getIdentifier()); + } + + @Override + public boolean equals(final Object obj) { + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + + final Bucket other = (Bucket) obj; + return Objects.equals(this.getIdentifier(), other.getIdentifier()); + } + +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6f26290d/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/bucket/BucketItem.java ---------------------------------------------------------------------- diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/bucket/BucketItem.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/bucket/BucketItem.java new file mode 100644 index 0000000..ce9faa7 --- /dev/null +++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/bucket/BucketItem.java @@ -0,0 +1,155 @@ +/* + * 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.registry.bucket; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import org.apache.nifi.registry.authorization.Permissions; +import org.apache.nifi.registry.link.LinkableEntity; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.util.Objects; + +@ApiModel("bucketItem") +public abstract class BucketItem extends LinkableEntity { + + @NotBlank + private String identifier; + + @NotBlank + private String name; + + private String description; + + @NotBlank + private String bucketIdentifier; + + // read-only + private String bucketName; + + @Min(1) + private long createdTimestamp; + + @Min(1) + private long modifiedTimestamp; + + @NotNull + private final BucketItemType type; + + private Permissions permissions; + + public BucketItem(final BucketItemType type) { + this.type = type; + } + + @ApiModelProperty(value = "An ID to uniquely identify this object.", readOnly = true) + public String getIdentifier() { + return identifier; + } + + public void setIdentifier(String identifier) { + this.identifier = identifier; + } + + @ApiModelProperty(value = "The name of the item.", required = true) + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @ApiModelProperty("A description of the item.") + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + @ApiModelProperty(value = "The identifier of the bucket this items belongs to. This cannot be changed after the item is created.", required = true) + public String getBucketIdentifier() { + return bucketIdentifier; + } + + public void setBucketIdentifier(String bucketIdentifier) { + this.bucketIdentifier = bucketIdentifier; + } + + @ApiModelProperty(value = "The name of the bucket this items belongs to.", readOnly = true) + public String getBucketName() { + return bucketName; + } + + public void setBucketName(String bucketName) { + this.bucketName = bucketName; + } + + @ApiModelProperty(value = "The timestamp of when the item was created, as milliseconds since epoch.", readOnly = true) + public long getCreatedTimestamp() { + return createdTimestamp; + } + + public void setCreatedTimestamp(long createdTimestamp) { + this.createdTimestamp = createdTimestamp; + } + + @ApiModelProperty(value = "The timestamp of when the item was last modified, as milliseconds since epoch.", readOnly = true) + public long getModifiedTimestamp() { + return modifiedTimestamp; + } + + public void setModifiedTimestamp(long modifiedTimestamp) { + this.modifiedTimestamp = modifiedTimestamp; + } + + @ApiModelProperty(value = "The type of item.", required = true) + public BucketItemType getType() { + return type; + } + + @ApiModelProperty(value = "The access that the current user has to the bucket containing this item.", readOnly = true) + public Permissions getPermissions() { + return permissions; + } + + public void setPermissions(Permissions permissions) { + this.permissions = permissions; + } + + @Override + public int hashCode() { + return Objects.hashCode(this.getIdentifier()); + } + + @Override + public boolean equals(final Object obj) { + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + + final BucketItem other = (BucketItem) obj; + return Objects.equals(this.getIdentifier(), other.getIdentifier()); + } +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6f26290d/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/bucket/BucketItemType.java ---------------------------------------------------------------------- diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/bucket/BucketItemType.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/bucket/BucketItemType.java new file mode 100644 index 0000000..e119c02 --- /dev/null +++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/bucket/BucketItemType.java @@ -0,0 +1,27 @@ +/* + * 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.registry.bucket; + +/** + * Type of item in a bucket. + */ +public enum BucketItemType { + + // The case of these enum names matches what we want to return in + // the BucketItem.type field when serialized in an API response. + Flow; +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6f26290d/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/diff/ComponentDifference.java ---------------------------------------------------------------------- diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/diff/ComponentDifference.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/diff/ComponentDifference.java new file mode 100644 index 0000000..d4fb5d0 --- /dev/null +++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/diff/ComponentDifference.java @@ -0,0 +1,77 @@ +/* + * 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.registry.diff; + +import io.swagger.annotations.ApiModelProperty; + +/** + * Represents a specific, individual difference that has changed between 2 versions. + * The change data and textual descriptions of the change are included for client consumption. + */ +public class ComponentDifference { + private String valueA; + private String valueB; + private String changeDescription; + private String differenceType; + private String differenceTypeDescription; + + @ApiModelProperty("The earlier value from the difference.") + public String getValueA() { + return valueA; + } + + public void setValueA(String valueA) { + this.valueA = valueA; + } + + @ApiModelProperty("The newer value from the difference.") + public String getValueB() { + return valueB; + } + + public void setValueB(String valueB) { + this.valueB = valueB; + } + + @ApiModelProperty("The description of the change.") + public String getChangeDescription() { + return changeDescription; + } + + public void setChangeDescription(String changeDescription) { + this.changeDescription = changeDescription; + } + + @ApiModelProperty("The key to the difference.") + public String getDifferenceType() { + return differenceType; + } + + public void setDifferenceType(String differenceType) { + this.differenceType = differenceType; + } + + @ApiModelProperty("The description of the change type.") + public String getDifferenceTypeDescription() { + return differenceTypeDescription; + } + + public void setDifferenceTypeDescription(String differenceTypeDescription) { + this.differenceTypeDescription = differenceTypeDescription; + } +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6f26290d/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/diff/ComponentDifferenceGroup.java ---------------------------------------------------------------------- diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/diff/ComponentDifferenceGroup.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/diff/ComponentDifferenceGroup.java new file mode 100644 index 0000000..a7b1d58 --- /dev/null +++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/diff/ComponentDifferenceGroup.java @@ -0,0 +1,96 @@ +/* + * 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.registry.diff; + +import io.swagger.annotations.ApiModelProperty; + +import java.util.HashSet; +import java.util.Objects; +import java.util.Set; + +/** + * Represents a group of differences related to a specific component in a flow. + */ +public class ComponentDifferenceGroup { + private String componentId; + private String componentName; + private String componentType; + private String processGroupId; + private Set<ComponentDifference> differences = new HashSet<>(); + + @ApiModelProperty("The id of the component whose changes are grouped together.") + public String getComponentId() { + return componentId; + } + + public void setComponentId(String componentId) { + this.componentId = componentId; + } + + @ApiModelProperty("The name of the component whose changes are grouped together.") + public String getComponentName() { + return componentName; + } + + public void setComponentName(String componentName) { + this.componentName = componentName; + } + + @ApiModelProperty("The type of component these changes relate to.") + public String getComponentType() { + return componentType; + } + + public void setComponentType(String componentType) { + this.componentType = componentType; + } + + @ApiModelProperty("The process group id for this component.") + public String getProcessGroupId() { + return processGroupId; + } + + public void setProcessGroupId(String processGroupId) { + this.processGroupId = processGroupId; + } + + @ApiModelProperty("The list of changes related to this component between the 2 versions.") + public Set<ComponentDifference> getDifferences() { + return differences; + } + + public void setDifferences(Set<ComponentDifference> differences) { + this.differences = differences; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ComponentDifferenceGroup that = (ComponentDifferenceGroup) o; + return Objects.equals(componentId, that.componentId) + && Objects.equals(componentName, that.componentName) + && Objects.equals(componentType, that.componentType) + && Objects.equals(processGroupId, that.processGroupId); + } + + @Override + public int hashCode() { + return Objects.hash(componentId, componentName, componentType, processGroupId); + } +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6f26290d/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/diff/VersionedFlowDifference.java ---------------------------------------------------------------------- diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/diff/VersionedFlowDifference.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/diff/VersionedFlowDifference.java new file mode 100644 index 0000000..ccc6a05 --- /dev/null +++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/diff/VersionedFlowDifference.java @@ -0,0 +1,79 @@ +/* + * 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.registry.diff; + +import io.swagger.annotations.ApiModelProperty; + +import java.util.Set; + +/** + * Represents the result of a diff between 2 versions of the same flow. + * A subset of the model classes in registry.flow.diff for exposing on the API + * The differences are grouped by component + */ +public class VersionedFlowDifference { + private String bucketId; + private String flowId; + private int versionA; + private int versionB; + private Set<ComponentDifferenceGroup> componentDifferenceGroups; + + public Set<ComponentDifferenceGroup> getComponentDifferenceGroups() { + return componentDifferenceGroups; + } + + public void setComponentDifferenceGroups(Set<ComponentDifferenceGroup> componentDifferenceGroups) { + this.componentDifferenceGroups = componentDifferenceGroups; + } + + @ApiModelProperty("The id of the bucket that the flow is stored in.") + public String getBucketId() { + return bucketId; + } + + public void setBucketId(String bucketId) { + this.bucketId = bucketId; + } + + @ApiModelProperty("The id of the flow that is being examined.") + public String getFlowId() { + return flowId; + } + + public void setFlowId(String flowId) { + this.flowId = flowId; + } + + @ApiModelProperty("The earlier version from the diff operation.") + public int getVersionA() { + return versionA; + } + + public void setVersionA(int versionA) { + this.versionA = versionA; + } + + @ApiModelProperty("The latter version from the diff operation.") + public int getVersionB() { + return versionB; + } + + public void setVersionB(int versionB) { + this.versionB = versionB; + } +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6f26290d/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/field/Fields.java ---------------------------------------------------------------------- diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/field/Fields.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/field/Fields.java new file mode 100644 index 0000000..d1aac6d --- /dev/null +++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/field/Fields.java @@ -0,0 +1,41 @@ +/* + * 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.registry.field; + +import java.util.Set; + +public class Fields { + + private Set<String> fields; + + public Fields() { + + } + + public Fields(Set<String> fields) { + this.fields = fields; + } + + public Set<String> getFields() { + return fields; + } + + public void setFields(Set<String> fields) { + this.fields = fields; + } + +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6f26290d/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/BatchSize.java ---------------------------------------------------------------------- diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/BatchSize.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/BatchSize.java new file mode 100644 index 0000000..5a51240 --- /dev/null +++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/BatchSize.java @@ -0,0 +1,76 @@ +/* + * 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.registry.flow; + +import io.swagger.annotations.ApiModelProperty; +import java.util.Objects; + + +public class BatchSize { + private Integer count; + private String size; + private String duration; + + @ApiModelProperty("Preferred number of flow files to include in a transaction.") + public Integer getCount() { + return count; + } + + public void setCount(Integer count) { + this.count = count; + } + + @ApiModelProperty("Preferred number of bytes to include in a transaction.") + public String getSize() { + return size; + } + + public void setSize(String size) { + this.size = size; + } + + @ApiModelProperty("Preferred amount of time that a transaction should span.") + public String getDuration() { + return duration; + } + + public void setDuration(String duration) { + this.duration = duration; + } + + @Override + public int hashCode() { + return Objects.hash(count, duration, size); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + + final BatchSize other = (BatchSize) obj; + return Objects.equals(count, other.count) && Objects.equals(size, other.size) && Objects.equals(duration, other.duration); + } +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6f26290d/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/Bundle.java ---------------------------------------------------------------------- diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/Bundle.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/Bundle.java new file mode 100644 index 0000000..1050ac9 --- /dev/null +++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/Bundle.java @@ -0,0 +1,83 @@ +/* + * 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.registry.flow; + +import java.util.Objects; + +import io.swagger.annotations.ApiModelProperty; + +public class Bundle { + private String group; + private String artifact; + private String version; + + public Bundle() { + } + + public Bundle(final String group, final String artifact, final String version) { + this.group = group; + this.artifact = artifact; + this.version = version; + } + + @ApiModelProperty("The group of the bundle") + public String getGroup() { + return group; + } + + public void setGroup(String group) { + this.group = group; + } + + @ApiModelProperty("The artifact of the bundle") + public String getArtifact() { + return artifact; + } + + public void setArtifact(String artifact) { + this.artifact = artifact; + } + + @ApiModelProperty("The version of the bundle") + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + + if (obj == null || getClass() != obj.getClass()) { + return false; + } + + final Bundle other = (Bundle) obj; + return Objects.equals(group, other.group) && Objects.equals(artifact, other.artifact) && Objects.equals(version, other.version); + } + + @Override + public int hashCode() { + return Objects.hash(group, artifact, version); + } +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6f26290d/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/ComponentType.java ---------------------------------------------------------------------- diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/ComponentType.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/ComponentType.java new file mode 100644 index 0000000..300c146 --- /dev/null +++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/ComponentType.java @@ -0,0 +1,49 @@ +/* + * 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.registry.flow; + +public enum ComponentType { + + CONNECTION("Connection"), + PROCESSOR("Processor"), + PROCESS_GROUP("Process Group"), + REMOTE_PROCESS_GROUP("Remote Process Group"), + INPUT_PORT("Input Port"), + OUTPUT_PORT("Output Port"), + REMOTE_INPUT_PORT("Remote Input Port"), + REMOTE_OUTPUT_PORT("Remote Output Port"), + FUNNEL("Funnel"), + LABEL("Label"), + CONTROLLER_SERVICE("Controller Service"); + + + private final String typeName; + + private ComponentType(final String typeName) { + this.typeName = typeName; + } + + public String getTypeName() { + return typeName; + } + + @Override + public String toString() { + return typeName; + } +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6f26290d/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/ConnectableComponent.java ---------------------------------------------------------------------- diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/ConnectableComponent.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/ConnectableComponent.java new file mode 100644 index 0000000..de144f2 --- /dev/null +++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/ConnectableComponent.java @@ -0,0 +1,95 @@ +/* + * 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.registry.flow; + +import io.swagger.annotations.ApiModelProperty; +import java.util.Objects; + + +public class ConnectableComponent { + private String id; + private ConnectableComponentType type; + private String groupId; + private String name; + private String comments; + + @ApiModelProperty(value = "The id of the connectable component.", required = true) + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + @ApiModelProperty(value = "The type of component the connectable is.", required = true) + public ConnectableComponentType getType() { + return type; + } + + public void setType(ConnectableComponentType type) { + this.type = type; + } + + @ApiModelProperty(value = "The id of the group that the connectable component resides in", required = true) + public String getGroupId() { + return groupId; + } + + public void setGroupId(String groupId) { + this.groupId = groupId; + } + + @ApiModelProperty("The name of the connectable component") + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @ApiModelProperty("The comments for the connectable component.") + public String getComments() { + return comments; + } + + public void setComments(String comments) { + this.comments = comments; + } + + @Override + public int hashCode() { + return Objects.hash(id, groupId, name, type, comments); + } + + @Override + public boolean equals(Object obj) { + if (obj == null) { + return false; + } + if (obj == this) { + return true; + } + if (!(obj instanceof ConnectableComponent)) { + return false; + } + final ConnectableComponent other = (ConnectableComponent) obj; + return Objects.equals(id, other.id); + } +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6f26290d/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/ConnectableComponentType.java ---------------------------------------------------------------------- diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/ConnectableComponentType.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/ConnectableComponentType.java new file mode 100644 index 0000000..1b73cac --- /dev/null +++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/ConnectableComponentType.java @@ -0,0 +1,27 @@ +/* + * 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.registry.flow; + +public enum ConnectableComponentType { + PROCESSOR, + REMOTE_INPUT_PORT, + REMOTE_OUTPUT_PORT, + INPUT_PORT, + OUTPUT_PORT, + FUNNEL; +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6f26290d/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/ControllerServiceAPI.java ---------------------------------------------------------------------- diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/ControllerServiceAPI.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/ControllerServiceAPI.java new file mode 100644 index 0000000..b46e87a --- /dev/null +++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/ControllerServiceAPI.java @@ -0,0 +1,65 @@ +/* + * 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.registry.flow; + +import java.util.Objects; + +import io.swagger.annotations.ApiModelProperty; + +public class ControllerServiceAPI { + private String type; + private Bundle bundle; + + @ApiModelProperty("The fully qualified name of the service interface.") + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + @ApiModelProperty("The details of the artifact that bundled this service interface.") + public Bundle getBundle() { + return bundle; + } + + public void setBundle(Bundle bundle) { + this.bundle = bundle; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + + if (o == null || getClass() != o.getClass()) { + return false; + } + + final ControllerServiceAPI other = (ControllerServiceAPI) o; + return Objects.equals(type, other.type) && Objects.equals(bundle, other.bundle); + } + + @Override + public int hashCode() { + return Objects.hash(type, bundle); + } + +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6f26290d/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/PortType.java ---------------------------------------------------------------------- diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/PortType.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/PortType.java new file mode 100644 index 0000000..6a32c11 --- /dev/null +++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/PortType.java @@ -0,0 +1,23 @@ +/* + * 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.registry.flow; + +public enum PortType { + INPUT_PORT, + OUTPUT_PORT; +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6f26290d/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/Position.java ---------------------------------------------------------------------- diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/Position.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/Position.java new file mode 100644 index 0000000..bee14d2 --- /dev/null +++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/Position.java @@ -0,0 +1,87 @@ +/* + * 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.registry.flow; + +import org.apache.commons.lang3.builder.EqualsBuilder; +import org.apache.commons.lang3.builder.HashCodeBuilder; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +@ApiModel(description = "The position of a component on the graph") +public class Position { + private double x; + private double y; + + public Position() { + } + + public Position(double x, double y) { + this.x = x; + this.y = y; + } + + @ApiModelProperty("The x coordinate.") + public double getX() { + return x; + } + + public void setX(double x) { + this.x = x; + } + + @ApiModelProperty("The y coordinate.") + public double getY() { + return y; + } + + public void setY(double y) { + this.y = y; + } + + @Override + public String toString() { + return "[x=" + x + ", y=" + y + "]"; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + + if (o == null || getClass() != o.getClass()) { + return false; + } + + Position position = (Position) o; + + return new EqualsBuilder() + .append(x, position.x) + .append(y, position.y) + .isEquals(); + } + + @Override + public int hashCode() { + return new HashCodeBuilder(17, 37) + .append(x) + .append(y) + .toHashCode(); + } +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6f26290d/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/SiteToSiteTransportProtocol.java ---------------------------------------------------------------------- diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/SiteToSiteTransportProtocol.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/SiteToSiteTransportProtocol.java new file mode 100644 index 0000000..9f94c1a --- /dev/null +++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/SiteToSiteTransportProtocol.java @@ -0,0 +1,23 @@ +/* + * 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.registry.flow; + +public enum SiteToSiteTransportProtocol { + RAW, + HTTP; +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6f26290d/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedComponent.java ---------------------------------------------------------------------- diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedComponent.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedComponent.java new file mode 100644 index 0000000..b3a27aa --- /dev/null +++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedComponent.java @@ -0,0 +1,103 @@ +/* + * 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.registry.flow; + +import java.util.Objects; + +import io.swagger.annotations.ApiModelProperty; + + +public abstract class VersionedComponent { + + private String identifier; + private String groupId; + private String name; + private String comments; + private Position position; + + @ApiModelProperty("The component's unique identifier") + public String getIdentifier() { + return identifier; + } + + public void setIdentifier(String identifier) { + this.identifier = identifier; + } + + @ApiModelProperty("The ID of the Process Group that this component belongs to") + public String getGroupIdentifier() { + return groupId; + } + + public void setGroupIdentifier(String groupId) { + this.groupId = groupId; + } + + @ApiModelProperty("The component's name") + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @ApiModelProperty("The component's position on the graph") + public Position getPosition() { + return position; + } + + public void setPosition(Position position) { + this.position = position; + } + + @ApiModelProperty("The user-supplied comments for the component") + public String getComments() { + return comments; + } + + public void setComments(String comments) { + this.comments = comments; + } + + public abstract ComponentType getComponentType(); + + public void setComponentType(ComponentType type) { + // purposely do nothing here, this just to allow unmarshalling + } + + @Override + public int hashCode() { + return Objects.hash(identifier); + } + + @Override + public boolean equals(final Object obj) { + if (obj == null) { + return false; + } + if (obj == this) { + return true; + } + if (!(obj instanceof VersionedComponent)) { + return false; + } + final VersionedComponent other = (VersionedComponent) obj; + return Objects.equals(identifier, other.identifier); + } +} http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6f26290d/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedConfigurableComponent.java ---------------------------------------------------------------------- diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedConfigurableComponent.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedConfigurableComponent.java new file mode 100644 index 0000000..3201c5f --- /dev/null +++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedConfigurableComponent.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.registry.flow; + +import java.util.Map; + +/** + * A component that has property descriptors and can be configured with values for those properties. + */ +public interface VersionedConfigurableComponent { + + Map<String,VersionedPropertyDescriptor> getPropertyDescriptors(); + + void setPropertyDescriptors(Map<String,VersionedPropertyDescriptor> propertyDescriptors); + + Map<String,String> getProperties(); + + void setProperties(Map<String,String> properties); + +}