Skip to content

Commit

Permalink
Removed dependency to bean validation from message types
Browse files Browse the repository at this point in the history
  • Loading branch information
JohT committed Dec 29, 2021
1 parent cf335a3 commit 96462fd
Show file tree
Hide file tree
Showing 6 changed files with 133 additions and 14 deletions.
10 changes: 10 additions & 0 deletions showcase-quarkus-eventsourcing/reflection-config.json
Original file line number Diff line number Diff line change
Expand Up @@ -540,5 +540,15 @@
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
"name":"io.github.joht.showcase.quarkuseventsourcing.message.command.account.ChangeNicknameCommand",
"allDeclaredFields":true,
"queryAllDeclaredMethods":true
},
{
"name":"io.github.joht.showcase.quarkuseventsourcing.message.command.account.CreateAccountCommand",
"allDeclaredFields":true,
"queryAllDeclaredMethods":true
}
]
Original file line number Diff line number Diff line change
@@ -1,25 +1,23 @@
package io.github.joht.showcase.quarkuseventsourcing.message.command.account;

import java.beans.ConstructorProperties;

import javax.validation.constraints.NotNull;
import java.util.Objects;
import java.util.function.Supplier;

import io.github.joht.showcase.quarkuseventsourcing.message.command.CommandTargetAggregateIdentifier;
import io.github.joht.showcase.quarkuseventsourcing.message.common.Nickname;

public class ChangeNicknameCommand {

@NotNull
@CommandTargetAggregateIdentifier
private final String accountId;

@NotNull
private final Nickname nickname;

@ConstructorProperties({ "accountId", "nickname" })
public ChangeNicknameCommand(String accountId, Nickname nickname) {
this.accountId = accountId;
this.nickname = nickname;
this.accountId = requireNonNull(accountId, () -> "accountId missing");;
this.nickname = requireNonNull(nickname, () -> "nickname missing");;
}

public String getAccountId() {
Expand All @@ -34,4 +32,25 @@ public Nickname getNickname() {
public String toString() {
return "ChangeNicknameCommand [accountId=" + accountId + ", nickname=" + nickname + "]";
}

@Override
public int hashCode() {
return Objects.hash(accountId, nickname);
}

@Override
public boolean equals(Object obj) {
if ((obj == null) || (getClass() != obj.getClass())) {
return false;
}
ChangeNicknameCommand other = (ChangeNicknameCommand) obj;
return Objects.equals(accountId, other.accountId) && Objects.equals(nickname, other.nickname);
}

private static <T> T requireNonNull(T obj, Supplier<String> messageSupplier) {
if (obj == null) {
throw new IllegalArgumentException(messageSupplier.get());
}
return obj;
}
}
Original file line number Diff line number Diff line change
@@ -1,20 +1,19 @@
package io.github.joht.showcase.quarkuseventsourcing.message.command.account;

import java.beans.ConstructorProperties;

import javax.validation.constraints.NotNull;
import java.util.Objects;
import java.util.function.Supplier;

import io.github.joht.showcase.quarkuseventsourcing.message.command.CommandTargetAggregateIdentifier;

public class CreateAccountCommand {

@NotNull
@CommandTargetAggregateIdentifier
private final String accountId;

@ConstructorProperties({ "accountId" })
public CreateAccountCommand(String accountId) {
this.accountId = accountId;
this.accountId = requireNonNull(accountId, () -> "accountId missing");
}

public String getAccountId() {
Expand All @@ -25,4 +24,25 @@ public String getAccountId() {
public String toString() {
return "CreateAccountCommand [accountId=" + accountId + "]";
}

@Override
public int hashCode() {
return Objects.hash(accountId);
}

@Override
public boolean equals(Object obj) {
if ((obj == null) || (getClass() != obj.getClass())) {
return false;
}
CreateAccountCommand other = (CreateAccountCommand) obj;
return Objects.equals(accountId, other.accountId);
}

private static <T> T requireNonNull(T obj, Supplier<String> messageSupplier) {
if (obj == null) {
throw new IllegalArgumentException(messageSupplier.get());
}
return obj;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -74,10 +74,10 @@ void boundaryShouldNotUseAxonDirectly() {
}

@Test
@DisplayName("messages should not depend on javax")
void messagesShouldNotDependOnJavax() {
classes().that().resideInAPackage("..messages..")
.should().onlyDependOnClassesThat().resideOutsideOfPackage("..javax..")
@DisplayName("message types should only depend on java and classes of the package they belong to")
void messageTypesShouldOnlyDependOnJava() {
classes().that().resideInAPackage("..message..")
.should().onlyDependOnClassesThat().resideInAnyPackage("java..", "..message..")
.check(classes);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package io.github.joht.showcase.quarkuseventsourcing.message.command.account;

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

import org.junit.jupiter.api.Test;

import io.github.joht.showcase.quarkuseventsourcing.message.common.Nickname;

class ChangeNicknameCommandTest {

private static final Nickname NICKNAME = Nickname.of("Nick");

private ChangeNicknameCommand commandUnderTest;

@Test
void containsAccountId() {
String expectedValue = "1234";
commandUnderTest = createChangeNicknameCommand(expectedValue, NICKNAME);
assertEquals(expectedValue, commandUnderTest.getAccountId());
}

@Test
void containsNickname() {
Nickname expectedValue = NICKNAME;
commandUnderTest = createChangeNicknameCommand("", expectedValue);
assertEquals(expectedValue, commandUnderTest.getNickname());
}

@Test
void failsOnMissingAccountId() {
RuntimeException exception = assertThrows(RuntimeException.class,
() -> createChangeNicknameCommand(null, NICKNAME));
assertEquals("accountId missing", exception.getMessage());
}

@Test
void failsOnMissingNickname() {
RuntimeException exception = assertThrows(RuntimeException.class,
() -> createChangeNicknameCommand("", null));
assertEquals("nickname missing", exception.getMessage());
}

private ChangeNicknameCommand createChangeNicknameCommand(String accountId, Nickname nickname) {
return new ChangeNicknameCommand(accountId, nickname);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package io.github.joht.showcase.quarkuseventsourcing.message.command.account;

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

import org.junit.jupiter.api.Test;

class CreateAccountCommandTest {

private CreateAccountCommand commandUnderTest;

@Test
void containsAccountId() {
String expectedValue = "12345";
commandUnderTest = new CreateAccountCommand(expectedValue);
assertEquals(expectedValue, commandUnderTest.getAccountId());
}

@Test
void failsOnMissingAccountId() {
RuntimeException exception = assertThrows(RuntimeException.class,
() -> new CreateAccountCommand(null));
assertEquals("accountId missing", exception.getMessage());
}
}

0 comments on commit 96462fd

Please sign in to comment.