Skip to content

Commit 1e9189a

Browse files
committed
DATAMONGO-1341 - Moved MongoDbErrorCodes into utility package.
This resolves a package cycle introduced by MongoPersistentEntityIndexCreator referring to error codes now. Updated Sonargraph architecture description along the way.
1 parent 95f6dfa commit 1e9189a

File tree

4 files changed

+188
-126
lines changed

4 files changed

+188
-126
lines changed

spring-data-mongodb/Spring Data MongoDB.sonargraph

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2-
<context version="7.1.10.209">
2+
<context version="7.2.2.230">
33
<scope type="Project" name="spring-data-mongodb">
44
<element type="TypeFilterReferenceOverridden" name="Filter">
55
<element type="IncludeTypePattern" name="org.springframework.data.mongodb.**"/>
@@ -35,6 +35,12 @@
3535
<dependency toName="Project|spring-data-mongodb::Layer|Repositories::Subsystem|API" type="AllowedDependency"/>
3636
<dependency toName="Project|spring-data-mongodb::Layer|Repositories::Subsystem|Implementation" type="AllowedDependency"/>
3737
</element>
38+
<element type="Subsystem" name="CDI">
39+
<element type="TypeFilter" name="Assignment">
40+
<element type="IncludeTypePattern" name="**.cdi.**"/>
41+
</element>
42+
<stereotype name="Unrestricted"/>
43+
</element>
3844
<dependency toName="Project|spring-data-mongodb::Layer|Config" type="AllowedDependency"/>
3945
<dependency toName="Project|spring-data-mongodb::Layer|Core" type="AllowedDependency"/>
4046
</element>
@@ -76,13 +82,19 @@
7682
</element>
7783
<dependency toName="Project|spring-data-mongodb::Layer|Core::Subsystem|Geospatial" type="AllowedDependency"/>
7884
</element>
85+
<element type="Subsystem" name="Script">
86+
<element type="TypeFilter" name="Assignment">
87+
<element type="IncludeTypePattern" name="**.script.**"/>
88+
</element>
89+
</element>
7990
<element type="Subsystem" name="Conversion">
8091
<element type="TypeFilter" name="Assignment">
8192
<element type="IncludeTypePattern" name="**.core.convert.**"/>
8293
</element>
8394
<dependency toName="Project|spring-data-mongodb::Layer|Core::Subsystem|Geospatial" type="AllowedDependency"/>
8495
<dependency toName="Project|spring-data-mongodb::Layer|Core::Subsystem|Mapping" type="AllowedDependency"/>
8596
<dependency toName="Project|spring-data-mongodb::Layer|Core::Subsystem|Query" type="AllowedDependency"/>
97+
<dependency toName="Project|spring-data-mongodb::Layer|Core::Subsystem|Script" type="AllowedDependency"/>
8698
</element>
8799
<element type="Subsystem" name="SpEL">
88100
<element type="TypeFilter" name="Assignment">
@@ -105,6 +117,11 @@
105117
<dependency toName="Project|spring-data-mongodb::Layer|Core::Subsystem|Mapping" type="AllowedDependency"/>
106118
<dependency toName="Project|spring-data-mongodb::Layer|Core::Subsystem|Query" type="AllowedDependency"/>
107119
</element>
120+
<element type="Subsystem" name="MapReduce">
121+
<element type="TypeFilter" name="Assignment">
122+
<element type="IncludeTypePattern" name="**.mapreduce.**"/>
123+
</element>
124+
</element>
108125
<element type="Subsystem" name="Core">
109126
<element type="TypeFilter" name="Assignment">
110127
<element type="WeakTypePattern" name="**.core.**"/>
@@ -113,8 +130,10 @@
113130
<dependency toName="Project|spring-data-mongodb::Layer|Core::Subsystem|Conversion" type="AllowedDependency"/>
114131
<dependency toName="Project|spring-data-mongodb::Layer|Core::Subsystem|Geospatial" type="AllowedDependency"/>
115132
<dependency toName="Project|spring-data-mongodb::Layer|Core::Subsystem|Index" type="AllowedDependency"/>
133+
<dependency toName="Project|spring-data-mongodb::Layer|Core::Subsystem|MapReduce" type="AllowedDependency"/>
116134
<dependency toName="Project|spring-data-mongodb::Layer|Core::Subsystem|Mapping" type="AllowedDependency"/>
117135
<dependency toName="Project|spring-data-mongodb::Layer|Core::Subsystem|Query" type="AllowedDependency"/>
136+
<dependency toName="Project|spring-data-mongodb::Layer|Core::Subsystem|Script" type="AllowedDependency"/>
118137
</element>
119138
<element type="Subsystem" name="Util">
120139
<element type="TypeFilter" name="Assignment">
@@ -169,7 +188,32 @@
169188
</element>
170189
<element type="Subsystem" name="Querydsl">
171190
<element type="TypeFilter" name="Assignment">
172-
<element type="IncludeTypePattern" name="com.mysema.query.**"/>
191+
<element type="IncludeTypePattern" name="com.querydsl.**"/>
192+
</element>
193+
</element>
194+
<element type="Subsystem" name="Slf4j">
195+
<element type="TypeFilter" name="Assignment">
196+
<element type="IncludeTypePattern" name="org.slf4j.**"/>
197+
</element>
198+
</element>
199+
<element type="Subsystem" name="Jackson">
200+
<element type="TypeFilter" name="Assignment">
201+
<element type="IncludeTypePattern" name="com.fasterxml.jackson.**"/>
202+
</element>
203+
</element>
204+
<element type="Subsystem" name="DOM">
205+
<element type="TypeFilter" name="Assignment">
206+
<element type="IncludeTypePattern" name="org.w3c.dom.**"/>
207+
</element>
208+
</element>
209+
<element type="Subsystem" name="AOP Alliance">
210+
<element type="TypeFilter" name="Assignment">
211+
<element type="IncludeTypePattern" name="org.aopalliance.**"/>
212+
</element>
213+
</element>
214+
<element type="Subsystem" name="Guava">
215+
<element type="TypeFilter" name="Assignment">
216+
<element type="IncludeTypePattern" name="com.google.common.**"/>
173217
</element>
174218
</element>
175219
</architecture>

spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoExceptionTranslator.java

Lines changed: 1 addition & 123 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
package org.springframework.data.mongodb.core;
1717

1818
import java.util.Arrays;
19-
import java.util.HashMap;
2019
import java.util.HashSet;
2120
import java.util.Set;
2221

@@ -29,6 +28,7 @@
2928
import org.springframework.dao.PermissionDeniedDataAccessException;
3029
import org.springframework.dao.support.PersistenceExceptionTranslator;
3130
import org.springframework.data.mongodb.UncategorizedMongoDbException;
31+
import org.springframework.data.mongodb.util.MongoDbErrorCodes;
3232
import org.springframework.util.ClassUtils;
3333

3434
import com.mongodb.MongoException;
@@ -106,126 +106,4 @@ public DataAccessException translateExceptionIfPossible(RuntimeException ex) {
106106
// that translation should not occur.
107107
return null;
108108
}
109-
110-
/**
111-
* {@link MongoDbErrorCodes} holds MongoDB specific error codes outlined in {@literal mongo/base/error_codes.err}.
112-
*
113-
* @author Christoph Strobl
114-
* @since 1.8
115-
*/
116-
public static final class MongoDbErrorCodes {
117-
118-
static HashMap<Integer, String> dataAccessResourceFailureCodes;
119-
static HashMap<Integer, String> dataIntegrityViolationCodes;
120-
static HashMap<Integer, String> duplicateKeyCodes;
121-
static HashMap<Integer, String> invalidDataAccessApiUsageExeption;
122-
static HashMap<Integer, String> permissionDeniedCodes;
123-
124-
static HashMap<Integer, String> errorCodes;
125-
126-
static {
127-
128-
dataAccessResourceFailureCodes = new HashMap<Integer, String>(10);
129-
dataAccessResourceFailureCodes.put(6, "HostUnreachable");
130-
dataAccessResourceFailureCodes.put(7, "HostNotFound");
131-
dataAccessResourceFailureCodes.put(89, "NetworkTimeout");
132-
dataAccessResourceFailureCodes.put(91, "ShutdownInProgress");
133-
dataAccessResourceFailureCodes.put(12000, "SlaveDelayDifferential");
134-
dataAccessResourceFailureCodes.put(10084, "CannotFindMapFile64Bit");
135-
dataAccessResourceFailureCodes.put(10085, "CannotFindMapFile");
136-
dataAccessResourceFailureCodes.put(10357, "ShutdownInProgress");
137-
dataAccessResourceFailureCodes.put(10359, "Header==0");
138-
dataAccessResourceFailureCodes.put(13440, "BadOffsetInFile");
139-
dataAccessResourceFailureCodes.put(13441, "BadOffsetInFile");
140-
dataAccessResourceFailureCodes.put(13640, "DataFileHeaderCorrupt");
141-
142-
dataIntegrityViolationCodes = new HashMap<Integer, String>(6);
143-
dataIntegrityViolationCodes.put(67, "CannotCreateIndex");
144-
dataIntegrityViolationCodes.put(68, "IndexAlreadyExists");
145-
dataIntegrityViolationCodes.put(85, "IndexOptionsConflict");
146-
dataIntegrityViolationCodes.put(86, "IndexKeySpecsConflict");
147-
dataIntegrityViolationCodes.put(112, "WriteConflict");
148-
dataIntegrityViolationCodes.put(117, "ConflictingOperationInProgress");
149-
150-
duplicateKeyCodes = new HashMap<Integer, String>(3);
151-
duplicateKeyCodes.put(3, "OBSOLETE_DuplicateKey");
152-
duplicateKeyCodes.put(84, "DuplicateKeyValue");
153-
duplicateKeyCodes.put(11000, "DuplicateKey");
154-
duplicateKeyCodes.put(11001, "DuplicateKey");
155-
156-
invalidDataAccessApiUsageExeption = new HashMap<Integer, String>();
157-
invalidDataAccessApiUsageExeption.put(5, "GraphContainsCycle");
158-
invalidDataAccessApiUsageExeption.put(9, "FailedToParse");
159-
invalidDataAccessApiUsageExeption.put(14, "TypeMismatch");
160-
invalidDataAccessApiUsageExeption.put(15, "Overflow");
161-
invalidDataAccessApiUsageExeption.put(16, "InvalidLength");
162-
invalidDataAccessApiUsageExeption.put(20, "IllegalOperation");
163-
invalidDataAccessApiUsageExeption.put(21, "EmptyArrayOperation");
164-
invalidDataAccessApiUsageExeption.put(22, "InvalidBSON");
165-
invalidDataAccessApiUsageExeption.put(23, "AlreadyInitialized");
166-
invalidDataAccessApiUsageExeption.put(29, "NonExistentPath");
167-
invalidDataAccessApiUsageExeption.put(30, "InvalidPath");
168-
invalidDataAccessApiUsageExeption.put(40, "ConflictingUpdateOperators");
169-
invalidDataAccessApiUsageExeption.put(45, "UserDataInconsistent");
170-
invalidDataAccessApiUsageExeption.put(30, "DollarPrefixedFieldName");
171-
invalidDataAccessApiUsageExeption.put(52, "InvalidPath");
172-
invalidDataAccessApiUsageExeption.put(53, "InvalidIdField");
173-
invalidDataAccessApiUsageExeption.put(54, "NotSingleValueField");
174-
invalidDataAccessApiUsageExeption.put(55, "InvalidDBRef");
175-
invalidDataAccessApiUsageExeption.put(56, "EmptyFieldName");
176-
invalidDataAccessApiUsageExeption.put(57, "DottedFieldName");
177-
invalidDataAccessApiUsageExeption.put(59, "CommandNotFound");
178-
invalidDataAccessApiUsageExeption.put(60, "DatabaseNotFound");
179-
invalidDataAccessApiUsageExeption.put(61, "ShardKeyNotFound");
180-
invalidDataAccessApiUsageExeption.put(62, "OplogOperationUnsupported");
181-
invalidDataAccessApiUsageExeption.put(66, "ImmutableField");
182-
invalidDataAccessApiUsageExeption.put(72, "InvalidOptions");
183-
invalidDataAccessApiUsageExeption.put(115, "CommandNotSupported");
184-
invalidDataAccessApiUsageExeption.put(116, "DocTooLargeForCapped");
185-
invalidDataAccessApiUsageExeption.put(130, "SymbolNotFound");
186-
invalidDataAccessApiUsageExeption.put(17280, "KeyTooLong");
187-
invalidDataAccessApiUsageExeption.put(13334, "ShardKeyTooBig");
188-
189-
permissionDeniedCodes = new HashMap<Integer, String>();
190-
permissionDeniedCodes.put(11, "UserNotFound");
191-
permissionDeniedCodes.put(18, "AuthenticationFailed");
192-
permissionDeniedCodes.put(31, "RoleNotFound");
193-
permissionDeniedCodes.put(32, "RolesNotRelated");
194-
permissionDeniedCodes.put(33, "PrvilegeNotFound");
195-
permissionDeniedCodes.put(15847, "CannotAuthenticate");
196-
permissionDeniedCodes.put(16704, "CannotAuthenticateToAdminDB");
197-
permissionDeniedCodes.put(16705, "CannotAuthenticateToAdminDB");
198-
199-
errorCodes = new HashMap<Integer, String>();
200-
errorCodes.putAll(dataAccessResourceFailureCodes);
201-
errorCodes.putAll(dataIntegrityViolationCodes);
202-
errorCodes.putAll(duplicateKeyCodes);
203-
errorCodes.putAll(invalidDataAccessApiUsageExeption);
204-
errorCodes.putAll(permissionDeniedCodes);
205-
}
206-
207-
public static boolean isDataIntegrityViolationCode(Integer errorCode) {
208-
return errorCode == null ? false : dataIntegrityViolationCodes.containsKey(errorCode);
209-
}
210-
211-
public static boolean isDataAccessResourceFailureCode(Integer errorCode) {
212-
return errorCode == null ? false : dataAccessResourceFailureCodes.containsKey(errorCode);
213-
}
214-
215-
public static boolean isDuplicateKeyCode(Integer errorCode) {
216-
return errorCode == null ? false : duplicateKeyCodes.containsKey(errorCode);
217-
}
218-
219-
public static boolean isPermissionDeniedCode(Integer errorCode) {
220-
return errorCode == null ? false : permissionDeniedCodes.containsKey(errorCode);
221-
}
222-
223-
public static boolean isInvalidDataAccessApiUsageCode(Integer errorCode) {
224-
return errorCode == null ? false : invalidDataAccessApiUsageExeption.containsKey(errorCode);
225-
}
226-
227-
public static String getErrorDescription(Integer errorCode) {
228-
return errorCode == null ? null : errorCodes.get(errorCode);
229-
}
230-
}
231109
}

spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/MongoPersistentEntityIndexCreator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,11 @@
2626
import org.springframework.data.mapping.context.MappingContext;
2727
import org.springframework.data.mapping.context.MappingContextEvent;
2828
import org.springframework.data.mongodb.MongoDbFactory;
29-
import org.springframework.data.mongodb.core.MongoExceptionTranslator.MongoDbErrorCodes;
3029
import org.springframework.data.mongodb.core.index.MongoPersistentEntityIndexResolver.IndexDefinitionHolder;
3130
import org.springframework.data.mongodb.core.mapping.Document;
3231
import org.springframework.data.mongodb.core.mapping.MongoMappingContext;
3332
import org.springframework.data.mongodb.core.mapping.MongoPersistentEntity;
33+
import org.springframework.data.mongodb.util.MongoDbErrorCodes;
3434
import org.springframework.util.Assert;
3535
import org.springframework.util.ObjectUtils;
3636

0 commit comments

Comments
 (0)