Merge remote-tracking branch 'origin/master'
This commit is contained in:
		
						commit
						16acd9a06e
					
				| @ -1,3 +0,0 @@ | |||||||
| ### Relevant Articles: |  | ||||||
| - [Intro to AspectJ](http://www.baeldung.com/aspectj) |  | ||||||
| - [Spring Performance Logging](http://www.baeldung.com/spring-performance-logging) |  | ||||||
							
								
								
									
										138
									
								
								aspectj/pom.xml
									
									
									
									
									
								
							
							
						
						
									
										138
									
								
								aspectj/pom.xml
									
									
									
									
									
								
							| @ -1,138 +0,0 @@ | |||||||
| <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> |  | ||||||
| 
 |  | ||||||
|         <dependency> |  | ||||||
|             <groupId>org.springframework</groupId> |  | ||||||
|             <artifactId>spring-context</artifactId> |  | ||||||
|             <version>4.3.4.RELEASE</version> |  | ||||||
|         </dependency> |  | ||||||
|         <dependency> |  | ||||||
|             <groupId>org.springframework</groupId> |  | ||||||
|             <artifactId>spring-beans</artifactId> |  | ||||||
|             <version>4.3.4.RELEASE</version> |  | ||||||
|         </dependency> |  | ||||||
|         <dependency> |  | ||||||
|             <groupId>org.springframework</groupId> |  | ||||||
|             <artifactId>spring-core</artifactId> |  | ||||||
|             <version>4.3.4.RELEASE</version>          |  | ||||||
|         </dependency> |  | ||||||
|         <dependency> |  | ||||||
|             <groupId>cglib</groupId> |  | ||||||
|             <artifactId>cglib</artifactId> |  | ||||||
|             <version>3.2.4</version> |  | ||||||
|         </dependency> |  | ||||||
|         <dependency> |  | ||||||
|             <groupId>org.springframework</groupId> |  | ||||||
|             <artifactId>spring-aop</artifactId> |  | ||||||
|             <version>4.3.4.RELEASE</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> |  | ||||||
|         <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.6.0</maven-compiler-plugin.version> |  | ||||||
|         <junit.version>4.12</junit.version> |  | ||||||
|     </properties> |  | ||||||
| 
 |  | ||||||
| </project> |  | ||||||
| @ -1,3 +0,0 @@ | |||||||
| ### Relevant Articles: |  | ||||||
| - [AssertJ’s Java 8 Features](http://www.baeldung.com/assertJ-java-8-features) |  | ||||||
| - [AssertJ for Guava](http://www.baeldung.com/assertJ-for-guava) |  | ||||||
| @ -1,61 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8"?> |  | ||||||
| <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>assertj</artifactId> |  | ||||||
|     <version>1.0.0-SNAPSHOT</version> |  | ||||||
| 
 |  | ||||||
|     <dependencies> |  | ||||||
| 
 |  | ||||||
|         <dependency> |  | ||||||
|             <groupId>com.google.guava</groupId> |  | ||||||
|             <artifactId>guava</artifactId> |  | ||||||
|             <version>${guava.version}</version> |  | ||||||
|         </dependency> |  | ||||||
|         <dependency> |  | ||||||
|             <groupId>org.assertj</groupId> |  | ||||||
|             <artifactId>assertj-guava</artifactId> |  | ||||||
|             <version>3.0.0</version> |  | ||||||
|         </dependency> |  | ||||||
| 
 |  | ||||||
|         <dependency> |  | ||||||
|             <groupId>junit</groupId> |  | ||||||
|             <artifactId>junit</artifactId> |  | ||||||
|             <version>${junit.version}</version> |  | ||||||
|             <scope>test</scope> |  | ||||||
|         </dependency> |  | ||||||
|         <dependency> |  | ||||||
|             <groupId>org.assertj</groupId> |  | ||||||
|             <artifactId>assertj-core</artifactId> |  | ||||||
|             <version>${assertj-core.version}</version> |  | ||||||
|             <scope>test</scope> |  | ||||||
|         </dependency> |  | ||||||
| 
 |  | ||||||
|     </dependencies> |  | ||||||
| 
 |  | ||||||
|     <build> |  | ||||||
|         <plugins> |  | ||||||
|             <plugin> |  | ||||||
|                 <groupId>org.apache.maven.plugins</groupId> |  | ||||||
|                 <artifactId>maven-compiler-plugin</artifactId> |  | ||||||
|                 <version>${maven-compiler-plugin.version}</version> |  | ||||||
|                 <configuration> |  | ||||||
|                     <source>1.8</source> |  | ||||||
|                     <target>1.8</target> |  | ||||||
|                 </configuration> |  | ||||||
|             </plugin> |  | ||||||
|         </plugins> |  | ||||||
|     </build> |  | ||||||
| 
 |  | ||||||
|     <properties> |  | ||||||
|         <guava.version>19.0</guava.version> |  | ||||||
|         <assertj-guava.version>3.1.0</assertj-guava.version> |  | ||||||
|         <junit.version>4.12</junit.version> |  | ||||||
|         <assertj-core.version>3.6.1</assertj-core.version> |  | ||||||
| 
 |  | ||||||
|         <maven-compiler-plugin.version>3.6.0</maven-compiler-plugin.version> |  | ||||||
|     </properties> |  | ||||||
| 
 |  | ||||||
| </project> |  | ||||||
| @ -1,33 +1,55 @@ | |||||||
| package com.baeldung.jdo; | package com.baeldung.jdo; | ||||||
| 
 | 
 | ||||||
|  | import java.util.Collection; | ||||||
| import java.util.Iterator; | import java.util.Iterator; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.Random; | import java.util.Random; | ||||||
| import java.util.logging.Level; | import java.util.logging.Level; | ||||||
| import java.util.logging.Logger; | import java.util.logging.Logger; | ||||||
| 
 | 
 | ||||||
| import javax.jdo.JDOHelper; |  | ||||||
| import javax.jdo.PersistenceManager; | import javax.jdo.PersistenceManager; | ||||||
| import javax.jdo.PersistenceManagerFactory; | import javax.jdo.PersistenceManagerFactory; | ||||||
| import javax.jdo.Query; | import javax.jdo.Query; | ||||||
| import javax.jdo.Transaction; | import javax.jdo.Transaction; | ||||||
| 
 | 
 | ||||||
|  | import org.datanucleus.api.jdo.JDOPersistenceManagerFactory; | ||||||
|  | import org.datanucleus.metadata.PersistenceUnitMetaData; | ||||||
|  | 
 | ||||||
| public class GuideToJDO { | public class GuideToJDO { | ||||||
| 
 | 
 | ||||||
|     private static final Logger LOGGER = Logger.getLogger(GuideToJDO.class.getName()); |     private static final Logger LOGGER = Logger.getLogger(GuideToJDO.class.getName()); | ||||||
|     private Random rnd = new Random(); |     private Random rnd = new Random(); | ||||||
|  |     private PersistenceUnitMetaData pumd; | ||||||
| 
 | 
 | ||||||
|     public static void main(String[] args) { |     public static void main(String[] args) { | ||||||
|         new GuideToJDO(); |         new GuideToJDO(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public GuideToJDO() { |     public GuideToJDO() { | ||||||
|  |         CreateProperties(); | ||||||
|         CreateProducts(); |         CreateProducts(); | ||||||
|         ListProducts(); |         ListProducts(); | ||||||
|  |         UpdateProducts(); | ||||||
|  |         ListProducts(); | ||||||
|  |         DeleteProducts(); | ||||||
|  |         ListProducts(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     public void CreateProperties(){ | ||||||
|  |          | ||||||
|  |         pumd = new PersistenceUnitMetaData("dynamic-unit", "RESOURCE_LOCAL", null); | ||||||
|  |         pumd.addClassName("com.baeldung.jdo.Product"); | ||||||
|  |         pumd.setExcludeUnlistedClasses(); | ||||||
|  |         pumd.addProperty("javax.jdo.option.ConnectionDriverName", "org.h2.Driver"); | ||||||
|  |         pumd.addProperty("javax.jdo.option.ConnectionURL", "jdbc:h2:mem:mypersistence"); | ||||||
|  |         pumd.addProperty("javax.jdo.option.ConnectionUserName", "sa"); | ||||||
|  |         pumd.addProperty("javax.jdo.option.ConnectionPassword", ""); | ||||||
|  |         pumd.addProperty("datanucleus.autoCreateSchema", "true");         | ||||||
|  |          | ||||||
|  |     } | ||||||
|  |      | ||||||
|     public void CreateProducts() { |     public void CreateProducts() { | ||||||
|         PersistenceManagerFactory pmf = JDOHelper.getPersistenceManagerFactory("Tutorial"); |         PersistenceManagerFactory pmf = new JDOPersistenceManagerFactory(pumd, null); | ||||||
|         PersistenceManager pm = pmf.getPersistenceManager(); |         PersistenceManager pm = pmf.getPersistenceManager(); | ||||||
|         Transaction tx = pm.currentTransaction(); |         Transaction tx = pm.currentTransaction(); | ||||||
|         try { |         try { | ||||||
| @ -51,26 +73,64 @@ public class GuideToJDO { | |||||||
|             } |             } | ||||||
|             pm.close(); |             pm.close(); | ||||||
|         } |         } | ||||||
| 
 |  | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @SuppressWarnings("unchecked") |     @SuppressWarnings("rawtypes") | ||||||
|  |     public void UpdateProducts(){ | ||||||
|  |         PersistenceManagerFactory pmf = new JDOPersistenceManagerFactory(pumd, null); | ||||||
|  |         PersistenceManager pm = pmf.getPersistenceManager(); | ||||||
|  |         Transaction tx = pm.currentTransaction(); | ||||||
|  |         try { | ||||||
|  |             tx.begin(); | ||||||
|  |             Query query = pm.newQuery(Product.class, "name == \"Phone\""); | ||||||
|  |             Collection result = (Collection) query.execute(); | ||||||
|  |             Product product = (Product) result.iterator().next(); | ||||||
|  |             product.setName("Android Phone"); | ||||||
|  |             tx.commit(); | ||||||
|  |         } finally { | ||||||
|  |             if (tx.isActive()) { | ||||||
|  |                 tx.rollback(); | ||||||
|  |             }    | ||||||
|  |             pm.close(); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     @SuppressWarnings("rawtypes") | ||||||
|  |     public void DeleteProducts(){ | ||||||
|  |         PersistenceManagerFactory pmf = new JDOPersistenceManagerFactory(pumd, null); | ||||||
|  |         PersistenceManager pm = pmf.getPersistenceManager(); | ||||||
|  |         Transaction tx = pm.currentTransaction(); | ||||||
|  |         try { | ||||||
|  |             tx.begin(); | ||||||
|  |             Query query = pm.newQuery(Product.class, "name == \"Android Phone\""); | ||||||
|  |             Collection result = (Collection) query.execute(); | ||||||
|  |             Product product = (Product) result.iterator().next(); | ||||||
|  |             pm.deletePersistent(product); | ||||||
|  |             tx.commit(); | ||||||
|  |         } finally { | ||||||
|  |             if (tx.isActive()) { | ||||||
|  |                 tx.rollback(); | ||||||
|  |             }    | ||||||
|  |             pm.close(); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     @SuppressWarnings({ "rawtypes", "unchecked" }) | ||||||
|     public void ListProducts() { |     public void ListProducts() { | ||||||
|         PersistenceManagerFactory pmf = JDOHelper.getPersistenceManagerFactory("Tutorial"); |         PersistenceManagerFactory pmf = new JDOPersistenceManagerFactory(pumd, null); | ||||||
|         PersistenceManager pm = pmf.getPersistenceManager(); |         PersistenceManager pm = pmf.getPersistenceManager(); | ||||||
|         Transaction tx = pm.currentTransaction(); |         Transaction tx = pm.currentTransaction(); | ||||||
|         try { |         try { | ||||||
|             tx.begin(); |             tx.begin(); | ||||||
| 
 | 
 | ||||||
|             @SuppressWarnings("rawtypes") |             Query q = pm.newQuery("SELECT FROM " + Product.class.getName() + " WHERE price > 10"); | ||||||
|             Query q = pm.newQuery("SELECT FROM " + Product.class.getName() + " WHERE price < 1"); |  | ||||||
|             List<Product> products = (List<Product>) q.execute(); |             List<Product> products = (List<Product>) q.execute(); | ||||||
|             Iterator<Product> iter = products.iterator(); |             Iterator<Product> iter = products.iterator(); | ||||||
|             while (iter.hasNext()) { |             while (iter.hasNext()) { | ||||||
|                 Product p = iter.next(); |                 Product p = iter.next(); | ||||||
|                 LOGGER.log(Level.WARNING, "Product name: {0} - Price: {1}", new Object[] { p.name, p.price }); |                 LOGGER.log(Level.WARNING, "Product name: {0} - Price: {1}", new Object[] { p.name, p.price }); | ||||||
|             } |             } | ||||||
| 
 |             LOGGER.log(Level.INFO, "--------------------------------------------------------------"); | ||||||
|             tx.commit(); |             tx.commit(); | ||||||
|         } finally { |         } finally { | ||||||
|             if (tx.isActive()) { |             if (tx.isActive()) { | ||||||
| @ -80,4 +140,4 @@ public class GuideToJDO { | |||||||
|             pm.close(); |             pm.close(); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
| @ -0,0 +1,41 @@ | |||||||
|  | package com.baeldung.concurrent.accumulator; | ||||||
|  | 
 | ||||||
|  | import org.junit.Test; | ||||||
|  | 
 | ||||||
|  | import java.util.concurrent.ExecutorService; | ||||||
|  | import java.util.concurrent.Executors; | ||||||
|  | import java.util.concurrent.TimeUnit; | ||||||
|  | import java.util.concurrent.atomic.LongAccumulator; | ||||||
|  | import java.util.function.LongBinaryOperator; | ||||||
|  | import java.util.stream.IntStream; | ||||||
|  | 
 | ||||||
|  | import static junit.framework.TestCase.assertEquals; | ||||||
|  | 
 | ||||||
|  | public class LongAccumulatorTest { | ||||||
|  | 
 | ||||||
|  |     @Test | ||||||
|  |     public void givenLongAccumulator_whenApplyActionOnItFromMultipleThrads_thenShouldProduceProperResult() throws InterruptedException { | ||||||
|  |         //given | ||||||
|  |         ExecutorService executorService = Executors.newFixedThreadPool(8); | ||||||
|  |         LongBinaryOperator higherValueFinder = (currentValue, previousValue) -> currentValue > previousValue ? currentValue : previousValue; | ||||||
|  |         LongAccumulator accumulator = new LongAccumulator(higherValueFinder, 0L); | ||||||
|  | 
 | ||||||
|  |         int numberOfThreads = 4; | ||||||
|  |         int numberOfIncrements = 100; | ||||||
|  | 
 | ||||||
|  |         //when | ||||||
|  |         Runnable accumulateAction = () -> IntStream | ||||||
|  |           .rangeClosed(0, numberOfIncrements) | ||||||
|  |           .forEach(accumulator::accumulate); | ||||||
|  | 
 | ||||||
|  |         for (int i = 0; i < numberOfThreads; i++) { | ||||||
|  |             executorService.execute(accumulateAction); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         //then | ||||||
|  |         executorService.awaitTermination(500, TimeUnit.MILLISECONDS); | ||||||
|  |         executorService.shutdown(); | ||||||
|  | 
 | ||||||
|  |         assertEquals(accumulator.get(), 100); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,65 @@ | |||||||
|  | package com.baeldung.concurrent.adder; | ||||||
|  | 
 | ||||||
|  | import org.junit.Test; | ||||||
|  | 
 | ||||||
|  | import java.util.concurrent.ExecutorService; | ||||||
|  | import java.util.concurrent.Executors; | ||||||
|  | import java.util.concurrent.TimeUnit; | ||||||
|  | import java.util.concurrent.atomic.LongAdder; | ||||||
|  | import java.util.stream.IntStream; | ||||||
|  | 
 | ||||||
|  | import static junit.framework.TestCase.assertEquals; | ||||||
|  | 
 | ||||||
|  | public class LongAdderTest { | ||||||
|  |     @Test | ||||||
|  |     public void givenMultipleThread_whenTheyWriteToSharedLongAdder_thenShouldCalculateSumForThem() throws InterruptedException { | ||||||
|  |         //given | ||||||
|  |         LongAdder counter = new LongAdder(); | ||||||
|  |         ExecutorService executorService = Executors.newFixedThreadPool(8); | ||||||
|  | 
 | ||||||
|  |         int numberOfThreads = 4; | ||||||
|  |         int numberOfIncrements = 100; | ||||||
|  | 
 | ||||||
|  |         //when | ||||||
|  |         Runnable incrementAction = () -> IntStream | ||||||
|  |           .range(0, numberOfIncrements) | ||||||
|  |           .forEach((i) -> counter.increment()); | ||||||
|  | 
 | ||||||
|  |         for (int i = 0; i < numberOfThreads; i++) { | ||||||
|  |             executorService.execute(incrementAction); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         //then | ||||||
|  |         executorService.awaitTermination(500, TimeUnit.MILLISECONDS); | ||||||
|  |         executorService.shutdown(); | ||||||
|  | 
 | ||||||
|  |         assertEquals(counter.sum(), numberOfIncrements * numberOfThreads); | ||||||
|  |         assertEquals(counter.sum(), numberOfIncrements * numberOfThreads); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @Test | ||||||
|  |     public void givenMultipleThread_whenTheyWriteToSharedLongAdder_thenShouldCalculateSumForThemAndResetAdderAfterward() throws InterruptedException { | ||||||
|  |         //given | ||||||
|  |         LongAdder counter = new LongAdder(); | ||||||
|  |         ExecutorService executorService = Executors.newFixedThreadPool(8); | ||||||
|  | 
 | ||||||
|  |         int numberOfThreads = 4; | ||||||
|  |         int numberOfIncrements = 100; | ||||||
|  | 
 | ||||||
|  |         //when | ||||||
|  |         Runnable incrementAction = () -> IntStream | ||||||
|  |           .range(0, numberOfIncrements) | ||||||
|  |           .forEach((i) -> counter.increment()); | ||||||
|  | 
 | ||||||
|  |         for (int i = 0; i < numberOfThreads; i++) { | ||||||
|  |             executorService.execute(incrementAction); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         //then | ||||||
|  |         executorService.awaitTermination(500, TimeUnit.MILLISECONDS); | ||||||
|  |         executorService.shutdown(); | ||||||
|  | 
 | ||||||
|  |         assertEquals(counter.sumThenReset(), numberOfIncrements * numberOfThreads); | ||||||
|  |         assertEquals(counter.sum(), 0); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -6,18 +6,28 @@ import static org.junit.Assert.fail; | |||||||
| import java.util.Iterator; | import java.util.Iterator; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| 
 | 
 | ||||||
| import javax.jdo.JDOHelper; |  | ||||||
| import javax.jdo.PersistenceManager; | import javax.jdo.PersistenceManager; | ||||||
| import javax.jdo.PersistenceManagerFactory; | import javax.jdo.PersistenceManagerFactory; | ||||||
| import javax.jdo.Query; | import javax.jdo.Query; | ||||||
| import javax.jdo.Transaction; | import javax.jdo.Transaction; | ||||||
| 
 | 
 | ||||||
|  | import org.datanucleus.api.jdo.JDOPersistenceManagerFactory; | ||||||
|  | import org.datanucleus.metadata.PersistenceUnitMetaData; | ||||||
| import org.junit.Test; | import org.junit.Test; | ||||||
| 
 | 
 | ||||||
| public class GuideToJDOTest { | public class GuideToJDOTest { | ||||||
|     @Test |     @Test | ||||||
|     public void givenProduct_WhenNewThenPerformTransaction() { |     public void givenProduct_WhenNewThenPerformTransaction() { | ||||||
|         PersistenceManagerFactory pmf = JDOHelper.getPersistenceManagerFactory("Tutorial"); |         PersistenceUnitMetaData pumd = new PersistenceUnitMetaData("dynamic-unit", "RESOURCE_LOCAL", null); | ||||||
|  |         pumd.addClassName("com.baeldung.jdo.Product"); | ||||||
|  |         pumd.setExcludeUnlistedClasses(); | ||||||
|  |         pumd.addProperty("javax.jdo.option.ConnectionDriverName", "org.h2.Driver"); | ||||||
|  |         pumd.addProperty("javax.jdo.option.ConnectionURL", "jdbc:h2:mem:mypersistence"); | ||||||
|  |         pumd.addProperty("javax.jdo.option.ConnectionUserName", "sa"); | ||||||
|  |         pumd.addProperty("javax.jdo.option.ConnectionPassword", ""); | ||||||
|  |         pumd.addProperty("datanucleus.autoCreateSchema", "true");         | ||||||
|  | 
 | ||||||
|  |         PersistenceManagerFactory pmf = new JDOPersistenceManagerFactory(pumd, null); | ||||||
|         PersistenceManager pm = pmf.getPersistenceManager(); |         PersistenceManager pm = pmf.getPersistenceManager(); | ||||||
|         Transaction tx = pm.currentTransaction(); |         Transaction tx = pm.currentTransaction(); | ||||||
|         try { |         try { | ||||||
| @ -43,7 +53,16 @@ public class GuideToJDOTest { | |||||||
| 
 | 
 | ||||||
|     @Test |     @Test | ||||||
|     public void givenProduct_WhenQueryThenExist() { |     public void givenProduct_WhenQueryThenExist() { | ||||||
|         PersistenceManagerFactory pmf = JDOHelper.getPersistenceManagerFactory("Tutorial"); |         PersistenceUnitMetaData pumd = new PersistenceUnitMetaData("dynamic-unit", "RESOURCE_LOCAL", null); | ||||||
|  |         pumd.addClassName("com.baeldung.jdo.Product"); | ||||||
|  |         pumd.setExcludeUnlistedClasses(); | ||||||
|  |         pumd.addProperty("javax.jdo.option.ConnectionDriverName", "org.h2.Driver"); | ||||||
|  |         pumd.addProperty("javax.jdo.option.ConnectionURL", "jdbc:h2:mem:mypersistence"); | ||||||
|  |         pumd.addProperty("javax.jdo.option.ConnectionUserName", "sa"); | ||||||
|  |         pumd.addProperty("javax.jdo.option.ConnectionPassword", ""); | ||||||
|  |         pumd.addProperty("datanucleus.autoCreateSchema", "true");         | ||||||
|  | 
 | ||||||
|  |         PersistenceManagerFactory pmf = new JDOPersistenceManagerFactory(pumd, null); | ||||||
|         PersistenceManager pm = pmf.getPersistenceManager(); |         PersistenceManager pm = pmf.getPersistenceManager(); | ||||||
|         Transaction tx = pm.currentTransaction(); |         Transaction tx = pm.currentTransaction(); | ||||||
|         try { |         try { | ||||||
| @ -66,7 +85,7 @@ public class GuideToJDOTest { | |||||||
| 
 | 
 | ||||||
|         pmf.close(); |         pmf.close(); | ||||||
| 
 | 
 | ||||||
|         PersistenceManagerFactory pmf2 = JDOHelper.getPersistenceManagerFactory("Tutorial"); |         PersistenceManagerFactory pmf2 = new JDOPersistenceManagerFactory(pumd, null); | ||||||
|         PersistenceManager pm2 = pmf2.getPersistenceManager(); |         PersistenceManager pm2 = pmf2.getPersistenceManager(); | ||||||
|         Transaction tx2 = pm2.currentTransaction(); |         Transaction tx2 = pm2.currentTransaction(); | ||||||
|         try { |         try { | ||||||
| @ -93,4 +112,4 @@ public class GuideToJDOTest { | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
							
								
								
									
										2
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								pom.xml
									
									
									
									
									
								
							| @ -22,8 +22,6 @@ | |||||||
|         <module>apache-fop</module> |         <module>apache-fop</module> | ||||||
|         <module>apache-poi</module> |         <module>apache-poi</module> | ||||||
|         <module>apache-thrift</module> |         <module>apache-thrift</module> | ||||||
|         <module>aspectj</module> |  | ||||||
|         <module>assertj</module> |  | ||||||
|         <module>autovalue</module> |         <module>autovalue</module> | ||||||
|         <module>axon</module> |         <module>axon</module> | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,3 +1,5 @@ | |||||||
| ### Relevant articles | ### Relevant articles | ||||||
| 
 | 
 | ||||||
| - [Implementing a Custom Spring AOP Annotation](http://www.baeldung.com/spring-aop-annotation) | - [Implementing a Custom Spring AOP Annotation](http://www.baeldung.com/spring-aop-annotation) | ||||||
|  | - [Intro to AspectJ](http://www.baeldung.com/aspectj) | ||||||
|  | - [Spring Performance Logging](http://www.baeldung.com/spring-performance-logging) | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package com.baeldung.aspectj; | package org.baeldung.aspectj; | ||||||
| 
 | 
 | ||||||
| public class Account { | public class Account { | ||||||
|     int balance = 20; |     int balance = 20; | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package com.baeldung.aspectj; | package org.baeldung.aspectj; | ||||||
| 
 | 
 | ||||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||||
| import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package com.baeldung.aspectj; | package org.baeldung.aspectj; | ||||||
| 
 | 
 | ||||||
| import java.lang.annotation.ElementType; | import java.lang.annotation.ElementType; | ||||||
| import java.lang.annotation.Retention; | import java.lang.annotation.Retention; | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package com.baeldung.aspectj; | package org.baeldung.aspectj; | ||||||
| 
 | 
 | ||||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||||
| import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package com.baeldung.aspectj; | package org.baeldung.aspectj; | ||||||
| 
 | 
 | ||||||
| import org.aspectj.lang.ProceedingJoinPoint; | import org.aspectj.lang.ProceedingJoinPoint; | ||||||
| import org.aspectj.lang.annotation.Around; | import org.aspectj.lang.annotation.Around; | ||||||
| @ -1,7 +1,4 @@ | |||||||
| package com.baeldung.performancemonitor; | package org.baeldung.performancemonitor; | ||||||
| 
 |  | ||||||
| import java.time.LocalDate; |  | ||||||
| import java.time.Month; |  | ||||||
| 
 | 
 | ||||||
| import org.aspectj.lang.annotation.Pointcut; | import org.aspectj.lang.annotation.Pointcut; | ||||||
| import org.springframework.aop.Advisor; | import org.springframework.aop.Advisor; | ||||||
| @ -12,6 +9,9 @@ import org.springframework.context.annotation.Bean; | |||||||
| import org.springframework.context.annotation.Configuration; | import org.springframework.context.annotation.Configuration; | ||||||
| import org.springframework.context.annotation.EnableAspectJAutoProxy; | import org.springframework.context.annotation.EnableAspectJAutoProxy; | ||||||
| 
 | 
 | ||||||
|  | import java.time.LocalDate; | ||||||
|  | import java.time.Month; | ||||||
|  | 
 | ||||||
| @Configuration | @Configuration | ||||||
| @EnableAspectJAutoProxy | @EnableAspectJAutoProxy | ||||||
| public class AopConfiguration { | public class AopConfiguration { | ||||||
| @ -1,11 +1,11 @@ | |||||||
| package com.baeldung.performancemonitor; | package org.baeldung.performancemonitor; | ||||||
| 
 |  | ||||||
| import java.util.Date; |  | ||||||
| 
 | 
 | ||||||
| import org.aopalliance.intercept.MethodInvocation; | import org.aopalliance.intercept.MethodInvocation; | ||||||
| import org.apache.commons.logging.Log; | import org.apache.commons.logging.Log; | ||||||
| import org.springframework.aop.interceptor.AbstractMonitoringInterceptor; | import org.springframework.aop.interceptor.AbstractMonitoringInterceptor; | ||||||
| 
 | 
 | ||||||
|  | import java.util.Date; | ||||||
|  | 
 | ||||||
| public class MyPerformanceMonitorInterceptor extends AbstractMonitoringInterceptor { | public class MyPerformanceMonitorInterceptor extends AbstractMonitoringInterceptor { | ||||||
|      |      | ||||||
|     public MyPerformanceMonitorInterceptor() { |     public MyPerformanceMonitorInterceptor() { | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package com.baeldung.performancemonitor; | package org.baeldung.performancemonitor; | ||||||
| 
 | 
 | ||||||
| import org.springframework.context.ApplicationContext; | import org.springframework.context.ApplicationContext; | ||||||
| import org.springframework.context.annotation.AnnotationConfigApplicationContext; | import org.springframework.context.annotation.AnnotationConfigApplicationContext; | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package com.baeldung.performancemonitor; | package org.baeldung.performancemonitor; | ||||||
| 
 | 
 | ||||||
| import java.time.LocalDate; | import java.time.LocalDate; | ||||||
| 
 | 
 | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package com.baeldung.performancemonitor; | package org.baeldung.performancemonitor; | ||||||
| 
 | 
 | ||||||
| import java.time.LocalDate; | import java.time.LocalDate; | ||||||
| import java.time.Period; | import java.time.Period; | ||||||
| @ -1,6 +1,6 @@ | |||||||
| <aspectj> | <aspectj> | ||||||
|     <aspects> |     <aspects> | ||||||
|         <aspect name="com.baeldung.aspectj.SecuredMethodAspect"/> |         <aspect name="org.baeldung.aspectj.SecuredMethodAspect"/> | ||||||
|         <weaver options="-verbose -showWeaveInfo"> |         <weaver options="-verbose -showWeaveInfo"> | ||||||
|             <include within="com.baeldung.aspectj.*"/> |             <include within="com.baeldung.aspectj.*"/> | ||||||
|         </weaver> |         </weaver> | ||||||
| @ -1,11 +1,10 @@ | |||||||
| package com.baeldung.aspectj.test; | package org.baeldung.aspectj; | ||||||
| 
 |  | ||||||
| import static org.junit.Assert.*; |  | ||||||
| 
 | 
 | ||||||
| import org.junit.Before; | import org.junit.Before; | ||||||
| import org.junit.Test; | import org.junit.Test; | ||||||
| 
 | 
 | ||||||
| import com.baeldung.aspectj.Account; | import static org.junit.Assert.assertFalse; | ||||||
|  | import static org.junit.Assert.assertTrue; | ||||||
| 
 | 
 | ||||||
| public class AccountTest { | public class AccountTest { | ||||||
|     private Account account; |     private Account account; | ||||||
| @ -1,9 +1,7 @@ | |||||||
| package com.baeldung.aspectj.test; | package org.baeldung.aspectj; | ||||||
| 
 | 
 | ||||||
| import org.junit.Test; | import org.junit.Test; | ||||||
| 
 | 
 | ||||||
| import com.baeldung.aspectj.SecuredMethod; |  | ||||||
| 
 |  | ||||||
| public class SecuredMethodTest { | public class SecuredMethodTest { | ||||||
|     @Test |     @Test | ||||||
|     public void testMethod() throws Exception { |     public void testMethod() throws Exception { | ||||||
| @ -1,11 +1,12 @@ | |||||||
| package org.baeldung; | package org.baeldung; | ||||||
| 
 | 
 | ||||||
| import org.springframework.boot.SpringApplication; | import org.springframework.boot.SpringApplication; | ||||||
|  | import org.springframework.boot.autoconfigure.SpringBootApplication; | ||||||
| import org.springframework.context.ApplicationContext; | import org.springframework.context.ApplicationContext; | ||||||
| 
 | 
 | ||||||
| import com.baeldung.autoconfiguration.MySQLAutoconfiguration; | import com.baeldung.autoconfiguration.MySQLAutoconfiguration; | ||||||
| 
 | 
 | ||||||
| @org.springframework.boot.autoconfigure.SpringBootApplication(exclude=MySQLAutoconfiguration.class) | @SpringBootApplication(exclude=MySQLAutoconfiguration.class) | ||||||
| public class Application { | public class Application { | ||||||
|     private static ApplicationContext applicationContext; |     private static ApplicationContext applicationContext; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -18,7 +18,7 @@ import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; | |||||||
| import org.springframework.transaction.annotation.EnableTransactionManagement; | import org.springframework.transaction.annotation.EnableTransactionManagement; | ||||||
| 
 | 
 | ||||||
| @Configuration | @Configuration | ||||||
| @EnableJpaRepositories(basePackages = { "org.baeldung.repository", "org.baeldung.boot.repository" }) | @EnableJpaRepositories(basePackages = { "org.baeldung.repository", "org.baeldung.boot.repository", "org.baeldung.boot.boottest" }) | ||||||
| @PropertySource("classpath:persistence-generic-entity.properties") | @PropertySource("classpath:persistence-generic-entity.properties") | ||||||
| @EnableTransactionManagement | @EnableTransactionManagement | ||||||
| public class H2JpaConfig { | public class H2JpaConfig { | ||||||
| @ -41,7 +41,7 @@ public class H2JpaConfig { | |||||||
|     public LocalContainerEntityManagerFactoryBean entityManagerFactory() { |     public LocalContainerEntityManagerFactoryBean entityManagerFactory() { | ||||||
|         final LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean(); |         final LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean(); | ||||||
|         em.setDataSource(dataSource()); |         em.setDataSource(dataSource()); | ||||||
|         em.setPackagesToScan(new String[] { "org.baeldung.domain", "org.baeldung.boot.model" }); |         em.setPackagesToScan(new String[] { "org.baeldung.domain", "org.baeldung.boot.model", "org.baeldung.boot.boottest" }); | ||||||
|         em.setJpaVendorAdapter(new HibernateJpaVendorAdapter()); |         em.setJpaVendorAdapter(new HibernateJpaVendorAdapter()); | ||||||
|         em.setJpaProperties(additionalProperties()); |         em.setJpaProperties(additionalProperties()); | ||||||
|         return em; |         return em; | ||||||
|  | |||||||
| @ -1,9 +1,5 @@ | |||||||
| package org.baeldung; | package org.baeldung; | ||||||
| 
 | 
 | ||||||
| import static org.hamcrest.Matchers.equalTo; |  | ||||||
| import static org.hamcrest.Matchers.hasSize; |  | ||||||
| import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; |  | ||||||
| 
 |  | ||||||
| import org.baeldung.domain.Modes; | import org.baeldung.domain.Modes; | ||||||
| import org.junit.Before; | import org.junit.Before; | ||||||
| import org.junit.Test; | import org.junit.Test; | ||||||
| @ -21,12 +17,18 @@ import org.springframework.web.context.WebApplicationContext; | |||||||
| 
 | 
 | ||||||
| import java.nio.charset.Charset; | import java.nio.charset.Charset; | ||||||
| 
 | 
 | ||||||
|  | import static org.hamcrest.Matchers.equalTo; | ||||||
|  | import static org.hamcrest.Matchers.hasSize; | ||||||
|  | import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; | ||||||
|  | 
 | ||||||
| @RunWith(SpringJUnit4ClassRunner.class) | @RunWith(SpringJUnit4ClassRunner.class) | ||||||
| @SpringBootTest(classes = Application.class) | @SpringBootTest(classes = Application.class) | ||||||
| @WebAppConfiguration | @WebAppConfiguration | ||||||
| public class SpringBootApplicationIntegrationTest { | public class SpringBootApplicationIntegrationTest { | ||||||
|  | 
 | ||||||
|     @Autowired |     @Autowired | ||||||
|     private WebApplicationContext webApplicationContext; |     private WebApplicationContext webApplicationContext; | ||||||
|  | 
 | ||||||
|     private MockMvc mockMvc; |     private MockMvc mockMvc; | ||||||
| 
 | 
 | ||||||
|     @Before |     @Before | ||||||
|  | |||||||
| @ -18,7 +18,7 @@ import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; | |||||||
| import org.springframework.transaction.annotation.EnableTransactionManagement; | import org.springframework.transaction.annotation.EnableTransactionManagement; | ||||||
| 
 | 
 | ||||||
| @Configuration | @Configuration | ||||||
| @EnableJpaRepositories(basePackages = { "org.baeldung.repository", "org.baeldung.boot.repository" }) | @EnableJpaRepositories(basePackages = { "org.baeldung.repository", "org.baeldung.boot.repository", "org.baeldung.boot.boottest" }) | ||||||
| @EnableTransactionManagement | @EnableTransactionManagement | ||||||
| public class H2TestProfileJPAConfig { | public class H2TestProfileJPAConfig { | ||||||
| 
 | 
 | ||||||
| @ -41,7 +41,7 @@ public class H2TestProfileJPAConfig { | |||||||
|     public LocalContainerEntityManagerFactoryBean entityManagerFactory() { |     public LocalContainerEntityManagerFactoryBean entityManagerFactory() { | ||||||
|         final LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean(); |         final LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean(); | ||||||
|         em.setDataSource(dataSource()); |         em.setDataSource(dataSource()); | ||||||
|         em.setPackagesToScan(new String[] { "org.baeldung.domain", "org.baeldung.boot.model" }); |         em.setPackagesToScan(new String[] { "org.baeldung.domain", "org.baeldung.boot.model", "org.baeldung.boot.boottest" }); | ||||||
|         em.setJpaVendorAdapter(new HibernateJpaVendorAdapter()); |         em.setJpaVendorAdapter(new HibernateJpaVendorAdapter()); | ||||||
|         em.setJpaProperties(additionalProperties()); |         em.setJpaProperties(additionalProperties()); | ||||||
|         return em; |         return em; | ||||||
|  | |||||||
| @ -1,3 +1,3 @@ | |||||||
| ## Relevant articles: | ## Relevant articles: | ||||||
| 
 | 
 | ||||||
| - [Spring DispatcherServlet](http://www.baeldung.com/spring-dispatcher-servlet) | - [An Intro to the Spring DispatcherServlet](http://www.baeldung.com/spring-dispatcherservlet) | ||||||
|  | |||||||
							
								
								
									
										8
									
								
								stripe/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								stripe/README.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,8 @@ | |||||||
|  | ### Stripe API for Java Sample Project | ||||||
|  | 
 | ||||||
|  | This is Spring Boot project that displays a checkout form and charges a credit card using the Stripe API for Java. | ||||||
|  | 
 | ||||||
|  | ### Relevant articles | ||||||
|  | 
 | ||||||
|  | - [Introduction to the Stripe API for Java](http://www.baeldung.com/java-stripe-api) | ||||||
|  | 
 | ||||||
| @ -5,4 +5,7 @@ | |||||||
| ### Relevant Articles:  | ### Relevant Articles:  | ||||||
| - [Introduction to Mutation Testing Using the PITest Library](http://www.baeldung.com/java-mutation-testing-with-pitest) | - [Introduction to Mutation Testing Using the PITest Library](http://www.baeldung.com/java-mutation-testing-with-pitest) | ||||||
| - [Intro to JaCoCo](http://www.baeldung.com/jacoco) | - [Intro to JaCoCo](http://www.baeldung.com/jacoco) | ||||||
|  | - [AssertJ’s Java 8 Features](http://www.baeldung.com/assertJ-java-8-features) | ||||||
|  | - [AssertJ for Guava](http://www.baeldung.com/assertJ-for-guava) | ||||||
|  | - [Introduction to AssertJ](http://www.baeldung.com/introduction-to-assertj) | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,17 +1,37 @@ | |||||||
| <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | <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"> |          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> |     <modelVersion>4.0.0</modelVersion> | ||||||
|     <groupId>com.baeldung</groupId> |     <groupId>com.baeldung</groupId> | ||||||
|     <artifactId>mutation-testing</artifactId> |     <artifactId>testing</artifactId> | ||||||
|     <version>0.1-SNAPSHOT</version> |     <version>0.1-SNAPSHOT</version> | ||||||
|     <name>mutation-testing</name> |     <name>testing</name> | ||||||
|      | 
 | ||||||
|     <properties> |  | ||||||
|         <pitest.version>1.1.10</pitest.version> |  | ||||||
|         <junit.version>4.12</junit.version> |  | ||||||
|         <jacoco.version>0.7.7.201606060606</jacoco.version> |  | ||||||
|     </properties> |  | ||||||
|     <dependencies> |     <dependencies> | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>com.google.guava</groupId> | ||||||
|  |             <artifactId>guava</artifactId> | ||||||
|  |             <version>${guava.version}</version> | ||||||
|  |         </dependency> | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>org.assertj</groupId> | ||||||
|  |             <artifactId>assertj-guava</artifactId> | ||||||
|  |             <version>3.0.0</version> | ||||||
|  |         </dependency> | ||||||
|  | 
 | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>junit</groupId> | ||||||
|  |             <artifactId>junit</artifactId> | ||||||
|  |             <version>${junit.version}</version> | ||||||
|  |             <scope>test</scope> | ||||||
|  |         </dependency> | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>org.assertj</groupId> | ||||||
|  |             <artifactId>assertj-core</artifactId> | ||||||
|  |             <version>${assertj-core.version}</version> | ||||||
|  |             <scope>test</scope> | ||||||
|  |         </dependency> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|         <dependency> |         <dependency> | ||||||
|             <groupId>org.pitest</groupId> |             <groupId>org.pitest</groupId> | ||||||
|             <artifactId>pitest-parent</artifactId> |             <artifactId>pitest-parent</artifactId> | ||||||
| @ -78,6 +98,26 @@ | |||||||
|                     </execution> |                     </execution> | ||||||
|                 </executions> |                 </executions> | ||||||
|             </plugin> |             </plugin> | ||||||
|  |             <plugin> | ||||||
|  |                 <groupId>org.apache.maven.plugins</groupId> | ||||||
|  |                 <artifactId>maven-compiler-plugin</artifactId> | ||||||
|  |                 <version>${maven-compiler-plugin.version}</version> | ||||||
|  |                 <configuration> | ||||||
|  |                     <source>1.8</source> | ||||||
|  |                     <target>1.8</target> | ||||||
|  |                 </configuration> | ||||||
|  |             </plugin> | ||||||
|         </plugins> |         </plugins> | ||||||
|     </build> |     </build> | ||||||
|  | 
 | ||||||
|  |     <properties> | ||||||
|  |         <pitest.version>1.1.10</pitest.version> | ||||||
|  |         <junit.version>4.12</junit.version> | ||||||
|  |         <jacoco.version>0.7.7.201606060606</jacoco.version> | ||||||
|  |         <guava.version>19.0</guava.version> | ||||||
|  |         <assertj-guava.version>3.1.0</assertj-guava.version> | ||||||
|  |         <junit.version>4.12</junit.version> | ||||||
|  |         <assertj-core.version>3.6.1</assertj-core.version> | ||||||
|  |         <maven-compiler-plugin.version>3.6.0</maven-compiler-plugin.version> | ||||||
|  |     </properties> | ||||||
| </project> | </project> | ||||||
|  | |||||||
| @ -1,4 +1,4 @@ | |||||||
| package com.baeldung.assertj.introduction.domain; | package com.baeldung.testing.assertj; | ||||||
| 
 | 
 | ||||||
| public class Dog { | public class Dog { | ||||||
|     private String name; |     private String name; | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package com.baeldung.assertj.introduction.domain; | package com.baeldung.testing.assertj; | ||||||
| 
 | 
 | ||||||
| public class Person { | public class Person { | ||||||
|     private String name; |     private String name; | ||||||
| @ -1,7 +1,5 @@ | |||||||
| package com.baeldung.assertj.introduction; | package com.baeldung.testing.assertj; | ||||||
| 
 | 
 | ||||||
| import com.baeldung.assertj.introduction.domain.Dog; |  | ||||||
| import com.baeldung.assertj.introduction.domain.Person; |  | ||||||
| import org.assertj.core.util.Maps; | import org.assertj.core.util.Maps; | ||||||
| import org.junit.Ignore; | import org.junit.Ignore; | ||||||
| import org.junit.Test; | import org.junit.Test; | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package com.baeldung.assertj.introduction; | package com.baeldung.testing.assertj; | ||||||
| 
 | 
 | ||||||
| import com.google.common.base.Optional; | import com.google.common.base.Optional; | ||||||
| import com.google.common.collect.ArrayListMultimap; | import com.google.common.collect.ArrayListMultimap; | ||||||
| @ -1,4 +1,4 @@ | |||||||
| package com.baeldung.assertj.introduction; | package com.baeldung.testing.assertj; | ||||||
| 
 | 
 | ||||||
| import org.junit.Test; | import org.junit.Test; | ||||||
| 
 | 
 | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user