You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@atlas.apache.org by da...@apache.org on 2018/02/16 09:52:31 UTC
[15/30] atlas git commit: ATLAS-2246: OMRS Connector API plus REST
and IGC Connector skeleton - 15th February 2018
http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/omrs/src/main/java/org/apache/atlas/omrs/ffdc/OMRSErrorCode.java
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/ffdc/OMRSErrorCode.java b/omrs/src/main/java/org/apache/atlas/omrs/ffdc/OMRSErrorCode.java
new file mode 100644
index 0000000..f40f2c6
--- /dev/null
+++ b/omrs/src/main/java/org/apache/atlas/omrs/ffdc/OMRSErrorCode.java
@@ -0,0 +1,413 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.atlas.omrs.ffdc;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.text.MessageFormat;
+import java.util.Arrays;
+
+/**
+ * The OMRSErrorCode is used to define first failure data capture (FFDC) for errors that occur within the OMRS
+ * It is used in conjunction with all OMRS Exceptions, both Checked and Runtime (unchecked).
+ *
+ * The 5 fields in the enum are:
+ * <ul>
+ * <li>HTTP Error Code - for translating between REST and JAVA - Typically the numbers used are:</li>
+ * <li><ul>
+ * <li>500 - internal error</li>
+ * <li>501 - not implemented </li>
+ * <li>503 - Service not available</li>
+ * <li>400 - invalid parameters</li>
+ * <li>401 - unauthorized</li>
+ * <li>404 - not found</li>
+ * <li>405 - method not allowed</li>
+ * <li>409 - data conflict errors - eg item already defined</li>
+ * </ul></li>
+ * <li>Error Message Id - to uniquely identify the message</li>
+ * <li>Error Message Text - includes placeholder to allow additional values to be captured</li>
+ * <li>SystemAction - describes the result of the error</li>
+ * <li>UserAction - describes how a user should correct the error</li>
+ * </ul>
+ */
+public enum OMRSErrorCode
+{
+ ENTITY_NOT_KNOWN(400, "OMRS-REPOSITORY-400-001",
+ "The entity identified with guid \"{0}\" is not known to the open metadata repository {1}.",
+ "The system is unable to retrieve the properties for the requested entity because the supplied guid is not recognized.",
+ "The guid is supplied by the caller to the OMRS. It may have a logic problem that has corrupted the guid, or the entity has been deleted since the guid was retrieved."),
+ RELATIONSHIP_NOT_KNOWN(400, "OMRS-REPOSITORY-400-002",
+ "The relationship identified with guid \"{0}\" is not known to the open metadata repository {1}.",
+ "The system is unable to retrieve the properties for the requested relationship because the supplied guid is not recognized.",
+ "The guid is supplied by the caller to the OMRS. It may have a logic problem that has corrupted the guid, or the relationship has been deleted since the guid was retrieved."),
+ TYPEDEF_NOT_KNOWN(400, "OMRS-REPOSITORY-400-003",
+ "The typedef \"{0}\" is not known to the metadata repository.",
+ "The system is unable to retrieve the properties for the requested typedef because the supplied identifier is not recognized.",
+ "The identifier is supplied by the caller. It may have a logic problem that has corrupted the identifier, or the typedef has been deleted since the identifier was retrieved."),
+ TYPEDEF_IN_USE(400, "OMRS-REPOSITORY-400-004",
+ "Unable to delete the typedef identified with guid \"{0}\" since it is still in use in the metadata repository.",
+ "The system is unable to delete the typedef because there are still instances in the metadata repository that are using it.",
+ "Remove the existing instances from the open metadata repositories and try the delete again."),
+ UNKNOWN_CLASSIFICATION(400, "OMRS-REPOSITORY-400-005",
+ "Classification \"{0}\" is not a recognized classification type",
+ "The system is unable to create a new classification for an entity because the local repository does not recognize the type.",
+ "Create a ClassificationDef for the classification and retry the request."),
+ INVALID_CLASSIFICATION_FOR_ENTITY(400, "OMRS-REPOSITORY-400-006",
+ "Unable to assign a classification of type \"{0}\" to an entity of type \"{1}\" because this classification is not valid for this type of entity.",
+ "The system is unable to classify an entity because the ClassificationDef for the classification does not list this entity type, or one of its super-types.",
+ "Update the ClassificationDef to include the entity's type and rerun the request."),
+ NO_TYPEDEF_NAME(400, "OMRS-REPOSITORY-400-007",
+ "A null TypeDef name has been passed on a metadata repository request.",
+ "The system is unable to perform the request because the TypeDef name is needed.",
+ "Correct the caller's code and retry the request."),
+ NO_TYPEDEF_CATEGORY(400, "OMRS-REPOSITORY-400-008",
+ "A null TypeDef category has been passed on a metadata repository request.",
+ "The system is unable to perform the request because the TypeDef category is needed.",
+ "Correct the caller's code and retry the request."),
+ NO_MATCH_CRITERIA(400, "OMRS-REPOSITORY-400-009",
+ "A null list of match criteria properties has been passed on a metadata repository request.",
+ "The system is unable to perform the request because the match criteria is needed.",
+ "Correct the caller's code and retry the request."),
+ NO_EXTERNAL_ID(400, "OMRS-REPOSITORY-400-010",
+ "Null values for all of the parameters describing an external id for a standard has been passed on a metadata repository request.",
+ "The system is unable to perform the request because at least one of the values are needed.",
+ "Correct the caller's code and retry the request."),
+ NO_SEARCH_CRITERIA(400, "OMRS-REPOSITORY-400-011",
+ "A null search criteria has been passed on a metadata repository request.",
+ "The system is unable to perform the request because the search criteria is needed.",
+ "Correct the caller's code and retry the request."),
+ NO_GUID(400, "OMRS-REPOSITORY-400-012",
+ "A null unique identifier (guid) has been passed on a metadata repository request.",
+ "The system is unable to perform the request because the TypeDef name is needed.",
+ "Correct the caller's code and retry the request."),
+ NO_TYPEDEF(400, "OMRS-REPOSITORY-400-013",
+ "A null TypeDef has been passed on a metadata repository request.",
+ "The system is unable to perform the request because the TypeDef is needed.",
+ "Correct the caller's code and retry the request."),
+ INVALID_TYPEDEF(400, "OMRS-REPOSITORY-400-013",
+ "An invalid TypeDef has been passed on a metadata repository request.",
+ "The system is unable to perform the request because the TypeDef is needed.",
+ "Correct the caller's code and retry the request."),
+ NO_MORE_ELEMENTS(400, "OMRS-PROPERTIES-400-001",
+ "No more elements in {0} iterator",
+ "A caller stepping through an iterator has requested more elements when there are none left.",
+ "Recode the caller to use the hasNext() method to check for more elements before calling next() and then retry."),
+ NULL_CLASSIFICATION_NAME(400, "OMRS-PROPERTIES-400-002",
+ "No name provided for entity classification",
+ "A classification with a null name is assigned to an entity. This value should come from a metadata repository, and always be filled in.",
+ "Look for other error messages to identify the source of the problem. Identify the metadata repository where the asset came from. Correct the cause of the error and then retry."),
+ NULL_PROPERTY_NAME(400, "OMRS-PROPERTIES-400-003",
+ "Null property name passed to properties object",
+ "A request to set an additional property failed because the property name passed was null",
+ "Recode the call to the property object with a valid property name and retry."),
+ ARRAY_OUT_OF_BOUNDS(400, "OMRS-PROPERTIES-400-004",
+ "{0} is unable to add a new element to location {1} of an array of size {2} value",
+ "There is an error in the update of an ArrayPropertyValue.",
+ "Recode the call to the property object with a valid element location and retry."),
+ BAD_ATTRIBUTE_TYPE(400, "OMRS-PROPERTIES-400-005",
+ "AttributeDefs may only be of primitive, collection or enum type. {0} of category {1} is not allowed.",
+ "There is an error in the creation of an AttributeDefType.",
+ "Recode the call to the AttributeDefType object with a valid type."),
+ REPOSITORY_URL_MALFORMED(400, "OMRS-CONNECTOR-400-001",
+ "The Open Metadata Repository Server URL {0} is not in a recognized format",
+ "The system is unable to connect to the open metadata repository to retrieve metadata properties.",
+ "Retry the request when the connection configuration for this repository is corrected."),
+ NULL_CONNECTION(400, "OMRS-CONNECTOR-400-003",
+ "The connection passed to OMASConnectedAssetProperties for connector {0} is null.",
+ "The system is unable to populate the ConnectedAssetProperties object because it needs the connection to identify the asset.",
+ "Look for other error messages to identify what caused this error. When the issue is resolved, retry the request."),
+ NULL_OMRS_CONNECTION(400, "OMRS-CONNECTOR-400-004",
+ "The connection passed to the EnterpriseOMRSRepositoryConnector is null.",
+ "The system is unable to populate the EnterpriseOMRSRepositoryConnector object because it needs the connection to identify the repository.",
+ "Look for other error messages to identify what caused this error. When the issue is resolved, retry the request."),
+ INVALID_OMRS_CONNECTION(400, "OMRS-CONNECTOR-400-005",
+ "The connection {0} passed to the EnterpriseOMRSRepositoryConnector is invalid.",
+ "The system is unable to populate the EnterpriseOMRSRepositoryConnector object because it needs the connection to identify the repository.",
+ "Look for other error messages to identify what caused this error. When the issue is resolved, retry the request."),
+ NULL_TOPIC_CONNECTOR(400, "OMRS-TOPIC-CONNECTOR-400-001",
+ "Unable to send or receive events for source {0} because the connector to the OMRS Topic failed to initialize",
+ "The local server will not connect to the cohort.",
+ "The connection to the connector is configured in the server configuration. " +
+ "Review previous error messages to determine the precise error in the " +
+ "start up configuration. " +
+ "Correct the configuration and reconnect the server to the cohort. "),
+ NULL_REGISTRY_STORE(400, "OMRS-COHORT-REGISTRY-404-001",
+ "The Open Metadata Repository Cohort Registry Store for cohort {0} is not available.",
+ "The system is unable to process registration requests from the open metadata repository cohort.",
+ "Correct the configuration for the registry store connection in the server configuration. " +
+ "Retry the request when the registry store configuration is correct."),
+ INVALID_LOCAL_METADATA_COLLECTION_ID(400, "OMRS-COHORT-REGISTRY-400-002",
+ "The Open Metadata Repository Cohort {0} is not available to server {1} because the local " +
+ "metadata collection id has been changed from {2} to {3} since this server registered with the cohort.",
+ "The system is unable to connect with other members of the cohort while this incompatibility exists.",
+ "If there is no reason for the change of local metadata collection id (this is the normal case) " +
+ "change the local metadata collection id back to its original valid in the server configuration. " +
+ "If the local metadata collection Id must be changed (due to a conflict for example) " +
+ "then shutdown the server, restart it with no local repository configured and shut it down " +
+ "normally once the server has successfully unregistered with the cohort. " +
+ "Then re-establish the local repository configuration." +
+ "Restart the server once the configuration is correct."),
+ NULL_AUDIT_LOG_STORE(400, "OMRS-AUDIT-LOG-400-001",
+ "The Audit Log Store for server {0} is not available.",
+ "The system is unable to process any open metadata registry services (OMRS) requests because " +
+ "the audit log for this server is unavailable.",
+ "Correct the configuration for the audit log store connection in the server configuration. " +
+ "Retry the request when the audit log store configuration is correct."),
+ NULL_ARCHIVE_STORE(400, "OMRS-ARCHIVE-MANAGER-400-001",
+ "An open metadata archive configured for server {0} is not accessible.",
+ "The system is unable to process the contents of this open metadata archive. " +
+ "Other services may fail if they were dependent on this open metadata archive.",
+ "Correct the configuration for the open metadata archive connection in the server configuration. " +
+ "Retry the request when the open metadata archive configuration is correct."),
+ NULL_EVENT_MAPPER(400, "OMRS-LOCAL-REPOSITORY-400-001",
+ "The repository event mapper configured for the local repository for server {0} is not accessible.",
+ "The system is unable to create the repository event mapper which means that events from the " +
+ "local repository will not be captured and processed. " +
+ "Other services may fail if they were dependent on this event notification.",
+ "Correct the configuration for the repository event mapper connection in the server configuration. " +
+ "Retry the request when the repository event mapper configuration is correct."),
+ DUPLICATE_COHORT_NAME(400, "OMRS-METADATA-HIGHWAY-404-001",
+ "There are more than one cohort configurations with the same name of {0}.",
+ "The system is unable to connect to more than one cohort with the same name.",
+ "Correct the configuration for the cohorts in the server configuration. " +
+ "Retry the request when the cohort configuration is correct."),
+ CONFLICTING_ENTERPRISE_TYPEDEFS(400, "OMRS-ENTERPRISE-REPOSITORY-400-001",
+ "Conflicting TypeDefs have been detected.",
+ "The system is unable to create a reliable list of TypeDefs for the enterprise.",
+ "Details of the conflicts and the steps necessary to repair the situation can be found in the audit log. " +
+ "Retry the request when the cohort configuration is correct."),
+ NO_TYPEDEFS_DEFINED(400, "OMRS-ENTERPRISE-REPOSITORY-400-002",
+ "No TypeDefs have been defined in any of the connected repositories.",
+ "The system is unable to create a list of TypeDefs for the enterprise.",
+ "Look for errors in the set up of the repositories in the audit log and verify that TypeDefs are configured. " +
+ "Retry the request when the cohort configuration is correct."),
+ REPOSITORY_NOT_AVAILABLE(404, "OMRS-REPOSITORY-CONNECTOR-404-001",
+ "The Open Metadata Repository Server is not available",
+ "The system is unable to retrieve any metadata properties from this repository.",
+ "Retry the request when the repository server is available."),
+ COHORT_NOT_CONNECTED(404, "OMRS-REPOSITORY-CONNECTOR-404-002",
+ "The Open Metadata Repository Servers in the cohort are not available",
+ "The system is unable to retrieve any metadata properties from this repository.",
+ "Retry the request when the repository server is available."),
+ INVALID_COHORT_CONFIG(404, "OMRS-REPOSITORY-CONNECTOR-404-003",
+ "The Open Metadata Repository Servers in the cohort are not configured correctly",
+ "The root cause of this error is recorded in previous exceptions.",
+ "Review the other error messages to determine the source of the error. When these are resolved, retry the request."),
+ LOCAL_REPOSITORY_CONFIGURATION_ERROR(404, "OMRS-REPOSITORY-CONNECTOR-404-004",
+ "The connection to the local Open Metadata Repository Server is not configured correctly",
+ "The root cause of this error is recorded in previous exceptions.",
+ "Review the other error messages to determine the source of the error. When these are resolved, retry the request."),
+ METADATA_HIGHWAY_NOT_AVAILABLE(404, "OMRS-METADATA-HIGHWAY-404-001",
+ "The local server's metadata highway communication components are failing to initialize",
+ "The root cause of this error is recorded in previous exceptions.",
+ "Review the other error messages to determine the source of the error. When these are resolved, retry the request."),
+ COHORT_DISCONNECT_FAILED(404, "OMRS-METADATA-HIGHWAY-404-002",
+ "The local server is unable to disconnect from an open metadata repository cohort {0}",
+ "The root cause of this error is recorded in previous exceptions.",
+ "Review the other error messages to determine the source of the error. When these are resolved, retry the request."),
+ TOPIC_CONNECTOR_NOT_AVAILABLE(404, "OMRS-TOPIC-CONNECTOR-404-001",
+ "The OMRS Topic Connector is not available.",
+ "The system is not able to process events sent between repositories in the open metadata cohort.",
+ "Correct the configuration for the OMRS Topic Connector (in the OMRS Configuration). Retry the request when the topic connector configuration is correct."),
+ ENTERPRISE_NOT_SUPPORTED(405, "OMRS-ENTERPRISE-REPOSITORY-CONNECTOR-405-001",
+ "The requested method {0} is not supported by the EnterpriseOMRSRepositoryConnector",
+ "The system is not able to process the requested method because it is not supported by the " +
+ "Open Metadata Repository Services (OMRS) Enterprise Repository Services.",
+ "Correct the application that called this method."),
+ INVALID_PRIMITIVE_CLASS_NAME(500, "OMRS-METADATA-COLLECTION-500-001",
+ "The Java class \'{0}\' for PrimitiveDefCategory {1} is not known.",
+ "There is an internal error in Java class PrimitiveDefCategory as it has been set up with an invalid class.",
+ "Raise a Jira to get this fixed."),
+ INVALID_PRIMITIVE_VALUE(500, "OMRS-METADATA-COLLECTION-500-002",
+ "The primitive value should be store in Java class \'{0}\' since it is of PrimitiveDefCategory {1}.",
+ "There is an internal error in the creation of a PrimitiveTypeValue.",
+ "Raise a Jira to get this fixed."),
+ NULL_HOME_METADATA_COLLECTION_ID(500, "OMRS-METADATA-COLLECTION-500-003",
+ "Null home metadata collection identifier found in metadata instance {0} from open metadata repository {1}",
+ "A request to retrieve a metadata instance (entity or relationship) has encountered a homeless metadata instance.",
+ "Locate the open metadata repository that supplied the instance and correct the logic in its OMRSRepositoryConnector."),
+ NULL_CONFIG(500, "OMRS-OPERATIONAL-SERVICES-500-001",
+ "No configuration has been passed to the Open Metadata Repository Services (OMRS) on initialization.",
+ "here is an internal error in the OMRS initialization.",
+ "Raise a Jira to get this fixed."),
+ NULL_METADATA_COLLECTION_ID(500, "OMRS-METADATA-COLLECTION-500-004",
+ "The local repository services have been initialized with a null metadata collection identifier.",
+ "There is an internal error in the OMRS initialization.",
+ "Raise a Jira to get this fixed."),
+ NULL_COHORT_NAME(500, "OMRS-COHORT-MANAGER-500-001",
+ "OMRSCohortManager has been initialized with a null cohort name",
+ "There is an internal error in the OMRS initialization.",
+ "Raise a Jira to get this fixed."),
+ NULL_LOCAL_METADATA_COLLECTION(500, "OMRS-LOCAL-REPOSITORY-500-001",
+ "The local repository services have been initialized with a null real metadata collection.",
+ "There is an internal error in the OMRS initialization.",
+ "Raise a Jira to get this fixed."),
+ NULL_ENTERPRISE_METADATA_COLLECTION(500, "OMRS-ENTERPRISE-REPOSITORY-500-001",
+ "The enterprise repository services has detected a repository connector with a null metadata collection.",
+ "There is an internal error in the Open Metadata Repository Services (OMRS) operation.",
+ "Raise a Jira to get this fixed."),
+ BAD_TYPEDEF(500, "OMRS-CONTENT-MANAGER-500-001",
+ "The repository content manager has detected an invalid TypeDef from {0}.",
+ "There is an internal error in the Open Metadata Repository Services (OMRS) operation.",
+ "Raise a Jira to get this fixed."),
+ BAD_TYPEDEF_ATTRIBUTE_NAME(500, "OMRS-CONTENT-MANAGER-500-002",
+ "The repository content manager has detected an invalid attribute name in a TypeDef from {0}.",
+ "There is an internal error in the Open Metadata Repository Services (OMRS) operation.",
+ "Raise a Jira to get this fixed."),
+ NULL_TYPEDEF_ATTRIBUTE(500, "OMRS-CONTENT-MANAGER-500-003",
+ "The repository content manager has detected a null attribute in a TypeDef from {0}.",
+ "There is an internal error in the Open Metadata Repository Services (OMRS) operation.",
+ "Raise a Jira to get this fixed."),
+ BAD_CATEGORY_FOR_TYPEDEF_ATTRIBUTE(500, "OMRS-CONTENT-MANAGER-500-004",
+ "Source {0} has requested type {1} with an incompatible category of {2} from repository content manager.",
+ "There is an error in the Open Metadata Repository Services (OMRS) operation - probably in the source component.",
+ "Raise a Jira to get this fixed."),
+ ARCHIVE_UNAVAILABLE(503, "OMRS-OPEN-METADATA-TYPES-500-001",
+ "The enterprise repository services are disconnected from the open metadata repositories.",
+ "There is an internal error in the OMRS initialization.",
+ "Raise a Jira to get this fixed."),
+ METHOD_NOT_IMPLEMENTED(501, "OMRS-METADATA-COLLECTION-501-001",
+ "OMRSMetadataCollection method {0} for OMRS Connector {1} to repository type {2} is not implemented.",
+ "A method in MetadataCollectionBase was called which means that the connector's OMRSMetadataCollection " +
+ "(a subclass of MetadataCollectionBase) does not have a complete implementation.",
+ "Raise a Jira to get this fixed."),
+ NO_REPOSITORIES(503, "OMRS-ENTERPRISE-REPOSITORY-503-001",
+ "There are no open metadata repositories available for this server.",
+ "The configuration for the server is set up so there is no local repository and no remote repositories " +
+ "connected through the open metadata repository cohorts. " +
+ "This may because of one or more configuration errors.",
+ "Retry the request once the configuration is changed."),
+ ENTERPRISE_DISCONNECTED(503, "OMRS-ENTERPRISE-REPOSITORY-503-002",
+ "The enterprise repository services are disconnected from the open metadata repositories.",
+ "The server has shutdown (or failed to set up) access to the open metadata repositories.",
+ "Retry the request once the open metadata repositories are connected."),
+ NULL_COHORT_METADATA_COLLECTION(503, "OMRS-ENTERPRISE-REPOSITORY-500-001",
+ "The enterprise repository services has detected a repository connector from cohort {0} for metadata collection identifier {1} that has a null metadata collection API object.",
+ "There is an internal error in the OMRS Repository Connector implementation.",
+ "Raise a Jira to get this fixed.")
+ ;
+
+ private int httpErrorCode;
+ private String errorMessageId;
+ private String errorMessage;
+ private String systemAction;
+ private String userAction;
+
+ private static final Logger log = LoggerFactory.getLogger(OMRSErrorCode.class);
+
+
+ /**
+ * The constructor for OMRSErrorCode expects to be passed one of the enumeration rows defined in
+ * OMRSErrorCode above. For example:
+ *
+ * OMRSErrorCode errorCode = OMRSErrorCode.SERVER_NOT_AVAILABLE;
+ *
+ * This will expand out to the 5 parameters shown below.
+ *
+ * @param newHTTPErrorCode - error code to use over REST calls
+ * @param newErrorMessageId - unique Id for the message
+ * @param newErrorMessage - text for the message
+ * @param newSystemAction - description of the action taken by the system when the error condition happened
+ * @param newUserAction - instructions for resolving the error
+ */
+ OMRSErrorCode(int newHTTPErrorCode, String newErrorMessageId, String newErrorMessage, String newSystemAction, String newUserAction)
+ {
+ this.httpErrorCode = newHTTPErrorCode;
+ this.errorMessageId = newErrorMessageId;
+ this.errorMessage = newErrorMessage;
+ this.systemAction = newSystemAction;
+ this.userAction = newUserAction;
+ }
+
+
+ public int getHTTPErrorCode()
+ {
+ return httpErrorCode;
+ }
+
+
+ /**
+ * Returns the unique identifier for the error message.
+ *
+ * @return errorMessageId
+ */
+ public String getErrorMessageId()
+ {
+ return errorMessageId;
+ }
+
+
+ /**
+ * Returns the error message with placeholders for specific details.
+ *
+ * @return errorMessage (unformatted)
+ */
+ public String getUnformattedErrorMessage()
+ {
+ return errorMessage;
+ }
+
+
+ /**
+ * Returns the error message with the placeholders filled out with the supplied parameters.
+ *
+ * @param params - strings that plug into the placeholders in the errorMessage
+ * @return errorMessage (formatted with supplied parameters)
+ */
+ public String getFormattedErrorMessage(String... params)
+ {
+ if (log.isDebugEnabled())
+ {
+ log.debug(String.format("<== OMRSErrorCode.getMessage(%s)", Arrays.toString(params)));
+ }
+
+ MessageFormat mf = new MessageFormat(errorMessage);
+ String result = mf.format(params);
+
+ if (log.isDebugEnabled())
+ {
+ log.debug(String.format("==> OMRSErrorCode.getMessage(%s): %s", Arrays.toString(params), result));
+ }
+
+ return result;
+ }
+
+
+ /**
+ * Returns a description of the action taken by the system when the condition that caused this exception was
+ * detected.
+ *
+ * @return systemAction
+ */
+ public String getSystemAction()
+ {
+ return systemAction;
+ }
+
+
+ /**
+ * Returns instructions of how to resolve the issue reported in this exception.
+ *
+ * @return userAction
+ */
+ public String getUserAction()
+ {
+ return userAction;
+ }
+}
http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/omrs/src/main/java/org/apache/atlas/omrs/ffdc/README.md
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/ffdc/README.md b/omrs/src/main/java/org/apache/atlas/omrs/ffdc/README.md
new file mode 100644
index 0000000..c3bfabe
--- /dev/null
+++ b/omrs/src/main/java/org/apache/atlas/omrs/ffdc/README.md
@@ -0,0 +1,47 @@
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+# Open Metadata Repository Services (OMRS) FFDC
+
+Package org.apache.atlas.omrs.ffdc provides the first failure data capture
+support for the OMRS module. This includes an error code enum,
+a runtime exception, a base class for checked exceptions plus
+implementation of each specific checked exception.
+
+The error code enum (OMRSErrorCode) has an entry for each unique situation
+where an exception is returned. Each entry defines:
+
+* A unique id for the error
+* An HTTP error code for rest calls
+* A unique message Id
+* Message text with place holders for specific values
+* A description of the cause of the error and system action as a result.
+* A description of how to correct the error (if known)
+
+Each exception (whether a checked or runtime exception) has two constructors.
+
+* The first constructor is used when a new error has been detected.
+
+* The second constructor is used when another exception has been caught.
+This caught exception is passed on the constructor so it is effectively
+embedded in the OMRS exception.
+
+Both constructors take the values from the OMRSErrorCode
+enum to define the cause and resolution. These values are passed
+as individual parameters so that subclasses implemented outside of
+the OMRS packages can define their own FFDC values.
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/ClassificationErrorException.java
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/ClassificationErrorException.java b/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/ClassificationErrorException.java
new file mode 100644
index 0000000..c6de62c
--- /dev/null
+++ b/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/ClassificationErrorException.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.atlas.omrs.ffdc.exception;
+
+/**
+ * The ClassificationErrorException is thrown by an OMRS Connector when a classification for a specific entity
+ * instance is either not defined for this type of entity or is not currently attached to the requested entity.
+ */
+public class ClassificationErrorException extends OMRSCheckedExceptionBase
+{
+ /**
+ * This is the typical constructor used for creating a ClassificationErrorException.
+ *
+ * @param httpCode - http response code to use if this exception flows over a REST call
+ * @param className - name of class reporting error
+ * @param actionDescription - description of function it was performing when error detected
+ * @param errorMessage - description of error
+ * @param systemAction - actions of the system as a result of the error
+ * @param userAction - instructions for correcting the error
+ */
+ public ClassificationErrorException(int httpCode, String className, String actionDescription, String errorMessage, String systemAction, String userAction)
+ {
+ super(httpCode, className, actionDescription, errorMessage, systemAction, userAction);
+ }
+
+
+ /**
+ * This is the constructor used for creating a ClassificationErrorException that resulted from a previous error.
+ *
+ * @param httpCode - http response code to use if this exception flows over a REST call
+ * @param className - name of class reporting error
+ * @param actionDescription - description of function it was performing when error detected
+ * @param errorMessage - description of error
+ * @param systemAction - actions of the system as a result of the error
+ * @param userAction - instructions for correcting the error
+ * @param caughtError - the error that resulted in this exception.
+ * */
+ public ClassificationErrorException(int httpCode, String className, String actionDescription, String errorMessage, String systemAction, String userAction, Throwable caughtError)
+ {
+ super(httpCode, className, actionDescription, errorMessage, systemAction, userAction, caughtError);
+ }
+}
http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/EntityConflictException.java
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/EntityConflictException.java b/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/EntityConflictException.java
new file mode 100644
index 0000000..a8a3e20
--- /dev/null
+++ b/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/EntityConflictException.java
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.atlas.omrs.ffdc.exception;
+
+/**
+ * EntityConflictException provides a checked exception for reporting that an entity can not be added because
+ * it conflicts with an entity already stored. The OMRSErrorCode adds specific details for the cause/effect of the error.
+ */
+public class EntityConflictException extends OMRSCheckedExceptionBase
+{
+ /**
+ * This is the typical constructor for creating an EntityConflictException. It captures the essential details
+ * about the error, where it occurred and how to fix it.
+ *
+ * @param httpCode code to use across a REST interface
+ * @param className name of class reporting error
+ * @param actionDescription description of function it was performing when error detected
+ * @param errorMessage description of error
+ * @param systemAction actions of the system as a result of the error
+ * @param userAction instructions for correcting the error
+ */
+ public EntityConflictException(int httpCode, String className, String actionDescription, String errorMessage, String systemAction, String userAction)
+ {
+ super(httpCode, className, actionDescription, errorMessage, systemAction, userAction);
+ }
+
+
+ /**
+ * This constructor is used when an unexpected exception has been caught that needs to be wrapped in an
+ * EntityConflictException in order to add the essential details about the error, where it occurred and
+ * how to fix it.
+ *
+ * @param httpCode code to use across a REST interface
+ * @param className name of class reporting error
+ * @param actionDescription description of function it was performing when error detected
+ * @param errorMessage description of error
+ * @param systemAction actions of the system as a result of the error
+ * @param userAction instructions for correcting the error
+ * @param caughtException the exception/error that caused this exception to be raised
+ */
+ public EntityConflictException(int httpCode, String className, String actionDescription, String errorMessage, String systemAction, String userAction, Throwable caughtException)
+ {
+ super(httpCode, className, actionDescription, errorMessage, systemAction, userAction, caughtException);
+ }
+}
http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/EntityNotDeletedException.java
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/EntityNotDeletedException.java b/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/EntityNotDeletedException.java
new file mode 100644
index 0000000..07f84aa
--- /dev/null
+++ b/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/EntityNotDeletedException.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.atlas.omrs.ffdc.exception;
+
+/**
+ * EntityNotDeletedException is thrown by an OMRS Connector when a request is made to purge or restore a specific
+ * entity instance and the entity is not in DELETED status.
+ */
+public class EntityNotDeletedException extends OMRSCheckedExceptionBase
+{
+ /**
+ * This is the typical constructor used for creating a EntityNotDeletedException.
+ *
+ * @param httpCode - http response code to use if this exception flows over a REST call
+ * @param className - name of class reporting error
+ * @param actionDescription - description of function it was performing when error detected
+ * @param errorMessage - description of error
+ * @param systemAction - actions of the system as a result of the error
+ * @param userAction - instructions for correcting the error
+ */
+ public EntityNotDeletedException(int httpCode, String className, String actionDescription, String errorMessage, String systemAction, String userAction)
+ {
+ super(httpCode, className, actionDescription, errorMessage, systemAction, userAction);
+ }
+
+
+ /**
+ * This is the constructor used for creating a EntityNotDeletedException that resulted from a previous error.
+ *
+ * @param httpCode - http response code to use if this exception flows over a REST call
+ * @param className - name of class reporting error
+ * @param actionDescription - description of function it was performing when error detected
+ * @param errorMessage - description of error
+ * @param systemAction - actions of the system as a result of the error
+ * @param userAction - instructions for correcting the error
+ * @param caughtError - the error that resulted in this exception.
+ * */
+ public EntityNotDeletedException(int httpCode, String className, String actionDescription, String errorMessage, String systemAction, String userAction, Throwable caughtError)
+ {
+ super(httpCode, className, actionDescription, errorMessage, systemAction, userAction, caughtError);
+ }
+}
http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/EntityNotKnownException.java
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/EntityNotKnownException.java b/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/EntityNotKnownException.java
new file mode 100644
index 0000000..ea27b5b
--- /dev/null
+++ b/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/EntityNotKnownException.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.atlas.omrs.ffdc.exception;
+
+/**
+ * The EntityNotKnownException is thrown by an OMRS Connector when a specific entity instance is requested but this
+ * entity is not known in the metadata collection.
+ */
+public class EntityNotKnownException extends OMRSCheckedExceptionBase
+{
+ /**
+ * This is the typical constructor used for creating an EntityNotKnownException.
+ *
+ * @param httpCode - http response code to use if this exception flows over a REST call
+ * @param className - name of class reporting error
+ * @param actionDescription - description of function it was performing when error detected
+ * @param errorMessage - description of error
+ * @param systemAction - actions of the system as a result of the error
+ * @param userAction - instructions for correcting the error
+ */
+ public EntityNotKnownException(int httpCode, String className, String actionDescription, String errorMessage, String systemAction, String userAction)
+ {
+ super(httpCode, className, actionDescription, errorMessage, systemAction, userAction);
+ }
+
+
+ /**
+ * This is the constructor used for creating an EntityNotKnownException that resulted from a previous error.
+ *
+ * @param httpCode - http response code to use if this exception flows over a REST call
+ * @param className - name of class reporting error
+ * @param actionDescription - description of function it was performing when error detected
+ * @param errorMessage - description of error
+ * @param systemAction - actions of the system as a result of the error
+ * @param userAction - instructions for correcting the error
+ * @param caughtError - the error that resulted in this exception.
+ * */
+ public EntityNotKnownException(int httpCode, String className, String actionDescription, String errorMessage, String systemAction, String userAction, Throwable caughtError)
+ {
+ super(httpCode, className, actionDescription, errorMessage, systemAction, userAction, caughtError);
+ }
+}
http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/HomeEntityException.java
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/HomeEntityException.java b/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/HomeEntityException.java
new file mode 100644
index 0000000..706e235
--- /dev/null
+++ b/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/HomeEntityException.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.atlas.omrs.ffdc.exception;
+
+/**
+ * The HomeEntityException is thrown by an OMRS Connector when reference copy maintenance requests are issued on
+ * a home entity instance in the metadata collection.
+ */
+public class HomeEntityException extends OMRSCheckedExceptionBase
+{
+ /**
+ * This is the typical constructor used for creating a HomeEntityException.
+ *
+ * @param httpCode - http response code to use if this exception flows over a REST call
+ * @param className - name of class reporting error
+ * @param actionDescription - description of function it was performing when error detected
+ * @param errorMessage - description of error
+ * @param systemAction - actions of the system as a result of the error
+ * @param userAction - instructions for correcting the error
+ */
+ public HomeEntityException(int httpCode, String className, String actionDescription, String errorMessage, String systemAction, String userAction)
+ {
+ super(httpCode, className, actionDescription, errorMessage, systemAction, userAction);
+ }
+
+
+ /**
+ * This is the constructor used for creating an HomeEntityException that resulted from a previous error.
+ *
+ * @param httpCode - http response code to use if this exception flows over a REST call
+ * @param className - name of class reporting error
+ * @param actionDescription - description of function it was performing when error detected
+ * @param errorMessage - description of error
+ * @param systemAction - actions of the system as a result of the error
+ * @param userAction - instructions for correcting the error
+ * @param caughtError - the error that resulted in this exception.
+ * */
+ public HomeEntityException(int httpCode, String className, String actionDescription, String errorMessage, String systemAction, String userAction, Throwable caughtError)
+ {
+ super(httpCode, className, actionDescription, errorMessage, systemAction, userAction, caughtError);
+ }
+}
http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/HomeRelationshipException.java
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/HomeRelationshipException.java b/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/HomeRelationshipException.java
new file mode 100644
index 0000000..245ad91
--- /dev/null
+++ b/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/HomeRelationshipException.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.atlas.omrs.ffdc.exception;
+
+/**
+ * The HomeRelationshipException is thrown by an OMRS Connector when reference copy maintenance requests are issued on
+ * a home relationship instance in the metadata collection.
+ */
+public class HomeRelationshipException extends OMRSCheckedExceptionBase
+{
+ /**
+ * This is the typical constructor used for creating an HomeRelationshipException.
+ *
+ * @param httpCode - http response code to use if this exception flows over a REST call
+ * @param className - name of class reporting error
+ * @param actionDescription - description of function it was performing when error detected
+ * @param errorMessage - description of error
+ * @param systemAction - actions of the system as a result of the error
+ * @param userAction - instructions for correcting the error
+ */
+ public HomeRelationshipException(int httpCode, String className, String actionDescription, String errorMessage, String systemAction, String userAction)
+ {
+ super(httpCode, className, actionDescription, errorMessage, systemAction, userAction);
+ }
+
+
+ /**
+ * This is the constructor used for creating an HomeRelationshipException that resulted from a previous error.
+ *
+ * @param httpCode - http response code to use if this exception flows over a REST call
+ * @param className - name of class reporting error
+ * @param actionDescription - description of function it was performing when error detected
+ * @param errorMessage - description of error
+ * @param systemAction - actions of the system as a result of the error
+ * @param userAction - instructions for correcting the error
+ * @param caughtError - the error that resulted in this exception.
+ * */
+ public HomeRelationshipException(int httpCode, String className, String actionDescription, String errorMessage, String systemAction, String userAction, Throwable caughtError)
+ {
+ super(httpCode, className, actionDescription, errorMessage, systemAction, userAction, caughtError);
+ }
+}
http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/InvalidEntityException.java
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/InvalidEntityException.java b/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/InvalidEntityException.java
new file mode 100644
index 0000000..8ce55af
--- /dev/null
+++ b/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/InvalidEntityException.java
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.atlas.omrs.ffdc.exception;
+
+/**
+ * InvalidEntityException provides a checked exception for reporting that an entity can not be added because
+ * its content is invalid. The OMRSErrorCode adds specific details for the cause/effect of the error.
+ */
+public class InvalidEntityException extends OMRSCheckedExceptionBase
+{
+ /**
+ * This is the typical constructor for creating an InvalidEntityException. It captures the essential details
+ * about the error, where it occurred and how to fix it.
+ *
+ * @param httpCode code to use across a REST interface
+ * @param className name of class reporting error
+ * @param actionDescription description of function it was performing when error detected
+ * @param errorMessage description of error
+ * @param systemAction actions of the system as a result of the error
+ * @param userAction instructions for correcting the error
+ */
+ public InvalidEntityException(int httpCode, String className, String actionDescription, String errorMessage, String systemAction, String userAction)
+ {
+ super(httpCode, className, actionDescription, errorMessage, systemAction, userAction);
+ }
+
+
+ /**
+ * This constructor is used when an unexpected exception has been caught that needs to be wrapped in a
+ * InvalidEntityException in order to add the essential details about the error, where it occurred and
+ * how to fix it.
+ *
+ * @param httpCode code to use across a REST interface
+ * @param className name of class reporting error
+ * @param actionDescription description of function it was performing when error detected
+ * @param errorMessage description of error
+ * @param systemAction actions of the system as a result of the error
+ * @param userAction instructions for correcting the error
+ * @param caughtException the exception/error that caused this exception to be raised
+ */
+ public InvalidEntityException(int httpCode, String className, String actionDescription, String errorMessage, String systemAction, String userAction, Throwable caughtException)
+ {
+ super(httpCode, className, actionDescription, errorMessage, systemAction, userAction, caughtException);
+ }
+}
http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/InvalidParameterException.java
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/InvalidParameterException.java b/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/InvalidParameterException.java
new file mode 100644
index 0000000..56d0dd5
--- /dev/null
+++ b/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/InvalidParameterException.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.atlas.omrs.ffdc.exception;
+
+/**
+ * The InvalidParameterException is thrown by an OMRS Connector when the parameters passed to a repository
+ * connector, or its accompanying metadata collection, are not valid.
+ */
+public class InvalidParameterException extends OMRSCheckedExceptionBase
+{
+ /**
+ * This is the typical constructor used for creating a InvalidParameterException.
+ *
+ * @param httpCode - http response code to use if this exception flows over a REST call
+ * @param className - name of class reporting error
+ * @param actionDescription - description of function it was performing when error detected
+ * @param errorMessage - description of error
+ * @param systemAction - actions of the system as a result of the error
+ * @param userAction - instructions for correcting the error
+ */
+ public InvalidParameterException(int httpCode, String className, String actionDescription, String errorMessage, String systemAction, String userAction)
+ {
+ super(httpCode, className, actionDescription, errorMessage, systemAction, userAction);
+ }
+
+
+ /**
+ * This is the constructor used for creating a InvalidParameterException that resulted from a previous error.
+ *
+ * @param httpCode - http response code to use if this exception flows over a REST call
+ * @param className - name of class reporting error
+ * @param actionDescription - description of function it was performing when error detected
+ * @param errorMessage - description of error
+ * @param systemAction - actions of the system as a result of the error
+ * @param userAction - instructions for correcting the error
+ * @param caughtError - the error that resulted in this exception.
+ * */
+ public InvalidParameterException(int httpCode, String className, String actionDescription, String errorMessage, String systemAction, String userAction, Throwable caughtError)
+ {
+ super(httpCode, className, actionDescription, errorMessage, systemAction, userAction, caughtError);
+ }
+}
http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/InvalidRelationshipException.java
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/InvalidRelationshipException.java b/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/InvalidRelationshipException.java
new file mode 100644
index 0000000..82879d1
--- /dev/null
+++ b/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/InvalidRelationshipException.java
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.atlas.omrs.ffdc.exception;
+
+/**
+ * InvalidRelationshipException provides a checked exception for reporting that a relationship can not be added because
+ * its content is invalid. The OMRSErrorCode adds specific details for the cause/effect of the error.
+ */
+public class InvalidRelationshipException extends OMRSCheckedExceptionBase
+{
+ /**
+ * This is the typical constructor for creating an InvalidRelationshipException. It captures the essential details
+ * about the error, where it occurred and how to fix it.
+ *
+ * @param httpCode code to use across a REST interface
+ * @param className name of class reporting error
+ * @param actionDescription description of function it was performing when error detected
+ * @param errorMessage description of error
+ * @param systemAction actions of the system as a result of the error
+ * @param userAction instructions for correcting the error
+ */
+ public InvalidRelationshipException(int httpCode, String className, String actionDescription, String errorMessage, String systemAction, String userAction)
+ {
+ super(httpCode, className, actionDescription, errorMessage, systemAction, userAction);
+ }
+
+
+ /**
+ * This constructor is used when an unexpected exception has been caught that needs to be wrapped in a
+ * InvalidRelationshipException in order to add the essential details about the error, where it occurred and
+ * how to fix it.
+ *
+ * @param httpCode code to use across a REST interface
+ * @param className name of class reporting error
+ * @param actionDescription description of function it was performing when error detected
+ * @param errorMessage description of error
+ * @param systemAction actions of the system as a result of the error
+ * @param userAction instructions for correcting the error
+ * @param caughtException the exception/error that caused this exception to be raised
+ */
+ public InvalidRelationshipException(int httpCode, String className, String actionDescription, String errorMessage, String systemAction, String userAction, Throwable caughtException)
+ {
+ super(httpCode, className, actionDescription, errorMessage, systemAction, userAction, caughtException);
+ }
+}
http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/InvalidTypeDefException.java
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/InvalidTypeDefException.java b/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/InvalidTypeDefException.java
new file mode 100644
index 0000000..60ee27f
--- /dev/null
+++ b/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/InvalidTypeDefException.java
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.atlas.omrs.ffdc.exception;
+
+/**
+ * InvalidTypeDefException provides a checked exception for reporting that a typedef can not be added because
+ * its content is invalid. The OMRSErrorCode adds specific details for the cause/effect of the error.
+ */
+public class InvalidTypeDefException extends OMRSCheckedExceptionBase
+{
+ /**
+ * This is the typical constructor for creating an InvalidTypeDefException. It captures the essential details
+ * about the error, where it occurred and how to fix it.
+ *
+ * @param httpCode code to use across a REST interface
+ * @param className name of class reporting error
+ * @param actionDescription description of function it was performing when error detected
+ * @param errorMessage description of error
+ * @param systemAction actions of the system as a result of the error
+ * @param userAction instructions for correcting the error
+ */
+ public InvalidTypeDefException(int httpCode, String className, String actionDescription, String errorMessage, String systemAction, String userAction)
+ {
+ super(httpCode, className, actionDescription, errorMessage, systemAction, userAction);
+ }
+
+
+ /**
+ * This constructor is used when an unexpected exception has been caught that needs to be wrapped in a
+ * InvalidTypeDefException in order to add the essential details about the error, where it occurred and
+ * how to fix it.
+ *
+ * @param httpCode code to use across a REST interface
+ * @param className name of class reporting error
+ * @param actionDescription description of function it was performing when error detected
+ * @param errorMessage description of error
+ * @param systemAction actions of the system as a result of the error
+ * @param userAction instructions for correcting the error
+ * @param caughtException the exception/error that caused this exception to be raised
+ */
+ public InvalidTypeDefException(int httpCode, String className, String actionDescription, String errorMessage, String systemAction, String userAction, Throwable caughtException)
+ {
+ super(httpCode, className, actionDescription, errorMessage, systemAction, userAction, caughtException);
+ }
+}
http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/NotImplementedRuntimeException.java
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/NotImplementedRuntimeException.java b/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/NotImplementedRuntimeException.java
new file mode 100644
index 0000000..e271055
--- /dev/null
+++ b/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/NotImplementedRuntimeException.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.atlas.omrs.ffdc.exception;
+
+/**
+ * This exception is used to mark methods in the code that are not yet implemented. The JIRA where the implementation
+ * is being tracked is included in the message.
+ */
+public class NotImplementedRuntimeException extends RuntimeException
+{
+ public NotImplementedRuntimeException(String className,
+ String methodName,
+ String jiraName)
+ {
+ super("Method " + methodName + " in class " + className + " is not yet implemented. Refer to JIRA " + jiraName );
+ }
+}
http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/OMRSCheckedExceptionBase.java
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/OMRSCheckedExceptionBase.java b/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/OMRSCheckedExceptionBase.java
new file mode 100644
index 0000000..7409ead
--- /dev/null
+++ b/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/OMRSCheckedExceptionBase.java
@@ -0,0 +1,161 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.atlas.omrs.ffdc.exception;
+
+/**
+ * OMRSCheckedExceptionBase provides a checked exception for reporting errors found when using the OMRS.
+ * Typically these errors are either configuration or operational errors that can be fixed by an administrator
+ * or power user. However, there may be the odd bug that surfaces here. The OMRSErrorCode can be used with
+ * this exception to populate it with standard messages. Otherwise messages defined uniquely for a
+ * ConnectorProvider/Connector implementation can be used. The aim is to be able to uniquely identify the cause
+ * and remedy for the error.
+ */
+public class OMRSCheckedExceptionBase extends Exception
+{
+ /*
+ * These default values are only seen if this exception is initialized using one of its superclass constructors.
+ */
+ private int reportedHTTPCode = 500;
+ private String reportingClassName = "<Unknown>";
+ private String reportingActionDescription = "<Unknown>";
+ private String reportedErrorMessage = "<Unknown>";
+ private String reportedSystemAction = "<Unknown>";
+ private String reportedUserAction = "<Unknown>";
+ private Throwable reportedCaughtException = null;
+
+
+ /**
+ * This is the typical constructor used for creating a OMRSCheckedExceptionBase.
+ *
+ * @param httpCode - http response code to use if this exception flows over a REST call
+ * @param className - name of class reporting error
+ * @param actionDescription - description of function it was performing when error detected
+ * @param errorMessage - description of error
+ * @param systemAction - actions of the system as a result of the error
+ * @param userAction - instructions for correcting the error
+ */
+ public OMRSCheckedExceptionBase(int httpCode, String className, String actionDescription, String errorMessage, String systemAction, String userAction)
+ {
+ super(errorMessage);
+ this.reportedHTTPCode = httpCode;
+ this.reportingClassName = className;
+ this.reportingActionDescription = actionDescription;
+ this.reportedErrorMessage = errorMessage;
+ this.reportedSystemAction = systemAction;
+ this.reportedUserAction = userAction;
+ }
+
+
+ /**
+ * This is the constructor used for creating a OMRSCheckedExceptionBase when an unexpected error has been caught.
+ *
+ * @param httpCode - http response code to use if this exception flows over a rest call
+ * @param className - name of class reporting error
+ * @param actionDescription - description of function it was performing when error detected
+ * @param errorMessage - description of error
+ * @param systemAction - actions of the system as a result of the error
+ * @param userAction - instructions for correcting the error
+ * @param caughtError - previous error causing this exception
+ */
+ public OMRSCheckedExceptionBase(int httpCode, String className, String actionDescription, String errorMessage, String systemAction, String userAction, Throwable caughtError)
+ {
+ super(errorMessage, caughtError);
+ this.reportedHTTPCode = httpCode;
+ this.reportingClassName = className;
+ this.reportingActionDescription = actionDescription;
+ this.reportedErrorMessage = errorMessage;
+ this.reportedSystemAction = systemAction;
+ this.reportedUserAction = userAction;
+ this.reportedCaughtException = caughtError;
+ }
+
+
+ /**
+ * Return the HTTP response code to use with this exception.
+ *
+ * @return reportedHTTPCode
+ */
+ public int getReportedHTTPCode()
+ {
+ return reportedHTTPCode;
+ }
+
+ /**
+ * The class that created this exception.
+ *
+ * @return reportingClassName
+ */
+ public String getReportingClassName()
+ {
+ return reportingClassName;
+ }
+
+
+ /**
+ * The type of request that the class was performing when the condition occurred that resulted in this
+ * exception.
+ *
+ * @return reportingActionDescription
+ */
+ public String getReportingActionDescription()
+ {
+ return reportingActionDescription;
+ }
+
+
+ /**
+ * A formatted short description of the cause of the condition that resulted in this exception.
+ *
+ * @return reportedErrorMessage
+ */
+ public String getErrorMessage()
+ {
+ return reportedErrorMessage;
+ }
+
+
+ /**
+ * A description of the action that the system took as a result of the error condition.
+ *
+ * @return reportedSystemAction
+ */
+ public String getReportedSystemAction()
+ {
+ return reportedSystemAction;
+ }
+
+
+ /**
+ * A description of the action necessary to correct the error.
+ *
+ * @return reportedUserAction
+ */
+ public String getReportedUserAction()
+ {
+ return reportedUserAction;
+ }
+
+
+ /**
+ * An exception that was caught and wrapped by this exception. If a null is returned, then this exception is
+ * newly created and not the result of a previous exception.
+ *
+ * @return reportedCaughtException
+ */
+ public Throwable getReportedCaughtException() { return reportedCaughtException; }
+}
http://git-wip-us.apache.org/repos/asf/atlas/blob/8a57e657/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/OMRSConfigErrorException.java
----------------------------------------------------------------------
diff --git a/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/OMRSConfigErrorException.java b/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/OMRSConfigErrorException.java
new file mode 100644
index 0000000..1488a5f
--- /dev/null
+++ b/omrs/src/main/java/org/apache/atlas/omrs/ffdc/exception/OMRSConfigErrorException.java
@@ -0,0 +1,185 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.atlas.omrs.ffdc.exception;
+
+/**
+ * OMRSConfigErrorException is used for all runtime exceptions generated by the Open Metadata Repository Services (OMRS)
+ * components that indicate a configuration error.
+ * It is used in conjunction with the OMRSErrorCode to provide first failure data capture for these errors.
+ */
+public class OMRSConfigErrorException extends OMRSRuntimeException
+{
+ /*
+ * These default values are only seen if this exception is initialized using one of its superclass constructors.
+ */
+ private int reportedHTTPCode = 500;
+ private String reportingClassName = "<Unknown>";
+ private String reportingActionDescription = "<Unknown>";
+ private String reportedErrorMessage = "<Unknown>";
+ private String reportedSystemAction = "<Unknown>";
+ private String reportedUserAction = "<Unknown>";
+ private Throwable [] reportedCaughtExceptions = null;
+
+
+ /**
+ * This is the typical constructor used for creating an OMRSConfigErrorException.
+ *
+ * @param httpCode - http response code to use if this exception flows over a REST call
+ * @param className - name of class reporting error
+ * @param actionDescription - description of function it was performing when error detected
+ * @param errorMessage - description of error
+ * @param systemAction - actions of the system as a result of the error
+ * @param userAction - instructions for correcting the error
+ */
+ public OMRSConfigErrorException(int httpCode, String className, String actionDescription, String errorMessage, String systemAction, String userAction)
+ {
+ super(httpCode, className, actionDescription, errorMessage, systemAction, userAction);
+
+ this.reportedHTTPCode = httpCode;
+ this.reportingClassName = className;
+ this.reportingActionDescription = actionDescription;
+ this.reportedErrorMessage = errorMessage;
+ this.reportedSystemAction = systemAction;
+ this.reportedUserAction = userAction;
+ }
+
+
+ /**
+ * This is the constructor used for creating a OMRSConfigErrorException when an unexpected exception has been caught.
+ *
+ * @param httpCode - http response code to use if this exception flows over a REST call
+ * @param className - name of class reporting error
+ * @param actionDescription - description of function it was performing when error detected
+ * @param errorMessage - description of error
+ * @param systemAction - actions of the system as a result of the error
+ * @param userAction - instructions for correcting the error
+ * @param caughtError - previous error causing this exception
+ */
+ public OMRSConfigErrorException(int httpCode, String className, String actionDescription, String errorMessage, String systemAction, String userAction, Throwable caughtError)
+ {
+ super(httpCode, className, actionDescription, errorMessage, systemAction, userAction, caughtError);
+
+ this.reportedHTTPCode = httpCode;
+ this.reportingClassName = className;
+ this.reportingActionDescription = actionDescription;
+ this.reportedErrorMessage = errorMessage;
+ this.reportedSystemAction = systemAction;
+ this.reportedUserAction = userAction;
+ this.reportedCaughtExceptions = new Throwable[1];
+ this.reportedCaughtExceptions[0] = caughtError;
+ }
+
+ /**
+ * This is the constructor used for creating a OMRSConfigErrorException when multiple unexpected errors
+ * have been caught.
+ *
+ * @param httpCode - http response code to use if this exception flows over a rest call
+ * @param className - name of class reporting error
+ * @param actionDescription - description of function it was performing when error detected
+ * @param errorMessage - description of error
+ * @param systemAction - actions of the system as a result of the error
+ * @param userAction - instructions for correcting the error
+ * @param caughtErrors - previous errors causing this exception
+ */
+ public OMRSConfigErrorException(int httpCode, String className, String actionDescription, String errorMessage, String systemAction, String userAction, Throwable[] caughtErrors)
+ {
+ super(httpCode, className, actionDescription, errorMessage, systemAction, userAction, caughtErrors);
+
+ this.reportedHTTPCode = httpCode;
+ this.reportingClassName = className;
+ this.reportingActionDescription = actionDescription;
+ this.reportedErrorMessage = errorMessage;
+ this.reportedSystemAction = systemAction;
+ this.reportedUserAction = userAction;
+ this.reportedCaughtExceptions = caughtErrors;
+ }
+
+ /**
+ * Return the HTTP response code to use with this exception.
+ *
+ * @return reportedHTTPCode
+ */
+ public int getReportedHTTPCode()
+ {
+ return reportedHTTPCode;
+ }
+
+ /**
+ * The class that created this exception.
+ *
+ * @return reportingClassName
+ */
+ public String getReportingClassName()
+ {
+ return reportingClassName;
+ }
+
+
+ /**
+ * The type of request that the class was performing when the condition occurred that resulted in this
+ * exception.
+ *
+ * @return reportingActionDescription
+ */
+ public String getReportingActionDescription()
+ {
+ return reportingActionDescription;
+ }
+
+
+ /**
+ * A formatted short description of the cause of the condition that resulted in this exception.
+ *
+ * @return reportedErrorMessage
+ */
+ public String getErrorMessage()
+ {
+ return reportedErrorMessage;
+ }
+
+
+ /**
+ * A description of the action that the system took as a result of the error condition.
+ *
+ * @return reportedSystemAction
+ */
+ public String getReportedSystemAction()
+ {
+ return reportedSystemAction;
+ }
+
+
+ /**
+ * A description of the action necessary to correct the error.
+ *
+ * @return reportedUserAction
+ */
+ public String getReportedUserAction()
+ {
+ return reportedUserAction;
+ }
+
+
+ /**
+ * An exception that was caught and wrapped by this exception. If a null is returned, then this exception is
+ * newly created and not the result of a previous exception.
+ *
+ * @return reportedCaughtException
+ */
+ public Throwable[] getReportedCaughtExceptions() { return reportedCaughtExceptions; }
+}