http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/admin/OMRSOperationalServices.java
----------------------------------------------------------------------
diff --git 
a/omrs/src/main/java/org/apache/atlas/omrs/admin/OMRSOperationalServices.java 
b/omrs/src/main/java/org/apache/atlas/omrs/admin/OMRSOperationalServices.java
index 8a47945..60b4704 100644
--- 
a/omrs/src/main/java/org/apache/atlas/omrs/admin/OMRSOperationalServices.java
+++ 
b/omrs/src/main/java/org/apache/atlas/omrs/admin/OMRSOperationalServices.java
@@ -19,13 +19,13 @@ package org.apache.atlas.omrs.admin;
 
 import org.apache.atlas.ocf.Connector;
 import org.apache.atlas.ocf.ConnectorBroker;
-import org.apache.atlas.ocf.properties.Connection;
+import org.apache.atlas.ocf.properties.beans.Connection;
 import org.apache.atlas.omrs.admin.properties.CohortConfig;
 import org.apache.atlas.omrs.admin.properties.EnterpriseAccessConfig;
 import org.apache.atlas.omrs.admin.properties.LocalRepositoryConfig;
 import org.apache.atlas.omrs.admin.properties.RepositoryServicesConfig;
 import org.apache.atlas.omrs.archivemanager.OMRSArchiveManager;
-import org.apache.atlas.omrs.archivemanager.store.OpenMetadataArchiveStore;
+import 
org.apache.atlas.omrs.archivemanager.store.OpenMetadataArchiveStoreConnector;
 import org.apache.atlas.omrs.auditlog.OMRSAuditCode;
 import org.apache.atlas.omrs.auditlog.OMRSAuditLog;
 import org.apache.atlas.omrs.auditlog.OMRSAuditingComponent;
@@ -34,7 +34,7 @@ import 
org.apache.atlas.omrs.enterprise.connectormanager.OMRSConnectionConsumer;
 import 
org.apache.atlas.omrs.enterprise.connectormanager.OMRSEnterpriseConnectorManager;
 import org.apache.atlas.omrs.eventmanagement.OMRSRepositoryEventExchangeRule;
 import org.apache.atlas.omrs.eventmanagement.OMRSRepositoryEventManager;
-import 
org.apache.atlas.omrs.eventmanagement.repositoryeventmapper.OMRSRepositoryEventMapper;
+import 
org.apache.atlas.omrs.eventmanagement.repositoryeventmapper.OMRSRepositoryEventMapperConnector;
 import org.apache.atlas.omrs.ffdc.exception.OMRSConfigErrorException;
 import org.apache.atlas.omrs.ffdc.OMRSErrorCode;
 import org.apache.atlas.omrs.ffdc.exception.OMRSLogicErrorException;
@@ -53,6 +53,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.util.ArrayList;
+import java.util.List;
 
 /**
  * OMRSOperationalServices provides the OMAG Server with access to the OMRS 
capabilities.
@@ -80,9 +81,12 @@ public class OMRSOperationalServices
     private static final OMRSAuditLog auditLog = new 
OMRSAuditLog(OMRSAuditingComponent.OPERATIONAL_SERVICES);
 
 
-    private String                         localServerName               = 
null;
-    private String                         localServerType               = 
null;
-    private String                         localOrganizationName         = 
null;
+    private String                         localServerName;         /* 
Initialized in constructor */
+    private String                         localServerType;         /* 
Initialized in constructor */
+    private String                         localOrganizationName;   /* 
Initialized in constructor */
+    private String                         localServerURL;          /* 
Initialized in constructor */
+    private int                            maxPageSize;             /* 
Initialized in constructor */
+
     private String                         localMetadataCollectionId     = 
null;
 
     private OMRSRepositoryContentManager   localRepositoryContentManager = 
null;
@@ -100,10 +104,13 @@ public class OMRSOperationalServices
      * @param localServerName - name of the local server
      * @param localServerType - type of the local server
      * @param organizationName - name of the organization that owns the local 
server
+     * @param localServerURL - URL root for this server.
      */
     public OMRSOperationalServices(String                   localServerName,
                                    String                   localServerType,
-                                   String                   organizationName)
+                                   String                   organizationName,
+                                   String                   localServerURL,
+                                   int                      maxPageSize)
     {
         /*
          * Save details about the local server
@@ -111,6 +118,8 @@ public class OMRSOperationalServices
         this.localServerName = localServerName;
         this.localServerType = localServerType;
         this.localOrganizationName = organizationName;
+        this.localServerURL = localServerURL;
+        this.maxPageSize = maxPageSize;
     }
 
 
@@ -122,7 +131,7 @@ public class OMRSOperationalServices
      */
     public void initialize(RepositoryServicesConfig repositoryServicesConfig)
     {
-        final String   actionDescription = "Initialize Repository Operational 
Services";
+        final String   actionDescription = "Initialize Open Metadata 
Repository Operational Services";
         final String   methodName        = "initialize()";
         OMRSAuditCode  auditCode = null;
 
@@ -150,7 +159,7 @@ public class OMRSOperationalServices
         OMRSAuditLog.initialize(localServerName,
                                 localServerType,
                                 localOrganizationName,
-                                
getAuditLogStore(repositoryServicesConfig.getAuditLogConnection()));
+                                
getAuditLogStores(repositoryServicesConfig.getAuditLogConnections()));
 
         /*
          * Log that the OMRS is starting.  There is another Audit log message 
logged at the end of this method
@@ -171,7 +180,7 @@ public class OMRSOperationalServices
          */
         EnterpriseAccessConfig  enterpriseAccessConfig = 
repositoryServicesConfig.getEnterpriseAccessConfig();
         LocalRepositoryConfig   localRepositoryConfig  = 
repositoryServicesConfig.getLocalRepositoryConfig();
-        ArrayList<CohortConfig> cohortConfigList       = 
repositoryServicesConfig.getCohortConfigList();
+        List<CohortConfig>      cohortConfigList       = 
repositoryServicesConfig.getCohortConfigList();
 
         /*
          * Begin with the enterprise repository services.  They are always 
needed since the
@@ -185,13 +194,13 @@ public class OMRSOperationalServices
          * repository services will use.  The OMRS Topic is used to publish 
events from these repositories to support the
          * OMASs' event notifications.
          */
-        enterpriseConnectorManager = 
initializeEnterpriseConnectorManager(enterpriseAccessConfig);
+        enterpriseConnectorManager = 
initializeEnterpriseConnectorManager(enterpriseAccessConfig, maxPageSize);
         enterpriseOMRSTopicConnector = 
initializeEnterpriseOMRSTopicConnector(enterpriseAccessConfig);
 
         /*
          * The archive manager loads pre-defined types and instances that are 
stored in open metadata archives.
          */
-        archiveManager = 
initializeOpenMetadataArchives(repositoryServicesConfig.getOpenMetadataArchiveConnectionList());
+        archiveManager = 
initializeOpenMetadataArchives(repositoryServicesConfig.getOpenMetadataArchiveConnections());
 
         /*
          * The local repository is optional.  However, the repository content 
manager is still
@@ -230,7 +239,8 @@ public class OMRSOperationalServices
                             new OMRSRepositoryEventExchangeRule("Local 
Repository Events to Send",
                                                                 
localRepositoryContentManager,
                                                                 
localRepositoryConfig.getEventsToSendRule(),
-                                                                
localRepositoryConfig.getSelectedTypesToSend()));
+                                                                
localRepositoryConfig.getSelectedTypesToSend()),
+                            new 
OMRSRepositoryValidator(localRepositoryContentManager));
 
             /*
              * Pass the local metadata collectionId to the AuditLog
@@ -240,11 +250,32 @@ public class OMRSOperationalServices
             localRepositoryConnector = 
initializeLocalRepository(localRepositoryConfig);
 
             /*
-             * Set up the OMRS REST Services with the local repository
+             * Start processing of events for the local repository.
+             */
+            try
+            {
+                localRepositoryConnector.start();
+            }
+            catch (Throwable error)
+            {
+                auditCode = OMRSAuditCode.LOCAL_REPOSITORY_FAILED_TO_START;
+                auditLog.logRecord(actionDescription,
+                                   auditCode.getLogMessageId(),
+                                   auditCode.getSeverity(),
+                                   
auditCode.getFormattedLogMessage(error.getMessage()),
+                                   null,
+                                   auditCode.getSystemAction(),
+                                   auditCode.getUserAction());
+            }
+
+            /*
+             * Set up the OMRS REST Services with the local repository so it 
is able to process incoming REST
+             * calls.
              */
-            
OMRSRepositoryRESTServices.setLocalRepository(localRepositoryConnector);
+            
OMRSRepositoryRESTServices.setLocalRepository(localRepositoryConnector, 
localServerURL);
         }
 
+
         /*
          * This is the point at which the open metadata archives will be 
processed.  The archives are processed
          * using the same mechanisms as TypeDef/Instance events received from 
other members of the cohort.  This
@@ -277,7 +308,7 @@ public class OMRSOperationalServices
         }
 
         /*
-         * local operation is ready, now connect to the metadata highway.
+         * Local operation is ready, now connect to the metadata highway.
          */
         if (cohortConfigList != null)
         {
@@ -342,12 +373,15 @@ public class OMRSOperationalServices
 
     /**
      * Initialize the OMRSEnterpriseConnectorManager and the 
EnterpriseOMRSConnector class.  If the
-     * enterprise access configuration
+     * enterprise access configuration is null it means federation is not 
enabled.  However, the enterprise
+     * connector manager is still initialized to pass the local repository 
information to the Enterprise
+     * OMRS repository connectors.
      *
      * @param enterpriseAccessConfig - enterprise access configuration from 
the OMAG server
      * @return initialized OMRSEnterpriseConnectorManager object
      */
-    private OMRSEnterpriseConnectorManager 
initializeEnterpriseConnectorManager(EnterpriseAccessConfig  
enterpriseAccessConfig)
+    private OMRSEnterpriseConnectorManager 
initializeEnterpriseConnectorManager(EnterpriseAccessConfig  
enterpriseAccessConfig,
+                                                                               
 int                     maxPageSize)
     {
         OMRSEnterpriseConnectorManager   enterpriseConnectorManager = null;
 
@@ -356,13 +390,17 @@ public class OMRSOperationalServices
             /*
              * Federation is not enabled in this server
              */
-            enterpriseConnectorManager = new 
OMRSEnterpriseConnectorManager(false);
+            enterpriseConnectorManager = new 
OMRSEnterpriseConnectorManager(false, maxPageSize);
 
             /*
              * Pass the address of the enterprise connector manager to the 
OMRSEnterpriseConnectorProvider class as
              * the connector manager is needed by each instance of the 
EnterpriseOMRSConnector.
              */
             
EnterpriseOMRSConnectorProvider.initialize(enterpriseConnectorManager,
+                                                       
localRepositoryContentManager,
+                                                       localServerName,
+                                                       localServerType,
+                                                       localOrganizationName,
                                                        null,
                                                        null);
         }
@@ -382,13 +420,17 @@ public class OMRSOperationalServices
                                auditCode.getSystemAction(),
                                auditCode.getUserAction());
 
-            enterpriseConnectorManager = new 
OMRSEnterpriseConnectorManager(true);
+            enterpriseConnectorManager = new 
OMRSEnterpriseConnectorManager(true, maxPageSize);
 
             /*
              * Pass the address of the enterprise connector manager to the 
OMRSEnterpriseConnectorProvider class as
              * the connector manager is needed by each instance of the 
EnterpriseOMRSConnector.
              */
             
EnterpriseOMRSConnectorProvider.initialize(enterpriseConnectorManager,
+                                                       
localRepositoryContentManager,
+                                                       localServerName,
+                                                       localServerType,
+                                                       localOrganizationName,
                                                        
enterpriseAccessConfig.getEnterpriseMetadataCollectionId(),
                                                        
enterpriseAccessConfig.getEnterpriseMetadataCollectionName());
         }
@@ -425,9 +467,6 @@ public class OMRSOperationalServices
             LocalOMRSConnectorProvider localConnectorProvider =
                     new LocalOMRSConnectorProvider(localMetadataCollectionId,
                                                    
localRepositoryConfig.getLocalRepositoryRemoteConnection(),
-                                                   localServerName,
-                                                   localServerType,
-                                                   localOrganizationName,
                                                    
getLocalRepositoryEventMapper(localRepositoryConfig.getEventMapperConnection()),
                                                    localRepositoryEventManager,
                                                    
localRepositoryContentManager,
@@ -441,7 +480,7 @@ public class OMRSOperationalServices
              * Create the local repository's connector.  If there is no 
locally optimized connection, the
              * remote connection is used.
              */
-            Connection                    localRepositoryConnection       = 
null;
+            Connection                    localRepositoryConnection;
 
             if (localRepositoryConfig.getLocalRepositoryLocalConnection() != 
null)
             {
@@ -465,9 +504,9 @@ public class OMRSOperationalServices
      * @param openMetadataArchiveConnections - connections to the open 
metadata archive stores
      * @return OMRS archive manager
      */
-    private OMRSArchiveManager 
initializeOpenMetadataArchives(ArrayList<Connection>    
openMetadataArchiveConnections)
+    private OMRSArchiveManager initializeOpenMetadataArchives(List<Connection> 
   openMetadataArchiveConnections)
     {
-        ArrayList<OpenMetadataArchiveStore> openMetadataArchives = null;
+        ArrayList<OpenMetadataArchiveStoreConnector> openMetadataArchives = 
null;
 
         if (openMetadataArchiveConnections != null)
         {
@@ -501,9 +540,7 @@ public class OMRSOperationalServices
      *                              This value flows in OMRS Events.
      * @param localRepositoryConnector - the local repository connector is 
supplied if there is a local repository
      *                                 for this server.
-     * @param localTypeDefValidator - the TypeDef validator validates the 
TypeDefs sent by the other members of
-     *                              the cohort(s).  It is looking for 
conflicting TypeDefs that may cause
-     *                              metadata integrity issues as the metadata 
is exchanged between the servers.
+     * @param localRepositoryContentManager - repository content manager for 
this server
      * @param connectionConsumer - the connection consumer is from the 
enterprise repository services.  It
      *                           receives connection information about the 
other members of the cohort(s)
      *                           to enable enterprise access.
@@ -517,10 +554,10 @@ public class OMRSOperationalServices
                                                           String               
           localServerType,
                                                           String               
           localOrganizationName,
                                                           
LocalOMRSRepositoryConnector    localRepositoryConnector,
-                                                          OMRSTypeDefValidator 
           localTypeDefValidator,
+                                                          
OMRSRepositoryContentManager    localRepositoryContentManager,
                                                           
OMRSConnectionConsumer          connectionConsumer,
                                                           OMRSTopicConnector   
           enterpriseTopicConnector,
-                                                          
ArrayList<CohortConfig>         cohortConfigList)
+                                                          List<CohortConfig>   
           cohortConfigList)
     {
         /*
          * The metadata highway manager is constructed with the values that 
are the same for every cohort.
@@ -529,7 +566,7 @@ public class OMRSOperationalServices
                                                                                
             localServerType,
                                                                                
             localOrganizationName,
                                                                                
             localRepositoryConnector,
-                                                                               
             localTypeDefValidator,
+                                                                               
             localRepositoryContentManager,
                                                                                
             connectionConsumer,
                                                                                
             enterpriseTopicConnector);
 
@@ -578,7 +615,14 @@ public class OMRSOperationalServices
             }
             catch (Throwable  error)
             {
-                // TODO
+                auditCode = OMRSAuditCode.ENTERPRISE_TOPIC_DISCONNECT_ERROR;
+                auditLog.logRecord(actionDescription,
+                                   auditCode.getLogMessageId(),
+                                   auditCode.getSeverity(),
+                                   
auditCode.getFormattedLogMessage(error.getMessage()),
+                                   null,
+                                   auditCode.getSystemAction(),
+                                   auditCode.getUserAction());
             }
         }
 
@@ -595,7 +639,14 @@ public class OMRSOperationalServices
             }
             catch (Throwable  error)
             {
-
+                auditCode = 
OMRSAuditCode.LOCAL_REPOSITORY_FAILED_TO_DISCONNECT;
+                auditLog.logRecord(actionDescription,
+                                   auditCode.getLogMessageId(),
+                                   auditCode.getSeverity(),
+                                   
auditCode.getFormattedLogMessage(error.getMessage()),
+                                   null,
+                                   auditCode.getSystemAction(),
+                                   auditCode.getUserAction());
             }
         }
 
@@ -618,13 +669,39 @@ public class OMRSOperationalServices
 
 
     /**
-     * Return the connector to the AuditLog store using the connection 
information supplied.  If there is a
+     * Return the connectors to the AuditLog store using the connection 
information supplied.  If there is a
      * problem with the connection information that means a connector can not 
be created, an exception is thrown.
      *
-     * @param auditLogStoreConnection - properties for the audit log
+     * @param auditLogStoreConnections - properties for the audit log stores
      * @return audit log store connector
      */
-    private OMRSAuditLogStore  getAuditLogStore(Connection   
auditLogStoreConnection)
+    private List<OMRSAuditLogStore>  getAuditLogStores(List<Connection> 
auditLogStoreConnections)
+    {
+        List<OMRSAuditLogStore>   auditLogStores = new ArrayList<>();
+
+        for (Connection auditLogStoreConnection : auditLogStoreConnections)
+        {
+            auditLogStores.add(getAuditLogStore(auditLogStoreConnection));
+        }
+
+        if (auditLogStores.isEmpty())
+        {
+            return null;
+        }
+        else
+        {
+            return auditLogStores;
+        }
+    }
+
+
+    /**
+     * Return a connector to an audit log store.
+     *
+     * @param auditLogStoreConnection - connection with the parameters of the 
audit log store
+     * @return connector for audit log store.
+     */
+    private OMRSAuditLogStore getAuditLogStore(Connection   
auditLogStoreConnection)
     {
         try
         {
@@ -647,7 +724,7 @@ public class OMRSOperationalServices
              */
             OMRSErrorCode errorCode = OMRSErrorCode.NULL_AUDIT_LOG_STORE;
             String errorMessage = errorCode.getErrorMessageId()
-                                + 
errorCode.getFormattedErrorMessage(localServerName);
+                    + errorCode.getFormattedErrorMessage(localServerName);
 
             throw new OMRSConfigErrorException(errorCode.getHTTPErrorCode(),
                                                this.getClass().getName(),
@@ -660,7 +737,6 @@ public class OMRSOperationalServices
     }
 
 
-
     /**
      * Creates a topic connector using information from the supplied topic 
connection.  This connector supported
      * the Open Connector Framework (OCF) so it is possible to configure 
different connector implementations for
@@ -714,14 +790,14 @@ public class OMRSOperationalServices
      * @param openMetadataArchiveStoreConnection - properties used to create 
the connection
      * @return open metadata archive connector
      */
-    private OpenMetadataArchiveStore  getOpenMetadataArchiveStore(Connection   
openMetadataArchiveStoreConnection)
+    private OpenMetadataArchiveStoreConnector  
getOpenMetadataArchiveStore(Connection   openMetadataArchiveStoreConnection)
     {
         try
         {
             ConnectorBroker          connectorBroker = new ConnectorBroker();
             Connector                connector       = 
connectorBroker.getConnector(openMetadataArchiveStoreConnection);
 
-            return (OpenMetadataArchiveStore)connector;
+            return (OpenMetadataArchiveStoreConnector)connector;
         }
         catch (Throwable   error)
         {
@@ -758,7 +834,7 @@ public class OMRSOperationalServices
      * @param localRepositoryEventMapperConnection - connection to the local 
repository's event mapper.
      * @return local repository's event mapper
      */
-    private OMRSRepositoryEventMapper getLocalRepositoryEventMapper(Connection 
  localRepositoryEventMapperConnection)
+    private OMRSRepositoryEventMapperConnector 
getLocalRepositoryEventMapper(Connection   localRepositoryEventMapperConnection)
     {
         /*
          * If the event mapper is null it means the local repository does not 
need an event mapper.
@@ -778,7 +854,7 @@ public class OMRSOperationalServices
             ConnectorBroker           connectorBroker = new ConnectorBroker();
             Connector                 connector       = 
connectorBroker.getConnector(localRepositoryEventMapperConnection);
 
-            return (OMRSRepositoryEventMapper)connector;
+            return (OMRSRepositoryEventMapperConnector)connector;
         }
         catch (Throwable   error)
         {
@@ -830,7 +906,17 @@ public class OMRSOperationalServices
          */
         try
         {
-            return 
(LocalOMRSRepositoryConnector)connectorProvider.getConnector(connection);
+            LocalOMRSRepositoryConnector localRepositoryConnector = 
(LocalOMRSRepositoryConnector)connectorProvider.getConnector(connection);
+
+            localRepositoryConnector.setMaxPageSize(maxPageSize);
+            localRepositoryConnector.setServerName(localServerName);
+            localRepositoryConnector.setServerType(localServerType);
+            
localRepositoryConnector.setOrganizationName(localOrganizationName);
+            localRepositoryConnector.setRepositoryHelper(new 
OMRSRepositoryHelper(localRepositoryContentManager));
+            localRepositoryConnector.setRepositoryValidator(new 
OMRSRepositoryValidator(localRepositoryContentManager));
+            
localRepositoryConnector.setMetadataCollectionId(localMetadataCollectionId);
+
+            return localRepositoryConnector;
         }
         catch (Throwable  error)
         {

http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/admin/properties/CohortConfig.java
----------------------------------------------------------------------
diff --git 
a/omrs/src/main/java/org/apache/atlas/omrs/admin/properties/CohortConfig.java 
b/omrs/src/main/java/org/apache/atlas/omrs/admin/properties/CohortConfig.java
index 5fc5983..0e6a458 100644
--- 
a/omrs/src/main/java/org/apache/atlas/omrs/admin/properties/CohortConfig.java
+++ 
b/omrs/src/main/java/org/apache/atlas/omrs/admin/properties/CohortConfig.java
@@ -18,10 +18,18 @@
 package org.apache.atlas.omrs.admin.properties;
 
 
-import org.apache.atlas.ocf.properties.Connection;
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+import org.apache.atlas.ocf.properties.beans.Connection;
 import 
org.apache.atlas.omrs.metadatacollection.properties.typedefs.TypeDefSummary;
 
 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;
 
 /**
  * CohortConfig provides the configuration properties used to connect to an 
open metadata repository cohort.
@@ -56,6 +64,9 @@ import java.util.ArrayList;
  *     </li>
  * </ul>
  */
+@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, 
fieldVisibility=NONE)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown=true)
 public class CohortConfig
 {
     private String                           cohortName                     = 
null;
@@ -214,9 +225,16 @@ public class CohortConfig
      *
      * @return list of TypeDefs that determine which metadata instances to 
process
      */
-    public ArrayList<TypeDefSummary> getSelectedTypesToProcess()
+    public List<TypeDefSummary> getSelectedTypesToProcess()
     {
-        return selectedTypesToProcess;
+        if (selectedTypesToProcess == null)
+        {
+            return null;
+        }
+        else
+        {
+            return selectedTypesToProcess;
+        }
     }
 
 
@@ -226,8 +244,15 @@ public class CohortConfig
      *
      * @param selectedTypesToProcess - list of TypeDefs that determine which 
metadata instances to process
      */
-    public void setSelectedTypesToProcess(ArrayList<TypeDefSummary> 
selectedTypesToProcess)
+    public void setSelectedTypesToProcess(List<TypeDefSummary> 
selectedTypesToProcess)
     {
-        this.selectedTypesToProcess = selectedTypesToProcess;
+        if (selectedTypesToProcess == null)
+        {
+            this.selectedTypesToProcess = null;
+        }
+        else
+        {
+            this.selectedTypesToProcess = new 
ArrayList<>(selectedTypesToProcess);
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/admin/properties/EnterpriseAccessConfig.java
----------------------------------------------------------------------
diff --git 
a/omrs/src/main/java/org/apache/atlas/omrs/admin/properties/EnterpriseAccessConfig.java
 
b/omrs/src/main/java/org/apache/atlas/omrs/admin/properties/EnterpriseAccessConfig.java
index 72e84af..76576d4 100644
--- 
a/omrs/src/main/java/org/apache/atlas/omrs/admin/properties/EnterpriseAccessConfig.java
+++ 
b/omrs/src/main/java/org/apache/atlas/omrs/admin/properties/EnterpriseAccessConfig.java
@@ -17,7 +17,14 @@
  */
 package org.apache.atlas.omrs.admin.properties;
 
-import org.apache.atlas.ocf.properties.Connection;
+import org.apache.atlas.ocf.properties.beans.Connection;
+
+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;
 
 /**
  * EnterpriseAccessConfig describes the properties that control the enterprise 
access services that the
@@ -36,6 +43,9 @@ import org.apache.atlas.ocf.properties.Connection;
  *     </li>
  * </ul>
  */
+@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, 
fieldVisibility=NONE)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown=true)
 public class EnterpriseAccessConfig
 {
     private String                           enterpriseMetadataCollectionName  
 = null;

http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/admin/properties/LocalRepositoryConfig.java
----------------------------------------------------------------------
diff --git 
a/omrs/src/main/java/org/apache/atlas/omrs/admin/properties/LocalRepositoryConfig.java
 
b/omrs/src/main/java/org/apache/atlas/omrs/admin/properties/LocalRepositoryConfig.java
index d35b788..25ad601 100644
--- 
a/omrs/src/main/java/org/apache/atlas/omrs/admin/properties/LocalRepositoryConfig.java
+++ 
b/omrs/src/main/java/org/apache/atlas/omrs/admin/properties/LocalRepositoryConfig.java
@@ -17,11 +17,18 @@
  */
 package org.apache.atlas.omrs.admin.properties;
 
-import org.apache.atlas.ocf.properties.Connection;
+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;
+
+import org.apache.atlas.ocf.properties.beans.Connection;
 import 
org.apache.atlas.omrs.metadatacollection.properties.typedefs.TypeDefSummary;
 
 import java.util.ArrayList;
-
+import java.util.List;
 
 /**
  * LocalRepositoryConfig provides the properties to control the behavior of 
the metadata repository associated with
@@ -62,6 +69,9 @@ import java.util.ArrayList;
  *     </li>
  * </ul>
  */
+@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, 
fieldVisibility=NONE)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown=true)
 public class LocalRepositoryConfig
 {
     private String                    metadataCollectionId              = null;
@@ -94,18 +104,18 @@ public class LocalRepositoryConfig
                                  Connection                
localRepositoryLocalConnection,
                                  Connection                
localRepositoryRemoteConnection,
                                  OpenMetadataExchangeRule  eventsToSaveRule,
-                                 ArrayList<TypeDefSummary> selectedTypesToSave,
+                                 List<TypeDefSummary>      selectedTypesToSave,
                                  OpenMetadataExchangeRule  eventsToSendRule,
-                                 ArrayList<TypeDefSummary> selectedTypesToSend,
+                                 List<TypeDefSummary>      selectedTypesToSend,
                                  Connection                
eventMapperConnection)
     {
         this.metadataCollectionId = metadataCollectionId;
         this.localRepositoryLocalConnection = localRepositoryLocalConnection;
         this.localRepositoryRemoteConnection = localRepositoryRemoteConnection;
         this.eventsToSaveRule = eventsToSaveRule;
-        this.selectedTypesToSave = selectedTypesToSave;
+        this.setSelectedTypesToSave(selectedTypesToSave);
         this.eventsToSendRule = eventsToSendRule;
-        this.selectedTypesToSend = selectedTypesToSend;
+        this.setSelectedTypesToSend(selectedTypesToSend);
         this.eventMapperConnection = eventMapperConnection;
     }
 
@@ -218,9 +228,16 @@ public class LocalRepositoryConfig
      *
      * @return list of types
      */
-    public ArrayList<TypeDefSummary> getSelectedTypesToSave()
+    public List<TypeDefSummary> getSelectedTypesToSave()
     {
-        return selectedTypesToSave;
+        if (selectedTypesToSave == null)
+        {
+            return null;
+        }
+        else
+        {
+            return selectedTypesToSave;
+        }
     }
 
 
@@ -229,9 +246,16 @@ public class LocalRepositoryConfig
      *
      * @param selectedTypesToSave - list of types
      */
-    public void setSelectedTypesToSave(ArrayList<TypeDefSummary> 
selectedTypesToSave)
+    public void setSelectedTypesToSave(List<TypeDefSummary> 
selectedTypesToSave)
     {
-        this.selectedTypesToSave = selectedTypesToSave;
+        if (selectedTypesToSave == null)
+        {
+            this.selectedTypesToSave = null;
+        }
+        else
+        {
+            this.selectedTypesToSave = new ArrayList<>(selectedTypesToSave);
+        }
     }
 
 
@@ -264,9 +288,16 @@ public class LocalRepositoryConfig
      *
      * @return list of types
      */
-    public ArrayList<TypeDefSummary> getSelectedTypesToSend()
+    public List<TypeDefSummary> getSelectedTypesToSend()
     {
-        return selectedTypesToSend;
+        if (selectedTypesToSend == null)
+        {
+            return null;
+        }
+        else
+        {
+            return selectedTypesToSend;
+        }
     }
 
 
@@ -275,9 +306,16 @@ public class LocalRepositoryConfig
      *
      * @param selectedTypesToSend - list of types
      */
-    public void setSelectedTypesToSend(ArrayList<TypeDefSummary> 
selectedTypesToSend)
+    public void setSelectedTypesToSend(List<TypeDefSummary> 
selectedTypesToSend)
     {
-        this.selectedTypesToSend = selectedTypesToSend;
+        if (selectedTypesToSend == null)
+        {
+            this.selectedTypesToSend = null;
+        }
+        else
+        {
+            this.selectedTypesToSend = new ArrayList<>(selectedTypesToSend);
+        }
     }
 
 

http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/admin/properties/OpenMetadataEventProtocolVersion.java
----------------------------------------------------------------------
diff --git 
a/omrs/src/main/java/org/apache/atlas/omrs/admin/properties/OpenMetadataEventProtocolVersion.java
 
b/omrs/src/main/java/org/apache/atlas/omrs/admin/properties/OpenMetadataEventProtocolVersion.java
index 301a589..03674d6 100644
--- 
a/omrs/src/main/java/org/apache/atlas/omrs/admin/properties/OpenMetadataEventProtocolVersion.java
+++ 
b/omrs/src/main/java/org/apache/atlas/omrs/admin/properties/OpenMetadataEventProtocolVersion.java
@@ -17,11 +17,20 @@
  */
 package org.apache.atlas.omrs.admin.properties;
 
+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;
 
 /**
  * OpenMetadataEventProtocolVersion provides the identifier for the version 
number of the event payload.  There is
  * only one version at the moment which is why it looks a little sad.
  */
+@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, 
fieldVisibility=NONE)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown=true)
 public enum OpenMetadataEventProtocolVersion
 {
     V1

http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/admin/properties/OpenMetadataExchangeRule.java
----------------------------------------------------------------------
diff --git 
a/omrs/src/main/java/org/apache/atlas/omrs/admin/properties/OpenMetadataExchangeRule.java
 
b/omrs/src/main/java/org/apache/atlas/omrs/admin/properties/OpenMetadataExchangeRule.java
index 2bcc087..c49e5fc 100644
--- 
a/omrs/src/main/java/org/apache/atlas/omrs/admin/properties/OpenMetadataExchangeRule.java
+++ 
b/omrs/src/main/java/org/apache/atlas/omrs/admin/properties/OpenMetadataExchangeRule.java
@@ -18,6 +18,13 @@
 package org.apache.atlas.omrs.admin.properties;
 
 
+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;
+
 /**
  * OpenMetadataExchangeRule controls the sending/receiving of metadata 
instances on the metadata highway.
  * <ul>
@@ -41,6 +48,9 @@ package org.apache.atlas.omrs.admin.properties;
  *     </li>
  * </ul>
  */
+@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, 
fieldVisibility=NONE)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown=true)
 public enum OpenMetadataExchangeRule
 {
     REGISTRATION_ONLY (0,  "Registration Only", "Only registration exchange; 
no TypeDefs or metadata instances."),

http://git-wip-us.apache.org/repos/asf/atlas/blob/a1fd4068/omrs/src/main/java/org/apache/atlas/omrs/admin/properties/RepositoryServicesConfig.java
----------------------------------------------------------------------
diff --git 
a/omrs/src/main/java/org/apache/atlas/omrs/admin/properties/RepositoryServicesConfig.java
 
b/omrs/src/main/java/org/apache/atlas/omrs/admin/properties/RepositoryServicesConfig.java
index f7e303c..3b68afd 100644
--- 
a/omrs/src/main/java/org/apache/atlas/omrs/admin/properties/RepositoryServicesConfig.java
+++ 
b/omrs/src/main/java/org/apache/atlas/omrs/admin/properties/RepositoryServicesConfig.java
@@ -17,9 +17,18 @@
  */
 package org.apache.atlas.omrs.admin.properties;
 
-import org.apache.atlas.ocf.properties.Connection;
+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;
+
+import org.apache.atlas.ocf.properties.beans.Connection;
 
 import java.util.ArrayList;
+import java.util.List;
+
 
 /**
  * RepositoryServicesConfig provides the configuration properties that are 
needed by the OMRS components
@@ -31,7 +40,7 @@ import java.util.ArrayList;
  *         component should use.
  *     </li>
  *     <li>
- *         openMetadataArchiveConnectionList is a list of Open Metadata 
Archive Connections.
+ *         openMetadataArchiveConnections is a list of Open Metadata Archive 
Connections.
  *         An open metadata archive connection provides properties needed to 
create a connector to manage
  *         an open metadata archive.  This contains pre-built TypeDefs and 
metadata instance.
  *         The archives are managed by the OMRSArchiveManager.
@@ -49,13 +58,16 @@ import java.util.ArrayList;
  *     </li>
  * </ul>
  */
+@JsonAutoDetect(getterVisibility=PUBLIC_ONLY, setterVisibility=PUBLIC_ONLY, 
fieldVisibility=NONE)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(ignoreUnknown=true)
 public class RepositoryServicesConfig
 {
-    private Connection              auditLogConnection                = null;
-    private ArrayList<Connection>   openMetadataArchiveConnectionList = new 
ArrayList<>();
-    private LocalRepositoryConfig   localRepositoryConfig             = null;
-    private EnterpriseAccessConfig  enterpriseAccessConfig            = null;
-    private ArrayList<CohortConfig> cohortConfigList                  = new 
ArrayList<>();
+    private ArrayList<Connection>   auditLogConnections            = new 
ArrayList<>();
+    private ArrayList<Connection>   openMetadataArchiveConnections = new 
ArrayList<>();
+    private LocalRepositoryConfig   localRepositoryConfig          = null;
+    private EnterpriseAccessConfig  enterpriseAccessConfig         = null;
+    private ArrayList<CohortConfig> cohortConfigList               = new 
ArrayList<>();
 
 
     /**
@@ -69,24 +81,24 @@ public class RepositoryServicesConfig
     /**
      * Constructor to set all properties.
      *
-     * @param auditLogConnection - connection to the audit log.
-     * @param openMetadataArchiveConnectionList - list of open metadata 
archive files to load.
+     * @param auditLogConnections - connections to copies of the audit log.
+     * @param openMetadataArchiveConnections - list of open metadata archive 
files to load.
      * @param localRepositoryConfig - properties to configure the behavior of 
the local repository.
      * @param enterpriseAccessConfig - properties to configure the behavior of 
the federation services provided
      *                                to the Open Metadata Access Services 
(OMASs).
      * @param cohortConfigList - properties about the open metadata repository 
clusters that this server connects to.
      */
-    public RepositoryServicesConfig(Connection               
auditLogConnection,
-                                    ArrayList<Connection>    
openMetadataArchiveConnectionList,
+    public RepositoryServicesConfig(List<Connection>         
auditLogConnections,
+                                    List<Connection>         
openMetadataArchiveConnections,
                                     LocalRepositoryConfig    
localRepositoryConfig,
                                     EnterpriseAccessConfig   
enterpriseAccessConfig,
-                                    ArrayList<CohortConfig>  cohortConfigList)
+                                    List<CohortConfig>       cohortConfigList)
     {
-        this.auditLogConnection = auditLogConnection;
-        this.openMetadataArchiveConnectionList = 
openMetadataArchiveConnectionList;
-        this.localRepositoryConfig = localRepositoryConfig;
-        this.enterpriseAccessConfig = enterpriseAccessConfig;
-        this.cohortConfigList = cohortConfigList;
+        this.setAuditLogConnections(auditLogConnections);
+        this.setOpenMetadataArchiveConnections(openMetadataArchiveConnections);
+        this.setLocalRepositoryConfig(localRepositoryConfig);
+        this.setEnterpriseAccessConfig(enterpriseAccessConfig);
+        this.setCohortConfigList(cohortConfigList);
     }
 
 
@@ -95,20 +107,34 @@ public class RepositoryServicesConfig
      *
      * @return Connection object
      */
-    public Connection getAuditLogConnection()
+    public List<Connection> getAuditLogConnections()
     {
-        return auditLogConnection;
+        if (auditLogConnections == null)
+        {
+            return null;
+        }
+        else
+        {
+            return auditLogConnections;
+        }
     }
 
 
     /**
      * Set up the Connection properties used to create an OCF Connector to the 
AuditLog.
      *
-     * @param auditLogConnection - Connection object
+     * @param auditLogConnections - list of Connection objects
      */
-    public void setAuditLogConnection(Connection auditLogConnection)
+    public void setAuditLogConnections(List<Connection> auditLogConnections)
     {
-        this.auditLogConnection = auditLogConnection;
+        if (auditLogConnections == null)
+        {
+            this.auditLogConnections = null;
+        }
+        else
+        {
+            this.auditLogConnections = new ArrayList<>(auditLogConnections);
+        }
     }
 
 
@@ -118,9 +144,16 @@ public class RepositoryServicesConfig
      *
      * @return list of Connection objects
      */
-    public ArrayList<Connection> getOpenMetadataArchiveConnectionList()
+    public List<Connection> getOpenMetadataArchiveConnections()
     {
-        return openMetadataArchiveConnectionList;
+        if (openMetadataArchiveConnections == null)
+        {
+            return null;
+        }
+        else
+        {
+            return openMetadataArchiveConnections;
+        }
     }
 
 
@@ -128,11 +161,18 @@ public class RepositoryServicesConfig
      * Set up the list of Connection object, each of which is used to create 
the Connector to an Open Metadata
      * Archive.  Open Metadata Archive contains pre-built metadata types and 
instances.
      *
-     * @param openMetadataArchiveConnectionList - list of Connection objects
+     * @param openMetadataArchiveConnections - list of Connection objects
      */
-    public void setOpenMetadataArchiveConnectionList(ArrayList<Connection> 
openMetadataArchiveConnectionList)
+    public void setOpenMetadataArchiveConnections(List<Connection> 
openMetadataArchiveConnections)
     {
-        this.openMetadataArchiveConnectionList = 
openMetadataArchiveConnectionList;
+        if (openMetadataArchiveConnections == null)
+        {
+            this.openMetadataArchiveConnections = null;
+        }
+        else
+        {
+            this.openMetadataArchiveConnections = new 
ArrayList<>(openMetadataArchiveConnections);
+        }
     }
 
 
@@ -188,9 +228,16 @@ public class RepositoryServicesConfig
      *
      * @return list of cluster configuration properties
      */
-    public ArrayList<CohortConfig> getCohortConfigList()
+    public List<CohortConfig> getCohortConfigList()
     {
-        return cohortConfigList;
+        if (cohortConfigList == null)
+        {
+            return null;
+        }
+        else
+        {
+            return cohortConfigList;
+        }
     }
 
 
@@ -200,8 +247,15 @@ public class RepositoryServicesConfig
      *
      * @param cohortConfigList - list of cluster configuration properties
      */
-    public void setCohortConfigList(ArrayList<CohortConfig> cohortConfigList)
+    public void setCohortConfigList(List<CohortConfig> cohortConfigList)
     {
-        this.cohortConfigList = cohortConfigList;
+        if (cohortConfigList == null)
+        {
+            this.cohortConfigList = null;
+        }
+        else
+        {
+            this.cohortConfigList = new ArrayList<>(cohortConfigList);
+        }
     }
 }

Reply via email to