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; | ||||
| 
 | ||||
| import java.util.Collection; | ||||
| import java.util.Iterator; | ||||
| import java.util.List; | ||||
| import java.util.Random; | ||||
| import java.util.logging.Level; | ||||
| import java.util.logging.Logger; | ||||
| 
 | ||||
| import javax.jdo.JDOHelper; | ||||
| import javax.jdo.PersistenceManager; | ||||
| import javax.jdo.PersistenceManagerFactory; | ||||
| import javax.jdo.Query; | ||||
| import javax.jdo.Transaction; | ||||
| 
 | ||||
| import org.datanucleus.api.jdo.JDOPersistenceManagerFactory; | ||||
| import org.datanucleus.metadata.PersistenceUnitMetaData; | ||||
| 
 | ||||
| public class GuideToJDO { | ||||
| 
 | ||||
|     private static final Logger LOGGER = Logger.getLogger(GuideToJDO.class.getName()); | ||||
|     private Random rnd = new Random(); | ||||
|     private PersistenceUnitMetaData pumd; | ||||
| 
 | ||||
|     public static void main(String[] args) { | ||||
|         new GuideToJDO(); | ||||
|     } | ||||
| 
 | ||||
|     public GuideToJDO() { | ||||
|         CreateProperties(); | ||||
|         CreateProducts(); | ||||
|         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() { | ||||
|         PersistenceManagerFactory pmf = JDOHelper.getPersistenceManagerFactory("Tutorial"); | ||||
|         PersistenceManagerFactory pmf = new JDOPersistenceManagerFactory(pumd, null); | ||||
|         PersistenceManager pm = pmf.getPersistenceManager(); | ||||
|         Transaction tx = pm.currentTransaction(); | ||||
|         try { | ||||
| @ -51,26 +73,64 @@ public class GuideToJDO { | ||||
|             } | ||||
|             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() { | ||||
|         PersistenceManagerFactory pmf = JDOHelper.getPersistenceManagerFactory("Tutorial"); | ||||
|         PersistenceManagerFactory pmf = new JDOPersistenceManagerFactory(pumd, null); | ||||
|         PersistenceManager pm = pmf.getPersistenceManager(); | ||||
|         Transaction tx = pm.currentTransaction(); | ||||
|         try { | ||||
|             tx.begin(); | ||||
| 
 | ||||
|             @SuppressWarnings("rawtypes") | ||||
|             Query q = pm.newQuery("SELECT FROM " + Product.class.getName() + " WHERE price < 1"); | ||||
|             Query q = pm.newQuery("SELECT FROM " + Product.class.getName() + " WHERE price > 10"); | ||||
|             List<Product> products = (List<Product>) q.execute(); | ||||
|             Iterator<Product> iter = products.iterator(); | ||||
|             while (iter.hasNext()) { | ||||
|                 Product p = iter.next(); | ||||
|                 LOGGER.log(Level.WARNING, "Product name: {0} - Price: {1}", new Object[] { p.name, p.price }); | ||||
|             } | ||||
| 
 | ||||
|             LOGGER.log(Level.INFO, "--------------------------------------------------------------"); | ||||
|             tx.commit(); | ||||
|         } finally { | ||||
|             if (tx.isActive()) { | ||||
| @ -80,4 +140,4 @@ public class GuideToJDO { | ||||
|             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.List; | ||||
| 
 | ||||
| import javax.jdo.JDOHelper; | ||||
| import javax.jdo.PersistenceManager; | ||||
| import javax.jdo.PersistenceManagerFactory; | ||||
| import javax.jdo.Query; | ||||
| import javax.jdo.Transaction; | ||||
| 
 | ||||
| import org.datanucleus.api.jdo.JDOPersistenceManagerFactory; | ||||
| import org.datanucleus.metadata.PersistenceUnitMetaData; | ||||
| import org.junit.Test; | ||||
| 
 | ||||
| public class GuideToJDOTest { | ||||
|     @Test | ||||
|     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(); | ||||
|         Transaction tx = pm.currentTransaction(); | ||||
|         try { | ||||
| @ -43,7 +53,16 @@ public class GuideToJDOTest { | ||||
| 
 | ||||
|     @Test | ||||
|     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(); | ||||
|         Transaction tx = pm.currentTransaction(); | ||||
|         try { | ||||
| @ -66,7 +85,7 @@ public class GuideToJDOTest { | ||||
| 
 | ||||
|         pmf.close(); | ||||
| 
 | ||||
|         PersistenceManagerFactory pmf2 = JDOHelper.getPersistenceManagerFactory("Tutorial"); | ||||
|         PersistenceManagerFactory pmf2 = new JDOPersistenceManagerFactory(pumd, null); | ||||
|         PersistenceManager pm2 = pmf2.getPersistenceManager(); | ||||
|         Transaction tx2 = pm2.currentTransaction(); | ||||
|         try { | ||||
| @ -93,4 +112,4 @@ public class GuideToJDOTest { | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
| } | ||||
| } | ||||
							
								
								
									
										2
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								pom.xml
									
									
									
									
									
								
							| @ -22,8 +22,6 @@ | ||||
|         <module>apache-fop</module> | ||||
|         <module>apache-poi</module> | ||||
|         <module>apache-thrift</module> | ||||
|         <module>aspectj</module> | ||||
|         <module>assertj</module> | ||||
|         <module>autovalue</module> | ||||
|         <module>axon</module> | ||||
| 
 | ||||
|  | ||||
| @ -1,3 +1,5 @@ | ||||
| ### Relevant articles | ||||
| 
 | ||||
| - [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 { | ||||
|     int balance = 20; | ||||
| @ -1,4 +1,4 @@ | ||||
| package com.baeldung.aspectj; | ||||
| package org.baeldung.aspectj; | ||||
| 
 | ||||
| import org.slf4j.Logger; | ||||
| 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.Retention; | ||||
| @ -1,4 +1,4 @@ | ||||
| package com.baeldung.aspectj; | ||||
| package org.baeldung.aspectj; | ||||
| 
 | ||||
| import org.slf4j.Logger; | ||||
| 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.annotation.Around; | ||||
| @ -1,7 +1,4 @@ | ||||
| package com.baeldung.performancemonitor; | ||||
| 
 | ||||
| import java.time.LocalDate; | ||||
| import java.time.Month; | ||||
| package org.baeldung.performancemonitor; | ||||
| 
 | ||||
| import org.aspectj.lang.annotation.Pointcut; | ||||
| 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.EnableAspectJAutoProxy; | ||||
| 
 | ||||
| import java.time.LocalDate; | ||||
| import java.time.Month; | ||||
| 
 | ||||
| @Configuration | ||||
| @EnableAspectJAutoProxy | ||||
| public class AopConfiguration { | ||||
| @ -1,11 +1,11 @@ | ||||
| package com.baeldung.performancemonitor; | ||||
| 
 | ||||
| import java.util.Date; | ||||
| package org.baeldung.performancemonitor; | ||||
| 
 | ||||
| import org.aopalliance.intercept.MethodInvocation; | ||||
| import org.apache.commons.logging.Log; | ||||
| import org.springframework.aop.interceptor.AbstractMonitoringInterceptor; | ||||
| 
 | ||||
| import java.util.Date; | ||||
| 
 | ||||
| public class MyPerformanceMonitorInterceptor extends AbstractMonitoringInterceptor { | ||||
|      | ||||
|     public MyPerformanceMonitorInterceptor() { | ||||
| @ -1,4 +1,4 @@ | ||||
| package com.baeldung.performancemonitor; | ||||
| package org.baeldung.performancemonitor; | ||||
| 
 | ||||
| import org.springframework.context.ApplicationContext; | ||||
| import org.springframework.context.annotation.AnnotationConfigApplicationContext; | ||||
| @ -1,4 +1,4 @@ | ||||
| package com.baeldung.performancemonitor; | ||||
| package org.baeldung.performancemonitor; | ||||
| 
 | ||||
| import java.time.LocalDate; | ||||
| 
 | ||||
| @ -1,4 +1,4 @@ | ||||
| package com.baeldung.performancemonitor; | ||||
| package org.baeldung.performancemonitor; | ||||
| 
 | ||||
| import java.time.LocalDate; | ||||
| import java.time.Period; | ||||
| @ -1,6 +1,6 @@ | ||||
| <aspectj> | ||||
|     <aspects> | ||||
|         <aspect name="com.baeldung.aspectj.SecuredMethodAspect"/> | ||||
|         <aspect name="org.baeldung.aspectj.SecuredMethodAspect"/> | ||||
|         <weaver options="-verbose -showWeaveInfo"> | ||||
|             <include within="com.baeldung.aspectj.*"/> | ||||
|         </weaver> | ||||
| @ -1,11 +1,10 @@ | ||||
| package com.baeldung.aspectj.test; | ||||
| 
 | ||||
| import static org.junit.Assert.*; | ||||
| package org.baeldung.aspectj; | ||||
| 
 | ||||
| import org.junit.Before; | ||||
| import org.junit.Test; | ||||
| 
 | ||||
| import com.baeldung.aspectj.Account; | ||||
| import static org.junit.Assert.assertFalse; | ||||
| import static org.junit.Assert.assertTrue; | ||||
| 
 | ||||
| public class AccountTest { | ||||
|     private Account account; | ||||
| @ -1,9 +1,7 @@ | ||||
| package com.baeldung.aspectj.test; | ||||
| package org.baeldung.aspectj; | ||||
| 
 | ||||
| import org.junit.Test; | ||||
| 
 | ||||
| import com.baeldung.aspectj.SecuredMethod; | ||||
| 
 | ||||
| public class SecuredMethodTest { | ||||
|     @Test | ||||
|     public void testMethod() throws Exception { | ||||
| @ -1,11 +1,12 @@ | ||||
| package org.baeldung; | ||||
| 
 | ||||
| import org.springframework.boot.SpringApplication; | ||||
| import org.springframework.boot.autoconfigure.SpringBootApplication; | ||||
| import org.springframework.context.ApplicationContext; | ||||
| 
 | ||||
| import com.baeldung.autoconfiguration.MySQLAutoconfiguration; | ||||
| 
 | ||||
| @org.springframework.boot.autoconfigure.SpringBootApplication(exclude=MySQLAutoconfiguration.class) | ||||
| @SpringBootApplication(exclude=MySQLAutoconfiguration.class) | ||||
| public class Application { | ||||
|     private static ApplicationContext applicationContext; | ||||
| 
 | ||||
|  | ||||
| @ -18,7 +18,7 @@ import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; | ||||
| import org.springframework.transaction.annotation.EnableTransactionManagement; | ||||
| 
 | ||||
| @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") | ||||
| @EnableTransactionManagement | ||||
| public class H2JpaConfig { | ||||
| @ -41,7 +41,7 @@ public class H2JpaConfig { | ||||
|     public LocalContainerEntityManagerFactoryBean entityManagerFactory() { | ||||
|         final LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean(); | ||||
|         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.setJpaProperties(additionalProperties()); | ||||
|         return em; | ||||
|  | ||||
| @ -1,9 +1,5 @@ | ||||
| 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.junit.Before; | ||||
| import org.junit.Test; | ||||
| @ -21,12 +17,18 @@ import org.springframework.web.context.WebApplicationContext; | ||||
| 
 | ||||
| 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) | ||||
| @SpringBootTest(classes = Application.class) | ||||
| @WebAppConfiguration | ||||
| public class SpringBootApplicationIntegrationTest { | ||||
| 
 | ||||
|     @Autowired | ||||
|     private WebApplicationContext webApplicationContext; | ||||
| 
 | ||||
|     private MockMvc mockMvc; | ||||
| 
 | ||||
|     @Before | ||||
|  | ||||
| @ -18,7 +18,7 @@ import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; | ||||
| import org.springframework.transaction.annotation.EnableTransactionManagement; | ||||
| 
 | ||||
| @Configuration | ||||
| @EnableJpaRepositories(basePackages = { "org.baeldung.repository", "org.baeldung.boot.repository" }) | ||||
| @EnableJpaRepositories(basePackages = { "org.baeldung.repository", "org.baeldung.boot.repository", "org.baeldung.boot.boottest" }) | ||||
| @EnableTransactionManagement | ||||
| public class H2TestProfileJPAConfig { | ||||
| 
 | ||||
| @ -41,7 +41,7 @@ public class H2TestProfileJPAConfig { | ||||
|     public LocalContainerEntityManagerFactoryBean entityManagerFactory() { | ||||
|         final LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean(); | ||||
|         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.setJpaProperties(additionalProperties()); | ||||
|         return em; | ||||
|  | ||||
| @ -1,3 +1,3 @@ | ||||
| ## 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:  | ||||
| - [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) | ||||
| - [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" | ||||
| 	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> | ||||
|     <groupId>com.baeldung</groupId> | ||||
|     <artifactId>mutation-testing</artifactId> | ||||
|     <artifactId>testing</artifactId> | ||||
|     <version>0.1-SNAPSHOT</version> | ||||
|     <name>mutation-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> | ||||
|     <name>testing</name> | ||||
| 
 | ||||
|     <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> | ||||
|             <groupId>org.pitest</groupId> | ||||
|             <artifactId>pitest-parent</artifactId> | ||||
| @ -78,6 +98,26 @@ | ||||
|                     </execution> | ||||
|                 </executions> | ||||
|             </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> | ||||
|     </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> | ||||
|  | ||||
| @ -1,4 +1,4 @@ | ||||
| package com.baeldung.assertj.introduction.domain; | ||||
| package com.baeldung.testing.assertj; | ||||
| 
 | ||||
| public class Dog { | ||||
|     private String name; | ||||
| @ -1,4 +1,4 @@ | ||||
| package com.baeldung.assertj.introduction.domain; | ||||
| package com.baeldung.testing.assertj; | ||||
| 
 | ||||
| public class Person { | ||||
|     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.junit.Ignore; | ||||
| 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.collect.ArrayListMultimap; | ||||
| @ -1,4 +1,4 @@ | ||||
| package com.baeldung.assertj.introduction; | ||||
| package com.baeldung.testing.assertj; | ||||
| 
 | ||||
| import org.junit.Test; | ||||
| 
 | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user