http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/MatchCriteria.java ---------------------------------------------------------------------- diff --git a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/MatchCriteria.java b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/MatchCriteria.java index b60558e..300f28a 100644 --- a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/MatchCriteria.java +++ b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/MatchCriteria.java @@ -18,8 +18,15 @@ package org.apache.atlas.omrs.metadatacollection.properties; +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; + import java.io.Serializable; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY; + /** * The MatchCriteria enum defines how the metadata instances in the metadata collection should be matched * against the properties supplied on the search request. @@ -29,6 +36,9 @@ import java.io.Serializable; * <li>NONE means return instances where none of the supplied properties match.</li> * </ul> */ +@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, fieldVisibility=NONE) +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown=true) public enum MatchCriteria implements Serializable { ALL (0, "All", "All properties must match."),
http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/SequencingOrder.java ---------------------------------------------------------------------- diff --git a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/SequencingOrder.java b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/SequencingOrder.java index 9ed91c7..5c1998f 100644 --- a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/SequencingOrder.java +++ b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/SequencingOrder.java @@ -17,8 +17,15 @@ */ package org.apache.atlas.omrs.metadatacollection.properties; +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; + import java.io.Serializable; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY; + /** * SequencingOrder is used for search requests against a metadata collection. It defines how the results should * to be ordered before they are returned. This is particularly important when the results are to returned @@ -55,6 +62,9 @@ import java.io.Serializable; * </li> * </ul> */ +@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, fieldVisibility=NONE) +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown=true) public enum SequencingOrder implements Serializable { ANY (0, "Any Order", "Any order."), http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/ArrayPropertyValue.java ---------------------------------------------------------------------- diff --git a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/ArrayPropertyValue.java b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/ArrayPropertyValue.java index 055293d..154eb16 100644 --- a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/ArrayPropertyValue.java +++ b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/ArrayPropertyValue.java @@ -17,14 +17,25 @@ */ package org.apache.atlas.omrs.metadatacollection.properties.instances; +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; import org.apache.atlas.omrs.ffdc.OMRSErrorCode; import org.apache.atlas.omrs.ffdc.exception.OMRSRuntimeException; +import java.util.Objects; + +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY; + /** * ArrayPropertyValue stores the values of an array within an entity, struct or relationship properties. * The elements of the array are stored in an InstanceProperties map where the property name is set to the element * number and the property value is set to the value of the element in the array. */ +@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, fieldVisibility=NONE) +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown=true) public class ArrayPropertyValue extends InstancePropertyValue { private int arrayCount = 0; @@ -152,4 +163,29 @@ public class ArrayPropertyValue extends InstancePropertyValue ", typeName='" + getTypeName() + '\'' + '}'; } + + + @Override + public boolean equals(Object o) + { + if (this == o) + { + return true; + } + if (o == null || getClass() != o.getClass()) + { + return false; + } + ArrayPropertyValue that = (ArrayPropertyValue) o; + return arrayCount == that.arrayCount && + Objects.equals(arrayValues, that.arrayValues); + } + + + @Override + public int hashCode() + { + + return Objects.hash(arrayCount, arrayValues); + } } http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/Classification.java ---------------------------------------------------------------------- diff --git a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/Classification.java b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/Classification.java index 98d41f3..0b994dc 100644 --- a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/Classification.java +++ b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/Classification.java @@ -17,9 +17,15 @@ */ package org.apache.atlas.omrs.metadatacollection.properties.instances; +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; import org.apache.atlas.omrs.ffdc.OMRSErrorCode; import org.apache.atlas.omrs.ffdc.exception.OMRSRuntimeException; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY; + /** * The Classification class stores information about a classification assigned to an entity. The Classification @@ -29,6 +35,9 @@ import org.apache.atlas.omrs.ffdc.exception.OMRSRuntimeException; * * Note: it is not valid to have a classification with a null or blank name. */ +@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, fieldVisibility=NONE) +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown=true) public class Classification extends InstanceAuditHeader { private String classificationName = null; @@ -52,7 +61,7 @@ public class Classification extends InstanceAuditHeader * Build and throw exception. This should not happen - likely to be a problem in the * repository connector. */ - OMRSErrorCode errorCode = OMRSErrorCode.NULL_CLASSIFICATION_NAME; + OMRSErrorCode errorCode = OMRSErrorCode.NULL_CLASSIFICATION_PROPERTY_NAME; String errorMessage = errorCode.getErrorMessageId() + errorCode.getFormattedErrorMessage(); @@ -116,7 +125,7 @@ public class Classification extends InstanceAuditHeader * Build and throw exception. This should not happen - likely to be a problem in the * repository connector. */ - OMRSErrorCode errorCode = OMRSErrorCode.NULL_CLASSIFICATION_NAME; + OMRSErrorCode errorCode = OMRSErrorCode.NULL_CLASSIFICATION_PROPERTY_NAME; String errorMessage = errorCode.getErrorMessageId() + errorCode.getFormattedErrorMessage("<Unknown>"); http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/ClassificationOrigin.java ---------------------------------------------------------------------- diff --git a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/ClassificationOrigin.java b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/ClassificationOrigin.java index d78f261..dd4ffbc 100644 --- a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/ClassificationOrigin.java +++ b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/ClassificationOrigin.java @@ -17,8 +17,15 @@ */ package org.apache.atlas.omrs.metadatacollection.properties.instances; +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; + import java.io.Serializable; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY; + /** * ClassificationOrigin describes the provenance of a classification attached to an entity. Most classifications * are explicitly assigned to an entity. However, it is possible for some classifications to flow along @@ -29,6 +36,9 @@ import java.io.Serializable; * relationships attached to the entity. The ClassificationPropagateRule in the relationship's RelationshipDef * defines where the classification can flow to. */ +@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, fieldVisibility=NONE) +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown=true) public enum ClassificationOrigin implements Serializable { ASSIGNED (0, "Assigned", "The classification is explicitly assigned to the entity"), http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/EntityDetail.java ---------------------------------------------------------------------- diff --git a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/EntityDetail.java b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/EntityDetail.java index 95e08d2..45e7398 100644 --- a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/EntityDetail.java +++ b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/EntityDetail.java @@ -17,10 +17,20 @@ */ package org.apache.atlas.omrs.metadatacollection.properties.instances; +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; + +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY; + /** * EntityDetail stores all of the type-specific properties for the entity. These properties can be * requested in an InstanceProperties object on request. */ +@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, fieldVisibility=NONE) +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown=true) public class EntityDetail extends EntitySummary { private InstanceProperties entityProperties = null; http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/EntityProxy.java ---------------------------------------------------------------------- diff --git a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/EntityProxy.java b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/EntityProxy.java index 09c0de7..9bb3a91 100644 --- a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/EntityProxy.java +++ b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/EntityProxy.java @@ -17,13 +17,23 @@ */ package org.apache.atlas.omrs.metadatacollection.properties.instances; +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; + +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY; + /** * EntityProxy summarizes an entity instance. It is used to describe one of the entities connected together by a * relationship. */ +@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, fieldVisibility=NONE) +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown=true) public class EntityProxy extends EntitySummary { - private InstanceProperties uniqueAttributes = null; + private InstanceProperties uniqueProperties = null; /** @@ -46,25 +56,36 @@ public class EntityProxy extends EntitySummary if (template == null) { - this.uniqueAttributes = template.getUniqueAttributes(); + this.uniqueProperties = template.getUniqueProperties(); } } /** + * Copy/clone constructor for the entity proxy. + * + * @param template - entity summary to copy + */ + public EntityProxy(EntitySummary template) + { + super(template); + } + + + /** * Return a copy of the unique attributes for the entity. * * @return InstanceProperties iterator */ - public InstanceProperties getUniqueAttributes() + public InstanceProperties getUniqueProperties() { - if (uniqueAttributes == null) + if (uniqueProperties == null) { - return uniqueAttributes; + return uniqueProperties; } else { - return new InstanceProperties(uniqueAttributes); + return new InstanceProperties(uniqueProperties); } } @@ -75,7 +96,7 @@ public class EntityProxy extends EntitySummary * * @param uniqueAttributes - InstanceProperties iterator */ - public void setUniqueAttributes(InstanceProperties uniqueAttributes) { this.uniqueAttributes = uniqueAttributes; } + public void setUniqueProperties(InstanceProperties uniqueAttributes) { this.uniqueProperties = uniqueAttributes; } @@ -88,7 +109,7 @@ public class EntityProxy extends EntitySummary public String toString() { return "EntityProxy{" + - "uniqueAttributes=" + uniqueAttributes + + "uniqueProperties=" + uniqueProperties + ", classifications=" + getClassifications() + ", type=" + getType() + ", instanceProvenanceType=" + getInstanceProvenanceType() + http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/EntitySummary.java ---------------------------------------------------------------------- diff --git a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/EntitySummary.java b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/EntitySummary.java index 056ea42..408279c 100644 --- a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/EntitySummary.java +++ b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/EntitySummary.java @@ -17,7 +17,15 @@ */ package org.apache.atlas.omrs.metadatacollection.properties.instances; +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; + import java.util.ArrayList; +import java.util.List; + +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY; /** @@ -25,6 +33,9 @@ import java.util.ArrayList; * This includes a summary of its type, its unique * identifier (guid) last update data and a list of the classifications for the entity. */ +@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, fieldVisibility=NONE) +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown=true) public class EntitySummary extends InstanceHeader { /* @@ -55,7 +66,7 @@ public class EntitySummary extends InstanceHeader if (templateElement != null) { - classifications = templateElement.getClassifications(); + this.setClassifications(templateElement.getClassifications()); } } @@ -66,11 +77,11 @@ public class EntitySummary extends InstanceHeader * * @return Classifications iterator */ - public ArrayList<Classification> getClassifications() + public List<Classification> getClassifications() { if (classifications == null) { - return classifications; + return null; } else { @@ -84,7 +95,17 @@ public class EntitySummary extends InstanceHeader * * @param classifications - Classifications list */ - public void setClassifications(ArrayList<Classification> classifications) { this.classifications = classifications; } + public void setClassifications(List<Classification> classifications) + { + if (classifications == null) + { + this.classifications = null; + } + else + { + this.classifications = new ArrayList<>(classifications); + } + } /** http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/EntityUniverse.java ---------------------------------------------------------------------- diff --git a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/EntityUniverse.java b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/EntityUniverse.java index a5af8f9..3402a52 100644 --- a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/EntityUniverse.java +++ b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/EntityUniverse.java @@ -17,12 +17,23 @@ */ package org.apache.atlas.omrs.metadatacollection.properties.instances; +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; + import java.util.ArrayList; +import java.util.List; + +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY; /** * EntityUniverse extends EntityDetail to add the relationships that this entity has. These are available * in an iterator to make them easy to process. */ +@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, fieldVisibility=NONE) +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown=true) public class EntityUniverse extends EntityDetail { private ArrayList<Relationship> entityRelationships = null; @@ -48,7 +59,7 @@ public class EntityUniverse extends EntityDetail if (templateElement != null) { - entityRelationships = templateElement.getEntityRelationships(); + this.setEntityRelationships(templateElement.getEntityRelationships()); } } @@ -69,9 +80,16 @@ public class EntityUniverse extends EntityDetail * * @return Relationships list. */ - public ArrayList<Relationship> getEntityRelationships() + public List<Relationship> getEntityRelationships() { - return entityRelationships; + if (entityRelationships == null) + { + return null; + } + else + { + return new ArrayList<>(entityRelationships); + } } @@ -80,9 +98,16 @@ public class EntityUniverse extends EntityDetail * * @param entityRelationships - Relationships list */ - public void setEntityRelationships(ArrayList<Relationship> entityRelationships) + public void setEntityRelationships(List<Relationship> entityRelationships) { - this.entityRelationships = entityRelationships; + if (entityRelationships == null) + { + this.entityRelationships = null; + } + else + { + this.entityRelationships = new ArrayList<>(entityRelationships); + } } http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/EnumPropertyValue.java ---------------------------------------------------------------------- diff --git a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/EnumPropertyValue.java b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/EnumPropertyValue.java index 7d433d2..85ca6fa 100644 --- a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/EnumPropertyValue.java +++ b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/EnumPropertyValue.java @@ -17,9 +17,19 @@ */ package org.apache.atlas.omrs.metadatacollection.properties.instances; +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; + +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY; + /** * An EnumPropertyValue stores the value for an enum property. */ +@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, fieldVisibility=NONE) +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown=true) public class EnumPropertyValue extends InstancePropertyValue { private int ordinal = 99; http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstanceAuditHeader.java ---------------------------------------------------------------------- diff --git a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstanceAuditHeader.java b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstanceAuditHeader.java index f79aeba..0940795 100644 --- a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstanceAuditHeader.java +++ b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstanceAuditHeader.java @@ -17,14 +17,23 @@ */ package org.apache.atlas.omrs.metadatacollection.properties.instances; -import java.util.ArrayList; +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; + import java.util.Date; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY; + /** * InstanceAuditHeader manages the attributes that are common to classifications and "proper" instances, ie * as entities and relationships. We need to be able to audit when these fundamental elements change and * by whom. Thus they share this header. */ +@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, fieldVisibility=NONE) +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown=true) public abstract class InstanceAuditHeader extends InstanceElementHeader { /* @@ -39,7 +48,7 @@ public abstract class InstanceAuditHeader extends InstanceElementHeader protected String updatedBy = null; protected Date createTime = null; protected Date updateTime = null; - protected Long version = 0L; + protected long version = 0L; protected InstanceStatus currentStatus = InstanceStatus.UNKNOWN; @@ -215,7 +224,7 @@ public abstract class InstanceAuditHeader extends InstanceElementHeader * * @return Long versionName number */ - public Long getVersion() { return version; } + public long getVersion() { return version; } /** @@ -223,7 +232,7 @@ public abstract class InstanceAuditHeader extends InstanceElementHeader * * @param version - Long versionName number */ - public void setVersion(Long version) { this.version = version; } + public void setVersion(long version) { this.version = version; } /** http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstanceElementHeader.java ---------------------------------------------------------------------- diff --git a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstanceElementHeader.java b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstanceElementHeader.java index 0ffef54..a31b7e0 100644 --- a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstanceElementHeader.java +++ b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstanceElementHeader.java @@ -17,12 +17,22 @@ */ package org.apache.atlas.omrs.metadatacollection.properties.instances; +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; + import java.io.Serializable; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY; + /** * InstanceElementHeader provides a common base for all instance information from the metadata collection. * It implements Serializable. */ +@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, fieldVisibility=NONE) +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown=true) public abstract class InstanceElementHeader implements Serializable { private static final long serialVersionUID = 1L; http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstanceGraph.java ---------------------------------------------------------------------- diff --git a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstanceGraph.java b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstanceGraph.java index 11fc7e1..3cd5baa 100644 --- a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstanceGraph.java +++ b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstanceGraph.java @@ -18,7 +18,15 @@ package org.apache.atlas.omrs.metadatacollection.properties.instances; +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; + import java.util.ArrayList; +import java.util.List; + +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY; /** * InstanceGraph stores a subgraph of entities and relationships and provides methods to access its content. @@ -26,6 +34,9 @@ import java.util.ArrayList; * of these two lists, or request elements that link to a specific element. For example, request the relationships * that link to an entity or the entity at a specific end of a relationship. */ +@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, fieldVisibility=NONE) +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown=true) public class InstanceGraph extends InstanceElementHeader { private ArrayList<EntityDetail> entityElementList = null; @@ -33,17 +44,39 @@ public class InstanceGraph extends InstanceElementHeader /** - * Default Constructor creates a graph with the supplied list of elements. It assumes the caller has supplied + * Default constructor + */ + public InstanceGraph() + { + } + + /** + * Typical Constructor creates a graph with the supplied list of elements. It assumes the caller has supplied * elements that do link together. However, this graph supports graph fragments. * * @param entityElementList - list of entity elements to add to the list * @param relationshipElementList - list of relationship elements to add to the list */ - public InstanceGraph(ArrayList<EntityDetail> entityElementList, - ArrayList<Relationship> relationshipElementList) + public InstanceGraph(List<EntityDetail> entityElementList, + List<Relationship> relationshipElementList) { - this.entityElementList = entityElementList; - this.relationshipElementList = relationshipElementList; + if (entityElementList == null) + { + this.entityElementList = null; + } + else + { + this.entityElementList = new ArrayList<>(entityElementList); + } + + if (relationshipElementList == null) + { + this.relationshipElementList = null; + } + else + { + this.relationshipElementList = new ArrayList<>(relationshipElementList); + } } @@ -56,8 +89,8 @@ public class InstanceGraph extends InstanceElementHeader { if (templateGraph != null) { - entityElementList = templateGraph.getEntities(); - relationshipElementList = templateGraph.getRelationships(); + setEntities(templateGraph.getEntities()); + setRelationships(templateGraph.getRelationships()); } } @@ -67,46 +100,70 @@ public class InstanceGraph extends InstanceElementHeader * * @return EntityDetails - entity list */ - public ArrayList<EntityDetail> getEntities() + public List<EntityDetail> getEntities() { - if (entityElementList != null) + if (entityElementList == null) { - ArrayList<EntityDetail> entities = new ArrayList<>(); + return null; + } + else + { + return new ArrayList<>(entityElementList); + } + } - for (EntityDetail entity : entityElementList) - { - entities.add(new EntityDetail(entity)); - } - return entities; + + /** + * Set up the list of entities for this instance graph. + * + * @param entityElementList - list of entities + */ + public void setEntities(List<EntityDetail> entityElementList) + { + if (entityElementList == null) + { + this.entityElementList = null; } else { - return entityElementList; + this.entityElementList = new ArrayList<>(entityElementList); } } + /** * Return the list of all relationships (edges/links) in the instance graph. Null means a disconnected/empty graph. * * @return Relationships - relationship list */ - public ArrayList<Relationship> getRelationships() + public List<Relationship> getRelationships() { - if (relationshipElementList != null) + if (relationshipElementList == null) + { + return null; + } + else { - ArrayList<Relationship> relationships = new ArrayList<>(); + return new ArrayList<>(relationshipElementList); + } + } - for (Relationship relationship : relationshipElementList) - { - relationships.add(new Relationship(relationship)); - } - return relationships; + /** + * Set up the list of relationships in this instance graph. + * + * @param relationshipElementList - list of relationships + */ + public void setRelationships(List<Relationship> relationshipElementList) + { + if (relationshipElementList == null) + { + this.relationshipElementList = null; } else { - return relationshipElementList; + this.relationshipElementList = new ArrayList<>(relationshipElementList); } } @@ -117,7 +174,7 @@ public class InstanceGraph extends InstanceElementHeader * @param anchorEntityGUID - unique identifier for an entity * @return Relationships - relationship iterator */ - public ArrayList<Relationship> getRelationshipsForEntity(String anchorEntityGUID) + public List<Relationship> getRelationshipsForEntity(String anchorEntityGUID) { ArrayList<Relationship> matchingRelationships = new ArrayList<>(); http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstanceHeader.java ---------------------------------------------------------------------- diff --git a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstanceHeader.java b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstanceHeader.java index 934974d..1a62baf 100644 --- a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstanceHeader.java +++ b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstanceHeader.java @@ -18,10 +18,20 @@ package org.apache.atlas.omrs.metadatacollection.properties.instances; +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; + +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY; + /** * InstanceHeader manages the attributes that are common to entities and relationship instances. This includes * information abut its type, provenance and change history. */ +@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, fieldVisibility=NONE) +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown=true) public abstract class InstanceHeader extends InstanceAuditHeader { /* http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstanceProperties.java ---------------------------------------------------------------------- diff --git a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstanceProperties.java b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstanceProperties.java index bc228d3..2964f14 100644 --- a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstanceProperties.java +++ b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstanceProperties.java @@ -18,6 +18,9 @@ */ package org.apache.atlas.omrs.metadatacollection.properties.instances; +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; import org.apache.atlas.omrs.ffdc.OMRSErrorCode; import org.apache.atlas.omrs.ffdc.exception.OMRSRuntimeException; @@ -25,6 +28,9 @@ import java.util.HashMap; import java.util.Iterator; import java.util.Map; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY; + /** * The InstanceProperties class provides support for arbitrary properties to be added to an entity, @@ -55,6 +61,9 @@ import java.util.Map; * </li> * </ul> */ +@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, fieldVisibility=NONE) +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown=true) public class InstanceProperties extends InstanceElementHeader { /* @@ -147,7 +156,7 @@ public class InstanceProperties extends InstanceElementHeader */ OMRSErrorCode errorCode = OMRSErrorCode.NULL_PROPERTY_NAME; String errorMessage = errorCode.getErrorMessageId() - + errorCode.getFormattedErrorMessage(); + + errorCode.getFormattedErrorMessage(); throw new OMRSRuntimeException(errorCode.getHTTPErrorCode(), this.getClass().getName(), http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstancePropertyCategory.java ---------------------------------------------------------------------- diff --git a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstancePropertyCategory.java b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstancePropertyCategory.java index f7393eb..3f21239 100644 --- a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstancePropertyCategory.java +++ b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstancePropertyCategory.java @@ -17,12 +17,22 @@ */ package org.apache.atlas.omrs.metadatacollection.properties.instances; +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; + import java.io.Serializable; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY; + /** * The InstancePropertyCategory defines the list of value types for the properties for open metadata. * It is used in the InstancePropertyValue class to distinguish its subclasses. */ +@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, fieldVisibility=NONE) +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown=true) public enum InstancePropertyCategory implements Serializable { UNKNOWN (0, "<Unknown>", "Uninitialized InstancePropertyValue object."), http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstancePropertyValue.java ---------------------------------------------------------------------- diff --git a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstancePropertyValue.java b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstancePropertyValue.java index 08ec988..27e82c8 100644 --- a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstancePropertyValue.java +++ b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstancePropertyValue.java @@ -17,6 +17,19 @@ */ package org.apache.atlas.omrs.metadatacollection.properties.instances; +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; + +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY; + +/** + * InstancePropertyValue provides a common class for holding an instance type and value. + */ +@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, fieldVisibility=NONE) +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown=true) public class InstancePropertyValue extends InstanceElementHeader { /* http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstanceProvenanceType.java ---------------------------------------------------------------------- diff --git a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstanceProvenanceType.java b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstanceProvenanceType.java index 1715cbf..735dc4b 100644 --- a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstanceProvenanceType.java +++ b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstanceProvenanceType.java @@ -17,8 +17,15 @@ */ package org.apache.atlas.omrs.metadatacollection.properties.instances; +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; + import java.io.Serializable; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY; + /** * InstanceProvenanceType defines where the metadata comes from and, hence if it can be updated. * <ul> @@ -47,6 +54,9 @@ import java.io.Serializable; * </li> * </ul> */ +@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, fieldVisibility=NONE) +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown=true) public enum InstanceProvenanceType implements Serializable { UNKNOWN (0, "<Unknown>", "Unknown provenance"), http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstanceStatus.java ---------------------------------------------------------------------- diff --git a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstanceStatus.java b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstanceStatus.java index 645bd4c..44b3993 100644 --- a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstanceStatus.java +++ b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstanceStatus.java @@ -17,8 +17,15 @@ */ package org.apache.atlas.omrs.metadatacollection.properties.instances; +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; + import java.io.Serializable; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY; + /** * The InstanceStatus defines the status of a relationship or an entity in the metadata collection. It effectively * defines its visibility to different types of queries. Most queries by default will only return instances in the @@ -33,6 +40,9 @@ import java.io.Serializable; * to support a restore request. It is not returned on normal queries.</li> * </ul> */ +@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, fieldVisibility=NONE) +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown=true) public enum InstanceStatus implements Serializable { UNKNOWN (0, "<Unknown>", "Unknown instance status."), http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstanceType.java ---------------------------------------------------------------------- diff --git a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstanceType.java b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstanceType.java index edd786a..26a7510 100644 --- a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstanceType.java +++ b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/InstanceType.java @@ -17,14 +17,24 @@ */ package org.apache.atlas.omrs.metadatacollection.properties.instances; +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; import org.apache.atlas.omrs.metadatacollection.properties.typedefs.TypeDefCategory; import org.apache.atlas.omrs.metadatacollection.properties.typedefs.TypeDefLink; import java.util.ArrayList; +import java.util.List; + +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY; /** * InstanceType contains information from the instance's TypeDef that are useful for processing the instance. */ +@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, fieldVisibility=NONE) +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown=true) public class InstanceType extends InstanceElementHeader { private TypeDefCategory typeDefCategory = TypeDefCategory.UNKNOWN_DEF; @@ -65,9 +75,9 @@ public class InstanceType extends InstanceElementHeader long typeDefVersion, String typeDefDescription, String typeDefDescriptionGUID, - ArrayList<TypeDefLink> typeDefSuperTypes, - ArrayList<InstanceStatus> validStatusList, - ArrayList<String> validInstanceProperties) + List<TypeDefLink> typeDefSuperTypes, + List<InstanceStatus> validStatusList, + List<String> validInstanceProperties) { this.typeDefCategory = typeDefCategory; this.typeDefGUID = typeDefGUID; @@ -75,9 +85,9 @@ public class InstanceType extends InstanceElementHeader this.typeDefVersion = typeDefVersion; this.typeDefDescription = typeDefDescription; this.typeDefDescriptionGUID = typeDefDescriptionGUID; - this.typeDefSuperTypes = typeDefSuperTypes; - this.validStatusList = validStatusList; - this.validInstanceProperties = validInstanceProperties; + this.setTypeDefSuperTypes(typeDefSuperTypes); + this.setValidStatusList(validStatusList); + this.setValidInstanceProperties(validInstanceProperties); } @@ -96,9 +106,9 @@ public class InstanceType extends InstanceElementHeader typeDefVersion = template.getTypeDefVersion(); typeDefDescription = template.getTypeDefDescription(); typeDefDescriptionGUID = template.getTypeDefDescriptionGUID(); - typeDefSuperTypes = template.getTypeDefSuperTypes(); - validStatusList = template.getValidStatusList(); - validInstanceProperties = template.getValidInstanceProperties(); + setTypeDefSuperTypes(template.getTypeDefSuperTypes()); + setValidStatusList(template.getValidStatusList()); + setValidInstanceProperties(template.getValidInstanceProperties()); } } @@ -180,9 +190,16 @@ public class InstanceType extends InstanceElementHeader * * @return list of types */ - public ArrayList<TypeDefLink> getTypeDefSuperTypes() + public List<TypeDefLink> getTypeDefSuperTypes() { - return typeDefSuperTypes; + if (typeDefSuperTypes == null) + { + return null; + } + else + { + return new ArrayList<>(typeDefSuperTypes); + } } @@ -191,11 +208,19 @@ public class InstanceType extends InstanceElementHeader * * @param typeDefSuperTypes - list of type names */ - public void setTypeDefSuperTypes(ArrayList<TypeDefLink> typeDefSuperTypes) + public void setTypeDefSuperTypes(List<TypeDefLink> typeDefSuperTypes) { - this.typeDefSuperTypes = typeDefSuperTypes; + if (typeDefSuperTypes == null) + { + this.typeDefSuperTypes = null; + } + else + { + this.typeDefSuperTypes = new ArrayList<>(typeDefSuperTypes); + } } + /** * Return the description for the TypeDef. * @@ -245,11 +270,11 @@ public class InstanceType extends InstanceElementHeader * * @return InstanceStatus array of supported status. */ - public ArrayList<InstanceStatus> getValidStatusList() + public List<InstanceStatus> getValidStatusList() { if ( validStatusList == null) { - return validStatusList; + return null; } else { @@ -263,7 +288,17 @@ public class InstanceType extends InstanceElementHeader * * @param validStatusList - InstanceStatus Array */ - public void setValidStatusList(ArrayList<InstanceStatus> validStatusList) { this.validStatusList = validStatusList; } + public void setValidStatusList(List<InstanceStatus> validStatusList) + { + if (validStatusList == null) + { + this.validStatusList = null; + } + else + { + this.validStatusList = new ArrayList<>(validStatusList); + } + } /** @@ -271,9 +306,16 @@ public class InstanceType extends InstanceElementHeader * * @return array of property names. */ - public ArrayList<String> getValidInstanceProperties() + public List<String> getValidInstanceProperties() { - return validInstanceProperties; + if (validInstanceProperties == null) + { + return null; + } + else + { + return new ArrayList<>(validInstanceProperties); + } } @@ -282,9 +324,16 @@ public class InstanceType extends InstanceElementHeader * * @param validInstanceProperties - array of property names. */ - public void setValidInstanceProperties(ArrayList<String> validInstanceProperties) + public void setValidInstanceProperties(List<String> validInstanceProperties) { - this.validInstanceProperties = validInstanceProperties; + if (validInstanceProperties == null) + { + this.validInstanceProperties = null; + } + else + { + this.validInstanceProperties = new ArrayList<>(validInstanceProperties); + } } http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/MapPropertyValue.java ---------------------------------------------------------------------- diff --git a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/MapPropertyValue.java b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/MapPropertyValue.java index 4bebb02..51e9c4d 100644 --- a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/MapPropertyValue.java +++ b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/MapPropertyValue.java @@ -18,10 +18,22 @@ package org.apache.atlas.omrs.metadatacollection.properties.instances; +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; + +import java.util.Objects; + +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY; + /** * MapPropertyValue stores the values of a map within an entity, struct or relationship properties. * The elements of the map are stored in an InstanceProperties map. */ +@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, fieldVisibility=NONE) +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown=true) public class MapPropertyValue extends InstancePropertyValue { private InstanceProperties mapValues = null; @@ -130,4 +142,26 @@ public class MapPropertyValue extends InstancePropertyValue ", typeName='" + getTypeName() + '\'' + '}'; } + + @Override + public boolean equals(Object o) + { + if (this == o) + { + return true; + } + if (o == null || getClass() != o.getClass()) + { + return false; + } + MapPropertyValue that = (MapPropertyValue) o; + return Objects.equals(mapValues, that.mapValues); + } + + @Override + public int hashCode() + { + + return Objects.hash(mapValues); + } } http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/PrimitivePropertyValue.java ---------------------------------------------------------------------- diff --git a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/PrimitivePropertyValue.java b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/PrimitivePropertyValue.java index fb40758..7ecdb81 100644 --- a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/PrimitivePropertyValue.java +++ b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/PrimitivePropertyValue.java @@ -17,18 +17,31 @@ */ package org.apache.atlas.omrs.metadatacollection.properties.instances; +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; import org.apache.atlas.omrs.ffdc.OMRSErrorCode; +import org.apache.atlas.omrs.ffdc.exception.InvalidParameterException; +import org.apache.atlas.omrs.ffdc.exception.OMRSLogicErrorException; import org.apache.atlas.omrs.ffdc.exception.OMRSRuntimeException; import org.apache.atlas.omrs.metadatacollection.properties.typedefs.PrimitiveDefCategory; +import java.util.Objects; + +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY; + /** * PrimitivePropertyValue stores a single primitive property. This is stored in the specific Java class * for the property value's type although it is stored as an object. */ +@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, fieldVisibility=NONE) +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown=true) public class PrimitivePropertyValue extends InstancePropertyValue { - private PrimitiveDefCategory primitiveDefCategory = PrimitiveDefCategory.OM_PRIMITIVE_TYPE_UNKNOWN; + private PrimitiveDefCategory primitiveDefCategory = null; private Object primitiveValue = null; @@ -68,13 +81,21 @@ public class PrimitivePropertyValue extends InstancePropertyValue /** - * Set up the category of the primitive typ. This sets the name and Java Class used for + * Set up the category of the primitive type. This sets the name and Java Class used for * the primitive value. * * @param primitiveDefCategory - PrimitiveDefCategory enum */ public void setPrimitiveDefCategory(PrimitiveDefCategory primitiveDefCategory) { + /* + * Tests that type and value are consistent + */ + validateValueAgainstType(primitiveDefCategory, primitiveValue); + + /* + * All ok so set the category + */ this.primitiveDefCategory = primitiveDefCategory; } @@ -90,13 +111,83 @@ public class PrimitivePropertyValue extends InstancePropertyValue /** * Set up the primitive value. Although it is passed in as a java.lang.Object, it should be the correct - * type as defined by the PrimitiveDefCategory. This is validated in this method so it is important to call - * setPrimitiveDefCategory() before setPrimitiveValue(). + * type as defined by the PrimitiveDefCategory. * * @param primitiveValue - object contain the primitive value */ public void setPrimitiveValue(Object primitiveValue) { + /* + * Tests that type and value are consistent + */ + validateValueAgainstType(primitiveDefCategory, primitiveValue); + + /* + * The primitive value is of the correct type so save it. + */ + this.primitiveValue = primitiveValue; + } + + + /** + * Standard toString method. + * + * @return JSON style description of variables. + */ + @Override + public String toString() + { + return "PrimitivePropertyValue{" + + "primitiveDefCategory=" + primitiveDefCategory + + ", primitiveValue=" + primitiveValue + + ", instancePropertyCategory=" + getInstancePropertyCategory() + + ", typeGUID='" + getTypeGUID() + '\'' + + ", typeName='" + getTypeName() + '\'' + + '}'; + } + + @Override + public boolean equals(Object o) + { + if (this == o) + { + return true; + } + if (o == null || getClass() != o.getClass()) + { + return false; + } + PrimitivePropertyValue that = (PrimitivePropertyValue) o; + return primitiveDefCategory == that.primitiveDefCategory && + Objects.equals(primitiveValue, that.primitiveValue); + } + + @Override + public int hashCode() + { + return Objects.hash(primitiveDefCategory, primitiveValue); + } + + + /** + * Ensure that the type and value supplied are compatible. + * + * @param primitiveDefCategory - category to test + * @param primitiveValue - value to test + */ + private void validateValueAgainstType(PrimitiveDefCategory primitiveDefCategory, + Object primitiveValue) + { + final String methodName = "setPrimitiveValue()"; + + /* + * Return if one of the values is missing + */ + if ((primitiveDefCategory == null) || (primitiveValue == null)) + { + return; + } + try { Class testJavaClass = Class.forName(primitiveDefCategory.getJavaClassName()); @@ -106,6 +197,17 @@ public class PrimitivePropertyValue extends InstancePropertyValue /* * The primitive value supplied is the wrong type. Throw an exception. */ + OMRSErrorCode errorCode = OMRSErrorCode.INVALID_PRIMITIVE_VALUE; + String errorMessage = errorCode.getErrorMessageId() + + errorCode.getFormattedErrorMessage(primitiveDefCategory.getJavaClassName(), + primitiveDefCategory.getName()); + + throw new OMRSLogicErrorException(errorCode.getHTTPErrorCode(), + this.getClass().getName(), + methodName, + errorMessage, + errorCode.getSystemAction(), + errorCode.getUserAction()); } } catch (ClassNotFoundException unknownPrimitiveClass) @@ -116,57 +218,33 @@ public class PrimitivePropertyValue extends InstancePropertyValue */ OMRSErrorCode errorCode = OMRSErrorCode.INVALID_PRIMITIVE_CLASS_NAME; String errorMessage = errorCode.getErrorMessageId() - + errorCode.getFormattedErrorMessage(primitiveDefCategory.getJavaClassName(), - primitiveDefCategory.getName()); - - throw new OMRSRuntimeException(errorCode.getHTTPErrorCode(), - this.getClass().getName(), - "setPrimitiveValue", - errorMessage, - errorCode.getSystemAction(), - errorCode.getUserAction(), - unknownPrimitiveClass); + + errorCode.getFormattedErrorMessage(primitiveDefCategory.getJavaClassName(), + primitiveDefCategory.getName()); + + throw new OMRSLogicErrorException(errorCode.getHTTPErrorCode(), + this.getClass().getName(), + methodName, + errorMessage, + errorCode.getSystemAction(), + errorCode.getUserAction(), + unknownPrimitiveClass); } - catch (Error invalidPrimitiveValue) + catch (Error invalidPrimitiveCategory) { /* * Some unexpected exception occurred when manipulating the Java Classes. Probably a coding error. */ - OMRSErrorCode errorCode = OMRSErrorCode.INVALID_PRIMITIVE_VALUE; + OMRSErrorCode errorCode = OMRSErrorCode.INVALID_PRIMITIVE_CATEGORY; String errorMessage = errorCode.getErrorMessageId() - + errorCode.getFormattedErrorMessage(primitiveDefCategory.getJavaClassName(), - primitiveDefCategory.getName()); - - throw new OMRSRuntimeException(errorCode.getHTTPErrorCode(), - this.getClass().getName(), - "setPrimitiveValue", - errorMessage, - errorCode.getSystemAction(), - errorCode.getUserAction(), - invalidPrimitiveValue); + + errorCode.getFormattedErrorMessage(primitiveDefCategory.getName()); + + throw new OMRSLogicErrorException(errorCode.getHTTPErrorCode(), + this.getClass().getName(), + methodName, + errorMessage, + errorCode.getSystemAction(), + errorCode.getUserAction(), + invalidPrimitiveCategory); } - - /* - * The primitive value is of the correct type so save it. - */ - this.primitiveValue = primitiveValue; - } - - - /** - * Standard toString method. - * - * @return JSON style description of variables. - */ - @Override - public String toString() - { - return "PrimitivePropertyValue{" + - "primitiveDefCategory=" + primitiveDefCategory + - ", primitiveValue=" + primitiveValue + - ", instancePropertyCategory=" + getInstancePropertyCategory() + - ", typeGUID='" + getTypeGUID() + '\'' + - ", typeName='" + getTypeName() + '\'' + - '}'; } } http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/Relationship.java ---------------------------------------------------------------------- diff --git a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/Relationship.java b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/Relationship.java index cd56bbd..9a27f33 100644 --- a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/Relationship.java +++ b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/Relationship.java @@ -18,10 +18,20 @@ package org.apache.atlas.omrs.metadatacollection.properties.instances; +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; + +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY; + /** * Relationship is a POJO that manages the properties of an open metadata relationship. This includes information * about the relationship type, the two entities it connects and the properties it holds. */ +@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, fieldVisibility=NONE) +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown=true) public class Relationship extends InstanceHeader { private InstanceProperties relationshipProperties = null; http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/StructPropertyValue.java ---------------------------------------------------------------------- diff --git a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/StructPropertyValue.java b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/StructPropertyValue.java index cd8bff9..a706229 100644 --- a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/StructPropertyValue.java +++ b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/instances/StructPropertyValue.java @@ -18,10 +18,22 @@ package org.apache.atlas.omrs.metadatacollection.properties.instances; +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; + +import java.util.Objects; + +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY; + /** * StructPropertyValue supports the value part of property that is defined as a complex structure. * It manages a list of properties that cover the fields in the structure. */ +@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, fieldVisibility=NONE) +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown=true) public class StructPropertyValue extends InstancePropertyValue { private InstanceProperties attributes = null; @@ -92,4 +104,25 @@ public class StructPropertyValue extends InstancePropertyValue ", typeName='" + getTypeName() + '\'' + '}'; } + + @Override + public boolean equals(Object o) + { + if (this == o) + { + return true; + } + if (o == null || getClass() != o.getClass()) + { + return false; + } + StructPropertyValue that = (StructPropertyValue) o; + return Objects.equals(attributes, that.attributes); + } + + @Override + public int hashCode() + { + return Objects.hash(attributes); + } } http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/AttributeCardinality.java ---------------------------------------------------------------------- diff --git a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/AttributeCardinality.java b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/AttributeCardinality.java index 9ca7b80..23f1e47 100644 --- a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/AttributeCardinality.java +++ b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/AttributeCardinality.java @@ -17,8 +17,15 @@ */ package org.apache.atlas.omrs.metadatacollection.properties.typedefs; +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; + import java.io.Serializable; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY; + /** * AttributeCardinality is used on a association from one TypeDef to another. It defines how many instances the "linked to" TypeDef * are permitted to be connected to the "linked from" TypeDef: @@ -54,6 +61,9 @@ import java.io.Serializable; * </li> * </ul> */ +@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, fieldVisibility=NONE) +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown=true) public enum AttributeCardinality implements Serializable { UNKNOWN (0, "<Unknown>", "Unknown or uninitialized cardinality"), http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/AttributeTypeDef.java ---------------------------------------------------------------------- diff --git a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/AttributeTypeDef.java b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/AttributeTypeDef.java index d68d233..b0490e9 100644 --- a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/AttributeTypeDef.java +++ b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/AttributeTypeDef.java @@ -18,8 +18,15 @@ package org.apache.atlas.omrs.metadatacollection.properties.typedefs; +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; + import java.util.Objects; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY; + /** * The AttributeTypeDef class is used to identify the type of an attribute. These can be: * <ul> @@ -28,8 +35,13 @@ import java.util.Objects; * <li>EnumDef</li> * </ul> */ -public abstract class AttributeTypeDef extends TypeDefElementHeader +@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, fieldVisibility=NONE) +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown=true) +public class AttributeTypeDef extends TypeDefElementHeader { + protected long version = 0L; + protected String versionName = null; protected AttributeTypeDefCategory category = AttributeTypeDefCategory.UNKNOWN_DEF; protected String guid = null; protected String name = null; @@ -38,6 +50,14 @@ public abstract class AttributeTypeDef extends TypeDefElementHeader /** + * Default constructor + */ + public AttributeTypeDef() + { + } + + + /** * Minimal constructor is passed the category of the attribute type * * @param category - category of this TypeDef @@ -78,6 +98,8 @@ public abstract class AttributeTypeDef extends TypeDefElementHeader if (template != null) { + this.version = template.getVersion(); + this.versionName = template.getVersionName(); this.category = template.getCategory(); this.guid = template.getGUID(); this.name = template.getName(); @@ -88,6 +110,54 @@ public abstract class AttributeTypeDef extends TypeDefElementHeader /** + * Return the version of the AttributeTypeDef. Versions are created when an AttributeTypeDef's properties + * are changed. If a description is updated, then this does not create a new version. + * + * @return String version number + */ + public long getVersion() + { + return version; + } + + + /** + * Set up the version of the AttributeTypeDef. Versions are created when an AttributeTypeDef's properties + * are changed. If a description is updated, then this does not create a new version. + * + * @param version - long version number + */ + public void setVersion(long version) + { + this.version = version; + } + + + /** + * Return the version name, which is a more of a human readable form of the version number. + * It can be used to show whether the change is a minor or major update. + * + * @return String version name + */ + public String getVersionName() + { + return versionName; + } + + + /** + * Set up the version name, which is a more of a human readable form of the version number. + * It can be used to show whether the change is a minor or major update. + * + * @param versionName - String version name + */ + public void setVersionName(String versionName) + { + this.versionName = versionName; + } + + + /** * Return the category of the TypeDef. * * @return AttributeTypeDefCategory enum @@ -139,26 +209,52 @@ public abstract class AttributeTypeDef extends TypeDefElementHeader public void setName(String name) { this.name = name; } + /** + * Return the short description of this AttributeTypeDef. + * + * @return - String description + */ public String getDescription() { return description; } + + /** + * Set up the short description of this AttributeTypeDef. + * + * @param description - String description + */ public void setDescription(String description) { this.description = description; } + + /** + * Return the unique identifier of the glossary term that describes this AttributeTypeDef. Null means there + * is no known glossary term. + * + * @return String guid + */ public String getDescriptionGUID() { return descriptionGUID; } + + /** + * Set up the unique identifier of the glossary term that describes this AttributeTypeDef. Null means there + * is no known glossary term. + * + * @param descriptionGUID - String guid + */ public void setDescriptionGUID(String descriptionGUID) { this.descriptionGUID = descriptionGUID; } + /** * Standard toString method. * @@ -168,7 +264,9 @@ public abstract class AttributeTypeDef extends TypeDefElementHeader public String toString() { return "AttributeTypeDef{" + - "category=" + category + + "version=" + version + + ", versionName='" + versionName + '\'' + + ", category=" + category + ", guid='" + guid + '\'' + ", name='" + name + '\'' + ", description='" + description + '\'' + @@ -176,7 +274,6 @@ public abstract class AttributeTypeDef extends TypeDefElementHeader '}'; } - /** * Validated that the GUID, name and version number of a TypeDef are equal. * @@ -195,12 +292,15 @@ public abstract class AttributeTypeDef extends TypeDefElementHeader return false; } AttributeTypeDef that = (AttributeTypeDef) object; - return category == that.category && + return version == that.version && + Objects.equals(versionName, that.versionName) && + category == that.category && Objects.equals(guid, that.guid) && - Objects.equals(name, that.name); + Objects.equals(name, that.name) && + Objects.equals(description, that.description) && + Objects.equals(descriptionGUID, that.descriptionGUID); } - /** * Using the GUID as a hashcode - it should be unique if all connected metadata repositories are behaving properly. * http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/AttributeTypeDefCategory.java ---------------------------------------------------------------------- diff --git a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/AttributeTypeDefCategory.java b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/AttributeTypeDefCategory.java index 22ddf42..12e0c33 100644 --- a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/AttributeTypeDefCategory.java +++ b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/AttributeTypeDefCategory.java @@ -17,11 +17,21 @@ */ package org.apache.atlas.omrs.metadatacollection.properties.typedefs; +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; + import java.io.Serializable; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY; + /** * The AttributeTypeDefCategory defines the list of valid types of a attribute (property) for an open metadata instance. */ +@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, fieldVisibility=NONE) +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown=true) public enum AttributeTypeDefCategory implements Serializable { UNKNOWN_DEF (0, "<Unknown>", "Uninitialized AttributeTypeDef object."), http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/ClassificationDef.java ---------------------------------------------------------------------- diff --git a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/ClassificationDef.java b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/ClassificationDef.java index cfb2143..566bc59 100644 --- a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/ClassificationDef.java +++ b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/ClassificationDef.java @@ -18,13 +18,24 @@ package org.apache.atlas.omrs.metadatacollection.properties.typedefs; +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; + import java.util.ArrayList; +import java.util.List; + +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY; /** * ClassificationDef stores the properties for the definition of a type of classification. Many of the properties * are inherited from TypeDef. ClassificationDef adds a list of Entity Types that this Classification can be * connected to and a boolean to indicate if this classification is propagatable. */ +@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, fieldVisibility=NONE) +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown=true) public class ClassificationDef extends TypeDef { private ArrayList<TypeDefLink> validEntityDefs = null; @@ -70,7 +81,8 @@ public class ClassificationDef extends TypeDef if (template != null) { - validEntityDefs = template.getValidEntityDefs(); + this.setValidEntityDefs(template.getValidEntityDefs()); + propagatable = template.isPropagatable(); } } @@ -81,11 +93,11 @@ public class ClassificationDef extends TypeDef * * @return List of entity type identifiers */ - public ArrayList<TypeDefLink> getValidEntityDefs() + public List<TypeDefLink> getValidEntityDefs() { if (validEntityDefs == null) { - return validEntityDefs; + return null; } else { @@ -99,9 +111,16 @@ public class ClassificationDef extends TypeDef * * @param validEntityDefs - List of entity type identifiers */ - public void setValidEntityDefs(ArrayList<TypeDefLink> validEntityDefs) + public void setValidEntityDefs(List<TypeDefLink> validEntityDefs) { - this.validEntityDefs = validEntityDefs; + if (validEntityDefs == null) + { + this.validEntityDefs = null; + } + else + { + this.validEntityDefs = new ArrayList<>(validEntityDefs); + } } http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/ClassificationPropagationRule.java ---------------------------------------------------------------------- diff --git a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/ClassificationPropagationRule.java b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/ClassificationPropagationRule.java index 71d6f91..7134973 100644 --- a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/ClassificationPropagationRule.java +++ b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/ClassificationPropagationRule.java @@ -17,8 +17,15 @@ */ package org.apache.atlas.omrs.metadatacollection.properties.typedefs; +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; + import java.io.Serializable; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY; + /** * ClassificationPropagationRule is part of a relationship definition (RelationshipDef). * It indicates whether classifications from one entity should propagate across a relationship instance. @@ -33,6 +40,9 @@ import java.io.Serializable; * <li>BOTH - two way propagation.</li> * </ul> */ +@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, fieldVisibility=NONE) +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown=true) public enum ClassificationPropagationRule implements Serializable { NONE (0, "NONE", "No classification propagation"), http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/CollectionDef.java ---------------------------------------------------------------------- diff --git a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/CollectionDef.java b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/CollectionDef.java index cca95f7..ab95757 100644 --- a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/CollectionDef.java +++ b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/CollectionDef.java @@ -18,13 +18,24 @@ package org.apache.atlas.omrs.metadatacollection.properties.typedefs; +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; + import java.util.ArrayList; +import java.util.List; + +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE; +import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY; /** * CollectionDef supports the definition of a collection type. This information about the generic * collection type is managed in the CollectionDefCategory. It is instantiated with specific primitive * types when it is linked to a specific TypeDefAttribute. */ +@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, fieldVisibility=NONE) +@JsonInclude(JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown=true) public class CollectionDef extends AttributeTypeDef { private CollectionDefCategory collectionDefCategory = null; @@ -68,7 +79,7 @@ public class CollectionDef extends AttributeTypeDef { this.collectionDefCategory = template.getCollectionDefCategory(); this.argumentCount = template.getArgumentCount(); - this.argumentTypes = template.getArgumentTypes(); + this.setArgumentTypes(template.getArgumentTypes()); } } @@ -97,11 +108,11 @@ public class CollectionDef extends AttributeTypeDef * * @return list of argument type */ - public ArrayList<PrimitiveDefCategory> getArgumentTypes() + public List<PrimitiveDefCategory> getArgumentTypes() { if (argumentTypes == null) { - return argumentTypes; + return null; } else { @@ -115,9 +126,16 @@ public class CollectionDef extends AttributeTypeDef * * @param argumentTypes - list of argument types */ - public void setArgumentTypes(ArrayList<PrimitiveDefCategory> argumentTypes) + public void setArgumentTypes(List<PrimitiveDefCategory> argumentTypes) { - this.argumentTypes = argumentTypes; + if (argumentTypes == null) + { + this.argumentTypes = null; + } + else + { + this.argumentTypes = new ArrayList<>(argumentTypes); + } }