Open hadesgrid opened 3 years ago
What is the error you are receiving?
Hello Stephen, Thank you againg for you help. I am trying to figure out how to construct the missing classes form the repository, so that I can serilize and deserialize a stix json
for this example :
Relationship usesRel = Relationship.builder()
.relationshipType("uses")
.created(Instant.now())
.sourceRef(AttackPattern.builder() //The method sourceRef(DomainObject) in the type Relationship.Builder is not
//applicable for the arguments (AttackPattern)
.name("Some Attack Pattern 1")
.build())
.targetRef(Malware.builder()
.name("dog")
.addLabels("worm")
.build())
.build();
I need the following missing classes: Relationship AttackPattern Malware
This is the way that I have constructed them.
Relationship
@JsonDeserialize(builder = Relationship.Builder.class)
public class Relationship {
public static Builder builder() {
return new Builder();
}
private Instant created;
private String relationshipType;
private String description;
private DomainObject sourceRef;
private DomainObject targetRef;
private Relationship(Instant created ,String relationshipType, String description, DomainObject sourceRef, DomainObject targetRef) {
this.created=created;
this.relationshipType=relationshipType;
this.description=description;
this.sourceRef=sourceRef;
this.targetRef=targetRef;
}
@JsonPOJOBuilder
public static class Builder{
Instant created;
String relationshipType;
String description;
DomainObject sourceRef;
DomainObject targetRef;
public Builder relationshipType (String relationshipType) {
this.relationshipType = relationshipType;
return this;
}
public Builder created (Instant instant) {
this.created = instant;
return this;
}
public Builder description (String description) {
this.description = description;
return this;
}
public Builder sourceRef (DomainObject sourceRef) {
this.sourceRef = sourceRef;
return this;
}
public Builder targetRef (DomainObject targetRef) {
this.targetRef = targetRef;
return this;
}
public Relationship build() {
return new Relationship(created,relationshipType,description,sourceRef,targetRef);
}
}
@Override
public String toString() {
return "Relationship [created=" + created + ", relationshipType=" + relationshipType + ", description="
+ description + ", sourceRef=" + sourceRef + ", targetRef=" + targetRef + "]";
}
public String toJsonString() {
try {
JsonNode response = StixParsers.getJsonMapper().valueToTree(this);
ObjectNode responseNode = (ObjectNode) response;
//ObjectMapper mapper = new ObjectMapper();
//String realtion_s= mapper.writeValueAsString(this);
//ObjectNode json = (ObjectNode) mapper.readTree(realtion_s);
//json.remove("field");
return responseNode.toString();
}catch(Exception e) {
}
return null;
}
}
//// AttackPattern class
@JsonDeserialize(builder = AttackPattern.Builder.class)
public class AttackPattern {
public static Builder builder() {
return new Builder();
}
private String name;
private String description;
private Set<KillChainPhaseType> killChainPhases;
private AttackPattern(String name , String description , Set<KillChainPhaseType> killChainPhases) {
this.name = name;
this.description = description;
this.killChainPhases = killChainPhases;
}
@JsonPOJOBuilder
public static class Builder
{
String name;
String description;
Set<KillChainPhaseType> killChainPhases;
public Builder name(String name) {
this.name = name;
return this;
}
public Builder description(String description) {
this.description = description;
return this;
}
public Builder killChainPhases(Set<KillChainPhaseType> killChainPhases) {
this.killChainPhases = killChainPhases;
return this;
}
public AttackPattern build() {
return new AttackPattern(name,description,killChainPhases);
}
}
public String toJsonString() {
try {
JsonNode response = StixParsers.getJsonMapper().valueToTree(this);
ObjectNode responseNode = (ObjectNode) response;
//ObjectMapper mapper = new ObjectMapper();
//String realtion_s= mapper.writeValueAsString(this);
//ObjectNode json = (ObjectNode) mapper.readTree(realtion_s);
//json.remove("field");
return responseNode.toString();
}catch(Exception e) {
}
return null;
}
@Override
public String toString() {
return "AttackPattern [name=" + name + ", description=" + description + ", killChainPhases=" + killChainPhases
+ "]";
}
}
Malware class
@JsonDeserialize(builder = Malware.Builder.class)
public class Malware {
public static Builder builder() {
return new Builder();
}
private String labels;
private String name;
private String description;
private Set<KillChainPhaseType> killChainPhases;
public Malware(String labels, String name, String description, Set<KillChainPhaseType> killChainPhases) {
super();
this.labels = labels;
this.name = name;
this.description = description;
this.killChainPhases = killChainPhases;
}
@JsonPOJOBuilder
public static class Builder
{
String labels;
String name;
String description;
Set<KillChainPhaseType> killChainPhases;
public Builder addLabels(String labels) {
this.labels = labels;
return this;
}
public Builder name(String name) {
this.name = name;
return this;
}
public Builder description(String description) {
this.description = description;
return this;
}
public Builder killChainPhases( Set<KillChainPhaseType> killChainPhases) {
this.killChainPhases = killChainPhases;
return this;
}
public Malware build() {
return new Malware(labels,name,description,killChainPhases);
}
}
public String toJsonString() {
try {
JsonNode response = StixParsers.getJsonMapper().valueToTree(this);
ObjectNode responseNode = (ObjectNode) response;
//ObjectMapper mapper = new ObjectMapper();
//String realtion_s= mapper.writeValueAsString(this);
//ObjectNode json = (ObjectNode) mapper.readTree(realtion_s);
//json.remove("field");
return responseNode.toString();
}catch(Exception e) {
}
return null;
}
@Override
public String toString() {
return "Malware [labels=" + labels + ", name=" + name + ", description=" + description + ", killChainPhases="
+ killChainPhases + "]";
}
}
When i calling
Relationship usesRel = Relationship.builder()
.relationshipType("uses")
.created(Instant.now())
.sourceRef(AttackPattern.builder()
.name("Some Attack Pattern 1")
.build())
.targetRef(Malware.builder()
.name("dog")
.addLabels("worm")
.build())
.build();
the line .sourceRef(AttackPattern.builder()
is showing the error The method sourceRef(DomainObject) in the type Relationship.Builder is not applicable for the arguments (AttackPattern)
so it does with this line
.targetRef(Malware.builder()
what I am doing wrong? how can I construct the json?
many thanks in advance
Hello Stephen
I am tryind to create a ralation ship object
the Relationship class is
my question is ¿how do you implement the method builder() in the Relationship class? many thanks in advance