Browse Source

Add email patch method

Annotate Getters and Hibernate and Jackson weren't playing nice
resulting in errors like -

```
com.fasterxml.jackson.databind.JsonMappingException: Unable to perform requested lazy initialization [com.redhat.pctsec.model.ScanRequests.globalScanProperties] - session is closed and settings disallow loading outside the Session (through reference chain: com.redhat.pctsec.model.Scan["scanRequests"]->com.redhat.pctsec.model.ScanRequests["globalScanProperties"])
```

Rearrange fields above methods in Scan
21-email-to-args-for-osh-client
Jonathan Christison 3 years ago
parent
commit
ccb33b4c64
  1. 96
      src/main/java/com/redhat/pctsec/model/Scan.java
  2. 11
      src/main/java/com/redhat/pctsec/model/ScanRequests.java
  3. 14
      src/main/java/com/redhat/pctsec/rest/v1alpha1/ScanResource.java

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

@ -1,6 +1,7 @@
package com.redhat.pctsec.model;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import jakarta.persistence.*;
import jakarta.transaction.Transactional;
import jakarta.validation.constraints.Email;
@ -17,6 +18,50 @@ enum ScanState {
@Entity
public class Scan {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public UUID id;
/*
@OneToOne
@NotNull
@JoinColumn(name = "product_id", referencedColumnName = "id")
private String productName;
*/
@Column(name="proudct_name")
private String productName;
//@Temporal(TemporalType.TIMESTAMP)
@CreationTimestamp
@JsonIgnore
@Column(name="creation_timestamp")
//@NotNull
private Instant creationTimestamp;
@UpdateTimestamp
@JsonIgnore
@Column(name="update_timestamp")
//@NotNull
private Instant updateTimestamp;
@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(cascade = CascadeType.ALL, fetch=FetchType.LAZY)
@JoinColumn(name = "scan_requests_id", referencedColumnName = "id")
public ScanRequests scanRequests;
public Scan() {
this.scanRequests = new ScanRequests();
}
@ -53,7 +98,14 @@ public class Scan {
this.requestor = requestor;
}
@JsonProperty("email")
@Access(AccessType.PROPERTY)
@Email
public String getEmail() {
if(email != null)
return email;
if(getRequestor() != null)
return getRequestor() + "@redhat.com";
return email;
}
@ -69,48 +121,4 @@ public class Scan {
public void setScanRequests(ScanRequests scanRequests) {
this.scanRequests = scanRequests;
}
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public UUID id;
/*
@OneToOne
@NotNull
@JoinColumn(name = "product_id", referencedColumnName = "id")
private String productName;
*/
@Column(name="proudct_name")
private String productName;
//@Temporal(TemporalType.TIMESTAMP)
@CreationTimestamp
@JsonIgnore
@Column(name="creation_timestamp")
//@NotNull
private Instant creationTimestamp;
@UpdateTimestamp
@JsonIgnore
@Column(name="update_timestamp")
//@NotNull
private Instant updateTimestamp;
@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(cascade = CascadeType.ALL, fetch=FetchType.LAZY)
@JoinColumn(name = "scan_requests_id", referencedColumnName = "id")
public ScanRequests scanRequests;
}

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

@ -1,5 +1,7 @@
package com.redhat.pctsec.model;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.redhat.pctsec.model.api.request.pssaas;
import com.redhat.pctsec.model.api.request.scanChain;
import io.vertx.mutiny.core.eventbus.EventBus;
@ -19,15 +21,18 @@ public class ScanRequests {
@GeneratedValue
protected UUID id;
@OneToMany(fetch=FetchType.EAGER, cascade = CascadeType.ALL)
@JsonIgnore
@OneToMany(fetch=FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "scan_request_id", referencedColumnName = "id")
private Set<ScanRequest> scanRequests;// = new HashSet<>();
@Column(name="scan_properties")
@JsonIgnore
private String globalScanProperties;
@Column(name="scan_metadata")
@JsonIgnore
private String scanMetadata;
@ -88,6 +93,7 @@ public class ScanRequests {
*/
}
@JsonProperty("scanRequests")
public Set<ScanRequest> getScanRequests() {
return scanRequests;
}
@ -96,6 +102,7 @@ public class ScanRequests {
this.scanRequests = scanRequests;
}
@JsonProperty("globalScanProperties")
public String getGlobalScanProperties() {
return globalScanProperties;
}
@ -104,6 +111,8 @@ public class ScanRequests {
this.globalScanProperties = globalScanProperties;
}
@JsonProperty("scanMetadata")
public String getScanMetadata() {
return scanMetadata;
}

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

@ -10,6 +10,7 @@ import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
import jakarta.transaction.Transactional;
import jakarta.validation.Valid;
import jakarta.validation.constraints.Email;
import jakarta.ws.rs.*;
import org.jboss.resteasy.reactive.RestQuery;
@ -106,6 +107,19 @@ public class ScanResource {
return s.scanRequests.execute(bus);
}
@PATCH
@Path("{id}/{email}")
@Consumes({"application/octet-stream"})
@Produces({"application/json"})
@Authenticated
@Transactional
public Scan patchScanEmail(String id, @Email String email)
{
Scan s = sr.findById(UUID.fromString(id));
s.setEmail(email);
sr.persist(s);
return s;
}
@GET
@Path("single/git")

Loading…
Cancel
Save