diff --git a/pom.xml b/pom.xml index 178030e..7f0e9a2 100644 --- a/pom.xml +++ b/pom.xml @@ -84,6 +84,11 @@ rest-assured test + + info.picocli + picocli + 4.7.3 + diff --git a/src/main/java/com/redhat/pctsec/GreetingResource.java b/src/main/java/com/redhat/pctsec/GreetingResource.java deleted file mode 100644 index 0aee1ea..0000000 --- a/src/main/java/com/redhat/pctsec/GreetingResource.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.redhat.pctsec; - -import jakarta.ws.rs.GET; -import jakarta.ws.rs.Path; -import jakarta.ws.rs.Produces; -import jakarta.ws.rs.core.MediaType; - -@Path("/hello") -public class GreetingResource { - - @GET - @Produces(MediaType.TEXT_PLAIN) - public String hello() { - return "Hello from RESTEasy Reactive"; - } -} diff --git a/src/main/java/com/redhat/pctsec/model/BrewBuild.java b/src/main/java/com/redhat/pctsec/model/BrewBuild.java new file mode 100644 index 0000000..fafbe33 --- /dev/null +++ b/src/main/java/com/redhat/pctsec/model/BrewBuild.java @@ -0,0 +1,21 @@ +package com.redhat.pctsec.model; + +import java.net.URI; +import java.net.URL; + +public class BrewBuild extends BuildType { + + public BrewBuild(String buildRef) { + super(buildRef); + } + + @Override + public URI SCMURL() { + return null; + } + + @Override + public URL URL() { + return null; + } +} diff --git a/src/main/java/com/redhat/pctsec/model/BuildType.java b/src/main/java/com/redhat/pctsec/model/BuildType.java new file mode 100644 index 0000000..64d04f1 --- /dev/null +++ b/src/main/java/com/redhat/pctsec/model/BuildType.java @@ -0,0 +1,28 @@ +package com.redhat.pctsec.model; + +import com.fasterxml.jackson.annotation.JsonProperty; +import jakarta.persistence.Column; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; + +import java.net.URI; +import java.net.URL; + +abstract public class BuildType { + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; + + @JsonProperty() + @Column(name="buildref") + private String buildRef; + + public BuildType(String buildRef) + { + this.buildRef = buildRef; + } + + abstract public URI SCMURL(void); + abstract public URL URL(void); +} diff --git a/src/main/java/com/redhat/pctsec/model/PNCBuild.java b/src/main/java/com/redhat/pctsec/model/PNCBuild.java new file mode 100644 index 0000000..42eebfd --- /dev/null +++ b/src/main/java/com/redhat/pctsec/model/PNCBuild.java @@ -0,0 +1,20 @@ +package com.redhat.pctsec.model; + +import java.net.URI; +import java.net.URL; + +public class PNCBuild extends BuildType{ + public PNCBuild(String buildRef) { + super(buildRef); + } + + @Override + public URI SCMURL() { + return null; + } + + @Override + public URL URL() { + return null; + } +} diff --git a/src/main/java/com/redhat/pctsec/model/Scan.java b/src/main/java/com/redhat/pctsec/model/Scan.java new file mode 100644 index 0000000..e7c063a --- /dev/null +++ b/src/main/java/com/redhat/pctsec/model/Scan.java @@ -0,0 +1,44 @@ +package com.redhat.pctsec.model; + +import jakarta.persistence.*; +import jakarta.validation.constraints.Email; +import jakarta.validation.constraints.NotNull; + +import java.util.Calendar; +import java.util.List; + +enum ScanState { + CREATED, TRIGGERED, RUNNING, SUCCESS, FAIL; +} +@Entity +public class Scan { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; + + @OneToOne + @NotNull + @JoinColumn(name = "product_id", referencedColumnName = "id") + private String productName; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name="creation_timestamp") + private Calendar creationTimestamp; + + @Column(name="state") + @Enumerated(EnumType.STRING) + private ScanState state; + + @Column(name="requestor") + @NotNull + private String requestor; + + @Column(name="report_email") + @Email + private String email; + + @OneToOne + @JoinColumn(name = "scan_requests_id", referencedColumnName = "id") + private ScanRequests scanRequests; +} diff --git a/src/main/java/com/redhat/pctsec/model/ScanRequest.java b/src/main/java/com/redhat/pctsec/model/ScanRequest.java index e6a18cb..bf67e66 100644 --- a/src/main/java/com/redhat/pctsec/model/ScanRequest.java +++ b/src/main/java/com/redhat/pctsec/model/ScanRequest.java @@ -2,19 +2,22 @@ package com.redhat.pctsec.model; import com.redhat.pctsec.tekton.brewTaskRun; import com.redhat.pctsec.tekton.scmUrlPipelineRun; +import io.vertx.mutiny.core.eventbus.EventBus; import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; import jakarta.inject.Singleton; import java.util.HashMap; @ApplicationScoped -public class ScanRequest { +abstract public class ScanRequest { + + @Inject + EventBus bus; private HashMap metadata; private HashMap oshScanOptions; - private String brewBuild; - private HashMap scmurl; +<<<<<<< HEAD //@Inject brewTaskRun btr; @@ -45,4 +48,5 @@ public class ScanRequest { plr.invokeOshScmScanPipeline(this.scmurl.get("repo"), this.scmurl.get("ref")); } } + } diff --git a/src/main/java/com/redhat/pctsec/model/ScanRequests.java b/src/main/java/com/redhat/pctsec/model/ScanRequests.java index 0be45b6..e4dc2f6 100644 --- a/src/main/java/com/redhat/pctsec/model/ScanRequests.java +++ b/src/main/java/com/redhat/pctsec/model/ScanRequests.java @@ -1,19 +1,34 @@ package com.redhat.pctsec.model; -import com.redhat.pctsec.rest.v1alpha1.Scan; +import com.redhat.pctsec.model.api.request.pssaas; import jakarta.enterprise.context.ApplicationScoped; import java.util.HashMap; import java.util.HashSet; import java.util.Set; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.Id; + +import jakarta.persistence.*; + @ApplicationScoped +@Entity public class ScanRequests { - @Id @GeneratedValue private Long id; - private Set scanRequests = new HashSet<>(); - private HashMap globalScanProperties; + @Id + @GeneratedValue + private Long id; + + @OneToMany + @JoinColumn(name = "scan_request_id", referencedColumnName = "id") + private Set scanRequests; + + @Column(name="scan_properties") + private String scanProperties; + + + public ScanRequests(){ + //Default to the Snyk scan + this.scanProperties = "-p snyk-only-unstable --tarball-build-script=\":\""; + } public ScanRequests(pssaas pssaas){ //Iterate scan payload and create scans diff --git a/src/main/java/com/redhat/pctsec/model/api/request/build.java b/src/main/java/com/redhat/pctsec/model/api/request/build.java new file mode 100644 index 0000000..52e60eb --- /dev/null +++ b/src/main/java/com/redhat/pctsec/model/api/request/build.java @@ -0,0 +1,25 @@ +package com.redhat.pctsec.model.api.request; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import jakarta.validation.constraints.NotNull; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonPropertyOrder({ + "type", + "build-id" +}) +public class build { + @NotNull + @JsonProperty("type") + public final String type; + + @NotNull + @JsonProperty("build-id") + public final String buildId; + + public build(@NotNull String type, @NotNull String buildId) { + this.type = type; + this.buildId = buildId; + } +} diff --git a/src/main/java/com/redhat/pctsec/model/git.java b/src/main/java/com/redhat/pctsec/model/api/request/git.java similarity index 80% rename from src/main/java/com/redhat/pctsec/model/git.java rename to src/main/java/com/redhat/pctsec/model/api/request/git.java index 7718913..203327a 100644 --- a/src/main/java/com/redhat/pctsec/model/git.java +++ b/src/main/java/com/redhat/pctsec/model/api/request/git.java @@ -1,4 +1,4 @@ -package com.redhat.pctsec.model; +package com.redhat.pctsec.model.api.request; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; @@ -14,13 +14,13 @@ import jakarta.validation.constraints.NotNull; public class git { @NotNull @JsonProperty("type") - public String type; + public final static String type = "git"; @NotNull @JsonProperty("repo") public String repo; @NotNull - @JsonProperty("ref") + @JsonProperty("repo") public String ref; -} +} \ No newline at end of file diff --git a/src/main/java/com/redhat/pctsec/model/pssaas.java b/src/main/java/com/redhat/pctsec/model/api/request/pssaas.java similarity index 83% rename from src/main/java/com/redhat/pctsec/model/pssaas.java rename to src/main/java/com/redhat/pctsec/model/api/request/pssaas.java index 5153847..9a62333 100644 --- a/src/main/java/com/redhat/pctsec/model/pssaas.java +++ b/src/main/java/com/redhat/pctsec/model/api/request/pssaas.java @@ -1,4 +1,4 @@ -package com.redhat.pctsec.model; +package com.redhat.pctsec.model.api.request; import java.util.LinkedHashMap; import java.util.Map; import java.util.Set; @@ -66,20 +66,5 @@ public class pssaas { @Valid @NotNull public Set componentList; - @JsonIgnore - @Valid - private Map additionalProperties = new LinkedHashMap(); - - /* - @JsonAnyGetter - public Map getAdditionalProperties() { - return this.additionalProperties; - } - - @JsonAnySetter - public void setAdditionalProperty(String name, Object value) { - this.additionalProperties.put(name, value); - } - */ } diff --git a/src/main/java/com/redhat/pctsec/model/api/request/scanChain.java b/src/main/java/com/redhat/pctsec/model/api/request/scanChain.java new file mode 100644 index 0000000..1040148 --- /dev/null +++ b/src/main/java/com/redhat/pctsec/model/api/request/scanChain.java @@ -0,0 +1,4 @@ +package com.redhat.pctsec.model.api.request; + +public class scanChain { +} diff --git a/src/main/java/com/redhat/pctsec/model/build.java b/src/main/java/com/redhat/pctsec/model/build.java deleted file mode 100644 index e5a0960..0000000 --- a/src/main/java/com/redhat/pctsec/model/build.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.redhat.pctsec.model; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Set; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyDescription; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; -import jakarta.validation.Valid; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; - -@JsonInclude(JsonInclude.Include.NON_NULL) -@JsonPropertyOrder({ - "type", - "build-id" -}) -public class build { - @NotNull - @JsonProperty("type") - public String type; - - @NotNull - @JsonProperty("build-id") - public String buildId; -} diff --git a/src/main/java/com/redhat/pctsec/model/osh/paramMapper.java b/src/main/java/com/redhat/pctsec/model/osh/paramMapper.java new file mode 100644 index 0000000..4cd1c24 --- /dev/null +++ b/src/main/java/com/redhat/pctsec/model/osh/paramMapper.java @@ -0,0 +1,7 @@ +package com.redhat.pctsec.model.osh; +import picocli.CommandLine.Option; +import picocli.CommandLine.Parameters; + +public class paramMapper { + +} diff --git a/src/main/java/com/redhat/pctsec/model/scanChain.java b/src/main/java/com/redhat/pctsec/model/scanChain.java deleted file mode 100644 index 7cad38a..0000000 --- a/src/main/java/com/redhat/pctsec/model/scanChain.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.redhat.pctsec.model; - -public class scanChain { -} diff --git a/src/main/java/com/redhat/pctsec/rest/v1alpha1/Scan.java b/src/main/java/com/redhat/pctsec/rest/v1alpha1/ScanResource.java similarity index 89% rename from src/main/java/com/redhat/pctsec/rest/v1alpha1/Scan.java rename to src/main/java/com/redhat/pctsec/rest/v1alpha1/ScanResource.java index 15931e8..46b292d 100644 --- a/src/main/java/com/redhat/pctsec/rest/v1alpha1/Scan.java +++ b/src/main/java/com/redhat/pctsec/rest/v1alpha1/ScanResource.java @@ -1,7 +1,8 @@ package com.redhat.pctsec.rest.v1alpha1; +import com.redhat.pctsec.model.Scan; import com.redhat.pctsec.model.ScanRequests; -import com.redhat.pctsec.model.pssaas; +import com.redhat.pctsec.model.api.request.pssaas; import jakarta.enterprise.context.ApplicationScoped; import jakarta.validation.Valid; import jakarta.ws.rs.*; @@ -11,7 +12,7 @@ import java.util.HashMap; @ApplicationScoped @Path("/api/v1a/Scan") -public class Scan { +public class ScanResource { HashMap scanCollection = new HashMap<>(); @POST @@ -29,7 +30,7 @@ public class Scan { @GET @Path("{id}") - public ScanRequests scanRequest(String id){ + public Scan scanRequest(String id){ return scanCollection.get(id.toString()); }