-
Notifications
You must be signed in to change notification settings - Fork 54.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #3 from eugenp/master
Syncing from original
- Loading branch information
Showing
184 changed files
with
5,709 additions
and
376 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,131 @@ | ||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||
<modelVersion>4.0.0</modelVersion> | ||
<groupId>com.baeldung</groupId> | ||
<artifactId>aspectj</artifactId> | ||
<version>0.0.1-SNAPSHOT</version> | ||
<name>aspectj</name> | ||
|
||
<dependencies> | ||
<dependency> | ||
<groupId>org.aspectj</groupId> | ||
<artifactId>aspectjrt</artifactId> | ||
<version>${aspectj.version}</version> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>org.aspectj</groupId> | ||
<artifactId>aspectjweaver</artifactId> | ||
<version>${aspectj.version}</version> | ||
</dependency> | ||
|
||
<!-- utils --> | ||
<dependency> | ||
<groupId>org.slf4j</groupId> | ||
<artifactId>slf4j-api</artifactId> | ||
<version>${org.slf4j.version}</version> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>ch.qos.logback</groupId> | ||
<artifactId>logback-classic</artifactId> | ||
<version>${logback.version}</version> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>ch.qos.logback</groupId> | ||
<artifactId>logback-core</artifactId> | ||
<version>${logback.version}</version> | ||
</dependency> | ||
|
||
<!-- unit test --> | ||
<dependency> | ||
<groupId>junit</groupId> | ||
<artifactId>junit</artifactId> | ||
<version>${junit.version}</version> | ||
</dependency> | ||
|
||
</dependencies> | ||
|
||
<build> | ||
<finalName>aspectj</finalName> | ||
<resources> | ||
<resource> | ||
<directory>src/main/resources</directory> | ||
<filtering>true</filtering> | ||
</resource> | ||
</resources> | ||
|
||
<plugins> | ||
<plugin> | ||
<groupId>org.apache.maven.plugins</groupId> | ||
<artifactId>maven-compiler-plugin</artifactId> | ||
<version>${maven-compiler-plugin.version}</version> | ||
<configuration> | ||
<source>${source.version}</source> | ||
<target>${source.version}</target> | ||
</configuration> | ||
|
||
</plugin> | ||
|
||
<plugin> | ||
<groupId>org.codehaus.mojo</groupId> | ||
<artifactId>aspectj-maven-plugin</artifactId> | ||
<version>1.7</version> | ||
<configuration> | ||
<complianceLevel>${source.version}</complianceLevel> | ||
<source>${source.version}</source> | ||
<target>${source.version}</target> | ||
<showWeaveInfo>true</showWeaveInfo> | ||
<verbose>true</verbose> | ||
<Xlint>ignore</Xlint> | ||
<encoding>${project.build.sourceEncoding}</encoding> | ||
<!-- Post-compile weaving --> | ||
<!-- | ||
<weaveDependencies> | ||
<weaveDependency> | ||
<groupId>org.agroup</groupId> | ||
<artifactId>to-weave</artifactId> | ||
</weaveDependency> | ||
<weaveDependency> | ||
<groupId>org.anothergroup</groupId> | ||
<artifactId>gen</artifactId> | ||
</weaveDependency> | ||
</weaveDependencies> | ||
--> | ||
</configuration> | ||
<executions> | ||
<execution> | ||
<goals> | ||
<goal>compile</goal> | ||
<goal>test-compile</goal> | ||
</goals> | ||
</execution> | ||
</executions> | ||
</plugin> | ||
|
||
<!-- <plugin> | ||
<groupId>org.apache.maven.plugins</groupId> | ||
<artifactId>maven-surefire-plugin</artifactId> | ||
<version>2.10</version> | ||
<configuration> | ||
<argLine>-javaagent:"${settings.localRepository}"/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar</argLine> | ||
<useSystemClassLoader>true</useSystemClassLoader> | ||
<forkMode>always</forkMode> | ||
</configuration> | ||
</plugin> --> | ||
</plugins> | ||
</build> | ||
|
||
<properties> | ||
<source.version>1.8</source.version> | ||
<aspectj.version>1.6.11</aspectj.version> | ||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | ||
<aspectj.version>1.8.9</aspectj.version> | ||
<org.slf4j.version>1.7.21</org.slf4j.version> | ||
<logback.version>1.1.7</logback.version> | ||
<maven-compiler-plugin.version>3.5.1</maven-compiler-plugin.version> | ||
<junit.version>4.12</junit.version> | ||
</properties> | ||
|
||
</project> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
package com.baeldung.aspectj; | ||
|
||
public class Account { | ||
int balance = 20; | ||
|
||
public boolean withdraw(int amount) { | ||
if (balance - amount > 0) { | ||
balance = balance - amount; | ||
return true; | ||
} else | ||
return false; | ||
} | ||
} |
30 changes: 30 additions & 0 deletions
30
aspectj/src/main/java/com/baeldung/aspectj/AccountAspect.aj
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
package com.baeldung.aspectj; | ||
|
||
import org.slf4j.Logger; | ||
import org.slf4j.LoggerFactory; | ||
|
||
public aspect AccountAspect { | ||
private static final Logger logger = LoggerFactory.getLogger(AccountAspect.class); | ||
final int MIN_BALANCE = 10; | ||
|
||
pointcut callWithDraw(int amount, Account account): | ||
call(boolean Account.withdraw(int)) && args(amount) && target(account); | ||
|
||
before(int amount, Account account) : callWithDraw(amount, account) { | ||
logger.info(" Balance before withdrawal: {}", account.balance); | ||
logger.info(" Withdraw ammout: {}", amount); | ||
} | ||
|
||
boolean around(int amount, Account account) : callWithDraw(amount, account) { | ||
if (account.balance - amount >= MIN_BALANCE) | ||
return proceed(amount, account); | ||
else { | ||
logger.info("Withdrawal Rejected!"); | ||
return false; | ||
} | ||
} | ||
|
||
after(int amount, Account balance) : callWithDraw(amount, balance) { | ||
logger.info("Balance after withdrawal : {}", balance.balance); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
package com.baeldung.aspectj; | ||
|
||
import java.lang.annotation.ElementType; | ||
import java.lang.annotation.Retention; | ||
import java.lang.annotation.RetentionPolicy; | ||
import java.lang.annotation.Target; | ||
|
||
@Retention(RetentionPolicy.RUNTIME) | ||
@Target(ElementType.METHOD) | ||
public @interface Secured { | ||
public boolean isLocked() default false; | ||
} |
23 changes: 23 additions & 0 deletions
23
aspectj/src/main/java/com/baeldung/aspectj/SecuredMethod.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
package com.baeldung.aspectj; | ||
|
||
import org.slf4j.Logger; | ||
import org.slf4j.LoggerFactory; | ||
|
||
public class SecuredMethod { | ||
private static final Logger logger = LoggerFactory.getLogger(SecuredMethod.class); | ||
|
||
@Secured(isLocked = true) | ||
public void lockedMethod() throws Exception { | ||
logger.info("lockedMethod"); | ||
} | ||
|
||
@Secured(isLocked = false) | ||
public void unlockedMethod() { | ||
logger.info("unlockedMethod"); | ||
} | ||
|
||
public static void main(String[] args) throws Exception { | ||
SecuredMethod sv = new SecuredMethod(); | ||
sv.lockedMethod(); | ||
} | ||
} |
27 changes: 27 additions & 0 deletions
27
aspectj/src/main/java/com/baeldung/aspectj/SecuredMethodAspect.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
package com.baeldung.aspectj; | ||
|
||
import org.aspectj.lang.ProceedingJoinPoint; | ||
import org.aspectj.lang.annotation.Around; | ||
import org.aspectj.lang.annotation.Aspect; | ||
import org.aspectj.lang.annotation.Pointcut; | ||
import org.slf4j.Logger; | ||
import org.slf4j.LoggerFactory; | ||
|
||
@Aspect | ||
public class SecuredMethodAspect { | ||
private static final Logger logger = LoggerFactory.getLogger(SecuredMethodAspect.class); | ||
|
||
@Pointcut("@annotation(secured)") | ||
public void callAt(Secured secured) { | ||
} | ||
|
||
@Around("callAt(secured)") | ||
public Object around(ProceedingJoinPoint pjp, Secured secured) throws Throwable { | ||
if (secured.isLocked()) { | ||
logger.info(pjp.getSignature().toLongString() + " is locked"); | ||
return null; | ||
} else { | ||
return pjp.proceed(); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
<aspectj> | ||
<aspects> | ||
<aspect name="com.baeldung.aspectj.SecuredMethodAspect"/> | ||
<weaver options="-verbose -showWeaveInfo"> | ||
<include within="com.baeldung.aspectj.*"/> | ||
</weaver> | ||
</aspects> | ||
</aspectj> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<configuration> | ||
|
||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> | ||
<layout class="ch.qos.logback.classic.PatternLayout"> | ||
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg %n</pattern> | ||
</layout> | ||
</appender> | ||
|
||
<logger name="com.baeldung.hazelcast" level="INFO" additivity="false"> | ||
<appender-ref ref="STDOUT" /> | ||
</logger> | ||
|
||
<root level="DEBUG"> | ||
<appender-ref ref="STDOUT" /> | ||
</root> | ||
|
||
</configuration> |
27 changes: 27 additions & 0 deletions
27
aspectj/src/test/java/com/baeldung/aspectj/test/AccountTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
package com.baeldung.aspectj.test; | ||
|
||
import static org.junit.Assert.*; | ||
|
||
import org.junit.Before; | ||
import org.junit.Test; | ||
|
||
import com.baeldung.aspectj.Account; | ||
|
||
public class AccountTest { | ||
private Account account; | ||
|
||
@Before | ||
public void before() { | ||
account = new Account(); | ||
} | ||
|
||
@Test | ||
public void givenBalance20AndMinBalance10_whenWithdraw5_thenSuccess() { | ||
assertTrue(account.withdraw(5)); | ||
} | ||
|
||
@Test | ||
public void givenBalance20AndMinBalance10_whenWithdraw100_thenFail() { | ||
assertFalse(account.withdraw(100)); | ||
} | ||
} |
14 changes: 14 additions & 0 deletions
14
aspectj/src/test/java/com/baeldung/aspectj/test/SecuredMethodTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
package com.baeldung.aspectj.test; | ||
|
||
import org.junit.Test; | ||
|
||
import com.baeldung.aspectj.SecuredMethod; | ||
|
||
public class SecuredMethodTest { | ||
@Test | ||
public void testMethod() throws Exception { | ||
SecuredMethod service = new SecuredMethod(); | ||
service.unlockedMethod(); | ||
service.lockedMethod(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.