Browse Source

Still adding ORM

refactor_future_hack
Jonathan Christison 3 years ago
parent
commit
354745f7a0
  1. 9
      pom.xml
  2. 7
      src/main/java/com/redhat/pctsec/model/BrewBuild.java
  3. 20
      src/main/java/com/redhat/pctsec/model/BuildType.java
  4. 15
      src/main/java/com/redhat/pctsec/model/Git.java
  5. 8
      src/main/java/com/redhat/pctsec/model/PNCBuild.java
  6. 41
      src/main/java/com/redhat/pctsec/model/Scan.java
  7. 17
      src/main/java/com/redhat/pctsec/model/ScanRequest.java
  8. 16
      src/main/java/com/redhat/pctsec/model/ScanRequests.java
  9. 20
      src/main/java/com/redhat/pctsec/model/jpa/ScanRepository.java
  10. 40
      src/main/java/com/redhat/pctsec/model/osh/paramMapper.java
  11. 35
      src/main/java/com/redhat/pctsec/rest/v1alpha1/ScanResource.java
  12. 7
      src/main/resources/application.properties
  13. 8
      src/test/java/com/redhat/pctsec/GreetingResourceIT.java
  14. 21
      src/test/java/com/redhat/pctsec/GreetingResourceTest.java
  15. 7
      src/test/java/com/redhat/pctsec/model/osh/paramMapperTest.java

9
pom.xml

@ -74,10 +74,19 @@
<groupId>io.quarkus</groupId>
<artifactId>quarkus-smallrye-openapi</artifactId>
</dependency>
<!--
Removed as non-quarkus context use in paramMapper causes
https://github.com/quarkusio/quarkus/issues/24401
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-picocli</artifactId>
</dependency>
-->
<dependency>
<groupId>info.picocli</groupId>
<artifactId>picocli</artifactId>
<version>4.7.4</version>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-junit5</artifactId>

7
src/main/java/com/redhat/pctsec/model/BrewBuild.java

@ -1,14 +1,21 @@
package com.redhat.pctsec.model;
import jakarta.persistence.Entity;
import java.net.URI;
import java.net.URL;
@Entity
public class BrewBuild extends BuildType {
public BrewBuild(String buildRef) {
super(buildRef);
}
public BrewBuild() {
super();
}
@Override
public URI SCMURL() {
return null;

20
src/main/java/com/redhat/pctsec/model/BuildType.java

@ -1,18 +1,18 @@
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 jakarta.persistence.*;
import java.net.URI;
import java.net.URL;
import java.util.UUID;
@Entity
@DiscriminatorColumn(name="REF_TYPE")
abstract public class BuildType {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private UUID id;
@JsonProperty()
@Column(name="buildref")
@ -23,7 +23,11 @@ abstract public class BuildType {
this.buildRef = buildRef;
}
abstract public URI SCMURL(void);
abstract public URL URL(void);
abstract public String revision(void);
public BuildType() {
}
abstract public URI SCMURL();
abstract public URL URL();
abstract public String revision();
}

15
src/main/java/com/redhat/pctsec/model/Git.java

@ -1,8 +1,23 @@
package com.redhat.pctsec.model;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import java.net.URI;
import java.util.UUID;
@Entity
public class Git {
public Git() {
super();
}
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private UUID id;
private URI repo;
private String ref;

8
src/main/java/com/redhat/pctsec/model/PNCBuild.java

@ -1,9 +1,16 @@
package com.redhat.pctsec.model;
import jakarta.persistence.Entity;
import java.net.URI;
import java.net.URL;
@Entity
public class PNCBuild extends BuildType{
public PNCBuild() {
super();
}
public PNCBuild(String buildRef) {
super(buildRef);
}
@ -27,5 +34,6 @@ public class PNCBuild extends BuildType{
//New type PNC Ref
if(ref.length()!=14)
return false;
return true;
}
}

41
src/main/java/com/redhat/pctsec/model/Scan.java

@ -5,7 +5,7 @@ import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotNull;
import java.util.Calendar;
import java.util.List;
import java.util.UUID;
enum ScanState {
CREATED, TRIGGERED, RUNNING, SUCCESS, FAIL;
@ -13,14 +13,51 @@ enum ScanState {
@Entity
public class Scan {
public String getProductName() {
return productName;
}
public void setProductName(String productName) {
this.productName = productName;
}
public String getRequestor() {
return requestor;
}
public void setRequestor(String requestor) {
this.requestor = requestor;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public ScanRequests getScanRequests() {
return scanRequests;
}
public void setScanRequests(ScanRequests scanRequests) {
this.scanRequests = scanRequests;
}
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private UUID id;
/*
@OneToOne
@NotNull
@JoinColumn(name = "product_id", referencedColumnName = "id")
private String productName;
*/
@Column(name="proudct_name")
private String productName;
@Temporal(TemporalType.TIMESTAMP)
@Column(name="creation_timestamp")

17
src/main/java/com/redhat/pctsec/model/ScanRequest.java

@ -7,27 +7,42 @@ import io.vertx.mutiny.core.eventbus.EventBus;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
import jakarta.inject.Singleton;
import jakarta.persistence.Entity;
import jakarta.persistence.*;
import java.util.HashMap;
import java.util.UUID;
enum RequestType{BREW, PNC, GIT}
@ApplicationScoped
@Entity
public class ScanRequest {
@Transient
@Inject
EventBus bus;
@Id
@GeneratedValue
private UUID id;
private String metadata;
private String oshScanOptions;
RequestType type;
@OneToOne
@JoinColumn(name = "brew_build_id", referencedColumnName = "id")
BrewBuild brewBuild;
@OneToOne
@JoinColumn(name = "pnc_build_id", referencedColumnName = "id")
PNCBuild pncBuild;
@OneToOne
@JoinColumn(name = "git_id", referencedColumnName = "id")
Git git;
public ScanRequest() {
}
public ScanRequest(BrewBuild brewBuild)
{
this.type = RequestType.BREW;

16
src/main/java/com/redhat/pctsec/model/ScanRequests.java

@ -4,28 +4,28 @@ import com.redhat.pctsec.model.api.request.pssaas;
import com.redhat.pctsec.model.api.request.scanChain;
import jakarta.enterprise.context.ApplicationScoped;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;
import java.util.*;
import jakarta.persistence.*;
@ApplicationScoped
@Entity
@Table(name="ScanRequests")
public class ScanRequests {
@Id
@GeneratedValue
private Long id;
private UUID id;
@OneToMany
@OneToMany(fetch=FetchType.LAZY)
@JoinColumn(name = "scan_request_id", referencedColumnName = "id")
private Set<ScanRequest> scanRequests;
private Set<ScanRequest> scanRequests = new HashSet<>();
@Column(name="scan_properties")
//@Column(name="scan_properties")
private String scanProperties;
@Column(name="scan_metadata")
//@Column(name="scan_metadata")
private String scanMetadata;

20
src/main/java/com/redhat/pctsec/model/jpa/ScanRepository.java

@ -0,0 +1,20 @@
package com.redhat.pctsec.model.jpa;
import com.redhat.pctsec.model.Scan;
import io.quarkus.hibernate.orm.panache.PanacheRepositoryBase;
import io.smallrye.mutiny.Uni;
import jakarta.enterprise.context.ApplicationScoped;
import java.util.UUID;
@ApplicationScoped
public class ScanRepository implements PanacheRepositoryBase<Scan, UUID> {
public Uni<Scan> findByProduct(String product)
{
return find("product", product).firstResult();
}
}

40
src/main/java/com/redhat/pctsec/model/osh/paramMapper.java

@ -1,8 +1,12 @@
package com.redhat.pctsec.model.osh;
import jakarta.inject.Singleton;
import picocli.CommandLine;
import picocli.CommandLine.Option;
import picocli.CommandLine.Parameters;
public class paramMapper {
@Option(names = {"-p", "--profile"}, description = "list of analyzers to use (see command 'list-\n" +
@ -28,7 +32,41 @@ public class paramMapper {
" of a local file")
private String brewBuild;
public paramMapper(){}
public paramMapper(String params){
new CommandLine(this).parseArgs("params");
new CommandLine(this).parseArgs(params.split(("\\s+")));
}
public String getProfile() {
return profile;
}
public void setProfile(String profile) {
this.profile = profile;
}
public String getAnalyzers() {
return analyzers;
}
public void setAnalyzers(String analyzers) {
this.analyzers = analyzers;
}
public String getTarballBuildScript() {
return tarballBuildScript;
}
public void setTarballBuildScript(String tarballBuildScript) {
this.tarballBuildScript = tarballBuildScript;
}
public String getBrewBuild() {
return brewBuild;
}
public void setBrewBuild(String brewBuild) {
this.brewBuild = brewBuild;
}
}

35
src/main/java/com/redhat/pctsec/rest/v1alpha1/ScanResource.java

@ -1,19 +1,28 @@
package com.redhat.pctsec.rest.v1alpha1;
import com.redhat.pctsec.model.Git;
import com.redhat.pctsec.model.Scan;
import com.redhat.pctsec.model.ScanRequest;
import com.redhat.pctsec.model.ScanRequests;
import com.redhat.pctsec.model.api.request.pssaas;
import com.redhat.pctsec.model.jpa.ScanRepository;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
import jakarta.validation.Valid;
import jakarta.ws.rs.*;
import org.jboss.resteasy.reactive.RestQuery;
import java.util.HashMap;
import java.util.List;
import java.util.UUID;
@ApplicationScoped
@Path("/api/v1a/Scan")
public class ScanResource {
@Inject
ScanRepository sr;
@POST
@Path("PSSaaS")
@Consumes({ "application/json" })
@ -27,10 +36,17 @@ public class ScanResource {
return 1;
}
@GET
@Produces({"application/json"})
public List<Scan> list()
{
return sr.listAll();
}
@GET
@Path("{id}")
@Produces({"application/json"})
public Scan scanRequest(String id){
return null;
return sr.findById(UUID.fromString(id));
}
@GET
@ -41,15 +57,24 @@ public class ScanResource {
@GET
@Path("single/git")
public String singleGit(@RestQuery String repo, @RestQuery String ref)
@Produces({"application/json"})
public Scan singleGit(@RestQuery String repo, @RestQuery String ref)
{
return "restult";
//ScanRequest scanRequest = new ScanRequest(new Git(repo, ref));
ScanRequests scanRequests = new ScanRequests();
scanRequests.addGit(repo,ref);
Scan s = new Scan();
s.setScanRequests(scanRequests);
sr.persist(s);
return s;
}
@GET
@Path("single/brew")
public String singleGit(@RestQuery String brewId)
@Produces({"application/json"})
public Scan singleGit(@RestQuery String brewId)
{
return "result";
return null;
}
}

7
src/main/resources/application.properties

@ -21,8 +21,13 @@
#%dev.quarkus.kerberos.keytab-path= HTTP_osh-pct-security-tooling.apps.ocp-c1.prod.psi.redhat.com@IPA.REDHAT.COM.keytab
#%dev.quarkus.kerberos.service-principal-name= HTTP/osh-pct-security-tooling.apps.ocp-c1.prod.psi.redhat.com@IPA.REDHAT.COM
%dev.quarkus.datasource.db-kind = postgresql
%dev.quarkus.datasource.username = quarkus
%dev.quarkus.datasource.password = quarkus
%dev.quarkus.datasource.jdbc.url = jdbc:postgresql://localhost:5432/hibernate_db
%dev.quarkus.hibernate-orm.database.generation=drop-and-create
#Always provide swagger ui
quarkus.swagger-ui.always-include=true
%dev.quarkus.swagger-ui.always-include=true
%stage.quarkus.openshift.name=osh
%stage.quarkus.openshift.service-account=osh-wrapper-client-sa

8
src/test/java/com/redhat/pctsec/GreetingResourceIT.java

@ -1,8 +0,0 @@
package com.redhat.pctsec;
import io.quarkus.test.junit.QuarkusIntegrationTest;
@QuarkusIntegrationTest
public class GreetingResourceIT extends GreetingResourceTest {
// Execute the same tests but in packaged mode.
}

21
src/test/java/com/redhat/pctsec/GreetingResourceTest.java

@ -1,21 +0,0 @@
package com.redhat.pctsec;
import io.quarkus.test.junit.QuarkusTest;
import org.junit.jupiter.api.Test;
import static io.restassured.RestAssured.given;
import static org.hamcrest.CoreMatchers.is;
@QuarkusTest
public class GreetingResourceTest {
@Test
public void testHelloEndpoint() {
given()
.when().get("/hello")
.then()
.statusCode(200)
.body(is("Hello from RESTEasy Reactive"));
}
}

7
src/test/java/com/redhat/pctsec/model/osh/paramMapperTest.java

@ -3,6 +3,7 @@ package com.redhat.pctsec.model.osh;
import io.quarkus.test.junit.QuarkusTest;
import jakarta.inject.Inject;
import org.junit.jupiter.api.Test;
import java.lang.String;
import static io.restassured.RestAssured.given;
import static org.hamcrest.CoreMatchers.is;
@ -10,12 +11,12 @@ import static org.hamcrest.CoreMatchers.is;
@QuarkusTest
public class paramMapperTest {
@Inject
paramMapper pm;
@Test
public void testSnykScan() {
pm = new paramMapper("-p snyk-only-unstable --tarball-build-script=\":\"");
paramMapper pm = new paramMapper("-p snyk-only-unstable --tarball-build-script=\":\"");
System.out.println(pm);
}
}
Loading…
Cancel
Save