From 59102027815bc5305c53ced6c778e4c09498d344 Mon Sep 17 00:00:00 2001 From: Sallo Szrajbman Date: Sat, 19 Dec 2020 12:58:00 +0000 Subject: [PATCH] BAEL-4071 - Get advised method info in Spring AOP Fixing identation --- .../com/baeldung/method/info/Account.java | 39 ++++++------- .../method/info/AccountOperation.java | 2 +- .../method/info/BankAccountAspect.java | 54 +++++++++--------- .../method/info/BankAccountService.java | 29 +++++----- .../method/info/WithdrawLimitException.java | 8 +-- .../BankAccountServiceIntegrationTest.java | 57 ++++++++++--------- 6 files changed, 94 insertions(+), 95 deletions(-) diff --git a/spring-aop/src/main/java/com/baeldung/method/info/Account.java b/spring-aop/src/main/java/com/baeldung/method/info/Account.java index 1c946501fd..646e403f1e 100644 --- a/spring-aop/src/main/java/com/baeldung/method/info/Account.java +++ b/spring-aop/src/main/java/com/baeldung/method/info/Account.java @@ -2,30 +2,27 @@ package com.baeldung.method.info; public class Account { - private String accountNumber; - private double balance; + private String accountNumber; + private double balance; - public String getAccountNumber() { - return accountNumber; - } + public String getAccountNumber() { + return accountNumber; + } - public void setAccountNumber(String accountNumber) { - this.accountNumber = accountNumber; - } + public void setAccountNumber(String accountNumber) { + this.accountNumber = accountNumber; + } - public double getBalance() { - return balance; - } + public double getBalance() { + return balance; + } - public void setBalance(double balance) { - this.balance = balance; - } + public void setBalance(double balance) { + this.balance = balance; + } - @Override - public String toString() { - return "Account{" + - "accountNumber='" + accountNumber + '\'' + - ", balance=" + balance + - '}'; - } + @Override + public String toString() { + return "Account{" + "accountNumber='" + accountNumber + '\'' + ", balance=" + balance + '}'; + } } diff --git a/spring-aop/src/main/java/com/baeldung/method/info/AccountOperation.java b/spring-aop/src/main/java/com/baeldung/method/info/AccountOperation.java index db725a724f..74bc60a6db 100644 --- a/spring-aop/src/main/java/com/baeldung/method/info/AccountOperation.java +++ b/spring-aop/src/main/java/com/baeldung/method/info/AccountOperation.java @@ -8,5 +8,5 @@ import java.lang.annotation.Target; @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface AccountOperation { - String operation(); + String operation(); } diff --git a/spring-aop/src/main/java/com/baeldung/method/info/BankAccountAspect.java b/spring-aop/src/main/java/com/baeldung/method/info/BankAccountAspect.java index 6c8ef9d8d6..f743758cd7 100644 --- a/spring-aop/src/main/java/com/baeldung/method/info/BankAccountAspect.java +++ b/spring-aop/src/main/java/com/baeldung/method/info/BankAccountAspect.java @@ -14,40 +14,42 @@ import java.util.Arrays; @Component public class BankAccountAspect { - @Before(value="@annotation(com.baeldung.method.info.AccountOperation)") - public void getAccountOperationInfo(JoinPoint joinPoint) { + @Before(value = "@annotation(com.baeldung.method.info.AccountOperation)") + public void getAccountOperationInfo(JoinPoint joinPoint) { - //Method Information - MethodSignature signature = (MethodSignature) joinPoint.getSignature(); + // Method Information + MethodSignature signature = (MethodSignature) joinPoint.getSignature(); - System.out.println("full method description: " + signature.getMethod()); + System.out.println("full method description: " + signature.getMethod()); - System.out.println("method name: " + signature.getMethod().getName()); + System.out.println("method name: " + signature.getMethod().getName()); - System.out.println("declaring type: " + signature.getDeclaringType()); + System.out.println("declaring type: " + signature.getDeclaringType()); - //Method args - System.out.println("Method args names:"); - Arrays.stream(signature.getParameterNames()).forEach(s -> System.out.println("arg name: " + s)); + // Method args + System.out.println("Method args names:"); + Arrays.stream(signature.getParameterNames()) + .forEach(s -> System.out.println("arg name: " + s)); - System.out.println("Method args types:"); - Arrays.stream(signature.getParameterTypes()).forEach(s -> System.out.println("arg type: " + s)); + System.out.println("Method args types:"); + Arrays.stream(signature.getParameterTypes()) + .forEach(s -> System.out.println("arg type: " + s)); - System.out.println("Method args values:"); - Arrays.stream(joinPoint.getArgs()).forEach(o -> System.out.println("arg value: " + o.toString())); + System.out.println("Method args values:"); + Arrays.stream(joinPoint.getArgs()) + .forEach(o -> System.out.println("arg value: " + o.toString())); - //Additional Information - System.out.println("returning type: " + signature.getReturnType()); - System.out.println("method modifier: " + Modifier.toString(signature.getModifiers())); - Arrays.stream(signature.getExceptionTypes()) - .forEach(aClass -> System.out.println("exception type: " + aClass)); + // Additional Information + System.out.println("returning type: " + signature.getReturnType()); + System.out.println("method modifier: " + Modifier.toString(signature.getModifiers())); + Arrays.stream(signature.getExceptionTypes()) + .forEach(aClass -> System.out.println("exception type: " + aClass)); - //Method annotation - Method method = signature.getMethod(); - AccountOperation accountOperation = method.getAnnotation(AccountOperation.class); - System.out.println("Account operation annotation: " + accountOperation); - System.out.println("Account operation value: " + accountOperation.operation()); + // Method annotation + Method method = signature.getMethod(); + AccountOperation accountOperation = method.getAnnotation(AccountOperation.class); + System.out.println("Account operation annotation: " + accountOperation); + System.out.println("Account operation value: " + accountOperation.operation()); - } + } } - diff --git a/spring-aop/src/main/java/com/baeldung/method/info/BankAccountService.java b/spring-aop/src/main/java/com/baeldung/method/info/BankAccountService.java index 4c7d0e3cac..6ebab37d9e 100644 --- a/spring-aop/src/main/java/com/baeldung/method/info/BankAccountService.java +++ b/spring-aop/src/main/java/com/baeldung/method/info/BankAccountService.java @@ -6,25 +6,24 @@ import org.springframework.stereotype.Component; @Component public class BankAccountService { - @AccountOperation(operation = "deposit") - public void deposit(Account account, Double amount) { - account.setBalance(account.getBalance() + amount); - } - - @AccountOperation(operation = "withdraw") - public void withdraw(Account account, Double amount) throws WithdrawLimitException { - - if(amount > 500.0) { - throw new WithdrawLimitException("Withdraw limit exceeded."); + @AccountOperation(operation = "deposit") + public void deposit(Account account, Double amount) { + account.setBalance(account.getBalance() + amount); } - account.setBalance(account.getBalance() - amount); + @AccountOperation(operation = "withdraw") + public void withdraw(Account account, Double amount) throws WithdrawLimitException { - } + if (amount > 500.0) { + throw new WithdrawLimitException("Withdraw limit exceeded."); + } - public double getBalance() { - return RandomUtils.nextDouble(); - } + account.setBalance(account.getBalance() - amount); + } + + public double getBalance() { + return RandomUtils.nextDouble(); + } } diff --git a/spring-aop/src/main/java/com/baeldung/method/info/WithdrawLimitException.java b/spring-aop/src/main/java/com/baeldung/method/info/WithdrawLimitException.java index 85b0b4acfb..b29a27c94f 100644 --- a/spring-aop/src/main/java/com/baeldung/method/info/WithdrawLimitException.java +++ b/spring-aop/src/main/java/com/baeldung/method/info/WithdrawLimitException.java @@ -1,7 +1,7 @@ package com.baeldung.method.info; -public class WithdrawLimitException extends RuntimeException { - public WithdrawLimitException(String message) { - super(message); - } +public class WithdrawLimitException extends RuntimeException { + public WithdrawLimitException(String message) { + super(message); + } } diff --git a/spring-aop/src/test/java/com/baeldung/method/info/BankAccountServiceIntegrationTest.java b/spring-aop/src/test/java/com/baeldung/method/info/BankAccountServiceIntegrationTest.java index 9e0ebfa903..b1ba97654e 100644 --- a/spring-aop/src/test/java/com/baeldung/method/info/BankAccountServiceIntegrationTest.java +++ b/spring-aop/src/test/java/com/baeldung/method/info/BankAccountServiceIntegrationTest.java @@ -11,38 +11,39 @@ import static org.junit.jupiter.api.Assertions.assertTrue; @SpringBootTest class BankAccountServiceIntegrationTest { - private Account account; + private Account account; - @BeforeEach - public void setup() { - account = new Account(); - account.setAccountNumber("12345"); - account.setBalance(2000.0); - } + @BeforeEach + public void setup() { + account = new Account(); + account.setAccountNumber("12345"); + account.setBalance(2000.0); + } - @Autowired - BankAccountService bankAccountService; + @Autowired + BankAccountService bankAccountService; - @Test - void withdraw() { - bankAccountService.withdraw(account, 500.0); - assertTrue(account.getBalance() == 1500.0); - } + @Test + void withdraw() { + bankAccountService.withdraw(account, 500.0); + assertTrue(account.getBalance() == 1500.0); + } - @Test - void withdrawWhenLimitReached() { - Assertions.assertThatExceptionOfType(WithdrawLimitException.class).isThrownBy(() -> bankAccountService.withdraw(account, 600.0)); - assertTrue(account.getBalance() == 2000.0); - } + @Test + void withdrawWhenLimitReached() { + Assertions.assertThatExceptionOfType(WithdrawLimitException.class) + .isThrownBy(() -> bankAccountService.withdraw(account, 600.0)); + assertTrue(account.getBalance() == 2000.0); + } - @Test - void deposit() { - bankAccountService.deposit(account, 500.0); - assertTrue(account.getBalance() == 2500.0); - } + @Test + void deposit() { + bankAccountService.deposit(account, 500.0); + assertTrue(account.getBalance() == 2500.0); + } - @Test - void getBalance() { - bankAccountService.getBalance(); - } + @Test + void getBalance() { + bankAccountService.getBalance(); + } }