Browse Source
This resolves a package cycle introduced by MongoPersistentEntityIndexCreator referring to error codes now. Updated Sonargraph architecture description along the way.pull/336/head
4 changed files with 188 additions and 126 deletions
@ -0,0 +1,140 @@ |
|||||||
|
/* |
||||||
|
* Copyright 2015 the original author or authors. |
||||||
|
* |
||||||
|
* Licensed 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. |
||||||
|
*/ |
||||||
|
package org.springframework.data.mongodb.util; |
||||||
|
|
||||||
|
import java.util.HashMap; |
||||||
|
|
||||||
|
/** |
||||||
|
* {@link MongoDbErrorCodes} holds MongoDB specific error codes outlined in {@literal mongo/base/error_codes.err}. |
||||||
|
* |
||||||
|
* @author Christoph Strobl |
||||||
|
* @since 1.8 |
||||||
|
*/ |
||||||
|
public final class MongoDbErrorCodes { |
||||||
|
|
||||||
|
static HashMap<Integer, String> dataAccessResourceFailureCodes; |
||||||
|
static HashMap<Integer, String> dataIntegrityViolationCodes; |
||||||
|
static HashMap<Integer, String> duplicateKeyCodes; |
||||||
|
static HashMap<Integer, String> invalidDataAccessApiUsageExeption; |
||||||
|
static HashMap<Integer, String> permissionDeniedCodes; |
||||||
|
|
||||||
|
static HashMap<Integer, String> errorCodes; |
||||||
|
|
||||||
|
static { |
||||||
|
|
||||||
|
dataAccessResourceFailureCodes = new HashMap<Integer, String>(10); |
||||||
|
dataAccessResourceFailureCodes.put(6, "HostUnreachable"); |
||||||
|
dataAccessResourceFailureCodes.put(7, "HostNotFound"); |
||||||
|
dataAccessResourceFailureCodes.put(89, "NetworkTimeout"); |
||||||
|
dataAccessResourceFailureCodes.put(91, "ShutdownInProgress"); |
||||||
|
dataAccessResourceFailureCodes.put(12000, "SlaveDelayDifferential"); |
||||||
|
dataAccessResourceFailureCodes.put(10084, "CannotFindMapFile64Bit"); |
||||||
|
dataAccessResourceFailureCodes.put(10085, "CannotFindMapFile"); |
||||||
|
dataAccessResourceFailureCodes.put(10357, "ShutdownInProgress"); |
||||||
|
dataAccessResourceFailureCodes.put(10359, "Header==0"); |
||||||
|
dataAccessResourceFailureCodes.put(13440, "BadOffsetInFile"); |
||||||
|
dataAccessResourceFailureCodes.put(13441, "BadOffsetInFile"); |
||||||
|
dataAccessResourceFailureCodes.put(13640, "DataFileHeaderCorrupt"); |
||||||
|
|
||||||
|
dataIntegrityViolationCodes = new HashMap<Integer, String>(6); |
||||||
|
dataIntegrityViolationCodes.put(67, "CannotCreateIndex"); |
||||||
|
dataIntegrityViolationCodes.put(68, "IndexAlreadyExists"); |
||||||
|
dataIntegrityViolationCodes.put(85, "IndexOptionsConflict"); |
||||||
|
dataIntegrityViolationCodes.put(86, "IndexKeySpecsConflict"); |
||||||
|
dataIntegrityViolationCodes.put(112, "WriteConflict"); |
||||||
|
dataIntegrityViolationCodes.put(117, "ConflictingOperationInProgress"); |
||||||
|
|
||||||
|
duplicateKeyCodes = new HashMap<Integer, String>(3); |
||||||
|
duplicateKeyCodes.put(3, "OBSOLETE_DuplicateKey"); |
||||||
|
duplicateKeyCodes.put(84, "DuplicateKeyValue"); |
||||||
|
duplicateKeyCodes.put(11000, "DuplicateKey"); |
||||||
|
duplicateKeyCodes.put(11001, "DuplicateKey"); |
||||||
|
|
||||||
|
invalidDataAccessApiUsageExeption = new HashMap<Integer, String>(); |
||||||
|
invalidDataAccessApiUsageExeption.put(5, "GraphContainsCycle"); |
||||||
|
invalidDataAccessApiUsageExeption.put(9, "FailedToParse"); |
||||||
|
invalidDataAccessApiUsageExeption.put(14, "TypeMismatch"); |
||||||
|
invalidDataAccessApiUsageExeption.put(15, "Overflow"); |
||||||
|
invalidDataAccessApiUsageExeption.put(16, "InvalidLength"); |
||||||
|
invalidDataAccessApiUsageExeption.put(20, "IllegalOperation"); |
||||||
|
invalidDataAccessApiUsageExeption.put(21, "EmptyArrayOperation"); |
||||||
|
invalidDataAccessApiUsageExeption.put(22, "InvalidBSON"); |
||||||
|
invalidDataAccessApiUsageExeption.put(23, "AlreadyInitialized"); |
||||||
|
invalidDataAccessApiUsageExeption.put(29, "NonExistentPath"); |
||||||
|
invalidDataAccessApiUsageExeption.put(30, "InvalidPath"); |
||||||
|
invalidDataAccessApiUsageExeption.put(40, "ConflictingUpdateOperators"); |
||||||
|
invalidDataAccessApiUsageExeption.put(45, "UserDataInconsistent"); |
||||||
|
invalidDataAccessApiUsageExeption.put(30, "DollarPrefixedFieldName"); |
||||||
|
invalidDataAccessApiUsageExeption.put(52, "InvalidPath"); |
||||||
|
invalidDataAccessApiUsageExeption.put(53, "InvalidIdField"); |
||||||
|
invalidDataAccessApiUsageExeption.put(54, "NotSingleValueField"); |
||||||
|
invalidDataAccessApiUsageExeption.put(55, "InvalidDBRef"); |
||||||
|
invalidDataAccessApiUsageExeption.put(56, "EmptyFieldName"); |
||||||
|
invalidDataAccessApiUsageExeption.put(57, "DottedFieldName"); |
||||||
|
invalidDataAccessApiUsageExeption.put(59, "CommandNotFound"); |
||||||
|
invalidDataAccessApiUsageExeption.put(60, "DatabaseNotFound"); |
||||||
|
invalidDataAccessApiUsageExeption.put(61, "ShardKeyNotFound"); |
||||||
|
invalidDataAccessApiUsageExeption.put(62, "OplogOperationUnsupported"); |
||||||
|
invalidDataAccessApiUsageExeption.put(66, "ImmutableField"); |
||||||
|
invalidDataAccessApiUsageExeption.put(72, "InvalidOptions"); |
||||||
|
invalidDataAccessApiUsageExeption.put(115, "CommandNotSupported"); |
||||||
|
invalidDataAccessApiUsageExeption.put(116, "DocTooLargeForCapped"); |
||||||
|
invalidDataAccessApiUsageExeption.put(130, "SymbolNotFound"); |
||||||
|
invalidDataAccessApiUsageExeption.put(17280, "KeyTooLong"); |
||||||
|
invalidDataAccessApiUsageExeption.put(13334, "ShardKeyTooBig"); |
||||||
|
|
||||||
|
permissionDeniedCodes = new HashMap<Integer, String>(); |
||||||
|
permissionDeniedCodes.put(11, "UserNotFound"); |
||||||
|
permissionDeniedCodes.put(18, "AuthenticationFailed"); |
||||||
|
permissionDeniedCodes.put(31, "RoleNotFound"); |
||||||
|
permissionDeniedCodes.put(32, "RolesNotRelated"); |
||||||
|
permissionDeniedCodes.put(33, "PrvilegeNotFound"); |
||||||
|
permissionDeniedCodes.put(15847, "CannotAuthenticate"); |
||||||
|
permissionDeniedCodes.put(16704, "CannotAuthenticateToAdminDB"); |
||||||
|
permissionDeniedCodes.put(16705, "CannotAuthenticateToAdminDB"); |
||||||
|
|
||||||
|
errorCodes = new HashMap<Integer, String>(); |
||||||
|
errorCodes.putAll(dataAccessResourceFailureCodes); |
||||||
|
errorCodes.putAll(dataIntegrityViolationCodes); |
||||||
|
errorCodes.putAll(duplicateKeyCodes); |
||||||
|
errorCodes.putAll(invalidDataAccessApiUsageExeption); |
||||||
|
errorCodes.putAll(permissionDeniedCodes); |
||||||
|
} |
||||||
|
|
||||||
|
public static boolean isDataIntegrityViolationCode(Integer errorCode) { |
||||||
|
return errorCode == null ? false : dataIntegrityViolationCodes.containsKey(errorCode); |
||||||
|
} |
||||||
|
|
||||||
|
public static boolean isDataAccessResourceFailureCode(Integer errorCode) { |
||||||
|
return errorCode == null ? false : dataAccessResourceFailureCodes.containsKey(errorCode); |
||||||
|
} |
||||||
|
|
||||||
|
public static boolean isDuplicateKeyCode(Integer errorCode) { |
||||||
|
return errorCode == null ? false : duplicateKeyCodes.containsKey(errorCode); |
||||||
|
} |
||||||
|
|
||||||
|
public static boolean isPermissionDeniedCode(Integer errorCode) { |
||||||
|
return errorCode == null ? false : permissionDeniedCodes.containsKey(errorCode); |
||||||
|
} |
||||||
|
|
||||||
|
public static boolean isInvalidDataAccessApiUsageCode(Integer errorCode) { |
||||||
|
return errorCode == null ? false : invalidDataAccessApiUsageExeption.containsKey(errorCode); |
||||||
|
} |
||||||
|
|
||||||
|
public static String getErrorDescription(Integer errorCode) { |
||||||
|
return errorCode == null ? null : errorCodes.get(errorCode); |
||||||
|
} |
||||||
|
} |
||||||
Loading…
Reference in new issue