diff --git a/.gitignore b/.gitignore index 23841a6..9ab1047 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,6 @@ .idea .gradle +.classpath +.project +.settings +bin/ diff --git a/build.gradle b/build.gradle index e9a013a..bf66a3c 100644 --- a/build.gradle +++ b/build.gradle @@ -12,6 +12,15 @@ repositories { dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.2' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.2' + + compileOnly 'org.projectlombok:lombok:1.18.30' + annotationProcessor 'org.projectlombok:lombok:1.18.30' + + testCompileOnly 'org.projectlombok:lombok:1.18.30' + testAnnotationProcessor 'org.projectlombok:lombok:1.18.30' + + implementation group: 'org.slf4j', name: 'slf4j-api', version: '2.0.9' + implementation group: 'org.slf4j', name: 'slf4j-simple', version: '2.0.9' } test { diff --git a/src/main/java/task_4/AvengersBase.java b/src/main/java/task_4/AvengersBase.java new file mode 100644 index 0000000..0f6bda0 --- /dev/null +++ b/src/main/java/task_4/AvengersBase.java @@ -0,0 +1,43 @@ +package task_4; + +import lombok.extern.slf4j.Slf4j; +import task_4.exceptions.SecurityBreachException; +import task_4.exceptions.UnauthorizedAccessAttemptException; + +@Slf4j +public class AvengersBase { + + public void enterBase(Hero hero) { + + if (hero == null) { + throw new IllegalArgumentException("Null args"); + } + + log.info("Start to check hero's credentials"); + if (hero.getName().equals("Loki")) { + log.warn("Loki here!"); + throw new SecurityBreachException("Loki try to enter!"); + } + + log.info("{} entered successful", hero.getName()); + + } + + public String getSecretDocuments(Hero hero, String documentName) { + + if (hero == null || documentName == null || documentName.isBlank()) { + throw new IllegalArgumentException("Null or blank args"); + } + + log.info("Start to check access to the document"); + + if (hero.getName().equals("Loki")) { + log.warn("Loki's access attempt to {}", documentName); + throw new UnauthorizedAccessAttemptException("Loki try to enter!"); + } + + log.info("{} got access to {}", hero.getName(), documentName); + + return documentName; + } +} diff --git a/src/main/java/task_4/Hero.java b/src/main/java/task_4/Hero.java new file mode 100644 index 0000000..2569095 --- /dev/null +++ b/src/main/java/task_4/Hero.java @@ -0,0 +1,13 @@ +package task_4; + +public class Hero { + private final String name; + + public Hero(String name) { + this.name = name; + } + + public String getName() { + return name; + } +} diff --git a/src/main/java/task_4/Task4.java b/src/main/java/task_4/Task4.java new file mode 100644 index 0000000..9270f7c --- /dev/null +++ b/src/main/java/task_4/Task4.java @@ -0,0 +1,65 @@ +package task_4; + +import lombok.extern.slf4j.Slf4j; +import task_4.exceptions.SecurityBreachException; +import task_4.exceptions.UnauthorizedAccessAttemptException; + +@Slf4j +public class Task4 { + + public static void main(String[] args) { + + Hero hero1 = new Hero("Loki"); + Hero hero2 = new Hero("Grut"); + Hero heroNull = null; + + String doc = "Secret document"; + String nullDoc = null; + String blankDoc = " "; + + AvengersBase avengersBase = new AvengersBase(); + + try { + avengersBase.enterBase(heroNull); + } catch (IllegalArgumentException e) { + log.error(e.getMessage() + " during invoke enterBase()"); + } + + try { + avengersBase.enterBase(hero1); + } catch (SecurityBreachException e) { + log.error(e.getMessage() + " during invoke enterBase()"); + } + + avengersBase.enterBase(hero2); + + + try { + avengersBase.getSecretDocuments(heroNull, doc); + } catch (IllegalArgumentException e) { + log.error(e.getMessage() + " during invoke getSecretDocuments()"); + } + + try { + avengersBase.getSecretDocuments(hero1, nullDoc); + } catch (IllegalArgumentException e) { + log.error(e.getMessage() + " during invoke getSecretDocuments()"); + } + + try { + avengersBase.getSecretDocuments(hero1, blankDoc); + } catch (IllegalArgumentException e) { + log.error(e.getMessage() + " during invoke getSecretDocuments()"); + } + + try { + avengersBase.getSecretDocuments(hero1, doc); + } catch (UnauthorizedAccessAttemptException e) { + log.error(e.getMessage() + " during invoke getSecretDocuments()"); + } + + avengersBase.getSecretDocuments(hero2, doc); + + } + +} diff --git a/src/main/java/task_4/exceptions/SecurityBreachException.java b/src/main/java/task_4/exceptions/SecurityBreachException.java new file mode 100644 index 0000000..fcfca53 --- /dev/null +++ b/src/main/java/task_4/exceptions/SecurityBreachException.java @@ -0,0 +1,9 @@ +package task_4.exceptions; + +public class SecurityBreachException extends RuntimeException { + + public SecurityBreachException(String message) { + super(message); + } + +} diff --git a/src/main/java/task_4/exceptions/UnauthorizedAccessAttemptException.java b/src/main/java/task_4/exceptions/UnauthorizedAccessAttemptException.java new file mode 100644 index 0000000..2df05ee --- /dev/null +++ b/src/main/java/task_4/exceptions/UnauthorizedAccessAttemptException.java @@ -0,0 +1,9 @@ +package task_4.exceptions; + +public class UnauthorizedAccessAttemptException extends RuntimeException { + + public UnauthorizedAccessAttemptException(String message) { + super(message); + } + +}