[ https://issues.apache.org/jira/browse/NIFIREG-211?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16701005#comment-16701005 ]
ASF GitHub Bot commented on NIFIREG-211: ---------------------------------------- Github user alopresto commented on a diff in the pull request: https://github.com/apache/nifi-registry/pull/148#discussion_r236840020 --- Diff: nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/extension/ExtensionBundleVersionMetadata.java --- @@ -0,0 +1,161 @@ +/* + * 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.extension; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +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; + +@ApiModel +@XmlRootElement +public class ExtensionBundleVersionMetadata extends LinkableEntity implements Comparable<ExtensionBundleVersionMetadata> { + + @NotBlank + private String id; + + @NotBlank + private String extensionBundleId; + + @NotBlank + private String bucketId; + + @NotBlank + private String version; + + private ExtensionBundleVersionDependency dependency; + + @Min(1) + private long timestamp; + + @NotBlank + private String author; + + private String description; + + @NotBlank + private String sha256Hex; + + + @ApiModelProperty(value = "The id of this version of the extension bundle") + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + @ApiModelProperty(value = "The id of the extension bundle this version is for") + public String getExtensionBundleId() { + return extensionBundleId; + } + + public void setExtensionBundleId(String extensionBundleId) { + this.extensionBundleId = extensionBundleId; + } + + @ApiModelProperty(value = "The id of the bucket the extension bundle belongs to", required = true) + public String getBucketId() { + return bucketId; + } + + public void setBucketId(String bucketId) { + this.bucketId = bucketId; + } + + @ApiModelProperty(value = "The version of the extension bundle") + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } + + @ApiModelProperty(value = "The optional bundle dependency (i.e. another bundle this bundle is dependent on)") + public ExtensionBundleVersionDependency getDependency() { + return dependency; + } + + public void setDependency(ExtensionBundleVersionDependency dependency) { + this.dependency = dependency; + } + + @ApiModelProperty(value = "The timestamp of the create date of this version") + public long getTimestamp() { + return timestamp; + } + + public void setTimestamp(long timestamp) { + this.timestamp = timestamp; + } + + @ApiModelProperty(value = "The identity that created this version") + public String getAuthor() { + return author; + } + + public void setAuthor(String author) { + this.author = author; + } + + @ApiModelProperty(value = "The description for this version") + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + @ApiModelProperty(value = "The hex representation of the SHA-256 digest of the binary content for this version") + public String getSha256Hex() { + return sha256Hex; + } + + public void setSha256Hex(String sha256Hex) { + this.sha256Hex = sha256Hex; + } + + @Override + public int compareTo(final ExtensionBundleVersionMetadata o) { + return o == null ? -1 : version.compareTo(o.version); + } + + @Override + public int hashCode() { + return Objects.hashCode(this.id); + } + + @Override + public boolean equals(Object obj) { + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + + final ExtensionBundleVersionMetadata other = (ExtensionBundleVersionMetadata) obj; + return Objects.equals(this.id, other.id); --- End diff -- Will this cause issues with `Set`/`List` assignments/`#contains()` because the IDs can be equal but the data within them different? I remember this was always an issue with Java O/RM. > Add extension bundles as a type of versioned item > ------------------------------------------------- > > Key: NIFIREG-211 > URL: https://issues.apache.org/jira/browse/NIFIREG-211 > Project: NiFi Registry > Issue Type: Improvement > Reporter: Bryan Bende > Assignee: Bryan Bende > Priority: Major > Fix For: 0.4.0 > > > This ticket is to capture the work for adding extension bundles to NiFi > Registry. > This work may require several follow on tickets, but at a high-level will > include some of the following: > - Add a new type of item called an extension bundle, where each bundle > can contain one ore extensions or APIs > > - Support bundles for traditional NiFi (aka NARs) and also bundles for > MiNiFi CPP > > - Ability to upload the binary artifact for a bundle and extract the > metadata about the bundle, and metadata about the extensions contained > in the bundle (more on this later) > > - Provide a pluggable storage provider for saving the content of each > extension bundle so that we can have different implementations like > local fileysystem, S3, and other object stores > > - Provide a REST API for listing and retrieving available bundles, > integrate this into the registry Java client and NiFi CLI > - Security considerations such as checksums and cryptographic signatures for > bundles -- This message was sent by Atlassian JIRA (v7.6.3#76005)