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); + } } }