http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/CollectionDefCategory.java
----------------------------------------------------------------------
diff --git 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/CollectionDefCategory.java
 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/CollectionDefCategory.java
index d077a66..8abca8e 100644
--- 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/CollectionDefCategory.java
+++ 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/CollectionDefCategory.java
@@ -17,12 +17,18 @@
  */
 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 
org.apache.atlas.omrs.metadatacollection.properties.instances.ArrayPropertyValue;
 import 
org.apache.atlas.omrs.metadatacollection.properties.instances.MapPropertyValue;
 import 
org.apache.atlas.omrs.metadatacollection.properties.instances.StructPropertyValue;
 
 import java.io.Serializable;
 
+import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE;
+import static 
com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY;
+
 /**
  * This enum defines the list of open metadata collection types.  These types 
are generic types that need to
  * be configured with specific primitive types before they can be used as an 
attribute type.
@@ -30,6 +36,9 @@ import java.io.Serializable;
  * The enum includes a code value, a string name for the type (used in self 
describing structures such as JSON or XML)
  * and the name of the Java Class that supports this type.
  */
+@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, 
fieldVisibility=NONE)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown=true)
 public enum CollectionDefCategory implements Serializable
 {
     OM_COLLECTION_UNKNOWN (0, "<>",              0, null),

http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/EntityDef.java
----------------------------------------------------------------------
diff --git 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/EntityDef.java
 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/EntityDef.java
index 72e216a..6bf068d 100644
--- 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/EntityDef.java
+++ 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/EntityDef.java
@@ -17,10 +17,20 @@
  */
 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 static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE;
+import static 
com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY;
+
 /**
  * EntityDef describes a type of entity in the metadata collection.  It is the 
simplest TypeDef that adds
  * no other properties beyond TypeDef.
  */
+@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, 
fieldVisibility=NONE)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown=true)
 public class EntityDef extends TypeDef
 {
     /**
@@ -61,6 +71,7 @@ public class EntityDef extends TypeDef
         super(template);
     }
 
+
     /**
      * Standard toString method.
      *

http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/EnumDef.java
----------------------------------------------------------------------
diff --git 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/EnumDef.java
 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/EnumDef.java
index 5f7b881..f4b34f1 100644
--- 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/EnumDef.java
+++ 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/EnumDef.java
@@ -18,12 +18,23 @@
 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;
 
 /**
  * The EnumDef describes an open metadata enumeration.  This enumeration 
consists of a list of valid values
  * (stored in EnumElementDef objects) and a default value.
  */
+@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, 
fieldVisibility=NONE)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown=true)
 public class EnumDef extends AttributeTypeDef
 {
     private ArrayList<EnumElementDef> elementDefs    = null;
@@ -50,7 +61,7 @@ public class EnumDef extends AttributeTypeDef
 
         if (template != null)
         {
-            elementDefs = template.getElementDefs();
+            elementDefs = new ArrayList<>(template.getElementDefs());
             defaultValue = template.getDefaultValue();
         }
     }
@@ -61,11 +72,11 @@ public class EnumDef extends AttributeTypeDef
      *
      * @return EnumElementDefs list
      */
-    public ArrayList<EnumElementDef> getElementDefs()
+    public List<EnumElementDef> getElementDefs()
     {
         if (elementDefs == null)
         {
-            return elementDefs;
+            return null;
         }
         else
         {
@@ -79,7 +90,7 @@ public class EnumDef extends AttributeTypeDef
      *
      * @param elementDefs - EnumElementDefs list
      */
-    public void setElementDefs(ArrayList<EnumElementDef> elementDefs) { 
this.elementDefs = elementDefs; }
+    public void setElementDefs(List<EnumElementDef> elementDefs) { 
this.elementDefs = new ArrayList<>(elementDefs); }
 
 
     /**

http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/EnumElementDef.java
----------------------------------------------------------------------
diff --git 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/EnumElementDef.java
 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/EnumElementDef.java
index 810bc85..2ad36d6 100644
--- 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/EnumElementDef.java
+++ 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/EnumElementDef.java
@@ -18,9 +18,19 @@
 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 static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE;
+import static 
com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY;
+
 /**
  * EnumElementDef describes a single valid value defined for an enum.
  */
+@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, 
fieldVisibility=NONE)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown=true)
 public class EnumElementDef extends TypeDefElementHeader
 {
     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/typedefs/ExternalStandardMapping.java
----------------------------------------------------------------------
diff --git 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/ExternalStandardMapping.java
 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/ExternalStandardMapping.java
index e9cca34..7f27531 100644
--- 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/ExternalStandardMapping.java
+++ 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/ExternalStandardMapping.java
@@ -17,12 +17,22 @@
  */
 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 static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE;
+import static 
com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY;
+
 /**
  * ExternalStandardMapping defines a mapping of TypeDefs and TypeDefAttributes 
to an external standard.  It includes the name
  * of the standard, the organization that owns the standard and the equivalent 
type in the external standard.
  * This mapping is done on a property type by property type basis.  The aim is 
to create clarity on the meaning
  * of the open metadata types and support importers and exporters between open 
metadata types and external standards.
  */
+@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, 
fieldVisibility=NONE)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown=true)
 public class ExternalStandardMapping extends TypeDefElementHeader
 {
     private   String standardName = null;

http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/PrimitiveDef.java
----------------------------------------------------------------------
diff --git 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/PrimitiveDef.java
 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/PrimitiveDef.java
index 94ab27b..6521f3f 100644
--- 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/PrimitiveDef.java
+++ 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/PrimitiveDef.java
@@ -17,10 +17,20 @@
  */
 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 static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE;
+import static 
com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY;
+
 /**
  * PrimitiveDef supports the definition of a primitive type.  This information 
is managed in the
  * PrimitiveDefCategory.
  */
+@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, 
fieldVisibility=NONE)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown=true)
 public class PrimitiveDef extends AttributeTypeDef
 {
     private  PrimitiveDefCategory   primitiveDefCategory = null;

http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/PrimitiveDefCategory.java
----------------------------------------------------------------------
diff --git 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/PrimitiveDefCategory.java
 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/PrimitiveDefCategory.java
index 2c5f65a..b6b5387 100644
--- 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/PrimitiveDefCategory.java
+++ 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/PrimitiveDefCategory.java
@@ -17,17 +17,27 @@
  */
 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 java.util.ArrayList;
 
+import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE;
+import static 
com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY;
+
 /**
  * This enumeration defines the list of open metadata primitive types.  This 
includes a code value, a string
  * name for the type (used in self describing structures such as JSON or XML) 
and the name of the Java Class
  * that supports this type.
  */
+@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, 
fieldVisibility=NONE)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown=true)
 public enum PrimitiveDefCategory implements Serializable
 {
-    OM_PRIMITIVE_TYPE_UNKNOWN   (0,  "<>",         null,                    
null),
+    OM_PRIMITIVE_TYPE_UNKNOWN   (0,  "<>",         "java.lang.Object",      
"1c4b21f4-0b67-41a7-a6ed-2af185eb9b3b"),
     OM_PRIMITIVE_TYPE_BOOLEAN   (1,  "boolean",    "java.lang.Boolean",     
"3863f010-611c-41fe-aaae-5d4d427f863b"),
     OM_PRIMITIVE_TYPE_BYTE      (2,  "byte",       "java.lang.Byte",        
"6b7d410a-2e8a-4d12-981a-a806449f9bdb"),
     OM_PRIMITIVE_TYPE_CHAR      (3,  "char",       "java.Lang.Char",        
"b0abebe5-cf85-4065-86ad-f3c6360ed9c7"),

http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/RelationshipCategory.java
----------------------------------------------------------------------
diff --git 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/RelationshipCategory.java
 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/RelationshipCategory.java
index da21faa..8a6d7dd 100644
--- 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/RelationshipCategory.java
+++ 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/RelationshipCategory.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;
+
 /**
  * <p>
  *     The RelationshipCategory determines the style of relationship around 
containment and lifecycle.
@@ -33,13 +40,18 @@ import java.io.Serializable;
  *     Entities in an aggregation relationship can be
  *     aggregated by many other entities and their lifecycle is not controlled 
by the containing entity.
  *     For example, contained entities are not deleted when the containing 
entity is deleted.
+ *     The aggregating end of a relationship is End 1.
  * </p>
  * <p>
  *     Composition relationship is a "part of" relationship where the 
contained entities can only exist in the
  *     scope/context of the containing entity.  Often the fully qualified name 
of a contained entity
  *     in a composition relationship includes the name of its containing 
entity.
+ *     The composing end of a relationship is end 1.
  * </p>
  */
+@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, 
fieldVisibility=NONE)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown=true)
 public enum RelationshipCategory implements Serializable
 {
     UNKNOWN    (0, "<Unknown>",   "Uninitialized Relationship."),

http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/RelationshipContainerEnd.java
----------------------------------------------------------------------
diff --git 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/RelationshipContainerEnd.java
 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/RelationshipContainerEnd.java
index 4c533c1..35dd1b5 100644
--- 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/RelationshipContainerEnd.java
+++ 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/RelationshipContainerEnd.java
@@ -18,12 +18,22 @@
 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 RelationshipContainerEnd enum defines which end of the relationship is 
the container (where the diamond is
  * in UML-speak).  NOT_APPLICABLE is used on an association.  END1 or END2 is 
used on an aggregation or composition.
  */
+@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, 
fieldVisibility=NONE)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown=true)
 public enum RelationshipContainerEnd implements Serializable
 {
     NOT_APPLICABLE  (0, "Not Applicable",  "This relationship does not support 
containment."),

http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/RelationshipDef.java
----------------------------------------------------------------------
diff --git 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/RelationshipDef.java
 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/RelationshipDef.java
index 44f7adb..f706752 100644
--- 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/RelationshipDef.java
+++ 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/RelationshipDef.java
@@ -18,12 +18,22 @@
 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 static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE;
+import static 
com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY;
+
 /**
  * RelationshipDef describes the type of a relationship.  A relationships 
links two entities together.
  * The RelationshipDef defines the types of those entities in the 
RelationshipEndDefs.  It
  * defines if this relationship allows classifications to propagate through it 
and also it defines the type of
  * relationship - such as association, composition and aggregation.
  */
+@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, 
fieldVisibility=NONE)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown=true)
 public class RelationshipDef extends TypeDef
 {
     private RelationshipCategory          relationshipCategory     = 
RelationshipCategory.UNKNOWN;

http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/RelationshipEndDef.java
----------------------------------------------------------------------
diff --git 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/RelationshipEndDef.java
 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/RelationshipEndDef.java
index 3ff3837..396604f 100644
--- 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/RelationshipEndDef.java
+++ 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/RelationshipEndDef.java
@@ -18,9 +18,19 @@
 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 static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE;
+import static 
com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY;
+
 /**
  * RelationshipEndDef describes the type of the entity and the attribute 
information for one end of a RelationshipDef.
  */
+@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, 
fieldVisibility=NONE)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown=true)
 public class RelationshipEndDef extends TypeDefElementHeader
 {
     private TypeDefLink          entityType               = null;

http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDef.java
----------------------------------------------------------------------
diff --git 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDef.java
 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDef.java
index 710f78d..2191944 100644
--- 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDef.java
+++ 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDef.java
@@ -17,19 +17,29 @@
  */
 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 
org.apache.atlas.omrs.metadatacollection.properties.instances.InstanceStatus;
 
 import java.util.ArrayList;
 import java.util.Date;
+import java.util.List;
 import java.util.Map;
 
+import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE;
+import static 
com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY;
+
 /**
  * The TypeDef is the base class for objects that store the properties of an 
open metadata type
  * definition (call ed a TypeDef).
  * <p>
  * The different categories of Typedefs are listed in TypeDefCategory.
  */
-public abstract class TypeDef extends TypeDefSummary
+@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, 
fieldVisibility=NONE)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown=true)
+public class TypeDef extends TypeDefSummary
 {
     protected TypeDefLink                        superType                = 
null;
     protected String                             description              = 
null;
@@ -47,6 +57,14 @@ public abstract class TypeDef extends TypeDefSummary
 
 
     /**
+     * Default constructor
+     */
+    public TypeDef()
+    {
+    }
+
+
+    /**
      * Minimal constructor is passed the category of the typedef being 
constructed.
      * The rest of the properties are null.
      *
@@ -98,9 +116,9 @@ public abstract class TypeDef extends TypeDefSummary
             this.createTime = template.getCreateTime();
             this.updateTime = template.getUpdateTime();
             this.options = template.getOptions();
-            this.externalStandardMappings = 
template.getExternalStandardMappings();
-            this.validInstanceStatusList = 
template.getValidInstanceStatusList();
-            this.propertiesDefinition = template.getPropertiesDefinition();
+            
this.setExternalStandardMappings(template.getExternalStandardMappings());
+            
this.setValidInstanceStatusList(template.getValidInstanceStatusList());
+            this.setPropertiesDefinition(template.getPropertiesDefinition());
         }
     }
 
@@ -308,11 +326,11 @@ public abstract class TypeDef extends TypeDefSummary
      *
      * @return ExternalStandardMappings list
      */
-    public ArrayList<ExternalStandardMapping> getExternalStandardMappings()
+    public List<ExternalStandardMapping> getExternalStandardMappings()
     {
         if (externalStandardMappings == null)
         {
-            return externalStandardMappings;
+            return null;
         }
         else
         {
@@ -326,9 +344,16 @@ public abstract class TypeDef extends TypeDefSummary
      *
      * @param externalStandardMappings - ExternalStandardMappings list
      */
-    public void setExternalStandardMappings(ArrayList<ExternalStandardMapping> 
externalStandardMappings)
+    public void setExternalStandardMappings(List<ExternalStandardMapping> 
externalStandardMappings)
     {
-        this.externalStandardMappings = externalStandardMappings;
+        if (externalStandardMappings == null)
+        {
+            this.externalStandardMappings = null;
+        }
+        else
+        {
+            this.externalStandardMappings = new 
ArrayList<>(externalStandardMappings);
+        }
     }
 
 
@@ -337,9 +362,16 @@ public abstract class TypeDef extends TypeDefSummary
      *
      * @return InstanceStatus array of supported status values.
      */
-    public ArrayList<InstanceStatus> getValidInstanceStatusList()
+    public List<InstanceStatus> getValidInstanceStatusList()
     {
-        return validInstanceStatusList;
+        if (validInstanceStatusList == null)
+        {
+            return null;
+        }
+        else
+        {
+            return new ArrayList<>(validInstanceStatusList);
+        }
     }
 
 
@@ -348,9 +380,16 @@ public abstract class TypeDef extends TypeDefSummary
      *
      * @param validInstanceStatusList - InstanceStatus Array
      */
-    public void setValidInstanceStatusList(ArrayList<InstanceStatus> 
validInstanceStatusList)
+    public void setValidInstanceStatusList(List<InstanceStatus> 
validInstanceStatusList)
     {
-        this.validInstanceStatusList = validInstanceStatusList;
+        if (validInstanceStatusList == null)
+        {
+            this.validInstanceStatusList = null;
+        }
+        else
+        {
+            this.validInstanceStatusList = new 
ArrayList<>(validInstanceStatusList);
+        }
     }
 
 
@@ -381,11 +420,11 @@ public abstract class TypeDef extends TypeDefSummary
      *
      * @return AttributeDefs list
      */
-    public ArrayList<TypeDefAttribute> getPropertiesDefinition()
+    public List<TypeDefAttribute> getPropertiesDefinition()
     {
-        if(propertiesDefinition == null)
+        if (propertiesDefinition == null)
         {
-            return propertiesDefinition;
+            return null;
         }
         else
         {
@@ -399,9 +438,16 @@ public abstract class TypeDef extends TypeDefSummary
      *
      * @param propertiesDefinition - AttributeDefs list
      */
-    public void setPropertiesDefinition(ArrayList<TypeDefAttribute> 
propertiesDefinition)
+    public void setPropertiesDefinition(List<TypeDefAttribute> 
propertiesDefinition)
     {
-        this.propertiesDefinition = propertiesDefinition;
+        if (propertiesDefinition == null)
+        {
+            this.propertiesDefinition = null;
+        }
+        else
+        {
+            this.propertiesDefinition = new ArrayList<>(propertiesDefinition);
+        }
     }
 
 

http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDefAttribute.java
----------------------------------------------------------------------
diff --git 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDefAttribute.java
 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDefAttribute.java
index 36c4b24..5c88be8 100644
--- 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDefAttribute.java
+++ 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDefAttribute.java
@@ -18,12 +18,23 @@
 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;
 
 /**
  * TypeDefAttribute stores the properties used to describe a attribute within 
a Classification,
  * Entity or Relationship.  The attribute may itself be of types Enum, 
Collection or Primitive Types.
  */
+@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, 
fieldVisibility=NONE)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown=true)
 public class TypeDefAttribute extends TypeDefElementHeader
 {
     protected String                             attributeName            = 
null;
@@ -69,7 +80,7 @@ public class TypeDefAttribute extends TypeDefElementHeader
             isUnique = template.isUnique();
             isIndexable = template.isIndexable();
             defaultValue = template.getDefaultValue();
-            externalStandardMappings = template.getExternalStandardMappings();
+            
this.setExternalStandardMappings(template.getExternalStandardMappings());
         }
     }
 
@@ -263,11 +274,11 @@ public class TypeDefAttribute extends TypeDefElementHeader
      *
      * @return ExternalStandardMappings list
      */
-    public ArrayList<ExternalStandardMapping> getExternalStandardMappings()
+    public List<ExternalStandardMapping> getExternalStandardMappings()
     {
         if (externalStandardMappings == null)
         {
-            return externalStandardMappings;
+            return null;
         }
         else
         {
@@ -281,9 +292,16 @@ public class TypeDefAttribute extends TypeDefElementHeader
      *
      * @param externalStandardMappings - ExternalStandardMappings list
      */
-    public void setExternalStandardMappings(ArrayList<ExternalStandardMapping> 
externalStandardMappings)
+    public void setExternalStandardMappings(List<ExternalStandardMapping> 
externalStandardMappings)
     {
-        this.externalStandardMappings = externalStandardMappings;
+        if (externalStandardMappings == null)
+        {
+            this.externalStandardMappings = null;
+        }
+        else
+        {
+            this.externalStandardMappings = new 
ArrayList<>(externalStandardMappings);
+        }
     }
 
 

http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDefCategory.java
----------------------------------------------------------------------
diff --git 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDefCategory.java
 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDefCategory.java
index 1cd3b71..458fe13 100644
--- 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDefCategory.java
+++ 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDefCategory.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 TypeDefCategory defines the list of valid types of TypeDef for open 
metadata instances.
  */
+@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, 
fieldVisibility=NONE)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown=true)
 public enum TypeDefCategory implements Serializable
 {
     UNKNOWN_DEF        (0, "<Unknown>",         "Uninitialized TypeDef 
object."),

http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDefElementHeader.java
----------------------------------------------------------------------
diff --git 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDefElementHeader.java
 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDefElementHeader.java
index 6323bbf..25c50f6 100644
--- 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDefElementHeader.java
+++ 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDefElementHeader.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;
+
 /**
  * TypeDefElementHeader provides a common base for all typedef information.
  */
+@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, 
fieldVisibility=NONE)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown=true)
 public class TypeDefElementHeader 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/typedefs/TypeDefGallery.java
----------------------------------------------------------------------
diff --git 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDefGallery.java
 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDefGallery.java
index a29c57c..68f1f1f 100644
--- 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDefGallery.java
+++ 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDefGallery.java
@@ -18,11 +18,22 @@
 
 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;
 
 /**
- * TypeDefGallery contains details of the AttributeTypeDefs and full TypeDefs 
supported by a rep
+ * TypeDefGalleryResponse contains details of the AttributeTypeDefs and full 
TypeDefs supported by a rep
  */
+@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, 
fieldVisibility=NONE)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown=true)
 public class TypeDefGallery
 {
     private ArrayList<AttributeTypeDef> attributeTypeDefs = null;
@@ -46,18 +57,11 @@ public class TypeDefGallery
     {
         if (template != null)
         {
-            ArrayList<AttributeTypeDef> templateAttributeTypeDefs = 
template.getAttributeTypeDefs();
-            ArrayList<TypeDef>          templateTypeDefs          = 
template.getTypeDefs();
-
-            if (templateAttributeTypeDefs != null)
-            {
-                attributeTypeDefs = new ArrayList<>(templateAttributeTypeDefs);
-            }
-
-            if (templateTypeDefs != null)
-            {
-                typeDefs = new ArrayList<>(templateTypeDefs);
-            }
+            List<AttributeTypeDef> templateAttributeTypeDefs = 
template.getAttributeTypeDefs();
+            List<TypeDef>          templateTypeDefs          = 
template.getTypeDefs();
+
+            this.setAttributeTypeDefs(templateAttributeTypeDefs);
+            this.setTypeDefs(templateTypeDefs);
         }
     }
 
@@ -67,11 +71,11 @@ public class TypeDefGallery
      *
      * @return list of attribute type definitions
      */
-    public ArrayList<AttributeTypeDef> getAttributeTypeDefs()
+    public List<AttributeTypeDef> getAttributeTypeDefs()
     {
         if (attributeTypeDefs == null)
         {
-            return attributeTypeDefs;
+            return null;
         }
         else
         {
@@ -85,9 +89,16 @@ public class TypeDefGallery
      *
      * @param attributeTypeDefs - list of attribute type definitions
      */
-    public void setAttributeTypeDefs(ArrayList<AttributeTypeDef> 
attributeTypeDefs)
+    public void setAttributeTypeDefs(List<AttributeTypeDef> attributeTypeDefs)
     {
-        this.attributeTypeDefs = attributeTypeDefs;
+        if (attributeTypeDefs == null)
+        {
+            this.attributeTypeDefs = null;
+        }
+        else
+        {
+            this.attributeTypeDefs = new ArrayList<>(attributeTypeDefs);
+        }
     }
 
 
@@ -100,7 +111,7 @@ public class TypeDefGallery
     {
         if (typeDefs == null)
         {
-            return typeDefs;
+            return null;
         }
         else
         {
@@ -114,8 +125,15 @@ public class TypeDefGallery
      *
      * @param typeDefs - list of type definitions
      */
-    public void setTypeDefs(ArrayList<TypeDef> typeDefs)
+    public void setTypeDefs(List<TypeDef> typeDefs)
     {
-        this.typeDefs = typeDefs;
+        if (typeDefs == null)
+        {
+            this.typeDefs = null;
+        }
+        else
+        {
+            this.typeDefs = new ArrayList<>(typeDefs);
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDefLink.java
----------------------------------------------------------------------
diff --git 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDefLink.java
 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDefLink.java
index 83b63ed..4378e92 100644
--- 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDefLink.java
+++ 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDefLink.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 TypeDefHolds holds basic identifying information used to link one 
TypeDef to another.  It is used in
  * the definition of types - ie in the TypeDefs themselves.  Examples include 
linking a classification to an
@@ -30,6 +37,9 @@ import java.util.Objects;
  *     identity of the types since it is easy to introduce two types with the 
same name in the distributed model.
  * </p>
  */
+@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, 
fieldVisibility=NONE)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown=true)
 public class TypeDefLink extends TypeDefElementHeader
 {
     protected  String                   guid = null;

http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDefPatch.java
----------------------------------------------------------------------
diff --git 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDefPatch.java
 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDefPatch.java
index b6dcf23..a9144ba 100644
--- 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDefPatch.java
+++ 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDefPatch.java
@@ -17,11 +17,18 @@
  */
 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 
org.apache.atlas.omrs.metadatacollection.properties.instances.InstanceStatus;
 
 import java.util.ArrayList;
+import java.util.List;
 import java.util.Map;
 
+import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE;
+import static 
com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY;
+
 
 /**
  * TypeDefPatch describes a change (patch) to a typeDef's properties, options, 
external standards mappings or
@@ -30,6 +37,9 @@ import java.util.Map;
  * Changes to a TypeDef's category or superclasses requires a new type 
definition.
  * In addition it is not possible to delete an attribute through a patch.
  */
+@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, 
fieldVisibility=NONE)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown=true)
 public class TypeDefPatch extends TypeDefElementHeader
 {
     private TypeDefPatchAction                 action                   = null;
@@ -229,8 +239,16 @@ public class TypeDefPatch extends TypeDefElementHeader
      *
      * @return list of AttributeDefs
      */
-    public ArrayList<TypeDefAttribute> getTypeDefAttributes() {
-        return typeDefAttributes;
+    public List<TypeDefAttribute> getTypeDefAttributes()
+    {
+        if (typeDefAttributes == null)
+        {
+            return null;
+        }
+        else
+        {
+            return new ArrayList<>(typeDefAttributes);
+        }
     }
 
 
@@ -239,9 +257,16 @@ public class TypeDefPatch extends TypeDefElementHeader
      *
      * @param typeDefAttributes - list of AttributeDefs
      */
-    public void setTypeDefAttributes(ArrayList<TypeDefAttribute> 
typeDefAttributes)
+    public void setTypeDefAttributes(List<TypeDefAttribute> typeDefAttributes)
     {
-        this.typeDefAttributes = typeDefAttributes;
+        if (typeDefAttributes == null)
+        {
+            this.typeDefAttributes = null;
+        }
+        else
+        {
+            this.typeDefAttributes = new ArrayList<>(typeDefAttributes);
+        }
     }
 
 
@@ -250,7 +275,8 @@ public class TypeDefPatch extends TypeDefElementHeader
      *
      * @return map of TypeDef Options that are new or changing.
      */
-    public Map<String, String> getTypeDefOptions() {
+    public Map<String, String> getTypeDefOptions()
+    {
         return typeDefOptions;
     }
 
@@ -260,7 +286,8 @@ public class TypeDefPatch extends TypeDefElementHeader
      *
      * @param typeDefOptions - map of TypeDef Options that are new or changing.
      */
-    public void setTypeDefOptions(Map<String, String> typeDefOptions) {
+    public void setTypeDefOptions(Map<String, String> typeDefOptions)
+    {
         this.typeDefOptions = typeDefOptions;
     }
 
@@ -270,9 +297,16 @@ public class TypeDefPatch extends TypeDefElementHeader
      *
      * @return list of external standards mappings
      */
-    public ArrayList<ExternalStandardMapping> getExternalStandardMappings()
+    public List<ExternalStandardMapping> getExternalStandardMappings()
     {
-        return externalStandardMappings;
+        if (externalStandardMappings == null)
+        {
+            return null;
+        }
+        else
+        {
+            return new ArrayList<>(externalStandardMappings);
+        }
     }
 
 
@@ -281,9 +315,16 @@ public class TypeDefPatch extends TypeDefElementHeader
      *
      * @param externalStandardMappings list of external standards mappings
      */
-    public void setExternalStandardMappings(ArrayList<ExternalStandardMapping> 
externalStandardMappings)
+    public void setExternalStandardMappings(List<ExternalStandardMapping> 
externalStandardMappings)
     {
-        this.externalStandardMappings = externalStandardMappings;
+        if (externalStandardMappings == null)
+        {
+            this.externalStandardMappings = null;
+        }
+        else
+        {
+            this.externalStandardMappings = new 
ArrayList<>(externalStandardMappings);
+        }
     }
 
 
@@ -292,9 +333,16 @@ public class TypeDefPatch extends TypeDefElementHeader
      *
      * @return list of valid statuses
      */
-    public ArrayList<InstanceStatus> getValidInstanceStatusList()
+    public List<InstanceStatus> getValidInstanceStatusList()
     {
-        return validInstanceStatusList;
+        if (validInstanceStatusList == null)
+        {
+            return null;
+        }
+        else
+        {
+            return new ArrayList<>(validInstanceStatusList);
+        }
     }
 
 
@@ -303,9 +351,16 @@ public class TypeDefPatch extends TypeDefElementHeader
      *
      * @param validInstanceStatusList - list of valid statuses
      */
-    public void setValidInstanceStatusList(ArrayList<InstanceStatus> 
validInstanceStatusList)
+    public void setValidInstanceStatusList(List<InstanceStatus> 
validInstanceStatusList)
     {
-        this.validInstanceStatusList = validInstanceStatusList;
+        if (validInstanceStatusList == null)
+        {
+            this.validInstanceStatusList = null;
+        }
+        else
+        {
+            this.validInstanceStatusList = new 
ArrayList<>(validInstanceStatusList);
+        }
     }
 
 

http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDefPatchAction.java
----------------------------------------------------------------------
diff --git 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDefPatchAction.java
 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDefPatchAction.java
index c89c42a..7079a1d 100644
--- 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDefPatchAction.java
+++ 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDefPatchAction.java
@@ -18,11 +18,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 static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE;
+import static 
com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY;
+
 /**
  * TypeDefPatchAction defines the types of actions that can be taken to update 
a TypeDef.  These changes are safe
  * to make while there are active instances using them.  If more extensive 
changes need to be made to a TypeDef
  * then a new TypeDef should be defined.
  */
+@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, 
fieldVisibility=NONE)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown=true)
 public enum TypeDefPatchAction
 {
     ADD_ATTRIBUTES                (1, "AddAttributes",

http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDefProperties.java
----------------------------------------------------------------------
diff --git 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDefProperties.java
 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDefProperties.java
index cfb549e..1c8103d 100644
--- 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDefProperties.java
+++ 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDefProperties.java
@@ -17,12 +17,16 @@
  */
 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 org.apache.atlas.omrs.ffdc.OMRSErrorCode;
 import org.apache.atlas.omrs.ffdc.exception.OMRSRuntimeException;
 
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
+import java.util.*;
+
+import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE;
+import static 
com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY;
 
 
 /**
@@ -30,9 +34,12 @@ import java.util.Map;
  * It is used for searching the TypeDefs.
  * It wraps a java.util.Map map object built around HashMap.
  */
+@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, 
fieldVisibility=NONE)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown=true)
 public class TypeDefProperties extends TypeDefElementHeader
 {
-    private Map<String,Object>  typeDefProperties = new HashMap<>();
+    private ArrayList<String> typeDefProperties = new ArrayList<>();
 
 
     /**
@@ -58,83 +65,43 @@ public class TypeDefProperties extends TypeDefElementHeader
          */
         if (templateProperties != null)
         {
-            /*
-             * Process templateProperties if they are not null
-             */
-            Iterator<String> propertyNames = 
templateProperties.getPropertyNames();
-
-            if (propertyNames != null)
-            {
-                while (propertyNames.hasNext())
-                {
-                    String newPropertyName = propertyNames.next();
-                    Object newPropertyValue = 
templateProperties.getProperty(newPropertyName);
-
-                    typeDefProperties.put(newPropertyName, newPropertyValue);
-                }
-            }
+            
this.setTypeDefProperties(templateProperties.getTypeDefProperties());
         }
     }
 
 
     /**
-     * Returns a list of the instance properties for the element.
-     * If no stored properties are present then null is returned.
-     *
-     * @return list of properties
-     */
-    public Iterator<String> getPropertyNames()
-    {
-        return typeDefProperties.keySet().iterator();
-    }
-
-
-    /**
-     * Returns the requested instance property for the element.
-     * If no stored property with that name is present then null is returned.
+     * Return the list of property names
      *
-     * @param name - String name of the property to return.
-     * @return requested property value.
+     * @return List of String property names
      */
-    public Object getProperty(String name)
+    public List<String> getTypeDefProperties()
     {
-        return typeDefProperties.get(name);
+        if (typeDefProperties == null)
+        {
+            return null;
+        }
+        else
+        {
+            return new ArrayList<>(typeDefProperties);
+        }
     }
 
 
     /**
-     * Adds or updates an instance property.
-     * If a null is supplied for the property name, an OMRS runtime exception 
is thrown.
-     * If a null is supplied for the property value, the property is removed.
+     * Set up the list of property names.
      *
-     * @param  newPropertyName - name
-     * @param  newPropertyValue - value
+     * @param typeDefProperties - list of property names
      */
-    public void setProperty(String newPropertyName, Object newPropertyValue)
+    public void setTypeDefProperties(List<String> typeDefProperties)
     {
-        if (newPropertyName == null)
-        {
-            /*
-             * Build and throw exception.
-             */
-            OMRSErrorCode errorCode = OMRSErrorCode.NULL_PROPERTY_NAME;
-            String        errorMessage = errorCode.getErrorMessageId()
-                                       + errorCode.getFormattedErrorMessage();
-
-            throw new OMRSRuntimeException(errorCode.getHTTPErrorCode(),
-                                          this.getClass().getName(),
-                                          "setProperty",
-                                          errorMessage,
-                                          errorCode.getSystemAction(),
-                                          errorCode.getUserAction());
-        }
-        else if (newPropertyValue == null)
+        if (typeDefProperties == null)
         {
-            typeDefProperties.remove(newPropertyName);
+            this.typeDefProperties = null;
         }
         else
         {
-            typeDefProperties.put(newPropertyName, newPropertyValue);
+            this.typeDefProperties = new ArrayList<>(typeDefProperties);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDefSummary.java
----------------------------------------------------------------------
diff --git 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDefSummary.java
 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDefSummary.java
index 864c82d..9958da6 100644
--- 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDefSummary.java
+++ 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/properties/typedefs/TypeDefSummary.java
@@ -18,10 +18,20 @@
 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 static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE;
+import static 
com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.PUBLIC_ONLY;
+
 /**
  * The TypeDefSummary holds basic identifying information for a specific 
TypeDef.  It is used in
  * the registration process between repositories.
  */
+@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, 
fieldVisibility=NONE)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown=true)
 public class TypeDefSummary extends TypeDefLink
 {
     protected long            version     = 0L;

http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/repositoryconnector/OMRSMetadataCollectionManager.java
----------------------------------------------------------------------
diff --git 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/repositoryconnector/OMRSMetadataCollectionManager.java
 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/repositoryconnector/OMRSMetadataCollectionManager.java
index a001208..1407666 100644
--- 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/repositoryconnector/OMRSMetadataCollectionManager.java
+++ 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/repositoryconnector/OMRSMetadataCollectionManager.java
@@ -17,6 +17,8 @@
  */
 package org.apache.atlas.omrs.metadatacollection.repositoryconnector;
 
+import 
org.apache.atlas.omrs.localrepository.repositorycontentmanager.OMRSRepositoryHelper;
+import 
org.apache.atlas.omrs.localrepository.repositorycontentmanager.OMRSRepositoryValidator;
 import org.apache.atlas.omrs.metadatacollection.OMRSMetadataCollection;
 
 /**
@@ -29,6 +31,55 @@ import 
org.apache.atlas.omrs.metadatacollection.OMRSMetadataCollection;
 public interface OMRSMetadataCollectionManager
 {
     /**
+     * Set up a repository helper object for the repository connector to use.
+     *
+     * @param repositoryHelper - helper object for building TypeDefs and 
metadata instances.
+     */
+    void setRepositoryHelper(OMRSRepositoryHelper   repositoryHelper);
+
+
+    /**
+     * Set up a repository validator for the repository connector to use.
+     *
+     * @param repositoryValidator - validator object to check the validity of 
TypeDefs and metadata instances.
+     */
+    void setRepositoryValidator(OMRSRepositoryValidator  repositoryValidator);
+
+
+    /**
+     * Set up the maximum PageSize
+     *
+     * @param maxPageSize - maximum number of elements that can be retrieved 
on a request.
+     */
+    void setMaxPageSize(int    maxPageSize);
+
+
+    /**
+     * Set up the name of the server where the metadata collection resides.
+     *
+     * @param serverName - String name
+     */
+    void  setServerName(String      serverName);
+
+
+    /**
+     * Set up the descriptive string describing the type of the server.  This 
might be the
+     * name of the product, or similar identifier.
+     *
+     * @param serverType - String server type
+     */
+    void setServerType(String serverType);
+
+
+    /**
+     * Set up the name of the organization that runs/owns the server.
+     *
+     * @param organizationName - String organization name
+     */
+    void setOrganizationName(String organizationName);
+
+
+    /**
      * Set up the unique Id for this metadata collection.
      *
      * @param metadataCollectionId - String unique Id

http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/repositoryconnector/OMRSRepositoryConnector.java
----------------------------------------------------------------------
diff --git 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/repositoryconnector/OMRSRepositoryConnector.java
 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/repositoryconnector/OMRSRepositoryConnector.java
index 46bd19a..2d0f3b2 100644
--- 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/repositoryconnector/OMRSRepositoryConnector.java
+++ 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatacollection/repositoryconnector/OMRSRepositoryConnector.java
@@ -18,12 +18,164 @@
 package org.apache.atlas.omrs.metadatacollection.repositoryconnector;
 
 import org.apache.atlas.ocf.ConnectorBase;
+import org.apache.atlas.omrs.ffdc.OMRSErrorCode;
+import org.apache.atlas.omrs.ffdc.exception.OMRSLogicErrorException;
+import org.apache.atlas.omrs.ffdc.exception.RepositoryErrorException;
+import 
org.apache.atlas.omrs.localrepository.repositorycontentmanager.OMRSRepositoryHelper;
+import 
org.apache.atlas.omrs.localrepository.repositorycontentmanager.OMRSRepositoryValidator;
+import org.apache.atlas.omrs.metadatacollection.OMRSMetadataCollection;
 
 
 /**
- * The OMRSRepositoryConnector provides access to the secure properties for 
OMRS Connector implementations.
- * Subclasses need to implement the OMRSMetadataCollectionManager interface.
+ * The OMRSRepositoryConnector defines the interface for an OMRS Repository 
Connector.  It is an abstract
+ * class since not all of the methods for OMRSMetadataCollectionManager are 
implemented.
  */
 public abstract class OMRSRepositoryConnector extends ConnectorBase implements 
OMRSMetadataCollectionManager
 {
+    protected OMRSRepositoryHelper    repositoryHelper     = null;
+    protected OMRSRepositoryValidator repositoryValidator  = null;
+    protected String                  serverName           = null;
+    protected String                  serverType           = null;
+    protected String                  organizationName     = null;
+    protected int                     maxPageSize          = 1000;
+
+    protected String                  metadataCollectionId = null;
+    protected OMRSMetadataCollection  metadataCollection   = null;
+
+
+    /**
+     * Default constructor - nothing to do
+     */
+    public OMRSRepositoryConnector()
+    {
+    }
+
+
+    /**
+     * Set up a repository helper object for the repository connector to use.
+     *
+     * @param repositoryHelper - helper object for building TypeDefs and 
metadata instances.
+     */
+    public void setRepositoryHelper(OMRSRepositoryHelper repositoryHelper)
+    {
+        this.repositoryHelper = repositoryHelper;
+    }
+
+
+    /**
+     * Set up a repository validator for the repository connector to use.
+     *
+     * @param repositoryValidator - validator object to check the validity of 
TypeDefs and metadata instances.
+     */
+    public void setRepositoryValidator(OMRSRepositoryValidator 
repositoryValidator)
+    {
+        this.repositoryValidator = repositoryValidator;
+    }
+
+
+    /**
+     * Set up the name of the server where the metadata collection resides.
+     *
+     * @param serverName - String name
+     */
+    public void  setServerName(String      serverName)
+    {
+        this.serverName = serverName;
+    }
+
+
+    /**
+     * Set up the descriptive string describing the type of the server.  This 
might be the
+     * name of the product, or similar identifier.
+     *
+     * @param serverType - String server type
+     */
+    public void setServerType(String serverType)
+    {
+        this.serverType = serverType;
+    }
+
+
+    /**
+     * Set up the name of the organization that runs/owns the server.
+     *
+     * @param organizationName - String organization name
+     */
+    public void setOrganizationName(String organizationName)
+    {
+        this.organizationName = organizationName;
+    }
+
+
+    /**
+     * Set up the unique Id for this metadata collection.
+     *
+     * @param metadataCollectionId - String unique Id
+     */
+    public void setMetadataCollectionId(String         metadataCollectionId)
+    {
+        this.metadataCollectionId = metadataCollectionId;
+    }
+
+
+    /**
+     * Set up the maximum PageSize
+     *
+     * @param maxPageSize - maximum number of elements that can be retrieved 
on a request.
+     */
+    public void setMaxPageSize(int    maxPageSize)
+    {
+        this.maxPageSize = maxPageSize;
+    }
+
+
+    /**
+     * Throw a RepositoryErrorException if the connector is not active.
+     *
+     * @throws RepositoryErrorException repository connector has not started 
or has been disconnected.
+     */
+    public void validateRepositoryIsActive(String  methodName) throws 
RepositoryErrorException
+    {
+        if (! super.isActive())
+        {
+            OMRSErrorCode errorCode = OMRSErrorCode.REPOSITORY_NOT_AVAILABLE;
+
+            String errorMessage = errorCode.getErrorMessageId() + 
errorCode.getFormattedErrorMessage(serverName, methodName);
+
+            throw new RepositoryErrorException(errorCode.getHTTPErrorCode(),
+                                               this.getClass().getName(),
+                                               methodName,
+                                               errorMessage,
+                                               errorCode.getSystemAction(),
+                                               errorCode.getUserAction());
+        }
+    }
+
+
+    /**
+     * Returns the metadata collection object that provides an OMRS 
abstraction of the metadata within
+     * a metadata repository.
+     *
+     * @return OMRSMetadataCollection - metadata information retrieved from 
the metadata repository.
+     */
+    public OMRSMetadataCollection getMetadataCollection()
+    {
+        if (metadataCollection == null)
+        {
+            final String      methodName = "getMetadataCollection";
+
+            OMRSErrorCode errorCode = OMRSErrorCode.NULL_METADATA_COLLECTION;
+            String        errorMessage = errorCode.getErrorMessageId()
+                                       + 
errorCode.getFormattedErrorMessage(serverName);
+
+            throw new OMRSLogicErrorException(errorCode.getHTTPErrorCode(),
+                                              this.getClass().getName(),
+                                              methodName,
+                                              errorMessage,
+                                              errorCode.getSystemAction(),
+                                              errorCode.getUserAction());
+        }
+
+        return metadataCollection;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatahighway/OMRSCohortManager.java
----------------------------------------------------------------------
diff --git 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatahighway/OMRSCohortManager.java
 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatahighway/OMRSCohortManager.java
index 755dae8..e643653 100644
--- 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatahighway/OMRSCohortManager.java
+++ 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatahighway/OMRSCohortManager.java
@@ -24,6 +24,8 @@ import org.apache.atlas.omrs.auditlog.OMRSAuditLog;
 import org.apache.atlas.omrs.auditlog.OMRSAuditingComponent;
 import org.apache.atlas.omrs.ffdc.OMRSErrorCode;
 import org.apache.atlas.omrs.ffdc.exception.OMRSConnectorErrorException;
+import 
org.apache.atlas.omrs.localrepository.repositorycontentmanager.OMRSRepositoryContentManager;
+import 
org.apache.atlas.omrs.localrepository.repositorycontentmanager.OMRSRepositoryValidator;
 import org.apache.atlas.omrs.metadatahighway.cohortregistry.OMRSCohortRegistry;
 import 
org.apache.atlas.omrs.metadatahighway.cohortregistry.store.OMRSCohortRegistryStore;
 import org.apache.atlas.omrs.eventmanagement.*;
@@ -73,6 +75,7 @@ public class OMRSCohortManager
      * @param localOrganizationName - the name of the organization that owns 
the local server/repository.
      *                              It is a descriptive name for informational 
purposes.
      * @param localRepository - link to the local repository - may be null.
+     * @param localRepositoryContentManager - the content manager that stores 
information about the known types
      * @param connectionConsumer - The connection consumer is a component 
interested in maintaining details of the
      *                           connections to each of the members of the 
open metadata repository cohort.  If it is
      *                           null, the cohort registry does not publish 
connections for members of the open
@@ -89,6 +92,7 @@ public class OMRSCohortManager
                            String                           localServerType,
                            String                           
localOrganizationName,
                            OMRSLocalRepository              localRepository,
+                           OMRSRepositoryContentManager     
localRepositoryContentManager,
                            OMRSConnectionConsumer           connectionConsumer,
                            OMRSTopicConnector               
enterpriseTopicConnector,
                            OMRSCohortRegistryStore          
cohortRegistryStore,
@@ -126,7 +130,8 @@ public class OMRSCohortManager
             /*
              * Create the event manager for processing incoming events from 
the cohort's OMRS Topic.
              */
-            this.cohortRepositoryEventManager = new 
OMRSRepositoryEventManager(inboundEventExchangeRule);
+            this.cohortRepositoryEventManager = new 
OMRSRepositoryEventManager(inboundEventExchangeRule,
+                                                                               
new OMRSRepositoryValidator(localRepositoryContentManager));
 
             /*
              * Create an event publisher for the cohort registry to use to 
send registration requests.
@@ -136,6 +141,11 @@ public class OMRSCohortManager
                                                                                
        cohortTopicConnector);
 
             /*
+             * Create the cohort registry.
+             */
+            this.cohortRegistry = new OMRSCohortRegistry();
+
+            /*
              * The presence/absence of the local repository affects the 
behaviour of the cohort registry.
              */
             if (localRepository != null)
@@ -300,15 +310,6 @@ public class OMRSCohortManager
         {
             cohortConnectionStatus = CohortConnectionStatus.DISCONNECTING;
 
-            OMRSAuditCode auditCode = OMRSAuditCode.COHORT_DISCONNECTING;
-            auditLog.logRecord(actionDescription,
-                               auditCode.getLogMessageId(),
-                               auditCode.getSeverity(),
-                               auditCode.getFormattedLogMessage(cohortName),
-                               null,
-                               auditCode.getSystemAction(),
-                               auditCode.getUserAction());
-
             if (cohortRegistry != null)
             {
                 cohortRegistry.disconnectFromCohort(permanent);

http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/metadatahighway/OMRSMetadataHighwayManager.java
----------------------------------------------------------------------
diff --git 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatahighway/OMRSMetadataHighwayManager.java
 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatahighway/OMRSMetadataHighwayManager.java
index 07ef814..c4f8668 100644
--- 
a/omrs/src/main/java/org/apache/atlas/omrs/metadatahighway/OMRSMetadataHighwayManager.java
+++ 
b/omrs/src/main/java/org/apache/atlas/omrs/metadatahighway/OMRSMetadataHighwayManager.java
@@ -25,6 +25,7 @@ import org.apache.atlas.omrs.auditlog.OMRSAuditCode;
 import org.apache.atlas.omrs.auditlog.OMRSAuditLog;
 import org.apache.atlas.omrs.auditlog.OMRSAuditingComponent;
 import org.apache.atlas.omrs.ffdc.exception.OMRSLogicErrorException;
+import 
org.apache.atlas.omrs.localrepository.repositorycontentmanager.OMRSRepositoryContentManager;
 import 
org.apache.atlas.omrs.metadatahighway.cohortregistry.store.OMRSCohortRegistryStore;
 import org.apache.atlas.omrs.eventmanagement.*;
 import 
org.apache.atlas.omrs.enterprise.connectormanager.OMRSConnectionConsumer;
@@ -37,6 +38,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.util.ArrayList;
+import java.util.List;
 
 /**
  * OMRSMetadataHighwayManager is responsible for managing the connectivity to 
to each cohort that the local
@@ -44,20 +46,19 @@ import java.util.ArrayList;
  */
 public class OMRSMetadataHighwayManager
 {
-    private ArrayList<OMRSCohortManager>    cohortManagers = new ArrayList<>();
-
-    private String                 localServerName                    = null;
-    private String                 localServerType                    = null;
-    private String                 localOrganizationName              = null;
-    private OMRSLocalRepository    localRepository                    = null;
-    private OMRSTypeDefValidator   localTypeDefValidator              = null;
-    private OMRSConnectionConsumer enterpriseAccessConnectionConsumer = null;
-    private OMRSTopicConnector     enterpriseAccessTopicConnector     = null;
+    private List<OMRSCohortManager>      cohortManagers = new ArrayList<>();
+    private String                       localServerName;                    
/* set in constructor */
+    private String                       localServerType;                    
/* set in constructor */
+    private String                       localOrganizationName;              
/* set in constructor */
+    private OMRSLocalRepository          localRepository;                    
/* set in constructor */
+    private OMRSRepositoryContentManager localRepositoryContentManager;      
/* set in constructor */
+    private OMRSConnectionConsumer       enterpriseAccessConnectionConsumer; 
/* set in constructor */
+    private OMRSTopicConnector           enterpriseAccessTopicConnector;     
/* set in constructor */
 
 
     private static final OMRSAuditLog auditLog = new 
OMRSAuditLog(OMRSAuditingComponent.METADATA_HIGHWAY_MANAGER);
 
-    private static final Logger log = 
LoggerFactory.getLogger(OMRSEventPublisher.class);
+    private static final Logger log = 
LoggerFactory.getLogger(OMRSMetadataHighwayManager.class);
 
     /**
      * Constructor taking the values that are used in every cohort.  Any of 
these values may be null.
@@ -66,8 +67,9 @@ public class OMRSMetadataHighwayManager
      * @param localServerType - descriptive type of the local server.
      * @param localOrganizationName - name of the organization that owns the 
local server.
      * @param localRepository - link to local repository - may be null.
-     * @param localTypeDefValidator - the TypeDefValidator is ues in 
evaluating the type definitions (TypeDefs)
-     *                              passed around the cohort.
+     * @param localRepositoryContentManager - repository content manager 
associated with this server's operation
+     *                                        and used in evaluating the type 
definitions (TypeDefs)
+     *                                        passed around the cohort.
      * @param enterpriseAccessConnectionConsumer - connection consumer for 
managing the connections of enterprise access.
      * @param enterpriseAccessTopicConnector - connector for the OMRS Topic 
for enterprise access.
      */
@@ -75,7 +77,7 @@ public class OMRSMetadataHighwayManager
                                       String                          
localServerType,
                                       String                          
localOrganizationName,
                                       OMRSLocalRepository             
localRepository,
-                                      OMRSTypeDefValidator            
localTypeDefValidator,
+                                      OMRSRepositoryContentManager    
localRepositoryContentManager,
                                       OMRSConnectionConsumer          
enterpriseAccessConnectionConsumer,
                                       OMRSTopicConnector              
enterpriseAccessTopicConnector)
     {
@@ -83,7 +85,7 @@ public class OMRSMetadataHighwayManager
         this.localServerType = localServerType;
         this.localOrganizationName = localOrganizationName;
         this.localRepository = localRepository;
-        this.localTypeDefValidator = localTypeDefValidator;
+        this.localRepositoryContentManager = localRepositoryContentManager;
         this.enterpriseAccessConnectionConsumer = 
enterpriseAccessConnectionConsumer;
         this.enterpriseAccessTopicConnector = enterpriseAccessTopicConnector;
     }
@@ -95,7 +97,7 @@ public class OMRSMetadataHighwayManager
      *
      * @param cohortConfigList - list of cohorts to initialize
      */
-    public void initialize(ArrayList<CohortConfig>   cohortConfigList)
+    public void initialize(List<CohortConfig>   cohortConfigList)
     {
         if (cohortConfigList != null)
         {
@@ -185,7 +187,7 @@ public class OMRSMetadataHighwayManager
 
             OMRSRepositoryEventExchangeRule inboundEventExchangeRule
                     = new 
OMRSRepositoryEventExchangeRule(cohortConfig.getCohortName() + " Events To 
Process",
-                                                          
localTypeDefValidator,
+                                                          
localRepositoryContentManager,
                                                           
cohortConfig.getEventsToProcessRule(),
                                                           
cohortConfig.getSelectedTypesToProcess());
 
@@ -195,6 +197,7 @@ public class OMRSMetadataHighwayManager
                                      localServerType,
                                      localOrganizationName,
                                      localRepository,
+                                     localRepositoryContentManager,
                                      enterpriseAccessConnectionConsumer,
                                      enterpriseAccessTopicConnector,
                                      cohortRegistryStore,
@@ -445,7 +448,7 @@ public class OMRSMetadataHighwayManager
                 ", localServerType='" + localServerType + '\'' +
                 ", localOrganizationName='" + localOrganizationName + '\'' +
                 ", localRepository=" + localRepository +
-                ", localTypeDefValidator=" + localTypeDefValidator +
+                ", localRepositoryContentManager=" + 
localRepositoryContentManager +
                 ", enterpriseAccessConnectionConsumer=" + 
enterpriseAccessConnectionConsumer +
                 ", enterpriseAccessTopicConnector=" + 
enterpriseAccessTopicConnector +
                 '}';

Reply via email to