Skip to content

Commit 333a9a0

Browse files
committed
Add and refactor exceptions for different errors
1 parent b530d7c commit 333a9a0

35 files changed

+238
-61
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
package com.relogiclabs.json.schema.exception;
1+
package com.relogiclabs.jschema.exception;
22

3-
import com.relogiclabs.json.schema.message.ErrorDetail;
3+
import com.relogiclabs.jschema.message.ErrorDetail;
44

55
public class ClassInstantiationException extends CommonException {
66
public ClassInstantiationException(ErrorDetail detail, Throwable cause) {
77
super(detail, cause);
88
}
9-
}
9+
}

src/main/java/com/relogiclabs/json/schema/exception/CommonException.java renamed to src/main/java/com/relogiclabs/jschema/exception/CommonException.java

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,22 @@
1-
package com.relogiclabs.json.schema.exception;
1+
package com.relogiclabs.jschema.exception;
22

3-
import com.relogiclabs.json.schema.message.ErrorDetail;
3+
import com.relogiclabs.jschema.message.ErrorDetail;
44
import lombok.Getter;
55

66
import java.util.HashMap;
77
import java.util.Map;
88

9+
import static java.util.Arrays.copyOfRange;
10+
911
public class CommonException extends RuntimeException {
12+
private static final String FAIL_METHOD_PREFIX = "fail";
1013
@Getter private final String code;
1114
private Map<String, String> attributes;
1215

1316
public CommonException(String code, String message, Throwable cause) {
1417
super(message, cause);
1518
this.code = code;
19+
formatStackTrace();
1620
}
1721

1822
public CommonException(String code, String message) {
@@ -36,4 +40,20 @@ public void setAttribute(String name, String value) {
3640
if(attributes == null) attributes = new HashMap<>(5);
3741
attributes.put(name, value);
3842
}
43+
44+
@Override
45+
public synchronized Throwable fillInStackTrace() {
46+
var result = super.fillInStackTrace();
47+
formatStackTrace();
48+
return result;
49+
}
50+
51+
private void formatStackTrace() {
52+
StackTraceElement[] stackTrace = getStackTrace();
53+
int offset = 0;
54+
for(var e : stackTrace)
55+
if(e.getMethodName().startsWith(FAIL_METHOD_PREFIX)) offset++;
56+
else break;
57+
setStackTrace(copyOfRange(stackTrace, offset, stackTrace.length));
58+
}
3959
}
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
package com.relogiclabs.json.schema.exception;
1+
package com.relogiclabs.jschema.exception;
22

33
public class DateTimeLexerException extends CommonException {
44
public DateTimeLexerException(String code, String message, Throwable cause) {
55
super(code, message, cause);
66
}
7-
}
7+
}
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
package com.relogiclabs.json.schema.exception;
1+
package com.relogiclabs.jschema.exception;
22

3-
import com.relogiclabs.json.schema.message.ErrorDetail;
3+
import com.relogiclabs.jschema.message.ErrorDetail;
44

55
public class DefinitionNotFoundException extends CommonException {
66
public DefinitionNotFoundException(ErrorDetail detail) {
77
super(detail);
88
}
9-
}
9+
}
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
package com.relogiclabs.json.schema.exception;
1+
package com.relogiclabs.jschema.exception;
22

3-
import com.relogiclabs.json.schema.message.ErrorDetail;
3+
import com.relogiclabs.jschema.message.ErrorDetail;
44

55
public class DuplicateDefinitionException extends CommonException {
66
public DuplicateDefinitionException(ErrorDetail detail) {
77
super(detail);
88
}
9-
}
9+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.relogiclabs.jschema.exception;
2+
3+
import com.relogiclabs.jschema.message.ErrorDetail;
4+
5+
public class DuplicateImportException extends CommonException {
6+
public DuplicateImportException(ErrorDetail detail) {
7+
super(detail);
8+
}
9+
}
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
package com.relogiclabs.json.schema.exception;
1+
package com.relogiclabs.jschema.exception;
22

3-
import com.relogiclabs.json.schema.message.ErrorDetail;
3+
import com.relogiclabs.jschema.message.ErrorDetail;
44

55
public class DuplicatePragmaException extends CommonException {
66
public DuplicatePragmaException(ErrorDetail detail) {
77
super(detail);
88
}
9-
}
9+
}
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
package com.relogiclabs.json.schema.exception;
1+
package com.relogiclabs.jschema.exception;
22

3-
import com.relogiclabs.json.schema.message.ErrorDetail;
3+
import com.relogiclabs.jschema.message.ErrorDetail;
44

55
public class DuplicatePropertyKeyException extends CommonException {
66
public DuplicatePropertyKeyException(ErrorDetail detail) {
77
super(detail);
88
}
9-
}
9+
}
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
package com.relogiclabs.json.schema.exception;
1+
package com.relogiclabs.jschema.exception;
22

3-
import com.relogiclabs.json.schema.message.ErrorDetail;
3+
import com.relogiclabs.jschema.message.ErrorDetail;
44

55
public class FunctionNotFoundException extends CommonException {
66
public FunctionNotFoundException(ErrorDetail detail) {
77
super(detail);
88
}
9-
}
9+
}
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
package com.relogiclabs.json.schema.exception;
1+
package com.relogiclabs.jschema.exception;
22

3-
import com.relogiclabs.json.schema.message.ErrorDetail;
3+
import com.relogiclabs.jschema.message.ErrorDetail;
44

55
public class InvalidDataTypeException extends CommonException {
66
public InvalidDataTypeException(ErrorDetail detail) {
77
super(detail);
88
}
9-
}
9+
}

0 commit comments

Comments
 (0)