Skip to content

Commit

Permalink
Fix reading and writing of topology templates
Browse files Browse the repository at this point in the history
Signed-off-by: Oliver Kopp <kopp.dev@gmail.com>
  • Loading branch information
koppor committed Jun 27, 2017
1 parent be053b5 commit 95af739
Show file tree
Hide file tree
Showing 5 changed files with 53 additions and 7 deletions.
Expand Up @@ -17,9 +17,6 @@
import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;

import com.fasterxml.jackson.annotation.JsonIdentityInfo;
import com.fasterxml.jackson.annotation.ObjectIdGenerators;

public abstract class HasId extends TExtensibleElements {

@XmlAttribute(name = "id", required = true)
Expand Down
Expand Up @@ -11,6 +11,23 @@
*******************************************************************************/
package org.eclipse.winery.model.tosca;

import com.fasterxml.jackson.annotation.JsonIdentityInfo;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.ObjectIdGenerators;

@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id")
// see https://stackoverflow.com/q/44789227/873282 for an explanation for this solution
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.EXISTING_PROPERTY,
property = "fakeJacksonType")
@JsonSubTypes({
@JsonSubTypes.Type(value = TRequirement.class, name = "requirement"),
@JsonSubTypes.Type(value = TCapability.class, name = "capability"),
@JsonSubTypes.Type(value = TNodeTemplate.class, name = "nodetemplate")
})
public abstract class RelationshipSourceOrTarget extends TEntityTemplate {

public RelationshipSourceOrTarget() {
Expand All @@ -21,4 +38,7 @@ public RelationshipSourceOrTarget(String id) {
super(id);
}

@JsonIgnore
public abstract String getFakeJacksonType();

}
Expand Up @@ -17,9 +17,16 @@
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlType;

import com.fasterxml.jackson.annotation.JsonTypeInfo;


@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "tCapability")
@JsonTypeInfo(
defaultImpl = TCapability.class,
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.EXISTING_PROPERTY,
property = "fakeJacksonType")
public class TCapability extends RelationshipSourceOrTarget {

@XmlAttribute(name = "name", required = true)
Expand Down Expand Up @@ -49,4 +56,8 @@ public void setName(String value) {
this.name = value;
}

@Override
public String getFakeJacksonType() {
return "capability";
}
}
Expand Up @@ -21,9 +21,8 @@
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;

import com.fasterxml.jackson.annotation.JsonIdentityInfo;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
import com.fasterxml.jackson.annotation.JsonTypeInfo;


/**
Expand Down Expand Up @@ -105,7 +104,11 @@
"deploymentArtifacts"
})
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id")
@JsonTypeInfo(
defaultImpl = TNodeTemplate.class,
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.EXISTING_PROPERTY,
property = "fakeJacksonType")
public class TNodeTemplate extends RelationshipSourceOrTarget {

@XmlElement(name = "Requirements")
Expand All @@ -131,7 +134,12 @@ public TNodeTemplate(String id) {
super(id);
}

/**
@Override
public String getFakeJacksonType() {
return "nodetemplate";
}

/**
* Gets the value of the requirements property.
*
* @return
Expand Down
Expand Up @@ -17,9 +17,15 @@
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlType;

import com.fasterxml.jackson.annotation.JsonTypeInfo;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "tRequirement")
@JsonTypeInfo(
defaultImpl = TRequirement.class,
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.EXISTING_PROPERTY,
property = "fakeJacksonType")
public class TRequirement extends RelationshipSourceOrTarget {

@XmlAttribute(name = "name", required = true)
Expand Down Expand Up @@ -49,4 +55,8 @@ public void setName(String value) {
this.name = value;
}

@Override
public String getFakeJacksonType() {
return "requirement";
}
}

0 comments on commit 95af739

Please sign in to comment.