diff --git a/lombok-modules/lombok-2/src/main/java/com/baeldung/lombok/accessors/model/BasicAccount.java b/lombok-modules/lombok-2/src/main/java/com/baeldung/lombok/accessors/model/BasicAccount.java deleted file mode 100644 index a9332735c7..0000000000 --- a/lombok-modules/lombok-2/src/main/java/com/baeldung/lombok/accessors/model/BasicAccount.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.baeldung.lombok.accessors.model; - -import java.math.BigDecimal; - -public class BasicAccount { - private String name; - private BigDecimal balance; - - public BigDecimal getBalance() { - return this.balance; - } - - public void setBalance(BigDecimal newBalance) { - this.balance = newBalance; - } - - public String getName() { - return this.name; - } - - public void setName(String accountName) { - this.name = accountName; - } -} diff --git a/lombok-modules/lombok-2/src/main/java/com/baeldung/lombok/accessors/model/FinalAccount.java b/lombok-modules/lombok-2/src/main/java/com/baeldung/lombok/accessors/model/FinalAccount.java new file mode 100644 index 0000000000..72e712d246 --- /dev/null +++ b/lombok-modules/lombok-2/src/main/java/com/baeldung/lombok/accessors/model/FinalAccount.java @@ -0,0 +1,15 @@ +package com.baeldung.lombok.accessors.model; + +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; + +@Accessors(makeFinal = true) +@Getter +@Setter +public class FinalAccount { + private String name; + private BigDecimal balance; +} \ No newline at end of file diff --git a/lombok-modules/lombok-2/src/main/java/com/baeldung/lombok/accessors/model/FinalChainedFluentAccount.java b/lombok-modules/lombok-2/src/main/java/com/baeldung/lombok/accessors/model/FinalChainedFluentAccount.java new file mode 100644 index 0000000000..4951f370e7 --- /dev/null +++ b/lombok-modules/lombok-2/src/main/java/com/baeldung/lombok/accessors/model/FinalChainedFluentAccount.java @@ -0,0 +1,15 @@ +package com.baeldung.lombok.accessors.model; + +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; + +@Accessors(makeFinal = true, fluent = true, chain = true) +@Getter +@Setter +public class FinalChainedFluentAccount { + private String name; + private BigDecimal balance; +} \ No newline at end of file diff --git a/lombok-modules/lombok-2/src/test/java/com/baeldung/lombok/accessors/AccessorsUnitTest.java b/lombok-modules/lombok-2/src/test/java/com/baeldung/lombok/accessors/AccessorsUnitTest.java index 04f38bfc32..a1f54d6b4a 100644 --- a/lombok-modules/lombok-2/src/test/java/com/baeldung/lombok/accessors/AccessorsUnitTest.java +++ b/lombok-modules/lombok-2/src/test/java/com/baeldung/lombok/accessors/AccessorsUnitTest.java @@ -1,26 +1,36 @@ package com.baeldung.lombok.accessors; -import com.baeldung.lombok.accessors.model.*; +import com.baeldung.lombok.accessors.model.ChainedAccount; +import com.baeldung.lombok.accessors.model.ChainedFluentAccount; +import com.baeldung.lombok.accessors.model.FinalAccount; +import com.baeldung.lombok.accessors.model.FinalChainedFluentAccount; +import com.baeldung.lombok.accessors.model.FluentAccount; +import com.baeldung.lombok.accessors.model.PrefixedAccount; +import com.baeldung.lombok.accessors.model.PrefixedFluentAccount; +import com.baeldung.lombok.accessors.model.StandardAccount; import org.junit.Test; +import java.lang.reflect.Modifier; import java.math.BigDecimal; +import java.util.Arrays; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; public class AccessorsUnitTest { @Test - public void givenBasicAccount_thenUseBasicAccessors() { - BasicAccount account = new BasicAccount(); - account.setName("Basic Accessors"); + public void whenStandardAccount_thenHaveStandardAccessors() { + StandardAccount account = new StandardAccount(); + account.setName("Standard Accessors"); account.setBalance(BigDecimal.TEN); - assertEquals("Basic Accessors", account.getName()); + assertEquals("Standard Accessors", account.getName()); assertEquals(BigDecimal.TEN, account.getBalance()); } @Test - public void givenFluentAccount_thenUseFluentAccessors() { + public void whenFluentAccount_thenHaveFluentAccessors() { FluentAccount account = new FluentAccount(); account.name("Fluent Account"); account.balance(BigDecimal.TEN); @@ -30,7 +40,7 @@ public class AccessorsUnitTest { } @Test - public void givenChainedAccount_thenUseChainedAccessors() { + public void whenChainedAccount_thenHaveChainedAccessors() { ChainedAccount account = new ChainedAccount(); account.setName("Chained Account").setBalance(BigDecimal.TEN); @@ -39,7 +49,7 @@ public class AccessorsUnitTest { } @Test - public void givenChainedFluentAccount_thenUseChainedFluentAccessors() { + public void whenChainedFluentAccount_thenHaveChainedFluentAccessors() { ChainedFluentAccount account = new ChainedFluentAccount() .name("Fluent Account") .balance(BigDecimal.TEN); @@ -49,7 +59,7 @@ public class AccessorsUnitTest { } @Test - public void givenPrefixedAccount_thenRemovePrefixFromAccessors() { + public void whenPrefixedAccount_thenRemovePrefixFromAccessors() { PrefixedAccount account = new PrefixedAccount(); account.setName("Prefixed Fields"); account.setBalance(BigDecimal.TEN); @@ -61,7 +71,7 @@ public class AccessorsUnitTest { } @Test - public void givenPrefixedFluentAccount_thenRemovePrefixFromAccessors() { + public void whenPrefixedFluentAccount_thenRemovePrefixFromAccessors() { PrefixedFluentAccount account = new PrefixedFluentAccount(); account .name("Prefixed Fluent Fields") @@ -71,4 +81,38 @@ public class AccessorsUnitTest { assertEquals(BigDecimal.TEN, account.balance()); } -} + @Test + public void whenFinalAccount_thenHaveFinalAccessors() { + FinalAccount account = new FinalAccount(); + account.setName("Final Account"); + account.setBalance(BigDecimal.TEN); + + assertEquals("Final Account", account.getName()); + assertEquals(BigDecimal.TEN, account.getBalance()); + + //verify if all getters and setters are final methods + boolean getterSettersAreFinal = Arrays.stream(FinalAccount.class.getMethods()) + .filter(method -> method.getName().matches("^(get|set)(Name|Balance)$")) + .allMatch(method -> Modifier.isFinal(method.getModifiers())); + assertTrue(getterSettersAreFinal); + + } + + @Test + public void whenFinalChainedFluentAccount_thenHaveFinalAccessors() { + FinalChainedFluentAccount account = new FinalChainedFluentAccount(); + account + .name("Final Chained Fluent Account") + .balance(BigDecimal.TEN); + + assertEquals("Final Chained Fluent Account", account.name()); + assertEquals(BigDecimal.TEN, account.balance()); + + //verify if all getters and setters are final methods + boolean getterSettersAreFinal = Arrays.stream(FinalAccount.class.getMethods()) + .filter(method -> method.getName().matches("^(name|balance)$")) + .allMatch(method -> Modifier.isFinal(method.getModifiers())); + assertTrue(getterSettersAreFinal); + } + +} \ No newline at end of file