From 25263f1d6f4a098401b04a6672bbab100f77f370 Mon Sep 17 00:00:00 2001 From: Doha2012 Date: Sun, 27 Aug 2017 12:14:26 +0200 Subject: [PATCH 01/73] java concurrency (#2502) * fix spring config * fix spring config * fix spring config * minor fix * fix spring-boot module * fix pom * upgrade jackson * minor fix * java concurrency * cleanup --- core-java-concurrency/.gitignore | 26 ++ core-java-concurrency/README.md | 32 +++ core-java-concurrency/pom.xml | 237 ++++++++++++++++++ .../ScheduledExecutorServiceDemo.java | 0 .../atomic/SafeCounterWithLock.java | 0 .../atomic/SafeCounterWithoutLock.java | 0 .../concurrent/atomic/UnsafeCounter.java | 0 .../blockingqueue/BlockingQueueUsage.java | 0 .../blockingqueue/NumbersConsumer.java | 0 .../blockingqueue/NumbersProducer.java | 0 .../countdownlatch/BrokenWorker.java | 0 .../countdownlatch/WaitingWorker.java | 0 .../concurrent/countdownlatch/Worker.java | 0 .../cyclicbarrier/CyclicBarrierDemo.java | 0 .../cyclicbarrier/CyclicBarrierExample.java | 0 .../concurrent/cyclicbarrier/Task.java | 0 .../concurrent/delayqueue/DelayObject.java | 0 .../delayqueue/DelayQueueConsumer.java | 0 .../delayqueue/DelayQueueProducer.java | 0 .../DiningPhilosophers.java | 0 .../diningphilosophers/Philosopher.java | 0 .../concurrent/executor/ExecutorDemo.java | 0 .../baeldung/concurrent/executor/Invoker.java | 0 .../executorservice/ExecutorServiceDemo.java | 0 .../concurrent/executorservice/Task.java | 0 .../future/FactorialSquareCalculator.java | 0 .../concurrent/future/FutureDemo.java | 0 .../concurrent/future/SquareCalculator.java | 0 .../locks/ReentrantLockWithCondition.java | 0 .../locks/SharedObjectWithLock.java | 0 .../concurrent/locks/StampedLockDemo.java | 0 .../locks/SynchronizedHashMapWithRWLock.java | 0 .../concurrent/phaser/LongRunningAction.java | 0 .../concurrent/semaphore/SemaPhoreDemo.java | 0 .../semaphores/CounterUsingMutex.java | 0 .../DelayQueueUsingTimedSemaphore.java | 0 .../semaphores/LoginQueueUsingSemaphore.java | 0 .../baeldung/concurrent/skiplist/Event.java | 0 .../concurrent/skiplist/EventWindowSort.java | 0 .../concurrent/sleepwait/ThreadA.java | 0 .../concurrent/sleepwait/ThreadB.java | 0 .../sleepwait/WaitSleepExample.java | 0 .../BaeldungSynchronizedBlocks.java | 0 .../BaeldungSynchronizedMethods.java | 0 .../threadfactory/BaeldungThreadFactory.java | 0 .../concurrent/threadfactory/Demo.java | 0 .../concurrent/threadfactory/Task.java | 0 .../volatilekeyword/SharedObject.java | 0 .../com/baeldung/threadlocal/Context.java | 0 .../threadlocal/SharedMapWithUserContext.java | 0 .../ThreadLocalWithUserContext.java | 0 .../baeldung/threadlocal/UserRepository.java | 0 .../com/baeldung/threadpool/CountingTask.java | 0 .../ExitingExecutorServiceExample.java | 0 .../com/baeldung/threadpool/TreeNode.java | 0 .../com/baeldung/transferqueue/Consumer.java | 0 .../com/baeldung/transferqueue/Producer.java | 0 .../src/main/java/log4j.properties | 9 + .../src/main/resources/logback.xml | 19 ++ .../CompletableFutureLongRunningUnitTest.java | 0 .../accumulator/LongAccumulatorUnitTest.java | 0 .../concurrent/adder/LongAdderUnitTest.java | 0 .../atomic/ThreadSafeCounterTest.java | 0 .../atomic/ThreadUnsafeCounterManualTest.java | 0 .../CopyOnWriteArrayListUnitTest.java | 0 .../CountdownLatchExampleIntegrationTest.java | 0 .../delayqueue/DelayQueueIntegrationTest.java | 0 .../FactorialSquareCalculatorUnitTest.java | 0 .../SquareCalculatorIntegrationTest.java | 0 .../locks/SharedObjectWithLockManualTest.java | 0 ...nchronizedHashMapWithRWLockManualTest.java | 0 .../concurrent/phaser/PhaserUnitTest.java | 0 .../PriorityBlockingQueueIntegrationTest.java | 0 .../semaphores/SemaphoresManualTest.java | 0 .../ConcurrentSkipListSetIntegrationTest.java | 0 .../BaeldungSychronizedBlockTest.java | 0 .../BaeldungSynchronizeMethodsTest.java | 0 .../SharedObjectManualTest.java | 0 ...oncurrentMapAggregateStatusManualTest.java | 0 .../ConcurrentMapNullKeyValueManualTest.java | 0 .../ConcurrentMapPerformanceManualTest.java | 48 ++-- .../ConcurrentNavigableMapManualTest.java | 0 ...ncurretMapMemoryConsistencyManualTest.java | 0 .../ConcurrentModificationUnitTest.java | 0 .../Java8ExecutorServiceIntegrationTest.java | 0 .../SynchronousQueueIntegrationTest.java | 0 .../ThreadLocalIntegrationTest.java | 0 .../CoreThreadPoolIntegrationTest.java | 0 .../GuavaThreadPoolIntegrationTest.java | 0 .../TransferQueueIntegrationTest.java | 0 ...adPoolInParallelStreamIntegrationTest.java | 0 .../src/test/resources/.gitignore | 13 + core-java/README.md | 22 -- 93 files changed, 362 insertions(+), 44 deletions(-) create mode 100644 core-java-concurrency/.gitignore create mode 100644 core-java-concurrency/README.md create mode 100644 core-java-concurrency/pom.xml rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/Scheduledexecutorservice/ScheduledExecutorServiceDemo.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/atomic/SafeCounterWithLock.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/atomic/SafeCounterWithoutLock.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/atomic/UnsafeCounter.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/blockingqueue/BlockingQueueUsage.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/blockingqueue/NumbersConsumer.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/blockingqueue/NumbersProducer.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/countdownlatch/BrokenWorker.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/countdownlatch/WaitingWorker.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/countdownlatch/Worker.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/cyclicbarrier/CyclicBarrierDemo.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/cyclicbarrier/CyclicBarrierExample.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/cyclicbarrier/Task.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/delayqueue/DelayObject.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/delayqueue/DelayQueueConsumer.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/delayqueue/DelayQueueProducer.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/diningphilosophers/DiningPhilosophers.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/diningphilosophers/Philosopher.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/executor/ExecutorDemo.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/executor/Invoker.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/executorservice/ExecutorServiceDemo.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/executorservice/Task.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/future/FactorialSquareCalculator.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/future/FutureDemo.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/future/SquareCalculator.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/locks/ReentrantLockWithCondition.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/locks/SharedObjectWithLock.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/locks/StampedLockDemo.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/locks/SynchronizedHashMapWithRWLock.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/phaser/LongRunningAction.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/semaphore/SemaPhoreDemo.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/semaphores/CounterUsingMutex.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/semaphores/DelayQueueUsingTimedSemaphore.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/semaphores/LoginQueueUsingSemaphore.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/skiplist/Event.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/skiplist/EventWindowSort.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/sleepwait/ThreadA.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/sleepwait/ThreadB.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/sleepwait/WaitSleepExample.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizedBlocks.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizedMethods.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/threadfactory/BaeldungThreadFactory.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/threadfactory/Demo.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/threadfactory/Task.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/concurrent/volatilekeyword/SharedObject.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/threadlocal/Context.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/threadlocal/SharedMapWithUserContext.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/threadlocal/ThreadLocalWithUserContext.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/threadlocal/UserRepository.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/threadpool/CountingTask.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/threadpool/ExitingExecutorServiceExample.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/threadpool/TreeNode.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/transferqueue/Consumer.java (100%) rename {core-java => core-java-concurrency}/src/main/java/com/baeldung/transferqueue/Producer.java (100%) create mode 100644 core-java-concurrency/src/main/java/log4j.properties create mode 100644 core-java-concurrency/src/main/resources/logback.xml rename {core-java => core-java-concurrency}/src/test/java/com/baeldung/completablefuture/CompletableFutureLongRunningUnitTest.java (100%) rename {core-java => core-java-concurrency}/src/test/java/com/baeldung/concurrent/accumulator/LongAccumulatorUnitTest.java (100%) rename {core-java => core-java-concurrency}/src/test/java/com/baeldung/concurrent/adder/LongAdderUnitTest.java (100%) rename {core-java => core-java-concurrency}/src/test/java/com/baeldung/concurrent/atomic/ThreadSafeCounterTest.java (100%) rename {core-java => core-java-concurrency}/src/test/java/com/baeldung/concurrent/atomic/ThreadUnsafeCounterManualTest.java (100%) rename {core-java => core-java-concurrency}/src/test/java/com/baeldung/concurrent/copyonwrite/CopyOnWriteArrayListUnitTest.java (100%) rename {core-java => core-java-concurrency}/src/test/java/com/baeldung/concurrent/countdownlatch/CountdownLatchExampleIntegrationTest.java (100%) rename {core-java => core-java-concurrency}/src/test/java/com/baeldung/concurrent/delayqueue/DelayQueueIntegrationTest.java (100%) rename {core-java => core-java-concurrency}/src/test/java/com/baeldung/concurrent/future/FactorialSquareCalculatorUnitTest.java (100%) rename {core-java => core-java-concurrency}/src/test/java/com/baeldung/concurrent/future/SquareCalculatorIntegrationTest.java (100%) rename {core-java => core-java-concurrency}/src/test/java/com/baeldung/concurrent/locks/SharedObjectWithLockManualTest.java (100%) rename {core-java => core-java-concurrency}/src/test/java/com/baeldung/concurrent/locks/SynchronizedHashMapWithRWLockManualTest.java (100%) rename {core-java => core-java-concurrency}/src/test/java/com/baeldung/concurrent/phaser/PhaserUnitTest.java (100%) rename {core-java => core-java-concurrency}/src/test/java/com/baeldung/concurrent/priorityblockingqueue/PriorityBlockingQueueIntegrationTest.java (100%) rename {core-java => core-java-concurrency}/src/test/java/com/baeldung/concurrent/semaphores/SemaphoresManualTest.java (100%) rename {core-java => core-java-concurrency}/src/test/java/com/baeldung/concurrent/skiplist/ConcurrentSkipListSetIntegrationTest.java (100%) rename {core-java => core-java-concurrency}/src/test/java/com/baeldung/concurrent/synchronize/BaeldungSychronizedBlockTest.java (100%) rename {core-java => core-java-concurrency}/src/test/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizeMethodsTest.java (100%) rename {core-java => core-java-concurrency}/src/test/java/com/baeldung/concurrent/volatilekeyword/SharedObjectManualTest.java (100%) rename {core-java => core-java-concurrency}/src/test/java/com/baeldung/java/concurrentmap/ConcurrentMapAggregateStatusManualTest.java (100%) rename {core-java => core-java-concurrency}/src/test/java/com/baeldung/java/concurrentmap/ConcurrentMapNullKeyValueManualTest.java (100%) rename {core-java => core-java-concurrency}/src/test/java/com/baeldung/java/concurrentmap/ConcurrentMapPerformanceManualTest.java (62%) rename {core-java => core-java-concurrency}/src/test/java/com/baeldung/java/concurrentmap/ConcurrentNavigableMapManualTest.java (100%) rename {core-java => core-java-concurrency}/src/test/java/com/baeldung/java/concurrentmap/ConcurretMapMemoryConsistencyManualTest.java (100%) rename {core-java => core-java-concurrency}/src/test/java/com/baeldung/java/concurrentmodification/ConcurrentModificationUnitTest.java (100%) rename {core-java => core-java-concurrency}/src/test/java/com/baeldung/java8/Java8ExecutorServiceIntegrationTest.java (100%) rename {core-java => core-java-concurrency}/src/test/java/com/baeldung/synchronousqueue/SynchronousQueueIntegrationTest.java (100%) rename {core-java => core-java-concurrency}/src/test/java/com/baeldung/threadlocal/ThreadLocalIntegrationTest.java (100%) rename {core-java => core-java-concurrency}/src/test/java/com/baeldung/threadpool/CoreThreadPoolIntegrationTest.java (100%) rename {core-java => core-java-concurrency}/src/test/java/com/baeldung/threadpool/GuavaThreadPoolIntegrationTest.java (100%) rename {core-java => core-java-concurrency}/src/test/java/com/baeldung/transferqueue/TransferQueueIntegrationTest.java (100%) rename {core-java => core-java-concurrency}/src/test/java/org/baeldung/java/streams/ThreadPoolInParallelStreamIntegrationTest.java (100%) create mode 100644 core-java-concurrency/src/test/resources/.gitignore diff --git a/core-java-concurrency/.gitignore b/core-java-concurrency/.gitignore new file mode 100644 index 0000000000..3de4cc647e --- /dev/null +++ b/core-java-concurrency/.gitignore @@ -0,0 +1,26 @@ +*.class + +0.* + +#folders# +/target +/neoDb* +/data +/src/main/webapp/WEB-INF/classes +*/META-INF/* +.resourceCache + +# Packaged files # +*.jar +*.war +*.ear + +# Files generated by integration tests +*.txt +backup-pom.xml +/bin/ +/temp + +#IntelliJ specific +.idea/ +*.iml \ No newline at end of file diff --git a/core-java-concurrency/README.md b/core-java-concurrency/README.md new file mode 100644 index 0000000000..f1d95482d4 --- /dev/null +++ b/core-java-concurrency/README.md @@ -0,0 +1,32 @@ +========= + +## Core Java Concurrency Examples + +### Relevant Articles: +- [Guide To CompletableFuture](http://www.baeldung.com/java-completablefuture) +- [A Guide to the Java ExecutorService](http://www.baeldung.com/java-executor-service-tutorial) +- [Introduction to Thread Pools in Java](http://www.baeldung.com/thread-pool-java-and-guava) +- [Guide to java.util.concurrent.Future](http://www.baeldung.com/java-future) +- [Guide to java.util.concurrent.BlockingQueue](http://www.baeldung.com/java-blocking-queue) +- [Guide to CountDownLatch in Java](http://www.baeldung.com/java-countdown-latch) +- [A Guide to ConcurrentMap](http://www.baeldung.com/java-concurrent-map) +- [Guide to PriorityBlockingQueue in Java](http://www.baeldung.com/java-priority-blocking-queue) +- [Avoiding the ConcurrentModificationException in Java](http://www.baeldung.com/java-concurrentmodificationexception) +- [Custom Thread Pools In Java 8 Parallel Streams](http://www.baeldung.com/java-8-parallel-streams-custom-threadpool) +- [Guide to java.util.concurrent.Locks](http://www.baeldung.com/java-concurrent-locks) +- [An Introduction to ThreadLocal in Java](http://www.baeldung.com/java-threadlocal) +- [Guide to DelayQueue](http://www.baeldung.com/java-delay-queue) +- [A Guide to Java SynchronousQueue](http://www.baeldung.com/java-synchronous-queue) +- [Guide to the Java TransferQueue](http://www.baeldung.com/java-transfer-queue) +- [Guide to the ConcurrentSkipListMap](http://www.baeldung.com/java-concurrent-skip-list-map) +- [Difference Between Wait and Sleep in Java](http://www.baeldung.com/java-wait-and-sleep) +- [LongAdder and LongAccumulator in Java](http://www.baeldung.com/java-longadder-and-longaccumulator) +- [The Dining Philosophers Problem in Java](http://www.baeldung.com/java-dining-philoshophers) +- [Guide to CopyOnWriteArrayList](http://www.baeldung.com/java-copy-on-write-arraylist) +- [Guide to the Java Phaser](http://www.baeldung.com/java-phaser) +- [Guide to Synchronized Keyword in Java](http://www.baeldung.com/java-synchronized) +- [An Introduction to Atomic Variables in Java](http://www.baeldung.com/java-atomic-variables) +- [CyclicBarrier in Java](http://www.baeldung.com/java-cyclic-barrier) +- [Guide to Volatile Keyword in Java](http://www.baeldung.com/java-volatile) +- [Overview of the java.util.concurrent](http://www.baeldung.com/java-util-concurrent) +- [Semaphores in Java](http://www.baeldung.com/java-semaphore) diff --git a/core-java-concurrency/pom.xml b/core-java-concurrency/pom.xml new file mode 100644 index 0000000000..bf858047e9 --- /dev/null +++ b/core-java-concurrency/pom.xml @@ -0,0 +1,237 @@ + + 4.0.0 + com.baeldung + core-java-concurrency + 0.1.0-SNAPSHOT + jar + + core-java-concurrency + + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + + + + + + + com.google.guava + guava + ${guava.version} + + + + org.apache.commons + commons-collections4 + ${commons-collections4.version} + + + + commons-io + commons-io + ${commons-io.version} + + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + + org.apache.commons + commons-math3 + ${commons-math3.version} + + + + + + + org.assertj + assertj-core + ${assertj.version} + test + + + + com.jayway.awaitility + awaitility + ${avaitility.version} + test + + + + + + core-java-concurrency + + + src/main/resources + true + + + + + + org.apache.maven.plugins + maven-dependency-plugin + + + copy-dependencies + prepare-package + + copy-dependencies + + + ${project.build.directory}/libs + + + + + + + org.apache.maven.plugins + maven-jar-plugin + + + + true + libs/ + org.baeldung.executable.ExecutableMavenJar + + + + + + org.apache.maven.plugins + maven-assembly-plugin + + + package + + single + + + ${project.basedir} + + + org.baeldung.executable.ExecutableMavenJar + + + + jar-with-dependencies + + + + + + + org.apache.maven.plugins + maven-shade-plugin + + + + shade + + + true + + + org.baeldung.executable.ExecutableMavenJar + + + + + + + + com.jolira + onejar-maven-plugin + + + + org.baeldung.executable.ExecutableMavenJar + true + ${project.build.finalName}-onejar.${project.packaging} + + + one-jar + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + spring-boot + org.baeldung.executable.ExecutableMavenJar + + + + + + + + + + + integration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*ManualTest.java + + + **/*IntegrationTest.java + + + + + + + json + + + + + + + + + + + + 21.0 + 3.5 + 3.6.1 + 2.5 + 4.1 + 4.01 + + + 3.6.1 + 1.7.0 + + + diff --git a/core-java/src/main/java/com/baeldung/concurrent/Scheduledexecutorservice/ScheduledExecutorServiceDemo.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/Scheduledexecutorservice/ScheduledExecutorServiceDemo.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/Scheduledexecutorservice/ScheduledExecutorServiceDemo.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/Scheduledexecutorservice/ScheduledExecutorServiceDemo.java diff --git a/core-java/src/main/java/com/baeldung/concurrent/atomic/SafeCounterWithLock.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/atomic/SafeCounterWithLock.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/atomic/SafeCounterWithLock.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/atomic/SafeCounterWithLock.java diff --git a/core-java/src/main/java/com/baeldung/concurrent/atomic/SafeCounterWithoutLock.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/atomic/SafeCounterWithoutLock.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/atomic/SafeCounterWithoutLock.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/atomic/SafeCounterWithoutLock.java diff --git a/core-java/src/main/java/com/baeldung/concurrent/atomic/UnsafeCounter.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/atomic/UnsafeCounter.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/atomic/UnsafeCounter.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/atomic/UnsafeCounter.java diff --git a/core-java/src/main/java/com/baeldung/concurrent/blockingqueue/BlockingQueueUsage.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/blockingqueue/BlockingQueueUsage.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/blockingqueue/BlockingQueueUsage.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/blockingqueue/BlockingQueueUsage.java diff --git a/core-java/src/main/java/com/baeldung/concurrent/blockingqueue/NumbersConsumer.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/blockingqueue/NumbersConsumer.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/blockingqueue/NumbersConsumer.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/blockingqueue/NumbersConsumer.java diff --git a/core-java/src/main/java/com/baeldung/concurrent/blockingqueue/NumbersProducer.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/blockingqueue/NumbersProducer.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/blockingqueue/NumbersProducer.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/blockingqueue/NumbersProducer.java diff --git a/core-java/src/main/java/com/baeldung/concurrent/countdownlatch/BrokenWorker.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/countdownlatch/BrokenWorker.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/countdownlatch/BrokenWorker.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/countdownlatch/BrokenWorker.java diff --git a/core-java/src/main/java/com/baeldung/concurrent/countdownlatch/WaitingWorker.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/countdownlatch/WaitingWorker.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/countdownlatch/WaitingWorker.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/countdownlatch/WaitingWorker.java diff --git a/core-java/src/main/java/com/baeldung/concurrent/countdownlatch/Worker.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/countdownlatch/Worker.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/countdownlatch/Worker.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/countdownlatch/Worker.java diff --git a/core-java/src/main/java/com/baeldung/concurrent/cyclicbarrier/CyclicBarrierDemo.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/cyclicbarrier/CyclicBarrierDemo.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/cyclicbarrier/CyclicBarrierDemo.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/cyclicbarrier/CyclicBarrierDemo.java diff --git a/core-java/src/main/java/com/baeldung/concurrent/cyclicbarrier/CyclicBarrierExample.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/cyclicbarrier/CyclicBarrierExample.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/cyclicbarrier/CyclicBarrierExample.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/cyclicbarrier/CyclicBarrierExample.java diff --git a/core-java/src/main/java/com/baeldung/concurrent/cyclicbarrier/Task.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/cyclicbarrier/Task.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/cyclicbarrier/Task.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/cyclicbarrier/Task.java diff --git a/core-java/src/main/java/com/baeldung/concurrent/delayqueue/DelayObject.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/delayqueue/DelayObject.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/delayqueue/DelayObject.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/delayqueue/DelayObject.java diff --git a/core-java/src/main/java/com/baeldung/concurrent/delayqueue/DelayQueueConsumer.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/delayqueue/DelayQueueConsumer.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/delayqueue/DelayQueueConsumer.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/delayqueue/DelayQueueConsumer.java diff --git a/core-java/src/main/java/com/baeldung/concurrent/delayqueue/DelayQueueProducer.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/delayqueue/DelayQueueProducer.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/delayqueue/DelayQueueProducer.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/delayqueue/DelayQueueProducer.java diff --git a/core-java/src/main/java/com/baeldung/concurrent/diningphilosophers/DiningPhilosophers.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/diningphilosophers/DiningPhilosophers.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/diningphilosophers/DiningPhilosophers.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/diningphilosophers/DiningPhilosophers.java diff --git a/core-java/src/main/java/com/baeldung/concurrent/diningphilosophers/Philosopher.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/diningphilosophers/Philosopher.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/diningphilosophers/Philosopher.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/diningphilosophers/Philosopher.java diff --git a/core-java/src/main/java/com/baeldung/concurrent/executor/ExecutorDemo.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/executor/ExecutorDemo.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/executor/ExecutorDemo.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/executor/ExecutorDemo.java diff --git a/core-java/src/main/java/com/baeldung/concurrent/executor/Invoker.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/executor/Invoker.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/executor/Invoker.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/executor/Invoker.java diff --git a/core-java/src/main/java/com/baeldung/concurrent/executorservice/ExecutorServiceDemo.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/executorservice/ExecutorServiceDemo.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/executorservice/ExecutorServiceDemo.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/executorservice/ExecutorServiceDemo.java diff --git a/core-java/src/main/java/com/baeldung/concurrent/executorservice/Task.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/executorservice/Task.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/executorservice/Task.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/executorservice/Task.java diff --git a/core-java/src/main/java/com/baeldung/concurrent/future/FactorialSquareCalculator.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/future/FactorialSquareCalculator.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/future/FactorialSquareCalculator.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/future/FactorialSquareCalculator.java diff --git a/core-java/src/main/java/com/baeldung/concurrent/future/FutureDemo.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/future/FutureDemo.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/future/FutureDemo.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/future/FutureDemo.java diff --git a/core-java/src/main/java/com/baeldung/concurrent/future/SquareCalculator.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/future/SquareCalculator.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/future/SquareCalculator.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/future/SquareCalculator.java diff --git a/core-java/src/main/java/com/baeldung/concurrent/locks/ReentrantLockWithCondition.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/locks/ReentrantLockWithCondition.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/locks/ReentrantLockWithCondition.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/locks/ReentrantLockWithCondition.java diff --git a/core-java/src/main/java/com/baeldung/concurrent/locks/SharedObjectWithLock.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/locks/SharedObjectWithLock.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/locks/SharedObjectWithLock.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/locks/SharedObjectWithLock.java diff --git a/core-java/src/main/java/com/baeldung/concurrent/locks/StampedLockDemo.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/locks/StampedLockDemo.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/locks/StampedLockDemo.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/locks/StampedLockDemo.java diff --git a/core-java/src/main/java/com/baeldung/concurrent/locks/SynchronizedHashMapWithRWLock.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/locks/SynchronizedHashMapWithRWLock.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/locks/SynchronizedHashMapWithRWLock.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/locks/SynchronizedHashMapWithRWLock.java diff --git a/core-java/src/main/java/com/baeldung/concurrent/phaser/LongRunningAction.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/phaser/LongRunningAction.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/phaser/LongRunningAction.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/phaser/LongRunningAction.java diff --git a/core-java/src/main/java/com/baeldung/concurrent/semaphore/SemaPhoreDemo.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/semaphore/SemaPhoreDemo.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/semaphore/SemaPhoreDemo.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/semaphore/SemaPhoreDemo.java diff --git a/core-java/src/main/java/com/baeldung/concurrent/semaphores/CounterUsingMutex.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/semaphores/CounterUsingMutex.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/semaphores/CounterUsingMutex.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/semaphores/CounterUsingMutex.java diff --git a/core-java/src/main/java/com/baeldung/concurrent/semaphores/DelayQueueUsingTimedSemaphore.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/semaphores/DelayQueueUsingTimedSemaphore.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/semaphores/DelayQueueUsingTimedSemaphore.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/semaphores/DelayQueueUsingTimedSemaphore.java diff --git a/core-java/src/main/java/com/baeldung/concurrent/semaphores/LoginQueueUsingSemaphore.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/semaphores/LoginQueueUsingSemaphore.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/semaphores/LoginQueueUsingSemaphore.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/semaphores/LoginQueueUsingSemaphore.java diff --git a/core-java/src/main/java/com/baeldung/concurrent/skiplist/Event.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/skiplist/Event.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/skiplist/Event.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/skiplist/Event.java diff --git a/core-java/src/main/java/com/baeldung/concurrent/skiplist/EventWindowSort.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/skiplist/EventWindowSort.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/skiplist/EventWindowSort.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/skiplist/EventWindowSort.java diff --git a/core-java/src/main/java/com/baeldung/concurrent/sleepwait/ThreadA.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/sleepwait/ThreadA.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/sleepwait/ThreadA.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/sleepwait/ThreadA.java diff --git a/core-java/src/main/java/com/baeldung/concurrent/sleepwait/ThreadB.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/sleepwait/ThreadB.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/sleepwait/ThreadB.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/sleepwait/ThreadB.java diff --git a/core-java/src/main/java/com/baeldung/concurrent/sleepwait/WaitSleepExample.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/sleepwait/WaitSleepExample.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/sleepwait/WaitSleepExample.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/sleepwait/WaitSleepExample.java diff --git a/core-java/src/main/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizedBlocks.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizedBlocks.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizedBlocks.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizedBlocks.java diff --git a/core-java/src/main/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizedMethods.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizedMethods.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizedMethods.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizedMethods.java diff --git a/core-java/src/main/java/com/baeldung/concurrent/threadfactory/BaeldungThreadFactory.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/threadfactory/BaeldungThreadFactory.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/threadfactory/BaeldungThreadFactory.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/threadfactory/BaeldungThreadFactory.java diff --git a/core-java/src/main/java/com/baeldung/concurrent/threadfactory/Demo.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/threadfactory/Demo.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/threadfactory/Demo.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/threadfactory/Demo.java diff --git a/core-java/src/main/java/com/baeldung/concurrent/threadfactory/Task.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/threadfactory/Task.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/threadfactory/Task.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/threadfactory/Task.java diff --git a/core-java/src/main/java/com/baeldung/concurrent/volatilekeyword/SharedObject.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/volatilekeyword/SharedObject.java similarity index 100% rename from core-java/src/main/java/com/baeldung/concurrent/volatilekeyword/SharedObject.java rename to core-java-concurrency/src/main/java/com/baeldung/concurrent/volatilekeyword/SharedObject.java diff --git a/core-java/src/main/java/com/baeldung/threadlocal/Context.java b/core-java-concurrency/src/main/java/com/baeldung/threadlocal/Context.java similarity index 100% rename from core-java/src/main/java/com/baeldung/threadlocal/Context.java rename to core-java-concurrency/src/main/java/com/baeldung/threadlocal/Context.java diff --git a/core-java/src/main/java/com/baeldung/threadlocal/SharedMapWithUserContext.java b/core-java-concurrency/src/main/java/com/baeldung/threadlocal/SharedMapWithUserContext.java similarity index 100% rename from core-java/src/main/java/com/baeldung/threadlocal/SharedMapWithUserContext.java rename to core-java-concurrency/src/main/java/com/baeldung/threadlocal/SharedMapWithUserContext.java diff --git a/core-java/src/main/java/com/baeldung/threadlocal/ThreadLocalWithUserContext.java b/core-java-concurrency/src/main/java/com/baeldung/threadlocal/ThreadLocalWithUserContext.java similarity index 100% rename from core-java/src/main/java/com/baeldung/threadlocal/ThreadLocalWithUserContext.java rename to core-java-concurrency/src/main/java/com/baeldung/threadlocal/ThreadLocalWithUserContext.java diff --git a/core-java/src/main/java/com/baeldung/threadlocal/UserRepository.java b/core-java-concurrency/src/main/java/com/baeldung/threadlocal/UserRepository.java similarity index 100% rename from core-java/src/main/java/com/baeldung/threadlocal/UserRepository.java rename to core-java-concurrency/src/main/java/com/baeldung/threadlocal/UserRepository.java diff --git a/core-java/src/main/java/com/baeldung/threadpool/CountingTask.java b/core-java-concurrency/src/main/java/com/baeldung/threadpool/CountingTask.java similarity index 100% rename from core-java/src/main/java/com/baeldung/threadpool/CountingTask.java rename to core-java-concurrency/src/main/java/com/baeldung/threadpool/CountingTask.java diff --git a/core-java/src/main/java/com/baeldung/threadpool/ExitingExecutorServiceExample.java b/core-java-concurrency/src/main/java/com/baeldung/threadpool/ExitingExecutorServiceExample.java similarity index 100% rename from core-java/src/main/java/com/baeldung/threadpool/ExitingExecutorServiceExample.java rename to core-java-concurrency/src/main/java/com/baeldung/threadpool/ExitingExecutorServiceExample.java diff --git a/core-java/src/main/java/com/baeldung/threadpool/TreeNode.java b/core-java-concurrency/src/main/java/com/baeldung/threadpool/TreeNode.java similarity index 100% rename from core-java/src/main/java/com/baeldung/threadpool/TreeNode.java rename to core-java-concurrency/src/main/java/com/baeldung/threadpool/TreeNode.java diff --git a/core-java/src/main/java/com/baeldung/transferqueue/Consumer.java b/core-java-concurrency/src/main/java/com/baeldung/transferqueue/Consumer.java similarity index 100% rename from core-java/src/main/java/com/baeldung/transferqueue/Consumer.java rename to core-java-concurrency/src/main/java/com/baeldung/transferqueue/Consumer.java diff --git a/core-java/src/main/java/com/baeldung/transferqueue/Producer.java b/core-java-concurrency/src/main/java/com/baeldung/transferqueue/Producer.java similarity index 100% rename from core-java/src/main/java/com/baeldung/transferqueue/Producer.java rename to core-java-concurrency/src/main/java/com/baeldung/transferqueue/Producer.java diff --git a/core-java-concurrency/src/main/java/log4j.properties b/core-java-concurrency/src/main/java/log4j.properties new file mode 100644 index 0000000000..5fe42d854c --- /dev/null +++ b/core-java-concurrency/src/main/java/log4j.properties @@ -0,0 +1,9 @@ +# Set root logger level to DEBUG and its only appender to A1. +log4j.rootLogger=DEBUG, A1 + +# A1 is set to be a ConsoleAppender. +log4j.appender.A1=org.apache.log4j.ConsoleAppender + +# A1 uses PatternLayout. +log4j.appender.A1.layout=org.apache.log4j.PatternLayout +log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n diff --git a/core-java-concurrency/src/main/resources/logback.xml b/core-java-concurrency/src/main/resources/logback.xml new file mode 100644 index 0000000000..ec0dc2469a --- /dev/null +++ b/core-java-concurrency/src/main/resources/logback.xml @@ -0,0 +1,19 @@ + + + + + web - %date [%thread] %-5level %logger{36} - %message%n + + + + + + + + + + + + + + \ No newline at end of file diff --git a/core-java/src/test/java/com/baeldung/completablefuture/CompletableFutureLongRunningUnitTest.java b/core-java-concurrency/src/test/java/com/baeldung/completablefuture/CompletableFutureLongRunningUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/completablefuture/CompletableFutureLongRunningUnitTest.java rename to core-java-concurrency/src/test/java/com/baeldung/completablefuture/CompletableFutureLongRunningUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/concurrent/accumulator/LongAccumulatorUnitTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/accumulator/LongAccumulatorUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/concurrent/accumulator/LongAccumulatorUnitTest.java rename to core-java-concurrency/src/test/java/com/baeldung/concurrent/accumulator/LongAccumulatorUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/concurrent/adder/LongAdderUnitTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/adder/LongAdderUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/concurrent/adder/LongAdderUnitTest.java rename to core-java-concurrency/src/test/java/com/baeldung/concurrent/adder/LongAdderUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/concurrent/atomic/ThreadSafeCounterTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/atomic/ThreadSafeCounterTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/concurrent/atomic/ThreadSafeCounterTest.java rename to core-java-concurrency/src/test/java/com/baeldung/concurrent/atomic/ThreadSafeCounterTest.java diff --git a/core-java/src/test/java/com/baeldung/concurrent/atomic/ThreadUnsafeCounterManualTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/atomic/ThreadUnsafeCounterManualTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/concurrent/atomic/ThreadUnsafeCounterManualTest.java rename to core-java-concurrency/src/test/java/com/baeldung/concurrent/atomic/ThreadUnsafeCounterManualTest.java diff --git a/core-java/src/test/java/com/baeldung/concurrent/copyonwrite/CopyOnWriteArrayListUnitTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/copyonwrite/CopyOnWriteArrayListUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/concurrent/copyonwrite/CopyOnWriteArrayListUnitTest.java rename to core-java-concurrency/src/test/java/com/baeldung/concurrent/copyonwrite/CopyOnWriteArrayListUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/concurrent/countdownlatch/CountdownLatchExampleIntegrationTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/countdownlatch/CountdownLatchExampleIntegrationTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/concurrent/countdownlatch/CountdownLatchExampleIntegrationTest.java rename to core-java-concurrency/src/test/java/com/baeldung/concurrent/countdownlatch/CountdownLatchExampleIntegrationTest.java diff --git a/core-java/src/test/java/com/baeldung/concurrent/delayqueue/DelayQueueIntegrationTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/delayqueue/DelayQueueIntegrationTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/concurrent/delayqueue/DelayQueueIntegrationTest.java rename to core-java-concurrency/src/test/java/com/baeldung/concurrent/delayqueue/DelayQueueIntegrationTest.java diff --git a/core-java/src/test/java/com/baeldung/concurrent/future/FactorialSquareCalculatorUnitTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/future/FactorialSquareCalculatorUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/concurrent/future/FactorialSquareCalculatorUnitTest.java rename to core-java-concurrency/src/test/java/com/baeldung/concurrent/future/FactorialSquareCalculatorUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/concurrent/future/SquareCalculatorIntegrationTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/future/SquareCalculatorIntegrationTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/concurrent/future/SquareCalculatorIntegrationTest.java rename to core-java-concurrency/src/test/java/com/baeldung/concurrent/future/SquareCalculatorIntegrationTest.java diff --git a/core-java/src/test/java/com/baeldung/concurrent/locks/SharedObjectWithLockManualTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/locks/SharedObjectWithLockManualTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/concurrent/locks/SharedObjectWithLockManualTest.java rename to core-java-concurrency/src/test/java/com/baeldung/concurrent/locks/SharedObjectWithLockManualTest.java diff --git a/core-java/src/test/java/com/baeldung/concurrent/locks/SynchronizedHashMapWithRWLockManualTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/locks/SynchronizedHashMapWithRWLockManualTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/concurrent/locks/SynchronizedHashMapWithRWLockManualTest.java rename to core-java-concurrency/src/test/java/com/baeldung/concurrent/locks/SynchronizedHashMapWithRWLockManualTest.java diff --git a/core-java/src/test/java/com/baeldung/concurrent/phaser/PhaserUnitTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/phaser/PhaserUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/concurrent/phaser/PhaserUnitTest.java rename to core-java-concurrency/src/test/java/com/baeldung/concurrent/phaser/PhaserUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/concurrent/priorityblockingqueue/PriorityBlockingQueueIntegrationTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/priorityblockingqueue/PriorityBlockingQueueIntegrationTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/concurrent/priorityblockingqueue/PriorityBlockingQueueIntegrationTest.java rename to core-java-concurrency/src/test/java/com/baeldung/concurrent/priorityblockingqueue/PriorityBlockingQueueIntegrationTest.java diff --git a/core-java/src/test/java/com/baeldung/concurrent/semaphores/SemaphoresManualTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/semaphores/SemaphoresManualTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/concurrent/semaphores/SemaphoresManualTest.java rename to core-java-concurrency/src/test/java/com/baeldung/concurrent/semaphores/SemaphoresManualTest.java diff --git a/core-java/src/test/java/com/baeldung/concurrent/skiplist/ConcurrentSkipListSetIntegrationTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/skiplist/ConcurrentSkipListSetIntegrationTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/concurrent/skiplist/ConcurrentSkipListSetIntegrationTest.java rename to core-java-concurrency/src/test/java/com/baeldung/concurrent/skiplist/ConcurrentSkipListSetIntegrationTest.java diff --git a/core-java/src/test/java/com/baeldung/concurrent/synchronize/BaeldungSychronizedBlockTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/synchronize/BaeldungSychronizedBlockTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/concurrent/synchronize/BaeldungSychronizedBlockTest.java rename to core-java-concurrency/src/test/java/com/baeldung/concurrent/synchronize/BaeldungSychronizedBlockTest.java diff --git a/core-java/src/test/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizeMethodsTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizeMethodsTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizeMethodsTest.java rename to core-java-concurrency/src/test/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizeMethodsTest.java diff --git a/core-java/src/test/java/com/baeldung/concurrent/volatilekeyword/SharedObjectManualTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/volatilekeyword/SharedObjectManualTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/concurrent/volatilekeyword/SharedObjectManualTest.java rename to core-java-concurrency/src/test/java/com/baeldung/concurrent/volatilekeyword/SharedObjectManualTest.java diff --git a/core-java/src/test/java/com/baeldung/java/concurrentmap/ConcurrentMapAggregateStatusManualTest.java b/core-java-concurrency/src/test/java/com/baeldung/java/concurrentmap/ConcurrentMapAggregateStatusManualTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/java/concurrentmap/ConcurrentMapAggregateStatusManualTest.java rename to core-java-concurrency/src/test/java/com/baeldung/java/concurrentmap/ConcurrentMapAggregateStatusManualTest.java diff --git a/core-java/src/test/java/com/baeldung/java/concurrentmap/ConcurrentMapNullKeyValueManualTest.java b/core-java-concurrency/src/test/java/com/baeldung/java/concurrentmap/ConcurrentMapNullKeyValueManualTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/java/concurrentmap/ConcurrentMapNullKeyValueManualTest.java rename to core-java-concurrency/src/test/java/com/baeldung/java/concurrentmap/ConcurrentMapNullKeyValueManualTest.java diff --git a/core-java/src/test/java/com/baeldung/java/concurrentmap/ConcurrentMapPerformanceManualTest.java b/core-java-concurrency/src/test/java/com/baeldung/java/concurrentmap/ConcurrentMapPerformanceManualTest.java similarity index 62% rename from core-java/src/test/java/com/baeldung/java/concurrentmap/ConcurrentMapPerformanceManualTest.java rename to core-java-concurrency/src/test/java/com/baeldung/java/concurrentmap/ConcurrentMapPerformanceManualTest.java index 5c1612ca60..3f36d0df5d 100644 --- a/core-java/src/test/java/com/baeldung/java/concurrentmap/ConcurrentMapPerformanceManualTest.java +++ b/core-java-concurrency/src/test/java/com/baeldung/java/concurrentmap/ConcurrentMapPerformanceManualTest.java @@ -1,27 +1,31 @@ package com.baeldung.java.concurrentmap; -import org.junit.Test; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; import java.util.Collections; import java.util.HashMap; import java.util.Hashtable; import java.util.Map; -import java.util.concurrent.*; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.ThreadLocalRandom; +import java.util.concurrent.TimeUnit; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import org.junit.Test; public class ConcurrentMapPerformanceManualTest { @Test public void givenMaps_whenGetPut500KTimes_thenConcurrentMapFaster() throws Exception { - Map hashtable = new Hashtable<>(); - Map synchronizedHashMap = Collections.synchronizedMap(new HashMap<>()); - Map concurrentHashMap = new ConcurrentHashMap<>(); + final Map hashtable = new Hashtable<>(); + final Map synchronizedHashMap = Collections.synchronizedMap(new HashMap<>()); + final Map concurrentHashMap = new ConcurrentHashMap<>(); - long hashtableAvgRuntime = timeElapseForGetPut(hashtable); - long syncHashMapAvgRuntime = timeElapseForGetPut(synchronizedHashMap); - long concurrentHashMapAvgRuntime = timeElapseForGetPut(concurrentHashMap); + final long hashtableAvgRuntime = timeElapseForGetPut(hashtable); + final long syncHashMapAvgRuntime = timeElapseForGetPut(synchronizedHashMap); + final long concurrentHashMapAvgRuntime = timeElapseForGetPut(concurrentHashMap); System.out.println(String.format("Hashtable: %s, syncHashMap: %s, ConcurrentHashMap: %s", hashtableAvgRuntime, syncHashMapAvgRuntime, concurrentHashMapAvgRuntime)); @@ -31,13 +35,13 @@ public class ConcurrentMapPerformanceManualTest { } private long timeElapseForGetPut(Map map) throws InterruptedException { - ExecutorService executorService = Executors.newFixedThreadPool(4); - long startTime = System.nanoTime(); + final ExecutorService executorService = Executors.newFixedThreadPool(4); + final long startTime = System.nanoTime(); for (int i = 0; i < 4; i++) { executorService.execute(() -> { for (int j = 0; j < 500_000; j++) { - int value = ThreadLocalRandom.current().nextInt(10000); - String key = String.valueOf(value); + final int value = ThreadLocalRandom.current().nextInt(10000); + final String key = String.valueOf(value); map.put(key, value); map.get(key); } @@ -56,11 +60,11 @@ public class ConcurrentMapPerformanceManualTest { return 1; } } - int executeTimes = 5000; + final int executeTimes = 5000; - Map mapOfSameHash = new ConcurrentHashMap<>(); + final Map mapOfSameHash = new ConcurrentHashMap<>(); ExecutorService executorService = Executors.newFixedThreadPool(2); - long sameHashStartTime = System.currentTimeMillis(); + final long sameHashStartTime = System.currentTimeMillis(); for (int i = 0; i < 2; i++) { executorService.execute(() -> { for (int j = 0; j < executeTimes; j++) { @@ -71,10 +75,10 @@ public class ConcurrentMapPerformanceManualTest { executorService.shutdown(); executorService.awaitTermination(5, TimeUnit.SECONDS); - long mapOfSameHashDuration = System.currentTimeMillis() - sameHashStartTime; - Map mapOfDefaultHash = new ConcurrentHashMap<>(); + final long mapOfSameHashDuration = System.currentTimeMillis() - sameHashStartTime; + final Map mapOfDefaultHash = new ConcurrentHashMap<>(); executorService = Executors.newFixedThreadPool(2); - long defaultHashStartTime = System.currentTimeMillis(); + final long defaultHashStartTime = System.currentTimeMillis(); for (int i = 0; i < 2; i++) { executorService.execute(() -> { for (int j = 0; j < executeTimes; j++) { @@ -85,11 +89,11 @@ public class ConcurrentMapPerformanceManualTest { executorService.shutdown(); executorService.awaitTermination(5, TimeUnit.SECONDS); - long mapOfDefaultHashDuration = System.currentTimeMillis() - defaultHashStartTime; + final long mapOfDefaultHashDuration = System.currentTimeMillis() - defaultHashStartTime; assertEquals(executeTimes * 2, mapOfDefaultHash.size()); assertEquals(executeTimes * 2, mapOfSameHash.size()); System.out.println(String.format("same-hash: %s, default-hash: %s", mapOfSameHashDuration, mapOfDefaultHashDuration)); - assertTrue("same hashCode() should greatly degrade performance", mapOfSameHashDuration > mapOfDefaultHashDuration * 10); + assertTrue("same hashCode() should greatly degrade performance", mapOfSameHashDuration > (mapOfDefaultHashDuration * 10)); } } diff --git a/core-java/src/test/java/com/baeldung/java/concurrentmap/ConcurrentNavigableMapManualTest.java b/core-java-concurrency/src/test/java/com/baeldung/java/concurrentmap/ConcurrentNavigableMapManualTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/java/concurrentmap/ConcurrentNavigableMapManualTest.java rename to core-java-concurrency/src/test/java/com/baeldung/java/concurrentmap/ConcurrentNavigableMapManualTest.java diff --git a/core-java/src/test/java/com/baeldung/java/concurrentmap/ConcurretMapMemoryConsistencyManualTest.java b/core-java-concurrency/src/test/java/com/baeldung/java/concurrentmap/ConcurretMapMemoryConsistencyManualTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/java/concurrentmap/ConcurretMapMemoryConsistencyManualTest.java rename to core-java-concurrency/src/test/java/com/baeldung/java/concurrentmap/ConcurretMapMemoryConsistencyManualTest.java diff --git a/core-java/src/test/java/com/baeldung/java/concurrentmodification/ConcurrentModificationUnitTest.java b/core-java-concurrency/src/test/java/com/baeldung/java/concurrentmodification/ConcurrentModificationUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/java/concurrentmodification/ConcurrentModificationUnitTest.java rename to core-java-concurrency/src/test/java/com/baeldung/java/concurrentmodification/ConcurrentModificationUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/java8/Java8ExecutorServiceIntegrationTest.java b/core-java-concurrency/src/test/java/com/baeldung/java8/Java8ExecutorServiceIntegrationTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/java8/Java8ExecutorServiceIntegrationTest.java rename to core-java-concurrency/src/test/java/com/baeldung/java8/Java8ExecutorServiceIntegrationTest.java diff --git a/core-java/src/test/java/com/baeldung/synchronousqueue/SynchronousQueueIntegrationTest.java b/core-java-concurrency/src/test/java/com/baeldung/synchronousqueue/SynchronousQueueIntegrationTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/synchronousqueue/SynchronousQueueIntegrationTest.java rename to core-java-concurrency/src/test/java/com/baeldung/synchronousqueue/SynchronousQueueIntegrationTest.java diff --git a/core-java/src/test/java/com/baeldung/threadlocal/ThreadLocalIntegrationTest.java b/core-java-concurrency/src/test/java/com/baeldung/threadlocal/ThreadLocalIntegrationTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/threadlocal/ThreadLocalIntegrationTest.java rename to core-java-concurrency/src/test/java/com/baeldung/threadlocal/ThreadLocalIntegrationTest.java diff --git a/core-java/src/test/java/com/baeldung/threadpool/CoreThreadPoolIntegrationTest.java b/core-java-concurrency/src/test/java/com/baeldung/threadpool/CoreThreadPoolIntegrationTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/threadpool/CoreThreadPoolIntegrationTest.java rename to core-java-concurrency/src/test/java/com/baeldung/threadpool/CoreThreadPoolIntegrationTest.java diff --git a/core-java/src/test/java/com/baeldung/threadpool/GuavaThreadPoolIntegrationTest.java b/core-java-concurrency/src/test/java/com/baeldung/threadpool/GuavaThreadPoolIntegrationTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/threadpool/GuavaThreadPoolIntegrationTest.java rename to core-java-concurrency/src/test/java/com/baeldung/threadpool/GuavaThreadPoolIntegrationTest.java diff --git a/core-java/src/test/java/com/baeldung/transferqueue/TransferQueueIntegrationTest.java b/core-java-concurrency/src/test/java/com/baeldung/transferqueue/TransferQueueIntegrationTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/transferqueue/TransferQueueIntegrationTest.java rename to core-java-concurrency/src/test/java/com/baeldung/transferqueue/TransferQueueIntegrationTest.java diff --git a/core-java/src/test/java/org/baeldung/java/streams/ThreadPoolInParallelStreamIntegrationTest.java b/core-java-concurrency/src/test/java/org/baeldung/java/streams/ThreadPoolInParallelStreamIntegrationTest.java similarity index 100% rename from core-java/src/test/java/org/baeldung/java/streams/ThreadPoolInParallelStreamIntegrationTest.java rename to core-java-concurrency/src/test/java/org/baeldung/java/streams/ThreadPoolInParallelStreamIntegrationTest.java diff --git a/core-java-concurrency/src/test/resources/.gitignore b/core-java-concurrency/src/test/resources/.gitignore new file mode 100644 index 0000000000..83c05e60c8 --- /dev/null +++ b/core-java-concurrency/src/test/resources/.gitignore @@ -0,0 +1,13 @@ +*.class + +#folders# +/target +/neoDb* +/data +/src/main/webapp/WEB-INF/classes +*/META-INF/* + +# Packaged files # +*.jar +*.war +*.ear \ No newline at end of file diff --git a/core-java/README.md b/core-java/README.md index a4b5127e98..ef63ac81e9 100644 --- a/core-java/README.md +++ b/core-java/README.md @@ -23,7 +23,6 @@ - [Guide to Java Reflection](http://www.baeldung.com/java-reflection) - [A Guide to Java Sockets](http://www.baeldung.com/a-guide-to-java-sockets) - [Java 8 Collectors](http://www.baeldung.com/java-8-collectors) -- [Guide To CompletableFuture](http://www.baeldung.com/java-completablefuture) - [Guide to Java 8’s Functional Interfaces](http://www.baeldung.com/java-8-functional-interfaces) - [Convert char to String in Java](http://www.baeldung.com/java-convert-char-to-string) - [Random List Element](http://www.baeldung.com/java-random-list-element) @@ -31,12 +30,10 @@ - [Java 8 – Powerful Comparison with Lambdas](http://www.baeldung.com/java-8-sort-lambda) - [Java – Directory Size](http://www.baeldung.com/java-folder-size) - [Java – Try with Resources](http://www.baeldung.com/java-try-with-resources) -- [A Guide to the Java ExecutorService](http://www.baeldung.com/java-executor-service-tutorial) - [Java 8 New Features](http://www.baeldung.com/java-8-new-features) - [Lambda Expressions and Functional Interfaces: Tips and Best Practices](http://www.baeldung.com/java-8-lambda-expressions-tips) - [The Double Colon Operator in Java 8](http://www.baeldung.com/java-8-double-colon-operator) - [Java 8 Streams Advanced](http://www.baeldung.com/java-8-streams) -- [Introduction to Thread Pools in Java](http://www.baeldung.com/thread-pool-java-and-guava) - [Introduction to Java 8 Streams](http://www.baeldung.com/java-8-streams-introduction) - [Guide to the Fork/Join Framework in Java](http://www.baeldung.com/java-fork-join) - [How to Print Screen in Java](http://www.baeldung.com/print-screen-in-java) @@ -57,18 +54,11 @@ - [The Basics of Java Generics](http://www.baeldung.com/java-generics) - [The Traveling Salesman Problem in Java](http://www.baeldung.com/java-simulated-annealing-for-traveling-salesman) - [How to Create an Executable JAR with Maven](http://www.baeldung.com/executable-jar-with-maven) -- [Guide to java.util.concurrent.Future](http://www.baeldung.com/java-future) -- [Guide to java.util.concurrent.BlockingQueue](http://www.baeldung.com/java-blocking-queue) -- [Guide to CountDownLatch in Java](http://www.baeldung.com/java-countdown-latch) - [How to Design a Genetic Algorithm in Java](http://www.baeldung.com/java-genetic-algorithm) -- [A Guide to ConcurrentMap](http://www.baeldung.com/java-concurrent-map) -- [Guide to PriorityBlockingQueue in Java](http://www.baeldung.com/java-priority-blocking-queue) - [Guide to Java 8 groupingBy Collector](http://www.baeldung.com/java-groupingby-collector) -- [Avoiding the ConcurrentModificationException in Java](http://www.baeldung.com/java-concurrentmodificationexception) - [Guide to WeakHashMap in Java](http://www.baeldung.com/java-weakhashmap) - [Strategy Design Pattern in Java 8](http://www.baeldung.com/java-strategy-pattern) - [Java 8 and Infinite Streams](http://www.baeldung.com/java-inifinite-streams) -- [Custom Thread Pools In Java 8 Parallel Streams](http://www.baeldung.com/java-8-parallel-streams-custom-threadpool) - [String Operations with Java Streams](http://www.baeldung.com/java-stream-operations-on-strings) - [Spring Security – Cache Control Headers](http://www.baeldung.com/spring-security-cache-control-headers) - [Basic Introduction to JMX](http://www.baeldung.com/java-management-extensions) @@ -91,7 +81,6 @@ - [Avoiding ConcurrentModificationException when iterating and removing](http://www.baeldung.com/avoiding-concurrentmodificationexception-when-iterating-and-removing) - [Removing all nulls from a List in Java](http://www.baeldung.com/java-remove-nulls-from-list) - [Removing all duplicates from a List in Java](http://www.baeldung.com/java-remove-duplicates-from-list) -- [An Introduction to ThreadLocal in Java](http://www.baeldung.com/java-threadlocal) - [Using Math.pow in Java](http://www.baeldung.com/java-math-pow) - [Converting Strings to Enums in Java](http://www.baeldung.com/java-string-to-enum) - [Flattening Nested Collections in Java](http://www.baeldung.com/java-flatten-nested-collections) @@ -101,19 +90,12 @@ - [HashSet and TreeSet Comparison](http://www.baeldung.com/java-hashset-vs-treeset) - [How to Perform a Simple HTTP Request in Java](http://www.baeldung.com/java-http-request) - [Call Methods at Runtime Using Java Reflection](http://www.baeldung.com/java-method-reflection) -- [Guide to DelayQueue](http://www.baeldung.com/java-delay-queue) - [Guide to UUID in JAVA](http://www.baeldung.com/guide-to-uuid-in-java) - [Comparing getPath(), getAbsolutePath(), and getCanonicalPath() in Java](http://www.baeldung.com/java-path) - [How to Add a Single Element to a Stream](http://www.baeldung.com/java-stream-append-prepend) - [Iterating Over Enum Values in Java](http://www.baeldung.com/java-enum-iteration) -- [A Guide to Java SynchronousQueue](http://www.baeldung.com/java-synchronous-queue) -- [Guide to the Java TransferQueue](http://www.baeldung.com/java-transfer-queue) - [Kotlin Java Interoperability](http://www.baeldung.com/kotlin-java-interoperability) -- [Guide to the ConcurrentSkipListMap](http://www.baeldung.com/java-concurrent-skip-list-map) -- [Difference Between Wait and Sleep in Java](http://www.baeldung.com/java-wait-and-sleep) -- [LongAdder and LongAccumulator in Java](http://www.baeldung.com/java-longadder-and-longaccumulator) - [Using Java MappedByteBuffer](http://www.baeldung.com/java-mapped-byte-buffer) -- [The Dining Philosophers Problem in Java](http://www.baeldung.com/java-dining-philoshophers) - [The Difference Between map() and flatMap()](http://www.baeldung.com/java-difference-map-and-flatmap) - [How to Round a Number to N Decimal Places in Java](http://www.baeldung.com/java-round-decimal-number) - [Changing Annotation Parameters At Runtime](http://www.baeldung.com/java-reflection-change-annotation-params) @@ -122,21 +104,17 @@ - [Changing the Order in a Sum Operation Can Produce Different Results?](http://www.baeldung.com/java-floating-point-sum-order) - [How to Get a Name of a Method Being Executed?](http://www.baeldung.com/java-name-of-executing-method) - [Iterate over a Map in Java](http://www.baeldung.com/java-iterate-map) -- [CyclicBarrier in Java](http://www.baeldung.com/java-cyclic-barrier) - [Dynamic Proxies in Java](http://www.baeldung.com/java-dynamic-proxies) - [How to Copy an Array in Java](http://www.baeldung.com/java-array-copy) - [Introduction to JDBC](http://www.baeldung.com/java-jdbc) -- [Guide to CopyOnWriteArrayList](http://www.baeldung.com/java-copy-on-write-arraylist) - [Period and Duration in Java](http://www.baeldung.com/java-period-duration) - [Converting a Stack Trace to a String in Java](http://www.baeldung.com/java-stacktrace-to-string) -- [Guide to the Java Phaser](http://www.baeldung.com/java-phaser) - [Count Occurrences of a Char in a String](http://www.baeldung.com/java-count-chars) - [Java Double Brace Initialization](http://www.baeldung.com/java-double-brace-initialization) - [The StackOverflowError in Java](http://www.baeldung.com/java-stack-overflow-error) - [Split a String in Java](http://www.baeldung.com/java-split-string) - [Introduction to Java Serialization](http://www.baeldung.com/java-serialization) - [How to Remove the Last Character of a String?](http://www.baeldung.com/java-remove-last-character-of-string) -- [Guide to Synchronized Keyword in Java](http://www.baeldung.com/java-synchronized) - [ClassNotFoundException vs NoClassDefFoundError](http://www.baeldung.com/java-classnotfoundexception-and-noclassdeffounderror) - [Guide to UUID in Java](http://www.baeldung.com/java-uuid) - [How to Get the Last Element of a Stream in Java?](http://www.baeldung.com/java-stream-last-element) From 0b85b0a46637677048b7236874944208ec2dd44c Mon Sep 17 00:00:00 2001 From: lor6 Date: Sun, 27 Aug 2017 14:20:31 +0300 Subject: [PATCH 02/73] functional bean registration test (#2503) --- .../com/baeldung/functional/MyService.java | 13 ++++++ .../functional/BeanRegistrationTest.java | 42 +++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 spring-5/src/main/java/com/baeldung/functional/MyService.java create mode 100644 spring-5/src/test/java/com/baeldung/functional/BeanRegistrationTest.java diff --git a/spring-5/src/main/java/com/baeldung/functional/MyService.java b/spring-5/src/main/java/com/baeldung/functional/MyService.java new file mode 100644 index 0000000000..d85a860f06 --- /dev/null +++ b/spring-5/src/main/java/com/baeldung/functional/MyService.java @@ -0,0 +1,13 @@ +package com.baeldung.functional; + +import java.util.Random; + +import org.springframework.stereotype.Component; + +public class MyService { + + public int getRandomNumber(){ + return (new Random().nextInt(10)); + } + +} diff --git a/spring-5/src/test/java/com/baeldung/functional/BeanRegistrationTest.java b/spring-5/src/test/java/com/baeldung/functional/BeanRegistrationTest.java new file mode 100644 index 0000000000..0b1542dbbc --- /dev/null +++ b/spring-5/src/test/java/com/baeldung/functional/BeanRegistrationTest.java @@ -0,0 +1,42 @@ +package com.baeldung.functional; + +import static org.junit.Assert.*; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.web.context.support.GenericWebApplicationContext; + +import com.baeldung.Spring5Application; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = Spring5Application.class) +public class BeanRegistrationTest { + + @Autowired + private GenericWebApplicationContext context; + + @Test + public void whenRegisterBean_thenOk() { + context.registerBean(MyService.class, () -> new MyService()); + MyService myService = (MyService) context.getBean("com.baeldung.functional.MyService"); + assertTrue(myService.getRandomNumber() < 10); + } + + @Test + public void whenRegisterBeanWithName_thenOk() { + context.registerBean("mySecondService", MyService.class, () -> new MyService()); + MyService mySecondService = (MyService) context.getBean("mySecondService"); + assertTrue(mySecondService.getRandomNumber() < 10); + } + + @Test + public void whenRegisterBeanWithCallback_thenOk() { + context.registerBean("myCallbackService", MyService.class, () -> new MyService(), bd -> bd.setAutowireCandidate(false)); + MyService myCallbackService = (MyService) context.getBean("myCallbackService"); + assertTrue(myCallbackService.getRandomNumber() < 10); + } + +} From 515e4caaca07032e213b0afe09d90d8cda3bd13f Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sun, 27 Aug 2017 13:39:19 +0200 Subject: [PATCH 03/73] Add core-java-concurrency to main pom (#2507) * Add core-java-concurrency * Refactor codebase --- .../atomic/SafeCounterWithLock.java | 4 ++-- .../atomic/SafeCounterWithoutLock.java | 4 ++-- .../concurrent/atomic/UnsafeCounter.java | 6 ++--- .../com/baeldung/threadlocal/Context.java | 6 ++--- .../threadlocal/SharedMapWithUserContext.java | 4 ++-- .../ThreadLocalWithUserContext.java | 2 +- .../baeldung/threadlocal/UserRepository.java | 2 +- .../com/baeldung/threadpool/CountingTask.java | 8 ++++--- .../com/baeldung/threadpool/TreeNode.java | 17 +++++++++----- .../com/baeldung/transferqueue/Consumer.java | 6 ++--- .../com/baeldung/transferqueue/Producer.java | 6 ++--- .../CompletableFutureLongRunningUnitTest.java | 6 ++++- .../CountdownLatchExampleIntegrationTest.java | 10 +++++---- .../SquareCalculatorIntegrationTest.java | 1 - ...nchronizedHashMapWithRWLockManualTest.java | 4 +--- .../ConcurrentMapNullKeyValueManualTest.java | 2 +- .../ConcurrentNavigableMapManualTest.java | 22 +++++++++---------- .../ConcurrentModificationUnitTest.java | 15 ++++++------- .../Java8ExecutorServiceIntegrationTest.java | 2 +- ...adPoolInParallelStreamIntegrationTest.java | 5 ++++- pom.xml | 1 + 21 files changed, 74 insertions(+), 59 deletions(-) diff --git a/core-java-concurrency/src/main/java/com/baeldung/concurrent/atomic/SafeCounterWithLock.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/atomic/SafeCounterWithLock.java index 38633011bf..e3a1629ce1 100644 --- a/core-java-concurrency/src/main/java/com/baeldung/concurrent/atomic/SafeCounterWithLock.java +++ b/core-java-concurrency/src/main/java/com/baeldung/concurrent/atomic/SafeCounterWithLock.java @@ -3,11 +3,11 @@ package com.baeldung.concurrent.atomic; public class SafeCounterWithLock { private volatile int counter; - public int getValue() { + int getValue() { return counter; } - public synchronized void increment() { + synchronized void increment() { counter++; } } diff --git a/core-java-concurrency/src/main/java/com/baeldung/concurrent/atomic/SafeCounterWithoutLock.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/atomic/SafeCounterWithoutLock.java index 41e10789a6..18ade35efb 100644 --- a/core-java-concurrency/src/main/java/com/baeldung/concurrent/atomic/SafeCounterWithoutLock.java +++ b/core-java-concurrency/src/main/java/com/baeldung/concurrent/atomic/SafeCounterWithoutLock.java @@ -5,11 +5,11 @@ import java.util.concurrent.atomic.AtomicInteger; public class SafeCounterWithoutLock { private final AtomicInteger counter = new AtomicInteger(0); - public int getValue() { + int getValue() { return counter.get(); } - public void increment() { + void increment() { while(true) { int existingValue = getValue(); int newValue = existingValue + 1; diff --git a/core-java-concurrency/src/main/java/com/baeldung/concurrent/atomic/UnsafeCounter.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/atomic/UnsafeCounter.java index 8a72788842..500ef5bd7e 100644 --- a/core-java-concurrency/src/main/java/com/baeldung/concurrent/atomic/UnsafeCounter.java +++ b/core-java-concurrency/src/main/java/com/baeldung/concurrent/atomic/UnsafeCounter.java @@ -1,13 +1,13 @@ package com.baeldung.concurrent.atomic; public class UnsafeCounter { - int counter; + private int counter; - public int getValue() { + int getValue() { return counter; } - public void increment() { + void increment() { counter++; } } diff --git a/core-java-concurrency/src/main/java/com/baeldung/threadlocal/Context.java b/core-java-concurrency/src/main/java/com/baeldung/threadlocal/Context.java index 241fb2f1e0..88b78fb259 100644 --- a/core-java-concurrency/src/main/java/com/baeldung/threadlocal/Context.java +++ b/core-java-concurrency/src/main/java/com/baeldung/threadlocal/Context.java @@ -4,14 +4,14 @@ package com.baeldung.threadlocal; public class Context { private final String userName; - public Context(String userName) { + Context(String userName) { this.userName = userName; } @Override public String toString() { return "Context{" + - "userNameSecret='" + userName + '\'' + - '}'; + "userNameSecret='" + userName + '\'' + + '}'; } } diff --git a/core-java-concurrency/src/main/java/com/baeldung/threadlocal/SharedMapWithUserContext.java b/core-java-concurrency/src/main/java/com/baeldung/threadlocal/SharedMapWithUserContext.java index e5854e218a..8cb4b3968f 100644 --- a/core-java-concurrency/src/main/java/com/baeldung/threadlocal/SharedMapWithUserContext.java +++ b/core-java-concurrency/src/main/java/com/baeldung/threadlocal/SharedMapWithUserContext.java @@ -5,11 +5,11 @@ import java.util.Map; import java.util.concurrent.ConcurrentHashMap; public class SharedMapWithUserContext implements Runnable { - public final static Map userContextPerUserId = new ConcurrentHashMap<>(); + final static Map userContextPerUserId = new ConcurrentHashMap<>(); private final Integer userId; private UserRepository userRepository = new UserRepository(); - public SharedMapWithUserContext(Integer userId) { + SharedMapWithUserContext(Integer userId) { this.userId = userId; } diff --git a/core-java-concurrency/src/main/java/com/baeldung/threadlocal/ThreadLocalWithUserContext.java b/core-java-concurrency/src/main/java/com/baeldung/threadlocal/ThreadLocalWithUserContext.java index de7e4a0369..d4ab906c30 100644 --- a/core-java-concurrency/src/main/java/com/baeldung/threadlocal/ThreadLocalWithUserContext.java +++ b/core-java-concurrency/src/main/java/com/baeldung/threadlocal/ThreadLocalWithUserContext.java @@ -10,7 +10,7 @@ public class ThreadLocalWithUserContext implements Runnable { private final Integer userId; private UserRepository userRepository = new UserRepository(); - public ThreadLocalWithUserContext(Integer userId) { + ThreadLocalWithUserContext(Integer userId) { this.userId = userId; } diff --git a/core-java-concurrency/src/main/java/com/baeldung/threadlocal/UserRepository.java b/core-java-concurrency/src/main/java/com/baeldung/threadlocal/UserRepository.java index 3fe76f75c0..2597594940 100644 --- a/core-java-concurrency/src/main/java/com/baeldung/threadlocal/UserRepository.java +++ b/core-java-concurrency/src/main/java/com/baeldung/threadlocal/UserRepository.java @@ -4,7 +4,7 @@ import java.util.UUID; public class UserRepository { - public String getUserNameForUserId(Integer userId) { + String getUserNameForUserId(Integer userId) { return UUID.randomUUID().toString(); } } diff --git a/core-java-concurrency/src/main/java/com/baeldung/threadpool/CountingTask.java b/core-java-concurrency/src/main/java/com/baeldung/threadpool/CountingTask.java index effdf54916..a7447d040f 100644 --- a/core-java-concurrency/src/main/java/com/baeldung/threadpool/CountingTask.java +++ b/core-java-concurrency/src/main/java/com/baeldung/threadpool/CountingTask.java @@ -2,19 +2,21 @@ package com.baeldung.threadpool; import java.util.concurrent.ForkJoinTask; import java.util.concurrent.RecursiveTask; -import java.util.stream.Collectors; public class CountingTask extends RecursiveTask { private final TreeNode node; - public CountingTask(TreeNode node) { + CountingTask(TreeNode node) { this.node = node; } @Override protected Integer compute() { - return node.value + node.children.stream().map(childNode -> new CountingTask(childNode).fork()).collect(Collectors.summingInt(ForkJoinTask::join)); + return node.getValue() + node.getChildren().stream() + .map(childNode -> new CountingTask(childNode).fork()) + .mapToInt(ForkJoinTask::join) + .sum(); } } diff --git a/core-java-concurrency/src/main/java/com/baeldung/threadpool/TreeNode.java b/core-java-concurrency/src/main/java/com/baeldung/threadpool/TreeNode.java index 9b43152074..65dfed01a2 100644 --- a/core-java-concurrency/src/main/java/com/baeldung/threadpool/TreeNode.java +++ b/core-java-concurrency/src/main/java/com/baeldung/threadpool/TreeNode.java @@ -1,18 +1,25 @@ package com.baeldung.threadpool; -import java.util.Set; - import com.google.common.collect.Sets; +import java.util.Set; + public class TreeNode { - int value; + private int value; - Set children; + private Set children; - public TreeNode(int value, TreeNode... children) { + TreeNode(int value, TreeNode... children) { this.value = value; this.children = Sets.newHashSet(children); } + public int getValue() { + return value; + } + + public Set getChildren() { + return children; + } } diff --git a/core-java-concurrency/src/main/java/com/baeldung/transferqueue/Consumer.java b/core-java-concurrency/src/main/java/com/baeldung/transferqueue/Consumer.java index a5f70d9df5..f3be6a030e 100644 --- a/core-java-concurrency/src/main/java/com/baeldung/transferqueue/Consumer.java +++ b/core-java-concurrency/src/main/java/com/baeldung/transferqueue/Consumer.java @@ -11,10 +11,10 @@ public class Consumer implements Runnable { private final TransferQueue transferQueue; private final String name; - private final int numberOfMessagesToConsume; - public final AtomicInteger numberOfConsumedMessages = new AtomicInteger(); + final int numberOfMessagesToConsume; + final AtomicInteger numberOfConsumedMessages = new AtomicInteger(); - public Consumer(TransferQueue transferQueue, String name, int numberOfMessagesToConsume) { + Consumer(TransferQueue transferQueue, String name, int numberOfMessagesToConsume) { this.transferQueue = transferQueue; this.name = name; this.numberOfMessagesToConsume = numberOfMessagesToConsume; diff --git a/core-java-concurrency/src/main/java/com/baeldung/transferqueue/Producer.java b/core-java-concurrency/src/main/java/com/baeldung/transferqueue/Producer.java index c7df7c410a..b73cf5ac19 100644 --- a/core-java-concurrency/src/main/java/com/baeldung/transferqueue/Producer.java +++ b/core-java-concurrency/src/main/java/com/baeldung/transferqueue/Producer.java @@ -12,10 +12,10 @@ public class Producer implements Runnable { private final TransferQueue transferQueue; private final String name; - private final Integer numberOfMessagesToProduce; - public final AtomicInteger numberOfProducedMessages = new AtomicInteger(); + final Integer numberOfMessagesToProduce; + final AtomicInteger numberOfProducedMessages = new AtomicInteger(); - public Producer(TransferQueue transferQueue, String name, Integer numberOfMessagesToProduce) { + Producer(TransferQueue transferQueue, String name, Integer numberOfMessagesToProduce) { this.transferQueue = transferQueue; this.name = name; this.numberOfMessagesToProduce = numberOfMessagesToProduce; diff --git a/core-java-concurrency/src/test/java/com/baeldung/completablefuture/CompletableFutureLongRunningUnitTest.java b/core-java-concurrency/src/test/java/com/baeldung/completablefuture/CompletableFutureLongRunningUnitTest.java index 0a6d94e126..45d2ec68e4 100644 --- a/core-java-concurrency/src/test/java/com/baeldung/completablefuture/CompletableFutureLongRunningUnitTest.java +++ b/core-java-concurrency/src/test/java/com/baeldung/completablefuture/CompletableFutureLongRunningUnitTest.java @@ -4,7 +4,11 @@ import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.concurrent.*; +import java.util.concurrent.CancellationException; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; import java.util.stream.Collectors; import java.util.stream.Stream; diff --git a/core-java-concurrency/src/test/java/com/baeldung/concurrent/countdownlatch/CountdownLatchExampleIntegrationTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/countdownlatch/CountdownLatchExampleIntegrationTest.java index fc343e4cee..d49a8b8590 100644 --- a/core-java-concurrency/src/test/java/com/baeldung/concurrent/countdownlatch/CountdownLatchExampleIntegrationTest.java +++ b/core-java-concurrency/src/test/java/com/baeldung/concurrent/countdownlatch/CountdownLatchExampleIntegrationTest.java @@ -18,7 +18,9 @@ public class CountdownLatchExampleIntegrationTest { // Given List outputScraper = Collections.synchronizedList(new ArrayList<>()); CountDownLatch countDownLatch = new CountDownLatch(5); - List workers = Stream.generate(() -> new Thread(new Worker(outputScraper, countDownLatch))).limit(5).collect(toList()); + List workers = Stream.generate(() -> new Thread(new Worker(outputScraper, countDownLatch))) + .limit(5) + .collect(toList()); // When workers.forEach(Thread::start); @@ -26,7 +28,6 @@ public class CountdownLatchExampleIntegrationTest { outputScraper.add("Latch released"); // Then - outputScraper.forEach(Object::toString); assertThat(outputScraper).containsExactly("Counted down", "Counted down", "Counted down", "Counted down", "Counted down", "Latch released"); } @@ -35,7 +36,9 @@ public class CountdownLatchExampleIntegrationTest { // Given List outputScraper = Collections.synchronizedList(new ArrayList<>()); CountDownLatch countDownLatch = new CountDownLatch(5); - List workers = Stream.generate(() -> new Thread(new BrokenWorker(outputScraper, countDownLatch))).limit(5).collect(toList()); + List workers = Stream.generate(() -> new Thread(new BrokenWorker(outputScraper, countDownLatch))) + .limit(5) + .collect(toList()); // When workers.forEach(Thread::start); @@ -63,7 +66,6 @@ public class CountdownLatchExampleIntegrationTest { outputScraper.add("Workers complete"); // Then - outputScraper.forEach(Object::toString); assertThat(outputScraper).containsExactly("Workers ready", "Counted down", "Counted down", "Counted down", "Counted down", "Counted down", "Workers complete"); } diff --git a/core-java-concurrency/src/test/java/com/baeldung/concurrent/future/SquareCalculatorIntegrationTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/future/SquareCalculatorIntegrationTest.java index 5f8b05a974..c2513f38c1 100644 --- a/core-java-concurrency/src/test/java/com/baeldung/concurrent/future/SquareCalculatorIntegrationTest.java +++ b/core-java-concurrency/src/test/java/com/baeldung/concurrent/future/SquareCalculatorIntegrationTest.java @@ -22,7 +22,6 @@ public class SquareCalculatorIntegrationTest { private static final Logger LOG = LoggerFactory.getLogger(SquareCalculatorIntegrationTest.class); - @Rule public TestName name = new TestName(); diff --git a/core-java-concurrency/src/test/java/com/baeldung/concurrent/locks/SynchronizedHashMapWithRWLockManualTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/locks/SynchronizedHashMapWithRWLockManualTest.java index 3014ae38b2..f3ced219f7 100644 --- a/core-java-concurrency/src/test/java/com/baeldung/concurrent/locks/SynchronizedHashMapWithRWLockManualTest.java +++ b/core-java-concurrency/src/test/java/com/baeldung/concurrent/locks/SynchronizedHashMapWithRWLockManualTest.java @@ -49,9 +49,7 @@ public class SynchronizedHashMapWithRWLockManualTest { private void executeReaderThreads(SynchronizedHashMapWithRWLock object, int threadCount, ExecutorService service) { for (int i = 0; i < threadCount; i++) - service.execute(() -> { - object.get("key" + threadCount); - }); + service.execute(() -> object.get("key" + threadCount)); } } diff --git a/core-java-concurrency/src/test/java/com/baeldung/java/concurrentmap/ConcurrentMapNullKeyValueManualTest.java b/core-java-concurrency/src/test/java/com/baeldung/java/concurrentmap/ConcurrentMapNullKeyValueManualTest.java index 33e3326427..cbac6e7f4c 100644 --- a/core-java-concurrency/src/test/java/com/baeldung/java/concurrentmap/ConcurrentMapNullKeyValueManualTest.java +++ b/core-java-concurrency/src/test/java/com/baeldung/java/concurrentmap/ConcurrentMapNullKeyValueManualTest.java @@ -12,7 +12,7 @@ import static org.junit.Assert.assertNull; public class ConcurrentMapNullKeyValueManualTest { - ConcurrentMap concurrentMap; + private ConcurrentMap concurrentMap; @Before public void setup() { diff --git a/core-java-concurrency/src/test/java/com/baeldung/java/concurrentmap/ConcurrentNavigableMapManualTest.java b/core-java-concurrency/src/test/java/com/baeldung/java/concurrentmap/ConcurrentNavigableMapManualTest.java index 768c31ee80..c0753db513 100644 --- a/core-java-concurrency/src/test/java/com/baeldung/java/concurrentmap/ConcurrentNavigableMapManualTest.java +++ b/core-java-concurrency/src/test/java/com/baeldung/java/concurrentmap/ConcurrentNavigableMapManualTest.java @@ -18,7 +18,7 @@ public class ConcurrentNavigableMapManualTest { public void givenSkipListMap_whenAccessInMultiThreads_thenOrderingStable() throws InterruptedException { NavigableMap skipListMap = new ConcurrentSkipListMap<>(); - updateMapConcurrently(skipListMap, 4); + updateMapConcurrently(skipListMap); Iterator skipListIter = skipListMap.keySet().iterator(); int previous = skipListIter.next(); @@ -28,9 +28,9 @@ public class ConcurrentNavigableMapManualTest { } } - private void updateMapConcurrently(NavigableMap navigableMap, int concurrencyLevel) throws InterruptedException { - ExecutorService executorService = Executors.newFixedThreadPool(concurrencyLevel); - for (int i = 0; i < concurrencyLevel; i++) { + private void updateMapConcurrently(NavigableMap navigableMap) throws InterruptedException { + ExecutorService executorService = Executors.newFixedThreadPool(4); + for (int i = 0; i < 4; i++) { executorService.execute(() -> { ThreadLocalRandom random = ThreadLocalRandom.current(); for (int j = 0; j < 10000; j++) { @@ -45,26 +45,26 @@ public class ConcurrentNavigableMapManualTest { @Test public void givenSkipListMap_whenNavConcurrently_thenCountCorrect() throws InterruptedException { NavigableMap skipListMap = new ConcurrentSkipListMap<>(); - int count = countMapElementByPollingFirstEntry(skipListMap, 10000, 4); + int count = countMapElementByPollingFirstEntry(skipListMap); assertEquals(10000 * 4, count); } @Test public void givenTreeMap_whenNavConcurrently_thenCountError() throws InterruptedException { NavigableMap treeMap = new TreeMap<>(); - int count = countMapElementByPollingFirstEntry(treeMap, 10000, 4); + int count = countMapElementByPollingFirstEntry(treeMap); assertNotEquals(10000 * 4, count); } - private int countMapElementByPollingFirstEntry(NavigableMap navigableMap, int elementCount, int concurrencyLevel) throws InterruptedException { - for (int i = 0; i < elementCount * concurrencyLevel; i++) { + private int countMapElementByPollingFirstEntry(NavigableMap navigableMap) throws InterruptedException { + for (int i = 0; i < 10000 * 4; i++) { navigableMap.put(i, i); } AtomicInteger counter = new AtomicInteger(0); - ExecutorService executorService = Executors.newFixedThreadPool(concurrencyLevel); - for (int j = 0; j < concurrencyLevel; j++) { + ExecutorService executorService = Executors.newFixedThreadPool(4); + for (int j = 0; j < 4; j++) { executorService.execute(() -> { - for (int i = 0; i < elementCount; i++) { + for (int i = 0; i < 10000; i++) { if (navigableMap.pollFirstEntry() != null) { counter.incrementAndGet(); } diff --git a/core-java-concurrency/src/test/java/com/baeldung/java/concurrentmodification/ConcurrentModificationUnitTest.java b/core-java-concurrency/src/test/java/com/baeldung/java/concurrentmodification/ConcurrentModificationUnitTest.java index f7a7bd5fe0..9cdac72d59 100644 --- a/core-java-concurrency/src/test/java/com/baeldung/java/concurrentmodification/ConcurrentModificationUnitTest.java +++ b/core-java-concurrency/src/test/java/com/baeldung/java/concurrentmodification/ConcurrentModificationUnitTest.java @@ -2,7 +2,6 @@ package com.baeldung.java.concurrentmodification; import org.junit.Test; -import java.util.ArrayList; import java.util.Collection; import java.util.ConcurrentModificationException; import java.util.Iterator; @@ -28,9 +27,9 @@ public class ConcurrentModificationUnitTest { List integers = newArrayList(1, 2, 3); - for (Iterator iterator = integers.iterator(); iterator.hasNext();) { + for (Iterator iterator = integers.iterator(); iterator.hasNext(); ) { Integer integer = iterator.next(); - if(integer == 2) { + if (integer == 2) { iterator.remove(); } } @@ -45,7 +44,7 @@ public class ConcurrentModificationUnitTest { List toRemove = newArrayList(); for (Integer integer : integers) { - if(integer == 2) { + if (integer == 2) { toRemove.add(integer); } } @@ -69,10 +68,10 @@ public class ConcurrentModificationUnitTest { Collection integers = newArrayList(1, 2, 3); List collected = integers - .stream() - .filter(i -> i != 2) - .map(Object::toString) - .collect(toList()); + .stream() + .filter(i -> i != 2) + .map(Object::toString) + .collect(toList()); assertThat(collected).containsExactly("1", "3"); } diff --git a/core-java-concurrency/src/test/java/com/baeldung/java8/Java8ExecutorServiceIntegrationTest.java b/core-java-concurrency/src/test/java/com/baeldung/java8/Java8ExecutorServiceIntegrationTest.java index 41eb864fd9..a1f5b6f1e2 100644 --- a/core-java-concurrency/src/test/java/com/baeldung/java8/Java8ExecutorServiceIntegrationTest.java +++ b/core-java-concurrency/src/test/java/com/baeldung/java8/Java8ExecutorServiceIntegrationTest.java @@ -72,7 +72,7 @@ public class Java8ExecutorServiceIntegrationTest { assertTrue(threadPoolExecutor.isShutdown()); assertFalse(notExecutedTasks.isEmpty()); - assertTrue(notExecutedTasks.size() > 0 && notExecutedTasks.size() < 98); + assertTrue(notExecutedTasks.size() < 98); } private List smartShutdown(ExecutorService executorService) { diff --git a/core-java-concurrency/src/test/java/org/baeldung/java/streams/ThreadPoolInParallelStreamIntegrationTest.java b/core-java-concurrency/src/test/java/org/baeldung/java/streams/ThreadPoolInParallelStreamIntegrationTest.java index 42e85fc586..502672dea1 100644 --- a/core-java-concurrency/src/test/java/org/baeldung/java/streams/ThreadPoolInParallelStreamIntegrationTest.java +++ b/core-java-concurrency/src/test/java/org/baeldung/java/streams/ThreadPoolInParallelStreamIntegrationTest.java @@ -23,7 +23,10 @@ public class ThreadPoolInParallelStreamIntegrationTest { List aList = LongStream.rangeClosed(firstNum, lastNum).boxed().collect(Collectors.toList()); ForkJoinPool customThreadPool = new ForkJoinPool(4); - long actualTotal = customThreadPool.submit(() -> aList.parallelStream().reduce(0L, Long::sum)).get(); + long actualTotal = customThreadPool + .submit(() -> aList.parallelStream() + .reduce(0L, Long::sum)) + .get(); assertEquals((lastNum + firstNum) * lastNum / 2, actualTotal); } diff --git a/pom.xml b/pom.xml index f2dd0ae48c..da38d65df3 100644 --- a/pom.xml +++ b/pom.xml @@ -43,6 +43,7 @@ cdi core-java + core-java-concurrency couchbase-sdk deltaspike From e1e6550a49f7aa01a968a0e57a6a9bc7103d7446 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ho=C3=A0ng=20H=C6=B0ng?= Date: Mon, 28 Aug 2017 03:44:06 +0700 Subject: [PATCH 04/73] BAEL-1080 Introduction to Future in Vavr (#2488) * Add example of different types of bean injection * BAEL-1080 Introduction to Future and Pattern Matching in Vavr * Update future with Pattern Matching * remove unused files * Update future unit test of cancelled Future * remove unused import * delete unused files * using await() on future to wait until future completed instead of using while(true) * Add Awaitability to FutureTest, avoid using while loop * format code --- vavr/pom.xml | 8 + .../baeldung/vavr/future/FutureUnitTest.java | 203 ++++++++++++++++++ 2 files changed, 211 insertions(+) create mode 100644 vavr/src/test/java/com/baeldung/vavr/future/FutureUnitTest.java diff --git a/vavr/pom.xml b/vavr/pom.xml index 426155263c..53cd07ddf7 100644 --- a/vavr/pom.xml +++ b/vavr/pom.xml @@ -40,6 +40,13 @@ org.springframework.boot spring-boot-starter-test + + + org.awaitility + awaitility + ${awaitility.version} + test + @@ -69,6 +76,7 @@ 1.8 0.9.0 4.12 + 3.0.0 diff --git a/vavr/src/test/java/com/baeldung/vavr/future/FutureUnitTest.java b/vavr/src/test/java/com/baeldung/vavr/future/FutureUnitTest.java new file mode 100644 index 0000000000..84621e3a68 --- /dev/null +++ b/vavr/src/test/java/com/baeldung/vavr/future/FutureUnitTest.java @@ -0,0 +1,203 @@ +package com.baeldung.vavr.future; + +import static io.vavr.API.$; +import static io.vavr.API.Case; +import static io.vavr.API.Match; +import static io.vavr.Predicates.exists; +import static io.vavr.Predicates.forAll; +import static org.awaitility.Awaitility.await; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.util.concurrent.CancellationException; +import java.util.function.Predicate; + +import org.junit.Test; + +import io.vavr.collection.List; +import io.vavr.concurrent.Future; + +public class FutureUnitTest { + + private final String SUCCESS = "Success"; + private final String FAILURE = "Failure"; + + @Test + public void givenFunctionReturnInteger_WhenCallWithFuture_ShouldReturnFunctionValue() { + Future future = Future.of(() -> 1); + + assertEquals(1, future.get() + .intValue()); + } + + @Test + public void givenFunctionGetRemoteHttpResourceAsString_WhenCallSuccessWithFuture_ShouldReturnContentValueAsString() { + String url = "http://resource"; + String content = "Content from " + url; + Future future = Future.of(() -> getResource(url)); + + assertEquals(content, future.get()); + } + + @Test + public void givenFunctionThrowException_WhenCallWithFuture_ShouldReturnFailure() { + Future future = Future.of(() -> getResourceThrowException("")); + future.await(); + + assertTrue(future.isFailure()); + } + + @Test + public void givenAFutureReturnZero_WhenCheckFutureWithExistEvenValue_ShouldReturnRight() { + Future future = Future.of(() -> 2); + boolean result = future.exists(i -> i % 2 == 0); + + assertTrue(result); + } + + @Test + public void givenFunction_WhenCallWithFutureAndRegisterConsumerForSuccess_ShouldCallConsumerToStoreValue() { + final int[] store = new int[] { 0 }; + Future future = Future.of(() -> 1); + future.onSuccess(i -> { + store[0] = i; + }); + await().until(() -> store[0] == 1); + } + + @Test + public void givenFunctionThrowException_WhenCallWithFutureAndRegisterConsumerForFailer_ShouldCallConsumerToStoreException() { + final Throwable[] store = new Throwable[] { null }; + Future future = Future.of(() -> getResourceThrowException("")); + future.onFailure(err -> store[0] = err); + await().until(() -> RuntimeException.class.isInstance(store[0])); + } + + @Test + public void givenAFuture_WhenAddAndThenConsumer_ShouldCallConsumerWithResultOfFutureAction() { + int[] store1 = new int[1]; + int[] store2 = new int[1]; + Future future = Future.of(() -> 1); + Future andThenFuture = future.andThen(i -> store1[0] = i.get() + 1) + .andThen(i -> store2[0] = store1[0] + 1); + andThenFuture.await(); + + assertEquals(2, store1[0]); + assertEquals(3, store2[0]); + } + + @Test + public void givenAFailureFuture_WhenCallOrElseFunction_ShouldReturnNewFuture() { + Future future = Future.failed(new RuntimeException()); + Future future2 = future.orElse(Future.of(() -> 2)); + + assertEquals(2, future2.get() + .intValue()); + } + + @Test(expected = CancellationException.class) + public void givenAFuture_WhenCallCancel_ShouldReturnCancellationException() { + long waitTime = 1000; + Future future = Future.of(() -> { + Thread.sleep(waitTime); + return 1; + }); + future.cancel(); + future.await(); + future.get(); + } + + @Test + public void givenAFuture_WhenCallFallBackWithSuccessFuture_ShouldReturnFutureResult() { + String expectedResult = "take this"; + Future future = Future.of(() -> expectedResult); + Future secondFuture = Future.of(() -> "take that"); + Future futureResult = future.fallbackTo(secondFuture); + futureResult.await(); + + assertEquals(expectedResult, futureResult.get()); + } + + @Test + public void givenAFuture_WhenCallFallBackWithFailureFuture_ShouldReturnValueOfFallBackFuture() { + String expectedResult = "take that"; + Future future = Future.failed(new RuntimeException()); + Future fallbackFuture = Future.of(() -> expectedResult); + Future futureResult = future.fallbackTo(fallbackFuture); + futureResult.await(); + + assertEquals(expectedResult, futureResult.get()); + } + + @Test + public void givenGetResourceWithFuture_WhenWaitAndMatchWithPredicate_ShouldReturnSuccess() { + String url = "http://resource"; + Future future = Future.of(() -> getResource(url)); + future.await(); + String s = Match(future).of(Case($(future0 -> future0.isSuccess()), SUCCESS), Case($(), FAILURE)); + + assertEquals(SUCCESS, s); + } + + @Test + public void givenAFailedFuture_WhenWaitAndMatchWithPredicateCheckSuccess_ShouldReturnFailed() { + Future future = Future.failed(new RuntimeException()); + future.await(); + String s = Match(future).of(Case($(future0 -> future0.isSuccess()), SUCCESS), Case($(), FAILURE)); + + assertEquals(FAILURE, s); + } + + @Test + public void givenAFuture_WhenMatchWithFuturePredicate_ShouldReturnSuccess() { + Future future = Future.of(() -> { + Thread.sleep(10); + return 1; + }); + Predicate> predicate = f -> f.exists(i -> i % 2 == 1); + String s = Match(future).of(Case($(predicate), "Even"), Case($(), "Odd")); + + assertEquals("Even", s); + } + + @Test + public void givenAListOfFutureReturnFist3Integers_WhenMatchWithExistEvenNumberPredicate_ShouldReturnSuccess() { + List> futures = getFutureOfFirst3Number(); + Predicate> predicate0 = future -> future.exists(i -> i % 2 == 0); + String s = Match(futures).of(Case($(exists(predicate0)), "Even"), Case($(), "Odd")); + + assertEquals("Even", s); + } + + @Test + public void givenAListOfFutureReturnFist3Integers_WhenMatchWithForAllNumberBiggerThanZeroPredicate_ShouldReturnSuccess() { + List> futures = getFutureOfFirst3Number(); + Predicate> predicate0 = future -> future.exists(i -> i > 0); + String s = Match(futures).of(Case($(forAll(predicate0)), "Positive numbers"), Case($(), "None")); + + assertEquals("Positive numbers", s); + } + + @Test + public void givenAListOfFutureReturnFist3Integers_WhenMatchWithForAllNumberSmallerThanZeroPredicate_ShouldReturnFailed() { + List> futures = getFutureOfFirst3Number(); + Predicate> predicate0 = future -> future.exists(i -> i < 0); + String s = Match(futures).of(Case($(forAll(predicate0)), "Negative numbers"), Case($(), "None")); + + assertEquals("None", s); + } + + private String getResource(String url) throws InterruptedException { + Thread.sleep(10); + return "Content from " + url; + } + + private String getResourceThrowException(String url) { + throw new RuntimeException("Exception when get resource " + url); + } + + private List> getFutureOfFirst3Number() { + List> futures = List.of(Future.of(() -> 1), Future.of(() -> 2), Future.of(() -> 3)); + return futures; + } +} From c5d77f424d614a87a59c042090a33934adaa9093 Mon Sep 17 00:00:00 2001 From: Dassi orleando Date: Mon, 28 Aug 2017 05:55:59 +0100 Subject: [PATCH 05/73] BAEL-1074 Separate difference on date and datetime (#2511) * Different types of bean injection in Spring * Difference between two dates in java * Update README.md * Simple clean of difference between dates * Clean my test article * Improve dates diff: for dates and datetimes --- .../java/com/baeldung/DateDiffUnitTest.java | 39 ++++++++++++++----- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/core-java/src/test/java/com/baeldung/DateDiffUnitTest.java b/core-java/src/test/java/com/baeldung/DateDiffUnitTest.java index 40b7fac30d..324a0d4587 100644 --- a/core-java/src/test/java/com/baeldung/DateDiffUnitTest.java +++ b/core-java/src/test/java/com/baeldung/DateDiffUnitTest.java @@ -1,12 +1,12 @@ package com.baeldung; -import org.joda.time.DateTime; import org.junit.Test; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.Duration; -import java.time.ZonedDateTime; +import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.Date; import java.util.Locale; import java.util.TimeZone; @@ -30,8 +30,8 @@ public class DateDiffUnitTest { @Test public void givenTwoDatesInJava8_whenDifferentiating_thenWeGetSix() { - ZonedDateTime now = ZonedDateTime.now(); - ZonedDateTime sixDaysBehind = now.minusDays(6); + LocalDate now = LocalDate.now(); + LocalDate sixDaysBehind = now.minusDays(6); Duration duration = Duration.between(now, sixDaysBehind); long diff = Math.abs(duration.toDays()); @@ -40,16 +40,36 @@ public class DateDiffUnitTest { } @Test - public void givenTwoDatesInJodaTime_whenDifferentiating_thenWeGetSix() { - DateTime now = DateTime.now(); - DateTime sixDaysBehind = now.minusDays(6); + public void givenTwoDateTimesInJava8_whenDifferentiating_thenWeGetSix() { + LocalDateTime now = LocalDateTime.now(); + LocalDateTime sixMinutesBehind = now.minusMinutes(6); - org.joda.time.Duration duration = new org.joda.time.Duration(now, sixDaysBehind); - long diff = Math.abs(duration.getStandardDays()); + Duration duration = Duration.between(now, sixMinutesBehind); + long diff = Math.abs(duration.toMinutes()); assertEquals(diff, 6); } + @Test + public void givenTwoDatesInJodaTime_whenDifferentiating_thenWeGetSix() { + org.joda.time.LocalDate now = org.joda.time.LocalDate.now(); + org.joda.time.LocalDate sixDaysBehind = now.minusDays(6); + + org.joda.time.Period period = new org.joda.time.Period(now, sixDaysBehind); + long diff = Math.abs(period.getDays()); + + assertEquals(diff, 6); + } + + @Test + public void givenTwoDateTimesInJodaTime_whenDifferentiating_thenWeGetSix() { + org.joda.time.LocalDateTime now = org.joda.time.LocalDateTime.now(); + org.joda.time.LocalDateTime sixMinutesBehind = now.minusMinutes(6); + + org.joda.time.Period period = new org.joda.time.Period(now, sixMinutesBehind); + long diff = Math.abs(period.getDays()); + } + @Test public void givenTwoDatesInDate4j_whenDifferentiating_thenWeGetSix() { hirondelle.date4j.DateTime now = hirondelle.date4j.DateTime.now(TimeZone.getDefault()); @@ -59,5 +79,4 @@ public class DateDiffUnitTest { assertEquals(diff, 6); } - } \ No newline at end of file From 73526dd0a8f44dc87040df3ba0a8c0eb3b9aa39b Mon Sep 17 00:00:00 2001 From: Kiran Date: Mon, 28 Aug 2017 21:48:44 +0530 Subject: [PATCH 06/73] BAEL - 971 Code Changes (#2492) * BAEL-971 Code BAEL- 971 Introduction to Apache Commons Lang3 code * BAEL - 971 Code BAEL - 971 : Introduction to Apache Commons Lang3 * Updated the commons.lang version from V3.5 to V3.6 --- libraries/pom.xml | 4 +- .../commons/lang3/BuilderMethods.java | 60 +++++++++ .../commons/lang3/Lang3UtilsTest.java | 118 ++++++++++++++++++ 3 files changed, 180 insertions(+), 2 deletions(-) create mode 100644 libraries/src/main/java/com/baeldung/commons/lang3/BuilderMethods.java create mode 100644 libraries/src/test/java/com/baeldung/commons/lang3/Lang3UtilsTest.java diff --git a/libraries/pom.xml b/libraries/pom.xml index 6d1098246e..cf16f0fb79 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -522,7 +522,7 @@ 0.7.0 3.2.4 - 3.5 + 3.6 1.1 1.9.3 1.2 @@ -565,4 +565,4 @@ 0.9.0 15.2 - \ No newline at end of file + diff --git a/libraries/src/main/java/com/baeldung/commons/lang3/BuilderMethods.java b/libraries/src/main/java/com/baeldung/commons/lang3/BuilderMethods.java new file mode 100644 index 0000000000..c64f7e7511 --- /dev/null +++ b/libraries/src/main/java/com/baeldung/commons/lang3/BuilderMethods.java @@ -0,0 +1,60 @@ +package com.baeldung.commons.lang3; + +import org.apache.commons.lang3.builder.EqualsBuilder; +import org.apache.commons.lang3.builder.HashCodeBuilder; +import org.apache.commons.lang3.builder.ToStringBuilder; + +public class BuilderMethods { + + private final int intValue; + private final String strSample; + + public BuilderMethods(final int newId, final String newName) { + this.intValue = newId; + this.strSample = newName; + } + + public int getId() { + return this.intValue; + } + + public String getName() { + return this.strSample; + } + + @Override + public int hashCode() { + return new HashCodeBuilder().append(this.intValue) + .append(this.strSample) + .toHashCode(); + } + + @Override + public boolean equals(Object obj) { + if (obj instanceof BuilderMethods == false) { + return false; + } + if (this == obj) { + return true; + } + final BuilderMethods otherObject = (BuilderMethods) obj; + + return new EqualsBuilder().append(this.intValue, otherObject.intValue) + .append(this.strSample, otherObject.strSample) + .isEquals(); + } + + @Override + public String toString() { + return new ToStringBuilder(this).append("INTVALUE", this.intValue) + .append("STRINGVALUE", this.strSample) + .toString(); + } + + public static void main(final String[] arguments) { + final BuilderMethods simple1 = new BuilderMethods(1, "The First One"); + System.out.println(simple1.getName()); + System.out.println(simple1.hashCode()); + System.out.println(simple1.toString()); + } +} diff --git a/libraries/src/test/java/com/baeldung/commons/lang3/Lang3UtilsTest.java b/libraries/src/test/java/com/baeldung/commons/lang3/Lang3UtilsTest.java new file mode 100644 index 0000000000..2e74ad3c24 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/commons/lang3/Lang3UtilsTest.java @@ -0,0 +1,118 @@ +package com.baeldung.commons.lang3; + +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotSame; +import static org.junit.Assert.assertSame; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.io.File; +import java.lang.reflect.Field; +import java.util.Locale; +import java.util.concurrent.Future; + +import org.apache.commons.lang3.ArchUtils; +import org.apache.commons.lang3.BooleanUtils; +import org.apache.commons.lang3.SystemUtils; +import org.apache.commons.lang3.arch.Processor; +import org.apache.commons.lang3.concurrent.ConcurrentRuntimeException; +import org.apache.commons.lang3.concurrent.ConcurrentUtils; +import org.apache.commons.lang3.event.EventUtils; +import org.apache.commons.lang3.reflect.FieldUtils; +import org.apache.commons.lang3.time.FastDateFormat; +import org.junit.Assert; +import org.junit.Test; + +public class Lang3UtilsTest { + + @Test + public void test_to_Boolean_fromString() { + assertFalse(BooleanUtils.toBoolean("off")); + assertTrue(BooleanUtils.toBoolean("true")); + assertTrue(BooleanUtils.toBoolean("tRue")); + assertFalse(BooleanUtils.toBoolean("no")); + assertFalse(BooleanUtils.isTrue(Boolean.FALSE)); + assertFalse(BooleanUtils.isTrue(null)); + } + + @Test + public void testGetUserHome() { + final File dir = SystemUtils.getUserHome(); + Assert.assertNotNull(dir); + Assert.assertTrue(dir.exists()); + } + + @Test + public void testGetJavaHome() { + final File dir = SystemUtils.getJavaHome(); + Assert.assertNotNull(dir); + Assert.assertTrue(dir.exists()); + } + + @Test + public void testProcessorArchType() { + Processor processor = ArchUtils.getProcessor("x86"); + assertTrue(processor.is32Bit()); + assertFalse(processor.is64Bit()); + } + + @Test + public void testProcessorArchType64Bit() { + Processor processor = ArchUtils.getProcessor("x86_64"); + assertFalse(processor.is32Bit()); + assertTrue(processor.is64Bit()); + } + + @Test(expected = IllegalArgumentException.class) + public void testConcurrentRuntimeExceptionCauseError() { + new ConcurrentRuntimeException("An error", new Error()); + } + + @Test + public void testConstantFuture_Integer() throws Exception { + Future test = ConcurrentUtils.constantFuture(5); + assertTrue(test.isDone()); + assertSame(5, test.get()); + assertFalse(test.isCancelled()); + } + + @Test + public void testFieldUtilsGetAllFields() { + final Field[] fieldsNumber = Number.class.getDeclaredFields(); + assertArrayEquals(fieldsNumber, FieldUtils.getAllFields(Number.class)); + } + + @Test + public void test_getInstance_String_Locale() { + final FastDateFormat format1 = FastDateFormat.getInstance("MM/DD/yyyy", Locale.US); + final FastDateFormat format3 = FastDateFormat.getInstance("MM/DD/yyyy", Locale.GERMANY); + + assertNotSame(format1, format3); + } + + @Test + public void testAddEventListenerThrowsException() { + final ExceptionEventSource src = new ExceptionEventSource(); + try { + EventUtils.addEventListener(src, PropertyChangeListener.class, new PropertyChangeListener() { + @Override + public void propertyChange(final PropertyChangeEvent e) { + // Do nothing! + } + }); + fail("Add method should have thrown an exception, so method should fail."); + } catch (final RuntimeException e) { + + } + } + + public static class ExceptionEventSource { + public void addPropertyChangeListener(final PropertyChangeListener listener) { + throw new RuntimeException(); + } + } + +} From 904a740643a36204e80ddafbeb99a49561463c3c Mon Sep 17 00:00:00 2001 From: baljeet20 Date: Tue, 29 Aug 2017 01:01:31 +0530 Subject: [PATCH 07/73] BAEL-1071 Runnable vs Callable in Java (#2513) --- .../concurrent/callable/FactorialTask.java | 30 ++++++++++++ .../callable/FactorialTaskManualTest.java | 48 +++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 core-java-concurrency/src/main/java/com/baeldung/concurrent/callable/FactorialTask.java create mode 100644 core-java-concurrency/src/test/java/com/baeldung/concurrent/callable/FactorialTaskManualTest.java diff --git a/core-java-concurrency/src/main/java/com/baeldung/concurrent/callable/FactorialTask.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/callable/FactorialTask.java new file mode 100644 index 0000000000..8663609d2d --- /dev/null +++ b/core-java-concurrency/src/main/java/com/baeldung/concurrent/callable/FactorialTask.java @@ -0,0 +1,30 @@ +package com.baeldung.concurrent.callable; + + +import java.util.concurrent.Callable; + +public class FactorialTask implements Callable { + int number; + + public FactorialTask(int number) { + this.number = number; + } + + public Integer call() throws InvalidParamaterException { + int fact=1; + if(number < 0) + throw new InvalidParamaterException("Number must be positive"); + + for(int count=number;count>1;count--){ + fact=fact * count; + } + + return fact; + } + + private class InvalidParamaterException extends Exception { + public InvalidParamaterException(String message) { + super(message); + } + } +} diff --git a/core-java-concurrency/src/test/java/com/baeldung/concurrent/callable/FactorialTaskManualTest.java b/core-java-concurrency/src/test/java/com/baeldung/concurrent/callable/FactorialTaskManualTest.java new file mode 100644 index 0000000000..c55e04af94 --- /dev/null +++ b/core-java-concurrency/src/test/java/com/baeldung/concurrent/callable/FactorialTaskManualTest.java @@ -0,0 +1,48 @@ +package com.baeldung.concurrent.callable; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; + +import static junit.framework.Assert.assertEquals; + +public class FactorialTaskManualTest { + + private ExecutorService executorService; + + @Before + public void setup(){ + executorService = Executors.newSingleThreadExecutor(); + } + + @Test + public void whenTaskSubmitted_ThenFutureResultObtained() throws ExecutionException, InterruptedException { + FactorialTask task = new FactorialTask(5); + Future future= executorService.submit(task); + assertEquals(120,future.get().intValue()); + } + + @Test(expected = ExecutionException.class) + public void whenException_ThenCallableThrowsIt() throws ExecutionException, InterruptedException { + FactorialTask task = new FactorialTask(-5); + Future future= executorService.submit(task); + Integer result=future.get().intValue(); + } + + @Test + public void whenException_ThenCallableDoesntThrowsItIfGetIsNotCalled(){ + FactorialTask task = new FactorialTask(-5); + Future future= executorService.submit(task); + assertEquals(false,future.isDone()); + } + + @After + public void cleanup(){ + executorService.shutdown(); + } +} From 8da9bee6aac139322f6ed4b3c81e43f3809649f0 Mon Sep 17 00:00:00 2001 From: felipeazv Date: Mon, 28 Aug 2017 22:58:08 +0200 Subject: [PATCH 08/73] BAEL-1027: Introduction to GraphQL - initial commit (#2515) * spring beans DI examples * fix-1: shortening examples * List of Rules Engines in Java * BAEL-812: Openl-Tablets example added * BAEL-812: artifacts names changed * BAEL-812: moving rule-engines examples to rule-engines folder * BAEL-812: removing evaluation article files * BAEL-812: folder renamed * BAEL-812: folder renamed * BAEL-812: pom.xml - parent added * BAEL-1027: Introduction to GraphQL - initial commit --- .../payload-examples/createUser.json | 8 ++ .../payload-examples/deleteUser.json | 6 ++ .../payload-examples/listUsers.json | 4 + .../payload-examples/retrieveUser.json | 6 ++ .../payload-examples/searchName.json | 6 ++ .../payload-examples/updateUser.json | 9 +++ graphql/graphql-java/pom.xml | 29 +++++++ .../com/baeldung/graphql/Application.java | 17 ++++ .../com/baeldung/graphql/entity/User.java | 78 +++++++++++++++++++ .../baeldung/graphql/handler/UserHandler.java | 56 +++++++++++++ .../graphql/mutation/UserMutation.java | 57 ++++++++++++++ .../com/baeldung/graphql/query/UserQuery.java | 42 ++++++++++ .../baeldung/graphql/schema/UserSchema.java | 24 ++++++ .../baeldung/graphql/utils/SchemaUtils.java | 14 ++++ 14 files changed, 356 insertions(+) create mode 100644 graphql/graphql-java/payload-examples/createUser.json create mode 100644 graphql/graphql-java/payload-examples/deleteUser.json create mode 100644 graphql/graphql-java/payload-examples/listUsers.json create mode 100644 graphql/graphql-java/payload-examples/retrieveUser.json create mode 100644 graphql/graphql-java/payload-examples/searchName.json create mode 100644 graphql/graphql-java/payload-examples/updateUser.json create mode 100644 graphql/graphql-java/pom.xml create mode 100644 graphql/graphql-java/src/main/java/com/baeldung/graphql/Application.java create mode 100644 graphql/graphql-java/src/main/java/com/baeldung/graphql/entity/User.java create mode 100644 graphql/graphql-java/src/main/java/com/baeldung/graphql/handler/UserHandler.java create mode 100644 graphql/graphql-java/src/main/java/com/baeldung/graphql/mutation/UserMutation.java create mode 100644 graphql/graphql-java/src/main/java/com/baeldung/graphql/query/UserQuery.java create mode 100644 graphql/graphql-java/src/main/java/com/baeldung/graphql/schema/UserSchema.java create mode 100644 graphql/graphql-java/src/main/java/com/baeldung/graphql/utils/SchemaUtils.java diff --git a/graphql/graphql-java/payload-examples/createUser.json b/graphql/graphql-java/payload-examples/createUser.json new file mode 100644 index 0000000000..3ade405b16 --- /dev/null +++ b/graphql/graphql-java/payload-examples/createUser.json @@ -0,0 +1,8 @@ +{ + "query": "mutation($name: String! $email: String! $age: String! ){ createUser ( name: $name email: $email age: $age) { id name email age } }", + "parameters": { + "name": "John", + "email": "john@email.com", + "age": 34 + } +} \ No newline at end of file diff --git a/graphql/graphql-java/payload-examples/deleteUser.json b/graphql/graphql-java/payload-examples/deleteUser.json new file mode 100644 index 0000000000..204496f19b --- /dev/null +++ b/graphql/graphql-java/payload-examples/deleteUser.json @@ -0,0 +1,6 @@ +{ + "query": "mutation($name: String! ){ deleteUser ( id: $id) { id name email age} }", + "parameters": { + "id": 2 + } +} \ No newline at end of file diff --git a/graphql/graphql-java/payload-examples/listUsers.json b/graphql/graphql-java/payload-examples/listUsers.json new file mode 100644 index 0000000000..dde887bb07 --- /dev/null +++ b/graphql/graphql-java/payload-examples/listUsers.json @@ -0,0 +1,4 @@ +{ + "query": "{ listUsers{ id name email age}}", + "parameters": {} +} \ No newline at end of file diff --git a/graphql/graphql-java/payload-examples/retrieveUser.json b/graphql/graphql-java/payload-examples/retrieveUser.json new file mode 100644 index 0000000000..27b5f422eb --- /dev/null +++ b/graphql/graphql-java/payload-examples/retrieveUser.json @@ -0,0 +1,6 @@ +{ + "query": "query($id: String!){ retrieveUser ( id: $id) { id name email} }", + "parameters": { + "id": 1 + } +} \ No newline at end of file diff --git a/graphql/graphql-java/payload-examples/searchName.json b/graphql/graphql-java/payload-examples/searchName.json new file mode 100644 index 0000000000..df8f080b86 --- /dev/null +++ b/graphql/graphql-java/payload-examples/searchName.json @@ -0,0 +1,6 @@ +{ + "query": "query($id: String!){ searchName ( id: $id) { id name email} }", + "parameters": { + "id": 2 + } +} \ No newline at end of file diff --git a/graphql/graphql-java/payload-examples/updateUser.json b/graphql/graphql-java/payload-examples/updateUser.json new file mode 100644 index 0000000000..aa68151111 --- /dev/null +++ b/graphql/graphql-java/payload-examples/updateUser.json @@ -0,0 +1,9 @@ +{ + "query": "mutation($id: String! $name: String! $email: String! $age: String! ){ updateUser ( id: $id name: $name email: $email age: $age) { id name email age} }", + "parameters": { + "id": 1, + "name":"John updated", + "email": "johnupdate@email.com", + "age": 50 + } +} \ No newline at end of file diff --git a/graphql/graphql-java/pom.xml b/graphql/graphql-java/pom.xml new file mode 100644 index 0000000000..c031ddc694 --- /dev/null +++ b/graphql/graphql-java/pom.xml @@ -0,0 +1,29 @@ + + 4.0.0 + + com.baeldung.graphql + graphql-java + 1.0 + + graphql-java + + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + + + + + com.graphql-java + graphql-java-annotations + 3.0.3 + + + io.ratpack + ratpack-core + 1.4.6 + + + \ No newline at end of file diff --git a/graphql/graphql-java/src/main/java/com/baeldung/graphql/Application.java b/graphql/graphql-java/src/main/java/com/baeldung/graphql/Application.java new file mode 100644 index 0000000000..6e9b2a5c80 --- /dev/null +++ b/graphql/graphql-java/src/main/java/com/baeldung/graphql/Application.java @@ -0,0 +1,17 @@ +package com.baeldung.graphql; + +import ratpack.server.RatpackServer; + +import com.baeldung.graphql.handler.UserHandler; + +public class Application { + public static void main(String[] args) throws Exception { + new Application(); + } + + private Application() throws Exception { + final RatpackServer server = RatpackServer.of(s -> s.handlers(chain -> chain.post("users", new UserHandler()))); + server.start(); + } + +} diff --git a/graphql/graphql-java/src/main/java/com/baeldung/graphql/entity/User.java b/graphql/graphql-java/src/main/java/com/baeldung/graphql/entity/User.java new file mode 100644 index 0000000000..a4a776cfff --- /dev/null +++ b/graphql/graphql-java/src/main/java/com/baeldung/graphql/entity/User.java @@ -0,0 +1,78 @@ +package com.baeldung.graphql.entity; + +import java.util.List; + +import com.baeldung.graphql.handler.UserHandler; +import com.baeldung.graphql.utils.SchemaUtils; + +import graphql.annotations.GraphQLField; +import graphql.annotations.GraphQLName; + +@GraphQLName(SchemaUtils.USER) +public class User { + + @GraphQLField + private Long id; + @GraphQLField + private String name; + @GraphQLField + private String email; + @GraphQLField + private Integer age; + + public User(String name, String email, Integer age) { + this.id = genId(); + this.name = name; + this.email = email; + this.age = age; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getEmail() { + return email; + } + + public void setName(String name) { + this.name = name; + } + + public Integer getAge() { + return age; + } + + public void setAge(Integer age) { + this.age = age; + } + + public static Long genId() { + Long id = 1L; + try { + List users = new UserHandler().getUsers(); + for (User user : users) + id = (user.getId() > id ? user.getId() : id) + 1; + + } catch (Exception e) { + e.printStackTrace(); + } + return id; + } + + public String toString() { + return "[id=" + id + ", name=" + name + ", email="+email+ ", age="+ age +"]"; + } +} \ No newline at end of file diff --git a/graphql/graphql-java/src/main/java/com/baeldung/graphql/handler/UserHandler.java b/graphql/graphql-java/src/main/java/com/baeldung/graphql/handler/UserHandler.java new file mode 100644 index 0000000000..a6d474a70d --- /dev/null +++ b/graphql/graphql-java/src/main/java/com/baeldung/graphql/handler/UserHandler.java @@ -0,0 +1,56 @@ +package com.baeldung.graphql.handler; + +import graphql.ExecutionResult; +import graphql.GraphQL; +import graphql.schema.DataFetchingEnvironment; +import ratpack.handling.Context; +import ratpack.handling.Handler; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.logging.Logger; + +import com.baeldung.graphql.entity.User; +import com.baeldung.graphql.schema.UserSchema; +import com.baeldung.graphql.utils.SchemaUtils; + +import static ratpack.jackson.Jackson.json; + +public class UserHandler implements Handler { + private static final Logger LOGGER = Logger.getLogger(UserHandler.class.getSimpleName()); + private GraphQL graphql; + private static List users = new ArrayList<>(); + + public UserHandler() throws Exception { + graphql = new GraphQL(new UserSchema().getSchema()); + } + + @Override + public void handle(Context context) throws Exception { + context.parse(Map.class) + .then(payload -> { + Map parameters = (Map) payload.get("parameters"); + ExecutionResult executionResult = graphql.execute(payload.get(SchemaUtils.QUERY) + .toString(), null, this, parameters); + Map result = new LinkedHashMap<>(); + if (executionResult.getErrors() + .isEmpty()) { + result.put(SchemaUtils.DATA, executionResult.getData()); + } else { + result.put(SchemaUtils.ERRORS, executionResult.getErrors()); + LOGGER.warning("Errors: " + executionResult.getErrors()); + } + context.render(json(result)); + }); + } + + public static List getUsers() { + return users; + } + + public static List getUsers(DataFetchingEnvironment env) { + return ((UserHandler) env.getSource()).getUsers(); + } +} diff --git a/graphql/graphql-java/src/main/java/com/baeldung/graphql/mutation/UserMutation.java b/graphql/graphql-java/src/main/java/com/baeldung/graphql/mutation/UserMutation.java new file mode 100644 index 0000000000..3c6f53a382 --- /dev/null +++ b/graphql/graphql-java/src/main/java/com/baeldung/graphql/mutation/UserMutation.java @@ -0,0 +1,57 @@ +package com.baeldung.graphql.mutation; + +import graphql.annotations.GraphQLField; +import graphql.annotations.GraphQLName; +import graphql.schema.DataFetchingEnvironment; + +import javax.validation.constraints.NotNull; + +import com.baeldung.graphql.entity.User; +import com.baeldung.graphql.utils.SchemaUtils; + +import java.util.List; +import java.util.Optional; + +import static com.baeldung.graphql.handler.UserHandler.getUsers; + +@GraphQLName(SchemaUtils.MUTATION) +public class UserMutation { + @GraphQLField + public static User createUser(final DataFetchingEnvironment env, @NotNull @GraphQLName(SchemaUtils.NAME) final String name, @NotNull @GraphQLName(SchemaUtils.EMAIL) final String email, @NotNull @GraphQLName(SchemaUtils.AGE) final String age) { + List users = getUsers(env); + final User user = new User(name, email, Integer.valueOf(age)); + users.add(user); + return user; + } + + @GraphQLField + public static User updateUser(final DataFetchingEnvironment env, @NotNull @GraphQLName(SchemaUtils.ID) final String id, @NotNull @GraphQLName(SchemaUtils.NAME) final String name, @NotNull @GraphQLName(SchemaUtils.EMAIL) final String email, + @NotNull @GraphQLName(SchemaUtils.AGE) final String age) { + final Optional user = getUsers(env).stream() + .filter(c -> c.getId() == Long.parseLong(id)) + .findFirst(); + if (!user.isPresent()) { + return null; + } + user.get() + .setName(name); + user.get() + .setEmail(email); + user.get() + .setAge(Integer.valueOf(age)); + return user.get(); + } + + @GraphQLField + public static User deleteUser(final DataFetchingEnvironment env, @NotNull @GraphQLName(SchemaUtils.ID) final String id) { + final List users = getUsers(env); + final Optional user = users.stream() + .filter(c -> c.getId() == Long.parseLong(id)) + .findFirst(); + if (!user.isPresent()) { + return null; + } + users.removeIf(c -> c.getId() == Long.parseLong(id)); + return user.get(); + } +} diff --git a/graphql/graphql-java/src/main/java/com/baeldung/graphql/query/UserQuery.java b/graphql/graphql-java/src/main/java/com/baeldung/graphql/query/UserQuery.java new file mode 100644 index 0000000000..6f1521c5cf --- /dev/null +++ b/graphql/graphql-java/src/main/java/com/baeldung/graphql/query/UserQuery.java @@ -0,0 +1,42 @@ +package com.baeldung.graphql.query; + +import graphql.annotations.GraphQLField; +import graphql.annotations.GraphQLName; +import graphql.schema.DataFetchingEnvironment; + +import javax.validation.constraints.NotNull; + +import com.baeldung.graphql.entity.User; +import com.baeldung.graphql.utils.SchemaUtils; + +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + +import static com.baeldung.graphql.handler.UserHandler.getUsers; + +@GraphQLName(SchemaUtils.QUERY) +public class UserQuery { + + @GraphQLField + public static User retrieveUser(final DataFetchingEnvironment env, @NotNull @GraphQLName(SchemaUtils.ID) final String id) { + final Optional any = getUsers(env).stream() + .filter(c -> c.getId() == Long.parseLong(id)) + .findFirst(); + return any.orElse(null); + } + + @GraphQLField + public static List searchName(final DataFetchingEnvironment env, @NotNull @GraphQLName(SchemaUtils.NAME) final String name) { + return getUsers(env).stream() + .filter(c -> c.getName() + .contains(name)) + .collect(Collectors.toList()); + } + + @GraphQLField + public static List listUsers(final DataFetchingEnvironment env) { + return getUsers(env); + } + +} \ No newline at end of file diff --git a/graphql/graphql-java/src/main/java/com/baeldung/graphql/schema/UserSchema.java b/graphql/graphql-java/src/main/java/com/baeldung/graphql/schema/UserSchema.java new file mode 100644 index 0000000000..ebb3569aac --- /dev/null +++ b/graphql/graphql-java/src/main/java/com/baeldung/graphql/schema/UserSchema.java @@ -0,0 +1,24 @@ +package com.baeldung.graphql.schema; + +import graphql.annotations.GraphQLAnnotations; +import graphql.schema.GraphQLSchema; + +import static graphql.schema.GraphQLSchema.newSchema; + +import com.baeldung.graphql.mutation.UserMutation; +import com.baeldung.graphql.query.UserQuery; + +public class UserSchema { + + private final GraphQLSchema schema; + + public UserSchema() throws IllegalAccessException, NoSuchMethodException, InstantiationException { + schema = newSchema().query(GraphQLAnnotations.object(UserQuery.class)) + .mutation(GraphQLAnnotations.object(UserMutation.class)) + .build(); + } + + public GraphQLSchema getSchema() { + return schema; + } +} diff --git a/graphql/graphql-java/src/main/java/com/baeldung/graphql/utils/SchemaUtils.java b/graphql/graphql-java/src/main/java/com/baeldung/graphql/utils/SchemaUtils.java new file mode 100644 index 0000000000..680d7e3ea9 --- /dev/null +++ b/graphql/graphql-java/src/main/java/com/baeldung/graphql/utils/SchemaUtils.java @@ -0,0 +1,14 @@ +package com.baeldung.graphql.utils; + +public class SchemaUtils { + public static final String USER = "user"; + public static final String ID = "id"; + public static final String NAME = "name"; + public static final String EMAIL = "email"; + public static final String AGE = "age"; + + public static final String MUTATION = "mutation"; + public static final String QUERY = "query"; + public static final String ERRORS = "errors"; + public static final String DATA = "data"; +} From b3a291a580f0fedd207cf99db8aa820665c0b070 Mon Sep 17 00:00:00 2001 From: Predrag Maric Date: Tue, 29 Aug 2017 07:36:55 +0200 Subject: [PATCH 09/73] BAEL-1078 Stream Indices - Update pom.xml (#2516) * Update pom.xml * BAEL-1078 Stream indices --- core-java/pom.xml | 12 +++++ .../com/baeldung/stream/StreamIndices.java | 37 ++++++++++++++ .../baeldung/stream/StreamIndicesTest.java | 50 +++++++++++++++++++ 3 files changed, 99 insertions(+) create mode 100644 core-java/src/main/java/com/baeldung/stream/StreamIndices.java create mode 100644 core-java/src/test/java/com/baeldung/stream/StreamIndicesTest.java diff --git a/core-java/pom.xml b/core-java/pom.xml index 586486027a..321a08dbff 100644 --- a/core-java/pom.xml +++ b/core-java/pom.xml @@ -196,6 +196,16 @@ hirondelle-date4j ${hirondelle-date4j.version} + + com.codepoetics + protonpack + ${protonpack.version} + + + one.util + streamex + ${streamex.version} + @@ -420,6 +430,8 @@ 4.6-b01 2.9.9 1.5.1 + 1.13 + 0.6.5 1.3 diff --git a/core-java/src/main/java/com/baeldung/stream/StreamIndices.java b/core-java/src/main/java/com/baeldung/stream/StreamIndices.java new file mode 100644 index 0000000000..b101bc2740 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/stream/StreamIndices.java @@ -0,0 +1,37 @@ +package com.baeldung.stream; + +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +import com.codepoetics.protonpack.Indexed; +import com.codepoetics.protonpack.StreamUtils; + +public class StreamIndices { + + public static List getEvenIndexedStrings(String[] names) { + List evenIndexedNames = IntStream.range(0, names.length) + .filter(i -> i % 2 == 0).mapToObj(i -> names[i]) + .collect(Collectors.toList()); + return evenIndexedNames; + } + + public static List> getEvenIndexedStrings(List names) { + List> list = StreamUtils.zipWithIndex(names.stream()) + .filter(i -> i.getIndex() % 2 == 0).collect(Collectors.toList()); + return list; + } + + public static List> getOddIndexedStrings(List names) { + List> list = StreamUtils.zipWithIndex(names.stream()) + .filter(i -> i.getIndex() % 2 == 1).collect(Collectors.toList()); + return list; + } + + public static List getOddIndexedStrings(String[] names) { + List oddIndexedNames = IntStream.range(0, names.length) + .filter(i -> i % 2 == 1).mapToObj(i -> names[i]) + .collect(Collectors.toList()); + return oddIndexedNames; + } +} \ No newline at end of file diff --git a/core-java/src/test/java/com/baeldung/stream/StreamIndicesTest.java b/core-java/src/test/java/com/baeldung/stream/StreamIndicesTest.java new file mode 100644 index 0000000000..ca60544788 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/stream/StreamIndicesTest.java @@ -0,0 +1,50 @@ +package com.baeldung.stream; + +import static org.junit.Assert.assertEquals; + +import java.util.Arrays; +import java.util.List; + +import org.junit.Test; + +import com.codepoetics.protonpack.Indexed; + +public class StreamIndicesTest { + + @Test + public void givenArray_whenGetIndexedStrings_thenReturnListOfEvenIndexedStrings() { + String[] names = { "Afrim", "Bashkim", "Besim", "Lulzim", "Durim", "Shpetim" }; + List expectedResult = Arrays.asList("Afrim", "Besim", "Durim"); + List actualResult = StreamIndices.getEvenIndexedStrings(names); + + assertEquals(expectedResult, actualResult); + } + + @Test + public void givenArray_whenGetIndexedStrings_thenReturnListOfOddStrings() { + String[] names = { "Afrim", "Bashkim", "Besim", "Lulzim", "Durim", "Shpetim" }; + List expectedResult = Arrays.asList("Bashkim", "Lulzim", "Shpetim"); + List actualResult = StreamIndices.getOddIndexedStrings(names); + + assertEquals(expectedResult, actualResult); + } + + @Test + public void givenList_whenGetIndexedStrings_thenReturnListOfEvenIndexedStrings() { + List names = Arrays.asList("Afrim", "Bashkim", "Besim", "Lulzim", "Durim", "Shpetim"); + List> expectedResult = Arrays.asList(Indexed.index(0, "Afrim"), Indexed.index(2, "Besim"), Indexed.index(4, "Durim")); + List> actualResult = StreamIndices.getEvenIndexedStrings(names); + + assertEquals(expectedResult, actualResult); + } + + @Test + public void givenList_whenGetIndexedStrings_thenReturnListOfOddIndexedStrings() { + List names = Arrays.asList("Afrim", "Bashkim", "Besim", "Lulzim", "Durim", "Shpetim"); + List> expectedResult = Arrays.asList(Indexed.index(1, "Bashkim"), Indexed.index(3, "Lulzim"), Indexed.index(5, "Shpetim")); + List> actualResult = StreamIndices.getOddIndexedStrings(names); + + assertEquals(expectedResult, actualResult); + } + +} \ No newline at end of file From 3c5ed71063b66a2e9473b0855c88d28a090e35f3 Mon Sep 17 00:00:00 2001 From: shekhar-s Date: Tue, 29 Aug 2017 03:19:25 -0600 Subject: [PATCH 10/73] BAEL-1075 (#2497) * Adding test cases for "how to delete a directory" * Removing .gitignore from Empty folder * Adding .gitignore to Empty folder * Updated method names and removed unnecessary imports * Removed toBedeleted folder from src/test/resources. Updated the test case to create the directory on the fly using a temporary location --- core-java/pom.xml | 7 + .../java/io/JavaDirectoryDeleteUnitTest.java | 143 ++++++++++++++++++ 2 files changed, 150 insertions(+) create mode 100644 core-java/src/test/java/org/baeldung/java/io/JavaDirectoryDeleteUnitTest.java diff --git a/core-java/pom.xml b/core-java/pom.xml index 321a08dbff..0f8a665fa1 100644 --- a/core-java/pom.xml +++ b/core-java/pom.xml @@ -162,6 +162,12 @@ ${avaitility.version} test + + org.springframework + spring-core + ${spring-core.version} + test + commons-codec @@ -439,6 +445,7 @@ 2.8.9 3.6.1 1.7.0 + 4.3.10.RELEASE diff --git a/core-java/src/test/java/org/baeldung/java/io/JavaDirectoryDeleteUnitTest.java b/core-java/src/test/java/org/baeldung/java/io/JavaDirectoryDeleteUnitTest.java new file mode 100644 index 0000000000..b1f800eef3 --- /dev/null +++ b/core-java/src/test/java/org/baeldung/java/io/JavaDirectoryDeleteUnitTest.java @@ -0,0 +1,143 @@ +package org.baeldung.java.io; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.io.File; +import java.io.IOException; +import java.nio.file.FileVisitResult; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.SimpleFileVisitor; +import java.nio.file.attribute.BasicFileAttributes; +import java.util.Arrays; +import java.util.Comparator; +import java.util.List; + +import org.apache.commons.io.FileUtils; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.springframework.util.FileSystemUtils; + +public class JavaDirectoryDeleteUnitTest { + private static Path TEMP_DIRECTORY; + private static final String DIRECTORY_NAME = "toBeDeleted"; + + public static final List ALL_LINES = Arrays.asList(new String[] { "This is line 1", "This is line 2", "This is line 3", "This is line 4", "This is line 5", "This is line 6" }); + + @BeforeClass + public static void initializeTempDirectory() throws IOException { + TEMP_DIRECTORY = Files.createTempDirectory("tmpForJUnit"); + } + + @AfterClass + public static void cleanTempDirectory() throws IOException { + FileUtils.deleteDirectory(TEMP_DIRECTORY.toFile()); + } + + @Before + public void setupDirectory() throws IOException { + Path tempPathForEachTest = Files.createDirectory(TEMP_DIRECTORY.resolve(DIRECTORY_NAME)); + + // Create a directory structure + Files.write(tempPathForEachTest.resolve("file1.txt"), ALL_LINES.subList(0, 2)); + Files.write(tempPathForEachTest.resolve("file2.txt"), ALL_LINES.subList(2, 4)); + + Files.createDirectories(tempPathForEachTest.resolve("Empty")); + + Path aSubDir = Files.createDirectories(tempPathForEachTest.resolve("notEmpty")); + Files.write(aSubDir.resolve("file3.txt"), ALL_LINES.subList(3, 5)); + Files.write(aSubDir.resolve("file4.txt"), ALL_LINES.subList(0, 3)); + + aSubDir = Files.createDirectories(aSubDir.resolve("anotherSubDirectory")); + Files.write(aSubDir.resolve("file5.txt"), ALL_LINES.subList(4, 5)); + Files.write(aSubDir.resolve("file6.txt"), ALL_LINES.subList(0, 2)); + } + + @After + public void checkAndCleanupIfRequired() throws IOException { + Path pathToBeDeleted = TEMP_DIRECTORY.resolve(DIRECTORY_NAME); + if (Files.exists(pathToBeDeleted)) { + FileUtils.deleteDirectory(pathToBeDeleted.toFile()); + } + } + + boolean deleteDirectory(File directoryToBeDeleted) { + File[] allContents = directoryToBeDeleted.listFiles(); + + for (File file : allContents) { + if (file.isDirectory()) { + deleteDirectory(file); + } else { + file.delete(); + } + } + + return directoryToBeDeleted.delete(); + } + + @Test + public void givenDirectory_whenDeletedWithRecursion_thenIsGone() throws IOException { + Path pathToBeDeleted = TEMP_DIRECTORY.resolve(DIRECTORY_NAME); + + boolean result = deleteDirectory(pathToBeDeleted.toFile()); + + assertTrue("Could not delete directory", result); + assertFalse("Directory still exists", Files.exists(pathToBeDeleted)); + } + + @Test + public void givenDirectory_whenDeletedWithCommonsIOFileUtils_thenIsGone() throws IOException { + Path pathToBeDeleted = TEMP_DIRECTORY.resolve(DIRECTORY_NAME); + + FileUtils.deleteDirectory(pathToBeDeleted.toFile()); + + assertFalse("Directory still exists", Files.exists(pathToBeDeleted)); + } + + @Test + public void givenDirectory_whenDeletedWithSpringFileSystemUtils_thenIsGone() throws IOException { + Path pathToBeDeleted = TEMP_DIRECTORY.resolve(DIRECTORY_NAME); + + boolean result = FileSystemUtils.deleteRecursively(pathToBeDeleted.toFile()); + + assertTrue("Could not delete directory", result); + assertFalse("Directory still exists", Files.exists(pathToBeDeleted)); + } + + @Test + public void givenDirectory_whenDeletedWithFilesWalk_thenIsGone() throws IOException { + Path pathToBeDeleted = TEMP_DIRECTORY.resolve(DIRECTORY_NAME); + + Files.walk(pathToBeDeleted) + .sorted(Comparator.reverseOrder()) + .map(Path::toFile) + .forEach(File::delete); + + assertFalse("Directory still exists", Files.exists(pathToBeDeleted)); + } + + @Test + public void givenDirectory_whenDeletedWithNIO2WalkFileTree_thenIsGone() throws IOException { + Path pathToBeDeleted = TEMP_DIRECTORY.resolve(DIRECTORY_NAME); + + Files.walkFileTree(pathToBeDeleted, new SimpleFileVisitor() { + @Override + public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException { + Files.delete(dir); + return FileVisitResult.CONTINUE; + } + + @Override + public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { + Files.delete(file); + return FileVisitResult.CONTINUE; + } + }); + + assertFalse("Directory still exists", Files.exists(pathToBeDeleted)); + } +} From 5945d5ceb3e6515d9f788d699cd253ee8ab18f19 Mon Sep 17 00:00:00 2001 From: ramansahasi Date: Wed, 30 Aug 2017 02:55:11 +0530 Subject: [PATCH 11/73] BAEL-1072 - Difference between Proxy, Decorator, Adapter, and Bridge (Update) (#2518) * Removing old code * Removing old code * Removing old code * Removing old code * Updated design for Adapter pattern * Updated test cases for new design --- .../adapter/AdapterPatternDriver.java | 15 ++++++++--- .../designpatterns/adapter/AstonMartin.java | 8 ++++++ .../designpatterns/adapter/BugattiVeyron.java | 8 ++++++ .../designpatterns/adapter/LuxuryCars.java | 5 ++++ .../adapter/LuxuryCarsAdapter.java | 5 ++++ .../adapter/LuxuryCarsAdapterImpl.java | 19 ++++++++++++++ .../adapter/LuxuryCarsSpeed.java | 15 ----------- .../adapter/LuxuryCarsSpeedAdapter.java | 9 ------- .../adapter/LuxuryCarsSpeedAdapterImpl.java | 26 ------------------- .../designpatterns/adapter/McLaren.java | 8 ++++++ .../AdapterPatternIntegrationTest.java | 16 ++++++------ 11 files changed, 72 insertions(+), 62 deletions(-) create mode 100644 core-java/src/main/java/com/baeldung/designpatterns/adapter/AstonMartin.java create mode 100644 core-java/src/main/java/com/baeldung/designpatterns/adapter/BugattiVeyron.java create mode 100644 core-java/src/main/java/com/baeldung/designpatterns/adapter/LuxuryCars.java create mode 100644 core-java/src/main/java/com/baeldung/designpatterns/adapter/LuxuryCarsAdapter.java create mode 100644 core-java/src/main/java/com/baeldung/designpatterns/adapter/LuxuryCarsAdapterImpl.java delete mode 100644 core-java/src/main/java/com/baeldung/designpatterns/adapter/LuxuryCarsSpeed.java delete mode 100644 core-java/src/main/java/com/baeldung/designpatterns/adapter/LuxuryCarsSpeedAdapter.java delete mode 100644 core-java/src/main/java/com/baeldung/designpatterns/adapter/LuxuryCarsSpeedAdapterImpl.java create mode 100644 core-java/src/main/java/com/baeldung/designpatterns/adapter/McLaren.java diff --git a/core-java/src/main/java/com/baeldung/designpatterns/adapter/AdapterPatternDriver.java b/core-java/src/main/java/com/baeldung/designpatterns/adapter/AdapterPatternDriver.java index 0d69d0e7ec..9d4fcf3574 100644 --- a/core-java/src/main/java/com/baeldung/designpatterns/adapter/AdapterPatternDriver.java +++ b/core-java/src/main/java/com/baeldung/designpatterns/adapter/AdapterPatternDriver.java @@ -5,9 +5,16 @@ import static com.baeldung.designpatterns.util.LogerUtil.LOG; public class AdapterPatternDriver { public static void main(String args[]) { - LuxuryCarsSpeedAdapter luxuryCars = new LuxuryCarsSpeedAdapterImpl(); - LOG.info("Bugatti Veyron Super Sport's top speed is " + luxuryCars.bugattiVeyronInKMPH() + " Kmph."); - LOG.info("McLaren F1 top speed is " + luxuryCars.mcLarenInKMPH() + " Kmph."); - LOG.info("Aston Martin One-77 top speed is " + luxuryCars.astonMartinInKMPH() + " Kmph."); + LuxuryCars bugattiVeyron = new BugattiVeyron(); + LuxuryCarsAdapter bugattiVeyronAdapter = new LuxuryCarsAdapterImpl(bugattiVeyron); + LOG.info("Bugatti Veyron Super Sport's top speed is " + bugattiVeyronAdapter.speedInKMPH() + " Kmph."); + + LuxuryCars mcLaren = new McLaren(); + LuxuryCarsAdapter mcLarenAdapter = new LuxuryCarsAdapterImpl(mcLaren); + LOG.info("McLaren F1 top speed is " + mcLarenAdapter.speedInKMPH() + " Kmph."); + + LuxuryCars astonMartin = new AstonMartin(); + LuxuryCarsAdapter astonMartinAdapter = new LuxuryCarsAdapterImpl(astonMartin); + LOG.info("McLaren F1 top speed is " + astonMartinAdapter.speedInKMPH() + " Kmph."); } } diff --git a/core-java/src/main/java/com/baeldung/designpatterns/adapter/AstonMartin.java b/core-java/src/main/java/com/baeldung/designpatterns/adapter/AstonMartin.java new file mode 100644 index 0000000000..b1fba0dae3 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/designpatterns/adapter/AstonMartin.java @@ -0,0 +1,8 @@ +package com.baeldung.designpatterns.adapter; + +public class AstonMartin implements LuxuryCars { + @Override + public double speedInMPH() { + return 220; + } +} diff --git a/core-java/src/main/java/com/baeldung/designpatterns/adapter/BugattiVeyron.java b/core-java/src/main/java/com/baeldung/designpatterns/adapter/BugattiVeyron.java new file mode 100644 index 0000000000..1b0b834448 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/designpatterns/adapter/BugattiVeyron.java @@ -0,0 +1,8 @@ +package com.baeldung.designpatterns.adapter; + +public class BugattiVeyron implements LuxuryCars { + @Override + public double speedInMPH() { + return 268; + } +} diff --git a/core-java/src/main/java/com/baeldung/designpatterns/adapter/LuxuryCars.java b/core-java/src/main/java/com/baeldung/designpatterns/adapter/LuxuryCars.java new file mode 100644 index 0000000000..9926f5f8bc --- /dev/null +++ b/core-java/src/main/java/com/baeldung/designpatterns/adapter/LuxuryCars.java @@ -0,0 +1,5 @@ +package com.baeldung.designpatterns.adapter; + +public interface LuxuryCars { + public double speedInMPH(); +} \ No newline at end of file diff --git a/core-java/src/main/java/com/baeldung/designpatterns/adapter/LuxuryCarsAdapter.java b/core-java/src/main/java/com/baeldung/designpatterns/adapter/LuxuryCarsAdapter.java new file mode 100644 index 0000000000..f945e1b389 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/designpatterns/adapter/LuxuryCarsAdapter.java @@ -0,0 +1,5 @@ +package com.baeldung.designpatterns.adapter; + +public interface LuxuryCarsAdapter { + public double speedInKMPH(); +} diff --git a/core-java/src/main/java/com/baeldung/designpatterns/adapter/LuxuryCarsAdapterImpl.java b/core-java/src/main/java/com/baeldung/designpatterns/adapter/LuxuryCarsAdapterImpl.java new file mode 100644 index 0000000000..f2bf553292 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/designpatterns/adapter/LuxuryCarsAdapterImpl.java @@ -0,0 +1,19 @@ +package com.baeldung.designpatterns.adapter; + +public class LuxuryCarsAdapterImpl implements LuxuryCarsAdapter { + private LuxuryCars luxuryCars; + + public LuxuryCarsAdapterImpl(LuxuryCars luxuryCars) { + this.luxuryCars = luxuryCars; + } + + @Override + public double speedInKMPH() { + double mph = luxuryCars.speedInMPH(); + return convertMPHtoKMPH(mph); + } + + private double convertMPHtoKMPH(double mph) { + return mph * 1.60934; + } +} diff --git a/core-java/src/main/java/com/baeldung/designpatterns/adapter/LuxuryCarsSpeed.java b/core-java/src/main/java/com/baeldung/designpatterns/adapter/LuxuryCarsSpeed.java deleted file mode 100644 index 0b97b8228c..0000000000 --- a/core-java/src/main/java/com/baeldung/designpatterns/adapter/LuxuryCarsSpeed.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.baeldung.designpatterns.adapter; - -public class LuxuryCarsSpeed { - public double bugattiVeyronInMPH() { - return 268; - } - - public double mcLarenInMPH() { - return 241; - } - - public double astonMartinInMPH() { - return 220; - } -} diff --git a/core-java/src/main/java/com/baeldung/designpatterns/adapter/LuxuryCarsSpeedAdapter.java b/core-java/src/main/java/com/baeldung/designpatterns/adapter/LuxuryCarsSpeedAdapter.java deleted file mode 100644 index d9255f0910..0000000000 --- a/core-java/src/main/java/com/baeldung/designpatterns/adapter/LuxuryCarsSpeedAdapter.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.baeldung.designpatterns.adapter; - -public interface LuxuryCarsSpeedAdapter { - public double bugattiVeyronInKMPH(); - - public double mcLarenInKMPH(); - - public double astonMartinInKMPH(); -} diff --git a/core-java/src/main/java/com/baeldung/designpatterns/adapter/LuxuryCarsSpeedAdapterImpl.java b/core-java/src/main/java/com/baeldung/designpatterns/adapter/LuxuryCarsSpeedAdapterImpl.java deleted file mode 100644 index 2767b78e38..0000000000 --- a/core-java/src/main/java/com/baeldung/designpatterns/adapter/LuxuryCarsSpeedAdapterImpl.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.baeldung.designpatterns.adapter; - -public class LuxuryCarsSpeedAdapterImpl extends LuxuryCarsSpeed implements LuxuryCarsSpeedAdapter { - - @Override - public double bugattiVeyronInKMPH() { - double mph = super.bugattiVeyronInMPH(); - return convertMPHtoKMPH(mph); - } - - @Override - public double mcLarenInKMPH() { - double mph = super.mcLarenInMPH(); - return convertMPHtoKMPH(mph); - } - - @Override - public double astonMartinInKMPH() { - double mph = super.astonMartinInMPH(); - return convertMPHtoKMPH(mph); - } - - private double convertMPHtoKMPH(double mph) { - return mph * 1.60934; - } -} diff --git a/core-java/src/main/java/com/baeldung/designpatterns/adapter/McLaren.java b/core-java/src/main/java/com/baeldung/designpatterns/adapter/McLaren.java new file mode 100644 index 0000000000..e2ba2b830d --- /dev/null +++ b/core-java/src/main/java/com/baeldung/designpatterns/adapter/McLaren.java @@ -0,0 +1,8 @@ +package com.baeldung.designpatterns.adapter; + +public class McLaren implements LuxuryCars { + @Override + public double speedInMPH() { + return 241; + } +} diff --git a/core-java/src/test/java/com/baeldung/designpatterns/AdapterPatternIntegrationTest.java b/core-java/src/test/java/com/baeldung/designpatterns/AdapterPatternIntegrationTest.java index fb483a8a68..e56e271743 100644 --- a/core-java/src/test/java/com/baeldung/designpatterns/AdapterPatternIntegrationTest.java +++ b/core-java/src/test/java/com/baeldung/designpatterns/AdapterPatternIntegrationTest.java @@ -1,20 +1,20 @@ package com.baeldung.designpatterns; - -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; import org.junit.Test; -import com.baeldung.designpatterns.adapter.LuxuryCarsSpeedAdapter; -import com.baeldung.designpatterns.adapter.LuxuryCarsSpeedAdapterImpl; +import com.baeldung.designpatterns.adapter.AstonMartin; +import com.baeldung.designpatterns.adapter.BugattiVeyron; +import com.baeldung.designpatterns.adapter.LuxuryCarsAdapterImpl; +import com.baeldung.designpatterns.adapter.McLaren; public class AdapterPatternIntegrationTest { @Test public void givenLuxuryCarsAdapter_WhenConvertingMPHToKMPH_thenSuccessfullyConverted() { - LuxuryCarsSpeedAdapter luxuryCars = new LuxuryCarsSpeedAdapterImpl(); - assertEquals(luxuryCars.bugattiVeyronInKMPH(), 431.30312, 0.00001); - assertEquals(luxuryCars.mcLarenInKMPH(), 387.85094, 0.00001); - assertEquals(luxuryCars.astonMartinInKMPH(), 354.0548, 0.00001); + assertEquals(new LuxuryCarsAdapterImpl(new BugattiVeyron()).speedInKMPH(), 431.30312, 0.00001); + assertEquals(new LuxuryCarsAdapterImpl(new McLaren()).speedInKMPH(), 387.85094, 0.00001); + assertEquals(new LuxuryCarsAdapterImpl(new AstonMartin()).speedInKMPH(), 354.0548, 0.00001); } } From 7df2635822aeea5d70f57a3f28c65e8592e770b2 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Tue, 29 Aug 2017 23:33:35 +0200 Subject: [PATCH 12/73] ejb refactor (#2528) * ejb refactor * Remove unused module --- .../com/baeldung/ejb/wildfly}/TextApplication.java | 4 +--- .../baeldung/ejb/wildfly}/TextApplicationTest.java | 2 +- .../com/baeldung/ejb/wildfly}/TextProcessorBean.java | 2 +- .../baeldung/ejb/wildfly}/TextProcessorRemote.java | 2 +- .../src/main/resources/jboss-ejb-client.properties | 8 -------- .../baeldung/ejbmodule/TextProcessorBeanTest.java | 12 ------------ ejb/pom.xml | 1 - 7 files changed, 4 insertions(+), 27 deletions(-) rename ejb/{ejbclient/src/main/java/com/baeldung/ejbclient/application => ejb-client/src/main/java/com/baeldung/ejb/wildfly}/TextApplication.java (92%) rename ejb/{ejbclient/src/test/java/com/baeldung/ejbclient/application => ejb-client/src/test/java/com/baeldung/ejb/wildfly}/TextApplicationTest.java (94%) rename ejb/{ejbmodule/src/main/java/com/baeldung/ejbmodule => ejb-remote/src/main/java/com/baeldung/ejb/wildfly}/TextProcessorBean.java (85%) rename ejb/{ejbmodule/src/main/java/com/baeldung/ejbmodule => ejb-remote/src/main/java/com/baeldung/ejb/wildfly}/TextProcessorRemote.java (76%) delete mode 100644 ejb/ejbclient/src/main/resources/jboss-ejb-client.properties delete mode 100644 ejb/ejbmodule/src/test/java/com/baeldung/ejbmodule/TextProcessorBeanTest.java diff --git a/ejb/ejbclient/src/main/java/com/baeldung/ejbclient/application/TextApplication.java b/ejb/ejb-client/src/main/java/com/baeldung/ejb/wildfly/TextApplication.java similarity index 92% rename from ejb/ejbclient/src/main/java/com/baeldung/ejbclient/application/TextApplication.java rename to ejb/ejb-client/src/main/java/com/baeldung/ejb/wildfly/TextApplication.java index b65c21100d..3b63761c73 100644 --- a/ejb/ejbclient/src/main/java/com/baeldung/ejbclient/application/TextApplication.java +++ b/ejb/ejb-client/src/main/java/com/baeldung/ejb/wildfly/TextApplication.java @@ -1,7 +1,5 @@ -package com.baeldung.ejbclient.application; +package com.baeldung.ejb.wildfly; -import com.baeldung.ejbmodule.TextProcessorBean; -import com.baeldung.ejbmodule.TextProcessorRemote; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; diff --git a/ejb/ejbclient/src/test/java/com/baeldung/ejbclient/application/TextApplicationTest.java b/ejb/ejb-client/src/test/java/com/baeldung/ejb/wildfly/TextApplicationTest.java similarity index 94% rename from ejb/ejbclient/src/test/java/com/baeldung/ejbclient/application/TextApplicationTest.java rename to ejb/ejb-client/src/test/java/com/baeldung/ejb/wildfly/TextApplicationTest.java index 947c72d0b0..c0446eaea6 100644 --- a/ejb/ejbclient/src/test/java/com/baeldung/ejbclient/application/TextApplicationTest.java +++ b/ejb/ejb-client/src/test/java/com/baeldung/ejb/wildfly/TextApplicationTest.java @@ -1,4 +1,4 @@ -package com.baeldung.ejbclient.application; +package com.baeldung.ejb.wildfly; import org.junit.AfterClass; import org.junit.BeforeClass; diff --git a/ejb/ejbmodule/src/main/java/com/baeldung/ejbmodule/TextProcessorBean.java b/ejb/ejb-remote/src/main/java/com/baeldung/ejb/wildfly/TextProcessorBean.java similarity index 85% rename from ejb/ejbmodule/src/main/java/com/baeldung/ejbmodule/TextProcessorBean.java rename to ejb/ejb-remote/src/main/java/com/baeldung/ejb/wildfly/TextProcessorBean.java index dc0db5fc53..4f0c013b0f 100644 --- a/ejb/ejbmodule/src/main/java/com/baeldung/ejbmodule/TextProcessorBean.java +++ b/ejb/ejb-remote/src/main/java/com/baeldung/ejb/wildfly/TextProcessorBean.java @@ -1,4 +1,4 @@ -package com.baeldung.ejbmodule; +package com.baeldung.ejb.wildfly; import javax.ejb.Stateless; diff --git a/ejb/ejbmodule/src/main/java/com/baeldung/ejbmodule/TextProcessorRemote.java b/ejb/ejb-remote/src/main/java/com/baeldung/ejb/wildfly/TextProcessorRemote.java similarity index 76% rename from ejb/ejbmodule/src/main/java/com/baeldung/ejbmodule/TextProcessorRemote.java rename to ejb/ejb-remote/src/main/java/com/baeldung/ejb/wildfly/TextProcessorRemote.java index 680d8f4e10..b51af8528d 100644 --- a/ejb/ejbmodule/src/main/java/com/baeldung/ejbmodule/TextProcessorRemote.java +++ b/ejb/ejb-remote/src/main/java/com/baeldung/ejb/wildfly/TextProcessorRemote.java @@ -1,4 +1,4 @@ -package com.baeldung.ejbmodule; +package com.baeldung.ejb.wildfly; import javax.ejb.Remote; diff --git a/ejb/ejbclient/src/main/resources/jboss-ejb-client.properties b/ejb/ejbclient/src/main/resources/jboss-ejb-client.properties deleted file mode 100644 index 67533b7825..0000000000 --- a/ejb/ejbclient/src/main/resources/jboss-ejb-client.properties +++ /dev/null @@ -1,8 +0,0 @@ -endpoint.name=client-endpoint -remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false -remote.connections=default -remote.connection.default.host=127.0.0.1 -remote.connection.default.port=8080 -remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false -remote.connection.default.username=myusername -remote.connection.default.password=mypassword \ No newline at end of file diff --git a/ejb/ejbmodule/src/test/java/com/baeldung/ejbmodule/TextProcessorBeanTest.java b/ejb/ejbmodule/src/test/java/com/baeldung/ejbmodule/TextProcessorBeanTest.java deleted file mode 100644 index d8693420d4..0000000000 --- a/ejb/ejbmodule/src/test/java/com/baeldung/ejbmodule/TextProcessorBeanTest.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.baeldung.ejbmodule; - -import org.junit.Test; -import static org.junit.Assert.assertEquals; - -public class TextProcessorBeanTest { - @Test - public void givenInputString_whenComparedToStringParsedByBean_thenSuccessful() { - TextProcessorBean textProcessor = new TextProcessorBean(); - assertEquals("TEST", textProcessor.processText("test")); - } -} \ No newline at end of file diff --git a/ejb/pom.xml b/ejb/pom.xml index b8aa32fab1..78e40a7b7c 100755 --- a/ejb/pom.xml +++ b/ejb/pom.xml @@ -81,6 +81,5 @@ ejb-remote ejb-client ejb-session-beans - ejb-session-beans-client \ No newline at end of file From 4c7f165c7e72e922245923155ab27426c84c9c9e Mon Sep 17 00:00:00 2001 From: Daniele Demichelis Date: Wed, 30 Aug 2017 11:20:56 +0200 Subject: [PATCH 13/73] Bael 776 vert.x and rxjava (#2529) * Burlap & Hessian server added * Burlap & Hessian client work * Fixed main * Fixed formatting * Spring Remote example based on Burlap & Hessian runs in a JUnit test * Fixed main * Fixed formatting * Spring Remote example based on Burlap & Hessian runs in a JUnit test * Spring Remote example based on Burlap & Hessian runs in a JUnit test * Burlap & Hessian client work * Fixed main * Fixed main * Fixed formatting * Fixed formatting * Spring Remote example based on Burlap & Hessian runs in a JUnit test * Spring Remote example based on Burlap & Hessian runs in a JUnit test * Fixed POM * Vertx / RxJava example * BAEL-776 - Vertx and RxJava * BAEL-776 - Vertx and RxJava --- .gitignore | 1 + pom.xml | 1 + vertx-and-rxjava/pom.xml | 71 ++++++++++++++ vertx-and-rxjava/pom.xml.orig | 71 ++++++++++++++ .../java/com/baeldung/CityAndDayLength.java | 18 ++++ .../java/com/baeldung/MetaWeatherClient.java | 45 +++++++++ .../com/baeldung/VertxWithRxJavaTest.java | 94 +++++++++++++++++++ .../src/test/resources/cities.txt | 6 ++ .../src/test/resources/logback-test.xml | 12 +++ 9 files changed, 319 insertions(+) create mode 100644 vertx-and-rxjava/pom.xml create mode 100644 vertx-and-rxjava/pom.xml.orig create mode 100644 vertx-and-rxjava/src/test/java/com/baeldung/CityAndDayLength.java create mode 100644 vertx-and-rxjava/src/test/java/com/baeldung/MetaWeatherClient.java create mode 100644 vertx-and-rxjava/src/test/java/com/baeldung/VertxWithRxJavaTest.java create mode 100644 vertx-and-rxjava/src/test/resources/cities.txt create mode 100644 vertx-and-rxjava/src/test/resources/logback-test.xml diff --git a/.gitignore b/.gitignore index 1890e8bd0e..a8f09b4135 100644 --- a/.gitignore +++ b/.gitignore @@ -41,3 +41,4 @@ SpringDataInjectionDemo/.mvn/wrapper/maven-wrapper.properties spring-call-getters-using-reflection/.mvn/wrapper/maven-wrapper.properties spring-check-if-a-property-is-null/.mvn/wrapper/maven-wrapper.properties +/vertx-and-rxjava/.vertx/ diff --git a/pom.xml b/pom.xml index da38d65df3..004e4b3df9 100644 --- a/pom.xml +++ b/pom.xml @@ -240,6 +240,7 @@ spring-boot-property-exp mockserver undertow + vertx-and-rxjava diff --git a/vertx-and-rxjava/pom.xml b/vertx-and-rxjava/pom.xml new file mode 100644 index 0000000000..47510e60f7 --- /dev/null +++ b/vertx-and-rxjava/pom.xml @@ -0,0 +1,71 @@ + + + + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + + + 4.0.0 + com.baeldung + vertx-and-rxjava + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.8 + 1.8 + + + + + + + + + io.vertx + vertx-rx-java2 + 3.5.0.Beta1 + + + io.vertx + vertx-core + 3.5.0.Beta1 + + + io.vertx + vertx-unit + 3.5.0.Beta1 + test + + + junit + junit + 4.12 + test + + + org.slf4j + slf4j-api + 1.7.25 + + + ch.qos.logback + logback-classic + 1.2.3 + + + junit + junit + 4.12 + + + + + \ No newline at end of file diff --git a/vertx-and-rxjava/pom.xml.orig b/vertx-and-rxjava/pom.xml.orig new file mode 100644 index 0000000000..47510e60f7 --- /dev/null +++ b/vertx-and-rxjava/pom.xml.orig @@ -0,0 +1,71 @@ + + + + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + + + 4.0.0 + com.baeldung + vertx-and-rxjava + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.8 + 1.8 + + + + + + + + + io.vertx + vertx-rx-java2 + 3.5.0.Beta1 + + + io.vertx + vertx-core + 3.5.0.Beta1 + + + io.vertx + vertx-unit + 3.5.0.Beta1 + test + + + junit + junit + 4.12 + test + + + org.slf4j + slf4j-api + 1.7.25 + + + ch.qos.logback + logback-classic + 1.2.3 + + + junit + junit + 4.12 + + + + + \ No newline at end of file diff --git a/vertx-and-rxjava/src/test/java/com/baeldung/CityAndDayLength.java b/vertx-and-rxjava/src/test/java/com/baeldung/CityAndDayLength.java new file mode 100644 index 0000000000..dec4aa4852 --- /dev/null +++ b/vertx-and-rxjava/src/test/java/com/baeldung/CityAndDayLength.java @@ -0,0 +1,18 @@ +package com.baeldung; + +import java.text.MessageFormat; + +class CityAndDayLength { + + private final String city; + private final double dayLengthInHours; + + public CityAndDayLength(String city, long dayLengthInSeconds) { + this.city = city; + this.dayLengthInHours = dayLengthInSeconds / (60.0 * 60.0); + } + + @Override public String toString() { + return MessageFormat.format("In {0} there are {1,number,#0.0} hours of light.", city, dayLengthInHours); + } +} diff --git a/vertx-and-rxjava/src/test/java/com/baeldung/MetaWeatherClient.java b/vertx-and-rxjava/src/test/java/com/baeldung/MetaWeatherClient.java new file mode 100644 index 0000000000..0a3e9d8713 --- /dev/null +++ b/vertx-and-rxjava/src/test/java/com/baeldung/MetaWeatherClient.java @@ -0,0 +1,45 @@ +package com.baeldung; + +import io.reactivex.Flowable; +import io.vertx.core.http.RequestOptions; +import io.vertx.reactivex.core.http.HttpClient; +import io.vertx.reactivex.core.http.HttpClientRequest; +import io.vertx.reactivex.core.http.HttpClientResponse; + +import static java.lang.String.format; + +public class MetaWeatherClient { + + private static RequestOptions metawether = new RequestOptions() + .setHost("www.metaweather.com") + .setPort(443) + .setSsl(true); + + /** + * @return A flowable backed by vertx that automatically sends an HTTP request at soon as the first subscription is received. + */ +private static Flowable autoPerformingReq(HttpClient httpClient, String uri) { + HttpClientRequest req = httpClient.get(new RequestOptions(metawether).setURI(uri)); + return req.toFlowable() + .doOnSubscribe(subscription -> req.end()); +} + +static Flowable searchByCityName(HttpClient httpClient, String cityName) { + HttpClientRequest req = httpClient.get( + new RequestOptions() + .setHost("www.metaweather.com") + .setPort(443) + .setSsl(true) + .setURI(format("/api/location/search/?query=%s", cityName))); + return req + .toFlowable() + .doOnSubscribe(subscription -> req.end()); +} + + static Flowable getDataByPlaceId(HttpClient httpClient, long placeId) { + return autoPerformingReq( + httpClient, + format("/api/location/%s/", placeId)); + } + +} diff --git a/vertx-and-rxjava/src/test/java/com/baeldung/VertxWithRxJavaTest.java b/vertx-and-rxjava/src/test/java/com/baeldung/VertxWithRxJavaTest.java new file mode 100644 index 0000000000..f02792c3d7 --- /dev/null +++ b/vertx-and-rxjava/src/test/java/com/baeldung/VertxWithRxJavaTest.java @@ -0,0 +1,94 @@ +package com.baeldung; + +import io.reactivex.Flowable; +import io.vertx.reactivex.core.Vertx; +import io.vertx.reactivex.core.buffer.Buffer; +import io.vertx.reactivex.core.file.FileSystem; +import io.vertx.reactivex.core.http.HttpClient; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.time.ZonedDateTime; + +import static com.baeldung.MetaWeatherClient.getDataByPlaceId; +import static com.baeldung.MetaWeatherClient.searchByCityName; + +public class VertxWithRxJavaTest { + + private Vertx vertx; + private HttpClient httpClient; + private FileSystem fileSystem; + static Logger log = LoggerFactory.getLogger(VertxWithRxJavaTest.class); + + @Before public void setUp() { + vertx = io.vertx.reactivex.core.Vertx.vertx(); + httpClient = vertx.createHttpClient(); + fileSystem = vertx.fileSystem(); + } + + @After public void tearDown() { + vertx.close(); + } + + @Test public void lightLengthTest() throws InterruptedException { + + // read the file that contains one city name per line + fileSystem + .rxReadFile("cities.txt").toFlowable() + .doOnNext(buffer -> log.info("File buffer ---\n{}\n---", buffer)) + + // split file content in lines to obtain one city per line + .flatMap(buffer -> Flowable.fromArray(buffer.toString().split("\\r?\\n"))) + .doOnNext(city -> log.info("City from file: '{}'", city)) + + // discard cities that are commented out with a leading '#' + .filter(city -> !city.startsWith("#")) + .doOnNext(city -> log.info("City that survived filtering: '{}'", city)) + + // for each city sends a request to obtain its 'woeid' + // and collect the buffer from the answer + .flatMap(city -> searchByCityName(httpClient, city) ) + .flatMap(response -> response.toFlowable()) + .doOnNext(buffer -> log.info("JSON of city detail: '{}'", buffer)) + + // get the woeid of each city + .map(cityBuffer -> cityBuffer + .toJsonArray() + .getJsonObject(0) + .getLong("woeid")) + + // use the id to ask for data + .flatMap(cityId -> getDataByPlaceId(httpClient, cityId)) + .flatMap(response -> response + .toObservable() + .reduce( + Buffer.buffer(), + (total, newBuf) -> total.appendBuffer( newBuf )).toFlowable() ) + + // get the JSON object out of the response + .doOnNext(buffer -> log.info("JSON of place detail: '{}'", buffer)) + .map(buffer -> buffer.toJsonObject()) + + // map the JSON in a POJO + .map(json -> { + ZonedDateTime sunRise = ZonedDateTime.parse(json.getString("sun_rise")); + ZonedDateTime sunSet = ZonedDateTime.parse(json.getString("sun_set")); + String cityName = json.getString("title"); + return new CityAndDayLength( + cityName,sunSet.toEpochSecond() - sunRise.toEpochSecond()); + }) + + // consume the events + .subscribe( + cityAndDayLength -> System.out.println(cityAndDayLength), + ex -> ex.printStackTrace()); + + // enough to give time to complete the execution + Thread.sleep(20000); + + } + +} diff --git a/vertx-and-rxjava/src/test/resources/cities.txt b/vertx-and-rxjava/src/test/resources/cities.txt new file mode 100644 index 0000000000..dbe6e96758 --- /dev/null +++ b/vertx-and-rxjava/src/test/resources/cities.txt @@ -0,0 +1,6 @@ +Milan +Chicago +Cairo +Santiago +Moscow +Auckland \ No newline at end of file diff --git a/vertx-and-rxjava/src/test/resources/logback-test.xml b/vertx-and-rxjava/src/test/resources/logback-test.xml new file mode 100644 index 0000000000..71e05a4e24 --- /dev/null +++ b/vertx-and-rxjava/src/test/resources/logback-test.xml @@ -0,0 +1,12 @@ + + + + [%thread{32}] %-5level %msg - %logger%n + + + + + + + + \ No newline at end of file From 085cef8fb33c8825c6ef83c051350671c370506e Mon Sep 17 00:00:00 2001 From: Ante Pocedulic Date: Wed, 30 Aug 2017 14:35:20 +0200 Subject: [PATCH 14/73] string search algorithms article (#2460) * - added code for string search algorithms article - added tests * - fixed algorithm for finding prime numbers --- .../string/search/StringSearchAlgorithms.java | 194 ++++++++++++++++++ .../StringSearchAlgorithmsTest.java | 25 +++ 2 files changed, 219 insertions(+) create mode 100755 algorithms/src/main/java/com/baeldung/algorithms/string/search/StringSearchAlgorithms.java create mode 100755 algorithms/src/test/java/algorithms/StringSearchAlgorithmsTest.java diff --git a/algorithms/src/main/java/com/baeldung/algorithms/string/search/StringSearchAlgorithms.java b/algorithms/src/main/java/com/baeldung/algorithms/string/search/StringSearchAlgorithms.java new file mode 100755 index 0000000000..45ac53e039 --- /dev/null +++ b/algorithms/src/main/java/com/baeldung/algorithms/string/search/StringSearchAlgorithms.java @@ -0,0 +1,194 @@ +package com.baeldung.algorithms.string.search; + +import java.math.BigInteger; +import java.util.Random; + +public class StringSearchAlgorithms { + public static long getBiggerPrime(int m) { + BigInteger prime = BigInteger.probablePrime(getNumberOfBits(m) + 1, new Random()); + return prime.longValue(); + } + + public static long getLowerPrime(long number) { + BigInteger prime = BigInteger.probablePrime(getNumberOfBits(number) - 1, new Random()); + return prime.longValue(); + } + + private static int getNumberOfBits(final int number) { + return Integer.SIZE - Integer.numberOfLeadingZeros(number); + } + + private static int getNumberOfBits(final long number) { + return Long.SIZE - Long.numberOfLeadingZeros(number); + } + + public static int simpleTextSearch(char[] pattern, char[] text) { + int patternSize = pattern.length; + int textSize = text.length; + + int i = 0; + + while ((i + patternSize) <= textSize) { + int j = 0; + while (text[i + j] == pattern[j]) { + j += 1; + if (j >= patternSize) + return i; + } + i += 1; + } + + return -1; + } + + public static int RabinKarpMethod(char[] pattern, char[] text) { + int patternSize = pattern.length; // m + int textSize = text.length; // n + + long prime = getBiggerPrime(patternSize); + + long r = 1; + for (int i = 0; i < patternSize - 1; i++) { + r *= 2; + r = r % prime; + } + + long[] t = new long[textSize]; + t[0] = 0; + + long pfinger = 0; + + for (int j = 0; j < patternSize; j++) { + t[0] = (2 * t[0] + text[j]) % prime; + pfinger = (2 * pfinger + pattern[j]) % prime; + } + + int i = 0; + boolean passed = false; + + int diff = textSize - patternSize; + for (i = 0; i <= diff; i++) { + if (t[i] == pfinger) { + passed = true; + for (int k = 0; k < patternSize; k++) { + if (text[i + k] != pattern[k]) { + passed = false; + break; + } + } + + if (passed) { + return i; + } + } + + if (i < diff) { + long value = 2 * (t[i] - r * text[i]) + text[i + patternSize]; + t[i + 1] = ((value % prime) + prime) % prime; + } + } + return -1; + + } + + public static int KnuthMorrisPrattSearch(char[] pattern, char[] text) { + int patternSize = pattern.length; // m + int textSize = text.length; // n + + int i = 0, j = 0; + + int[] shift = KnuthMorrisPrattShift(pattern); + + while ((i + patternSize) <= textSize) { + while (text[i + j] == pattern[j]) { + j += 1; + if (j >= patternSize) + return i; + } + + if (j > 0) { + i += shift[j - 1]; + j = Math.max(j - shift[j - 1], 0); + } else { + i++; + j = 0; + } + } + return -1; + } + + public static int[] KnuthMorrisPrattShift(char[] pattern) { + int patternSize = pattern.length; + + int[] shift = new int[patternSize]; + shift[0] = 1; + + int i = 1, j = 0; + + while ((i + j) < patternSize) { + if (pattern[i + j] == pattern[j]) { + shift[i + j] = i; + j++; + } else { + if (j == 0) + shift[i] = i + 1; + + if (j > 0) { + i = i + shift[j - 1]; + j = Math.max(j - shift[j - 1], 0); + } else { + i = i + 1; + j = 0; + } + } + } + return shift; + } + + public static int BoyerMooreHorspoolSimpleSearch(char[] pattern, char[] text) { + int patternSize = pattern.length; + int textSize = text.length; + + int i = 0, j = 0; + + while ((i + patternSize) <= textSize) { + j = patternSize - 1; + while (text[i + j] == pattern[j]) { + j--; + if (j < 0) + return i; + } + i++; + } + return -1; + } + + public static int BoyerMooreHorspoolSearch(char[] pattern, char[] text) { + + int shift[] = new int[256]; + + for (int k = 0; k < 256; k++) { + shift[k] = pattern.length; + } + + for (int k = 0; k < pattern.length - 1; k++) { + shift[pattern[k]] = pattern.length - 1 - k; + } + + int i = 0, j = 0; + + while ((i + pattern.length) <= text.length) { + j = pattern.length - 1; + + while (text[i + j] == pattern[j]) { + j -= 1; + if (j < 0) + return i; + } + + i = i + shift[text[i + pattern.length - 1]]; + + } + return -1; + } +} diff --git a/algorithms/src/test/java/algorithms/StringSearchAlgorithmsTest.java b/algorithms/src/test/java/algorithms/StringSearchAlgorithmsTest.java new file mode 100755 index 0000000000..e260cd7e5b --- /dev/null +++ b/algorithms/src/test/java/algorithms/StringSearchAlgorithmsTest.java @@ -0,0 +1,25 @@ +package algorithms; + + +import org.junit.Assert; +import org.junit.Test; + +import com.baeldung.algorithms.string.search.StringSearchAlgorithms; + +public class StringSearchAlgorithmsTest { + + + @Test + public void testStringSearchAlgorithms(){ + String text = "This is some nice text."; + String pattern = "some"; + + int realPosition = text.indexOf(pattern); + Assert.assertTrue(realPosition == StringSearchAlgorithms.simpleTextSearch(pattern.toCharArray(), text.toCharArray())); + Assert.assertTrue(realPosition == StringSearchAlgorithms.RabinKarpMethod(pattern.toCharArray(), text.toCharArray())); + Assert.assertTrue(realPosition == StringSearchAlgorithms.KnuthMorrisPrattSearch(pattern.toCharArray(), text.toCharArray())); + Assert.assertTrue(realPosition == StringSearchAlgorithms.BoyerMooreHorspoolSimpleSearch(pattern.toCharArray(), text.toCharArray())); + Assert.assertTrue(realPosition == StringSearchAlgorithms.BoyerMooreHorspoolSearch(pattern.toCharArray(), text.toCharArray())); + } + +} From 2aeef70d399cdabaf64eec15bf76b9d442149ce4 Mon Sep 17 00:00:00 2001 From: Dassi orleando Date: Wed, 30 Aug 2017 15:23:59 +0100 Subject: [PATCH 15/73] BAEL-1074 move difference between dates from core-java to libraries (#2533) * Different types of bean injection in Spring * Difference between two dates in java * Update README.md * Simple clean of difference between dates * Clean my test article * Improve dates diff: for dates and datetimes * Move difference between dates from core-java to libraries --- core-java/pom.xml | 12 ------------ libraries/pom.xml | 18 ++++++++++++++++++ .../com/baeldung/date}/DateDiffUnitTest.java | 2 +- 3 files changed, 19 insertions(+), 13 deletions(-) rename {core-java/src/test/java/com/baeldung => libraries/src/test/java/com/baeldung/date}/DateDiffUnitTest.java (98%) diff --git a/core-java/pom.xml b/core-java/pom.xml index 0f8a665fa1..7920566a1a 100644 --- a/core-java/pom.xml +++ b/core-java/pom.xml @@ -192,16 +192,6 @@ fscontext ${fscontext.version} - - joda-time - joda-time - ${joda-time.version} - - - com.darwinsys - hirondelle-date4j - ${hirondelle-date4j.version} - com.codepoetics protonpack @@ -434,8 +424,6 @@ 1.8.7 1.16.12 4.6-b01 - 2.9.9 - 1.5.1 1.13 0.6.5 diff --git a/libraries/pom.xml b/libraries/pom.xml index cf16f0fb79..9bbc0c41d2 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -498,6 +498,22 @@ gt-swing ${geotools.version} + + com.darwinsys + hirondelle-date4j + RELEASE + test + + + joda-time + joda-time + ${joda-time.version} + + + com.darwinsys + hirondelle-date4j + ${hirondelle-date4j.version} + @@ -564,5 +580,7 @@ 0.6.5 0.9.0 15.2 + 2.9.9 + 1.5.1 diff --git a/core-java/src/test/java/com/baeldung/DateDiffUnitTest.java b/libraries/src/test/java/com/baeldung/date/DateDiffUnitTest.java similarity index 98% rename from core-java/src/test/java/com/baeldung/DateDiffUnitTest.java rename to libraries/src/test/java/com/baeldung/date/DateDiffUnitTest.java index 324a0d4587..6046781619 100644 --- a/core-java/src/test/java/com/baeldung/DateDiffUnitTest.java +++ b/libraries/src/test/java/com/baeldung/date/DateDiffUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung; +package com.baeldung.date; import org.junit.Test; From 9c03b45c23872495ecca3eabb0763f6e331804e6 Mon Sep 17 00:00:00 2001 From: Doha2012 Date: Thu, 31 Aug 2017 09:43:28 +0200 Subject: [PATCH 16/73] move java8 code (#2535) * fix spring config * fix spring config * fix spring config * minor fix * fix spring-boot module * fix pom * upgrade jackson * minor fix * java concurrency * cleanup * fix conflict * java 8 * clean up * add core-java-8 to main pom --- core-java-8/.gitignore | 26 ++ core-java-8/README.md | 32 +++ core-java-8/pom.xml | 258 ++++++++++++++++++ .../src/main/java/com/baeldung/Adder.java | 0 .../src/main/java/com/baeldung/AdderImpl.java | 1 + .../src/main/java/com/baeldung/Bar.java | 1 + .../src/main/java/com/baeldung/Baz.java | 1 + .../src/main/java/com/baeldung/Foo.java | 1 + .../main/java/com/baeldung/FooExtended.java | 1 + .../src/main/java/com/baeldung/UseFoo.java | 1 + .../main/java/com/baeldung/datetime/README.md | 0 .../com/baeldung/datetime/UseDuration.java | 0 .../com/baeldung/datetime/UseLocalDate.java | 0 .../baeldung/datetime/UseLocalDateTime.java | 11 + .../com/baeldung/datetime/UseLocalTime.java | 0 .../java/com/baeldung/datetime/UsePeriod.java | 0 .../com/baeldung/datetime/UseToInstant.java | 0 .../baeldung/datetime/UseZonedDateTime.java | 0 .../com/baeldung/doublecolon/Computer.java | 0 .../baeldung/doublecolon/ComputerUtils.java | 0 .../com/baeldung/doublecolon/MacbookPro.java | 0 .../function/ComputerPredicate.java | 0 .../doublecolon/function/TriFunction.java | 0 .../exceptions/LambdaExceptionWrappers.java | 0 .../lambda/exceptions/ThrowingConsumer.java | 0 .../com/baeldung/java_8_features/Address.java | 0 .../java_8_features/CustomException.java | 0 .../com/baeldung/java_8_features/Detail.java | 0 .../java_8_features/OptionalAddress.java | 0 .../java_8_features/OptionalUser.java | 0 .../com/baeldung/java_8_features/Person.java | 0 .../com/baeldung/java_8_features/User.java | 0 .../com/baeldung/java_8_features/Vehicle.java | 0 .../baeldung/java_8_features/VehicleImpl.java | 0 .../java_8_features/groupingby/BlogPost.java | 0 .../groupingby/BlogPostType.java | 0 .../java/com/baeldung/optional/Modem.java | 0 .../java/com/baeldung/optional/Person.java | 0 .../strategy/ChristmasDiscounter.java | 0 .../com/baeldung/strategy/Discounter.java | 0 .../baeldung/strategy/EasterDiscounter.java | 0 .../com/baeldung/stream/InfiniteStreams.java | 0 .../java/com/baeldung/stream/StreamApi.java | 0 .../java/com/baeldung/streamApi/Product.java | 0 .../com/baeldung/string/JoinerSplitter.java | 0 .../CustomTemporalAdjuster.java | 0 .../collectors/Java8CollectorsUnitTest.java | 0 .../baeldung/dateapi/ConversionExample.java | 0 .../dateapi/JavaDurationUnitTest.java | 0 .../baeldung/dateapi/JavaPeriodUnitTest.java | 0 .../dateapi/JavaUtilTimeUnitTest.java | 0 .../datetime/UseLocalDateTimeUnitTest.java | 0 .../datetime/UseLocalDateUnitTest.java | 0 .../datetime/UseLocalTimeUnitTest.java | 0 .../baeldung/datetime/UsePeriodUnitTest.java | 0 .../datetime/UseZonedDateTimeUnitTest.java | 0 .../doublecolon/ComputerUtilsUnitTest.java | 0 .../FunctionalInterfaceUnitTest.java | 0 .../ShortToByteFunction.java | 0 .../java8/Java8CollectionCleanupUnitTest.java | 0 ...8DefaultStaticIntefaceMethodsUnitTest.java | 0 .../java8/Java8FindAnyFindFirstUnitTest.java | 0 .../baeldung/java8/Java8ForEachUnitTest.java | 0 ...va8FunctionalInteracesLambdasUnitTest.java | 0 .../Java8GroupingByCollectorUnitTest.java | 0 .../baeldung/java8/Java8MaxMinUnitTest.java | 0 .../java8/Java8MethodReferenceUnitTest.java | 0 .../baeldung/java8/Java8OptionalUnitTest.java | 0 .../com/baeldung/java8/Java8SortUnitTest.java | 0 .../java8/Java8StreamApiUnitTest.java | 0 .../baeldung/java8/Java8StreamsUnitTest.java | 0 ...vaTryWithResourcesLongRunningUnitTest.java | 19 +- .../ApacheCommonsEncodeDecodeUnitTest.java | 0 .../base64/Java8EncodeDecodeUnitTest.java | 0 .../baeldung/java8/comparator/Employee.java | 0 .../comparator/Java8ComparatorUnitTest.java | 0 .../java/com/baeldung/java8/entity/Human.java | 0 .../LambdaExceptionWrappersUnitTest.java | 0 .../java8/optional/OptionalUnitTest.java | 0 .../StrategyDesignPatternUnitTest.java | 0 .../stream/InfiniteStreamUnitTest.java | 0 .../baeldung/stream/StreamAddUnitTest.java | 0 .../com/baeldung/stream/StreamApiTest.java | 0 .../stream/StreamToImmutableTest.java | 0 .../MyImmutableListCollector.java | 0 .../string/JoinerSplitterUnitTest.java | 0 .../CustomTemporalAdjusterTest.java | 0 .../TemporalAdjustersTest.java | 0 .../util/CurrentDateTimeUnitTest.java | 0 core-java-8/src/test/resources/.gitignore | 13 + .../com/baeldung/threadpool/TreeNode.java | 2 +- core-java/README.md | 22 -- .../com/baeldung/java8/optional/README.md | 2 - pom.xml | 1 + 94 files changed, 358 insertions(+), 34 deletions(-) create mode 100644 core-java-8/.gitignore create mode 100644 core-java-8/README.md create mode 100644 core-java-8/pom.xml rename {core-java => core-java-8}/src/main/java/com/baeldung/Adder.java (100%) rename {core-java => core-java-8}/src/main/java/com/baeldung/AdderImpl.java (99%) rename {core-java => core-java-8}/src/main/java/com/baeldung/Bar.java (99%) rename {core-java => core-java-8}/src/main/java/com/baeldung/Baz.java (99%) rename {core-java => core-java-8}/src/main/java/com/baeldung/Foo.java (99%) rename {core-java => core-java-8}/src/main/java/com/baeldung/FooExtended.java (99%) rename {core-java => core-java-8}/src/main/java/com/baeldung/UseFoo.java (99%) rename {core-java => core-java-8}/src/main/java/com/baeldung/datetime/README.md (100%) rename {core-java => core-java-8}/src/main/java/com/baeldung/datetime/UseDuration.java (100%) rename {core-java => core-java-8}/src/main/java/com/baeldung/datetime/UseLocalDate.java (100%) create mode 100644 core-java-8/src/main/java/com/baeldung/datetime/UseLocalDateTime.java rename {core-java => core-java-8}/src/main/java/com/baeldung/datetime/UseLocalTime.java (100%) rename {core-java => core-java-8}/src/main/java/com/baeldung/datetime/UsePeriod.java (100%) rename {core-java => core-java-8}/src/main/java/com/baeldung/datetime/UseToInstant.java (100%) rename {core-java => core-java-8}/src/main/java/com/baeldung/datetime/UseZonedDateTime.java (100%) rename {core-java => core-java-8}/src/main/java/com/baeldung/doublecolon/Computer.java (100%) rename {core-java => core-java-8}/src/main/java/com/baeldung/doublecolon/ComputerUtils.java (100%) rename {core-java => core-java-8}/src/main/java/com/baeldung/doublecolon/MacbookPro.java (100%) rename {core-java => core-java-8}/src/main/java/com/baeldung/doublecolon/function/ComputerPredicate.java (100%) rename {core-java => core-java-8}/src/main/java/com/baeldung/doublecolon/function/TriFunction.java (100%) rename {core-java => core-java-8}/src/main/java/com/baeldung/java8/lambda/exceptions/LambdaExceptionWrappers.java (100%) rename {core-java => core-java-8}/src/main/java/com/baeldung/java8/lambda/exceptions/ThrowingConsumer.java (100%) rename {core-java => core-java-8}/src/main/java/com/baeldung/java_8_features/Address.java (100%) rename {core-java => core-java-8}/src/main/java/com/baeldung/java_8_features/CustomException.java (100%) rename {core-java => core-java-8}/src/main/java/com/baeldung/java_8_features/Detail.java (100%) rename {core-java => core-java-8}/src/main/java/com/baeldung/java_8_features/OptionalAddress.java (100%) rename {core-java => core-java-8}/src/main/java/com/baeldung/java_8_features/OptionalUser.java (100%) rename {core-java => core-java-8}/src/main/java/com/baeldung/java_8_features/Person.java (100%) rename {core-java => core-java-8}/src/main/java/com/baeldung/java_8_features/User.java (100%) rename {core-java => core-java-8}/src/main/java/com/baeldung/java_8_features/Vehicle.java (100%) rename {core-java => core-java-8}/src/main/java/com/baeldung/java_8_features/VehicleImpl.java (100%) rename {core-java => core-java-8}/src/main/java/com/baeldung/java_8_features/groupingby/BlogPost.java (100%) rename {core-java => core-java-8}/src/main/java/com/baeldung/java_8_features/groupingby/BlogPostType.java (100%) rename {core-java => core-java-8}/src/main/java/com/baeldung/optional/Modem.java (100%) rename {core-java => core-java-8}/src/main/java/com/baeldung/optional/Person.java (100%) rename {core-java => core-java-8}/src/main/java/com/baeldung/strategy/ChristmasDiscounter.java (100%) rename {core-java => core-java-8}/src/main/java/com/baeldung/strategy/Discounter.java (100%) rename {core-java => core-java-8}/src/main/java/com/baeldung/strategy/EasterDiscounter.java (100%) rename {core-java => core-java-8}/src/main/java/com/baeldung/stream/InfiniteStreams.java (100%) rename {core-java => core-java-8}/src/main/java/com/baeldung/stream/StreamApi.java (100%) rename {core-java => core-java-8}/src/main/java/com/baeldung/streamApi/Product.java (100%) rename {core-java => core-java-8}/src/main/java/com/baeldung/string/JoinerSplitter.java (100%) rename {core-java => core-java-8}/src/main/java/com/baeldung/temporaladjuster/CustomTemporalAdjuster.java (100%) rename {core-java => core-java-8}/src/test/java/com/baeldung/collectors/Java8CollectorsUnitTest.java (100%) rename {core-java => core-java-8}/src/test/java/com/baeldung/dateapi/ConversionExample.java (100%) rename {core-java => core-java-8}/src/test/java/com/baeldung/dateapi/JavaDurationUnitTest.java (100%) rename {core-java => core-java-8}/src/test/java/com/baeldung/dateapi/JavaPeriodUnitTest.java (100%) rename {core-java => core-java-8}/src/test/java/com/baeldung/dateapi/JavaUtilTimeUnitTest.java (100%) rename {core-java => core-java-8}/src/test/java/com/baeldung/datetime/UseLocalDateTimeUnitTest.java (100%) rename {core-java => core-java-8}/src/test/java/com/baeldung/datetime/UseLocalDateUnitTest.java (100%) rename {core-java => core-java-8}/src/test/java/com/baeldung/datetime/UseLocalTimeUnitTest.java (100%) rename {core-java => core-java-8}/src/test/java/com/baeldung/datetime/UsePeriodUnitTest.java (100%) rename {core-java => core-java-8}/src/test/java/com/baeldung/datetime/UseZonedDateTimeUnitTest.java (100%) rename {core-java => core-java-8}/src/test/java/com/baeldung/doublecolon/ComputerUtilsUnitTest.java (100%) rename {core-java => core-java-8}/src/test/java/com/baeldung/functionalinterface/FunctionalInterfaceUnitTest.java (100%) rename {core-java => core-java-8}/src/test/java/com/baeldung/functionalinterface/ShortToByteFunction.java (100%) rename {core-java => core-java-8}/src/test/java/com/baeldung/java8/Java8CollectionCleanupUnitTest.java (100%) rename {core-java => core-java-8}/src/test/java/com/baeldung/java8/Java8DefaultStaticIntefaceMethodsUnitTest.java (100%) rename {core-java => core-java-8}/src/test/java/com/baeldung/java8/Java8FindAnyFindFirstUnitTest.java (100%) rename {core-java => core-java-8}/src/test/java/com/baeldung/java8/Java8ForEachUnitTest.java (100%) rename {core-java => core-java-8}/src/test/java/com/baeldung/java8/Java8FunctionalInteracesLambdasUnitTest.java (100%) rename {core-java => core-java-8}/src/test/java/com/baeldung/java8/Java8GroupingByCollectorUnitTest.java (100%) rename {core-java => core-java-8}/src/test/java/com/baeldung/java8/Java8MaxMinUnitTest.java (100%) rename {core-java => core-java-8}/src/test/java/com/baeldung/java8/Java8MethodReferenceUnitTest.java (100%) rename {core-java => core-java-8}/src/test/java/com/baeldung/java8/Java8OptionalUnitTest.java (100%) rename {core-java => core-java-8}/src/test/java/com/baeldung/java8/Java8SortUnitTest.java (100%) rename {core-java => core-java-8}/src/test/java/com/baeldung/java8/Java8StreamApiUnitTest.java (100%) rename {core-java => core-java-8}/src/test/java/com/baeldung/java8/Java8StreamsUnitTest.java (100%) rename {core-java => core-java-8}/src/test/java/com/baeldung/java8/JavaTryWithResourcesLongRunningUnitTest.java (93%) rename {core-java => core-java-8}/src/test/java/com/baeldung/java8/base64/ApacheCommonsEncodeDecodeUnitTest.java (100%) rename {core-java => core-java-8}/src/test/java/com/baeldung/java8/base64/Java8EncodeDecodeUnitTest.java (100%) rename {core-java => core-java-8}/src/test/java/com/baeldung/java8/comparator/Employee.java (100%) rename {core-java => core-java-8}/src/test/java/com/baeldung/java8/comparator/Java8ComparatorUnitTest.java (100%) rename {core-java => core-java-8}/src/test/java/com/baeldung/java8/entity/Human.java (100%) rename {core-java => core-java-8}/src/test/java/com/baeldung/java8/lambda/exceptions/LambdaExceptionWrappersUnitTest.java (100%) rename {core-java => core-java-8}/src/test/java/com/baeldung/java8/optional/OptionalUnitTest.java (100%) rename {core-java => core-java-8}/src/test/java/com/baeldung/strategy/StrategyDesignPatternUnitTest.java (100%) rename {core-java => core-java-8}/src/test/java/com/baeldung/stream/InfiniteStreamUnitTest.java (100%) rename {core-java => core-java-8}/src/test/java/com/baeldung/stream/StreamAddUnitTest.java (100%) rename {core-java => core-java-8}/src/test/java/com/baeldung/stream/StreamApiTest.java (100%) rename {core-java => core-java-8}/src/test/java/com/baeldung/stream/StreamToImmutableTest.java (100%) rename {core-java => core-java-8}/src/test/java/com/baeldung/stream/mycollectors/MyImmutableListCollector.java (100%) rename {core-java => core-java-8}/src/test/java/com/baeldung/string/JoinerSplitterUnitTest.java (100%) rename {core-java => core-java-8}/src/test/java/com/baeldung/temporaladjusters/CustomTemporalAdjusterTest.java (100%) rename {core-java => core-java-8}/src/test/java/com/baeldung/temporaladjusters/TemporalAdjustersTest.java (100%) rename {core-java => core-java-8}/src/test/java/com/baeldung/util/CurrentDateTimeUnitTest.java (100%) create mode 100644 core-java-8/src/test/resources/.gitignore delete mode 100644 core-java/src/test/java/com/baeldung/java8/optional/README.md diff --git a/core-java-8/.gitignore b/core-java-8/.gitignore new file mode 100644 index 0000000000..3de4cc647e --- /dev/null +++ b/core-java-8/.gitignore @@ -0,0 +1,26 @@ +*.class + +0.* + +#folders# +/target +/neoDb* +/data +/src/main/webapp/WEB-INF/classes +*/META-INF/* +.resourceCache + +# Packaged files # +*.jar +*.war +*.ear + +# Files generated by integration tests +*.txt +backup-pom.xml +/bin/ +/temp + +#IntelliJ specific +.idea/ +*.iml \ No newline at end of file diff --git a/core-java-8/README.md b/core-java-8/README.md new file mode 100644 index 0000000000..4610b3c86d --- /dev/null +++ b/core-java-8/README.md @@ -0,0 +1,32 @@ +========= + +## Core Java 8 Cookbooks and Examples + +### Relevant Articles: +- [Java 8 Collectors](http://www.baeldung.com/java-8-collectors) +- [Guide to Java 8’s Functional Interfaces](http://www.baeldung.com/java-8-functional-interfaces) +- [Java 8 – Powerful Comparison with Lambdas](http://www.baeldung.com/java-8-sort-lambda) +- [Java 8 New Features](http://www.baeldung.com/java-8-new-features) +- [Lambda Expressions and Functional Interfaces: Tips and Best Practices](http://www.baeldung.com/java-8-lambda-expressions-tips) +- [The Double Colon Operator in Java 8](http://www.baeldung.com/java-8-double-colon-operator) +- [Java 8 Streams Advanced](http://www.baeldung.com/java-8-streams) +- [Introduction to Java 8 Streams](http://www.baeldung.com/java-8-streams-introduction) +- [Guide to Java 8 groupingBy Collector](http://www.baeldung.com/java-groupingby-collector) +- [Strategy Design Pattern in Java 8](http://www.baeldung.com/java-strategy-pattern) +- [Java 8 and Infinite Streams](http://www.baeldung.com/java-inifinite-streams) +- [String Operations with Java Streams](http://www.baeldung.com/java-stream-operations-on-strings) +- [Exceptions in Java 8 Lambda Expressions](http://www.baeldung.com/java-lambda-exceptions) +- [Java 8 Stream findFirst() vs. findAny()](http://www.baeldung.com/java-stream-findfirst-vs-findany) +- [Guide to Java 8 Comparator.comparing()](http://www.baeldung.com/java-8-comparator-comparing) +- [How to Get the Last Element of a Stream in Java?](http://www.baeldung.com/java-stream-last-element) +- [Introduction to the Java 8 Date/Time API](http://www.baeldung.com/java-8-date-time-intro) +- [Migrating to the New Java 8 Date Time API](http://www.baeldung.com/migrating-to-java-8-date-time-api) +- [Guide To Java 8 Optional](http://www.baeldung.com/java-optional) +- [Guide to the Java 8 forEach](http://www.baeldung.com/foreach-java) +- [Get the Current Date, Time and Timestamp in Java 8](http://www.baeldung.com/current-date-time-and-timestamp-in-java-8) +- [TemporalAdjuster in Java](http://www.baeldung.com/java-temporal-adjuster) +- [Finding Max/Min of a List or Collection](http://www.baeldung.com/java-collection-min-max) +- [Java Base64 Encoding and Decoding](http://www.baeldung.com/java-base64-encode-and-decode) +- [The Difference Between map() and flatMap()](http://www.baeldung.com/java-difference-map-and-flatmap) + +- [Merging Streams in Java](http://www.baeldung.com/java-merge-streams) \ No newline at end of file diff --git a/core-java-8/pom.xml b/core-java-8/pom.xml new file mode 100644 index 0000000000..f5506f095e --- /dev/null +++ b/core-java-8/pom.xml @@ -0,0 +1,258 @@ + + 4.0.0 + com.baeldung + core-java-8 + 0.1.0-SNAPSHOT + jar + + core-java-8 + + + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + + + + + + + com.google.guava + guava + ${guava.version} + + + + org.apache.commons + commons-collections4 + ${commons-collections4.version} + + + + commons-io + commons-io + ${commons-io.version} + + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + + org.apache.commons + commons-math3 + ${commons-math3.version} + + + + log4j + log4j + 1.2.17 + + + + commons-codec + commons-codec + ${commons-codec.version} + + + + org.projectlombok + lombok + ${lombok.version} + provided + + + + + + org.assertj + assertj-core + ${assertj.version} + test + + + + com.jayway.awaitility + awaitility + ${avaitility.version} + test + + + + + + core-java-8 + + + src/main/resources + true + + + + + + org.apache.maven.plugins + maven-dependency-plugin + + + copy-dependencies + prepare-package + + copy-dependencies + + + ${project.build.directory}/libs + + + + + + + org.apache.maven.plugins + maven-jar-plugin + + + + true + libs/ + org.baeldung.executable.ExecutableMavenJar + + + + + + org.apache.maven.plugins + maven-assembly-plugin + + + package + + single + + + ${project.basedir} + + + org.baeldung.executable.ExecutableMavenJar + + + + jar-with-dependencies + + + + + + + org.apache.maven.plugins + maven-shade-plugin + + + + shade + + + true + + + org.baeldung.executable.ExecutableMavenJar + + + + + + + + com.jolira + onejar-maven-plugin + + + + org.baeldung.executable.ExecutableMavenJar + true + ${project.build.finalName}-onejar.${project.packaging} + + + one-jar + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + spring-boot + org.baeldung.executable.ExecutableMavenJar + + + + + + + + + + + integration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*ManualTest.java + + + **/*IntegrationTest.java + + + + + + + json + + + + + + + + + + + + 21.0 + 3.5 + 3.6.1 + 2.5 + 4.1 + 4.01 + 1.10 + 1.16.12 + + + 3.6.1 + 1.7.0 + + + \ No newline at end of file diff --git a/core-java/src/main/java/com/baeldung/Adder.java b/core-java-8/src/main/java/com/baeldung/Adder.java similarity index 100% rename from core-java/src/main/java/com/baeldung/Adder.java rename to core-java-8/src/main/java/com/baeldung/Adder.java diff --git a/core-java/src/main/java/com/baeldung/AdderImpl.java b/core-java-8/src/main/java/com/baeldung/AdderImpl.java similarity index 99% rename from core-java/src/main/java/com/baeldung/AdderImpl.java rename to core-java-8/src/main/java/com/baeldung/AdderImpl.java index f67cdc26b3..7852934d55 100644 --- a/core-java/src/main/java/com/baeldung/AdderImpl.java +++ b/core-java-8/src/main/java/com/baeldung/AdderImpl.java @@ -1,5 +1,6 @@ package com.baeldung; + import java.util.function.Consumer; import java.util.function.Function; diff --git a/core-java/src/main/java/com/baeldung/Bar.java b/core-java-8/src/main/java/com/baeldung/Bar.java similarity index 99% rename from core-java/src/main/java/com/baeldung/Bar.java rename to core-java-8/src/main/java/com/baeldung/Bar.java index f9b6f2773e..6219bddf74 100644 --- a/core-java/src/main/java/com/baeldung/Bar.java +++ b/core-java-8/src/main/java/com/baeldung/Bar.java @@ -1,5 +1,6 @@ package com.baeldung; + @FunctionalInterface public interface Bar { diff --git a/core-java/src/main/java/com/baeldung/Baz.java b/core-java-8/src/main/java/com/baeldung/Baz.java similarity index 99% rename from core-java/src/main/java/com/baeldung/Baz.java rename to core-java-8/src/main/java/com/baeldung/Baz.java index 6d03f74198..23180551ac 100644 --- a/core-java/src/main/java/com/baeldung/Baz.java +++ b/core-java-8/src/main/java/com/baeldung/Baz.java @@ -1,5 +1,6 @@ package com.baeldung; + @FunctionalInterface public interface Baz { diff --git a/core-java/src/main/java/com/baeldung/Foo.java b/core-java-8/src/main/java/com/baeldung/Foo.java similarity index 99% rename from core-java/src/main/java/com/baeldung/Foo.java rename to core-java-8/src/main/java/com/baeldung/Foo.java index 90ebdfeed3..c8223727a1 100644 --- a/core-java/src/main/java/com/baeldung/Foo.java +++ b/core-java-8/src/main/java/com/baeldung/Foo.java @@ -1,5 +1,6 @@ package com.baeldung; + @FunctionalInterface public interface Foo { diff --git a/core-java/src/main/java/com/baeldung/FooExtended.java b/core-java-8/src/main/java/com/baeldung/FooExtended.java similarity index 99% rename from core-java/src/main/java/com/baeldung/FooExtended.java rename to core-java-8/src/main/java/com/baeldung/FooExtended.java index c8ed0c35dd..8c9b21e397 100644 --- a/core-java/src/main/java/com/baeldung/FooExtended.java +++ b/core-java-8/src/main/java/com/baeldung/FooExtended.java @@ -1,5 +1,6 @@ package com.baeldung; + @FunctionalInterface public interface FooExtended extends Baz, Bar { diff --git a/core-java/src/main/java/com/baeldung/UseFoo.java b/core-java-8/src/main/java/com/baeldung/UseFoo.java similarity index 99% rename from core-java/src/main/java/com/baeldung/UseFoo.java rename to core-java-8/src/main/java/com/baeldung/UseFoo.java index a91404ebaf..950d02062d 100644 --- a/core-java/src/main/java/com/baeldung/UseFoo.java +++ b/core-java-8/src/main/java/com/baeldung/UseFoo.java @@ -1,5 +1,6 @@ package com.baeldung; + import java.util.function.Function; public class UseFoo { diff --git a/core-java/src/main/java/com/baeldung/datetime/README.md b/core-java-8/src/main/java/com/baeldung/datetime/README.md similarity index 100% rename from core-java/src/main/java/com/baeldung/datetime/README.md rename to core-java-8/src/main/java/com/baeldung/datetime/README.md diff --git a/core-java/src/main/java/com/baeldung/datetime/UseDuration.java b/core-java-8/src/main/java/com/baeldung/datetime/UseDuration.java similarity index 100% rename from core-java/src/main/java/com/baeldung/datetime/UseDuration.java rename to core-java-8/src/main/java/com/baeldung/datetime/UseDuration.java diff --git a/core-java/src/main/java/com/baeldung/datetime/UseLocalDate.java b/core-java-8/src/main/java/com/baeldung/datetime/UseLocalDate.java similarity index 100% rename from core-java/src/main/java/com/baeldung/datetime/UseLocalDate.java rename to core-java-8/src/main/java/com/baeldung/datetime/UseLocalDate.java diff --git a/core-java-8/src/main/java/com/baeldung/datetime/UseLocalDateTime.java b/core-java-8/src/main/java/com/baeldung/datetime/UseLocalDateTime.java new file mode 100644 index 0000000000..7f39ac2f91 --- /dev/null +++ b/core-java-8/src/main/java/com/baeldung/datetime/UseLocalDateTime.java @@ -0,0 +1,11 @@ +package com.baeldung.datetime; + +import java.time.LocalDateTime; + +public class UseLocalDateTime { + + public LocalDateTime getLocalDateTimeUsingParseMethod(String representation) { + return LocalDateTime.parse(representation); + } + +} diff --git a/core-java/src/main/java/com/baeldung/datetime/UseLocalTime.java b/core-java-8/src/main/java/com/baeldung/datetime/UseLocalTime.java similarity index 100% rename from core-java/src/main/java/com/baeldung/datetime/UseLocalTime.java rename to core-java-8/src/main/java/com/baeldung/datetime/UseLocalTime.java diff --git a/core-java/src/main/java/com/baeldung/datetime/UsePeriod.java b/core-java-8/src/main/java/com/baeldung/datetime/UsePeriod.java similarity index 100% rename from core-java/src/main/java/com/baeldung/datetime/UsePeriod.java rename to core-java-8/src/main/java/com/baeldung/datetime/UsePeriod.java diff --git a/core-java/src/main/java/com/baeldung/datetime/UseToInstant.java b/core-java-8/src/main/java/com/baeldung/datetime/UseToInstant.java similarity index 100% rename from core-java/src/main/java/com/baeldung/datetime/UseToInstant.java rename to core-java-8/src/main/java/com/baeldung/datetime/UseToInstant.java diff --git a/core-java/src/main/java/com/baeldung/datetime/UseZonedDateTime.java b/core-java-8/src/main/java/com/baeldung/datetime/UseZonedDateTime.java similarity index 100% rename from core-java/src/main/java/com/baeldung/datetime/UseZonedDateTime.java rename to core-java-8/src/main/java/com/baeldung/datetime/UseZonedDateTime.java diff --git a/core-java/src/main/java/com/baeldung/doublecolon/Computer.java b/core-java-8/src/main/java/com/baeldung/doublecolon/Computer.java similarity index 100% rename from core-java/src/main/java/com/baeldung/doublecolon/Computer.java rename to core-java-8/src/main/java/com/baeldung/doublecolon/Computer.java diff --git a/core-java/src/main/java/com/baeldung/doublecolon/ComputerUtils.java b/core-java-8/src/main/java/com/baeldung/doublecolon/ComputerUtils.java similarity index 100% rename from core-java/src/main/java/com/baeldung/doublecolon/ComputerUtils.java rename to core-java-8/src/main/java/com/baeldung/doublecolon/ComputerUtils.java diff --git a/core-java/src/main/java/com/baeldung/doublecolon/MacbookPro.java b/core-java-8/src/main/java/com/baeldung/doublecolon/MacbookPro.java similarity index 100% rename from core-java/src/main/java/com/baeldung/doublecolon/MacbookPro.java rename to core-java-8/src/main/java/com/baeldung/doublecolon/MacbookPro.java diff --git a/core-java/src/main/java/com/baeldung/doublecolon/function/ComputerPredicate.java b/core-java-8/src/main/java/com/baeldung/doublecolon/function/ComputerPredicate.java similarity index 100% rename from core-java/src/main/java/com/baeldung/doublecolon/function/ComputerPredicate.java rename to core-java-8/src/main/java/com/baeldung/doublecolon/function/ComputerPredicate.java diff --git a/core-java/src/main/java/com/baeldung/doublecolon/function/TriFunction.java b/core-java-8/src/main/java/com/baeldung/doublecolon/function/TriFunction.java similarity index 100% rename from core-java/src/main/java/com/baeldung/doublecolon/function/TriFunction.java rename to core-java-8/src/main/java/com/baeldung/doublecolon/function/TriFunction.java diff --git a/core-java/src/main/java/com/baeldung/java8/lambda/exceptions/LambdaExceptionWrappers.java b/core-java-8/src/main/java/com/baeldung/java8/lambda/exceptions/LambdaExceptionWrappers.java similarity index 100% rename from core-java/src/main/java/com/baeldung/java8/lambda/exceptions/LambdaExceptionWrappers.java rename to core-java-8/src/main/java/com/baeldung/java8/lambda/exceptions/LambdaExceptionWrappers.java diff --git a/core-java/src/main/java/com/baeldung/java8/lambda/exceptions/ThrowingConsumer.java b/core-java-8/src/main/java/com/baeldung/java8/lambda/exceptions/ThrowingConsumer.java similarity index 100% rename from core-java/src/main/java/com/baeldung/java8/lambda/exceptions/ThrowingConsumer.java rename to core-java-8/src/main/java/com/baeldung/java8/lambda/exceptions/ThrowingConsumer.java diff --git a/core-java/src/main/java/com/baeldung/java_8_features/Address.java b/core-java-8/src/main/java/com/baeldung/java_8_features/Address.java similarity index 100% rename from core-java/src/main/java/com/baeldung/java_8_features/Address.java rename to core-java-8/src/main/java/com/baeldung/java_8_features/Address.java diff --git a/core-java/src/main/java/com/baeldung/java_8_features/CustomException.java b/core-java-8/src/main/java/com/baeldung/java_8_features/CustomException.java similarity index 100% rename from core-java/src/main/java/com/baeldung/java_8_features/CustomException.java rename to core-java-8/src/main/java/com/baeldung/java_8_features/CustomException.java diff --git a/core-java/src/main/java/com/baeldung/java_8_features/Detail.java b/core-java-8/src/main/java/com/baeldung/java_8_features/Detail.java similarity index 100% rename from core-java/src/main/java/com/baeldung/java_8_features/Detail.java rename to core-java-8/src/main/java/com/baeldung/java_8_features/Detail.java diff --git a/core-java/src/main/java/com/baeldung/java_8_features/OptionalAddress.java b/core-java-8/src/main/java/com/baeldung/java_8_features/OptionalAddress.java similarity index 100% rename from core-java/src/main/java/com/baeldung/java_8_features/OptionalAddress.java rename to core-java-8/src/main/java/com/baeldung/java_8_features/OptionalAddress.java diff --git a/core-java/src/main/java/com/baeldung/java_8_features/OptionalUser.java b/core-java-8/src/main/java/com/baeldung/java_8_features/OptionalUser.java similarity index 100% rename from core-java/src/main/java/com/baeldung/java_8_features/OptionalUser.java rename to core-java-8/src/main/java/com/baeldung/java_8_features/OptionalUser.java diff --git a/core-java/src/main/java/com/baeldung/java_8_features/Person.java b/core-java-8/src/main/java/com/baeldung/java_8_features/Person.java similarity index 100% rename from core-java/src/main/java/com/baeldung/java_8_features/Person.java rename to core-java-8/src/main/java/com/baeldung/java_8_features/Person.java diff --git a/core-java/src/main/java/com/baeldung/java_8_features/User.java b/core-java-8/src/main/java/com/baeldung/java_8_features/User.java similarity index 100% rename from core-java/src/main/java/com/baeldung/java_8_features/User.java rename to core-java-8/src/main/java/com/baeldung/java_8_features/User.java diff --git a/core-java/src/main/java/com/baeldung/java_8_features/Vehicle.java b/core-java-8/src/main/java/com/baeldung/java_8_features/Vehicle.java similarity index 100% rename from core-java/src/main/java/com/baeldung/java_8_features/Vehicle.java rename to core-java-8/src/main/java/com/baeldung/java_8_features/Vehicle.java diff --git a/core-java/src/main/java/com/baeldung/java_8_features/VehicleImpl.java b/core-java-8/src/main/java/com/baeldung/java_8_features/VehicleImpl.java similarity index 100% rename from core-java/src/main/java/com/baeldung/java_8_features/VehicleImpl.java rename to core-java-8/src/main/java/com/baeldung/java_8_features/VehicleImpl.java diff --git a/core-java/src/main/java/com/baeldung/java_8_features/groupingby/BlogPost.java b/core-java-8/src/main/java/com/baeldung/java_8_features/groupingby/BlogPost.java similarity index 100% rename from core-java/src/main/java/com/baeldung/java_8_features/groupingby/BlogPost.java rename to core-java-8/src/main/java/com/baeldung/java_8_features/groupingby/BlogPost.java diff --git a/core-java/src/main/java/com/baeldung/java_8_features/groupingby/BlogPostType.java b/core-java-8/src/main/java/com/baeldung/java_8_features/groupingby/BlogPostType.java similarity index 100% rename from core-java/src/main/java/com/baeldung/java_8_features/groupingby/BlogPostType.java rename to core-java-8/src/main/java/com/baeldung/java_8_features/groupingby/BlogPostType.java diff --git a/core-java/src/main/java/com/baeldung/optional/Modem.java b/core-java-8/src/main/java/com/baeldung/optional/Modem.java similarity index 100% rename from core-java/src/main/java/com/baeldung/optional/Modem.java rename to core-java-8/src/main/java/com/baeldung/optional/Modem.java diff --git a/core-java/src/main/java/com/baeldung/optional/Person.java b/core-java-8/src/main/java/com/baeldung/optional/Person.java similarity index 100% rename from core-java/src/main/java/com/baeldung/optional/Person.java rename to core-java-8/src/main/java/com/baeldung/optional/Person.java diff --git a/core-java/src/main/java/com/baeldung/strategy/ChristmasDiscounter.java b/core-java-8/src/main/java/com/baeldung/strategy/ChristmasDiscounter.java similarity index 100% rename from core-java/src/main/java/com/baeldung/strategy/ChristmasDiscounter.java rename to core-java-8/src/main/java/com/baeldung/strategy/ChristmasDiscounter.java diff --git a/core-java/src/main/java/com/baeldung/strategy/Discounter.java b/core-java-8/src/main/java/com/baeldung/strategy/Discounter.java similarity index 100% rename from core-java/src/main/java/com/baeldung/strategy/Discounter.java rename to core-java-8/src/main/java/com/baeldung/strategy/Discounter.java diff --git a/core-java/src/main/java/com/baeldung/strategy/EasterDiscounter.java b/core-java-8/src/main/java/com/baeldung/strategy/EasterDiscounter.java similarity index 100% rename from core-java/src/main/java/com/baeldung/strategy/EasterDiscounter.java rename to core-java-8/src/main/java/com/baeldung/strategy/EasterDiscounter.java diff --git a/core-java/src/main/java/com/baeldung/stream/InfiniteStreams.java b/core-java-8/src/main/java/com/baeldung/stream/InfiniteStreams.java similarity index 100% rename from core-java/src/main/java/com/baeldung/stream/InfiniteStreams.java rename to core-java-8/src/main/java/com/baeldung/stream/InfiniteStreams.java diff --git a/core-java/src/main/java/com/baeldung/stream/StreamApi.java b/core-java-8/src/main/java/com/baeldung/stream/StreamApi.java similarity index 100% rename from core-java/src/main/java/com/baeldung/stream/StreamApi.java rename to core-java-8/src/main/java/com/baeldung/stream/StreamApi.java diff --git a/core-java/src/main/java/com/baeldung/streamApi/Product.java b/core-java-8/src/main/java/com/baeldung/streamApi/Product.java similarity index 100% rename from core-java/src/main/java/com/baeldung/streamApi/Product.java rename to core-java-8/src/main/java/com/baeldung/streamApi/Product.java diff --git a/core-java/src/main/java/com/baeldung/string/JoinerSplitter.java b/core-java-8/src/main/java/com/baeldung/string/JoinerSplitter.java similarity index 100% rename from core-java/src/main/java/com/baeldung/string/JoinerSplitter.java rename to core-java-8/src/main/java/com/baeldung/string/JoinerSplitter.java diff --git a/core-java/src/main/java/com/baeldung/temporaladjuster/CustomTemporalAdjuster.java b/core-java-8/src/main/java/com/baeldung/temporaladjuster/CustomTemporalAdjuster.java similarity index 100% rename from core-java/src/main/java/com/baeldung/temporaladjuster/CustomTemporalAdjuster.java rename to core-java-8/src/main/java/com/baeldung/temporaladjuster/CustomTemporalAdjuster.java diff --git a/core-java/src/test/java/com/baeldung/collectors/Java8CollectorsUnitTest.java b/core-java-8/src/test/java/com/baeldung/collectors/Java8CollectorsUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/collectors/Java8CollectorsUnitTest.java rename to core-java-8/src/test/java/com/baeldung/collectors/Java8CollectorsUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/dateapi/ConversionExample.java b/core-java-8/src/test/java/com/baeldung/dateapi/ConversionExample.java similarity index 100% rename from core-java/src/test/java/com/baeldung/dateapi/ConversionExample.java rename to core-java-8/src/test/java/com/baeldung/dateapi/ConversionExample.java diff --git a/core-java/src/test/java/com/baeldung/dateapi/JavaDurationUnitTest.java b/core-java-8/src/test/java/com/baeldung/dateapi/JavaDurationUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/dateapi/JavaDurationUnitTest.java rename to core-java-8/src/test/java/com/baeldung/dateapi/JavaDurationUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/dateapi/JavaPeriodUnitTest.java b/core-java-8/src/test/java/com/baeldung/dateapi/JavaPeriodUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/dateapi/JavaPeriodUnitTest.java rename to core-java-8/src/test/java/com/baeldung/dateapi/JavaPeriodUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/dateapi/JavaUtilTimeUnitTest.java b/core-java-8/src/test/java/com/baeldung/dateapi/JavaUtilTimeUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/dateapi/JavaUtilTimeUnitTest.java rename to core-java-8/src/test/java/com/baeldung/dateapi/JavaUtilTimeUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/datetime/UseLocalDateTimeUnitTest.java b/core-java-8/src/test/java/com/baeldung/datetime/UseLocalDateTimeUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/datetime/UseLocalDateTimeUnitTest.java rename to core-java-8/src/test/java/com/baeldung/datetime/UseLocalDateTimeUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/datetime/UseLocalDateUnitTest.java b/core-java-8/src/test/java/com/baeldung/datetime/UseLocalDateUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/datetime/UseLocalDateUnitTest.java rename to core-java-8/src/test/java/com/baeldung/datetime/UseLocalDateUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/datetime/UseLocalTimeUnitTest.java b/core-java-8/src/test/java/com/baeldung/datetime/UseLocalTimeUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/datetime/UseLocalTimeUnitTest.java rename to core-java-8/src/test/java/com/baeldung/datetime/UseLocalTimeUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/datetime/UsePeriodUnitTest.java b/core-java-8/src/test/java/com/baeldung/datetime/UsePeriodUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/datetime/UsePeriodUnitTest.java rename to core-java-8/src/test/java/com/baeldung/datetime/UsePeriodUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/datetime/UseZonedDateTimeUnitTest.java b/core-java-8/src/test/java/com/baeldung/datetime/UseZonedDateTimeUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/datetime/UseZonedDateTimeUnitTest.java rename to core-java-8/src/test/java/com/baeldung/datetime/UseZonedDateTimeUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/doublecolon/ComputerUtilsUnitTest.java b/core-java-8/src/test/java/com/baeldung/doublecolon/ComputerUtilsUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/doublecolon/ComputerUtilsUnitTest.java rename to core-java-8/src/test/java/com/baeldung/doublecolon/ComputerUtilsUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/functionalinterface/FunctionalInterfaceUnitTest.java b/core-java-8/src/test/java/com/baeldung/functionalinterface/FunctionalInterfaceUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/functionalinterface/FunctionalInterfaceUnitTest.java rename to core-java-8/src/test/java/com/baeldung/functionalinterface/FunctionalInterfaceUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/functionalinterface/ShortToByteFunction.java b/core-java-8/src/test/java/com/baeldung/functionalinterface/ShortToByteFunction.java similarity index 100% rename from core-java/src/test/java/com/baeldung/functionalinterface/ShortToByteFunction.java rename to core-java-8/src/test/java/com/baeldung/functionalinterface/ShortToByteFunction.java diff --git a/core-java/src/test/java/com/baeldung/java8/Java8CollectionCleanupUnitTest.java b/core-java-8/src/test/java/com/baeldung/java8/Java8CollectionCleanupUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/java8/Java8CollectionCleanupUnitTest.java rename to core-java-8/src/test/java/com/baeldung/java8/Java8CollectionCleanupUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/java8/Java8DefaultStaticIntefaceMethodsUnitTest.java b/core-java-8/src/test/java/com/baeldung/java8/Java8DefaultStaticIntefaceMethodsUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/java8/Java8DefaultStaticIntefaceMethodsUnitTest.java rename to core-java-8/src/test/java/com/baeldung/java8/Java8DefaultStaticIntefaceMethodsUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/java8/Java8FindAnyFindFirstUnitTest.java b/core-java-8/src/test/java/com/baeldung/java8/Java8FindAnyFindFirstUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/java8/Java8FindAnyFindFirstUnitTest.java rename to core-java-8/src/test/java/com/baeldung/java8/Java8FindAnyFindFirstUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/java8/Java8ForEachUnitTest.java b/core-java-8/src/test/java/com/baeldung/java8/Java8ForEachUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/java8/Java8ForEachUnitTest.java rename to core-java-8/src/test/java/com/baeldung/java8/Java8ForEachUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/java8/Java8FunctionalInteracesLambdasUnitTest.java b/core-java-8/src/test/java/com/baeldung/java8/Java8FunctionalInteracesLambdasUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/java8/Java8FunctionalInteracesLambdasUnitTest.java rename to core-java-8/src/test/java/com/baeldung/java8/Java8FunctionalInteracesLambdasUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/java8/Java8GroupingByCollectorUnitTest.java b/core-java-8/src/test/java/com/baeldung/java8/Java8GroupingByCollectorUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/java8/Java8GroupingByCollectorUnitTest.java rename to core-java-8/src/test/java/com/baeldung/java8/Java8GroupingByCollectorUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/java8/Java8MaxMinUnitTest.java b/core-java-8/src/test/java/com/baeldung/java8/Java8MaxMinUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/java8/Java8MaxMinUnitTest.java rename to core-java-8/src/test/java/com/baeldung/java8/Java8MaxMinUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/java8/Java8MethodReferenceUnitTest.java b/core-java-8/src/test/java/com/baeldung/java8/Java8MethodReferenceUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/java8/Java8MethodReferenceUnitTest.java rename to core-java-8/src/test/java/com/baeldung/java8/Java8MethodReferenceUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/java8/Java8OptionalUnitTest.java b/core-java-8/src/test/java/com/baeldung/java8/Java8OptionalUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/java8/Java8OptionalUnitTest.java rename to core-java-8/src/test/java/com/baeldung/java8/Java8OptionalUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/java8/Java8SortUnitTest.java b/core-java-8/src/test/java/com/baeldung/java8/Java8SortUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/java8/Java8SortUnitTest.java rename to core-java-8/src/test/java/com/baeldung/java8/Java8SortUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/java8/Java8StreamApiUnitTest.java b/core-java-8/src/test/java/com/baeldung/java8/Java8StreamApiUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/java8/Java8StreamApiUnitTest.java rename to core-java-8/src/test/java/com/baeldung/java8/Java8StreamApiUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/java8/Java8StreamsUnitTest.java b/core-java-8/src/test/java/com/baeldung/java8/Java8StreamsUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/java8/Java8StreamsUnitTest.java rename to core-java-8/src/test/java/com/baeldung/java8/Java8StreamsUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/java8/JavaTryWithResourcesLongRunningUnitTest.java b/core-java-8/src/test/java/com/baeldung/java8/JavaTryWithResourcesLongRunningUnitTest.java similarity index 93% rename from core-java/src/test/java/com/baeldung/java8/JavaTryWithResourcesLongRunningUnitTest.java rename to core-java-8/src/test/java/com/baeldung/java8/JavaTryWithResourcesLongRunningUnitTest.java index 28fea0fd31..32879aed0c 100644 --- a/core-java/src/test/java/com/baeldung/java8/JavaTryWithResourcesLongRunningUnitTest.java +++ b/core-java-8/src/test/java/com/baeldung/java8/JavaTryWithResourcesLongRunningUnitTest.java @@ -1,20 +1,19 @@ package com.baeldung.java8; -import org.junit.Assert; -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import java.io.PrintWriter; import java.io.StringWriter; import java.util.Date; import java.util.Scanner; +import org.junit.Assert; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public class JavaTryWithResourcesLongRunningUnitTest { private static final Logger LOG = LoggerFactory.getLogger(JavaTryWithResourcesLongRunningUnitTest.class); - private static final String TEST_STRING_HELLO_WORLD = "Hello World"; private Date resource1Date, resource2Date; @@ -28,7 +27,8 @@ public class JavaTryWithResourcesLongRunningUnitTest { pw.print(TEST_STRING_HELLO_WORLD); } - Assert.assertEquals(sw.getBuffer().toString(), TEST_STRING_HELLO_WORLD); + Assert.assertEquals(sw.getBuffer() + .toString(), TEST_STRING_HELLO_WORLD); } /* Example for using multiple resources */ @@ -42,7 +42,8 @@ public class JavaTryWithResourcesLongRunningUnitTest { } } - Assert.assertEquals(sw.getBuffer().toString(), TEST_STRING_HELLO_WORLD); + Assert.assertEquals(sw.getBuffer() + .toString(), TEST_STRING_HELLO_WORLD); } /* Example to show order in which the resources are closed */ @@ -88,4 +89,4 @@ public class JavaTryWithResourcesLongRunningUnitTest { } } -} +} \ No newline at end of file diff --git a/core-java/src/test/java/com/baeldung/java8/base64/ApacheCommonsEncodeDecodeUnitTest.java b/core-java-8/src/test/java/com/baeldung/java8/base64/ApacheCommonsEncodeDecodeUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/java8/base64/ApacheCommonsEncodeDecodeUnitTest.java rename to core-java-8/src/test/java/com/baeldung/java8/base64/ApacheCommonsEncodeDecodeUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/java8/base64/Java8EncodeDecodeUnitTest.java b/core-java-8/src/test/java/com/baeldung/java8/base64/Java8EncodeDecodeUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/java8/base64/Java8EncodeDecodeUnitTest.java rename to core-java-8/src/test/java/com/baeldung/java8/base64/Java8EncodeDecodeUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/java8/comparator/Employee.java b/core-java-8/src/test/java/com/baeldung/java8/comparator/Employee.java similarity index 100% rename from core-java/src/test/java/com/baeldung/java8/comparator/Employee.java rename to core-java-8/src/test/java/com/baeldung/java8/comparator/Employee.java diff --git a/core-java/src/test/java/com/baeldung/java8/comparator/Java8ComparatorUnitTest.java b/core-java-8/src/test/java/com/baeldung/java8/comparator/Java8ComparatorUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/java8/comparator/Java8ComparatorUnitTest.java rename to core-java-8/src/test/java/com/baeldung/java8/comparator/Java8ComparatorUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/java8/entity/Human.java b/core-java-8/src/test/java/com/baeldung/java8/entity/Human.java similarity index 100% rename from core-java/src/test/java/com/baeldung/java8/entity/Human.java rename to core-java-8/src/test/java/com/baeldung/java8/entity/Human.java diff --git a/core-java/src/test/java/com/baeldung/java8/lambda/exceptions/LambdaExceptionWrappersUnitTest.java b/core-java-8/src/test/java/com/baeldung/java8/lambda/exceptions/LambdaExceptionWrappersUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/java8/lambda/exceptions/LambdaExceptionWrappersUnitTest.java rename to core-java-8/src/test/java/com/baeldung/java8/lambda/exceptions/LambdaExceptionWrappersUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/java8/optional/OptionalUnitTest.java b/core-java-8/src/test/java/com/baeldung/java8/optional/OptionalUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/java8/optional/OptionalUnitTest.java rename to core-java-8/src/test/java/com/baeldung/java8/optional/OptionalUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/strategy/StrategyDesignPatternUnitTest.java b/core-java-8/src/test/java/com/baeldung/strategy/StrategyDesignPatternUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/strategy/StrategyDesignPatternUnitTest.java rename to core-java-8/src/test/java/com/baeldung/strategy/StrategyDesignPatternUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/stream/InfiniteStreamUnitTest.java b/core-java-8/src/test/java/com/baeldung/stream/InfiniteStreamUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/stream/InfiniteStreamUnitTest.java rename to core-java-8/src/test/java/com/baeldung/stream/InfiniteStreamUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/stream/StreamAddUnitTest.java b/core-java-8/src/test/java/com/baeldung/stream/StreamAddUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/stream/StreamAddUnitTest.java rename to core-java-8/src/test/java/com/baeldung/stream/StreamAddUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/stream/StreamApiTest.java b/core-java-8/src/test/java/com/baeldung/stream/StreamApiTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/stream/StreamApiTest.java rename to core-java-8/src/test/java/com/baeldung/stream/StreamApiTest.java diff --git a/core-java/src/test/java/com/baeldung/stream/StreamToImmutableTest.java b/core-java-8/src/test/java/com/baeldung/stream/StreamToImmutableTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/stream/StreamToImmutableTest.java rename to core-java-8/src/test/java/com/baeldung/stream/StreamToImmutableTest.java diff --git a/core-java/src/test/java/com/baeldung/stream/mycollectors/MyImmutableListCollector.java b/core-java-8/src/test/java/com/baeldung/stream/mycollectors/MyImmutableListCollector.java similarity index 100% rename from core-java/src/test/java/com/baeldung/stream/mycollectors/MyImmutableListCollector.java rename to core-java-8/src/test/java/com/baeldung/stream/mycollectors/MyImmutableListCollector.java diff --git a/core-java/src/test/java/com/baeldung/string/JoinerSplitterUnitTest.java b/core-java-8/src/test/java/com/baeldung/string/JoinerSplitterUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/string/JoinerSplitterUnitTest.java rename to core-java-8/src/test/java/com/baeldung/string/JoinerSplitterUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/temporaladjusters/CustomTemporalAdjusterTest.java b/core-java-8/src/test/java/com/baeldung/temporaladjusters/CustomTemporalAdjusterTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/temporaladjusters/CustomTemporalAdjusterTest.java rename to core-java-8/src/test/java/com/baeldung/temporaladjusters/CustomTemporalAdjusterTest.java diff --git a/core-java/src/test/java/com/baeldung/temporaladjusters/TemporalAdjustersTest.java b/core-java-8/src/test/java/com/baeldung/temporaladjusters/TemporalAdjustersTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/temporaladjusters/TemporalAdjustersTest.java rename to core-java-8/src/test/java/com/baeldung/temporaladjusters/TemporalAdjustersTest.java diff --git a/core-java/src/test/java/com/baeldung/util/CurrentDateTimeUnitTest.java b/core-java-8/src/test/java/com/baeldung/util/CurrentDateTimeUnitTest.java similarity index 100% rename from core-java/src/test/java/com/baeldung/util/CurrentDateTimeUnitTest.java rename to core-java-8/src/test/java/com/baeldung/util/CurrentDateTimeUnitTest.java diff --git a/core-java-8/src/test/resources/.gitignore b/core-java-8/src/test/resources/.gitignore new file mode 100644 index 0000000000..83c05e60c8 --- /dev/null +++ b/core-java-8/src/test/resources/.gitignore @@ -0,0 +1,13 @@ +*.class + +#folders# +/target +/neoDb* +/data +/src/main/webapp/WEB-INF/classes +*/META-INF/* + +# Packaged files # +*.jar +*.war +*.ear \ No newline at end of file diff --git a/core-java-concurrency/src/main/java/com/baeldung/threadpool/TreeNode.java b/core-java-concurrency/src/main/java/com/baeldung/threadpool/TreeNode.java index 65dfed01a2..a3283cf930 100644 --- a/core-java-concurrency/src/main/java/com/baeldung/threadpool/TreeNode.java +++ b/core-java-concurrency/src/main/java/com/baeldung/threadpool/TreeNode.java @@ -22,4 +22,4 @@ public class TreeNode { public Set getChildren() { return children; } -} +} \ No newline at end of file diff --git a/core-java/README.md b/core-java/README.md index ef63ac81e9..57457e90fe 100644 --- a/core-java/README.md +++ b/core-java/README.md @@ -22,19 +22,11 @@ - [Guide to the Java ArrayList](http://www.baeldung.com/java-arraylist) - [Guide to Java Reflection](http://www.baeldung.com/java-reflection) - [A Guide to Java Sockets](http://www.baeldung.com/a-guide-to-java-sockets) -- [Java 8 Collectors](http://www.baeldung.com/java-8-collectors) -- [Guide to Java 8’s Functional Interfaces](http://www.baeldung.com/java-8-functional-interfaces) - [Convert char to String in Java](http://www.baeldung.com/java-convert-char-to-string) - [Random List Element](http://www.baeldung.com/java-random-list-element) - [Convert String to int or Integer in Java](http://www.baeldung.com/java-convert-string-to-int-or-integer) -- [Java 8 – Powerful Comparison with Lambdas](http://www.baeldung.com/java-8-sort-lambda) - [Java – Directory Size](http://www.baeldung.com/java-folder-size) - [Java – Try with Resources](http://www.baeldung.com/java-try-with-resources) -- [Java 8 New Features](http://www.baeldung.com/java-8-new-features) -- [Lambda Expressions and Functional Interfaces: Tips and Best Practices](http://www.baeldung.com/java-8-lambda-expressions-tips) -- [The Double Colon Operator in Java 8](http://www.baeldung.com/java-8-double-colon-operator) -- [Java 8 Streams Advanced](http://www.baeldung.com/java-8-streams) -- [Introduction to Java 8 Streams](http://www.baeldung.com/java-8-streams-introduction) - [Guide to the Fork/Join Framework in Java](http://www.baeldung.com/java-fork-join) - [How to Print Screen in Java](http://www.baeldung.com/print-screen-in-java) - [How to Convert String to different data types in Java](http://www.baeldung.com/java-string-conversions) @@ -55,30 +47,20 @@ - [The Traveling Salesman Problem in Java](http://www.baeldung.com/java-simulated-annealing-for-traveling-salesman) - [How to Create an Executable JAR with Maven](http://www.baeldung.com/executable-jar-with-maven) - [How to Design a Genetic Algorithm in Java](http://www.baeldung.com/java-genetic-algorithm) -- [Guide to Java 8 groupingBy Collector](http://www.baeldung.com/java-groupingby-collector) - [Guide to WeakHashMap in Java](http://www.baeldung.com/java-weakhashmap) -- [Strategy Design Pattern in Java 8](http://www.baeldung.com/java-strategy-pattern) -- [Java 8 and Infinite Streams](http://www.baeldung.com/java-inifinite-streams) -- [String Operations with Java Streams](http://www.baeldung.com/java-stream-operations-on-strings) - [Spring Security – Cache Control Headers](http://www.baeldung.com/spring-security-cache-control-headers) - [Basic Introduction to JMX](http://www.baeldung.com/java-management-extensions) - [AWS Lambda With Java](http://www.baeldung.com/java-aws-lambda) - [Introduction to Nashorn](http://www.baeldung.com/java-nashorn) -- [Exceptions in Java 8 Lambda Expressions](http://www.baeldung.com/java-lambda-exceptions) - [Guide to the Guava BiMap](http://www.baeldung.com/guava-bimap) - [Iterable to Stream in Java](http://www.baeldung.com/java-iterable-to-stream) -- [Java 8 Stream findFirst() vs. findAny()](http://www.baeldung.com/java-stream-findfirst-vs-findany) - [Chained Exceptions in Java](http://www.baeldung.com/java-chained-exceptions) - [The Java HashMap Under the Hood](http://www.baeldung.com/java-hashmap) - [A Guide to LinkedHashMap in Java](http://www.baeldung.com/java-linked-hashmap) - [A Guide to TreeMap in Java](http://www.baeldung.com/java-treemap) - [A Quick JUnit vs TestNG Comparison](http://www.baeldung.com/junit-vs-testng) -- [Finding Max/Min of a List or Collection](http://www.baeldung.com/java-collection-min-max) -- [Guide to java.util.concurrent.Locks](http://www.baeldung.com/java-concurrent-locks) - [Java Primitive Conversions](http://www.baeldung.com/java-primitive-conversions) - [Java Money and the Currency API](http://www.baeldung.com/java-money-and-currency) -- [Guide to Java 8 Comparator.comparing()](http://www.baeldung.com/java-8-comparator-comparing) -- [Avoiding ConcurrentModificationException when iterating and removing](http://www.baeldung.com/avoiding-concurrentmodificationexception-when-iterating-and-removing) - [Removing all nulls from a List in Java](http://www.baeldung.com/java-remove-nulls-from-list) - [Removing all duplicates from a List in Java](http://www.baeldung.com/java-remove-duplicates-from-list) - [Using Math.pow in Java](http://www.baeldung.com/java-math-pow) @@ -96,7 +78,6 @@ - [Iterating Over Enum Values in Java](http://www.baeldung.com/java-enum-iteration) - [Kotlin Java Interoperability](http://www.baeldung.com/kotlin-java-interoperability) - [Using Java MappedByteBuffer](http://www.baeldung.com/java-mapped-byte-buffer) -- [The Difference Between map() and flatMap()](http://www.baeldung.com/java-difference-map-and-flatmap) - [How to Round a Number to N Decimal Places in Java](http://www.baeldung.com/java-round-decimal-number) - [Changing Annotation Parameters At Runtime](http://www.baeldung.com/java-reflection-change-annotation-params) - [How to Find all Getters Returning Null](http://www.baeldung.com/java-getters-returning-null) @@ -117,8 +98,5 @@ - [How to Remove the Last Character of a String?](http://www.baeldung.com/java-remove-last-character-of-string) - [ClassNotFoundException vs NoClassDefFoundError](http://www.baeldung.com/java-classnotfoundexception-and-noclassdeffounderror) - [Guide to UUID in Java](http://www.baeldung.com/java-uuid) -- [How to Get the Last Element of a Stream in Java?](http://www.baeldung.com/java-stream-last-element) - [Guide to Escaping Characters in Java RegExps](http://www.baeldung.com/java-regexp-escape-char) - [Period and Duration in Java](http://www.baeldung.com/java-period-duration) -- [Introduction to the Java 8 Date/Time API](http://www.baeldung.com/java-8-date-time-intro) -- [Migrating to the New Java 8 Date Time API](http://www.baeldung.com/migrating-to-java-8-date-time-api) diff --git a/core-java/src/test/java/com/baeldung/java8/optional/README.md b/core-java/src/test/java/com/baeldung/java8/optional/README.md deleted file mode 100644 index 129131ae45..0000000000 --- a/core-java/src/test/java/com/baeldung/java8/optional/README.md +++ /dev/null @@ -1,2 +0,0 @@ -### Relevant Articles: -- [Guide To Java 8 Optional](http://www.baeldung.com/java-optional) diff --git a/pom.xml b/pom.xml index 004e4b3df9..3ebd8f5b5d 100644 --- a/pom.xml +++ b/pom.xml @@ -43,6 +43,7 @@ cdi core-java + core-java-8 core-java-concurrency couchbase-sdk From 2f3e36405a65435652f1ff9cb1644db50e9c177d Mon Sep 17 00:00:00 2001 From: shekhar-s Date: Thu, 31 Aug 2017 02:10:37 -0600 Subject: [PATCH 17/73] Moved article code to libraries, added a null check and reverted change to core-java pom.xml (#2530) --- core-java/pom.xml | 8 -------- .../java/io/JavaDirectoryDeleteUnitTest.java | 14 ++++++++------ 2 files changed, 8 insertions(+), 14 deletions(-) rename {core-java/src/test/java/org => libraries/src/test/java/com}/baeldung/java/io/JavaDirectoryDeleteUnitTest.java (92%) diff --git a/core-java/pom.xml b/core-java/pom.xml index 7920566a1a..633656857e 100644 --- a/core-java/pom.xml +++ b/core-java/pom.xml @@ -162,12 +162,6 @@ ${avaitility.version} test - - org.springframework - spring-core - ${spring-core.version} - test - commons-codec @@ -433,8 +427,6 @@ 2.8.9 3.6.1 1.7.0 - 4.3.10.RELEASE - 3.6.0 diff --git a/core-java/src/test/java/org/baeldung/java/io/JavaDirectoryDeleteUnitTest.java b/libraries/src/test/java/com/baeldung/java/io/JavaDirectoryDeleteUnitTest.java similarity index 92% rename from core-java/src/test/java/org/baeldung/java/io/JavaDirectoryDeleteUnitTest.java rename to libraries/src/test/java/com/baeldung/java/io/JavaDirectoryDeleteUnitTest.java index b1f800eef3..0820a2b2bd 100644 --- a/core-java/src/test/java/org/baeldung/java/io/JavaDirectoryDeleteUnitTest.java +++ b/libraries/src/test/java/com/baeldung/java/io/JavaDirectoryDeleteUnitTest.java @@ -1,4 +1,4 @@ -package org.baeldung.java.io; +package com.baeldung.java.io; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; @@ -68,11 +68,13 @@ public class JavaDirectoryDeleteUnitTest { boolean deleteDirectory(File directoryToBeDeleted) { File[] allContents = directoryToBeDeleted.listFiles(); - for (File file : allContents) { - if (file.isDirectory()) { - deleteDirectory(file); - } else { - file.delete(); + if (allContents != null) { + for (File file : allContents) { + if (file.isDirectory()) { + deleteDirectory(file); + } else { + file.delete(); + } } } From 49acba206ccdc2ccd15cf0a5782d847105a0fd0e Mon Sep 17 00:00:00 2001 From: lor6 Date: Thu, 31 Aug 2017 13:06:37 +0300 Subject: [PATCH 18/73] optional examples (#2537) --- guest/core-java-9/pom.xml | 27 +++ .../main/java/com/stackify/optional/User.java | 28 +++ .../com/stackify/optional/OptionalTest.java | 41 +++++ guest/core-java/pom.xml | 36 ++++ .../java/com/stackify/optional/Address.java | 40 +++++ .../java/com/stackify/optional/Country.java | 29 +++ .../main/java/com/stackify/optional/User.java | 51 ++++++ .../stackify/optional/chaining/Address.java | 38 ++++ .../stackify/optional/chaining/Country.java | 28 +++ .../com/stackify/optional/chaining/User.java | 50 ++++++ guest/core-java/src/main/resources/log4j2.xml | 13 ++ .../com/stackify/optional/OptionalTest.java | 166 ++++++++++++++++++ .../chaining/OptionalChainingTest.java | 36 ++++ 13 files changed, 583 insertions(+) create mode 100644 guest/core-java-9/pom.xml create mode 100644 guest/core-java-9/src/main/java/com/stackify/optional/User.java create mode 100644 guest/core-java-9/src/test/java/com/stackify/optional/OptionalTest.java create mode 100644 guest/core-java/pom.xml create mode 100644 guest/core-java/src/main/java/com/stackify/optional/Address.java create mode 100644 guest/core-java/src/main/java/com/stackify/optional/Country.java create mode 100644 guest/core-java/src/main/java/com/stackify/optional/User.java create mode 100644 guest/core-java/src/main/java/com/stackify/optional/chaining/Address.java create mode 100644 guest/core-java/src/main/java/com/stackify/optional/chaining/Country.java create mode 100644 guest/core-java/src/main/java/com/stackify/optional/chaining/User.java create mode 100644 guest/core-java/src/main/resources/log4j2.xml create mode 100644 guest/core-java/src/test/java/com/stackify/optional/OptionalTest.java create mode 100644 guest/core-java/src/test/java/com/stackify/optional/chaining/OptionalChainingTest.java diff --git a/guest/core-java-9/pom.xml b/guest/core-java-9/pom.xml new file mode 100644 index 0000000000..d588df4abc --- /dev/null +++ b/guest/core-java-9/pom.xml @@ -0,0 +1,27 @@ + + 4.0.0 + com.stackify + core-java-9 + 0.0.1-SNAPSHOT + + + + junit + junit + 4.12 + + + + + + + maven-compiler-plugin + 3.6.2 + + 1.9 + 1.9 + + + + + \ No newline at end of file diff --git a/guest/core-java-9/src/main/java/com/stackify/optional/User.java b/guest/core-java-9/src/main/java/com/stackify/optional/User.java new file mode 100644 index 0000000000..903e75f6f6 --- /dev/null +++ b/guest/core-java-9/src/main/java/com/stackify/optional/User.java @@ -0,0 +1,28 @@ +package com.stackify.optional; + +public class User { + private String email; + private String password; + + public User(String email, String password) { + super(); + this.email = email; + this.password = password; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } +} diff --git a/guest/core-java-9/src/test/java/com/stackify/optional/OptionalTest.java b/guest/core-java-9/src/test/java/com/stackify/optional/OptionalTest.java new file mode 100644 index 0000000000..4c3503b811 --- /dev/null +++ b/guest/core-java-9/src/test/java/com/stackify/optional/OptionalTest.java @@ -0,0 +1,41 @@ +package com.stackify.optional; + +import org.junit.Test; +import java.util.Optional; +import java.util.List; + +import static org.junit.Assert.*; +import java.util.stream.Collectors; + +public class OptionalTest { + + private User user; + + @Test + public void whenEmptyOptional_thenGetValueFromOr() { + User result = Optional.ofNullable(user) + .or( () -> Optional.of(new User("default","1234"))).get(); + + assertEquals(result.getEmail(), "default"); + } + + @Test + public void whenIfPresentOrElse_thenOk() { + Optional.ofNullable(user) + .ifPresentOrElse( u -> System.out.println("User is:" + u.getEmail()), () -> System.out.println("User not found")); + } + + @Test + public void whenGetStream_thenOk() { + User user = new User("john@gmail.com", "1234"); + List emails = Optional.ofNullable(user) + .stream() + .filter(u -> u.getEmail() != null && u.getEmail().contains("@")) + .map( u -> u.getEmail()) + .collect(Collectors.toList()); + + assertTrue(emails.size() == 1); + assertEquals(emails.get(0), user.getEmail()); + } + +} diff --git a/guest/core-java/pom.xml b/guest/core-java/pom.xml new file mode 100644 index 0000000000..548d5c663b --- /dev/null +++ b/guest/core-java/pom.xml @@ -0,0 +1,36 @@ + + 4.0.0 + com.stackify + core-java + 0.0.1-SNAPSHOT + + + + junit + junit + 4.12 + + + org.apache.logging.log4j + log4j-core + ${log4j2.version} + + + + + + + maven-compiler-plugin + 3.5 + + 1.8 + 1.8 + + + + + + 2.8.2 + + \ No newline at end of file diff --git a/guest/core-java/src/main/java/com/stackify/optional/Address.java b/guest/core-java/src/main/java/com/stackify/optional/Address.java new file mode 100644 index 0000000000..f54c999920 --- /dev/null +++ b/guest/core-java/src/main/java/com/stackify/optional/Address.java @@ -0,0 +1,40 @@ +package com.stackify.optional; + +public class Address { + private String addressLine; + private String city; + private Country country; + + public Address(String addressLine, String city, Country country) { + super(); + this.addressLine = addressLine; + this.city = city; + this.country = country; + } + + public String getAddressLine() { + return addressLine; + } + + public void setAddressLine(String addressLine) { + this.addressLine = addressLine; + } + + public String getCity() { + return city; + } + + public void setCity(String city) { + this.city = city; + } + + public Country getCountry() { + return country; + } + + public void setCountry(Country country) { + this.country = country; + } + + +} diff --git a/guest/core-java/src/main/java/com/stackify/optional/Country.java b/guest/core-java/src/main/java/com/stackify/optional/Country.java new file mode 100644 index 0000000000..bf97ef7b6d --- /dev/null +++ b/guest/core-java/src/main/java/com/stackify/optional/Country.java @@ -0,0 +1,29 @@ +package com.stackify.optional; + +public class Country { + private String name; + private String isocode; + + public Country(String name, String isocode) { + super(); + this.name = name; + this.isocode = isocode; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getIsocode() { + return isocode; + } + + public void setIsocode(String isocode) { + this.isocode = isocode; + } + +} diff --git a/guest/core-java/src/main/java/com/stackify/optional/User.java b/guest/core-java/src/main/java/com/stackify/optional/User.java new file mode 100644 index 0000000000..910f2605dd --- /dev/null +++ b/guest/core-java/src/main/java/com/stackify/optional/User.java @@ -0,0 +1,51 @@ +package com.stackify.optional; + +import java.util.Optional; + +public class User { + private String email; + private String password; + + private Address address; + + private String position; + + public User(String email, String password) { + super(); + this.email = email; + this.password = password; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public Address getAddress() { + return address; + } + + public void setAddress(Address address) { + this.address = address; + } + + public Optional getPosition() { + return Optional.ofNullable(position); + } + + public void setPosition(String position) { + this.position = position; + } + +} diff --git a/guest/core-java/src/main/java/com/stackify/optional/chaining/Address.java b/guest/core-java/src/main/java/com/stackify/optional/chaining/Address.java new file mode 100644 index 0000000000..1e10c67c39 --- /dev/null +++ b/guest/core-java/src/main/java/com/stackify/optional/chaining/Address.java @@ -0,0 +1,38 @@ +package com.stackify.optional.chaining; + +import java.util.Optional; + +public class Address { + private String addressLine; + private String city; + private Country country; + + public Address(String addressLine, String city) { + this.addressLine = addressLine; + this.city = city; + } + + public String getAddressLine() { + return addressLine; + } + + public void setAddressLine(String addressLine) { + this.addressLine = addressLine; + } + + public String getCity() { + return city; + } + + public void setCity(String city) { + this.city = city; + } + + public Optional getCountry() { + return Optional.ofNullable(country); + } + + public void setCountry(Country country) { + this.country = country; + } +} diff --git a/guest/core-java/src/main/java/com/stackify/optional/chaining/Country.java b/guest/core-java/src/main/java/com/stackify/optional/chaining/Country.java new file mode 100644 index 0000000000..89e85a9b43 --- /dev/null +++ b/guest/core-java/src/main/java/com/stackify/optional/chaining/Country.java @@ -0,0 +1,28 @@ +package com.stackify.optional.chaining; + +public class Country { + private String name; + private String isocode; + + public Country(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getIsocode() { + return isocode; + } + + public void setIsocode(String isocode) { + this.isocode = isocode; + } + + +} \ No newline at end of file diff --git a/guest/core-java/src/main/java/com/stackify/optional/chaining/User.java b/guest/core-java/src/main/java/com/stackify/optional/chaining/User.java new file mode 100644 index 0000000000..07eb398abe --- /dev/null +++ b/guest/core-java/src/main/java/com/stackify/optional/chaining/User.java @@ -0,0 +1,50 @@ +package com.stackify.optional.chaining; + +import java.util.Optional; + +public class User { + private String email; + private String password; + + private Address address; + + private String position; + + public User(String email, String password) { + this.email = email; + this.password = password; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public Optional
getAddress() { + return Optional.ofNullable(address); + } + + public void setAddress(Address address) { + this.address = address; + } + + public Optional getPosition() { + return Optional.ofNullable(position); + } + + public void setPosition(String position) { + this.position = position; + } + +} diff --git a/guest/core-java/src/main/resources/log4j2.xml b/guest/core-java/src/main/resources/log4j2.xml new file mode 100644 index 0000000000..a67aae6aa6 --- /dev/null +++ b/guest/core-java/src/main/resources/log4j2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/guest/core-java/src/test/java/com/stackify/optional/OptionalTest.java b/guest/core-java/src/test/java/com/stackify/optional/OptionalTest.java new file mode 100644 index 0000000000..c6e6ddb15d --- /dev/null +++ b/guest/core-java/src/test/java/com/stackify/optional/OptionalTest.java @@ -0,0 +1,166 @@ +package com.stackify.optional; + +import static org.junit.Assert.*; + +import java.util.ArrayList; +import java.util.List; +import java.util.NoSuchElementException; +import java.util.Optional; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.junit.Test; + +public class OptionalTest { + + private User user; + + private Logger logger = LogManager.getLogger(OptionalTest.class); + + @Test(expected = NullPointerException.class) + public void testNull() { + String isocode = user.getAddress().getCountry().getIsocode().toUpperCase(); + } + + @Test + public void test() { + + if (user != null) { + Address address = user.getAddress(); + if (address != null) { + Country country = address.getCountry(); + if (country != null) { + String isocode = country.getIsocode(); + if (isocode != null) { + isocode = isocode.toUpperCase(); + } + } + } + } + + } + + @Test(expected = NoSuchElementException.class) + public void whenCreateEmptyOptional_thenNull() { + Optional emptyOpt = Optional.empty(); + emptyOpt.get(); + } + + @Test(expected = NullPointerException.class) + public void whenCreateOfEmptyOptional_thenNullPointerException() { + Optional opt = Optional.of(user); + } + + @Test + public void whenCreateOfNullableOptional_thenOk() { + String name = "John"; + Optional opt = Optional.ofNullable(name); + assertEquals("John", opt.get()); + } + + @Test + public void whenCheckIsPresent_thenOk() { + user = new User("john@gmail.com", "1234"); + Optional opt = Optional.ofNullable(user); + assertTrue(opt.isPresent()); + + assertEquals(user.getEmail(), opt.get().getEmail()); + } + + @Test + public void whenCheckIfPresent_thenOk() { + user = new User("john@gmail.com", "1234"); + Optional opt = Optional.ofNullable(user); + assertTrue(opt.isPresent()); + + opt.ifPresent(u -> assertEquals(user.getEmail(), u.getEmail())); + } + + @Test + public void whenEmptyValue_thenReturnDefault() { + User user = null; + User user2 = new User("anna@gmail.com", "1234"); + User result = Optional.ofNullable(user).orElse(user2); + + assertEquals("anna@gmail.com", result.getEmail()); + } + + @Test + public void whenValueNotNull_thenIgnoreDefault() { + User user = new User("john@gmail.com", "1234"); + User user2 = new User("anna@gmail.com", "1234"); + User result = Optional.ofNullable(user).orElse(user2); + + assertEquals("john@gmail.com", result.getEmail()); + } + + @Test + public void whenSetDefaultOrElseGet_thenOk() { + User user = null; + User user2 = new User("anna@gmail.com", "1234"); + User result = Optional.ofNullable(user).orElseGet(() -> user2); + + assertEquals("anna@gmail.com", result.getEmail()); + } + + @Test + public void givenPresentValue_whenCompare_thenOk() { + User user = new User("john@gmail.com", "1234"); + logger.info("Using orElse"); + User result = Optional.ofNullable(user).orElse(createNewUser()); + logger.info("Using orElseGet"); + User result2 = Optional.ofNullable(user).orElseGet(() -> createNewUser()); + } + + private User createNewUser() { + logger.info("Creating New User"); + return new User("extra@gmail.com", "1234"); + } + + @Test + public void givenEmptyValue_whenCompare_thenOk() { + User user = null; + logger.info("Using orElse"); + User result = Optional.ofNullable(user).orElse(createNewUser()); + logger.info("Using orElseGet"); + User result2 = Optional.ofNullable(user).orElseGet(() -> createNewUser()); + } + + @Test(expected = IllegalArgumentException.class) + public void whenThrowException_thenOk() { + User result = Optional.ofNullable(user).orElseThrow(() -> new IllegalArgumentException()); + } + + @Test + public void whenMap_thenOk() { + user = new User("anna@gmail.com", "1234"); + String email = Optional.ofNullable(user).map(u -> u.getEmail()).orElse("default@gmail.com"); + assertEquals(email, user.getEmail()); + + } + + @Test + public void whenFlatMap_thenOk() { + user = new User("anna@gmail.com", "1234"); + user.setPosition("Developer"); + String position = Optional.ofNullable(user).flatMap(u -> u.getPosition()).orElse("default"); + assertEquals(position, user.getPosition().get()); + + } + + @Test + public void whenFilter_thenOk() { + user = new User("anna@gmail.com", "1234"); + Optional result = Optional.ofNullable(user).filter(u -> u.getEmail() != null && u.getEmail().contains("@")); + + assertTrue(result.isPresent()); + } + + @Test + public void whenStream_thenOk() { + List users = new ArrayList<>(); + User user = users.stream().findFirst().orElse(new User("default", "1234")); + assertEquals(user.getEmail(), "default"); + } + +} diff --git a/guest/core-java/src/test/java/com/stackify/optional/chaining/OptionalChainingTest.java b/guest/core-java/src/test/java/com/stackify/optional/chaining/OptionalChainingTest.java new file mode 100644 index 0000000000..660497c367 --- /dev/null +++ b/guest/core-java/src/test/java/com/stackify/optional/chaining/OptionalChainingTest.java @@ -0,0 +1,36 @@ +package com.stackify.optional.chaining; + +import static org.junit.Assert.*; + +import java.util.Optional; + +import org.junit.Test; + +public class OptionalChainingTest { + + @Test + public void whenChaining_thenOk() { + User user = new User("anna@gmail.com", "1234"); + + String result = Optional.ofNullable(user) + .flatMap(u -> u.getAddress()) + .flatMap(a -> a.getCountry()) + .map(c -> c.getIsocode()) + .orElse("default"); + + assertEquals(result, "default"); + } + + @Test + public void whenChainingWithMethodReferences_thenOk() { + User user = new User("anna@gmail.com", "1234"); + + String result = Optional.ofNullable(user) + .flatMap(User::getAddress) + .flatMap(Address::getCountry) + .map(Country::getIsocode) + .orElse("default"); + + assertEquals(result, "default"); + } +} From d1a1322bcc671ea79b2075b5c3c1756b7e731c64 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Thu, 31 Aug 2017 15:03:02 +0200 Subject: [PATCH 19/73] Kotlin idioms (#2534) --- .../kotlin/mvc/ApplicationWebConfig.kt | 30 +++++++------------ .../kotlin/mvc/ApplicationWebInitializer.kt | 3 +- 2 files changed, 12 insertions(+), 21 deletions(-) diff --git a/spring-mvc-kotlin/src/main/kotlin/com/baeldung/kotlin/mvc/ApplicationWebConfig.kt b/spring-mvc-kotlin/src/main/kotlin/com/baeldung/kotlin/mvc/ApplicationWebConfig.kt index ec1c4e9511..23aadf282a 100644 --- a/spring-mvc-kotlin/src/main/kotlin/com/baeldung/kotlin/mvc/ApplicationWebConfig.kt +++ b/spring-mvc-kotlin/src/main/kotlin/com/baeldung/kotlin/mvc/ApplicationWebConfig.kt @@ -12,13 +12,9 @@ import org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver import org.thymeleaf.spring4.view.ThymeleafViewResolver import org.thymeleaf.templatemode.TemplateMode - - - - @EnableWebMvc @Configuration -open class ApplicationWebConfig: WebMvcConfigurerAdapter(), ApplicationContextAware { +open class ApplicationWebConfig : WebMvcConfigurerAdapter(), ApplicationContextAware { private var applicationContext: ApplicationContext? = null @@ -34,27 +30,23 @@ open class ApplicationWebConfig: WebMvcConfigurerAdapter(), ApplicationContextAw @Bean open fun templateResolver(): SpringResourceTemplateResolver { - val templateResolver = SpringResourceTemplateResolver() - templateResolver.prefix = "/WEB-INF/view/" - templateResolver.suffix = ".html" - templateResolver.templateMode = TemplateMode.HTML - templateResolver.setApplicationContext(this.applicationContext); - return templateResolver + return SpringResourceTemplateResolver() + .apply { prefix = "/WEB-INF/view/" } + .apply { suffix = ".html"} + .apply { templateMode = TemplateMode.HTML } + .apply { setApplicationContext(applicationContext) } } @Bean open fun templateEngine(): SpringTemplateEngine { - val templateEngine = SpringTemplateEngine() - templateEngine.setTemplateResolver(templateResolver()) - return templateEngine + return SpringTemplateEngine() + .apply { setTemplateResolver(templateResolver()) } } @Bean open fun viewResolver(): ThymeleafViewResolver { - val viewResolver = ThymeleafViewResolver() - viewResolver.templateEngine = templateEngine() - viewResolver.order = 1 - return viewResolver + return ThymeleafViewResolver() + .apply { templateEngine = templateEngine() } + .apply { order = 1 } } - } \ No newline at end of file diff --git a/spring-mvc-kotlin/src/main/kotlin/com/baeldung/kotlin/mvc/ApplicationWebInitializer.kt b/spring-mvc-kotlin/src/main/kotlin/com/baeldung/kotlin/mvc/ApplicationWebInitializer.kt index a4d1614271..4c1a35823c 100644 --- a/spring-mvc-kotlin/src/main/kotlin/com/baeldung/kotlin/mvc/ApplicationWebInitializer.kt +++ b/spring-mvc-kotlin/src/main/kotlin/com/baeldung/kotlin/mvc/ApplicationWebInitializer.kt @@ -1,9 +1,8 @@ package com.baeldung.kotlin.mvc -import com.baeldung.kotlin.mvc.ApplicationWebConfig import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer -class ApplicationWebInitializer: AbstractAnnotationConfigDispatcherServletInitializer() { +class ApplicationWebInitializer : AbstractAnnotationConfigDispatcherServletInitializer() { override fun getRootConfigClasses(): Array>? { return null From 78e47f104fb65a40a374b76866f0c9a689ec6361 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Thu, 31 Aug 2017 15:03:21 +0200 Subject: [PATCH 20/73] RxJava Vertx refactor (#2531) * Refactor * Refactor --- vertx-and-rxjava/pom.xml | 1 - .../com/baeldung/VertxWithRxJavaTest.java | 94 ------------------- .../{ => weather}/CityAndDayLength.java | 7 +- .../{ => weather}/MetaWeatherClient.java | 38 ++++---- .../baeldung/weather/VertxWithRxJavaTest.java | 92 ++++++++++++++++++ 5 files changed, 115 insertions(+), 117 deletions(-) delete mode 100644 vertx-and-rxjava/src/test/java/com/baeldung/VertxWithRxJavaTest.java rename vertx-and-rxjava/src/test/java/com/baeldung/{ => weather}/CityAndDayLength.java (72%) rename vertx-and-rxjava/src/test/java/com/baeldung/{ => weather}/MetaWeatherClient.java (50%) create mode 100644 vertx-and-rxjava/src/test/java/com/baeldung/weather/VertxWithRxJavaTest.java diff --git a/vertx-and-rxjava/pom.xml b/vertx-and-rxjava/pom.xml index 47510e60f7..9c2c9bfd48 100644 --- a/vertx-and-rxjava/pom.xml +++ b/vertx-and-rxjava/pom.xml @@ -10,7 +10,6 @@ 4.0.0 - com.baeldung vertx-and-rxjava diff --git a/vertx-and-rxjava/src/test/java/com/baeldung/VertxWithRxJavaTest.java b/vertx-and-rxjava/src/test/java/com/baeldung/VertxWithRxJavaTest.java deleted file mode 100644 index f02792c3d7..0000000000 --- a/vertx-and-rxjava/src/test/java/com/baeldung/VertxWithRxJavaTest.java +++ /dev/null @@ -1,94 +0,0 @@ -package com.baeldung; - -import io.reactivex.Flowable; -import io.vertx.reactivex.core.Vertx; -import io.vertx.reactivex.core.buffer.Buffer; -import io.vertx.reactivex.core.file.FileSystem; -import io.vertx.reactivex.core.http.HttpClient; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.time.ZonedDateTime; - -import static com.baeldung.MetaWeatherClient.getDataByPlaceId; -import static com.baeldung.MetaWeatherClient.searchByCityName; - -public class VertxWithRxJavaTest { - - private Vertx vertx; - private HttpClient httpClient; - private FileSystem fileSystem; - static Logger log = LoggerFactory.getLogger(VertxWithRxJavaTest.class); - - @Before public void setUp() { - vertx = io.vertx.reactivex.core.Vertx.vertx(); - httpClient = vertx.createHttpClient(); - fileSystem = vertx.fileSystem(); - } - - @After public void tearDown() { - vertx.close(); - } - - @Test public void lightLengthTest() throws InterruptedException { - - // read the file that contains one city name per line - fileSystem - .rxReadFile("cities.txt").toFlowable() - .doOnNext(buffer -> log.info("File buffer ---\n{}\n---", buffer)) - - // split file content in lines to obtain one city per line - .flatMap(buffer -> Flowable.fromArray(buffer.toString().split("\\r?\\n"))) - .doOnNext(city -> log.info("City from file: '{}'", city)) - - // discard cities that are commented out with a leading '#' - .filter(city -> !city.startsWith("#")) - .doOnNext(city -> log.info("City that survived filtering: '{}'", city)) - - // for each city sends a request to obtain its 'woeid' - // and collect the buffer from the answer - .flatMap(city -> searchByCityName(httpClient, city) ) - .flatMap(response -> response.toFlowable()) - .doOnNext(buffer -> log.info("JSON of city detail: '{}'", buffer)) - - // get the woeid of each city - .map(cityBuffer -> cityBuffer - .toJsonArray() - .getJsonObject(0) - .getLong("woeid")) - - // use the id to ask for data - .flatMap(cityId -> getDataByPlaceId(httpClient, cityId)) - .flatMap(response -> response - .toObservable() - .reduce( - Buffer.buffer(), - (total, newBuf) -> total.appendBuffer( newBuf )).toFlowable() ) - - // get the JSON object out of the response - .doOnNext(buffer -> log.info("JSON of place detail: '{}'", buffer)) - .map(buffer -> buffer.toJsonObject()) - - // map the JSON in a POJO - .map(json -> { - ZonedDateTime sunRise = ZonedDateTime.parse(json.getString("sun_rise")); - ZonedDateTime sunSet = ZonedDateTime.parse(json.getString("sun_set")); - String cityName = json.getString("title"); - return new CityAndDayLength( - cityName,sunSet.toEpochSecond() - sunRise.toEpochSecond()); - }) - - // consume the events - .subscribe( - cityAndDayLength -> System.out.println(cityAndDayLength), - ex -> ex.printStackTrace()); - - // enough to give time to complete the execution - Thread.sleep(20000); - - } - -} diff --git a/vertx-and-rxjava/src/test/java/com/baeldung/CityAndDayLength.java b/vertx-and-rxjava/src/test/java/com/baeldung/weather/CityAndDayLength.java similarity index 72% rename from vertx-and-rxjava/src/test/java/com/baeldung/CityAndDayLength.java rename to vertx-and-rxjava/src/test/java/com/baeldung/weather/CityAndDayLength.java index dec4aa4852..f725c8255e 100644 --- a/vertx-and-rxjava/src/test/java/com/baeldung/CityAndDayLength.java +++ b/vertx-and-rxjava/src/test/java/com/baeldung/weather/CityAndDayLength.java @@ -1,4 +1,4 @@ -package com.baeldung; +package com.baeldung.weather; import java.text.MessageFormat; @@ -7,12 +7,13 @@ class CityAndDayLength { private final String city; private final double dayLengthInHours; - public CityAndDayLength(String city, long dayLengthInSeconds) { + CityAndDayLength(String city, long dayLengthInSeconds) { this.city = city; this.dayLengthInHours = dayLengthInSeconds / (60.0 * 60.0); } - @Override public String toString() { + @Override + public String toString() { return MessageFormat.format("In {0} there are {1,number,#0.0} hours of light.", city, dayLengthInHours); } } diff --git a/vertx-and-rxjava/src/test/java/com/baeldung/MetaWeatherClient.java b/vertx-and-rxjava/src/test/java/com/baeldung/weather/MetaWeatherClient.java similarity index 50% rename from vertx-and-rxjava/src/test/java/com/baeldung/MetaWeatherClient.java rename to vertx-and-rxjava/src/test/java/com/baeldung/weather/MetaWeatherClient.java index 0a3e9d8713..0dc1f8ac95 100644 --- a/vertx-and-rxjava/src/test/java/com/baeldung/MetaWeatherClient.java +++ b/vertx-and-rxjava/src/test/java/com/baeldung/weather/MetaWeatherClient.java @@ -1,4 +1,4 @@ -package com.baeldung; +package com.baeldung.weather; import io.reactivex.Flowable; import io.vertx.core.http.RequestOptions; @@ -8,38 +8,38 @@ import io.vertx.reactivex.core.http.HttpClientResponse; import static java.lang.String.format; -public class MetaWeatherClient { +class MetaWeatherClient { private static RequestOptions metawether = new RequestOptions() - .setHost("www.metaweather.com") - .setPort(443) - .setSsl(true); + .setHost("www.metaweather.com") + .setPort(443) + .setSsl(true); /** * @return A flowable backed by vertx that automatically sends an HTTP request at soon as the first subscription is received. */ -private static Flowable autoPerformingReq(HttpClient httpClient, String uri) { - HttpClientRequest req = httpClient.get(new RequestOptions(metawether).setURI(uri)); - return req.toFlowable() - .doOnSubscribe(subscription -> req.end()); -} + private static Flowable autoPerformingReq(HttpClient httpClient, String uri) { + HttpClientRequest req = httpClient.get(new RequestOptions(metawether).setURI(uri)); + return req.toFlowable() + .doOnSubscribe(subscription -> req.end()); + } -static Flowable searchByCityName(HttpClient httpClient, String cityName) { - HttpClientRequest req = httpClient.get( - new RequestOptions() + static Flowable searchByCityName(HttpClient httpClient, String cityName) { + HttpClientRequest req = httpClient.get( + new RequestOptions() .setHost("www.metaweather.com") .setPort(443) .setSsl(true) .setURI(format("/api/location/search/?query=%s", cityName))); - return req - .toFlowable() - .doOnSubscribe(subscription -> req.end()); -} + return req + .toFlowable() + .doOnSubscribe(subscription -> req.end()); + } static Flowable getDataByPlaceId(HttpClient httpClient, long placeId) { return autoPerformingReq( - httpClient, - format("/api/location/%s/", placeId)); + httpClient, + format("/api/location/%s/", placeId)); } } diff --git a/vertx-and-rxjava/src/test/java/com/baeldung/weather/VertxWithRxJavaTest.java b/vertx-and-rxjava/src/test/java/com/baeldung/weather/VertxWithRxJavaTest.java new file mode 100644 index 0000000000..ee5a24c13f --- /dev/null +++ b/vertx-and-rxjava/src/test/java/com/baeldung/weather/VertxWithRxJavaTest.java @@ -0,0 +1,92 @@ +package com.baeldung.weather; + +import io.reactivex.Flowable; +import io.reactivex.functions.Function; +import io.vertx.core.json.JsonObject; +import io.vertx.reactivex.core.Vertx; +import io.vertx.reactivex.core.buffer.Buffer; +import io.vertx.reactivex.core.file.FileSystem; +import io.vertx.reactivex.core.http.HttpClient; +import io.vertx.reactivex.core.http.HttpClientResponse; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.reactivestreams.Publisher; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.time.ZonedDateTime; + +import static com.baeldung.weather.MetaWeatherClient.getDataByPlaceId; +import static com.baeldung.weather.MetaWeatherClient.searchByCityName; + +public class VertxWithRxJavaTest { + + private Vertx vertx; + private HttpClient httpClient; + private FileSystem fileSystem; + private static Logger log = LoggerFactory.getLogger(VertxWithRxJavaTest.class); + + @Before + public void setUp() { + vertx = io.vertx.reactivex.core.Vertx.vertx(); + httpClient = vertx.createHttpClient(); + fileSystem = vertx.fileSystem(); + } + + @After + public void tearDown() { + vertx.close(); + } + + @Test + public void shouldDisplayLightLenghts() throws InterruptedException { + + // read the file that contains one city name per line + fileSystem + .rxReadFile("cities.txt").toFlowable() + .doOnNext(buffer -> log.info("File buffer ---\n{}\n---", buffer)) + .flatMap(buffer -> Flowable.fromArray(buffer.toString().split("\\r?\\n"))) + .doOnNext(city -> log.info("City from file: '{}'", city)) + .filter(city -> !city.startsWith("#")) + .doOnNext(city -> log.info("City that survived filtering: '{}'", city)) + .flatMap(city -> searchByCityName(httpClient, city)) + .flatMap(HttpClientResponse::toFlowable) + .doOnNext(buffer -> log.info("JSON of city detail: '{}'", buffer)) + .map(extractingWoeid()) + .flatMap(cityId -> getDataByPlaceId(httpClient, cityId)) + .flatMap(toBufferFlowable()) + .doOnNext(buffer -> log.info("JSON of place detail: '{}'", buffer)) + .map(Buffer::toJsonObject) + .map(toCityAndDayLength()) + .subscribe(System.out::println, Throwable::printStackTrace); + + Thread.sleep(20000); // enough to give time to complete the execution + } + + private static Function> toBufferFlowable() { + return response -> response + .toObservable() + .reduce( + Buffer.buffer(), + Buffer::appendBuffer).toFlowable(); + } + + private static Function extractingWoeid() { + return cityBuffer -> cityBuffer + .toJsonArray() + .getJsonObject(0) + .getLong("woeid"); + } + + private static Function toCityAndDayLength() { + return json -> { + ZonedDateTime sunRise = ZonedDateTime.parse(json.getString("sun_rise")); + ZonedDateTime sunSet = ZonedDateTime.parse(json.getString("sun_set")); + String cityName = json.getString("title"); + return new CityAndDayLength( + cityName, sunSet.toEpochSecond() - sunRise.toEpochSecond()); + }; + } + +} From 4b77e378b747ad8ef40f8cf676f80f706a6a7c12 Mon Sep 17 00:00:00 2001 From: baljeet20 Date: Thu, 31 Aug 2017 18:33:42 +0530 Subject: [PATCH 21/73] BAEL-1071 Added new example (#2532) * BAEL-1071 Runnable vs Callable in Java * BAEL-1071 Runnable vs Callable in Java * BAEL-1071 Runnable vs Callable in Java --- .../concurrent/runnable/EventLoggingTask.java | 17 +++++++++++++ .../concurrent/runnable/TaskRunner.java | 25 +++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 core-java-concurrency/src/main/java/com/baeldung/concurrent/runnable/EventLoggingTask.java create mode 100644 core-java-concurrency/src/main/java/com/baeldung/concurrent/runnable/TaskRunner.java diff --git a/core-java-concurrency/src/main/java/com/baeldung/concurrent/runnable/EventLoggingTask.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/runnable/EventLoggingTask.java new file mode 100644 index 0000000000..d65f79202e --- /dev/null +++ b/core-java-concurrency/src/main/java/com/baeldung/concurrent/runnable/EventLoggingTask.java @@ -0,0 +1,17 @@ +package com.baeldung.concurrent.runnable; + + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class EventLoggingTask implements Runnable{ + private Logger logger = LoggerFactory.getLogger(EventLoggingTask.class); + + @Override + public void run() { + + String messge="Message read from the event queue"; + logger.info("Message read from event queue is "+messge); + + } +} diff --git a/core-java-concurrency/src/main/java/com/baeldung/concurrent/runnable/TaskRunner.java b/core-java-concurrency/src/main/java/com/baeldung/concurrent/runnable/TaskRunner.java new file mode 100644 index 0000000000..8fd98e77b8 --- /dev/null +++ b/core-java-concurrency/src/main/java/com/baeldung/concurrent/runnable/TaskRunner.java @@ -0,0 +1,25 @@ +package com.baeldung.concurrent.runnable; + + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; + +public class TaskRunner { + + private static ExecutorService executorService; + + public static void main(String[] args) { + executeTask(); + } + + private static void executeTask() { + executorService= Executors.newSingleThreadExecutor(); + + EventLoggingTask task = new EventLoggingTask(); + + Future future = executorService.submit(task); + + executorService.shutdown(); + } +} From 89927e4620db5222b0744199a901c159d558579c Mon Sep 17 00:00:00 2001 From: Jochem Wichers Hoeth Date: Thu, 31 Aug 2017 15:36:12 +0200 Subject: [PATCH 22/73] Minor fix (part 2): move @EnableOAuth2Sso from Application to Config in ui-2 as well (#2483) --- .../src/main/java/org/baeldung/config/UiApplication.java | 2 -- .../src/main/java/org/baeldung/config/UiSecurityConfig.java | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/spring-security-sso/spring-security-sso-ui-2/src/main/java/org/baeldung/config/UiApplication.java b/spring-security-sso/spring-security-sso-ui-2/src/main/java/org/baeldung/config/UiApplication.java index c0ad5eb690..a222224c59 100644 --- a/spring-security-sso/spring-security-sso-ui-2/src/main/java/org/baeldung/config/UiApplication.java +++ b/spring-security-sso/spring-security-sso-ui-2/src/main/java/org/baeldung/config/UiApplication.java @@ -2,12 +2,10 @@ package org.baeldung.config; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.autoconfigure.security.oauth2.client.EnableOAuth2Sso; import org.springframework.boot.web.support.SpringBootServletInitializer; import org.springframework.context.annotation.Bean; import org.springframework.web.context.request.RequestContextListener; -@EnableOAuth2Sso @SpringBootApplication public class UiApplication extends SpringBootServletInitializer { diff --git a/spring-security-sso/spring-security-sso-ui-2/src/main/java/org/baeldung/config/UiSecurityConfig.java b/spring-security-sso/spring-security-sso-ui-2/src/main/java/org/baeldung/config/UiSecurityConfig.java index 5dbe9ada34..f9119e20f5 100644 --- a/spring-security-sso/spring-security-sso-ui-2/src/main/java/org/baeldung/config/UiSecurityConfig.java +++ b/spring-security-sso/spring-security-sso-ui-2/src/main/java/org/baeldung/config/UiSecurityConfig.java @@ -1,9 +1,11 @@ package org.baeldung.config; +import org.springframework.boot.autoconfigure.security.oauth2.client.EnableOAuth2Sso; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +@EnableOAuth2Sso @Configuration public class UiSecurityConfig extends WebSecurityConfigurerAdapter { From 6d6b24590f7a4d51403f5fabd59fe32a4d46667e Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Thu, 31 Aug 2017 17:14:19 +0200 Subject: [PATCH 23/73] Refactor (#2538) --- spring-ldap/pom.xml | 1 - ...=> LdapDataRepositoryIntegrationTest.java} | 134 +++++++++--------- ...va => VertxWithRxJavaIntegrationTest.java} | 16 +-- 3 files changed, 75 insertions(+), 76 deletions(-) rename spring-ldap/src/test/java/com/baeldung/ldap/client/{LdapDataRepositoryTest.java => LdapDataRepositoryIntegrationTest.java} (95%) rename vertx-and-rxjava/src/test/java/com/baeldung/weather/{VertxWithRxJavaTest.java => VertxWithRxJavaIntegrationTest.java} (85%) diff --git a/spring-ldap/pom.xml b/spring-ldap/pom.xml index 05baf8c66d..2f806e89f8 100644 --- a/spring-ldap/pom.xml +++ b/spring-ldap/pom.xml @@ -3,7 +3,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - com.baeldung spring-ldap 0.1-SNAPSHOT jar diff --git a/spring-ldap/src/test/java/com/baeldung/ldap/client/LdapDataRepositoryTest.java b/spring-ldap/src/test/java/com/baeldung/ldap/client/LdapDataRepositoryIntegrationTest.java similarity index 95% rename from spring-ldap/src/test/java/com/baeldung/ldap/client/LdapDataRepositoryTest.java rename to spring-ldap/src/test/java/com/baeldung/ldap/client/LdapDataRepositoryIntegrationTest.java index 9f38af9263..a7c0380867 100644 --- a/spring-ldap/src/test/java/com/baeldung/ldap/client/LdapDataRepositoryTest.java +++ b/spring-ldap/src/test/java/com/baeldung/ldap/client/LdapDataRepositoryIntegrationTest.java @@ -1,67 +1,67 @@ -package com.baeldung.ldap.client; - -import com.baeldung.ldap.data.service.UserService; -import com.baeldung.ldap.javaconfig.TestConfig; -import org.hamcrest.Matchers; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.test.context.ActiveProfiles; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.support.AnnotationConfigContextLoader; - -import java.util.List; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertThat; - -@RunWith(SpringJUnit4ClassRunner.class) -@ActiveProfiles("testlive") -@ContextConfiguration(classes = {TestConfig.class}, loader = AnnotationConfigContextLoader.class) -public class LdapDataRepositoryTest { - - private static final String USER2 = "TEST02"; - private static final String USER3 = "TEST03"; - private static final String USER4 = "TEST04"; - - private static final String USER2_PWD = "TEST02"; - private static final String USER3_PWD = "TEST03"; - private static final String USER4_PWD = "TEST04"; - - private static final String SEARCH_STRING = "TEST*"; - - @Autowired - private UserService userService; - - @Test - public void givenLdapClient_whenCorrectCredentials_thenSuccessfulLogin() { - Boolean isValid = userService.authenticate(USER3, USER3_PWD); - assertEquals(true, isValid); - } - - @Test - public void givenLdapClient_whenIncorrectCredentials_thenFailedLogin() { - Boolean isValid = userService.authenticate(USER3, USER2_PWD); - assertEquals(false, isValid); - } - - @Test - public void givenLdapClient_whenCorrectSearchFilter_thenEntriesReturned() { - List userList = userService.search(SEARCH_STRING); - assertThat(userList, Matchers.containsInAnyOrder(USER2, USER3)); - } - - @Test - public void givenLdapClientNotExists_whenDataProvided_thenNewUserCreated() { - userService.create(USER4, USER4_PWD); - userService.authenticate(USER4, USER4_PWD); - } - - @Test - public void givenLdapClientExists_whenDataProvided_thenExistingUserModified() { - userService.modify(USER2, USER3_PWD); - userService.authenticate(USER2, USER3_PWD); - } - -} +package com.baeldung.ldap.client; + +import com.baeldung.ldap.data.service.UserService; +import com.baeldung.ldap.javaconfig.TestConfig; +import org.hamcrest.Matchers; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.AnnotationConfigContextLoader; + +import java.util.List; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertThat; + +@RunWith(SpringJUnit4ClassRunner.class) +@ActiveProfiles("testlive") +@ContextConfiguration(classes = {TestConfig.class}, loader = AnnotationConfigContextLoader.class) +public class LdapDataRepositoryIntegrationTest { + + private static final String USER2 = "TEST02"; + private static final String USER3 = "TEST03"; + private static final String USER4 = "TEST04"; + + private static final String USER2_PWD = "TEST02"; + private static final String USER3_PWD = "TEST03"; + private static final String USER4_PWD = "TEST04"; + + private static final String SEARCH_STRING = "TEST*"; + + @Autowired + private UserService userService; + + @Test + public void givenLdapClient_whenCorrectCredentials_thenSuccessfulLogin() { + Boolean isValid = userService.authenticate(USER3, USER3_PWD); + assertEquals(true, isValid); + } + + @Test + public void givenLdapClient_whenIncorrectCredentials_thenFailedLogin() { + Boolean isValid = userService.authenticate(USER3, USER2_PWD); + assertEquals(false, isValid); + } + + @Test + public void givenLdapClient_whenCorrectSearchFilter_thenEntriesReturned() { + List userList = userService.search(SEARCH_STRING); + assertThat(userList, Matchers.containsInAnyOrder(USER2, USER3)); + } + + @Test + public void givenLdapClientNotExists_whenDataProvided_thenNewUserCreated() { + userService.create(USER4, USER4_PWD); + userService.authenticate(USER4, USER4_PWD); + } + + @Test + public void givenLdapClientExists_whenDataProvided_thenExistingUserModified() { + userService.modify(USER2, USER3_PWD); + userService.authenticate(USER2, USER3_PWD); + } + +} diff --git a/vertx-and-rxjava/src/test/java/com/baeldung/weather/VertxWithRxJavaTest.java b/vertx-and-rxjava/src/test/java/com/baeldung/weather/VertxWithRxJavaIntegrationTest.java similarity index 85% rename from vertx-and-rxjava/src/test/java/com/baeldung/weather/VertxWithRxJavaTest.java rename to vertx-and-rxjava/src/test/java/com/baeldung/weather/VertxWithRxJavaIntegrationTest.java index ee5a24c13f..a2ddbe5007 100644 --- a/vertx-and-rxjava/src/test/java/com/baeldung/weather/VertxWithRxJavaTest.java +++ b/vertx-and-rxjava/src/test/java/com/baeldung/weather/VertxWithRxJavaIntegrationTest.java @@ -20,16 +20,16 @@ import java.time.ZonedDateTime; import static com.baeldung.weather.MetaWeatherClient.getDataByPlaceId; import static com.baeldung.weather.MetaWeatherClient.searchByCityName; -public class VertxWithRxJavaTest { +public class VertxWithRxJavaIntegrationTest { private Vertx vertx; private HttpClient httpClient; private FileSystem fileSystem; - private static Logger log = LoggerFactory.getLogger(VertxWithRxJavaTest.class); + private static Logger log = LoggerFactory.getLogger(VertxWithRxJavaIntegrationTest.class); @Before public void setUp() { - vertx = io.vertx.reactivex.core.Vertx.vertx(); + vertx = Vertx.vertx(); httpClient = vertx.createHttpClient(); fileSystem = vertx.fileSystem(); } @@ -45,18 +45,18 @@ public class VertxWithRxJavaTest { // read the file that contains one city name per line fileSystem .rxReadFile("cities.txt").toFlowable() - .doOnNext(buffer -> log.info("File buffer ---\n{}\n---", buffer)) + .doOnNext(buffer -> log.info("File buffer ---\n{}\n---", buffer)) .flatMap(buffer -> Flowable.fromArray(buffer.toString().split("\\r?\\n"))) - .doOnNext(city -> log.info("City from file: '{}'", city)) + .doOnNext(city -> log.info("City from file: '{}'", city)) .filter(city -> !city.startsWith("#")) - .doOnNext(city -> log.info("City that survived filtering: '{}'", city)) + .doOnNext(city -> log.info("City that survived filtering: '{}'", city)) .flatMap(city -> searchByCityName(httpClient, city)) .flatMap(HttpClientResponse::toFlowable) - .doOnNext(buffer -> log.info("JSON of city detail: '{}'", buffer)) + .doOnNext(buffer -> log.info("JSON of city detail: '{}'", buffer)) .map(extractingWoeid()) .flatMap(cityId -> getDataByPlaceId(httpClient, cityId)) .flatMap(toBufferFlowable()) - .doOnNext(buffer -> log.info("JSON of place detail: '{}'", buffer)) + .doOnNext(buffer -> log.info("JSON of place detail: '{}'", buffer)) .map(Buffer::toJsonObject) .map(toCityAndDayLength()) .subscribe(System.out::println, Throwable::printStackTrace); From 12ffbe027daab383c640efd86598e13a23e08143 Mon Sep 17 00:00:00 2001 From: Predrag Maric Date: Thu, 31 Aug 2017 18:42:03 +0200 Subject: [PATCH 24/73] BAEL-1078 Code formatting (#2539) --- core-java/pom.xml | 6 +++ .../com/baeldung/stream/StreamIndices.java | 51 ++++++++++++++++--- .../baeldung/stream/StreamIndicesTest.java | 18 +++++++ 3 files changed, 67 insertions(+), 8 deletions(-) diff --git a/core-java/pom.xml b/core-java/pom.xml index 633656857e..3805506181 100644 --- a/core-java/pom.xml +++ b/core-java/pom.xml @@ -196,6 +196,11 @@ streamex ${streamex.version} + + io.vavr + vavr + ${vavr.version} + @@ -420,6 +425,7 @@ 4.6-b01 1.13 0.6.5 + 0.9.0 1.3 diff --git a/core-java/src/main/java/com/baeldung/stream/StreamIndices.java b/core-java/src/main/java/com/baeldung/stream/StreamIndices.java index b101bc2740..aa4da58818 100644 --- a/core-java/src/main/java/com/baeldung/stream/StreamIndices.java +++ b/core-java/src/main/java/com/baeldung/stream/StreamIndices.java @@ -1,5 +1,6 @@ package com.baeldung.stream; +import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; import java.util.stream.IntStream; @@ -7,31 +8,65 @@ import java.util.stream.IntStream; import com.codepoetics.protonpack.Indexed; import com.codepoetics.protonpack.StreamUtils; +import io.vavr.Tuple2; +import io.vavr.collection.Stream; +import one.util.streamex.EntryStream; + public class StreamIndices { public static List getEvenIndexedStrings(String[] names) { - List evenIndexedNames = IntStream.range(0, names.length) - .filter(i -> i % 2 == 0).mapToObj(i -> names[i]) + List evenIndexedNames = IntStream + .range(0, names.length) + .filter(i -> i % 2 == 0) + .mapToObj(i -> names[i]) .collect(Collectors.toList()); return evenIndexedNames; } + public List getEvenIndexedStringsVersionTwo(List names) { + List evenIndexedNames = EntryStream + .of(names) + .filterKeyValue((index, name) -> index % 2 == 0) + .values() + .toList(); + return evenIndexedNames; + } + public static List> getEvenIndexedStrings(List names) { - List> list = StreamUtils.zipWithIndex(names.stream()) - .filter(i -> i.getIndex() % 2 == 0).collect(Collectors.toList()); + List> list = StreamUtils + .zipWithIndex(names.stream()) + .filter(i -> i.getIndex() % 2 == 0) + .collect(Collectors.toList()); return list; } public static List> getOddIndexedStrings(List names) { - List> list = StreamUtils.zipWithIndex(names.stream()) - .filter(i -> i.getIndex() % 2 == 1).collect(Collectors.toList()); + List> list = StreamUtils + .zipWithIndex(names.stream()) + .filter(i -> i.getIndex() % 2 == 1) + .collect(Collectors.toList()); return list; } public static List getOddIndexedStrings(String[] names) { - List oddIndexedNames = IntStream.range(0, names.length) - .filter(i -> i % 2 == 1).mapToObj(i -> names[i]) + List oddIndexedNames = IntStream + .range(0, names.length) + .filter(i -> i % 2 == 1) + .mapToObj(i -> names[i]) .collect(Collectors.toList()); return oddIndexedNames; } + + public static List getOddIndexedStringsVersionTwo(String[] names) { + List> tuples = Stream + .of(names) + .zipWithIndex() + .filter(tuple -> tuple._2 % 2 == 1) + .toJavaList(); + List oddIndexedNames = new ArrayList(); + tuples.forEach(tuple -> { + oddIndexedNames.add(tuple._1); + }); + return oddIndexedNames; + } } \ No newline at end of file diff --git a/core-java/src/test/java/com/baeldung/stream/StreamIndicesTest.java b/core-java/src/test/java/com/baeldung/stream/StreamIndicesTest.java index ca60544788..d8513417ea 100644 --- a/core-java/src/test/java/com/baeldung/stream/StreamIndicesTest.java +++ b/core-java/src/test/java/com/baeldung/stream/StreamIndicesTest.java @@ -20,6 +20,15 @@ public class StreamIndicesTest { assertEquals(expectedResult, actualResult); } + @Test + public void givenArray_whenGetIndexedStrings_thenReturnListOfEvenIndexedStringsVersionTwo() { + String[] names = { "Afrim", "Bashkim", "Besim", "Lulzim", "Durim", "Shpetim" }; + List expectedResult = Arrays.asList("Afrim", "Besim", "Durim"); + List actualResult = StreamIndices.getEvenIndexedStrings(names); + + assertEquals(expectedResult, actualResult); + } + @Test public void givenArray_whenGetIndexedStrings_thenReturnListOfOddStrings() { String[] names = { "Afrim", "Bashkim", "Besim", "Lulzim", "Durim", "Shpetim" }; @@ -47,4 +56,13 @@ public class StreamIndicesTest { assertEquals(expectedResult, actualResult); } + @Test + public void givenArray_whenGetIndexedStrings_thenReturnListOfOddStringsVersionTwo() { + String[] names = { "Afrim", "Bashkim", "Besim", "Lulzim", "Durim", "Shpetim" }; + List expectedResult = Arrays.asList("Bashkim", "Lulzim", "Shpetim"); + List actualResult = StreamIndices.getOddIndexedStringsVersionTwo(names); + + assertEquals(expectedResult, actualResult); + } + } \ No newline at end of file From 6d797a2cc3f88ee7b17e7e2f4e724272f19bbd99 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Fri, 1 Sep 2017 09:41:11 +0200 Subject: [PATCH 25/73] Refactor JavaDirectoryDelete (#2542) --- .../com/baeldung/java/io/JavaDirectoryDeleteUnitTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/src/test/java/com/baeldung/java/io/JavaDirectoryDeleteUnitTest.java b/libraries/src/test/java/com/baeldung/java/io/JavaDirectoryDeleteUnitTest.java index 0820a2b2bd..d980f65b0b 100644 --- a/libraries/src/test/java/com/baeldung/java/io/JavaDirectoryDeleteUnitTest.java +++ b/libraries/src/test/java/com/baeldung/java/io/JavaDirectoryDeleteUnitTest.java @@ -26,7 +26,7 @@ public class JavaDirectoryDeleteUnitTest { private static Path TEMP_DIRECTORY; private static final String DIRECTORY_NAME = "toBeDeleted"; - public static final List ALL_LINES = Arrays.asList(new String[] { "This is line 1", "This is line 2", "This is line 3", "This is line 4", "This is line 5", "This is line 6" }); + private static final List ALL_LINES = Arrays.asList("This is line 1", "This is line 2", "This is line 3", "This is line 4", "This is line 5", "This is line 6"); @BeforeClass public static void initializeTempDirectory() throws IOException { @@ -65,7 +65,7 @@ public class JavaDirectoryDeleteUnitTest { } } - boolean deleteDirectory(File directoryToBeDeleted) { + private boolean deleteDirectory(File directoryToBeDeleted) { File[] allContents = directoryToBeDeleted.listFiles(); if (allContents != null) { From aaa3d117e2966b16270b862ff3c8788413afa931 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Fri, 1 Sep 2017 14:23:05 +0200 Subject: [PATCH 26/73] Update versions in libraries (#2543) * Bump datanucleus versions * Update HikariCP * Update Hoverfly-java --- libraries/pom.xml | 14 +++++++------- .../java/com/baeldung/date/DateDiffUnitTest.java | 11 ----------- 2 files changed, 7 insertions(+), 18 deletions(-) diff --git a/libraries/pom.xml b/libraries/pom.xml index 9bbc0c41d2..44be5c9c09 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -190,7 +190,7 @@ io.specto hoverfly-java - 0.8.0 + 0.8.1 org.apache.httpcomponents @@ -295,22 +295,22 @@ org.datanucleus javax.jdo - 3.2.0-m6 + 3.2.0-m7 org.datanucleus datanucleus-core - 5.1.0-m1 + 5.1.1 org.datanucleus datanucleus-api-jdo - 5.1.0-m1 + 5.1.1 org.datanucleus datanucleus-rdbms - 5.1.0-m1 + 5.1.1 org.datanucleus @@ -364,7 +364,7 @@ com.zaxxer HikariCP - 2.6.1 + 2.6.3 compile @@ -565,7 +565,7 @@ 1.1.3-rc.5 1.4.0 1.1.0 - 4.1.10.Final + 4.1.15.Final 4.1 4.12 0.10 diff --git a/libraries/src/test/java/com/baeldung/date/DateDiffUnitTest.java b/libraries/src/test/java/com/baeldung/date/DateDiffUnitTest.java index 6046781619..14d3f925f5 100644 --- a/libraries/src/test/java/com/baeldung/date/DateDiffUnitTest.java +++ b/libraries/src/test/java/com/baeldung/date/DateDiffUnitTest.java @@ -28,17 +28,6 @@ public class DateDiffUnitTest { assertEquals(diff, 6); } - @Test - public void givenTwoDatesInJava8_whenDifferentiating_thenWeGetSix() { - LocalDate now = LocalDate.now(); - LocalDate sixDaysBehind = now.minusDays(6); - - Duration duration = Duration.between(now, sixDaysBehind); - long diff = Math.abs(duration.toDays()); - - assertEquals(diff, 6); - } - @Test public void givenTwoDateTimesInJava8_whenDifferentiating_thenWeGetSix() { LocalDateTime now = LocalDateTime.now(); From 86c1d6d22de6eccf47d7accba75fc6623a2bfb73 Mon Sep 17 00:00:00 2001 From: hugosama1 Date: Fri, 1 Sep 2017 13:57:45 -0600 Subject: [PATCH 27/73] First proposition for introduction to spring-yarg (#2540) --- libraries/pom.xml | 13 ++++ .../com/baeldung/yarg/DocumentController.java | 56 ++++++++++++++++++ libraries/src/main/resources/Data.json | 7 +++ libraries/src/main/resources/Letter.docx | Bin 0 -> 12995 bytes 4 files changed, 76 insertions(+) create mode 100644 libraries/src/main/java/com/baeldung/yarg/DocumentController.java create mode 100644 libraries/src/main/resources/Data.json create mode 100644 libraries/src/main/resources/Letter.docx diff --git a/libraries/pom.xml b/libraries/pom.xml index 44be5c9c09..834c496116 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -514,6 +514,11 @@ hirondelle-date4j ${hirondelle-date4j.version} + + com.haulmont.yarg + yarg + 2.0.4 + @@ -534,6 +539,14 @@ OpenGeo Maven Repository http://repo.opengeo.org + + + false + + bintray-cuba-platform-main + bintray + http://dl.bintray.com/cuba-platform/main + 0.7.0 diff --git a/libraries/src/main/java/com/baeldung/yarg/DocumentController.java b/libraries/src/main/java/com/baeldung/yarg/DocumentController.java new file mode 100644 index 0000000000..0e1bbca561 --- /dev/null +++ b/libraries/src/main/java/com/baeldung/yarg/DocumentController.java @@ -0,0 +1,56 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.baeldung.yarg; + +import com.haulmont.yarg.formatters.factory.DefaultFormatterFactory; +import com.haulmont.yarg.loaders.factory.DefaultLoaderFactory; +import com.haulmont.yarg.loaders.impl.JsonDataLoader; +import com.haulmont.yarg.reporting.Reporting; +import com.haulmont.yarg.reporting.RunParams; +import com.haulmont.yarg.structure.Report; +import com.haulmont.yarg.structure.ReportBand; +import com.haulmont.yarg.structure.ReportOutputType; +import com.haulmont.yarg.structure.impl.BandBuilder; +import com.haulmont.yarg.structure.impl.ReportBuilder; +import com.haulmont.yarg.structure.impl.ReportTemplateBuilder; +import java.io.File; +import java.io.IOException; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.io.FileUtils; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class DocumentController { + + @RequestMapping(path = "/generate/doc", method = RequestMethod.GET) + public void generateDocument(HttpServletResponse response) throws IOException { + ReportBuilder reportBuilder = new ReportBuilder(); + ReportTemplateBuilder reportTemplateBuilder = new ReportTemplateBuilder() + .documentPath("./src/main/resources/Letter.docx") + .documentName("Letter.docx") + .outputType(ReportOutputType.docx) + .readFileFromPath(); + reportBuilder.template(reportTemplateBuilder.build()); + BandBuilder bandBuilder = new BandBuilder(); + String json = FileUtils.readFileToString(new File("./src/main/resources/Data.json")); + ReportBand main = bandBuilder.name("Main") + .query("Main", "parameter=param1 $.main", "json") + .build(); + reportBuilder.band(main); + Report report = reportBuilder.build(); + + Reporting reporting = new Reporting(); + reporting.setFormatterFactory(new DefaultFormatterFactory()); + reporting.setLoaderFactory( + new DefaultLoaderFactory() + .setJsonDataLoader(new JsonDataLoader())); + response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document"); + reporting.runReport(new RunParams(report).param("param1", json), response.getOutputStream()); + } + +} diff --git a/libraries/src/main/resources/Data.json b/libraries/src/main/resources/Data.json new file mode 100644 index 0000000000..d098839d51 --- /dev/null +++ b/libraries/src/main/resources/Data.json @@ -0,0 +1,7 @@ +{ + "main": { + "title" : "INTRODUCTION TO YARG", + "name" : "Baeldung", + "content" : "This is the content of the letter, can be anything we like." + } +} diff --git a/libraries/src/main/resources/Letter.docx b/libraries/src/main/resources/Letter.docx new file mode 100644 index 0000000000000000000000000000000000000000..fbd01271d0b0f1cb89f8c51debce40d9a39a532b GIT binary patch literal 12995 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 literal 0 HcmV?d00001 From 7e26990eb94e5bc80a08a90267410afc77df92a6 Mon Sep 17 00:00:00 2001 From: Alejandro Gervasio Date: Fri, 1 Sep 2017 18:33:58 -0300 Subject: [PATCH 28/73] An Introduction to Vavr's Validation API - Alejandro Gervasio | alejandro.gervasio@gmail.com (#2526) * Initial Commit * Refactored Application class * Refactored Application class * Refactored Application class * Refactored User class * Added ValidationTest class * Reorganized imports in ValidatorTest class * Reformatted source code * Reformatted source code --- .../application/Application.java | 17 +++++ .../baeldung/vavrvalidation/model/User.java | 18 +++++ .../validator/UserValidator.java | 29 ++++++++ .../validator/UserValidatorTest.java | 23 +++++++ .../validator/ValidationTest.java | 68 +++++++++++++++++++ 5 files changed, 155 insertions(+) create mode 100644 vavr/vavr-validation/src/main/java/com/baeldung/vavrvalidation/application/Application.java create mode 100644 vavr/vavr-validation/src/main/java/com/baeldung/vavrvalidation/model/User.java create mode 100644 vavr/vavr-validation/src/main/java/com/baeldung/vavrvalidation/validator/UserValidator.java create mode 100644 vavr/vavr-validation/src/test/java/com/baeldung/vavrvalidation/validator/UserValidatorTest.java create mode 100644 vavr/vavr-validation/src/test/java/com/baeldung/vavrvalidation/validator/ValidationTest.java diff --git a/vavr/vavr-validation/src/main/java/com/baeldung/vavrvalidation/application/Application.java b/vavr/vavr-validation/src/main/java/com/baeldung/vavrvalidation/application/Application.java new file mode 100644 index 0000000000..8acc4522af --- /dev/null +++ b/vavr/vavr-validation/src/main/java/com/baeldung/vavrvalidation/application/Application.java @@ -0,0 +1,17 @@ +package com.baeldung.vavrvalidation.application; + +import com.baeldung.vavrvalidation.model.User; +import com.baeldung.vavrvalidation.validator.UserValidator; +import io.vavr.collection.Seq; +import io.vavr.control.Validation; + +public class Application { + + public static void main(String[] args) { + + UserValidator userValidator = new UserValidator(); + Validation, User> validation = userValidator.validateUser("John", "john@domain.com"); + + // process validation results here + } +} diff --git a/vavr/vavr-validation/src/main/java/com/baeldung/vavrvalidation/model/User.java b/vavr/vavr-validation/src/main/java/com/baeldung/vavrvalidation/model/User.java new file mode 100644 index 0000000000..f1477a1ed3 --- /dev/null +++ b/vavr/vavr-validation/src/main/java/com/baeldung/vavrvalidation/model/User.java @@ -0,0 +1,18 @@ +package com.baeldung.vavrvalidation.model; + +public class User { + private String name; + private String email; + + public User(String name, String email) { + this.name = name; + this.email = email; + } + + @Override + public String toString() { + return "User [name=" + name + ", email=" + email + "]"; + } + + // standard setters and getters +} diff --git a/vavr/vavr-validation/src/main/java/com/baeldung/vavrvalidation/validator/UserValidator.java b/vavr/vavr-validation/src/main/java/com/baeldung/vavrvalidation/validator/UserValidator.java new file mode 100644 index 0000000000..1cec006816 --- /dev/null +++ b/vavr/vavr-validation/src/main/java/com/baeldung/vavrvalidation/validator/UserValidator.java @@ -0,0 +1,29 @@ +package com.baeldung.vavrvalidation.validator; + +import com.baeldung.vavrvalidation.model.User; +import io.vavr.collection.CharSeq; +import io.vavr.collection.Seq; +import io.vavr.control.Validation; + +public class UserValidator { + + private static final String NAME_PATTERN = "^[a-zA-Z0-9]+$"; + private static final String NAME_ERROR = "Name contains invalid characters"; + private static final String EMAIL_PATTERN = + "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@" + + "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$"; + private static final String EMAIL_ERROR = "Email must be a well-formed email address"; + + public Validation, User> validateUser(String name, String email) { + return Validation + .combine(validateField(name, NAME_PATTERN, NAME_ERROR) + ,validateField(email, EMAIL_PATTERN, EMAIL_ERROR)) + .ap(User::new); + } + + private Validation validateField(String field, String pattern, String error) { + return CharSeq.of(field).replaceAll(pattern, "").transform(seq -> seq.isEmpty() + ? Validation.valid(field) + : Validation.invalid(error)); + } +} diff --git a/vavr/vavr-validation/src/test/java/com/baeldung/vavrvalidation/validator/UserValidatorTest.java b/vavr/vavr-validation/src/test/java/com/baeldung/vavrvalidation/validator/UserValidatorTest.java new file mode 100644 index 0000000000..cb9557fa53 --- /dev/null +++ b/vavr/vavr-validation/src/test/java/com/baeldung/vavrvalidation/validator/UserValidatorTest.java @@ -0,0 +1,23 @@ +package com.baeldung.vavrvalidation.validator; + +import static org.junit.Assert.*; +import static org.hamcrest.CoreMatchers.instanceOf; +import org.junit.Test; +import com.baeldung.vavrvalidation.validator.UserValidator; +import io.vavr.control.Validation.Invalid; +import io.vavr.control.Validation.Valid; + +public class UserValidatorTest { + + @Test + public void givenValidUserParams_whenValidated_thenInstanceOfValid() { + UserValidator userValidator = new UserValidator(); + assertThat(userValidator.validateUser("John", "john@domain.com"), instanceOf(Valid.class)); + } + + @Test + public void givenInvalidUserParams_whenValidated_thenInstanceOfInvalid() { + UserValidator userValidator = new UserValidator(); + assertThat(userValidator.validateUser("John", "no-email"), instanceOf(Invalid.class)); + } +} diff --git a/vavr/vavr-validation/src/test/java/com/baeldung/vavrvalidation/validator/ValidationTest.java b/vavr/vavr-validation/src/test/java/com/baeldung/vavrvalidation/validator/ValidationTest.java new file mode 100644 index 0000000000..c89b43b5e3 --- /dev/null +++ b/vavr/vavr-validation/src/test/java/com/baeldung/vavrvalidation/validator/ValidationTest.java @@ -0,0 +1,68 @@ +package com.baeldung.vavrvalidation.validator; + +import static org.hamcrest.CoreMatchers.*; +import static org.junit.Assert.*; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; +import com.baeldung.vavrvalidation.model.User; +import io.vavr.collection.Seq; +import io.vavr.control.Either.Right; +import io.vavr.control.Validation.Invalid; +import io.vavr.control.Validation.Valid; + +public class ValidationTest { + + private static UserValidator userValidator; + + @BeforeClass + public static void setUpUserValidatorInstance() { + userValidator = new UserValidator(); + } + + @AfterClass + public static void teardownUserValidatorInstance() { + userValidator = null; + } + + @Test + public void givenInvalidUserParams_whenValidated_thenInvalidInstance() { + assertThat(userValidator.validateUser("John", "no-email"), instanceOf(Invalid.class)); + } + + @Test + public void givenValidUserParams_whenValidated_thenValidInstance() { + assertThat(userValidator.validateUser("John", "john@domain.com"), instanceOf(Valid.class)); + } + + @Test + public void givenInvalidUserParams_whenValidated_thenTrueWithIsInvalidMethod() { + assertTrue(userValidator.validateUser("John", "no-email").isInvalid()); + } + + @Test + public void givenValidUserParams_whenValidated_thenTrueWithIsValidMethod() { + assertTrue(userValidator.validateUser("John", "john@domain.com").isValid()); + } + + @Test + public void givenInValidUserParams_withGetErrorMethod_thenGetErrorMessages() { + assertEquals("Name contains invalid characters, Email must be a well-formed email address", userValidator.validateUser(" ", "no-email") + .getError().intersperse(", ").fold("", String::concat)); + } + + @Test + public void givenValidUserParams_withGetMethod_thenGetUserInstance() { + assertThat(userValidator.validateUser("John", "john@domain.com").get(), instanceOf(User.class)); + } + + @Test + public void givenValidUserParams_withtoEitherMethod_thenRightInstance() { + assertThat(userValidator.validateUser("John", "john@domain.com").toEither(), instanceOf(Right.class)); + } + + @Test + public void givenValidUserParams_withFoldMethodWithListlengthUserHashCode_thenEqualstoParamsLength() { + assertEquals(2, (int) userValidator.validateUser(" ", " ").fold(Seq::length, User::hashCode)); + } +} From 498a84c8b34ad95392a303c37eac7486d97f1ec4 Mon Sep 17 00:00:00 2001 From: shekhar-s Date: Fri, 1 Sep 2017 15:44:37 -0600 Subject: [PATCH 29/73] removed If condition (#2546) --- .../com/baeldung/java/io/JavaDirectoryDeleteUnitTest.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/libraries/src/test/java/com/baeldung/java/io/JavaDirectoryDeleteUnitTest.java b/libraries/src/test/java/com/baeldung/java/io/JavaDirectoryDeleteUnitTest.java index d980f65b0b..1cd390b873 100644 --- a/libraries/src/test/java/com/baeldung/java/io/JavaDirectoryDeleteUnitTest.java +++ b/libraries/src/test/java/com/baeldung/java/io/JavaDirectoryDeleteUnitTest.java @@ -70,11 +70,7 @@ public class JavaDirectoryDeleteUnitTest { if (allContents != null) { for (File file : allContents) { - if (file.isDirectory()) { - deleteDirectory(file); - } else { - file.delete(); - } + deleteDirectory(file); } } From d635e9a2459f985194d2089bc9aa574ae0514365 Mon Sep 17 00:00:00 2001 From: Shivang Sarawagi Date: Sat, 2 Sep 2017 06:10:09 +0530 Subject: [PATCH 30/73] binary search folder created (#2541) * binary search folder created * Binary search test updated --- .../baeldung/algorithms/{ => binarysearch}/BinarySearch.java | 2 ++ .../java/algorithms/{ => binarysearch}/BinarySearchTest.java | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) rename algorithms/src/main/java/com/baeldung/algorithms/{ => binarysearch}/BinarySearch.java (93%) rename algorithms/src/test/java/algorithms/{ => binarysearch}/BinarySearchTest.java (92%) diff --git a/algorithms/src/main/java/com/baeldung/algorithms/BinarySearch.java b/algorithms/src/main/java/com/baeldung/algorithms/binarysearch/BinarySearch.java similarity index 93% rename from algorithms/src/main/java/com/baeldung/algorithms/BinarySearch.java rename to algorithms/src/main/java/com/baeldung/algorithms/binarysearch/BinarySearch.java index 86522950ef..5b2ac49d4e 100644 --- a/algorithms/src/main/java/com/baeldung/algorithms/BinarySearch.java +++ b/algorithms/src/main/java/com/baeldung/algorithms/binarysearch/BinarySearch.java @@ -1,3 +1,5 @@ +package com.baeldung.algorithms.binarysearch; + import java.util.Arrays; import java.util.Collections; import java.util.List; diff --git a/algorithms/src/test/java/algorithms/BinarySearchTest.java b/algorithms/src/test/java/algorithms/binarysearch/BinarySearchTest.java similarity index 92% rename from algorithms/src/test/java/algorithms/BinarySearchTest.java rename to algorithms/src/test/java/algorithms/binarysearch/BinarySearchTest.java index 3611ec8e49..959f47a275 100644 --- a/algorithms/src/test/java/algorithms/BinarySearchTest.java +++ b/algorithms/src/test/java/algorithms/binarysearch/BinarySearchTest.java @@ -1,9 +1,11 @@ +package algorithms.binarysearch; + import java.util.Arrays; import java.util.List; import org.junit.Assert; import org.junit.Test; - +import com.baeldung.algorithms.binarysearch.BinarySearch; public class BinarySearchTest { From 94d02ed1f6c960db7bae229f3b3f0cbdb9ab4c9b Mon Sep 17 00:00:00 2001 From: Fatos Morina Date: Sat, 2 Sep 2017 10:42:24 +0200 Subject: [PATCH 31/73] BAEL-1078 How to iterate over a stream with indices (#2544) * Add the example with EntryStream * Add the example with EntryStream * Add vavr * Implement the method getOddIndexedStringsVersionTwo * Implement the method givenArray_whenGetIndexedStrings_thenReturnListOfOddStringsVersionTwo * BAEL-1078 Code formatting * Extract tuples using map * Fix merge conflicts --- .../com/baeldung/stream/StreamIndices.java | 58 ++++++++----------- 1 file changed, 24 insertions(+), 34 deletions(-) diff --git a/core-java/src/main/java/com/baeldung/stream/StreamIndices.java b/core-java/src/main/java/com/baeldung/stream/StreamIndices.java index aa4da58818..34768a725a 100644 --- a/core-java/src/main/java/com/baeldung/stream/StreamIndices.java +++ b/core-java/src/main/java/com/baeldung/stream/StreamIndices.java @@ -1,6 +1,5 @@ package com.baeldung.stream; -import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; import java.util.stream.IntStream; @@ -8,65 +7,56 @@ import java.util.stream.IntStream; import com.codepoetics.protonpack.Indexed; import com.codepoetics.protonpack.StreamUtils; -import io.vavr.Tuple2; import io.vavr.collection.Stream; import one.util.streamex.EntryStream; public class StreamIndices { public static List getEvenIndexedStrings(String[] names) { - List evenIndexedNames = IntStream - .range(0, names.length) - .filter(i -> i % 2 == 0) - .mapToObj(i -> names[i]) - .collect(Collectors.toList()); + List evenIndexedNames = IntStream.range(0, names.length) + .filter(i -> i % 2 == 0) + .mapToObj(i -> names[i]) + .collect(Collectors.toList()); return evenIndexedNames; } public List getEvenIndexedStringsVersionTwo(List names) { - List evenIndexedNames = EntryStream - .of(names) - .filterKeyValue((index, name) -> index % 2 == 0) - .values() - .toList(); + List evenIndexedNames = EntryStream.of(names) + .filterKeyValue((index, name) -> index % 2 == 0) + .values() + .toList(); return evenIndexedNames; } public static List> getEvenIndexedStrings(List names) { - List> list = StreamUtils - .zipWithIndex(names.stream()) - .filter(i -> i.getIndex() % 2 == 0) - .collect(Collectors.toList()); + List> list = StreamUtils.zipWithIndex(names.stream()) + .filter(i -> i.getIndex() % 2 == 0) + .collect(Collectors.toList()); return list; } public static List> getOddIndexedStrings(List names) { - List> list = StreamUtils - .zipWithIndex(names.stream()) - .filter(i -> i.getIndex() % 2 == 1) - .collect(Collectors.toList()); + List> list = StreamUtils.zipWithIndex(names.stream()) + .filter(i -> i.getIndex() % 2 == 1) + .collect(Collectors.toList()); return list; } public static List getOddIndexedStrings(String[] names) { - List oddIndexedNames = IntStream - .range(0, names.length) - .filter(i -> i % 2 == 1) - .mapToObj(i -> names[i]) - .collect(Collectors.toList()); + List oddIndexedNames = IntStream.range(0, names.length) + .filter(i -> i % 2 == 1) + .mapToObj(i -> names[i]) + .collect(Collectors.toList()); return oddIndexedNames; } public static List getOddIndexedStringsVersionTwo(String[] names) { - List> tuples = Stream - .of(names) - .zipWithIndex() - .filter(tuple -> tuple._2 % 2 == 1) - .toJavaList(); - List oddIndexedNames = new ArrayList(); - tuples.forEach(tuple -> { - oddIndexedNames.add(tuple._1); - }); + List oddIndexedNames = Stream.of(names) + .zipWithIndex() + .filter(tuple -> tuple._2 % 2 == 1) + .map(tuple -> tuple._1) + .toJavaList(); return oddIndexedNames; } + } \ No newline at end of file From 7262427421efd8e60dcad373f73bdda39d279625 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sat, 2 Sep 2017 10:43:10 +0200 Subject: [PATCH 32/73] Version update 9 02 (#2547) * Update Hazelcast * Update Hbase * Update Immutables * Update Lombok --- hazelcast/pom.xml | 4 ++-- hbase/pom.xml | 2 +- immutables/pom.xml | 3 +-- json-path/pom.xml | 1 - lombok/pom.xml | 4 +--- 5 files changed, 5 insertions(+), 9 deletions(-) diff --git a/hazelcast/pom.xml b/hazelcast/pom.xml index 5b467af655..2811bf8b12 100644 --- a/hazelcast/pom.xml +++ b/hazelcast/pom.xml @@ -22,7 +22,7 @@ com.hazelcast hazelcast-client - 3.7.2 + ${hazelcast.version} @@ -39,7 +39,7 @@ - 3.7.4 + 3.8.4 \ No newline at end of file diff --git a/hbase/pom.xml b/hbase/pom.xml index 3f5456777e..5fe47fcdc7 100644 --- a/hbase/pom.xml +++ b/hbase/pom.xml @@ -31,7 +31,7 @@ - 1.3.0 + 1.3.1 diff --git a/immutables/pom.xml b/immutables/pom.xml index 9b623c85e7..884ebc0c61 100644 --- a/immutables/pom.xml +++ b/immutables/pom.xml @@ -3,7 +3,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - com.baeldung immutables 1.0.0-SNAPSHOT @@ -34,7 +33,7 @@ - 2.3.10 + 2.5.6 3.6.1 0.9.6 diff --git a/json-path/pom.xml b/json-path/pom.xml index 8384ba68ed..0f8ff3bd31 100644 --- a/json-path/pom.xml +++ b/json-path/pom.xml @@ -1,7 +1,6 @@ 4.0.0 - com.baeldung json-path 0.0.1-SNAPSHOT json-path diff --git a/lombok/pom.xml b/lombok/pom.xml index 472516de4d..bea05b38f3 100644 --- a/lombok/pom.xml +++ b/lombok/pom.xml @@ -6,8 +6,6 @@ 4.0.0 lombok - - com.baeldung lombok 0.1-SNAPSHOT @@ -81,7 +79,7 @@ UTF-8 - 1.16.12 + 1.16.18 1.0.0.Final From 01529c3202c9750a900380eb1fc2f289182fb1a0 Mon Sep 17 00:00:00 2001 From: alincojanu Date: Sat, 2 Sep 2017 20:38:04 +0300 Subject: [PATCH 33/73] sneaky throws (#2505) * alin.cojanu25@gmail.com * add junit tests * core-java - sneaky throws * delete project spring_sample_annotations and spring_sample_xml ->not intended for this article --- .../baeldung/sneakythrows/SneakyRunnable.java | 23 +++++++++++++++++ .../baeldung/sneakythrows/SneakyThrows.java | 25 +++++++++++++++++++ .../sneakythrows/SneakyRunnableTest.java | 17 +++++++++++++ .../sneakythrows/SneakyThrowsTest.java | 18 +++++++++++++ 4 files changed, 83 insertions(+) create mode 100644 core-java/src/main/java/com/baeldung/sneakythrows/SneakyRunnable.java create mode 100644 core-java/src/main/java/com/baeldung/sneakythrows/SneakyThrows.java create mode 100644 core-java/src/test/java/com/baeldung/sneakythrows/SneakyRunnableTest.java create mode 100644 core-java/src/test/java/com/baeldung/sneakythrows/SneakyThrowsTest.java diff --git a/core-java/src/main/java/com/baeldung/sneakythrows/SneakyRunnable.java b/core-java/src/main/java/com/baeldung/sneakythrows/SneakyRunnable.java new file mode 100644 index 0000000000..88a8696053 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/sneakythrows/SneakyRunnable.java @@ -0,0 +1,23 @@ +package com.baeldung.sneakythrows; + +import lombok.SneakyThrows; + +public class SneakyRunnable implements Runnable { + + @SneakyThrows + public void run() { + try { + throw new InterruptedException(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + public static void main(String[] args) { + try { + new SneakyRunnable().run(); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/core-java/src/main/java/com/baeldung/sneakythrows/SneakyThrows.java b/core-java/src/main/java/com/baeldung/sneakythrows/SneakyThrows.java new file mode 100644 index 0000000000..847aaa7249 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/sneakythrows/SneakyThrows.java @@ -0,0 +1,25 @@ +package com.baeldung.sneakythrows; + +import java.io.IOException; + +public class SneakyThrows { + + + public static void sneakyThrow(Throwable e) throws E { + throw (E) e; + } + + public static void throwsSneakyIOException() { + sneakyThrow(new IOException("sneaky")); + } + + + public static void main(String[] args) { + try { + throwsSneakyIOException(); + } catch (Exception ex) { + ex.printStackTrace(); + } + + } +} diff --git a/core-java/src/test/java/com/baeldung/sneakythrows/SneakyRunnableTest.java b/core-java/src/test/java/com/baeldung/sneakythrows/SneakyRunnableTest.java new file mode 100644 index 0000000000..cd31f545b9 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/sneakythrows/SneakyRunnableTest.java @@ -0,0 +1,17 @@ +package com.baeldung.sneakythrows; + +import org.junit.Test; + +import static junit.framework.TestCase.assertEquals; + +public class SneakyRunnableTest { + + @Test + public void whenCallSneakyRunnableMethod_thenThrowException() { + try { + new SneakyRunnable().run(); + } catch (Exception e) { + assertEquals(InterruptedException.class, e.getStackTrace()); + } + } +} diff --git a/core-java/src/test/java/com/baeldung/sneakythrows/SneakyThrowsTest.java b/core-java/src/test/java/com/baeldung/sneakythrows/SneakyThrowsTest.java new file mode 100644 index 0000000000..e033ca062d --- /dev/null +++ b/core-java/src/test/java/com/baeldung/sneakythrows/SneakyThrowsTest.java @@ -0,0 +1,18 @@ +package com.baeldung.sneakythrows; + +import org.junit.Test; + +import static junit.framework.TestCase.assertEquals; + +public class SneakyThrowsTest { + + @Test + public void whenCallSneakyMethod_thenThrowSneakyException() { + try { + SneakyThrows.throwsSneakyIOException(); + } catch (Exception ex) { + assertEquals("sneaky", ex.getMessage().toString()); + } + } + +} From 3c4faf999dfca69eff9f1c00045104e91af723aa Mon Sep 17 00:00:00 2001 From: Eric Goebelbecker Date: Sat, 2 Sep 2017 19:08:39 -0400 Subject: [PATCH 34/73] BAEL-1018 - Introduction to MBassador (#2551) --- libraries/pom.xml | 5 + .../com/baeldung/mbassador/AckMessage.java | 5 + .../java/com/baeldung/mbassador/Message.java | 5 + .../com/baeldung/mbassador/RejectMessage.java | 15 +++ .../mbassador/MBassadorAsyncDispatchTest.java | 37 +++++++ .../MBassadorAsyncInvocationTest.java | 47 ++++++++ .../mbassador/MBassadorBasicTest.java | 69 ++++++++++++ .../mbassador/MBassadorConfigurationTest.java | 90 +++++++++++++++ .../mbassador/MBassadorFilterTest.java | 103 ++++++++++++++++++ .../mbassador/MBassadorHierarchyTest.java | 61 +++++++++++ 10 files changed, 437 insertions(+) create mode 100644 libraries/src/main/java/com/baeldung/mbassador/AckMessage.java create mode 100644 libraries/src/main/java/com/baeldung/mbassador/Message.java create mode 100644 libraries/src/main/java/com/baeldung/mbassador/RejectMessage.java create mode 100644 libraries/src/test/java/com/baeldung/mbassador/MBassadorAsyncDispatchTest.java create mode 100644 libraries/src/test/java/com/baeldung/mbassador/MBassadorAsyncInvocationTest.java create mode 100644 libraries/src/test/java/com/baeldung/mbassador/MBassadorBasicTest.java create mode 100644 libraries/src/test/java/com/baeldung/mbassador/MBassadorConfigurationTest.java create mode 100644 libraries/src/test/java/com/baeldung/mbassador/MBassadorFilterTest.java create mode 100644 libraries/src/test/java/com/baeldung/mbassador/MBassadorHierarchyTest.java diff --git a/libraries/pom.xml b/libraries/pom.xml index 834c496116..a2c5c0d726 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -519,6 +519,11 @@ yarg 2.0.4 + + net.engio + mbassador + 1.3.1 + diff --git a/libraries/src/main/java/com/baeldung/mbassador/AckMessage.java b/libraries/src/main/java/com/baeldung/mbassador/AckMessage.java new file mode 100644 index 0000000000..a42b24b605 --- /dev/null +++ b/libraries/src/main/java/com/baeldung/mbassador/AckMessage.java @@ -0,0 +1,5 @@ +package com.baeldung.mbassador; + +public class AckMessage extends Message { + +} diff --git a/libraries/src/main/java/com/baeldung/mbassador/Message.java b/libraries/src/main/java/com/baeldung/mbassador/Message.java new file mode 100644 index 0000000000..bb773dd1a0 --- /dev/null +++ b/libraries/src/main/java/com/baeldung/mbassador/Message.java @@ -0,0 +1,5 @@ +package com.baeldung.mbassador; + +public class Message { + +} diff --git a/libraries/src/main/java/com/baeldung/mbassador/RejectMessage.java b/libraries/src/main/java/com/baeldung/mbassador/RejectMessage.java new file mode 100644 index 0000000000..f569002edd --- /dev/null +++ b/libraries/src/main/java/com/baeldung/mbassador/RejectMessage.java @@ -0,0 +1,15 @@ +package com.baeldung.mbassador; + +public class RejectMessage extends Message { + + int code; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + +} diff --git a/libraries/src/test/java/com/baeldung/mbassador/MBassadorAsyncDispatchTest.java b/libraries/src/test/java/com/baeldung/mbassador/MBassadorAsyncDispatchTest.java new file mode 100644 index 0000000000..a0648aa4e1 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/mbassador/MBassadorAsyncDispatchTest.java @@ -0,0 +1,37 @@ +package com.baeldung.mbassador; + +import net.engio.mbassy.bus.MBassador; +import net.engio.mbassy.listener.Handler; +import org.junit.Before; +import org.junit.Test; + +import java.util.concurrent.atomic.AtomicBoolean; + +import static org.awaitility.Awaitility.await; +import static org.hamcrest.Matchers.equalTo; +import static org.junit.Assert.assertNotNull; + +public class MBassadorAsyncDispatchTest { + + private MBassador dispatcher = new MBassador(); + private String testString; + private AtomicBoolean ready = new AtomicBoolean(false); + + @Before + public void prepareTests() { + dispatcher.subscribe(this); + } + + @Test + public void whenAsyncDispatched_thenMessageReceived() { + dispatcher.post("foobar").asynchronously(); + await().untilAtomic(ready, equalTo(true)); + assertNotNull(testString); + } + + @Handler + public void handleStringMessage(String message) { + this.testString = message; + ready.set(true); + } +} diff --git a/libraries/src/test/java/com/baeldung/mbassador/MBassadorAsyncInvocationTest.java b/libraries/src/test/java/com/baeldung/mbassador/MBassadorAsyncInvocationTest.java new file mode 100644 index 0000000000..d20c887309 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/mbassador/MBassadorAsyncInvocationTest.java @@ -0,0 +1,47 @@ +package com.baeldung.mbassador; + +import net.engio.mbassy.bus.MBassador; +import net.engio.mbassy.listener.Handler; +import net.engio.mbassy.listener.Invoke; +import org.junit.Before; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.concurrent.atomic.AtomicBoolean; + +import static org.awaitility.Awaitility.await; +import static org.hamcrest.Matchers.equalTo; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertFalse; + +public class MBassadorAsyncInvocationTest { + + private MBassador dispatcher = new MBassador(); + + private Integer testInteger; + private String invocationThreadName; + private AtomicBoolean ready = new AtomicBoolean(false); + + @Before + public void prepareTests() { + dispatcher.subscribe(this); + } + + @Test + public void whenHandlerAsync_thenHandled() { + + dispatcher.post(42).now(); + + await().untilAtomic(ready, equalTo(true)); + assertNotNull(testInteger); + assertFalse(Thread.currentThread().getName().equals(invocationThreadName)); + } + + @Handler(delivery = Invoke.Asynchronously) + public void handleIntegerMessage(Integer message) { + this.invocationThreadName = Thread.currentThread().getName(); + this.testInteger = message; + ready.set(true); + } +} diff --git a/libraries/src/test/java/com/baeldung/mbassador/MBassadorBasicTest.java b/libraries/src/test/java/com/baeldung/mbassador/MBassadorBasicTest.java new file mode 100644 index 0000000000..04f6272412 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/mbassador/MBassadorBasicTest.java @@ -0,0 +1,69 @@ +package com.baeldung.mbassador; + +import net.engio.mbassy.bus.MBassador; +import net.engio.mbassy.bus.common.DeadMessage; +import net.engio.mbassy.listener.Handler; +import org.junit.Before; +import org.junit.Test; + +import static junit.framework.TestCase.assertTrue; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; + +public class MBassadorBasicTest { + + private MBassador dispatcher = new MBassador(); + + private String messageString; + private Integer messageInteger; + private Object deadEvent; + + @Before + public void prepareTests() { + dispatcher.subscribe(this); + } + + @Test + public void whenStringDispatched_thenHandleString() { + dispatcher.post("TestString").now(); + assertNotNull(messageString); + assertEquals("TestString", messageString); + } + + @Test + public void whenIntegerDispatched_thenHandleInteger() { + dispatcher.post(42).now(); + assertNull(messageString); + assertNotNull(messageInteger); + assertTrue(42 == messageInteger); + } + + @Test + public void whenLongDispatched_thenDeadEvent() { + dispatcher.post(42L).now(); + assertNull(messageString); + assertNull(messageInteger); + assertNotNull(deadEvent); + assertTrue(deadEvent instanceof Long); + assertTrue(42L == (Long) deadEvent); + } + + @Handler + public void handleString(String message) { + messageString = message; + } + + @Handler + public void handleInteger(Integer message) { + messageInteger = message; + } + + @Handler + public void handleDeadEvent(DeadMessage message) { + + deadEvent = message.getMessage(); + + } + +} diff --git a/libraries/src/test/java/com/baeldung/mbassador/MBassadorConfigurationTest.java b/libraries/src/test/java/com/baeldung/mbassador/MBassadorConfigurationTest.java new file mode 100644 index 0000000000..d1e711999c --- /dev/null +++ b/libraries/src/test/java/com/baeldung/mbassador/MBassadorConfigurationTest.java @@ -0,0 +1,90 @@ +package com.baeldung.mbassador; + +import net.engio.mbassy.bus.MBassador; +import net.engio.mbassy.bus.error.IPublicationErrorHandler; +import net.engio.mbassy.bus.error.PublicationError; +import net.engio.mbassy.listener.Handler; +import org.junit.Before; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.*; + +import static junit.framework.TestCase.assertTrue; +import static org.junit.Assert.*; + +public class MBassadorConfigurationTest implements IPublicationErrorHandler { + + private MBassador dispatcher; + private String messageString; + private Throwable errorCause; + + private LinkedList list = new LinkedList<>(); + + @Before + public void prepareTests() { + dispatcher = new MBassador(this); + dispatcher.subscribe(this); + } + + @Test + public void whenErrorOccurs_thenErrorHandler() { + dispatcher.post("Error").now(); + assertNull(messageString); + assertNotNull(errorCause); + } + + @Test + public void whenNoErrorOccurs_thenStringHandler() { + dispatcher.post("Errol").now(); + assertNull(errorCause); + assertNotNull(messageString); + } + + @Test + public void whenRejectDispatched_thenPriorityHandled() { + dispatcher.post(new RejectMessage()).now(); + + // Items should pop() off in reverse priority order + assertTrue(1 == list.pop()); + assertTrue(3 == list.pop()); + assertTrue(5 == list.pop()); + } + + @Handler + public void handleString(String message) { + + if ("Error".equals(message)) { + throw new Error("BOOM"); + } + + messageString = message; + + } + + @Override + public void handleError(PublicationError error) { + errorCause = error.getCause().getCause(); + } + + @Handler(priority = 5) + public void handleRejectMessage5(RejectMessage rejectMessage) { + list.push(5); + } + + @Handler(priority = 3) + public void handleRejectMessage3(RejectMessage rejectMessage) { + list.push(3); + } + + @Handler(priority = 2, rejectSubtypes = true) + public void handleMessage(Message rejectMessage) { + list.push(3); + } + + @Handler(priority = 0) + public void handleRejectMessage0(RejectMessage rejectMessage) { + list.push(1); + } +} diff --git a/libraries/src/test/java/com/baeldung/mbassador/MBassadorFilterTest.java b/libraries/src/test/java/com/baeldung/mbassador/MBassadorFilterTest.java new file mode 100644 index 0000000000..e90ae15d3d --- /dev/null +++ b/libraries/src/test/java/com/baeldung/mbassador/MBassadorFilterTest.java @@ -0,0 +1,103 @@ +package com.baeldung.mbassador; + +import net.engio.mbassy.bus.MBassador; +import net.engio.mbassy.bus.common.DeadMessage; +import net.engio.mbassy.bus.common.FilteredMessage; +import net.engio.mbassy.listener.Filter; +import net.engio.mbassy.listener.Filters; +import net.engio.mbassy.listener.Handler; +import org.junit.Before; +import org.junit.Test; + +import static junit.framework.TestCase.assertTrue; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; + +public class MBassadorFilterTest { + + private MBassador dispatcher = new MBassador(); + + private Message baseMessage; + private Message subMessage; + private String testString; + private FilteredMessage filteredMessage; + private RejectMessage rejectMessage; + private DeadMessage deadMessage; + + @Before + public void prepareTests() { + dispatcher.subscribe(this); + } + + @Test + public void whenMessageDispatched_thenMessageFiltered() { + dispatcher.post(new Message()).now(); + assertNotNull(baseMessage); + assertNull(subMessage); + } + + @Test + public void whenRejectDispatched_thenRejectFiltered() { + dispatcher.post(new RejectMessage()).now(); + assertNotNull(subMessage); + assertNull(baseMessage); + } + + @Test + public void whenShortStringDispatched_thenStringHandled() { + dispatcher.post("foobar").now(); + assertNotNull(testString); + } + + @Test + public void whenLongStringDispatched_thenStringFiltered() { + dispatcher.post("foobar!").now(); + assertNull(testString); + // filtered only populated when messages does not pass any filters + assertNotNull(filteredMessage); + assertTrue(filteredMessage.getMessage() instanceof String); + assertNull(deadMessage); + } + + @Test + public void whenWrongRejectDispatched_thenRejectFiltered() { + RejectMessage testReject = new RejectMessage(); + testReject.setCode(-1); + dispatcher.post(testReject).now(); + assertNull(rejectMessage); + assertNotNull(subMessage); + assertEquals(-1, ((RejectMessage) subMessage).getCode()); + } + + @Handler(filters = { @Filter(Filters.RejectSubtypes.class) }) + public void handleBaseMessage(Message message) { + this.baseMessage = message; + } + + @Handler(filters = { @Filter(Filters.SubtypesOnly.class) }) + public void handleSubMessage(Message message) { + this.subMessage = message; + } + + @Handler(condition = "msg.length() < 7") + public void handleStringMessage(String message) { + this.testString = message; + } + + @Handler(condition = "msg.getCode() != -1") + public void handleRejectMessage(RejectMessage rejectMessage) { + this.rejectMessage = rejectMessage; + } + + @Handler + public void handleFilterMessage(FilteredMessage message) { + this.filteredMessage = message; + } + + @Handler + public void handleDeadMessage(DeadMessage deadMessage) { + this.deadMessage = deadMessage; + } + +} diff --git a/libraries/src/test/java/com/baeldung/mbassador/MBassadorHierarchyTest.java b/libraries/src/test/java/com/baeldung/mbassador/MBassadorHierarchyTest.java new file mode 100644 index 0000000000..87d6a621a4 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/mbassador/MBassadorHierarchyTest.java @@ -0,0 +1,61 @@ +package com.baeldung.mbassador; + +import net.engio.mbassy.bus.MBassador; +import net.engio.mbassy.listener.Handler; +import org.junit.Before; +import org.junit.Test; + +import static org.junit.Assert.*; + +public class MBassadorHierarchyTest { + + private MBassador dispatcher = new MBassador(); + + private Message message; + private AckMessage ackMessage; + private RejectMessage rejectMessage; + + @Before + public void prepareTests() { + dispatcher.subscribe(this); + } + + @Test + public void whenMessageDispatched_thenMessageHandled() { + dispatcher.post(new Message()).now(); + assertNotNull(message); + assertNull(ackMessage); + assertNull(rejectMessage); + } + + @Test + public void whenRejectDispatched_thenMessageAndRejectHandled() { + dispatcher.post(new RejectMessage()).now(); + assertNotNull(message); + assertNotNull(rejectMessage); + assertNull(ackMessage); + } + + @Test + public void whenAckDispatched_thenMessageAndAckHandled() { + dispatcher.post(new AckMessage()).now(); + assertNotNull(message); + assertNotNull(ackMessage); + assertNull(rejectMessage); + } + + @Handler + public void handleMessage(Message message) { + this.message = message; + } + + @Handler + public void handleRejectMessage(RejectMessage message) { + rejectMessage = message; + } + + @Handler + public void handleAckMessage(AckMessage message) { + ackMessage = message; + } +} From 159f91880602791a5570c1c1a31732d24187956e Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sun, 3 Sep 2017 07:29:50 +0200 Subject: [PATCH 35/73] Refactor mustache --- .../SpringMustacheApplication.java | 6 ++--- .../controller/ArticleController.java | 27 ++++++++----------- 2 files changed, 13 insertions(+), 20 deletions(-) diff --git a/spring-mustache/src/main/java/com/baeldung/springmustache/SpringMustacheApplication.java b/spring-mustache/src/main/java/com/baeldung/springmustache/SpringMustacheApplication.java index addd1fa088..8cdf89d08a 100644 --- a/spring-mustache/src/main/java/com/baeldung/springmustache/SpringMustacheApplication.java +++ b/spring-mustache/src/main/java/com/baeldung/springmustache/SpringMustacheApplication.java @@ -1,5 +1,6 @@ package com.baeldung.springmustache; +import com.samskivert.mustache.Mustache; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.mustache.MustacheEnvironmentCollector; @@ -7,8 +8,6 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.core.env.Environment; -import com.samskivert.mustache.Mustache; - @SpringBootApplication @ComponentScan(basePackages = {"com.baeldung"}) public class SpringMustacheApplication { @@ -23,11 +22,10 @@ public class SpringMustacheApplication { MustacheEnvironmentCollector collector = new MustacheEnvironmentCollector(); collector.setEnvironment(environment); - Mustache.Compiler compiler = Mustache.compiler() + return Mustache.compiler() .defaultValue("Some Default Value") .withLoader(templateLoader) .withCollector(collector); - return compiler; } } diff --git a/spring-mustache/src/main/java/com/baeldung/springmustache/controller/ArticleController.java b/spring-mustache/src/main/java/com/baeldung/springmustache/controller/ArticleController.java index b24625e7d5..5fc34c9f07 100644 --- a/spring-mustache/src/main/java/com/baeldung/springmustache/controller/ArticleController.java +++ b/spring-mustache/src/main/java/com/baeldung/springmustache/controller/ArticleController.java @@ -1,31 +1,26 @@ package com.baeldung.springmustache.controller; -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.TreeMap; -import java.util.stream.IntStream; - +import com.baeldung.springmustache.model.Article; import org.fluttercode.datafactory.impl.DataFactory; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.servlet.ModelAndView; -import com.baeldung.springmustache.model.Article; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.IntStream; @Controller public class ArticleController { - @RequestMapping("/article") + @GetMapping("/article") public ModelAndView displayArticle(Map model) { - List
articles = new LinkedList<>(); - IntStream.range(0, 10) - .forEach(count -> { - articles.add(generateArticle("Article Title " + count)); - }); + List
articles = IntStream.range(0, 10) + .mapToObj(i -> generateArticle("Article Title " + i)) + .collect(Collectors.toList()); Map modelMap = new HashMap<>(); modelMap.put("articles", articles); From b6830cc73618e53568995124beaedef4c59d8d52 Mon Sep 17 00:00:00 2001 From: Seun Matt Date: Sun, 3 Sep 2017 08:49:09 +0100 Subject: [PATCH 36/73] Updated Vavr Collections Example Code (#2550) * added updated example codes * updated example code StringToCharStream * deleted StringToCharStream.java locally * removed redundant file * added code for apache commons collection SetUtils * refactored example code * added example code for bytebuddy * added example code for PCollections * update pom * refactored tests for PCollections * spring security xml config * spring security xml config * remove redundant comment * example code for apache-shiro * updated example code for Vavr Collections * updated Vavr's Collection example * updated Vavr Collection file * updated example code for Apache Shiro * updated Vavr Collections example --- .../collections/CollectionAPIUnitTest.java | 67 ++++++++++++++++--- 1 file changed, 58 insertions(+), 9 deletions(-) diff --git a/vavr/src/test/java/com/baeldung/vavr/collections/CollectionAPIUnitTest.java b/vavr/src/test/java/com/baeldung/vavr/collections/CollectionAPIUnitTest.java index cfc789a837..b4e7628e84 100644 --- a/vavr/src/test/java/com/baeldung/vavr/collections/CollectionAPIUnitTest.java +++ b/vavr/src/test/java/com/baeldung/vavr/collections/CollectionAPIUnitTest.java @@ -2,8 +2,9 @@ package com.baeldung.vavr.collections; import io.vavr.Tuple; import io.vavr.Tuple2; -import io.vavr.collection.Array; -import io.vavr.collection.CharSeq; +import io.vavr.collection.*; +import io.vavr.collection.BitSet; +import io.vavr.collection.HashMap; import io.vavr.collection.HashSet; import io.vavr.collection.Iterator; import io.vavr.collection.List; @@ -12,13 +13,12 @@ import io.vavr.collection.Queue; import io.vavr.collection.Set; import io.vavr.collection.SortedMap; import io.vavr.collection.SortedSet; -import io.vavr.collection.Stream; import io.vavr.collection.TreeMap; import io.vavr.collection.TreeSet; import io.vavr.collection.Vector; import org.junit.Test; -import java.util.Comparator; +import java.util.*; import java.util.stream.Collectors; import java.util.stream.IntStream; @@ -124,6 +124,9 @@ public class CollectionAPIUnitTest { Queue tailQueue = result._2; assertFalse(tailQueue.contains(secondQueue.get(0))); + + Queue> queue1 = queue.combinations(2); + assertEquals(queue1.get(2).toCharSeq(), CharSeq.of("23")); } @Test @@ -153,17 +156,23 @@ public class CollectionAPIUnitTest { @Test public void givenArray_whenQueried_thenCorrect() { + + Array rArray = Array.range(1, 5); + assertFalse(rArray.contains(5)); + + Array rArray2 = Array.rangeClosed(1, 5); + assertTrue(rArray2.contains(5)); + + Array rArray3 = Array.rangeClosedBy(1,6,2); + assertEquals(rArray3.size(), 3); + Array intArray = Array.of(1, 2, 3); Array newArray = intArray.removeAt(1); - - assertEquals(3, intArray.size()); assertEquals(2, newArray.size()); assertEquals(3, newArray.get(1).intValue()); Array array2 = intArray.replace(1, 5); assertEquals(array2.get(0).intValue(), 5); - - } @Test @@ -199,6 +208,15 @@ public class CollectionAPIUnitTest { assertEquals(3, set.size()); assertEquals(4, newSet.size()); assertTrue(newSet.contains("Yellow")); + + HashSet set0 = HashSet.rangeClosed(1,5); + HashSet set1 = HashSet.rangeClosed(3, 6); + + assertEquals(set0.union(set1), HashSet.rangeClosed(1,6)); + assertEquals(set0.diff(set1), HashSet.rangeClosed(1,2)); + assertEquals(set0.intersect(set1), HashSet.rangeClosed(3,5)); + + } @Test @@ -222,13 +240,39 @@ public class CollectionAPIUnitTest { } @Test - public void givenMap_whenIterated_thenCorrect() { + public void giveBitSet_whenApiMethods_thenCorrect() { + + BitSet bitSet = BitSet.of(1,2,3,4,5,6,7,8); + + BitSet bitSet1 = bitSet.takeUntil(i -> i > 4); + assertEquals(bitSet1.size(), 4); + + } + + @Test + public void givenMap_whenMapApi_thenCorrect() { Map> map = List.rangeClosed(0, 10) .groupBy(i -> i % 2); assertEquals(2, map.size()); assertEquals(6, map.get(0).get().size()); assertEquals(5, map.get(1).get().size()); + + Map map1 + = HashMap.of("key1", "val1", "key2", "val2", "key3", "val3"); + + Map fMap + = map1.filterKeys(k -> k.contains("1") || k.contains("2")); + assertFalse(fMap.containsKey("key3")); + + Map fMap2 + = map1.filterValues(v -> v.contains("3")); + assertEquals(fMap2.size(), 1); + assertTrue(fMap2.containsValue("val3")); + + Map map2 = map1.map( + (k, v) -> Tuple.of(k, Integer.valueOf(v.charAt(v.length() - 1) + "") )); + assertEquals(map2.get("key1").get().intValue(), 1); } @Test @@ -238,6 +282,11 @@ public class CollectionAPIUnitTest { assertEquals(1, map.keySet().toJavaArray()[0]); assertEquals("Four", map.get(4).get()); + + TreeMap treeMap2 = + TreeMap.of(Comparator.reverseOrder(), 3,"three", 6, "six", 1, "one"); + assertEquals(treeMap2.keySet().mkString(), "631"); + } @Test From 4baaf9f984e3d99d62b324b7fe914cce86767493 Mon Sep 17 00:00:00 2001 From: Adam InTae Gerard Date: Sun, 3 Sep 2017 00:56:40 -0700 Subject: [PATCH 37/73] BAEL-1085 (#2428) * Simple Boot REST application and example * BAEL-509 - Removed extra duplicate ant matcher * Example and Unit Tests * documentation * BAEL-1085 - changes per PR code review and document review - altered integration to unit test - all's good * BAEL-1085 - Renamed unit tests and added both to pom.xml * IntelliJ formatter * REVERT - Had removed a duplicate ant matcher from BAEL-509 - this was the incorrect process - reverting now, article has been corrected, but will issue a seperate PR for this --- spring-rest-angular/README.md | 4 + spring-rest-angular/pom.xml | 6 +- .../controllers/ExamplePostController.java | 38 +++ .../baeldung/controllers/ViewController.java | 14 + .../com/baeldung/services/ExampleService.java | 12 + .../java/com/baeldung/transfer/LoginForm.java | 25 ++ .../baeldung/transfer/ResponseTransfer.java | 18 + .../src/main/webapp/WEB-INF/jsp/index.jsp | 64 ++++ .../src/main/webapp/resources/scripts/app.js | 3 + .../webapp/resources/scripts/controllers.js | 27 ++ .../main/webapp/resources/scripts/factory.js | 17 + .../main/webapp/resources/styles/style.css | 0 .../resources/vendor/angular/angular.min.js | 316 ++++++++++++++++++ .../vendor/angular/angular.min.js.map | 8 + .../resources/vendor/jquery/jquery.min.js | 4 + .../ExamplePostControllerRequestUnitTest.java | 56 ++++ ...ExamplePostControllerResponseUnitTest.java | 58 ++++ spring-rest/pom.xml | 1 - 18 files changed, 668 insertions(+), 3 deletions(-) create mode 100644 spring-rest-angular/README.md create mode 100644 spring-rest-angular/src/main/java/com/baeldung/controllers/ExamplePostController.java create mode 100644 spring-rest-angular/src/main/java/com/baeldung/controllers/ViewController.java create mode 100644 spring-rest-angular/src/main/java/com/baeldung/services/ExampleService.java create mode 100644 spring-rest-angular/src/main/java/com/baeldung/transfer/LoginForm.java create mode 100644 spring-rest-angular/src/main/java/com/baeldung/transfer/ResponseTransfer.java create mode 100644 spring-rest-angular/src/main/webapp/WEB-INF/jsp/index.jsp create mode 100644 spring-rest-angular/src/main/webapp/resources/scripts/app.js create mode 100644 spring-rest-angular/src/main/webapp/resources/scripts/controllers.js create mode 100644 spring-rest-angular/src/main/webapp/resources/scripts/factory.js create mode 100644 spring-rest-angular/src/main/webapp/resources/styles/style.css create mode 100644 spring-rest-angular/src/main/webapp/resources/vendor/angular/angular.min.js create mode 100644 spring-rest-angular/src/main/webapp/resources/vendor/angular/angular.min.js.map create mode 100644 spring-rest-angular/src/main/webapp/resources/vendor/jquery/jquery.min.js create mode 100644 spring-rest-angular/src/test/java/com/baeldung/controllers/ExamplePostControllerRequestUnitTest.java create mode 100644 spring-rest-angular/src/test/java/com/baeldung/controllers/ExamplePostControllerResponseUnitTest.java diff --git a/spring-rest-angular/README.md b/spring-rest-angular/README.md new file mode 100644 index 0000000000..21e5b46922 --- /dev/null +++ b/spring-rest-angular/README.md @@ -0,0 +1,4 @@ +## Spring REST Angular Example Project + +### Relevant Articles: +- [RequestBody and ResponseBody Annotations](http://www.baeldung.com/requestbody-and-responsebody-annotations) diff --git a/spring-rest-angular/pom.xml b/spring-rest-angular/pom.xml index 06741bfd0c..0562e3ad58 100644 --- a/spring-rest-angular/pom.xml +++ b/spring-rest-angular/pom.xml @@ -1,7 +1,7 @@ + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" + xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 4.0.0 spring-rest-angular spring-rest-angular @@ -95,6 +95,7 @@ **/*IntegrationTest.java + **/*UnitTest.java @@ -113,6 +114,7 @@ 19.0 3.5 + org.baeldung.web.main.Application diff --git a/spring-rest-angular/src/main/java/com/baeldung/controllers/ExamplePostController.java b/spring-rest-angular/src/main/java/com/baeldung/controllers/ExamplePostController.java new file mode 100644 index 0000000000..93f96756b4 --- /dev/null +++ b/spring-rest-angular/src/main/java/com/baeldung/controllers/ExamplePostController.java @@ -0,0 +1,38 @@ +package com.baeldung.controllers; + +import com.baeldung.services.ExampleService; +import com.baeldung.transfer.ResponseTransfer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import com.baeldung.transfer.LoginForm; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +@Controller +@RequestMapping("/post") +public class ExamplePostController { + + private static Logger log = LoggerFactory.getLogger(ExamplePostController.class); + + @Autowired ExampleService exampleService; + + @PostMapping("/request") + public ResponseEntity postController(@RequestBody LoginForm loginForm) { + log.debug("POST received - serializing LoginForm: " + loginForm.getPassword() + " " + loginForm.getUsername()); + exampleService.fakeAuthenticate(loginForm); + return ResponseEntity.ok(HttpStatus.OK); + } + + @PostMapping("/response") + @ResponseBody + public ResponseTransfer postResponseController(@RequestBody LoginForm loginForm) { + log.debug("POST received - serializing LoginForm: " + loginForm.getPassword() + " " + loginForm.getUsername()); + return new ResponseTransfer("Thanks For Posting!!!"); + } +} \ No newline at end of file diff --git a/spring-rest-angular/src/main/java/com/baeldung/controllers/ViewController.java b/spring-rest-angular/src/main/java/com/baeldung/controllers/ViewController.java new file mode 100644 index 0000000000..8eab0ce6da --- /dev/null +++ b/spring-rest-angular/src/main/java/com/baeldung/controllers/ViewController.java @@ -0,0 +1,14 @@ +package com.baeldung.controllers; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; + +@Controller +public class ViewController { + + @GetMapping("/") + public String welcome() { + return "index"; + } + +} diff --git a/spring-rest-angular/src/main/java/com/baeldung/services/ExampleService.java b/spring-rest-angular/src/main/java/com/baeldung/services/ExampleService.java new file mode 100644 index 0000000000..48d98b41db --- /dev/null +++ b/spring-rest-angular/src/main/java/com/baeldung/services/ExampleService.java @@ -0,0 +1,12 @@ +package com.baeldung.services; + +import com.baeldung.transfer.LoginForm; +import org.springframework.stereotype.Service; + +@Service +public class ExampleService { + + public boolean fakeAuthenticate(LoginForm lf) { + return true; + } +} \ No newline at end of file diff --git a/spring-rest-angular/src/main/java/com/baeldung/transfer/LoginForm.java b/spring-rest-angular/src/main/java/com/baeldung/transfer/LoginForm.java new file mode 100644 index 0000000000..19c9b0a349 --- /dev/null +++ b/spring-rest-angular/src/main/java/com/baeldung/transfer/LoginForm.java @@ -0,0 +1,25 @@ +package com.baeldung.transfer; + +public class LoginForm { + private String username; + private String password; + + public LoginForm() { + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } +} \ No newline at end of file diff --git a/spring-rest-angular/src/main/java/com/baeldung/transfer/ResponseTransfer.java b/spring-rest-angular/src/main/java/com/baeldung/transfer/ResponseTransfer.java new file mode 100644 index 0000000000..d4fb282c1b --- /dev/null +++ b/spring-rest-angular/src/main/java/com/baeldung/transfer/ResponseTransfer.java @@ -0,0 +1,18 @@ +package com.baeldung.transfer; + +public class ResponseTransfer { + + private String text; + + public ResponseTransfer(String text) { + this.setText(text); + } + + public String getText() { + return text; + } + + public void setText(String text) { + this.text = text; + } +} \ No newline at end of file diff --git a/spring-rest-angular/src/main/webapp/WEB-INF/jsp/index.jsp b/spring-rest-angular/src/main/webapp/WEB-INF/jsp/index.jsp new file mode 100644 index 0000000000..f44034a849 --- /dev/null +++ b/spring-rest-angular/src/main/webapp/WEB-INF/jsp/index.jsp @@ -0,0 +1,64 @@ +<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %> +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" %> + + + + + Spring Secured Sockets + " rel="stylesheet"> + + + + + + + + + +

Welcome!

+
+
+

Request Body Controller POST Example

+
+ + + + + + + + + + + + +
User:
Password:
+ +
+
+
+ +
+

Response Body Controller POST Example

+
+ + + + + + + + + + + + +
User:
Password:
+ +
+
+

{response}

+
+ + \ No newline at end of file diff --git a/spring-rest-angular/src/main/webapp/resources/scripts/app.js b/spring-rest-angular/src/main/webapp/resources/scripts/app.js new file mode 100644 index 0000000000..0ff7421bfc --- /dev/null +++ b/spring-rest-angular/src/main/webapp/resources/scripts/app.js @@ -0,0 +1,3 @@ +'use strict'; + +var angularApp = angular.module('angularApp', ['ngRoute']); \ No newline at end of file diff --git a/spring-rest-angular/src/main/webapp/resources/scripts/controllers.js b/spring-rest-angular/src/main/webapp/resources/scripts/controllers.js new file mode 100644 index 0000000000..a9a7f41c2d --- /dev/null +++ b/spring-rest-angular/src/main/webapp/resources/scripts/controllers.js @@ -0,0 +1,27 @@ +angularApp + .controller('requestBody', function ($scope, Form) { + $scope.postForm = function (context) { + var userField = document.getElementById('userField'); + var passwordField = document.getElementById('passwordField'); + if (userField.value != '' && passwordField.value != '') { + Form.post(context, userField.value, + passwordField.value).then(function (v) { + + }); + } + }; + }) + + .controller('responseBody', function ($scope, Form) { + $scope.response = "RESPONSEBODY WILL SHOW HERE"; + $scope.postForm = function (context) { + var userField = document.getElementById('userField'); + var passwordField = document.getElementById('passwordField'); + if (userField.value != '' && passwordField.value != '') { + Form.post(context, userField.value, + passwordField.value).then(function (v) { + $scope.response = v; + }); + } + }; + }); \ No newline at end of file diff --git a/spring-rest-angular/src/main/webapp/resources/scripts/factory.js b/spring-rest-angular/src/main/webapp/resources/scripts/factory.js new file mode 100644 index 0000000000..df08e3ba8d --- /dev/null +++ b/spring-rest-angular/src/main/webapp/resources/scripts/factory.js @@ -0,0 +1,17 @@ +angularApp + .factory('Form', function ($http, $q) { + return { + post: function (context, username, password) { + var deferred = $q.defer(); + $http({ + method: 'POST', + url: context + '/authenticate', + headers: {'Content-Type': 'application/x-www-form-urlencoded'}, + data: $.param({username: username, password: password}) + }).then(function (response) { + deferred.resolve(response); + }); + return deferred.promise; + } + } + }); \ No newline at end of file diff --git a/spring-rest-angular/src/main/webapp/resources/styles/style.css b/spring-rest-angular/src/main/webapp/resources/styles/style.css new file mode 100644 index 0000000000..e69de29bb2 diff --git a/spring-rest-angular/src/main/webapp/resources/vendor/angular/angular.min.js b/spring-rest-angular/src/main/webapp/resources/vendor/angular/angular.min.js new file mode 100644 index 0000000000..aa62c75a39 --- /dev/null +++ b/spring-rest-angular/src/main/webapp/resources/vendor/angular/angular.min.js @@ -0,0 +1,316 @@ +/* + AngularJS v1.5.7 + (c) 2010-2016 Google, Inc. http://angularjs.org + License: MIT +*/ +(function(E){'use strict';function O(a){return function(){var b=arguments[0],d;d="["+(a?a+":":"")+b+"] http://errors.angularjs.org/1.5.7/"+(a?a+"/":"")+b;for(b=1;b").append(a).html();try{return a[0].nodeType===Na?M(d):d.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(a,b){return"<"+M(b)})}catch(c){return M(d)}}function zc(a){try{return decodeURIComponent(a)}catch(b){}}function Ac(a){var b={};r((a||"").split("&"),function(a){var c,e,f;a&&(e=a=a.replace(/\+/g,"%20"),c=a.indexOf("="), +-1!==c&&(e=a.substring(0,c),f=a.substring(c+1)),e=zc(e),x(e)&&(f=x(f)?zc(f):!0,sa.call(b,e)?J(b[e])?b[e].push(f):b[e]=[b[e],f]:b[e]=f))});return b}function Tb(a){var b=[];r(a,function(a,c){J(a)?r(a,function(a){b.push(ja(c,!0)+(!0===a?"":"="+ja(a,!0)))}):b.push(ja(c,!0)+(!0===a?"":"="+ja(a,!0)))});return b.length?b.join("&"):""}function qb(a){return ja(a,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function ja(a,b){return encodeURIComponent(a).replace(/%40/gi,"@").replace(/%3A/gi, +":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%20/g,b?"%20":"+")}function fe(a,b){var d,c,e=Oa.length;for(c=0;c/,">"));}b=b||[];b.unshift(["$provide",function(b){b.value("$rootElement",a)}]);d.debugInfoEnabled&&b.push(["$compileProvider",function(a){a.debugInfoEnabled(!0)}]);b.unshift("ng");c=db(b,d.strictDi);c.invoke(["$rootScope","$rootElement","$compile","$injector",function(a,b,d,c){a.$apply(function(){b.data("$injector",c);d(b)(a)})}]); +return c},e=/^NG_ENABLE_DEBUG_INFO!/,f=/^NG_DEFER_BOOTSTRAP!/;E&&e.test(E.name)&&(d.debugInfoEnabled=!0,E.name=E.name.replace(e,""));if(E&&!f.test(E.name))return c();E.name=E.name.replace(f,"");ea.resumeBootstrap=function(a){r(a,function(a){b.push(a)});return c()};z(ea.resumeDeferredBootstrap)&&ea.resumeDeferredBootstrap()}function he(){E.name="NG_ENABLE_DEBUG_INFO!"+E.name;E.location.reload()}function ie(a){a=ea.element(a).injector();if(!a)throw za("test");return a.get("$$testability")}function Cc(a, +b){b=b||"_";return a.replace(je,function(a,c){return(c?b:"")+a.toLowerCase()})}function ke(){var a;if(!Dc){var b=rb();(pa=w(b)?E.jQuery:b?E[b]:void 0)&&pa.fn.on?(B=pa,R(pa.fn,{scope:Pa.scope,isolateScope:Pa.isolateScope,controller:Pa.controller,injector:Pa.injector,inheritedData:Pa.inheritedData}),a=pa.cleanData,pa.cleanData=function(b){for(var c,e=0,f;null!=(f=b[e]);e++)(c=pa._data(f,"events"))&&c.$destroy&&pa(f).triggerHandler("$destroy");a(b)}):B=U;ea.element=B;Dc=!0}}function sb(a,b,d){if(!a)throw za("areq", +b||"?",d||"required");return a}function Qa(a,b,d){d&&J(a)&&(a=a[a.length-1]);sb(z(a),b,"not a function, got "+(a&&"object"===typeof a?a.constructor.name||"Object":typeof a));return a}function Ra(a,b){if("hasOwnProperty"===a)throw za("badname",b);}function Ec(a,b,d){if(!b)return a;b=b.split(".");for(var c,e=a,f=b.length,g=0;g")+c[2];for(c=c[0];c--;)d=d.lastChild;f=ab(f,d.childNodes);d=e.firstChild;d.textContent=""}else f.push(b.createTextNode(a));e.textContent="";e.innerHTML="";r(f,function(a){e.appendChild(a)}); +return e}function Pc(a,b){var d=a.parentNode;d&&d.replaceChild(b,a);b.appendChild(a)}function U(a){if(a instanceof U)return a;var b;F(a)&&(a=W(a),b=!0);if(!(this instanceof U)){if(b&&"<"!=a.charAt(0))throw Wb("nosel");return new U(a)}if(b){b=E.document;var d;a=(d=Of.exec(a))?[b.createElement(d[1])]:(d=Oc(a,b))?d.childNodes:[]}Qc(this,a)}function Xb(a){return a.cloneNode(!0)}function wb(a,b){b||fb(a);if(a.querySelectorAll)for(var d=a.querySelectorAll("*"),c=0,e=d.length;c=Ba?!1:"function"===typeof a&&/^(?:class\s|constructor\()/.test(Function.prototype.toString.call(a)+" ");return d?(c.unshift(null),new (Function.prototype.bind.apply(a,c))):a.apply(b,c)},instantiate:function(a,b,c){var d=J(a)?a[a.length-1]:a;a=e(a,b,c);a.unshift(null);return new (Function.prototype.bind.apply(d, +a))},get:d,annotate:db.$$annotate,has:function(b){return n.hasOwnProperty(b+"Provider")||a.hasOwnProperty(b)}}}b=!0===b;var k={},l=[],m=new Sa([],!0),n={$provide:{provider:d(c),factory:d(f),service:d(function(a,b){return f(a,["$injector",function(a){return a.instantiate(b)}])}),value:d(function(a,b){return f(a,da(b),!1)}),constant:d(function(a,b){Ra(a,"constant");n[a]=b;s[a]=b}),decorator:function(a,b){var c=p.get(a+"Provider"),d=c.$get;c.$get=function(){var a=I.invoke(d,c);return I.invoke(b,null, +{$delegate:a})}}}},p=n.$injector=h(n,function(a,b){ea.isString(b)&&l.push(b);throw Ha("unpr",l.join(" <- "));}),s={},V=h(s,function(a,b){var c=p.get(a+"Provider",b);return I.invoke(c.$get,c,void 0,a)}),I=V;n.$injectorProvider={$get:da(V)};var q=g(a),I=V.get("$injector");I.strictDi=b;r(q,function(a){a&&I.invoke(a)});return I}function Ye(){var a=!0;this.disableAutoScrolling=function(){a=!1};this.$get=["$window","$location","$rootScope",function(b,d,c){function e(a){var b=null;Array.prototype.some.call(a, +function(a){if("a"===ua(a))return b=a,!0});return b}function f(a){if(a){a.scrollIntoView();var c;c=g.yOffset;z(c)?c=c():Qb(c)?(c=c[0],c="fixed"!==b.getComputedStyle(c).position?0:c.getBoundingClientRect().bottom):S(c)||(c=0);c&&(a=a.getBoundingClientRect().top,b.scrollBy(0,a-c))}else b.scrollTo(0,0)}function g(a){a=F(a)?a:d.hash();var b;a?(b=h.getElementById(a))?f(b):(b=e(h.getElementsByName(a)))?f(b):"top"===a&&f(null):f(null)}var h=b.document;a&&c.$watch(function(){return d.hash()},function(a,b){a=== +b&&""===a||Qf(function(){c.$evalAsync(g)})});return g}]}function hb(a,b){if(!a&&!b)return"";if(!a)return b;if(!b)return a;J(a)&&(a=a.join(" "));J(b)&&(b=b.join(" "));return a+" "+b}function Zf(a){F(a)&&(a=a.split(" "));var b=T();r(a,function(a){a.length&&(b[a]=!0)});return b}function Ia(a){return H(a)?a:{}}function $f(a,b,d,c){function e(a){try{a.apply(null,ta.call(arguments,1))}finally{if(V--,0===V)for(;I.length;)try{I.pop()()}catch(b){d.error(b)}}}function f(){y=null;g();h()}function g(){q=P(); +q=w(q)?null:q;na(q,D)&&(q=D);D=q}function h(){if(v!==k.url()||K!==q)v=k.url(),K=q,r(L,function(a){a(k.url(),q)})}var k=this,l=a.location,m=a.history,n=a.setTimeout,p=a.clearTimeout,s={};k.isMock=!1;var V=0,I=[];k.$$completeOutstandingRequest=e;k.$$incOutstandingRequestCount=function(){V++};k.notifyWhenNoOutstandingRequests=function(a){0===V?a():I.push(a)};var q,K,v=l.href,u=b.find("base"),y=null,P=c.history?function(){try{return m.state}catch(a){}}:A;g();K=q;k.url=function(b,d,e){w(e)&&(e=null);l!== +a.location&&(l=a.location);m!==a.history&&(m=a.history);if(b){var f=K===e;if(v===b&&(!c.history||f))return k;var h=v&&Ja(v)===Ja(b);v=b;K=e;!c.history||h&&f?(h||(y=b),d?l.replace(b):h?(d=l,e=b.indexOf("#"),e=-1===e?"":b.substr(e),d.hash=e):l.href=b,l.href!==b&&(y=b)):(m[d?"replaceState":"pushState"](e,"",b),g(),K=q);y&&(y=b);return k}return y||l.href.replace(/%27/g,"'")};k.state=function(){return q};var L=[],C=!1,D=null;k.onUrlChange=function(b){if(!C){if(c.history)B(a).on("popstate",f);B(a).on("hashchange", +f);C=!0}L.push(b);return b};k.$$applicationDestroyed=function(){B(a).off("hashchange popstate",f)};k.$$checkUrlChange=h;k.baseHref=function(){var a=u.attr("href");return a?a.replace(/^(https?\:)?\/\/[^\/]*/,""):""};k.defer=function(a,b){var c;V++;c=n(function(){delete s[c];e(a)},b||0);s[c]=!0;return c};k.defer.cancel=function(a){return s[a]?(delete s[a],p(a),e(A),!0):!1}}function ef(){this.$get=["$window","$log","$sniffer","$document",function(a,b,d,c){return new $f(a,c,b,d)}]}function ff(){this.$get= +function(){function a(a,c){function e(a){a!=n&&(p?p==a&&(p=a.n):p=a,f(a.n,a.p),f(a,n),n=a,n.n=null)}function f(a,b){a!=b&&(a&&(a.p=b),b&&(b.n=a))}if(a in b)throw O("$cacheFactory")("iid",a);var g=0,h=R({},c,{id:a}),k=T(),l=c&&c.capacity||Number.MAX_VALUE,m=T(),n=null,p=null;return b[a]={put:function(a,b){if(!w(b)){if(ll&&this.remove(p.key);return b}},get:function(a){if(l";b=la.firstChild.attributes;var d=b[0];b.removeNamedItem(d.name);d.value=c;a.attributes.setNamedItem(d)}function N(a,b){try{a.addClass(b)}catch(c){}}function ba(a,b,c,d,e){a instanceof B||(a=B(a));for(var f=/\S+/,g=0,h=a.length;g< +h;g++){var k=a[g];k.nodeType===Na&&k.nodeValue.match(f)&&Pc(k,a[g]=E.document.createElement("span"))}var l=t(a,b,a,c,d,e);ba.$$addScopeClass(a);var n=null;return function(b,c,d){sb(b,"scope");e&&e.needsNewScope&&(b=b.$parent.$new());d=d||{};var f=d.parentBoundTranscludeFn,g=d.transcludeControllers;d=d.futureParentElement;f&&f.$$boundTransclude&&(f=f.$$boundTransclude);n||(n=(d=d&&d[0])?"foreignobject"!==ua(d)&&ka.call(d).match(/SVG/)?"svg":"html":"html");d="html"!==n?B(ca(n,B("
").append(a).html())): +c?Pa.clone.call(a):a;if(g)for(var h in g)d.data("$"+h+"Controller",g[h].instance);ba.$$addScopeInfo(d,b);c&&c(d,b);l&&l(b,d,d,f);return d}}function t(a,b,c,d,e,f){function g(a,c,d,e){var f,k,l,n,m,v,q;if(p)for(q=Array(c.length),n=0;nu.priority)break;if(x=u.scope)u.templateUrl||(H(x)?(X("new/isolated scope",s||v,u,N),s=u):X("new/isolated scope",s,u,N)),v=v||u;G=u.name;if(!Ca&&(u.replace&&(u.templateUrl||u.template)||u.transclude&&!u.$$tlb)){for(x=A+1;Ca=a[x++];)if(Ca.transclude&&!Ca.$$tlb||Ca.replace&& +(Ca.templateUrl||Ca.template)){wa=!0;break}Ca=!0}!u.templateUrl&&u.controller&&(x=u.controller,q=q||T(),X("'"+G+"' controller",q[G],u,N),q[G]=u);if(x=u.transclude)if(D=!0,u.$$tlb||(X("transclusion",C,u,N),C=u),"element"==x)y=!0,p=u.priority,Q=N,N=d.$$element=B(ba.$$createComment(G,d[G])),b=N[0],da(f,ta.call(Q,0),b),Q[0].$$parentNode=Q[0].parentNode,P=ac(wa,Q,e,p,g&&g.name,{nonTlbTranscludeDirective:C});else{var M=T();Q=B(Xb(b)).contents();if(H(x)){Q=[];var S=T(),Da=T();r(x,function(a,b){var c="?"=== +a.charAt(0);a=c?a.substring(1):a;S[a]=b;M[b]=null;Da[b]=c});r(N.contents(),function(a){var b=S[xa(ua(a))];b?(Da[b]=!0,M[b]=M[b]||[],M[b].push(a)):Q.push(a)});r(Da,function(a,b){if(!a)throw fa("reqslot",b);});for(var Y in M)M[Y]&&(M[Y]=ac(wa,M[Y],e))}N.empty();P=ac(wa,Q,e,void 0,void 0,{needsNewScope:u.$$isolateScope||u.$$newScope});P.$$slots=M}if(u.template)if(I=!0,X("template",L,u,N),L=u,x=z(u.template)?u.template(N,d):u.template,x=ra(x),u.replace){g=u;Q=Vb.test(x)?$c(ca(u.templateNamespace,W(x))): +[];b=Q[0];if(1!=Q.length||1!==b.nodeType)throw fa("tplrt",G,"");da(f,N,b);E={$attr:{}};x=$b(b,[],E);var aa=a.splice(A+1,a.length-(A+1));(s||v)&&ad(x,s,v);a=a.concat(x).concat(aa);U(d,E);E=a.length}else N.html(x);if(u.templateUrl)I=!0,X("template",L,u,N),L=u,u.replace&&(g=u),m=$(a.splice(A,a.length-A),N,d,f,D&&P,h,k,{controllerDirectives:q,newScopeDirective:v!==u&&v,newIsolateScopeDirective:s,templateDirective:L,nonTlbTranscludeDirective:C}),E=a.length;else if(u.compile)try{t=u.compile(N,d,P);var Z= +u.$$originalDirective||u;z(t)?n(null,bb(Z,t),F,Ta):t&&n(bb(Z,t.pre),bb(Z,t.post),F,Ta)}catch(ea){c(ea,va(N))}u.terminal&&(m.terminal=!0,p=Math.max(p,u.priority))}m.scope=v&&!0===v.scope;m.transcludeOnThisElement=D;m.templateOnThisElement=I;m.transclude=P;l.hasElementTranscludeDirective=y;return m}function ib(a,b,c,d){var e;if(F(b)){var f=b.match(l);b=b.substring(f[0].length);var g=f[1]||f[3],f="?"===f[2];"^^"===g?c=c.parent():e=(e=d&&d[b])&&e.instance;if(!e){var h="$"+b+"Controller";e=g?c.inheritedData(h): +c.data(h)}if(!e&&!f)throw fa("ctreq",b,a);}else if(J(b))for(e=[],g=0,f=b.length;gm.priority)&&-1!=m.restrict.indexOf(g)){l&&(m=Rb(m,{$$start:l,$$end:n}));if(!m.$$bindings){var q=m,s=m,L=m.name,u={isolateScope:null,bindToController:null};H(s.scope)&&(!0===s.bindToController?(u.bindToController=d(s.scope,L,!0),u.isolateScope={}):u.isolateScope=d(s.scope,L,!1));H(s.bindToController)&&(u.bindToController= +d(s.bindToController,L,!0));if(H(u.bindToController)){var C=s.controller,D=s.controllerAs;if(!C)throw fa("noctrl",L);if(!Xc(C,D))throw fa("noident",L);}var N=q.$$bindings=u;H(N.isolateScope)&&(m.$$isolateBindings=N.isolateScope)}b.push(m);k=m}}catch(G){c(G)}}return k}function S(b){if(f.hasOwnProperty(b))for(var c=a.get(b+"Directive"),d=0,e=c.length;d"+b+"";return c.childNodes[0].childNodes;default:return b}}function ea(a,b){if("srcdoc"==b)return L.HTML;var c=ua(a);if("xlinkHref"==b||"form"==c&&"action"==b||"img"!=c&&("src"==b||"ngSrc"==b))return L.RESOURCE_URL}function ia(a, +c,d,e,f){var g=ea(a,e);f=k[e]||f;var h=b(d,!0,g,f);if(h){if("multiple"===e&&"select"===ua(a))throw fa("selmulti",va(a));c.push({priority:100,compile:function(){return{pre:function(a,c,k){c=k.$$observers||(k.$$observers=T());if(m.test(e))throw fa("nodomevents");var l=k[e];l!==d&&(h=l&&b(l,!0,g,f),d=l);h&&(k[e]=h(a),(c[e]||(c[e]=[])).$$inter=!0,(k.$$observers&&k.$$observers[e].$$scope||a).$watch(h,function(a,b){"class"===e&&a!=b?k.$updateClass(a,b):k.$set(e,a)}))}}}})}}function da(a,b,c){var d=b[0], +e=b.length,f=d.parentNode,g,h;if(a)for(g=0,h=a.length;g=b)return a;for(;b--;)8===a[b].nodeType&&bg.call(a,b,1);return a}function Xc(a,b){if(b&&F(b))return b;if(F(a)){var d=dd.exec(a);if(d)return d[3]}}function gf(){var a={},b=!1;this.has=function(b){return a.hasOwnProperty(b)};this.register=function(b,c){Ra(b,"controller");H(b)?R(a,b):a[b]=c};this.allowGlobals=function(){b=!0};this.$get=["$injector","$window",function(d,c){function e(a, +b,c,d){if(!a||!H(a.$scope))throw O("$controller")("noscp",d,b);a.$scope[b]=c}return function(f,g,h,k){var l,m,n;h=!0===h;k&&F(k)&&(n=k);if(F(f)){k=f.match(dd);if(!k)throw cg("ctrlfmt",f);m=k[1];n=n||k[3];f=a.hasOwnProperty(m)?a[m]:Ec(g.$scope,m,!0)||(b?Ec(c,m,!0):void 0);Qa(f,m,!0)}if(h)return h=(J(f)?f[f.length-1]:f).prototype,l=Object.create(h||null),n&&e(g,n,l,m||f.name),R(function(){var a=d.invoke(f,l,g,m);a!==l&&(H(a)||z(a))&&(l=a,n&&e(g,n,l,m||f.name));return l},{instance:l,identifier:n});l= +d.instantiate(f,g,m);n&&e(g,n,l,m||f.name);return l}}]}function hf(){this.$get=["$window",function(a){return B(a.document)}]}function jf(){this.$get=["$log",function(a){return function(b,d){a.error.apply(a,arguments)}}]}function cc(a){return H(a)?ia(a)?a.toISOString():cb(a):a}function of(){this.$get=function(){return function(a){if(!a)return"";var b=[];tc(a,function(a,c){null===a||w(a)||(J(a)?r(a,function(a){b.push(ja(c)+"="+ja(cc(a)))}):b.push(ja(c)+"="+ja(cc(a))))});return b.join("&")}}}function pf(){this.$get= +function(){return function(a){function b(a,e,f){null===a||w(a)||(J(a)?r(a,function(a,c){b(a,e+"["+(H(a)?c:"")+"]")}):H(a)&&!ia(a)?tc(a,function(a,c){b(a,e+(f?"":"[")+c+(f?"":"]"))}):d.push(ja(e)+"="+ja(cc(a))))}if(!a)return"";var d=[];b(a,"",!0);return d.join("&")}}}function dc(a,b){if(F(a)){var d=a.replace(dg,"").trim();if(d){var c=b("Content-Type");(c=c&&0===c.indexOf(ed))||(c=(c=d.match(eg))&&fg[c[0]].test(d));c&&(a=xc(d))}}return a}function fd(a){var b=T(),d;F(a)?r(a.split("\n"),function(a){d= +a.indexOf(":");var e=M(W(a.substr(0,d)));a=W(a.substr(d+1));e&&(b[e]=b[e]?b[e]+", "+a:a)}):H(a)&&r(a,function(a,d){var f=M(d),g=W(a);f&&(b[f]=b[f]?b[f]+", "+g:g)});return b}function gd(a){var b;return function(d){b||(b=fd(a));return d?(d=b[M(d)],void 0===d&&(d=null),d):b}}function hd(a,b,d,c){if(z(c))return c(a,b,d);r(c,function(c){a=c(a,b,d)});return a}function nf(){var a=this.defaults={transformResponse:[dc],transformRequest:[function(a){return H(a)&&"[object File]"!==ka.call(a)&&"[object Blob]"!== +ka.call(a)&&"[object FormData]"!==ka.call(a)?cb(a):a}],headers:{common:{Accept:"application/json, text/plain, */*"},post:ga(ec),put:ga(ec),patch:ga(ec)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",paramSerializer:"$httpParamSerializer"},b=!1;this.useApplyAsync=function(a){return x(a)?(b=!!a,this):b};var d=!0;this.useLegacyPromiseExtensions=function(a){return x(a)?(d=!!a,this):d};var c=this.interceptors=[];this.$get=["$httpBackend","$$cookieReader","$cacheFactory","$rootScope","$q","$injector", +function(e,f,g,h,k,l){function m(b){function c(a){var b=R({},a);b.data=hd(a.data,a.headers,a.status,f.transformResponse);a=a.status;return 200<=a&&300>a?b:k.reject(b)}function e(a,b){var c,d={};r(a,function(a,e){z(a)?(c=a(b),null!=c&&(d[e]=c)):d[e]=a});return d}if(!H(b))throw O("$http")("badreq",b);if(!F(b.url))throw O("$http")("badreq",b.url);var f=R({method:"get",transformRequest:a.transformRequest,transformResponse:a.transformResponse,paramSerializer:a.paramSerializer},b);f.headers=function(b){var c= +a.headers,d=R({},b.headers),f,g,h,c=R({},c.common,c[M(b.method)]);a:for(f in c){g=M(f);for(h in d)if(M(h)===g)continue a;d[f]=c[f]}return e(d,ga(b))}(b);f.method=ub(f.method);f.paramSerializer=F(f.paramSerializer)?l.get(f.paramSerializer):f.paramSerializer;var g=[function(b){var d=b.headers,e=hd(b.data,gd(d),void 0,b.transformRequest);w(e)&&r(d,function(a,b){"content-type"===M(b)&&delete d[b]});w(b.withCredentials)&&!w(a.withCredentials)&&(b.withCredentials=a.withCredentials);return n(b,e).then(c, +c)},void 0],h=k.when(f);for(r(V,function(a){(a.request||a.requestError)&&g.unshift(a.request,a.requestError);(a.response||a.responseError)&&g.push(a.response,a.responseError)});g.length;){b=g.shift();var m=g.shift(),h=h.then(b,m)}d?(h.success=function(a){Qa(a,"fn");h.then(function(b){a(b.data,b.status,b.headers,f)});return h},h.error=function(a){Qa(a,"fn");h.then(null,function(b){a(b.data,b.status,b.headers,f)});return h}):(h.success=id("success"),h.error=id("error"));return h}function n(c,d){function g(a){if(a){var c= +{};r(a,function(a,d){c[d]=function(c){function d(){a(c)}b?h.$applyAsync(d):h.$$phase?d():h.$apply(d)}});return c}}function l(a,c,d,e){function f(){n(c,a,d,e)}D&&(200<=a&&300>a?D.put(Q,[a,c,fd(d),e]):D.remove(Q));b?h.$applyAsync(f):(f(),h.$$phase||h.$apply())}function n(a,b,d,e){b=-1<=b?b:0;(200<=b&&300>b?L.resolve:L.reject)({data:a,status:b,headers:gd(d),config:c,statusText:e})}function y(a){n(a.data,a.status,ga(a.headers()),a.statusText)}function V(){var a=m.pendingRequests.indexOf(c);-1!==a&&m.pendingRequests.splice(a, +1)}var L=k.defer(),C=L.promise,D,G,Aa=c.headers,Q=p(c.url,c.paramSerializer(c.params));m.pendingRequests.push(c);C.then(V,V);!c.cache&&!a.cache||!1===c.cache||"GET"!==c.method&&"JSONP"!==c.method||(D=H(c.cache)?c.cache:H(a.cache)?a.cache:s);D&&(G=D.get(Q),x(G)?G&&z(G.then)?G.then(y,y):J(G)?n(G[1],G[0],ga(G[2]),G[3]):n(G,200,{},"OK"):D.put(Q,C));w(G)&&((G=jd(c.url)?f()[c.xsrfCookieName||a.xsrfCookieName]:void 0)&&(Aa[c.xsrfHeaderName||a.xsrfHeaderName]=G),e(c.method,Q,d,l,Aa,c.timeout,c.withCredentials, +c.responseType,g(c.eventHandlers),g(c.uploadEventHandlers)));return C}function p(a,b){0=l&&(v.resolve(q),I(u.$$intervalId),delete g[u.$$intervalId]);K||a.$apply()},k);g[u.$$intervalId]=v;return u}var g={};f.cancel=function(a){return a&&a.$$intervalId in g?(g[a.$$intervalId].reject("canceled"),b.clearInterval(a.$$intervalId),delete g[a.$$intervalId],!0):!1};return f}]}function fc(a){a=a.split("/");for(var b=a.length;b--;)a[b]= +qb(a[b]);return a.join("/")}function kd(a,b){var d=qa(a);b.$$protocol=d.protocol;b.$$host=d.hostname;b.$$port=aa(d.port)||hg[d.protocol]||null}function ld(a,b){var d="/"!==a.charAt(0);d&&(a="/"+a);var c=qa(a);b.$$path=decodeURIComponent(d&&"/"===c.pathname.charAt(0)?c.pathname.substring(1):c.pathname);b.$$search=Ac(c.search);b.$$hash=decodeURIComponent(c.hash);b.$$path&&"/"!=b.$$path.charAt(0)&&(b.$$path="/"+b.$$path)}function la(a,b){if(0===b.lastIndexOf(a,0))return b.substr(a.length)}function Ja(a){var b= +a.indexOf("#");return-1==b?a:a.substr(0,b)}function jb(a){return a.replace(/(#.+)|#$/,"$1")}function gc(a,b,d){this.$$html5=!0;d=d||"";kd(a,this);this.$$parse=function(a){var d=la(b,a);if(!F(d))throw Gb("ipthprfx",a,b);ld(d,this);this.$$path||(this.$$path="/");this.$$compose()};this.$$compose=function(){var a=Tb(this.$$search),d=this.$$hash?"#"+qb(this.$$hash):"";this.$$url=fc(this.$$path)+(a?"?"+a:"")+d;this.$$absUrl=b+this.$$url.substr(1)};this.$$parseLinkUrl=function(c,e){if(e&&"#"===e[0])return this.hash(e.slice(1)), +!0;var f,g;x(f=la(a,c))?(g=f,g=x(f=la(d,f))?b+(la("/",f)||f):a+g):x(f=la(b,c))?g=b+f:b==c+"/"&&(g=b);g&&this.$$parse(g);return!!g}}function hc(a,b,d){kd(a,this);this.$$parse=function(c){var e=la(a,c)||la(b,c),f;w(e)||"#"!==e.charAt(0)?this.$$html5?f=e:(f="",w(e)&&(a=c,this.replace())):(f=la(d,e),w(f)&&(f=e));ld(f,this);c=this.$$path;var e=a,g=/^\/[A-Z]:(\/.*)/;0===f.lastIndexOf(e,0)&&(f=f.replace(e,""));g.exec(f)||(c=(f=g.exec(c))?f[1]:c);this.$$path=c;this.$$compose()};this.$$compose=function(){var b= +Tb(this.$$search),e=this.$$hash?"#"+qb(this.$$hash):"";this.$$url=fc(this.$$path)+(b?"?"+b:"")+e;this.$$absUrl=a+(this.$$url?d+this.$$url:"")};this.$$parseLinkUrl=function(b,d){return Ja(a)==Ja(b)?(this.$$parse(b),!0):!1}}function md(a,b,d){this.$$html5=!0;hc.apply(this,arguments);this.$$parseLinkUrl=function(c,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;a==Ja(c)?f=c:(g=la(b,c))?f=a+d+g:b===c+"/"&&(f=b);f&&this.$$parse(f);return!!f};this.$$compose=function(){var b=Tb(this.$$search), +e=this.$$hash?"#"+qb(this.$$hash):"";this.$$url=fc(this.$$path)+(b?"?"+b:"")+e;this.$$absUrl=a+d+this.$$url}}function Hb(a){return function(){return this[a]}}function nd(a,b){return function(d){if(w(d))return this[a];this[a]=b(d);this.$$compose();return this}}function sf(){var a="",b={enabled:!1,requireBase:!0,rewriteLinks:!0};this.hashPrefix=function(b){return x(b)?(a=b,this):a};this.html5Mode=function(a){return Ea(a)?(b.enabled=a,this):H(a)?(Ea(a.enabled)&&(b.enabled=a.enabled),Ea(a.requireBase)&& +(b.requireBase=a.requireBase),Ea(a.rewriteLinks)&&(b.rewriteLinks=a.rewriteLinks),this):b};this.$get=["$rootScope","$browser","$sniffer","$rootElement","$window",function(d,c,e,f,g){function h(a,b,d){var e=l.url(),f=l.$$state;try{c.url(a,b,d),l.$$state=c.state()}catch(g){throw l.url(e),l.$$state=f,g;}}function k(a,b){d.$broadcast("$locationChangeSuccess",l.absUrl(),a,l.$$state,b)}var l,m;m=c.baseHref();var n=c.url(),p;if(b.enabled){if(!m&&b.requireBase)throw Gb("nobase");p=n.substring(0,n.indexOf("/", +n.indexOf("//")+2))+(m||"/");m=e.history?gc:md}else p=Ja(n),m=hc;var s=p.substr(0,Ja(p).lastIndexOf("/")+1);l=new m(p,s,"#"+a);l.$$parseLinkUrl(n,n);l.$$state=c.state();var r=/^\s*(javascript|mailto):/i;f.on("click",function(a){if(b.rewriteLinks&&!a.ctrlKey&&!a.metaKey&&!a.shiftKey&&2!=a.which&&2!=a.button){for(var e=B(a.target);"a"!==ua(e[0]);)if(e[0]===f[0]||!(e=e.parent())[0])return;var h=e.prop("href"),k=e.attr("href")||e.attr("xlink:href");H(h)&&"[object SVGAnimatedString]"===h.toString()&&(h= +qa(h.animVal).href);r.test(h)||!h||e.attr("target")||a.isDefaultPrevented()||!l.$$parseLinkUrl(h,k)||(a.preventDefault(),l.absUrl()!=c.url()&&(d.$apply(),g.angular["ff-684208-preventDefault"]=!0))}});jb(l.absUrl())!=jb(n)&&c.url(l.absUrl(),!0);var I=!0;c.onUrlChange(function(a,b){w(la(s,a))?g.location.href=a:(d.$evalAsync(function(){var c=l.absUrl(),e=l.$$state,f;a=jb(a);l.$$parse(a);l.$$state=b;f=d.$broadcast("$locationChangeStart",a,c,b,e).defaultPrevented;l.absUrl()===a&&(f?(l.$$parse(c),l.$$state= +e,h(c,!1,e)):(I=!1,k(c,e)))}),d.$$phase||d.$digest())});d.$watch(function(){var a=jb(c.url()),b=jb(l.absUrl()),f=c.state(),g=l.$$replace,n=a!==b||l.$$html5&&e.history&&f!==l.$$state;if(I||n)I=!1,d.$evalAsync(function(){var b=l.absUrl(),c=d.$broadcast("$locationChangeStart",b,a,l.$$state,f).defaultPrevented;l.absUrl()===b&&(c?(l.$$parse(a),l.$$state=f):(n&&h(b,g,f===l.$$state?null:l.$$state),k(a,f)))});l.$$replace=!1});return l}]}function tf(){var a=!0,b=this;this.debugEnabled=function(b){return x(b)? +(a=b,this):a};this.$get=["$window",function(d){function c(a){a instanceof Error&&(a.stack?a=a.message&&-1===a.stack.indexOf(a.message)?"Error: "+a.message+"\n"+a.stack:a.stack:a.sourceURL&&(a=a.message+"\n"+a.sourceURL+":"+a.line));return a}function e(a){var b=d.console||{},e=b[a]||b.log||A;a=!1;try{a=!!e.apply}catch(k){}return a?function(){var a=[];r(arguments,function(b){a.push(c(b))});return e.apply(b,a)}:function(a,b){e(a,null==b?"":b)}}return{log:e("log"),info:e("info"),warn:e("warn"),error:e("error"), +debug:function(){var c=e("debug");return function(){a&&c.apply(b,arguments)}}()}}]}function Ua(a,b){if("__defineGetter__"===a||"__defineSetter__"===a||"__lookupGetter__"===a||"__lookupSetter__"===a||"__proto__"===a)throw ca("isecfld",b);return a}function ig(a){return a+""}function ra(a,b){if(a){if(a.constructor===a)throw ca("isecfn",b);if(a.window===a)throw ca("isecwindow",b);if(a.children&&(a.nodeName||a.prop&&a.attr&&a.find))throw ca("isecdom",b);if(a===Object)throw ca("isecobj",b);}return a}function od(a, +b){if(a){if(a.constructor===a)throw ca("isecfn",b);if(a===jg||a===kg||a===lg)throw ca("isecff",b);}}function Ib(a,b){if(a&&(a===(0).constructor||a===(!1).constructor||a==="".constructor||a==={}.constructor||a===[].constructor||a===Function.constructor))throw ca("isecaf",b);}function mg(a,b){return"undefined"!==typeof a?a:b}function pd(a,b){return"undefined"===typeof a?b:"undefined"===typeof b?a:a+b}function $(a,b){var d,c;switch(a.type){case t.Program:d=!0;r(a.body,function(a){$(a.expression,b);d= +d&&a.expression.constant});a.constant=d;break;case t.Literal:a.constant=!0;a.toWatch=[];break;case t.UnaryExpression:$(a.argument,b);a.constant=a.argument.constant;a.toWatch=a.argument.toWatch;break;case t.BinaryExpression:$(a.left,b);$(a.right,b);a.constant=a.left.constant&&a.right.constant;a.toWatch=a.left.toWatch.concat(a.right.toWatch);break;case t.LogicalExpression:$(a.left,b);$(a.right,b);a.constant=a.left.constant&&a.right.constant;a.toWatch=a.constant?[]:[a];break;case t.ConditionalExpression:$(a.test, +b);$(a.alternate,b);$(a.consequent,b);a.constant=a.test.constant&&a.alternate.constant&&a.consequent.constant;a.toWatch=a.constant?[]:[a];break;case t.Identifier:a.constant=!1;a.toWatch=[a];break;case t.MemberExpression:$(a.object,b);a.computed&&$(a.property,b);a.constant=a.object.constant&&(!a.computed||a.property.constant);a.toWatch=[a];break;case t.CallExpression:d=a.filter?!b(a.callee.name).$stateful:!1;c=[];r(a.arguments,function(a){$(a,b);d=d&&a.constant;a.constant||c.push.apply(c,a.toWatch)}); +a.constant=d;a.toWatch=a.filter&&!b(a.callee.name).$stateful?c:[a];break;case t.AssignmentExpression:$(a.left,b);$(a.right,b);a.constant=a.left.constant&&a.right.constant;a.toWatch=[a];break;case t.ArrayExpression:d=!0;c=[];r(a.elements,function(a){$(a,b);d=d&&a.constant;a.constant||c.push.apply(c,a.toWatch)});a.constant=d;a.toWatch=c;break;case t.ObjectExpression:d=!0;c=[];r(a.properties,function(a){$(a.value,b);d=d&&a.value.constant&&!a.computed;a.value.constant||c.push.apply(c,a.value.toWatch)}); +a.constant=d;a.toWatch=c;break;case t.ThisExpression:a.constant=!1;a.toWatch=[];break;case t.LocalsExpression:a.constant=!1,a.toWatch=[]}}function qd(a){if(1==a.length){a=a[0].expression;var b=a.toWatch;return 1!==b.length?b:b[0]!==a?b:void 0}}function rd(a){return a.type===t.Identifier||a.type===t.MemberExpression}function sd(a){if(1===a.body.length&&rd(a.body[0].expression))return{type:t.AssignmentExpression,left:a.body[0].expression,right:{type:t.NGValueParameter},operator:"="}}function td(a){return 0=== +a.body.length||1===a.body.length&&(a.body[0].expression.type===t.Literal||a.body[0].expression.type===t.ArrayExpression||a.body[0].expression.type===t.ObjectExpression)}function ud(a,b){this.astBuilder=a;this.$filter=b}function vd(a,b){this.astBuilder=a;this.$filter=b}function Jb(a){return"constructor"==a}function ic(a){return z(a.valueOf)?a.valueOf():ng.call(a)}function uf(){var a=T(),b=T(),d={"true":!0,"false":!1,"null":null,undefined:void 0},c,e;this.addLiteral=function(a,b){d[a]=b};this.setIdentifierFns= +function(a,b){c=a;e=b;return this};this.$get=["$filter",function(f){function g(c,d,e){var g,k,C;e=e||K;switch(typeof c){case "string":C=c=c.trim();var D=e?b:a;g=D[C];if(!g){":"===c.charAt(0)&&":"===c.charAt(1)&&(k=!0,c=c.substring(2));g=e?q:I;var G=new jc(g);g=(new kc(G,f,g)).parse(c);g.constant?g.$$watchDelegate=p:k?g.$$watchDelegate=g.literal?n:m:g.inputs&&(g.$$watchDelegate=l);e&&(g=h(g));D[C]=g}return s(g,d);case "function":return s(c,d);default:return s(A,d)}}function h(a){function b(c,d,e,f){var g= +K;K=!0;try{return a(c,d,e,f)}finally{K=g}}if(!a)return a;b.$$watchDelegate=a.$$watchDelegate;b.assign=h(a.assign);b.constant=a.constant;b.literal=a.literal;for(var c=0;a.inputs&&c=this.promise.$$state.status&&d&&d.length&&a(function(){for(var a,e,f=0,g=d.length;fa)for(b in l++,f)sa.call(e,b)||(q--,delete f[b])}else f!==e&&(f=e,l++);return l}}c.$stateful=!0;var d=this,e,f,h,k=1r&&(w=4-r,x[w]||(x[w]=[]),x[w].push({msg:z(a.exp)? +"fn: "+(a.exp.name||a.exp.toString()):a.exp,newVal:g,oldVal:k}));else if(a===c){q=!1;break a}}catch(B){f(B)}if(!(p=y.$$watchersCount&&y.$$childHead||y!==this&&y.$$nextSibling))for(;y!==this&&!(p=y.$$nextSibling);)y=y.$parent}while(y=p);if((q||v.length)&&!r--)throw K.$$phase=null,d("infdig",b,x);}while(q||v.length);for(K.$$phase=null;PBa)throw ya("iequirks");var c=ga(ma);c.isEnabled=function(){return a}; +c.trustAs=d.trustAs;c.getTrusted=d.getTrusted;c.valueOf=d.valueOf;a||(c.trustAs=c.getTrusted=function(a,b){return b},c.valueOf=Ya);c.parseAs=function(a,d){var e=b(d);return e.literal&&e.constant?e:b(d,function(b){return c.getTrusted(a,b)})};var e=c.parseAs,f=c.getTrusted,g=c.trustAs;r(ma,function(a,b){var d=M(b);c[eb("parse_as_"+d)]=function(b){return e(a,b)};c[eb("get_trusted_"+d)]=function(b){return f(a,b)};c[eb("trust_as_"+d)]=function(b){return g(a,b)}});return c}]}function Af(){this.$get=["$window", +"$document",function(a,b){var d={},c=!(a.chrome&&a.chrome.app&&a.chrome.app.runtime)&&a.history&&a.history.pushState,e=aa((/android (\d+)/.exec(M((a.navigator||{}).userAgent))||[])[1]),f=/Boxee/i.test((a.navigator||{}).userAgent),g=b[0]||{},h,k=/^(Moz|webkit|ms)(?=[A-Z])/,l=g.body&&g.body.style,m=!1,n=!1;if(l){for(var p in l)if(m=k.exec(p)){h=m[0];h=h[0].toUpperCase()+h.substr(1);break}h||(h="WebkitOpacity"in l&&"webkit");m=!!("transition"in l||h+"Transition"in l);n=!!("animation"in l||h+"Animation"in +l);!e||m&&n||(m=F(l.webkitTransition),n=F(l.webkitAnimation))}return{history:!(!c||4>e||f),hasEvent:function(a){if("input"===a&&11>=Ba)return!1;if(w(d[a])){var b=g.createElement("div");d[a]="on"+a in b}return d[a]},csp:Fa(),vendorPrefix:h,transitions:m,animations:n,android:e}}]}function Cf(){var a;this.httpOptions=function(b){return b?(a=b,this):a};this.$get=["$templateCache","$http","$q","$sce",function(b,d,c,e){function f(g,h){f.totalPendingRequests++;if(!F(g)||w(b.get(g)))g=e.getTrustedResourceUrl(g); +var k=d.defaults&&d.defaults.transformResponse;J(k)?k=k.filter(function(a){return a!==dc}):k===dc&&(k=null);return d.get(g,R({cache:b,transformResponse:k},a))["finally"](function(){f.totalPendingRequests--}).then(function(a){b.put(g,a.data);return a.data},function(a){if(!h)throw pg("tpload",g,a.status,a.statusText);return c.reject(a)})}f.totalPendingRequests=0;return f}]}function Df(){this.$get=["$rootScope","$browser","$location",function(a,b,d){return{findBindings:function(a,b,d){a=a.getElementsByClassName("ng-binding"); +var g=[];r(a,function(a){var c=ea.element(a).data("$binding");c&&r(c,function(c){d?(new RegExp("(^|\\s)"+xd(b)+"(\\s|\\||$)")).test(c)&&g.push(a):-1!=c.indexOf(b)&&g.push(a)})});return g},findModels:function(a,b,d){for(var g=["ng-","data-ng-","ng\\:"],h=0;hc&&(c=e),c+=+a.slice(e+1),a=a.substring(0,e)):0>c&&(c=a.length);for(e=0;a.charAt(e)==mc;e++);if(e==(g=a.length))d=[0],c=1;else{for(g--;a.charAt(g)==mc;)g--;c-=e;d=[];for(f=0;e<=g;e++,f++)d[f]=+a.charAt(e)}c>Hd&&(d=d.splice(0,Hd-1),b=c-1,c=1);return{d:d,e:b,i:c}}function xg(a,b,d,c){var e=a.d,f=e.length-a.i;b=w(b)?Math.min(Math.max(d,f),c):+b;d=b+a.i;c=e[d];if(0d-1){for(c=0;c>d;c--)e.unshift(0),a.i++;e.unshift(1);a.i++}else e[d-1]++;for(;fh;)k.unshift(0),h++;0=b.lgSize&&h.unshift(k.splice(-b.lgSize,k.length).join(""));k.length>b.gSize;)h.unshift(k.splice(-b.gSize,k.length).join(""));k.length&&h.unshift(k.join(""));k=h.join(d);f.length&&(k+=c+f.join(""));e&&(k+="e+"+e)}return 0>a&&!g?b.negPre+k+b.negSuf:b.posPre+k+b.posSuf}function Kb(a,b,d,c){var e="";if(0>a||c&&0>=a)c?a=-a+1:(a=-a,e="-");for(a=""+a;a.length-d)f+=d;0===f&&-12==d&&(f=12);return Kb(f,b,c,e)}}function kb(a,b,d){return function(c,e){var f=c["get"+a](),g=ub((d?"STANDALONE":"")+(b?"SHORT":"")+a);return e[g][f]}}function Id(a){var b=(new Date(a,0,1)).getDay();return new Date(a,0,(4>=b?5:12)-b)}function Jd(a){return function(b){var d=Id(b.getFullYear());b=+new Date(b.getFullYear(),b.getMonth(),b.getDate()+(4-b.getDay()))-+d;b=1+Math.round(b/6048E5);return Kb(b,a)}}function nc(a, +b){return 0>=a.getFullYear()?b.ERAS[0]:b.ERAS[1]}function Cd(a){function b(a){var b;if(b=a.match(d)){a=new Date(0);var f=0,g=0,h=b[8]?a.setUTCFullYear:a.setFullYear,k=b[8]?a.setUTCHours:a.setHours;b[9]&&(f=aa(b[9]+b[10]),g=aa(b[9]+b[11]));h.call(a,aa(b[1]),aa(b[2])-1,aa(b[3]));f=aa(b[4]||0)-f;g=aa(b[5]||0)-g;h=aa(b[6]||0);b=Math.round(1E3*parseFloat("0."+(b[7]||0)));k.call(a,f,g,h,b)}return a}var d=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/; +return function(c,d,f){var g="",h=[],k,l;d=d||"mediumDate";d=a.DATETIME_FORMATS[d]||d;F(c)&&(c=yg.test(c)?aa(c):b(c));S(c)&&(c=new Date(c));if(!ia(c)||!isFinite(c.getTime()))return c;for(;d;)(l=zg.exec(d))?(h=ab(h,l,1),d=h.pop()):(h.push(d),d=null);var m=c.getTimezoneOffset();f&&(m=yc(f,m),c=Sb(c,f,!0));r(h,function(b){k=Ag[b];g+=k?k(c,a.DATETIME_FORMATS,m):"''"===b?"'":b.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return g}}function rg(){return function(a,b){w(b)&&(b=2);return cb(a,b)}}function sg(){return function(a, +b,d){b=Infinity===Math.abs(Number(b))?Number(b):aa(b);if(isNaN(b))return a;S(a)&&(a=a.toString());if(!oa(a))return a;d=!d||isNaN(d)?0:aa(d);d=0>d?Math.max(0,a.length+d):d;return 0<=b?oc(a,d,d+b):0===d?oc(a,b,a.length):oc(a,Math.max(0,d+b),d)}}function oc(a,b,d){return F(a)?a.slice(b,d):ta.call(a,b,d)}function Ed(a){function b(b){return b.map(function(b){var c=1,d=Ya;if(z(b))d=b;else if(F(b)){if("+"==b.charAt(0)||"-"==b.charAt(0))c="-"==b.charAt(0)?-1:1,b=b.substring(1);if(""!==b&&(d=a(b),d.constant))var e= +d(),d=function(a){return a[e]}}return{get:d,descending:c}})}function d(a){switch(typeof a){case "number":case "boolean":case "string":return!0;default:return!1}}function c(a,b){var c=0,d=a.type,k=b.type;if(d===k){var k=a.value,l=b.value;"string"===d?(k=k.toLowerCase(),l=l.toLowerCase()):"object"===d&&(H(k)&&(k=a.index),H(l)&&(l=b.index));k!==l&&(c=kb||37<=b&&40>=b||m(a,this,this.value)});if(e.hasEvent("paste"))b.on("paste cut",m)}b.on("change",l);if(Md[g]&&c.$$hasNativeValidators&&g===d.type)b.on("keydown wheel mousedown",function(a){if(!k){var b=this.validity,c=b.badInput,d=b.typeMismatch;k=f.defer(function(){k=null;b.badInput===c&&b.typeMismatch===d||l(a)})}});c.$render=function(){var a=c.$isEmpty(c.$viewValue)? +"":c.$viewValue;b.val()!==a&&b.val(a)}}function Nb(a,b){return function(d,c){var e,f;if(ia(d))return d;if(F(d)){'"'==d.charAt(0)&&'"'==d.charAt(d.length-1)&&(d=d.substring(1,d.length-1));if(Bg.test(d))return new Date(d);a.lastIndex=0;if(e=a.exec(d))return e.shift(),f=c?{yyyy:c.getFullYear(),MM:c.getMonth()+1,dd:c.getDate(),HH:c.getHours(),mm:c.getMinutes(),ss:c.getSeconds(),sss:c.getMilliseconds()/1E3}:{yyyy:1970,MM:1,dd:1,HH:0,mm:0,ss:0,sss:0},r(e,function(a,c){c=t};g.$observe("min",function(a){t=p(a);h.$validate()})}if(x(g.max)||g.ngMax){var q;h.$validators.max=function(a){return!n(a)||w(q)||d(a)<=q};g.$observe("max",function(a){q=p(a);h.$validate()})}}}function Nd(a,b,d,c){(c.$$hasNativeValidators=H(b[0].validity))&&c.$parsers.push(function(a){var c=b.prop("validity")||{};return c.badInput||c.typeMismatch?void 0:a})}function Od(a, +b,d,c,e){if(x(c)){a=a(c);if(!a.constant)throw nb("constexpr",d,c);return a(b)}return e}function qc(a,b){a="ngClass"+a;return["$animate",function(d){function c(a,b){var c=[],d=0;a:for(;d(?:<\/\1>|)$/,Vb=/<|&#?\w+;/,Mf=/<([\w:-]+)/,Nf=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,ha={option:[1,'"],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ha.optgroup=ha.option;ha.tbody=ha.tfoot=ha.colgroup=ha.caption=ha.thead; +ha.th=ha.td;var Uf=E.Node.prototype.contains||function(a){return!!(this.compareDocumentPosition(a)&16)},Pa=U.prototype={ready:function(a){function b(){d||(d=!0,a())}var d=!1;"complete"===E.document.readyState?E.setTimeout(b):(this.on("DOMContentLoaded",b),U(E).on("load",b))},toString:function(){var a=[];r(this,function(b){a.push(""+b)});return"["+a.join(", ")+"]"},eq:function(a){return 0<=a?B(this[a]):B(this[this.length+a])},length:0,push:Dg,sort:[].sort,splice:[].splice},Eb={};r("multiple selected checked disabled readOnly required open".split(" "), +function(a){Eb[M(a)]=a});var Vc={};r("input select option textarea button form details".split(" "),function(a){Vc[a]=!0});var cd={ngMinlength:"minlength",ngMaxlength:"maxlength",ngMin:"min",ngMax:"max",ngPattern:"pattern"};r({data:Yb,removeData:fb,hasData:function(a){for(var b in gb[a.ng339])return!0;return!1},cleanData:function(a){for(var b=0,d=a.length;b/,Xf=/^[^\(]*\(\s*([^\)]*)\)/m,Eg=/,/,Fg=/^\s*(_?)(\S+?)\1\s*$/,Vf=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg,Ha=O("$injector");db.$$annotate= +function(a,b,d){var c;if("function"===typeof a){if(!(c=a.$inject)){c=[];if(a.length){if(b)throw F(d)&&d||(d=a.name||Yf(a)),Ha("strictdi",d);b=Wc(a);r(b[1].split(Eg),function(a){a.replace(Fg,function(a,b,d){c.push(d)})})}a.$inject=c}}else J(a)?(b=a.length-1,Qa(a[b],"fn"),c=a.slice(0,b)):Qa(a,"fn",!0);return c};var Sd=O("$animate"),af=function(){this.$get=A},bf=function(){var a=new Sa,b=[];this.$get=["$$AnimateRunner","$rootScope",function(d,c){function e(a,b,c){var d=!1;b&&(b=F(b)?b.split(" "):J(b)? +b:[],r(b,function(b){b&&(d=!0,a[b]=c)}));return d}function f(){r(b,function(b){var c=a.get(b);if(c){var d=Zf(b.attr("class")),e="",f="";r(c,function(a,b){a!==!!d[b]&&(a?e+=(e.length?" ":"")+b:f+=(f.length?" ":"")+b)});r(b,function(a){e&&Bb(a,e);f&&Ab(a,f)});a.remove(b)}});b.length=0}return{enabled:A,on:A,off:A,pin:A,push:function(g,h,k,l){l&&l();k=k||{};k.from&&g.css(k.from);k.to&&g.css(k.to);if(k.addClass||k.removeClass)if(h=k.addClass,l=k.removeClass,k=a.get(g)||{},h=e(k,h,!0),l=e(k,l,!1),h||l)a.put(g, +k),b.push(g),1===b.length&&c.$$postDigest(f);g=new d;g.complete();return g}}}]},Ze=["$provide",function(a){var b=this;this.$$registeredAnimations=Object.create(null);this.register=function(d,c){if(d&&"."!==d.charAt(0))throw Sd("notcsel",d);var e=d+"-animation";b.$$registeredAnimations[d.substr(1)]=e;a.factory(e,c)};this.classNameFilter=function(a){if(1===arguments.length&&(this.$$classNameFilter=a instanceof RegExp?a:null)&&/(\s+|\/)ng-animate(\s+|\/)/.test(this.$$classNameFilter.toString()))throw Sd("nongcls", +"ng-animate");return this.$$classNameFilter};this.$get=["$$animateQueue",function(a){function b(a,c,d){if(d){var h;a:{for(h=0;h <= >= && || ! = |".split(" "),function(a){Ob[a]=!0});var Jg={n:"\n",f:"\f",r:"\r",t:"\t",v:"\v","'":"'",'"':'"'},jc=function(a){this.options=a};jc.prototype={constructor:jc,lex:function(a){this.text=a;this.index=0;for(this.tokens=[];this.index=a&&"string"===typeof a},isWhitespace:function(a){return" "===a||"\r"===a||"\t"===a||"\n"===a||"\v"===a||"\u00a0"===a},isIdentifierStart:function(a){return this.options.isIdentifierStart?this.options.isIdentifierStart(a,this.codePointAt(a)):this.isValidIdentifierStart(a)},isValidIdentifierStart:function(a){return"a"<=a&&"z">= +a||"A"<=a&&"Z">=a||"_"===a||"$"===a},isIdentifierContinue:function(a){return this.options.isIdentifierContinue?this.options.isIdentifierContinue(a,this.codePointAt(a)):this.isValidIdentifierContinue(a)},isValidIdentifierContinue:function(a,b){return this.isValidIdentifierStart(a,b)||this.isNumber(a)},codePointAt:function(a){return 1===a.length?a.charCodeAt(0):(a.charCodeAt(0)<<10)+a.charCodeAt(1)-56613888},peekMultichar:function(){var a=this.text.charAt(this.index),b=this.peek();if(!b)return a;var d= +a.charCodeAt(0),c=b.charCodeAt(0);return 55296<=d&&56319>=d&&56320<=c&&57343>=c?a+b:a},isExpOperator:function(a){return"-"===a||"+"===a||this.isNumber(a)},throwError:function(a,b,d){d=d||this.index;b=x(b)?"s "+b+"-"+this.index+" ["+this.text.substring(b,d)+"]":" "+d;throw ca("lexerr",a,b,this.text);},readNumber:function(){for(var a="",b=this.index;this.index","<=",">=");)a={type:t.BinaryExpression,operator:b.text,left:a,right:this.additive()};return a},additive:function(){for(var a=this.multiplicative(),b;b=this.expect("+","-");)a={type:t.BinaryExpression,operator:b.text,left:a,right:this.multiplicative()};return a},multiplicative:function(){for(var a=this.unary(),b;b=this.expect("*", +"/","%");)a={type:t.BinaryExpression,operator:b.text,left:a,right:this.unary()};return a},unary:function(){var a;return(a=this.expect("+","-","!"))?{type:t.UnaryExpression,operator:a.text,prefix:!0,argument:this.unary()}:this.primary()},primary:function(){var a;this.expect("(")?(a=this.filterChain(),this.consume(")")):this.expect("[")?a=this.arrayDeclaration():this.expect("{")?a=this.object():this.selfReferential.hasOwnProperty(this.peek().text)?a=Z(this.selfReferential[this.consume().text]):this.options.literals.hasOwnProperty(this.peek().text)? +a={type:t.Literal,value:this.options.literals[this.consume().text]}:this.peek().identifier?a=this.identifier():this.peek().constant?a=this.constant():this.throwError("not a primary expression",this.peek());for(var b;b=this.expect("(","[",".");)"("===b.text?(a={type:t.CallExpression,callee:a,arguments:this.parseArguments()},this.consume(")")):"["===b.text?(a={type:t.MemberExpression,object:a,property:this.expression(),computed:!0},this.consume("]")):"."===b.text?a={type:t.MemberExpression,object:a, +property:this.identifier(),computed:!1}:this.throwError("IMPOSSIBLE");return a},filter:function(a){a=[a];for(var b={type:t.CallExpression,callee:this.identifier(),arguments:a,filter:!0};this.expect(":");)a.push(this.expression());return b},parseArguments:function(){var a=[];if(")"!==this.peekToken().text){do a.push(this.filterChain());while(this.expect(","))}return a},identifier:function(){var a=this.consume();a.identifier||this.throwError("is not a valid identifier",a);return{type:t.Identifier,name:a.text}}, +constant:function(){return{type:t.Literal,value:this.consume().value}},arrayDeclaration:function(){var a=[];if("]"!==this.peekToken().text){do{if(this.peek("]"))break;a.push(this.expression())}while(this.expect(","))}this.consume("]");return{type:t.ArrayExpression,elements:a}},object:function(){var a=[],b;if("}"!==this.peekToken().text){do{if(this.peek("}"))break;b={type:t.Property,kind:"init"};this.peek().constant?(b.key=this.constant(),b.computed=!1,this.consume(":"),b.value=this.expression()): +this.peek().identifier?(b.key=this.identifier(),b.computed=!1,this.peek(":")?(this.consume(":"),b.value=this.expression()):b.value=b.key):this.peek("[")?(this.consume("["),b.key=this.expression(),this.consume("]"),b.computed=!0,this.consume(":"),b.value=this.expression()):this.throwError("invalid key",this.peek());a.push(b)}while(this.expect(","))}this.consume("}");return{type:t.ObjectExpression,properties:a}},throwError:function(a,b){throw ca("syntax",b.text,a,b.index+1,this.text,this.text.substring(b.index)); +},consume:function(a){if(0===this.tokens.length)throw ca("ueoe",this.text);var b=this.expect(a);b||this.throwError("is unexpected, expecting ["+a+"]",this.peek());return b},peekToken:function(){if(0===this.tokens.length)throw ca("ueoe",this.text);return this.tokens[0]},peek:function(a,b,d,c){return this.peekAhead(0,a,b,d,c)},peekAhead:function(a,b,d,c,e){if(this.tokens.length>a){a=this.tokens[a];var f=a.text;if(f===b||f===d||f===c||f===e||!(b||d||c||e))return a}return!1},expect:function(a,b,d,c){return(a= +this.peek(a,b,d,c))?(this.tokens.shift(),a):!1},selfReferential:{"this":{type:t.ThisExpression},$locals:{type:t.LocalsExpression}}};ud.prototype={compile:function(a,b){var d=this,c=this.astBuilder.ast(a);this.state={nextId:0,filters:{},expensiveChecks:b,fn:{vars:[],body:[],own:{}},assign:{vars:[],body:[],own:{}},inputs:[]};$(c,d.$filter);var e="",f;this.stage="assign";if(f=sd(c))this.state.computing="assign",e=this.nextId(),this.recurse(f,e),this.return_(e),e="fn.assign="+this.generateFunction("assign", +"s,v,l");f=qd(c.body);d.stage="inputs";r(f,function(a,b){var c="fn"+b;d.state[c]={vars:[],body:[],own:{}};d.state.computing=c;var e=d.nextId();d.recurse(a,e);d.return_(e);d.state.inputs.push(c);a.watchId=b});this.state.computing="fn";this.stage="main";this.recurse(c);e='"'+this.USE+" "+this.STRICT+'";\n'+this.filterPrefix()+"var fn="+this.generateFunction("fn","s,l,a,i")+e+this.watchFns()+"return fn;";e=(new Function("$filter","ensureSafeMemberName","ensureSafeObject","ensureSafeFunction","getStringValue", +"ensureSafeAssignContext","ifDefined","plus","text",e))(this.$filter,Ua,ra,od,ig,Ib,mg,pd,a);this.state=this.stage=void 0;e.literal=td(c);e.constant=c.constant;return e},USE:"use",STRICT:"strict",watchFns:function(){var a=[],b=this.state.inputs,d=this;r(b,function(b){a.push("var "+b+"="+d.generateFunction(b,"s"))});b.length&&a.push("fn.inputs=["+b.join(",")+"];");return a.join("")},generateFunction:function(a,b){return"function("+b+"){"+this.varsPrefix(a)+this.body(a)+"};"},filterPrefix:function(){var a= +[],b=this;r(this.state.filters,function(d,c){a.push(d+"=$filter("+b.escape(c)+")")});return a.length?"var "+a.join(",")+";":""},varsPrefix:function(a){return this.state[a].vars.length?"var "+this.state[a].vars.join(",")+";":""},body:function(a){return this.state[a].body.join("")},recurse:function(a,b,d,c,e,f){var g,h,k=this,l,m,n;c=c||A;if(!f&&x(a.watchId))b=b||this.nextId(),this.if_("i",this.lazyAssign(b,this.computedMember("i",a.watchId)),this.lazyRecurse(a,b,d,c,e,!0));else switch(a.type){case t.Program:r(a.body, +function(b,c){k.recurse(b.expression,void 0,void 0,function(a){h=a});c!==a.body.length-1?k.current().body.push(h,";"):k.return_(h)});break;case t.Literal:m=this.escape(a.value);this.assign(b,m);c(m);break;case t.UnaryExpression:this.recurse(a.argument,void 0,void 0,function(a){h=a});m=a.operator+"("+this.ifDefined(h,0)+")";this.assign(b,m);c(m);break;case t.BinaryExpression:this.recurse(a.left,void 0,void 0,function(a){g=a});this.recurse(a.right,void 0,void 0,function(a){h=a});m="+"===a.operator? +this.plus(g,h):"-"===a.operator?this.ifDefined(g,0)+a.operator+this.ifDefined(h,0):"("+g+")"+a.operator+"("+h+")";this.assign(b,m);c(m);break;case t.LogicalExpression:b=b||this.nextId();k.recurse(a.left,b);k.if_("&&"===a.operator?b:k.not(b),k.lazyRecurse(a.right,b));c(b);break;case t.ConditionalExpression:b=b||this.nextId();k.recurse(a.test,b);k.if_(b,k.lazyRecurse(a.alternate,b),k.lazyRecurse(a.consequent,b));c(b);break;case t.Identifier:b=b||this.nextId();d&&(d.context="inputs"===k.stage?"s":this.assign(this.nextId(), +this.getHasOwnProperty("l",a.name)+"?l:s"),d.computed=!1,d.name=a.name);Ua(a.name);k.if_("inputs"===k.stage||k.not(k.getHasOwnProperty("l",a.name)),function(){k.if_("inputs"===k.stage||"s",function(){e&&1!==e&&k.if_(k.not(k.nonComputedMember("s",a.name)),k.lazyAssign(k.nonComputedMember("s",a.name),"{}"));k.assign(b,k.nonComputedMember("s",a.name))})},b&&k.lazyAssign(b,k.nonComputedMember("l",a.name)));(k.state.expensiveChecks||Jb(a.name))&&k.addEnsureSafeObject(b);c(b);break;case t.MemberExpression:g= +d&&(d.context=this.nextId())||this.nextId();b=b||this.nextId();k.recurse(a.object,g,void 0,function(){k.if_(k.notNull(g),function(){e&&1!==e&&k.addEnsureSafeAssignContext(g);if(a.computed)h=k.nextId(),k.recurse(a.property,h),k.getStringValue(h),k.addEnsureSafeMemberName(h),e&&1!==e&&k.if_(k.not(k.computedMember(g,h)),k.lazyAssign(k.computedMember(g,h),"{}")),m=k.ensureSafeObject(k.computedMember(g,h)),k.assign(b,m),d&&(d.computed=!0,d.name=h);else{Ua(a.property.name);e&&1!==e&&k.if_(k.not(k.nonComputedMember(g, +a.property.name)),k.lazyAssign(k.nonComputedMember(g,a.property.name),"{}"));m=k.nonComputedMember(g,a.property.name);if(k.state.expensiveChecks||Jb(a.property.name))m=k.ensureSafeObject(m);k.assign(b,m);d&&(d.computed=!1,d.name=a.property.name)}},function(){k.assign(b,"undefined")});c(b)},!!e);break;case t.CallExpression:b=b||this.nextId();a.filter?(h=k.filter(a.callee.name),l=[],r(a.arguments,function(a){var b=k.nextId();k.recurse(a,b);l.push(b)}),m=h+"("+l.join(",")+")",k.assign(b,m),c(b)):(h= +k.nextId(),g={},l=[],k.recurse(a.callee,h,g,function(){k.if_(k.notNull(h),function(){k.addEnsureSafeFunction(h);r(a.arguments,function(a){k.recurse(a,k.nextId(),void 0,function(a){l.push(k.ensureSafeObject(a))})});g.name?(k.state.expensiveChecks||k.addEnsureSafeObject(g.context),m=k.member(g.context,g.name,g.computed)+"("+l.join(",")+")"):m=h+"("+l.join(",")+")";m=k.ensureSafeObject(m);k.assign(b,m)},function(){k.assign(b,"undefined")});c(b)}));break;case t.AssignmentExpression:h=this.nextId();g= +{};if(!rd(a.left))throw ca("lval");this.recurse(a.left,void 0,g,function(){k.if_(k.notNull(g.context),function(){k.recurse(a.right,h);k.addEnsureSafeObject(k.member(g.context,g.name,g.computed));k.addEnsureSafeAssignContext(g.context);m=k.member(g.context,g.name,g.computed)+a.operator+h;k.assign(b,m);c(b||m)})},1);break;case t.ArrayExpression:l=[];r(a.elements,function(a){k.recurse(a,k.nextId(),void 0,function(a){l.push(a)})});m="["+l.join(",")+"]";this.assign(b,m);c(m);break;case t.ObjectExpression:l= +[];n=!1;r(a.properties,function(a){a.computed&&(n=!0)});n?(b=b||this.nextId(),this.assign(b,"{}"),r(a.properties,function(a){a.computed?(g=k.nextId(),k.recurse(a.key,g)):g=a.key.type===t.Identifier?a.key.name:""+a.key.value;h=k.nextId();k.recurse(a.value,h);k.assign(k.member(b,g,a.computed),h)})):(r(a.properties,function(b){k.recurse(b.value,a.constant?void 0:k.nextId(),void 0,function(a){l.push(k.escape(b.key.type===t.Identifier?b.key.name:""+b.key.value)+":"+a)})}),m="{"+l.join(",")+"}",this.assign(b, +m));c(b||m);break;case t.ThisExpression:this.assign(b,"s");c("s");break;case t.LocalsExpression:this.assign(b,"l");c("l");break;case t.NGValueParameter:this.assign(b,"v"),c("v")}},getHasOwnProperty:function(a,b){var d=a+"."+b,c=this.current().own;c.hasOwnProperty(d)||(c[d]=this.nextId(!1,a+"&&("+this.escape(b)+" in "+a+")"));return c[d]},assign:function(a,b){if(a)return this.current().body.push(a,"=",b,";"),a},filter:function(a){this.state.filters.hasOwnProperty(a)||(this.state.filters[a]=this.nextId(!0)); +return this.state.filters[a]},ifDefined:function(a,b){return"ifDefined("+a+","+this.escape(b)+")"},plus:function(a,b){return"plus("+a+","+b+")"},return_:function(a){this.current().body.push("return ",a,";")},if_:function(a,b,d){if(!0===a)b();else{var c=this.current().body;c.push("if(",a,"){");b();c.push("}");d&&(c.push("else{"),d(),c.push("}"))}},not:function(a){return"!("+a+")"},notNull:function(a){return a+"!=null"},nonComputedMember:function(a,b){var d=/[^$_a-zA-Z0-9]/g;return/[$_a-zA-Z][$_a-zA-Z0-9]*/.test(b)? +a+"."+b:a+'["'+b.replace(d,this.stringEscapeFn)+'"]'},computedMember:function(a,b){return a+"["+b+"]"},member:function(a,b,d){return d?this.computedMember(a,b):this.nonComputedMember(a,b)},addEnsureSafeObject:function(a){this.current().body.push(this.ensureSafeObject(a),";")},addEnsureSafeMemberName:function(a){this.current().body.push(this.ensureSafeMemberName(a),";")},addEnsureSafeFunction:function(a){this.current().body.push(this.ensureSafeFunction(a),";")},addEnsureSafeAssignContext:function(a){this.current().body.push(this.ensureSafeAssignContext(a), +";")},ensureSafeObject:function(a){return"ensureSafeObject("+a+",text)"},ensureSafeMemberName:function(a){return"ensureSafeMemberName("+a+",text)"},ensureSafeFunction:function(a){return"ensureSafeFunction("+a+",text)"},getStringValue:function(a){this.assign(a,"getStringValue("+a+")")},ensureSafeAssignContext:function(a){return"ensureSafeAssignContext("+a+",text)"},lazyRecurse:function(a,b,d,c,e,f){var g=this;return function(){g.recurse(a,b,d,c,e,f)}},lazyAssign:function(a,b){var d=this;return function(){d.assign(a, +b)}},stringEscapeRegex:/[^ a-zA-Z0-9]/g,stringEscapeFn:function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)},escape:function(a){if(F(a))return"'"+a.replace(this.stringEscapeRegex,this.stringEscapeFn)+"'";if(S(a))return a.toString();if(!0===a)return"true";if(!1===a)return"false";if(null===a)return"null";if("undefined"===typeof a)return"undefined";throw ca("esc");},nextId:function(a,b){var d="v"+this.state.nextId++;a||this.current().vars.push(d+(b?"="+b:""));return d},current:function(){return this.state[this.state.computing]}}; +vd.prototype={compile:function(a,b){var d=this,c=this.astBuilder.ast(a);this.expression=a;this.expensiveChecks=b;$(c,d.$filter);var e,f;if(e=sd(c))f=this.recurse(e);e=qd(c.body);var g;e&&(g=[],r(e,function(a,b){var c=d.recurse(a);a.input=c;g.push(c);a.watchId=b}));var h=[];r(c.body,function(a){h.push(d.recurse(a.expression))});e=0===c.body.length?A:1===c.body.length?h[0]:function(a,b){var c;r(h,function(d){c=d(a,b)});return c};f&&(e.assign=function(a,b,c){return f(a,c,b)});g&&(e.inputs=g);e.literal= +td(c);e.constant=c.constant;return e},recurse:function(a,b,d){var c,e,f=this,g;if(a.input)return this.inputs(a.input,a.watchId);switch(a.type){case t.Literal:return this.value(a.value,b);case t.UnaryExpression:return e=this.recurse(a.argument),this["unary"+a.operator](e,b);case t.BinaryExpression:return c=this.recurse(a.left),e=this.recurse(a.right),this["binary"+a.operator](c,e,b);case t.LogicalExpression:return c=this.recurse(a.left),e=this.recurse(a.right),this["binary"+a.operator](c,e,b);case t.ConditionalExpression:return this["ternary?:"](this.recurse(a.test), +this.recurse(a.alternate),this.recurse(a.consequent),b);case t.Identifier:return Ua(a.name,f.expression),f.identifier(a.name,f.expensiveChecks||Jb(a.name),b,d,f.expression);case t.MemberExpression:return c=this.recurse(a.object,!1,!!d),a.computed||(Ua(a.property.name,f.expression),e=a.property.name),a.computed&&(e=this.recurse(a.property)),a.computed?this.computedMember(c,e,b,d,f.expression):this.nonComputedMember(c,e,f.expensiveChecks,b,d,f.expression);case t.CallExpression:return g=[],r(a.arguments, +function(a){g.push(f.recurse(a))}),a.filter&&(e=this.$filter(a.callee.name)),a.filter||(e=this.recurse(a.callee,!0)),a.filter?function(a,c,d,f){for(var n=[],p=0;p":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)>b(c,e,f,g);return d?{value:c}:c}},"binary<=":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)<=b(c,e,f,g);return d?{value:c}:c}},"binary>=":function(a, +b,d){return function(c,e,f,g){c=a(c,e,f,g)>=b(c,e,f,g);return d?{value:c}:c}},"binary&&":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)&&b(c,e,f,g);return d?{value:c}:c}},"binary||":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)||b(c,e,f,g);return d?{value:c}:c}},"ternary?:":function(a,b,d,c){return function(e,f,g,h){e=a(e,f,g,h)?b(e,f,g,h):d(e,f,g,h);return c?{value:e}:e}},value:function(a,b){return function(){return b?{context:void 0,name:void 0,value:a}:a}},identifier:function(a, +b,d,c,e){return function(f,g,h,k){f=g&&a in g?g:f;c&&1!==c&&f&&!f[a]&&(f[a]={});g=f?f[a]:void 0;b&&ra(g,e);return d?{context:f,name:a,value:g}:g}},computedMember:function(a,b,d,c,e){return function(f,g,h,k){var l=a(f,g,h,k),m,n;null!=l&&(m=b(f,g,h,k),m+="",Ua(m,e),c&&1!==c&&(Ib(l),l&&!l[m]&&(l[m]={})),n=l[m],ra(n,e));return d?{context:l,name:m,value:n}:n}},nonComputedMember:function(a,b,d,c,e,f){return function(g,h,k,l){g=a(g,h,k,l);e&&1!==e&&(Ib(g),g&&!g[b]&&(g[b]={}));h=null!=g?g[b]:void 0;(d|| +Jb(b))&&ra(h,f);return c?{context:g,name:b,value:h}:h}},inputs:function(a,b){return function(d,c,e,f){return f?f[b]:a(d,c,e)}}};var kc=function(a,b,d){this.lexer=a;this.$filter=b;this.options=d;this.ast=new t(a,d);this.astCompiler=d.csp?new vd(this.ast,b):new ud(this.ast,b)};kc.prototype={constructor:kc,parse:function(a){return this.astCompiler.compile(a,this.options.expensiveChecks)}};var ng=Object.prototype.valueOf,ya=O("$sce"),ma={HTML:"html",CSS:"css",URL:"url",RESOURCE_URL:"resourceUrl",JS:"js"}, +pg=O("$compile"),Y=E.document.createElement("a"),zd=qa(E.location.href);Ad.$inject=["$document"];Mc.$inject=["$provide"];var Hd=22,Gd=".",mc="0";Bd.$inject=["$locale"];Dd.$inject=["$locale"];var Ag={yyyy:X("FullYear",4,0,!1,!0),yy:X("FullYear",2,0,!0,!0),y:X("FullYear",1,0,!1,!0),MMMM:kb("Month"),MMM:kb("Month",!0),MM:X("Month",2,1),M:X("Month",1,1),LLLL:kb("Month",!1,!0),dd:X("Date",2),d:X("Date",1),HH:X("Hours",2),H:X("Hours",1),hh:X("Hours",2,-12),h:X("Hours",1,-12),mm:X("Minutes",2),m:X("Minutes", +1),ss:X("Seconds",2),s:X("Seconds",1),sss:X("Milliseconds",3),EEEE:kb("Day"),EEE:kb("Day",!0),a:function(a,b){return 12>a.getHours()?b.AMPMS[0]:b.AMPMS[1]},Z:function(a,b,d){a=-1*d;return a=(0<=a?"+":"")+(Kb(Math[0=a.getFullYear()?b.ERANAMES[0]:b.ERANAMES[1]}},zg=/((?:[^yMLdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|L+|d+|H+|h+|m+|s+|a|Z|G+|w+))(.*)/,yg=/^\-?\d+$/;Cd.$inject=["$locale"]; +var tg=da(M),ug=da(ub);Ed.$inject=["$parse"];var pe=da({restrict:"E",compile:function(a,b){if(!b.href&&!b.xlinkHref)return function(a,b){if("a"===b[0].nodeName.toLowerCase()){var e="[object SVGAnimatedString]"===ka.call(b.prop("href"))?"xlink:href":"href";b.on("click",function(a){b.attr(e)||a.preventDefault()})}}}}),vb={};r(Eb,function(a,b){function d(a,d,e){a.$watch(e[c],function(a){e.$set(b,!!a)})}if("multiple"!=a){var c=xa("ng-"+b),e=d;"checked"===a&&(e=function(a,b,e){e.ngModel!==e[c]&&d(a,b, +e)});vb[c]=function(){return{restrict:"A",priority:100,link:e}}}});r(cd,function(a,b){vb[b]=function(){return{priority:100,link:function(a,c,e){if("ngPattern"===b&&"/"==e.ngPattern.charAt(0)&&(c=e.ngPattern.match(Cg))){e.$set("ngPattern",new RegExp(c[1],c[2]));return}a.$watch(e[b],function(a){e.$set(b,a)})}}}});r(["src","srcset","href"],function(a){var b=xa("ng-"+a);vb[b]=function(){return{priority:99,link:function(d,c,e){var f=a,g=a;"href"===a&&"[object SVGAnimatedString]"===ka.call(c.prop("href"))&& +(g="xlinkHref",e.$attr[g]="xlink:href",f=null);e.$observe(b,function(b){b?(e.$set(g,b),Ba&&f&&c.prop(f,e[g])):"href"===a&&e.$set(g,null)})}}}});var Lb={$addControl:A,$$renameControl:function(a,b){a.$name=b},$removeControl:A,$setValidity:A,$setDirty:A,$setPristine:A,$setSubmitted:A};Kd.$inject=["$element","$attrs","$scope","$animate","$interpolate"];var Td=function(a){return["$timeout","$parse",function(b,d){function c(a){return""===a?d('this[""]').assign:d(a).assign||A}return{name:"form",restrict:a? +"EAC":"E",require:["form","^^?form"],controller:Kd,compile:function(d,f){d.addClass(Va).addClass(ob);var g=f.name?"name":a&&f.ngForm?"ngForm":!1;return{pre:function(a,d,e,f){var n=f[0];if(!("action"in e)){var p=function(b){a.$apply(function(){n.$commitViewValue();n.$setSubmitted()});b.preventDefault()};d[0].addEventListener("submit",p,!1);d.on("$destroy",function(){b(function(){d[0].removeEventListener("submit",p,!1)},0,!1)})}(f[1]||n.$$parentForm).$addControl(n);var s=g?c(n.$name):A;g&&(s(a,n),e.$observe(g, +function(b){n.$name!==b&&(s(a,void 0),n.$$parentForm.$$renameControl(n,b),s=c(n.$name),s(a,n))}));d.on("$destroy",function(){n.$$parentForm.$removeControl(n);s(a,void 0);R(n,Lb)})}}}}}]},qe=Td(),De=Td(!0),Bg=/^\d{4,}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+(?:[+-][0-2]\d:[0-5]\d|Z)$/,Kg=/^[a-z][a-z\d.+-]*:\/*(?:[^:@]+(?::[^@]+)?@)?(?:[^\s:/?#]+|\[[a-f\d:]+\])(?::\d+)?(?:\/[^?#]*)?(?:\?[^#]*)?(?:#.*)?$/i,Lg=/^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+\/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+\/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$/, +Mg=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))([eE][+-]?\d+)?\s*$/,Ud=/^(\d{4,})-(\d{2})-(\d{2})$/,Vd=/^(\d{4,})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,rc=/^(\d{4,})-W(\d\d)$/,Wd=/^(\d{4,})-(\d\d)$/,Xd=/^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,Md=T();r(["date","datetime-local","month","time","week"],function(a){Md[a]=!0});var Yd={text:function(a,b,d,c,e,f){lb(a,b,d,c,e,f);pc(c)},date:mb("date",Ud,Nb(Ud,["yyyy","MM","dd"]),"yyyy-MM-dd"),"datetime-local":mb("datetimelocal",Vd,Nb(Vd,"yyyy MM dd HH mm ss sss".split(" ")), +"yyyy-MM-ddTHH:mm:ss.sss"),time:mb("time",Xd,Nb(Xd,["HH","mm","ss","sss"]),"HH:mm:ss.sss"),week:mb("week",rc,function(a,b){if(ia(a))return a;if(F(a)){rc.lastIndex=0;var d=rc.exec(a);if(d){var c=+d[1],e=+d[2],f=d=0,g=0,h=0,k=Id(c),e=7*(e-1);b&&(d=b.getHours(),f=b.getMinutes(),g=b.getSeconds(),h=b.getMilliseconds());return new Date(c,0,k.getDate()+e,d,f,g,h)}}return NaN},"yyyy-Www"),month:mb("month",Wd,Nb(Wd,["yyyy","MM"]),"yyyy-MM"),number:function(a,b,d,c,e,f){Nd(a,b,d,c);lb(a,b,d,c,e,f);c.$$parserName= +"number";c.$parsers.push(function(a){if(c.$isEmpty(a))return null;if(Mg.test(a))return parseFloat(a)});c.$formatters.push(function(a){if(!c.$isEmpty(a)){if(!S(a))throw nb("numfmt",a);a=a.toString()}return a});if(x(d.min)||d.ngMin){var g;c.$validators.min=function(a){return c.$isEmpty(a)||w(g)||a>=g};d.$observe("min",function(a){x(a)&&!S(a)&&(a=parseFloat(a,10));g=S(a)&&!isNaN(a)?a:void 0;c.$validate()})}if(x(d.max)||d.ngMax){var h;c.$validators.max=function(a){return c.$isEmpty(a)||w(h)||a<=h};d.$observe("max", +function(a){x(a)&&!S(a)&&(a=parseFloat(a,10));h=S(a)&&!isNaN(a)?a:void 0;c.$validate()})}},url:function(a,b,d,c,e,f){lb(a,b,d,c,e,f);pc(c);c.$$parserName="url";c.$validators.url=function(a,b){var d=a||b;return c.$isEmpty(d)||Kg.test(d)}},email:function(a,b,d,c,e,f){lb(a,b,d,c,e,f);pc(c);c.$$parserName="email";c.$validators.email=function(a,b){var d=a||b;return c.$isEmpty(d)||Lg.test(d)}},radio:function(a,b,d,c){w(d.name)&&b.attr("name",++pb);b.on("click",function(a){b[0].checked&&c.$setViewValue(d.value, +a&&a.type)});c.$render=function(){b[0].checked=d.value==c.$viewValue};d.$observe("value",c.$render)},checkbox:function(a,b,d,c,e,f,g,h){var k=Od(h,a,"ngTrueValue",d.ngTrueValue,!0),l=Od(h,a,"ngFalseValue",d.ngFalseValue,!1);b.on("click",function(a){c.$setViewValue(b[0].checked,a&&a.type)});c.$render=function(){b[0].checked=c.$viewValue};c.$isEmpty=function(a){return!1===a};c.$formatters.push(function(a){return na(a,k)});c.$parsers.push(function(a){return a?k:l})},hidden:A,button:A,submit:A,reset:A, +file:A},Gc=["$browser","$sniffer","$filter","$parse",function(a,b,d,c){return{restrict:"E",require:["?ngModel"],link:{pre:function(e,f,g,h){h[0]&&(Yd[M(g.type)]||Yd.text)(e,f,g,h[0],b,a,d,c)}}}}],Ng=/^(true|false|\d+)$/,Ve=function(){return{restrict:"A",priority:100,compile:function(a,b){return Ng.test(b.ngValue)?function(a,b,e){e.$set("value",a.$eval(e.ngValue))}:function(a,b,e){a.$watch(e.ngValue,function(a){e.$set("value",a)})}}}},ve=["$compile",function(a){return{restrict:"AC",compile:function(b){a.$$addBindingClass(b); +return function(b,c,e){a.$$addBindingInfo(c,e.ngBind);c=c[0];b.$watch(e.ngBind,function(a){c.textContent=w(a)?"":a})}}}}],xe=["$interpolate","$compile",function(a,b){return{compile:function(d){b.$$addBindingClass(d);return function(c,d,f){c=a(d.attr(f.$attr.ngBindTemplate));b.$$addBindingInfo(d,c.expressions);d=d[0];f.$observe("ngBindTemplate",function(a){d.textContent=w(a)?"":a})}}}}],we=["$sce","$parse","$compile",function(a,b,d){return{restrict:"A",compile:function(c,e){var f=b(e.ngBindHtml),g= +b(e.ngBindHtml,function(b){return a.valueOf(b)});d.$$addBindingClass(c);return function(b,c,e){d.$$addBindingInfo(c,e.ngBindHtml);b.$watch(g,function(){var d=f(b);c.html(a.getTrustedHtml(d)||"")})}}}}],Ue=da({restrict:"A",require:"ngModel",link:function(a,b,d,c){c.$viewChangeListeners.push(function(){a.$eval(d.ngChange)})}}),ye=qc("",!0),Ae=qc("Odd",0),ze=qc("Even",1),Be=Ma({compile:function(a,b){b.$set("ngCloak",void 0);a.removeClass("ng-cloak")}}),Ce=[function(){return{restrict:"A",scope:!0,controller:"@", +priority:500}}],Lc={},Og={blur:!0,focus:!0};r("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "),function(a){var b=xa("ng-"+a);Lc[b]=["$parse","$rootScope",function(d,c){return{restrict:"A",compile:function(e,f){var g=d(f[b],null,!0);return function(b,d){d.on(a,function(d){var e=function(){g(b,{$event:d})};Og[a]&&c.$$phase?b.$evalAsync(e):b.$apply(e)})}}}}]});var Fe=["$animate","$compile",function(a, +b){return{multiElement:!0,transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(d,c,e,f,g){var h,k,l;d.$watch(e.ngIf,function(d){d?k||g(function(d,f){k=f;d[d.length++]=b.$$createComment("end ngIf",e.ngIf);h={clone:d};a.enter(d,c.parent(),c)}):(l&&(l.remove(),l=null),k&&(k.$destroy(),k=null),h&&(l=tb(h.clone),a.leave(l).then(function(){l=null}),h=null))})}}}],Ge=["$templateRequest","$anchorScroll","$animate",function(a,b,d){return{restrict:"ECA",priority:400,terminal:!0, +transclude:"element",controller:ea.noop,compile:function(c,e){var f=e.ngInclude||e.src,g=e.onload||"",h=e.autoscroll;return function(c,e,m,n,p){var s=0,r,t,q,w=function(){t&&(t.remove(),t=null);r&&(r.$destroy(),r=null);q&&(d.leave(q).then(function(){t=null}),t=q,q=null)};c.$watch(f,function(f){var m=function(){!x(h)||h&&!c.$eval(h)||b()},t=++s;f?(a(f,!0).then(function(a){if(!c.$$destroyed&&t===s){var b=c.$new();n.template=a;a=p(b,function(a){w();d.enter(a,null,e).then(m)});r=b;q=a;r.$emit("$includeContentLoaded", +f);c.$eval(g)}},function(){c.$$destroyed||t!==s||(w(),c.$emit("$includeContentError",f))}),c.$emit("$includeContentRequested",f)):(w(),n.template=null)})}}}}],Xe=["$compile",function(a){return{restrict:"ECA",priority:-400,require:"ngInclude",link:function(b,d,c,e){ka.call(d[0]).match(/SVG/)?(d.empty(),a(Oc(e.template,E.document).childNodes)(b,function(a){d.append(a)},{futureParentElement:d})):(d.html(e.template),a(d.contents())(b))}}}],He=Ma({priority:450,compile:function(){return{pre:function(a, +b,d){a.$eval(d.ngInit)}}}}),Te=function(){return{restrict:"A",priority:100,require:"ngModel",link:function(a,b,d,c){var e=b.attr(d.$attr.ngList)||", ",f="false"!==d.ngTrim,g=f?W(e):e;c.$parsers.push(function(a){if(!w(a)){var b=[];a&&r(a.split(g),function(a){a&&b.push(f?W(a):a)});return b}});c.$formatters.push(function(a){if(J(a))return a.join(e)});c.$isEmpty=function(a){return!a||!a.length}}}},ob="ng-valid",Pd="ng-invalid",Va="ng-pristine",Mb="ng-dirty",Rd="ng-pending",nb=O("ngModel"),Pg=["$scope", +"$exceptionHandler","$attrs","$element","$parse","$animate","$timeout","$rootScope","$q","$interpolate",function(a,b,d,c,e,f,g,h,k,l){this.$modelValue=this.$viewValue=Number.NaN;this.$$rawModelValue=void 0;this.$validators={};this.$asyncValidators={};this.$parsers=[];this.$formatters=[];this.$viewChangeListeners=[];this.$untouched=!0;this.$touched=!1;this.$pristine=!0;this.$dirty=!1;this.$valid=!0;this.$invalid=!1;this.$error={};this.$$success={};this.$pending=void 0;this.$name=l(d.name||"",!1)(a); +this.$$parentForm=Lb;var m=e(d.ngModel),n=m.assign,p=m,s=n,t=null,I,q=this;this.$$setOptions=function(a){if((q.$options=a)&&a.getterSetter){var b=e(d.ngModel+"()"),f=e(d.ngModel+"($$$p)");p=function(a){var c=m(a);z(c)&&(c=b(a));return c};s=function(a,b){z(m(a))?f(a,{$$$p:b}):n(a,b)}}else if(!m.assign)throw nb("nonassign",d.ngModel,va(c));};this.$render=A;this.$isEmpty=function(a){return w(a)||""===a||null===a||a!==a};this.$$updateEmptyClasses=function(a){q.$isEmpty(a)?(f.removeClass(c,"ng-not-empty"), +f.addClass(c,"ng-empty")):(f.removeClass(c,"ng-empty"),f.addClass(c,"ng-not-empty"))};var K=0;Ld({ctrl:this,$element:c,set:function(a,b){a[b]=!0},unset:function(a,b){delete a[b]},$animate:f});this.$setPristine=function(){q.$dirty=!1;q.$pristine=!0;f.removeClass(c,Mb);f.addClass(c,Va)};this.$setDirty=function(){q.$dirty=!0;q.$pristine=!1;f.removeClass(c,Va);f.addClass(c,Mb);q.$$parentForm.$setDirty()};this.$setUntouched=function(){q.$touched=!1;q.$untouched=!0;f.setClass(c,"ng-untouched","ng-touched")}; +this.$setTouched=function(){q.$touched=!0;q.$untouched=!1;f.setClass(c,"ng-touched","ng-untouched")};this.$rollbackViewValue=function(){g.cancel(t);q.$viewValue=q.$$lastCommittedViewValue;q.$render()};this.$validate=function(){if(!S(q.$modelValue)||!isNaN(q.$modelValue)){var a=q.$$rawModelValue,b=q.$valid,c=q.$modelValue,d=q.$options&&q.$options.allowInvalid;q.$$runValidators(a,q.$$lastCommittedViewValue,function(e){d||b===e||(q.$modelValue=e?a:void 0,q.$modelValue!==c&&q.$$writeModelToScope())})}}; +this.$$runValidators=function(a,b,c){function d(){var c=!0;r(q.$validators,function(d,e){var g=d(a,b);c=c&&g;f(e,g)});return c?!0:(r(q.$asyncValidators,function(a,b){f(b,null)}),!1)}function e(){var c=[],d=!0;r(q.$asyncValidators,function(e,g){var h=e(a,b);if(!h||!z(h.then))throw nb("nopromise",h);f(g,void 0);c.push(h.then(function(){f(g,!0)},function(){d=!1;f(g,!1)}))});c.length?k.all(c).then(function(){g(d)},A):g(!0)}function f(a,b){h===K&&q.$setValidity(a,b)}function g(a){h===K&&c(a)}K++;var h= +K;(function(){var a=q.$$parserName||"parse";if(w(I))f(a,null);else return I||(r(q.$validators,function(a,b){f(b,null)}),r(q.$asyncValidators,function(a,b){f(b,null)})),f(a,I),I;return!0})()?d()?e():g(!1):g(!1)};this.$commitViewValue=function(){var a=q.$viewValue;g.cancel(t);if(q.$$lastCommittedViewValue!==a||""===a&&q.$$hasNativeValidators)q.$$updateEmptyClasses(a),q.$$lastCommittedViewValue=a,q.$pristine&&this.$setDirty(),this.$$parseAndValidate()};this.$$parseAndValidate=function(){var b=q.$$lastCommittedViewValue; +if(I=w(b)?void 0:!0)for(var c=0;ce||c.$isEmpty(b)||b.length<=e}}}}},Jc=function(){return{restrict:"A",require:"?ngModel",link:function(a,b,d,c){if(c){var e=0;d.$observe("minlength",function(a){e=aa(a)||0;c.$validate()});c.$validators.minlength=function(a,b){return c.$isEmpty(b)||b.length>=e}}}}};E.angular.bootstrap?E.console&&console.log("WARNING: Tried to load angular more than once."):(ke(),me(ea),ea.module("ngLocale",[],["$provide",function(a){function b(a){a+= +"";var b=a.indexOf(".");return-1==b?0:a.length-b-1}a.value("$locale",{DATETIME_FORMATS:{AMPMS:["AM","PM"],DAY:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),ERANAMES:["Before Christ","Anno Domini"],ERAS:["BC","AD"],FIRSTDAYOFWEEK:6,MONTH:"January February March April May June July August September October November December".split(" "),SHORTDAY:"Sun Mon Tue Wed Thu Fri Sat".split(" "),SHORTMONTH:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),STANDALONEMONTH:"January February March April May June July August September October November December".split(" "), +WEEKENDRANGE:[5,6],fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",medium:"MMM d, y h:mm:ss a",mediumDate:"MMM d, y",mediumTime:"h:mm:ss a","short":"M/d/yy h:mm a",shortDate:"M/d/yy",shortTime:"h:mm a"},NUMBER_FORMATS:{CURRENCY_SYM:"$",DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{gSize:3,lgSize:3,maxFrac:3,minFrac:0,minInt:1,negPre:"-",negSuf:"",posPre:"",posSuf:""},{gSize:3,lgSize:3,maxFrac:2,minFrac:2,minInt:1,negPre:"-\u00a4",negSuf:"",posPre:"\u00a4",posSuf:""}]},id:"en-us",localeID:"en_US",pluralCat:function(a, +c){var e=a|0,f=c;void 0===f&&(f=Math.min(b(a),3));Math.pow(10,f);return 1==e&&0==f?"one":"other"}})}]),B(E.document).ready(function(){ge(E.document,Bc)}))})(window);!window.angular.$$csp().noInlineStyle&&window.angular.element(document.head).prepend(''); +//# sourceMappingURL=angular.min.js.map diff --git a/spring-rest-angular/src/main/webapp/resources/vendor/angular/angular.min.js.map b/spring-rest-angular/src/main/webapp/resources/vendor/angular/angular.min.js.map new file mode 100644 index 0000000000..6d34cd22b3 --- /dev/null +++ b/spring-rest-angular/src/main/webapp/resources/vendor/angular/angular.min.js.map @@ -0,0 +1,8 @@ +{ +"version":3, +"file":"angular.min.js", +"lineCount":315, +"mappings":"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", +"sources":["angular.js"], +"names":["window","minErr","isArrayLike","obj","isWindow","isArray","isString","jqLite","length","Object","isNumber","Array","item","forEach","iterator","context","key","isFunction","hasOwnProperty","call","isPrimitive","isBlankObject","forEachSorted","keys","sort","i","reverseParams","iteratorFn","value","nextUid","uid","baseExtend","dst","objs","deep","h","$$hashKey","ii","isObject","j","jj","src","isDate","Date","valueOf","isRegExp","RegExp","nodeName","cloneNode","isElement","clone","extend","slice","arguments","merge","toInt","str","parseInt","inherit","parent","extra","create","noop","identity","$","valueFn","valueRef","hasCustomToString","toString","isUndefined","isDefined","getPrototypeOf","isScope","$evalAsync","$watch","isBoolean","isTypedArray","TYPED_ARRAY_REGEXP","test","node","prop","attr","find","makeMap","items","split","nodeName_","element","lowercase","arrayRemove","array","index","indexOf","splice","copy","source","destination","copyRecurse","push","copyElement","stackSource","stackDest","ngMinErr","needsRecurse","copyType","undefined","constructor","buffer","copied","ArrayBuffer","byteLength","set","Uint8Array","re","match","lastIndex","type","equals","o1","o2","t1","t2","getTime","keySet","createMap","charAt","concat","array1","array2","bind","self","fn","curryArgs","startIndex","apply","toJsonReplacer","val","document","toJson","pretty","JSON","stringify","fromJson","json","parse","timezoneToOffset","timezone","fallback","replace","ALL_COLONS","requestedTimezoneOffset","isNaN","convertTimezoneToLocal","date","reverse","dateTimezoneOffset","getTimezoneOffset","timezoneOffset","setMinutes","getMinutes","minutes","startingTag","empty","e","elemHtml","append","html","nodeType","NODE_TYPE_TEXT","tryDecodeURIComponent","decodeURIComponent","parseKeyValue","keyValue","splitPoint","substring","toKeyValue","parts","arrayValue","encodeUriQuery","join","encodeUriSegment","pctEncodeSpaces","encodeURIComponent","getNgAttribute","ngAttr","ngAttrPrefixes","getAttribute","angularInit","bootstrap","appElement","module","config","prefix","name","hasAttribute","candidate","querySelector","strictDi","modules","defaultConfig","doBootstrap","injector","tag","unshift","$provide","debugInfoEnabled","$compileProvider","createInjector","invoke","bootstrapApply","scope","compile","$apply","data","NG_ENABLE_DEBUG_INFO","NG_DEFER_BOOTSTRAP","angular","resumeBootstrap","angular.resumeBootstrap","extraModules","resumeDeferredBootstrap","reloadWithDebugInfo","location","reload","getTestability","rootElement","get","snake_case","separator","SNAKE_CASE_REGEXP","letter","pos","toLowerCase","bindJQuery","originalCleanData","bindJQueryFired","jqName","jq","jQuery","on","JQLitePrototype","isolateScope","controller","inheritedData","cleanData","jQuery.cleanData","elems","events","elem","_data","$destroy","triggerHandler","JQLite","assertArg","arg","reason","assertArgFn","acceptArrayAnnotation","assertNotHasOwnProperty","getter","path","bindFnToScope","lastInstance","len","getBlockNodes","nodes","endNode","blockNodes","nextSibling","setupModuleLoader","ensure","factory","$injectorMinErr","$$minErr","requires","configFn","invokeLater","provider","method","insertMethod","queue","invokeQueue","moduleInstance","invokeLaterAndSetModuleName","recipeName","factoryFunction","$$moduleName","configBlocks","runBlocks","_invokeQueue","_configBlocks","_runBlocks","service","constant","decorator","animation","filter","directive","component","run","block","shallowCopy","publishExternalAPI","version","uppercase","counter","csp","angularModule","ngModule","$$sanitizeUri","$$SanitizeUriProvider","$CompileProvider","a","htmlAnchorDirective","input","inputDirective","textarea","form","formDirective","script","scriptDirective","select","selectDirective","style","styleDirective","option","optionDirective","ngBind","ngBindDirective","ngBindHtml","ngBindHtmlDirective","ngBindTemplate","ngBindTemplateDirective","ngClass","ngClassDirective","ngClassEven","ngClassEvenDirective","ngClassOdd","ngClassOddDirective","ngCloak","ngCloakDirective","ngController","ngControllerDirective","ngForm","ngFormDirective","ngHide","ngHideDirective","ngIf","ngIfDirective","ngInclude","ngIncludeDirective","ngInit","ngInitDirective","ngNonBindable","ngNonBindableDirective","ngPluralize","ngPluralizeDirective","ngRepeat","ngRepeatDirective","ngShow","ngShowDirective","ngStyle","ngStyleDirective","ngSwitch","ngSwitchDirective","ngSwitchWhen","ngSwitchWhenDirective","ngSwitchDefault","ngSwitchDefaultDirective","ngOptions","ngOptionsDirective","ngTransclude","ngTranscludeDirective","ngModel","ngModelDirective","ngList","ngListDirective","ngChange","ngChangeDirective","pattern","patternDirective","ngPattern","required","requiredDirective","ngRequired","minlength","minlengthDirective","ngMinlength","maxlength","maxlengthDirective","ngMaxlength","ngValue","ngValueDirective","ngModelOptions","ngModelOptionsDirective","ngIncludeFillContentDirective","ngAttributeAliasDirectives","ngEventDirectives","$anchorScroll","$AnchorScrollProvider","$animate","$AnimateProvider","$animateCss","$CoreAnimateCssProvider","$$animateJs","$$CoreAnimateJsProvider","$$animateQueue","$$CoreAnimateQueueProvider","$$AnimateRunner","$$AnimateRunnerFactoryProvider","$$animateAsyncRun","$$AnimateAsyncRunFactoryProvider","$browser","$BrowserProvider","$cacheFactory","$CacheFactoryProvider","$controller","$ControllerProvider","$document","$DocumentProvider","$exceptionHandler","$ExceptionHandlerProvider","$filter","$FilterProvider","$$forceReflow","$$ForceReflowProvider","$interpolate","$InterpolateProvider","$interval","$IntervalProvider","$http","$HttpProvider","$httpParamSerializer","$HttpParamSerializerProvider","$httpParamSerializerJQLike","$HttpParamSerializerJQLikeProvider","$httpBackend","$HttpBackendProvider","$xhrFactory","$xhrFactoryProvider","$location","$LocationProvider","$log","$LogProvider","$parse","$ParseProvider","$rootScope","$RootScopeProvider","$q","$QProvider","$$q","$$QProvider","$sce","$SceProvider","$sceDelegate","$SceDelegateProvider","$sniffer","$SnifferProvider","$templateCache","$TemplateCacheProvider","$templateRequest","$TemplateRequestProvider","$$testability","$$TestabilityProvider","$timeout","$TimeoutProvider","$window","$WindowProvider","$$rAF","$$RAFProvider","$$jqLite","$$jqLiteProvider","$$HashMap","$$HashMapProvider","$$cookieReader","$$CookieReaderProvider","camelCase","SPECIAL_CHARS_REGEXP","_","offset","toUpperCase","MOZ_HACK_REGEXP","jqLiteAcceptsData","NODE_TYPE_ELEMENT","NODE_TYPE_DOCUMENT","jqLiteBuildFragment","tmp","fragment","createDocumentFragment","HTML_REGEXP","appendChild","createElement","TAG_NAME_REGEXP","exec","wrap","wrapMap","_default","innerHTML","XHTML_TAG_REGEXP","lastChild","childNodes","firstChild","textContent","createTextNode","jqLiteWrapNode","wrapper","parentNode","replaceChild","argIsString","trim","jqLiteMinErr","parsed","SINGLE_TAG_REGEXP","jqLiteAddNodes","jqLiteClone","jqLiteDealoc","onlyDescendants","jqLiteRemoveData","querySelectorAll","descendants","l","jqLiteOff","unsupported","expandoStore","jqLiteExpandoStore","handle","removeHandler","listenerFns","removeEventListener","MOUSE_EVENT_MAP","expandoId","ng339","jqCache","createIfNecessary","jqId","jqLiteData","isSimpleSetter","isSimpleGetter","massGetter","jqLiteHasClass","selector","jqLiteRemoveClass","cssClasses","setAttribute","cssClass","jqLiteAddClass","existingClasses","root","elements","jqLiteController","jqLiteInheritedData","documentElement","names","NODE_TYPE_DOCUMENT_FRAGMENT","host","jqLiteEmpty","removeChild","jqLiteRemove","keepData","jqLiteDocumentLoaded","action","win","readyState","setTimeout","getBooleanAttrName","booleanAttr","BOOLEAN_ATTR","BOOLEAN_ELEMENTS","createEventHandler","eventHandler","event","isDefaultPrevented","event.isDefaultPrevented","defaultPrevented","eventFns","eventFnsLength","immediatePropagationStopped","originalStopImmediatePropagation","stopImmediatePropagation","event.stopImmediatePropagation","stopPropagation","isImmediatePropagationStopped","event.isImmediatePropagationStopped","handlerWrapper","specialHandlerWrapper","defaultHandlerWrapper","handler","specialMouseHandlerWrapper","target","related","relatedTarget","jqLiteContains","$get","this.$get","hasClass","classes","addClass","removeClass","hashKey","nextUidFn","objType","HashMap","isolatedUid","this.nextUid","put","extractArgs","fnText","Function","prototype","STRIP_COMMENTS","ARROW_ARG","FN_ARGS","anonFn","args","modulesToLoad","supportObject","delegate","provider_","providerInjector","instantiate","providerCache","providerSuffix","enforceReturnValue","enforcedReturnValue","result","instanceInjector","factoryFn","enforce","loadModules","moduleFn","runInvokeQueue","invokeArgs","loadedModules","message","stack","createInternalInjector","cache","getService","serviceName","caller","INSTANTIATING","err","shift","injectionArgs","locals","$inject","$$annotate","msie","Type","ctor","annotate","has","$injector","instanceCache","decorFn","origProvider","orig$get","origProvider.$get","origInstance","$delegate","protoInstanceInjector","autoScrollingEnabled","disableAutoScrolling","this.disableAutoScrolling","getFirstAnchor","list","some","scrollTo","scrollIntoView","scroll","yOffset","getComputedStyle","position","getBoundingClientRect","bottom","elemTop","top","scrollBy","hash","elm","getElementById","getElementsByName","autoScrollWatch","autoScrollWatchAction","newVal","oldVal","mergeClasses","b","splitClasses","klass","prepareAnimateOptions","options","Browser","completeOutstandingRequest","outstandingRequestCount","outstandingRequestCallbacks","pop","error","cacheStateAndFireUrlChange","pendingLocation","cacheState","fireUrlChange","cachedState","getCurrentState","lastCachedState","lastBrowserUrl","url","lastHistoryState","urlChangeListeners","listener","history","clearTimeout","pendingDeferIds","isMock","$$completeOutstandingRequest","$$incOutstandingRequestCount","self.$$incOutstandingRequestCount","notifyWhenNoOutstandingRequests","self.notifyWhenNoOutstandingRequests","callback","href","baseElement","state","self.url","sameState","sameBase","stripHash","substr","self.state","urlChangeInit","onUrlChange","self.onUrlChange","$$applicationDestroyed","self.$$applicationDestroyed","off","$$checkUrlChange","baseHref","self.baseHref","defer","self.defer","delay","timeoutId","cancel","self.defer.cancel","deferId","cacheFactory","cacheId","refresh","entry","freshEnd","staleEnd","n","link","p","nextEntry","prevEntry","caches","size","stats","id","capacity","Number","MAX_VALUE","lruHash","lruEntry","remove","removeAll","destroy","info","cacheFactory.info","cacheFactory.get","$$sanitizeUriProvider","parseIsolateBindings","directiveName","isController","LOCAL_REGEXP","bindings","definition","scopeName","bindingCache","$compileMinErr","mode","collection","optional","attrName","assertValidDirectiveName","getDirectiveRequire","require","REQUIRE_PREFIX_REGEXP","hasDirectives","COMMENT_DIRECTIVE_REGEXP","CLASS_DIRECTIVE_REGEXP","ALL_OR_NOTHING_ATTRS","EVENT_HANDLER_ATTR_REGEXP","this.directive","registerDirective","directiveFactory","Suffix","directives","priority","restrict","this.component","makeInjectable","tElement","tAttrs","$element","$attrs","template","templateUrl","ddo","controllerAs","identifierForController","transclude","bindToController","aHrefSanitizationWhitelist","this.aHrefSanitizationWhitelist","regexp","imgSrcSanitizationWhitelist","this.imgSrcSanitizationWhitelist","this.debugInfoEnabled","enabled","TTL","onChangesTtl","this.onChangesTtl","flushOnChangesQueue","onChangesQueue","errors","Attributes","attributesToCopy","$attr","$$element","setSpecialAttr","specialAttrHolder","attributes","attribute","removeNamedItem","setNamedItem","safeAddClass","className","$compileNodes","transcludeFn","maxPriority","ignoreDirective","previousCompileContext","NOT_EMPTY","domNode","nodeValue","compositeLinkFn","compileNodes","$$addScopeClass","namespace","publicLinkFn","cloneConnectFn","needsNewScope","$parent","$new","parentBoundTranscludeFn","transcludeControllers","futureParentElement","$$boundTransclude","$linkNode","wrapTemplate","controllerName","instance","$$addScopeInfo","nodeList","$rootElement","childLinkFn","childScope","childBoundTranscludeFn","stableNodeList","nodeLinkFnFound","linkFns","idx","nodeLinkFn","transcludeOnThisElement","createBoundTranscludeFn","templateOnThisElement","attrs","linkFnFound","collectDirectives","applyDirectivesToNode","terminal","previousBoundTranscludeFn","boundTranscludeFn","transcludedScope","cloneFn","controllers","containingScope","$$transcluded","boundSlots","$$slots","slotName","attrsMap","addDirective","directiveNormalize","isNgAttr","nAttrs","attrStartName","attrEndName","ngAttrName","NG_ATTR_BINDING","PREFIX_REGEXP","multiElementMatch","MULTI_ELEMENT_DIR_RE","directiveIsMultiElement","nName","addAttrInterpolateDirective","animVal","addTextInterpolateDirective","NODE_TYPE_COMMENT","byPriority","groupScan","attrStart","attrEnd","depth","groupElementsLinkFnWrapper","linkFn","groupedElementsLink","compilationGenerator","eager","compiled","lazyCompilation","compileNode","templateAttrs","jqCollection","originalReplaceDirective","preLinkFns","postLinkFns","addLinkFns","pre","post","newIsolateScopeDirective","$$isolateScope","cloneAndAnnotateFn","linkNode","controllersBoundTransclude","cloneAttachFn","hasElementTranscludeDirective","elementControllers","slotTranscludeFn","scopeToChild","controllerScope","newScopeDirective","isSlotFilled","transcludeFn.isSlotFilled","controllerDirectives","setupControllers","templateDirective","$$originalDirective","$$isolateBindings","scopeBindingInfo","initializeDirectiveBindings","removeWatches","$on","controllerDirective","$$bindings","bindingInfo","identifier","controllerResult","getControllers","controllerInstance","$onChanges","initialChanges","$onInit","$onDestroy","callOnDestroyHook","invokeLinkFn","$postLink","terminalPriority","nonTlbTranscludeDirective","hasTranscludeDirective","hasTemplate","$compileNode","$template","childTranscludeFn","didScanForMultipleTransclusion","mightHaveMultipleTransclusionError","directiveValue","$$start","$$end","assertNoDuplicate","$$tlb","scanningIndex","candidateDirective","$$createComment","replaceWith","$$parentNode","replaceDirective","slots","contents","slotMap","filledSlots","elementSelector","filled","$$newScope","denormalizeTemplate","removeComments","templateNamespace","newTemplateAttrs","templateDirectives","unprocessedDirectives","markDirectiveScope","mergeTemplateAttributes","compileTemplateUrl","Math","max","inheritType","dataName","property","controllerKey","$scope","$transclude","newScope","tDirectives","startAttrName","endAttrName","multiElement","srcAttr","dstAttr","$set","linkQueue","afterTemplateNodeLinkFn","afterTemplateChildLinkFn","beforeTemplateCompileNode","origAsyncDirective","derivedSyncDirective","then","content","tempTemplateAttrs","beforeTemplateLinkNode","linkRootElement","$$destroyed","oldClasses","delayedNodeLinkFn","ignoreChildLinkFn","diff","what","previousDirective","wrapModuleNameIfDefined","moduleName","text","interpolateFn","textInterpolateCompileFn","templateNode","templateNodeParent","hasCompileParent","$$addBindingClass","textInterpolateLinkFn","$$addBindingInfo","expressions","interpolateFnWatchAction","getTrustedContext","attrNormalizedName","HTML","RESOURCE_URL","allOrNothing","trustedContext","attrInterpolatePreLinkFn","$$observers","newValue","$$inter","$$scope","oldValue","$updateClass","elementsToRemove","newNode","firstElementToRemove","removeCount","j2","hasData","annotation","recordChanges","currentValue","previousValue","$$postDigest","changes","triggerOnChangesHook","SimpleChange","removeWatchCollection","initializeBinding","lastValue","parentGet","parentSet","compare","$observe","_UNINITIALIZED_VALUE","literal","assign","parentValueWatch","parentValue","$stateful","removeWatch","$watchCollection","initialValue","parentValueWatchAction","SIMPLE_ATTR_NAME","$normalize","$addClass","classVal","$removeClass","newClasses","toAdd","tokenDifference","toRemove","writeAttr","booleanKey","aliasedKey","ALIASED_ATTR","observer","trimmedSrcset","srcPattern","rawUris","nbrUrisWith2parts","floor","innerIdx","lastTuple","removeAttr","listeners","startSymbol","endSymbol","binding","isolated","noTemplate","compile.$$createComment","comment","createComment","previous","current","str1","str2","values","tokens1","tokens2","token","jqNodes","ident","CNTRL_REG","globals","this.has","register","this.register","allowGlobals","this.allowGlobals","addIdentifier","expression","later","$controllerMinErr","controllerPrototype","$controllerInit","exception","cause","serializeValue","v","toISOString","ngParamSerializer","params","jQueryLikeParamSerializer","serialize","toSerialize","topLevel","defaultHttpResponseTransform","headers","tempData","JSON_PROTECTION_PREFIX","contentType","jsonStart","JSON_START","JSON_ENDS","parseHeaders","line","headerVal","headerKey","headersGetter","headersObj","transformData","status","fns","defaults","transformResponse","transformRequest","d","common","CONTENT_TYPE_APPLICATION_JSON","patch","xsrfCookieName","xsrfHeaderName","paramSerializer","useApplyAsync","this.useApplyAsync","useLegacyPromise","useLegacyPromiseExtensions","this.useLegacyPromiseExtensions","interceptorFactories","interceptors","requestConfig","response","resp","reject","executeHeaderFns","headerContent","processedHeaders","headerFn","header","mergeHeaders","defHeaders","reqHeaders","defHeaderName","lowercaseDefHeaderName","reqHeaderName","chain","serverRequest","reqData","withCredentials","sendReq","promise","when","reversedInterceptors","interceptor","request","requestError","responseError","thenFn","rejectFn","success","promise.success","promise.error","$httpMinErrLegacyFn","createApplyHandlers","eventHandlers","applyHandlers","callEventHandler","$applyAsync","$$phase","done","headersString","statusText","resolveHttpPromise","resolvePromise","deferred","resolve","resolvePromiseWithResult","removePendingReq","pendingRequests","cachedResp","buildUrl","defaultCache","xsrfValue","urlIsSameOrigin","timeout","responseType","uploadEventHandlers","serializedParams","interceptorFactory","createShortMethods","createShortMethodsWithData","createXhr","XMLHttpRequest","createHttpBackend","callbacks","$browserDefer","rawDocument","jsonpReq","callbackId","async","body","called","addEventListener","timeoutRequest","jsonpDone","xhr","abort","completeRequest","open","setRequestHeader","onload","xhr.onload","responseText","urlResolve","protocol","getAllResponseHeaders","onerror","onabort","upload","send","this.startSymbol","this.endSymbol","escape","ch","unescapeText","escapedStartRegexp","escapedEndRegexp","constantWatchDelegate","objectEquality","constantInterp","unwatch","constantInterpolateWatch","mustHaveExpression","parseStringifyInterceptor","getTrusted","$interpolateMinErr","interr","unescapedText","exp","$$watchDelegate","endIndex","parseFns","textLength","expressionPositions","startSymbolLength","endSymbolLength","throwNoconcat","compute","interpolationFn","$watchGroup","interpolateFnWatcher","oldValues","currValue","$interpolate.startSymbol","$interpolate.endSymbol","interval","count","invokeApply","hasParams","iteration","setInterval","clearInterval","skipApply","$$intervalId","tick","notify","intervals","interval.cancel","encodePath","segments","parseAbsoluteUrl","absoluteUrl","locationObj","parsedUrl","$$protocol","$$host","hostname","$$port","port","DEFAULT_PORTS","parseAppUrl","relativeUrl","prefixed","$$path","pathname","$$search","search","$$hash","stripBaseUrl","base","lastIndexOf","trimEmptyHash","LocationHtml5Url","appBase","appBaseNoFile","basePrefix","$$html5","$$parse","this.$$parse","pathUrl","$locationMinErr","$$compose","this.$$compose","$$url","$$absUrl","$$parseLinkUrl","this.$$parseLinkUrl","relHref","appUrl","prevAppUrl","rewrittenUrl","LocationHashbangUrl","hashPrefix","withoutBaseUrl","withoutHashUrl","windowsFilePathExp","firstPathSegmentMatch","LocationHashbangInHtml5Url","locationGetter","locationGetterSetter","preprocess","html5Mode","requireBase","rewriteLinks","this.hashPrefix","this.html5Mode","setBrowserUrlWithFallback","oldUrl","oldState","$$state","afterLocationChange","$broadcast","absUrl","LocationMode","initialUrl","IGNORE_URI_REGEXP","ctrlKey","metaKey","shiftKey","which","button","absHref","preventDefault","initializing","newUrl","newState","$digest","$locationWatch","currentReplace","$$replace","urlOrStateChanged","debug","debugEnabled","this.debugEnabled","flag","formatError","Error","sourceURL","consoleLog","console","logFn","log","hasApply","arg1","arg2","warn","ensureSafeMemberName","fullExpression","$parseMinErr","getStringValue","ensureSafeObject","children","ensureSafeFunction","CALL","APPLY","BIND","ensureSafeAssignContext","ifDefined","plusFn","r","findConstantAndWatchExpressions","ast","allConstants","argsToWatch","AST","Program","expr","Literal","toWatch","UnaryExpression","argument","BinaryExpression","left","right","LogicalExpression","ConditionalExpression","alternate","consequent","Identifier","MemberExpression","object","computed","CallExpression","callee","AssignmentExpression","ArrayExpression","ObjectExpression","properties","ThisExpression","LocalsExpression","getInputs","lastExpression","isAssignable","assignableAST","NGValueParameter","operator","isLiteral","ASTCompiler","astBuilder","ASTInterpreter","isPossiblyDangerousMemberName","getValueOf","objectValueOf","cacheDefault","cacheExpensive","literals","identStart","identContinue","addLiteral","this.addLiteral","literalName","literalValue","setIdentifierFns","this.setIdentifierFns","identifierStart","identifierContinue","interceptorFn","expensiveChecks","parsedExpression","oneTime","cacheKey","runningChecksEnabled","parseOptions","$parseOptionsExpensive","$parseOptions","lexer","Lexer","parser","Parser","oneTimeLiteralWatchDelegate","oneTimeWatchDelegate","inputs","inputsWatchDelegate","expensiveChecksInterceptor","addInterceptor","expensiveCheckFn","expensiveCheckOldValue","expressionInputDirtyCheck","oldValueOfValue","prettyPrintExpression","inputExpressions","lastResult","oldInputValueOf","expressionInputWatch","newInputValue","oldInputValueOfValues","oldInputValues","expressionInputsWatch","changed","oneTimeWatch","oneTimeListener","old","isAllDefined","allDefined","constantWatch","watchDelegate","useInputs","regularInterceptedExpression","oneTimeInterceptedExpression","noUnsafeEval","isIdentifierStart","isIdentifierContinue","$$runningExpensiveChecks","$parse.$$runningExpensiveChecks","qFactory","nextTick","exceptionHandler","Promise","simpleBind","scheduleProcessQueue","processScheduled","pending","Deferred","$qMinErr","TypeError","onFulfilled","onRejected","progressBack","catch","finally","handleCallback","$$reject","$$resolve","that","rejectPromise","progress","makePromise","resolved","isResolved","callbackOutput","errback","$Q","resolver","resolveFn","all","promises","results","requestAnimationFrame","webkitRequestAnimationFrame","cancelAnimationFrame","webkitCancelAnimationFrame","webkitCancelRequestAnimationFrame","rafSupported","raf","timer","supported","createChildScopeClass","ChildScope","$$watchers","$$nextSibling","$$childHead","$$childTail","$$listeners","$$listenerCount","$$watchersCount","$id","$$ChildScope","$rootScopeMinErr","lastDirtyWatch","applyAsyncId","digestTtl","this.digestTtl","destroyChildScope","$event","currentScope","cleanUpScope","$$prevSibling","$root","Scope","beginPhase","phase","incrementWatchersCount","decrementListenerCount","initWatchVal","flushApplyAsync","applyAsyncQueue","scheduleApplyAsync","isolate","child","watchExp","watcher","last","eq","deregisterWatch","watchExpressions","watchGroupAction","changeReactionScheduled","firstRun","newValues","deregisterFns","shouldCall","deregisterWatchGroup","unwatchFn","watchGroupSubAction","$watchCollectionInterceptor","_value","bothNaN","newItem","oldItem","internalArray","oldLength","changeDetected","newLength","internalObject","veryOldValue","trackVeryOldValue","changeDetector","initRun","$watchCollectionAction","watch","watchers","dirty","ttl","watchLog","logIdx","asyncTask","asyncQueuePosition","asyncQueue","$eval","msg","next","postDigestQueuePosition","postDigestQueue","eventName","this.$watchGroup","$applyAsyncExpression","namedListeners","indexOfListener","$emit","targetScope","listenerArgs","$$asyncQueue","$$postDigestQueue","$$applyAsyncQueue","sanitizeUri","uri","isImage","regex","normalizedVal","adjustMatcher","matcher","$sceMinErr","escapeForRegexp","adjustMatchers","matchers","adjustedMatchers","SCE_CONTEXTS","resourceUrlWhitelist","resourceUrlBlacklist","this.resourceUrlWhitelist","this.resourceUrlBlacklist","matchUrl","generateHolderType","Base","holderType","trustedValue","$$unwrapTrustedValue","this.$$unwrapTrustedValue","holderType.prototype.valueOf","holderType.prototype.toString","htmlSanitizer","trustedValueHolderBase","byType","CSS","URL","JS","trustAs","Constructor","maybeTrusted","allowed","this.enabled","sce","isEnabled","sce.isEnabled","sce.getTrusted","parseAs","sce.parseAs","enumValue","lName","eventSupport","hasHistoryPushState","chrome","app","runtime","pushState","android","userAgent","navigator","boxee","vendorPrefix","vendorRegex","bodyStyle","transitions","animations","webkitTransition","webkitAnimation","hasEvent","divElm","httpOptions","this.httpOptions","handleRequestFn","tpl","ignoreRequestError","totalPendingRequests","getTrustedResourceUrl","transformer","handleError","$templateRequestMinErr","testability","testability.findBindings","opt_exactMatch","getElementsByClassName","matches","dataBinding","bindingName","testability.findModels","prefixes","attributeEquals","testability.getLocation","testability.setLocation","testability.whenStable","deferreds","$$timeoutId","timeout.cancel","urlParsingNode","requestUrl","originUrl","$$CookieReader","safeDecodeURIComponent","lastCookies","lastCookieString","cookieArray","cookie","currentCookieString","filters","suffix","currencyFilter","dateFilter","filterFilter","jsonFilter","limitToFilter","lowercaseFilter","numberFilter","orderByFilter","uppercaseFilter","comparator","matchAgainstAnyProp","getTypeForFilter","expressionType","predicateFn","createPredicateFn","shouldMatchPrimitives","actual","expected","deepCompare","dontMatchWholeObject","actualType","expectedType","expectedVal","matchAnyProperty","actualVal","$locale","formats","NUMBER_FORMATS","amount","currencySymbol","fractionSize","CURRENCY_SYM","PATTERNS","maxFrac","formatNumber","GROUP_SEP","DECIMAL_SEP","number","numStr","exponent","digits","numberOfIntegerDigits","zeros","ZERO_CHAR","MAX_DIGITS","roundNumber","parsedNumber","minFrac","fractionLen","min","roundAt","digit","k","carry","reduceRight","groupSep","decimalSep","isInfinity","isFinite","isZero","abs","formattedText","integerLen","decimals","reduce","groups","lgSize","gSize","negPre","negSuf","posPre","posSuf","padNumber","num","negWrap","neg","dateGetter","dateStrGetter","shortForm","standAlone","getFirstThursdayOfYear","year","dayOfWeekOnFirst","getDay","weekGetter","firstThurs","getFullYear","thisThurs","getMonth","getDate","round","eraGetter","ERAS","jsonStringToDate","string","R_ISO8601_STR","tzHour","tzMin","dateSetter","setUTCFullYear","setFullYear","timeSetter","setUTCHours","setHours","m","s","ms","parseFloat","format","DATETIME_FORMATS","NUMBER_STRING","DATE_FORMATS_SPLIT","DATE_FORMATS","spacing","limit","begin","Infinity","sliceFn","end","processPredicates","sortPredicates","map","predicate","descending","defaultCompare","v1","v2","type1","type2","value1","value2","sortPredicate","reverseOrder","compareFn","predicates","compareValues","getComparisonObject","tieBreaker","predicateValues","doComparison","ngDirective","FormController","controls","$error","$$success","$pending","$name","$dirty","$pristine","$valid","$invalid","$submitted","$$parentForm","nullFormCtrl","$rollbackViewValue","form.$rollbackViewValue","control","$commitViewValue","form.$commitViewValue","$addControl","form.$addControl","$$renameControl","form.$$renameControl","newName","oldName","$removeControl","form.$removeControl","$setValidity","addSetValidityMethod","ctrl","unset","$setDirty","form.$setDirty","PRISTINE_CLASS","DIRTY_CLASS","$setPristine","form.$setPristine","setClass","SUBMITTED_CLASS","$setUntouched","form.$setUntouched","$setSubmitted","form.$setSubmitted","stringBasedInputType","$formatters","$isEmpty","baseInputType","composing","ev","ngTrim","$viewValue","$$hasNativeValidators","$setViewValue","deferListener","origValue","keyCode","PARTIAL_VALIDATION_TYPES","PARTIAL_VALIDATION_EVENTS","validity","origBadInput","badInput","origTypeMismatch","typeMismatch","$render","ctrl.$render","createDateParser","mapping","iso","ISO_DATE_REGEXP","yyyy","MM","dd","HH","getHours","mm","ss","getSeconds","sss","getMilliseconds","part","NaN","createDateInputType","parseDate","dynamicDateInputType","isValidDate","parseObservedDateValue","badInputChecker","$options","previousDate","$$parserName","$parsers","parsedDate","ngModelMinErr","ngMin","minVal","$validators","ctrl.$validators.min","$validate","ngMax","maxVal","ctrl.$validators.max","VALIDITY_STATE_PROPERTY","parseConstantExpr","parseFn","classDirective","arrayDifference","arrayClasses","addClasses","digestClassCounts","classCounts","classesToUpdate","updateClasses","ngClassWatchAction","$index","old$index","mod","cachedToggleClass","switchValue","classCache","toggleValidationCss","validationErrorKey","isValid","VALID_CLASS","INVALID_CLASS","setValidity","isObjectEmpty","PENDING_CLASS","combinedState","REGEX_STRING_REGEXP","documentMode","rules","ngCspElement","ngCspAttribute","noInlineStyle","name_","el","full","major","minor","dot","codeName","expando","JQLite._data","mouseleave","mouseenter","optgroup","tbody","tfoot","colgroup","caption","thead","th","td","Node","contains","compareDocumentPosition","ready","trigger","fired","removeData","jqLiteHasData","jqLiteCleanData","removeAttribute","css","NODE_TYPE_ATTRIBUTE","lowercasedName","specified","getNamedItem","ret","getText","$dv","multiple","selected","nodeCount","jqLiteOn","types","addHandler","noEventListener","one","onFn","replaceNode","insertBefore","contentDocument","prepend","wrapNode","detach","after","newElement","toggleClass","condition","classCondition","nextElementSibling","getElementsByTagName","extraParameters","dummyEvent","handlerArgs","eventFnsCopy","arg3","unbind","FN_ARG_SPLIT","FN_ARG","argDecl","underscore","$animateMinErr","postDigestElements","updateData","handleCSSClassChanges","existing","pin","domOperation","from","to","classesAdded","add","classesRemoved","runner","complete","$$registeredAnimations","classNameFilter","this.classNameFilter","$$classNameFilter","reservedRegex","NG_ANIMATE_CLASSNAME","domInsert","parentElement","afterElement","afterNode","ELEMENT_NODE","previousElementSibling","enter","move","leave","addclass","animate","tempClasses","waitForTick","waitQueue","passed","AnimateRunner","setHost","rafTick","_doneCallbacks","_tick","this._tick","doc","hidden","_state","AnimateRunner.chain","AnimateRunner.all","runners","onProgress","DONE_COMPLETE_STATE","getPromise","resolveHandler","rejectHandler","pause","resume","_resolve","INITIAL_STATE","DONE_PENDING_STATE","initialOptions","closed","$$prepared","cleanupStyles","start","UNINITIALIZED_VALUE","isFirstChange","SimpleChange.prototype.isFirstChange","offsetWidth","APPLICATION_JSON","$httpMinErr","$interpolateMinErr.throwNoconcat","$interpolateMinErr.interr","PATH_MATCH","locationPrototype","paramValue","Location","Location.prototype.state","OPERATORS","ESCAPE","lex","tokens","readString","peek","readNumber","peekMultichar","readIdent","is","isWhitespace","ch2","ch3","op2","op3","op1","throwError","chars","codePointAt","isValidIdentifierStart","isValidIdentifierContinue","cp","charCodeAt","cp1","cp2","isExpOperator","colStr","peekCh","quote","rawString","hex","String","fromCharCode","rep","ExpressionStatement","Property","program","expressionStatement","expect","filterChain","assignment","ternary","logicalOR","consume","logicalAND","equality","relational","additive","multiplicative","unary","primary","arrayDeclaration","selfReferential","parseArguments","baseExpression","peekToken","kind","e1","e2","e3","e4","peekAhead","t","nextId","vars","own","assignable","stage","computing","recurse","return_","generateFunction","fnKey","intoId","watchId","fnString","USE","STRICT","filterPrefix","watchFns","varsPrefix","section","nameId","recursionFn","skipWatchIdCheck","if_","lazyAssign","computedMember","lazyRecurse","plus","not","getHasOwnProperty","nonComputedMember","addEnsureSafeObject","notNull","addEnsureSafeAssignContext","addEnsureSafeMemberName","addEnsureSafeFunction","member","filterName","defaultValue","UNSAFE_CHARACTERS","SAFE_IDENTIFIER","stringEscapeFn","stringEscapeRegex","c","skip","init","fn.assign","rhs","lhs","unary+","unary-","unary!","binary+","binary-","binary*","binary/","binary%","binary===","binary!==","binary==","binary!=","binary<","binary>","binary<=","binary>=","binary&&","binary||","ternary?:","astCompiler","yy","y","MMMM","MMM","M","LLLL","H","hh","EEEE","EEE","ampmGetter","AMPMS","Z","timeZoneGetter","zone","paddedZone","ww","w","G","GG","GGG","GGGG","longEraGetter","ERANAMES","xlinkHref","propName","defaultLinkFn","normalized","ngBooleanAttrWatchAction","htmlAttr","ngAttrAliasWatchAction","nullFormRenameControl","formDirectiveFactory","isNgForm","getSetter","ngFormCompile","formElement","nameAttr","ngFormPreLink","ctrls","handleFormSubmission","setter","URL_REGEXP","EMAIL_REGEXP","NUMBER_REGEXP","DATE_REGEXP","DATETIMELOCAL_REGEXP","WEEK_REGEXP","MONTH_REGEXP","TIME_REGEXP","inputType","textInputType","weekParser","isoWeek","existingDate","week","hours","seconds","milliseconds","addDays","numberInputType","urlInputType","ctrl.$validators.url","modelValue","viewValue","emailInputType","email","ctrl.$validators.email","radioInputType","checked","checkboxInputType","trueValue","ngTrueValue","falseValue","ngFalseValue","ctrl.$isEmpty","CONSTANT_VALUE_REGEXP","tplAttr","ngValueConstantLink","ngValueLink","valueWatchAction","$compile","ngBindCompile","templateElement","ngBindLink","ngBindWatchAction","ngBindTemplateCompile","ngBindTemplateLink","ngBindHtmlCompile","ngBindHtmlGetter","ngBindHtmlWatch","sceValueOf","ngBindHtmlLink","ngBindHtmlWatchAction","getTrustedHtml","$viewChangeListeners","forceAsyncEvents","ngEventHandler","previousElements","ngIfWatchAction","srcExp","onloadExp","autoScrollExp","autoscroll","changeCounter","previousElement","currentElement","cleanupLastIncludeContent","ngIncludeWatchAction","afterAnimation","thisChangeId","namespaceAdaptedClone","trimValues","NgModelController","$modelValue","$$rawModelValue","$asyncValidators","$untouched","$touched","parsedNgModel","parsedNgModelAssign","ngModelGet","ngModelSet","pendingDebounce","parserValid","$$setOptions","this.$$setOptions","getterSetter","invokeModelGetter","invokeModelSetter","$$$p","this.$isEmpty","$$updateEmptyClasses","this.$$updateEmptyClasses","NOT_EMPTY_CLASS","EMPTY_CLASS","currentValidationRunId","this.$setPristine","this.$setDirty","this.$setUntouched","UNTOUCHED_CLASS","TOUCHED_CLASS","$setTouched","this.$setTouched","this.$rollbackViewValue","$$lastCommittedViewValue","this.$validate","prevValid","prevModelValue","allowInvalid","$$runValidators","allValid","$$writeModelToScope","this.$$runValidators","doneCallback","processSyncValidators","syncValidatorsValid","validator","processAsyncValidators","validatorPromises","validationDone","localValidationRunId","processParseErrors","errorKey","this.$commitViewValue","$$parseAndValidate","this.$$parseAndValidate","this.$$writeModelToScope","this.$setViewValue","updateOnDefault","$$debounceViewValueCommit","this.$$debounceViewValueCommit","debounceDelay","debounce","ngModelWatch","formatters","ngModelCompile","ngModelPreLink","modelCtrl","formCtrl","ngModelPostLink","updateOn","DEFAULT_REGEXP","ngOptionsMinErr","NG_OPTIONS_REGEXP","parseOptionsExpression","optionsExp","selectElement","Option","selectValue","label","group","disabled","getOptionValuesKeys","optionValues","optionValuesKeys","keyName","itemKey","valueName","selectAs","trackBy","viewValueFn","trackByFn","getTrackByValueFn","getHashOfValue","getTrackByValue","getLocals","displayFn","groupByFn","disableWhenFn","valuesFn","getWatchables","watchedArray","optionValuesLength","disableWhen","getOptions","optionItems","selectValueMap","optionItem","getOptionFromViewValue","getViewValueFromOption","optionTemplate","optGroupTemplate","ngOptionsPreLink","registerOption","ngOptionsPostLink","updateOptionElement","updateOptions","selectCtrl","readValue","groupElementMap","providedEmptyOption","emptyOption","addOption","groupElement","listFragment","optionElement","ngModelCtrl","nextValue","unknownOption","ngModelCtrl.$isEmpty","writeValue","selectCtrl.writeValue","selectCtrl.readValue","selectedValues","selections","selectedOption","BRACE","IS_WHEN","updateElementText","newText","numberExp","whenExp","whens","whensExpFns","braceReplacement","watchRemover","lastCount","attributeName","tmpMatch","whenKey","ngPluralizeWatchAction","countIsNaN","pluralCat","whenExpFn","ngRepeatMinErr","updateScope","valueIdentifier","keyIdentifier","arrayLength","$first","$last","$middle","$odd","$even","ngRepeatCompile","ngRepeatEndComment","aliasAs","trackByExp","trackByExpGetter","trackByIdExpFn","trackByIdArrayFn","trackByIdObjFn","hashFnLocals","ngRepeatLink","lastBlockMap","ngRepeatAction","previousNode","nextNode","nextBlockMap","collectionLength","trackById","collectionKeys","nextBlockOrder","trackByIdFn","blockKey","ngRepeatTransclude","ngShowWatchAction","NG_HIDE_CLASS","NG_HIDE_IN_PROGRESS_CLASS","ngHideWatchAction","ngStyleWatchAction","newStyles","oldStyles","ngSwitchController","cases","selectedTranscludes","selectedElements","previousLeaveAnimations","selectedScopes","spliceFactory","ngSwitchWatchAction","selectedTransclude","caseElement","selectedScope","anchor","ngTranscludeMinErr","ngTranscludeCloneAttachFn","ngTranscludeSlot","noopNgModelController","SelectController","optionsMap","renderUnknownOption","self.renderUnknownOption","unknownVal","removeUnknownOption","self.removeUnknownOption","self.readValue","self.writeValue","hasOption","self.addOption","removeOption","self.removeOption","self.hasOption","self.registerOption","optionScope","optionAttrs","interpolateValueFn","interpolateTextFn","valueAttributeObserveAction","interpolateWatchAction","selectPreLink","lastView","lastViewRef","selectMultipleWatch","selectPostLink","ngModelCtrl.$render","selectCtrlName","ctrl.$validators.required","patternExp","ctrl.$validators.pattern","intVal","ctrl.$validators.maxlength","ctrl.$validators.minlength","getDecimals","opt_precision","pow","ONE","OTHER","$$csp","head"] +} diff --git a/spring-rest-angular/src/main/webapp/resources/vendor/jquery/jquery.min.js b/spring-rest-angular/src/main/webapp/resources/vendor/jquery/jquery.min.js new file mode 100644 index 0000000000..88ed04cce7 --- /dev/null +++ b/spring-rest-angular/src/main/webapp/resources/vendor/jquery/jquery.min.js @@ -0,0 +1,4 @@ +/*! jQuery v3.0.0 | (c) jQuery Foundation | jquery.org/license */ +!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.0.0",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:f.call(this)},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:h,sort:c.sort,splice:c.splice},r.extend=r.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||r.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(r.isPlainObject(d)||(e=r.isArray(d)))?(e?(e=!1,f=c&&r.isArray(c)?c:[]):f=c&&r.isPlainObject(c)?c:{},g[b]=r.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},r.extend({expando:"jQuery"+(q+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===r.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=r.type(a);return("number"===b||"string"===b)&&!isNaN(a-parseFloat(a))},isPlainObject:function(a){var b,c;return a&&"[object Object]"===k.call(a)?(b=e(a))?(c=l.call(b,"constructor")&&b.constructor,"function"==typeof c&&m.call(c)===n):!0:!1},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?j[k.call(a)]||"object":typeof a},globalEval:function(a){p(a)},camelCase:function(a){return a.replace(t,"ms-").replace(u,v)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(w(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(s,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(w(Object(a))?r.merge(c,"string"==typeof a?[a]:a):h.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:i.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,f=0,h=[];if(w(a))for(d=a.length;d>f;f++)e=b(a[f],f,c),null!=e&&h.push(e);else for(f in a)e=b(a[f],f,c),null!=e&&h.push(e);return g.apply([],h)},guid:1,proxy:function(a,b){var c,d,e;return"string"==typeof b&&(c=a[b],b=a,a=c),r.isFunction(a)?(d=f.call(arguments,2),e=function(){return a.apply(b||this,d.concat(f.call(arguments)))},e.guid=a.guid=a.guid||r.guid++,e):void 0},now:Date.now,support:o}),"function"==typeof Symbol&&(r.fn[Symbol.iterator]=c[Symbol.iterator]),r.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){j["[object "+b+"]"]=b.toLowerCase()});function w(a){var b=!!a&&"length"in a&&a.length,c=r.type(a);return"function"===c||r.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\x00-\\xa0])+",M="\\["+K+"*("+L+")(?:"+K+"*([*^$|!~]?=)"+K+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+L+"))|)"+K+"*\\]",N=":("+L+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+M+")*)|.*)\\)|)",O=new RegExp(K+"+","g"),P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,ca=function(a,b){return b?"\x00"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"label"in b&&b.disabled===a||"form"in b&&b.disabled===a||"form"in b&&b.disabled===!1&&(b.isDisabled===a||b.isDisabled!==!a&&("label"in b||!ea(b))!==a)}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[0>c?c+b:c]}),even:pa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:pa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:pa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function ta(a,b,c){var d=b.dir,e=b.next,f=e||d,g=c&&"parentNode"===f,h=x++;return b.first?function(b,c,e){while(b=b[d])if(1===b.nodeType||g)return a(b,c,e)}:function(b,c,i){var j,k,l,m=[w,h];if(i){while(b=b[d])if((1===b.nodeType||g)&&a(b,c,i))return!0}else while(b=b[d])if(1===b.nodeType||g)if(l=b[u]||(b[u]={}),k=l[b.uniqueID]||(l[b.uniqueID]={}),e&&e===b.nodeName.toLowerCase())b=b[d]||b;else{if((j=k[f])&&j[0]===w&&j[1]===h)return m[2]=j[2];if(k[f]=m,m[2]=a(b,c,i))return!0}}}function ua(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function wa(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function xa(a,b,c,d,e,f){return d&&!d[u]&&(d=xa(d)),e&&!e[u]&&(e=xa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||va(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:wa(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=wa(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ta(ua(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return xa(i>1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,e>i&&ya(a.slice(i,e)),f>e&&ya(a=a.slice(e)),f>e&&sa(a))}m.push(c)}return ua(m)}function za(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(_,aa),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=V.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(_,aa),$.test(j[0].type)&&qa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&sa(j),!a)return G.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||$.test(a)&&qa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext,B=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,C=/^.[^:#\[\.,]*$/;function D(a,b,c){if(r.isFunction(b))return r.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return r.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(C.test(b))return r.filter(b,a,c);b=r.filter(b,a)}return r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType})}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;d>b;b++)if(r.contains(e[b],this))return!0}));for(c=this.pushStack([]),b=0;d>b;b++)r.find(a,e[b],c);return d>1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(D(this,a||[],!1))},not:function(a){return this.pushStack(D(this,a||[],!0))},is:function(a){return!!D(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var E,F=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,G=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||E,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:F.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),B.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};G.prototype=r.fn,E=r(d);var H=/^(?:parents|prev(?:Until|All))/,I={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(r.contains(this,b[a]))return!0})},closest:function(a,b){var c,d=0,e=this.length,f=[],g="string"!=typeof a&&r(a);if(!A.test(a))for(;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function J(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return J(a,"nextSibling")},prev:function(a){return J(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return a.contentDocument||r.merge([],a.childNodes)}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(I[a]||r.uniqueSort(e),H.test(a)&&e.reverse()),this.pushStack(e)}});var K=/\S+/g;function L(a){var b={};return r.each(a.match(K)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?L(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function M(a){return a}function N(a){throw a}function O(a,b,c){var d;try{a&&r.isFunction(d=a.promise)?d.call(a).done(b).fail(c):a&&r.isFunction(d=a.then)?d.call(a,b,c):b.call(void 0,a)}catch(a){c.call(void 0,a)}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(f>b)){if(a=d.apply(h,i),a===c.promise())throw new TypeError("Thenable self-resolution");j=a&&("object"==typeof a||"function"==typeof a)&&a.then,r.isFunction(j)?e?j.call(a,g(f,c,M,e),g(f,c,N,e)):(f++,j.call(a,g(f,c,M,e),g(f,c,N,e),g(f,c,M,c.notifyWith))):(d!==M&&(h=void 0,i=[a]),(e||c.resolveWith)(h,i))}},k=e?j:function(){try{j()}catch(a){r.Deferred.exceptionHook&&r.Deferred.exceptionHook(a,k.stackTrace),b+1>=f&&(d!==N&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:M,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:M)),c[2][3].add(g(0,a,r.isFunction(d)?d:N))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(1>=b&&(O(a,g.done(h(c)).resolve,g.reject),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)O(e[c],h(c),g.reject);return g.promise()}});var P=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&P.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)};var Q=r.Deferred();r.fn.ready=function(a){return Q.then(a),this},r.extend({isReady:!1,readyWait:1,holdReady:function(a){a?r.readyWait++:r.ready(!0)},ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||Q.resolveWith(d,[r]))}}),r.ready.then=Q.then;function R(){d.removeEventListener("DOMContentLoaded",R),a.removeEventListener("load",R),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",R),a.addEventListener("load",R));var S=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)S(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){ + return j.call(r(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},T=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function U(){this.expando=r.expando+U.uid++}U.uid=1,U.prototype={cache:function(a){var b=a[this.expando];return b||(b={},T(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[r.camelCase(b)]=c;else for(d in b)e[r.camelCase(d)]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][r.camelCase(b)]},access:function(a,b,c){return void 0===b||b&&"string"==typeof b&&void 0===c?this.get(a,b):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d=a[this.expando];if(void 0!==d){if(void 0!==b){r.isArray(b)?b=b.map(r.camelCase):(b=r.camelCase(b),b=b in d?[b]:b.match(K)||[]),c=b.length;while(c--)delete d[b[c]]}(void 0===b||r.isEmptyObject(d))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!r.isEmptyObject(b)}};var V=new U,W=new U,X=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Y=/[A-Z]/g;function Z(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Y,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:X.test(c)?JSON.parse(c):c}catch(e){}W.set(a,b,c)}else c=void 0;return c}r.extend({hasData:function(a){return W.hasData(a)||V.hasData(a)},data:function(a,b,c){return W.access(a,b,c)},removeData:function(a,b){W.remove(a,b)},_data:function(a,b,c){return V.access(a,b,c)},_removeData:function(a,b){V.remove(a,b)}}),r.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=W.get(f),1===f.nodeType&&!V.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=r.camelCase(d.slice(5)),Z(f,d,e[d])));V.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){W.set(this,a)}):S(this,function(b){var c;if(f&&void 0===b){if(c=W.get(f,a),void 0!==c)return c;if(c=Z(f,a),void 0!==c)return c}else this.each(function(){W.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){W.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=V.get(a,b),c&&(!d||r.isArray(c)?d=V.access(a,b,r.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return V.get(a,c)||V.access(a,c,{empty:r.Callbacks("once memory").add(function(){V.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthf;f++)d=a[f],d.style&&(c=d.style.display,b?("none"===c&&(e[f]=V.get(d,"display")||null,e[f]||(d.style.display="")),""===d.style.display&&ba(d)&&(e[f]=fa(d))):"none"!==c&&(e[f]="none",V.set(d,"display",c)));for(f=0;g>f;f++)null!=e[f]&&(a[f].style.display=e[f]);return a}r.fn.extend({show:function(){return ga(this,!0)},hide:function(){return ga(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){ba(this)?r(this).show():r(this).hide()})}});var ha=/^(?:checkbox|radio)$/i,ia=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,ja=/^$|\/(?:java|ecma)script/i,ka={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ka.optgroup=ka.option,ka.tbody=ka.tfoot=ka.colgroup=ka.caption=ka.thead,ka.th=ka.td;function la(a,b){var c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&r.nodeName(a,b)?r.merge([a],c):c}function ma(a,b){for(var c=0,d=a.length;d>c;c++)V.set(a[c],"globalEval",!b||V.get(b[c],"globalEval"))}var na=/<|&#?\w+;/;function oa(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],n=0,o=a.length;o>n;n++)if(f=a[n],f||0===f)if("object"===r.type(f))r.merge(m,f.nodeType?[f]:f);else if(na.test(f)){g=g||l.appendChild(b.createElement("div")),h=(ia.exec(f)||["",""])[1].toLowerCase(),i=ka[h]||ka._default,g.innerHTML=i[1]+r.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;r.merge(m,g.childNodes),g=l.firstChild,g.textContent=""}else m.push(b.createTextNode(f));l.textContent="",n=0;while(f=m[n++])if(d&&r.inArray(f,d)>-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=la(l.appendChild(f),"script"),j&&ma(g),c){k=0;while(f=g[k++])ja.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var pa=d.documentElement,qa=/^key/,ra=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,sa=/^([^.]*)(?:\.(.+)|)/;function ta(){return!0}function ua(){return!1}function va(){try{return d.activeElement}catch(a){}}function wa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)wa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=ua;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(pa,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(K)||[""],j=b.length;while(j--)h=sa.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.hasData(a)&&V.get(a);if(q&&(i=q.events)){b=(b||"").match(K)||[""],j=b.length;while(j--)if(h=sa.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&V.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(V.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;cc;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?r(e,this).index(i)>-1:r.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h\x20\t\r\n\f]*)[^>]*)\/>/gi,ya=/\s*$/g;function Ca(a,b){return r.nodeName(a,"table")&&r.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a:a}function Da(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Ea(a){var b=Aa.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Fa(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(V.hasData(a)&&(f=V.access(a),g=V.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)r.event.add(b,e,j[e][c])}W.hasData(a)&&(h=W.access(a),i=r.extend({},h),W.set(b,i))}}function Ga(a,b){var c=b.nodeName.toLowerCase();"input"===c&&ha.test(a.type)?b.checked=a.checked:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}function Ha(a,b,c,d){b=g.apply([],b);var e,f,h,i,j,k,l=0,m=a.length,n=m-1,q=b[0],s=r.isFunction(q);if(s||m>1&&"string"==typeof q&&!o.checkClone&&za.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ha(f,b,c,d)});if(m&&(e=oa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(la(e,"script"),Da),i=h.length;m>l;l++)j=e,l!==n&&(j=r.clone(j,!0,!0),i&&r.merge(h,la(j,"script"))),c.call(a[l],j,l);if(i)for(k=h[h.length-1].ownerDocument,r.map(h,Ea),l=0;i>l;l++)j=h[l],ja.test(j.type||"")&&!V.access(j,"globalEval")&&r.contains(k,j)&&(j.src?r._evalUrl&&r._evalUrl(j.src):p(j.textContent.replace(Ba,""),k))}return a}function Ia(a,b,c){for(var d,e=b?r.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||r.cleanData(la(d)),d.parentNode&&(c&&r.contains(d.ownerDocument,d)&&ma(la(d,"script")),d.parentNode.removeChild(d));return a}r.extend({htmlPrefilter:function(a){return a.replace(xa,"<$1>")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=la(h),f=la(a),d=0,e=f.length;e>d;d++)Ga(f[d],g[d]);if(b)if(c)for(f=f||la(a),g=g||la(h),d=0,e=f.length;e>d;d++)Fa(f[d],g[d]);else Fa(a,h);return g=la(h,"script"),g.length>0&&ma(g,!i&&la(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(T(c)){if(b=c[V.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[V.expando]=void 0}c[W.expando]&&(c[W.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ia(this,a,!0)},remove:function(a){return Ia(this,a)},text:function(a){return S(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.appendChild(a)}})},prepend:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(la(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return S(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!ya.test(a)&&!ka[(ia.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(r.cleanData(la(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ha(this,arguments,function(b){var c=this.parentNode;r.inArray(this,a)<0&&(r.cleanData(la(this)),c&&c.replaceChild(b,this))},a)}}),r.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){r.fn[a]=function(a){for(var c,d=[],e=r(a),f=e.length-1,g=0;f>=g;g++)c=g===f?this:this.clone(!0),r(e[g])[b](c),h.apply(d,c.get());return this.pushStack(d)}});var Ja=/^margin/,Ka=new RegExp("^("+$+")(?!px)[a-z%]+$","i"),La=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)};!function(){function b(){if(i){i.style.cssText="box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",i.innerHTML="",pa.appendChild(h);var b=a.getComputedStyle(i);c="1%"!==b.top,g="2px"===b.marginLeft,e="4px"===b.width,i.style.marginRight="50%",f="4px"===b.marginRight,pa.removeChild(h),i=null}}var c,e,f,g,h=d.createElement("div"),i=d.createElement("div");i.style&&(i.style.backgroundClip="content-box",i.cloneNode(!0).style.backgroundClip="",o.clearCloneStyle="content-box"===i.style.backgroundClip,h.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",h.appendChild(i),r.extend(o,{pixelPosition:function(){return b(),c},boxSizingReliable:function(){return b(),e},pixelMarginRight:function(){return b(),f},reliableMarginLeft:function(){return b(),g}}))}();function Ma(a,b,c){var d,e,f,g,h=a.style;return c=c||La(a),c&&(g=c.getPropertyValue(b)||c[b],""!==g||r.contains(a.ownerDocument,a)||(g=r.style(a,b)),!o.pixelMarginRight()&&Ka.test(g)&&Ja.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function Na(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Oa=/^(none|table(?!-c[ea]).+)/,Pa={position:"absolute",visibility:"hidden",display:"block"},Qa={letterSpacing:"0",fontWeight:"400"},Ra=["Webkit","Moz","ms"],Sa=d.createElement("div").style;function Ta(a){if(a in Sa)return a;var b=a[0].toUpperCase()+a.slice(1),c=Ra.length;while(c--)if(a=Ra[c]+b,a in Sa)return a}function Ua(a,b,c){var d=_.exec(b);return d?Math.max(0,d[2]-(c||0))+(d[3]||"px"):b}function Va(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=r.css(a,c+aa[f],!0,e)),d?("content"===c&&(g-=r.css(a,"padding"+aa[f],!0,e)),"margin"!==c&&(g-=r.css(a,"border"+aa[f]+"Width",!0,e))):(g+=r.css(a,"padding"+aa[f],!0,e),"padding"!==c&&(g+=r.css(a,"border"+aa[f]+"Width",!0,e)));return g}function Wa(a,b,c){var d,e=!0,f=La(a),g="border-box"===r.css(a,"boxSizing",!1,f);if(a.getClientRects().length&&(d=a.getBoundingClientRect()[b]),0>=d||null==d){if(d=Ma(a,b,f),(0>d||null==d)&&(d=a.style[b]),Ka.test(d))return d;e=g&&(o.boxSizingReliable()||d===a.style[b]),d=parseFloat(d)||0}return d+Va(a,b,c||(g?"border":"content"),e,f)+"px"}r.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Ma(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=r.camelCase(b),i=a.style;return b=r.cssProps[h]||(r.cssProps[h]=Ta(h)||h),g=r.cssHooks[b]||r.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=_.exec(c))&&e[1]&&(c=da(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(r.cssNumber[h]?"":"px")),o.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=r.camelCase(b);return b=r.cssProps[h]||(r.cssProps[h]=Ta(h)||h),g=r.cssHooks[b]||r.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=Ma(a,b,d)),"normal"===e&&b in Qa&&(e=Qa[b]),""===c||c?(f=parseFloat(e),c===!0||isFinite(f)?f||0:e):e}}),r.each(["height","width"],function(a,b){r.cssHooks[b]={get:function(a,c,d){return c?!Oa.test(r.css(a,"display"))||a.getClientRects().length&&a.getBoundingClientRect().width?Wa(a,b,d):ca(a,Pa,function(){return Wa(a,b,d)}):void 0},set:function(a,c,d){var e,f=d&&La(a),g=d&&Va(a,b,d,"border-box"===r.css(a,"boxSizing",!1,f),f);return g&&(e=_.exec(c))&&"px"!==(e[3]||"px")&&(a.style[b]=c,c=r.css(a,b)),Ua(a,c,g)}}}),r.cssHooks.marginLeft=Na(o.reliableMarginLeft,function(a,b){return b?(parseFloat(Ma(a,"marginLeft"))||a.getBoundingClientRect().left-ca(a,{marginLeft:0},function(){return a.getBoundingClientRect().left}))+"px":void 0}),r.each({margin:"",padding:"",border:"Width"},function(a,b){r.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+aa[d]+b]=f[d]||f[d-2]||f[0];return e}},Ja.test(a)||(r.cssHooks[a+b].set=Ua)}),r.fn.extend({css:function(a,b){return S(this,function(a,b,c){var d,e,f={},g=0;if(r.isArray(b)){for(d=La(a),e=b.length;e>g;g++)f[b[g]]=r.css(a,b[g],!1,d);return f}return void 0!==c?r.style(a,b,c):r.css(a,b)},a,b,arguments.length>1)}});function Xa(a,b,c,d,e){return new Xa.prototype.init(a,b,c,d,e)}r.Tween=Xa,Xa.prototype={constructor:Xa,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?"":"px")},cur:function(){var a=Xa.propHooks[this.prop];return a&&a.get?a.get(this):Xa.propHooks._default.get(this)},run:function(a){var b,c=Xa.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Xa.propHooks._default.set(this),this}},Xa.prototype.init.prototype=Xa.prototype,Xa.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},Xa.propHooks.scrollTop=Xa.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=Xa.prototype.init,r.fx.step={};var Ya,Za,$a=/^(?:toggle|show|hide)$/,_a=/queueHooks$/;function ab(){Za&&(a.requestAnimationFrame(ab),r.fx.tick())}function bb(){return a.setTimeout(function(){Ya=void 0}),Ya=r.now()}function cb(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=aa[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function db(a,b,c){for(var d,e=(gb.tweeners[b]||[]).concat(gb.tweeners["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function eb(a,b,c){var d,e,f,g,h,i,j,k,l="width"in b||"height"in b,m=this,n={},o=a.style,p=a.nodeType&&ba(a),q=V.get(a,"fxshow");c.queue||(g=r._queueHooks(a,"fx"),null==g.unqueued&&(g.unqueued=0,h=g.empty.fire,g.empty.fire=function(){g.unqueued||h()}),g.unqueued++,m.always(function(){m.always(function(){g.unqueued--,r.queue(a,"fx").length||g.empty.fire()})}));for(d in b)if(e=b[d],$a.test(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}n[d]=q&&q[d]||r.style(a,d)}if(i=!r.isEmptyObject(b),i||!r.isEmptyObject(n)){l&&1===a.nodeType&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=q&&q.display,null==j&&(j=V.get(a,"display")),k=r.css(a,"display"),"none"===k&&(j?k=j:(ga([a],!0),j=a.style.display||j,k=r.css(a,"display"),ga([a]))),("inline"===k||"inline-block"===k&&null!=j)&&"none"===r.css(a,"float")&&(i||(m.done(function(){o.display=j}),null==j&&(k=o.display,j="none"===k?"":k)),o.display="inline-block")),c.overflow&&(o.overflow="hidden",m.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]})),i=!1;for(d in n)i||(q?"hidden"in q&&(p=q.hidden):q=V.access(a,"fxshow",{display:j}),f&&(q.hidden=!p),p&&ga([a],!0),m.done(function(){p||ga([a]),V.remove(a,"fxshow");for(d in n)r.style(a,d,n[d])})),i=db(p?q[d]:0,d,m),d in q||(q[d]=i.start,p&&(i.end=i.start,i.start=0))}}function fb(a,b){var c,d,e,f,g;for(c in a)if(d=r.camelCase(c),e=b[d],f=a[c],r.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=r.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function gb(a,b,c){var d,e,f=0,g=gb.prefilters.length,h=r.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Ya||bb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:r.extend({},b),opts:r.extend(!0,{specialEasing:{},easing:r.easing._default},c),originalProperties:b,originalOptions:c,startTime:Ya||bb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=r.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for(fb(k,j.opts.specialEasing);g>f;f++)if(d=gb.prefilters[f].call(j,a,k,j.opts))return r.isFunction(d.stop)&&(r._queueHooks(j.elem,j.opts.queue).stop=r.proxy(d.stop,d)),d;return r.map(k,db,j),r.isFunction(j.opts.start)&&j.opts.start.call(a,j),r.fx.timer(r.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}r.Animation=r.extend(gb,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return da(c.elem,a,_.exec(b),c),c}]},tweener:function(a,b){r.isFunction(a)?(b=a,a=["*"]):a=a.match(K);for(var c,d=0,e=a.length;e>d;d++)c=a[d],gb.tweeners[c]=gb.tweeners[c]||[],gb.tweeners[c].unshift(b)},prefilters:[eb],prefilter:function(a,b){b?gb.prefilters.unshift(a):gb.prefilters.push(a)}}),r.speed=function(a,b,c){var e=a&&"object"==typeof a?r.extend({},a):{complete:c||!c&&b||r.isFunction(a)&&a,duration:a,easing:c&&b||b&&!r.isFunction(b)&&b};return r.fx.off||d.hidden?e.duration=0:e.duration="number"==typeof e.duration?e.duration:e.duration in r.fx.speeds?r.fx.speeds[e.duration]:r.fx.speeds._default,null!=e.queue&&e.queue!==!0||(e.queue="fx"),e.old=e.complete,e.complete=function(){r.isFunction(e.old)&&e.old.call(this),e.queue&&r.dequeue(this,e.queue)},e},r.fn.extend({fadeTo:function(a,b,c,d){return this.filter(ba).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=r.isEmptyObject(a),f=r.speed(b,c,d),g=function(){var b=gb(this,r.extend({},a),f);(e||V.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=r.timers,g=V.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&_a.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||r.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=V.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=r.timers,g=d?d.length:0;for(c.finish=!0,r.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),r.each(["toggle","show","hide"],function(a,b){var c=r.fn[b];r.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(cb(b,!0),a,d,e)}}),r.each({slideDown:cb("show"),slideUp:cb("hide"),slideToggle:cb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){r.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),r.timers=[],r.fx.tick=function(){var a,b=0,c=r.timers;for(Ya=r.now();b1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?hb:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&r.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(K);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c); +}}),hb={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=ib[b]||r.find.attr;ib[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=ib[g],ib[g]=e,e=null!=c(a,b,d)?g:null,ib[g]=f),e}});var jb=/^(?:input|select|textarea|button)$/i,kb=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return S(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):jb.test(a.nodeName)||kb.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});var lb=/[\t\r\n\f]/g;function mb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,mb(this)))});if("string"==typeof a&&a){b=a.match(K)||[];while(c=this[i++])if(e=mb(c),d=1===c.nodeType&&(" "+e+" ").replace(lb," ")){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=r.trim(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,mb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(K)||[];while(c=this[i++])if(e=mb(c),d=1===c.nodeType&&(" "+e+" ").replace(lb," ")){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=r.trim(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,mb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(K)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=mb(this),b&&V.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":V.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+mb(c)+" ").replace(lb," ").indexOf(b)>-1)return!0;return!1}});var nb=/\r/g,ob=/[\x20\t\r\n\f]+/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":r.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(nb,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:r.trim(r.text(a)).replace(ob," ")}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],(c.selected||i===e)&&!c.disabled&&(!c.parentNode.disabled||!r.nodeName(c.parentNode,"optgroup"))){if(b=r(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=r.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=r.inArray(r.valHooks.option.get(d),f)>-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){return r.isArray(b)?a.checked=r.inArray(r(a).val(),b)>-1:void 0}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var pb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!pb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,pb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(V.get(h,"events")||{})[b.type]&&V.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&T(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!T(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?r.event.trigger(a,b,c,!0):void 0}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=V.access(d,b);e||d.addEventListener(a,c,!0),V.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=V.access(d,b)-1;e?V.access(d,b,e):(d.removeEventListener(a,c,!0),V.remove(d,b))}}});var qb=a.location,rb=r.now(),sb=/\?/;r.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid XML: "+b),c};var tb=/\[\]$/,ub=/\r?\n/g,vb=/^(?:submit|button|image|reset|file)$/i,wb=/^(?:input|select|textarea|keygen)/i;function xb(a,b,c,d){var e;if(r.isArray(b))r.each(b,function(b,e){c||tb.test(a)?d(a,e):xb(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)xb(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(r.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)xb(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&wb.test(this.nodeName)&&!vb.test(a)&&(this.checked||!ha.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:r.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(ub,"\r\n")}}):{name:b.name,value:c.replace(ub,"\r\n")}}).get()}});var yb=/%20/g,zb=/#.*$/,Ab=/([?&])_=[^&]*/,Bb=/^(.*?):[ \t]*([^\r\n]*)$/gm,Cb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Db=/^(?:GET|HEAD)$/,Eb=/^\/\//,Fb={},Gb={},Hb="*/".concat("*"),Ib=d.createElement("a");Ib.href=qb.href;function Jb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(K)||[];if(r.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Kb(a,b,c,d){var e={},f=a===Gb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Lb(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Mb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Nb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:qb.href,type:"GET",isLocal:Cb.test(qb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Hb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Lb(Lb(a,r.ajaxSettings),b):Lb(r.ajaxSettings,a)},ajaxPrefilter:Jb(Fb),ajaxTransport:Jb(Gb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks("once memory"),u=o.statusCode||{},v={},w={},x="canceled",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Bb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||qb.href)+"").replace(Eb,qb.protocol+"//"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(K)||[""],null==o.crossDomain){j=d.createElement("a");try{j.href=o.url,j.href=j.href,o.crossDomain=Ib.protocol+"//"+Ib.host!=j.protocol+"//"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Kb(Fb,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Db.test(o.type),f=o.url.replace(zb,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(yb,"+")):(n=o.url.slice(f.length),o.data&&(f+=(sb.test(f)?"&":"?")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Ab,""),n=(sb.test(f)?"&":"?")+"_="+rb++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Modified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Hb+"; q=0.01":""):o.accepts["*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x="abort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Kb(Gb,o,c,y)){if(y.readyState=1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort("timeout")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No Transport");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||"",y.readyState=b>0?4:0,j=b>=200&&300>b||304===b,d&&(v=Mb(o,y,d)),v=Nb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=w),w=y.getResponseHeader("etag"),w&&(r.etag[f]=w)),204===b||"HEAD"===o.type?x="nocontent":304===b?x="notmodified":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x="error",0>b&&(b=0))),y.status=b,y.statusText=(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?"ajaxSuccess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxComplete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){return r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Ob={0:200,1223:204},Pb=r.ajaxSettings.xhr();o.cors=!!Pb&&"withCredentials"in Pb,o.ajax=Pb=!!Pb,r.ajaxTransport(function(b){var c,d;return o.cors||Pb&&!b.crossDomain?{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Ob[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}:void 0}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),r.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r(" + + + + + +
+
+

Login

+

+ +
+ + + + +

+ + + +

+ + +
+
+
+ + + \ No newline at end of file diff --git a/spring-security-mvc-boot/src/main/resources/templates/rolesauthorities/protectedbyauthority.html b/spring-security-mvc-boot/src/main/resources/templates/rolesauthorities/protectedbyauthority.html new file mode 100644 index 0000000000..c62a111ebc --- /dev/null +++ b/spring-security-mvc-boot/src/main/resources/templates/rolesauthorities/protectedbyauthority.html @@ -0,0 +1,24 @@ + + + + +Protected By Authority + + + +
+

Protected By Authority

+
+ + + + diff --git a/spring-security-mvc-boot/src/main/resources/templates/rolesauthorities/protectedbynothing.html b/spring-security-mvc-boot/src/main/resources/templates/rolesauthorities/protectedbynothing.html new file mode 100644 index 0000000000..a6cd0666db --- /dev/null +++ b/spring-security-mvc-boot/src/main/resources/templates/rolesauthorities/protectedbynothing.html @@ -0,0 +1,21 @@ + + + + +Protected By Nothing + + + +
+

Protected By Nothing

+
+ + + + diff --git a/spring-security-mvc-boot/src/main/resources/templates/rolesauthorities/protectedbyrole.html b/spring-security-mvc-boot/src/main/resources/templates/rolesauthorities/protectedbyrole.html new file mode 100644 index 0000000000..f4bac55b55 --- /dev/null +++ b/spring-security-mvc-boot/src/main/resources/templates/rolesauthorities/protectedbyrole.html @@ -0,0 +1,24 @@ + + + + +Protected By Role + + + +
+

Protected By Role

+
+ + + + From 7b836d92116085c166fcdb236f955f166bdd9307 Mon Sep 17 00:00:00 2001 From: bankole salako Date: Tue, 5 Sep 2017 16:51:08 +0100 Subject: [PATCH 46/73] Pairs functionality in Java (Core Java, Apache Commons and Vavr) (#2563) * Unit tests for pairs functionality in Java (Core Java, Apache Commons and Vavr) * Remove default file templates * Refactor mustache * BAEL-1123 - Testing Linked List for Cycles - deep20jain@gmail.com (#2525) * Adding node and cycle detection by hashing * Adding implementation for all algorithms for cycle detection and removal * Applying formatting rules * JDeferred (#2553) * moving jmh into libraries module * refactoring jmh * Update pom.xml * manual algorightm * with BM result * fix for space issue * Fixed indentation * change as per suggestion * vavr either * adding unit test and othe rutilities * adding concurrent module * concurrent package description * concurrent package description * Update EitherUnitTest.java * introducing lambda expression * jooby project * jooby project * reducing employee bean content * bootique module * bootique * bootique * undertow module * undertow module * refactoring * using lambda * as per baeldung formatter * easy code added for simplicity * simpliflying * adding JDeferred module * moved jdeferred to librarires module * BAEL-1116 Spring swagger codegen (#2527) * Spring integration with Swagger client code genrator * Refactor * format pom.xml * BAEL-1106 Introduction to javax.measure (#2522) * BAEL-243 Spring Batch using Partitioner * BAEL-1106 Introduction to javax.measure * Unnecessary Committed * BAEL-1106 Move code to libraries from core-java * BAEL-1106 Move code to libraries from core-java * Update pom.xml * Introduced jmh benchmarking (#2549) * Bael 1043/protonpack (#2415) * BAEL-1043/ Introduction to protonpack * Added test cases for windowed() api * Resolving merge issues * Retrofit rx (#2519) * Retrofit with RxJava * Correct spelling mistake * Use spaces for indentation instead of tabs in pom.xml * Use spaces for indentation instead of tabs in pom.xml * Add Retrofit integration with RxJava to libraries module * Remove standalone project for Retrofit integration with RxJava * remove retrofit-rxjava module * Fixed error in pom.xml caused by an issue while merging * Retrofit integration with RxJava * Fix test cases * Fix merge issues * BAEL-1016 Merging master * import source BAEL-1084 (#2560) * Moved to libraries folder from core-java --- .../pairs/ApacheCommonsPairUnitTest.java | 50 +++++++++++++++++++ .../baeldung/pairs/CoreJavaPairUnitTest.java | 17 +++++++ .../com/baeldung/pairs/VavrPairsUnitTest.java | 29 +++++++++++ 3 files changed, 96 insertions(+) create mode 100644 libraries/src/test/java/com/baeldung/pairs/ApacheCommonsPairUnitTest.java create mode 100644 libraries/src/test/java/com/baeldung/pairs/CoreJavaPairUnitTest.java create mode 100644 libraries/src/test/java/com/baeldung/pairs/VavrPairsUnitTest.java diff --git a/libraries/src/test/java/com/baeldung/pairs/ApacheCommonsPairUnitTest.java b/libraries/src/test/java/com/baeldung/pairs/ApacheCommonsPairUnitTest.java new file mode 100644 index 0000000000..0e6242b8a3 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/pairs/ApacheCommonsPairUnitTest.java @@ -0,0 +1,50 @@ +package com.baeldung.pairs; + +import org.apache.commons.lang3.tuple.ImmutablePair; +import org.apache.commons.lang3.tuple.MutablePair; +import org.junit.Assert; +import org.junit.Test; + +public class ApacheCommonsPairUnitTest { + + @Test + public void givenMutablePair_whenGetValue_shouldPass() { + int key = 5; + String value = "Five"; + + MutablePair mutablePair = new MutablePair<>(key, value); + Assert.assertTrue(mutablePair.getKey() == key); + Assert.assertEquals(mutablePair.getValue(), value); + } + + @Test + public void givenMutablePair_whenSetValue_shouldPass() { + int key = 6; + String value = "Six"; + String newValue = "New Six"; + + MutablePair mutablePair = new MutablePair<>(key, value); + Assert.assertTrue(mutablePair.getKey() == key); + Assert.assertEquals(mutablePair.getValue(), value); + mutablePair.setValue(newValue); + Assert.assertEquals(mutablePair.getValue(), newValue); + } + + @Test + public void givenImmutablePair_whenGetValue_shouldPass() { + int key = 2; + String value = "Two"; + + ImmutablePair immutablePair = new ImmutablePair<>(key, value); + Assert.assertTrue(immutablePair.getKey() == key); + Assert.assertEquals(immutablePair.getValue(), value); + } + + @Test(expected = UnsupportedOperationException.class) + public void givenImmutablePair_whenSetValue_shouldFail() { + ImmutablePair immutablePair = new ImmutablePair<>(1, "One"); + immutablePair.setValue("Another One"); + } + + +} diff --git a/libraries/src/test/java/com/baeldung/pairs/CoreJavaPairUnitTest.java b/libraries/src/test/java/com/baeldung/pairs/CoreJavaPairUnitTest.java new file mode 100644 index 0000000000..ac258b9c77 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/pairs/CoreJavaPairUnitTest.java @@ -0,0 +1,17 @@ +package com.baeldung.pairs; + +import javafx.util.Pair; +import org.junit.Assert; +import org.junit.Test; + +public class CoreJavaPairUnitTest { + @Test + public void givenPair_whenGetValue_shouldSucceed() { + String key = "Good Day"; + boolean value = true; + Pair pair = new Pair<>(key, value); + + Assert.assertEquals(key, pair.getKey()); + Assert.assertEquals(value, pair.getValue()); + } +} \ No newline at end of file diff --git a/libraries/src/test/java/com/baeldung/pairs/VavrPairsUnitTest.java b/libraries/src/test/java/com/baeldung/pairs/VavrPairsUnitTest.java new file mode 100644 index 0000000000..9c318c7744 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/pairs/VavrPairsUnitTest.java @@ -0,0 +1,29 @@ +package com.baeldung.pairs; + +import io.vavr.Tuple2; +import org.junit.Assert; +import org.junit.Test; + +public class VavrPairsUnitTest { + @Test + public void givenTuple_whenSetValue_shouldSucceed() { + String key = "Eleven"; + double value = 11.0; + double newValue = 11.1; + + Tuple2 pair = new Tuple2<>(key, value); + + pair = pair.update2(newValue); + Assert.assertTrue(newValue == pair._2()); + } + + @Test + public void givenPair_whenGetValue_shouldSucceed() { + String key = "Twelve"; + double value = 12.0; + + Tuple2 pair = new Tuple2<>(key, value); + + Assert.assertTrue(value == pair._2()); + } +} \ No newline at end of file From cafdf51bd7e9010056b57a7c4016a6c11fa6c9da Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Tue, 5 Sep 2017 19:59:42 +0200 Subject: [PATCH 47/73] Refactor JDeffered (#2559) --- .../com/baeldung/jdeffered/FilterDemo.java | 14 +++----- .../java/com/baeldung/jdeffered/PipeDemo.java | 32 ++++++++----------- .../com/baeldung/jdeffered/PromiseDemo.java | 19 ++++------- .../baeldung/jdeffered/ThreadSafeDemo.java | 10 +++--- .../manager/DeferredManagerDemo.java | 5 ++- .../DeferredManagerWithExecutorDemo.java | 13 +++----- .../manager/SimpleDeferredManagerDemo.java | 13 +++----- .../java/com/baeldung/jdeffered/AppTest.java | 4 +-- 8 files changed, 42 insertions(+), 68 deletions(-) diff --git a/libraries/src/main/java/com/baeldung/jdeffered/FilterDemo.java b/libraries/src/main/java/com/baeldung/jdeffered/FilterDemo.java index fc33824b6f..ec2c52d3b5 100644 --- a/libraries/src/main/java/com/baeldung/jdeffered/FilterDemo.java +++ b/libraries/src/main/java/com/baeldung/jdeffered/FilterDemo.java @@ -4,25 +4,21 @@ import org.jdeferred.Deferred; import org.jdeferred.Promise; import org.jdeferred.impl.DeferredObject; -public class FilterDemo { +class FilterDemo { - static String modifiedMsg; + private static String modifiedMsg; - public static String filter(String msg) { + static String filter(String msg) { - Deferred d = new DeferredObject(); + Deferred d = new DeferredObject<>(); Promise p = d.promise(); Promise filtered = p.then((result) -> { modifiedMsg = "Hello " + result; }); - filtered.done((result) -> { - System.out.println("filtering done"); - }); + filtered.done(r -> System.out.println("filtering done")); d.resolve(msg); return modifiedMsg; - } - } diff --git a/libraries/src/main/java/com/baeldung/jdeffered/PipeDemo.java b/libraries/src/main/java/com/baeldung/jdeffered/PipeDemo.java index f3c72f1847..95250cff76 100644 --- a/libraries/src/main/java/com/baeldung/jdeffered/PipeDemo.java +++ b/libraries/src/main/java/com/baeldung/jdeffered/PipeDemo.java @@ -5,35 +5,31 @@ import org.jdeferred.DonePipe; import org.jdeferred.Promise; import org.jdeferred.impl.DeferredObject; -public class PipeDemo { +class PipeDemo { - public static enum Result { + public enum Result { SUCCESS, FAILURE }; - static Result status; + private static Result status; - public static Result validate(int num) { - Deferred d = new DeferredObject(); + static Result validate(int num) { + Deferred d = new DeferredObject<>(); Promise p = d.promise(); - p.then(new DonePipe() { - public Deferred pipeDone(Integer result) { - if (result < 90) { - return new DeferredObject().resolve(result); - } else { - return new DeferredObject().reject(new Exception("Unacceptable value")); - } + p.then((DonePipe) result -> { + if (result < 90) { + return new DeferredObject() + .resolve(result); + } else { + return new DeferredObject() + .reject(new Exception("Unacceptable value")); } - }).done((result) -> { - status = Result.SUCCESS; - }).fail((result) -> { - status = Result.FAILURE; - }); + }).done(r -> status = Result.SUCCESS) + .fail(r -> status = Result.FAILURE); d.resolve(num); return status; } - } diff --git a/libraries/src/main/java/com/baeldung/jdeffered/PromiseDemo.java b/libraries/src/main/java/com/baeldung/jdeffered/PromiseDemo.java index 7e38afc3ac..2a9f83dc35 100644 --- a/libraries/src/main/java/com/baeldung/jdeffered/PromiseDemo.java +++ b/libraries/src/main/java/com/baeldung/jdeffered/PromiseDemo.java @@ -4,22 +4,17 @@ import org.jdeferred.Deferred; import org.jdeferred.Promise; import org.jdeferred.impl.DeferredObject; -public class PromiseDemo { +class PromiseDemo { - public static void startJob(String jobName) { + static void startJob(String jobName) { - Deferred deferred = new DeferredObject(); + Deferred deferred = new DeferredObject<>(); Promise promise = deferred.promise(); - promise.done((result) -> { - System.out.println("Job done"); - }).fail((rejection) -> { - System.out.println("Job fail"); - }).progress((progress) -> { - System.out.println("Job is in progress"); - }).always((state, result, rejection) -> { - System.out.println("Job execution started"); - }); + promise.done(result -> System.out.println("Job done")) + .fail(rejection -> System.out.println("Job fail")) + .progress(progress -> System.out.println("Job is in progress")) + .always((state, result, rejection) -> System.out.println("Job execution started")); deferred.resolve(jobName); // deferred.notify(""); diff --git a/libraries/src/main/java/com/baeldung/jdeffered/ThreadSafeDemo.java b/libraries/src/main/java/com/baeldung/jdeffered/ThreadSafeDemo.java index ae9be964d3..22fd51ed92 100644 --- a/libraries/src/main/java/com/baeldung/jdeffered/ThreadSafeDemo.java +++ b/libraries/src/main/java/com/baeldung/jdeffered/ThreadSafeDemo.java @@ -10,13 +10,11 @@ public class ThreadSafeDemo { public static void task() { DeferredManager dm = new DefaultDeferredManager(); - Deferred deferred = new DeferredObject(); + Deferred deferred = new DeferredObject<>(); Promise p1 = deferred.promise(); - Promise p = dm.when(p1).done((result) -> { - System.out.println("done"); - }).fail((result) -> { - System.out.println("fail"); - }); + Promise p = dm.when(p1) + .done(r -> System.out.println("done")) + .fail(r -> System.out.println("fail")); synchronized (p) { while (p.isPending()) { diff --git a/libraries/src/main/java/com/baeldung/jdeffered/manager/DeferredManagerDemo.java b/libraries/src/main/java/com/baeldung/jdeffered/manager/DeferredManagerDemo.java index 65a720cc3f..d37a62e309 100644 --- a/libraries/src/main/java/com/baeldung/jdeffered/manager/DeferredManagerDemo.java +++ b/libraries/src/main/java/com/baeldung/jdeffered/manager/DeferredManagerDemo.java @@ -6,10 +6,10 @@ import org.jdeferred.Promise; import org.jdeferred.impl.DefaultDeferredManager; import org.jdeferred.impl.DeferredObject; -public class DeferredManagerDemo { +class DeferredManagerDemo { public static void initiate() { - Deferred deferred = new DeferredObject(); + Deferred deferred = new DeferredObject<>(); DeferredManager dm = new DefaultDeferredManager(); Promise p1 = deferred.promise(), p2 = deferred.promise(), p3 = deferred.promise(); dm.when(p1, p2, p3).done((result) -> { @@ -19,5 +19,4 @@ public class DeferredManagerDemo { }); deferred.resolve("Hello Baeldung"); } - } diff --git a/libraries/src/main/java/com/baeldung/jdeffered/manager/DeferredManagerWithExecutorDemo.java b/libraries/src/main/java/com/baeldung/jdeffered/manager/DeferredManagerWithExecutorDemo.java index e4669aab06..2abe9bc10f 100644 --- a/libraries/src/main/java/com/baeldung/jdeffered/manager/DeferredManagerWithExecutorDemo.java +++ b/libraries/src/main/java/com/baeldung/jdeffered/manager/DeferredManagerWithExecutorDemo.java @@ -9,19 +9,16 @@ import org.jdeferred.Promise; import org.jdeferred.impl.DefaultDeferredManager; import org.jdeferred.impl.DeferredObject; -public class DeferredManagerWithExecutorDemo { +class DeferredManagerWithExecutorDemo { public static void initiate() { ExecutorService executor = Executors.newFixedThreadPool(10); - Deferred deferred = new DeferredObject(); + Deferred deferred = new DeferredObject<>(); DeferredManager dm = new DefaultDeferredManager(executor); Promise p1 = deferred.promise(), p2 = deferred.promise(), p3 = deferred.promise(); - dm.when(p1, p2, p3).done((result) -> { - System.out.println("done"); - }).fail((result) -> { - System.out.println("fail"); - }); + dm.when(p1, p2, p3) + .done(r -> System.out.println("done")) + .fail(r -> System.out.println("fail")); deferred.resolve("done"); } - } diff --git a/libraries/src/main/java/com/baeldung/jdeffered/manager/SimpleDeferredManagerDemo.java b/libraries/src/main/java/com/baeldung/jdeffered/manager/SimpleDeferredManagerDemo.java index fc58aa40a2..dc2e82495f 100644 --- a/libraries/src/main/java/com/baeldung/jdeffered/manager/SimpleDeferredManagerDemo.java +++ b/libraries/src/main/java/com/baeldung/jdeffered/manager/SimpleDeferredManagerDemo.java @@ -3,17 +3,12 @@ package com.baeldung.jdeffered.manager; import org.jdeferred.DeferredManager; import org.jdeferred.impl.DefaultDeferredManager; -public class SimpleDeferredManagerDemo { +class SimpleDeferredManagerDemo { public static void initiate() { DeferredManager dm = new DefaultDeferredManager(); - dm.when(() -> { - return 1; - }).done((result) -> { - System.out.println("done"); - }).fail((e) -> { - e.printStackTrace(); - }); + dm.when(() -> 1) + .done(r -> System.out.println("done")) + .fail(Throwable::printStackTrace); } - } diff --git a/libraries/src/test/java/com/baeldung/jdeffered/AppTest.java b/libraries/src/test/java/com/baeldung/jdeffered/AppTest.java index b48c9c2652..97b20cda57 100644 --- a/libraries/src/test/java/com/baeldung/jdeffered/AppTest.java +++ b/libraries/src/test/java/com/baeldung/jdeffered/AppTest.java @@ -1,8 +1,7 @@ package com.baeldung.jdeffered; -import org.junit.Test; - import com.baeldung.jdeffered.PipeDemo.Result; +import org.junit.Test; import static org.junit.Assert.assertEquals; @@ -24,5 +23,4 @@ public class AppTest { Result result = PipeDemo.validate(80); assertEquals(result, Result.SUCCESS); } - } From 0d9068c0407e53720c94902b278cdebe1143ee88 Mon Sep 17 00:00:00 2001 From: alincojanu Date: Tue, 5 Sep 2017 21:00:36 +0300 Subject: [PATCH 48/73] A Guide to RxJava (#2557) * alin.cojanu25@gmail.com * add junit tests * core-java - sneaky throws * delete project spring_sample_annotations and spring_sample_xml ->not intended for this article * RxJava * delete old project * refactored lambdas * repaired subject test --- .../rxjava/ConnectableObservableImpl.java | 21 ++ .../com/baelding/rxjava/ObservableImpl.java | 105 ++++++++++ .../baelding/rxjava/ResourceManagement.java | 37 ++++ .../java/com/baelding/rxjava/SingleImpl.java | 24 +++ .../java/com/baelding/rxjava/SubjectImpl.java | 82 ++++++++ .../rxjava/ConnectableObservableTest.java | 27 +++ .../com/baeldung/rxjava/ObservableTest.java | 193 ++++++++++++++++++ .../rxjava/ResourceManagementTest.java | 41 ++++ .../java/com/baeldung/rxjava/SingleTest.java | 28 +++ .../java/com/baeldung/rxjava/SubjectTest.java | 17 ++ 10 files changed, 575 insertions(+) create mode 100644 rxjava/src/main/java/com/baelding/rxjava/ConnectableObservableImpl.java create mode 100644 rxjava/src/main/java/com/baelding/rxjava/ObservableImpl.java create mode 100644 rxjava/src/main/java/com/baelding/rxjava/ResourceManagement.java create mode 100644 rxjava/src/main/java/com/baelding/rxjava/SingleImpl.java create mode 100644 rxjava/src/main/java/com/baelding/rxjava/SubjectImpl.java create mode 100644 rxjava/src/test/java/com/baeldung/rxjava/ConnectableObservableTest.java create mode 100644 rxjava/src/test/java/com/baeldung/rxjava/ObservableTest.java create mode 100644 rxjava/src/test/java/com/baeldung/rxjava/ResourceManagementTest.java create mode 100644 rxjava/src/test/java/com/baeldung/rxjava/SingleTest.java create mode 100644 rxjava/src/test/java/com/baeldung/rxjava/SubjectTest.java diff --git a/rxjava/src/main/java/com/baelding/rxjava/ConnectableObservableImpl.java b/rxjava/src/main/java/com/baelding/rxjava/ConnectableObservableImpl.java new file mode 100644 index 0000000000..c5da7c1df5 --- /dev/null +++ b/rxjava/src/main/java/com/baelding/rxjava/ConnectableObservableImpl.java @@ -0,0 +1,21 @@ +package com.baelding.rxjava; + +import rx.Observable; +import rx.observables.ConnectableObservable; + +import java.util.concurrent.TimeUnit; + +public class ConnectableObservableImpl { + + public static void main(String[] args) throws InterruptedException { + + ConnectableObservable connectable = Observable.interval(200, TimeUnit.MILLISECONDS).publish(); + connectable.subscribe(System.out::println); + + System.out.println("Connect"); + connectable.connect(); + + Thread.currentThread().sleep(500); + System.out.println("Sleep"); + } +} diff --git a/rxjava/src/main/java/com/baelding/rxjava/ObservableImpl.java b/rxjava/src/main/java/com/baelding/rxjava/ObservableImpl.java new file mode 100644 index 0000000000..6254d03491 --- /dev/null +++ b/rxjava/src/main/java/com/baelding/rxjava/ObservableImpl.java @@ -0,0 +1,105 @@ +package com.baelding.rxjava; + +import rx.Observable; +import rx.observables.BlockingObservable; + +public class ObservableImpl { + + + public static void main(String[] args) { + + Integer[] numbers = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + String[] letters = {"a", "b", "c", "d", "e", "f", "g"}; + + System.out.println("-------Just-----------"); + Observable observable = Observable.just("Hello"); + observable.subscribe( + //onNext + System.out::println, + //onError + Throwable::printStackTrace, + //onCompleted + () -> System.out.println("onCompleted") + ); + + BlockingObservable blockingObservable = observable.toBlocking(); + + System.out.println(); + System.out.println("-------Map-----------"); + Observable.from(letters) + .map((letter) -> { + return letter.toUpperCase(); + }) + .subscribe( + System.out::print + ); + + System.out.println(); + System.out.println("-------FlatMap-----------"); + Observable.from(letters) + .flatMap((letter) -> { + String[] returnStrings = {letter.toUpperCase(), letter.toLowerCase()}; + return Observable.from(returnStrings); + }) + .subscribe( + System.out::print + ); + + System.out.println(); + System.out.println("--------Scan----------"); + Observable.from(letters) + .scan(new StringBuilder(), (buffer, nextLetter) -> { + return buffer.append(nextLetter); + }) + .subscribe((total) -> { + System.out.println(total.toString()); + }); + + System.out.println(); + System.out.println("------GroubBy------------"); + Observable.from(numbers) + .groupBy((i) -> { + return 0 == (i % 2) ? "EVEN" : "ODD"; + }) + .subscribe((group) -> { + group.subscribe((number) -> { + System.out.println(group.getKey() + " : " + number); + }); + }); + + System.out.println(); + System.out.println("-------Filter-----------"); + Observable.from(numbers) + .filter((i) -> { + return (i % 2 == 1); + }) + .subscribe( + System.out::println + ); + + + System.out.println("------DefaultIfEmpty------------"); + Observable.empty() + .defaultIfEmpty("Observable is empty") + .subscribe( + System.out::println + ); + + + + System.out.println("------DefaultIfEmpty-2-----------"); + Observable.from(letters) + .defaultIfEmpty("Observable is empty") + .first() + .subscribe(System.out::println); + + System.out.println("-------TakeWhile-----------"); + Observable.from(numbers) + .takeWhile((i) -> { + return i < 5; + }) + .subscribe(System.out::println); + + + } +} \ No newline at end of file diff --git a/rxjava/src/main/java/com/baelding/rxjava/ResourceManagement.java b/rxjava/src/main/java/com/baelding/rxjava/ResourceManagement.java new file mode 100644 index 0000000000..9bea622447 --- /dev/null +++ b/rxjava/src/main/java/com/baelding/rxjava/ResourceManagement.java @@ -0,0 +1,37 @@ +package com.baelding.rxjava; + + +import rx.Observable; + +public class ResourceManagement { + + + public static void main(String[] args) { + + Observable values = Observable.using( + //a factory function that creates a disposable resource + () -> { + String resource = "MyResource"; + System.out.println("Leased: " + resource); + return resource; + }, + //a factory function that creates an Observable + (resource) -> { + return Observable.create(o -> { + for (Character c : resource.toCharArray()) + o.onNext(c); + o.onCompleted(); + }); + }, + //a function that disposes of the resource + (resource) -> System.out.println("Disposed: " + resource) + ); + + values.subscribe( + v -> System.out.println(v), + e -> System.out.println(e) + ); + + } +} + diff --git a/rxjava/src/main/java/com/baelding/rxjava/SingleImpl.java b/rxjava/src/main/java/com/baelding/rxjava/SingleImpl.java new file mode 100644 index 0000000000..f6636999b6 --- /dev/null +++ b/rxjava/src/main/java/com/baelding/rxjava/SingleImpl.java @@ -0,0 +1,24 @@ +package com.baelding.rxjava; + +import rx.Observable; +import rx.Single; + +public class SingleImpl { + + public static void main(String[] args) { + + Single single = Observable.just("Hello") + .toSingle() + .doOnSuccess( + System.out::print + ) + .doOnError( + (error) -> { + throw new RuntimeException(error.getMessage()); + }); + single.subscribe(); + + + } + +} diff --git a/rxjava/src/main/java/com/baelding/rxjava/SubjectImpl.java b/rxjava/src/main/java/com/baelding/rxjava/SubjectImpl.java new file mode 100644 index 0000000000..e96f82a171 --- /dev/null +++ b/rxjava/src/main/java/com/baelding/rxjava/SubjectImpl.java @@ -0,0 +1,82 @@ +package com.baelding.rxjava; + +import rx.Observable; +import rx.schedulers.Schedulers; +import rx.subjects.PublishSubject; + + +public class SubjectImpl { + + public static final String[] subscriber1 = {""}; + public static final String[] subscriber2 = {""}; + + public static String subjectMethod() throws InterruptedException { + + + String[] letters = {"a", "b", "c", "d", "e", "f", "g"}; + Long signal = new Long(500L); + PublishSubject subject; + + synchronized (signal) { + subject = PublishSubject.create(); + subject.subscribe( + (letter) -> { + subscriber1[0] += letter; + System.out.println("Subscriber 1: " + subscriber1[0]); + try { + Thread.currentThread().sleep(500); + } catch (InterruptedException e) { + e.printStackTrace(); + } + if (letter.equals("c")) { + synchronized (signal) { + signal.notify(); + } + } + } + ); + } + + Observable.from(letters) + .subscribeOn(Schedulers.computation()) + .subscribe( + (letter) -> { + subject.onNext(letter); + }, + (t) -> { + subject.onError(t); + }, + () -> { + System.out.println("Subscriber 1 completed "); + subject.onCompleted(); + synchronized (signal) { + signal.notify(); + } + + } + ); + + synchronized (signal) { + signal.wait(); + subject.subscribe( + (letter) -> { + subscriber2[0] += letter; + System.out.println("Subscriber 2: " + subscriber2[0]); + }, + (t) -> { + subject.onError(t); + }, + () -> { + System.out.println("Subscriber 2 completed "); + } + ); + } + + synchronized (signal) { + signal.wait(); + return subscriber1[0] + subscriber2[0]; + } + + } + +} diff --git a/rxjava/src/test/java/com/baeldung/rxjava/ConnectableObservableTest.java b/rxjava/src/test/java/com/baeldung/rxjava/ConnectableObservableTest.java new file mode 100644 index 0000000000..88669179a6 --- /dev/null +++ b/rxjava/src/test/java/com/baeldung/rxjava/ConnectableObservableTest.java @@ -0,0 +1,27 @@ +package com.baeldung.rxjava; + +import org.junit.Test; +import rx.Observable; +import rx.observables.ConnectableObservable; + +import java.util.concurrent.TimeUnit; + +import static junit.framework.Assert.assertFalse; +import static junit.framework.Assert.assertTrue; + +public class ConnectableObservableTest { + + @Test + public void givenConnectableObservable_whenConnect_thenGetMessage() throws InterruptedException { + final String[] result = {""}; + ConnectableObservable connectable = Observable.interval(200, TimeUnit.MILLISECONDS).publish(); + connectable.subscribe(i -> result[0] += i); + + assertFalse(result[0].equals("01")); + + connectable.connect(); + Thread.currentThread().sleep(500); + + assertTrue(result[0].equals("01")); + } +} diff --git a/rxjava/src/test/java/com/baeldung/rxjava/ObservableTest.java b/rxjava/src/test/java/com/baeldung/rxjava/ObservableTest.java new file mode 100644 index 0000000000..a810abaa1e --- /dev/null +++ b/rxjava/src/test/java/com/baeldung/rxjava/ObservableTest.java @@ -0,0 +1,193 @@ +package com.baeldung.rxjava; + +import org.junit.Test; +import rx.Observable; +import rx.observables.ConnectableObservable; + +import java.util.concurrent.TimeUnit; + +import static junit.framework.Assert.assertTrue; + +public class ObservableTest { + + String result = ""; + + @Test + public void givenString_whenJustAndSubscribe_thenEmitsSingleItem() { + Observable observable = Observable.just("Hello"); + observable.subscribe(s -> result = s); + assertTrue(result.equals("Hello")); + } + + @Test + public void givenArray_whenFromAndSubscribe_thenEmitsItems() { + String[] letters = {"a", "b", "c", "d", "e", "f", "g"}; + Observable observable = Observable.from(letters); + observable.subscribe( + //onNext + (i) -> { + result += i; + }, + //onError + (t) -> { + t.printStackTrace(); + }, + //onCompleted + () -> { + result += "Complete"; + } + ); + assertTrue(result.equals("abcdefgComplete")); + } + + @Test + public void givenArray_whenConvertsObservabletoBlockingObservable_thenReturnFirstElement() { + String[] letters = {"a", "b", "c", "d", "e", "f", "g"}; + Observable observable = Observable.from(letters); + String blockingObservable = observable.toBlocking().first(); + + observable.subscribe( + //onNext + (i) -> { + result += i; + }, + //onError + (t) -> { + t.printStackTrace(); + }, + //onCompleted + () -> { + result += "Complete"; + } + ); + assertTrue(String.valueOf(result.charAt(0)).equals(blockingObservable)); + } + + @Test + public void givenArray_whenMapAndSubscribe_thenReturnCapitalLetters() { + String[] letters = {"a", "b", "c", "d", "e", "f", "g"}; + + Observable.from(letters) + .map((letter) -> { + return letter.toUpperCase(); + }) + .subscribe((letter) -> { + result += letter; + }); + + assertTrue(result.equals("ABCDEFG")); + } + + @Test + public void givenArray_whenFlatMapAndSubscribe_thenReturnUpperAndLowerCaseLetters() { + String[] letters = {"a", "b", "c", "d", "e", "f", "g"}; + + Observable.from(letters) + .flatMap((letter) -> { + String[] returnStrings = {letter.toUpperCase(), letter.toLowerCase()}; + return Observable.from(returnStrings); + }) + .subscribe((letter) -> { + result += letter; + }); + + assertTrue(result.equals("AaBbCcDdEeFfGg")); + } + + @Test + public void givenArray_whenScanAndSubscribe_thenReturnTheSumOfAllLetters() { + String[] letters = {"a", "b", "c", "d", "e", "f", "g"}; + + Observable.from(letters) + .scan(new StringBuilder(), (buffer, nextLetter) -> { + return buffer.append(nextLetter); + }) + .subscribe((total) -> { + result = total.toString(); + }); + + assertTrue(result.equals("abcdefg")); + } + + @Test + public void givenArrayOfNumbers_whenGroupBy_thenCreateTwoGroupsBasedOnParity() { + Integer[] numbers = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + String[] EVEN = {""}; + String[] ODD = {""}; + + Observable.from(numbers) + .groupBy((i) -> { + return 0 == (i % 2) ? "EVEN" : "ODD"; + }) + .subscribe((group) -> { + group.subscribe((number) -> { + if (group.getKey().toString().equals("EVEN")) { + EVEN[0] += number; + } else { + ODD[0] += number; + } + }); + }); + + assertTrue(EVEN[0].equals("0246810")); + assertTrue(ODD[0].equals("13579")); + } + + @Test + public void givenArrayOfNumbers_whenFilter_thenGetAllOddNumbers() { + Integer[] numbers = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + + Observable.from(numbers) + .filter((i) -> { + return (i % 2 == 1); + }) + .subscribe((i) -> { + result += i; + }); + + assertTrue(result.equals("13579")); + } + + @Test + public void givenEmptyObservable_whenDefaultIfEmpty_thenGetDefaultMessage() { + + Observable.empty() + .defaultIfEmpty("Observable is empty") + .subscribe((s) -> { + result += s; + }); + + assertTrue(result.equals("Observable is empty")); + } + + @Test + public void givenObservableFromArray_whenDefaultIfEmptyAndFirst_thenGetFirstLetterFromArray() { + String[] letters = {"a", "b", "c", "d", "e", "f", "g"}; + + Observable.from(letters) + .defaultIfEmpty("Observable is empty") + .first() + .subscribe((s) -> { + result += s; + }); + + assertTrue(result.equals("a")); + } + + @Test + public void givenObservableFromArray_whenTakeWhile_thenGetSumOfNumbersFromCondition() { + Integer[] numbers = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + final Integer[] sum = {0}; + + Observable.from(numbers) + .takeWhile((i) -> { + return i < 5; + }) + .subscribe((s) -> { + sum[0] += s; + }); + + assertTrue(sum[0] == 10); + } + +} diff --git a/rxjava/src/test/java/com/baeldung/rxjava/ResourceManagementTest.java b/rxjava/src/test/java/com/baeldung/rxjava/ResourceManagementTest.java new file mode 100644 index 0000000000..6cc01d8932 --- /dev/null +++ b/rxjava/src/test/java/com/baeldung/rxjava/ResourceManagementTest.java @@ -0,0 +1,41 @@ +package com.baeldung.rxjava; + +import org.junit.Test; +import rx.Observable; + +import static junit.framework.Assert.assertTrue; + +public class ResourceManagementTest { + + @Test + public void givenResource_whenUsingOberservable_thenCreatePrintDisposeResource() throws InterruptedException { + + final String[] result = {""}; + + Observable values = Observable.using( + //a factory function that creates a disposable resource + () -> { + String resource = "MyResource"; + return resource; + }, + //a factory function that creates an Observable + (resource) -> { + return Observable.create(o -> { + for (Character c : resource.toCharArray()) + o.onNext(c); + o.onCompleted(); + }); + }, + //a function that disposes of the resource + (resource) -> System.out.println("Disposed: " + resource) + ); + + values.subscribe( + v -> result[0] += v, + e -> result[0] += e + ); + + assertTrue(result[0].equals("MyResource")); + + } +} diff --git a/rxjava/src/test/java/com/baeldung/rxjava/SingleTest.java b/rxjava/src/test/java/com/baeldung/rxjava/SingleTest.java new file mode 100644 index 0000000000..d447931b29 --- /dev/null +++ b/rxjava/src/test/java/com/baeldung/rxjava/SingleTest.java @@ -0,0 +1,28 @@ +package com.baeldung.rxjava; + +import org.junit.Test; +import rx.Observable; +import rx.Single; + +import static junit.framework.Assert.assertTrue; + +public class SingleTest { + + @Test + public void givenSingleObservable_whenSuccess_thenGetMessage() throws InterruptedException { + final String[] result = {""}; + Single single = Observable.just("Hello").toSingle() + .doOnSuccess( + (i) -> { + result[0] += i; + }) + .doOnError( + (error) -> { + throw new RuntimeException(error.getMessage()); + }); + single.subscribe(); + + assertTrue(result[0].equals("Hello")); + } + + } diff --git a/rxjava/src/test/java/com/baeldung/rxjava/SubjectTest.java b/rxjava/src/test/java/com/baeldung/rxjava/SubjectTest.java new file mode 100644 index 0000000000..8ff81e7066 --- /dev/null +++ b/rxjava/src/test/java/com/baeldung/rxjava/SubjectTest.java @@ -0,0 +1,17 @@ +package com.baeldung.rxjava; + +import com.baelding.rxjava.SubjectImpl; +import org.junit.Test; + +import static junit.framework.Assert.assertTrue; + +public class SubjectTest { + + @Test + public void givenSubjectAndTwoSubscribers_whenSubscribeOnSubjectAfterLetterC_thenSecondSubscriberBeginsToPrint() throws InterruptedException { + String result = SubjectImpl.subjectMethod(); + String subscribers = SubjectImpl.subscriber1[0] + SubjectImpl.subscriber2[0]; + + assertTrue(subscribers.equals(result)); + } +} From 830db34334fa1fce590cbc7de6a5b50e295c2efc Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Tue, 5 Sep 2017 20:43:00 +0200 Subject: [PATCH 49/73] Refactor RxJava (#2564) --- .../rxjava/ConnectableObservableImpl.java | 2 +- .../com/baelding/rxjava/ObservableImpl.java | 87 +++++++------------ .../baelding/rxjava/ResourceManagement.java | 34 +++----- .../java/com/baelding/rxjava/SingleImpl.java | 16 ++-- .../java/com/baelding/rxjava/SubjectImpl.java | 79 +++++++---------- .../rxjava/operator/ToCleanString.java | 1 - 6 files changed, 83 insertions(+), 136 deletions(-) diff --git a/rxjava/src/main/java/com/baelding/rxjava/ConnectableObservableImpl.java b/rxjava/src/main/java/com/baelding/rxjava/ConnectableObservableImpl.java index c5da7c1df5..8788b894aa 100644 --- a/rxjava/src/main/java/com/baelding/rxjava/ConnectableObservableImpl.java +++ b/rxjava/src/main/java/com/baelding/rxjava/ConnectableObservableImpl.java @@ -15,7 +15,7 @@ public class ConnectableObservableImpl { System.out.println("Connect"); connectable.connect(); - Thread.currentThread().sleep(500); + Thread.sleep(500); System.out.println("Sleep"); } } diff --git a/rxjava/src/main/java/com/baelding/rxjava/ObservableImpl.java b/rxjava/src/main/java/com/baelding/rxjava/ObservableImpl.java index 6254d03491..f8f5b81883 100644 --- a/rxjava/src/main/java/com/baelding/rxjava/ObservableImpl.java +++ b/rxjava/src/main/java/com/baelding/rxjava/ObservableImpl.java @@ -5,7 +5,6 @@ import rx.observables.BlockingObservable; public class ObservableImpl { - public static void main(String[] args) { Integer[] numbers = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; @@ -14,12 +13,9 @@ public class ObservableImpl { System.out.println("-------Just-----------"); Observable observable = Observable.just("Hello"); observable.subscribe( - //onNext - System.out::println, - //onError - Throwable::printStackTrace, - //onCompleted - () -> System.out.println("onCompleted") + System.out::println, //onNext + Throwable::printStackTrace, //onError + () -> System.out.println("onCompleted") //onCompleted ); BlockingObservable blockingObservable = observable.toBlocking(); @@ -27,79 +23,58 @@ public class ObservableImpl { System.out.println(); System.out.println("-------Map-----------"); Observable.from(letters) - .map((letter) -> { - return letter.toUpperCase(); - }) - .subscribe( - System.out::print - ); + .map(String::toUpperCase) + .subscribe(System.out::print); System.out.println(); System.out.println("-------FlatMap-----------"); Observable.from(letters) - .flatMap((letter) -> { - String[] returnStrings = {letter.toUpperCase(), letter.toLowerCase()}; - return Observable.from(returnStrings); - }) - .subscribe( - System.out::print - ); + .flatMap((letter) -> { + String[] returnStrings = {letter.toUpperCase(), letter.toLowerCase()}; + return Observable.from(returnStrings); + }) + .subscribe( + System.out::print + ); System.out.println(); System.out.println("--------Scan----------"); Observable.from(letters) - .scan(new StringBuilder(), (buffer, nextLetter) -> { - return buffer.append(nextLetter); - }) - .subscribe((total) -> { - System.out.println(total.toString()); - }); + .scan(new StringBuilder(), StringBuilder::append) + .subscribe(System.out::println); System.out.println(); System.out.println("------GroubBy------------"); Observable.from(numbers) - .groupBy((i) -> { - return 0 == (i % 2) ? "EVEN" : "ODD"; - }) - .subscribe((group) -> { - group.subscribe((number) -> { - System.out.println(group.getKey() + " : " + number); - }); - }); + .groupBy(i -> 0 == (i % 2) ? "EVEN" : "ODD") + .subscribe((group) -> group.subscribe((number) -> { + System.out.println(group.getKey() + " : " + number); + })); System.out.println(); System.out.println("-------Filter-----------"); Observable.from(numbers) - .filter((i) -> { - return (i % 2 == 1); - }) - .subscribe( - System.out::println - ); - + .filter(i -> (i % 2 == 1)) + .subscribe( + System.out::println + ); System.out.println("------DefaultIfEmpty------------"); Observable.empty() - .defaultIfEmpty("Observable is empty") - .subscribe( - System.out::println - ); - - + .defaultIfEmpty("Observable is empty") + .subscribe( + System.out::println + ); System.out.println("------DefaultIfEmpty-2-----------"); Observable.from(letters) - .defaultIfEmpty("Observable is empty") - .first() - .subscribe(System.out::println); + .defaultIfEmpty("Observable is empty") + .first() + .subscribe(System.out::println); System.out.println("-------TakeWhile-----------"); Observable.from(numbers) - .takeWhile((i) -> { - return i < 5; - }) - .subscribe(System.out::println); - - + .takeWhile(i -> i < 5) + .subscribe(System.out::println); } } \ No newline at end of file diff --git a/rxjava/src/main/java/com/baelding/rxjava/ResourceManagement.java b/rxjava/src/main/java/com/baelding/rxjava/ResourceManagement.java index 9bea622447..e097da1a29 100644 --- a/rxjava/src/main/java/com/baelding/rxjava/ResourceManagement.java +++ b/rxjava/src/main/java/com/baelding/rxjava/ResourceManagement.java @@ -1,37 +1,29 @@ package com.baelding.rxjava; - import rx.Observable; public class ResourceManagement { - public static void main(String[] args) { Observable values = Observable.using( - //a factory function that creates a disposable resource - () -> { - String resource = "MyResource"; - System.out.println("Leased: " + resource); - return resource; - }, - //a factory function that creates an Observable - (resource) -> { - return Observable.create(o -> { - for (Character c : resource.toCharArray()) - o.onNext(c); - o.onCompleted(); - }); - }, - //a function that disposes of the resource - (resource) -> System.out.println("Disposed: " + resource) + () -> { + String resource = "MyResource"; + System.out.println("Leased: " + resource); + return resource; + }, + r -> Observable.create(o -> { + for (Character c : r.toCharArray()) + o.onNext(c); + o.onCompleted(); + }), + r -> System.out.println("Disposed: " + r) ); values.subscribe( - v -> System.out.println(v), - e -> System.out.println(e) + System.out::println, + System.out::println ); - } } diff --git a/rxjava/src/main/java/com/baelding/rxjava/SingleImpl.java b/rxjava/src/main/java/com/baelding/rxjava/SingleImpl.java index f6636999b6..f625ab6b44 100644 --- a/rxjava/src/main/java/com/baelding/rxjava/SingleImpl.java +++ b/rxjava/src/main/java/com/baelding/rxjava/SingleImpl.java @@ -8,17 +8,11 @@ public class SingleImpl { public static void main(String[] args) { Single single = Observable.just("Hello") - .toSingle() - .doOnSuccess( - System.out::print - ) - .doOnError( - (error) -> { - throw new RuntimeException(error.getMessage()); - }); + .toSingle() + .doOnSuccess(System.out::print) + .doOnError(e -> { + throw new RuntimeException(e.getMessage()); + }); single.subscribe(); - - } - } diff --git a/rxjava/src/main/java/com/baelding/rxjava/SubjectImpl.java b/rxjava/src/main/java/com/baelding/rxjava/SubjectImpl.java index e96f82a171..244c291f00 100644 --- a/rxjava/src/main/java/com/baelding/rxjava/SubjectImpl.java +++ b/rxjava/src/main/java/com/baelding/rxjava/SubjectImpl.java @@ -4,7 +4,6 @@ import rx.Observable; import rx.schedulers.Schedulers; import rx.subjects.PublishSubject; - public class SubjectImpl { public static final String[] subscriber1 = {""}; @@ -12,63 +11,53 @@ public class SubjectImpl { public static String subjectMethod() throws InterruptedException { - String[] letters = {"a", "b", "c", "d", "e", "f", "g"}; - Long signal = new Long(500L); + Long signal = 500L; PublishSubject subject; synchronized (signal) { subject = PublishSubject.create(); subject.subscribe( - (letter) -> { - subscriber1[0] += letter; - System.out.println("Subscriber 1: " + subscriber1[0]); - try { - Thread.currentThread().sleep(500); - } catch (InterruptedException e) { - e.printStackTrace(); - } - if (letter.equals("c")) { - synchronized (signal) { - signal.notify(); - } - } - } + (letter) -> { + subscriber1[0] += letter; + System.out.println("Subscriber 1: " + subscriber1[0]); + try { + Thread.sleep(500); + } catch (InterruptedException e) { + e.printStackTrace(); + } + if (letter.equals("c")) { + synchronized (signal) { + signal.notify(); + } + } + } ); } Observable.from(letters) - .subscribeOn(Schedulers.computation()) - .subscribe( - (letter) -> { - subject.onNext(letter); - }, - (t) -> { - subject.onError(t); - }, - () -> { - System.out.println("Subscriber 1 completed "); - subject.onCompleted(); - synchronized (signal) { - signal.notify(); - } - - } - ); + .subscribeOn(Schedulers.computation()) + .subscribe( + subject::onNext, + subject::onError, + () -> { + System.out.println("Subscriber 1 completed "); + subject.onCompleted(); + synchronized (signal) { + signal.notify(); + } + } + ); synchronized (signal) { signal.wait(); subject.subscribe( - (letter) -> { - subscriber2[0] += letter; - System.out.println("Subscriber 2: " + subscriber2[0]); - }, - (t) -> { - subject.onError(t); - }, - () -> { - System.out.println("Subscriber 2 completed "); - } + (letter) -> { + subscriber2[0] += letter; + System.out.println("Subscriber 2: " + subscriber2[0]); + }, + subject::onError, + () -> System.out.println("Subscriber 2 completed ") ); } @@ -76,7 +65,5 @@ public class SubjectImpl { signal.wait(); return subscriber1[0] + subscriber2[0]; } - } - } diff --git a/rxjava/src/main/java/com/baelding/rxjava/operator/ToCleanString.java b/rxjava/src/main/java/com/baelding/rxjava/operator/ToCleanString.java index f6cf9fba68..32db92c8fe 100644 --- a/rxjava/src/main/java/com/baelding/rxjava/operator/ToCleanString.java +++ b/rxjava/src/main/java/com/baelding/rxjava/operator/ToCleanString.java @@ -39,5 +39,4 @@ public class ToCleanString implements Operator { } }; } - } \ No newline at end of file From 7916882668cc144bce4c455e87899b38610a9cdf Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Tue, 5 Sep 2017 23:55:15 +0200 Subject: [PATCH 50/73] Refactor stream with indices (#2565) * Refactor RxJava * Refactor Stream with indices --- .../baeldung/stream/StreamIndicesTest.java | 36 ++++++++++--------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/core-java/src/test/java/com/baeldung/stream/StreamIndicesTest.java b/core-java/src/test/java/com/baeldung/stream/StreamIndicesTest.java index d8513417ea..a02ef4031e 100644 --- a/core-java/src/test/java/com/baeldung/stream/StreamIndicesTest.java +++ b/core-java/src/test/java/com/baeldung/stream/StreamIndicesTest.java @@ -1,19 +1,18 @@ package com.baeldung.stream; -import static org.junit.Assert.assertEquals; +import com.codepoetics.protonpack.Indexed; +import org.junit.Test; import java.util.Arrays; import java.util.List; -import org.junit.Test; - -import com.codepoetics.protonpack.Indexed; +import static org.junit.Assert.assertEquals; public class StreamIndicesTest { @Test - public void givenArray_whenGetIndexedStrings_thenReturnListOfEvenIndexedStrings() { - String[] names = { "Afrim", "Bashkim", "Besim", "Lulzim", "Durim", "Shpetim" }; + public void whenCalled_thenReturnListOfEvenIndexedStrings() { + String[] names = {"Afrim", "Bashkim", "Besim", "Lulzim", "Durim", "Shpetim"}; List expectedResult = Arrays.asList("Afrim", "Besim", "Durim"); List actualResult = StreamIndices.getEvenIndexedStrings(names); @@ -21,8 +20,8 @@ public class StreamIndicesTest { } @Test - public void givenArray_whenGetIndexedStrings_thenReturnListOfEvenIndexedStringsVersionTwo() { - String[] names = { "Afrim", "Bashkim", "Besim", "Lulzim", "Durim", "Shpetim" }; + public void whenCalled_thenReturnListOfEvenIndexedStringsVersionTwo() { + String[] names = {"Afrim", "Bashkim", "Besim", "Lulzim", "Durim", "Shpetim"}; List expectedResult = Arrays.asList("Afrim", "Besim", "Durim"); List actualResult = StreamIndices.getEvenIndexedStrings(names); @@ -30,8 +29,8 @@ public class StreamIndicesTest { } @Test - public void givenArray_whenGetIndexedStrings_thenReturnListOfOddStrings() { - String[] names = { "Afrim", "Bashkim", "Besim", "Lulzim", "Durim", "Shpetim" }; + public void whenCalled_thenReturnListOfOddStrings() { + String[] names = {"Afrim", "Bashkim", "Besim", "Lulzim", "Durim", "Shpetim"}; List expectedResult = Arrays.asList("Bashkim", "Lulzim", "Shpetim"); List actualResult = StreamIndices.getOddIndexedStrings(names); @@ -39,30 +38,33 @@ public class StreamIndicesTest { } @Test - public void givenList_whenGetIndexedStrings_thenReturnListOfEvenIndexedStrings() { + public void givenList_whenCalled_thenReturnListOfEvenIndexedStrings() { List names = Arrays.asList("Afrim", "Bashkim", "Besim", "Lulzim", "Durim", "Shpetim"); - List> expectedResult = Arrays.asList(Indexed.index(0, "Afrim"), Indexed.index(2, "Besim"), Indexed.index(4, "Durim")); + List> expectedResult = Arrays + .asList(Indexed.index(0, "Afrim"), Indexed.index(2, "Besim"), Indexed + .index(4, "Durim")); List> actualResult = StreamIndices.getEvenIndexedStrings(names); assertEquals(expectedResult, actualResult); } @Test - public void givenList_whenGetIndexedStrings_thenReturnListOfOddIndexedStrings() { + public void givenList_whenCalled_thenReturnListOfOddIndexedStrings() { List names = Arrays.asList("Afrim", "Bashkim", "Besim", "Lulzim", "Durim", "Shpetim"); - List> expectedResult = Arrays.asList(Indexed.index(1, "Bashkim"), Indexed.index(3, "Lulzim"), Indexed.index(5, "Shpetim")); + List> expectedResult = Arrays + .asList(Indexed.index(1, "Bashkim"), Indexed.index(3, "Lulzim"), Indexed + .index(5, "Shpetim")); List> actualResult = StreamIndices.getOddIndexedStrings(names); assertEquals(expectedResult, actualResult); } @Test - public void givenArray_whenGetIndexedStrings_thenReturnListOfOddStringsVersionTwo() { - String[] names = { "Afrim", "Bashkim", "Besim", "Lulzim", "Durim", "Shpetim" }; + public void whenCalled_thenReturnListOfOddStringsVersionTwo() { + String[] names = {"Afrim", "Bashkim", "Besim", "Lulzim", "Durim", "Shpetim"}; List expectedResult = Arrays.asList("Bashkim", "Lulzim", "Shpetim"); List actualResult = StreamIndices.getOddIndexedStringsVersionTwo(names); assertEquals(expectedResult, actualResult); } - } \ No newline at end of file From 4b9ec46ca3a2eb3d922d593d0180bcb325776275 Mon Sep 17 00:00:00 2001 From: lor6 Date: Wed, 6 Sep 2017 08:49:55 +0300 Subject: [PATCH 51/73] unit-api examples (#2566) * unit-api examples * fix conflict --- libraries/pom.xml | 7 +- .../measure => measurement}/WaterTank.java | 10 +-- .../javax/measure/WaterTankTests.java | 68 --------------- .../baeldung/measurement/WaterTankTests.java | 86 +++++++++++++++++++ 4 files changed, 95 insertions(+), 76 deletions(-) rename libraries/src/main/java/com/baeldung/{javax/measure => measurement}/WaterTank.java (62%) delete mode 100644 libraries/src/test/java/com/baeldung/javax/measure/WaterTankTests.java create mode 100644 libraries/src/test/java/com/baeldung/measurement/WaterTankTests.java diff --git a/libraries/pom.xml b/libraries/pom.xml index 6666900c1d..07524ab4e7 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -136,9 +136,9 @@ ${commons-text.version} - javax.measure - jsr-275 - 1.0.0 + tec.units + unit-ri + 1.0.3 org.apache.commons @@ -632,5 +632,6 @@ 2.9.9 1.5.1 1.14 + 1.0.3 diff --git a/libraries/src/main/java/com/baeldung/javax/measure/WaterTank.java b/libraries/src/main/java/com/baeldung/measurement/WaterTank.java similarity index 62% rename from libraries/src/main/java/com/baeldung/javax/measure/WaterTank.java rename to libraries/src/main/java/com/baeldung/measurement/WaterTank.java index 1ab9eee53f..f3675ae689 100644 --- a/libraries/src/main/java/com/baeldung/javax/measure/WaterTank.java +++ b/libraries/src/main/java/com/baeldung/measurement/WaterTank.java @@ -1,14 +1,14 @@ -package com.baeldung.javax.measure; +package com.baeldung.measurement; -import javax.measure.Measure; +import javax.measure.Quantity; import javax.measure.quantity.Volume; public class WaterTank { - private Measure capacityMeasure; + private Quantity capacityMeasure; private double capacityDouble; - public void setCapacityMeasure(Measure capacityMeasure) { + public void setCapacityMeasure(Quantity capacityMeasure) { this.capacityMeasure = capacityMeasure; } @@ -16,7 +16,7 @@ public class WaterTank { this.capacityDouble = capacityDouble; } - public Measure getCapacityMeasure() { + public Quantity getCapacityMeasure() { return capacityMeasure; } diff --git a/libraries/src/test/java/com/baeldung/javax/measure/WaterTankTests.java b/libraries/src/test/java/com/baeldung/javax/measure/WaterTankTests.java deleted file mode 100644 index ef54035353..0000000000 --- a/libraries/src/test/java/com/baeldung/javax/measure/WaterTankTests.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.baeldung.javax.measure; - -import javax.measure.Measure; -import javax.measure.converter.UnitConverter; -import javax.measure.quantity.Duration; -import javax.measure.quantity.Length; -import javax.measure.quantity.Pressure; -import javax.measure.quantity.Volume; -import static javax.measure.unit.NonSI.HOUR; -import static javax.measure.unit.NonSI.LITRE; -import static javax.measure.unit.NonSI.MILE; -import static javax.measure.unit.NonSI.MINUTE; -import javax.measure.unit.SI; -import static javax.measure.unit.SI.KILO; -import static javax.measure.unit.SI.METER; -import static javax.measure.unit.SI.NEWTON; -import static javax.measure.unit.SI.SECOND; -import javax.measure.unit.Unit; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import org.junit.Test; - -public class WaterTankTests { - - @Test - public void givenMeasure_whenGetUnitAndConvertValue_thenSuccess() { - WaterTank waterTank = new WaterTank(); - waterTank.setCapacityMeasure(Measure.valueOf(9.2, LITRE)); - assertEquals(LITRE, waterTank.getCapacityMeasure().getUnit()); - - Measure waterCapacity = waterTank.getCapacityMeasure(); - double volumeInLitre = waterCapacity.getValue().doubleValue(); - assertEquals(9.2, volumeInLitre, 0.0f); - - double volumeInMilliLitre = waterCapacity.doubleValue(SI.MILLI(LITRE)); - assertEquals(9200.0, volumeInMilliLitre, 0.0f); - - Unit Kilometer = SI.KILO(METER); - Unit Centimeter = SI.CENTI(METER); - } - - @Test - public void givenMeasure_whenAlternateMeasure_ThenGetAlternateMeasure() { - Unit PASCAL = NEWTON.divide(METER.pow(2)).alternate("Pa"); - assertTrue(Unit.valueOf("Pa").equals(PASCAL)); - } - - @Test - public void givenMeasure_whenCompoundMeasure_ThenGetCompoundMeasure() { - Unit HOUR_MINUTE_SECOND = HOUR.compound(MINUTE).compound(SECOND); - Measure duration = Measure.valueOf(12345, SECOND); - assertEquals("3h25min45s", duration.to(HOUR_MINUTE_SECOND).toString()); - } - - @Test - public void givenMiles_whenConvertToKilometer_ThenConverted() { - double distanceInMiles = 50.0; - UnitConverter mileToKilometer = MILE.getConverterTo(KILO(METER)); - double distanceInKilometers = mileToKilometer.convert(distanceInMiles); - assertEquals(80.4672, distanceInKilometers, 0.00f); - } - - @Test - public void givenSymbol_WhenCompareToSystemUnit_ThenSuccess() { - assertTrue(Unit.valueOf("kW").equals(SI.KILO(SI.WATT))); - assertTrue(Unit.valueOf("ms").equals(SI.SECOND.divide(1000))); - } -} diff --git a/libraries/src/test/java/com/baeldung/measurement/WaterTankTests.java b/libraries/src/test/java/com/baeldung/measurement/WaterTankTests.java new file mode 100644 index 0000000000..b023ffe8d9 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/measurement/WaterTankTests.java @@ -0,0 +1,86 @@ +package com.baeldung.measurement; + +import javax.measure.Quantity; +import javax.measure.quantity.Area; +import javax.measure.quantity.Length; +import javax.measure.quantity.Pressure; +import javax.measure.quantity.Volume; + +import javax.measure.Unit; +import javax.measure.UnitConverter; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import org.junit.Test; + +import com.baeldung.measurement.WaterTank; + +import tec.units.ri.format.SimpleUnitFormat; +import tec.units.ri.quantity.Quantities; +import tec.units.ri.unit.MetricPrefix; +import static tec.units.ri.unit.Units.*; + +public class WaterTankTests { + + @Test + public void givenQuantity_whenGetUnitAndConvertValue_thenSuccess() { + WaterTank waterTank = new WaterTank(); + waterTank.setCapacityMeasure(Quantities.getQuantity(9.2, LITRE)); + assertEquals(LITRE, waterTank.getCapacityMeasure().getUnit()); + + Quantity waterCapacity = waterTank.getCapacityMeasure(); + double volumeInLitre = waterCapacity.getValue().doubleValue(); + assertEquals(9.2, volumeInLitre, 0.0f); + + double volumeInMilliLitre = waterCapacity.to(MetricPrefix.MILLI(LITRE)).getValue().doubleValue(); + assertEquals(9200.0, volumeInMilliLitre, 0.0f); + + // compilation error + // volumeInMilliLitre = waterCapacity.to(MetricPrefix.MILLI(KILOGRAM)); + + Unit Kilometer = MetricPrefix.KILO(METRE); + + // compilation error + // Unit Centimeter = MetricPrefix.CENTI(LITRE); + } + + @Test + public void givenUnit_whenAlternateUnit_ThenGetAlternateUnit() { + + Unit PASCAL = NEWTON.divide(METRE.pow(2)).alternate("Pa").asType(Pressure.class); + assertTrue(SimpleUnitFormat.getInstance().parse("Pa").equals(PASCAL)); + } + + @Test + public void givenUnit_whenProduct_ThenGetProductUnit() { + Unit squareMetre = METRE.multiply(METRE).asType(Area.class); + Quantity line = Quantities.getQuantity(2, METRE); + assertEquals(line.multiply(line).getUnit(), squareMetre); + } + + @Test + public void givenMeters_whenConvertToKilometer_ThenConverted() { + double distanceInMeters = 50.0; + UnitConverter metreToKilometre = METRE.getConverterTo(MetricPrefix.KILO(METRE)); + double distanceInKilometers = metreToKilometre.convert(distanceInMeters); + assertEquals(0.05, distanceInKilometers, 0.00f); + } + + @Test + public void givenSymbol_WhenCompareToSystemUnit_ThenSuccess() { + assertTrue(SimpleUnitFormat.getInstance().parse("kW").equals(MetricPrefix.KILO(WATT))); + assertTrue(SimpleUnitFormat.getInstance().parse("ms").equals(SECOND.divide(1000))); + } + + @Test + public void givenUnits_WhenAdd_ThenSuccess() { + Quantity total = Quantities.getQuantity(2, METRE).add(Quantities.getQuantity(3, METRE)); + assertEquals(total.getValue().intValue(), 5); + + // compilation error + // Quantity total = Quantities.getQuantity(2, METRE).add(Quantities.getQuantity(3, LITRE)); + + Quantity totalKm = Quantities.getQuantity(2, METRE).add(Quantities.getQuantity(3, MetricPrefix.KILO(METRE))); + assertEquals(totalKm.getValue().intValue(), 3002); + } +} From 7904c3ee04742f0637200e2dcf5df159a3f7c666 Mon Sep 17 00:00:00 2001 From: iaforek Date: Wed, 6 Sep 2017 07:31:52 +0100 Subject: [PATCH 52/73] BAEL-1065 Simple performance check StringBuffer vs StringBuilder. (#2512) * Code for Dependency Injection Article. * Added Java based configuration. Downloaded formatter.xml and reformatted all changed files. Manually changed tab into 4 spaces in XML configuration files. * BAEL-434 - Spring Roo project files generated by Spring Roo. No formatting applied. Added POM, java and resources folders. * Moved project from roo to spring-roo folder. * BAEL-838 Initial code showing how to remove last char - helper class and tests. * BAEL-838 Corrected Helper class and associated empty string test case. Added StringUtils.substing tests. * BAEL-838 Refromatted code using formatter.xml. Added Assert.assertEquals import. Renamed test to follow convention. Reordered tests. * BAEL-838 - Added regex method and updated tests. * BAEL-838 Added new line examples. * BAEL-838 Renamed RemoveLastChar class to StringHelper and added Java8 examples. Refactord code. * BAEL-838 Changed method names * BAEL-838 Tiny change to keep code consistant. Return null or empty. * BAEL-838 Removed unresolved conflict. * BAEL-821 New class that shows different rounding techniques. Updated POM. * BAEL-821 - Added unit test for different round methods. * BAEL-821 Changed test method name to follow the convention * BAEL-821 Added more test and updated round methods. * BAEL-837 - initial commit. A few examples of adding doubles. * BAEL-837 - Couple of smaller changes * BAEL-837 - Added jUnit test. * BAEL-579 Updated Spring Cloud Version I was getting error: java.lang.NoSuchMethodError: org.springframework.cloud.config.environment.Environment After version update, all is okay. * BAEL-579 Added actuator to Cloud Config Client. * BAEL-579 Enabled cloud bus and updated dependencies. * BAEL-579 Config Client using Spring Cloud Bus. * BAEL-579 Recreated Basic Config Server. * BAEL-579 Recreated Config Client. * BAEL-579 Removed test Git URL. * BAEL-579 Added Actuator to Config Client * BAEL-579 Added Spring Cloud Bus to Client. * BAEL-579 Server changes for Spring Cloud Bus Added dependencies and removed git.clone-on-start as this was causing server to throw errors after git properties change. * BAEL-579 Removed Git URL. * Revert "BAEL-579 Updated Spring Cloud Version" This reverts commit f775bf91e53a1ecfb9b70596688d7c8202bf495f. * Revert "BAEL-579 Config Client using Spring Cloud Bus." This reverts commit 1d96bc5761994a33af9a7a9aa5ab68604a5b44dc. * Revert "BAEL-579 Enabled cloud bus and updated dependencies." This reverts commit 7845da922d89d53506dd0fff387ea13694c50bc1. * Revert "BAEL-579 Added actuator to Cloud Config Client." This reverts commit 076657a26a57e0aa676989a4d97966a3b9d53e1c. * BAEL-579 Added missing dependency versions. * BAEL-579 Added missing dependency versions. * Updated gitignore * BAEL-1065 Simple performance check StringBuffer vs StringBuilder. * BAEL-1065 Added JMH benchmarks --- .gitignore | 3 +- core-java/pom.xml | 27 ++++++++++- .../string/StringBufferStringBuilder.java | 46 +++++++++++++++++++ .../java/com/baeldung/maths/RoundTest.java | 24 +++++----- 4 files changed, 86 insertions(+), 14 deletions(-) create mode 100644 core-java/src/main/java/com/baeldung/string/StringBufferStringBuilder.java diff --git a/.gitignore b/.gitignore index a8f09b4135..08f570ad06 100644 --- a/.gitignore +++ b/.gitignore @@ -41,4 +41,5 @@ SpringDataInjectionDemo/.mvn/wrapper/maven-wrapper.properties spring-call-getters-using-reflection/.mvn/wrapper/maven-wrapper.properties spring-check-if-a-property-is-null/.mvn/wrapper/maven-wrapper.properties -/vertx-and-rxjava/.vertx/ +*.springBeans + diff --git a/core-java/pom.xml b/core-java/pom.xml index d4d249934b..0e57b35ab8 100644 --- a/core-java/pom.xml +++ b/core-java/pom.xml @@ -372,6 +372,31 @@ + + + org.codehaus.mojo + exec-maven-plugin + + + + run-benchmarks + integration-test + + exec + + + test + java + + -classpath + + org.openjdk.jmh.Main + .* + + + + + @@ -448,4 +473,4 @@ 3.6.0 2.19.1 - + \ No newline at end of file diff --git a/core-java/src/main/java/com/baeldung/string/StringBufferStringBuilder.java b/core-java/src/main/java/com/baeldung/string/StringBufferStringBuilder.java new file mode 100644 index 0000000000..74f489d57f --- /dev/null +++ b/core-java/src/main/java/com/baeldung/string/StringBufferStringBuilder.java @@ -0,0 +1,46 @@ +package com.baeldung.string; + +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.RunnerException; +import org.openjdk.jmh.runner.options.Options; +import org.openjdk.jmh.runner.options.OptionsBuilder; + +public class StringBufferStringBuilder { + + public static void main(String[] args) throws RunnerException { + + Options opt = new OptionsBuilder() + .include(StringBufferStringBuilder.class.getSimpleName()) + .build(); + + new Runner(opt).run(); + } + + @State(Scope.Benchmark) + public static class MyState { + int iterations = 1000; + String initial = "abc"; + String suffix = "def"; + } + + @Benchmark + public StringBuffer benchmarkStringBuffer(MyState state) { + StringBuffer stringBuffer = new StringBuffer(state.initial); + for (int i = 0; i < state.iterations; i++) { + stringBuffer.append(state.suffix); + } + return stringBuffer; + } + + @Benchmark + public StringBuilder benchmarkStringBuilder(MyState state) { + StringBuilder stringBuilder = new StringBuilder(state.initial); + for (int i = 0; i < state.iterations; i++) { + stringBuilder.append(state.suffix); + } + return stringBuilder; + } +} \ No newline at end of file diff --git a/core-java/src/test/java/com/baeldung/maths/RoundTest.java b/core-java/src/test/java/com/baeldung/maths/RoundTest.java index 9e3c049c96..5ce9523e21 100644 --- a/core-java/src/test/java/com/baeldung/maths/RoundTest.java +++ b/core-java/src/test/java/com/baeldung/maths/RoundTest.java @@ -15,56 +15,56 @@ public class RoundTest { private double expected = 2.03d; @Test - public void givenDecimalNumber_whenRoundToNDecimalPlaces_thenGetExpectedResult() { + public void givenDecimalNumber_whenRoundToNDecimalPlaces_thenGetExpectedResult() { Assert.assertEquals(expected, Round.round(value, places), delta); Assert.assertEquals(expected, Round.roundNotPrecise(value, places), delta); Assert.assertEquals(expected, Round.roundAvoid(value, places), delta); Assert.assertEquals(expected, Precision.round(value, places), delta); Assert.assertEquals(expected, DoubleRounder.round(value, places), delta); - + places = 3; expected = 2.035d; - + Assert.assertEquals(expected, Round.round(value, places), delta); Assert.assertEquals(expected, Round.roundNotPrecise(value, places), delta); Assert.assertEquals(expected, Round.roundAvoid(value, places), delta); Assert.assertEquals(expected, Precision.round(value, places), delta); Assert.assertEquals(expected, DoubleRounder.round(value, places), delta); - + value = 1000.0d; places = 17; expected = 1000.0d; - + Assert.assertEquals(expected, Round.round(value, places), delta); Assert.assertEquals(expected, Round.roundNotPrecise(value, places), delta); Assert.assertNotEquals(expected, Round.roundAvoid(value, places), delta); // Returns: 92.23372036854776 ! Assert.assertEquals(expected, Precision.round(value, places), delta); Assert.assertEquals(expected, DoubleRounder.round(value, places), delta); - + value = 256.025d; places = 2; expected = 256.03d; - + Assert.assertEquals(expected, Round.round(value, places), delta); Assert.assertNotEquals(expected, Round.roundNotPrecise(value, places), delta); // Returns: 256.02 ! Assert.assertNotEquals(expected, Round.roundAvoid(value, places), delta); // Returns: 256.02 ! Assert.assertEquals(expected, Precision.round(value, places), delta); Assert.assertNotEquals(expected, DoubleRounder.round(value, places), delta); // Returns: 256.02 ! - - value = 260.775d; + + value = 260.775d; places = 2; expected = 260.78d; - + Assert.assertEquals(expected, Round.round(value, places), delta); Assert.assertNotEquals(expected, Round.roundNotPrecise(value, places), delta); // Returns: 260.77 ! Assert.assertNotEquals(expected, Round.roundAvoid(value, places), delta); // Returns: 260.77 ! Assert.assertEquals(expected, Precision.round(value, places), delta); Assert.assertNotEquals(expected, DoubleRounder.round(value, places), delta); // Returns: 260.77 ! - + value = 90080070060.1d; places = 9; expected = 90080070060.1d; - + Assert.assertEquals(expected, Round.round(value, places), delta); Assert.assertEquals(expected, Round.roundNotPrecise(value, places), delta); Assert.assertNotEquals(expected, Round.roundAvoid(value, places), delta); // Returns: 9.223372036854776E9 ! From 216f7d8976dfa56e4887f8932aea34756e842e40 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Wed, 6 Sep 2017 11:53:21 +0200 Subject: [PATCH 53/73] Reformat pom.xml (#2567) * Refactor RxJava * Reformat pom.xml --- core-java/pom.xml | 50 +++++++++++++++++++++++------------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/core-java/pom.xml b/core-java/pom.xml index 0e57b35ab8..a0a35feed9 100644 --- a/core-java/pom.xml +++ b/core-java/pom.xml @@ -80,7 +80,7 @@ - + log4j log4j 1.2.17 @@ -200,7 +200,7 @@ io.vavr vavr ${vavr.version} - + org.openjdk.jmh jmh-core @@ -372,30 +372,30 @@ - + - org.codehaus.mojo - exec-maven-plugin - + org.codehaus.mojo + exec-maven-plugin + - - run-benchmarks - integration-test - - exec - - - test - java - - -classpath - - org.openjdk.jmh.Main - .* - - - - + + run-benchmarks + integration-test + + exec + + + test + java + + -classpath + + org.openjdk.jmh.Main + .* + + + + @@ -436,7 +436,7 @@ - + 2.8.5 From 39fc39615eb0e10547cfc0b7cbf8fbed8aa5f49d Mon Sep 17 00:00:00 2001 From: slavisa-baeldung Date: Wed, 6 Sep 2017 17:35:40 +0100 Subject: [PATCH 54/73] BAEL-982 - Moving to mustache module --- mustache/pom.xml | 41 ++++++++++++++++-- .../SpringMustacheApplication.java | 32 ++++++++++++++ .../controller/ArticleController.java | 43 +++++++++++++++++++ .../springmustache/model/Article.java | 41 ++++++++++++++++++ .../src/main/resources/application.properties | 0 .../main/resources/templates/error/error.html | 9 ++++ .../src/main/resources/templates/index.html | 9 ++++ .../resources/templates/layout/article.html | 8 ++++ .../resources/templates/layout/footer.html | 2 + .../resources/templates/layout/header.html | 11 +++++ .../SpringMustacheApplicationTests.java | 30 +++++++++++++ 11 files changed, 223 insertions(+), 3 deletions(-) create mode 100644 mustache/src/main/java/com/baeldung/springmustache/SpringMustacheApplication.java create mode 100644 mustache/src/main/java/com/baeldung/springmustache/controller/ArticleController.java create mode 100644 mustache/src/main/java/com/baeldung/springmustache/model/Article.java create mode 100644 mustache/src/main/resources/application.properties create mode 100644 mustache/src/main/resources/templates/error/error.html create mode 100644 mustache/src/main/resources/templates/index.html create mode 100644 mustache/src/main/resources/templates/layout/article.html create mode 100644 mustache/src/main/resources/templates/layout/footer.html create mode 100644 mustache/src/main/resources/templates/layout/header.html create mode 100644 mustache/src/test/java/com/baeldung/springmustache/SpringMustacheApplicationTests.java diff --git a/mustache/pom.xml b/mustache/pom.xml index d5d80b58e9..15c0e3a8c7 100644 --- a/mustache/pom.xml +++ b/mustache/pom.xml @@ -8,9 +8,11 @@ mustache - com.baeldung - parent-modules - 1.0.0-SNAPSHOT + org.springframework.boot + spring-boot-starter-parent + 1.5.4.RELEASE + + @@ -32,6 +34,28 @@ log4j ${log4j.version} + + + org.springframework.boot + spring-boot-starter-mustache + + + + org.springframework.boot + spring-boot-starter-test + test + + + org.webjars + bootstrap + 3.3.7 + + + org.fluttercode.datafactory + datafactory + 0.8 + + junit junit @@ -41,6 +65,15 @@ + + + + org.springframework.boot + spring-boot-maven-plugin + + + + 0.9.2 3.7.0 @@ -52,6 +85,8 @@ 3.6.0 2.19.1 + + 1.8 \ No newline at end of file diff --git a/mustache/src/main/java/com/baeldung/springmustache/SpringMustacheApplication.java b/mustache/src/main/java/com/baeldung/springmustache/SpringMustacheApplication.java new file mode 100644 index 0000000000..8cdf89d08a --- /dev/null +++ b/mustache/src/main/java/com/baeldung/springmustache/SpringMustacheApplication.java @@ -0,0 +1,32 @@ +package com.baeldung.springmustache; + +import com.samskivert.mustache.Mustache; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.mustache.MustacheEnvironmentCollector; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.core.env.Environment; + +@SpringBootApplication +@ComponentScan(basePackages = {"com.baeldung"}) +public class SpringMustacheApplication { + + public static void main(String[] args) { + SpringApplication.run(SpringMustacheApplication.class, args); + } + + @Bean + public Mustache.Compiler mustacheCompiler(Mustache.TemplateLoader templateLoader, Environment environment) { + + MustacheEnvironmentCollector collector = new MustacheEnvironmentCollector(); + collector.setEnvironment(environment); + + return Mustache.compiler() + .defaultValue("Some Default Value") + .withLoader(templateLoader) + .withCollector(collector); + + } +} + diff --git a/mustache/src/main/java/com/baeldung/springmustache/controller/ArticleController.java b/mustache/src/main/java/com/baeldung/springmustache/controller/ArticleController.java new file mode 100644 index 0000000000..5fc34c9f07 --- /dev/null +++ b/mustache/src/main/java/com/baeldung/springmustache/controller/ArticleController.java @@ -0,0 +1,43 @@ +package com.baeldung.springmustache.controller; + +import com.baeldung.springmustache.model.Article; +import org.fluttercode.datafactory.impl.DataFactory; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.servlet.ModelAndView; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +@Controller +public class ArticleController { + + @GetMapping("/article") + public ModelAndView displayArticle(Map model) { + + List
articles = IntStream.range(0, 10) + .mapToObj(i -> generateArticle("Article Title " + i)) + .collect(Collectors.toList()); + + Map modelMap = new HashMap<>(); + modelMap.put("articles", articles); + + return new ModelAndView("index", modelMap); + } + + private Article generateArticle(String title) { + Article article = new Article(); + DataFactory factory = new DataFactory(); + article.setTitle(title); + article.setBody( + "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur faucibus tempor diam. In molestie arcu eget ante facilisis sodales. Maecenas porta tellus sapien, eget rutrum nisi blandit in. Mauris tempor auctor ante, ut blandit velit venenatis id. Ut varius, augue aliquet feugiat congue, arcu ipsum finibus purus, dapibus semper velit sapien venenatis magna. Nunc quam ex, aliquet at rutrum sed, vestibulum quis libero. In laoreet libero cursus maximus vulputate. Nullam in fermentum sem. Duis aliquam ullamcorper dui, et dictum justo placerat id. Aliquam pretium orci quis sapien convallis, non blandit est tempus."); + article.setPublishDate(factory.getBirthDate().toString()); + article.setAuthor(factory.getName()); + return article; + } +} + + diff --git a/mustache/src/main/java/com/baeldung/springmustache/model/Article.java b/mustache/src/main/java/com/baeldung/springmustache/model/Article.java new file mode 100644 index 0000000000..78b08f877f --- /dev/null +++ b/mustache/src/main/java/com/baeldung/springmustache/model/Article.java @@ -0,0 +1,41 @@ +package com.baeldung.springmustache.model; + +public class Article { + private String title; + private String body; + private String author; + private String publishDate; + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getBody() { + return body; + } + + public void setBody(String body) { + this.body = body; + } + + public String getAuthor() { + return author; + } + + public void setAuthor(String author) { + this.author = author; + } + + public String getPublishDate() { + return publishDate; + } + + public void setPublishDate(String publishDate) { + this.publishDate = publishDate; + } + +} diff --git a/mustache/src/main/resources/application.properties b/mustache/src/main/resources/application.properties new file mode 100644 index 0000000000..e69de29bb2 diff --git a/mustache/src/main/resources/templates/error/error.html b/mustache/src/main/resources/templates/error/error.html new file mode 100644 index 0000000000..fa29db41c4 --- /dev/null +++ b/mustache/src/main/resources/templates/error/error.html @@ -0,0 +1,9 @@ + + + + + + Something went wrong: {{status}} {{error}} + + + \ No newline at end of file diff --git a/mustache/src/main/resources/templates/index.html b/mustache/src/main/resources/templates/index.html new file mode 100644 index 0000000000..bda60f9d8f --- /dev/null +++ b/mustache/src/main/resources/templates/index.html @@ -0,0 +1,9 @@ +{{>layout/header}} + +
{{>layout/article}}
+ + + + +{{>layout/footer}} diff --git a/mustache/src/main/resources/templates/layout/article.html b/mustache/src/main/resources/templates/layout/article.html new file mode 100644 index 0000000000..9d573580d3 --- /dev/null +++ b/mustache/src/main/resources/templates/layout/article.html @@ -0,0 +1,8 @@ +
+ {{#articles}} +

{{title}}

+

{{publishDate}}

+

{{author}}

+

{{body}}

+ {{/articles}} +
\ No newline at end of file diff --git a/mustache/src/main/resources/templates/layout/footer.html b/mustache/src/main/resources/templates/layout/footer.html new file mode 100644 index 0000000000..04f34cac54 --- /dev/null +++ b/mustache/src/main/resources/templates/layout/footer.html @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/mustache/src/main/resources/templates/layout/header.html b/mustache/src/main/resources/templates/layout/header.html new file mode 100644 index 0000000000..d203ef800b --- /dev/null +++ b/mustache/src/main/resources/templates/layout/header.html @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/mustache/src/test/java/com/baeldung/springmustache/SpringMustacheApplicationTests.java b/mustache/src/test/java/com/baeldung/springmustache/SpringMustacheApplicationTests.java new file mode 100644 index 0000000000..9138dfe92b --- /dev/null +++ b/mustache/src/test/java/com/baeldung/springmustache/SpringMustacheApplicationTests.java @@ -0,0 +1,30 @@ +package com.baeldung.springmustache; + +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) +public class SpringMustacheApplicationTests { + + @Autowired + private TestRestTemplate restTemplate; + + @Test + public void givenIndexPageWhenContainsArticleThenTrue() { + + ResponseEntity entity = this.restTemplate.getForEntity("/article", String.class); + + Assert.assertTrue(entity.getStatusCode().equals(HttpStatus.OK)); + Assert.assertTrue(entity.getBody().contains("Article Title 0")); + } + +} From e0c1678dfb4e5b70604b0cb35bc2df7885abdadc Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Wed, 6 Sep 2017 18:37:58 +0200 Subject: [PATCH 55/73] Refactor Retrofit samples (#2568) --- .../retrofit/basic/GitHubBasicApp.java | 8 +- .../retrofit/basic/GitHubBasicService.java | 76 ++++++++++--------- .../baeldung/retrofit/models/Contributor.java | 5 -- .../baeldung/retrofit/models/Repository.java | 5 -- .../com/baeldung/retrofit/rx/GitHubRxApp.java | 3 +- .../baeldung/retrofit/rx/GitHubRxService.java | 36 ++++----- 6 files changed, 64 insertions(+), 69 deletions(-) diff --git a/libraries/src/main/java/com/baeldung/retrofit/basic/GitHubBasicApp.java b/libraries/src/main/java/com/baeldung/retrofit/basic/GitHubBasicApp.java index 54a130a67e..6b2cd14252 100644 --- a/libraries/src/main/java/com/baeldung/retrofit/basic/GitHubBasicApp.java +++ b/libraries/src/main/java/com/baeldung/retrofit/basic/GitHubBasicApp.java @@ -4,11 +4,11 @@ import java.io.IOException; import java.util.List; public class GitHubBasicApp { - + public static void main(String[] args) throws IOException { String userName = "eugenp"; - List topContributors = new GitHubBasicService().getTopContributors(userName); - topContributors.stream().forEach(System.out::println); + List topContributors = new GitHubBasicService() + .getTopContributors(userName); + topContributors.forEach(System.out::println); } - } diff --git a/libraries/src/main/java/com/baeldung/retrofit/basic/GitHubBasicService.java b/libraries/src/main/java/com/baeldung/retrofit/basic/GitHubBasicService.java index fbfdd96567..20256fb540 100644 --- a/libraries/src/main/java/com/baeldung/retrofit/basic/GitHubBasicService.java +++ b/libraries/src/main/java/com/baeldung/retrofit/basic/GitHubBasicService.java @@ -1,54 +1,60 @@ package com.baeldung.retrofit.basic; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.stream.Collectors; - import com.baeldung.retrofit.models.Contributor; import com.baeldung.retrofit.models.Repository; - import retrofit2.Retrofit; import retrofit2.converter.gson.GsonConverterFactory; -public class GitHubBasicService { - +import java.io.IOException; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +class GitHubBasicService { + private GitHubBasicApi gitHubApi; - - public GitHubBasicService() { + + GitHubBasicService() { Retrofit retrofit = new Retrofit.Builder() - .baseUrl("https://api.github.com/") - .addConverterFactory(GsonConverterFactory.create()) - .build(); - - gitHubApi = retrofit.create(GitHubBasicApi.class); + .baseUrl("https://api.github.com/") + .addConverterFactory(GsonConverterFactory.create()) + .build(); + + gitHubApi = retrofit.create(GitHubBasicApi.class); } - - public List getTopContributors(String userName) throws IOException { + + List getTopContributors(String userName) throws IOException { List repos = gitHubApi .listRepos(userName) .execute() .body(); - - List topContributors = new ArrayList<>(); - for(Repository repo : repos) { - List contributers = gitHubApi - .listRepoContributors(userName, repo.getName()) - .execute() - .body(); - - List repoTopContributors = contributers.stream() - .filter(c -> c.getContributions() > 100) - .collect(Collectors.toList()); - topContributors.addAll(repoTopContributors); - } - - Collections.sort(topContributors, (a, b) -> b.getContributions() - a.getContributions()); - return topContributors.stream() - .map(c -> c.getName()) + + repos = repos != null ? repos : Collections.emptyList(); + + return repos.stream() + .flatMap(repo -> getContributors(userName, repo)) + .sorted((a, b) -> b.getContributions() - a.getContributions()) + .map(Contributor::getName) .distinct() + .sorted() .collect(Collectors.toList()); } + private Stream getContributors(String userName, Repository repo) { + List contributors = null; + try { + contributors = gitHubApi + .listRepoContributors(userName, repo.getName()) + .execute() + .body(); + } catch (IOException e) { + e.printStackTrace(); + } + + contributors = contributors != null ? contributors : Collections.emptyList(); + + return contributors.stream() + .filter(c -> c.getContributions() > 100); + } } diff --git a/libraries/src/main/java/com/baeldung/retrofit/models/Contributor.java b/libraries/src/main/java/com/baeldung/retrofit/models/Contributor.java index b7b7869ff6..2f8697f603 100644 --- a/libraries/src/main/java/com/baeldung/retrofit/models/Contributor.java +++ b/libraries/src/main/java/com/baeldung/retrofit/models/Contributor.java @@ -2,11 +2,6 @@ package com.baeldung.retrofit.models; import com.google.gson.annotations.SerializedName; -/** - * GitHub Contributer - * @author hany - * - */ public class Contributor { @SerializedName("login") diff --git a/libraries/src/main/java/com/baeldung/retrofit/models/Repository.java b/libraries/src/main/java/com/baeldung/retrofit/models/Repository.java index 61e4752ce7..f12fcdf8f2 100644 --- a/libraries/src/main/java/com/baeldung/retrofit/models/Repository.java +++ b/libraries/src/main/java/com/baeldung/retrofit/models/Repository.java @@ -1,10 +1,5 @@ package com.baeldung.retrofit.models; -/** - * GitHub Repository - * @author hany - * - */ public class Repository { private String name; diff --git a/libraries/src/main/java/com/baeldung/retrofit/rx/GitHubRxApp.java b/libraries/src/main/java/com/baeldung/retrofit/rx/GitHubRxApp.java index 0e0d8b1a77..b136a1e40b 100644 --- a/libraries/src/main/java/com/baeldung/retrofit/rx/GitHubRxApp.java +++ b/libraries/src/main/java/com/baeldung/retrofit/rx/GitHubRxApp.java @@ -3,11 +3,10 @@ package com.baeldung.retrofit.rx; import java.io.IOException; public class GitHubRxApp { - + public static void main(String[] args) throws IOException { String userName = "eugenp"; new GitHubRxService().getTopContributors(userName) .subscribe(System.out::println); } - } diff --git a/libraries/src/main/java/com/baeldung/retrofit/rx/GitHubRxService.java b/libraries/src/main/java/com/baeldung/retrofit/rx/GitHubRxService.java index 56d149d13e..2ad50a9f39 100644 --- a/libraries/src/main/java/com/baeldung/retrofit/rx/GitHubRxService.java +++ b/libraries/src/main/java/com/baeldung/retrofit/rx/GitHubRxService.java @@ -1,33 +1,33 @@ package com.baeldung.retrofit.rx; +import com.baeldung.retrofit.models.Contributor; import retrofit2.Retrofit; import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory; import retrofit2.converter.gson.GsonConverterFactory; import rx.Observable; -public class GitHubRxService { - +class GitHubRxService { + private GitHubRxApi gitHubApi; - - public GitHubRxService() { + + GitHubRxService() { Retrofit retrofit = new Retrofit.Builder() - .baseUrl("https://api.github.com/") - .addConverterFactory(GsonConverterFactory.create()) - .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) - .build(); - + .baseUrl("https://api.github.com/") + .addConverterFactory(GsonConverterFactory.create()) + .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) + .build(); + gitHubApi = retrofit.create(GitHubRxApi.class); } - - public Observable getTopContributors(String userName) { + + Observable getTopContributors(String userName) { return gitHubApi.listRepos(userName) - .flatMap( repos -> Observable.from(repos)) - .flatMap( repo -> gitHubApi.listRepoContributors(userName, repo.getName()) ) - .flatMap( contributers -> Observable.from(contributers)) - .filter( c -> c.getContributions() > 100) - .sorted( (a, b) -> b.getContributions() - a.getContributions() ) - .map( c -> c.getName()) + .flatMapIterable(x -> x) + .flatMap(repo -> gitHubApi.listRepoContributors(userName, repo.getName())) + .flatMapIterable(x -> x) + .filter(c -> c.getContributions() > 100) + .sorted((a, b) -> b.getContributions() - a.getContributions()) + .map(Contributor::getName) .distinct(); } - } From 218210f76a506b0a7f133de0fdb2c551fcd1917b Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Wed, 6 Sep 2017 20:13:50 +0200 Subject: [PATCH 56/73] Update Jenkins job link (#2548) * Update Hazelcast * Update Hbase * Update Immutables * Update Lombok * Update JMockit * Update CI link --- README.md | 2 +- mapstruct/pom.xml | 1 - mocks/mock-comparisons/pom.xml | 4 ++-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index f0d3d29da7..25398d1d39 100644 --- a/README.md +++ b/README.md @@ -23,4 +23,4 @@ Any IDE can be used to work with the projects, but if you're using Eclipse, cons CI - Jenkins ================================ -This tutorials project is being built **[>> HERE](https://rest-security.ci.cloudbees.com/job/tutorials/)** +This tutorials project is being built **[>> HERE](https://rest-security.ci.cloudbees.com/job/github%20projects%20Jobs/job/tutorials/)** diff --git a/mapstruct/pom.xml b/mapstruct/pom.xml index 17cf882d2b..ba67ccc2df 100644 --- a/mapstruct/pom.xml +++ b/mapstruct/pom.xml @@ -5,7 +5,6 @@ 4.0.0 mapstruct mapstruct - com.baeldung 1.0 jar diff --git a/mocks/mock-comparisons/pom.xml b/mocks/mock-comparisons/pom.xml index e350457f54..11bc59d710 100644 --- a/mocks/mock-comparisons/pom.xml +++ b/mocks/mock-comparisons/pom.xml @@ -13,9 +13,9 @@ mock-comparisons - 2.8.9 + 2.9.0 3.4 - 1.29 + 1.34 UTF-8 From 4c73a0ca05c7d77d4d593fc8804c6871b6265042 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Wed, 6 Sep 2017 20:59:18 +0200 Subject: [PATCH 57/73] Update README.md (#2570) --- core-java-9/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core-java-9/README.md b/core-java-9/README.md index 22d6903f06..c14203ce89 100644 --- a/core-java-9/README.md +++ b/core-java-9/README.md @@ -8,7 +8,7 @@ - [Java 9 Stream API Improvements](http://www.baeldung.com/java-9-stream-api) - [Java 9 Convenience Factory Methods for Collections](http://www.baeldung.com/java-9-collections-factory-methods) - [New Stream Collectors in Java 9](http://www.baeldung.com/java9-stream-collectors) -- [Java 9 CompletableFuture API Improvements](http://www.baeldung.com/java9-completablefuture-api-improvements/) +- [Java 9 CompletableFuture API Improvements](http://www.baeldung.com/java-9-completablefuture) - [Spring Security – Redirect to the Previous URL After Login](http://www.baeldung.com/spring-security-redirect-login) - [Java 9 Process API Improvements](http://www.baeldung.com/java-9-process-api) - [Introduction to Java 9 StackWalking API](http://www.baeldung.com/java-9-stackwalking-api) From 9f10f7c0f41a9e0da4f87bef5eb7ebb9475878ee Mon Sep 17 00:00:00 2001 From: Adam InTae Gerard Date: Wed, 6 Sep 2017 15:17:44 -0700 Subject: [PATCH 58/73] BAEL-509: Removed Duplicate Ant Matcher (#2558) * Simple Boot REST application and example * BAEL-509 - Removed extra duplicate ant matcher * Example and Unit Tests * documentation * BAEL-1085 - changes per PR code review and document review - altered integration to unit test - all's good * BAEL-1085 - Renamed unit tests and added both to pom.xml * IntelliJ formatter * REVERT - Had removed a duplicate ant matcher from BAEL-509 - this was the incorrect process - reverting now, article has been corrected, but will issue a seperate PR for this * BAEL-509: Removed duplicate ant matcher - does not impact code at runtime --- .../baeldung/springsecuredsockets/config/SecurityConfig.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/SecurityConfig.java b/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/SecurityConfig.java index 7006619d35..d7b57d1829 100644 --- a/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/SecurityConfig.java +++ b/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/SecurityConfig.java @@ -88,8 +88,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { .authorizeRequests() .antMatchers("/", "/index", "/authenticate") .permitAll() - .antMatchers("/secured/**/**", - "/secured/success", "/secured/socket", "/secured/success") + .antMatchers("/secured/**/**", "/secured/socket", "/secured/success") .authenticated() .anyRequest().authenticated() .and() From efbac53ec948a5c0f8205fc48a35ca6826d0b799 Mon Sep 17 00:00:00 2001 From: Charith De Silva Date: Thu, 7 Sep 2017 13:52:48 +1000 Subject: [PATCH 59/73] BAEL-973 Apache Commons Commons IO (#2262) * BAEL-973 Apache Commons Commons IO * BAEL-973 : fix up formatting * BAEL-973 : review comments. * BAEL-973 : review comments. * BAEL-973 : review comments. * BAEL-973 : review comments. * BAEL-973 : review comments. * BAEL-973 : review comments. --- .../com/baeldung/commons/io/FileMonitor.java | 43 +++++ .../commons/io/CommonsIOUnitTest.java | 151 ++++++++++++++++++ libraries/src/test/resources/ABC.txt | 1 + libraries/src/test/resources/aaa.txt | 1 + libraries/src/test/resources/fileTest.txt | 1 + libraries/src/test/resources/sample.txt | 2 + 6 files changed, 199 insertions(+) create mode 100644 libraries/src/main/java/com/baeldung/commons/io/FileMonitor.java create mode 100644 libraries/src/test/java/com/baeldung/commons/io/CommonsIOUnitTest.java create mode 100644 libraries/src/test/resources/ABC.txt create mode 100644 libraries/src/test/resources/aaa.txt create mode 100644 libraries/src/test/resources/fileTest.txt create mode 100644 libraries/src/test/resources/sample.txt diff --git a/libraries/src/main/java/com/baeldung/commons/io/FileMonitor.java b/libraries/src/main/java/com/baeldung/commons/io/FileMonitor.java new file mode 100644 index 0000000000..d42323a5df --- /dev/null +++ b/libraries/src/main/java/com/baeldung/commons/io/FileMonitor.java @@ -0,0 +1,43 @@ +package com.baeldung.commons.io; + +import org.apache.commons.io.FileUtils; +import org.apache.commons.io.monitor.FileAlterationListener; +import org.apache.commons.io.monitor.FileAlterationListenerAdaptor; +import org.apache.commons.io.monitor.FileAlterationMonitor; +import org.apache.commons.io.monitor.FileAlterationObserver; + +import java.io.File; + +public class FileMonitor { + + public static void main(String[] args) throws Exception { + File folder = FileUtils.getTempDirectory(); + startFileMonitor(folder); + } + + /** + * @param folder + * @throws Exception + */ + public static void startFileMonitor(File folder) throws Exception { + FileAlterationObserver observer = new FileAlterationObserver(folder); + FileAlterationMonitor monitor = new FileAlterationMonitor(5000); + + FileAlterationListener fal = new FileAlterationListenerAdaptor() { + + @Override + public void onFileCreate(File file) { + // on create action + } + + @Override + public void onFileDelete(File file) { + // on delete action + } + }; + + observer.addListener(fal); + monitor.addObserver(observer); + monitor.start(); + } +} \ No newline at end of file diff --git a/libraries/src/test/java/com/baeldung/commons/io/CommonsIOUnitTest.java b/libraries/src/test/java/com/baeldung/commons/io/CommonsIOUnitTest.java new file mode 100644 index 0000000000..3c82c30d9b --- /dev/null +++ b/libraries/src/test/java/com/baeldung/commons/io/CommonsIOUnitTest.java @@ -0,0 +1,151 @@ +package com.baeldung.commons.io; + +import org.apache.commons.io.FileSystemUtils; +import org.apache.commons.io.FileUtils; +import org.apache.commons.io.FilenameUtils; +import org.apache.commons.io.IOCase; +import org.apache.commons.io.comparator.PathFileComparator; +import org.apache.commons.io.comparator.SizeFileComparator; +import org.apache.commons.io.filefilter.AndFileFilter; +import org.apache.commons.io.filefilter.NameFileFilter; +import org.apache.commons.io.filefilter.SuffixFileFilter; +import org.apache.commons.io.filefilter.WildcardFileFilter; +import org.apache.commons.io.input.TeeInputStream; +import org.apache.commons.io.output.TeeOutputStream; +import org.junit.Assert; +import org.junit.Test; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FilterOutputStream; +import java.io.IOException; +import java.nio.charset.Charset; + +public class CommonsIOUnitTest { + + @Test + public void whenCopyANDReadFileTesttxt_thenMatchExpectedData() + throws IOException { + + String expectedData = "Hello World from fileTest.txt!!!"; + + File file = FileUtils.getFile(getClass().getClassLoader() + .getResource("fileTest.txt") + .getPath()); + File tempDir = FileUtils.getTempDirectory(); + FileUtils.copyFileToDirectory(file, tempDir); + File newTempFile = FileUtils.getFile(tempDir, file.getName()); + String data = FileUtils.readFileToString(newTempFile, + Charset.defaultCharset()); + + Assert.assertEquals(expectedData, data.trim()); + } + + @Test + public void whenUsingFileNameUtils_thenshowdifferentFileOperations() + throws IOException { + + String path = getClass().getClassLoader() + .getResource("fileTest.txt") + .getPath(); + + String fullPath = FilenameUtils.getFullPath(path); + String extension = FilenameUtils.getExtension(path); + String baseName = FilenameUtils.getBaseName(path); + + System.out.println("full path" + fullPath); + System.out.println("Extension" + extension); + System.out.println("Base name" + baseName); + } + + @Test + public void whenUsingFileSystemUtils_thenDriveFreeSpace() + throws IOException { + + long freeSpace = FileSystemUtils.freeSpaceKb("/"); + } + + @SuppressWarnings("resource") + @Test + public void whenUsingTeeInputOutputStream_thenWriteto2OutputStreams() + throws IOException { + + final String str = "Hello World."; + ByteArrayInputStream inputStream = new ByteArrayInputStream(str.getBytes()); + ByteArrayOutputStream outputStream1 = new ByteArrayOutputStream(); + ByteArrayOutputStream outputStream2 = new ByteArrayOutputStream(); + + FilterOutputStream teeOutputStream = new TeeOutputStream(outputStream1,outputStream2); + new TeeInputStream(inputStream, teeOutputStream, true).read(new byte[str.length()]); + + Assert.assertEquals(str, String.valueOf(outputStream1)); + Assert.assertEquals(str, String.valueOf(outputStream2)); + } + + @Test + public void whenGetFilewithNameFileFilter_thenFindfileTesttxt() + throws IOException { + + final String testFile = "fileTest.txt"; + + String path = getClass().getClassLoader() + .getResource(testFile) + .getPath(); + File dir = FileUtils.getFile(FilenameUtils.getFullPath(path)); + + String[] possibleNames = { "NotThisOne", testFile }; + + Assert.assertEquals(testFile, + dir.list(new NameFileFilter(possibleNames, IOCase.INSENSITIVE))[0]); + } + + @Test + public void whenGetFilewith_ANDFileFilter_thenFindsampletxt() + throws IOException { + + String path = getClass().getClassLoader() + .getResource("fileTest.txt") + .getPath(); + File dir = FileUtils.getFile(FilenameUtils.getFullPath(path)); + + Assert.assertEquals("sample.txt", + dir.list(new AndFileFilter( + new WildcardFileFilter("*ple*", IOCase.INSENSITIVE), + new SuffixFileFilter("txt")))[0]); + } + + @Test + public void whenSortDirWithPathFileComparator_thenFirstFileaaatxt() + throws IOException { + + PathFileComparator pathFileComparator = new PathFileComparator( + IOCase.INSENSITIVE); + String path = FilenameUtils.getFullPath(getClass().getClassLoader() + .getResource("fileTest.txt") + .getPath()); + File dir = new File(path); + File[] files = dir.listFiles(); + + pathFileComparator.sort(files); + + Assert.assertEquals("aaa.txt", files[0].getName()); + } + + @Test + public void whenSizeFileComparator_thenLargerFile() + throws IOException { + + SizeFileComparator sizeFileComparator = new SizeFileComparator(); + File largerFile = FileUtils.getFile(getClass().getClassLoader() + .getResource("fileTest.txt") + .getPath()); + File smallerFile = FileUtils.getFile(getClass().getClassLoader() + .getResource("sample.txt") + .getPath()); + + int i = sizeFileComparator.compare(largerFile, smallerFile); + + Assert.assertTrue(i > 0); + } +} \ No newline at end of file diff --git a/libraries/src/test/resources/ABC.txt b/libraries/src/test/resources/ABC.txt new file mode 100644 index 0000000000..f78e42598c --- /dev/null +++ b/libraries/src/test/resources/ABC.txt @@ -0,0 +1 @@ +Hello World from ABC.txt!!! \ No newline at end of file diff --git a/libraries/src/test/resources/aaa.txt b/libraries/src/test/resources/aaa.txt new file mode 100644 index 0000000000..e5875f97d6 --- /dev/null +++ b/libraries/src/test/resources/aaa.txt @@ -0,0 +1 @@ +Hello World from aaa.txt!!! \ No newline at end of file diff --git a/libraries/src/test/resources/fileTest.txt b/libraries/src/test/resources/fileTest.txt new file mode 100644 index 0000000000..ce4bea208b --- /dev/null +++ b/libraries/src/test/resources/fileTest.txt @@ -0,0 +1 @@ +Hello World from fileTest.txt!!! \ No newline at end of file diff --git a/libraries/src/test/resources/sample.txt b/libraries/src/test/resources/sample.txt new file mode 100644 index 0000000000..20f137b416 --- /dev/null +++ b/libraries/src/test/resources/sample.txt @@ -0,0 +1,2 @@ +line 1 +a second line \ No newline at end of file From da32a94d12307b5677ff630a773ee715f3ec6c92 Mon Sep 17 00:00:00 2001 From: Eric Goebelbecker Date: Thu, 7 Sep 2017 10:16:10 -0400 Subject: [PATCH 60/73] BAEL-1018 - Introduction to MBassador (#2576) * BAEL-1018 - Introduction to MBassador * BAEL-1018 - Introduction to MBassador. Add type for some of the MBassadors. --- .../com/baeldung/mbassador/MBassadorAsyncDispatchTest.java | 2 +- .../com/baeldung/mbassador/MBassadorAsyncInvocationTest.java | 2 +- .../com/baeldung/mbassador/MBassadorConfigurationTest.java | 5 +++-- .../java/com/baeldung/mbassador/MBassadorHierarchyTest.java | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/libraries/src/test/java/com/baeldung/mbassador/MBassadorAsyncDispatchTest.java b/libraries/src/test/java/com/baeldung/mbassador/MBassadorAsyncDispatchTest.java index a0648aa4e1..0cab612a7b 100644 --- a/libraries/src/test/java/com/baeldung/mbassador/MBassadorAsyncDispatchTest.java +++ b/libraries/src/test/java/com/baeldung/mbassador/MBassadorAsyncDispatchTest.java @@ -13,7 +13,7 @@ import static org.junit.Assert.assertNotNull; public class MBassadorAsyncDispatchTest { - private MBassador dispatcher = new MBassador(); + private MBassador dispatcher = new MBassador(); private String testString; private AtomicBoolean ready = new AtomicBoolean(false); diff --git a/libraries/src/test/java/com/baeldung/mbassador/MBassadorAsyncInvocationTest.java b/libraries/src/test/java/com/baeldung/mbassador/MBassadorAsyncInvocationTest.java index d20c887309..d0b1cafd71 100644 --- a/libraries/src/test/java/com/baeldung/mbassador/MBassadorAsyncInvocationTest.java +++ b/libraries/src/test/java/com/baeldung/mbassador/MBassadorAsyncInvocationTest.java @@ -17,7 +17,7 @@ import static org.junit.Assert.assertFalse; public class MBassadorAsyncInvocationTest { - private MBassador dispatcher = new MBassador(); + private MBassador dispatcher = new MBassador(); private Integer testInteger; private String invocationThreadName; diff --git a/libraries/src/test/java/com/baeldung/mbassador/MBassadorConfigurationTest.java b/libraries/src/test/java/com/baeldung/mbassador/MBassadorConfigurationTest.java index d1e711999c..fe9c130d93 100644 --- a/libraries/src/test/java/com/baeldung/mbassador/MBassadorConfigurationTest.java +++ b/libraries/src/test/java/com/baeldung/mbassador/MBassadorConfigurationTest.java @@ -24,8 +24,9 @@ public class MBassadorConfigurationTest implements IPublicationErrorHandler { @Before public void prepareTests() { - dispatcher = new MBassador(this); - dispatcher.subscribe(this); + + dispatcher = new MBassador(this); + dispatcher.subscribe(this); } @Test diff --git a/libraries/src/test/java/com/baeldung/mbassador/MBassadorHierarchyTest.java b/libraries/src/test/java/com/baeldung/mbassador/MBassadorHierarchyTest.java index 87d6a621a4..be5c9d4897 100644 --- a/libraries/src/test/java/com/baeldung/mbassador/MBassadorHierarchyTest.java +++ b/libraries/src/test/java/com/baeldung/mbassador/MBassadorHierarchyTest.java @@ -9,7 +9,7 @@ import static org.junit.Assert.*; public class MBassadorHierarchyTest { - private MBassador dispatcher = new MBassador(); + private MBassador dispatcher = new MBassador(); private Message message; private AckMessage ackMessage; From 4a6d2a6f93a6364e4f56d55cc8a11168378f686a Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Thu, 7 Sep 2017 20:09:46 +0200 Subject: [PATCH 61/73] Update README.md (#2577) --- spring-all/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-all/README.md b/spring-all/README.md index 29be01c79e..36bf7da778 100644 --- a/spring-all/README.md +++ b/spring-all/README.md @@ -9,7 +9,7 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring ### Relevant articles: - [Guide to Spring @Autowired](http://www.baeldung.com/spring-autowire) -- [Properties with Spring](http://www.baeldung.com/2012/02/06/properties-with-spring) - checkout the `org.baeldung.properties` package for all scenarios of properties injection and usage +- [Properties with Spring](http://www.baeldung.com/properties-with-spring) - checkout the `org.baeldung.properties` package for all scenarios of properties injection and usage - [Spring Profiles](http://www.baeldung.com/spring-profiles) - [A Spring Custom Annotation for a Better DAO](http://www.baeldung.com/spring-annotation-bean-pre-processor) - [What's New in Spring 4.3?](http://www.baeldung.com/whats-new-in-spring-4-3/) From 9c753f6f5db3a4a2373517be84b6e1617c7dc3ad Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Thu, 7 Sep 2017 20:10:03 +0200 Subject: [PATCH 62/73] Update README.md (#2578) --- spring-security-rest-basic-auth/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spring-security-rest-basic-auth/README.md b/spring-security-rest-basic-auth/README.md index 43ab08b8ca..f92fcfe36b 100644 --- a/spring-security-rest-basic-auth/README.md +++ b/spring-security-rest-basic-auth/README.md @@ -6,8 +6,8 @@ The "Learn Spring Security" Classes: http://github.learnspringsecurity.com ### Relevant Articles: -- [RestTemplate with Basic Authentication in Spring](http://www.baeldung.com/2012/04/16/how-to-use-resttemplate-with-basic-authentication-in-spring-3-1) +- [RestTemplate with Basic Authentication in Spring](http://www.baeldung.com/how-to-use-resttemplate-with-basic-authentication-in-spring) - [HttpClient Timeout](http://www.baeldung.com/httpclient-timeout) - [HttpClient with SSL](http://www.baeldung.com/httpclient-ssl) - [Writing a Custom Filter in Spring Security](http://www.baeldung.com/spring-security-custom-filter) -- [Spring Security Basic Authentication](http://www.baeldung.com/spring-security-basic-authentication) \ No newline at end of file +- [Spring Security Basic Authentication](http://www.baeldung.com/spring-security-basic-authentication) From e62553523aa07cbad56c54d22b815db27626de18 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Thu, 7 Sep 2017 20:10:16 +0200 Subject: [PATCH 63/73] Update README.md (#2579) --- libraries/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/README.md b/libraries/README.md index ed6d214c7a..1e40f5ae96 100644 --- a/libraries/README.md +++ b/libraries/README.md @@ -30,7 +30,7 @@ - [Introduction to Neuroph](http://www.baeldung.com/intro-to-neuroph) - [Guide to Apache Commons CircularFifoQueue](http://www.baeldung.com/commons-circular-fifo-queue) - [Quick Guide to RSS with Rome](http://www.baeldung.com/rome-rss) -- [Introduction to NoException](http://www.baeldung.com/intrduction-to-noexception) +- [Introduction to NoException](http://www.baeldung.com/no-exception) The libraries module contains examples related to small libraries that are relatively easy to use and does not require any separate module of its own. From f6d6274c9f53f40792605bc142510e7bdcdcb8b6 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Thu, 7 Sep 2017 22:08:22 +0200 Subject: [PATCH 64/73] Update README.md (#2580) --- libraries/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/README.md b/libraries/README.md index 1e40f5ae96..1e6d1e1f4a 100644 --- a/libraries/README.md +++ b/libraries/README.md @@ -27,7 +27,7 @@ - [A Guide to Apache Commons DbUtils](http://www.baeldung.com/apache-commons-dbutils) - [Introduction to Awaitility](http://www.baeldung.com/awaitlity-testing) - [Guide to the HyperLogLog Algorithm](http://www.baeldung.com/java-hyperloglog) -- [Introduction to Neuroph](http://www.baeldung.com/intro-to-neuroph) +- [Introduction to Neuroph](http://www.baeldung.com/neuroph) - [Guide to Apache Commons CircularFifoQueue](http://www.baeldung.com/commons-circular-fifo-queue) - [Quick Guide to RSS with Rome](http://www.baeldung.com/rome-rss) - [Introduction to NoException](http://www.baeldung.com/no-exception) From cc304b068b89ff5aaa8f4b8475cbde4c3d01b45c Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Thu, 7 Sep 2017 22:08:37 +0200 Subject: [PATCH 65/73] Update README.md (#2581) --- spring-boot-property-exp/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spring-boot-property-exp/README.md b/spring-boot-property-exp/README.md index 8a598e7a05..70cf6bdfac 100644 --- a/spring-boot-property-exp/README.md +++ b/spring-boot-property-exp/README.md @@ -1,5 +1,5 @@ ## The Module Holds Sources for the Following Articles - - [Automatic Property Expansion with Spring Boot](http://www.baeldung.com/property-expansion-spring-boot) + - [Automatic Property Expansion with Spring Boot](http://www.baeldung.com/spring-boot-auto-property-expansion) ### Module property-exp-default-config This module contains both a standard Maven Spring Boot build and the Gradle build which is Maven compatible. @@ -15,4 +15,4 @@ ### Module property-exp-custom-config This project is not using the standard Spring Boot parent and is configured manually. Run the following command: - `mvn exec:java` \ No newline at end of file + `mvn exec:java` From 35ac22c94799deb7d6d986aba538cc3edc08453c Mon Sep 17 00:00:00 2001 From: nabyla <31042612+nabyla@users.noreply.github.com> Date: Fri, 8 Sep 2017 17:31:39 +0100 Subject: [PATCH 66/73] FunctionalJava article (#2586) * Update pom.xml with functionalJava dependencies * Add functionalJava classes * update README.md --- libraries/README.md | 2 +- libraries/pom.xml | 20 ++++++++ .../com/baeldung/fj/FunctionalJavaIOMain.java | 47 ++++++++++++++++++ .../com/baeldung/fj/FunctionalJavaMain.java | 48 +++++++++++++++++++ 4 files changed, 116 insertions(+), 1 deletion(-) create mode 100644 libraries/src/main/java/com/baeldung/fj/FunctionalJavaIOMain.java create mode 100644 libraries/src/main/java/com/baeldung/fj/FunctionalJavaMain.java diff --git a/libraries/README.md b/libraries/README.md index 1e6d1e1f4a..52bc363d04 100644 --- a/libraries/README.md +++ b/libraries/README.md @@ -31,7 +31,7 @@ - [Guide to Apache Commons CircularFifoQueue](http://www.baeldung.com/commons-circular-fifo-queue) - [Quick Guide to RSS with Rome](http://www.baeldung.com/rome-rss) - [Introduction to NoException](http://www.baeldung.com/no-exception) - +- [Introduction to FunctionalJava](http://www.baeldung.com/functional-java) The libraries module contains examples related to small libraries that are relatively easy to use and does not require any separate module of its own. diff --git a/libraries/pom.xml b/libraries/pom.xml index 07524ab4e7..fb0bef2be8 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -554,6 +554,26 @@ protonpack ${protonpack.version} + + org.functionaljava + functionaljava + 4.7 + + + org.functionaljava + functionaljava-java8 + 4.7 + + + org.functionaljava + functionaljava-quickcheck + 4.7 + + + org.functionaljava + functionaljava-java-core + 4.7 + diff --git a/libraries/src/main/java/com/baeldung/fj/FunctionalJavaIOMain.java b/libraries/src/main/java/com/baeldung/fj/FunctionalJavaIOMain.java new file mode 100644 index 0000000000..ebf0fa4d2d --- /dev/null +++ b/libraries/src/main/java/com/baeldung/fj/FunctionalJavaIOMain.java @@ -0,0 +1,47 @@ +package com.baeldung.fj; + +import fj.F; +import fj.F1Functions; +import fj.Unit; +import fj.data.IO; +import fj.data.IOFunctions; + +public class FunctionalJavaIOMain { + + public static IO printLetters(final String s) { + return () -> { + for (int i = 0; i < s.length(); i++) { + System.out.println(s.charAt(i)); + } + return Unit.unit(); + }; + } + + public static void main(String[] args) { + + F> printLetters = i -> printLetters(i); + + IO lowerCase = IOFunctions + .stdoutPrintln("What's your first Name ?"); + + IO input = IOFunctions.stdoutPrint("First Name: "); + + IO userInput = IOFunctions.append(lowerCase, input); + + IO readInput = IOFunctions.stdinReadLine(); + + F toUpperCase = i -> i.toUpperCase(); + + F> transformInput = F1Functions + ., String> o(printLetters).f(toUpperCase); + + IO readAndPrintResult = IOFunctions.bind(readInput, + transformInput); + + IO program = IOFunctions.bind(userInput, + nothing -> readAndPrintResult); + + IOFunctions.toSafe(program).run(); + + } +} diff --git a/libraries/src/main/java/com/baeldung/fj/FunctionalJavaMain.java b/libraries/src/main/java/com/baeldung/fj/FunctionalJavaMain.java new file mode 100644 index 0000000000..e4d731454d --- /dev/null +++ b/libraries/src/main/java/com/baeldung/fj/FunctionalJavaMain.java @@ -0,0 +1,48 @@ +package com.baeldung.fj; + +import fj.F; +import fj.Show; +import fj.data.Array; +import fj.data.List; +import fj.data.Option; +import fj.function.Characters; +import fj.function.Integers; + +public class FunctionalJavaMain { + + public static final F isEven = i -> i % 2 == 0; + + public static void main(String[] args) { + + List fList = List.list(3, 4, 5, 6); + List evenList = fList.map(isEven); + Show.listShow(Show.booleanShow).println(evenList); + + fList = fList.map(i -> i + 1); + Show.listShow(Show.intShow).println(fList); + + Array a = Array.array(17, 44, 67, 2, 22, 80, 1, 27); + Array b = a.filter(Integers.even); + Show.arrayShow(Show.intShow).println(b); + + Array array = Array.array("Welcome", "To", "baeldung"); + Boolean isExist = array.exists(s -> List.fromString(s).forall(Characters.isLowerCase)); + System.out.println(isExist); + + Array intArray = Array.array(17, 44, 67, 2, 22, 80, 1, 27); + int sum = intArray.foldLeft(Integers.add, 0); + System.out.println(sum); + + Option n1 = Option.some(1); + Option n2 = Option.some(2); + + F> f1 = i -> i % 2 == 0 ? Option.some(i + 100) : Option.none(); + + Option result1 = n1.bind(f1); + Option result2 = n2.bind(f1); + + Show.optionShow(Show.intShow).println(result1); + Show.optionShow(Show.intShow).println(result2); + } + +} From cccd6a3eabe4bbfa0f77bb95be716ec846c1a5c3 Mon Sep 17 00:00:00 2001 From: deep20jain Date: Fri, 8 Sep 2017 22:53:55 +0530 Subject: [PATCH 67/73] BAEL 1123 - deep20jain@gmail.com (#2572) * Adding node and cycle detection by hashing * Adding implementation for all algorithms for cycle detection and removal * Applying formatting rules * Refactoring methods and adding more tests * Fixing infinite loop corner case --- .../linkedlist/CycleDetectionBruteForce.java | 8 ++--- .../CycleDetectionByFastAndSlowIterators.java | 8 ++--- .../linkedlist/CycleDetectionByHashing.java | 8 ++--- .../linkedlist/CycleDetectionResult.java | 12 +++++++ .../linkedlist/CycleRemovalBruteForce.java | 31 +++++++--------- .../CycleRemovalByCountingLoopNodes.java | 25 ++++--------- .../CycleRemovalWithoutCountingLoopNodes.java | 21 +++-------- .../CycleDetectionBruteForceTest.java | 19 +++++----- ...leDetectionByFastAndSlowIteratorsTest.java | 19 +++++----- .../CycleDetectionByHashingTest.java | 19 +++++----- .../linkedlist/CycleDetectionTestBase.java | 35 +++++++++++++++++++ .../CycleRemovalBruteForceTest.java | 21 ++++++----- .../CycleRemovalByCountingLoopNodesTest.java | 21 ++++++----- ...leRemovalWithoutCountingLoopNodesTest.java | 21 ++++++----- 14 files changed, 153 insertions(+), 115 deletions(-) create mode 100644 algorithms/src/main/java/com/baeldung/algorithms/linkedlist/CycleDetectionResult.java diff --git a/algorithms/src/main/java/com/baeldung/algorithms/linkedlist/CycleDetectionBruteForce.java b/algorithms/src/main/java/com/baeldung/algorithms/linkedlist/CycleDetectionBruteForce.java index 532be70480..1df425ad2e 100644 --- a/algorithms/src/main/java/com/baeldung/algorithms/linkedlist/CycleDetectionBruteForce.java +++ b/algorithms/src/main/java/com/baeldung/algorithms/linkedlist/CycleDetectionBruteForce.java @@ -2,9 +2,9 @@ package com.baeldung.algorithms.linkedlist; public class CycleDetectionBruteForce { - public static boolean detectCycle(Node head) { + public static CycleDetectionResult detectCycle(Node head) { if (head == null) { - return false; + return new CycleDetectionResult<>(false, null); } Node it1 = head; @@ -25,14 +25,14 @@ public class CycleDetectionBruteForce { } if (noOfTimesCurrentNodeVisited == 2) { - return true; + return new CycleDetectionResult<>(true, it1); } x--; } } - return false; + return new CycleDetectionResult<>(false, null); } } diff --git a/algorithms/src/main/java/com/baeldung/algorithms/linkedlist/CycleDetectionByFastAndSlowIterators.java b/algorithms/src/main/java/com/baeldung/algorithms/linkedlist/CycleDetectionByFastAndSlowIterators.java index 7c8e038cb2..ab088de44a 100644 --- a/algorithms/src/main/java/com/baeldung/algorithms/linkedlist/CycleDetectionByFastAndSlowIterators.java +++ b/algorithms/src/main/java/com/baeldung/algorithms/linkedlist/CycleDetectionByFastAndSlowIterators.java @@ -2,9 +2,9 @@ package com.baeldung.algorithms.linkedlist; public class CycleDetectionByFastAndSlowIterators { - public static boolean detectCycle(Node head) { + public static CycleDetectionResult detectCycle(Node head) { if (head == null) { - return false; + return new CycleDetectionResult<>(false, null); } Node slow = head; @@ -15,11 +15,11 @@ public class CycleDetectionByFastAndSlowIterators { fast = fast.next.next; if (slow == fast) { - return true; + return new CycleDetectionResult<>(true, fast); } } - return false; + return new CycleDetectionResult<>(false, null); } } diff --git a/algorithms/src/main/java/com/baeldung/algorithms/linkedlist/CycleDetectionByHashing.java b/algorithms/src/main/java/com/baeldung/algorithms/linkedlist/CycleDetectionByHashing.java index 0b3f91b97c..90d5ecd711 100644 --- a/algorithms/src/main/java/com/baeldung/algorithms/linkedlist/CycleDetectionByHashing.java +++ b/algorithms/src/main/java/com/baeldung/algorithms/linkedlist/CycleDetectionByHashing.java @@ -5,9 +5,9 @@ import java.util.Set; public class CycleDetectionByHashing { - public static boolean detectCycle(Node head) { + public static CycleDetectionResult detectCycle(Node head) { if (head == null) { - return false; + return new CycleDetectionResult<>(false, null); } Set> set = new HashSet<>(); @@ -15,13 +15,13 @@ public class CycleDetectionByHashing { while (node != null) { if (set.contains(node)) { - return true; + return new CycleDetectionResult<>(true, node); } set.add(node); node = node.next; } - return false; + return new CycleDetectionResult<>(false, null); } } diff --git a/algorithms/src/main/java/com/baeldung/algorithms/linkedlist/CycleDetectionResult.java b/algorithms/src/main/java/com/baeldung/algorithms/linkedlist/CycleDetectionResult.java new file mode 100644 index 0000000000..e7556311b3 --- /dev/null +++ b/algorithms/src/main/java/com/baeldung/algorithms/linkedlist/CycleDetectionResult.java @@ -0,0 +1,12 @@ +package com.baeldung.algorithms.linkedlist; + +public class CycleDetectionResult { + boolean cycleExists; + Node node; + + public CycleDetectionResult(boolean cycleExists, Node node) { + super(); + this.cycleExists = cycleExists; + this.node = node; + } +} diff --git a/algorithms/src/main/java/com/baeldung/algorithms/linkedlist/CycleRemovalBruteForce.java b/algorithms/src/main/java/com/baeldung/algorithms/linkedlist/CycleRemovalBruteForce.java index cacfd44121..a2bfaee9a1 100644 --- a/algorithms/src/main/java/com/baeldung/algorithms/linkedlist/CycleRemovalBruteForce.java +++ b/algorithms/src/main/java/com/baeldung/algorithms/linkedlist/CycleRemovalBruteForce.java @@ -3,26 +3,21 @@ package com.baeldung.algorithms.linkedlist; public class CycleRemovalBruteForce { public static boolean detectAndRemoveCycle(Node head) { - if (head == null) { - return false; + CycleDetectionResult result = CycleDetectionByFastAndSlowIterators.detectCycle(head); + + if (result.cycleExists) { + removeCycle(result.node, head); } - Node slow = head; - Node fast = head; - - while (fast != null && fast.next != null) { - slow = slow.next; - fast = fast.next.next; - - if (slow == fast) { - removeCycle(slow, head); - return true; - } - } - - return false; + return result.cycleExists; } + /** + * @param loopNodeParam - reference to the node where Flyods cycle + * finding algorithm ends, i.e. the fast and the slow iterators + * meet. + * @param head - reference to the head of the list + */ private static void removeCycle(Node loopNodeParam, Node head) { Node it = head; @@ -39,12 +34,12 @@ public class CycleRemovalBruteForce { private static boolean isNodeReachableFromLoopNode(Node it, Node loopNodeParam) { Node loopNode = loopNodeParam; - while (loopNode.next != loopNodeParam) { + do { if (it == loopNode) { return true; } loopNode = loopNode.next; - } + } while (loopNode.next != loopNodeParam); return false; } diff --git a/algorithms/src/main/java/com/baeldung/algorithms/linkedlist/CycleRemovalByCountingLoopNodes.java b/algorithms/src/main/java/com/baeldung/algorithms/linkedlist/CycleRemovalByCountingLoopNodes.java index afc525a8d3..d8db37fc4c 100644 --- a/algorithms/src/main/java/com/baeldung/algorithms/linkedlist/CycleRemovalByCountingLoopNodes.java +++ b/algorithms/src/main/java/com/baeldung/algorithms/linkedlist/CycleRemovalByCountingLoopNodes.java @@ -3,28 +3,17 @@ package com.baeldung.algorithms.linkedlist; public class CycleRemovalByCountingLoopNodes { public static boolean detectAndRemoveCycle(Node head) { - if (head == null) { - return false; + CycleDetectionResult result = CycleDetectionByFastAndSlowIterators.detectCycle(head); + + if (result.cycleExists) { + removeCycle(result.node, head); } - Node slow = head; - Node fast = head; - - while (fast != null && fast.next != null) { - slow = slow.next; - fast = fast.next.next; - - if (slow == fast) { - int cycleLength = calculateCycleLength(slow); - removeCycle(head, cycleLength); - return true; - } - } - - return false; + return result.cycleExists; } - private static void removeCycle(Node head, int cycleLength) { + private static void removeCycle(Node loopNodeParam, Node head) { + int cycleLength = calculateCycleLength(loopNodeParam); Node cycleLengthAdvancedIterator = head; Node it = head; diff --git a/algorithms/src/main/java/com/baeldung/algorithms/linkedlist/CycleRemovalWithoutCountingLoopNodes.java b/algorithms/src/main/java/com/baeldung/algorithms/linkedlist/CycleRemovalWithoutCountingLoopNodes.java index d5b8b1cc8f..b979f7f677 100644 --- a/algorithms/src/main/java/com/baeldung/algorithms/linkedlist/CycleRemovalWithoutCountingLoopNodes.java +++ b/algorithms/src/main/java/com/baeldung/algorithms/linkedlist/CycleRemovalWithoutCountingLoopNodes.java @@ -3,24 +3,13 @@ package com.baeldung.algorithms.linkedlist; public class CycleRemovalWithoutCountingLoopNodes { public static boolean detectAndRemoveCycle(Node head) { - if (head == null) { - return false; + CycleDetectionResult result = CycleDetectionByFastAndSlowIterators.detectCycle(head); + + if (result.cycleExists) { + removeCycle(result.node, head); } - Node slow = head; - Node fast = head; - - while (fast != null && fast.next != null) { - slow = slow.next; - fast = fast.next.next; - - if (slow == fast) { - removeCycle(slow, head); - return true; - } - } - - return false; + return result.cycleExists; } private static void removeCycle(Node meetingPointParam, Node head) { diff --git a/algorithms/src/test/java/com/baeldung/algorithms/linkedlist/CycleDetectionBruteForceTest.java b/algorithms/src/test/java/com/baeldung/algorithms/linkedlist/CycleDetectionBruteForceTest.java index 09250a8a66..7f9b8acdbd 100644 --- a/algorithms/src/test/java/com/baeldung/algorithms/linkedlist/CycleDetectionBruteForceTest.java +++ b/algorithms/src/test/java/com/baeldung/algorithms/linkedlist/CycleDetectionBruteForceTest.java @@ -2,19 +2,22 @@ package com.baeldung.algorithms.linkedlist; import org.junit.Assert; import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +@RunWith(value = Parameterized.class) public class CycleDetectionBruteForceTest extends CycleDetectionTestBase { + boolean cycleExists; + Node head; - @Test - public void givenNormalList_dontDetectLoop() { - Node root = createList(); - Assert.assertFalse(CycleDetectionBruteForce.detectCycle(root)); + public CycleDetectionBruteForceTest(Node head, boolean cycleExists) { + super(); + this.cycleExists = cycleExists; + this.head = head; } @Test - public void givenCyclicList_detectLoop() { - Node root = createList(); - createLoop(root); - Assert.assertTrue(CycleDetectionBruteForce.detectCycle(root)); + public void givenList_detectLoop() { + Assert.assertEquals(cycleExists, CycleDetectionBruteForce.detectCycle(head).cycleExists); } } diff --git a/algorithms/src/test/java/com/baeldung/algorithms/linkedlist/CycleDetectionByFastAndSlowIteratorsTest.java b/algorithms/src/test/java/com/baeldung/algorithms/linkedlist/CycleDetectionByFastAndSlowIteratorsTest.java index cfe00aaefc..17d339bc33 100644 --- a/algorithms/src/test/java/com/baeldung/algorithms/linkedlist/CycleDetectionByFastAndSlowIteratorsTest.java +++ b/algorithms/src/test/java/com/baeldung/algorithms/linkedlist/CycleDetectionByFastAndSlowIteratorsTest.java @@ -2,19 +2,22 @@ package com.baeldung.algorithms.linkedlist; import org.junit.Assert; import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +@RunWith(value = Parameterized.class) public class CycleDetectionByFastAndSlowIteratorsTest extends CycleDetectionTestBase { + boolean cycleExists; + Node head; - @Test - public void givenNormalList_dontDetectLoop() { - Node root = createList(); - Assert.assertFalse(CycleDetectionByFastAndSlowIterators.detectCycle(root)); + public CycleDetectionByFastAndSlowIteratorsTest(Node head, boolean cycleExists) { + super(); + this.cycleExists = cycleExists; + this.head = head; } @Test - public void givenCyclicList_detectLoop() { - Node root = createList(); - createLoop(root); - Assert.assertTrue(CycleDetectionByFastAndSlowIterators.detectCycle(root)); + public void givenList_detectLoop() { + Assert.assertEquals(cycleExists, CycleDetectionByFastAndSlowIterators.detectCycle(head).cycleExists); } } diff --git a/algorithms/src/test/java/com/baeldung/algorithms/linkedlist/CycleDetectionByHashingTest.java b/algorithms/src/test/java/com/baeldung/algorithms/linkedlist/CycleDetectionByHashingTest.java index af9a8239ef..73a2cc7861 100644 --- a/algorithms/src/test/java/com/baeldung/algorithms/linkedlist/CycleDetectionByHashingTest.java +++ b/algorithms/src/test/java/com/baeldung/algorithms/linkedlist/CycleDetectionByHashingTest.java @@ -2,19 +2,22 @@ package com.baeldung.algorithms.linkedlist; import org.junit.Assert; import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +@RunWith(value = Parameterized.class) public class CycleDetectionByHashingTest extends CycleDetectionTestBase { + boolean cycleExists; + Node head; - @Test - public void givenNormalList_dontDetectLoop() { - Node root = createList(); - Assert.assertFalse(CycleDetectionByHashing.detectCycle(root)); + public CycleDetectionByHashingTest(Node head, boolean cycleExists) { + super(); + this.cycleExists = cycleExists; + this.head = head; } @Test - public void givenCyclicList_detectLoop() { - Node root = createList(); - createLoop(root); - Assert.assertTrue(CycleDetectionByHashing.detectCycle(root)); + public void givenList_detectLoop() { + Assert.assertEquals(cycleExists, CycleDetectionByHashing.detectCycle(head).cycleExists); } } diff --git a/algorithms/src/test/java/com/baeldung/algorithms/linkedlist/CycleDetectionTestBase.java b/algorithms/src/test/java/com/baeldung/algorithms/linkedlist/CycleDetectionTestBase.java index 2abf5de1d4..51906de8e5 100644 --- a/algorithms/src/test/java/com/baeldung/algorithms/linkedlist/CycleDetectionTestBase.java +++ b/algorithms/src/test/java/com/baeldung/algorithms/linkedlist/CycleDetectionTestBase.java @@ -1,7 +1,22 @@ package com.baeldung.algorithms.linkedlist; +import java.util.Arrays; +import java.util.Collection; + +import org.junit.runners.Parameterized.Parameters; + public class CycleDetectionTestBase { + @Parameters + public static Collection getLists() { + return Arrays.asList(new Object[][] { + { createList(), false }, + { createListWithLoop(), true }, + { createListWithFullCycle(), true }, + { createListWithSingleNodeInCycle(), true } + }); + } + public static Node createList() { Node root = Node.createNewNode(10, null); @@ -13,6 +28,26 @@ public class CycleDetectionTestBase { return root; } + public static Node createListWithLoop() { + Node node = createList(); + createLoop(node); + return node; + } + + public static Node createListWithFullCycle() { + Node head = createList(); + Node tail = Node.getTail(head); + tail.next = head; + return head; + } + + public static Node createListWithSingleNodeInCycle() { + Node head = createList(); + Node tail = Node.getTail(head); + tail.next = tail; + return head; + } + public static void createLoop(Node root) { Node tail = Node.getTail(root); diff --git a/algorithms/src/test/java/com/baeldung/algorithms/linkedlist/CycleRemovalBruteForceTest.java b/algorithms/src/test/java/com/baeldung/algorithms/linkedlist/CycleRemovalBruteForceTest.java index b32f20fb75..6484c9988e 100644 --- a/algorithms/src/test/java/com/baeldung/algorithms/linkedlist/CycleRemovalBruteForceTest.java +++ b/algorithms/src/test/java/com/baeldung/algorithms/linkedlist/CycleRemovalBruteForceTest.java @@ -2,20 +2,23 @@ package com.baeldung.algorithms.linkedlist; import org.junit.Assert; import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +@RunWith(value = Parameterized.class) public class CycleRemovalBruteForceTest extends CycleDetectionTestBase { + boolean cycleExists; + Node head; - @Test - public void givenNormalList_dontDetectLoop() { - Node root = createList(); - Assert.assertFalse(CycleRemovalBruteForce.detectAndRemoveCycle(root)); + public CycleRemovalBruteForceTest(Node head, boolean cycleExists) { + super(); + this.cycleExists = cycleExists; + this.head = head; } @Test - public void givenCyclicList_detectAndRemoveLoop() { - Node root = createList(); - createLoop(root); - Assert.assertTrue(CycleRemovalBruteForce.detectAndRemoveCycle(root)); - Assert.assertFalse(CycleDetectionByFastAndSlowIterators.detectCycle(root)); + public void givenList_ifLoopExists_thenDetectAndRemoveLoop() { + Assert.assertEquals(cycleExists, CycleRemovalBruteForce.detectAndRemoveCycle(head)); + Assert.assertFalse(CycleDetectionByFastAndSlowIterators.detectCycle(head).cycleExists); } } diff --git a/algorithms/src/test/java/com/baeldung/algorithms/linkedlist/CycleRemovalByCountingLoopNodesTest.java b/algorithms/src/test/java/com/baeldung/algorithms/linkedlist/CycleRemovalByCountingLoopNodesTest.java index dd938afae1..7bfd89c502 100644 --- a/algorithms/src/test/java/com/baeldung/algorithms/linkedlist/CycleRemovalByCountingLoopNodesTest.java +++ b/algorithms/src/test/java/com/baeldung/algorithms/linkedlist/CycleRemovalByCountingLoopNodesTest.java @@ -2,20 +2,23 @@ package com.baeldung.algorithms.linkedlist; import org.junit.Assert; import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +@RunWith(value = Parameterized.class) public class CycleRemovalByCountingLoopNodesTest extends CycleDetectionTestBase { + boolean cycleExists; + Node head; - @Test - public void givenNormalList_dontDetectLoop() { - Node root = createList(); - Assert.assertFalse(CycleRemovalByCountingLoopNodes.detectAndRemoveCycle(root)); + public CycleRemovalByCountingLoopNodesTest(Node head, boolean cycleExists) { + super(); + this.cycleExists = cycleExists; + this.head = head; } @Test - public void givenCyclicList_detectAndRemoveLoop() { - Node root = createList(); - createLoop(root); - Assert.assertTrue(CycleRemovalByCountingLoopNodes.detectAndRemoveCycle(root)); - Assert.assertFalse(CycleDetectionByFastAndSlowIterators.detectCycle(root)); + public void givenList_ifLoopExists_thenDetectAndRemoveLoop() { + Assert.assertEquals(cycleExists, CycleRemovalByCountingLoopNodes.detectAndRemoveCycle(head)); + Assert.assertFalse(CycleDetectionByFastAndSlowIterators.detectCycle(head).cycleExists); } } diff --git a/algorithms/src/test/java/com/baeldung/algorithms/linkedlist/CycleRemovalWithoutCountingLoopNodesTest.java b/algorithms/src/test/java/com/baeldung/algorithms/linkedlist/CycleRemovalWithoutCountingLoopNodesTest.java index 56a08a5ee4..c77efb3e3e 100644 --- a/algorithms/src/test/java/com/baeldung/algorithms/linkedlist/CycleRemovalWithoutCountingLoopNodesTest.java +++ b/algorithms/src/test/java/com/baeldung/algorithms/linkedlist/CycleRemovalWithoutCountingLoopNodesTest.java @@ -2,20 +2,23 @@ package com.baeldung.algorithms.linkedlist; import org.junit.Assert; import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +@RunWith(value = Parameterized.class) public class CycleRemovalWithoutCountingLoopNodesTest extends CycleDetectionTestBase { + boolean cycleExists; + Node head; - @Test - public void givenNormalList_dontDetectLoop() { - Node root = createList(); - Assert.assertFalse(CycleRemovalWithoutCountingLoopNodes.detectAndRemoveCycle(root)); + public CycleRemovalWithoutCountingLoopNodesTest(Node head, boolean cycleExists) { + super(); + this.cycleExists = cycleExists; + this.head = head; } @Test - public void givenCyclicList_detectAndRemoveLoop() { - Node root = createList(); - createLoop(root); - Assert.assertTrue(CycleRemovalWithoutCountingLoopNodes.detectAndRemoveCycle(root)); - Assert.assertFalse(CycleDetectionByFastAndSlowIterators.detectCycle(root)); + public void givenList_ifLoopExists_thenDetectAndRemoveLoop() { + Assert.assertEquals(cycleExists, CycleRemovalWithoutCountingLoopNodes.detectAndRemoveCycle(head)); + Assert.assertFalse(CycleDetectionByFastAndSlowIterators.detectCycle(head).cycleExists); } } \ No newline at end of file From 644ecbd0ebbe12d1a70df6c98d3e9030a4448060 Mon Sep 17 00:00:00 2001 From: Mansi Date: Sat, 9 Sep 2017 03:29:23 +0530 Subject: [PATCH 68/73] BAEL-1090 Difference between Compressed String and Compact String in Java 9 (#2574) * Example Code For Evaluation Article This is an example code for the evaluation article on "Different Types of Bean Injection in Spring" * Added unit tests * Minor changes to application context * Removed code committed for evaluation article * BAEL-944 Demonstrating the problems with new Url pattern matching in Spring 5 * BAEL-944 Demonstrating the problems with new Url pattern matching in Spring 5 * BAEL-944 Exploring the Spring MVC URL Matching Improvements * BAEL-944 Exploring the Spring MVC URL Matching Improvements * BAEL-944 Exploring the Spring MVC URL Matching Improvements * BAEL-944 Code Formatting and solving build issue * BAEL-944 Resolving build issue due to change in Spring version * BAEL-944 Resolving build issue * BAEL-944 Formatting code * BAEL-944 Moving tests to correct package * BAEL-944 Moving tests to correct package * BAEL-944 Replacing @RequestMapping by @GetMapping * BAEL-944 Remove unnecessary attribute name, "value" in annotations * BAEL-79 Intro to Activiti with Spring * BAEL-79 Intro to Activiti with Spring * BAEL-79 Adding activiti module to the parent modules * BAEL-79 Using latest version * BAEL-79 Update Spring boot version that works with Activiti * BAEL-79 Replace RequestMapping with GetMapping * BAEL-79 Use Java 8 Syntax * BAEL-79 Formatting * BAEL-79 changed module name * BAEL-378 A Guide to Activiti with Java * BAEL-79 Fixed unit tests * BAEL-79 Simplified the process * BAEL-79 Fix test cases * BAEL-1045 Lambda Behave * BAEL-1045 Lambda Behave * BAEL-1045 Lambda Behave * BAEL-1090 Difference between compact and compressed strings in Java 9 --- .../compactstring/CompactStringDemo.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 core-java-9/src/main/java/com/baeldung/java9/compactstring/CompactStringDemo.java diff --git a/core-java-9/src/main/java/com/baeldung/java9/compactstring/CompactStringDemo.java b/core-java-9/src/main/java/com/baeldung/java9/compactstring/CompactStringDemo.java new file mode 100644 index 0000000000..6aa4ac3247 --- /dev/null +++ b/core-java-9/src/main/java/com/baeldung/java9/compactstring/CompactStringDemo.java @@ -0,0 +1,24 @@ +package com.baeldung.java9.compactstring; + +import java.util.List; +import static java.util.stream.Collectors.toList; +import java.util.stream.IntStream; + +public class CompactStringDemo { + + public static void main(String[] args) { + long startTime = System.currentTimeMillis(); + List strings = IntStream.rangeClosed(1, 10_000_000) + .mapToObj(Integer::toString).collect(toList()); + long totalTime = System.currentTimeMillis() - startTime; + System.out.println("Generated " + strings.size() + " strings in " + + totalTime + " ms."); + + startTime = System.currentTimeMillis(); + String appended = (String) strings.stream().limit(100_000) + .reduce("", (left, right) -> left.toString() + right.toString()); + totalTime = System.currentTimeMillis() - totalTime; + System.out.println("Created string of length " + appended.length() + + " in " + totalTime + " ms."); + } +} From 4589860efb4d247d14598af00da43ec6f60f2449 Mon Sep 17 00:00:00 2001 From: Predrag Maric Date: Sat, 9 Sep 2017 00:43:20 +0200 Subject: [PATCH 69/73] BAEL-1090 Fixed minor issue with total time calculation (#2589) --- .../com/baeldung/java9/compactstring/CompactStringDemo.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core-java-9/src/main/java/com/baeldung/java9/compactstring/CompactStringDemo.java b/core-java-9/src/main/java/com/baeldung/java9/compactstring/CompactStringDemo.java index 6aa4ac3247..cb24511f72 100644 --- a/core-java-9/src/main/java/com/baeldung/java9/compactstring/CompactStringDemo.java +++ b/core-java-9/src/main/java/com/baeldung/java9/compactstring/CompactStringDemo.java @@ -17,7 +17,7 @@ public class CompactStringDemo { startTime = System.currentTimeMillis(); String appended = (String) strings.stream().limit(100_000) .reduce("", (left, right) -> left.toString() + right.toString()); - totalTime = System.currentTimeMillis() - totalTime; + totalTime = System.currentTimeMillis() - startTime; System.out.println("Created string of length " + appended.length() + " in " + totalTime + " ms."); } From f01d1e257e8ec3174d9cd1ce53ba5f40c28c716c Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sat, 9 Sep 2017 16:55:05 +0200 Subject: [PATCH 70/73] Build optimization (#2591) --- mustache/pom.xml | 87 +++++++++++++++++++ .../mustache/TodoMustacheServiceTest.java | 72 ++++++++------- ...ngMustacheApplicationIntegrationTest.java} | 2 +- .../src/main/java/com/baeldung/web/BeanA.java | 1 - .../src/main/java/com/baeldung/web/BeanB.java | 1 - spring-rest-angular/pom.xml | 1 - ...PostControllerRequestIntegrationTest.java} | 11 ++- ...ostControllerResponseIntegrationTest.java} | 17 ++-- .../StudentServiceIntegrationTest.java | 14 +-- 9 files changed, 148 insertions(+), 58 deletions(-) rename mustache/src/test/java/com/baeldung/springmustache/{SpringMustacheApplicationTests.java => SpringMustacheApplicationIntegrationTest.java} (94%) rename spring-rest-angular/src/test/java/com/baeldung/controllers/{ExamplePostControllerRequestUnitTest.java => ExamplePostControllerRequestIntegrationTest.java} (90%) rename spring-rest-angular/src/test/java/com/baeldung/controllers/{ExamplePostControllerResponseUnitTest.java => ExamplePostControllerResponseIntegrationTest.java} (86%) diff --git a/mustache/pom.xml b/mustache/pom.xml index 15c0e3a8c7..8aab038313 100644 --- a/mustache/pom.xml +++ b/mustache/pom.xml @@ -71,9 +71,96 @@ org.springframework.boot spring-boot-maven-plugin + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + 3 + true + + **/*IntegrationTest.java + **/*LongRunningUnitTest.java + **/*ManualTest.java + **/JdbcTest.java + **/*LiveTest.java + + true + + + + + + integration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*LiveTest.java + **/AutoconfigurationTest.java + + + **/*IntegrationTest.java + + + + + + + json + + + + + + + + autoconfiguration + + + + org.apache.maven.plugins + maven-surefire-plugin + + + integration-test + + test + + + + **/*LiveTest.java + **/*IntegrationTest.java + + + **/AutoconfigurationTest.java + + + + + + + json + + + + + + + + 0.9.2 3.7.0 diff --git a/mustache/src/test/java/com/baeldung/mustache/TodoMustacheServiceTest.java b/mustache/src/test/java/com/baeldung/mustache/TodoMustacheServiceTest.java index 17a59aa6a1..0df2f7f8a4 100644 --- a/mustache/src/test/java/com/baeldung/mustache/TodoMustacheServiceTest.java +++ b/mustache/src/test/java/com/baeldung/mustache/TodoMustacheServiceTest.java @@ -1,100 +1,98 @@ package com.baeldung.mustache; -import static org.assertj.core.api.Assertions.assertThat; +import com.baeldung.mustache.model.Todo; +import com.github.mustachejava.Mustache; +import org.junit.Test; import java.io.IOException; import java.io.StringWriter; import java.time.Instant; -import java.time.LocalDateTime; -import java.time.temporal.TemporalUnit; import java.util.Arrays; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.function.Function; -import org.junit.Test; +import static org.assertj.core.api.Assertions.assertThat; -import com.baeldung.mustache.model.Todo; -import com.github.mustachejava.Mustache; public class TodoMustacheServiceTest { - private String executeTemplate(Mustache m, Map context) throws IOException{ + private String executeTemplate(Mustache m, Map context) throws IOException { StringWriter writer = new StringWriter(); m.execute(writer, context).flush(); return writer.toString(); } - - private String executeTemplate(Mustache m, Todo todo) throws IOException{ + + private String executeTemplate(Mustache m, Todo todo) throws IOException { StringWriter writer = new StringWriter(); m.execute(writer, todo).flush(); return writer.toString(); } - + @Test - public void givenTodoObject_whenGetHtml_thenSuccess() throws IOException{ + public void givenTodoObject_whenGetHtml_thenSuccess() throws IOException { Todo todo = new Todo("Todo 1", "Todo description"); Mustache m = MustacheUtil.getMustacheFactory().compile("todo.mustache"); Map context = new HashMap<>(); context.put("todo", todo); - + String expected = "

Todo 1

"; assertThat(executeTemplate(m, todo)).contains(expected); } - + @Test - public void givenNullTodoObject_whenGetHtml_thenEmptyHtml() throws IOException{ + public void givenNullTodoObject_whenGetHtml_thenEmptyHtml() throws IOException { Mustache m = MustacheUtil.getMustacheFactory().compile("todo-section.mustache"); Map context = new HashMap<>(); assertThat(executeTemplate(m, context)).isEmpty(); } - + @Test - public void givenTodoList_whenGetHtml_thenSuccess() throws IOException{ + public void givenTodoList_whenGetHtml_thenSuccess() throws IOException { Mustache m = MustacheUtil.getMustacheFactory().compile("todos.mustache"); - + List todos = Arrays.asList( - new Todo("Todo 1", "Todo description"), - new Todo("Todo 2", "Todo description another"), - new Todo("Todo 3", "Todo description another") - ); + new Todo("Todo 1", "Todo description"), + new Todo("Todo 2", "Todo description another"), + new Todo("Todo 3", "Todo description another") + ); Map context = new HashMap<>(); context.put("todos", todos); - + assertThat(executeTemplate(m, context)) .contains("

Todo 1

") .contains("

Todo 2

") .contains("

Todo 3

"); } - + @Test - public void givenEmptyList_whenGetHtml_thenEmptyHtml() throws IOException{ + public void givenEmptyList_whenGetHtml_thenEmptyHtml() throws IOException { Mustache m = MustacheUtil.getMustacheFactory().compile("todos.mustache"); - + Map context = new HashMap<>(); - assertThat(executeTemplate(m, context)).isEmpty();; + assertThat(executeTemplate(m, context)).isEmpty(); + ; } - + @Test - public void givenEmptyList_whenGetHtmlUsingInvertedSection_thenHtml() throws IOException{ + public void givenEmptyList_whenGetHtmlUsingInvertedSection_thenHtml() throws IOException { Mustache m = MustacheUtil.getMustacheFactory().compile("todos-inverted-section.mustache"); - + Map context = new HashMap<>(); assertThat(executeTemplate(m, context).trim()).isEqualTo("

No todos!

"); } - + @Test - public void givenTodoList_whenGetHtmlUsingLamdba_thenHtml() throws IOException{ + public void givenTodoList_whenGetHtmlUsingLamdba_thenHtml() throws IOException { Mustache m = MustacheUtil.getMustacheFactory().compile("todos-lambda.mustache"); List todos = Arrays.asList( - new Todo("Todo 1", "Todo description"), - new Todo("Todo 2", "Todo description another"), - new Todo("Todo 3", "Todo description another") - ); + new Todo("Todo 1", "Todo description"), + new Todo("Todo 2", "Todo description another"), + new Todo("Todo 3", "Todo description another") + ); todos.get(2).setDone(true); todos.get(2).setCompletedOn(Date.from(Instant.now().plusSeconds(300))); - + Map context = new HashMap<>(); context.put("todos", todos); assertThat(executeTemplate(m, context).trim()).contains("Done 5 minutes ago"); diff --git a/mustache/src/test/java/com/baeldung/springmustache/SpringMustacheApplicationTests.java b/mustache/src/test/java/com/baeldung/springmustache/SpringMustacheApplicationIntegrationTest.java similarity index 94% rename from mustache/src/test/java/com/baeldung/springmustache/SpringMustacheApplicationTests.java rename to mustache/src/test/java/com/baeldung/springmustache/SpringMustacheApplicationIntegrationTest.java index 9138dfe92b..1eecf58986 100644 --- a/mustache/src/test/java/com/baeldung/springmustache/SpringMustacheApplicationTests.java +++ b/mustache/src/test/java/com/baeldung/springmustache/SpringMustacheApplicationIntegrationTest.java @@ -13,7 +13,7 @@ import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) -public class SpringMustacheApplicationTests { +public class SpringMustacheApplicationIntegrationTest { @Autowired private TestRestTemplate restTemplate; diff --git a/spring-mvc-java/src/main/java/com/baeldung/web/BeanA.java b/spring-mvc-java/src/main/java/com/baeldung/web/BeanA.java index 79fac724f7..60da29f354 100644 --- a/spring-mvc-java/src/main/java/com/baeldung/web/BeanA.java +++ b/spring-mvc-java/src/main/java/com/baeldung/web/BeanA.java @@ -12,5 +12,4 @@ public class BeanA { public BeanA() { super(); } - } diff --git a/spring-mvc-java/src/main/java/com/baeldung/web/BeanB.java b/spring-mvc-java/src/main/java/com/baeldung/web/BeanB.java index 05c9560a0c..9e713d59ab 100644 --- a/spring-mvc-java/src/main/java/com/baeldung/web/BeanB.java +++ b/spring-mvc-java/src/main/java/com/baeldung/web/BeanB.java @@ -8,5 +8,4 @@ public class BeanB { public BeanB() { super(); } - } diff --git a/spring-rest-angular/pom.xml b/spring-rest-angular/pom.xml index 0562e3ad58..3fc429f626 100644 --- a/spring-rest-angular/pom.xml +++ b/spring-rest-angular/pom.xml @@ -5,7 +5,6 @@ 4.0.0 spring-rest-angular spring-rest-angular - com.baeldung 1.0 war diff --git a/spring-rest-angular/src/test/java/com/baeldung/controllers/ExamplePostControllerRequestUnitTest.java b/spring-rest-angular/src/test/java/com/baeldung/controllers/ExamplePostControllerRequestIntegrationTest.java similarity index 90% rename from spring-rest-angular/src/test/java/com/baeldung/controllers/ExamplePostControllerRequestUnitTest.java rename to spring-rest-angular/src/test/java/com/baeldung/controllers/ExamplePostControllerRequestIntegrationTest.java index 00a2685c53..3d0934f842 100644 --- a/spring-rest-angular/src/test/java/com/baeldung/controllers/ExamplePostControllerRequestUnitTest.java +++ b/spring-rest-angular/src/test/java/com/baeldung/controllers/ExamplePostControllerRequestIntegrationTest.java @@ -2,6 +2,7 @@ package com.baeldung.controllers; import com.baeldung.services.ExampleService; import com.baeldung.transfer.LoginForm; +import org.baeldung.web.main.Application; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -12,7 +13,6 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.setup.MockMvcBuilders; -import org.baeldung.web.main.Application; import static org.mockito.Mockito.when; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; @@ -21,11 +21,14 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. @RunWith(SpringRunner.class) @SpringBootTest(classes = Application.class) -public class ExamplePostControllerRequestUnitTest { +public class ExamplePostControllerRequestIntegrationTest { MockMvc mockMvc; - @Mock private ExampleService exampleService; - @InjectMocks private ExamplePostController exampleController; + @Mock + private ExampleService exampleService; + + @InjectMocks + private ExamplePostController exampleController; private final String jsonBody = "{\"username\": \"username\", \"password\": \"password\"}"; private LoginForm lf = new LoginForm(); diff --git a/spring-rest-angular/src/test/java/com/baeldung/controllers/ExamplePostControllerResponseUnitTest.java b/spring-rest-angular/src/test/java/com/baeldung/controllers/ExamplePostControllerResponseIntegrationTest.java similarity index 86% rename from spring-rest-angular/src/test/java/com/baeldung/controllers/ExamplePostControllerResponseUnitTest.java rename to spring-rest-angular/src/test/java/com/baeldung/controllers/ExamplePostControllerResponseIntegrationTest.java index 585cec015f..0794edad6f 100644 --- a/spring-rest-angular/src/test/java/com/baeldung/controllers/ExamplePostControllerResponseUnitTest.java +++ b/spring-rest-angular/src/test/java/com/baeldung/controllers/ExamplePostControllerResponseIntegrationTest.java @@ -2,6 +2,7 @@ package com.baeldung.controllers; import com.baeldung.services.ExampleService; import com.baeldung.transfer.LoginForm; +import org.baeldung.web.main.Application; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -10,7 +11,6 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; -import org.baeldung.web.main.Application; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.setup.MockMvcBuilders; @@ -22,12 +22,16 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. @RunWith(SpringRunner.class) @SpringBootTest(classes = Application.class) -public class ExamplePostControllerResponseUnitTest { +public class ExamplePostControllerResponseIntegrationTest { + + private MockMvc mockMvc; + + @Mock + private ExampleService exampleService; + + @InjectMocks + private ExamplePostController exampleController; - MockMvc mockMvc; - @Mock private ExampleService exampleService; - @InjectMocks private ExamplePostController exampleController; - private final String jsonBody = "{\"username\": \"username\", \"password\": \"password\"}"; private LoginForm lf = new LoginForm(); @Before @@ -44,6 +48,7 @@ public class ExamplePostControllerResponseUnitTest { public void requestBodyTest() { try { when(exampleService.fakeAuthenticate(lf)).thenReturn(true); + String jsonBody = "{\"username\": \"username\", \"password\": \"password\"}"; mockMvc .perform(post("/post/response") .content(jsonBody) diff --git a/spring-rest-angular/src/test/java/org/baeldung/web/service/StudentServiceIntegrationTest.java b/spring-rest-angular/src/test/java/org/baeldung/web/service/StudentServiceIntegrationTest.java index 48c985fb9d..4d65c02fff 100644 --- a/spring-rest-angular/src/test/java/org/baeldung/web/service/StudentServiceIntegrationTest.java +++ b/spring-rest-angular/src/test/java/org/baeldung/web/service/StudentServiceIntegrationTest.java @@ -1,10 +1,5 @@ package org.baeldung.web.service; -import static io.restassured.RestAssured.given; -import static org.hamcrest.core.Is.is; -import static org.hamcrest.core.IsCollectionContaining.hasItems; -import static org.hamcrest.core.IsEqual.equalTo; - import org.apache.commons.lang3.RandomStringUtils; import org.baeldung.web.main.Application; import org.junit.Test; @@ -13,6 +8,11 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; import org.springframework.test.context.junit4.SpringRunner; +import static io.restassured.RestAssured.given; +import static org.hamcrest.core.Is.is; +import static org.hamcrest.core.IsCollectionContaining.hasItems; +import static org.hamcrest.core.IsEqual.equalTo; + @RunWith(SpringRunner.class) @SpringBootTest(classes = Application.class, webEnvironment = WebEnvironment.DEFINED_PORT) public class StudentServiceIntegrationTest { @@ -21,7 +21,8 @@ public class StudentServiceIntegrationTest { @Test public void givenRequestForStudents_whenPageIsOne_expectContainsNames() { - given().params("page", "0", "size", "2").get(ENDPOINT).then().assertThat().body("content.name", hasItems("Bryan", "Ben")); + given().params("page", "0", "size", "2").get(ENDPOINT).then().assertThat() + .body("content.name", hasItems("Bryan", "Ben")); } @Test @@ -58,5 +59,4 @@ public class StudentServiceIntegrationTest { public void givenResourcesExist_whenFirstPageIsRetrieved_thenPageContainsResources() { given().params("page", "0", "size", "2").get(ENDPOINT).then().assertThat().body("first", equalTo(true)); } - } From 2b5a6c13f8a1ff8aee88178aa88788e718cfe59f Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Sat, 9 Sep 2017 21:11:48 +0200 Subject: [PATCH 71/73] Build opt (#2593) * Build optimization * Build optimization --- core-java/pom.xml | 47 ++++++++++++++++++++++++----------------------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/core-java/pom.xml b/core-java/pom.xml index a0a35feed9..5f7b1c1962 100644 --- a/core-java/pom.xml +++ b/core-java/pom.xml @@ -373,30 +373,7 @@ - - org.codehaus.mojo - exec-maven-plugin - - - run-benchmarks - integration-test - - exec - - - test - java - - -classpath - - org.openjdk.jmh.Main - .* - - - - - @@ -431,6 +408,30 @@ + + org.codehaus.mojo + exec-maven-plugin + + + + run-benchmarks + integration-test + + exec + + + test + java + + -classpath + + org.openjdk.jmh.Main + .* + + + + + From aa612b71bb390d4b1c1cb23596bcc3d8583d4ec7 Mon Sep 17 00:00:00 2001 From: Ahmed Tawila Date: Sat, 9 Sep 2017 21:37:26 +0200 Subject: [PATCH 72/73] BAEL-1109 Introduction to JCache (#2594) * Evaluation article: Different Types of Bean Injection in Spring * added tests & changed configuration to Java-based config * removed xml config files * rename unit tests * BAEL-972 - Apache Commons Text * remove code from evaluation article * remove code from evaluation article * BAEL-972 - Apache Commons Text - added another example * BAEL-972 - Apache Commons Text - just indentation * BAEL-994 - TemporalAdjuster in Java * BAEL-994 - TemporalAdjuster in Java * BAEL-994 - TemporalAdjuster in Java * BAEL-994 - TemporalAdjuster in Java * BAEL-994 - TemporalAdjuster in Java - fix problems * BAEL-1033 Introduction to StreamUtils * BAEL-1033 Introduction to StreamUtils * BAEL-1033 Introduction to StreamUtils * fix formatting * BAEL-1033 minor refactor * BAEL-1035 Introduction to Eclipse Collections * format * BAEL-1035 Introduction to Eclipse Collections * BAEL-1035 Introduction to Eclipse Collections * BAEL-1035 Introduction to Eclipse Collections * cleanup * cleanup * BAEL-1109 Introduction to JCache * BAEL-1109 Introduction to JCache * remove unneeded property in pom.xml * fix formatting --- libraries/pom.xml | 46 ++++++++++++------- .../jcache/SimpleCacheEntryListener.java | 34 ++++++++++++++ .../baeldung/jcache/SimpleCacheLoader.java | 24 ++++++++++ .../baeldung/jcache/SimpleEntryProcessor.java | 25 ++++++++++ .../com/baeldung/jcache/CacheLoaderTest.java | 35 ++++++++++++++ .../baeldung/jcache/EntryProcessorTest.java | 32 +++++++++++++ .../baeldung/jcache/EventListenerTest.java | 46 +++++++++++++++++++ .../java/com/baeldung/jcache/JCacheTest.java | 27 +++++++++++ 8 files changed, 252 insertions(+), 17 deletions(-) create mode 100644 libraries/src/main/java/com/baeldung/jcache/SimpleCacheEntryListener.java create mode 100644 libraries/src/main/java/com/baeldung/jcache/SimpleCacheLoader.java create mode 100644 libraries/src/main/java/com/baeldung/jcache/SimpleEntryProcessor.java create mode 100644 libraries/src/test/java/com/baeldung/jcache/CacheLoaderTest.java create mode 100644 libraries/src/test/java/com/baeldung/jcache/EntryProcessorTest.java create mode 100644 libraries/src/test/java/com/baeldung/jcache/EventListenerTest.java create mode 100644 libraries/src/test/java/com/baeldung/jcache/JCacheTest.java diff --git a/libraries/pom.xml b/libraries/pom.xml index fb0bef2be8..fbab220a30 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -555,25 +555,35 @@ ${protonpack.version} - org.functionaljava - functionaljava - 4.7 - - - org.functionaljava - functionaljava-java8 - 4.7 + org.functionaljava + functionaljava + 4.7 + + + org.functionaljava + functionaljava-java8 + 4.7 - org.functionaljava - functionaljava-quickcheck - 4.7 - - - org.functionaljava - functionaljava-java-core - 4.7 + org.functionaljava + functionaljava-quickcheck + 4.7 + + + org.functionaljava + functionaljava-java-core + 4.7 + + javax.cache + cache-api + ${cache.version} + + + com.hazelcast + hazelcast + ${hazelcast.version} + @@ -653,5 +663,7 @@ 1.5.1 1.14 1.0.3 + 1.0.0 + 3.8.4
- + \ No newline at end of file diff --git a/libraries/src/main/java/com/baeldung/jcache/SimpleCacheEntryListener.java b/libraries/src/main/java/com/baeldung/jcache/SimpleCacheEntryListener.java new file mode 100644 index 0000000000..b58182eab0 --- /dev/null +++ b/libraries/src/main/java/com/baeldung/jcache/SimpleCacheEntryListener.java @@ -0,0 +1,34 @@ +package com.baeldung.jcache; + +import java.io.Serializable; + +import javax.cache.event.CacheEntryCreatedListener; +import javax.cache.event.CacheEntryEvent; +import javax.cache.event.CacheEntryListenerException; +import javax.cache.event.CacheEntryUpdatedListener; + +public class SimpleCacheEntryListener implements CacheEntryCreatedListener, CacheEntryUpdatedListener, Serializable { + + /** + * + */ + private static final long serialVersionUID = -712657810462878763L; + private boolean updated; + private boolean created; + + public boolean getUpdated() { + return this.updated; + } + + public boolean getCreated() { + return this.created; + } + + public void onUpdated(Iterable> events) throws CacheEntryListenerException { + this.updated = true; + } + + public void onCreated(Iterable> events) throws CacheEntryListenerException { + this.created = true; + } +} \ No newline at end of file diff --git a/libraries/src/main/java/com/baeldung/jcache/SimpleCacheLoader.java b/libraries/src/main/java/com/baeldung/jcache/SimpleCacheLoader.java new file mode 100644 index 0000000000..77ab8fb645 --- /dev/null +++ b/libraries/src/main/java/com/baeldung/jcache/SimpleCacheLoader.java @@ -0,0 +1,24 @@ +package com.baeldung.jcache; + +import java.util.HashMap; +import java.util.Map; + +import javax.cache.integration.CacheLoader; +import javax.cache.integration.CacheLoaderException; + +public class SimpleCacheLoader implements CacheLoader { + + @Override + public String load(Integer key) throws CacheLoaderException { + return "fromCache" + key; + } + + @Override + public Map loadAll(Iterable keys) throws CacheLoaderException { + Map data = new HashMap<>(); + for (int key : keys) { + data.put(key, load(key)); + } + return data; + } +} diff --git a/libraries/src/main/java/com/baeldung/jcache/SimpleEntryProcessor.java b/libraries/src/main/java/com/baeldung/jcache/SimpleEntryProcessor.java new file mode 100644 index 0000000000..bb585807fb --- /dev/null +++ b/libraries/src/main/java/com/baeldung/jcache/SimpleEntryProcessor.java @@ -0,0 +1,25 @@ +package com.baeldung.jcache; + +import java.io.Serializable; + +import javax.cache.processor.EntryProcessor; +import javax.cache.processor.EntryProcessorException; +import javax.cache.processor.MutableEntry; + +public class SimpleEntryProcessor implements EntryProcessor, Serializable { + + /** + * + */ + private static final long serialVersionUID = -5616476363722945132L; + + public String process(MutableEntry entry, Object... args) throws EntryProcessorException { + + if (entry.exists()) { + String current = entry.getValue(); + entry.setValue(current + " - modified"); + return current; + } + return null; + } +} diff --git a/libraries/src/test/java/com/baeldung/jcache/CacheLoaderTest.java b/libraries/src/test/java/com/baeldung/jcache/CacheLoaderTest.java new file mode 100644 index 0000000000..e2167b39ad --- /dev/null +++ b/libraries/src/test/java/com/baeldung/jcache/CacheLoaderTest.java @@ -0,0 +1,35 @@ +package com.baeldung.jcache; + +import static org.junit.Assert.assertEquals; + +import javax.cache.Cache; +import javax.cache.CacheManager; +import javax.cache.Caching; +import javax.cache.configuration.FactoryBuilder; +import javax.cache.configuration.MutableConfiguration; +import javax.cache.spi.CachingProvider; + +import org.junit.Before; +import org.junit.Test; + +public class CacheLoaderTest { + + private Cache cache; + + @Before + public void setup() { + CachingProvider cachingProvider = Caching.getCachingProvider(); + CacheManager cacheManager = cachingProvider.getCacheManager(); + MutableConfiguration config = new MutableConfiguration().setReadThrough(true) + .setCacheLoaderFactory(new FactoryBuilder.SingletonFactory<>(new SimpleCacheLoader())); + this.cache = cacheManager.createCache("SimpleCache", config); + } + + @Test + public void whenReadingFromStorage_thenCorrect() { + for (int i = 1; i < 4; i++) { + String value = cache.get(i); + assertEquals("fromCache" + i, value); + } + } +} diff --git a/libraries/src/test/java/com/baeldung/jcache/EntryProcessorTest.java b/libraries/src/test/java/com/baeldung/jcache/EntryProcessorTest.java new file mode 100644 index 0000000000..fba6067885 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/jcache/EntryProcessorTest.java @@ -0,0 +1,32 @@ +package com.baeldung.jcache; + +import static org.junit.Assert.assertEquals; + +import javax.cache.Cache; +import javax.cache.CacheManager; +import javax.cache.Caching; +import javax.cache.configuration.MutableConfiguration; +import javax.cache.spi.CachingProvider; + +import org.junit.Before; +import org.junit.Test; + +public class EntryProcessorTest { + + private Cache cache; + + @Before + public void instantiateCache() { + CachingProvider cachingProvider = Caching.getCachingProvider(); + CacheManager cacheManager = cachingProvider.getCacheManager(); + MutableConfiguration config = new MutableConfiguration(); + this.cache = cacheManager.createCache("MyCache", config); + this.cache.put("key", "value"); + } + + @Test + public void whenModifyValue_thenCorrect() { + this.cache.invoke("key", new SimpleEntryProcessor()); + assertEquals("value - modified", cache.get("key")); + } +} diff --git a/libraries/src/test/java/com/baeldung/jcache/EventListenerTest.java b/libraries/src/test/java/com/baeldung/jcache/EventListenerTest.java new file mode 100644 index 0000000000..5fb0b317e2 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/jcache/EventListenerTest.java @@ -0,0 +1,46 @@ +package com.baeldung.jcache; + +import static org.junit.Assert.assertEquals; + +import javax.cache.Cache; +import javax.cache.CacheManager; +import javax.cache.Caching; +import javax.cache.configuration.FactoryBuilder; +import javax.cache.configuration.MutableCacheEntryListenerConfiguration; +import javax.cache.configuration.MutableConfiguration; +import javax.cache.spi.CachingProvider; + +import org.junit.Before; +import org.junit.Test; + +public class EventListenerTest { + + private Cache cache; + private SimpleCacheEntryListener listener; + MutableCacheEntryListenerConfiguration listenerConfiguration; + + @Before + public void setup() { + CachingProvider cachingProvider = Caching.getCachingProvider(); + CacheManager cacheManager = cachingProvider.getCacheManager(); + MutableConfiguration config = new MutableConfiguration(); + this.cache = cacheManager.createCache("MyCache", config); + this.listener = new SimpleCacheEntryListener(); + } + + @Test + public void whenRunEvent_thenCorrect() throws InterruptedException { + this.listenerConfiguration = new MutableCacheEntryListenerConfiguration(FactoryBuilder.factoryOf(this.listener), null, false, true); + this.cache.registerCacheEntryListener(this.listenerConfiguration); + + assertEquals(false, this.listener.getCreated()); + + this.cache.put("key", "value"); + assertEquals(true, this.listener.getCreated()); + assertEquals(false, this.listener.getUpdated()); + + this.cache.put("key", "newValue"); + assertEquals(true, this.listener.getUpdated()); + } + +} diff --git a/libraries/src/test/java/com/baeldung/jcache/JCacheTest.java b/libraries/src/test/java/com/baeldung/jcache/JCacheTest.java new file mode 100644 index 0000000000..2c86a236b4 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/jcache/JCacheTest.java @@ -0,0 +1,27 @@ +package com.baeldung.jcache; + +import static org.junit.Assert.assertEquals; + +import javax.cache.Cache; +import javax.cache.CacheManager; +import javax.cache.Caching; +import javax.cache.configuration.MutableConfiguration; +import javax.cache.spi.CachingProvider; + +import org.junit.Test; + +public class JCacheTest { + + @Test + public void instantiateCache() { + CachingProvider cachingProvider = Caching.getCachingProvider(); + CacheManager cacheManager = cachingProvider.getCacheManager(); + MutableConfiguration config = new MutableConfiguration<>(); + Cache cache = cacheManager.createCache("simpleCache", config); + cache.put("key1", "value1"); + cache.put("key2", "value2"); + assertEquals("value1", cache.get("key1")); + assertEquals("value2", cache.get("key2")); + cacheManager.close(); + } +} From 514996c08e1d1e77aaaf01dfd7ee1d9fbb312f24 Mon Sep 17 00:00:00 2001 From: Alejandro Gervasio Date: Sat, 9 Sep 2017 17:18:07 -0300 Subject: [PATCH 73/73] Java Beans Validation with Hibernate Validator - BAEL-1138 - Alejandro Gervasio - alejandro.gervasio@gmail.com (#2588) * Initial Commit * Fixed indentation in pom.xml * Fixed indentation in pom.xml --- javaxval/bean-validation/pom.xml | 42 ++++++ .../application/Application.java | 17 +++ .../container/IntegerContainer.java | 13 ++ .../container/StringContainer.java | 14 ++ .../baeldung/beanvalidation/model/User.java | 48 +++++++ .../beanvalidation/service/EntityService.java | 8 ++ .../beanvalidation/service/UserService.java | 45 ++++++ .../beanvalidation/ValidationTest.java | 134 ++++++++++++++++++ 8 files changed, 321 insertions(+) create mode 100644 javaxval/bean-validation/pom.xml create mode 100644 javaxval/bean-validation/src/main/java/com/baeldung/beanvalidation/application/Application.java create mode 100644 javaxval/bean-validation/src/main/java/com/baeldung/beanvalidation/container/IntegerContainer.java create mode 100644 javaxval/bean-validation/src/main/java/com/baeldung/beanvalidation/container/StringContainer.java create mode 100644 javaxval/bean-validation/src/main/java/com/baeldung/beanvalidation/model/User.java create mode 100644 javaxval/bean-validation/src/main/java/com/baeldung/beanvalidation/service/EntityService.java create mode 100644 javaxval/bean-validation/src/main/java/com/baeldung/beanvalidation/service/UserService.java create mode 100644 javaxval/bean-validation/src/test/java/com/baeldung/beanvalidation/ValidationTest.java diff --git a/javaxval/bean-validation/pom.xml b/javaxval/bean-validation/pom.xml new file mode 100644 index 0000000000..cdb5a814e2 --- /dev/null +++ b/javaxval/bean-validation/pom.xml @@ -0,0 +1,42 @@ + + 4.0.0 + + com.baeldung.beanvalidation + beanvalidation + 1.0 + jar + beanvalidation + http://maven.apache.org + + UTF-8 + + + + junit + junit + 4.12 + test + + + javax.validation + validation-api + 2.0.0.Final + + + org.hibernate + hibernate-validator + 6.0.2.Final + + + javax.el + javax.el-api + 3.0.0 + + + org.glassfish.web + javax.el + 2.2.4 + + + diff --git a/javaxval/bean-validation/src/main/java/com/baeldung/beanvalidation/application/Application.java b/javaxval/bean-validation/src/main/java/com/baeldung/beanvalidation/application/Application.java new file mode 100644 index 0000000000..7966b1046c --- /dev/null +++ b/javaxval/bean-validation/src/main/java/com/baeldung/beanvalidation/application/Application.java @@ -0,0 +1,17 @@ +package com.baeldung.beanvalidation.application; + +import javax.validation.Validation; +import javax.validation.Validator; +import com.baeldung.beanvalidation.model.User; + +public class Application { + + public static void main( String[] args ) { + Validator validator = Validation.buildDefaultValidatorFactory().getValidator(); + User user = new User(); + user.setName("Mary"); + user.setEmail("no-email"); + user.setAge(36); + validator.validate(user).stream().forEach(violation -> System.out.println(violation.getMessage())); + } +} diff --git a/javaxval/bean-validation/src/main/java/com/baeldung/beanvalidation/container/IntegerContainer.java b/javaxval/bean-validation/src/main/java/com/baeldung/beanvalidation/container/IntegerContainer.java new file mode 100644 index 0000000000..a6006067cc --- /dev/null +++ b/javaxval/bean-validation/src/main/java/com/baeldung/beanvalidation/container/IntegerContainer.java @@ -0,0 +1,13 @@ +package com.baeldung.beanvalidation.container; + +import java.util.Optional; +import javax.validation.constraints.Positive; + +public class IntegerContainer { + + private Optional<@Positive(message = "Value must be a positive integer") Integer> container = Optional.empty(); + + public void addElement(int element) { + container = Optional.of(element); + } +} diff --git a/javaxval/bean-validation/src/main/java/com/baeldung/beanvalidation/container/StringContainer.java b/javaxval/bean-validation/src/main/java/com/baeldung/beanvalidation/container/StringContainer.java new file mode 100644 index 0000000000..eced996263 --- /dev/null +++ b/javaxval/bean-validation/src/main/java/com/baeldung/beanvalidation/container/StringContainer.java @@ -0,0 +1,14 @@ +package com.baeldung.beanvalidation.container; + +import java.util.ArrayList; +import java.util.List; +import javax.validation.constraints.NotNull; + +public class StringContainer { + + private List<@NotNull String> container = new ArrayList<>(); + + public void addElement(String element) { + container.add(element); + } +} diff --git a/javaxval/bean-validation/src/main/java/com/baeldung/beanvalidation/model/User.java b/javaxval/bean-validation/src/main/java/com/baeldung/beanvalidation/model/User.java new file mode 100644 index 0000000000..2a019c37b3 --- /dev/null +++ b/javaxval/bean-validation/src/main/java/com/baeldung/beanvalidation/model/User.java @@ -0,0 +1,48 @@ +package com.baeldung.beanvalidation.model; + +import java.io.Serializable; +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +import org.hibernate.validator.constraints.Email; + +public class User implements Serializable { + + private static final long serialVersionUID = 1L; + + @NotNull(message = "Name cannot be null") + @Size(min = 2, max = 32, message = "Name must be between 2 and 32 characters") + private String name; + + @Email(message = "Email must be a well-formed email address") + private String email; + + @Min(value = 1, message = "Age must not be lesser than 1") + @Max(value = 99, message = "Age must not be greater than 99") + private int age; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } +} diff --git a/javaxval/bean-validation/src/main/java/com/baeldung/beanvalidation/service/EntityService.java b/javaxval/bean-validation/src/main/java/com/baeldung/beanvalidation/service/EntityService.java new file mode 100644 index 0000000000..5362e7fbda --- /dev/null +++ b/javaxval/bean-validation/src/main/java/com/baeldung/beanvalidation/service/EntityService.java @@ -0,0 +1,8 @@ +package com.baeldung.beanvalidation.service; + +public interface EntityService { + + public String toString(); + + public void processEntity(); +} diff --git a/javaxval/bean-validation/src/main/java/com/baeldung/beanvalidation/service/UserService.java b/javaxval/bean-validation/src/main/java/com/baeldung/beanvalidation/service/UserService.java new file mode 100644 index 0000000000..7aae5b3077 --- /dev/null +++ b/javaxval/bean-validation/src/main/java/com/baeldung/beanvalidation/service/UserService.java @@ -0,0 +1,45 @@ +package com.baeldung.beanvalidation.service; + +import java.io.Serializable; +import javax.validation.Valid; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +import com.baeldung.beanvalidation.model.User; + +public class UserService implements EntityService, Serializable { + + private static final long serialVersionUID = 1L; + + @Valid + private User user; + + @NotNull(message = "FileName cannot be null") + @Size(min = 5, max = 10, message = "FileName must be between 5 and 10 characters") + private String fileName; + + public User getUser() { + return user; + } + + public void setUser(User user) { + this.user = user; + } + + public String getFileName() { + return fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } + + @Override + public void processEntity() { + // process the user here + } + + @Override + public String toString() { + return "UserService [user=" + user + ", fileName=" + fileName + "]"; + } +} diff --git a/javaxval/bean-validation/src/test/java/com/baeldung/beanvalidation/ValidationTest.java b/javaxval/bean-validation/src/test/java/com/baeldung/beanvalidation/ValidationTest.java new file mode 100644 index 0000000000..1d36cf21f0 --- /dev/null +++ b/javaxval/bean-validation/src/test/java/com/baeldung/beanvalidation/ValidationTest.java @@ -0,0 +1,134 @@ +package com.baeldung.beanvalidation; + +import javax.validation.ConstraintViolation; +import javax.validation.Validation; +import javax.validation.Validator; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; +import com.baeldung.beanvalidation.container.IntegerContainer; +import com.baeldung.beanvalidation.container.StringContainer; +import com.baeldung.beanvalidation.model.User; +import com.baeldung.beanvalidation.service.UserService; +import java.util.Set; +import java.util.stream.Collectors; +import static org.junit.Assert.*; + +public class ValidationTest { + + private static Validator validator; + private static User user; + + @BeforeClass + public static void setUpHibernateValidatorInstance() { + validator = Validation.buildDefaultValidatorFactory().getValidator(); + } + + @BeforeClass + public static void setUpUserInstance() { + user = new User(); + } + + @AfterClass + public static void tearDownHibernateValidatorInstance() { + validator = null; + } + + @AfterClass + public static void tearDownUserInstance() { + user = null; + } + + @Test + public void givenNullName_whenValidated_thenMessageDescriptorForName() { + user.setName(null); + user.setEmail("mary@domain.com"); + user.setAge(36); + assertEquals("Name cannot be null", validator.validate(user).stream().map(violation -> violation.getMessage()).collect(Collectors.joining())); + } + + @Test + public void givenInvalidEmail_whenValidated_thenMessageDescriptorforEmail() { + user.setName("Mary"); + user.setEmail("no-email"); + user.setAge(36); + assertEquals("Email must be a well-formed email address", validator.validate(user).stream().map(violation -> violation.getMessage()).collect(Collectors.joining())); + } + + @Test + public void givenAgeLesserThanLowerBound_whenValidated_thenMessageDescriptorforAge() { + user.setName("Mary"); + user.setEmail("mary@domain.com"); + user.setAge(0); + assertEquals("Age must not be lesser than 1", validator.validate(user).stream().map(violation -> violation.getMessage()).collect(Collectors.joining())); + } + + @Test + public void givenAgeGreaterThanUpperBound_whenValidated_thenMessageDescriptorforAge() { + user.setName("Mary"); + user.setEmail("mary@domain.com"); + user.setAge(100); + assertEquals("Age must not be greater than 99", validator.validate(user).stream().map(violation -> violation.getMessage()).collect(Collectors.joining())); + } + + @Test + public void givenNullFileName_whenValidated_thenMessageDescriptorforFileName() { + user.setName("Mary"); + user.setEmail("mary@domain.com"); + user.setAge(36); + UserService userService = new UserService(); + userService.setFileName(null); + userService.setUser(user); + assertEquals("FileName cannot be null", validator.validate(userService).stream().map(violation -> violation.getMessage()).collect(Collectors.joining())); + } + + @Test + public void givenFileNameShortherThanLowerBound_whenValidated_thenMessageDescriptorforFileName() { + user.setName("Mary"); + user.setEmail("mary@domain.com"); + user.setAge(36); + UserService userService = new UserService(); + userService.setFileName(""); + userService.setUser(user); + assertEquals("FileName must be between 5 and 10 characters", validator.validate(userService).stream().map(violation -> violation.getMessage()).collect(Collectors.joining())); + } + + @Test + public void givenFileNameLongerThanUpperBound_whenValidated_thenMessageDescriptorforFileName() { + user.setName("Mary"); + user.setEmail("mary@domain.com"); + user.setAge(36); + UserService userService = new UserService(); + userService.setFileName("waytoolongfilename"); + userService.setUser(user); + assertEquals("FileName must be between 5 and 10 characters", validator.validate(userService).stream().map(violation -> violation.getMessage()).collect(Collectors.joining())); + } + + @Test + public void givenNullUserAndNullFileName_whenValidated_thenTwoConstraintViolations() { + user.setName(null); + user.setEmail("mary@domain.com"); + user.setAge(36); + UserService userService = new UserService(); + userService.setFileName(null); + userService.setUser(user); + Set> constraintViolations = validator.validate(userService); + assertEquals(2, constraintViolations.size()); + } + + @Test + public void givenNullElement_whenValidated_thenOneConstraintViolation() { + StringContainer container = new StringContainer(); + container.addElement(null); + Set> constraintViolations = validator.validate(container); + assertEquals(1, constraintViolations.size()); + } + + @Test + public void givenNegativeInteger_whenValidated_thenOneConstraintViolation() { + IntegerContainer container = new IntegerContainer(); + container.addElement(-1); + Set> constraintViolations = validator.validate(container); + assertEquals(1, constraintViolations.size()); + } +}