Skip to content

Commit d24e183

Browse files
committed
Added custom exceptions (Sonar)
1 parent 3d340bd commit d24e183

19 files changed

+116
-30
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.javadiscord.jdi.internal.exceptions;
2+
3+
public class ComponentInjectionException extends RuntimeException {
4+
5+
public ComponentInjectionException() {
6+
super();
7+
}
8+
9+
public ComponentInjectionException(String message) {
10+
super(message);
11+
}
12+
13+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.javadiscord.jdi.internal.exceptions;
2+
3+
public class NoZeroArgConstructorException extends RuntimeException {
4+
5+
public NoZeroArgConstructorException() {
6+
super();
7+
}
8+
9+
public NoZeroArgConstructorException(String message) {
10+
super(message);
11+
}
12+
13+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.javadiscord.jdi.internal.exceptions;
2+
3+
public class ValidationException extends RuntimeException {
4+
5+
public ValidationException() {
6+
super();
7+
}
8+
9+
public ValidationException(String message) {
10+
super(message);
11+
}
12+
}

annotations/src/main/java/com/javadiscord/jdi/core/processor/ClassFileUtil.java renamed to annotations/src/main/java/com/javadiscord/jdi/internal/processor/ClassFileUtil.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.javadiscord.jdi.core.processor;
1+
package com.javadiscord.jdi.internal.processor;
22

33
import java.io.DataInputStream;
44
import java.io.File;
@@ -15,7 +15,9 @@ public class ClassFileUtil {
1515
private static final List<File> classesInPath = new ArrayList<>();
1616
private static boolean loadedParentJar = false;
1717

18-
private ClassFileUtil() {}
18+
private ClassFileUtil() {
19+
throw new UnsupportedOperationException("Utility class");
20+
}
1921

2022
public static List<File> getClassesInClassPath() {
2123
if (classesInPath.isEmpty()) {

annotations/src/main/java/com/javadiscord/jdi/core/processor/SlashCommandClassMethod.java renamed to annotations/src/main/java/com/javadiscord/jdi/internal/processor/SlashCommandClassMethod.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.javadiscord.jdi.core.processor;
1+
package com.javadiscord.jdi.internal.processor;
22

33
import java.lang.reflect.Method;
44

annotations/src/main/java/com/javadiscord/jdi/core/processor/loader/ComponentLoader.java renamed to annotations/src/main/java/com/javadiscord/jdi/internal/processor/loader/ComponentLoader.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.javadiscord.jdi.core.processor.loader;
1+
package com.javadiscord.jdi.internal.processor.loader;
22

33
import java.io.File;
44
import java.lang.reflect.Field;
@@ -10,8 +10,9 @@
1010

1111
import com.javadiscord.jdi.core.annotations.Component;
1212
import com.javadiscord.jdi.core.annotations.Inject;
13-
import com.javadiscord.jdi.core.processor.ClassFileUtil;
14-
import com.javadiscord.jdi.core.processor.validator.ComponentValidator;
13+
import com.javadiscord.jdi.internal.exceptions.ComponentInjectionException;
14+
import com.javadiscord.jdi.internal.processor.ClassFileUtil;
15+
import com.javadiscord.jdi.internal.processor.validator.ComponentValidator;
1516

1617
import org.apache.logging.log4j.LogManager;
1718
import org.apache.logging.log4j.Logger;
@@ -102,9 +103,9 @@ private static void injectDependency(Object component, Field field, Object depen
102103
field.getType()
103104
);
104105
} catch (IllegalAccessException e) {
105-
throw new RuntimeException(
106-
"Failed to inject dependency into field: " + field.getName(),
107-
e
106+
throw new ComponentInjectionException(
107+
"Failed to inject dependency into field: " + field.getName() + ", " +
108+
e.getMessage()
108109
);
109110
}
110111
}

annotations/src/main/java/com/javadiscord/jdi/core/processor/loader/ListenerLoader.java renamed to annotations/src/main/java/com/javadiscord/jdi/internal/processor/loader/ListenerLoader.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1-
package com.javadiscord.jdi.core.processor.loader;
1+
package com.javadiscord.jdi.internal.processor.loader;
22

33
import java.io.File;
44
import java.lang.reflect.Constructor;
55
import java.util.List;
66

77
import com.javadiscord.jdi.core.annotations.EventListener;
8-
import com.javadiscord.jdi.core.processor.ClassFileUtil;
9-
import com.javadiscord.jdi.core.processor.validator.EventListenerValidator;
8+
import com.javadiscord.jdi.internal.exceptions.NoZeroArgConstructorException;
9+
import com.javadiscord.jdi.internal.processor.ClassFileUtil;
10+
import com.javadiscord.jdi.internal.processor.validator.EventListenerValidator;
1011

1112
import org.apache.logging.log4j.LogManager;
1213
import org.apache.logging.log4j.Logger;
@@ -65,6 +66,8 @@ public static Constructor<?> getZeroArgConstructor(Class<?> clazz) {
6566
return constructor;
6667
}
6768
}
68-
throw new RuntimeException("No zero arg constructor found for " + clazz.getName());
69+
throw new NoZeroArgConstructorException(
70+
"No zero arg constructor found for " + clazz.getName()
71+
);
6972
}
7073
}

annotations/src/main/java/com/javadiscord/jdi/core/processor/loader/SlashCommandLoader.java renamed to annotations/src/main/java/com/javadiscord/jdi/internal/processor/loader/SlashCommandLoader.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.javadiscord.jdi.core.processor.loader;
1+
package com.javadiscord.jdi.internal.processor.loader;
22

33
import java.io.File;
44
import java.lang.reflect.Constructor;
@@ -7,9 +7,10 @@
77
import java.util.Map;
88

99
import com.javadiscord.jdi.core.annotations.SlashCommand;
10-
import com.javadiscord.jdi.core.processor.ClassFileUtil;
11-
import com.javadiscord.jdi.core.processor.SlashCommandClassMethod;
12-
import com.javadiscord.jdi.core.processor.validator.SlashCommandValidator;
10+
import com.javadiscord.jdi.internal.exceptions.ValidationException;
11+
import com.javadiscord.jdi.internal.processor.ClassFileUtil;
12+
import com.javadiscord.jdi.internal.processor.SlashCommandClassMethod;
13+
import com.javadiscord.jdi.internal.processor.validator.SlashCommandValidator;
1314

1415
import org.apache.logging.log4j.LogManager;
1516
import org.apache.logging.log4j.Logger;
@@ -38,7 +39,7 @@ private void loadInteractionListeners() {
3839
clazz, method, method.getAnnotation(SlashCommand.class).name()
3940
);
4041
} else {
41-
throw new RuntimeException(method.getName() + " failed validation");
42+
throw new ValidationException(method.getName() + " failed validation");
4243
}
4344
}
4445
}

annotations/src/main/java/com/javadiscord/jdi/core/processor/validator/ComponentValidator.java renamed to annotations/src/main/java/com/javadiscord/jdi/internal/processor/validator/ComponentValidator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.javadiscord.jdi.core.processor.validator;
1+
package com.javadiscord.jdi.internal.processor.validator;
22

33
import java.lang.reflect.Method;
44
import java.lang.reflect.Modifier;

annotations/src/main/java/com/javadiscord/jdi/core/processor/validator/EventListenerValidator.java renamed to annotations/src/main/java/com/javadiscord/jdi/internal/processor/validator/EventListenerValidator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.javadiscord.jdi.core.processor.validator;
1+
package com.javadiscord.jdi.internal.processor.validator;
22

33
import java.lang.annotation.Annotation;
44
import java.lang.reflect.Constructor;

annotations/src/main/java/com/javadiscord/jdi/core/processor/validator/SlashCommandValidator.java renamed to annotations/src/main/java/com/javadiscord/jdi/internal/processor/validator/SlashCommandValidator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.javadiscord.jdi.core.processor.validator;
1+
package com.javadiscord.jdi.internal.processor.validator;
22

33
import java.lang.annotation.Annotation;
44
import java.lang.reflect.Method;

annotations/src/test/unit/com/javadiscord/jdi/core/processor/ClassFileUtilTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import static org.junit.jupiter.api.Assertions.*;
44

5+
import com.javadiscord.jdi.internal.processor.ClassFileUtil;
56
import org.junit.jupiter.api.Test;
67

78
import java.io.File;

annotations/src/test/unit/com/javadiscord/jdi/core/processor/EventListenerValidatorTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import com.javadiscord.jdi.core.models.channel.Channel;
1111
import com.javadiscord.jdi.core.models.message.Message;
1212

13-
import com.javadiscord.jdi.core.processor.validator.EventListenerValidator;
13+
import com.javadiscord.jdi.internal.processor.validator.EventListenerValidator;
1414
import org.junit.jupiter.api.Test;
1515

1616
class EventListenerValidatorTest {

core/src/main/java/com/javadiscord/jdi/core/Constants.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ public class Constants {
88
"com.javadiscord.jdi.core.annotations.SlashCommand";
99

1010
public static final String LISTENER_LOADER_CLASS =
11-
"com.javadiscord.jdi.core.processor.loader.ListenerLoader";
11+
"com.javadiscord.jdi.internal.processor.loader.ListenerLoader";
1212
public static final String COMPONENT_LOADER_CLASS =
13-
"com.javadiscord.jdi.core.processor.loader.ComponentLoader";
13+
"com.javadiscord.jdi.internal.processor.loader.ComponentLoader";
1414
public static final String SLASH_COMMAND_LOADER_CLASS =
15-
"com.javadiscord.jdi.core.processor.loader.SlashCommandLoader";
15+
"com.javadiscord.jdi.internal.processor.loader.SlashCommandLoader";
1616

1717
public static final String LAUNCH_HEADER = """
1818

core/src/main/java/com/javadiscord/jdi/core/Discord.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030
import com.javadiscord.jdi.internal.api.application_commands.DeleteCommandRequest;
3131
import com.javadiscord.jdi.internal.cache.Cache;
3232
import com.javadiscord.jdi.internal.cache.CacheType;
33+
import com.javadiscord.jdi.internal.exceptions.GatewayException;
34+
import com.javadiscord.jdi.internal.exceptions.InvalidBotTokenException;
3335
import com.javadiscord.jdi.internal.gateway.*;
3436
import com.javadiscord.jdi.internal.gateway.identify.IdentifyRequest;
3537

@@ -242,7 +244,7 @@ private void loadComponents() {
242244
if (componentLoader != null) {
243245
componentLoader.loadComponents();
244246
} else {
245-
throw new RuntimeException("Unable to create ComponentLoader instance");
247+
throw new InstantiationException("Unable to create ComponentLoader instance");
246248
}
247249
} catch (Exception e) {
248250
LOGGER.warn("Component loading failed", e);
@@ -357,15 +359,15 @@ private static Gateway getGatewayURL(String authentication) {
357359
httpClient.send(request, HttpResponse.BodyHandlers.ofString());
358360

359361
if (response.statusCode() == 401) {
360-
throw new RuntimeException("Invalid bot token provided");
362+
throw new InvalidBotTokenException("Invalid bot token provided");
361363
}
362364
if (response.statusCode() != 200) {
363-
throw new RuntimeException("Unexpected error occurred: " + response.body());
365+
throw new GatewayException("Unexpected error occurred: " + response.body());
364366
}
365367
return OBJECT_MAPPER.readValue(response.body(), Gateway.class);
366368
} catch (Exception e) {
367369
LOGGER.error("Failed to fetch the gateway URL from discord", e);
368-
throw new RuntimeException(e);
370+
throw new GatewayException(e.getMessage());
369371
}
370372
}
371373

core/src/main/java/com/javadiscord/jdi/core/interaction/InteractionEventHandler.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import com.javadiscord.jdi.internal.ReflectiveLoader;
1313
import com.javadiscord.jdi.internal.ReflectiveSlashCommandClassMethod;
1414
import com.javadiscord.jdi.internal.ReflectiveSlashCommandLoader;
15+
import com.javadiscord.jdi.internal.exceptions.InstantiationException;
1516

1617
import org.apache.logging.log4j.LogManager;
1718
import org.apache.logging.log4j.Logger;
@@ -50,7 +51,7 @@ public void onInteractionCreate(Interaction interaction, Guild guild) {
5051
if (validateParameterCount(method, paramOrder)) {
5152
invokeHandler(handler, method, paramOrder);
5253
} else {
53-
throw new RuntimeException(
54+
throw new InstantiationException(
5455
"Bound " + paramOrder.size() + " parameters but expected "
5556
+ method.getParameterCount()
5657
);
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.javadiscord.jdi.internal.exceptions;
2+
3+
public class GatewayException extends RuntimeException {
4+
5+
public GatewayException() {
6+
super();
7+
}
8+
9+
public GatewayException(String message) {
10+
super(message);
11+
}
12+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.javadiscord.jdi.internal.exceptions;
2+
3+
public class InstantiationException extends RuntimeException {
4+
5+
public InstantiationException() {
6+
super();
7+
}
8+
9+
public InstantiationException(String message) {
10+
super(message);
11+
}
12+
13+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.javadiscord.jdi.internal.exceptions;
2+
3+
public class InvalidBotTokenException extends RuntimeException {
4+
5+
public InvalidBotTokenException() {
6+
super();
7+
}
8+
9+
public InvalidBotTokenException(String message) {
10+
super(message);
11+
}
12+
}

0 commit comments

Comments
 (0)