From 992310bc7e981e7def6174264012b34cc43a0fb5 Mon Sep 17 00:00:00 2001 From: sharifi Date: Wed, 7 Jul 2021 16:30:58 +0430 Subject: [PATCH 01/82] BAEL-2670: update dependency --- metrics/pom.xml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/metrics/pom.xml b/metrics/pom.xml index 2020cd28cf..0ba590ceec 100644 --- a/metrics/pom.xml +++ b/metrics/pom.xml @@ -81,13 +81,18 @@ ${assertj-core.version} test + + com.netflix.spectator + spectator-api + 0.132.0 + 3.1.2 3.1.0 0.12.17 - 0.12.0.RELEASE + 1.7.1 2.0.7.RELEASE 3.11.1 From a6ffc87f6064bcafbc3fe7005b71c3c254c4932b Mon Sep 17 00:00:00 2001 From: sharifi Date: Wed, 7 Jul 2021 16:31:28 +0430 Subject: [PATCH 02/82] BAEL-2670: update main class --- .../java/com/baeldung/metrics/micrometer/MicrometerApp.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/metrics/src/main/java/com/baeldung/metrics/micrometer/MicrometerApp.java b/metrics/src/main/java/com/baeldung/metrics/micrometer/MicrometerApp.java index 1d738085ce..8fdb87cfe7 100644 --- a/metrics/src/main/java/com/baeldung/metrics/micrometer/MicrometerApp.java +++ b/metrics/src/main/java/com/baeldung/metrics/micrometer/MicrometerApp.java @@ -1,10 +1,10 @@ package com.baeldung.metrics.micrometer; +import io.micrometer.core.instrument.binder.jvm.JvmThreadMetrics; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; -import io.micrometer.core.instrument.binder.JvmThreadMetrics; @SpringBootApplication public class MicrometerApp { @@ -14,7 +14,7 @@ public class MicrometerApp { return new JvmThreadMetrics(); } - public static void main(String[] args) throws Exception { + public static void main(String[] args) { SpringApplication.run(MicrometerApp.class, args); } From 9c27a90786e00172605e924f67c8992b02935c25 Mon Sep 17 00:00:00 2001 From: sharifi Date: Wed, 7 Jul 2021 16:37:51 +0430 Subject: [PATCH 03/82] BAEL-2670: update test class --- .../MicrometerAtlasIntegrationTest.java | 107 +++++++++--------- 1 file changed, 54 insertions(+), 53 deletions(-) diff --git a/metrics/src/test/java/com/baeldung/metrics/micrometer/MicrometerAtlasIntegrationTest.java b/metrics/src/test/java/com/baeldung/metrics/micrometer/MicrometerAtlasIntegrationTest.java index 689e23ad6d..a5a8136ecb 100644 --- a/metrics/src/test/java/com/baeldung/metrics/micrometer/MicrometerAtlasIntegrationTest.java +++ b/metrics/src/test/java/com/baeldung/metrics/micrometer/MicrometerAtlasIntegrationTest.java @@ -1,11 +1,7 @@ package com.baeldung.metrics.micrometer; import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.within; -import static org.assertj.core.api.Assertions.withinPercentage; -import static org.hamcrest.CoreMatchers.allOf; import static org.hamcrest.CoreMatchers.equalTo; -import static org.hamcrest.collection.IsMapContaining.hasEntry; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; @@ -16,29 +12,25 @@ import io.micrometer.core.instrument.DistributionSummary; import io.micrometer.core.instrument.Gauge; import io.micrometer.core.instrument.LongTaskTimer; import io.micrometer.core.instrument.Measurement; -import io.micrometer.core.instrument.Meter.Type; -import io.micrometer.core.instrument.MeterRegistry; import io.micrometer.core.instrument.Metrics; -import io.micrometer.core.instrument.Tag; import io.micrometer.core.instrument.Timer; import io.micrometer.core.instrument.composite.CompositeMeterRegistry; +import io.micrometer.core.instrument.distribution.HistogramSnapshot; +import io.micrometer.core.instrument.distribution.ValueAtPercentile; import io.micrometer.core.instrument.simple.SimpleMeterRegistry; -import io.micrometer.core.instrument.stats.hist.Histogram; -import io.micrometer.core.instrument.stats.quantile.WindowSketchQuantiles; import java.time.Duration; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.Arrays; import java.util.Map; +import java.util.TreeMap; import java.util.Optional; import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; -import org.assertj.core.data.Percentage; import org.junit.Before; import org.junit.Test; -import org.junit.jupiter.api.Assertions; import com.netflix.spectator.atlas.AtlasConfig; @@ -55,7 +47,7 @@ public class MicrometerAtlasIntegrationTest { @Override public Duration step() { - return Duration.ofSeconds(1); + return Duration.ofSeconds(10); } @Override @@ -77,9 +69,9 @@ public class MicrometerAtlasIntegrationTest { compositeRegistry.gauge("baeldung.heat", 90); - Optional oneGauge = oneSimpleMeter + Optional oneGauge = Optional.ofNullable(oneSimpleMeter .find("baeldung.heat") - .gauge(); + .gauge()); assertTrue(oneGauge.isPresent()); Iterator measurements = oneGauge .get() @@ -91,9 +83,9 @@ public class MicrometerAtlasIntegrationTest { .next() .getValue(), equalTo(90.00)); - Optional atlasGauge = atlasMeterRegistry + Optional atlasGauge = Optional.ofNullable(atlasMeterRegistry .find("baeldung.heat") - .gauge(); + .gauge()); assertTrue(atlasGauge.isPresent()); Iterator anotherMeasurements = atlasGauge .get() @@ -122,9 +114,9 @@ public class MicrometerAtlasIntegrationTest { .increment(); new CountedObject(); - Optional counterOptional = Metrics.globalRegistry + Optional counterOptional = Optional.ofNullable(Metrics.globalRegistry .find("objects.instance") - .counter(); + .counter()); assertTrue(counterOptional.isPresent()); assertTrue(counterOptional @@ -145,7 +137,7 @@ public class MicrometerAtlasIntegrationTest { assertTrue(counter.count() == 2); counter.increment(-1); - assertTrue(counter.count() == 2); + assertTrue(counter.count() == 1); } @Test @@ -162,7 +154,7 @@ public class MicrometerAtlasIntegrationTest { timer.record(30, TimeUnit.MILLISECONDS); assertTrue(2 == timer.count()); - + assertThat(timer.totalTime(TimeUnit.MILLISECONDS)).isBetween(40.0, 55.0); } @@ -173,12 +165,12 @@ public class MicrometerAtlasIntegrationTest { .builder("3rdPartyService") .register(registry); - long currentTaskId = longTaskTimer.start(); + LongTaskTimer.Sample currentTaskId = longTaskTimer.start(); try { TimeUnit.MILLISECONDS.sleep(2); } catch (InterruptedException ignored) { } - long timeElapsed = longTaskTimer.stop(currentTaskId); + long timeElapsed = currentTaskId.stop(); assertEquals(2L, timeElapsed/((int) 1e6),1L); } @@ -213,13 +205,12 @@ public class MicrometerAtlasIntegrationTest { } @Test - public void givenTimer_whenEnrichWithQuantile_thenQuantilesComputed() { + public void givenTimer_whenEnrichWithPercentile_thenPercentilesComputed() { SimpleMeterRegistry registry = new SimpleMeterRegistry(); Timer timer = Timer .builder("test.timer") - .quantiles(WindowSketchQuantiles - .quantiles(0.3, 0.5, 0.95) - .create()) + .publishPercentiles(0.3, 0.5, 0.95) + .publishPercentileHistogram() .register(registry); timer.record(2, TimeUnit.SECONDS); @@ -229,27 +220,18 @@ public class MicrometerAtlasIntegrationTest { timer.record(8, TimeUnit.SECONDS); timer.record(13, TimeUnit.SECONDS); - Map quantileMap = extractTagValueMap(registry, Type.Gauge, 1e9); - assertThat(quantileMap, allOf(hasEntry("quantile=0.3", 2), hasEntry("quantile=0.5", 3), hasEntry("quantile=0.95", 8))); - } + Map expectedMicrometer = new TreeMap<>(); + expectedMicrometer.put(0.3, 1946.157056); + expectedMicrometer.put(0.5, 3019.89888); + expectedMicrometer.put(0.95, 13354.663936); - private Map extractTagValueMap(MeterRegistry registry, Type meterType, double valueDivisor) { - return registry - .getMeters() - .stream() - .filter(meter -> meter.getType() == meterType) - .collect(Collectors.toMap(meter -> { - Tag tag = meter - .getId() - .getTags() - .iterator() - .next(); - return tag.getKey() + "=" + tag.getValue(); - }, meter -> (int) (meter - .measure() - .iterator() - .next() - .getValue() / valueDivisor))); + Map actualMicrometer = new TreeMap<>(); + ValueAtPercentile[] percentiles = timer.takeSnapshot().percentileValues(); + for (ValueAtPercentile percentile : percentiles) { + actualMicrometer.put(percentile.percentile(), percentile.value(TimeUnit.MILLISECONDS)); + } + + assertEquals(expectedMicrometer, actualMicrometer); } @Test @@ -257,7 +239,7 @@ public class MicrometerAtlasIntegrationTest { SimpleMeterRegistry registry = new SimpleMeterRegistry(); DistributionSummary hist = DistributionSummary .builder("summary") - .histogram(Histogram.linear(0, 10, 5)) + .serviceLevelObjectives(1, 10, 5) .register(registry); hist.record(3); @@ -267,17 +249,28 @@ public class MicrometerAtlasIntegrationTest { hist.record(13); hist.record(26); - Map histograms = extractTagValueMap(registry, Type.Counter, 1.0); + Map expectedMicrometer = new TreeMap<>(); + expectedMicrometer.put(1,0D); + expectedMicrometer.put(10,2D); + expectedMicrometer.put(5,1D); - assertThat(histograms, allOf(hasEntry("bucket=0.0", 0), hasEntry("bucket=10.0", 2), hasEntry("bucket=20.0", 2), hasEntry("bucket=30.0", 1), hasEntry("bucket=40.0", 1), hasEntry("bucket=Infinity", 0))); + Map actualMicrometer = new TreeMap<>(); + HistogramSnapshot snapshot = hist.takeSnapshot(); + Arrays.stream(snapshot.histogramCounts()).forEach(p -> { + actualMicrometer.put((Integer.valueOf((int) p.bucket())), p.count()); + }); + + assertEquals(expectedMicrometer, actualMicrometer); } @Test public void givenTimer_whenEnrichWithTimescaleHistogram_thenTimeScaleDataCollected() { SimpleMeterRegistry registry = new SimpleMeterRegistry(); + Duration[] durations = {Duration.ofMillis(25), Duration.ofMillis(300), Duration.ofMillis(600)}; Timer timer = Timer .builder("timer") - .histogram(Histogram.linearTime(TimeUnit.MILLISECONDS, 0, 200, 3)) + .sla(durations) + .publishPercentileHistogram() .register(registry); timer.record(1000, TimeUnit.MILLISECONDS); @@ -286,10 +279,18 @@ public class MicrometerAtlasIntegrationTest { timer.record(341, TimeUnit.MILLISECONDS); timer.record(500, TimeUnit.MILLISECONDS); - Map histograms = extractTagValueMap(registry, Type.Counter, 1.0); + Map expectedMicrometer = new TreeMap<>(); + expectedMicrometer.put(2.5E7,1D); + expectedMicrometer.put(3.0E8,1D); + expectedMicrometer.put(6.0E8,4D); - assertThat(histograms, allOf(hasEntry("bucket=0.0", 0), hasEntry("bucket=2.0E8", 1), hasEntry("bucket=4.0E8", 1), hasEntry("bucket=Infinity", 3))); + Map actualMicrometer = new TreeMap<>(); + HistogramSnapshot snapshot = timer.takeSnapshot(); + Arrays.stream(snapshot.histogramCounts()).forEach(p -> { + actualMicrometer.put((Double.valueOf((int) p.bucket())), p.count()); + }); + assertEquals(expectedMicrometer, actualMicrometer); } } From d77187d33d79250ea3e7984a43aaa1abc351918c Mon Sep 17 00:00:00 2001 From: Sarath Date: Thu, 8 Jul 2021 17:31:45 +0530 Subject: [PATCH 04/82] [BAEL-4990] Throwing exceptions in constructor --- .../constructors/exception/Animal.java | 32 +++++++++++++ .../baeldung/constructors/exception/Bird.java | 13 +++++ .../exception/AnimalUnitTest.java | 47 +++++++++++++++++++ 3 files changed, 92 insertions(+) create mode 100644 core-java-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/constructors/exception/Animal.java create mode 100644 core-java-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/constructors/exception/Bird.java create mode 100644 core-java-modules/core-java-lang-oop-constructors/src/test/java/com/baeldung/constructors/exception/AnimalUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/constructors/exception/Animal.java b/core-java-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/constructors/exception/Animal.java new file mode 100644 index 0000000000..1927bc4455 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/constructors/exception/Animal.java @@ -0,0 +1,32 @@ +package com.baeldung.constructors.exception; + +import java.io.File; +import java.io.IOException; + +public class Animal { + + public Animal() throws InstantiationException { + throw new InstantiationException("Cannot be instantiated"); + } + + public Animal(String id, int age) { + if (id == null) + throw new NullPointerException("Id cannot be null"); + if (age < 0) + throw new IllegalArgumentException("Age cannot be negative"); + } + + public Animal(File file) throws SecurityException, IOException { + // Avoiding Path traversal attacks + if (file.isAbsolute()) { + throw new SecurityException("Traversal attack - absolute path not allowed"); + } + // Avoiding directory traversal + // a/../..b/ + if (!file.getCanonicalPath() + .equals(file.getAbsolutePath())) { + throw new SecurityException("Directory traversal attempt?"); + } + } + +} diff --git a/core-java-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/constructors/exception/Bird.java b/core-java-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/constructors/exception/Bird.java new file mode 100644 index 0000000000..6e6e6558ba --- /dev/null +++ b/core-java-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/constructors/exception/Bird.java @@ -0,0 +1,13 @@ +package com.baeldung.constructors.exception; + +public class Bird extends Animal { + + // Note that we are throwing parent exception + public Bird() throws ReflectiveOperationException { + super(); + } + + public Bird(String id, int age) { + super(id, age); + } +} diff --git a/core-java-modules/core-java-lang-oop-constructors/src/test/java/com/baeldung/constructors/exception/AnimalUnitTest.java b/core-java-modules/core-java-lang-oop-constructors/src/test/java/com/baeldung/constructors/exception/AnimalUnitTest.java new file mode 100644 index 0000000000..8f7ed440f6 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-constructors/src/test/java/com/baeldung/constructors/exception/AnimalUnitTest.java @@ -0,0 +1,47 @@ +package com.baeldung.constructors.exception; + +import java.io.File; + +import org.assertj.core.api.Assertions; +import org.junit.Test; + +public class AnimalUnitTest { + + @Test + public void givenNoArgument_thenFails() { + Assertions.assertThatThrownBy(() -> { + new Animal(); + }) + .isInstanceOf(Exception.class); + } + + @Test + public void givenInvalidArg_thenFails() { + Assertions.assertThatThrownBy(() -> { + new Animal(null, 30); + }) + .isInstanceOf(NullPointerException.class); + } + + @Test(expected = Test.None.class) + public void givenValidArg_thenSuccess() { + new Animal("1234", 30); + } + + @Test + public void givenAbsolutePath_thenFails() { + Assertions.assertThatThrownBy(() -> { + new Animal(new File("temp.txt").getAbsoluteFile()); + }) + .isInstanceOf(SecurityException.class); + } + + @Test + public void givenDirectoryTraversalPath_thenFails() { + Assertions.assertThatThrownBy(() -> { + new Animal(new File(File.separator + ".." + File.separator + "temp.txt")); + }) + .isInstanceOf(SecurityException.class); + } + +} From b9fd869c02184d81ae695e7138935fa7da492bfa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Goossens?= Date: Thu, 15 Jul 2021 23:26:49 +0200 Subject: [PATCH 05/82] Also consider string interpolation The above example only works when logging a string without using string interpolation. For example the following log statement: log.debug("This is a log from {}", "David"). This would result in event.getMessage() returning "This is a log from {}" while you would like to see the processed form "This is a log from David". The getMessage().toString() only returns the former while toString() on the event will return the latter. Furthermore the toString() method is redundant on getMessage() as it already is a string. --- .../test/java/com/baeldung/junit/log/MemoryAppender.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/testing-modules/testing-assertions/src/test/java/com/baeldung/junit/log/MemoryAppender.java b/testing-modules/testing-assertions/src/test/java/com/baeldung/junit/log/MemoryAppender.java index 31c5c69766..95b41e02a5 100644 --- a/testing-modules/testing-assertions/src/test/java/com/baeldung/junit/log/MemoryAppender.java +++ b/testing-modules/testing-assertions/src/test/java/com/baeldung/junit/log/MemoryAppender.java @@ -19,7 +19,7 @@ public class MemoryAppender extends ListAppender { public boolean contains(String string, Level level) { return this.list.stream() - .anyMatch(event -> event.getMessage().toString().contains(string) + .anyMatch(event -> event.toString().contains(string) && event.getLevel().equals(level)); } @@ -30,13 +30,13 @@ public class MemoryAppender extends ListAppender { public List search(String string) { return this.list.stream() - .filter(event -> event.getMessage().toString().contains(string)) + .filter(event -> event.toString().contains(string)) .collect(Collectors.toList()); } public List search(String string, Level level) { return this.list.stream() - .filter(event -> event.getMessage().toString().contains(string) + .filter(event -> event.toString().contains(string) && event.getLevel().equals(level)) .collect(Collectors.toList()); } From a61d1c3efba8dce11aa07e57d2f9ef1fce28ba81 Mon Sep 17 00:00:00 2001 From: Thomas Duxbury Date: Sun, 18 Jul 2021 14:25:34 +0100 Subject: [PATCH 06/82] BAEL-4797: Default Values for Maven Properties --- maven-modules/maven-properties/pom.xml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/maven-modules/maven-properties/pom.xml b/maven-modules/maven-properties/pom.xml index 2cd92da42f..9454664c3f 100644 --- a/maven-modules/maven-properties/pom.xml +++ b/maven-modules/maven-properties/pom.xml @@ -13,12 +13,12 @@ 1.0.0-SNAPSHOT ../.. - + junit junit - 4.13 + ${junit.version} @@ -46,6 +46,7 @@ ${project.name} property-from-pom + 4.13 - \ No newline at end of file + From 93637134e9ac0cc8d84eafd02465779b444d6324 Mon Sep 17 00:00:00 2001 From: Nguyen Nam Thai Date: Sun, 1 Aug 2021 23:56:06 +0700 Subject: [PATCH 07/82] BAEL-4883 Exception handling in Project Reactor --- .../reactor/exception/ExceptionUnitTest.java | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 reactor-core/src/test/java/com/baeldung/reactor/exception/ExceptionUnitTest.java diff --git a/reactor-core/src/test/java/com/baeldung/reactor/exception/ExceptionUnitTest.java b/reactor-core/src/test/java/com/baeldung/reactor/exception/ExceptionUnitTest.java new file mode 100644 index 0000000000..f4da2e325a --- /dev/null +++ b/reactor-core/src/test/java/com/baeldung/reactor/exception/ExceptionUnitTest.java @@ -0,0 +1,89 @@ +package com.baeldung.reactor.exception; + +import org.junit.Test; +import org.reactivestreams.Publisher; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; +import reactor.core.publisher.SynchronousSink; +import reactor.test.StepVerifier; + +import java.util.function.BiConsumer; +import java.util.function.Function; + +public class ExceptionUnitTest { + @Test + public void givenInputStreamWithAnInvalidElement_whenAPipelineOperatorThrowsAnException_thenAnErrorIsSentDownstream() { + Function mapper = input -> { + if (input.matches("\\D")) { + throw new NumberFormatException(); + } else { + return Integer.parseInt(input); + } + }; + + Flux inFlux = Flux.just("1", "1.5", "2"); + Flux outFlux = inFlux.map(mapper); + + StepVerifier.create(outFlux) + .expectNext(1) + .expectError(NumberFormatException.class) + .verify(); + } + + @Test + public void givenInputStreamWithAnInvalidElement_whenTheHandleOperatorCallsSinkErrorMethod_thenAnErrorIsSentDownstream() { + BiConsumer> handler = (input, sink) -> { + if (input.matches("\\D")) { + sink.error(new NumberFormatException()); + } else { + sink.next(Integer.parseInt(input)); + } + }; + + Flux inFlux = Flux.just("1", "1.5", "2"); + Flux outFlux = inFlux.handle(handler); + + StepVerifier.create(outFlux) + .expectNext(1) + .expectError(NumberFormatException.class) + .verify(); + } + + @Test + public void givenInputStreamWithAnInvalidElement_whenTheFlatMapOperatorCallsMonoErrorMethod_thenAnErrorIsSentDownstream() { + Function> mapper = input -> { + if (input.matches("\\D")) { + return Mono.error(new NumberFormatException()); + } else { + return Mono.just(Integer.parseInt(input)); + } + }; + + Flux inFlux = Flux.just("1", "1.5", "2"); + Flux outFlux = inFlux.flatMap(mapper); + + StepVerifier.create(outFlux) + .expectNext(1) + .expectError(NumberFormatException.class) + .verify(); + } + + @Test + public void givenInputStreamWithANullElement_whenAPipelineOperatorIsCalled_thenAnNpeIsSentDownstream() { + Function mapper = input -> { + if (input == null) { + return 0; + } else { + return Integer.parseInt(input); + } + }; + + Flux inFlux = Flux.just("1", null, "2"); + Flux outFlux = inFlux.map(mapper); + + StepVerifier.create(outFlux) + .expectNext(1) + .expectError(NullPointerException.class) + .verify(); + } +} From 0ea4180da14e967f563853fa0bb06324db868459 Mon Sep 17 00:00:00 2001 From: Mladen Savic Date: Mon, 2 Aug 2021 16:19:01 +0200 Subject: [PATCH 08/82] EntityNotFoundException in Hibernate - change in persistence unit (#11092) * JPA Entities and the Serializable Interface * JPA Entities and the Serializable Interface - edit after review * JPA Entities and the Serializable Interface - formatting * JPA Entities and the Serializable Interface - indentation * EntityNotFoundException in Hibernate * EntityNotFoundException in Hibernate - fix persistence unit config to allow multiple test to run in conjunction. --- .../com/baeldung/hibernate/entitynotfoundexception/Item.java | 1 - .../hibernate-jpa/src/main/resources/META-INF/persistence.xml | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/entitynotfoundexception/Item.java b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/entitynotfoundexception/Item.java index ee6f677d7d..3abed00eb8 100644 --- a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/entitynotfoundexception/Item.java +++ b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/entitynotfoundexception/Item.java @@ -15,7 +15,6 @@ public class Item implements Serializable { private String name; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "category_id", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT)) - @NotFound(action = NotFoundAction.IGNORE) private Category category; public long getId() { diff --git a/persistence-modules/hibernate-jpa/src/main/resources/META-INF/persistence.xml b/persistence-modules/hibernate-jpa/src/main/resources/META-INF/persistence.xml index 29cd4faf05..e895ac6ba9 100644 --- a/persistence-modules/hibernate-jpa/src/main/resources/META-INF/persistence.xml +++ b/persistence-modules/hibernate-jpa/src/main/resources/META-INF/persistence.xml @@ -114,7 +114,7 @@ - + @@ -132,7 +132,7 @@ - + From 32dde5b5d1557e926366ae822e1b69de76744d16 Mon Sep 17 00:00:00 2001 From: freelansam <79205526+freelansam@users.noreply.github.com> Date: Tue, 3 Aug 2021 00:27:15 +0530 Subject: [PATCH 09/82] JAVA-6475: Fix formatting of POMs (#11087) * JAVA-6475: Fix formatting of POMs * correct build error --- algorithms-miscellaneous-3/pom.xml | 5 - algorithms-miscellaneous-5/pom.xml | 1 - apache-cxf/cxf-aegis/pom.xml | 2 +- apache-cxf/cxf-introduction/pom.xml | 2 +- apache-cxf/cxf-jaxrs-implementation/pom.xml | 2 +- apache-cxf/cxf-spring/pom.xml | 2 +- apache-cxf/pom.xml | 2 +- apache-cxf/sse-jaxrs/pom.xml | 2 +- apache-cxf/sse-jaxrs/sse-jaxrs-server/pom.xml | 4 +- apache-libraries/pom.xml | 3 +- apache-rocketmq/pom.xml | 1 + apache-spark/pom.xml | 2 +- apache-tapestry/pom.xml | 3 - asciidoctor/pom.xml | 2 +- atomix/pom.xml | 2 +- aws-lambda/pom.xml | 2 +- aws-lambda/todo-reminder/ToDoFunction/pom.xml | 63 +++++----- aws-reactive/pom.xml | 1 + blade/pom.xml | 1 - bootique/pom.xml | 2 - cloud-foundry-uaa/pom.xml | 5 +- core-groovy-2/pom.xml | 2 +- .../core-java-concurrency-2/pom.xml | 2 +- .../core-java-concurrency-advanced-2/pom.xml | 1 - .../core-java-concurrency-advanced/pom.xml | 2 +- .../core-java-concurrency-basic-2/pom.xml | 2 +- .../core-java-concurrency-basic/pom.xml | 2 +- .../pom.xml | 2 +- .../core-java-concurrency-collections/pom.xml | 2 +- .../core-java-date-operations-1/pom.xml | 1 - .../core-java-date-operations-2/pom.xml | 2 +- .../core-java-datetime-conversion/pom.xml | 1 - core-java-modules/core-java-function/pom.xml | 4 +- .../core-java-functional/pom.xml | 2 +- core-java-modules/core-java-io-2/pom.xml | 2 +- core-java-modules/core-java-io-apis/pom.xml | 2 +- .../core-java-io-conversions/pom.xml | 1 + core-java-modules/core-java-io/pom.xml | 3 +- core-java-modules/core-java-jar/pom.xml | 1 + .../consumermodule2/pom.xml | 2 +- core-java-modules/core-java-lang-4/pom.xml | 1 + .../core-java-lang-math-2/pom.xml | 2 +- .../core-java-lang-math-3/pom.xml | 2 +- .../core-java-lang-syntax-2/pom.xml | 2 +- core-java-modules/core-java-lang/pom.xml | 2 +- core-java-modules/core-java-perf/pom.xml | 2 +- .../core-java-reflection-2/pom.xml | 1 + core-java-modules/core-java-regex-2/pom.xml | 2 +- core-java-modules/core-java-streams-4/pom.xml | 1 - core-java-modules/core-java-streams/pom.xml | 1 - .../core-java-string-algorithms-3/pom.xml | 1 - .../core-java-string-conversions-2/pom.xml | 6 +- .../core-java-string-operations-3/pom.xml | 14 +-- core-java-modules/pom.xml | 2 +- ddd/pom.xml | 1 + flyway-cdi-extension/pom.xml | 1 + geotools/pom.xml | 5 +- grpc/pom.xml | 1 + guava-modules/guava-concurrency/pom.xml | 10 +- image-processing/pom.xml | 1 - java-collections-conversions-2/pom.xml | 1 - java-collections-conversions/pom.xml | 2 +- java-collections-maps-3/pom.xml | 1 + java-jdi/pom.xml | 6 +- java-lite/pom.xml | 5 +- jee-7/pom.xml | 4 +- jenkins/plugins/pom.xml | 13 +- json-2/pom.xml | 1 - kubernetes/k8s-admission-controller/pom.xml | 13 +- kubernetes/pom.xml | 9 +- libraries-2/pom.xml | 2 +- libraries-3/pom.xml | 1 + libraries-4/pom.xml | 2 +- libraries-security/pom.xml | 5 +- libraries-server/pom.xml | 7 +- logging-modules/pom.xml | 2 +- lombok-custom/pom.xml | 10 +- maven-modules/maven-builder-plugin/pom.xml | 9 +- .../copy-rename-maven-plugin/pom.xml | 29 +++-- .../maven-antrun-plugin/pom.xml | 32 +++-- .../maven-resources-plugin/pom.xml | 29 +++-- maven-modules/maven-copy-files/pom.xml | 46 ++++--- .../counter-maven-plugin/pom.xml | 4 +- .../maven-custom-plugin/usage-example/pom.xml | 5 +- maven-modules/maven-pom-types/pom.xml | 4 +- maven-modules/maven-printing-plugins/pom.xml | 16 +-- maven-modules/plugin-management/pom.xml | 9 +- .../plugin-management/submodule-1/pom.xml | 2 +- .../plugin-management/submodule-2/pom.xml | 2 +- maven-modules/pom.xml | 6 +- netflix-modules/mantis/pom.xml | 3 +- open-liberty/pom.xml | 1 + parent-boot-1/pom.xml | 2 +- parent-boot-2/pom.xml | 2 +- parent-java/pom.xml | 2 +- patterns/enterprise-patterns/pom.xml | 116 +++++++++--------- patterns/enterprise-patterns/wire-tap/pom.xml | 40 +++--- patterns/hexagonal-architecture/pom.xml | 1 - persistence-modules/hibernate-jpa/pom.xml | 6 +- persistence-modules/hibernate-mapping/pom.xml | 4 +- persistence-modules/hibernate-ogm/pom.xml | 6 +- persistence-modules/hibernate-queries/pom.xml | 6 +- persistence-modules/hibernate5/pom.xml | 6 +- persistence-modules/redis/pom.xml | 1 - .../spring-data-cassandra-reactive/pom.xml | 1 - .../spring-data-cassandra/pom.xml | 1 - persistence-modules/spring-data-jdbc/pom.xml | 5 +- .../spring-data-jpa-enterprise/pom.xml | 1 - .../spring-data-jpa-repo-2/pom.xml | 1 + .../spring-data-keyvalue/pom.xml | 1 + quarkus-extension/quarkus-app/pom.xml | 6 +- quarkus/pom.xml | 6 +- rabbitmq/pom.xml | 6 +- spark-java/pom.xml | 6 +- spf4j/spf4j-aspects-app/pom.xml | 18 +-- spf4j/spf4j-core-app/pom.xml | 26 ++-- spring-5/pom.xml | 10 +- spring-aop/pom.xml | 1 + .../spring-boot-admin-server/pom.xml | 2 +- .../spring-boot-cassandre/pom.xml | 90 +++++++------- .../spring-boot-with-starter-parent/pom.xml | 1 + .../spring-boot-performance/pom.xml | 1 + .../spring-boot-properties-3/pom.xml | 1 + .../spring-boot-runtime-2/pom.xml | 1 + .../spring-boot-validation/pom.xml | 54 ++++---- .../order-service/pom.xml | 2 +- .../spring-cloud-config/client/pom.xml | 1 + .../spring-cloud-config/server/pom.xml | 1 + spring-cloud/spring-cloud-contract/pom.xml | 1 - spring-cloud/spring-cloud-kubernetes/pom.xml | 1 + .../spring-cloud-rest-books-api/pom.xml | 2 +- spring-cloud/spring-cloud-sentinel/pom.xml | 6 +- spring-ejb/ejb-beans/pom.xml | 1 - spring-mobile/pom.xml | 6 +- spring-security-modules/pom.xml | 2 +- .../pom.xml | 2 +- .../spring-security-web-sockets/pom.xml | 6 +- spring-vault/pom.xml | 6 +- .../spring-mvc-forms-jsp/pom.xml | 6 +- .../spring-mvc-forms-thymeleaf/pom.xml | 1 - .../spring-rest-angular/pom.xml | 6 +- testing-modules/testing-libraries-2/pom.xml | 4 +- vertx/pom.xml | 6 +- wildfly/pom.xml | 1 - 144 files changed, 495 insertions(+), 481 deletions(-) diff --git a/algorithms-miscellaneous-3/pom.xml b/algorithms-miscellaneous-3/pom.xml index d5416e543d..19eca8eca7 100644 --- a/algorithms-miscellaneous-3/pom.xml +++ b/algorithms-miscellaneous-3/pom.xml @@ -20,19 +20,16 @@ ${org.assertj.core.version} test - org.apache.commons commons-collections4 ${commons-collections4.version} - com.google.guava guava ${guava.version} - com.squareup.retrofit2 retrofit @@ -43,13 +40,11 @@ converter-jackson ${retrofit.version} - org.apache.commons commons-lang3 ${commons.lang3.version} - pl.pragmatists JUnitParams diff --git a/algorithms-miscellaneous-5/pom.xml b/algorithms-miscellaneous-5/pom.xml index 8b7cfc7b25..1ba535dfbc 100644 --- a/algorithms-miscellaneous-5/pom.xml +++ b/algorithms-miscellaneous-5/pom.xml @@ -39,7 +39,6 @@ junit-platform-commons ${junit.platform.version} - org.assertj assertj-core diff --git a/apache-cxf/cxf-aegis/pom.xml b/apache-cxf/cxf-aegis/pom.xml index 43a6750475..996c6fc0cd 100644 --- a/apache-cxf/cxf-aegis/pom.xml +++ b/apache-cxf/cxf-aegis/pom.xml @@ -20,4 +20,4 @@ - + \ No newline at end of file diff --git a/apache-cxf/cxf-introduction/pom.xml b/apache-cxf/cxf-introduction/pom.xml index d56c7ecd81..12529e55c1 100644 --- a/apache-cxf/cxf-introduction/pom.xml +++ b/apache-cxf/cxf-introduction/pom.xml @@ -37,4 +37,4 @@ - + \ No newline at end of file diff --git a/apache-cxf/cxf-jaxrs-implementation/pom.xml b/apache-cxf/cxf-jaxrs-implementation/pom.xml index 04c94455e4..515f527a5b 100644 --- a/apache-cxf/cxf-jaxrs-implementation/pom.xml +++ b/apache-cxf/cxf-jaxrs-implementation/pom.xml @@ -52,4 +52,4 @@ 4.5.2 - + \ No newline at end of file diff --git a/apache-cxf/cxf-spring/pom.xml b/apache-cxf/cxf-spring/pom.xml index 340b3d486a..772ece81da 100644 --- a/apache-cxf/cxf-spring/pom.xml +++ b/apache-cxf/cxf-spring/pom.xml @@ -107,4 +107,4 @@ 1.6.1 - + \ No newline at end of file diff --git a/apache-cxf/pom.xml b/apache-cxf/pom.xml index 3f08c11db0..6b7e396b9e 100644 --- a/apache-cxf/pom.xml +++ b/apache-cxf/pom.xml @@ -38,4 +38,4 @@ 3.1.8 - + \ No newline at end of file diff --git a/apache-cxf/sse-jaxrs/pom.xml b/apache-cxf/sse-jaxrs/pom.xml index 737fc43dc2..1ac2948439 100644 --- a/apache-cxf/sse-jaxrs/pom.xml +++ b/apache-cxf/sse-jaxrs/pom.xml @@ -18,4 +18,4 @@ sse-jaxrs-client - + \ No newline at end of file diff --git a/apache-cxf/sse-jaxrs/sse-jaxrs-server/pom.xml b/apache-cxf/sse-jaxrs/sse-jaxrs-server/pom.xml index 187f03a431..0467fd9e5d 100644 --- a/apache-cxf/sse-jaxrs/sse-jaxrs-server/pom.xml +++ b/apache-cxf/sse-jaxrs/sse-jaxrs-server/pom.xml @@ -14,7 +14,6 @@ - javax.ws.rs javax.ws.rs-api @@ -33,7 +32,6 @@ ${bind-api.version} provided - @@ -85,4 +83,4 @@ 1.0 - + \ No newline at end of file diff --git a/apache-libraries/pom.xml b/apache-libraries/pom.xml index 856b01daa0..ded10b939f 100644 --- a/apache-libraries/pom.xml +++ b/apache-libraries/pom.xml @@ -183,7 +183,6 @@ - org.apache.meecrowave @@ -216,4 +215,4 @@ 6.4.0 - + \ No newline at end of file diff --git a/apache-rocketmq/pom.xml b/apache-rocketmq/pom.xml index a5f552d6f1..48399b6d51 100644 --- a/apache-rocketmq/pom.xml +++ b/apache-rocketmq/pom.xml @@ -25,4 +25,5 @@ 1.6.0 2.0.4 + \ No newline at end of file diff --git a/apache-spark/pom.xml b/apache-spark/pom.xml index 58b3a90b61..05c5088662 100644 --- a/apache-spark/pom.xml +++ b/apache-spark/pom.xml @@ -91,7 +91,7 @@ - + SparkPackagesRepo https://repos.spark-packages.org diff --git a/apache-tapestry/pom.xml b/apache-tapestry/pom.xml index c7cdc0bf3d..13ae49b0ba 100644 --- a/apache-tapestry/pom.xml +++ b/apache-tapestry/pom.xml @@ -77,7 +77,6 @@ true - org.apache.maven.plugins maven-surefire-plugin @@ -88,7 +87,6 @@ - org.mortbay.jetty @@ -119,7 +117,6 @@ jboss http://repository.jboss.org/nexus/content/groups/public/ - diff --git a/asciidoctor/pom.xml b/asciidoctor/pom.xml index ec998a67b8..e24917f2f4 100644 --- a/asciidoctor/pom.xml +++ b/asciidoctor/pom.xml @@ -68,4 +68,4 @@ 1.5.0-alpha.15 - + \ No newline at end of file diff --git a/atomix/pom.xml b/atomix/pom.xml index 2b9fc9be37..77e554852c 100644 --- a/atomix/pom.xml +++ b/atomix/pom.xml @@ -31,4 +31,4 @@ 1.0.0-rc9 - + \ No newline at end of file diff --git a/aws-lambda/pom.xml b/aws-lambda/pom.xml index 8014a87126..3264356977 100644 --- a/aws-lambda/pom.xml +++ b/aws-lambda/pom.xml @@ -20,4 +20,4 @@ todo-reminder/ToDoFunction - + \ No newline at end of file diff --git a/aws-lambda/todo-reminder/ToDoFunction/pom.xml b/aws-lambda/todo-reminder/ToDoFunction/pom.xml index d40ee51984..832cee841d 100644 --- a/aws-lambda/todo-reminder/ToDoFunction/pom.xml +++ b/aws-lambda/todo-reminder/ToDoFunction/pom.xml @@ -1,4 +1,5 @@ - 4.0.0 helloworld @@ -6,10 +7,6 @@ 1.0 jar ToDoFunction - - 1.8 - 1.8 - @@ -18,9 +15,9 @@ 1.2.1 - com.amazonaws - aws-lambda-java-events - 3.6.0 + com.amazonaws + aws-lambda-java-events + 3.6.0 uk.org.webcompere @@ -58,10 +55,10 @@ 5.0.1 - junit - junit - 4.13.1 - test + junit + junit + 4.13.1 + test uk.org.webcompere @@ -84,22 +81,28 @@ - - - org.apache.maven.plugins - maven-shade-plugin - 3.2.4 - - - - - package - - shade - - - - - + + + org.apache.maven.plugins + maven-shade-plugin + 3.2.4 + + + + + package + + shade + + + + + - + + + 1.8 + 1.8 + + + \ No newline at end of file diff --git a/aws-reactive/pom.xml b/aws-reactive/pom.xml index 9f0144b15c..ea1e0c44a4 100644 --- a/aws-reactive/pom.xml +++ b/aws-reactive/pom.xml @@ -93,4 +93,5 @@ 2.2.1.RELEASE 2.10.27 + \ No newline at end of file diff --git a/blade/pom.xml b/blade/pom.xml index f4bc6d73be..6ab3a594f2 100644 --- a/blade/pom.xml +++ b/blade/pom.xml @@ -83,7 +83,6 @@ - maven-assembly-plugin ${assembly.plugin.version} diff --git a/bootique/pom.xml b/bootique/pom.xml index 5710259632..34fc75a5c0 100644 --- a/bootique/pom.xml +++ b/bootique/pom.xml @@ -48,13 +48,11 @@ - org.apache.maven.plugins maven-shade-plugin ${maven-shade-plugin.version} - diff --git a/cloud-foundry-uaa/pom.xml b/cloud-foundry-uaa/pom.xml index a8a46b921d..03a5b978d4 100644 --- a/cloud-foundry-uaa/pom.xml +++ b/cloud-foundry-uaa/pom.xml @@ -1,6 +1,5 @@ - 4.0.0 @@ -20,4 +19,4 @@ cf-uaa-oauth2-resource-server - + \ No newline at end of file diff --git a/core-groovy-2/pom.xml b/core-groovy-2/pom.xml index 859f9a2667..f8ef654293 100644 --- a/core-groovy-2/pom.xml +++ b/core-groovy-2/pom.xml @@ -173,4 +173,4 @@ 3.3.0-01 - + \ No newline at end of file diff --git a/core-java-modules/core-java-concurrency-2/pom.xml b/core-java-modules/core-java-concurrency-2/pom.xml index 3a29101d0f..71c73f5dff 100644 --- a/core-java-modules/core-java-concurrency-2/pom.xml +++ b/core-java-modules/core-java-concurrency-2/pom.xml @@ -7,7 +7,7 @@ 0.1.0-SNAPSHOT core-java-concurrency-2 jar - + com.baeldung.core-java-modules core-java-modules diff --git a/core-java-modules/core-java-concurrency-advanced-2/pom.xml b/core-java-modules/core-java-concurrency-advanced-2/pom.xml index 0571598684..f975dd41a4 100644 --- a/core-java-modules/core-java-concurrency-advanced-2/pom.xml +++ b/core-java-modules/core-java-concurrency-advanced-2/pom.xml @@ -31,7 +31,6 @@ jmh-generator-annprocess ${jmh-generator.version} - org.assertj assertj-core diff --git a/core-java-modules/core-java-concurrency-advanced/pom.xml b/core-java-modules/core-java-concurrency-advanced/pom.xml index 7dae0b17aa..52a2e67e70 100644 --- a/core-java-modules/core-java-concurrency-advanced/pom.xml +++ b/core-java-modules/core-java-concurrency-advanced/pom.xml @@ -7,7 +7,7 @@ 0.1.0-SNAPSHOT core-java-concurrency-advanced jar - + com.baeldung.core-java-modules core-java-modules diff --git a/core-java-modules/core-java-concurrency-basic-2/pom.xml b/core-java-modules/core-java-concurrency-basic-2/pom.xml index 38c9c26c80..99c8cee0f2 100644 --- a/core-java-modules/core-java-concurrency-basic-2/pom.xml +++ b/core-java-modules/core-java-concurrency-basic-2/pom.xml @@ -7,7 +7,7 @@ 0.1.0-SNAPSHOT core-java-concurrency-basic-2 jar - + com.baeldung.core-java-modules core-java-modules diff --git a/core-java-modules/core-java-concurrency-basic/pom.xml b/core-java-modules/core-java-concurrency-basic/pom.xml index 3f69d1a73b..5df379efb2 100644 --- a/core-java-modules/core-java-concurrency-basic/pom.xml +++ b/core-java-modules/core-java-concurrency-basic/pom.xml @@ -7,7 +7,7 @@ 0.1.0-SNAPSHOT core-java-concurrency-basic jar - + com.baeldung.core-java-modules core-java-modules diff --git a/core-java-modules/core-java-concurrency-collections-2/pom.xml b/core-java-modules/core-java-concurrency-collections-2/pom.xml index 020586e892..0a31c64728 100644 --- a/core-java-modules/core-java-concurrency-collections-2/pom.xml +++ b/core-java-modules/core-java-concurrency-collections-2/pom.xml @@ -6,7 +6,7 @@ 0.1.0-SNAPSHOT core-java-concurrency-collections-2 jar - + com.baeldung.core-java-modules core-java-modules diff --git a/core-java-modules/core-java-concurrency-collections/pom.xml b/core-java-modules/core-java-concurrency-collections/pom.xml index 8a7fc58bfd..edb5a71e39 100644 --- a/core-java-modules/core-java-concurrency-collections/pom.xml +++ b/core-java-modules/core-java-concurrency-collections/pom.xml @@ -7,7 +7,7 @@ 0.1.0-SNAPSHOT core-java-concurrency-collections jar - + com.baeldung.core-java-modules core-java-modules diff --git a/core-java-modules/core-java-date-operations-1/pom.xml b/core-java-modules/core-java-date-operations-1/pom.xml index ded6f062cf..955cd910e9 100644 --- a/core-java-modules/core-java-date-operations-1/pom.xml +++ b/core-java-modules/core-java-date-operations-1/pom.xml @@ -49,7 +49,6 @@ true - org.apache.maven.plugins diff --git a/core-java-modules/core-java-date-operations-2/pom.xml b/core-java-modules/core-java-date-operations-2/pom.xml index 5766f39739..bb0435a92a 100644 --- a/core-java-modules/core-java-date-operations-2/pom.xml +++ b/core-java-modules/core-java-date-operations-2/pom.xml @@ -7,7 +7,7 @@ ${project.parent.version} core-java-date-operations-2 jar - + com.baeldung.core-java-modules core-java-modules diff --git a/core-java-modules/core-java-datetime-conversion/pom.xml b/core-java-modules/core-java-datetime-conversion/pom.xml index b494b307d0..8f082e2793 100644 --- a/core-java-modules/core-java-datetime-conversion/pom.xml +++ b/core-java-modules/core-java-datetime-conversion/pom.xml @@ -48,7 +48,6 @@ true - org.apache.maven.plugins diff --git a/core-java-modules/core-java-function/pom.xml b/core-java-modules/core-java-function/pom.xml index 5db73d8796..1cdcfe47db 100644 --- a/core-java-modules/core-java-function/pom.xml +++ b/core-java-modules/core-java-function/pom.xml @@ -7,7 +7,7 @@ 0.1.0-SNAPSHOT core-java-function jar - + com.baeldung.core-java-modules core-java-modules @@ -40,4 +40,4 @@ 3.6.1 - + \ No newline at end of file diff --git a/core-java-modules/core-java-functional/pom.xml b/core-java-modules/core-java-functional/pom.xml index 87a08e1e3f..3eeec71a5a 100644 --- a/core-java-modules/core-java-functional/pom.xml +++ b/core-java-modules/core-java-functional/pom.xml @@ -7,7 +7,7 @@ 0.1.0-SNAPSHOT core-java-functional jar - + com.baeldung.core-java-modules core-java-modules diff --git a/core-java-modules/core-java-io-2/pom.xml b/core-java-modules/core-java-io-2/pom.xml index a4168a8f1f..19f34d6da1 100644 --- a/core-java-modules/core-java-io-2/pom.xml +++ b/core-java-modules/core-java-io-2/pom.xml @@ -7,7 +7,7 @@ 0.1.0-SNAPSHOT core-java-io-2 jar - + com.baeldung.core-java-modules core-java-modules diff --git a/core-java-modules/core-java-io-apis/pom.xml b/core-java-modules/core-java-io-apis/pom.xml index 0984296ea1..9d0f3196ab 100644 --- a/core-java-modules/core-java-io-apis/pom.xml +++ b/core-java-modules/core-java-io-apis/pom.xml @@ -7,7 +7,7 @@ 0.1.0-SNAPSHOT core-java-io-apis jar - + com.baeldung.core-java-modules core-java-modules diff --git a/core-java-modules/core-java-io-conversions/pom.xml b/core-java-modules/core-java-io-conversions/pom.xml index 14320f46b9..2dd21a80e8 100644 --- a/core-java-modules/core-java-io-conversions/pom.xml +++ b/core-java-modules/core-java-io-conversions/pom.xml @@ -7,6 +7,7 @@ 0.1.0-SNAPSHOT core-java-io-conversions jar + com.baeldung.core-java-modules core-java-modules diff --git a/core-java-modules/core-java-io/pom.xml b/core-java-modules/core-java-io/pom.xml index 67495f84f9..0cf6d6767e 100644 --- a/core-java-modules/core-java-io/pom.xml +++ b/core-java-modules/core-java-io/pom.xml @@ -7,7 +7,7 @@ 0.1.0-SNAPSHOT core-java-io jar - + com.baeldung.core-java-modules core-java-modules @@ -97,6 +97,7 @@ + integration diff --git a/core-java-modules/core-java-jar/pom.xml b/core-java-modules/core-java-jar/pom.xml index 4e4a7ee465..b638f81b0c 100644 --- a/core-java-modules/core-java-jar/pom.xml +++ b/core-java-modules/core-java-jar/pom.xml @@ -7,6 +7,7 @@ 0.1.0-SNAPSHOT core-java-jar jar + com.baeldung.core-java-modules core-java-modules diff --git a/core-java-modules/core-java-jpms/decoupling-pattern2/consumermodule2/pom.xml b/core-java-modules/core-java-jpms/decoupling-pattern2/consumermodule2/pom.xml index 774319a067..13d0b2d201 100644 --- a/core-java-modules/core-java-jpms/decoupling-pattern2/consumermodule2/pom.xml +++ b/core-java-modules/core-java-jpms/decoupling-pattern2/consumermodule2/pom.xml @@ -45,4 +45,4 @@ 1.0 - + \ No newline at end of file diff --git a/core-java-modules/core-java-lang-4/pom.xml b/core-java-modules/core-java-lang-4/pom.xml index 46ad335568..824194cc07 100644 --- a/core-java-modules/core-java-lang-4/pom.xml +++ b/core-java-modules/core-java-lang-4/pom.xml @@ -48,4 +48,5 @@ + \ No newline at end of file diff --git a/core-java-modules/core-java-lang-math-2/pom.xml b/core-java-modules/core-java-lang-math-2/pom.xml index 098d77b59a..c825ecdef8 100644 --- a/core-java-modules/core-java-lang-math-2/pom.xml +++ b/core-java-modules/core-java-lang-math-2/pom.xml @@ -6,7 +6,7 @@ core-java-lang-math-2 0.0.1-SNAPSHOT core-java-lang-math-2 - + com.baeldung.core-java-modules core-java-modules diff --git a/core-java-modules/core-java-lang-math-3/pom.xml b/core-java-modules/core-java-lang-math-3/pom.xml index 6779d0ecc6..e1a650a18f 100644 --- a/core-java-modules/core-java-lang-math-3/pom.xml +++ b/core-java-modules/core-java-lang-math-3/pom.xml @@ -27,4 +27,4 @@ - + \ No newline at end of file diff --git a/core-java-modules/core-java-lang-syntax-2/pom.xml b/core-java-modules/core-java-lang-syntax-2/pom.xml index b725089351..9ca06e8fba 100644 --- a/core-java-modules/core-java-lang-syntax-2/pom.xml +++ b/core-java-modules/core-java-lang-syntax-2/pom.xml @@ -25,4 +25,4 @@ - + \ No newline at end of file diff --git a/core-java-modules/core-java-lang/pom.xml b/core-java-modules/core-java-lang/pom.xml index 2a1a7a05b8..6a14cab242 100644 --- a/core-java-modules/core-java-lang/pom.xml +++ b/core-java-modules/core-java-lang/pom.xml @@ -25,4 +25,4 @@ - + \ No newline at end of file diff --git a/core-java-modules/core-java-perf/pom.xml b/core-java-modules/core-java-perf/pom.xml index bc82e92e34..636de00d8f 100644 --- a/core-java-modules/core-java-perf/pom.xml +++ b/core-java-modules/core-java-perf/pom.xml @@ -15,4 +15,4 @@ ../ - + \ No newline at end of file diff --git a/core-java-modules/core-java-reflection-2/pom.xml b/core-java-modules/core-java-reflection-2/pom.xml index 347f986275..5b04b8e8db 100644 --- a/core-java-modules/core-java-reflection-2/pom.xml +++ b/core-java-modules/core-java-reflection-2/pom.xml @@ -62,4 +62,5 @@ 1.8 5.3.4 + \ No newline at end of file diff --git a/core-java-modules/core-java-regex-2/pom.xml b/core-java-modules/core-java-regex-2/pom.xml index 45e19ba5a5..9e081c2228 100644 --- a/core-java-modules/core-java-regex-2/pom.xml +++ b/core-java-modules/core-java-regex-2/pom.xml @@ -28,4 +28,4 @@ 3.15.0 - + \ No newline at end of file diff --git a/core-java-modules/core-java-streams-4/pom.xml b/core-java-modules/core-java-streams-4/pom.xml index a29fdb05a0..8cb3786776 100644 --- a/core-java-modules/core-java-streams-4/pom.xml +++ b/core-java-modules/core-java-streams-4/pom.xml @@ -38,7 +38,6 @@ true - org.apache.maven.plugins diff --git a/core-java-modules/core-java-streams/pom.xml b/core-java-modules/core-java-streams/pom.xml index f02ba1c69a..3d5de7cebe 100644 --- a/core-java-modules/core-java-streams/pom.xml +++ b/core-java-modules/core-java-streams/pom.xml @@ -91,7 +91,6 @@ true - org.apache.maven.plugins diff --git a/core-java-modules/core-java-string-algorithms-3/pom.xml b/core-java-modules/core-java-string-algorithms-3/pom.xml index 1048b796bc..c8243258c1 100644 --- a/core-java-modules/core-java-string-algorithms-3/pom.xml +++ b/core-java-modules/core-java-string-algorithms-3/pom.xml @@ -27,7 +27,6 @@ guava ${guava.version} - org.junit.jupiter junit-jupiter diff --git a/core-java-modules/core-java-string-conversions-2/pom.xml b/core-java-modules/core-java-string-conversions-2/pom.xml index 584c808f56..700b4394c6 100644 --- a/core-java-modules/core-java-string-conversions-2/pom.xml +++ b/core-java-modules/core-java-string-conversions-2/pom.xml @@ -33,33 +33,29 @@ ${hamcrest.version} test - com.ibm.icu icu4j ${icu.version} - org.apache.commons commons-lang3 ${commons-lang3.version} - org.apache.commons commons-text ${commons-text.version} - org.assertj assertj-core ${assertj.version} test - + 64.2 3.12.2 diff --git a/core-java-modules/core-java-string-operations-3/pom.xml b/core-java-modules/core-java-string-operations-3/pom.xml index 00b37d2899..b73851f90c 100644 --- a/core-java-modules/core-java-string-operations-3/pom.xml +++ b/core-java-modules/core-java-string-operations-3/pom.xml @@ -5,7 +5,6 @@ 4.0.0 core-java-string-operations-3 0.1.0-SNAPSHOT - core-java-string-operations-3 jar @@ -58,6 +57,13 @@ + + + gradle-repo + https://repo.gradle.org/gradle/libs-releases-local/ + + + 11 11 @@ -68,10 +74,4 @@ 3.1.0 - - - gradle-repo - https://repo.gradle.org/gradle/libs-releases-local/ - - \ No newline at end of file diff --git a/core-java-modules/pom.xml b/core-java-modules/pom.xml index f727695036..13dd20b5da 100644 --- a/core-java-modules/pom.xml +++ b/core-java-modules/pom.xml @@ -137,4 +137,4 @@ 2.22.2 5.6.2 - + \ No newline at end of file diff --git a/ddd/pom.xml b/ddd/pom.xml index 77cf1f5341..cc5a173e85 100644 --- a/ddd/pom.xml +++ b/ddd/pom.xml @@ -101,4 +101,5 @@ 1.0.1 + \ No newline at end of file diff --git a/flyway-cdi-extension/pom.xml b/flyway-cdi-extension/pom.xml index 757d1e0a7f..dbd21374e2 100644 --- a/flyway-cdi-extension/pom.xml +++ b/flyway-cdi-extension/pom.xml @@ -56,4 +56,5 @@ 8.5.33 1.3.2 + \ No newline at end of file diff --git a/geotools/pom.xml b/geotools/pom.xml index 9abd479ebe..b9a6a7c91f 100644 --- a/geotools/pom.xml +++ b/geotools/pom.xml @@ -1,6 +1,5 @@ - 4.0.0 @@ -48,4 +47,4 @@ 15.2 - + \ No newline at end of file diff --git a/grpc/pom.xml b/grpc/pom.xml index c3e4996c29..915777f3bd 100644 --- a/grpc/pom.xml +++ b/grpc/pom.xml @@ -77,4 +77,5 @@ 1.6.1 0.6.1 + \ No newline at end of file diff --git a/guava-modules/guava-concurrency/pom.xml b/guava-modules/guava-concurrency/pom.xml index ef7f756596..a9ff19e6bd 100644 --- a/guava-modules/guava-concurrency/pom.xml +++ b/guava-modules/guava-concurrency/pom.xml @@ -1,14 +1,14 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + guava-concurrency + guava-modules com.baeldung 0.0.1-SNAPSHOT - 4.0.0 - - guava-concurrency \ No newline at end of file diff --git a/image-processing/pom.xml b/image-processing/pom.xml index b482aa30c1..3780ecfd33 100644 --- a/image-processing/pom.xml +++ b/image-processing/pom.xml @@ -92,7 +92,6 @@ webcam-capture ${webcam-capture.version} - diff --git a/java-collections-conversions-2/pom.xml b/java-collections-conversions-2/pom.xml index 74f955ebdd..a81b245b33 100644 --- a/java-collections-conversions-2/pom.xml +++ b/java-collections-conversions-2/pom.xml @@ -49,7 +49,6 @@ vavr 0.10.3 - diff --git a/java-collections-conversions/pom.xml b/java-collections-conversions/pom.xml index 92fc66b480..e76181c9af 100644 --- a/java-collections-conversions/pom.xml +++ b/java-collections-conversions/pom.xml @@ -41,5 +41,5 @@ 4.1 - + \ No newline at end of file diff --git a/java-collections-maps-3/pom.xml b/java-collections-maps-3/pom.xml index 37a0f617d0..0cdf24e31b 100644 --- a/java-collections-maps-3/pom.xml +++ b/java-collections-maps-3/pom.xml @@ -40,4 +40,5 @@ 3.6.1 5.2.5.RELEASE + \ No newline at end of file diff --git a/java-jdi/pom.xml b/java-jdi/pom.xml index 978ede604b..a8716de4ee 100644 --- a/java-jdi/pom.xml +++ b/java-jdi/pom.xml @@ -1,7 +1,7 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 java-jdi 0.1.0-SNAPSHOT @@ -39,4 +39,4 @@ 1.8 - + \ No newline at end of file diff --git a/java-lite/pom.xml b/java-lite/pom.xml index 7ff50a8fd3..c422e9a421 100644 --- a/java-lite/pom.xml +++ b/java-lite/pom.xml @@ -1,6 +1,7 @@ - + 4.0.0 org.baeldung java-lite diff --git a/jee-7/pom.xml b/jee-7/pom.xml index 2030a769b0..eb23a3e150 100644 --- a/jee-7/pom.xml +++ b/jee-7/pom.xml @@ -203,7 +203,7 @@ - org.eclipse.m2e @@ -518,4 +518,4 @@ 2.22.1 - + \ No newline at end of file diff --git a/jenkins/plugins/pom.xml b/jenkins/plugins/pom.xml index c4caf5567f..3662d59980 100644 --- a/jenkins/plugins/pom.xml +++ b/jenkins/plugins/pom.xml @@ -1,6 +1,7 @@ - + 4.0.0 plugins 1.0-SNAPSHOT @@ -12,7 +13,7 @@ org.jenkins-ci.plugins plugin 2.33 - + @@ -80,9 +81,9 @@ - + 2.7.3 - 1.7 2.12 2.39 @@ -93,4 +94,4 @@ 2.14 - + \ No newline at end of file diff --git a/json-2/pom.xml b/json-2/pom.xml index 26eab8fb4c..733fbc6668 100644 --- a/json-2/pom.xml +++ b/json-2/pom.xml @@ -51,7 +51,6 @@ commons-lang3 ${commons-lang3.version} - com.fasterxml.jackson.core jackson-annotations diff --git a/kubernetes/k8s-admission-controller/pom.xml b/kubernetes/k8s-admission-controller/pom.xml index fbee9ceba6..18bf98a830 100644 --- a/kubernetes/k8s-admission-controller/pom.xml +++ b/kubernetes/k8s-admission-controller/pom.xml @@ -3,6 +3,9 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 + k8s-admission-controller + k8s-admission-controller + Demo project for Spring Boot com.baeldung @@ -11,16 +14,11 @@ ./../../parent-boot-2 - k8s-admission-controller - k8s-admission-controller - Demo project for Spring Boot - org.springframework.boot spring-boot-starter-webflux - org.projectlombok lombok @@ -31,13 +29,11 @@ spring-boot-starter-test test - io.projectreactor reactor-test test - org.springframework.boot spring-boot-starter-actuator @@ -54,7 +50,6 @@ - @@ -83,4 +78,4 @@ - + \ No newline at end of file diff --git a/kubernetes/pom.xml b/kubernetes/pom.xml index 57ae4fd596..2927d449d8 100644 --- a/kubernetes/pom.xml +++ b/kubernetes/pom.xml @@ -1,5 +1,7 @@ - + 4.0.0 kubernetes pom @@ -12,6 +14,7 @@ k8s-intro - k8s-admission-controller - + k8s-admission-controller + + \ No newline at end of file diff --git a/libraries-2/pom.xml b/libraries-2/pom.xml index 778f3246b8..104d3cbabc 100644 --- a/libraries-2/pom.xml +++ b/libraries-2/pom.xml @@ -135,4 +135,4 @@ 2.5.0 - + \ No newline at end of file diff --git a/libraries-3/pom.xml b/libraries-3/pom.xml index 079628ffaa..0ff89b046f 100644 --- a/libraries-3/pom.xml +++ b/libraries-3/pom.xml @@ -230,4 +230,5 @@ 2.8 2.1.3 + \ No newline at end of file diff --git a/libraries-4/pom.xml b/libraries-4/pom.xml index 212c733e59..b16d1f216f 100644 --- a/libraries-4/pom.xml +++ b/libraries-4/pom.xml @@ -126,4 +126,4 @@ 1.2.0 - + \ No newline at end of file diff --git a/libraries-security/pom.xml b/libraries-security/pom.xml index 6ee6b7c358..0031b7bc06 100644 --- a/libraries-security/pom.xml +++ b/libraries-security/pom.xml @@ -1,6 +1,7 @@ - + 4.0.0 libraries-security libraries-security diff --git a/libraries-server/pom.xml b/libraries-server/pom.xml index e36ed88f8f..b283164daa 100644 --- a/libraries-server/pom.xml +++ b/libraries-server/pom.xml @@ -1,6 +1,7 @@ - + 4.0.0 libraries-server 0.0.1-SNAPSHOT @@ -99,7 +100,7 @@ ${nanohttpd.version} - + 3.6.2 4.5.3 diff --git a/logging-modules/pom.xml b/logging-modules/pom.xml index 6d036d5648..d7b820040a 100644 --- a/logging-modules/pom.xml +++ b/logging-modules/pom.xml @@ -26,4 +26,4 @@ 5.6.2 - + \ No newline at end of file diff --git a/lombok-custom/pom.xml b/lombok-custom/pom.xml index 220367bfe9..dc7f0dfec6 100644 --- a/lombok-custom/pom.xml +++ b/lombok-custom/pom.xml @@ -1,11 +1,11 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 lombok-custom - lombok-custom 0.1-SNAPSHOT + lombok-custom com.baeldung @@ -20,13 +20,11 @@ ${lombok.version} provided - org.kohsuke.metainf-services metainf-services ${metainf-services.version} - org.eclipse.jdt core @@ -62,4 +60,4 @@ 3.3.0-v_771 - + \ No newline at end of file diff --git a/maven-modules/maven-builder-plugin/pom.xml b/maven-modules/maven-builder-plugin/pom.xml index 0eaa858db7..2fedee06cc 100644 --- a/maven-modules/maven-builder-plugin/pom.xml +++ b/maven-modules/maven-builder-plugin/pom.xml @@ -1,9 +1,8 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - org.example maven-builder-plugin 1.0-SNAPSHOT @@ -14,7 +13,6 @@ UTF-8 - @@ -38,4 +36,5 @@ - + + \ No newline at end of file diff --git a/maven-modules/maven-copy-files/copy-rename-maven-plugin/pom.xml b/maven-modules/maven-copy-files/copy-rename-maven-plugin/pom.xml index 24a7c48499..e2f0d57e3a 100644 --- a/maven-modules/maven-copy-files/copy-rename-maven-plugin/pom.xml +++ b/maven-modules/maven-copy-files/copy-rename-maven-plugin/pom.xml @@ -1,20 +1,19 @@ - + 4.0.0 + org.baeldung + copy-rename-maven-plugin + 1.0-SNAPSHOT + copy-rename-maven-plugin + maven-copy-files com.baeldung 1.0-SNAPSHOT - org.baeldung - copy-rename-maven-plugin - 1.0-SNAPSHOT - copy-rename-maven-plugin - - UTF-8 - 1.7 - 1.7 - + junit @@ -23,6 +22,7 @@ test + @@ -89,4 +89,11 @@ - + + + UTF-8 + 1.7 + 1.7 + + + \ No newline at end of file diff --git a/maven-modules/maven-copy-files/maven-antrun-plugin/pom.xml b/maven-modules/maven-copy-files/maven-antrun-plugin/pom.xml index 61017dd18a..97e714d9ff 100644 --- a/maven-modules/maven-copy-files/maven-antrun-plugin/pom.xml +++ b/maven-modules/maven-copy-files/maven-antrun-plugin/pom.xml @@ -1,20 +1,19 @@ - + 4.0.0 + org.baeldung + maven-antrun-plugin + 1.0-SNAPSHOT + maven-antrun-plugin + maven-copy-files com.baeldung 1.0-SNAPSHOT - org.baeldung - maven-antrun-plugin - 1.0-SNAPSHOT - maven-antrun-plugin - - UTF-8 - 1.7 - 1.7 - + junit @@ -23,6 +22,7 @@ test + @@ -35,7 +35,8 @@ - + @@ -91,4 +92,11 @@ - + + + UTF-8 + 1.7 + 1.7 + + + \ No newline at end of file diff --git a/maven-modules/maven-copy-files/maven-resources-plugin/pom.xml b/maven-modules/maven-copy-files/maven-resources-plugin/pom.xml index be151ae608..eed40565da 100644 --- a/maven-modules/maven-copy-files/maven-resources-plugin/pom.xml +++ b/maven-modules/maven-copy-files/maven-resources-plugin/pom.xml @@ -1,20 +1,19 @@ - + 4.0.0 + org.baeldung + maven-resources-plugin + 1.0-SNAPSHOT + maven-resoures-plugin + maven-copy-files com.baeldung 1.0-SNAPSHOT - org.baeldung - maven-resources-plugin - 1.0-SNAPSHOT - maven-resources-plugin - - UTF-8 - 1.7 - 1.7 - + junit @@ -23,6 +22,7 @@ test + @@ -89,4 +89,11 @@ - + + + UTF-8 + 1.7 + 1.7 + + + \ No newline at end of file diff --git a/maven-modules/maven-copy-files/pom.xml b/maven-modules/maven-copy-files/pom.xml index b7b67286bc..d2208d68eb 100644 --- a/maven-modules/maven-copy-files/pom.xml +++ b/maven-modules/maven-copy-files/pom.xml @@ -1,23 +1,28 @@ - + 4.0.0 + com.baeldung + maven-copy-files + 1.0-SNAPSHOT + maven-copy-files + pom + + http://www.example.com + maven-modules com.baeldung 0.0.1-SNAPSHOT - com.baeldung - maven-copy-files - 1.0-SNAPSHOT - pom - maven-copy-files - - http://www.example.com - - UTF-8 - 1.7 - 1.7 - + + + maven-resources-plugin + maven-antrun-plugin + copy-rename-maven-plugin + + junit @@ -26,6 +31,7 @@ test + @@ -72,9 +78,11 @@ - - maven-resources-plugin - maven-antrun-plugin - copy-rename-maven-plugin - - + + + UTF-8 + 1.7 + 1.7 + + + \ No newline at end of file diff --git a/maven-modules/maven-custom-plugin/counter-maven-plugin/pom.xml b/maven-modules/maven-custom-plugin/counter-maven-plugin/pom.xml index 369f771401..9648464102 100644 --- a/maven-modules/maven-custom-plugin/counter-maven-plugin/pom.xml +++ b/maven-modules/maven-custom-plugin/counter-maven-plugin/pom.xml @@ -1,7 +1,7 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 com.baeldung counter-maven-plugin diff --git a/maven-modules/maven-custom-plugin/usage-example/pom.xml b/maven-modules/maven-custom-plugin/usage-example/pom.xml index f512fc104d..bf5a69146b 100644 --- a/maven-modules/maven-custom-plugin/usage-example/pom.xml +++ b/maven-modules/maven-custom-plugin/usage-example/pom.xml @@ -1,6 +1,5 @@ - 4.0.0 @@ -48,4 +47,4 @@ 4.12 - + \ No newline at end of file diff --git a/maven-modules/maven-pom-types/pom.xml b/maven-modules/maven-pom-types/pom.xml index 98fbc828a0..8b174ea08e 100644 --- a/maven-modules/maven-pom-types/pom.xml +++ b/maven-modules/maven-pom-types/pom.xml @@ -1,7 +1,7 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 com.baeldung maven-pom-types diff --git a/maven-modules/maven-printing-plugins/pom.xml b/maven-modules/maven-printing-plugins/pom.xml index 805c3c1633..b68c88dbee 100644 --- a/maven-modules/maven-printing-plugins/pom.xml +++ b/maven-modules/maven-printing-plugins/pom.xml @@ -1,7 +1,7 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 maven-printing-plugins maven-printing-plugins @@ -27,11 +27,12 @@ - - - + + + + message="Save to file!" /> @@ -84,4 +85,5 @@ - + + \ No newline at end of file diff --git a/maven-modules/plugin-management/pom.xml b/maven-modules/plugin-management/pom.xml index 4a999a1aae..cd75e5dbd0 100644 --- a/maven-modules/plugin-management/pom.xml +++ b/maven-modules/plugin-management/pom.xml @@ -1,16 +1,17 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 + plugin-management 0.0.1-SNAPSHOT + pom + maven-modules com.baeldung 0.0.1-SNAPSHOT - plugin-management - pom submodule-1 diff --git a/maven-modules/plugin-management/submodule-1/pom.xml b/maven-modules/plugin-management/submodule-1/pom.xml index 915e4dfe60..c36e092254 100644 --- a/maven-modules/plugin-management/submodule-1/pom.xml +++ b/maven-modules/plugin-management/submodule-1/pom.xml @@ -20,4 +20,4 @@ - + \ No newline at end of file diff --git a/maven-modules/plugin-management/submodule-2/pom.xml b/maven-modules/plugin-management/submodule-2/pom.xml index 327bdcebb1..e50d3cc26d 100644 --- a/maven-modules/plugin-management/submodule-2/pom.xml +++ b/maven-modules/plugin-management/submodule-2/pom.xml @@ -11,4 +11,4 @@ 0.0.1-SNAPSHOT - + \ No newline at end of file diff --git a/maven-modules/pom.xml b/maven-modules/pom.xml index 9fc201f46d..5b4b567ae6 100644 --- a/maven-modules/pom.xml +++ b/maven-modules/pom.xml @@ -16,7 +16,7 @@ - maven-copy-files + maven-copy-files maven-custom-plugin maven-exec-plugin maven-integration-test @@ -32,9 +32,9 @@ version-overriding-plugins versions-maven-plugin maven-printing-plugins - maven-builder-plugin + maven-builder-plugin host-maven-repo-example plugin-management - + \ No newline at end of file diff --git a/netflix-modules/mantis/pom.xml b/netflix-modules/mantis/pom.xml index 1f8b377b94..0bab944b8a 100644 --- a/netflix-modules/mantis/pom.xml +++ b/netflix-modules/mantis/pom.xml @@ -55,9 +55,10 @@ test + - jcenter + jcenter https://jcenter.bintray.com/ diff --git a/open-liberty/pom.xml b/open-liberty/pom.xml index aff951cfd8..268b65c07e 100644 --- a/open-liberty/pom.xml +++ b/open-liberty/pom.xml @@ -111,4 +111,5 @@ 9443 7070 + \ No newline at end of file diff --git a/parent-boot-1/pom.xml b/parent-boot-1/pom.xml index 96f4b1cbe3..7029d96a7e 100644 --- a/parent-boot-1/pom.xml +++ b/parent-boot-1/pom.xml @@ -60,4 +60,4 @@ 1.5.22.RELEASE - + \ No newline at end of file diff --git a/parent-boot-2/pom.xml b/parent-boot-2/pom.xml index fcc4175369..accbc2df96 100644 --- a/parent-boot-2/pom.xml +++ b/parent-boot-2/pom.xml @@ -87,4 +87,4 @@ 3.4.0 - + \ No newline at end of file diff --git a/parent-java/pom.xml b/parent-java/pom.xml index c1abe79b2e..09d7f4c96d 100644 --- a/parent-java/pom.xml +++ b/parent-java/pom.xml @@ -46,4 +46,4 @@ 2.2 - + \ No newline at end of file diff --git a/patterns/enterprise-patterns/pom.xml b/patterns/enterprise-patterns/pom.xml index 21803e728e..5b952b9743 100644 --- a/patterns/enterprise-patterns/pom.xml +++ b/patterns/enterprise-patterns/pom.xml @@ -1,67 +1,67 @@ - 4.0.0 - - com.baeldung - patterns - 1.0.0-SNAPSHOT - + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + enterprise-patterns + pom - enterprise-patterns - pom + + com.baeldung + patterns + 1.0.0-SNAPSHOT + - - 3.7.4 - + + wire-tap + - - wire-tap - + + + org.apache.camel.springboot + camel-spring-boot-starter + + + org.apache.camel.springboot + camel-activemq-starter + + + + org.springframework.boot + spring-boot-starter-test + 2.2.2.RELEASE + test + + + org.apache.camel + camel-test-spring-junit5 + test + + - - - org.apache.camel.springboot - camel-spring-boot-starter - - - org.apache.camel.springboot - camel-activemq-starter - + + + + org.apache.camel.springboot + camel-spring-boot-dependencies + ${camel.version} + pom + import + + + - - - org.springframework.boot - spring-boot-starter-test - 2.2.2.RELEASE - test - - - org.apache.camel - camel-test-spring-junit5 - test - - + + + + org.springframework.boot + spring-boot-maven-plugin + + + - - - - org.apache.camel.springboot - camel-spring-boot-dependencies - ${camel.version} - pom - import - - - + + 3.7.4 + - - - - org.springframework.boot - spring-boot-maven-plugin - - - - + \ No newline at end of file diff --git a/patterns/enterprise-patterns/wire-tap/pom.xml b/patterns/enterprise-patterns/wire-tap/pom.xml index 1b1aa746d5..e7959e17f0 100644 --- a/patterns/enterprise-patterns/wire-tap/pom.xml +++ b/patterns/enterprise-patterns/wire-tap/pom.xml @@ -1,25 +1,25 @@ - 4.0.0 - wire-tap - 1.0 - jar + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + wire-tap + 1.0 + jar - - enterprise-patterns - com.baeldung - 1.0.0-SNAPSHOT - + + enterprise-patterns + com.baeldung + 1.0.0-SNAPSHOT + - - - - org.springframework.boot - spring-boot-maven-plugin - - - + + + + org.springframework.boot + spring-boot-maven-plugin + + + - + \ No newline at end of file diff --git a/patterns/hexagonal-architecture/pom.xml b/patterns/hexagonal-architecture/pom.xml index f8d4524514..9dfc113d03 100644 --- a/patterns/hexagonal-architecture/pom.xml +++ b/patterns/hexagonal-architecture/pom.xml @@ -21,7 +21,6 @@ org.springframework.boot spring-boot-starter-web - org.springframework.boot spring-boot-starter-data-mongodb diff --git a/persistence-modules/hibernate-jpa/pom.xml b/persistence-modules/hibernate-jpa/pom.xml index 11540b6d23..85bfdac07f 100644 --- a/persistence-modules/hibernate-jpa/pom.xml +++ b/persistence-modules/hibernate-jpa/pom.xml @@ -1,7 +1,7 @@ - + 4.0.0 hibernate-jpa 0.0.1-SNAPSHOT diff --git a/persistence-modules/hibernate-mapping/pom.xml b/persistence-modules/hibernate-mapping/pom.xml index 4f76c16a3f..805402951e 100644 --- a/persistence-modules/hibernate-mapping/pom.xml +++ b/persistence-modules/hibernate-mapping/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:xsi="http://www.w3.org/2001/XMLSchema-instance"> 4.0.0 hibernate-mapping hibernate-mapping diff --git a/persistence-modules/hibernate-ogm/pom.xml b/persistence-modules/hibernate-ogm/pom.xml index 58098ebb65..9274186cd1 100644 --- a/persistence-modules/hibernate-ogm/pom.xml +++ b/persistence-modules/hibernate-ogm/pom.xml @@ -1,7 +1,7 @@ - + 4.0.0 hibernate-ogm 0.0.1-SNAPSHOT diff --git a/persistence-modules/hibernate-queries/pom.xml b/persistence-modules/hibernate-queries/pom.xml index 4a8c578aba..83b2ea4d00 100644 --- a/persistence-modules/hibernate-queries/pom.xml +++ b/persistence-modules/hibernate-queries/pom.xml @@ -1,7 +1,7 @@ - + 4.0.0 hibernate-queries 0.0.1-SNAPSHOT diff --git a/persistence-modules/hibernate5/pom.xml b/persistence-modules/hibernate5/pom.xml index 9b4ffff739..d46d2c16d4 100644 --- a/persistence-modules/hibernate5/pom.xml +++ b/persistence-modules/hibernate5/pom.xml @@ -1,7 +1,7 @@ - + 4.0.0 hibernate5 0.0.1-SNAPSHOT diff --git a/persistence-modules/redis/pom.xml b/persistence-modules/redis/pom.xml index c407482788..8079d56cbd 100644 --- a/persistence-modules/redis/pom.xml +++ b/persistence-modules/redis/pom.xml @@ -59,7 +59,6 @@ 3.13.1 3.3.0 4.1.50.Final - \ No newline at end of file diff --git a/persistence-modules/spring-data-cassandra-reactive/pom.xml b/persistence-modules/spring-data-cassandra-reactive/pom.xml index 630e13583b..5dd5ab4b69 100644 --- a/persistence-modules/spring-data-cassandra-reactive/pom.xml +++ b/persistence-modules/spring-data-cassandra-reactive/pom.xml @@ -54,7 +54,6 @@ 2.2.6.RELEASE 3.11.2.0 - \ No newline at end of file diff --git a/persistence-modules/spring-data-cassandra/pom.xml b/persistence-modules/spring-data-cassandra/pom.xml index e43e3821ae..d21541abf8 100644 --- a/persistence-modules/spring-data-cassandra/pom.xml +++ b/persistence-modules/spring-data-cassandra/pom.xml @@ -105,7 +105,6 @@ 2.1.9.2 2.1.9.2 2.0-0 - \ No newline at end of file diff --git a/persistence-modules/spring-data-jdbc/pom.xml b/persistence-modules/spring-data-jdbc/pom.xml index 2672405dd6..2b4c6d21aa 100644 --- a/persistence-modules/spring-data-jdbc/pom.xml +++ b/persistence-modules/spring-data-jdbc/pom.xml @@ -2,14 +2,15 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 + spring-data-jdbc + spring-data-jdbc + com.baeldung parent-boot-2 0.0.1-SNAPSHOT ../../parent-boot-2 - spring-data-jdbc - spring-data-jdbc diff --git a/persistence-modules/spring-data-jpa-enterprise/pom.xml b/persistence-modules/spring-data-jpa-enterprise/pom.xml index 4367a11222..a76bcb8b0a 100644 --- a/persistence-modules/spring-data-jpa-enterprise/pom.xml +++ b/persistence-modules/spring-data-jpa-enterprise/pom.xml @@ -2,7 +2,6 @@ - 4.0.0 spring-data-jpa-enterprise spring-data-jpa-enterprise diff --git a/persistence-modules/spring-data-jpa-repo-2/pom.xml b/persistence-modules/spring-data-jpa-repo-2/pom.xml index b382e35e28..12e178dd49 100644 --- a/persistence-modules/spring-data-jpa-repo-2/pom.xml +++ b/persistence-modules/spring-data-jpa-repo-2/pom.xml @@ -42,4 +42,5 @@ 29.0-jre + \ No newline at end of file diff --git a/persistence-modules/spring-data-keyvalue/pom.xml b/persistence-modules/spring-data-keyvalue/pom.xml index aa2696dd12..704be15b4a 100644 --- a/persistence-modules/spring-data-keyvalue/pom.xml +++ b/persistence-modules/spring-data-keyvalue/pom.xml @@ -26,4 +26,5 @@ spring-boot-starter-test + \ No newline at end of file diff --git a/quarkus-extension/quarkus-app/pom.xml b/quarkus-extension/quarkus-app/pom.xml index f609261c5a..041b6f1762 100644 --- a/quarkus-extension/quarkus-app/pom.xml +++ b/quarkus-extension/quarkus-app/pom.xml @@ -1,7 +1,7 @@ - + 4.0.0 com.baeldung.quarkus.app quarkus-app diff --git a/quarkus/pom.xml b/quarkus/pom.xml index 6e250a2858..e88fd4dc5a 100644 --- a/quarkus/pom.xml +++ b/quarkus/pom.xml @@ -1,7 +1,7 @@ - + 4.0.0 com.baeldung.quarkus quarkus diff --git a/rabbitmq/pom.xml b/rabbitmq/pom.xml index ae38d697f6..8befd36ab6 100644 --- a/rabbitmq/pom.xml +++ b/rabbitmq/pom.xml @@ -1,7 +1,7 @@ - + 4.0.0 rabbitmq 0.1-SNAPSHOT diff --git a/spark-java/pom.xml b/spark-java/pom.xml index b5538b4ec3..0ecdd02f6a 100644 --- a/spark-java/pom.xml +++ b/spark-java/pom.xml @@ -1,7 +1,7 @@ - + 4.0.0 spark-java 0.1.0-SNAPSHOT diff --git a/spf4j/spf4j-aspects-app/pom.xml b/spf4j/spf4j-aspects-app/pom.xml index 54bbdddddc..a44ee805fb 100644 --- a/spf4j/spf4j-aspects-app/pom.xml +++ b/spf4j/spf4j-aspects-app/pom.xml @@ -22,8 +22,8 @@ ${spf4j.version} - org.apache.avro - avro + org.apache.avro + avro @@ -33,8 +33,8 @@ ${spf4j.version} - org.apache.avro - avro + org.apache.avro + avro @@ -43,11 +43,11 @@ slf4j-api ${org.slf4j.version} - - org.apache.avro - avro - 1.10.2 - + + org.apache.avro + avro + 1.10.2 + diff --git a/spf4j/spf4j-core-app/pom.xml b/spf4j/spf4j-core-app/pom.xml index 92333ea2ec..1f9be97854 100644 --- a/spf4j/spf4j-core-app/pom.xml +++ b/spf4j/spf4j-core-app/pom.xml @@ -22,8 +22,8 @@ ${spf4j.version} - org.apache.avro - avro + org.apache.avro + avro @@ -33,8 +33,8 @@ ${spf4j.version} - org.apache.avro - avro + org.apache.avro + avro @@ -43,17 +43,17 @@ slf4j-api ${org.slf4j.version} - - org.apache.avro - avro - + + org.apache.avro + avro + - - org.apache.avro - avro - 1.10.2 - + + org.apache.avro + avro + 1.10.2 + diff --git a/spring-5/pom.xml b/spring-5/pom.xml index 2284177dc0..5799f3bc8f 100644 --- a/spring-5/pom.xml +++ b/spring-5/pom.xml @@ -96,11 +96,11 @@ spring-restdocs-restassured test - - com.zaxxer - HikariCP - ${hikaricp.version} - + + com.zaxxer + HikariCP + ${hikaricp.version} + diff --git a/spring-aop/pom.xml b/spring-aop/pom.xml index 464a830383..da981987fe 100644 --- a/spring-aop/pom.xml +++ b/spring-aop/pom.xml @@ -71,4 +71,5 @@ 1.11 + \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-admin/spring-boot-admin-server/pom.xml b/spring-boot-modules/spring-boot-admin/spring-boot-admin-server/pom.xml index 63bc286b45..a1daa3fa19 100644 --- a/spring-boot-modules/spring-boot-admin/spring-boot-admin-server/pom.xml +++ b/spring-boot-modules/spring-boot-admin/spring-boot-admin-server/pom.xml @@ -81,5 +81,5 @@ 1.5.7 2.0.4.RELEASE - + \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-cassandre/pom.xml b/spring-boot-modules/spring-boot-cassandre/pom.xml index c4672c8887..14849e50d7 100644 --- a/spring-boot-modules/spring-boot-cassandre/pom.xml +++ b/spring-boot-modules/spring-boot-cassandre/pom.xml @@ -1,52 +1,50 @@ - 4.0.0 - spring-boot-cassandre - jar - spring-boot-cassandre - Cassandre trading bot tutorial + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + spring-boot-cassandre + jar + spring-boot-cassandre + Cassandre trading bot tutorial - - com.baeldung - parent-boot-2 - 0.0.1-SNAPSHOT - ../../parent-boot-2 - + + com.baeldung + parent-boot-2 + 0.0.1-SNAPSHOT + ../../parent-boot-2 + - - - - tech.cassandre.trading.bot - cassandre-trading-bot-spring-boot-starter - ${cassandre.trading.bot.version} - - - org.knowm.xchange - xchange-kucoin - ${xchange-kucoin.version} - - - org.hsqldb - hsqldb - ${hsqldb.version} - + + + + tech.cassandre.trading.bot + cassandre-trading-bot-spring-boot-starter + ${cassandre.trading.bot.version} + + + org.knowm.xchange + xchange-kucoin + ${xchange-kucoin.version} + + + org.hsqldb + hsqldb + ${hsqldb.version} + + + tech.cassandre.trading.bot + cassandre-trading-bot-spring-boot-starter-test + ${cassandre.trading.bot.version} + test + + - - tech.cassandre.trading.bot - cassandre-trading-bot-spring-boot-starter-test - ${cassandre.trading.bot.version} - test - + + 11 + 4.2.1 + 5.0.7 + 2.5.1 + - - - - 11 - 4.2.1 - 5.0.7 - 2.5.1 - - - + \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-parent/spring-boot-with-starter-parent/pom.xml b/spring-boot-modules/spring-boot-parent/spring-boot-with-starter-parent/pom.xml index 184becb657..5633e4d260 100644 --- a/spring-boot-modules/spring-boot-parent/spring-boot-with-starter-parent/pom.xml +++ b/spring-boot-modules/spring-boot-parent/spring-boot-with-starter-parent/pom.xml @@ -39,4 +39,5 @@ 2.2.5.RELEASE + \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-performance/pom.xml b/spring-boot-modules/spring-boot-performance/pom.xml index 02cef986d0..71dfb3c437 100644 --- a/spring-boot-modules/spring-boot-performance/pom.xml +++ b/spring-boot-modules/spring-boot-performance/pom.xml @@ -51,4 +51,5 @@ com.baeldung.lazyinitialization.Application 2.0.0 + \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-properties-3/pom.xml b/spring-boot-modules/spring-boot-properties-3/pom.xml index 400229a662..b5e6ef8701 100644 --- a/spring-boot-modules/spring-boot-properties-3/pom.xml +++ b/spring-boot-modules/spring-boot-properties-3/pom.xml @@ -40,4 +40,5 @@ + \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-runtime-2/pom.xml b/spring-boot-modules/spring-boot-runtime-2/pom.xml index 2c97f63746..c177529a41 100644 --- a/spring-boot-modules/spring-boot-runtime-2/pom.xml +++ b/spring-boot-modules/spring-boot-runtime-2/pom.xml @@ -60,4 +60,5 @@ + \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-validation/pom.xml b/spring-boot-modules/spring-boot-validation/pom.xml index 1aba8efeac..795d506dc0 100644 --- a/spring-boot-modules/spring-boot-validation/pom.xml +++ b/spring-boot-modules/spring-boot-validation/pom.xml @@ -1,41 +1,37 @@ - - 4.0.0 + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + com.baeldung + spring-boot-validation + 0.0.1-SNAPSHOT - com.baeldung - spring-boot-validation - 0.0.1-SNAPSHOT - - + com.baeldung parent-boot-2 0.0.1-SNAPSHOT ../../parent-boot-2 - - - org.springframework.boot - spring-boot-starter-web - + + + org.springframework.boot + spring-boot-starter-web + + + org.hibernate.validator + hibernate-validator + + - - org.hibernate.validator - hibernate-validator - - - - + + + + org.springframework.boot + spring-boot-maven-plugin + + + - - - - org.springframework.boot - spring-boot-maven-plugin - - - diff --git a/spring-cloud/spring-cloud-bootstrap/order-service/pom.xml b/spring-cloud/spring-cloud-bootstrap/order-service/pom.xml index 64be52f5f4..273017c386 100644 --- a/spring-cloud/spring-cloud-bootstrap/order-service/pom.xml +++ b/spring-cloud/spring-cloud-bootstrap/order-service/pom.xml @@ -117,6 +117,6 @@ 1.8 1.8 com.baeldung.orderservice.OrderApplication - + \ No newline at end of file diff --git a/spring-cloud/spring-cloud-config/client/pom.xml b/spring-cloud/spring-cloud-config/client/pom.xml index 00b5ba2edc..55c6e77a72 100644 --- a/spring-cloud/spring-cloud-config/client/pom.xml +++ b/spring-cloud/spring-cloud-config/client/pom.xml @@ -47,4 +47,5 @@ + \ No newline at end of file diff --git a/spring-cloud/spring-cloud-config/server/pom.xml b/spring-cloud/spring-cloud-config/server/pom.xml index c59b6583f2..36d1b5b3aa 100644 --- a/spring-cloud/spring-cloud-config/server/pom.xml +++ b/spring-cloud/spring-cloud-config/server/pom.xml @@ -51,4 +51,5 @@ + \ No newline at end of file diff --git a/spring-cloud/spring-cloud-contract/pom.xml b/spring-cloud/spring-cloud-contract/pom.xml index 1d12656f98..8546e76586 100644 --- a/spring-cloud/spring-cloud-contract/pom.xml +++ b/spring-cloud/spring-cloud-contract/pom.xml @@ -31,7 +31,6 @@ spring-boot-starter-data-rest ${spring-boot.version} - org.springframework.cloud spring-cloud-contract-wiremock diff --git a/spring-cloud/spring-cloud-kubernetes/pom.xml b/spring-cloud/spring-cloud-kubernetes/pom.xml index ba57100804..d8894eb36f 100644 --- a/spring-cloud/spring-cloud-kubernetes/pom.xml +++ b/spring-cloud/spring-cloud-kubernetes/pom.xml @@ -40,4 +40,5 @@ 2020.0.3 + \ No newline at end of file diff --git a/spring-cloud/spring-cloud-rest/spring-cloud-rest-books-api/pom.xml b/spring-cloud/spring-cloud-rest/spring-cloud-rest-books-api/pom.xml index 2fa003a634..c7ff472655 100644 --- a/spring-cloud/spring-cloud-rest/spring-cloud-rest-books-api/pom.xml +++ b/spring-cloud/spring-cloud-rest/spring-cloud-rest-books-api/pom.xml @@ -75,4 +75,4 @@ - + \ No newline at end of file diff --git a/spring-cloud/spring-cloud-sentinel/pom.xml b/spring-cloud/spring-cloud-sentinel/pom.xml index a36dcc51bc..f26a13f6f8 100644 --- a/spring-cloud/spring-cloud-sentinel/pom.xml +++ b/spring-cloud/spring-cloud-sentinel/pom.xml @@ -1,7 +1,7 @@ - + 4.0.0 spring-cloud-sentinel spring-cloud-sentinel diff --git a/spring-ejb/ejb-beans/pom.xml b/spring-ejb/ejb-beans/pom.xml index cdc28ef5d7..d820819a78 100644 --- a/spring-ejb/ejb-beans/pom.xml +++ b/spring-ejb/ejb-beans/pom.xml @@ -94,7 +94,6 @@ test - diff --git a/spring-mobile/pom.xml b/spring-mobile/pom.xml index 1593de27a8..7f715c8735 100644 --- a/spring-mobile/pom.xml +++ b/spring-mobile/pom.xml @@ -1,7 +1,7 @@ - + 4.0.0 spring-mobile 1.0-SNAPSHOT diff --git a/spring-security-modules/pom.xml b/spring-security-modules/pom.xml index 5847d6f28d..9a0862a6b0 100644 --- a/spring-security-modules/pom.xml +++ b/spring-security-modules/pom.xml @@ -49,4 +49,4 @@ spring-social-login - + \ No newline at end of file diff --git a/spring-security-modules/spring-security-web-persistent-login/pom.xml b/spring-security-modules/spring-security-web-persistent-login/pom.xml index 3bbabe3738..2d931c416c 100644 --- a/spring-security-modules/spring-security-web-persistent-login/pom.xml +++ b/spring-security-modules/spring-security-web-persistent-login/pom.xml @@ -136,7 +136,7 @@ - spring-security-web-persistence + spring-security-web-persistent-login src/main/resources diff --git a/spring-security-modules/spring-security-web-sockets/pom.xml b/spring-security-modules/spring-security-web-sockets/pom.xml index e822b6beda..b1536e88ea 100644 --- a/spring-security-modules/spring-security-web-sockets/pom.xml +++ b/spring-security-modules/spring-security-web-sockets/pom.xml @@ -1,7 +1,7 @@ - + 4.0.0 com.baeldung.springsecuredsockets spring-security-web-sockets diff --git a/spring-vault/pom.xml b/spring-vault/pom.xml index 759de80a6b..68856de2fc 100644 --- a/spring-vault/pom.xml +++ b/spring-vault/pom.xml @@ -1,7 +1,7 @@ - + 4.0.0 spring-vault 0.0.1-SNAPSHOT diff --git a/spring-web-modules/spring-mvc-forms-jsp/pom.xml b/spring-web-modules/spring-mvc-forms-jsp/pom.xml index 94eb51a32d..707c18fa19 100644 --- a/spring-web-modules/spring-mvc-forms-jsp/pom.xml +++ b/spring-web-modules/spring-mvc-forms-jsp/pom.xml @@ -1,7 +1,7 @@ - + 4.0.0 0.1-SNAPSHOT spring-mvc-forms-jsp diff --git a/spring-web-modules/spring-mvc-forms-thymeleaf/pom.xml b/spring-web-modules/spring-mvc-forms-thymeleaf/pom.xml index 37bcee0b8d..eb31723798 100644 --- a/spring-web-modules/spring-mvc-forms-thymeleaf/pom.xml +++ b/spring-web-modules/spring-mvc-forms-thymeleaf/pom.xml @@ -28,7 +28,6 @@ org.projectlombok lombok - org.springframework.boot diff --git a/spring-web-modules/spring-rest-angular/pom.xml b/spring-web-modules/spring-rest-angular/pom.xml index ef14e78198..e7cb5c8664 100644 --- a/spring-web-modules/spring-rest-angular/pom.xml +++ b/spring-web-modules/spring-rest-angular/pom.xml @@ -1,7 +1,7 @@ - + 4.0.0 spring-rest-angular 1.0 diff --git a/testing-modules/testing-libraries-2/pom.xml b/testing-modules/testing-libraries-2/pom.xml index d914fcfb86..dcbddd60b4 100644 --- a/testing-modules/testing-libraries-2/pom.xml +++ b/testing-modules/testing-libraries-2/pom.xml @@ -131,5 +131,5 @@ 5.6.2 3.16.1 - - + + \ No newline at end of file diff --git a/vertx/pom.xml b/vertx/pom.xml index 9a22e2dd72..7608b3e355 100644 --- a/vertx/pom.xml +++ b/vertx/pom.xml @@ -1,7 +1,7 @@ - + 4.0.0 vertx 1.0-SNAPSHOT diff --git a/wildfly/pom.xml b/wildfly/pom.xml index c5d9bce37a..eaec4d176c 100644 --- a/wildfly/pom.xml +++ b/wildfly/pom.xml @@ -60,7 +60,6 @@ - org.apache.maven.plugins maven-war-plugin From 1da4629ece901d7deb456af640c5c6f73ea8cf44 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Thu, 5 Aug 2021 00:56:55 +0800 Subject: [PATCH 10/82] Update README.md --- maven-modules/maven-properties/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/maven-modules/maven-properties/README.md b/maven-modules/maven-properties/README.md index 52ac8506b3..75ae24d215 100644 --- a/maven-modules/maven-properties/README.md +++ b/maven-modules/maven-properties/README.md @@ -6,3 +6,4 @@ have their own dedicated modules. ### Relevant Articles - [Accessing Maven Properties in Java](https://www.baeldung.com/java-accessing-maven-properties) +- [Default Values for Maven Properties](https://www.baeldung.com/maven-properties-defaults) From bfbdc615f34f39d71f4cb37bcb772ca3517d19ec Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Thu, 5 Aug 2021 01:01:57 +0800 Subject: [PATCH 11/82] Update README.md --- libraries-http-2/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/libraries-http-2/README.md b/libraries-http-2/README.md index 3fa66de6e3..fdad2b3e0a 100644 --- a/libraries-http-2/README.md +++ b/libraries-http-2/README.md @@ -10,5 +10,6 @@ This module contains articles about HTTP libraries. - [Adding Interceptors in OkHTTP](https://www.baeldung.com/java-okhttp-interceptors) - [A Guide to Events in OkHTTP](https://www.baeldung.com/java-okhttp-events) - [Download a Binary File Using OkHttp](https://www.baeldung.com/java-okhttp-download-binary-file) +- [Trusting a Self-Signed Certificate in OkHttp](https://www.baeldung.com/okhttp-self-signed-cert) - More articles [[<-- prev]](/libraries-http) From 20d160b944ea35075d9dfb0c6ec042fbb4c16995 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Thu, 5 Aug 2021 01:04:27 +0800 Subject: [PATCH 12/82] Update README.md --- persistence-modules/hibernate-jpa/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/persistence-modules/hibernate-jpa/README.md b/persistence-modules/hibernate-jpa/README.md index 8379ad1626..bb079b1705 100644 --- a/persistence-modules/hibernate-jpa/README.md +++ b/persistence-modules/hibernate-jpa/README.md @@ -14,3 +14,4 @@ This module contains articles specific to use of Hibernate as a JPA implementati - [JPA/Hibernate Persistence Context](https://www.baeldung.com/jpa-hibernate-persistence-context) - [Quick Guide to EntityManager#getReference()](https://www.baeldung.com/jpa-entity-manager-get-reference) - [JPA Entities and the Serializable Interface](https://www.baeldung.com/jpa-entities-serializable) +- [EntityNotFoundException in Hibernate](https://www.baeldung.com/hibernate-entitynotfoundexception) From 6913b21a3630a990f34d6dd9c9440fb60df3909e Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Thu, 5 Aug 2021 01:05:51 +0800 Subject: [PATCH 13/82] Update README.md --- libraries-io/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/libraries-io/README.md b/libraries-io/README.md index 90095a2f23..6cfe978d91 100644 --- a/libraries-io/README.md +++ b/libraries-io/README.md @@ -2,4 +2,5 @@ ### Relevant Articles: - [Transferring a File Through SFTP in Java](https://www.baeldung.com/java-file-sftp) +- [How to Create Password-Protected Zip Files and Unzip Them in Java](https://www.baeldung.com/java-password-protected-zip-unzip) From ac55fc7c1d086c81ce5b5e61244b7fc8d57d8e7f Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Thu, 5 Aug 2021 01:08:45 +0800 Subject: [PATCH 14/82] Update README.md --- patterns/design-patterns-architectural/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/patterns/design-patterns-architectural/README.md b/patterns/design-patterns-architectural/README.md index ae6781c66c..a8a5a98b88 100644 --- a/patterns/design-patterns-architectural/README.md +++ b/patterns/design-patterns-architectural/README.md @@ -2,3 +2,4 @@ - [Service Locator Pattern and Java Implementation](https://www.baeldung.com/java-service-locator-pattern) - [The DAO Pattern in Java](https://www.baeldung.com/java-dao-pattern) - [DAO vs Repository Patterns](https://www.baeldung.com/java-dao-vs-repository) +- [Difference Between MVC and MVP Patterns](https://www.baeldung.com/mvc-vs-mvp-pattern) From 888f601132344ec5ce1457324039190090e5ba12 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Thu, 5 Aug 2021 01:10:01 +0800 Subject: [PATCH 15/82] Update README.md --- persistence-modules/core-java-persistence-2/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/persistence-modules/core-java-persistence-2/README.md b/persistence-modules/core-java-persistence-2/README.md index 365e9e7256..7b215bfef1 100644 --- a/persistence-modules/core-java-persistence-2/README.md +++ b/persistence-modules/core-java-persistence-2/README.md @@ -4,3 +4,4 @@ - [JDBC URL Format For Different Databases](https://www.baeldung.com/java-jdbc-url-format) - [How to Check if a Database Table Exists with JDBC](https://www.baeldung.com/jdbc-check-table-exists) - [Inserting Null Into an Integer Column Using JDBC](https://www.baeldung.com/jdbc-insert-null-into-integer-column) +- [A Guide to Auto-Commit in JDBC](https://www.baeldung.com/java-jdbc-auto-commit) From db0878692df38b2d0a1e088f8ba991eab43cf48d Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Thu, 5 Aug 2021 01:11:20 +0800 Subject: [PATCH 16/82] Update README.md --- spring-web-modules/spring-mvc-basics-4/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-web-modules/spring-mvc-basics-4/README.md b/spring-web-modules/spring-mvc-basics-4/README.md index 211564a363..f003f7df01 100644 --- a/spring-web-modules/spring-mvc-basics-4/README.md +++ b/spring-web-modules/spring-mvc-basics-4/README.md @@ -9,4 +9,5 @@ The "REST With Spring" Classes: https://bit.ly/restwithspring - [Spring Web Contexts](https://www.baeldung.com/spring-web-contexts) - [Spring Optional Path variables](https://www.baeldung.com/spring-optional-path-variables) - [JSON Parameters with Spring MVC](https://www.baeldung.com/spring-mvc-send-json-parameters) +- [How to Set JSON Content Type In Spring MVC](https://www.baeldung.com/spring-mvc-set-json-content-type) - More articles: [[<-- prev]](/spring-mvc-basics-3) From b623297829c113a80b571e25e5680ff5e9bcfaf6 Mon Sep 17 00:00:00 2001 From: mbarriola <85458535+mbarriola@users.noreply.github.com> Date: Thu, 5 Aug 2021 15:50:37 -0400 Subject: [PATCH 17/82] Core java 12 improvements (#11090) * Commit source code to branch * Fix to BAEL-5072 Change package definition and implementation of compactValues junit * BAEL-5053 Compare file contents --- core-java-modules/core-java-12/pom.xml | 93 ++++++++------- .../comparison/CompareFileContents.java | 88 ++++++++++++++ .../CampareFileContentsApacheIOUnitTest.java | 88 ++++++++++++++ .../CompareByMemoryMappedFilesUnitTest.java | 42 +++++++ .../CompareFileContentsByBytesUnitTest.java | 96 +++++++++++++++ .../CompareFileContentsByLinesUnitTest.java | 94 +++++++++++++++ .../newfeatures/CompactNumbersUnitTest.java | 6 +- .../newfeatures/FileMismatchUnitTest.java | 4 +- .../baeldung/newfeatures/StringUnitTest.java | 4 +- .../newfeatures/TeeingCollectorUnitTest.java | 6 +- patterns/simplehexagonalexample/pom.xml | 31 +++++ .../simplehexagonalex/DailyQuoteMain.java | 32 +++++ .../controller/QuoteCliController.java | 24 ++++ .../controller/QuoteRestController.java | 24 ++++ .../domain/QuoteOfTheDay.java | 56 +++++++++ .../repository/QuoteOfTheDayFromProvider.java | 8 ++ .../domain/service/QuoteAggregator.java | 22 ++++ .../domain/service/QuoteService.java | 8 ++ .../primary/quoteadapter/ProviderQuote.java | 109 ++++++++++++++++++ .../quoteadapter/ProviderQuoteAdapter.java | 54 +++++++++ .../quoteadapter/ProviderQuoteEnvelope.java | 68 +++++++++++ .../mock/quoteadapter/MockQuoteAdapter.java | 20 ++++ .../src/main/resources/application.properties | 1 + .../MockAccessProviderUnitTest.java | 22 ++++ .../PrimaryAccessProviderIntegrationTest.java | 28 +++++ .../QuoteRequestIntegrationTest.java | 36 ++++++ .../src/test/resources/application.properties | 1 + 27 files changed, 1014 insertions(+), 51 deletions(-) create mode 100644 core-java-modules/core-java-12/src/main/java/com/baeldung/file/content/comparison/CompareFileContents.java create mode 100644 core-java-modules/core-java-12/src/test/java/com/baeldung/file/content/comparison/CampareFileContentsApacheIOUnitTest.java create mode 100644 core-java-modules/core-java-12/src/test/java/com/baeldung/file/content/comparison/CompareByMemoryMappedFilesUnitTest.java create mode 100644 core-java-modules/core-java-12/src/test/java/com/baeldung/file/content/comparison/CompareFileContentsByBytesUnitTest.java create mode 100644 core-java-modules/core-java-12/src/test/java/com/baeldung/file/content/comparison/CompareFileContentsByLinesUnitTest.java create mode 100644 patterns/simplehexagonalexample/pom.xml create mode 100644 patterns/simplehexagonalexample/src/main/java/com/baeldung/simplehexagonalex/DailyQuoteMain.java create mode 100644 patterns/simplehexagonalexample/src/main/java/com/baeldung/simplehexagonalex/controller/QuoteCliController.java create mode 100644 patterns/simplehexagonalexample/src/main/java/com/baeldung/simplehexagonalex/controller/QuoteRestController.java create mode 100644 patterns/simplehexagonalexample/src/main/java/com/baeldung/simplehexagonalex/domain/QuoteOfTheDay.java create mode 100644 patterns/simplehexagonalexample/src/main/java/com/baeldung/simplehexagonalex/domain/repository/QuoteOfTheDayFromProvider.java create mode 100644 patterns/simplehexagonalexample/src/main/java/com/baeldung/simplehexagonalex/domain/service/QuoteAggregator.java create mode 100644 patterns/simplehexagonalexample/src/main/java/com/baeldung/simplehexagonalex/domain/service/QuoteService.java create mode 100644 patterns/simplehexagonalexample/src/main/java/com/baeldung/simplehexagonalex/repository/primary/quoteadapter/ProviderQuote.java create mode 100644 patterns/simplehexagonalexample/src/main/java/com/baeldung/simplehexagonalex/repository/primary/quoteadapter/ProviderQuoteAdapter.java create mode 100644 patterns/simplehexagonalexample/src/main/java/com/baeldung/simplehexagonalex/repository/primary/quoteadapter/ProviderQuoteEnvelope.java create mode 100644 patterns/simplehexagonalexample/src/main/java/com/baeldung/simplehexagonalex/reposity/mock/quoteadapter/MockQuoteAdapter.java create mode 100644 patterns/simplehexagonalexample/src/main/resources/application.properties create mode 100644 patterns/simplehexagonalexample/src/test/java/com/baeldung/simplehexagonalex/repository/primaryQuoteProvider/MockAccessProviderUnitTest.java create mode 100644 patterns/simplehexagonalexample/src/test/java/com/baeldung/simplehexagonalex/repository/primaryQuoteProvider/PrimaryAccessProviderIntegrationTest.java create mode 100644 patterns/simplehexagonalexample/src/test/java/com/baeldung/simplehexagonalex/repository/primaryQuoteProvider/QuoteRequestIntegrationTest.java create mode 100644 patterns/simplehexagonalexample/src/test/resources/application.properties diff --git a/core-java-modules/core-java-12/pom.xml b/core-java-modules/core-java-12/pom.xml index 8f6abdda5b..ce7ec72aeb 100644 --- a/core-java-modules/core-java-12/pom.xml +++ b/core-java-modules/core-java-12/pom.xml @@ -1,49 +1,60 @@ - 4.0.0 - core-java-12 - 0.1.0-SNAPSHOT - core-java-12 - jar - http://maven.apache.org + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + core-java-12 + 0.1.0-SNAPSHOT + core-java-12 + jar + http://maven.apache.org - - com.baeldung - parent-modules - 1.0.0-SNAPSHOT - ../../ - + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + ../../ + - - - org.assertj - assertj-core - ${assertj.version} - test - - + + + org.assertj + assertj-core + ${assertj.version} + test + + + commons-io + commons-io + 2.11.0 + + - - - - org.apache.maven.plugins - maven-compiler-plugin - ${maven-compiler-plugin.version} - - ${maven.compiler.source.version} - ${maven.compiler.target.version} - --enable-preview - - - - + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + ${maven.compiler.source.version} + ${maven.compiler.target.version} + --enable-preview + + + + maven-surefire-plugin + + --enable-preview + + + + - - 12 - 12 - 3.6.1 - + + 12 + 12 + 3.6.1 + \ No newline at end of file diff --git a/core-java-modules/core-java-12/src/main/java/com/baeldung/file/content/comparison/CompareFileContents.java b/core-java-modules/core-java-12/src/main/java/com/baeldung/file/content/comparison/CompareFileContents.java new file mode 100644 index 0000000000..637ddb4a91 --- /dev/null +++ b/core-java-modules/core-java-12/src/main/java/com/baeldung/file/content/comparison/CompareFileContents.java @@ -0,0 +1,88 @@ +package com.baeldung.file.content.comparison; + +import java.io.BufferedInputStream; +import java.io.BufferedReader; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.RandomAccessFile; +import java.nio.ByteBuffer; +import java.nio.MappedByteBuffer; +import java.nio.channels.FileChannel; +import java.nio.file.Files; +import java.nio.file.Path; + +public class CompareFileContents { + + public static long filesCompareByByte(Path path1, Path path2) throws IOException { + + if (path1.getFileSystem() + .provider() + .isSameFile(path1, path2)) { + return -1; + } + + try (BufferedInputStream fis1 = new BufferedInputStream(new FileInputStream(path1.toFile())); + BufferedInputStream fis2 = new BufferedInputStream(new FileInputStream(path2.toFile()))) { + int ch = 0; + long pos = 1; + while ((ch = fis1.read()) != -1) { + if (ch != fis2.read()) { + return pos; + } + pos++; + } + if (fis2.read() == -1) { + return -1; + } else { + return pos; + } + } + } + + public static long filesCompareByLine(Path path1, Path path2) throws IOException { + + if (path1.getFileSystem() + .provider() + .isSameFile(path1, path2)) { + return -1; + } + + try (BufferedReader bf1 = Files.newBufferedReader(path1); + BufferedReader bf2 = Files.newBufferedReader(path2)) { + + long lineNumber = 1; + String line1 = "", line2 = ""; + while ((line1 = bf1.readLine()) != null) { + line2 = bf2.readLine(); + if (line2 == null || !line1.equals(line2)) { + return lineNumber; + } + lineNumber++; + } + if (bf2.readLine() == null) { + return -1; + } else { + return lineNumber; + } + } + } + + public static boolean compareByMemoryMappedFiles(Path path1, Path path2) throws IOException { + + try (RandomAccessFile randomAccessFile1 = new RandomAccessFile(path1.toFile(), "r"); + RandomAccessFile randomAccessFile2 = new RandomAccessFile(path2.toFile(), "r")) { + + FileChannel ch1 = randomAccessFile1.getChannel(); + FileChannel ch2 = randomAccessFile2.getChannel(); + if (ch1.size() != ch2.size()) { + + return false; + } + long size = ch1.size(); + MappedByteBuffer m1 = ch1.map(FileChannel.MapMode.READ_ONLY, 0L, size); + MappedByteBuffer m2 = ch2.map(FileChannel.MapMode.READ_ONLY, 0L, size); + + return m1.equals(m2); + } + } +} \ No newline at end of file diff --git a/core-java-modules/core-java-12/src/test/java/com/baeldung/file/content/comparison/CampareFileContentsApacheIOUnitTest.java b/core-java-modules/core-java-12/src/test/java/com/baeldung/file/content/comparison/CampareFileContentsApacheIOUnitTest.java new file mode 100644 index 0000000000..0d86abae11 --- /dev/null +++ b/core-java-modules/core-java-12/src/test/java/com/baeldung/file/content/comparison/CampareFileContentsApacheIOUnitTest.java @@ -0,0 +1,88 @@ +package com.baeldung.file.content.comparison; + +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.io.BufferedReader; +import java.io.FileInputStream; +import java.io.FileReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.Reader; +import java.nio.file.Files; +import java.nio.file.Path; + +import org.apache.commons.io.IOUtils; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +public class CampareFileContentsApacheIOUnitTest { + + public static Path path1 = null; + public static Path path2 = null; + + @BeforeAll + public static void setup() throws IOException { + + path1 = Files.createTempFile("file1Test", ".txt"); + path2 = Files.createTempFile("file2Test", ".txt"); + } + + @Test + public void whenFilesIdentical_thenReturnTrue() throws IOException { + + InputStream inputStream1 = new FileInputStream(path1.toFile()); + InputStream inputStream2 = new FileInputStream(path2.toFile()); + + Files.writeString(path1, "testing line 1" + System.lineSeparator() + "line 2"); + Files.writeString(path2, "testing line 1" + System.lineSeparator() + "line 2"); + + assertTrue(IOUtils.contentEquals(inputStream1, inputStream2)); + } + + @Test + public void whenFilesDifferent_thenReturnFalse() throws IOException { + + InputStream inputStream1 = new FileInputStream(path1.toFile()); + InputStream inputStream2 = new FileInputStream(path2.toFile()); + + Files.writeString(path1, "testing line " + System.lineSeparator() + "line 2"); + Files.writeString(path2, "testing line 1" + System.lineSeparator() + "line 2"); + + assertFalse(IOUtils.contentEquals(inputStream1, inputStream2)); + } + + @Test + public void whenFilesIdenticalIgnoreEOF_thenReturnTrue() throws IOException { + + Files.writeString(path1, "testing line 1 \n line 2"); + Files.writeString(path2, "testing line 1 \r\n line 2"); + + Reader reader1 = new BufferedReader(new FileReader(path1.toFile())); + Reader reader2 = new BufferedReader(new FileReader(path2.toFile())); + + assertTrue(IOUtils.contentEqualsIgnoreEOL(reader1, reader2)); + } + + @Test + public void whenFilesNotIdenticalIgnoreEOF_thenReturnFalse() throws IOException { + + Files.writeString(path1, "testing line \n line 2"); + Files.writeString(path2, "testing line 1 \r\n line 2"); + + Reader reader1 = new BufferedReader(new FileReader(path1.toFile())); + Reader reader2 = new BufferedReader(new FileReader(path2.toFile())); + + assertFalse(IOUtils.contentEqualsIgnoreEOL(reader1, reader2)); + } + + @AfterAll + public static void shutDown() { + + path1.toFile() + .deleteOnExit(); + path2.toFile() + .deleteOnExit(); + } +} diff --git a/core-java-modules/core-java-12/src/test/java/com/baeldung/file/content/comparison/CompareByMemoryMappedFilesUnitTest.java b/core-java-modules/core-java-12/src/test/java/com/baeldung/file/content/comparison/CompareByMemoryMappedFilesUnitTest.java new file mode 100644 index 0000000000..0405ac3b52 --- /dev/null +++ b/core-java-modules/core-java-12/src/test/java/com/baeldung/file/content/comparison/CompareByMemoryMappedFilesUnitTest.java @@ -0,0 +1,42 @@ +package com.baeldung.file.content.comparison; + +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +public class CompareByMemoryMappedFilesUnitTest { + + public static Path path1 = null; + public static Path path2 = null; + + @BeforeAll + public static void setup() throws IOException { + + path1 = Files.createTempFile("file1Test", ".txt"); + path2 = Files.createTempFile("file2Test", ".txt"); + } + + @Test + public void whenFilesIdentical_thenReturnTrue() throws IOException { + + Files.writeString(path1, "testing line 1" + System.lineSeparator() + "line 2"); + Files.writeString(path2, "testing line 1" + System.lineSeparator() + "line 2"); + + assertTrue(CompareFileContents.compareByMemoryMappedFiles(path1, path2)); + } + + @Test + public void whenFilesDifferent_thenReturnFalse() throws IOException { + + Files.writeString(path1, "testing line " + System.lineSeparator() + "line 2"); + Files.writeString(path2, "testing line 1" + System.lineSeparator() + "line 2"); + + assertFalse(CompareFileContents.compareByMemoryMappedFiles(path1, path2)); + } +} diff --git a/core-java-modules/core-java-12/src/test/java/com/baeldung/file/content/comparison/CompareFileContentsByBytesUnitTest.java b/core-java-modules/core-java-12/src/test/java/com/baeldung/file/content/comparison/CompareFileContentsByBytesUnitTest.java new file mode 100644 index 0000000000..15efc952c2 --- /dev/null +++ b/core-java-modules/core-java-12/src/test/java/com/baeldung/file/content/comparison/CompareFileContentsByBytesUnitTest.java @@ -0,0 +1,96 @@ +package com.baeldung.file.content.comparison; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; + +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +public class CompareFileContentsByBytesUnitTest { + + public static Path path1 = null; + public static Path path2 = null; + + @BeforeAll + public static void setup() throws IOException { + + path1 = Files.createTempFile("file1Test", ".txt"); + path2 = Files.createTempFile("file2Test", ".txt"); + } + + @Test + public void whenFirstFileShorter_thenPositionInSecondFile() throws IOException { + + Files.writeString(path1, "testing"); + Files.writeString(path2, "testing1"); + + assertEquals(8, CompareFileContents.filesCompareByByte(path1, path2)); + } + + @Test + public void whenSecondFileShorter_thenPositionInFirstFile() throws IOException { + + Files.writeString(path1, "testing1"); + Files.writeString(path2, "testing"); + + assertEquals(8, CompareFileContents.filesCompareByByte(path1, path2)); + + } + + @Test + public void whenFilesIdentical_thenSuccess() throws IOException { + + Files.writeString(path1, "testing"); + Files.writeString(path2, "testing"); + + assertEquals(-1, CompareFileContents.filesCompareByByte(path1, path2)); + + } + + @Test + public void whenFilesDifferent_thenPosition() throws IOException { + + Files.writeString(path1, "tesXing"); + Files.writeString(path2, "testing"); + + assertEquals(4, CompareFileContents.filesCompareByByte(path1, path2)); + } + + @Test + public void whenBothFilesEmpty_thenEqual() throws IOException { + + Files.writeString(path1, ""); + Files.writeString(path2, ""); + + assertEquals(-1, CompareFileContents.filesCompareByByte(path1, path2)); + } + + @Test + public void whenFirstEmpty_thenPositionFirst() throws IOException { + + Files.writeString(path1, ""); + Files.writeString(path2, "test"); + + assertEquals(1, CompareFileContents.filesCompareByByte(path1, path2)); + } + + @Test + public void whenSecondEmpty_thenPositionFirst() throws IOException { + + Files.writeString(path1, "test"); + Files.writeString(path2, ""); + + assertEquals(1, CompareFileContents.filesCompareByByte(path1, path2)); + } + + @AfterAll + public static void shutDown() { + + path1.toFile().deleteOnExit(); + path2.toFile().deleteOnExit(); + } +} diff --git a/core-java-modules/core-java-12/src/test/java/com/baeldung/file/content/comparison/CompareFileContentsByLinesUnitTest.java b/core-java-modules/core-java-12/src/test/java/com/baeldung/file/content/comparison/CompareFileContentsByLinesUnitTest.java new file mode 100644 index 0000000000..63170221d3 --- /dev/null +++ b/core-java-modules/core-java-12/src/test/java/com/baeldung/file/content/comparison/CompareFileContentsByLinesUnitTest.java @@ -0,0 +1,94 @@ +package com.baeldung.file.content.comparison; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; + +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +public class CompareFileContentsByLinesUnitTest { + + public static Path path1 = null; + public static Path path2 = null; + + @BeforeAll + public static void setup() throws IOException { + + path1 = Files.createTempFile("file1Test", ".txt"); + path2 = Files.createTempFile("file2Test", ".txt"); + } + + @Test + public void whenFirstFileShorter_thenLineNumbersFirstFile() throws IOException { + + Files.writeString(path1, "testing line 1"); + Files.writeString(path2, "testing1 line 1" + System.lineSeparator() + "line 2"); + + assertEquals(1, CompareFileContents.filesCompareByLine(path1, path2)); + } + + @Test + public void whenSecondFileShorter_thenLineNumbersSecondFile() throws IOException { + + Files.writeString(path1, "testing1 line 1" + System.lineSeparator() + "line 2"); + Files.writeString(path2, "testing line 1"); + + assertEquals(1, CompareFileContents.filesCompareByLine(path1, path2)); + } + + @Test + public void whenFileIdentical_thenLineSuccess() throws IOException { + + Files.writeString(path1, "testing1 line 1" + System.lineSeparator() + "line 2"); + Files.writeString(path2, "testing1 line 1" + System.lineSeparator() + "line 2"); + + assertEquals(-1, CompareFileContents.filesCompareByLine(path1, path2)); + } + + @Test + public void whenFilesDifferent_thenLineNumber() throws IOException { + + Files.writeString(path1, "testing1 line 1" + System.lineSeparator() + "line 2"); + Files.writeString(path2, "testing1 line 1" + System.lineSeparator() + "linX 2"); + + assertEquals(2, CompareFileContents.filesCompareByLine(path1, path2)); + } + + @Test + public void whenBothFilesEmpty_thenEqual() throws IOException { + + Files.writeString(path1, ""); + Files.writeString(path2, ""); + + assertEquals(-1, CompareFileContents.filesCompareByByte(path1, path2)); + } + + @Test + public void whenFirstEmpty_thenPositionFirst() throws IOException { + + Files.writeString(path1, ""); + Files.writeString(path2, "testing1 line 1" + System.lineSeparator() + "line 2"); + + assertEquals(1, CompareFileContents.filesCompareByByte(path1, path2)); + } + + @Test + public void whenSecondEmpty_thenPositionFirst() throws IOException { + + Files.writeString(path1, "testing1 line 1" + System.lineSeparator() + "line 2"); + Files.writeString(path2, ""); + + assertEquals(1, CompareFileContents.filesCompareByByte(path1, path2)); + } + + @AfterAll + public static void shutDown() { + + path1.toFile().deleteOnExit(); + path2.toFile().deleteOnExit(); + } +} diff --git a/core-java-modules/core-java-12/src/test/java/com/baeldung/newfeatures/CompactNumbersUnitTest.java b/core-java-modules/core-java-12/src/test/java/com/baeldung/newfeatures/CompactNumbersUnitTest.java index 08a6d58d72..a557ce5545 100644 --- a/core-java-modules/core-java-12/src/test/java/com/baeldung/newfeatures/CompactNumbersUnitTest.java +++ b/core-java-modules/core-java-12/src/test/java/com/baeldung/newfeatures/CompactNumbersUnitTest.java @@ -1,6 +1,6 @@ -package java.com.baeldung.newfeatures; +package com.baeldung.newfeatures; -import org.junit.Test; +import org.junit.jupiter.api.Test; import java.text.NumberFormat; import java.util.Locale; @@ -16,6 +16,6 @@ public class CompactNumbersUnitTest { assertEquals("2.59K", likesShort.format(2592)); NumberFormat likesLong = NumberFormat.getCompactNumberInstance(new Locale("en", "US"), NumberFormat.Style.LONG); likesLong.setMaximumFractionDigits(2); - assertEquals("2.59 thousand", likesShort.format(2592)); + assertEquals("2.59 thousand", likesLong.format(2592)); } } diff --git a/core-java-modules/core-java-12/src/test/java/com/baeldung/newfeatures/FileMismatchUnitTest.java b/core-java-modules/core-java-12/src/test/java/com/baeldung/newfeatures/FileMismatchUnitTest.java index 7f081fe399..93fcfbda02 100644 --- a/core-java-modules/core-java-12/src/test/java/com/baeldung/newfeatures/FileMismatchUnitTest.java +++ b/core-java-modules/core-java-12/src/test/java/com/baeldung/newfeatures/FileMismatchUnitTest.java @@ -1,6 +1,6 @@ -package java.com.baeldung.newfeatures; +package com.baeldung.newfeatures; -import org.junit.Test; +import org.junit.jupiter.api.Test; import java.io.IOException; import java.nio.file.Files; diff --git a/core-java-modules/core-java-12/src/test/java/com/baeldung/newfeatures/StringUnitTest.java b/core-java-modules/core-java-12/src/test/java/com/baeldung/newfeatures/StringUnitTest.java index 5ae51bd960..1651fe0ee6 100644 --- a/core-java-modules/core-java-12/src/test/java/com/baeldung/newfeatures/StringUnitTest.java +++ b/core-java-modules/core-java-12/src/test/java/com/baeldung/newfeatures/StringUnitTest.java @@ -1,6 +1,6 @@ -package java.com.baeldung.newfeatures; +package com.baeldung.newfeatures; -import org.junit.Test; +import org.junit.jupiter.api.Test; import static org.junit.Assert.assertEquals; diff --git a/core-java-modules/core-java-12/src/test/java/com/baeldung/newfeatures/TeeingCollectorUnitTest.java b/core-java-modules/core-java-12/src/test/java/com/baeldung/newfeatures/TeeingCollectorUnitTest.java index 30a5cb40a7..a925e693ff 100644 --- a/core-java-modules/core-java-12/src/test/java/com/baeldung/newfeatures/TeeingCollectorUnitTest.java +++ b/core-java-modules/core-java-12/src/test/java/com/baeldung/newfeatures/TeeingCollectorUnitTest.java @@ -1,6 +1,6 @@ -package java.com.baeldung.newfeatures; +package com.baeldung.newfeatures; -import org.junit.Test; +import org.junit.jupiter.api.Test; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -13,6 +13,6 @@ public class TeeingCollectorUnitTest { public void givenSetOfNumbers_thenCalculateAverage() { double mean = Stream.of(1, 2, 3, 4, 5) .collect(Collectors.teeing(Collectors.summingDouble(i -> i), Collectors.counting(), (sum, count) -> sum / count)); - assertEquals(3.0, mean); + assertEquals(3.0, mean, 0); } } diff --git a/patterns/simplehexagonalexample/pom.xml b/patterns/simplehexagonalexample/pom.xml new file mode 100644 index 0000000000..b73e81be44 --- /dev/null +++ b/patterns/simplehexagonalexample/pom.xml @@ -0,0 +1,31 @@ + + 4.0.0 + 1.0.0-SNAPSHOT + simple-hexagonal-example + simpleHexagonalExample + + + com.baeldung + parent-boot-2 + 0.0.1-SNAPSHOT + ../../parent-boot-2 + + + + + org.springframework.boot + spring-boot-starter-web + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + \ No newline at end of file diff --git a/patterns/simplehexagonalexample/src/main/java/com/baeldung/simplehexagonalex/DailyQuoteMain.java b/patterns/simplehexagonalexample/src/main/java/com/baeldung/simplehexagonalex/DailyQuoteMain.java new file mode 100644 index 0000000000..de8b2f4793 --- /dev/null +++ b/patterns/simplehexagonalexample/src/main/java/com/baeldung/simplehexagonalex/DailyQuoteMain.java @@ -0,0 +1,32 @@ +package com.baeldung.simplehexagonalex; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.CommandLineRunner; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +import com.baeldung.simplehexagonalex.controller.QuoteCliController; +import com.baeldung.simplehexagonalex.domain.QuoteOfTheDay; + +@SpringBootApplication +public class DailyQuoteMain implements CommandLineRunner { + + private static final Logger LOG = LoggerFactory.getLogger(DailyQuoteMain.class); + @Autowired + private QuoteCliController quoteCliController; + + public static void main(final String[] args) { + + SpringApplication.run(DailyQuoteMain.class, args); + } + + @Override + public void run(String... args) throws Exception { + + QuoteOfTheDay quoteOfTheDay = quoteCliController.getQuote("cliController"); + + LOG.info(quoteOfTheDay.toString()); + } +} diff --git a/patterns/simplehexagonalexample/src/main/java/com/baeldung/simplehexagonalex/controller/QuoteCliController.java b/patterns/simplehexagonalexample/src/main/java/com/baeldung/simplehexagonalex/controller/QuoteCliController.java new file mode 100644 index 0000000000..9ecb2bf822 --- /dev/null +++ b/patterns/simplehexagonalexample/src/main/java/com/baeldung/simplehexagonalex/controller/QuoteCliController.java @@ -0,0 +1,24 @@ +package com.baeldung.simplehexagonalex.controller; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import com.baeldung.simplehexagonalex.domain.QuoteOfTheDay; +import com.baeldung.simplehexagonalex.domain.service.QuoteService; + +@Component +public class QuoteCliController { + + private static final Logger LOG = LoggerFactory.getLogger(QuoteCliController.class); + + @Autowired + private QuoteService quoteService; + + public QuoteOfTheDay getQuote(String userId) { + + LOG.info("Getting quote"); + return quoteService.getQuote(userId); + } +} diff --git a/patterns/simplehexagonalexample/src/main/java/com/baeldung/simplehexagonalex/controller/QuoteRestController.java b/patterns/simplehexagonalexample/src/main/java/com/baeldung/simplehexagonalex/controller/QuoteRestController.java new file mode 100644 index 0000000000..061cff8cec --- /dev/null +++ b/patterns/simplehexagonalexample/src/main/java/com/baeldung/simplehexagonalex/controller/QuoteRestController.java @@ -0,0 +1,24 @@ +package com.baeldung.simplehexagonalex.controller; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.baeldung.simplehexagonalex.domain.QuoteOfTheDay; +import com.baeldung.simplehexagonalex.domain.service.QuoteService; + +@RestController +@RequestMapping("/quote") +public class QuoteRestController { + + @Autowired + private QuoteService quoteService; + + @GetMapping(path = "/{userId}") + public QuoteOfTheDay getEmployee(@PathVariable("userId") String userId) { + return quoteService.getQuote(userId); + } + +} diff --git a/patterns/simplehexagonalexample/src/main/java/com/baeldung/simplehexagonalex/domain/QuoteOfTheDay.java b/patterns/simplehexagonalexample/src/main/java/com/baeldung/simplehexagonalex/domain/QuoteOfTheDay.java new file mode 100644 index 0000000000..c74c224c70 --- /dev/null +++ b/patterns/simplehexagonalexample/src/main/java/com/baeldung/simplehexagonalex/domain/QuoteOfTheDay.java @@ -0,0 +1,56 @@ +package com.baeldung.simplehexagonalex.domain; + +import java.util.Objects; + +public class QuoteOfTheDay { + + private String userName; + private String quote; + private String provider; + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public String getQuote() { + return quote; + } + + public void setQuote(String quote) { + this.quote = quote; + } + + public String getProvider() { + return provider; + } + + public void setProvider(String provider) { + this.provider = provider; + } + + @Override + public int hashCode() { + return Objects.hash(provider, quote, userName); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + QuoteOfTheDay other = (QuoteOfTheDay) obj; + return Objects.equals(provider, other.provider) && Objects.equals(quote, other.quote) && Objects.equals(userName, other.userName); + } + + @Override + public String toString() { + return "QuoteOfTheDay [userName=" + userName + ", quote=" + quote + ", provider=" + provider + "]"; + } +} diff --git a/patterns/simplehexagonalexample/src/main/java/com/baeldung/simplehexagonalex/domain/repository/QuoteOfTheDayFromProvider.java b/patterns/simplehexagonalexample/src/main/java/com/baeldung/simplehexagonalex/domain/repository/QuoteOfTheDayFromProvider.java new file mode 100644 index 0000000000..7e70cebd12 --- /dev/null +++ b/patterns/simplehexagonalexample/src/main/java/com/baeldung/simplehexagonalex/domain/repository/QuoteOfTheDayFromProvider.java @@ -0,0 +1,8 @@ +package com.baeldung.simplehexagonalex.domain.repository; + +import com.baeldung.simplehexagonalex.domain.QuoteOfTheDay; + +public interface QuoteOfTheDayFromProvider { + + QuoteOfTheDay getQuote(); +} diff --git a/patterns/simplehexagonalexample/src/main/java/com/baeldung/simplehexagonalex/domain/service/QuoteAggregator.java b/patterns/simplehexagonalexample/src/main/java/com/baeldung/simplehexagonalex/domain/service/QuoteAggregator.java new file mode 100644 index 0000000000..16f7015ace --- /dev/null +++ b/patterns/simplehexagonalexample/src/main/java/com/baeldung/simplehexagonalex/domain/service/QuoteAggregator.java @@ -0,0 +1,22 @@ +package com.baeldung.simplehexagonalex.domain.service; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.baeldung.simplehexagonalex.domain.QuoteOfTheDay; +import com.baeldung.simplehexagonalex.domain.repository.QuoteOfTheDayFromProvider; + +@Service +public class QuoteAggregator implements QuoteService { + + @Autowired + private QuoteOfTheDayFromProvider quoteOfTheDayFromProvider; + + @Override + public QuoteOfTheDay getQuote(String userName) { + + QuoteOfTheDay quoteOfTheDay = quoteOfTheDayFromProvider.getQuote(); + quoteOfTheDay.setUserName(userName); + return quoteOfTheDay; + } +} diff --git a/patterns/simplehexagonalexample/src/main/java/com/baeldung/simplehexagonalex/domain/service/QuoteService.java b/patterns/simplehexagonalexample/src/main/java/com/baeldung/simplehexagonalex/domain/service/QuoteService.java new file mode 100644 index 0000000000..300387a41d --- /dev/null +++ b/patterns/simplehexagonalexample/src/main/java/com/baeldung/simplehexagonalex/domain/service/QuoteService.java @@ -0,0 +1,8 @@ +package com.baeldung.simplehexagonalex.domain.service; + +import com.baeldung.simplehexagonalex.domain.QuoteOfTheDay; + +public interface QuoteService { + + QuoteOfTheDay getQuote(String userName); +} diff --git a/patterns/simplehexagonalexample/src/main/java/com/baeldung/simplehexagonalex/repository/primary/quoteadapter/ProviderQuote.java b/patterns/simplehexagonalexample/src/main/java/com/baeldung/simplehexagonalex/repository/primary/quoteadapter/ProviderQuote.java new file mode 100644 index 0000000000..0cbbc60726 --- /dev/null +++ b/patterns/simplehexagonalexample/src/main/java/com/baeldung/simplehexagonalex/repository/primary/quoteadapter/ProviderQuote.java @@ -0,0 +1,109 @@ +package com.baeldung.simplehexagonalex.repository.primary.quoteadapter; + +import java.util.List; +import java.util.Objects; + +public class ProviderQuote { + + private String quote; + private String length; + private String author; + private List tags; + private String category; + private String language; + private String date; + private String permalink; + private String id; + private String background; + private String title; + + public ProviderQuote() { + + } + + public ProviderQuote(String quote, String length, String author, List tags, String category, String language, String date, String permalink, String id, String background, String title) { + super(); + this.quote = quote; + this.length = length; + this.author = author; + this.tags = tags; + this.category = category; + this.language = language; + this.date = date; + this.permalink = permalink; + this.id = id; + this.background = background; + this.title = title; + } + + public String getQuote() { + return quote; + } + + public String getLength() { + return length; + } + + public String getAuthor() { + return author; + } + + public List getTags() { + return tags; + } + + public String getCategory() { + return category; + } + + public String getLanguage() { + return language; + } + + public String getDate() { + return date; + } + + public String getPermalink() { + return permalink; + } + + public String getId() { + return id; + } + + public String getBackground() { + return background; + } + + public String getTitle() { + return title; + } + + public void setId(String id) { + this.id = id; + } + + @Override + public int hashCode() { + return Objects.hash(id); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + ProviderQuote other = (ProviderQuote) obj; + return Objects.equals(id, other.id); + } + + @Override + public String toString() { + return "TheysaysoQuote [quote=" + quote + ", length=" + length + ", " + "author=" + author + ", tags=" + tags + ", category=" + category + ", language=" + language + ", date=" + date + ", permalink=" + permalink + ", id=" + id + ", background=" + + background + ", title=" + title + "]"; + } +} diff --git a/patterns/simplehexagonalexample/src/main/java/com/baeldung/simplehexagonalex/repository/primary/quoteadapter/ProviderQuoteAdapter.java b/patterns/simplehexagonalexample/src/main/java/com/baeldung/simplehexagonalex/repository/primary/quoteadapter/ProviderQuoteAdapter.java new file mode 100644 index 0000000000..ded08f7b18 --- /dev/null +++ b/patterns/simplehexagonalexample/src/main/java/com/baeldung/simplehexagonalex/repository/primary/quoteadapter/ProviderQuoteAdapter.java @@ -0,0 +1,54 @@ +package com.baeldung.simplehexagonalex.repository.primary.quoteadapter; + +import java.net.URI; + +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Primary; +import org.springframework.core.env.Environment; +import org.springframework.stereotype.Service; + +import com.baeldung.simplehexagonalex.domain.QuoteOfTheDay; +import com.baeldung.simplehexagonalex.domain.repository.QuoteOfTheDayFromProvider; +import com.fasterxml.jackson.databind.ObjectMapper; + +@Service("providerQuoteAdapter") +@Primary +public class ProviderQuoteAdapter implements QuoteOfTheDayFromProvider { + + @Autowired + private Environment env; + + @Override + public QuoteOfTheDay getQuote() { + + QuoteOfTheDay quoteOfTheDay = new QuoteOfTheDay(); + ProviderQuoteEnvelope providerQuote; + try { + providerQuote = getProviderQuote(); + quoteOfTheDay.setQuote(providerQuote.getContents() + .getQuotes() + .get(0) + .getQuote()); + quoteOfTheDay.setProvider(providerQuote.getCopyright() + .getUrl()); + } catch (Exception e) { + quoteOfTheDay.setQuote("Unable to get the quote"); + quoteOfTheDay.setProvider("none"); + } + return quoteOfTheDay; + } + + private ProviderQuoteEnvelope getProviderQuote() throws Exception { + + HttpGet request = new HttpGet(URI.create(env.getProperty("theysayso.quote.provider.url"))); + CloseableHttpClient client = HttpClients.createDefault(); + CloseableHttpResponse response = client.execute(request); + ProviderQuoteEnvelope providersQuote = new ObjectMapper().readValue(response.getEntity() + .getContent(), ProviderQuoteEnvelope.class); + return providersQuote; + } +} diff --git a/patterns/simplehexagonalexample/src/main/java/com/baeldung/simplehexagonalex/repository/primary/quoteadapter/ProviderQuoteEnvelope.java b/patterns/simplehexagonalexample/src/main/java/com/baeldung/simplehexagonalex/repository/primary/quoteadapter/ProviderQuoteEnvelope.java new file mode 100644 index 0000000000..611549f23d --- /dev/null +++ b/patterns/simplehexagonalexample/src/main/java/com/baeldung/simplehexagonalex/repository/primary/quoteadapter/ProviderQuoteEnvelope.java @@ -0,0 +1,68 @@ +package com.baeldung.simplehexagonalex.repository.primary.quoteadapter; + +import java.util.List; + +public class ProviderQuoteEnvelope { + + private Success success; + private Contents contents; + private String baseurl; + private Copyright copyright; + + public ProviderQuoteEnvelope() { + + } + + public ProviderQuoteEnvelope(Success success, Contents contents, String baseurl, Copyright copyright) { + super(); + this.success = success; + this.contents = contents; + this.baseurl = baseurl; + this.copyright = copyright; + } + + public Success getSuccess() { + return success; + } + + public Contents getContents() { + return contents; + } + + public String getBaseurl() { + return baseurl; + } + + public Copyright getCopyright() { + return copyright; + } + + public class Contents { + private List quotes; + + public List getQuotes() { + return quotes; + } + } + + public class Copyright { + private int year; + private String url; + + public int getYear() { + return year; + } + + public String getUrl() { + return url; + } + } + + public class Success { + private int total; + + public int getTotal() { + return total; + } + } +} diff --git a/patterns/simplehexagonalexample/src/main/java/com/baeldung/simplehexagonalex/reposity/mock/quoteadapter/MockQuoteAdapter.java b/patterns/simplehexagonalexample/src/main/java/com/baeldung/simplehexagonalex/reposity/mock/quoteadapter/MockQuoteAdapter.java new file mode 100644 index 0000000000..54c28fc94e --- /dev/null +++ b/patterns/simplehexagonalexample/src/main/java/com/baeldung/simplehexagonalex/reposity/mock/quoteadapter/MockQuoteAdapter.java @@ -0,0 +1,20 @@ +package com.baeldung.simplehexagonalex.reposity.mock.quoteadapter; + +import org.springframework.stereotype.Service; + +import com.baeldung.simplehexagonalex.domain.QuoteOfTheDay; +import com.baeldung.simplehexagonalex.domain.repository.QuoteOfTheDayFromProvider; + +@Service +public class MockQuoteAdapter implements QuoteOfTheDayFromProvider { + + @Override + public QuoteOfTheDay getQuote() { + + QuoteOfTheDay quoteOfTheDay = new QuoteOfTheDay(); + quoteOfTheDay.setQuote("Mock quote of the day"); + quoteOfTheDay.setProvider("Mock Provider"); + + return quoteOfTheDay; + } +} diff --git a/patterns/simplehexagonalexample/src/main/resources/application.properties b/patterns/simplehexagonalexample/src/main/resources/application.properties new file mode 100644 index 0000000000..dd9413bfd5 --- /dev/null +++ b/patterns/simplehexagonalexample/src/main/resources/application.properties @@ -0,0 +1 @@ +theysayso.quote.provider.url=https://quotes.rest/qod?language=en \ No newline at end of file diff --git a/patterns/simplehexagonalexample/src/test/java/com/baeldung/simplehexagonalex/repository/primaryQuoteProvider/MockAccessProviderUnitTest.java b/patterns/simplehexagonalexample/src/test/java/com/baeldung/simplehexagonalex/repository/primaryQuoteProvider/MockAccessProviderUnitTest.java new file mode 100644 index 0000000000..602f7ea5d4 --- /dev/null +++ b/patterns/simplehexagonalexample/src/test/java/com/baeldung/simplehexagonalex/repository/primaryQuoteProvider/MockAccessProviderUnitTest.java @@ -0,0 +1,22 @@ +package com.baeldung.simplehexagonalex.repository.primaryQuoteProvider; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import org.junit.jupiter.api.Test; + +import com.baeldung.simplehexagonalex.domain.QuoteOfTheDay; +import com.baeldung.simplehexagonalex.reposity.mock.quoteadapter.MockQuoteAdapter; + +public class MockAccessProviderUnitTest { + + @Test + public void givenProvider_whenConnect_thenResponse() throws Exception { + + MockQuoteAdapter provider = new MockQuoteAdapter(); + QuoteOfTheDay quote = provider.getQuote(); + assertNotNull(quote); + assertEquals("Mock quote of the day", quote.getQuote()); + assertEquals("Mock Provider", quote.getProvider()); + } +} diff --git a/patterns/simplehexagonalexample/src/test/java/com/baeldung/simplehexagonalex/repository/primaryQuoteProvider/PrimaryAccessProviderIntegrationTest.java b/patterns/simplehexagonalexample/src/test/java/com/baeldung/simplehexagonalex/repository/primaryQuoteProvider/PrimaryAccessProviderIntegrationTest.java new file mode 100644 index 0000000000..47e1dde136 --- /dev/null +++ b/patterns/simplehexagonalexample/src/test/java/com/baeldung/simplehexagonalex/repository/primaryQuoteProvider/PrimaryAccessProviderIntegrationTest.java @@ -0,0 +1,28 @@ +package com.baeldung.simplehexagonalex.repository.primaryQuoteProvider; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.test.context.SpringBootTest; + +import com.baeldung.simplehexagonalex.domain.QuoteOfTheDay; +import com.baeldung.simplehexagonalex.domain.repository.QuoteOfTheDayFromProvider; + +@SpringBootTest +public class PrimaryAccessProviderIntegrationTest { + + @Autowired + @Qualifier("providerQuoteAdapter") + QuoteOfTheDayFromProvider provider; + + @Test + public void whenQuoteProvider_thenResponse() throws Exception { + + QuoteOfTheDay quote = provider.getQuote(); + assertNotNull(quote); + assertThat(quote.getProvider()).contains("theysaidso"); + } +} diff --git a/patterns/simplehexagonalexample/src/test/java/com/baeldung/simplehexagonalex/repository/primaryQuoteProvider/QuoteRequestIntegrationTest.java b/patterns/simplehexagonalexample/src/test/java/com/baeldung/simplehexagonalex/repository/primaryQuoteProvider/QuoteRequestIntegrationTest.java new file mode 100644 index 0000000000..552b5d51c2 --- /dev/null +++ b/patterns/simplehexagonalexample/src/test/java/com/baeldung/simplehexagonalex/repository/primaryQuoteProvider/QuoteRequestIntegrationTest.java @@ -0,0 +1,36 @@ +package com.baeldung.simplehexagonalex.repository.primaryQuoteProvider; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.MvcResult; + +@SpringBootTest +@AutoConfigureMockMvc +public class QuoteRequestIntegrationTest { + + @Autowired + private MockMvc mockMvc; + + @Test + public void whenRestQuoteRequest_thenResponse() throws Exception { + + MvcResult result = this.mockMvc.perform(get("/quote/tester")) + .andDo(print()) + .andExpect(status().isOk()) + .andReturn(); + + String content = result.getResponse() + .getContentAsString(); + + assertThat(content).contains("tester"); + assertThat(content).contains("theysaidso"); + } +} \ No newline at end of file diff --git a/patterns/simplehexagonalexample/src/test/resources/application.properties b/patterns/simplehexagonalexample/src/test/resources/application.properties new file mode 100644 index 0000000000..dd9413bfd5 --- /dev/null +++ b/patterns/simplehexagonalexample/src/test/resources/application.properties @@ -0,0 +1 @@ +theysayso.quote.provider.url=https://quotes.rest/qod?language=en \ No newline at end of file From 2009f8a73ca9afe70c22b603f5601f963089787a Mon Sep 17 00:00:00 2001 From: sampadawagde Date: Sat, 7 Aug 2021 12:43:58 +0530 Subject: [PATCH 18/82] JAVA-5892: Upgrade spring-boot-keycloak to the latest Spring Boot version --- spring-boot-modules/spring-boot-keycloak/pom.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spring-boot-modules/spring-boot-keycloak/pom.xml b/spring-boot-modules/spring-boot-keycloak/pom.xml index 1d7dedf127..505d486509 100644 --- a/spring-boot-modules/spring-boot-keycloak/pom.xml +++ b/spring-boot-modules/spring-boot-keycloak/pom.xml @@ -77,7 +77,8 @@ 13.0.1 - 2.4.7 + + 2.5.3 \ No newline at end of file From d43ac8d1b5802e94c7312c1ca1c2002f48c28541 Mon Sep 17 00:00:00 2001 From: Gerald Boersma Date: Sat, 7 Aug 2021 17:55:35 -0700 Subject: [PATCH 19/82] BAEL-5049 spring-cloud-dapr (#11063) * BAEL-5049 Added tutorial code for article. * BAEL-5049 Added readme. * Initial code for 2-javasdk to properly include as part of Spring Boot project. * Added binding with rabbitmq. * Removed 1-intro module. * Updates from comments. * Added .gitignore back in. * Cleaned up POMs. * Get rid of .gitignore. * Change controller to use GetMapping. Co-authored-by: Gerald Boersma --- .../dapr-config/basic-config.yaml | 5 +++ .../dapr-config/consul-config.yaml | 9 ++++ .../dapr-config/consul-zipkin-config.yaml | 13 ++++++ .../spring-cloud-dapr/gateway/pom.xml | 44 +++++++++++++++++++ .../java/org/example/gateway/GatewayApp.java | 11 +++++ .../main/resources/application-no-dapr.yml | 14 ++++++ .../main/resources/application-with-dapr.yml | 13 ++++++ .../spring-cloud-dapr/greeting/pom.xml | 33 ++++++++++++++ .../java/org/example/hello/GreetingApp.java | 11 +++++ .../org/example/hello/GreetingController.java | 22 ++++++++++ .../src/main/resources/application.yml | 2 + spring-cloud/spring-cloud-dapr/pom.xml | 19 ++++++++ 12 files changed, 196 insertions(+) create mode 100644 spring-cloud/spring-cloud-dapr/dapr-config/basic-config.yaml create mode 100644 spring-cloud/spring-cloud-dapr/dapr-config/consul-config.yaml create mode 100644 spring-cloud/spring-cloud-dapr/dapr-config/consul-zipkin-config.yaml create mode 100644 spring-cloud/spring-cloud-dapr/gateway/pom.xml create mode 100644 spring-cloud/spring-cloud-dapr/gateway/src/main/java/org/example/gateway/GatewayApp.java create mode 100644 spring-cloud/spring-cloud-dapr/gateway/src/main/resources/application-no-dapr.yml create mode 100644 spring-cloud/spring-cloud-dapr/gateway/src/main/resources/application-with-dapr.yml create mode 100644 spring-cloud/spring-cloud-dapr/greeting/pom.xml create mode 100644 spring-cloud/spring-cloud-dapr/greeting/src/main/java/org/example/hello/GreetingApp.java create mode 100644 spring-cloud/spring-cloud-dapr/greeting/src/main/java/org/example/hello/GreetingController.java create mode 100644 spring-cloud/spring-cloud-dapr/greeting/src/main/resources/application.yml create mode 100644 spring-cloud/spring-cloud-dapr/pom.xml diff --git a/spring-cloud/spring-cloud-dapr/dapr-config/basic-config.yaml b/spring-cloud/spring-cloud-dapr/dapr-config/basic-config.yaml new file mode 100644 index 0000000000..d80655f0a2 --- /dev/null +++ b/spring-cloud/spring-cloud-dapr/dapr-config/basic-config.yaml @@ -0,0 +1,5 @@ +apiVersion: dapr.io/v1alpha1 +kind: Configuration +metadata: + name: daprConfig +spec: {} diff --git a/spring-cloud/spring-cloud-dapr/dapr-config/consul-config.yaml b/spring-cloud/spring-cloud-dapr/dapr-config/consul-config.yaml new file mode 100644 index 0000000000..638af7cf0d --- /dev/null +++ b/spring-cloud/spring-cloud-dapr/dapr-config/consul-config.yaml @@ -0,0 +1,9 @@ +apiVersion: dapr.io/v1alpha1 +kind: Configuration +metadata: + name: daprConfig +spec: + nameResolution: + component: "consul" + configuration: + selfRegister: true diff --git a/spring-cloud/spring-cloud-dapr/dapr-config/consul-zipkin-config.yaml b/spring-cloud/spring-cloud-dapr/dapr-config/consul-zipkin-config.yaml new file mode 100644 index 0000000000..8e50decf03 --- /dev/null +++ b/spring-cloud/spring-cloud-dapr/dapr-config/consul-zipkin-config.yaml @@ -0,0 +1,13 @@ +apiVersion: dapr.io/v1alpha1 +kind: Configuration +metadata: + name: daprConfig +spec: + nameResolution: + component: "consul" + configuration: + selfRegister: true + tracing: + samplingRate: "1" + zipkin: + endpointAddress: "http://localhost:9411/api/v2/spans" diff --git a/spring-cloud/spring-cloud-dapr/gateway/pom.xml b/spring-cloud/spring-cloud-dapr/gateway/pom.xml new file mode 100644 index 0000000000..13c1556cfe --- /dev/null +++ b/spring-cloud/spring-cloud-dapr/gateway/pom.xml @@ -0,0 +1,44 @@ + + + 4.0.0 + com.baeldung.spring.cloud.spring-cloud-dapr + gateway + 1.0-SNAPSHOT + + org.springframework.boot + spring-boot-starter-parent + 2.5.2 + + + + 11 + 11 + + + + + org.springframework.cloud + spring-cloud-dependencies + 2020.0.3 + pom + import + + + + + + org.springframework.cloud + spring-cloud-starter-gateway + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/spring-cloud/spring-cloud-dapr/gateway/src/main/java/org/example/gateway/GatewayApp.java b/spring-cloud/spring-cloud-dapr/gateway/src/main/java/org/example/gateway/GatewayApp.java new file mode 100644 index 0000000000..7166b5b31f --- /dev/null +++ b/spring-cloud/spring-cloud-dapr/gateway/src/main/java/org/example/gateway/GatewayApp.java @@ -0,0 +1,11 @@ +package org.example.gateway; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class GatewayApp { + public static void main(String[] args) { + SpringApplication.run(GatewayApp.class, args); + } +} diff --git a/spring-cloud/spring-cloud-dapr/gateway/src/main/resources/application-no-dapr.yml b/spring-cloud/spring-cloud-dapr/gateway/src/main/resources/application-no-dapr.yml new file mode 100644 index 0000000000..f25d7f0128 --- /dev/null +++ b/spring-cloud/spring-cloud-dapr/gateway/src/main/resources/application-no-dapr.yml @@ -0,0 +1,14 @@ +server: + port: 3000 + +spring: + cloud: + gateway: + routes: + - id: greeting-service + uri: http://localhost:3001/ + predicates: + - Path=/** + filters: + - RewritePath=/?(?.*), /$\{segment} + diff --git a/spring-cloud/spring-cloud-dapr/gateway/src/main/resources/application-with-dapr.yml b/spring-cloud/spring-cloud-dapr/gateway/src/main/resources/application-with-dapr.yml new file mode 100644 index 0000000000..ee67c76339 --- /dev/null +++ b/spring-cloud/spring-cloud-dapr/gateway/src/main/resources/application-with-dapr.yml @@ -0,0 +1,13 @@ +server: + port: 3000 + +spring: + cloud: + gateway: + routes: + - id: greeting-service + uri: http://localhost:4000/ + predicates: + - Path=/** + filters: + - RewritePath=//?(?.*), /v1.0/invoke/greeting/method/$\{segment} diff --git a/spring-cloud/spring-cloud-dapr/greeting/pom.xml b/spring-cloud/spring-cloud-dapr/greeting/pom.xml new file mode 100644 index 0000000000..58de7240a2 --- /dev/null +++ b/spring-cloud/spring-cloud-dapr/greeting/pom.xml @@ -0,0 +1,33 @@ + + + 4.0.0 + com.baeldung.spring.cloud.spring-cloud-dapr + greeting + 1.0-SNAPSHOT + + org.springframework.boot + spring-boot-starter-parent + 2.5.2 + + + + 11 + 11 + + + + org.springframework.boot + spring-boot-starter-web + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/spring-cloud/spring-cloud-dapr/greeting/src/main/java/org/example/hello/GreetingApp.java b/spring-cloud/spring-cloud-dapr/greeting/src/main/java/org/example/hello/GreetingApp.java new file mode 100644 index 0000000000..2feca49daa --- /dev/null +++ b/spring-cloud/spring-cloud-dapr/greeting/src/main/java/org/example/hello/GreetingApp.java @@ -0,0 +1,11 @@ +package org.example.hello; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class GreetingApp { + public static void main(String[] args) { + SpringApplication.run(GreetingApp.class, args); + } +} diff --git a/spring-cloud/spring-cloud-dapr/greeting/src/main/java/org/example/hello/GreetingController.java b/spring-cloud/spring-cloud-dapr/greeting/src/main/java/org/example/hello/GreetingController.java new file mode 100644 index 0000000000..5210add4e0 --- /dev/null +++ b/spring-cloud/spring-cloud-dapr/greeting/src/main/java/org/example/hello/GreetingController.java @@ -0,0 +1,22 @@ +package org.example.hello; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class GreetingController { + @GetMapping(value = "/") + public String getGreeting() { + return "Welcome to the greeting service."; + } + + @GetMapping(value = "/hello") + public String getHello() { + return "Hello world!"; + } + + @GetMapping(value = "/goodbye") + public String getGoodbye() { + return "Goodbye, cruel world!"; + } +} diff --git a/spring-cloud/spring-cloud-dapr/greeting/src/main/resources/application.yml b/spring-cloud/spring-cloud-dapr/greeting/src/main/resources/application.yml new file mode 100644 index 0000000000..7147f91d26 --- /dev/null +++ b/spring-cloud/spring-cloud-dapr/greeting/src/main/resources/application.yml @@ -0,0 +1,2 @@ +server: + port: 3001 diff --git a/spring-cloud/spring-cloud-dapr/pom.xml b/spring-cloud/spring-cloud-dapr/pom.xml new file mode 100644 index 0000000000..76d3cbdaf8 --- /dev/null +++ b/spring-cloud/spring-cloud-dapr/pom.xml @@ -0,0 +1,19 @@ + + + 4.0.0 + spring-cloud-dapr + pom + + + com.baeldung.spring.cloud + spring-cloud + 1.0.0-SNAPSHOT + + + + gateway + greeting + + From 58723823d31458aa50ff6e1c0473ca47004da0e7 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 11 Aug 2021 11:33:49 +0800 Subject: [PATCH 20/82] Update README.md --- core-java-modules/core-java-lang-operators-2/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-lang-operators-2/README.md b/core-java-modules/core-java-lang-operators-2/README.md index 1a4c01c6e5..bc1809a4a7 100644 --- a/core-java-modules/core-java-lang-operators-2/README.md +++ b/core-java-modules/core-java-lang-operators-2/README.md @@ -5,3 +5,4 @@ This module contains articles about Java operators ## Relevant Articles: - [Logical vs Bitwise OR Operator](https://www.baeldung.com/java-logical-vs-bitwise-or-operator) +- [Bitmasking in Java with Bitwise Operators](https://www.baeldung.com/java-bitmasking) From a00d8462e1bbd0a7bd851ab833cab9a31298c907 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 11 Aug 2021 11:38:19 +0800 Subject: [PATCH 21/82] Create README.md --- spring-cloud/spring-cloud-dapr/README.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 spring-cloud/spring-cloud-dapr/README.md diff --git a/spring-cloud/spring-cloud-dapr/README.md b/spring-cloud/spring-cloud-dapr/README.md new file mode 100644 index 0000000000..8f6ccfd9b6 --- /dev/null +++ b/spring-cloud/spring-cloud-dapr/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: + +- [An Intro to Dapr with Spring Cloud Gateway](https://www.baeldung.com/dapr-spring-cloud-gateway) From 1ddde25b1c030f2e0463df894113052bced3b1b5 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 11 Aug 2021 11:41:11 +0800 Subject: [PATCH 22/82] Create README.md --- maven-modules/host-maven-repo-example/README.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 maven-modules/host-maven-repo-example/README.md diff --git a/maven-modules/host-maven-repo-example/README.md b/maven-modules/host-maven-repo-example/README.md new file mode 100644 index 0000000000..032be2416c --- /dev/null +++ b/maven-modules/host-maven-repo-example/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: + +- [Hosting a Maven Repository on GitHub](https://www.baeldung.com/maven-repo-github) From 58b12b04f20123623bc59db95629f3c58ba3837e Mon Sep 17 00:00:00 2001 From: Nguyen Nam Thai Date: Thu, 12 Aug 2021 12:46:15 +0700 Subject: [PATCH 23/82] BAEL-4883 Update Reactor version --- reactor-core/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reactor-core/pom.xml b/reactor-core/pom.xml index 6bd725b3b5..c13dda63d5 100644 --- a/reactor-core/pom.xml +++ b/reactor-core/pom.xml @@ -41,8 +41,8 @@ - 3.3.9.RELEASE + 3.4.9 3.6.1 - \ No newline at end of file + From b30c3976be7acf11731d597b52601aa604f5bd6a Mon Sep 17 00:00:00 2001 From: sharifi Date: Thu, 12 Aug 2021 11:17:50 +0430 Subject: [PATCH 24/82] BAEL-2670: change assertTrue(a==b) to assertEquals(a,b,delta) --- .../MicrometerAtlasIntegrationTest.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/metrics/src/test/java/com/baeldung/metrics/micrometer/MicrometerAtlasIntegrationTest.java b/metrics/src/test/java/com/baeldung/metrics/micrometer/MicrometerAtlasIntegrationTest.java index a5a8136ecb..02ef926794 100644 --- a/metrics/src/test/java/com/baeldung/metrics/micrometer/MicrometerAtlasIntegrationTest.java +++ b/metrics/src/test/java/com/baeldung/metrics/micrometer/MicrometerAtlasIntegrationTest.java @@ -119,9 +119,9 @@ public class MicrometerAtlasIntegrationTest { .counter()); assertTrue(counterOptional.isPresent()); - assertTrue(counterOptional + assertEquals(counterOptional .get() - .count() == 2.0); + .count() , 2.0, 0.0); } @Test @@ -134,10 +134,10 @@ public class MicrometerAtlasIntegrationTest { .register(registry); counter.increment(2.0); - assertTrue(counter.count() == 2); + assertEquals(counter.count(), 2, 0); counter.increment(-1); - assertTrue(counter.count() == 1); + assertEquals(counter.count(), 1, 0); } @Test @@ -153,7 +153,7 @@ public class MicrometerAtlasIntegrationTest { timer.record(30, TimeUnit.MILLISECONDS); - assertTrue(2 == timer.count()); + assertEquals(2, timer.count(), 0); assertThat(timer.totalTime(TimeUnit.MILLISECONDS)).isBetween(40.0, 55.0); } @@ -183,10 +183,10 @@ public class MicrometerAtlasIntegrationTest { .builder("cache.size", list, List::size) .register(registry); - assertTrue(gauge.value() == 0.0); + assertEquals(gauge.value(), 0.0, 0.0); list.add("1"); - assertTrue(gauge.value() == 1.0); + assertEquals(gauge.value(), 1.0, 0.0); } @Test @@ -200,8 +200,8 @@ public class MicrometerAtlasIntegrationTest { distributionSummary.record(4); distributionSummary.record(5); - assertTrue(3 == distributionSummary.count()); - assertTrue(12 == distributionSummary.totalAmount()); + assertEquals(3, distributionSummary.count(), 0); + assertEquals(12, distributionSummary.totalAmount(), 0); } @Test From c99989e5992223748f0a93e7df5086375b07e9a3 Mon Sep 17 00:00:00 2001 From: Mateusz Szablak Date: Thu, 5 Aug 2021 16:14:46 +0200 Subject: [PATCH 25/82] [BAEL-5041] Validate String as file name in Java --- .../StringFilenameValidationUtils.java | 61 ++++++++ .../StringFilenameValidationUnitTest.java | 130 ++++++++++++++++++ 2 files changed, 191 insertions(+) create mode 100644 core-java-modules/core-java-string-operations-3/src/main/java/com/baeldung/stringfilenamevalidaiton/StringFilenameValidationUtils.java create mode 100644 core-java-modules/core-java-string-operations-3/src/test/java/com/baeldung/stringfilenamevalidaiton/StringFilenameValidationUnitTest.java diff --git a/core-java-modules/core-java-string-operations-3/src/main/java/com/baeldung/stringfilenamevalidaiton/StringFilenameValidationUtils.java b/core-java-modules/core-java-string-operations-3/src/main/java/com/baeldung/stringfilenamevalidaiton/StringFilenameValidationUtils.java new file mode 100644 index 0000000000..1a86edd45a --- /dev/null +++ b/core-java-modules/core-java-string-operations-3/src/main/java/com/baeldung/stringfilenamevalidaiton/StringFilenameValidationUtils.java @@ -0,0 +1,61 @@ +package com.baeldung.stringfilenamevalidaiton; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Paths; +import java.util.Arrays; + +public class StringFilenameValidationUtils { + + public static final Character[] INVALID_WINDOWS_SPECIFIC_CHARS = {'"', '*', ':', '<', '>', '?', '\\', '|', 0x7F}; + public static final Character[] INVALID_UNIX_SPECIFIC_CHARS = {'\000'}; + + public static final String REGEX_PATTERN = "^[A-za-z0-9.]{1,255}$"; + + private StringFilenameValidationUtils() { + } + + public static boolean validateStringFilenameUsingIO(String filename) throws IOException { + File file = new File(filename); + boolean created = false; + try { + created = file.createNewFile(); + return created; + } finally { + if (created) { + file.delete(); + } + } + } + + public static boolean validateStringFilenameUsingNIO2(String filename) { + Paths.get(filename); + return true; + } + + public static boolean validateStringFilenameUsingContains(String filename) { + if (filename == null || filename.isEmpty() || filename.length() > 255) { + return false; + } + return Arrays.stream(getInvalidCharsByOS()) + .noneMatch(ch -> filename.contains(ch.toString())); + } + + public static boolean validateStringFilenameUsingRegex(String filename) { + if (filename == null) { + return false; + } + return filename.matches(REGEX_PATTERN); + } + + private static Character[] getInvalidCharsByOS() { + String os = System.getProperty("os.name").toLowerCase(); + if (os.contains("win")) { + return INVALID_WINDOWS_SPECIFIC_CHARS; + } else if (os.contains("nix") || os.contains("nux") || os.contains("mac")) { + return INVALID_UNIX_SPECIFIC_CHARS; + } else { + return new Character[]{}; + } + } +} diff --git a/core-java-modules/core-java-string-operations-3/src/test/java/com/baeldung/stringfilenamevalidaiton/StringFilenameValidationUnitTest.java b/core-java-modules/core-java-string-operations-3/src/test/java/com/baeldung/stringfilenamevalidaiton/StringFilenameValidationUnitTest.java new file mode 100644 index 0000000000..3e787f08be --- /dev/null +++ b/core-java-modules/core-java-string-operations-3/src/test/java/com/baeldung/stringfilenamevalidaiton/StringFilenameValidationUnitTest.java @@ -0,0 +1,130 @@ +package com.baeldung.stringfilenamevalidaiton; + +import org.apache.commons.lang3.RandomStringUtils; +import org.apache.commons.lang3.RandomUtils; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.EnabledOnOs; +import org.junit.jupiter.api.condition.OS; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.EmptySource; +import org.junit.jupiter.params.provider.MethodSource; +import org.junit.jupiter.params.provider.NullSource; + +import java.io.IOException; +import java.nio.file.InvalidPathException; +import java.util.Arrays; +import java.util.stream.Stream; + +import static com.baeldung.stringfilenamevalidaiton.StringFilenameValidationUtils.validateStringFilenameUsingContains; +import static com.baeldung.stringfilenamevalidaiton.StringFilenameValidationUtils.validateStringFilenameUsingIO; +import static com.baeldung.stringfilenamevalidaiton.StringFilenameValidationUtils.validateStringFilenameUsingNIO2; +import static com.baeldung.stringfilenamevalidaiton.StringFilenameValidationUtils.validateStringFilenameUsingRegex; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +public class StringFilenameValidationUnitTest { + + private static final String CORRECT_FILENAME_PATTERN = "baeldung.txt"; + + @ParameterizedTest + @MethodSource("correctAlphanumericFilenamesProvider") + public void givenCorrectAlphanumericRandomFilenameString_whenValidateUsingIO_thenReturnTrue(String filename) throws IOException { + assertThat(validateStringFilenameUsingIO(filename)).isTrue(); + assertThat(validateStringFilenameUsingNIO2(filename)).isTrue(); + assertThat(validateStringFilenameUsingContains(filename)).isTrue(); + assertThat(validateStringFilenameUsingRegex(filename)).isTrue(); + } + + @Test + public void givenTooLongFileNameString_whenValidate_thenIOAndCustomFailsNIO2Succeed() { + String filename = RandomStringUtils.randomAlphabetic(500); + assertThatThrownBy(() -> validateStringFilenameUsingIO(filename)) + .isInstanceOf(IOException.class) + .hasMessageContaining("File name too long"); + assertThat(validateStringFilenameUsingNIO2(filename)).isTrue(); + assertThat(validateStringFilenameUsingContains(filename)).isFalse(); + assertThat(validateStringFilenameUsingRegex(filename)).isFalse(); + } + + @ParameterizedTest + @NullSource + public void givenNullString_whenValidate_thenFails(String filename) { + assertThatThrownBy(() -> validateStringFilenameUsingIO(filename)) + .isInstanceOf(NullPointerException.class); + assertThatThrownBy(() -> validateStringFilenameUsingNIO2(filename)) + .isInstanceOf(NullPointerException.class); + assertThat(validateStringFilenameUsingContains(filename)).isFalse(); + assertThat(validateStringFilenameUsingRegex(filename)).isFalse(); + } + + @ParameterizedTest + @EmptySource + public void givenEmptyString_whenValidate_thenIOAndCustomFailsNIO2Succeed(String filename) { + assertThatThrownBy(() -> validateStringFilenameUsingIO(filename)) + .isInstanceOf(IOException.class); + assertThat(validateStringFilenameUsingNIO2(filename)).isTrue(); + assertThat(validateStringFilenameUsingContains(filename)).isFalse(); + assertThat(validateStringFilenameUsingRegex(filename)).isFalse(); + } + + @ParameterizedTest + @EnabledOnOs({OS.LINUX, OS.MAC}) + @MethodSource("filenamesWithInvalidWindowsChars") + public void givenFilenameStringWithInvalidWindowsCharAndIsUnix_whenValidateUsingIO_thenReturnTrue(String filename) throws IOException { + assertThat(validateStringFilenameUsingIO(filename)).isTrue(); + assertThat(validateStringFilenameUsingNIO2(filename)).isTrue(); + assertThat(validateStringFilenameUsingContains(filename)).isTrue(); + } + + @ParameterizedTest + @EnabledOnOs(OS.WINDOWS) + @MethodSource("filenamesWithInvalidWindowsChars") + public void givenFilenameStringWithInvalidWindowsCharAndIsWindows_whenValidateUsingIO_thenRaiseException(String filename) { + assertThatThrownBy(() -> validateStringFilenameUsingIO(filename)) + .isInstanceOf(IOException.class) + .hasMessageContaining("Invalid file path"); + + assertThatThrownBy(() -> validateStringFilenameUsingNIO2(filename)) + .isInstanceOf(InvalidPathException.class) + .hasMessage("character not allowed"); + + assertThat(validateStringFilenameUsingContains(filename)).isFalse(); + } + + @ParameterizedTest + @EnabledOnOs({OS.LINUX, OS.MAC}) + @MethodSource("filenamesWithInvalidUnixChars") + public void givenFilenameStringWithInvalidUnixCharAndIsUnix_whenValidate_thenRaiseException(String filename) { + assertThatThrownBy(() -> validateStringFilenameUsingIO(filename)) + .isInstanceOf(IOException.class) + .hasMessageContaining("Invalid file path"); + + assertThatThrownBy(() -> validateStringFilenameUsingNIO2(filename)) + .isInstanceOf(InvalidPathException.class) + .hasMessageContaining("character not allowed"); + + assertThat(validateStringFilenameUsingContains(filename)).isFalse(); + } + + + private static Stream correctAlphanumericFilenamesProvider() { + return Stream.generate(() -> RandomStringUtils.randomAlphanumeric(1, 10) + "." + RandomStringUtils.randomAlphabetic(3, 5)).limit(10); + } + + private static Stream filenamesWithInvalidWindowsChars() { + return Arrays.stream(StringFilenameValidationUtils.INVALID_WINDOWS_SPECIFIC_CHARS) + .map(character -> { + int idx = RandomUtils.nextInt(0, CORRECT_FILENAME_PATTERN.length()); + return CORRECT_FILENAME_PATTERN.substring(0, idx) + character + CORRECT_FILENAME_PATTERN.substring(idx); + }); + } + + private static Stream filenamesWithInvalidUnixChars() { + return Arrays.stream(StringFilenameValidationUtils.INVALID_UNIX_SPECIFIC_CHARS) + .map(character -> { + int idx = RandomUtils.nextInt(0, CORRECT_FILENAME_PATTERN.length()); + return CORRECT_FILENAME_PATTERN.substring(0, idx) + character + CORRECT_FILENAME_PATTERN.substring(idx); + }); + } + +} From 439b5a4fdef56d4a348acfaa2ded229316415fe3 Mon Sep 17 00:00:00 2001 From: Krzysztof Majewski Date: Fri, 13 Aug 2021 17:13:26 +0200 Subject: [PATCH 26/82] BAEL-5009 Spring Data with ArangoDB (#11115) * BAEL-5009 Spring Data with ArangoDB * BAEL-5009 Spring Data with ArangoDB * BAEL-5009 Spring Data with ArangoDB * BAEL-5009 Spring Data with ArangoDB * BAEL-5009 Spring Data with ArangoDB * BAEL-5009 Spring Data with ArangoDB Co-authored-by: majewsk6 --- persistence-modules/pom.xml | 1 + .../spring-data-arangodb/README.md | 6 + .../spring-data-arangodb/pom.xml | 29 +++++ .../src/live-test/resources/Dockerfile | 7 ++ .../src/live-test/resources/init-session.js | 1 + .../live-test/resources/live-test-setup.sh | 5 + .../live-test/resources/live-test-teardown.sh | 4 + .../src/live-test/resources/live-test.sh | 3 + .../ArangoDbSpringDataApplication.java | 13 ++ .../configuration/ArangoDbConfiguration.java | 24 ++++ .../com/baeldung/arangodb/model/Article.java | 86 +++++++++++++ .../baeldung/arangodb/model/ArticleLink.java | 39 ++++++ .../com/baeldung/arangodb/model/Author.java | 49 ++++++++ .../repository/ArticleRepository.java | 17 +++ .../src/main/resources/arangodb.properties | 3 + .../ArticleRepositoryIntegrationTest.java | 113 ++++++++++++++++++ 16 files changed, 400 insertions(+) create mode 100644 persistence-modules/spring-data-arangodb/README.md create mode 100644 persistence-modules/spring-data-arangodb/pom.xml create mode 100644 persistence-modules/spring-data-arangodb/src/live-test/resources/Dockerfile create mode 100644 persistence-modules/spring-data-arangodb/src/live-test/resources/init-session.js create mode 100644 persistence-modules/spring-data-arangodb/src/live-test/resources/live-test-setup.sh create mode 100644 persistence-modules/spring-data-arangodb/src/live-test/resources/live-test-teardown.sh create mode 100644 persistence-modules/spring-data-arangodb/src/live-test/resources/live-test.sh create mode 100644 persistence-modules/spring-data-arangodb/src/main/java/com/baeldung/arangodb/ArangoDbSpringDataApplication.java create mode 100644 persistence-modules/spring-data-arangodb/src/main/java/com/baeldung/arangodb/configuration/ArangoDbConfiguration.java create mode 100644 persistence-modules/spring-data-arangodb/src/main/java/com/baeldung/arangodb/model/Article.java create mode 100644 persistence-modules/spring-data-arangodb/src/main/java/com/baeldung/arangodb/model/ArticleLink.java create mode 100644 persistence-modules/spring-data-arangodb/src/main/java/com/baeldung/arangodb/model/Author.java create mode 100644 persistence-modules/spring-data-arangodb/src/main/java/com/baeldung/arangodb/repository/ArticleRepository.java create mode 100644 persistence-modules/spring-data-arangodb/src/main/resources/arangodb.properties create mode 100644 persistence-modules/spring-data-arangodb/src/test/java/com/baeldung/arangodb/ArticleRepositoryIntegrationTest.java diff --git a/persistence-modules/pom.xml b/persistence-modules/pom.xml index 86e496e3f8..a8f1d5c103 100644 --- a/persistence-modules/pom.xml +++ b/persistence-modules/pom.xml @@ -57,6 +57,7 @@ spring-boot-persistence spring-boot-persistence-h2 spring-boot-persistence-mongodb + spring-data-arangodb spring-data-cassandra spring-data-cassandra-test spring-data-cassandra-reactive diff --git a/persistence-modules/spring-data-arangodb/README.md b/persistence-modules/spring-data-arangodb/README.md new file mode 100644 index 0000000000..632d9a256e --- /dev/null +++ b/persistence-modules/spring-data-arangodb/README.md @@ -0,0 +1,6 @@ +========= + +## Spring Data ArangoDB + + +### Relevant Articles: diff --git a/persistence-modules/spring-data-arangodb/pom.xml b/persistence-modules/spring-data-arangodb/pom.xml new file mode 100644 index 0000000000..562f06ae40 --- /dev/null +++ b/persistence-modules/spring-data-arangodb/pom.xml @@ -0,0 +1,29 @@ + + + 4.0.0 + spring-data-arangodb + spring-data-arangodb + + + com.baeldung + parent-boot-2 + 0.0.1-SNAPSHOT + ../../parent-boot-2 + + + + + org.springframework.boot + spring-boot-starter + + + + com.arangodb + arangodb-spring-data + 3.5.0 + + + + \ No newline at end of file diff --git a/persistence-modules/spring-data-arangodb/src/live-test/resources/Dockerfile b/persistence-modules/spring-data-arangodb/src/live-test/resources/Dockerfile new file mode 100644 index 0000000000..8edb2bbbf6 --- /dev/null +++ b/persistence-modules/spring-data-arangodb/src/live-test/resources/Dockerfile @@ -0,0 +1,7 @@ +FROM arangodb:3.8.0 + +COPY init-session.js /docker-entrypoint-initdb.d/ + +EXPOSE 8529 + +ENV ARANGO_ROOT_PASSWORD=password diff --git a/persistence-modules/spring-data-arangodb/src/live-test/resources/init-session.js b/persistence-modules/spring-data-arangodb/src/live-test/resources/init-session.js new file mode 100644 index 0000000000..2e968884cc --- /dev/null +++ b/persistence-modules/spring-data-arangodb/src/live-test/resources/init-session.js @@ -0,0 +1 @@ +rs.initiate(); diff --git a/persistence-modules/spring-data-arangodb/src/live-test/resources/live-test-setup.sh b/persistence-modules/spring-data-arangodb/src/live-test/resources/live-test-setup.sh new file mode 100644 index 0000000000..b1a4cfb9d0 --- /dev/null +++ b/persistence-modules/spring-data-arangodb/src/live-test/resources/live-test-setup.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +docker image build -t spring-data-arangodb:live-test . + +docker run -p 8529:8529 -e ARANGO_ROOT_PASSWORD=password --name spring-data-arangodb-live-test spring-data-arangodb:live-test diff --git a/persistence-modules/spring-data-arangodb/src/live-test/resources/live-test-teardown.sh b/persistence-modules/spring-data-arangodb/src/live-test/resources/live-test-teardown.sh new file mode 100644 index 0000000000..2199cf7403 --- /dev/null +++ b/persistence-modules/spring-data-arangodb/src/live-test/resources/live-test-teardown.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +docker stop spring-data-arangodb-live-test +docker rm spring-data-arangodb-live-test diff --git a/persistence-modules/spring-data-arangodb/src/live-test/resources/live-test.sh b/persistence-modules/spring-data-arangodb/src/live-test/resources/live-test.sh new file mode 100644 index 0000000000..307a68a3bd --- /dev/null +++ b/persistence-modules/spring-data-arangodb/src/live-test/resources/live-test.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +mvn clean compile test -P live-all -f ../../../pom.xml diff --git a/persistence-modules/spring-data-arangodb/src/main/java/com/baeldung/arangodb/ArangoDbSpringDataApplication.java b/persistence-modules/spring-data-arangodb/src/main/java/com/baeldung/arangodb/ArangoDbSpringDataApplication.java new file mode 100644 index 0000000000..355001df06 --- /dev/null +++ b/persistence-modules/spring-data-arangodb/src/main/java/com/baeldung/arangodb/ArangoDbSpringDataApplication.java @@ -0,0 +1,13 @@ +package com.baeldung.arangodb; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class ArangoDbSpringDataApplication { + + public static void main(String[] args) { + SpringApplication.run(ArangoDbSpringDataApplication.class, args); + } + +} \ No newline at end of file diff --git a/persistence-modules/spring-data-arangodb/src/main/java/com/baeldung/arangodb/configuration/ArangoDbConfiguration.java b/persistence-modules/spring-data-arangodb/src/main/java/com/baeldung/arangodb/configuration/ArangoDbConfiguration.java new file mode 100644 index 0000000000..3aae10ce60 --- /dev/null +++ b/persistence-modules/spring-data-arangodb/src/main/java/com/baeldung/arangodb/configuration/ArangoDbConfiguration.java @@ -0,0 +1,24 @@ +package com.baeldung.arangodb.configuration; + +import com.arangodb.ArangoDB; +import com.arangodb.springframework.annotation.EnableArangoRepositories; +import com.arangodb.springframework.config.ArangoConfiguration; +import org.springframework.context.annotation.Configuration; + +@Configuration +@EnableArangoRepositories(basePackages = {"com.baeldung"}) +public class ArangoDbConfiguration implements ArangoConfiguration { + + @Override + public ArangoDB.Builder arango() { + return new ArangoDB.Builder() + .host("127.0.0.1", 8529) + .user("root") + .password("password"); + } + + @Override + public String database() { + return "baeldung-database"; + } +} diff --git a/persistence-modules/spring-data-arangodb/src/main/java/com/baeldung/arangodb/model/Article.java b/persistence-modules/spring-data-arangodb/src/main/java/com/baeldung/arangodb/model/Article.java new file mode 100644 index 0000000000..ea7ee1d2a6 --- /dev/null +++ b/persistence-modules/spring-data-arangodb/src/main/java/com/baeldung/arangodb/model/Article.java @@ -0,0 +1,86 @@ +package com.baeldung.arangodb.model; + +import com.arangodb.springframework.annotation.ArangoId; +import com.arangodb.springframework.annotation.Document; +import com.arangodb.springframework.annotation.Relations; +import org.springframework.data.annotation.Id; + +import java.time.ZonedDateTime; +import java.util.Collection; + +@Document("articles") +public class Article { + + @Id + private String id; + + @ArangoId + private String arangoId; + + private String name; + private String author; + private ZonedDateTime publishDate; + private String htmlContent; + + @Relations(edges = ArticleLink.class, lazy = true) + private Collection authors; + + public Article() { + super(); + } + + public Article(String name, String author, ZonedDateTime publishDate, String htmlContent) { + this.name = name; + this.author = author; + this.publishDate = publishDate; + this.htmlContent = htmlContent; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getArangoId() { + return arangoId; + } + + public void setArangoId(String arangoId) { + this.arangoId = arangoId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getAuthor() { + return author; + } + + public void setAuthor(String author) { + this.author = author; + } + + public ZonedDateTime getPublishDate() { + return publishDate; + } + + public void setPublishDate(ZonedDateTime publishDate) { + this.publishDate = publishDate; + } + + public String getHtmlContent() { + return htmlContent; + } + + public void setHtmlContent(String htmlContent) { + this.htmlContent = htmlContent; + } +} diff --git a/persistence-modules/spring-data-arangodb/src/main/java/com/baeldung/arangodb/model/ArticleLink.java b/persistence-modules/spring-data-arangodb/src/main/java/com/baeldung/arangodb/model/ArticleLink.java new file mode 100644 index 0000000000..18a35815e1 --- /dev/null +++ b/persistence-modules/spring-data-arangodb/src/main/java/com/baeldung/arangodb/model/ArticleLink.java @@ -0,0 +1,39 @@ +package com.baeldung.arangodb.model; + +import com.arangodb.springframework.annotation.Edge; +import com.arangodb.springframework.annotation.From; +import com.arangodb.springframework.annotation.To; + +@Edge +public class ArticleLink { + + @From + private Article article; + + @To + private Author author; + + public ArticleLink() { + } + + public ArticleLink(Article article, Author author) { + this.article = article; + this.author = author; + } + + public Article getArticle() { + return article; + } + + public void setArticle(Article article) { + this.article = article; + } + + public Author getAuthor() { + return author; + } + + public void setAuthor(Author author) { + this.author = author; + } +} diff --git a/persistence-modules/spring-data-arangodb/src/main/java/com/baeldung/arangodb/model/Author.java b/persistence-modules/spring-data-arangodb/src/main/java/com/baeldung/arangodb/model/Author.java new file mode 100644 index 0000000000..6e9fed3312 --- /dev/null +++ b/persistence-modules/spring-data-arangodb/src/main/java/com/baeldung/arangodb/model/Author.java @@ -0,0 +1,49 @@ +package com.baeldung.arangodb.model; + +import com.arangodb.springframework.annotation.ArangoId; +import com.arangodb.springframework.annotation.Document; +import org.springframework.data.annotation.Id; + +@Document("articles") +public class Author { + + @Id + private String id; + + @ArangoId + private String arangoId; + + private String name; + + public Author() { + super(); + } + + public Author(String name) { + this.name = name; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getArangoId() { + return arangoId; + } + + public void setArangoId(String arangoId) { + this.arangoId = arangoId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/persistence-modules/spring-data-arangodb/src/main/java/com/baeldung/arangodb/repository/ArticleRepository.java b/persistence-modules/spring-data-arangodb/src/main/java/com/baeldung/arangodb/repository/ArticleRepository.java new file mode 100644 index 0000000000..fdc434cae4 --- /dev/null +++ b/persistence-modules/spring-data-arangodb/src/main/java/com/baeldung/arangodb/repository/ArticleRepository.java @@ -0,0 +1,17 @@ +package com.baeldung.arangodb.repository; + +import com.arangodb.springframework.annotation.Query; +import com.arangodb.springframework.repository.ArangoRepository; +import com.baeldung.arangodb.model.Article; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +@Repository +public interface ArticleRepository extends ArangoRepository { + + Iterable
findByAuthor(String author); + + @Query("FOR a IN articles FILTER a.author == @author SORT a.publishDate ASC RETURN a") + Iterable
getByAuthor(@Param("author") String author); + +} diff --git a/persistence-modules/spring-data-arangodb/src/main/resources/arangodb.properties b/persistence-modules/spring-data-arangodb/src/main/resources/arangodb.properties new file mode 100644 index 0000000000..7f8ded478c --- /dev/null +++ b/persistence-modules/spring-data-arangodb/src/main/resources/arangodb.properties @@ -0,0 +1,3 @@ +arangodb.hosts=127.0.0.1:8529 +arangodb.user=root +arangodb.password=password \ No newline at end of file diff --git a/persistence-modules/spring-data-arangodb/src/test/java/com/baeldung/arangodb/ArticleRepositoryIntegrationTest.java b/persistence-modules/spring-data-arangodb/src/test/java/com/baeldung/arangodb/ArticleRepositoryIntegrationTest.java new file mode 100644 index 0000000000..1d4258688a --- /dev/null +++ b/persistence-modules/spring-data-arangodb/src/test/java/com/baeldung/arangodb/ArticleRepositoryIntegrationTest.java @@ -0,0 +1,113 @@ +package com.baeldung.arangodb; + +import com.baeldung.arangodb.model.Article; +import com.baeldung.arangodb.repository.ArticleRepository; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import java.time.ZonedDateTime; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +@SpringBootTest +public class ArticleRepositoryIntegrationTest { + + @Autowired + ArticleRepository articleRepository; + + @Test + public void givenNewArticle_whenSaveInArangoDb_thenDataIsCorrect() { + Article newArticle = new Article( + "ArangoDb with Spring Data", + "Baeldung Writer", + ZonedDateTime.now(), + "Some HTML content" + ); + + Article savedArticle = articleRepository.save(newArticle); + + assertNotNull(savedArticle.getId()); + assertNotNull(savedArticle.getArangoId()); + + assertEquals(savedArticle.getName(), newArticle.getName()); + assertEquals(savedArticle.getAuthor(), newArticle.getAuthor()); + assertEquals(savedArticle.getPublishDate(), newArticle.getPublishDate()); + assertEquals(savedArticle.getHtmlContent(), newArticle.getHtmlContent()); + } + + @Test + public void givenArticleId_whenReadFromArangoDb_thenDataIsCorrect() { + Article newArticle = new Article( + "ArangoDb with Spring Data", + "Baeldung Writer", + ZonedDateTime.now(), + "Some HTML content" + ); + + Article savedArticle = articleRepository.save(newArticle); + + String articleId = savedArticle.getId(); + + Optional
article = articleRepository.findById(articleId); + assertTrue(article.isPresent()); + + Article foundArticle = article.get(); + + assertEquals(foundArticle.getId(), articleId); + assertEquals(foundArticle.getArangoId(), savedArticle.getArangoId()); + assertEquals(foundArticle.getName(), savedArticle.getName()); + assertEquals(foundArticle.getAuthor(), savedArticle.getAuthor()); + assertEquals(foundArticle.getPublishDate(), savedArticle.getPublishDate()); + assertEquals(foundArticle.getHtmlContent(), savedArticle.getHtmlContent()); + } + + @Test + public void givenArticleId_whenDeleteFromArangoDb_thenDataIsGone() { + Article newArticle = new Article( + "ArangoDb with Spring Data", + "Baeldung Writer", + ZonedDateTime.now(), + "Some HTML content" + ); + + Article savedArticle = articleRepository.save(newArticle); + + String articleId = savedArticle.getId(); + + articleRepository.deleteById(articleId); + + Optional
article = articleRepository.findById(articleId); + assertFalse(article.isPresent()); + } + + @Test + public void givenAuthorName_whenGetByAuthor_thenListOfArticles() { + Article newArticle = new Article( + "ArangoDb with Spring Data", + "Baeldung Writer", + ZonedDateTime.now(), + "Some HTML content" + ); + articleRepository.save(newArticle); + + Iterable
articlesByAuthor = articleRepository.findByAuthor(newArticle.getAuthor()); + List
articlesByAuthorList = new ArrayList<>(); + articlesByAuthor.forEach(articlesByAuthorList::add); + + assertEquals(1, articlesByAuthorList.size()); + + Article foundArticle = articlesByAuthorList.get(0); + assertEquals(foundArticle.getName(), newArticle.getName()); + assertEquals(foundArticle.getAuthor(), newArticle.getAuthor()); + assertEquals(foundArticle.getPublishDate(), newArticle.getPublishDate()); + assertEquals(foundArticle.getHtmlContent(), newArticle.getHtmlContent()); + } + +} From f9dc97d25e7888a03394cf2a5237eb8fb0a20318 Mon Sep 17 00:00:00 2001 From: Haroon Khan Date: Fri, 13 Aug 2021 18:39:14 +0100 Subject: [PATCH 27/82] [JAVA-6221] Fix TimeApi unit test --- .../java/com/baeldung/java9/time/TimeApi.java | 20 +++++++++++++------ .../baeldung/java9/time/TimeApiUnitTest.java | 14 ++++++------- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/core-java-modules/core-java-date-operations-1/src/main/java/com/baeldung/java9/time/TimeApi.java b/core-java-modules/core-java-date-operations-1/src/main/java/com/baeldung/java9/time/TimeApi.java index ee4e35a77b..dee3135391 100644 --- a/core-java-modules/core-java-date-operations-1/src/main/java/com/baeldung/java9/time/TimeApi.java +++ b/core-java-modules/core-java-date-operations-1/src/main/java/com/baeldung/java9/time/TimeApi.java @@ -13,12 +13,9 @@ import java.util.stream.IntStream; public class TimeApi { public static List getDatesBetweenUsingJava7(Date startDate, Date endDate) { - List datesInRange = new ArrayList(); - Calendar calendar = new GregorianCalendar(); - calendar.setTime(startDate); - - Calendar endCalendar = new GregorianCalendar(); - endCalendar.setTime(endDate); + List datesInRange = new ArrayList<>(); + Calendar calendar = getCalendarWithoutTime(startDate); + Calendar endCalendar = getCalendarWithoutTime(endDate); while (calendar.before(endCalendar)) { Date result = calendar.getTime(); @@ -40,4 +37,15 @@ public class TimeApi { return startDate.datesUntil(endDate).collect(Collectors.toList()); } + private static Calendar getCalendarWithoutTime(Date date) { + Calendar calendar = new GregorianCalendar(); + calendar.setTime(date); + calendar.set(Calendar.HOUR, 0); + calendar.set(Calendar.HOUR_OF_DAY, 0); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MILLISECOND, 0); + return calendar; + } + } diff --git a/core-java-modules/core-java-date-operations-1/src/test/java/com/baeldung/java9/time/TimeApiUnitTest.java b/core-java-modules/core-java-date-operations-1/src/test/java/com/baeldung/java9/time/TimeApiUnitTest.java index 8813870c2b..c4e150c757 100644 --- a/core-java-modules/core-java-date-operations-1/src/test/java/com/baeldung/java9/time/TimeApiUnitTest.java +++ b/core-java-modules/core-java-date-operations-1/src/test/java/com/baeldung/java9/time/TimeApiUnitTest.java @@ -18,19 +18,19 @@ public class TimeApiUnitTest { Date endDate = endCalendar.getTime(); List dates = TimeApi.getDatesBetweenUsingJava7(startDate, endDate); - assertEquals(dates.size(), 2); + assertEquals(2, dates.size()); Calendar calendar = Calendar.getInstance(); Date date1 = calendar.getTime(); - assertEquals(dates.get(0).getDay(), date1.getDay()); - assertEquals(dates.get(0).getMonth(), date1.getMonth()); - assertEquals(dates.get(0).getYear(), date1.getYear()); + assertEquals(date1.getDay(), dates.get(0).getDay()); + assertEquals(date1.getMonth(), dates.get(0).getMonth()); + assertEquals(date1.getYear(), dates.get(0).getYear()); calendar.add(Calendar.DATE, 1); Date date2 = calendar.getTime(); - assertEquals(dates.get(1).getDay(), date2.getDay()); - assertEquals(dates.get(1).getMonth(), date2.getMonth()); - assertEquals(dates.get(1).getYear(), date2.getYear()); + assertEquals(date2.getDay(), dates.get(1).getDay()); + assertEquals(date2.getMonth(), dates.get(1).getMonth()); + assertEquals(date2.getYear(), dates.get(1).getYear()); } @Test From 8900c1ebba592f845b35230f8fbfa8156547beb8 Mon Sep 17 00:00:00 2001 From: Haroon Khan Date: Sat, 14 Aug 2021 08:38:04 +0100 Subject: [PATCH 28/82] [BAEL-5012] Intro to ksqlDB (#11113) * [BAEL-5012] Intro to ksqlDB * [BAEL-5012] Fix POM file and code cleanup * [BAEL-5012] Code cleanup --- ksqldb/pom.xml | 74 ++++++++ .../main/java/com/baeldung/ksqldb/Alert.java | 29 ++++ .../baeldung/ksqldb/KsqlDBApplication.java | 75 ++++++++ .../java/com/baeldung/ksqldb/Reading.java | 10 ++ .../com/baeldung/ksqldb/RowSubscriber.java | 60 +++++++ .../ksqldb/KsqlDBApplicationLiveTest.java | 160 ++++++++++++++++++ .../test/resources/docker/docker-compose.yml | 49 ++++++ ksqldb/src/test/resources/log4j.properties | 6 + pom.xml | 3 + 9 files changed, 466 insertions(+) create mode 100644 ksqldb/pom.xml create mode 100644 ksqldb/src/main/java/com/baeldung/ksqldb/Alert.java create mode 100644 ksqldb/src/main/java/com/baeldung/ksqldb/KsqlDBApplication.java create mode 100644 ksqldb/src/main/java/com/baeldung/ksqldb/Reading.java create mode 100644 ksqldb/src/main/java/com/baeldung/ksqldb/RowSubscriber.java create mode 100644 ksqldb/src/test/java/com/baeldung/ksqldb/KsqlDBApplicationLiveTest.java create mode 100644 ksqldb/src/test/resources/docker/docker-compose.yml create mode 100644 ksqldb/src/test/resources/log4j.properties diff --git a/ksqldb/pom.xml b/ksqldb/pom.xml new file mode 100644 index 0000000000..13867b16e3 --- /dev/null +++ b/ksqldb/pom.xml @@ -0,0 +1,74 @@ + + + 4.0.0 + ksqldb-app + 0.0.1-SNAPSHOT + ksqldb + + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + ../pom.xml + + + + + confluent + confluent-repo + http://packages.confluent.io/maven/ + + + + + + io.confluent.ksql + ksqldb-api-client + ${ksqldb.version} + + + + org.projectlombok + lombok + ${lombok.version} + + + + org.awaitility + awaitility + ${awaitility.version} + test + + + + org.assertj + assertj-core + ${assertj.version} + test + + + + org.testcontainers + testcontainers + ${testcontainers.version} + test + + + + org.testcontainers + junit-jupiter + ${testcontainers.version} + test + + + + + 6.2.0 + 3.20.2 + 4.1.0 + 1.15.3 + + + diff --git a/ksqldb/src/main/java/com/baeldung/ksqldb/Alert.java b/ksqldb/src/main/java/com/baeldung/ksqldb/Alert.java new file mode 100644 index 0000000000..badb00f114 --- /dev/null +++ b/ksqldb/src/main/java/com/baeldung/ksqldb/Alert.java @@ -0,0 +1,29 @@ +package com.baeldung.ksqldb; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@JsonIgnoreProperties(ignoreUnknown = true) +public class Alert { + + @JsonProperty(value = "SENSOR_ID") + private String sensorId; + + @JsonProperty(value = "START_PERIOD") + private String startPeriod; + + @JsonProperty(value = "END_PERIOD") + private String endPeriod; + + @JsonProperty(value = "AVERAGE_READING") + private double averageReading; + +} diff --git a/ksqldb/src/main/java/com/baeldung/ksqldb/KsqlDBApplication.java b/ksqldb/src/main/java/com/baeldung/ksqldb/KsqlDBApplication.java new file mode 100644 index 0000000000..35ad3ebbb0 --- /dev/null +++ b/ksqldb/src/main/java/com/baeldung/ksqldb/KsqlDBApplication.java @@ -0,0 +1,75 @@ +package com.baeldung.ksqldb; + +import io.confluent.ksql.api.client.Client; +import io.confluent.ksql.api.client.ExecuteStatementResult; +import io.confluent.ksql.api.client.KsqlObject; +import io.confluent.ksql.api.client.Row; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.reactivestreams.Subscriber; + +import java.util.Collection; +import java.util.Collections; +import java.util.Map; +import java.util.concurrent.CompletableFuture; + +@AllArgsConstructor +@Slf4j +public class KsqlDBApplication { + + private static final String CREATE_READINGS_STREAM = "" + + " CREATE STREAM readings (sensor_id VARCHAR KEY, timestamp VARCHAR, reading INT)" + + " WITH (KAFKA_TOPIC = 'readings'," + + " VALUE_FORMAT = 'JSON'," + + " TIMESTAMP = 'timestamp'," + + " TIMESTAMP_FORMAT = 'yyyy-MM-dd HH:mm:ss'," + + " PARTITIONS = 1);"; + + private static final String CREATE_ALERTS_TABLE = "" + + " CREATE TABLE alerts AS" + + " SELECT" + + " sensor_id," + + " TIMESTAMPTOSTRING(WINDOWSTART, 'yyyy-MM-dd HH:mm:ss', 'UTC') AS start_period," + + " TIMESTAMPTOSTRING(WINDOWEND, 'yyyy-MM-dd HH:mm:ss', 'UTC') AS end_period," + + " AVG(reading) AS average_reading" + + " FROM readings" + + " WINDOW TUMBLING (SIZE 30 MINUTES)" + + " GROUP BY sensor_id" + + " HAVING AVG(reading) > 25" + + " EMIT CHANGES;"; + + private static final String ALERTS_QUERY = "SELECT * FROM alerts EMIT CHANGES;"; + + private static final String READINGS_STREAM = "readings"; + + private static final Map PROPERTIES = Collections.singletonMap("auto.offset.reset", "earliest"); + + private final Client client; + + public CompletableFuture createReadingsStream() { + return client.executeStatement(CREATE_READINGS_STREAM, PROPERTIES); + } + + public CompletableFuture createAlertsTable() { + return client.executeStatement(CREATE_ALERTS_TABLE, PROPERTIES); + } + + public CompletableFuture insert(Collection rows) { + return CompletableFuture.allOf( + rows.stream() + .map(row -> client.insertInto(READINGS_STREAM, row)) + .toArray(CompletableFuture[]::new) + ); + } + + public CompletableFuture subscribeOnAlerts(Subscriber subscriber) { + return client.streamQuery(ALERTS_QUERY, PROPERTIES) + .thenAccept(streamedQueryResult -> streamedQueryResult.subscribe(subscriber)) + .whenComplete((result, ex) -> { + if (ex != null) { + log.error("Alerts push query failed", ex); + } + }); + } + +} diff --git a/ksqldb/src/main/java/com/baeldung/ksqldb/Reading.java b/ksqldb/src/main/java/com/baeldung/ksqldb/Reading.java new file mode 100644 index 0000000000..8964ff5801 --- /dev/null +++ b/ksqldb/src/main/java/com/baeldung/ksqldb/Reading.java @@ -0,0 +1,10 @@ +package com.baeldung.ksqldb; + +import lombok.Data; + +@Data +public class Reading { + private String id; + private String timestamp; + private int reading; +} diff --git a/ksqldb/src/main/java/com/baeldung/ksqldb/RowSubscriber.java b/ksqldb/src/main/java/com/baeldung/ksqldb/RowSubscriber.java new file mode 100644 index 0000000000..7d09583a39 --- /dev/null +++ b/ksqldb/src/main/java/com/baeldung/ksqldb/RowSubscriber.java @@ -0,0 +1,60 @@ +package com.baeldung.ksqldb; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import io.confluent.ksql.api.client.Row; +import lombok.extern.slf4j.Slf4j; +import org.reactivestreams.Subscriber; +import org.reactivestreams.Subscription; + +import java.util.ArrayList; +import java.util.List; + +@Slf4j +public class RowSubscriber implements Subscriber { + + private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); + + private final Class clazz; + + private Subscription subscription; + + public List consumedItems = new ArrayList<>(); + + public RowSubscriber(Class clazz) { + this.clazz = clazz; + } + + @Override + public synchronized void onSubscribe(Subscription subscription) { + log.info("Subscriber is subscribed."); + this.subscription = subscription; + subscription.request(1); + } + + @Override + public synchronized void onNext(Row row) { + String jsonString = row.asObject().toJsonString(); + log.info("Row JSON: {}", jsonString); + try { + T item = OBJECT_MAPPER.readValue(jsonString, this.clazz); + log.info("Item: {}", item); + consumedItems.add(item); + } catch (JsonProcessingException e) { + log.error("Unable to parse json", e); + } + + // Request the next row + subscription.request(1); + } + + @Override + public synchronized void onError(Throwable t) { + log.error("Received an error", t); + } + + @Override + public synchronized void onComplete() { + log.info("Query has ended."); + } +} diff --git a/ksqldb/src/test/java/com/baeldung/ksqldb/KsqlDBApplicationLiveTest.java b/ksqldb/src/test/java/com/baeldung/ksqldb/KsqlDBApplicationLiveTest.java new file mode 100644 index 0000000000..f13f418048 --- /dev/null +++ b/ksqldb/src/test/java/com/baeldung/ksqldb/KsqlDBApplicationLiveTest.java @@ -0,0 +1,160 @@ +package com.baeldung.ksqldb; + +import io.confluent.ksql.api.client.Client; +import io.confluent.ksql.api.client.ClientOptions; +import io.confluent.ksql.api.client.KsqlObject; +import io.confluent.ksql.api.client.QueryInfo; +import io.confluent.ksql.api.client.QueryInfo.QueryType; +import io.confluent.ksql.api.client.Row; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.testcontainers.containers.DockerComposeContainer; +import org.testcontainers.containers.wait.strategy.Wait; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; + +import java.io.File; +import java.time.Duration; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.TimeUnit; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.awaitility.Awaitility.await; +import static org.awaitility.Awaitility.given; + +@Testcontainers +class KsqlDBApplicationLiveTest { + + private static final File KSQLDB_COMPOSE_FILE = new File("src/test/resources/docker/docker-compose.yml"); + + private static final Map PROPERTIES = Collections.singletonMap("auto.offset.reset", "earliest"); + + private static final String KSQLDB_SERVER_HOST = "localhost"; + private static final int KSQLDB_SERVER_PORT = 8088; + + @Container + public static DockerComposeContainer dockerComposeContainer = + new DockerComposeContainer<>(KSQLDB_COMPOSE_FILE) + .withServices("zookeeper", "broker", "ksqldb-server") + .withExposedService("ksqldb-server", 8088, + Wait.forHealthcheck().withStartupTimeout(Duration.ofMinutes(5))) + .withLocalCompose(true); + + private KsqlDBApplication ksqlDBApplication; + + private Client client; + + @BeforeEach + void setup() { + ClientOptions options = ClientOptions.create() + .setHost(KSQLDB_SERVER_HOST) + .setPort(KSQLDB_SERVER_PORT); + client = Client.create(options); + + ksqlDBApplication = new KsqlDBApplication(client); + } + + @AfterEach + void tearDown() { + deleteAlerts(); + } + + @Test + void givenSensorReadings_whenSubscribedToAlerts_thenAlertsAreConsumed() { + createAlertsMaterializedView(); + RowSubscriber alertSubscriber = new RowSubscriber<>(Alert.class); + + CompletableFuture result = ksqlDBApplication.subscribeOnAlerts(alertSubscriber); + insertSampleData(); + + assertThat(result).isNotNull(); + await().atMost(Duration.ofMinutes(3)).untilAsserted(() -> + assertThat(alertSubscriber.consumedItems) + .containsOnly( + expectedAlert("sensor-1", "2021-08-01 09:30:00", "2021-08-01 10:00:00", 28.0), + expectedAlert("sensor-2", "2021-08-01 10:00:00", "2021-08-01 10:30:00", 26.0) + ) + ); + } + + @Test + void givenSensorReadings_whenPullQueryForRow_thenRowIsReturned() { + createAlertsMaterializedView(); + insertSampleData(); + + String pullQuery = "SELECT * FROM alerts WHERE sensor_id = 'sensor-2';"; + + given().ignoreExceptions() + .await().atMost(Duration.ofMinutes(1)) + .untilAsserted(() -> { + // it may be possible that the materialized view is not updated with sample data yet + // so ignore TimeoutException and try again + List rows = client.executeQuery(pullQuery, PROPERTIES) + .get(10, TimeUnit.SECONDS); + + assertThat(rows).hasSize(1); + + Row row = rows.get(0); + assertThat(row.getString("SENSOR_ID")).isEqualTo("sensor-2"); + assertThat(row.getString("START_PERIOD")).isEqualTo("2021-08-01 10:00:00"); + assertThat(row.getString("END_PERIOD")).isEqualTo("2021-08-01 10:30:00"); + assertThat(row.getDouble("AVERAGE_READING")).isEqualTo(26.0); + }); + } + + private void createAlertsMaterializedView() { + ksqlDBApplication.createReadingsStream().join(); + ksqlDBApplication.createAlertsTable().join(); + } + + private void insertSampleData() { + ksqlDBApplication.insert( + Arrays.asList( + new KsqlObject().put("sensor_id", "sensor-1").put("timestamp", "2021-08-01 09:00:00").put("reading", 22), + new KsqlObject().put("sensor_id", "sensor-1").put("timestamp", "2021-08-01 09:10:00").put("reading", 20), + new KsqlObject().put("sensor_id", "sensor-1").put("timestamp", "2021-08-01 09:20:00").put("reading", 20), + + // these reading will exceed the alert threshold (sensor-1) + new KsqlObject().put("sensor_id", "sensor-1").put("timestamp", "2021-08-01 09:30:00").put("reading", 24), + new KsqlObject().put("sensor_id", "sensor-1").put("timestamp", "2021-08-01 09:40:00").put("reading", 30), + new KsqlObject().put("sensor_id", "sensor-1").put("timestamp", "2021-08-01 09:50:00").put("reading", 30), + + new KsqlObject().put("sensor_id", "sensor-1").put("timestamp", "2021-08-01 10:00:00").put("reading", 24), + + // these reading will exceed the alert threshold (sensor-2) + new KsqlObject().put("sensor_id", "sensor-2").put("timestamp", "2021-08-01 10:00:00").put("reading", 26), + new KsqlObject().put("sensor_id", "sensor-2").put("timestamp", "2021-08-01 10:10:00").put("reading", 26), + new KsqlObject().put("sensor_id", "sensor-2").put("timestamp", "2021-08-01 10:20:00").put("reading", 26), + + new KsqlObject().put("sensor_id", "sensor-1").put("timestamp", "2021-08-01 10:30:00").put("reading", 24) + ) + ).join(); + } + + private void deleteAlerts() { + client.listQueries() + .thenApply(queryInfos -> queryInfos.stream() + .filter(queryInfo -> queryInfo.getQueryType() == QueryType.PERSISTENT) + .map(QueryInfo::getId) + .findFirst() + .orElseThrow(() -> new RuntimeException("Persistent query not found"))) + .thenCompose(id -> client.executeStatement("TERMINATE " + id + ";")) + .thenCompose(result -> client.executeStatement("DROP TABLE alerts DELETE TOPIC;")) + .thenCompose(result -> client.executeStatement("DROP STREAM readings DELETE TOPIC;")) + .join(); + } + + private Alert expectedAlert(String sensorId, String startPeriod, String endPeriod, double average) { + return Alert.builder() + .sensorId(sensorId) + .startPeriod(startPeriod) + .endPeriod(endPeriod) + .averageReading(average) + .build(); + } +} diff --git a/ksqldb/src/test/resources/docker/docker-compose.yml b/ksqldb/src/test/resources/docker/docker-compose.yml new file mode 100644 index 0000000000..c90fe85e45 --- /dev/null +++ b/ksqldb/src/test/resources/docker/docker-compose.yml @@ -0,0 +1,49 @@ +--- +version: '3' + +services: + zookeeper: + image: confluentinc/cp-zookeeper:6.2.0 + hostname: zookeeper + environment: + ZOOKEEPER_CLIENT_PORT: 2181 + ZOOKEEPER_TICK_TIME: 2000 + + broker: + image: confluentinc/cp-kafka:6.2.0 + hostname: broker + depends_on: + - zookeeper + environment: + KAFKA_BROKER_ID: 1 + KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181' + KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT + KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://broker:9092,PLAINTEXT_HOST://localhost:29092 + KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 + KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0 + KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1 + KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1 + + ksqldb-server: + image: confluentinc/ksqldb-server:0.19.0 + hostname: ksqldb-server + depends_on: + - broker + ports: + - "8088:8088" + healthcheck: + test: curl -f http://ksqldb-server:8088/ || exit 1 + environment: + KSQL_LISTENERS: http://0.0.0.0:8088 + KSQL_BOOTSTRAP_SERVERS: broker:9092 + KSQL_KSQL_LOGGING_PROCESSING_STREAM_AUTO_CREATE: "true" + KSQL_KSQL_LOGGING_PROCESSING_TOPIC_AUTO_CREATE: "true" + + ksqldb-cli: + image: confluentinc/ksqldb-cli:0.19.0 + hostname: ksqldb-cli + depends_on: + - broker + - ksqldb-server + entrypoint: /bin/sh + tty: true diff --git a/ksqldb/src/test/resources/log4j.properties b/ksqldb/src/test/resources/log4j.properties new file mode 100644 index 0000000000..31a98608fb --- /dev/null +++ b/ksqldb/src/test/resources/log4j.properties @@ -0,0 +1,6 @@ +log4j.rootLogger=INFO, stdout + +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.Target=System.out +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1} - %m%n \ No newline at end of file diff --git a/pom.xml b/pom.xml index abdb851734..f56006713a 100644 --- a/pom.xml +++ b/pom.xml @@ -472,6 +472,7 @@ jsoup jta kubernetes + ksqldb language-interop libraries-2 @@ -940,6 +941,8 @@ jsoup jta + ksqldb + libraries-2 libraries-3 From 62eaeb4835c52fae266bd53d09bb032a9f4ba6af Mon Sep 17 00:00:00 2001 From: sampadawagde Date: Sun, 15 Aug 2021 17:02:31 +0530 Subject: [PATCH 29/82] JAVA-6390: Move kafka articles from libraries-data-3 to new module apache-kafka --- .../kafka/admin/KafkaTopicApplication.java | 28 +- .../KafkaTopicApplicationIntegrationTest.java | 0 .../kafkastreams/KafkaStreamsLiveTest.java | 77 +++++ .../kafka/streams/KafkaStreamsLiveTest.java | 279 ------------------ 4 files changed, 89 insertions(+), 295 deletions(-) rename {libraries-data-3 => apache-kafka}/src/main/java/com/baeldung/kafka/admin/KafkaTopicApplication.java (77%) rename {libraries-data-3 => apache-kafka}/src/test/java/com/baeldung/kafka/admin/KafkaTopicApplicationIntegrationTest.java (100%) create mode 100644 apache-kafka/src/test/java/com/baeldung/kafkastreams/KafkaStreamsLiveTest.java delete mode 100644 libraries-data-3/src/test/java/com/baeldung/kafka/streams/KafkaStreamsLiveTest.java diff --git a/libraries-data-3/src/main/java/com/baeldung/kafka/admin/KafkaTopicApplication.java b/apache-kafka/src/main/java/com/baeldung/kafka/admin/KafkaTopicApplication.java similarity index 77% rename from libraries-data-3/src/main/java/com/baeldung/kafka/admin/KafkaTopicApplication.java rename to apache-kafka/src/main/java/com/baeldung/kafka/admin/KafkaTopicApplication.java index 0d74e27d4e..25d621166d 100644 --- a/libraries-data-3/src/main/java/com/baeldung/kafka/admin/KafkaTopicApplication.java +++ b/apache-kafka/src/main/java/com/baeldung/kafka/admin/KafkaTopicApplication.java @@ -27,11 +27,11 @@ public class KafkaTopicApplication { short replicationFactor = 1; NewTopic newTopic = new NewTopic(topicName, partitions, replicationFactor); - CreateTopicsResult result = admin.createTopics( - Collections.singleton(newTopic)); + CreateTopicsResult result = admin.createTopics(Collections.singleton(newTopic)); // get the async result for the new topic creation - KafkaFuture future = result.values().get(topicName); + KafkaFuture future = result.values() + .get(topicName); // call get() to block until topic creation has completed or failed future.get(); @@ -47,15 +47,13 @@ public class KafkaTopicApplication { short replicationFactor = 1; NewTopic newTopic = new NewTopic(topicName, partitions, replicationFactor); - CreateTopicsOptions topicOptions = new CreateTopicsOptions() - .validateOnly(true) - .retryOnQuotaViolation(true); + CreateTopicsOptions topicOptions = new CreateTopicsOptions().validateOnly(true) + .retryOnQuotaViolation(true); - CreateTopicsResult result = admin.createTopics( - Collections.singleton(newTopic), topicOptions - ); + CreateTopicsResult result = admin.createTopics(Collections.singleton(newTopic), topicOptions); - KafkaFuture future = result.values().get(topicName); + KafkaFuture future = result.values() + .get(topicName); future.get(); } } @@ -72,14 +70,12 @@ public class KafkaTopicApplication { Map newTopicConfig = new HashMap<>(); newTopicConfig.put(TopicConfig.CLEANUP_POLICY_CONFIG, TopicConfig.CLEANUP_POLICY_COMPACT); newTopicConfig.put(TopicConfig.COMPRESSION_TYPE_CONFIG, "lz4"); - NewTopic newTopic = new NewTopic(topicName, partitions, replicationFactor) - .configs(newTopicConfig); + NewTopic newTopic = new NewTopic(topicName, partitions, replicationFactor).configs(newTopicConfig); - CreateTopicsResult result = admin.createTopics( - Collections.singleton(newTopic) - ); + CreateTopicsResult result = admin.createTopics(Collections.singleton(newTopic)); - KafkaFuture future = result.values().get(topicName); + KafkaFuture future = result.values() + .get(topicName); future.get(); } } diff --git a/libraries-data-3/src/test/java/com/baeldung/kafka/admin/KafkaTopicApplicationIntegrationTest.java b/apache-kafka/src/test/java/com/baeldung/kafka/admin/KafkaTopicApplicationIntegrationTest.java similarity index 100% rename from libraries-data-3/src/test/java/com/baeldung/kafka/admin/KafkaTopicApplicationIntegrationTest.java rename to apache-kafka/src/test/java/com/baeldung/kafka/admin/KafkaTopicApplicationIntegrationTest.java diff --git a/apache-kafka/src/test/java/com/baeldung/kafkastreams/KafkaStreamsLiveTest.java b/apache-kafka/src/test/java/com/baeldung/kafkastreams/KafkaStreamsLiveTest.java new file mode 100644 index 0000000000..0b66dd8fec --- /dev/null +++ b/apache-kafka/src/test/java/com/baeldung/kafkastreams/KafkaStreamsLiveTest.java @@ -0,0 +1,77 @@ +package com.baeldung.kafkastreams; + +import java.util.Arrays; +import java.util.Properties; +import java.util.regex.Pattern; + +import org.apache.kafka.clients.consumer.ConsumerConfig; +import org.apache.kafka.common.serialization.Serdes; +import org.apache.kafka.streams.KafkaStreams; +import org.apache.kafka.streams.StreamsBuilder; +import org.apache.kafka.streams.StreamsConfig; +import org.apache.kafka.streams.Topology; +import org.apache.kafka.streams.kstream.KStream; +import org.apache.kafka.streams.kstream.KTable; +import org.apache.kafka.streams.kstream.Produced; +import org.junit.Ignore; +import org.junit.Test; + +public class KafkaStreamsLiveTest { + private String bootstrapServers = "localhost:9092"; + + @Test + @Ignore("it needs to have kafka broker running on local") + public void shouldTestKafkaStreams() throws InterruptedException { + //given + String inputTopic = "inputTopic"; + + Properties streamsConfiguration = new Properties(); + streamsConfiguration.put(StreamsConfig.APPLICATION_ID_CONFIG, "wordcount-live-test"); + streamsConfiguration.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers); + streamsConfiguration.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG, Serdes.String().getClass().getName()); + streamsConfiguration.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG, Serdes.String().getClass().getName()); + streamsConfiguration.put(StreamsConfig.COMMIT_INTERVAL_MS_CONFIG, 1000); + streamsConfiguration.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest"); + // Use a temporary directory for storing state, which will be automatically removed after the test. + // streamsConfiguration.put(StreamsConfig.STATE_DIR_CONFIG, TestUtils.tempDirectory().getAbsolutePath()); + + /* + * final StreamsBuilder builder = new StreamsBuilder(); + KStream textLines = builder.stream(wordCountTopic, + Consumed.with(Serdes.String(), Serdes.String())); + + KTable wordCounts = textLines + .flatMapValues(value -> Arrays.asList(value.toLowerCase(Locale.ROOT) + .split("\\W+"))) + .groupBy((key, word) -> word) + .count(Materialized.> as("counts-store")); + */ + //when + final StreamsBuilder builder = new StreamsBuilder(); + KStream textLines = builder.stream(inputTopic); + Pattern pattern = Pattern.compile("\\W+", Pattern.UNICODE_CHARACTER_CLASS); + + KTable wordCounts = textLines + .flatMapValues(value -> Arrays.asList(pattern.split(value.toLowerCase()))) + .groupBy((key, word) -> word) + .count(); + + wordCounts.toStream().foreach((word, count) -> System.out.println("word: " + word + " -> " + count)); + + String outputTopic = "outputTopic"; + //final Serde stringSerde = Serdes.String(); + //final Serde longSerde = Serdes.Long(); + //wordCounts.toStream().to(stringSerde, longSerde, outputTopic); + + wordCounts.toStream().to("outputTopic", + Produced.with(Serdes.String(), Serdes.Long())); + + final Topology topology = builder.build(); + KafkaStreams streams = new KafkaStreams(topology, streamsConfiguration); + streams.start(); + + //then + Thread.sleep(30000); + streams.close(); + } +} diff --git a/libraries-data-3/src/test/java/com/baeldung/kafka/streams/KafkaStreamsLiveTest.java b/libraries-data-3/src/test/java/com/baeldung/kafka/streams/KafkaStreamsLiveTest.java deleted file mode 100644 index 0d4c0606e3..0000000000 --- a/libraries-data-3/src/test/java/com/baeldung/kafka/streams/KafkaStreamsLiveTest.java +++ /dev/null @@ -1,279 +0,0 @@ -package com.baeldung.kafka.streams; - -import org.apache.kafka.clients.consumer.ConsumerConfig; -import org.apache.kafka.clients.producer.KafkaProducer; -import org.apache.kafka.clients.producer.ProducerRecord; -import org.apache.kafka.common.serialization.Serde; -import org.apache.kafka.common.serialization.Serdes; -import org.apache.kafka.common.utils.Bytes; -import org.apache.kafka.streams.KafkaStreams; -import org.apache.kafka.streams.KeyValue; -import org.apache.kafka.streams.StoreQueryParameters; -import org.apache.kafka.streams.StreamsBuilder; -import org.apache.kafka.streams.StreamsConfig; -import org.apache.kafka.streams.Topology; -import org.apache.kafka.streams.kstream.Consumed; -import org.apache.kafka.streams.kstream.Grouped; -import org.apache.kafka.streams.kstream.JoinWindows; -import org.apache.kafka.streams.kstream.KGroupedStream; -import org.apache.kafka.streams.kstream.KGroupedTable; -import org.apache.kafka.streams.kstream.KStream; -import org.apache.kafka.streams.kstream.KTable; -import org.apache.kafka.streams.kstream.Materialized; -import org.apache.kafka.streams.kstream.Produced; -import org.apache.kafka.streams.kstream.TimeWindows; -import org.apache.kafka.streams.state.KeyValueIterator; -import org.apache.kafka.streams.state.KeyValueStore; -import org.apache.kafka.streams.state.QueryableStoreTypes; -import org.apache.kafka.streams.state.ReadOnlyKeyValueStore; -import org.apache.kafka.streams.state.StoreBuilder; -import org.apache.kafka.streams.state.Stores; -import org.apache.kafka.streams.state.WindowStore; -import org.junit.Before; -import org.junit.ClassRule; -import org.junit.Test; -import org.testcontainers.containers.KafkaContainer; -import org.testcontainers.utility.DockerImageName; - -import java.time.Duration; -import java.util.Arrays; -import java.util.Locale; -import java.util.Properties; - -import static org.apache.kafka.clients.consumer.ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG; -import static org.apache.kafka.clients.producer.ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG; -import static org.apache.kafka.clients.producer.ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG; - -public class KafkaStreamsLiveTest { - private final String LEFT_TOPIC = "left-stream-topic"; - private final String RIGHT_TOPIC = "right-stream-topic"; - private final String LEFT_RIGHT_TOPIC = "left-right-stream-topic"; - - private KafkaProducer producer = createKafkaProducer(); - private Properties streamsConfiguration = new Properties(); - - static final String TEXT_LINES_TOPIC = "TextLinesTopic"; - - private final String TEXT_EXAMPLE_1 = "test test and test"; - private final String TEXT_EXAMPLE_2 = "test filter filter this sentence"; - - @ClassRule - public static KafkaContainer kafka = new KafkaContainer(DockerImageName.parse("confluentinc/cp-kafka:5.4.3")); - - @Before - public void setUp() { - streamsConfiguration.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, kafka.getBootstrapServers()); - streamsConfiguration.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG, Serdes.String().getClass().getName()); - streamsConfiguration.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG, Serdes.String().getClass().getName()); - streamsConfiguration.put(StreamsConfig.COMMIT_INTERVAL_MS_CONFIG, 1000); - streamsConfiguration.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest"); - } - - @Test - public void shouldTestKafkaTableLatestWord() throws InterruptedException { - String inputTopic = "topicTable"; - - final StreamsBuilder builder = new StreamsBuilder(); - - KTable textLinesTable = builder.table(inputTopic, - Consumed.with(Serdes.String(), Serdes.String())); - - textLinesTable.toStream().foreach((word, count) -> System.out.println("Latest word: " + word + " -> " + count)); - - final Topology topology = builder.build(); - streamsConfiguration.put(StreamsConfig.APPLICATION_ID_CONFIG, "latest-word-id"); - KafkaStreams streams = new KafkaStreams(topology, streamsConfiguration); - - streams.cleanUp(); - streams.start(); - producer.send(new ProducerRecord(inputTopic, "1", TEXT_EXAMPLE_1)); - producer.send(new ProducerRecord(inputTopic, "2", TEXT_EXAMPLE_2)); - - Thread.sleep(2000); - streams.close(); - } - - @Test - public void shouldTestWordCountKafkaStreams() throws InterruptedException { - String wordCountTopic = "wordCountTopic"; - - final StreamsBuilder builder = new StreamsBuilder(); - KStream textLines = builder.stream(wordCountTopic, - Consumed.with(Serdes.String(), Serdes.String())); - - KTable wordCounts = textLines - .flatMapValues(value -> Arrays.asList(value.toLowerCase(Locale.ROOT) - .split("\\W+"))) - .groupBy((key, word) -> word) - .count(Materialized.> as("counts-store")); - - wordCounts.toStream().foreach((word, count) -> System.out.println("Word: " + word + " -> " + count)); - - wordCounts.toStream().to("outputTopic", - Produced.with(Serdes.String(), Serdes.Long())); - - streamsConfiguration.put(StreamsConfig.APPLICATION_ID_CONFIG, "wordcount-stream-table-id"); - final Topology topology = builder.build(); - KafkaStreams streams = new KafkaStreams(topology, streamsConfiguration); - - streams.cleanUp(); - streams.start(); - - producer.send(new ProducerRecord(wordCountTopic, "1", TEXT_EXAMPLE_1)); - producer.send(new ProducerRecord(wordCountTopic, "2", TEXT_EXAMPLE_2)); - - Thread.sleep(2000); - streams.close(); - } - - // Filter, map - @Test - public void shouldTestStatelessTransformations() throws InterruptedException { - String wordCountTopic = "wordCountTopic"; - - //when - final StreamsBuilder builder = new StreamsBuilder(); - KStream textLines = builder.stream(wordCountTopic, - Consumed.with(Serdes.String(), Serdes.String())); - - final KStream textLinesUpperCase = - textLines - .map((key, value) -> KeyValue.pair(value, value.toUpperCase())) - .filter((key, value) -> value.contains("FILTER")); - - KTable wordCounts = textLinesUpperCase - .flatMapValues(value -> Arrays.asList(value.split("\\W+"))) - .groupBy((key, word) -> word) - .count(Materialized.> as("counts-store")); - - wordCounts.toStream().foreach((word, count) -> System.out.println("Word: " + word + " -> " + count)); - - streamsConfiguration.put(StreamsConfig.APPLICATION_ID_CONFIG, "wordcount-filter-map-id"); - final Topology topology = builder.build(); - KafkaStreams streams = new KafkaStreams(topology, streamsConfiguration); - - streams.cleanUp(); - streams.start(); - - producer.send(new ProducerRecord(wordCountTopic, "1", TEXT_EXAMPLE_1)); - producer.send(new ProducerRecord(wordCountTopic, "2", TEXT_EXAMPLE_2)); - - Thread.sleep(2000); - streams.close(); - - } - - @Test - public void shouldTestAggregationStatefulTransformations() throws InterruptedException { - String aggregationTopic = "aggregationTopic"; - - final StreamsBuilder builder = new StreamsBuilder(); - final KStream input = builder.stream(aggregationTopic, - Consumed.with(Serdes.ByteArray(), Serdes.String())); - final KTable aggregated = input - .groupBy((key, value) -> (value != null && value.length() > 0) ? value.substring(0, 2).toLowerCase() : "", - Grouped.with(Serdes.String(), Serdes.String())) - .aggregate(() -> 0L, (aggKey, newValue, aggValue) -> aggValue + newValue.length(), - Materialized.with(Serdes.String(), Serdes.Long())); - - aggregated.toStream().foreach((word, count) -> System.out.println("Word: " + word + " -> " + count)); - - streamsConfiguration.put(StreamsConfig.APPLICATION_ID_CONFIG, "aggregation-id"); - final Topology topology = builder.build(); - KafkaStreams streams = new KafkaStreams(topology, streamsConfiguration); - - streams.cleanUp(); - streams.start(); - - producer.send(new ProducerRecord(aggregationTopic, "1", "one")); - producer.send(new ProducerRecord(aggregationTopic, "2", "two")); - producer.send(new ProducerRecord(aggregationTopic, "3", "three")); - producer.send(new ProducerRecord(aggregationTopic, "4", "four")); - producer.send(new ProducerRecord(aggregationTopic, "5", "five")); - - Thread.sleep(5000); - streams.close(); - - } - - @Test - public void shouldTestWindowingJoinStatefulTransformations() throws InterruptedException { - final StreamsBuilder builder = new StreamsBuilder(); - - KStream leftSource = builder.stream(LEFT_TOPIC); - KStream rightSource = builder.stream(RIGHT_TOPIC); - - KStream leftRightSource = leftSource.outerJoin(rightSource, - (leftValue, rightValue) -> "left=" + leftValue + ", right=" + rightValue, - JoinWindows.of(Duration.ofSeconds(5))) - .groupByKey() - .reduce(((key, lastValue) -> lastValue)) - .toStream(); - - leftRightSource.foreach((key, value) -> System.out.println("(key= " + key + ") -> (" + value + ")")); - - final Topology topology = builder.build(); - streamsConfiguration.put(StreamsConfig.APPLICATION_ID_CONFIG, "windowing-join-id"); - KafkaStreams streams = new KafkaStreams(topology, streamsConfiguration); - - streams.cleanUp(); - streams.start(); - - producer.send(new ProducerRecord(LEFT_TOPIC, "1", "left")); - producer.send(new ProducerRecord(RIGHT_TOPIC, "2", "right")); - - Thread.sleep(2000); - streams.close(); - } - - @Test - public void shouldTestWordCountWithInteractiveQueries() throws InterruptedException { - - final Serde stringSerde = Serdes.String(); - final StreamsBuilder builder = new StreamsBuilder(); - final KStream - textLines = builder.stream(TEXT_LINES_TOPIC, Consumed.with(Serdes.String(), Serdes.String())); - - final KGroupedStream groupedByWord = textLines - .flatMapValues(value -> Arrays.asList(value.toLowerCase().split("\\W+"))) - .groupBy((key, word) -> word, Grouped.with(stringSerde, stringSerde)); - - groupedByWord.count(Materialized.>as("WordCountsStore") - .withValueSerde(Serdes.Long())); - - streamsConfiguration.put(StreamsConfig.APPLICATION_ID_CONFIG, "wordcount-interactive-queries"); - - final KafkaStreams streams = new KafkaStreams(builder.build(), streamsConfiguration); - streams.cleanUp(); - streams.start(); - - producer.send(new ProducerRecord(TEXT_LINES_TOPIC, "1", TEXT_EXAMPLE_1)); - producer.send(new ProducerRecord(TEXT_LINES_TOPIC, "2", TEXT_EXAMPLE_2)); - - Thread.sleep(2000); - ReadOnlyKeyValueStore keyValueStore = - streams.store(StoreQueryParameters.fromNameAndType( - "WordCountsStore", QueryableStoreTypes.keyValueStore())); - - KeyValueIterator range = keyValueStore.all(); - while (range.hasNext()) { - KeyValue next = range.next(); - System.out.println("Count for " + next.key + ": " + next.value); - } - - streams.close(); - } - - private static KafkaProducer createKafkaProducer() { - - Properties props = new Properties(); - props.put(BOOTSTRAP_SERVERS_CONFIG, kafka.getBootstrapServers()); - props.put(KEY_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer"); - props.put(VALUE_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer"); - - return new KafkaProducer(props); - - } -} - - From 3f01b5fb0a933043aa7128aef1142cc90d2269ce Mon Sep 17 00:00:00 2001 From: sampadawagde Date: Sun, 15 Aug 2021 17:04:17 +0530 Subject: [PATCH 30/82] JAVA-6390: pom and README changes for libraries-data-3 --- .../log4j.properties | 0 libraries-data-3/README.md | 6 +-- libraries-data-3/pom.xml | 43 ------------------- 3 files changed, 2 insertions(+), 47 deletions(-) rename {libraries-data-3 => apache-kafka}/log4j.properties (100%) diff --git a/libraries-data-3/log4j.properties b/apache-kafka/log4j.properties similarity index 100% rename from libraries-data-3/log4j.properties rename to apache-kafka/log4j.properties diff --git a/libraries-data-3/README.md b/libraries-data-3/README.md index d3bfb2c80c..fe856436f1 100644 --- a/libraries-data-3/README.md +++ b/libraries-data-3/README.md @@ -3,9 +3,7 @@ This module contains articles about libraries for data processing in Java. ### Relevant articles -- [Kafka Streams vs Kafka Consumer](https://www.baeldung.com/java-kafka-streams-vs-kafka-consumer) -- [Kafka Topic Creation Using Java](https://www.baeldung.com/kafka-topic-creation) -- More articles: [[<-- prev]](/../libraries-data-2) + ##### Building the project -You can build the project from the command line using: *mvn clean install*, or in an IDE. If you have issues with the derive4j imports in your IDE, you have to add the folder: *target/generated-sources/annotations* to the project build path in your IDE. +You can build the project from the command line using: *mvn clean install*, or in an IDE. \ No newline at end of file diff --git a/libraries-data-3/pom.xml b/libraries-data-3/pom.xml index 37d5c7ca0d..1a95613cb3 100644 --- a/libraries-data-3/pom.xml +++ b/libraries-data-3/pom.xml @@ -13,52 +13,9 @@ - - org.apache.kafka - kafka-clients - ${kafka.version} - - - org.apache.kafka - kafka-streams - ${kafka.version} - - - org.slf4j - slf4j-api - ${slf4j.version} - - - org.slf4j - slf4j-log4j12 - ${slf4j.version} - - - org.assertj - assertj-core - ${assertj.version} - test - - - org.testcontainers - kafka - ${testcontainers-kafka.version} - test - - - org.testcontainers - junit-jupiter - ${testcontainers-jupiter.version} - test - - 3.6.2 - 1.7.25 - 2.8.0 - 1.15.3 - 1.15.3 \ No newline at end of file From 0d280b54b977aef16cee5a65cc3f2653e5a96e80 Mon Sep 17 00:00:00 2001 From: sampadawagde Date: Sun, 15 Aug 2021 17:09:04 +0530 Subject: [PATCH 31/82] JAVA-6390: Move kafka articles from libraries-data-3 to new module apache-kafka --- .../com/baeldung/flink/FlinkDataPipeline.java | 70 ++++++++++++++++ .../baeldung/flink/connector/Consumers.java | 23 +++--- .../baeldung/flink/connector/Producers.java | 0 .../java/com/baeldung/flink/model/Backup.java | 0 .../baeldung/flink/model/InputMessage.java | 12 +-- .../flink/operator/BackupAggregator.java | 34 ++++++++ .../InputMessageTimestampAssigner.java | 4 +- .../flink/operator/WordsCapitalizer.java | 0 .../schema/BackupSerializationSchema.java | 5 +- .../InputMessageDeserializationSchema.java | 4 +- .../kafka/consumer/CountryPopulation.java | 0 .../consumer/CountryPopulationConsumer.java | 4 +- .../kafka/producer/EvenOddPartitioner.java | 0 .../kafka/producer/KafkaProducer.java | 4 +- .../flink/BackupCreatorIntegrationTest.java | 0 .../flink/WordCapitalizerIntegrationTest.java | 0 .../CountryPopulationConsumerUnitTest.java | 0 .../kafka/producer/KafkaProducerUnitTest.java | 0 .../com/baeldung/flink/FlinkDataPipeline.java | 82 ------------------- .../flink/operator/BackupAggregator.java | 34 -------- 20 files changed, 128 insertions(+), 148 deletions(-) create mode 100644 apache-kafka/src/main/java/com/baeldung/flink/FlinkDataPipeline.java rename {libraries-data-2 => apache-kafka}/src/main/java/com/baeldung/flink/connector/Consumers.java (53%) rename {libraries-data-2 => apache-kafka}/src/main/java/com/baeldung/flink/connector/Producers.java (100%) rename {libraries-data-2 => apache-kafka}/src/main/java/com/baeldung/flink/model/Backup.java (100%) rename {libraries-data-2 => apache-kafka}/src/main/java/com/baeldung/flink/model/InputMessage.java (80%) create mode 100644 apache-kafka/src/main/java/com/baeldung/flink/operator/BackupAggregator.java rename {libraries-data-2 => apache-kafka}/src/main/java/com/baeldung/flink/operator/InputMessageTimestampAssigner.java (88%) rename {libraries-data-2 => apache-kafka}/src/main/java/com/baeldung/flink/operator/WordsCapitalizer.java (100%) rename {libraries-data-2 => apache-kafka}/src/main/java/com/baeldung/flink/schema/BackupSerializationSchema.java (90%) rename {libraries-data-2 => apache-kafka}/src/main/java/com/baeldung/flink/schema/InputMessageDeserializationSchema.java (89%) rename {libraries-data-2 => apache-kafka}/src/main/java/com/baeldung/kafka/consumer/CountryPopulation.java (100%) rename {libraries-data-2 => apache-kafka}/src/main/java/com/baeldung/kafka/consumer/CountryPopulationConsumer.java (89%) rename {libraries-data-2 => apache-kafka}/src/main/java/com/baeldung/kafka/producer/EvenOddPartitioner.java (100%) rename {libraries-data-2 => apache-kafka}/src/main/java/com/baeldung/kafka/producer/KafkaProducer.java (95%) rename {libraries-data-2 => apache-kafka}/src/test/java/com/baeldung/flink/BackupCreatorIntegrationTest.java (100%) rename {libraries-data-2 => apache-kafka}/src/test/java/com/baeldung/flink/WordCapitalizerIntegrationTest.java (100%) rename {libraries-data-2 => apache-kafka}/src/test/java/com/baeldung/kafka/consumer/CountryPopulationConsumerUnitTest.java (100%) rename {libraries-data-2 => apache-kafka}/src/test/java/com/baeldung/kafka/producer/KafkaProducerUnitTest.java (100%) delete mode 100644 libraries-data-2/src/main/java/com/baeldung/flink/FlinkDataPipeline.java delete mode 100644 libraries-data-2/src/main/java/com/baeldung/flink/operator/BackupAggregator.java diff --git a/apache-kafka/src/main/java/com/baeldung/flink/FlinkDataPipeline.java b/apache-kafka/src/main/java/com/baeldung/flink/FlinkDataPipeline.java new file mode 100644 index 0000000000..4502b628b2 --- /dev/null +++ b/apache-kafka/src/main/java/com/baeldung/flink/FlinkDataPipeline.java @@ -0,0 +1,70 @@ +package com.baeldung.flink; + +import com.baeldung.flink.model.Backup; +import com.baeldung.flink.model.InputMessage; +import com.baeldung.flink.operator.BackupAggregator; +import com.baeldung.flink.operator.InputMessageTimestampAssigner; +import com.baeldung.flink.operator.WordsCapitalizer; +import org.apache.flink.streaming.api.TimeCharacteristic; +import org.apache.flink.streaming.api.datastream.DataStream; +import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; +import org.apache.flink.streaming.api.windowing.time.Time; +import org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer011; +import org.apache.flink.streaming.connectors.kafka.FlinkKafkaProducer011; + +import static com.baeldung.flink.connector.Consumers.*; +import static com.baeldung.flink.connector.Producers.*; + +public class FlinkDataPipeline { + + public static void capitalize() throws Exception { + String inputTopic = "flink_input"; + String outputTopic = "flink_output"; + String consumerGroup = "baeldung"; + String address = "localhost:9092"; + + StreamExecutionEnvironment environment = StreamExecutionEnvironment.getExecutionEnvironment(); + + FlinkKafkaConsumer011 flinkKafkaConsumer = createStringConsumerForTopic(inputTopic, address, consumerGroup); + flinkKafkaConsumer.setStartFromEarliest(); + + DataStream stringInputStream = environment.addSource(flinkKafkaConsumer); + + FlinkKafkaProducer011 flinkKafkaProducer = createStringProducer(outputTopic, address); + + stringInputStream.map(new WordsCapitalizer()) + .addSink(flinkKafkaProducer); + + environment.execute(); + } + + public static void createBackup() throws Exception { + String inputTopic = "flink_input"; + String outputTopic = "flink_output"; + String consumerGroup = "baeldung"; + String kafkaAddress = "localhost:9092"; + + StreamExecutionEnvironment environment = StreamExecutionEnvironment.getExecutionEnvironment(); + + environment.setStreamTimeCharacteristic(TimeCharacteristic.EventTime); + + FlinkKafkaConsumer011 flinkKafkaConsumer = createInputMessageConsumer(inputTopic, kafkaAddress, consumerGroup); + flinkKafkaConsumer.setStartFromEarliest(); + + flinkKafkaConsumer.assignTimestampsAndWatermarks(new InputMessageTimestampAssigner()); + FlinkKafkaProducer011 flinkKafkaProducer = createBackupProducer(outputTopic, kafkaAddress); + + DataStream inputMessagesStream = environment.addSource(flinkKafkaConsumer); + + inputMessagesStream.timeWindowAll(Time.hours(24)) + .aggregate(new BackupAggregator()) + .addSink(flinkKafkaProducer); + + environment.execute(); + } + + public static void main(String[] args) throws Exception { + createBackup(); + } + +} diff --git a/libraries-data-2/src/main/java/com/baeldung/flink/connector/Consumers.java b/apache-kafka/src/main/java/com/baeldung/flink/connector/Consumers.java similarity index 53% rename from libraries-data-2/src/main/java/com/baeldung/flink/connector/Consumers.java rename to apache-kafka/src/main/java/com/baeldung/flink/connector/Consumers.java index 514085f9c4..c72cb8a2d6 100644 --- a/libraries-data-2/src/main/java/com/baeldung/flink/connector/Consumers.java +++ b/apache-kafka/src/main/java/com/baeldung/flink/connector/Consumers.java @@ -9,23 +9,20 @@ import java.util.Properties; public class Consumers { -public static FlinkKafkaConsumer011 createStringConsumerForTopic( - String topic, String kafkaAddress, String kafkaGroup ) { - Properties props = new Properties(); - props.setProperty("bootstrap.servers", kafkaAddress); - props.setProperty("group.id",kafkaGroup); - FlinkKafkaConsumer011 consumer = - new FlinkKafkaConsumer011<>(topic, new SimpleStringSchema(),props); + public static FlinkKafkaConsumer011 createStringConsumerForTopic(String topic, String kafkaAddress, String kafkaGroup) { + Properties props = new Properties(); + props.setProperty("bootstrap.servers", kafkaAddress); + props.setProperty("group.id", kafkaGroup); + FlinkKafkaConsumer011 consumer = new FlinkKafkaConsumer011<>(topic, new SimpleStringSchema(), props); - return consumer; -} + return consumer; + } - public static FlinkKafkaConsumer011 createInputMessageConsumer(String topic, String kafkaAddress, String kafkaGroup ) { + public static FlinkKafkaConsumer011 createInputMessageConsumer(String topic, String kafkaAddress, String kafkaGroup) { Properties properties = new Properties(); properties.setProperty("bootstrap.servers", kafkaAddress); - properties.setProperty("group.id",kafkaGroup); - FlinkKafkaConsumer011 consumer = new FlinkKafkaConsumer011( - topic, new InputMessageDeserializationSchema(),properties); + properties.setProperty("group.id", kafkaGroup); + FlinkKafkaConsumer011 consumer = new FlinkKafkaConsumer011(topic, new InputMessageDeserializationSchema(), properties); return consumer; } diff --git a/libraries-data-2/src/main/java/com/baeldung/flink/connector/Producers.java b/apache-kafka/src/main/java/com/baeldung/flink/connector/Producers.java similarity index 100% rename from libraries-data-2/src/main/java/com/baeldung/flink/connector/Producers.java rename to apache-kafka/src/main/java/com/baeldung/flink/connector/Producers.java diff --git a/libraries-data-2/src/main/java/com/baeldung/flink/model/Backup.java b/apache-kafka/src/main/java/com/baeldung/flink/model/Backup.java similarity index 100% rename from libraries-data-2/src/main/java/com/baeldung/flink/model/Backup.java rename to apache-kafka/src/main/java/com/baeldung/flink/model/Backup.java diff --git a/libraries-data-2/src/main/java/com/baeldung/flink/model/InputMessage.java b/apache-kafka/src/main/java/com/baeldung/flink/model/InputMessage.java similarity index 80% rename from libraries-data-2/src/main/java/com/baeldung/flink/model/InputMessage.java rename to apache-kafka/src/main/java/com/baeldung/flink/model/InputMessage.java index b3f75256ae..9331811b91 100644 --- a/libraries-data-2/src/main/java/com/baeldung/flink/model/InputMessage.java +++ b/apache-kafka/src/main/java/com/baeldung/flink/model/InputMessage.java @@ -18,6 +18,7 @@ public class InputMessage { public String getSender() { return sender; } + public void setSender(String sender) { this.sender = sender; } @@ -55,13 +56,12 @@ public class InputMessage { @Override public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; InputMessage message1 = (InputMessage) o; - return Objects.equal(sender, message1.sender) && - Objects.equal(recipient, message1.recipient) && - Objects.equal(sentAt, message1.sentAt) && - Objects.equal(message, message1.message); + return Objects.equal(sender, message1.sender) && Objects.equal(recipient, message1.recipient) && Objects.equal(sentAt, message1.sentAt) && Objects.equal(message, message1.message); } @Override diff --git a/apache-kafka/src/main/java/com/baeldung/flink/operator/BackupAggregator.java b/apache-kafka/src/main/java/com/baeldung/flink/operator/BackupAggregator.java new file mode 100644 index 0000000000..bac1c8c705 --- /dev/null +++ b/apache-kafka/src/main/java/com/baeldung/flink/operator/BackupAggregator.java @@ -0,0 +1,34 @@ +package com.baeldung.flink.operator; + +import com.baeldung.flink.model.Backup; +import com.baeldung.flink.model.InputMessage; +import org.apache.flink.api.common.functions.AggregateFunction; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + +public class BackupAggregator implements AggregateFunction, Backup> { + @Override + public List createAccumulator() { + return new ArrayList<>(); + } + + @Override + public List add(InputMessage inputMessage, List inputMessages) { + inputMessages.add(inputMessage); + return inputMessages; + } + + @Override + public Backup getResult(List inputMessages) { + Backup backup = new Backup(inputMessages, LocalDateTime.now()); + return backup; + } + + @Override + public List merge(List inputMessages, List acc1) { + inputMessages.addAll(acc1); + return inputMessages; + } +} diff --git a/libraries-data-2/src/main/java/com/baeldung/flink/operator/InputMessageTimestampAssigner.java b/apache-kafka/src/main/java/com/baeldung/flink/operator/InputMessageTimestampAssigner.java similarity index 88% rename from libraries-data-2/src/main/java/com/baeldung/flink/operator/InputMessageTimestampAssigner.java rename to apache-kafka/src/main/java/com/baeldung/flink/operator/InputMessageTimestampAssigner.java index 05828d9588..995fe41717 100644 --- a/libraries-data-2/src/main/java/com/baeldung/flink/operator/InputMessageTimestampAssigner.java +++ b/apache-kafka/src/main/java/com/baeldung/flink/operator/InputMessageTimestampAssigner.java @@ -12,7 +12,9 @@ public class InputMessageTimestampAssigner implements AssignerWithPunctuatedWate @Override public long extractTimestamp(InputMessage element, long previousElementTimestamp) { ZoneId zoneId = ZoneId.systemDefault(); - return element.getSentAt().atZone(zoneId).toEpochSecond() * 1000; + return element.getSentAt() + .atZone(zoneId) + .toEpochSecond() * 1000; } @Nullable diff --git a/libraries-data-2/src/main/java/com/baeldung/flink/operator/WordsCapitalizer.java b/apache-kafka/src/main/java/com/baeldung/flink/operator/WordsCapitalizer.java similarity index 100% rename from libraries-data-2/src/main/java/com/baeldung/flink/operator/WordsCapitalizer.java rename to apache-kafka/src/main/java/com/baeldung/flink/operator/WordsCapitalizer.java diff --git a/libraries-data-2/src/main/java/com/baeldung/flink/schema/BackupSerializationSchema.java b/apache-kafka/src/main/java/com/baeldung/flink/schema/BackupSerializationSchema.java similarity index 90% rename from libraries-data-2/src/main/java/com/baeldung/flink/schema/BackupSerializationSchema.java rename to apache-kafka/src/main/java/com/baeldung/flink/schema/BackupSerializationSchema.java index 967b266bb6..d4b7b0955a 100644 --- a/libraries-data-2/src/main/java/com/baeldung/flink/schema/BackupSerializationSchema.java +++ b/apache-kafka/src/main/java/com/baeldung/flink/schema/BackupSerializationSchema.java @@ -9,8 +9,7 @@ import org.apache.flink.api.common.serialization.SerializationSchema; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class BackupSerializationSchema - implements SerializationSchema { +public class BackupSerializationSchema implements SerializationSchema { static ObjectMapper objectMapper = new ObjectMapper().registerModule(new JavaTimeModule()); @@ -18,7 +17,7 @@ public class BackupSerializationSchema @Override public byte[] serialize(Backup backupMessage) { - if(objectMapper == null) { + if (objectMapper == null) { objectMapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY); objectMapper = new ObjectMapper().registerModule(new JavaTimeModule()); } diff --git a/libraries-data-2/src/main/java/com/baeldung/flink/schema/InputMessageDeserializationSchema.java b/apache-kafka/src/main/java/com/baeldung/flink/schema/InputMessageDeserializationSchema.java similarity index 89% rename from libraries-data-2/src/main/java/com/baeldung/flink/schema/InputMessageDeserializationSchema.java rename to apache-kafka/src/main/java/com/baeldung/flink/schema/InputMessageDeserializationSchema.java index 9aaf8b9877..e521af7c2d 100644 --- a/libraries-data-2/src/main/java/com/baeldung/flink/schema/InputMessageDeserializationSchema.java +++ b/apache-kafka/src/main/java/com/baeldung/flink/schema/InputMessageDeserializationSchema.java @@ -8,12 +8,10 @@ import org.apache.flink.api.common.typeinfo.TypeInformation; import java.io.IOException; -public class InputMessageDeserializationSchema implements - DeserializationSchema { +public class InputMessageDeserializationSchema implements DeserializationSchema { static ObjectMapper objectMapper = new ObjectMapper().registerModule(new JavaTimeModule()); - @Override public InputMessage deserialize(byte[] bytes) throws IOException { diff --git a/libraries-data-2/src/main/java/com/baeldung/kafka/consumer/CountryPopulation.java b/apache-kafka/src/main/java/com/baeldung/kafka/consumer/CountryPopulation.java similarity index 100% rename from libraries-data-2/src/main/java/com/baeldung/kafka/consumer/CountryPopulation.java rename to apache-kafka/src/main/java/com/baeldung/kafka/consumer/CountryPopulation.java diff --git a/libraries-data-2/src/main/java/com/baeldung/kafka/consumer/CountryPopulationConsumer.java b/apache-kafka/src/main/java/com/baeldung/kafka/consumer/CountryPopulationConsumer.java similarity index 89% rename from libraries-data-2/src/main/java/com/baeldung/kafka/consumer/CountryPopulationConsumer.java rename to apache-kafka/src/main/java/com/baeldung/kafka/consumer/CountryPopulationConsumer.java index ba4dfe6f3b..a67d3a581c 100644 --- a/libraries-data-2/src/main/java/com/baeldung/kafka/consumer/CountryPopulationConsumer.java +++ b/apache-kafka/src/main/java/com/baeldung/kafka/consumer/CountryPopulationConsumer.java @@ -19,9 +19,7 @@ public class CountryPopulationConsumer { private java.util.function.Consumer exceptionConsumer; private java.util.function.Consumer countryPopulationConsumer; - public CountryPopulationConsumer( - Consumer consumer, java.util.function.Consumer exceptionConsumer, - java.util.function.Consumer countryPopulationConsumer) { + public CountryPopulationConsumer(Consumer consumer, java.util.function.Consumer exceptionConsumer, java.util.function.Consumer countryPopulationConsumer) { this.consumer = consumer; this.exceptionConsumer = exceptionConsumer; this.countryPopulationConsumer = countryPopulationConsumer; diff --git a/libraries-data-2/src/main/java/com/baeldung/kafka/producer/EvenOddPartitioner.java b/apache-kafka/src/main/java/com/baeldung/kafka/producer/EvenOddPartitioner.java similarity index 100% rename from libraries-data-2/src/main/java/com/baeldung/kafka/producer/EvenOddPartitioner.java rename to apache-kafka/src/main/java/com/baeldung/kafka/producer/EvenOddPartitioner.java diff --git a/libraries-data-2/src/main/java/com/baeldung/kafka/producer/KafkaProducer.java b/apache-kafka/src/main/java/com/baeldung/kafka/producer/KafkaProducer.java similarity index 95% rename from libraries-data-2/src/main/java/com/baeldung/kafka/producer/KafkaProducer.java rename to apache-kafka/src/main/java/com/baeldung/kafka/producer/KafkaProducer.java index 911c9ed3d7..fa508593e0 100644 --- a/libraries-data-2/src/main/java/com/baeldung/kafka/producer/KafkaProducer.java +++ b/apache-kafka/src/main/java/com/baeldung/kafka/producer/KafkaProducer.java @@ -15,8 +15,7 @@ public class KafkaProducer { } public Future send(String key, String value) { - ProducerRecord record = new ProducerRecord("topic_sports_news", - key, value); + ProducerRecord record = new ProducerRecord("topic_sports_news", key, value); return producer.send(record); } @@ -36,5 +35,4 @@ public class KafkaProducer { producer.commitTransaction(); } - } diff --git a/libraries-data-2/src/test/java/com/baeldung/flink/BackupCreatorIntegrationTest.java b/apache-kafka/src/test/java/com/baeldung/flink/BackupCreatorIntegrationTest.java similarity index 100% rename from libraries-data-2/src/test/java/com/baeldung/flink/BackupCreatorIntegrationTest.java rename to apache-kafka/src/test/java/com/baeldung/flink/BackupCreatorIntegrationTest.java diff --git a/libraries-data-2/src/test/java/com/baeldung/flink/WordCapitalizerIntegrationTest.java b/apache-kafka/src/test/java/com/baeldung/flink/WordCapitalizerIntegrationTest.java similarity index 100% rename from libraries-data-2/src/test/java/com/baeldung/flink/WordCapitalizerIntegrationTest.java rename to apache-kafka/src/test/java/com/baeldung/flink/WordCapitalizerIntegrationTest.java diff --git a/libraries-data-2/src/test/java/com/baeldung/kafka/consumer/CountryPopulationConsumerUnitTest.java b/apache-kafka/src/test/java/com/baeldung/kafka/consumer/CountryPopulationConsumerUnitTest.java similarity index 100% rename from libraries-data-2/src/test/java/com/baeldung/kafka/consumer/CountryPopulationConsumerUnitTest.java rename to apache-kafka/src/test/java/com/baeldung/kafka/consumer/CountryPopulationConsumerUnitTest.java diff --git a/libraries-data-2/src/test/java/com/baeldung/kafka/producer/KafkaProducerUnitTest.java b/apache-kafka/src/test/java/com/baeldung/kafka/producer/KafkaProducerUnitTest.java similarity index 100% rename from libraries-data-2/src/test/java/com/baeldung/kafka/producer/KafkaProducerUnitTest.java rename to apache-kafka/src/test/java/com/baeldung/kafka/producer/KafkaProducerUnitTest.java diff --git a/libraries-data-2/src/main/java/com/baeldung/flink/FlinkDataPipeline.java b/libraries-data-2/src/main/java/com/baeldung/flink/FlinkDataPipeline.java deleted file mode 100644 index d02b1bcb83..0000000000 --- a/libraries-data-2/src/main/java/com/baeldung/flink/FlinkDataPipeline.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.baeldung.flink; - - -import com.baeldung.flink.model.Backup; -import com.baeldung.flink.model.InputMessage; -import com.baeldung.flink.operator.BackupAggregator; -import com.baeldung.flink.operator.InputMessageTimestampAssigner; -import com.baeldung.flink.operator.WordsCapitalizer; -import org.apache.flink.streaming.api.TimeCharacteristic; -import org.apache.flink.streaming.api.datastream.DataStream; -import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; -import org.apache.flink.streaming.api.windowing.time.Time; -import org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer011; -import org.apache.flink.streaming.connectors.kafka.FlinkKafkaProducer011; - -import static com.baeldung.flink.connector.Consumers.*; -import static com.baeldung.flink.connector.Producers.*; - -public class FlinkDataPipeline { - - public static void capitalize() throws Exception { - String inputTopic = "flink_input"; - String outputTopic = "flink_output"; - String consumerGroup = "baeldung"; - String address = "localhost:9092"; - - StreamExecutionEnvironment environment = - StreamExecutionEnvironment.getExecutionEnvironment(); - - FlinkKafkaConsumer011 flinkKafkaConsumer = - createStringConsumerForTopic(inputTopic, address, consumerGroup); - flinkKafkaConsumer.setStartFromEarliest(); - - DataStream stringInputStream = - environment.addSource(flinkKafkaConsumer); - - FlinkKafkaProducer011 flinkKafkaProducer = - createStringProducer(outputTopic, address); - - stringInputStream - .map(new WordsCapitalizer()) - .addSink(flinkKafkaProducer); - - environment.execute(); - } - -public static void createBackup () throws Exception { - String inputTopic = "flink_input"; - String outputTopic = "flink_output"; - String consumerGroup = "baeldung"; - String kafkaAddress = "localhost:9092"; - - StreamExecutionEnvironment environment = - StreamExecutionEnvironment.getExecutionEnvironment(); - - environment.setStreamTimeCharacteristic(TimeCharacteristic.EventTime); - - FlinkKafkaConsumer011 flinkKafkaConsumer = - createInputMessageConsumer(inputTopic, kafkaAddress, consumerGroup); - flinkKafkaConsumer.setStartFromEarliest(); - - flinkKafkaConsumer - .assignTimestampsAndWatermarks(new InputMessageTimestampAssigner()); - FlinkKafkaProducer011 flinkKafkaProducer = - createBackupProducer(outputTopic, kafkaAddress); - - DataStream inputMessagesStream = - environment.addSource(flinkKafkaConsumer); - - inputMessagesStream - .timeWindowAll(Time.hours(24)) - .aggregate(new BackupAggregator()) - .addSink(flinkKafkaProducer); - - environment.execute(); -} - - public static void main(String[] args) throws Exception { - createBackup(); - } - -} diff --git a/libraries-data-2/src/main/java/com/baeldung/flink/operator/BackupAggregator.java b/libraries-data-2/src/main/java/com/baeldung/flink/operator/BackupAggregator.java deleted file mode 100644 index c39b8413d1..0000000000 --- a/libraries-data-2/src/main/java/com/baeldung/flink/operator/BackupAggregator.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.baeldung.flink.operator; - -import com.baeldung.flink.model.Backup; -import com.baeldung.flink.model.InputMessage; -import org.apache.flink.api.common.functions.AggregateFunction; - -import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.List; - - public class BackupAggregator implements AggregateFunction, Backup> { - @Override - public List createAccumulator() { - return new ArrayList<>(); - } - - @Override - public List add(InputMessage inputMessage, List inputMessages) { - inputMessages.add(inputMessage); - return inputMessages; - } - - @Override - public Backup getResult(List inputMessages) { - Backup backup = new Backup(inputMessages, LocalDateTime.now()); - return backup; - } - - @Override - public List merge(List inputMessages, List acc1) { - inputMessages.addAll(acc1); - return inputMessages; - } - } From 2caf4b52f38d1faaba19c7c4b1df5c640cd8fa8d Mon Sep 17 00:00:00 2001 From: sampadawagde Date: Sun, 15 Aug 2021 17:09:48 +0530 Subject: [PATCH 32/82] JAVA-6390: pom and README changes for libraries-data-2 --- libraries-data-2/README.md | 2 -- libraries-data-2/pom.xml | 13 ------------- 2 files changed, 15 deletions(-) diff --git a/libraries-data-2/README.md b/libraries-data-2/README.md index 893d3e64e8..ee604acf6b 100644 --- a/libraries-data-2/README.md +++ b/libraries-data-2/README.md @@ -11,8 +11,6 @@ This module contains articles about libraries for data processing in Java. - [An Introduction to SuanShu](https://www.baeldung.com/suanshu) - [Intro to Derive4J](https://www.baeldung.com/derive4j) - [Univocity Parsers](https://www.baeldung.com/java-univocity-parsers) -- [Using Kafka MockConsumer](https://www.baeldung.com/kafka-mockconsumer) -- [Using Kafka MockProducer](https://www.baeldung.com/kafka-mockproducer) - More articles: [[<-- prev]](/../libraries-data) ##### Building the project diff --git a/libraries-data-2/pom.xml b/libraries-data-2/pom.xml index 1feb3142ee..cce2e57d22 100644 --- a/libraries-data-2/pom.xml +++ b/libraries-data-2/pom.xml @@ -116,11 +116,6 @@ univocity-parsers ${univocity.version} - - org.apache.kafka - kafka-clients - ${kafka.version} - com.google.guava guava @@ -144,13 +139,6 @@ ${byte-buddy.version} test - - org.apache.kafka - kafka-clients - ${kafka.version} - test - test - @@ -176,7 +164,6 @@ 1.7.25 3.0.0 2.8.4 - 2.5.0 29.0-jre From c0cae3571460000b2d9a3b4730415ce37f8583b8 Mon Sep 17 00:00:00 2001 From: sampadawagde Date: Sun, 15 Aug 2021 17:15:36 +0530 Subject: [PATCH 33/82] JAVA-6390: Move kafka articles from libraries-data to new module apache-kafka --- .../connect-file-sink.properties | 0 .../connect-file-source.properties | 0 .../connect-standalone.properties | 0 .../connect-distributed.properties | 0 .../02_Distributed/connect-file-sink.json | 0 .../02_Distributed/connect-file-source.json | 0 .../connect-distributed.properties | 0 .../connect-file-source-transform.json | 0 .../04_Custom/connect-mongodb-sink.json | 0 .../04_Custom/connect-mqtt-source.json | 0 .../04_Custom/docker-compose.yaml | 0 .../KafkaStreamsLiveTest.java | 279 ++++++++++++++++++ .../kafkastreams/KafkaStreamsLiveTest.java | 62 ---- 13 files changed, 279 insertions(+), 62 deletions(-) rename {libraries-data => apache-kafka}/src/main/resources/kafka-connect/01_Quick_Start/connect-file-sink.properties (100%) rename {libraries-data => apache-kafka}/src/main/resources/kafka-connect/01_Quick_Start/connect-file-source.properties (100%) rename {libraries-data => apache-kafka}/src/main/resources/kafka-connect/01_Quick_Start/connect-standalone.properties (100%) rename {libraries-data => apache-kafka}/src/main/resources/kafka-connect/02_Distributed/connect-distributed.properties (100%) rename {libraries-data => apache-kafka}/src/main/resources/kafka-connect/02_Distributed/connect-file-sink.json (100%) rename {libraries-data => apache-kafka}/src/main/resources/kafka-connect/02_Distributed/connect-file-source.json (100%) rename {libraries-data => apache-kafka}/src/main/resources/kafka-connect/03_Transform/connect-distributed.properties (100%) rename {libraries-data => apache-kafka}/src/main/resources/kafka-connect/03_Transform/connect-file-source-transform.json (100%) rename {libraries-data => apache-kafka}/src/main/resources/kafka-connect/04_Custom/connect-mongodb-sink.json (100%) rename {libraries-data => apache-kafka}/src/main/resources/kafka-connect/04_Custom/connect-mqtt-source.json (100%) rename {libraries-data => apache-kafka}/src/main/resources/kafka-connect/04_Custom/docker-compose.yaml (100%) create mode 100644 apache-kafka/src/test/java/com/baeldung/kafka/streamsvsconsumer/KafkaStreamsLiveTest.java delete mode 100644 libraries-data/src/test/java/com/baeldung/kafkastreams/KafkaStreamsLiveTest.java diff --git a/libraries-data/src/main/resources/kafka-connect/01_Quick_Start/connect-file-sink.properties b/apache-kafka/src/main/resources/kafka-connect/01_Quick_Start/connect-file-sink.properties similarity index 100% rename from libraries-data/src/main/resources/kafka-connect/01_Quick_Start/connect-file-sink.properties rename to apache-kafka/src/main/resources/kafka-connect/01_Quick_Start/connect-file-sink.properties diff --git a/libraries-data/src/main/resources/kafka-connect/01_Quick_Start/connect-file-source.properties b/apache-kafka/src/main/resources/kafka-connect/01_Quick_Start/connect-file-source.properties similarity index 100% rename from libraries-data/src/main/resources/kafka-connect/01_Quick_Start/connect-file-source.properties rename to apache-kafka/src/main/resources/kafka-connect/01_Quick_Start/connect-file-source.properties diff --git a/libraries-data/src/main/resources/kafka-connect/01_Quick_Start/connect-standalone.properties b/apache-kafka/src/main/resources/kafka-connect/01_Quick_Start/connect-standalone.properties similarity index 100% rename from libraries-data/src/main/resources/kafka-connect/01_Quick_Start/connect-standalone.properties rename to apache-kafka/src/main/resources/kafka-connect/01_Quick_Start/connect-standalone.properties diff --git a/libraries-data/src/main/resources/kafka-connect/02_Distributed/connect-distributed.properties b/apache-kafka/src/main/resources/kafka-connect/02_Distributed/connect-distributed.properties similarity index 100% rename from libraries-data/src/main/resources/kafka-connect/02_Distributed/connect-distributed.properties rename to apache-kafka/src/main/resources/kafka-connect/02_Distributed/connect-distributed.properties diff --git a/libraries-data/src/main/resources/kafka-connect/02_Distributed/connect-file-sink.json b/apache-kafka/src/main/resources/kafka-connect/02_Distributed/connect-file-sink.json similarity index 100% rename from libraries-data/src/main/resources/kafka-connect/02_Distributed/connect-file-sink.json rename to apache-kafka/src/main/resources/kafka-connect/02_Distributed/connect-file-sink.json diff --git a/libraries-data/src/main/resources/kafka-connect/02_Distributed/connect-file-source.json b/apache-kafka/src/main/resources/kafka-connect/02_Distributed/connect-file-source.json similarity index 100% rename from libraries-data/src/main/resources/kafka-connect/02_Distributed/connect-file-source.json rename to apache-kafka/src/main/resources/kafka-connect/02_Distributed/connect-file-source.json diff --git a/libraries-data/src/main/resources/kafka-connect/03_Transform/connect-distributed.properties b/apache-kafka/src/main/resources/kafka-connect/03_Transform/connect-distributed.properties similarity index 100% rename from libraries-data/src/main/resources/kafka-connect/03_Transform/connect-distributed.properties rename to apache-kafka/src/main/resources/kafka-connect/03_Transform/connect-distributed.properties diff --git a/libraries-data/src/main/resources/kafka-connect/03_Transform/connect-file-source-transform.json b/apache-kafka/src/main/resources/kafka-connect/03_Transform/connect-file-source-transform.json similarity index 100% rename from libraries-data/src/main/resources/kafka-connect/03_Transform/connect-file-source-transform.json rename to apache-kafka/src/main/resources/kafka-connect/03_Transform/connect-file-source-transform.json diff --git a/libraries-data/src/main/resources/kafka-connect/04_Custom/connect-mongodb-sink.json b/apache-kafka/src/main/resources/kafka-connect/04_Custom/connect-mongodb-sink.json similarity index 100% rename from libraries-data/src/main/resources/kafka-connect/04_Custom/connect-mongodb-sink.json rename to apache-kafka/src/main/resources/kafka-connect/04_Custom/connect-mongodb-sink.json diff --git a/libraries-data/src/main/resources/kafka-connect/04_Custom/connect-mqtt-source.json b/apache-kafka/src/main/resources/kafka-connect/04_Custom/connect-mqtt-source.json similarity index 100% rename from libraries-data/src/main/resources/kafka-connect/04_Custom/connect-mqtt-source.json rename to apache-kafka/src/main/resources/kafka-connect/04_Custom/connect-mqtt-source.json diff --git a/libraries-data/src/main/resources/kafka-connect/04_Custom/docker-compose.yaml b/apache-kafka/src/main/resources/kafka-connect/04_Custom/docker-compose.yaml similarity index 100% rename from libraries-data/src/main/resources/kafka-connect/04_Custom/docker-compose.yaml rename to apache-kafka/src/main/resources/kafka-connect/04_Custom/docker-compose.yaml diff --git a/apache-kafka/src/test/java/com/baeldung/kafka/streamsvsconsumer/KafkaStreamsLiveTest.java b/apache-kafka/src/test/java/com/baeldung/kafka/streamsvsconsumer/KafkaStreamsLiveTest.java new file mode 100644 index 0000000000..88de6101dc --- /dev/null +++ b/apache-kafka/src/test/java/com/baeldung/kafka/streamsvsconsumer/KafkaStreamsLiveTest.java @@ -0,0 +1,279 @@ +package com.baeldung.kafka.streamsvsconsumer; + +import org.apache.kafka.clients.consumer.ConsumerConfig; +import org.apache.kafka.clients.producer.KafkaProducer; +import org.apache.kafka.clients.producer.ProducerRecord; +import org.apache.kafka.common.serialization.Serde; +import org.apache.kafka.common.serialization.Serdes; +import org.apache.kafka.common.utils.Bytes; +import org.apache.kafka.streams.KafkaStreams; +import org.apache.kafka.streams.KeyValue; +import org.apache.kafka.streams.StoreQueryParameters; +import org.apache.kafka.streams.StreamsBuilder; +import org.apache.kafka.streams.StreamsConfig; +import org.apache.kafka.streams.Topology; +import org.apache.kafka.streams.kstream.Consumed; +import org.apache.kafka.streams.kstream.Grouped; +import org.apache.kafka.streams.kstream.JoinWindows; +import org.apache.kafka.streams.kstream.KGroupedStream; +import org.apache.kafka.streams.kstream.KGroupedTable; +import org.apache.kafka.streams.kstream.KStream; +import org.apache.kafka.streams.kstream.KTable; +import org.apache.kafka.streams.kstream.Materialized; +import org.apache.kafka.streams.kstream.Produced; +import org.apache.kafka.streams.kstream.TimeWindows; +import org.apache.kafka.streams.state.KeyValueIterator; +import org.apache.kafka.streams.state.KeyValueStore; +import org.apache.kafka.streams.state.QueryableStoreTypes; +import org.apache.kafka.streams.state.ReadOnlyKeyValueStore; +import org.apache.kafka.streams.state.StoreBuilder; +import org.apache.kafka.streams.state.Stores; +import org.apache.kafka.streams.state.WindowStore; +import org.junit.Before; +import org.junit.ClassRule; +import org.junit.Test; +import org.testcontainers.containers.KafkaContainer; +import org.testcontainers.utility.DockerImageName; + +import java.time.Duration; +import java.util.Arrays; +import java.util.Locale; +import java.util.Properties; + +import static org.apache.kafka.clients.consumer.ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG; +import static org.apache.kafka.clients.producer.ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG; +import static org.apache.kafka.clients.producer.ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG; + +public class KafkaStreamsLiveTest { + private final String LEFT_TOPIC = "left-stream-topic"; + private final String RIGHT_TOPIC = "right-stream-topic"; + private final String LEFT_RIGHT_TOPIC = "left-right-stream-topic"; + + private KafkaProducer producer = createKafkaProducer(); + private Properties streamsConfiguration = new Properties(); + + static final String TEXT_LINES_TOPIC = "TextLinesTopic"; + + private final String TEXT_EXAMPLE_1 = "test test and test"; + private final String TEXT_EXAMPLE_2 = "test filter filter this sentence"; + + @ClassRule + public static KafkaContainer kafka = new KafkaContainer(DockerImageName.parse("confluentinc/cp-kafka:5.4.3")); + + @Before + public void setUp() { + streamsConfiguration.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, kafka.getBootstrapServers()); + streamsConfiguration.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG, Serdes.String().getClass().getName()); + streamsConfiguration.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG, Serdes.String().getClass().getName()); + streamsConfiguration.put(StreamsConfig.COMMIT_INTERVAL_MS_CONFIG, 1000); + streamsConfiguration.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest"); + } + + @Test + public void shouldTestKafkaTableLatestWord() throws InterruptedException { + String inputTopic = "topicTable"; + + final StreamsBuilder builder = new StreamsBuilder(); + + KTable textLinesTable = builder.table(inputTopic, + Consumed.with(Serdes.String(), Serdes.String())); + + textLinesTable.toStream().foreach((word, count) -> System.out.println("Latest word: " + word + " -> " + count)); + + final Topology topology = builder.build(); + streamsConfiguration.put(StreamsConfig.APPLICATION_ID_CONFIG, "latest-word-id"); + KafkaStreams streams = new KafkaStreams(topology, streamsConfiguration); + + streams.cleanUp(); + streams.start(); + producer.send(new ProducerRecord(inputTopic, "1", TEXT_EXAMPLE_1)); + producer.send(new ProducerRecord(inputTopic, "2", TEXT_EXAMPLE_2)); + + Thread.sleep(2000); + streams.close(); + } + + @Test + public void shouldTestWordCountKafkaStreams() throws InterruptedException { + String wordCountTopic = "wordCountTopic"; + + final StreamsBuilder builder = new StreamsBuilder(); + KStream textLines = builder.stream(wordCountTopic, + Consumed.with(Serdes.String(), Serdes.String())); + + KTable wordCounts = textLines + .flatMapValues(value -> Arrays.asList(value.toLowerCase(Locale.ROOT) + .split("\\W+"))) + .groupBy((key, word) -> word) + .count(Materialized.> as("counts-store")); + + wordCounts.toStream().foreach((word, count) -> System.out.println("Word: " + word + " -> " + count)); + + wordCounts.toStream().to("outputTopic", + Produced.with(Serdes.String(), Serdes.Long())); + + streamsConfiguration.put(StreamsConfig.APPLICATION_ID_CONFIG, "wordcount-stream-table-id"); + final Topology topology = builder.build(); + KafkaStreams streams = new KafkaStreams(topology, streamsConfiguration); + + streams.cleanUp(); + streams.start(); + + producer.send(new ProducerRecord(wordCountTopic, "1", TEXT_EXAMPLE_1)); + producer.send(new ProducerRecord(wordCountTopic, "2", TEXT_EXAMPLE_2)); + + Thread.sleep(2000); + streams.close(); + } + + // Filter, map + @Test + public void shouldTestStatelessTransformations() throws InterruptedException { + String wordCountTopic = "wordCountTopic"; + + //when + final StreamsBuilder builder = new StreamsBuilder(); + KStream textLines = builder.stream(wordCountTopic, + Consumed.with(Serdes.String(), Serdes.String())); + + final KStream textLinesUpperCase = + textLines + .map((key, value) -> KeyValue.pair(value, value.toUpperCase())) + .filter((key, value) -> value.contains("FILTER")); + + KTable wordCounts = textLinesUpperCase + .flatMapValues(value -> Arrays.asList(value.split("\\W+"))) + .groupBy((key, word) -> word) + .count(Materialized.> as("counts-store")); + + wordCounts.toStream().foreach((word, count) -> System.out.println("Word: " + word + " -> " + count)); + + streamsConfiguration.put(StreamsConfig.APPLICATION_ID_CONFIG, "wordcount-filter-map-id"); + final Topology topology = builder.build(); + KafkaStreams streams = new KafkaStreams(topology, streamsConfiguration); + + streams.cleanUp(); + streams.start(); + + producer.send(new ProducerRecord(wordCountTopic, "1", TEXT_EXAMPLE_1)); + producer.send(new ProducerRecord(wordCountTopic, "2", TEXT_EXAMPLE_2)); + + Thread.sleep(2000); + streams.close(); + + } + + @Test + public void shouldTestAggregationStatefulTransformations() throws InterruptedException { + String aggregationTopic = "aggregationTopic"; + + final StreamsBuilder builder = new StreamsBuilder(); + final KStream input = builder.stream(aggregationTopic, + Consumed.with(Serdes.ByteArray(), Serdes.String())); + final KTable aggregated = input + .groupBy((key, value) -> (value != null && value.length() > 0) ? value.substring(0, 2).toLowerCase() : "", + Grouped.with(Serdes.String(), Serdes.String())) + .aggregate(() -> 0L, (aggKey, newValue, aggValue) -> aggValue + newValue.length(), + Materialized.with(Serdes.String(), Serdes.Long())); + + aggregated.toStream().foreach((word, count) -> System.out.println("Word: " + word + " -> " + count)); + + streamsConfiguration.put(StreamsConfig.APPLICATION_ID_CONFIG, "aggregation-id"); + final Topology topology = builder.build(); + KafkaStreams streams = new KafkaStreams(topology, streamsConfiguration); + + streams.cleanUp(); + streams.start(); + + producer.send(new ProducerRecord(aggregationTopic, "1", "one")); + producer.send(new ProducerRecord(aggregationTopic, "2", "two")); + producer.send(new ProducerRecord(aggregationTopic, "3", "three")); + producer.send(new ProducerRecord(aggregationTopic, "4", "four")); + producer.send(new ProducerRecord(aggregationTopic, "5", "five")); + + Thread.sleep(5000); + streams.close(); + + } + + @Test + public void shouldTestWindowingJoinStatefulTransformations() throws InterruptedException { + final StreamsBuilder builder = new StreamsBuilder(); + + KStream leftSource = builder.stream(LEFT_TOPIC); + KStream rightSource = builder.stream(RIGHT_TOPIC); + + KStream leftRightSource = leftSource.outerJoin(rightSource, + (leftValue, rightValue) -> "left=" + leftValue + ", right=" + rightValue, + JoinWindows.of(Duration.ofSeconds(5))) + .groupByKey() + .reduce(((key, lastValue) -> lastValue)) + .toStream(); + + leftRightSource.foreach((key, value) -> System.out.println("(key= " + key + ") -> (" + value + ")")); + + final Topology topology = builder.build(); + streamsConfiguration.put(StreamsConfig.APPLICATION_ID_CONFIG, "windowing-join-id"); + KafkaStreams streams = new KafkaStreams(topology, streamsConfiguration); + + streams.cleanUp(); + streams.start(); + + producer.send(new ProducerRecord(LEFT_TOPIC, "1", "left")); + producer.send(new ProducerRecord(RIGHT_TOPIC, "2", "right")); + + Thread.sleep(2000); + streams.close(); + } + + @Test + public void shouldTestWordCountWithInteractiveQueries() throws InterruptedException { + + final Serde stringSerde = Serdes.String(); + final StreamsBuilder builder = new StreamsBuilder(); + final KStream + textLines = builder.stream(TEXT_LINES_TOPIC, Consumed.with(Serdes.String(), Serdes.String())); + + final KGroupedStream groupedByWord = textLines + .flatMapValues(value -> Arrays.asList(value.toLowerCase().split("\\W+"))) + .groupBy((key, word) -> word, Grouped.with(stringSerde, stringSerde)); + + groupedByWord.count(Materialized.>as("WordCountsStore") + .withValueSerde(Serdes.Long())); + + streamsConfiguration.put(StreamsConfig.APPLICATION_ID_CONFIG, "wordcount-interactive-queries"); + + final KafkaStreams streams = new KafkaStreams(builder.build(), streamsConfiguration); + streams.cleanUp(); + streams.start(); + + producer.send(new ProducerRecord(TEXT_LINES_TOPIC, "1", TEXT_EXAMPLE_1)); + producer.send(new ProducerRecord(TEXT_LINES_TOPIC, "2", TEXT_EXAMPLE_2)); + + Thread.sleep(2000); + ReadOnlyKeyValueStore keyValueStore = + streams.store(StoreQueryParameters.fromNameAndType( + "WordCountsStore", QueryableStoreTypes.keyValueStore())); + + KeyValueIterator range = keyValueStore.all(); + while (range.hasNext()) { + KeyValue next = range.next(); + System.out.println("Count for " + next.key + ": " + next.value); + } + + streams.close(); + } + + private static KafkaProducer createKafkaProducer() { + + Properties props = new Properties(); + props.put(BOOTSTRAP_SERVERS_CONFIG, kafka.getBootstrapServers()); + props.put(KEY_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer"); + props.put(VALUE_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer"); + + return new KafkaProducer(props); + + } +} + + diff --git a/libraries-data/src/test/java/com/baeldung/kafkastreams/KafkaStreamsLiveTest.java b/libraries-data/src/test/java/com/baeldung/kafkastreams/KafkaStreamsLiveTest.java deleted file mode 100644 index 32568e9ea5..0000000000 --- a/libraries-data/src/test/java/com/baeldung/kafkastreams/KafkaStreamsLiveTest.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.baeldung.kafkastreams; - -import org.apache.kafka.clients.consumer.ConsumerConfig; -import org.apache.kafka.common.serialization.Serde; -import org.apache.kafka.common.serialization.Serdes; -import org.apache.kafka.streams.KafkaStreams; -import org.apache.kafka.streams.StreamsConfig; -import org.apache.kafka.streams.kstream.KStream; -import org.apache.kafka.streams.kstream.KStreamBuilder; -import org.apache.kafka.streams.kstream.KTable; -import org.apache.kafka.test.TestUtils; -import org.junit.Ignore; -import org.junit.Test; - -import java.util.Arrays; -import java.util.Properties; -import java.util.regex.Pattern; - -public class KafkaStreamsLiveTest { - private String bootstrapServers = "localhost:9092"; - - @Test - @Ignore("it needs to have kafka broker running on local") - public void shouldTestKafkaStreams() throws InterruptedException { - //given - String inputTopic = "inputTopic"; - - Properties streamsConfiguration = new Properties(); - streamsConfiguration.put(StreamsConfig.APPLICATION_ID_CONFIG, "wordcount-live-test"); - streamsConfiguration.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers); - streamsConfiguration.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG, Serdes.String().getClass().getName()); - streamsConfiguration.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG, Serdes.String().getClass().getName()); - streamsConfiguration.put(StreamsConfig.COMMIT_INTERVAL_MS_CONFIG, 1000); - streamsConfiguration.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest"); - // Use a temporary directory for storing state, which will be automatically removed after the test. - streamsConfiguration.put(StreamsConfig.STATE_DIR_CONFIG, TestUtils.tempDirectory().getAbsolutePath()); - - //when - KStreamBuilder builder = new KStreamBuilder(); - KStream textLines = builder.stream(inputTopic); - Pattern pattern = Pattern.compile("\\W+", Pattern.UNICODE_CHARACTER_CLASS); - - KTable wordCounts = textLines - .flatMapValues(value -> Arrays.asList(pattern.split(value.toLowerCase()))) - .groupBy((key, word) -> word) - .count(); - - wordCounts.foreach((word, count) -> System.out.println("word: " + word + " -> " + count)); - - String outputTopic = "outputTopic"; - final Serde stringSerde = Serdes.String(); - final Serde longSerde = Serdes.Long(); - wordCounts.to(stringSerde, longSerde, outputTopic); - - KafkaStreams streams = new KafkaStreams(builder, streamsConfiguration); - streams.start(); - - //then - Thread.sleep(30000); - streams.close(); - } -} From d13f26e437501e2ed80e9ea589c919d1cc4ad6c5 Mon Sep 17 00:00:00 2001 From: sampadawagde Date: Sun, 15 Aug 2021 17:16:20 +0530 Subject: [PATCH 34/82] JAVA-6390: README changes for libraries-data --- libraries-data/README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/libraries-data/README.md b/libraries-data/README.md index 44fddfd90e..7e87475328 100644 --- a/libraries-data/README.md +++ b/libraries-data/README.md @@ -3,14 +3,10 @@ This module contains articles about libraries for data processing in Java. ### Relevant articles -- [Introduction to KafkaStreams in Java](https://www.baeldung.com/java-kafka-streams) - [Introduction to JCache](https://www.baeldung.com/jcache) - [A Guide to Apache Ignite](https://www.baeldung.com/apache-ignite) - [Apache Ignite with Spring Data](https://www.baeldung.com/apache-ignite-spring-data) - [A Guide to Apache Crunch](https://www.baeldung.com/apache-crunch) - [Intro to Apache Storm](https://www.baeldung.com/apache-storm) -- [Introduction to Kafka Connectors](https://www.baeldung.com/kafka-connectors-guide) -- [Kafka Connect Example with MQTT and MongoDB](https://www.baeldung.com/kafka-connect-mqtt-mongodb) -- [Building a Data Pipeline with Flink and Kafka](https://www.baeldung.com/kafka-flink-data-pipeline) - [Guide to JMapper](https://www.baeldung.com/jmapper) More articles: [[next -->]](/../libraries-data-2) \ No newline at end of file From b4b48d4268313c01406955a32263cca926f88778 Mon Sep 17 00:00:00 2001 From: sampadawagde Date: Sun, 15 Aug 2021 17:28:59 +0530 Subject: [PATCH 35/82] JAVA-6390: Move kafka articles from libraries-6 to new module apache-kafka --- .../TransactionalMessageProducer.java | 10 +++++----- .../exactlyonce}/TransactionalWordCount.java | 15 ++++++++------- .../com/baeldung/kafka/exactlyonce}/Tuple.java | 6 +++--- 3 files changed, 16 insertions(+), 15 deletions(-) rename {libraries-6/src/main/java/com/baeldung/kafka => apache-kafka/src/main/java/com/baeldung/kafka/exactlyonce}/TransactionalMessageProducer.java (87%) rename {libraries-6/src/main/java/com/baeldung/kafka => apache-kafka/src/main/java/com/baeldung/kafka/exactlyonce}/TransactionalWordCount.java (90%) rename {libraries-6/src/main/java/com/baeldung/kafka => apache-kafka/src/main/java/com/baeldung/kafka/exactlyonce}/Tuple.java (69%) diff --git a/libraries-6/src/main/java/com/baeldung/kafka/TransactionalMessageProducer.java b/apache-kafka/src/main/java/com/baeldung/kafka/exactlyonce/TransactionalMessageProducer.java similarity index 87% rename from libraries-6/src/main/java/com/baeldung/kafka/TransactionalMessageProducer.java rename to apache-kafka/src/main/java/com/baeldung/kafka/exactlyonce/TransactionalMessageProducer.java index 15488bbaf4..8f2fe6e309 100644 --- a/libraries-6/src/main/java/com/baeldung/kafka/TransactionalMessageProducer.java +++ b/apache-kafka/src/main/java/com/baeldung/kafka/exactlyonce/TransactionalMessageProducer.java @@ -1,4 +1,4 @@ -package com.baeldung.kafka; +package com.baeldung.kafka.exactlyonce; import org.apache.kafka.clients.producer.KafkaProducer; import org.apache.kafka.clients.producer.ProducerRecord; @@ -24,16 +24,16 @@ public class TransactionalMessageProducer { producer.initTransactions(); - try{ + try { producer.beginTransaction(); - Stream.of(DATA_MESSAGE_1, DATA_MESSAGE_2).forEach(s -> producer.send( - new ProducerRecord("input", null, s))); + Stream.of(DATA_MESSAGE_1, DATA_MESSAGE_2) + .forEach(s -> producer.send(new ProducerRecord("input", null, s))); producer.commitTransaction(); - }catch (KafkaException e){ + } catch (KafkaException e) { producer.abortTransaction(); diff --git a/libraries-6/src/main/java/com/baeldung/kafka/TransactionalWordCount.java b/apache-kafka/src/main/java/com/baeldung/kafka/exactlyonce/TransactionalWordCount.java similarity index 90% rename from libraries-6/src/main/java/com/baeldung/kafka/TransactionalWordCount.java rename to apache-kafka/src/main/java/com/baeldung/kafka/exactlyonce/TransactionalWordCount.java index 0563ba6684..b9a2cb9f85 100644 --- a/libraries-6/src/main/java/com/baeldung/kafka/TransactionalWordCount.java +++ b/apache-kafka/src/main/java/com/baeldung/kafka/exactlyonce/TransactionalWordCount.java @@ -1,4 +1,4 @@ -package com.baeldung.kafka; +package com.baeldung.kafka.exactlyonce; import org.apache.kafka.clients.consumer.ConsumerRecord; import org.apache.kafka.clients.consumer.ConsumerRecords; @@ -43,10 +43,11 @@ public class TransactionalWordCount { ConsumerRecords records = consumer.poll(ofSeconds(60)); Map wordCountMap = records.records(new TopicPartition(INPUT_TOPIC, 0)) - .stream() - .flatMap(record -> Stream.of(record.value().split(" "))) - .map(word -> Tuple.of(word, 1)) - .collect(Collectors.toMap(tuple -> tuple.getKey(), t1 -> t1.getValue(), (v1, v2) -> v1 + v2)); + .stream() + .flatMap(record -> Stream.of(record.value() + .split(" "))) + .map(word -> Tuple.of(word, 1)) + .collect(Collectors.toMap(tuple -> tuple.getKey(), t1 -> t1.getValue(), (v1, v2) -> v1 + v2)); producer.beginTransaction(); @@ -56,7 +57,8 @@ public class TransactionalWordCount { for (TopicPartition partition : records.partitions()) { List> partitionedRecords = records.records(partition); - long offset = partitionedRecords.get(partitionedRecords.size() - 1).offset(); + long offset = partitionedRecords.get(partitionedRecords.size() - 1) + .offset(); offsetsToCommit.put(partition, new OffsetAndMetadata(offset + 1)); } @@ -72,7 +74,6 @@ public class TransactionalWordCount { } - } private static KafkaConsumer createKafkaConsumer() { diff --git a/libraries-6/src/main/java/com/baeldung/kafka/Tuple.java b/apache-kafka/src/main/java/com/baeldung/kafka/exactlyonce/Tuple.java similarity index 69% rename from libraries-6/src/main/java/com/baeldung/kafka/Tuple.java rename to apache-kafka/src/main/java/com/baeldung/kafka/exactlyonce/Tuple.java index 883de4ba21..ad61e905fd 100644 --- a/libraries-6/src/main/java/com/baeldung/kafka/Tuple.java +++ b/apache-kafka/src/main/java/com/baeldung/kafka/exactlyonce/Tuple.java @@ -1,4 +1,4 @@ -package com.baeldung.kafka; +package com.baeldung.kafka.exactlyonce; public class Tuple { @@ -10,8 +10,8 @@ public class Tuple { this.value = value; } - public static Tuple of(String key, Integer value){ - return new Tuple(key,value); + public static Tuple of(String key, Integer value) { + return new Tuple(key, value); } public String getKey() { From 9b2813f0f7925354c5e57ce7035c38bb6605ea9a Mon Sep 17 00:00:00 2001 From: sampadawagde Date: Sun, 15 Aug 2021 17:30:14 +0530 Subject: [PATCH 36/82] JAVA-6390: pom and README changes for libraries-6 --- libraries-6/README.md | 1 - libraries-6/pom.xml | 13 ------------- 2 files changed, 14 deletions(-) diff --git a/libraries-6/README.md b/libraries-6/README.md index ecad499e07..210a76ca87 100644 --- a/libraries-6/README.md +++ b/libraries-6/README.md @@ -13,7 +13,6 @@ Remember, for advanced libraries like [Jackson](/jackson) and [JUnit](/testing-m - [Implementing a FTP-Client in Java](https://www.baeldung.com/java-ftp-client) - [Introduction to Functional Java](https://www.baeldung.com/java-functional-library) - [A Guide to the Reflections Library](https://www.baeldung.com/reflections-library) -- [Exactly Once Processing in Kafka with Java](https://www.baeldung.com/kafka-exactly-once) - [Introduction to Protonpack](https://www.baeldung.com/java-protonpack) - [Java-R Integration](https://www.baeldung.com/java-r-integration) - [Using libphonenumber to Validate Phone Numbers](https://www.baeldung.com/java-libphonenumber) diff --git a/libraries-6/pom.xml b/libraries-6/pom.xml index 8d05d2013c..d2ed06af6a 100644 --- a/libraries-6/pom.xml +++ b/libraries-6/pom.xml @@ -22,18 +22,6 @@ protonpack ${protonpack.version} - - org.apache.kafka - kafka-streams - ${kafka.version} - - - org.apache.kafka - kafka-clients - ${kafka.version} - test - test - io.github.resilience4j resilience4j-circuitbreaker @@ -148,7 +136,6 @@ - 2.0.0 1.10.0 0.9.11 2.7.1 From 5eec2c4bbaf85ac3d022192794c0479c481711ba Mon Sep 17 00:00:00 2001 From: sampadawagde Date: Sun, 15 Aug 2021 17:31:33 +0530 Subject: [PATCH 37/82] JAVA-6390: pom and README for apache-kafka --- apache-kafka/README.md | 18 ++++ apache-kafka/pom.xml | 181 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 199 insertions(+) create mode 100644 apache-kafka/README.md create mode 100644 apache-kafka/pom.xml diff --git a/apache-kafka/README.md b/apache-kafka/README.md new file mode 100644 index 0000000000..5e724f95b6 --- /dev/null +++ b/apache-kafka/README.md @@ -0,0 +1,18 @@ +## Apache Kafka + +This module contains articles about Apache Kafka. + +### Relevant articles +- [Kafka Streams vs Kafka Consumer](https://www.baeldung.com/java-kafka-streams-vs-kafka-consumer) +- [Kafka Topic Creation Using Java](https://www.baeldung.com/kafka-topic-creation) +- [Using Kafka MockConsumer](https://www.baeldung.com/kafka-mockconsumer) +- [Using Kafka MockProducer](https://www.baeldung.com/kafka-mockproducer) +- [Introduction to KafkaStreams in Java](https://www.baeldung.com/java-kafka-streams) +- [Introduction to Kafka Connectors](https://www.baeldung.com/kafka-connectors-guide) +- [Kafka Connect Example with MQTT and MongoDB](https://www.baeldung.com/kafka-connect-mqtt-mongodb) +- [Building a Data Pipeline with Flink and Kafka](https://www.baeldung.com/kafka-flink-data-pipeline) +- [Exactly Once Processing in Kafka with Java](https://www.baeldung.com/kafka-exactly-once) + + +##### Building the project +You can build the project from the command line using: *mvn clean install*, or in an IDE. \ No newline at end of file diff --git a/apache-kafka/pom.xml b/apache-kafka/pom.xml new file mode 100644 index 0000000000..41cbab44ed --- /dev/null +++ b/apache-kafka/pom.xml @@ -0,0 +1,181 @@ + + + 4.0.0 + apache-kafka + apache-kafka + + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + + + + + org.apache.kafka + kafka-clients + ${kafka.version} + + + org.apache.kafka + kafka-streams + ${kafka.version} + + + org.slf4j + slf4j-api + ${slf4j.version} + + + org.slf4j + slf4j-log4j12 + ${slf4j.version} + + + org.apache.flink + flink-connector-kafka-0.11_2.11 + ${flink.version} + + + org.apache.flink + flink-streaming-java_2.11 + ${flink.version} + + + org.apache.flink + flink-core + ${flink.version} + + + commons-logging + commons-logging + + + + + org.apache.flink + flink-java + ${flink.version} + + + commons-logging + commons-logging + + + + + org.apache.flink + flink-test-utils_2.11 + ${flink.version} + test + + + com.google.guava + guava + ${guava.version} + + + org.awaitility + awaitility + ${awaitility.version} + test + + + org.awaitility + awaitility-proxy + ${awaitility.version} + test + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + ${jackson.version} + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + + + org.assertj + assertj-core + ${assertj.version} + test + + + org.testcontainers + kafka + ${testcontainers-kafka.version} + test + + + org.testcontainers + junit-jupiter + ${testcontainers-jupiter.version} + test + + + org.apache.spark + spark-core_2.11 + ${org.apache.spark.spark-core.version} + provided + + + org.apache.spark + spark-sql_2.11 + ${org.apache.spark.spark-core.version} + provided + + + org.apache.spark + spark-graphx_2.11 + ${org.apache.spark.spark-core.version} + provided + + + org.apache.spark + spark-streaming_2.11 + ${org.apache.spark.spark-core.version} + provided + + + org.apache.spark + spark-mllib_2.11 + ${org.apache.spark.spark-core.version} + provided + + + org.apache.spark + spark-streaming-kafka-0-10_2.11 + ${org.apache.spark.spark-core.version} + + + com.datastax.spark + spark-cassandra-connector_2.11 + ${com.datastax.spark.spark-cassandra-connector.version} + + + com.datastax.spark + spark-cassandra-connector-java_2.11 + ${com.datastax.spark.spark-cassandra-connector-java.version} + + + + + 3.6.2 + 1.7.25 + 2.8.0 + 1.15.3 + 1.15.3 + 1.5.0 + 3.0.0 + 29.0-jre + 2.4.8 + 0.8.1-spark3.0-s_2.12 + 2.5.2 + 1.6.0-M1 + + + \ No newline at end of file From 3e41f10f7fdd73894560f96ec58a8cec1416caab Mon Sep 17 00:00:00 2001 From: sampadawagde Date: Sun, 15 Aug 2021 17:32:08 +0530 Subject: [PATCH 38/82] JAVA-6390: main pom changes to add new module --- pom.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pom.xml b/pom.xml index abdb851734..803533869f 100644 --- a/pom.xml +++ b/pom.xml @@ -345,6 +345,7 @@ antlr apache-cxf + apache-kafka apache-libraries apache-olingo/olingo2 apache-poi @@ -814,6 +815,7 @@ antlr apache-cxf + apache-kafka apache-libraries apache-olingo/olingo2 apache-poi From abaa46fd99bfa4dc21fd1eced2ef3838f387c018 Mon Sep 17 00:00:00 2001 From: freelansam <79205526+freelansam@users.noreply.github.com> Date: Sun, 15 Aug 2021 20:11:09 +0530 Subject: [PATCH 39/82] JAVA-6403: Fix references to parents (#11102) * JAVA-6403: Fix references to parents * JAVA-6403: removed relativePath --- docker/heap-sizing/pom.xml | 26 +++++++++++-------- .../spring-boot-actuator/pom.xml | 7 +++-- .../spring-boot-jersey/pom.xml | 7 +++-- ... => JerseyApplicationIntegrationTest.java} | 2 +- .../spring-boot-mvc/pom.xml | 7 +++-- ...ava => MvcApplicationIntegrationTest.java} | 2 +- 6 files changed, 26 insertions(+), 25 deletions(-) rename spring-boot-modules/spring-boot-mvc-jersey/spring-boot-jersey/src/test/java/com/baeldung/boot/jersey/{JerseyApplicationIntegrationTests.java => JerseyApplicationIntegrationTest.java} (82%) rename spring-boot-modules/spring-boot-mvc-jersey/spring-boot-mvc/src/test/java/com/baeldung/boot/mvc/{MvcApplicationIntegrationTests.java => MvcApplicationIntegrationTest.java} (83%) diff --git a/docker/heap-sizing/pom.xml b/docker/heap-sizing/pom.xml index a86a67fdcd..2cc354f6cf 100644 --- a/docker/heap-sizing/pom.xml +++ b/docker/heap-sizing/pom.xml @@ -1,21 +1,21 @@ - + 4.0.0 - - org.springframework.boot - spring-boot-starter-parent - 2.4.2 - - com.baeldung.docker heap-sizing 0.0.1-SNAPSHOT heap-sizing Demo project for Spring Boot - - 11 - + + + com.baeldung + parent-boot-2 + 0.0.1-SNAPSHOT + ../../parent-boot-2 + + org.springframework.boot @@ -58,4 +58,8 @@ + + 11 + + diff --git a/spring-boot-modules/spring-boot-actuator/pom.xml b/spring-boot-modules/spring-boot-actuator/pom.xml index 1865974ab0..eaeb3b4ac7 100644 --- a/spring-boot-modules/spring-boot-actuator/pom.xml +++ b/spring-boot-modules/spring-boot-actuator/pom.xml @@ -9,10 +9,9 @@ 0.0.1-SNAPSHOT - org.springframework.boot - spring-boot-starter-parent - 2.3.2.RELEASE - + com.baeldung.spring-boot-modules + spring-boot-modules + 1.0.0-SNAPSHOT diff --git a/spring-boot-modules/spring-boot-mvc-jersey/spring-boot-jersey/pom.xml b/spring-boot-modules/spring-boot-mvc-jersey/spring-boot-jersey/pom.xml index e0b261510c..a16c8b0a83 100644 --- a/spring-boot-modules/spring-boot-mvc-jersey/spring-boot-jersey/pom.xml +++ b/spring-boot-modules/spring-boot-mvc-jersey/spring-boot-jersey/pom.xml @@ -8,10 +8,9 @@ 0.0.1-SNAPSHOT - org.springframework.boot - spring-boot-starter-parent - 2.4.2 - + com.baeldung.spring-boot-modules + spring-boot-mvc-jersey + 0.0.1-SNAPSHOT diff --git a/spring-boot-modules/spring-boot-mvc-jersey/spring-boot-jersey/src/test/java/com/baeldung/boot/jersey/JerseyApplicationIntegrationTests.java b/spring-boot-modules/spring-boot-mvc-jersey/spring-boot-jersey/src/test/java/com/baeldung/boot/jersey/JerseyApplicationIntegrationTest.java similarity index 82% rename from spring-boot-modules/spring-boot-mvc-jersey/spring-boot-jersey/src/test/java/com/baeldung/boot/jersey/JerseyApplicationIntegrationTests.java rename to spring-boot-modules/spring-boot-mvc-jersey/spring-boot-jersey/src/test/java/com/baeldung/boot/jersey/JerseyApplicationIntegrationTest.java index 9bd6bbf029..d9018efc4a 100644 --- a/spring-boot-modules/spring-boot-mvc-jersey/spring-boot-jersey/src/test/java/com/baeldung/boot/jersey/JerseyApplicationIntegrationTests.java +++ b/spring-boot-modules/spring-boot-mvc-jersey/spring-boot-jersey/src/test/java/com/baeldung/boot/jersey/JerseyApplicationIntegrationTest.java @@ -4,7 +4,7 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest -class JerseyApplicationIntegrationTests { +class JerseyApplicationIntegrationTest { @Test void contextLoads() { diff --git a/spring-boot-modules/spring-boot-mvc-jersey/spring-boot-mvc/pom.xml b/spring-boot-modules/spring-boot-mvc-jersey/spring-boot-mvc/pom.xml index 77c8027974..8521ab25ac 100644 --- a/spring-boot-modules/spring-boot-mvc-jersey/spring-boot-mvc/pom.xml +++ b/spring-boot-modules/spring-boot-mvc-jersey/spring-boot-mvc/pom.xml @@ -8,10 +8,9 @@ 0.0.1-SNAPSHOT - org.springframework.boot - spring-boot-starter-parent - 2.4.2 - + com.baeldung.spring-boot-modules + spring-boot-mvc-jersey + 0.0.1-SNAPSHOT diff --git a/spring-boot-modules/spring-boot-mvc-jersey/spring-boot-mvc/src/test/java/com/baeldung/boot/mvc/MvcApplicationIntegrationTests.java b/spring-boot-modules/spring-boot-mvc-jersey/spring-boot-mvc/src/test/java/com/baeldung/boot/mvc/MvcApplicationIntegrationTest.java similarity index 83% rename from spring-boot-modules/spring-boot-mvc-jersey/spring-boot-mvc/src/test/java/com/baeldung/boot/mvc/MvcApplicationIntegrationTests.java rename to spring-boot-modules/spring-boot-mvc-jersey/spring-boot-mvc/src/test/java/com/baeldung/boot/mvc/MvcApplicationIntegrationTest.java index d05cb97e47..14b0915fa7 100644 --- a/spring-boot-modules/spring-boot-mvc-jersey/spring-boot-mvc/src/test/java/com/baeldung/boot/mvc/MvcApplicationIntegrationTests.java +++ b/spring-boot-modules/spring-boot-mvc-jersey/spring-boot-mvc/src/test/java/com/baeldung/boot/mvc/MvcApplicationIntegrationTest.java @@ -4,7 +4,7 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest -class MvcApplicationIntegrationTests { +class MvcApplicationIntegrationTest { @Test void contextLoads() { From ab3fc12268f9367a94226ac920507afac0d6eb4f Mon Sep 17 00:00:00 2001 From: Nguyen Nam Thai Date: Sun, 15 Aug 2021 23:03:32 +0700 Subject: [PATCH 40/82] BAEL-4883 Shorten test method names --- .../com/baeldung/reactor/exception/ExceptionUnitTest.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/reactor-core/src/test/java/com/baeldung/reactor/exception/ExceptionUnitTest.java b/reactor-core/src/test/java/com/baeldung/reactor/exception/ExceptionUnitTest.java index f4da2e325a..d1d2b3c4d6 100644 --- a/reactor-core/src/test/java/com/baeldung/reactor/exception/ExceptionUnitTest.java +++ b/reactor-core/src/test/java/com/baeldung/reactor/exception/ExceptionUnitTest.java @@ -12,7 +12,7 @@ import java.util.function.Function; public class ExceptionUnitTest { @Test - public void givenInputStreamWithAnInvalidElement_whenAPipelineOperatorThrowsAnException_thenAnErrorIsSentDownstream() { + public void givenInvalidElement_whenPipelineThrowsException_thenErrorIsSentDownstream() { Function mapper = input -> { if (input.matches("\\D")) { throw new NumberFormatException(); @@ -31,7 +31,7 @@ public class ExceptionUnitTest { } @Test - public void givenInputStreamWithAnInvalidElement_whenTheHandleOperatorCallsSinkErrorMethod_thenAnErrorIsSentDownstream() { + public void givenInvalidElement_whenHandleCallsSinkErrorMethod_thenErrorIsSentDownstream() { BiConsumer> handler = (input, sink) -> { if (input.matches("\\D")) { sink.error(new NumberFormatException()); @@ -50,7 +50,7 @@ public class ExceptionUnitTest { } @Test - public void givenInputStreamWithAnInvalidElement_whenTheFlatMapOperatorCallsMonoErrorMethod_thenAnErrorIsSentDownstream() { + public void givenInvalidElement_whenFlatMapCallsMonoErrorMethod_thenErrorIsSentDownstream() { Function> mapper = input -> { if (input.matches("\\D")) { return Mono.error(new NumberFormatException()); @@ -69,7 +69,7 @@ public class ExceptionUnitTest { } @Test - public void givenInputStreamWithANullElement_whenAPipelineOperatorIsCalled_thenAnNpeIsSentDownstream() { + public void givenNullElement_whenPipelineOperatorExecutes_thenNpeIsSentDownstream() { Function mapper = input -> { if (input == null) { return 0; From a4990d7d8f61087f275b5a47f9e0598105955cdc Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Sun, 15 Aug 2021 22:40:20 +0530 Subject: [PATCH 41/82] Enabled spring-security-web-reach module and fixed vulnerabilities in npm packages --- spring-security-modules/pom.xml | 4 +- .../WEB-INF/view/react/package-lock.json | 1291 ++++++----------- 2 files changed, 422 insertions(+), 873 deletions(-) diff --git a/spring-security-modules/pom.xml b/spring-security-modules/pom.xml index 9a0862a6b0..917360dc3e 100644 --- a/spring-security-modules/pom.xml +++ b/spring-security-modules/pom.xml @@ -38,7 +38,7 @@ spring-security-web-mvc-custom spring-security-web-mvc spring-security-web-persistent-login - + spring-security-web-react spring-security-web-rest-basic-auth spring-security-web-rest-custom spring-security-web-rest @@ -49,4 +49,4 @@ spring-social-login - \ No newline at end of file + diff --git a/spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/package-lock.json b/spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/package-lock.json index 6b183d2e5c..75dc571cad 100644 --- a/spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/package-lock.json +++ b/spring-security-modules/spring-security-web-react/src/main/webapp/WEB-INF/view/react/package-lock.json @@ -34,9 +34,9 @@ } }, "acorn": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.1.tgz", - "integrity": "sha512-d+nbxBUGKg7Arpsvbnlq61mc12ek3EY8EQldM3GPAhWJ1UVxC6TDGbIvUMNU6obBX3i1+ptCIzV4vq0gFPEGVQ==" + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==" }, "acorn-dynamic-import": { "version": "2.0.2", @@ -129,11 +129,6 @@ "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" - }, "ansi-align": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", @@ -1351,15 +1346,24 @@ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=" }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, "bluebird": { "version": "3.5.1", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" }, "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" }, "body-parser": { "version": "1.19.0", @@ -1769,51 +1773,77 @@ "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=" }, "chokidar": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", - "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "optional": true, "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.0", - "braces": "^2.3.0", - "fsevents": "^1.2.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "lodash.debounce": "^4.0.8", - "normalize-path": "^2.1.1", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0", - "upath": "^1.0.5" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" }, "dependencies": { "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "optional": true, "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" } }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "optional": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "optional": true, "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "requires": { - "is-extglob": "^2.1.0" - } - } + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "optional": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": true + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "optional": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "optional": true, + "requires": { + "binary-extensions": "^2.0.0" } }, "is-extglob": { @@ -1822,12 +1852,41 @@ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" }, "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "requires": { "is-extglob": "^2.1.1" } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "optional": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "optional": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "optional": true, + "requires": { + "is-number": "^7.0.0" + } } } }, @@ -2154,11 +2213,6 @@ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" }, - "core-js": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", - "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" - }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -2176,13 +2230,6 @@ "os-homedir": "^1.0.1", "parse-json": "^2.2.0", "require-from-string": "^1.1.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" - } } }, "create-ecdh": { @@ -2710,9 +2757,9 @@ "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=" }, "dns-packet": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", - "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", + "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", "requires": { "ip": "^1.1.0", "safe-buffer": "^5.0.1" @@ -2801,9 +2848,9 @@ } }, "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz", + "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==", "requires": { "is-obj": "^1.0.0" } @@ -2848,17 +2895,24 @@ "integrity": "sha1-dDi3b5K0G5GfP73TUPvQdX2s3fc=" }, "elliptic": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", - "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", + "bn.js": "^4.11.9", + "brorand": "^1.1.0", "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + } } }, "emoji-regex": { @@ -2876,14 +2930,6 @@ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, - "encoding": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", - "requires": { - "iconv-lite": "~0.4.13" - } - }, "enhanced-resolve": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", @@ -3121,9 +3167,9 @@ "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==" }, "js-yaml": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", - "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -3570,9 +3616,9 @@ } }, "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, "extend-shallow": { "version": "3.0.2", @@ -3714,20 +3760,6 @@ "bser": "^2.0.0" } }, - "fbjs": { - "version": "0.8.17", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz", - "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=", - "requires": { - "core-js": "^1.0.0", - "isomorphic-fetch": "^2.1.1", - "loose-envify": "^1.0.0", - "object-assign": "^4.1.0", - "promise": "^7.1.1", - "setimmediate": "^1.0.5", - "ua-parser-js": "^0.7.18" - } - }, "figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", @@ -3754,6 +3786,12 @@ "schema-utils": "^0.3.0" } }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "optional": true + }, "filename-regex": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", @@ -3932,465 +3970,13 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", - "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", "optional": true, "requires": { - "nan": "^2.9.2", - "node-pre-gyp": "^0.10.0" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "bundled": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.0.1", - "bundled": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "debug": { - "version": "2.6.9", - "bundled": true, - "optional": true, - "requires": { - "ms": "2.0.0" - } - }, - "deep-extend": { - "version": "0.5.1", - "bundled": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "optional": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.21", - "bundled": true, - "optional": true, - "requires": { - "safer-buffer": "^2.1.0" - } - }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true - }, - "minipass": { - "version": "2.2.4", - "bundled": true, - "requires": { - "safe-buffer": "^5.1.1", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.1.0", - "bundled": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "needle": { - "version": "2.2.0", - "bundled": true, - "optional": true, - "requires": { - "debug": "^2.1.2", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.10.0", - "bundled": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.0", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.1.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.0.3", - "bundled": true, - "optional": true - }, - "npm-packlist": { - "version": "1.1.10", - "bundled": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "rc": { - "version": "1.2.7", - "bundled": true, - "optional": true, - "requires": { - "deep-extend": "^0.5.1", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.6.2", - "bundled": true, - "optional": true, - "requires": { - "glob": "^7.0.5" - } - }, - "safe-buffer": { - "version": "5.1.1", - "bundled": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "optional": true - }, - "semver": { - "version": "5.5.0", - "bundled": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "tar": { - "version": "4.4.1", - "bundled": true, - "optional": true, - "requires": { - "chownr": "^1.0.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.2.4", - "minizlib": "^1.1.0", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.1", - "yallist": "^3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "wide-align": { - "version": "1.1.2", - "bundled": true, - "optional": true, - "requires": { - "string-width": "^1.0.2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true - }, - "yallist": { - "version": "3.0.2", - "bundled": true - } + "bindings": "^1.5.0", + "nan": "^2.12.1" } }, "function-bind": { @@ -4551,60 +4137,15 @@ "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=" }, "handlebars": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", - "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", "requires": { - "async": "^1.4.0", - "optimist": "^0.6.1", - "source-map": "^0.4.4", - "uglify-js": "^2.6" - }, - "dependencies": { - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" - }, - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "requires": { - "amdefine": ">=0.0.4" - } - }, - "uglify-js": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "optional": true, - "requires": { - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "optional": true - } - } - }, - "yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "optional": true, - "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", - "window-size": "0.1.0" - } - } + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" } }, "har-schema": { @@ -4727,9 +4268,9 @@ } }, "hosted-git-info": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.1.tgz", - "integrity": "sha512-Ba4+0M4YvIDUUsprMjhVTU1yN9F2/LJSAl69ZpzaLT4l4j5mwTS6jqqW9Ojvj6lKz/veqPzpJBqGbXspOb533A==" + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" }, "hpack.js": { "version": "2.1.6", @@ -4872,9 +4413,9 @@ "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=" }, "http-proxy": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz", - "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==", + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "requires": { "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", @@ -5094,9 +4635,9 @@ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, "inquirer": { "version": "3.3.0", @@ -5503,15 +5044,6 @@ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" }, - "isomorphic-fetch": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", - "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", - "requires": { - "node-fetch": "^1.0.1", - "whatwg-fetch": ">=0.10.0" - } - }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", @@ -5657,6 +5189,48 @@ "integrity": "sha1-PdJgwpidba1nix6cxNkZRPbWAqw=", "requires": { "jest-cli": "^20.0.4" + } + }, + "jest-changed-files": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-20.0.3.tgz", + "integrity": "sha1-k5TVzGXEOEBhSb7xv01Sto4D4/g=" + }, + "jest-cli": { + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-20.0.4.tgz", + "integrity": "sha1-5TKxnYiuW8bEF+iwWTpv6VSx3JM=", + "requires": { + "ansi-escapes": "^1.4.0", + "callsites": "^2.0.0", + "chalk": "^1.1.3", + "graceful-fs": "^4.1.11", + "is-ci": "^1.0.10", + "istanbul-api": "^1.1.1", + "istanbul-lib-coverage": "^1.0.1", + "istanbul-lib-instrument": "^1.4.2", + "istanbul-lib-source-maps": "^1.1.0", + "jest-changed-files": "^20.0.3", + "jest-config": "^20.0.4", + "jest-docblock": "^20.0.3", + "jest-environment-jsdom": "^20.0.3", + "jest-haste-map": "^20.0.4", + "jest-jasmine2": "^20.0.4", + "jest-message-util": "^20.0.3", + "jest-regex-util": "^20.0.3", + "jest-resolve-dependencies": "^20.0.3", + "jest-runtime": "^20.0.4", + "jest-snapshot": "^20.0.3", + "jest-util": "^20.0.3", + "micromatch": "^2.3.11", + "node-notifier": "^5.0.2", + "pify": "^2.3.0", + "slash": "^1.0.0", + "string-length": "^1.0.1", + "throat": "^3.0.0", + "which": "^1.2.12", + "worker-farm": "^1.3.1", + "yargs": "^7.0.2" }, "dependencies": { "ansi-escapes": { @@ -5708,43 +5282,6 @@ "is-extglob": "^1.0.0" } }, - "jest-cli": { - "version": "20.0.4", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-20.0.4.tgz", - "integrity": "sha1-5TKxnYiuW8bEF+iwWTpv6VSx3JM=", - "requires": { - "ansi-escapes": "^1.4.0", - "callsites": "^2.0.0", - "chalk": "^1.1.3", - "graceful-fs": "^4.1.11", - "is-ci": "^1.0.10", - "istanbul-api": "^1.1.1", - "istanbul-lib-coverage": "^1.0.1", - "istanbul-lib-instrument": "^1.4.2", - "istanbul-lib-source-maps": "^1.1.0", - "jest-changed-files": "^20.0.3", - "jest-config": "^20.0.4", - "jest-docblock": "^20.0.3", - "jest-environment-jsdom": "^20.0.3", - "jest-haste-map": "^20.0.4", - "jest-jasmine2": "^20.0.4", - "jest-message-util": "^20.0.3", - "jest-regex-util": "^20.0.3", - "jest-resolve-dependencies": "^20.0.3", - "jest-runtime": "^20.0.4", - "jest-snapshot": "^20.0.3", - "jest-util": "^20.0.3", - "micromatch": "^2.3.11", - "node-notifier": "^5.0.2", - "pify": "^2.3.0", - "slash": "^1.0.0", - "string-length": "^1.0.1", - "throat": "^3.0.0", - "which": "^1.2.12", - "worker-farm": "^1.3.1", - "yargs": "^7.0.2" - } - }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", @@ -5775,11 +5312,6 @@ } } }, - "jest-changed-files": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-20.0.3.tgz", - "integrity": "sha1-k5TVzGXEOEBhSb7xv01Sto4D4/g=" - }, "jest-config": { "version": "20.0.4", "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-20.0.4.tgz", @@ -6327,9 +5859,9 @@ "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==" }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" }, "klaw": { "version": "1.3.1", @@ -6387,12 +5919,12 @@ } }, "loader-fs-cache": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.1.tgz", - "integrity": "sha1-VuC/CL2XCLJqdltoUJhAyN7J/bw=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz", + "integrity": "sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA==", "requires": { "find-cache-dir": "^0.1.1", - "mkdirp": "0.5.1" + "mkdirp": "^0.5.1" }, "dependencies": { "find-cache-dir": { @@ -6457,9 +5989,9 @@ } }, "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "lodash._reinterpolate": { "version": "3.0.0", @@ -6476,11 +6008,6 @@ "resolved": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz", "integrity": "sha1-9HGh2khr5g9quVXRcRVSPdHSVdU=" }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" - }, "lodash.defaults": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", @@ -6656,19 +6183,12 @@ "read-pkg-up": "^1.0.1", "redent": "^1.0.0", "trim-newlines": "^1.0.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" - } } }, "merge": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.0.tgz", - "integrity": "sha1-dTHjnUlJwoGma4xabgJl6LBYlNo=" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.1.tgz", + "integrity": "sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ==" }, "merge-descriptors": { "version": "1.0.1", @@ -6751,14 +6271,14 @@ } }, "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", "requires": { "for-in": "^1.0.2", "is-extendable": "^1.0.1" @@ -6775,11 +6295,11 @@ } }, "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "requires": { - "minimist": "0.0.8" + "minimist": "^1.2.5" } }, "ms": { @@ -6807,9 +6327,9 @@ "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" }, "nan": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", - "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", + "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", "optional": true }, "nanomatch": { @@ -6841,9 +6361,9 @@ "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" }, "neo-async": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.1.tgz", - "integrity": "sha512-3KL3fvuRkZ7s4IFOMfztb7zJp3QaVWnBeGoJlgB38XnCRPj/0tLzzLG5IB8NYOHbJ8g8UGrgZv44GLDk6CxTxA==" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, "next-tick": { "version": "1.0.0", @@ -6858,19 +6378,10 @@ "lower-case": "^1.1.1" } }, - "node-fetch": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", - "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", - "requires": { - "encoding": "^0.1.11", - "is-stream": "^1.0.1" - } - }, "node-forge": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz", - "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==" + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==" }, "node-int64": { "version": "0.4.0", @@ -7127,22 +6638,6 @@ "is-wsl": "^1.1.0" } }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" - } - } - }, "optionator": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", @@ -7301,7 +6796,8 @@ "path-dirname": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "optional": true }, "path-exists": { "version": "3.0.0", @@ -7370,6 +6866,11 @@ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, + "picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==" + }, "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", @@ -7427,11 +6928,6 @@ "ms": "^2.1.1" } }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -8646,14 +8142,6 @@ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=" }, - "promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "requires": { - "asap": "~2.0.3" - } - }, "prop-types": { "version": "15.6.2", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz", @@ -8820,30 +8308,22 @@ "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" - } } }, "react": { - "version": "16.4.1", - "resolved": "https://registry.npmjs.org/react/-/react-16.4.1.tgz", - "integrity": "sha512-3GEs0giKp6E0Oh/Y9ZC60CmYgUPnp7voH9fbjWsvXtYFb4EWtgQub0ADSq0sJR0BbHc4FThLLtzlcFaFXIorwg==", + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", + "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", "requires": { - "fbjs": "^0.8.16", "loose-envify": "^1.1.0", "object-assign": "^4.1.1", - "prop-types": "^15.6.0" + "prop-types": "^15.6.2" } }, "react-dev-utils": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-5.0.1.tgz", - "integrity": "sha512-+y92rG6pmXt3cpcg/NGmG4w/W309tWNSmyyPL8hCMxuCSg2UP/hUg3npACj2UZc8UKVSXexyLrCnxowizGoAsw==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-5.0.3.tgz", + "integrity": "sha512-Mvs6ofsc2xTjeZIrMaIfbXfsPVrbdVy/cVqq6SAacnqfMlcBpDuivhWZ1ODGeJ8HgmyWTLH971PYjj/EPCDVAw==", "requires": { "address": "1.0.3", "babel-code-frame": "6.26.0", @@ -8857,29 +8337,44 @@ "inquirer": "3.3.0", "is-root": "1.0.0", "opn": "5.2.0", - "react-error-overlay": "^4.0.0", + "react-error-overlay": "^4.0.1", "recursive-readdir": "2.2.1", "shell-quote": "1.6.1", - "sockjs-client": "1.1.4", + "sockjs-client": "1.1.5", "strip-ansi": "3.0.1", "text-table": "0.2.0" + }, + "dependencies": { + "sockjs-client": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.5.tgz", + "integrity": "sha1-G7fA9yIsQPQq3xT0RCy9Eml3GoM=", + "requires": { + "debug": "^2.6.6", + "eventsource": "0.1.6", + "faye-websocket": "~0.11.0", + "inherits": "^2.0.1", + "json3": "^3.3.2", + "url-parse": "^1.1.8" + } + } } }, "react-dom": { - "version": "16.4.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.4.1.tgz", - "integrity": "sha512-1Gin+wghF/7gl4Cqcvr1DxFX2Osz7ugxSwl6gBqCMpdrxHjIFUS7GYxrFftZ9Ln44FHw0JxCFD9YtZsrbR5/4A==", + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", + "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", "requires": { - "fbjs": "^0.8.16", "loose-envify": "^1.1.0", "object-assign": "^4.1.1", - "prop-types": "^15.6.0" + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" } }, "react-error-overlay": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-4.0.0.tgz", - "integrity": "sha512-FlsPxavEyMuR6TjVbSSywovXSEyOg6ZDj5+Z8nbsRl9EkOzAhEIcS+GLoQDC5fz/t9suhUXWmUrOBrgeUvrMxw==" + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-4.0.1.tgz", + "integrity": "sha512-xXUbDAZkU08aAkjtUvldqbvI04ogv+a1XdHxvYuHPYKIVk/42BIOD0zSKTHAWV4+gDy3yGm283z2072rA2gdtw==" }, "react-scripts": { "version": "1.1.4", @@ -9014,14 +8509,13 @@ } }, "readdirp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", - "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", "requires": { - "graceful-fs": "^4.1.2", - "minimatch": "^3.0.2", - "readable-stream": "^2.0.2", - "set-immediate-shim": "^1.0.1" + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" } }, "recursive-readdir": { @@ -9509,11 +9003,6 @@ "requires": { "bser": "1.0.2" } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" } } }, @@ -9522,6 +9011,15 @@ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, + "scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, "schema-utils": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", @@ -9536,11 +9034,11 @@ "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" }, "selfsigned": { - "version": "1.10.7", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz", - "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==", + "version": "1.10.11", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.11.tgz", + "integrity": "sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA==", "requires": { - "node-forge": "0.9.0" + "node-forge": "^0.10.0" } }, "semver": { @@ -9636,15 +9134,10 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, - "set-immediate-shim": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", - "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" - }, "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", "requires": { "extend-shallow": "^2.0.1", "is-extendable": "^0.1.1", @@ -10502,11 +9995,6 @@ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, - "ua-parser-js": { - "version": "0.7.18", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.18.tgz", - "integrity": "sha512-LtzwHlVHwFGTptfNSgezHp7WUlwiqb0gA9AALRbKaERfxwJoiX0A73QbTToxteIAuIaFshhgIZfqK8s7clqgnA==" - }, "uglify-js": { "version": "3.4.2", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.2.tgz", @@ -10568,35 +10056,14 @@ } }, "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", "requires": { "arr-union": "^3.1.0", "get-value": "^2.0.6", "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } + "set-value": "^2.0.1" } }, "uniq": { @@ -10669,9 +10136,10 @@ "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=" }, "upath": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", - "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "optional": true }, "update-notifier": { "version": "2.5.0", @@ -10716,9 +10184,9 @@ } }, "urijs": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.1.tgz", - "integrity": "sha512-xVrGVi94ueCJNrBSTjWqjvtgvl3cyOTThp2zaMaFNGp3F542TR6sM3f2o8RqZl+AwteClSVmoCyt0ka4RjQOQg==" + "version": "1.19.7", + "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.7.tgz", + "integrity": "sha512-Id+IKjdU0Hx+7Zx717jwLPsPeUqz7rAtuVBRLLs+qn+J2nf9NGITWVCxcijgYxBqe83C7sqsQPs6H1pyz3x9gA==" }, "urix": { "version": "0.1.0", @@ -10752,9 +10220,9 @@ } }, "url-parse": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", - "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz", + "integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==", "requires": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" @@ -10855,13 +10323,98 @@ "integrity": "sha1-d3mLLaD5kQ1ZXxrOWwwiWFIfIdw=" }, "watchpack": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", - "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", "requires": { - "chokidar": "^2.0.2", + "chokidar": "^3.4.1", "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.1" + } + }, + "watchpack-chokidar2": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", + "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", + "optional": true, + "requires": { + "chokidar": "^2.1.8" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "optional": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "optional": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "optional": true + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "optional": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "optional": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "optional": true, + "requires": { + "is-extglob": "^2.1.1" + } + } } }, "wbuf": { @@ -11291,9 +10844,9 @@ } }, "websocket-extensions": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", - "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==" + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" }, "whatwg-encoding": { "version": "1.0.3", @@ -11310,11 +10863,6 @@ } } }, - "whatwg-fetch": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", - "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==" - }, "whatwg-url": { "version": "4.8.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-4.8.0.tgz", @@ -11443,9 +10991,9 @@ "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" }, "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==" }, "yallist": { "version": "2.1.2", @@ -11453,9 +11001,9 @@ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" }, "yargs": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", - "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz", + "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==", "requires": { "camelcase": "^3.0.0", "cliui": "^3.2.0", @@ -11469,7 +11017,7 @@ "string-width": "^1.0.2", "which-module": "^1.0.0", "y18n": "^3.2.1", - "yargs-parser": "^5.0.0" + "yargs-parser": "^5.0.1" }, "dependencies": { "camelcase": { @@ -11508,11 +11056,12 @@ } }, "yargs-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", - "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz", + "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==", "requires": { - "camelcase": "^3.0.0" + "camelcase": "^3.0.0", + "object.assign": "^4.1.0" }, "dependencies": { "camelcase": { From 6365185c705b1d77c36aeaa5f171d1dc7c775617 Mon Sep 17 00:00:00 2001 From: Roger <587230+rojyates@users.noreply.github.com> Date: Mon, 16 Aug 2021 04:46:43 +1000 Subject: [PATCH 42/82] BAEL-4914 Code for EnableGlobalMethodSecurity vs EnableWebSecurity (#11053) * BAEL-4914 Code for EnableGlobalMethodSecurity vs EnableWebSecurity * BAEL-4914 Add newline after @Autowired in Test --- .../AnnotationSecuredApplication.java | 15 +++ .../AnnotationSecuredController.java | 50 +++++++++ ...AnnotationSecuredStaticResourceConfig.java | 22 ++++ .../globalmethod/DifferentClass.java | 13 +++ .../websecurity/ConfigSecuredApplication.java | 14 +++ .../websecurity/ConfigSecuredController.java | 30 +++++ .../websecurity/CustomWebSecurityConfig.java | 29 +++++ .../main/resources/public/hello/baeldung.txt | 1 + ...GlobalMethodSpringBootIntegrationTest.java | 104 ++++++++++++++++++ .../WebSecuritySpringBootIntegrationTest.java | 62 +++++++++++ 10 files changed, 340 insertions(+) create mode 100644 spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/annotations/globalmethod/AnnotationSecuredApplication.java create mode 100644 spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/annotations/globalmethod/AnnotationSecuredController.java create mode 100644 spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/annotations/globalmethod/AnnotationSecuredStaticResourceConfig.java create mode 100644 spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/annotations/globalmethod/DifferentClass.java create mode 100644 spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/annotations/websecurity/ConfigSecuredApplication.java create mode 100644 spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/annotations/websecurity/ConfigSecuredController.java create mode 100644 spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/annotations/websecurity/CustomWebSecurityConfig.java create mode 100644 spring-boot-modules/spring-boot-security/src/main/resources/public/hello/baeldung.txt create mode 100644 spring-boot-modules/spring-boot-security/src/test/java/com/baeldung/annotations/globalmethod/GlobalMethodSpringBootIntegrationTest.java create mode 100644 spring-boot-modules/spring-boot-security/src/test/java/com/baeldung/annotations/websecurity/WebSecuritySpringBootIntegrationTest.java diff --git a/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/annotations/globalmethod/AnnotationSecuredApplication.java b/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/annotations/globalmethod/AnnotationSecuredApplication.java new file mode 100644 index 0000000000..0495e0f716 --- /dev/null +++ b/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/annotations/globalmethod/AnnotationSecuredApplication.java @@ -0,0 +1,15 @@ +package com.baeldung.annotations.globalmethod; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; + +@SpringBootApplication +@EnableWebSecurity +public class AnnotationSecuredApplication { + + public static void main(String[] args) { + SpringApplication.run(AnnotationSecuredApplication.class, args); + } +} diff --git a/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/annotations/globalmethod/AnnotationSecuredController.java b/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/annotations/globalmethod/AnnotationSecuredController.java new file mode 100644 index 0000000000..4687299ae5 --- /dev/null +++ b/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/annotations/globalmethod/AnnotationSecuredController.java @@ -0,0 +1,50 @@ +package com.baeldung.annotations.globalmethod; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.security.RolesAllowed; + +@RestController +@EnableGlobalMethodSecurity(jsr250Enabled = true, prePostEnabled = true) +public class AnnotationSecuredController { + + @Autowired + DifferentClass differentClass; + + @GetMapping("/public") + public String publicHello() { + return "Hello Public"; + } + + @RolesAllowed("ADMIN") + @GetMapping("/admin") + public String adminHello() { + return "Hello Admin"; + } + + @RolesAllowed("USER") + @GetMapping("/protected") + public String jsr250Hello() { + return "Hello Jsr250"; + } + + @GetMapping("/indirect") + public String indirectHello() { + return jsr250Hello(); + } + + @GetMapping("/differentclass") + public String differentClassHello() { + return differentClass.differentJsr250Hello(); + } + + @PreAuthorize("hasRole('USER')") + public String preAuthorizeHello() { + return "Hello PreAuthorize"; + } + +} diff --git a/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/annotations/globalmethod/AnnotationSecuredStaticResourceConfig.java b/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/annotations/globalmethod/AnnotationSecuredStaticResourceConfig.java new file mode 100644 index 0000000000..467285adfa --- /dev/null +++ b/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/annotations/globalmethod/AnnotationSecuredStaticResourceConfig.java @@ -0,0 +1,22 @@ +package com.baeldung.annotations.globalmethod; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.SecurityConfigurerAdapter; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.config.annotation.web.configuration.WebSecurityCustomizer; + + +@Configuration +@EnableWebSecurity +public class AnnotationSecuredStaticResourceConfig extends WebSecurityConfigurerAdapter { + + @Bean + public WebSecurityCustomizer ignoreResources() { + return (webSecurity) -> webSecurity + .ignoring() + .antMatchers("/hello/*"); + } +} \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/annotations/globalmethod/DifferentClass.java b/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/annotations/globalmethod/DifferentClass.java new file mode 100644 index 0000000000..9bcc352d9a --- /dev/null +++ b/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/annotations/globalmethod/DifferentClass.java @@ -0,0 +1,13 @@ +package com.baeldung.annotations.globalmethod; + +import org.springframework.stereotype.Component; + +import javax.annotation.security.RolesAllowed; + +@Component +public class DifferentClass { + @RolesAllowed("USER") + public String differentJsr250Hello() { + return "Hello Jsr250"; + } +} diff --git a/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/annotations/websecurity/ConfigSecuredApplication.java b/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/annotations/websecurity/ConfigSecuredApplication.java new file mode 100644 index 0000000000..13e405ee22 --- /dev/null +++ b/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/annotations/websecurity/ConfigSecuredApplication.java @@ -0,0 +1,14 @@ +package com.baeldung.annotations.websecurity; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; + +@SpringBootApplication +@EnableWebSecurity +public class ConfigSecuredApplication { + + public static void main(String[] args) { + SpringApplication.run(ConfigSecuredApplication.class, args); + } +} diff --git a/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/annotations/websecurity/ConfigSecuredController.java b/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/annotations/websecurity/ConfigSecuredController.java new file mode 100644 index 0000000000..198efb8353 --- /dev/null +++ b/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/annotations/websecurity/ConfigSecuredController.java @@ -0,0 +1,30 @@ +package com.baeldung.annotations.websecurity; + +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@RestController +@EnableWebSecurity +public class ConfigSecuredController { + + @GetMapping("/public") + public String publicHello() { + return "Hello Public"; + } + + @GetMapping("/protected") + public String protectedHello() { + return "Hello from protected"; + } + + @GetMapping("/admin") + public String adminHello() { + return "Hello from admin"; + } + +} diff --git a/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/annotations/websecurity/CustomWebSecurityConfig.java b/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/annotations/websecurity/CustomWebSecurityConfig.java new file mode 100644 index 0000000000..ce874e313e --- /dev/null +++ b/spring-boot-modules/spring-boot-security/src/main/java/com/baeldung/annotations/websecurity/CustomWebSecurityConfig.java @@ -0,0 +1,29 @@ +package com.baeldung.annotations.websecurity; + +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.builders.WebSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; + +@Configuration +@EnableWebSecurity +public class CustomWebSecurityConfig extends WebSecurityConfigurerAdapter { + + @Override + protected void configure(HttpSecurity http) throws Exception { + http + .authorizeRequests() + .antMatchers("/admin/**") + .hasRole("ADMIN") + .antMatchers("/protected/**") + .hasRole("USER"); + } + + @Override + public void configure(WebSecurity web) throws Exception { + web + .ignoring() + .antMatchers("/public/*"); + } +} diff --git a/spring-boot-modules/spring-boot-security/src/main/resources/public/hello/baeldung.txt b/spring-boot-modules/spring-boot-security/src/main/resources/public/hello/baeldung.txt new file mode 100644 index 0000000000..b58fe6d244 --- /dev/null +++ b/spring-boot-modules/spring-boot-security/src/main/resources/public/hello/baeldung.txt @@ -0,0 +1 @@ +Hello From Baeldung \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-security/src/test/java/com/baeldung/annotations/globalmethod/GlobalMethodSpringBootIntegrationTest.java b/spring-boot-modules/spring-boot-security/src/test/java/com/baeldung/annotations/globalmethod/GlobalMethodSpringBootIntegrationTest.java new file mode 100644 index 0000000000..be9dff714b --- /dev/null +++ b/spring-boot-modules/spring-boot-security/src/test/java/com/baeldung/annotations/globalmethod/GlobalMethodSpringBootIntegrationTest.java @@ -0,0 +1,104 @@ +package com.baeldung.annotations.globalmethod; + +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.security.access.AccessDeniedException; +import org.springframework.security.test.context.support.WithAnonymousUser; +import org.springframework.security.test.context.support.WithMockUser; +import org.springframework.test.context.junit4.SpringRunner; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.Assert.assertEquals; +import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT; + +@RunWith(SpringRunner.class) +@SpringBootTest(webEnvironment = RANDOM_PORT) +public class GlobalMethodSpringBootIntegrationTest { + public static final String HELLO_JSR_250 = "Hello Jsr250"; + public static final String HELLO_PUBLIC = "Hello Public"; + public static final String HELLO_PRE_AUTHORIZE = "Hello PreAuthorize"; + public static final String PUBLIC_RESOURCE = "/hello/baeldung.txt"; + public static final String HELLO_FROM_PUBLIC_RESOURCE = "Hello From Baeldung"; + private static final String PROTECTED_METHOD = "/protected"; + + @Autowired + private TestRestTemplate template; + + @Autowired + private AnnotationSecuredController api; + + @WithMockUser(username="baeldung", roles = "USER") + @Test + public void givenUserWithRole_whenJsr250_thenOk() { + assertThat(api.jsr250Hello()).isEqualTo(HELLO_JSR_250); + } + + @WithMockUser(username="baeldung", roles = "NOT-USER") + @Test(expected = AccessDeniedException.class) + public void givenWrongRole_whenJsr250_thenAccessDenied() { + api.jsr250Hello(); + } + + @Test + @WithAnonymousUser + public void givenAnonymousUser_whenPublic_thenOk() { + assertThat(api.publicHello()).isEqualTo(HELLO_PUBLIC); + } + + @Test(expected = AccessDeniedException.class) + @WithAnonymousUser + public void givenAnonymousUser_whenJsr250_thenAccessDenied() { + api.jsr250Hello(); + } + + // Tests for indirect calling of method + @Test + @WithAnonymousUser + public void givenAnonymousUser_whenIndirectCall_thenNoSecurity() { + assertThat(api.indirectHello()).isEqualTo(HELLO_JSR_250); + } + + @Test(expected = AccessDeniedException.class) + @WithAnonymousUser + public void givenAnonymousUser_whenIndirectToDifferentClass_thenAccessDenied() { + api.differentClassHello(); + } + + // Tests for static resource + @Test + public void givenPublicResource_whenGetViaWeb_thenOk() { + ResponseEntity result = template.getForEntity(PUBLIC_RESOURCE, String.class); + assertEquals(HELLO_FROM_PUBLIC_RESOURCE, result.getBody()); + } + + @Test + public void givenProtectedMethod_whenGetViaWeb_thenRedirectToLogin() { + ResponseEntity result = template.getForEntity(PROTECTED_METHOD, String.class); + assertEquals(HttpStatus.FOUND, result.getStatusCode()); + } + + // Tests for preAuthorize annotations + @WithMockUser(username="baeldung", roles = "USER") + @Test + public void givenUserWithRole_whenCallPreAuthorize_thenOk() { + assertThat(api.preAuthorizeHello()).isEqualTo(HELLO_PRE_AUTHORIZE); + } + + @WithMockUser(username="baeldung", roles = "NOT-USER") + @Test(expected = AccessDeniedException.class) + public void givenWrongRole_whenCallPreAuthorize_thenAccessDenied() { + api.preAuthorizeHello(); + } + + @Test(expected = AccessDeniedException.class) + @WithAnonymousUser + public void givenAnonymousUser_whenCallPreAuthorize_thenAccessDenied() { + api.preAuthorizeHello(); + } + +} diff --git a/spring-boot-modules/spring-boot-security/src/test/java/com/baeldung/annotations/websecurity/WebSecuritySpringBootIntegrationTest.java b/spring-boot-modules/spring-boot-security/src/test/java/com/baeldung/annotations/websecurity/WebSecuritySpringBootIntegrationTest.java new file mode 100644 index 0000000000..1360ae939d --- /dev/null +++ b/spring-boot-modules/spring-boot-security/src/test/java/com/baeldung/annotations/websecurity/WebSecuritySpringBootIntegrationTest.java @@ -0,0 +1,62 @@ +package com.baeldung.annotations.websecurity; + +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.test.context.junit4.SpringRunner; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.Assert.assertEquals; +import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT; + +@RunWith(SpringRunner.class) +@SpringBootTest(webEnvironment = RANDOM_PORT) +public class WebSecuritySpringBootIntegrationTest { + private static final String PUBLIC_RESOURCE = "/hello/baeldung.txt"; + private static final String HELLO_FROM_PUBLIC_RESOURCE = "Hello From Baeldung"; + + @Autowired + private ConfigSecuredController api; + + @Autowired + private TestRestTemplate template; + + @Test + public void whenCallPublicDirectly_thenOk() { + assertThat(api.publicHello()).isEqualTo("Hello Public"); + } + + @Test + public void whenCallProtectedDirectly_thenNoSecurity() { + assertThat(api.protectedHello()).isEqualTo("Hello from protected"); + } + + @Test + public void whenGetProtectedViaWeb_thenForbidden() { + ResponseEntity result = template.getForEntity("/protected", String.class); + assertEquals(HttpStatus.FORBIDDEN, result.getStatusCode()); + } + + @Test + public void whenGetAdminViaWeb_thenForbidden() { + ResponseEntity result = template.getForEntity("/admin", String.class); + assertEquals(HttpStatus.FORBIDDEN, result.getStatusCode()); + } + + @Test + public void whenGetPublicViaWeb_thenSuccess() { + ResponseEntity result = template.getForEntity("/public", String.class); + assertEquals(HttpStatus.OK, result.getStatusCode()); + } + + @Test + public void givenPublicResource_whenGetViaWeb_thenOk() { + ResponseEntity result = template.getForEntity(PUBLIC_RESOURCE, String.class); + assertEquals(HELLO_FROM_PUBLIC_RESOURCE, result.getBody()); + } + +} From 7871c67031fad66a600d7d015e4e7222099925dc Mon Sep 17 00:00:00 2001 From: sampadawagde Date: Mon, 16 Aug 2021 22:12:18 +0530 Subject: [PATCH 43/82] remove empty module --- .../kafkastreams/KafkaStreamsLiveTest.java | 58 ++++++++++--------- libraries-data-3/README.md | 9 --- libraries-data-3/pom.xml | 21 ------- 3 files changed, 30 insertions(+), 58 deletions(-) delete mode 100644 libraries-data-3/README.md delete mode 100644 libraries-data-3/pom.xml diff --git a/apache-kafka/src/test/java/com/baeldung/kafkastreams/KafkaStreamsLiveTest.java b/apache-kafka/src/test/java/com/baeldung/kafkastreams/KafkaStreamsLiveTest.java index 0b66dd8fec..3b559b619e 100644 --- a/apache-kafka/src/test/java/com/baeldung/kafkastreams/KafkaStreamsLiveTest.java +++ b/apache-kafka/src/test/java/com/baeldung/kafkastreams/KafkaStreamsLiveTest.java @@ -1,5 +1,9 @@ package com.baeldung.kafkastreams; +import java.io.IOException; +import java.io.UncheckedIOException; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.Arrays; import java.util.Properties; import java.util.regex.Pattern; @@ -18,59 +22,57 @@ import org.junit.Test; public class KafkaStreamsLiveTest { private String bootstrapServers = "localhost:9092"; + private Path stateDirectory; @Test @Ignore("it needs to have kafka broker running on local") public void shouldTestKafkaStreams() throws InterruptedException { - //given + // given String inputTopic = "inputTopic"; Properties streamsConfiguration = new Properties(); streamsConfiguration.put(StreamsConfig.APPLICATION_ID_CONFIG, "wordcount-live-test"); streamsConfiguration.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers); - streamsConfiguration.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG, Serdes.String().getClass().getName()); - streamsConfiguration.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG, Serdes.String().getClass().getName()); + streamsConfiguration.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG, Serdes.String() + .getClass() + .getName()); + streamsConfiguration.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG, Serdes.String() + .getClass() + .getName()); streamsConfiguration.put(StreamsConfig.COMMIT_INTERVAL_MS_CONFIG, 1000); streamsConfiguration.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest"); - // Use a temporary directory for storing state, which will be automatically removed after the test. - // streamsConfiguration.put(StreamsConfig.STATE_DIR_CONFIG, TestUtils.tempDirectory().getAbsolutePath()); - /* - * final StreamsBuilder builder = new StreamsBuilder(); - KStream textLines = builder.stream(wordCountTopic, - Consumed.with(Serdes.String(), Serdes.String())); + // Use a temporary directory for storing state, which will be automatically removed after the test. + try { + this.stateDirectory = Files.createTempDirectory("kafka-streams"); + streamsConfiguration.put(StreamsConfig.STATE_DIR_CONFIG, this.stateDirectory.toAbsolutePath() + .toString()); + } catch (final IOException e) { + throw new UncheckedIOException("Cannot create temporary directory", e); + } - KTable wordCounts = textLines - .flatMapValues(value -> Arrays.asList(value.toLowerCase(Locale.ROOT) - .split("\\W+"))) - .groupBy((key, word) -> word) - .count(Materialized.> as("counts-store")); - */ - //when + // when final StreamsBuilder builder = new StreamsBuilder(); KStream textLines = builder.stream(inputTopic); Pattern pattern = Pattern.compile("\\W+", Pattern.UNICODE_CHARACTER_CLASS); - KTable wordCounts = textLines - .flatMapValues(value -> Arrays.asList(pattern.split(value.toLowerCase()))) - .groupBy((key, word) -> word) - .count(); + KTable wordCounts = textLines.flatMapValues(value -> Arrays.asList(pattern.split(value.toLowerCase()))) + .groupBy((key, word) -> word) + .count(); - wordCounts.toStream().foreach((word, count) -> System.out.println("word: " + word + " -> " + count)); + wordCounts.toStream() + .foreach((word, count) -> System.out.println("word: " + word + " -> " + count)); String outputTopic = "outputTopic"; - //final Serde stringSerde = Serdes.String(); - //final Serde longSerde = Serdes.Long(); - //wordCounts.toStream().to(stringSerde, longSerde, outputTopic); - - wordCounts.toStream().to("outputTopic", - Produced.with(Serdes.String(), Serdes.Long())); + + wordCounts.toStream() + .to(outputTopic, Produced.with(Serdes.String(), Serdes.Long())); final Topology topology = builder.build(); KafkaStreams streams = new KafkaStreams(topology, streamsConfiguration); streams.start(); - //then + // then Thread.sleep(30000); streams.close(); } diff --git a/libraries-data-3/README.md b/libraries-data-3/README.md deleted file mode 100644 index fe856436f1..0000000000 --- a/libraries-data-3/README.md +++ /dev/null @@ -1,9 +0,0 @@ -## Data Libraries - -This module contains articles about libraries for data processing in Java. - -### Relevant articles - - -##### Building the project -You can build the project from the command line using: *mvn clean install*, or in an IDE. \ No newline at end of file diff --git a/libraries-data-3/pom.xml b/libraries-data-3/pom.xml deleted file mode 100644 index 1a95613cb3..0000000000 --- a/libraries-data-3/pom.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - 4.0.0 - libraries-data-3 - libraries-data-3 - - - com.baeldung - parent-modules - 1.0.0-SNAPSHOT - - - - - - - - - \ No newline at end of file From 640f0d6dde4377ad2c199364665d9c53f022a639 Mon Sep 17 00:00:00 2001 From: mbarriola <85458535+mbarriola@users.noreply.github.com> Date: Mon, 16 Aug 2021 17:43:53 -0400 Subject: [PATCH 44/82] Java 5065 (#11126) * Commit source code to branch * BAEL-5065 improvement of groupBy with complex key --- core-java-modules/core-java-16/pom.xml | 85 +++--- .../java_16_features/groupingby/BlogPost.java | 38 +++ .../groupingby/BlogPostType.java | 5 + .../java_16_features/groupingby/Tuple.java | 41 +++ .../JavaGroupingByCollectorUnitTest.java | 254 ++++++++++++++++++ 5 files changed, 383 insertions(+), 40 deletions(-) create mode 100644 core-java-modules/core-java-16/src/main/java/com/baeldung/java_16_features/groupingby/BlogPost.java create mode 100644 core-java-modules/core-java-16/src/main/java/com/baeldung/java_16_features/groupingby/BlogPostType.java create mode 100644 core-java-modules/core-java-16/src/main/java/com/baeldung/java_16_features/groupingby/Tuple.java create mode 100644 core-java-modules/core-java-16/src/test/java/com/baeldung/java_16_features/groupingby/JavaGroupingByCollectorUnitTest.java diff --git a/core-java-modules/core-java-16/pom.xml b/core-java-modules/core-java-16/pom.xml index 230e342f01..a8a84511db 100644 --- a/core-java-modules/core-java-16/pom.xml +++ b/core-java-modules/core-java-16/pom.xml @@ -1,48 +1,53 @@ - 4.0.0 - core-java-16 - 0.1.0-SNAPSHOT - core-java-16 - jar - http://maven.apache.org + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + core-java-16 + 0.1.0-SNAPSHOT + core-java-16 + jar + http://maven.apache.org - - com.baeldung - parent-modules - 1.0.0-SNAPSHOT - ../../ - + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + ../../ + - - - org.assertj - assertj-core - ${assertj.version} - test - - + + + org.assertj + assertj-core + ${assertj.version} + test + + + org.apache.commons + commons-lang3 + 3.12.0 + + - - - - org.apache.maven.plugins - maven-compiler-plugin - ${maven-compiler-plugin.version} - - ${maven.compiler.source.version} - ${maven.compiler.target.version} - - - - + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + ${maven.compiler.source.version} + ${maven.compiler.target.version} + + + + - - 16 - 16 - 3.6.1 - + + 16 + 16 + 3.6.1 + \ No newline at end of file diff --git a/core-java-modules/core-java-16/src/main/java/com/baeldung/java_16_features/groupingby/BlogPost.java b/core-java-modules/core-java-16/src/main/java/com/baeldung/java_16_features/groupingby/BlogPost.java new file mode 100644 index 0000000000..adaa1044ff --- /dev/null +++ b/core-java-modules/core-java-16/src/main/java/com/baeldung/java_16_features/groupingby/BlogPost.java @@ -0,0 +1,38 @@ +package com.baeldung.java_16_features.groupingby; + +public class BlogPost { + + private String title; + private String author; + private BlogPostType type; + private int likes; + record AuthPostTypesLikes(String author, BlogPostType type, int likes) {}; + + public BlogPost(String title, String author, BlogPostType type, int likes) { + this.title = title; + this.author = author; + this.type = type; + this.likes = likes; + } + + public String getTitle() { + return title; + } + + public String getAuthor() { + return author; + } + + public BlogPostType getType() { + return type; + } + + public int getLikes() { + return likes; + } + + @Override + public String toString() { + return "BlogPost{" + "title='" + title + '\'' + ", type=" + type + ", likes=" + likes + '}'; + } +} diff --git a/core-java-modules/core-java-16/src/main/java/com/baeldung/java_16_features/groupingby/BlogPostType.java b/core-java-modules/core-java-16/src/main/java/com/baeldung/java_16_features/groupingby/BlogPostType.java new file mode 100644 index 0000000000..df38b7e1c4 --- /dev/null +++ b/core-java-modules/core-java-16/src/main/java/com/baeldung/java_16_features/groupingby/BlogPostType.java @@ -0,0 +1,5 @@ +package com.baeldung.java_16_features.groupingby; + +public enum BlogPostType { + NEWS, REVIEW, GUIDE +} diff --git a/core-java-modules/core-java-16/src/main/java/com/baeldung/java_16_features/groupingby/Tuple.java b/core-java-modules/core-java-16/src/main/java/com/baeldung/java_16_features/groupingby/Tuple.java new file mode 100644 index 0000000000..ad41207aa4 --- /dev/null +++ b/core-java-modules/core-java-16/src/main/java/com/baeldung/java_16_features/groupingby/Tuple.java @@ -0,0 +1,41 @@ +package com.baeldung.java_16_features.groupingby; + +import java.util.Objects; + +public class Tuple { + private final BlogPostType type; + private final String author; + + public Tuple(BlogPostType type, String author) { + this.type = type; + this.author = author; + } + + public BlogPostType getType() { + return type; + } + + public String getAuthor() { + return author; + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + Tuple tuple = (Tuple) o; + return type == tuple.type && author.equals(tuple.author); + } + + @Override + public int hashCode() { + return Objects.hash(type, author); + } + + @Override + public String toString() { + return "Tuple{" + "type=" + type + ", author='" + author + '\'' + '}'; + } +} diff --git a/core-java-modules/core-java-16/src/test/java/com/baeldung/java_16_features/groupingby/JavaGroupingByCollectorUnitTest.java b/core-java-modules/core-java-16/src/test/java/com/baeldung/java_16_features/groupingby/JavaGroupingByCollectorUnitTest.java new file mode 100644 index 0000000000..0e926246ff --- /dev/null +++ b/core-java-modules/core-java-16/src/test/java/com/baeldung/java_16_features/groupingby/JavaGroupingByCollectorUnitTest.java @@ -0,0 +1,254 @@ +package com.baeldung.java_16_features.groupingby; + +import static java.util.Comparator.comparingInt; +import static java.util.stream.Collectors.averagingInt; +import static java.util.stream.Collectors.counting; +import static java.util.stream.Collectors.groupingBy; +import static java.util.stream.Collectors.groupingByConcurrent; +import static java.util.stream.Collectors.joining; +import static java.util.stream.Collectors.mapping; +import static java.util.stream.Collectors.maxBy; +import static java.util.stream.Collectors.summarizingInt; +import static java.util.stream.Collectors.summingInt; +import static java.util.stream.Collectors.toList; +import static java.util.stream.Collectors.toSet; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.Arrays; +import java.util.EnumMap; +import java.util.IntSummaryStatistics; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.Set; +import java.util.concurrent.ConcurrentMap; + +import org.apache.commons.lang3.tuple.ImmutablePair; +import org.apache.commons.lang3.tuple.Pair; +import org.junit.jupiter.api.Test; + +public class JavaGroupingByCollectorUnitTest { + + private static final List posts = Arrays.asList(new BlogPost("News item 1", "Author 1", BlogPostType.NEWS, 15), new BlogPost("Tech review 1", "Author 2", BlogPostType.REVIEW, 5), + new BlogPost("Programming guide", "Author 1", BlogPostType.GUIDE, 20), new BlogPost("News item 2", "Author 2", BlogPostType.NEWS, 35), new BlogPost("Tech review 2", "Author 1", BlogPostType.REVIEW, 15)); + + @Test + public void givenAListOfPosts_whenGroupedByType_thenGetAMapBetweenTypeAndPosts() { + Map> postsPerType = posts.stream() + .collect(groupingBy(BlogPost::getType)); + + assertEquals(2, postsPerType.get(BlogPostType.NEWS) + .size()); + assertEquals(1, postsPerType.get(BlogPostType.GUIDE) + .size()); + assertEquals(2, postsPerType.get(BlogPostType.REVIEW) + .size()); + } + + @Test + public void givenAListOfPosts_whenGroupedByTypeAndTheirTitlesAreJoinedInAString_thenGetAMapBetweenTypeAndCsvTitles() { + Map postsPerType = posts.stream() + .collect(groupingBy(BlogPost::getType, mapping(BlogPost::getTitle, joining(", ", "Post titles: [", "]")))); + + assertEquals("Post titles: [News item 1, News item 2]", postsPerType.get(BlogPostType.NEWS)); + assertEquals("Post titles: [Programming guide]", postsPerType.get(BlogPostType.GUIDE)); + assertEquals("Post titles: [Tech review 1, Tech review 2]", postsPerType.get(BlogPostType.REVIEW)); + } + + @Test + public void givenAListOfPosts_whenGroupedByTypeAndSumTheLikes_thenGetAMapBetweenTypeAndPostLikes() { + Map likesPerType = posts.stream() + .collect(groupingBy(BlogPost::getType, summingInt(BlogPost::getLikes))); + + assertEquals(50, likesPerType.get(BlogPostType.NEWS) + .intValue()); + assertEquals(20, likesPerType.get(BlogPostType.REVIEW) + .intValue()); + assertEquals(20, likesPerType.get(BlogPostType.GUIDE) + .intValue()); + } + + @Test + public void givenAListOfPosts_whenGroupedByTypeInAnEnumMap_thenGetAnEnumMapBetweenTypeAndPosts() { + EnumMap> postsPerType = posts.stream() + .collect(groupingBy(BlogPost::getType, () -> new EnumMap<>(BlogPostType.class), toList())); + + assertEquals(2, postsPerType.get(BlogPostType.NEWS) + .size()); + assertEquals(1, postsPerType.get(BlogPostType.GUIDE) + .size()); + assertEquals(2, postsPerType.get(BlogPostType.REVIEW) + .size()); + } + + @Test + public void givenAListOfPosts_whenGroupedByTypeInSets_thenGetAMapBetweenTypesAndSetsOfPosts() { + Map> postsPerType = posts.stream() + .collect(groupingBy(BlogPost::getType, toSet())); + + assertEquals(2, postsPerType.get(BlogPostType.NEWS) + .size()); + assertEquals(1, postsPerType.get(BlogPostType.GUIDE) + .size()); + assertEquals(2, postsPerType.get(BlogPostType.REVIEW) + .size()); + } + + @Test + public void givenAListOfPosts_whenGroupedByTypeConcurrently_thenGetAMapBetweenTypeAndPosts() { + ConcurrentMap> postsPerType = posts.parallelStream() + .collect(groupingByConcurrent(BlogPost::getType)); + + assertEquals(2, postsPerType.get(BlogPostType.NEWS) + .size()); + assertEquals(1, postsPerType.get(BlogPostType.GUIDE) + .size()); + assertEquals(2, postsPerType.get(BlogPostType.REVIEW) + .size()); + } + + @Test + public void givenAListOfPosts_whenGroupedByTypeAndAveragingLikes_thenGetAMapBetweenTypeAndAverageNumberOfLikes() { + Map averageLikesPerType = posts.stream() + .collect(groupingBy(BlogPost::getType, averagingInt(BlogPost::getLikes))); + + assertEquals(25, averageLikesPerType.get(BlogPostType.NEWS) + .intValue()); + assertEquals(20, averageLikesPerType.get(BlogPostType.GUIDE) + .intValue()); + assertEquals(10, averageLikesPerType.get(BlogPostType.REVIEW) + .intValue()); + } + + @Test + public void givenAListOfPosts_whenGroupedByTypeAndCounted_thenGetAMapBetweenTypeAndNumberOfPosts() { + Map numberOfPostsPerType = posts.stream() + .collect(groupingBy(BlogPost::getType, counting())); + + assertEquals(2, numberOfPostsPerType.get(BlogPostType.NEWS) + .intValue()); + assertEquals(1, numberOfPostsPerType.get(BlogPostType.GUIDE) + .intValue()); + assertEquals(2, numberOfPostsPerType.get(BlogPostType.REVIEW) + .intValue()); + } + + @Test + public void givenAListOfPosts_whenGroupedByTypeAndMaxingLikes_thenGetAMapBetweenTypeAndMaximumNumberOfLikes() { + Map> maxLikesPerPostType = posts.stream() + .collect(groupingBy(BlogPost::getType, maxBy(comparingInt(BlogPost::getLikes)))); + + assertTrue(maxLikesPerPostType.get(BlogPostType.NEWS) + .isPresent()); + assertEquals(35, maxLikesPerPostType.get(BlogPostType.NEWS) + .get() + .getLikes()); + + assertTrue(maxLikesPerPostType.get(BlogPostType.GUIDE) + .isPresent()); + assertEquals(20, maxLikesPerPostType.get(BlogPostType.GUIDE) + .get() + .getLikes()); + + assertTrue(maxLikesPerPostType.get(BlogPostType.REVIEW) + .isPresent()); + assertEquals(15, maxLikesPerPostType.get(BlogPostType.REVIEW) + .get() + .getLikes()); + } + + @Test + public void givenAListOfPosts_whenGroupedByAuthorAndThenByType_thenGetAMapBetweenAuthorAndMapsBetweenTypeAndBlogPosts() { + Map>> map = posts.stream() + .collect(groupingBy(BlogPost::getAuthor, groupingBy(BlogPost::getType))); + + assertEquals(1, map.get("Author 1") + .get(BlogPostType.NEWS) + .size()); + assertEquals(1, map.get("Author 1") + .get(BlogPostType.GUIDE) + .size()); + assertEquals(1, map.get("Author 1") + .get(BlogPostType.REVIEW) + .size()); + + assertEquals(1, map.get("Author 2") + .get(BlogPostType.NEWS) + .size()); + assertEquals(1, map.get("Author 2") + .get(BlogPostType.REVIEW) + .size()); + assertNull(map.get("Author 2") + .get(BlogPostType.GUIDE)); + } + + @Test + public void givenAListOfPosts_whenGroupedByTypeAndSummarizingLikes_thenGetAMapBetweenTypeAndSummary() { + Map likeStatisticsPerType = posts.stream() + .collect(groupingBy(BlogPost::getType, summarizingInt(BlogPost::getLikes))); + + IntSummaryStatistics newsLikeStatistics = likeStatisticsPerType.get(BlogPostType.NEWS); + + assertEquals(2, newsLikeStatistics.getCount()); + assertEquals(50, newsLikeStatistics.getSum()); + assertEquals(25.0, newsLikeStatistics.getAverage(), 0.001); + assertEquals(35, newsLikeStatistics.getMax()); + assertEquals(15, newsLikeStatistics.getMin()); + } + + @Test + public void givenAListOfPosts_whenGroupedByComplexMapPairKeyType_thenGetAMapBetweenPairAndList() { + + Map, List> postsPerTypeAndAuthor = posts.stream() + .collect(groupingBy(post -> new ImmutablePair<>(post.getType(), post.getAuthor()))); + + List result = postsPerTypeAndAuthor.get(new ImmutablePair<>(BlogPostType.GUIDE, "Author 1")); + + assertThat(result.size()).isEqualTo(1); + + BlogPost blogPost = result.get(0); + + assertThat(blogPost.getTitle()).isEqualTo("Programming guide"); + assertThat(blogPost.getType()).isEqualTo(BlogPostType.GUIDE); + assertThat(blogPost.getAuthor()).isEqualTo("Author 1"); + } + + @Test + public void givenAListOfPosts_whenGroupedByComplexMapKeyType_thenGetAMapBetweenTupleAndList() { + + Map> postsPerTypeAndAuthor = posts.stream() + .collect(groupingBy(post -> new Tuple(post.getType(), post.getAuthor()))); + + List result = postsPerTypeAndAuthor.get(new Tuple(BlogPostType.GUIDE, "Author 1")); + + assertThat(result.size()).isEqualTo(1); + + BlogPost blogPost = result.get(0); + + assertThat(blogPost.getTitle()).isEqualTo("Programming guide"); + assertThat(blogPost.getType()).isEqualTo(BlogPostType.GUIDE); + assertThat(blogPost.getAuthor()).isEqualTo("Author 1"); + } + + @Test + public void givenAListOfPosts_whenGroupedByRecord_thenGetAMapBetweenRecordAndList() { + + Map> postsPerTypeAndAuthor = posts.stream() + .collect(groupingBy(post -> new BlogPost.AuthPostTypesLikes(post.getAuthor(), post.getType(), post.getLikes()))); + + List result = postsPerTypeAndAuthor.get(new BlogPost.AuthPostTypesLikes("Author 1", BlogPostType.GUIDE, 20)); + + assertThat(result.size()).isEqualTo(1); + + BlogPost blogPost = result.get(0); + + assertThat(blogPost.getTitle()).isEqualTo("Programming guide"); + assertThat(blogPost.getType()).isEqualTo(BlogPostType.GUIDE); + assertThat(blogPost.getAuthor()).isEqualTo("Author 1"); + assertThat(blogPost.getLikes()).isEqualTo(20); + } + +} From 357a6e1ea8b6d386e6e077b7c32cd084c380b6e3 Mon Sep 17 00:00:00 2001 From: mikr Date: Tue, 17 Aug 2021 10:36:59 +0200 Subject: [PATCH 45/82] JAVA-5948 Reduce size of core-java. Remove input.txt (unused). --- .../stopexecution/StopExecution.java | 35 ++----------------- 1 file changed, 2 insertions(+), 33 deletions(-) diff --git a/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/stopexecution/StopExecution.java b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/stopexecution/StopExecution.java index 20f66da5da..a3c7dc02db 100644 --- a/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/stopexecution/StopExecution.java +++ b/core-java-modules/core-java-concurrency-basic-2/src/main/java/com/baeldung/concurrent/stopexecution/StopExecution.java @@ -189,21 +189,8 @@ public class StopExecution { longRunningSort(); } - private void longRunningOperation() { - LOG.info("long Running operation started"); - - try { - //Thread.sleep(500); - longFileRead(); - LOG.info("long running operation finished"); - } catch (InterruptedException e) { - LOG.info("long Running operation interrupted"); - } - } - private void longRunningSort() { - LOG.info("long Running task started"); - // Do you long running calculation here + LOG.info("Long running task started"); int len = 100000; List numbers = new ArrayList<>(); try { @@ -229,25 +216,7 @@ public class StopExecution { LOG.info("Index position: " + i); LOG.info("Long running task finished"); } catch (InterruptedException e) { - LOG.info("long Running operation interrupted"); - } - } - - private void longFileRead() throws InterruptedException { - String file = "input.txt"; - ClassLoader classloader = getClass().getClassLoader(); - - try (InputStream inputStream = classloader.getResourceAsStream(file)) { - Reader inputStreamReader = new InputStreamReader(inputStream); - - int data = inputStreamReader.read(); - while (data != -1) { - char theChar = (char) data; - data = inputStreamReader.read(); - throwExceptionOnThreadInterrupt(); - } - } catch (IOException e) { - LOG.error("Exception: ", e); + LOG.info("Long running operation interrupted"); } } From c4011204672a2aabceaa64762e3cf3a81046be93 Mon Sep 17 00:00:00 2001 From: sampadawagde Date: Tue, 17 Aug 2021 14:21:04 +0530 Subject: [PATCH 46/82] JAVA-6390: review corrections --- apache-kafka/pom.xml | 5 ++--- .../src/main/java/com/baeldung/flink/model/InputMessage.java | 5 ++++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/apache-kafka/pom.xml b/apache-kafka/pom.xml index 41cbab44ed..cda91ed92f 100644 --- a/apache-kafka/pom.xml +++ b/apache-kafka/pom.xml @@ -26,12 +26,12 @@ org.slf4j slf4j-api - ${slf4j.version} + ${org.slf4j.version} org.slf4j slf4j-log4j12 - ${slf4j.version} + ${org.slf4j.version} org.apache.flink @@ -165,7 +165,6 @@ 3.6.2 - 1.7.25 2.8.0 1.15.3 1.15.3 diff --git a/apache-kafka/src/main/java/com/baeldung/flink/model/InputMessage.java b/apache-kafka/src/main/java/com/baeldung/flink/model/InputMessage.java index 9331811b91..d33eb5a9ac 100644 --- a/apache-kafka/src/main/java/com/baeldung/flink/model/InputMessage.java +++ b/apache-kafka/src/main/java/com/baeldung/flink/model/InputMessage.java @@ -61,7 +61,10 @@ public class InputMessage { if (o == null || getClass() != o.getClass()) return false; InputMessage message1 = (InputMessage) o; - return Objects.equal(sender, message1.sender) && Objects.equal(recipient, message1.recipient) && Objects.equal(sentAt, message1.sentAt) && Objects.equal(message, message1.message); + return Objects.equal(sender, message1.sender) && + Objects.equal(recipient, message1.recipient) && + Objects.equal(sentAt, message1.sentAt) && + Objects.equal(message, message1.message); } @Override From 6f11290160c6df54b83185432762324ad98da0ed Mon Sep 17 00:00:00 2001 From: Haroon Khan Date: Tue, 17 Aug 2021 12:12:55 +0100 Subject: [PATCH 47/82] [JAVA-6221] Test clean up --- .../baeldung/java9/time/TimeApiUnitTest.java | 39 +++++++++++-------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/core-java-modules/core-java-date-operations-1/src/test/java/com/baeldung/java9/time/TimeApiUnitTest.java b/core-java-modules/core-java-date-operations-1/src/test/java/com/baeldung/java9/time/TimeApiUnitTest.java index c4e150c757..416a621286 100644 --- a/core-java-modules/core-java-date-operations-1/src/test/java/com/baeldung/java9/time/TimeApiUnitTest.java +++ b/core-java-modules/core-java-date-operations-1/src/test/java/com/baeldung/java9/time/TimeApiUnitTest.java @@ -1,12 +1,13 @@ package com.baeldung.java9.time; +import org.junit.Test; + import java.time.LocalDate; import java.util.Calendar; import java.util.Date; import java.util.List; -import static org.junit.Assert.assertEquals; -import org.junit.Test; +import static org.assertj.core.api.Assertions.assertThat; public class TimeApiUnitTest { @@ -18,19 +19,18 @@ public class TimeApiUnitTest { Date endDate = endCalendar.getTime(); List dates = TimeApi.getDatesBetweenUsingJava7(startDate, endDate); - assertEquals(2, dates.size()); + + assertThat(dates).hasSize(2); Calendar calendar = Calendar.getInstance(); - Date date1 = calendar.getTime(); - assertEquals(date1.getDay(), dates.get(0).getDay()); - assertEquals(date1.getMonth(), dates.get(0).getMonth()); - assertEquals(date1.getYear(), dates.get(0).getYear()); + Date expectedDate1 = calendar.getTime(); + assertThat(dates.get(0)).isInSameDayAs(expectedDate1); + assertThatTimeFieldsAreZero(dates.get(0)); calendar.add(Calendar.DATE, 1); - Date date2 = calendar.getTime(); - assertEquals(date2.getDay(), dates.get(1).getDay()); - assertEquals(date2.getMonth(), dates.get(1).getMonth()); - assertEquals(date2.getYear(), dates.get(1).getYear()); + Date expectedDate2 = calendar.getTime(); + assertThat(dates.get(1)).isInSameDayAs(expectedDate2); + assertThatTimeFieldsAreZero(dates.get(1)); } @Test @@ -39,9 +39,8 @@ public class TimeApiUnitTest { LocalDate endDate = LocalDate.now().plusDays(2); List dates = TimeApi.getDatesBetweenUsingJava8(startDate, endDate); - assertEquals(dates.size(), 2); - assertEquals(dates.get(0), LocalDate.now()); - assertEquals(dates.get(1), LocalDate.now().plusDays(1)); + + assertThat(dates).containsExactly(LocalDate.now(), LocalDate.now().plusDays(1)); } @Test @@ -50,9 +49,15 @@ public class TimeApiUnitTest { LocalDate endDate = LocalDate.now().plusDays(2); List dates = TimeApi.getDatesBetweenUsingJava9(startDate, endDate); - assertEquals(dates.size(), 2); - assertEquals(dates.get(0), LocalDate.now()); - assertEquals(dates.get(1), LocalDate.now().plusDays(1)); + + assertThat(dates).containsExactly(LocalDate.now(), LocalDate.now().plusDays(1)); + } + + private static void assertThatTimeFieldsAreZero(Date date) { + assertThat(date).hasHourOfDay(0); + assertThat(date).hasMinute(0); + assertThat(date).hasSecond(0); + assertThat(date).hasMillisecond(0); } } From b42f71b08d8d9dc1e562c242ede7211a8cbb709e Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Tue, 17 Aug 2021 23:35:33 +0530 Subject: [PATCH 48/82] JAVA-6216 Renamed spring-cloud-ribbon-retry to *ManualTest as they both (#11132) expected at live running server to connect to --- ...reIntegrationTest.java => RibbonRetryFailureManualTest.java} | 2 +- ...ssIntegrationTest.java => RibbonRetrySuccessManualTest.java} | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename spring-cloud/spring-cloud-ribbon-retry/ribbon-client-service/src/test/java/com/baeldung/spring/cloud/ribbon/retry/{RibbonRetryFailureIntegrationTest.java => RibbonRetryFailureManualTest.java} (97%) rename spring-cloud/spring-cloud-ribbon-retry/ribbon-client-service/src/test/java/com/baeldung/spring/cloud/ribbon/retry/{RibbonRetrySuccessIntegrationTest.java => RibbonRetrySuccessManualTest.java} (97%) diff --git a/spring-cloud/spring-cloud-ribbon-retry/ribbon-client-service/src/test/java/com/baeldung/spring/cloud/ribbon/retry/RibbonRetryFailureIntegrationTest.java b/spring-cloud/spring-cloud-ribbon-retry/ribbon-client-service/src/test/java/com/baeldung/spring/cloud/ribbon/retry/RibbonRetryFailureManualTest.java similarity index 97% rename from spring-cloud/spring-cloud-ribbon-retry/ribbon-client-service/src/test/java/com/baeldung/spring/cloud/ribbon/retry/RibbonRetryFailureIntegrationTest.java rename to spring-cloud/spring-cloud-ribbon-retry/ribbon-client-service/src/test/java/com/baeldung/spring/cloud/ribbon/retry/RibbonRetryFailureManualTest.java index decb77e7b9..984f6d797e 100644 --- a/spring-cloud/spring-cloud-ribbon-retry/ribbon-client-service/src/test/java/com/baeldung/spring/cloud/ribbon/retry/RibbonRetryFailureIntegrationTest.java +++ b/spring-cloud/spring-cloud-ribbon-retry/ribbon-client-service/src/test/java/com/baeldung/spring/cloud/ribbon/retry/RibbonRetryFailureManualTest.java @@ -14,7 +14,7 @@ import org.springframework.http.ResponseEntity; import static org.junit.jupiter.api.Assertions.assertTrue; @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = RibbonClientApp.class) -public class RibbonRetryFailureIntegrationTest { +public class RibbonRetryFailureManualTest { private static ConfigurableApplicationContext weatherServiceInstance1; private static ConfigurableApplicationContext weatherServiceInstance2; diff --git a/spring-cloud/spring-cloud-ribbon-retry/ribbon-client-service/src/test/java/com/baeldung/spring/cloud/ribbon/retry/RibbonRetrySuccessIntegrationTest.java b/spring-cloud/spring-cloud-ribbon-retry/ribbon-client-service/src/test/java/com/baeldung/spring/cloud/ribbon/retry/RibbonRetrySuccessManualTest.java similarity index 97% rename from spring-cloud/spring-cloud-ribbon-retry/ribbon-client-service/src/test/java/com/baeldung/spring/cloud/ribbon/retry/RibbonRetrySuccessIntegrationTest.java rename to spring-cloud/spring-cloud-ribbon-retry/ribbon-client-service/src/test/java/com/baeldung/spring/cloud/ribbon/retry/RibbonRetrySuccessManualTest.java index dc50fe76e6..2e2ea0b2c8 100644 --- a/spring-cloud/spring-cloud-ribbon-retry/ribbon-client-service/src/test/java/com/baeldung/spring/cloud/ribbon/retry/RibbonRetrySuccessIntegrationTest.java +++ b/spring-cloud/spring-cloud-ribbon-retry/ribbon-client-service/src/test/java/com/baeldung/spring/cloud/ribbon/retry/RibbonRetrySuccessManualTest.java @@ -15,7 +15,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = RibbonClientApp.class) -public class RibbonRetrySuccessIntegrationTest { +public class RibbonRetrySuccessManualTest { private static ConfigurableApplicationContext weatherServiceInstance1; private static ConfigurableApplicationContext weatherServiceInstance2; From f01a4b4d40807fb582eb00e15e14045be5048f75 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 18 Aug 2021 13:10:05 +0800 Subject: [PATCH 49/82] Update README.md --- core-java-modules/core-java-lang-oop-constructors/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-lang-oop-constructors/README.md b/core-java-modules/core-java-lang-oop-constructors/README.md index 4bec8db256..69ade3e25a 100644 --- a/core-java-modules/core-java-lang-oop-constructors/README.md +++ b/core-java-modules/core-java-lang-oop-constructors/README.md @@ -7,3 +7,4 @@ This module contains article about constructors in Java - [Java Copy Constructor](https://www.baeldung.com/java-copy-constructor) - [Cannot Reference “X” Before Supertype Constructor Has Been Called](https://www.baeldung.com/java-cannot-reference-x-before-supertype-constructor-error) - [Private Constructors in Java](https://www.baeldung.com/java-private-constructors) +- [Throwing Exceptions in Constructors](https://www.baeldung.com/java-constructors-exceptions) From e41935bb7c6efd7a6e1ebdb0dc8bd5f651ad4b05 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 18 Aug 2021 13:11:58 +0800 Subject: [PATCH 50/82] Update README.md --- core-java-modules/core-java-string-operations-3/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-string-operations-3/README.md b/core-java-modules/core-java-string-operations-3/README.md index ad4ada3a68..ff6ac51fab 100644 --- a/core-java-modules/core-java-string-operations-3/README.md +++ b/core-java-modules/core-java-string-operations-3/README.md @@ -4,3 +4,4 @@ - [Java (String) or .toString()?](https://www.baeldung.com/java-string-casting-vs-tostring) - [Split Java String by Newline](https://www.baeldung.com/java-string-split-by-newline) - [Split a String in Java and Keep the Delimiters](https://www.baeldung.com/java-split-string-keep-delimiters) +- [Validate String as Filename in Java](https://www.baeldung.com/java-validate-filename) From cb008c25d359067abe67b0648b6e014a581cb08a Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 18 Aug 2021 13:14:42 +0800 Subject: [PATCH 51/82] Update README.md --- spring-security-modules/spring-security-core/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-security-modules/spring-security-core/README.md b/spring-security-modules/spring-security-core/README.md index 9f8e4dda53..f9c6d2e5fb 100644 --- a/spring-security-modules/spring-security-core/README.md +++ b/spring-security-modules/spring-security-core/README.md @@ -10,6 +10,7 @@ This module contains articles about core Spring Security - [Deny Access on Missing @PreAuthorize to Spring Controller Methods](https://www.baeldung.com/spring-deny-access) - [Spring Security: Check If a User Has a Role in Java](https://www.baeldung.com/spring-security-check-user-role) - [Filtering Jackson JSON Output Based on Spring Security Role](https://www.baeldung.com/spring-security-role-filter-json) +- [Spring @EnableWebSecurity vs. @EnableGlobalMethodSecurity](https://www.baeldung.com/spring-enablewebsecurity-vs-enableglobalmethodsecurity) ### Build the Project From 117cb39cc2765f6342348122cae339b4ef9d034a Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 18 Aug 2021 13:16:15 +0800 Subject: [PATCH 52/82] Update README.md --- persistence-modules/spring-data-arangodb/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/persistence-modules/spring-data-arangodb/README.md b/persistence-modules/spring-data-arangodb/README.md index 632d9a256e..29057ece04 100644 --- a/persistence-modules/spring-data-arangodb/README.md +++ b/persistence-modules/spring-data-arangodb/README.md @@ -4,3 +4,5 @@ ### Relevant Articles: + +- [Spring Data with ArangoDB](https://www.baeldung.com/spring-data-arangodb) From 6a042440d6ce4b9124644d574d165bba24b010c3 Mon Sep 17 00:00:00 2001 From: Hamid Reza Sharifi Date: Wed, 18 Aug 2021 12:00:40 +0430 Subject: [PATCH 53/82] Bael 5067: Update "Prevent Cross-Site Scripting (XSS) in a Spring application" article (#11127) * bael-5067: remove test case * bael-5067: remove REST api * bael-5067: remove XSS filter Co-authored-by: sharifi --- .../main/java/com/baeldung/xss/Person.java | 36 ----- .../com/baeldung/xss/PersonController.java | 31 ----- .../main/java/com/baeldung/xss/XSSFilter.java | 44 ------- .../com/baeldung/xss/XSSRequestWrapper.java | 123 ------------------ .../main/java/com/baeldung/xss/XSSUtils.java | 19 --- .../xss/PersonControllerIntegrationTest.java | 64 --------- 6 files changed, 317 deletions(-) delete mode 100644 spring-security-modules/spring-5-security/src/main/java/com/baeldung/xss/Person.java delete mode 100644 spring-security-modules/spring-5-security/src/main/java/com/baeldung/xss/PersonController.java delete mode 100644 spring-security-modules/spring-5-security/src/main/java/com/baeldung/xss/XSSFilter.java delete mode 100644 spring-security-modules/spring-5-security/src/main/java/com/baeldung/xss/XSSRequestWrapper.java delete mode 100644 spring-security-modules/spring-5-security/src/main/java/com/baeldung/xss/XSSUtils.java delete mode 100644 spring-security-modules/spring-5-security/src/test/java/com/baeldung/xss/PersonControllerIntegrationTest.java diff --git a/spring-security-modules/spring-5-security/src/main/java/com/baeldung/xss/Person.java b/spring-security-modules/spring-5-security/src/main/java/com/baeldung/xss/Person.java deleted file mode 100644 index 1e7c02bae8..0000000000 --- a/spring-security-modules/spring-5-security/src/main/java/com/baeldung/xss/Person.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.baeldung.xss; - -public class Person { - private String firstName; - private String lastName; - private int age; - - public String getFirstName() { - return firstName; - } - - public void setFirstName(String firstName) { - this.firstName = firstName; - } - - public String getLastName() { - return lastName; - } - - public void setLastName(String lastName) { - this.lastName = lastName; - } - - public int getAge() { - return age; - } - - public void setAge(int age) { - this.age = age; - } - - @Override - public String toString() { - return "Person {" + "firstName='" + firstName + '\'' + ", lastName='" + lastName + '\'' + ", age=" + age + '}'; - } -} diff --git a/spring-security-modules/spring-5-security/src/main/java/com/baeldung/xss/PersonController.java b/spring-security-modules/spring-5-security/src/main/java/com/baeldung/xss/PersonController.java deleted file mode 100644 index 8486e04e48..0000000000 --- a/spring-security-modules/spring-5-security/src/main/java/com/baeldung/xss/PersonController.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.baeldung.xss; - -import com.fasterxml.jackson.databind.node.JsonNodeFactory; -import com.fasterxml.jackson.databind.node.ObjectNode; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestHeader; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RequestBody; - -import java.util.Map; - -@RestController -@RequestMapping("/personService") -public class PersonController { - - @PostMapping(value = "/person") - private ResponseEntity savePerson(@RequestHeader Map headers, - @RequestParam String param, @RequestBody Person body) { - ObjectNode response = JsonNodeFactory.instance.objectNode(); - headers.forEach((key, value) -> response.put(key, value)); - response.put("firstName", body.getFirstName()); - response.put("lastName", body.getLastName()); - response.put("age", body.getAge()); - response.put("param", param); - return new ResponseEntity(response.toString(), HttpStatus.OK); - } -} \ No newline at end of file diff --git a/spring-security-modules/spring-5-security/src/main/java/com/baeldung/xss/XSSFilter.java b/spring-security-modules/spring-5-security/src/main/java/com/baeldung/xss/XSSFilter.java deleted file mode 100644 index 431ed4d120..0000000000 --- a/spring-security-modules/spring-5-security/src/main/java/com/baeldung/xss/XSSFilter.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.baeldung.xss; - -import org.apache.commons.io.IOUtils; -import org.apache.commons.lang.StringUtils; -import org.springframework.core.Ordered; -import org.springframework.core.annotation.Order; -import org.springframework.stereotype.Component; -import javax.servlet.Filter; -import javax.servlet.FilterConfig; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.ServletException; -import javax.servlet.FilterChain; -import javax.servlet.http.HttpServletRequest; -import java.io.IOException; - -@Component -@Order(Ordered.HIGHEST_PRECEDENCE) -public class XSSFilter implements Filter { - - @Override - public void init(FilterConfig filterConfig) { - } - - @Override - public void destroy() { - } - - @Override - public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) - throws IOException, ServletException { - - XSSRequestWrapper wrappedRequest = new XSSRequestWrapper((HttpServletRequest) request); - - String body = IOUtils.toString(wrappedRequest.getReader()); - if (!StringUtils.isBlank(body)) { - body = XSSUtils.stripXSS(body); - wrappedRequest.resetInputStream(body.getBytes()); - } - - chain.doFilter(wrappedRequest, response); - } - -} \ No newline at end of file diff --git a/spring-security-modules/spring-5-security/src/main/java/com/baeldung/xss/XSSRequestWrapper.java b/spring-security-modules/spring-5-security/src/main/java/com/baeldung/xss/XSSRequestWrapper.java deleted file mode 100644 index 8fe4e20b5c..0000000000 --- a/spring-security-modules/spring-5-security/src/main/java/com/baeldung/xss/XSSRequestWrapper.java +++ /dev/null @@ -1,123 +0,0 @@ -package com.baeldung.xss; - -import org.apache.commons.codec.Charsets; -import org.apache.commons.io.IOUtils; -import javax.servlet.ReadListener; -import javax.servlet.ServletInputStream; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletRequestWrapper; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.BufferedReader; -import java.io.InputStreamReader; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Enumeration; -import java.util.List; - -import static com.baeldung.xss.XSSUtils.stripXSS; - - -public class XSSRequestWrapper extends HttpServletRequestWrapper { - - private byte[] rawData; - private HttpServletRequest request; - private ResettableServletInputStream servletStream; - - public XSSRequestWrapper(HttpServletRequest request) { - super(request); - this.request = request; - this.servletStream = new ResettableServletInputStream(); - } - - public void resetInputStream(byte[] newRawData) { - rawData = newRawData; - servletStream.stream = new ByteArrayInputStream(newRawData); - } - - @Override - public ServletInputStream getInputStream() throws IOException { - if (rawData == null) { - rawData = IOUtils.toByteArray(this.request.getReader(), Charsets.UTF_8); - servletStream.stream = new ByteArrayInputStream(rawData); - } - return servletStream; - } - - @Override - public BufferedReader getReader() throws IOException { - if (rawData == null) { - rawData = IOUtils.toByteArray(this.request.getReader(), Charsets.UTF_8); - servletStream.stream = new ByteArrayInputStream(rawData); - } - return new BufferedReader(new InputStreamReader(servletStream)); - } - - private class ResettableServletInputStream extends ServletInputStream { - - private InputStream stream; - - @Override - public int read() throws IOException { - return stream.read(); - } - - @Override - public boolean isFinished() { - return false; - } - - @Override - public boolean isReady() { - return false; - } - - @Override - public void setReadListener(ReadListener readListener) { - - } - } - - @Override - public String[] getParameterValues(String parameter) { - String[] values = super.getParameterValues(parameter); - if (values == null) { - return null; - } - int count = values.length; - String[] encodedValues = new String[count]; - for (int i = 0; i < count; i++) { - encodedValues[i] = stripXSS(values[i]); - } - return encodedValues; - } - - @Override - public String getParameter(String parameter) { - String value = super.getParameter(parameter); - return stripXSS(value); - } - - @Override - public String getHeader(String name) { - String value = super.getHeader(name); - return stripXSS(value); - } - - @Override - public Enumeration getHeaders(String name) { - List result = new ArrayList<>(); - Enumeration headers = super.getHeaders(name); - while (headers.hasMoreElements()) { - String header = headers.nextElement(); - String[] tokens = header.split(","); - for (String token : tokens) { - result.add(stripXSS(token)); - } - } - return Collections.enumeration(result); - } - -} diff --git a/spring-security-modules/spring-5-security/src/main/java/com/baeldung/xss/XSSUtils.java b/spring-security-modules/spring-5-security/src/main/java/com/baeldung/xss/XSSUtils.java deleted file mode 100644 index 51bcba8115..0000000000 --- a/spring-security-modules/spring-5-security/src/main/java/com/baeldung/xss/XSSUtils.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.baeldung.xss; - -import org.jsoup.Jsoup; -import org.jsoup.safety.Whitelist; -import org.owasp.esapi.ESAPI; - -public class XSSUtils { - - public static String stripXSS(String value) { - if (value == null) { - return null; - } - value = ESAPI.encoder() - .canonicalize(value) - .replaceAll("\0", ""); - return Jsoup.clean(value, Whitelist.none()); - } - -} diff --git a/spring-security-modules/spring-5-security/src/test/java/com/baeldung/xss/PersonControllerIntegrationTest.java b/spring-security-modules/spring-5-security/src/test/java/com/baeldung/xss/PersonControllerIntegrationTest.java deleted file mode 100644 index 5afa3bc1dd..0000000000 --- a/spring-security-modules/spring-5-security/src/test/java/com/baeldung/xss/PersonControllerIntegrationTest.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.baeldung.xss; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.JsonNodeFactory; -import com.fasterxml.jackson.databind.node.ObjectNode; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.web.server.LocalServerPort; -import org.springframework.http.*; -import org.springframework.web.client.RestTemplate; -import org.springframework.web.util.UriComponentsBuilder; -import java.io.IOException; -import static org.assertj.core.api.Assertions.assertThat; - -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) -class PersonControllerIntegrationTest { - - @LocalServerPort - int randomServerPort; - - @Test - public void givenRequestIsSuspicious_whenRequestIsPost_thenResponseIsClean() - throws IOException { - // given - String createPersonUrl; - RestTemplate restTemplate; - HttpHeaders headers; - UriComponentsBuilder builder; - ObjectMapper objectMapper = new ObjectMapper(); - ObjectNode personJsonObject = JsonNodeFactory.instance.objectNode(); - createPersonUrl = "http://localhost:" + randomServerPort + "/personService/person"; - restTemplate = new RestTemplate(); - headers = new HttpHeaders(); - - // when - personJsonObject.put("id", 1); - personJsonObject.put("firstName", "baeldung "); - personJsonObject.put("lastName", "baeldung click me!"); - - builder = UriComponentsBuilder.fromHttpUrl(createPersonUrl) - .queryParam("param", ""); - headers.add("header_4", "

Your search for 'flowers '"); - HttpEntity request = new HttpEntity<>(personJsonObject.toString(), headers); - - ResponseEntity personResultAsJsonStr = restTemplate.exchange(builder.toUriString(), - HttpMethod.POST, request, String.class); - JsonNode root = objectMapper.readTree(personResultAsJsonStr.getBody()); - - // then - assertThat(root.get("firstName").textValue()).isEqualTo("baeldung "); - assertThat(root.get("lastName").textValue()).isEqualTo("baeldung click me!"); - assertThat(root.get("param").textValue()).isEmpty(); - assertThat(root.get("header_1").textValue()).isEmpty(); - assertThat(root.get("header_2").textValue()).isEmpty(); - assertThat(root.get("header_3").textValue()).isEmpty(); - assertThat(root.get("header_4").textValue()).isEqualTo("Your search for 'flowers '"); - } -} From 38d2c7a5f0be6bea8c59974bffd7bbdb34f71d96 Mon Sep 17 00:00:00 2001 From: Krzysiek Date: Wed, 18 Aug 2021 11:35:39 +0200 Subject: [PATCH 54/82] JAVA-5955: Decrease size of the zips.json file --- .../aggregation/ZipsAggregationLiveTest.java | 17 +- .../src/test/resources/zips.json | 1000 +++++++++++++++++ 2 files changed, 1008 insertions(+), 9 deletions(-) create mode 100644 persistence-modules/spring-data-mongodb/src/test/resources/zips.json diff --git a/persistence-modules/spring-data-mongodb/src/test/java/com/baeldung/aggregation/ZipsAggregationLiveTest.java b/persistence-modules/spring-data-mongodb/src/test/java/com/baeldung/aggregation/ZipsAggregationLiveTest.java index dfc3205040..6fdce51b0b 100644 --- a/persistence-modules/spring-data-mongodb/src/test/java/com/baeldung/aggregation/ZipsAggregationLiveTest.java +++ b/persistence-modules/spring-data-mongodb/src/test/java/com/baeldung/aggregation/ZipsAggregationLiveTest.java @@ -124,7 +124,7 @@ public class ZipsAggregationLiveTest { } @Test - public void whenStateWithLowestAvgCityPopIsND_theSuccess() { + public void whenStateWithLowestAvgCityPopIsME_theSuccess() { GroupOperation sumTotalCityPop = group("state", "city").sum("pop").as("cityPop"); GroupOperation averageStatePop = group("_id.state").avg("cityPop").as("avgCityPop"); @@ -138,13 +138,12 @@ public class ZipsAggregationLiveTest { AggregationResults result = mongoTemplate.aggregate(aggregation, "zips", StatePopulation.class); StatePopulation smallestState = result.getUniqueMappedResult(); - assertEquals("ND", smallestState.getState()); - assertTrue(smallestState.getStatePop() - .equals(1645)); + assertEquals("ME", smallestState.getState()); + assertEquals(3676, smallestState.getStatePop().longValue()); } @Test - public void whenMaxTXAndMinDC_theSuccess() { + public void whenMaxMAAndMinRI_theSuccess() { GroupOperation sumZips = group("state").count().as("zipCount"); SortOperation sortByCount = sort(Direction.ASC, "zipCount"); @@ -157,10 +156,10 @@ public class ZipsAggregationLiveTest { AggregationResults result = mongoTemplate.aggregate(aggregation, "zips", Document.class); Document document = result.getUniqueMappedResult(); - assertEquals("DC", document.get("minZipState")); - assertEquals(24, document.get("minZipCount")); - assertEquals("TX", document.get("maxZipState")); - assertEquals(1671, document.get("maxZipCount")); + assertEquals("RI", document.get("minZipState")); + assertEquals(69, document.get("minZipCount")); + assertEquals("MA", document.get("maxZipState")); + assertEquals(474, document.get("maxZipCount")); } } diff --git a/persistence-modules/spring-data-mongodb/src/test/resources/zips.json b/persistence-modules/spring-data-mongodb/src/test/resources/zips.json new file mode 100644 index 0000000000..2a914b499e --- /dev/null +++ b/persistence-modules/spring-data-mongodb/src/test/resources/zips.json @@ -0,0 +1,1000 @@ +{ "_id" : "01001", "city" : "AGAWAM", "loc" : [ -72.622739, 42.070206 ], "pop" : 15338, "state" : "MA" } +{ "_id" : "01002", "city" : "CUSHMAN", "loc" : [ -72.51564999999999, 42.377017 ], "pop" : 36963, "state" : "MA" } +{ "_id" : "01005", "city" : "BARRE", "loc" : [ -72.10835400000001, 42.409698 ], "pop" : 4546, "state" : "MA" } +{ "_id" : "01007", "city" : "BELCHERTOWN", "loc" : [ -72.41095300000001, 42.275103 ], "pop" : 10579, "state" : "MA" } +{ "_id" : "01008", "city" : "BLANDFORD", "loc" : [ -72.936114, 42.182949 ], "pop" : 1240, "state" : "MA" } +{ "_id" : "01010", "city" : "BRIMFIELD", "loc" : [ -72.188455, 42.116543 ], "pop" : 3706, "state" : "MA" } +{ "_id" : "01011", "city" : "CHESTER", "loc" : [ -72.988761, 42.279421 ], "pop" : 1688, "state" : "MA" } +{ "_id" : "01012", "city" : "CHESTERFIELD", "loc" : [ -72.833309, 42.38167 ], "pop" : 177, "state" : "MA" } +{ "_id" : "01013", "city" : "CHICOPEE", "loc" : [ -72.607962, 42.162046 ], "pop" : 23396, "state" : "MA" } +{ "_id" : "01020", "city" : "CHICOPEE", "loc" : [ -72.576142, 42.176443 ], "pop" : 31495, "state" : "MA" } +{ "_id" : "01022", "city" : "WESTOVER AFB", "loc" : [ -72.558657, 42.196672 ], "pop" : 1764, "state" : "MA" } +{ "_id" : "01026", "city" : "CUMMINGTON", "loc" : [ -72.905767, 42.435296 ], "pop" : 1484, "state" : "MA" } +{ "_id" : "01027", "city" : "MOUNT TOM", "loc" : [ -72.67992099999999, 42.264319 ], "pop" : 16864, "state" : "MA" } +{ "_id" : "01028", "city" : "EAST LONGMEADOW", "loc" : [ -72.505565, 42.067203 ], "pop" : 13367, "state" : "MA" } +{ "_id" : "01030", "city" : "FEEDING HILLS", "loc" : [ -72.675077, 42.07182 ], "pop" : 11985, "state" : "MA" } +{ "_id" : "01031", "city" : "GILBERTVILLE", "loc" : [ -72.19858499999999, 42.332194 ], "pop" : 2385, "state" : "MA" } +{ "_id" : "01032", "city" : "GOSHEN", "loc" : [ -72.844092, 42.466234 ], "pop" : 122, "state" : "MA" } +{ "_id" : "01033", "city" : "GRANBY", "loc" : [ -72.52000099999999, 42.255704 ], "pop" : 5526, "state" : "MA" } +{ "_id" : "01034", "city" : "TOLLAND", "loc" : [ -72.908793, 42.070234 ], "pop" : 1652, "state" : "MA" } +{ "_id" : "01035", "city" : "HADLEY", "loc" : [ -72.571499, 42.36062 ], "pop" : 4231, "state" : "MA" } +{ "_id" : "01036", "city" : "HAMPDEN", "loc" : [ -72.43182299999999, 42.064756 ], "pop" : 4709, "state" : "MA" } +{ "_id" : "01038", "city" : "HATFIELD", "loc" : [ -72.61673500000001, 42.38439 ], "pop" : 3184, "state" : "MA" } +{ "_id" : "01039", "city" : "HAYDENVILLE", "loc" : [ -72.70317799999999, 42.381799 ], "pop" : 1387, "state" : "MA" } +{ "_id" : "01040", "city" : "HOLYOKE", "loc" : [ -72.626193, 42.202007 ], "pop" : 43704, "state" : "MA" } +{ "_id" : "01050", "city" : "HUNTINGTON", "loc" : [ -72.873341, 42.265301 ], "pop" : 2084, "state" : "MA" } +{ "_id" : "01053", "city" : "LEEDS", "loc" : [ -72.70340299999999, 42.354292 ], "pop" : 1350, "state" : "MA" } +{ "_id" : "01054", "city" : "LEVERETT", "loc" : [ -72.499334, 42.46823 ], "pop" : 1748, "state" : "MA" } +{ "_id" : "01056", "city" : "LUDLOW", "loc" : [ -72.471012, 42.172823 ], "pop" : 18820, "state" : "MA" } +{ "_id" : "01057", "city" : "MONSON", "loc" : [ -72.31963399999999, 42.101017 ], "pop" : 8194, "state" : "MA" } +{ "_id" : "01060", "city" : "FLORENCE", "loc" : [ -72.654245, 42.324662 ], "pop" : 27939, "state" : "MA" } +{ "_id" : "01068", "city" : "OAKHAM", "loc" : [ -72.051265, 42.348033 ], "pop" : 1503, "state" : "MA" } +{ "_id" : "01069", "city" : "PALMER", "loc" : [ -72.328785, 42.176233 ], "pop" : 9778, "state" : "MA" } +{ "_id" : "01070", "city" : "PLAINFIELD", "loc" : [ -72.918289, 42.514393 ], "pop" : 571, "state" : "MA" } +{ "_id" : "01071", "city" : "RUSSELL", "loc" : [ -72.840343, 42.147063 ], "pop" : 608, "state" : "MA" } +{ "_id" : "01072", "city" : "SHUTESBURY", "loc" : [ -72.421342, 42.481968 ], "pop" : 1533, "state" : "MA" } +{ "_id" : "01073", "city" : "SOUTHAMPTON", "loc" : [ -72.719381, 42.224697 ], "pop" : 4478, "state" : "MA" } +{ "_id" : "01075", "city" : "SOUTH HADLEY", "loc" : [ -72.581137, 42.237537 ], "pop" : 16699, "state" : "MA" } +{ "_id" : "01077", "city" : "SOUTHWICK", "loc" : [ -72.770588, 42.051099 ], "pop" : 7667, "state" : "MA" } +{ "_id" : "01080", "city" : "THREE RIVERS", "loc" : [ -72.362352, 42.181894 ], "pop" : 2425, "state" : "MA" } +{ "_id" : "01081", "city" : "WALES", "loc" : [ -72.20459200000001, 42.062734 ], "pop" : 1732, "state" : "MA" } +{ "_id" : "01082", "city" : "WARE", "loc" : [ -72.258285, 42.261831 ], "pop" : 9808, "state" : "MA" } +{ "_id" : "01085", "city" : "MONTGOMERY", "loc" : [ -72.754318, 42.129484 ], "pop" : 40117, "state" : "MA" } +{ "_id" : "01089", "city" : "WEST SPRINGFIELD", "loc" : [ -72.641109, 42.115066 ], "pop" : 27537, "state" : "MA" } +{ "_id" : "01092", "city" : "WEST WARREN", "loc" : [ -72.203639, 42.20734 ], "pop" : 4441, "state" : "MA" } +{ "_id" : "01095", "city" : "WILBRAHAM", "loc" : [ -72.446415, 42.124506 ], "pop" : 12635, "state" : "MA" } +{ "_id" : "01096", "city" : "WILLIAMSBURG", "loc" : [ -72.77798900000001, 42.408522 ], "pop" : 2295, "state" : "MA" } +{ "_id" : "01098", "city" : "WORTHINGTON", "loc" : [ -72.931427, 42.384293 ], "pop" : 877, "state" : "MA" } +{ "_id" : "01103", "city" : "SPRINGFIELD", "loc" : [ -72.588735, 42.1029 ], "pop" : 2323, "state" : "MA" } +{ "_id" : "01104", "city" : "SPRINGFIELD", "loc" : [ -72.577769, 42.128848 ], "pop" : 22115, "state" : "MA" } +{ "_id" : "01105", "city" : "SPRINGFIELD", "loc" : [ -72.578312, 42.099931 ], "pop" : 14970, "state" : "MA" } +{ "_id" : "01106", "city" : "LONGMEADOW", "loc" : [ -72.5676, 42.050658 ], "pop" : 15688, "state" : "MA" } +{ "_id" : "01107", "city" : "SPRINGFIELD", "loc" : [ -72.606544, 42.117907 ], "pop" : 12739, "state" : "MA" } +{ "_id" : "01108", "city" : "SPRINGFIELD", "loc" : [ -72.558432, 42.085314 ], "pop" : 25519, "state" : "MA" } +{ "_id" : "01109", "city" : "SPRINGFIELD", "loc" : [ -72.554349, 42.114455 ], "pop" : 32635, "state" : "MA" } +{ "_id" : "01118", "city" : "SPRINGFIELD", "loc" : [ -72.527445, 42.092937 ], "pop" : 14618, "state" : "MA" } +{ "_id" : "01119", "city" : "SPRINGFIELD", "loc" : [ -72.51211000000001, 42.12473 ], "pop" : 13040, "state" : "MA" } +{ "_id" : "01128", "city" : "SPRINGFIELD", "loc" : [ -72.48890299999999, 42.094397 ], "pop" : 3272, "state" : "MA" } +{ "_id" : "01129", "city" : "SPRINGFIELD", "loc" : [ -72.487622, 42.122263 ], "pop" : 6831, "state" : "MA" } +{ "_id" : "01151", "city" : "INDIAN ORCHARD", "loc" : [ -72.505048, 42.153225 ], "pop" : 8702, "state" : "MA" } +{ "_id" : "01201", "city" : "PITTSFIELD", "loc" : [ -73.24708800000001, 42.453086 ], "pop" : 50655, "state" : "MA" } +{ "_id" : "01220", "city" : "ADAMS", "loc" : [ -73.117225, 42.622319 ], "pop" : 9901, "state" : "MA" } +{ "_id" : "01222", "city" : "ASHLEY FALLS", "loc" : [ -73.320195, 42.059552 ], "pop" : 561, "state" : "MA" } +{ "_id" : "01223", "city" : "BECKET", "loc" : [ -73.12032499999999, 42.359363 ], "pop" : 1070, "state" : "MA" } +{ "_id" : "01225", "city" : "CHESHIRE", "loc" : [ -73.15796400000001, 42.561059 ], "pop" : 3094, "state" : "MA" } +{ "_id" : "01226", "city" : "DALTON", "loc" : [ -73.160259, 42.475046 ], "pop" : 7357, "state" : "MA" } +{ "_id" : "01230", "city" : "GREAT BARRINGTON", "loc" : [ -73.36065000000001, 42.195922 ], "pop" : 10603, "state" : "MA" } +{ "_id" : "01235", "city" : "PERU", "loc" : [ -73.092433, 42.434604 ], "pop" : 2559, "state" : "MA" } +{ "_id" : "01236", "city" : "HOUSATONIC", "loc" : [ -73.374544, 42.265296 ], "pop" : 802, "state" : "MA" } +{ "_id" : "01237", "city" : "HANCOCK", "loc" : [ -73.24873700000001, 42.541961 ], "pop" : 2328, "state" : "MA" } +{ "_id" : "01238", "city" : "LEE", "loc" : [ -73.231696, 42.298994 ], "pop" : 6916, "state" : "MA" } +{ "_id" : "01240", "city" : "LENOX", "loc" : [ -73.271322, 42.364241 ], "pop" : 5001, "state" : "MA" } +{ "_id" : "01243", "city" : "MIDDLEFIELD", "loc" : [ -73.006226, 42.34795 ], "pop" : 384, "state" : "MA" } +{ "_id" : "01245", "city" : "WEST OTIS", "loc" : [ -73.213452, 42.187847 ], "pop" : 329, "state" : "MA" } +{ "_id" : "01247", "city" : "CLARKSBURG", "loc" : [ -73.10999, 42.69865 ], "pop" : 19054, "state" : "MA" } +{ "_id" : "01253", "city" : "OTIS", "loc" : [ -73.082093, 42.18988 ], "pop" : 1060, "state" : "MA" } +{ "_id" : "01254", "city" : "RICHMOND", "loc" : [ -73.364457, 42.378398 ], "pop" : 1134, "state" : "MA" } +{ "_id" : "01255", "city" : "SANDISFIELD", "loc" : [ -73.116285, 42.109429 ], "pop" : 651, "state" : "MA" } +{ "_id" : "01256", "city" : "SAVOY", "loc" : [ -73.023281, 42.576964 ], "pop" : 632, "state" : "MA" } +{ "_id" : "01257", "city" : "SHEFFIELD", "loc" : [ -73.361091, 42.100102 ], "pop" : 1839, "state" : "MA" } +{ "_id" : "01258", "city" : "SOUTH EGREMONT", "loc" : [ -73.456575, 42.101153 ], "pop" : 135, "state" : "MA" } +{ "_id" : "01259", "city" : "SOUTHFIELD", "loc" : [ -73.26093299999999, 42.078014 ], "pop" : 622, "state" : "MA" } +{ "_id" : "01262", "city" : "STOCKBRIDGE", "loc" : [ -73.32226300000001, 42.30104 ], "pop" : 2200, "state" : "MA" } +{ "_id" : "01266", "city" : "WEST STOCKBRIDGE", "loc" : [ -73.38251, 42.334752 ], "pop" : 1173, "state" : "MA" } +{ "_id" : "01267", "city" : "WILLIAMSTOWN", "loc" : [ -73.20363999999999, 42.708883 ], "pop" : 8220, "state" : "MA" } +{ "_id" : "01270", "city" : "WINDSOR", "loc" : [ -73.04661, 42.509494 ], "pop" : 770, "state" : "MA" } +{ "_id" : "01301", "city" : "LEYDEN", "loc" : [ -72.60184700000001, 42.601222 ], "pop" : 18968, "state" : "MA" } +{ "_id" : "01330", "city" : "ASHFIELD", "loc" : [ -72.810998, 42.523207 ], "pop" : 1535, "state" : "MA" } +{ "_id" : "01331", "city" : "NEW SALEM", "loc" : [ -72.21464400000001, 42.592065 ], "pop" : 14077, "state" : "MA" } +{ "_id" : "01337", "city" : "LEYDEN", "loc" : [ -72.563439, 42.683784 ], "pop" : 2426, "state" : "MA" } +{ "_id" : "01338", "city" : "BUCKLAND", "loc" : [ -72.764124, 42.615174 ], "pop" : 16, "state" : "MA" } +{ "_id" : "01339", "city" : "HAWLEY", "loc" : [ -72.880162, 42.621802 ], "pop" : 1325, "state" : "MA" } +{ "_id" : "01340", "city" : "COLRAIN", "loc" : [ -72.726508, 42.67905 ], "pop" : 2050, "state" : "MA" } +{ "_id" : "01341", "city" : "CONWAY", "loc" : [ -72.702473, 42.513832 ], "pop" : 1524, "state" : "MA" } +{ "_id" : "01342", "city" : "DEERFIELD", "loc" : [ -72.60723400000001, 42.540636 ], "pop" : 1281, "state" : "MA" } +{ "_id" : "01344", "city" : "ERVING", "loc" : [ -72.41663800000001, 42.604957 ], "pop" : 635, "state" : "MA" } +{ "_id" : "01346", "city" : "HEATH", "loc" : [ -72.839101, 42.685347 ], "pop" : 174, "state" : "MA" } +{ "_id" : "01349", "city" : "MILLERS FALLS", "loc" : [ -72.494626, 42.576206 ], "pop" : 1893, "state" : "MA" } +{ "_id" : "01350", "city" : "MONROE", "loc" : [ -72.960156, 42.723885 ], "pop" : 97, "state" : "MA" } +{ "_id" : "01351", "city" : "MONTAGUE", "loc" : [ -72.532837, 42.542864 ], "pop" : 1699, "state" : "MA" } +{ "_id" : "01355", "city" : "NEW SALEM", "loc" : [ -72.306241, 42.514643 ], "pop" : 456, "state" : "MA" } +{ "_id" : "01360", "city" : "NORTHFIELD", "loc" : [ -72.45099500000001, 42.688705 ], "pop" : 2829, "state" : "MA" } +{ "_id" : "01364", "city" : "NEW SALEM", "loc" : [ -72.30586700000001, 42.591231 ], "pop" : 8544, "state" : "MA" } +{ "_id" : "01366", "city" : "PETERSHAM", "loc" : [ -72.18934900000001, 42.489761 ], "pop" : 1131, "state" : "MA" } +{ "_id" : "01367", "city" : "ROWE", "loc" : [ -72.925776, 42.695289 ], "pop" : 630, "state" : "MA" } +{ "_id" : "01370", "city" : "SHELBURNE FALLS", "loc" : [ -72.739059, 42.602203 ], "pop" : 4525, "state" : "MA" } +{ "_id" : "01373", "city" : "SOUTH DEERFIELD", "loc" : [ -72.615268, 42.475616 ], "pop" : 5118, "state" : "MA" } +{ "_id" : "01375", "city" : "SUNDERLAND", "loc" : [ -72.56756900000001, 42.453947 ], "pop" : 3399, "state" : "MA" } +{ "_id" : "01376", "city" : "TURNERS FALLS", "loc" : [ -72.54701, 42.606521 ], "pop" : 7100, "state" : "MA" } +{ "_id" : "01379", "city" : "WENDELL", "loc" : [ -72.400851, 42.565644 ], "pop" : 393, "state" : "MA" } +{ "_id" : "01420", "city" : "FITCHBURG", "loc" : [ -71.803133, 42.579563 ], "pop" : 41194, "state" : "MA" } +{ "_id" : "01430", "city" : "ASHBURNHAM", "loc" : [ -71.92666, 42.649614 ], "pop" : 5433, "state" : "MA" } +{ "_id" : "01431", "city" : "ASHBY", "loc" : [ -71.817369, 42.674462 ], "pop" : 2649, "state" : "MA" } +{ "_id" : "01432", "city" : "AYER", "loc" : [ -71.578763, 42.55914 ], "pop" : 6871, "state" : "MA" } +{ "_id" : "01433", "city" : "FT DEVENS", "loc" : [ -71.621819, 42.532416 ], "pop" : 8480, "state" : "MA" } +{ "_id" : "01436", "city" : "BALDWINVILLE", "loc" : [ -72.06464699999999, 42.593568 ], "pop" : 4386, "state" : "MA" } +{ "_id" : "01440", "city" : "GARDNER", "loc" : [ -71.9898, 42.57405 ], "pop" : 20125, "state" : "MA" } +{ "_id" : "01450", "city" : "GROTON", "loc" : [ -71.55837099999999, 42.612351 ], "pop" : 7504, "state" : "MA" } +{ "_id" : "01451", "city" : "HARVARD", "loc" : [ -71.575293, 42.498565 ], "pop" : 4445, "state" : "MA" } +{ "_id" : "01452", "city" : "HUBBARDSTON", "loc" : [ -72.001159, 42.486538 ], "pop" : 2797, "state" : "MA" } +{ "_id" : "01453", "city" : "LEOMINSTER", "loc" : [ -71.756308, 42.52744 ], "pop" : 38145, "state" : "MA" } +{ "_id" : "01460", "city" : "LITTLETON", "loc" : [ -71.487667, 42.540132 ], "pop" : 7066, "state" : "MA" } +{ "_id" : "01462", "city" : "LUNENBURG", "loc" : [ -71.726642, 42.58843 ], "pop" : 9117, "state" : "MA" } +{ "_id" : "01463", "city" : "PEPPERELL", "loc" : [ -71.59339199999999, 42.668888 ], "pop" : 10178, "state" : "MA" } +{ "_id" : "01464", "city" : "SHIRLEY CENTER", "loc" : [ -71.646444, 42.558653 ], "pop" : 6118, "state" : "MA" } +{ "_id" : "01468", "city" : "TEMPLETON", "loc" : [ -72.064971, 42.545976 ], "pop" : 2058, "state" : "MA" } +{ "_id" : "01469", "city" : "TOWNSEND", "loc" : [ -71.689646, 42.652511 ], "pop" : 6112, "state" : "MA" } +{ "_id" : "01473", "city" : "WESTMINSTER", "loc" : [ -71.909599, 42.548319 ], "pop" : 6191, "state" : "MA" } +{ "_id" : "01474", "city" : "W TOWNSEND", "loc" : [ -71.74057000000001, 42.670404 ], "pop" : 2452, "state" : "MA" } +{ "_id" : "01475", "city" : "WINCHENDON", "loc" : [ -72.047524, 42.678943 ], "pop" : 8805, "state" : "MA" } +{ "_id" : "01501", "city" : "AUBURN", "loc" : [ -71.839144, 42.205502 ], "pop" : 15007, "state" : "MA" } +{ "_id" : "01503", "city" : "BERLIN", "loc" : [ -71.635634, 42.384438 ], "pop" : 2293, "state" : "MA" } +{ "_id" : "01504", "city" : "BLACKSTONE", "loc" : [ -71.52691, 42.028708 ], "pop" : 8023, "state" : "MA" } +{ "_id" : "01505", "city" : "BOYLSTON", "loc" : [ -71.731042, 42.337727 ], "pop" : 3517, "state" : "MA" } +{ "_id" : "01506", "city" : "BROOKFIELD", "loc" : [ -72.098887, 42.199141 ], "pop" : 2968, "state" : "MA" } +{ "_id" : "01507", "city" : "CHARLTON", "loc" : [ -71.96638400000001, 42.137902 ], "pop" : 9576, "state" : "MA" } +{ "_id" : "01510", "city" : "CLINTON", "loc" : [ -71.682847, 42.418147 ], "pop" : 13269, "state" : "MA" } +{ "_id" : "01515", "city" : "EAST BROOKFIELD", "loc" : [ -72.048078, 42.219308 ], "pop" : 2033, "state" : "MA" } +{ "_id" : "01516", "city" : "EAST DOUGLAS", "loc" : [ -71.72661100000001, 42.060566 ], "pop" : 5594, "state" : "MA" } +{ "_id" : "01518", "city" : "FISKDALE", "loc" : [ -72.11776399999999, 42.122762 ], "pop" : 774, "state" : "MA" } +{ "_id" : "01519", "city" : "GRAFTON", "loc" : [ -71.686848, 42.200371 ], "pop" : 4910, "state" : "MA" } +{ "_id" : "01520", "city" : "HOLDEN", "loc" : [ -71.84142, 42.341983 ], "pop" : 12051, "state" : "MA" } +{ "_id" : "01521", "city" : "HOLLAND", "loc" : [ -72.15437300000001, 42.040264 ], "pop" : 747, "state" : "MA" } +{ "_id" : "01522", "city" : "JEFFERSON", "loc" : [ -71.87058, 42.375519 ], "pop" : 2478, "state" : "MA" } +{ "_id" : "01523", "city" : "LANCASTER", "loc" : [ -71.686831, 42.450984 ], "pop" : 6018, "state" : "MA" } +{ "_id" : "01524", "city" : "LEICESTER", "loc" : [ -71.918829, 42.237047 ], "pop" : 6527, "state" : "MA" } +{ "_id" : "01527", "city" : "MILLBURY", "loc" : [ -71.764438, 42.196779 ], "pop" : 12228, "state" : "MA" } +{ "_id" : "01529", "city" : "MILLVILLE", "loc" : [ -71.579813, 42.033102 ], "pop" : 2236, "state" : "MA" } +{ "_id" : "01531", "city" : "NEW BRAINTREE", "loc" : [ -72.13064199999999, 42.31977 ], "pop" : 881, "state" : "MA" } +{ "_id" : "01532", "city" : "NORTHBOROUGH", "loc" : [ -71.646372, 42.318242 ], "pop" : 11930, "state" : "MA" } +{ "_id" : "01534", "city" : "NORTHBRIDGE", "loc" : [ -71.65636600000001, 42.1494 ], "pop" : 4564, "state" : "MA" } +{ "_id" : "01535", "city" : "NORTH BROOKFIELD", "loc" : [ -72.08212899999999, 42.266455 ], "pop" : 4755, "state" : "MA" } +{ "_id" : "01536", "city" : "NORTH GRAFTON", "loc" : [ -71.70369100000001, 42.229726 ], "pop" : 5401, "state" : "MA" } +{ "_id" : "01537", "city" : "NORTH OXFORD", "loc" : [ -71.885953, 42.16549 ], "pop" : 3031, "state" : "MA" } +{ "_id" : "01540", "city" : "OXFORD", "loc" : [ -71.86867700000001, 42.11285 ], "pop" : 9557, "state" : "MA" } +{ "_id" : "01541", "city" : "PRINCETON", "loc" : [ -71.876245, 42.450812 ], "pop" : 3189, "state" : "MA" } +{ "_id" : "01542", "city" : "ROCHDALE", "loc" : [ -71.906882, 42.199685 ], "pop" : 1154, "state" : "MA" } +{ "_id" : "01543", "city" : "RUTLAND", "loc" : [ -71.94895099999999, 42.376199 ], "pop" : 4936, "state" : "MA" } +{ "_id" : "01545", "city" : "SHREWSBURY", "loc" : [ -71.72050299999999, 42.284801 ], "pop" : 24146, "state" : "MA" } +{ "_id" : "01550", "city" : "SOUTHBRIDGE", "loc" : [ -72.035347, 42.075024 ], "pop" : 17816, "state" : "MA" } +{ "_id" : "01560", "city" : "SOUTH GRAFTON", "loc" : [ -71.692725, 42.176042 ], "pop" : 2719, "state" : "MA" } +{ "_id" : "01562", "city" : "SPENCER", "loc" : [ -71.990617, 42.244103 ], "pop" : 11598, "state" : "MA" } +{ "_id" : "01564", "city" : "STERLING", "loc" : [ -71.775192, 42.435351 ], "pop" : 6481, "state" : "MA" } +{ "_id" : "01566", "city" : "STURBRIDGE", "loc" : [ -72.084233, 42.112619 ], "pop" : 7001, "state" : "MA" } +{ "_id" : "01568", "city" : "WEST UPTON", "loc" : [ -71.608014, 42.173275 ], "pop" : 4682, "state" : "MA" } +{ "_id" : "01569", "city" : "UXBRIDGE", "loc" : [ -71.632869, 42.074426 ], "pop" : 10364, "state" : "MA" } +{ "_id" : "01570", "city" : "DUDLEY HILL", "loc" : [ -71.839467, 42.047574 ], "pop" : 3735, "state" : "MA" } +{ "_id" : "01571", "city" : "DUDLEY", "loc" : [ -71.89322799999999, 42.048894 ], "pop" : 22001, "state" : "MA" } +{ "_id" : "01581", "city" : "WESTBOROUGH", "loc" : [ -71.617604, 42.267891 ], "pop" : 14132, "state" : "MA" } +{ "_id" : "01583", "city" : "WEST BOYLSTON", "loc" : [ -71.783822, 42.35836 ], "pop" : 6611, "state" : "MA" } +{ "_id" : "01585", "city" : "WEST BROOKFIELD", "loc" : [ -72.15113700000001, 42.244137 ], "pop" : 3528, "state" : "MA" } +{ "_id" : "01588", "city" : "WHITINSVILLE", "loc" : [ -71.664357, 42.115319 ], "pop" : 8807, "state" : "MA" } +{ "_id" : "01590", "city" : "WILKINSONVILLE", "loc" : [ -71.74841600000001, 42.140586 ], "pop" : 6719, "state" : "MA" } +{ "_id" : "01602", "city" : "WORCESTER", "loc" : [ -71.841678, 42.270251 ], "pop" : 19988, "state" : "MA" } +{ "_id" : "01603", "city" : "WORCESTER", "loc" : [ -71.83799500000001, 42.245033 ], "pop" : 18605, "state" : "MA" } +{ "_id" : "01604", "city" : "WORCESTER", "loc" : [ -71.774626, 42.254084 ], "pop" : 29036, "state" : "MA" } +{ "_id" : "01605", "city" : "WORCESTER", "loc" : [ -71.78879499999999, 42.289391 ], "pop" : 25695, "state" : "MA" } +{ "_id" : "01606", "city" : "WORCESTER", "loc" : [ -71.79577399999999, 42.311029 ], "pop" : 18213, "state" : "MA" } +{ "_id" : "01607", "city" : "WORCESTER", "loc" : [ -71.793837, 42.230294 ], "pop" : 9048, "state" : "MA" } +{ "_id" : "01608", "city" : "WORCESTER", "loc" : [ -71.800262, 42.262425 ], "pop" : 3646, "state" : "MA" } +{ "_id" : "01609", "city" : "WORCESTER", "loc" : [ -71.81745600000001, 42.275387 ], "pop" : 21905, "state" : "MA" } +{ "_id" : "01610", "city" : "WORCESTER", "loc" : [ -71.81079800000001, 42.249186 ], "pop" : 23720, "state" : "MA" } +{ "_id" : "01611", "city" : "CHERRY VALLEY", "loc" : [ -71.874971, 42.237287 ], "pop" : 2510, "state" : "MA" } +{ "_id" : "01612", "city" : "PAXTON", "loc" : [ -71.92023399999999, 42.306646 ], "pop" : 4047, "state" : "MA" } +{ "_id" : "01701", "city" : "FRAMINGHAM", "loc" : [ -71.42548600000001, 42.300665 ], "pop" : 65046, "state" : "MA" } +{ "_id" : "01718", "city" : "VILLAGE OF NAGOG", "loc" : [ -71.422354, 42.514941 ], "pop" : 2330, "state" : "MA" } +{ "_id" : "01719", "city" : "BOXBORO", "loc" : [ -71.51822900000001, 42.486876 ], "pop" : 3343, "state" : "MA" } +{ "_id" : "01720", "city" : "ACTON", "loc" : [ -71.448255, 42.475076 ], "pop" : 15514, "state" : "MA" } +{ "_id" : "01721", "city" : "ASHLAND", "loc" : [ -71.458347, 42.253909 ], "pop" : 12066, "state" : "MA" } +{ "_id" : "01730", "city" : "BEDFORD", "loc" : [ -71.276796, 42.484287 ], "pop" : 16147, "state" : "MA" } +{ "_id" : "01740", "city" : "BOLTON", "loc" : [ -71.60759299999999, 42.436523 ], "pop" : 3134, "state" : "MA" } +{ "_id" : "01741", "city" : "CARLISLE", "loc" : [ -71.35189200000001, 42.528562 ], "pop" : 4333, "state" : "MA" } +{ "_id" : "01742", "city" : "CONCORD", "loc" : [ -71.374741, 42.456701 ], "pop" : 17076, "state" : "MA" } +{ "_id" : "01745", "city" : "SOUTHBOROUGH", "loc" : [ -71.502256, 42.293221 ], "pop" : 506, "state" : "MA" } +{ "_id" : "01746", "city" : "HOLLISTON", "loc" : [ -71.436059, 42.202641 ], "pop" : 12917, "state" : "MA" } +{ "_id" : "01747", "city" : "HOPEDALE", "loc" : [ -71.537601, 42.126796 ], "pop" : 5649, "state" : "MA" } +{ "_id" : "01748", "city" : "HOPKINTON", "loc" : [ -71.53017800000001, 42.219046 ], "pop" : 9191, "state" : "MA" } +{ "_id" : "01749", "city" : "HUDSON", "loc" : [ -71.560896, 42.391796 ], "pop" : 17233, "state" : "MA" } +{ "_id" : "01752", "city" : "MARLBOROUGH", "loc" : [ -71.54335500000001, 42.350861 ], "pop" : 31813, "state" : "MA" } +{ "_id" : "01754", "city" : "MAYNARD", "loc" : [ -71.454975, 42.432118 ], "pop" : 10325, "state" : "MA" } +{ "_id" : "01756", "city" : "MENDON", "loc" : [ -71.549882, 42.096744 ], "pop" : 4010, "state" : "MA" } +{ "_id" : "01757", "city" : "MILFORD", "loc" : [ -71.527402, 42.151142 ], "pop" : 25372, "state" : "MA" } +{ "_id" : "01760", "city" : "NATICK", "loc" : [ -71.35741, 42.287476 ], "pop" : 30432, "state" : "MA" } +{ "_id" : "01770", "city" : "SHERBORN", "loc" : [ -71.37871699999999, 42.233088 ], "pop" : 3998, "state" : "MA" } +{ "_id" : "01772", "city" : "SOUTHBOROUGH", "loc" : [ -71.531997, 42.293919 ], "pop" : 6122, "state" : "MA" } +{ "_id" : "01773", "city" : "LINCOLN", "loc" : [ -71.313723, 42.421723 ], "pop" : 4515, "state" : "MA" } +{ "_id" : "01775", "city" : "STOW", "loc" : [ -71.515019, 42.430785 ], "pop" : 5328, "state" : "MA" } +{ "_id" : "01776", "city" : "SUDBURY", "loc" : [ -71.42815899999999, 42.383655 ], "pop" : 14358, "state" : "MA" } +{ "_id" : "01778", "city" : "WAYLAND", "loc" : [ -71.35878099999999, 42.348629 ], "pop" : 11874, "state" : "MA" } +{ "_id" : "01801", "city" : "WOBURN", "loc" : [ -71.157404, 42.482894 ], "pop" : 36152, "state" : "MA" } +{ "_id" : "01803", "city" : "BURLINGTON", "loc" : [ -71.20043699999999, 42.508942 ], "pop" : 23093, "state" : "MA" } +{ "_id" : "01810", "city" : "ANDOVER", "loc" : [ -71.156481, 42.64956 ], "pop" : 29161, "state" : "MA" } +{ "_id" : "01821", "city" : "BILLERICA", "loc" : [ -71.25175400000001, 42.551874 ], "pop" : 28899, "state" : "MA" } +{ "_id" : "01824", "city" : "SOUTH CHELMSFORD", "loc" : [ -71.35752100000001, 42.59356 ], "pop" : 24457, "state" : "MA" } +{ "_id" : "01826", "city" : "DRACUT", "loc" : [ -71.318592, 42.676422 ], "pop" : 25594, "state" : "MA" } +{ "_id" : "01827", "city" : "DUNSTABLE", "loc" : [ -71.49520099999999, 42.673917 ], "pop" : 2166, "state" : "MA" } +{ "_id" : "01830", "city" : "HAVERHILL", "loc" : [ -71.072057, 42.785605 ], "pop" : 22445, "state" : "MA" } +{ "_id" : "01832", "city" : "HAVERHILL", "loc" : [ -71.10951900000001, 42.779154 ], "pop" : 16860, "state" : "MA" } +{ "_id" : "01833", "city" : "GEORGETOWN", "loc" : [ -70.98223900000001, 42.728067 ], "pop" : 6384, "state" : "MA" } +{ "_id" : "01834", "city" : "GROVELAND", "loc" : [ -71.027018, 42.753027 ], "pop" : 5214, "state" : "MA" } +{ "_id" : "01835", "city" : "BRADFORD", "loc" : [ -71.08548999999999, 42.758597 ], "pop" : 12078, "state" : "MA" } +{ "_id" : "01840", "city" : "LAWRENCE", "loc" : [ -71.16381, 42.707958 ], "pop" : 2728, "state" : "MA" } +{ "_id" : "01841", "city" : "LAWRENCE", "loc" : [ -71.16699699999999, 42.711545 ], "pop" : 45555, "state" : "MA" } +{ "_id" : "01843", "city" : "LAWRENCE", "loc" : [ -71.160506, 42.691053 ], "pop" : 22285, "state" : "MA" } +{ "_id" : "01844", "city" : "METHUEN", "loc" : [ -71.181031, 42.728019 ], "pop" : 39664, "state" : "MA" } +{ "_id" : "01845", "city" : "NORTH ANDOVER", "loc" : [ -71.109004, 42.682583 ], "pop" : 22792, "state" : "MA" } +{ "_id" : "01850", "city" : "LOWELL", "loc" : [ -71.30507799999999, 42.656035 ], "pop" : 15434, "state" : "MA" } +{ "_id" : "01851", "city" : "LOWELL", "loc" : [ -71.332882, 42.631548 ], "pop" : 28154, "state" : "MA" } +{ "_id" : "01852", "city" : "LOWELL", "loc" : [ -71.298331, 42.634413 ], "pop" : 33379, "state" : "MA" } +{ "_id" : "01854", "city" : "LOWELL", "loc" : [ -71.335464, 42.649254 ], "pop" : 26472, "state" : "MA" } +{ "_id" : "01860", "city" : "MERRIMAC", "loc" : [ -71.00465800000001, 42.834629 ], "pop" : 5196, "state" : "MA" } +{ "_id" : "01862", "city" : "NORTH BILLERICA", "loc" : [ -71.290217, 42.575694 ], "pop" : 8720, "state" : "MA" } +{ "_id" : "01863", "city" : "NORTH CHELMSFORD", "loc" : [ -71.390834, 42.634737 ], "pop" : 7878, "state" : "MA" } +{ "_id" : "01864", "city" : "NORTH READING", "loc" : [ -71.094711, 42.581898 ], "pop" : 12002, "state" : "MA" } +{ "_id" : "01867", "city" : "READING", "loc" : [ -71.109021, 42.527986 ], "pop" : 22539, "state" : "MA" } +{ "_id" : "01876", "city" : "TEWKSBURY", "loc" : [ -71.223224, 42.60283 ], "pop" : 27269, "state" : "MA" } +{ "_id" : "01879", "city" : "TYNGSBORO", "loc" : [ -71.415766, 42.672383 ], "pop" : 8643, "state" : "MA" } +{ "_id" : "01880", "city" : "WAKEFIELD", "loc" : [ -71.068471, 42.500886 ], "pop" : 24830, "state" : "MA" } +{ "_id" : "01886", "city" : "GRANITEVILLE", "loc" : [ -71.438143, 42.589959 ], "pop" : 16430, "state" : "MA" } +{ "_id" : "01887", "city" : "WILMINGTON", "loc" : [ -71.17230600000001, 42.558143 ], "pop" : 17647, "state" : "MA" } +{ "_id" : "01890", "city" : "WINCHESTER", "loc" : [ -71.14407, 42.453028 ], "pop" : 20232, "state" : "MA" } +{ "_id" : "01901", "city" : "LYNN", "loc" : [ -70.945516, 42.463378 ], "pop" : 1187, "state" : "MA" } +{ "_id" : "01902", "city" : "LYNN", "loc" : [ -70.94198900000001, 42.469814 ], "pop" : 41625, "state" : "MA" } +{ "_id" : "01904", "city" : "EAST LYNN", "loc" : [ -70.96279800000001, 42.487453 ], "pop" : 17073, "state" : "MA" } +{ "_id" : "01905", "city" : "WEST LYNN", "loc" : [ -70.97382500000001, 42.46453 ], "pop" : 21360, "state" : "MA" } +{ "_id" : "01906", "city" : "SAUGUS", "loc" : [ -71.011093, 42.463344 ], "pop" : 25487, "state" : "MA" } +{ "_id" : "01907", "city" : "SWAMPSCOTT", "loc" : [ -70.909774, 42.474611 ], "pop" : 13650, "state" : "MA" } +{ "_id" : "01908", "city" : "NAHANT", "loc" : [ -70.927739, 42.426098 ], "pop" : 3828, "state" : "MA" } +{ "_id" : "01913", "city" : "AMESBURY", "loc" : [ -70.93668099999999, 42.855879 ], "pop" : 14970, "state" : "MA" } +{ "_id" : "01915", "city" : "BEVERLY", "loc" : [ -70.875939, 42.560825 ], "pop" : 38259, "state" : "MA" } +{ "_id" : "01921", "city" : "BOXFORD", "loc" : [ -71.01137199999999, 42.679719 ], "pop" : 6249, "state" : "MA" } +{ "_id" : "01922", "city" : "BYFIELD", "loc" : [ -70.935053, 42.756792 ], "pop" : 2006, "state" : "MA" } +{ "_id" : "01923", "city" : "DANVERS", "loc" : [ -70.94246099999999, 42.569402 ], "pop" : 23977, "state" : "MA" } +{ "_id" : "01929", "city" : "ESSEX", "loc" : [ -70.782794, 42.628629 ], "pop" : 3260, "state" : "MA" } +{ "_id" : "01930", "city" : "GLOUCESTER", "loc" : [ -70.672149, 42.620836 ], "pop" : 28716, "state" : "MA" } +{ "_id" : "01938", "city" : "IPSWICH", "loc" : [ -70.84935299999999, 42.680877 ], "pop" : 11864, "state" : "MA" } +{ "_id" : "01940", "city" : "LYNNFIELD", "loc" : [ -71.033873, 42.532711 ], "pop" : 11274, "state" : "MA" } +{ "_id" : "01944", "city" : "MANCHESTER", "loc" : [ -70.76743399999999, 42.57963 ], "pop" : 5286, "state" : "MA" } +{ "_id" : "01945", "city" : "MARBLEHEAD", "loc" : [ -70.865291, 42.498431 ], "pop" : 19971, "state" : "MA" } +{ "_id" : "01949", "city" : "MIDDLETON", "loc" : [ -71.013004, 42.594184 ], "pop" : 4921, "state" : "MA" } +{ "_id" : "01950", "city" : "NEWBURYPORT", "loc" : [ -70.884668, 42.812964 ], "pop" : 16317, "state" : "MA" } +{ "_id" : "01951", "city" : "NEWBURY", "loc" : [ -70.84737699999999, 42.783475 ], "pop" : 3710, "state" : "MA" } +{ "_id" : "01952", "city" : "SALISBURY", "loc" : [ -70.858822, 42.850678 ], "pop" : 6879, "state" : "MA" } +{ "_id" : "01960", "city" : "PEABODY", "loc" : [ -70.96119400000001, 42.532579 ], "pop" : 47685, "state" : "MA" } +{ "_id" : "01966", "city" : "ROCKPORT", "loc" : [ -70.619424, 42.657973 ], "pop" : 7482, "state" : "MA" } +{ "_id" : "01969", "city" : "ROWLEY", "loc" : [ -70.90696, 42.713753 ], "pop" : 4368, "state" : "MA" } +{ "_id" : "01970", "city" : "SALEM", "loc" : [ -70.90034300000001, 42.515114 ], "pop" : 37642, "state" : "MA" } +{ "_id" : "01982", "city" : "SOUTH HAMILTON", "loc" : [ -70.856132, 42.618478 ], "pop" : 7288, "state" : "MA" } +{ "_id" : "01983", "city" : "TOPSFIELD", "loc" : [ -70.948843, 42.641546 ], "pop" : 5763, "state" : "MA" } +{ "_id" : "01984", "city" : "WENHAM", "loc" : [ -70.87862199999999, 42.60166 ], "pop" : 4148, "state" : "MA" } +{ "_id" : "01985", "city" : "WEST NEWBURY", "loc" : [ -70.977811, 42.794865 ], "pop" : 3421, "state" : "MA" } +{ "_id" : "02019", "city" : "BELLINGHAM", "loc" : [ -71.476829, 42.074573 ], "pop" : 14873, "state" : "MA" } +{ "_id" : "02021", "city" : "CANTON", "loc" : [ -71.135536, 42.164454 ], "pop" : 18530, "state" : "MA" } +{ "_id" : "02025", "city" : "COHASSET", "loc" : [ -70.812788, 42.239484 ], "pop" : 7075, "state" : "MA" } +{ "_id" : "02026", "city" : "DEDHAM", "loc" : [ -71.163741, 42.243685 ], "pop" : 23782, "state" : "MA" } +{ "_id" : "02030", "city" : "DOVER", "loc" : [ -71.285363, 42.236233 ], "pop" : 4915, "state" : "MA" } +{ "_id" : "02032", "city" : "EAST WALPOLE", "loc" : [ -71.2179, 42.15324 ], "pop" : 3844, "state" : "MA" } +{ "_id" : "02035", "city" : "FOXBORO", "loc" : [ -71.24412700000001, 42.064938 ], "pop" : 14293, "state" : "MA" } +{ "_id" : "02038", "city" : "FRANKLIN", "loc" : [ -71.40578600000001, 42.09347 ], "pop" : 22128, "state" : "MA" } +{ "_id" : "02043", "city" : "HINGHAM", "loc" : [ -70.891051, 42.224485 ], "pop" : 19821, "state" : "MA" } +{ "_id" : "02045", "city" : "HULL", "loc" : [ -70.87544200000001, 42.285346 ], "pop" : 10466, "state" : "MA" } +{ "_id" : "02048", "city" : "MANSFIELD", "loc" : [ -71.217775, 42.021238 ], "pop" : 16676, "state" : "MA" } +{ "_id" : "02050", "city" : "MARSHFIELD", "loc" : [ -70.69931, 42.106177 ], "pop" : 21782, "state" : "MA" } +{ "_id" : "02052", "city" : "MEDFIELD", "loc" : [ -71.304813, 42.184525 ], "pop" : 10531, "state" : "MA" } +{ "_id" : "02053", "city" : "MEDWAY", "loc" : [ -71.42171500000001, 42.151363 ], "pop" : 9902, "state" : "MA" } +{ "_id" : "02054", "city" : "MILLIS", "loc" : [ -71.360693, 42.166938 ], "pop" : 7613, "state" : "MA" } +{ "_id" : "02056", "city" : "NORFOLK", "loc" : [ -71.32693399999999, 42.117746 ], "pop" : 9259, "state" : "MA" } +{ "_id" : "02061", "city" : "NORWELL", "loc" : [ -70.82172, 42.159574 ], "pop" : 9279, "state" : "MA" } +{ "_id" : "02062", "city" : "NORWOOD", "loc" : [ -71.20331299999999, 42.186843 ], "pop" : 28700, "state" : "MA" } +{ "_id" : "02066", "city" : "SCITUATE", "loc" : [ -70.752476, 42.203235 ], "pop" : 16535, "state" : "MA" } +{ "_id" : "02067", "city" : "SHARON", "loc" : [ -71.175872, 42.109388 ], "pop" : 15873, "state" : "MA" } +{ "_id" : "02071", "city" : "SOUTH WALPOLE", "loc" : [ -71.275235, 42.099203 ], "pop" : 752, "state" : "MA" } +{ "_id" : "02072", "city" : "STOUGHTON", "loc" : [ -71.10735699999999, 42.125279 ], "pop" : 26777, "state" : "MA" } +{ "_id" : "02081", "city" : "WALPOLE", "loc" : [ -71.254391, 42.144413 ], "pop" : 15615, "state" : "MA" } +{ "_id" : "02090", "city" : "WESTWOOD", "loc" : [ -71.210426, 42.214824 ], "pop" : 12557, "state" : "MA" } +{ "_id" : "02093", "city" : "WRENTHAM", "loc" : [ -71.339568, 42.061746 ], "pop" : 9006, "state" : "MA" } +{ "_id" : "02108", "city" : "BOSTON", "loc" : [ -71.068432, 42.357603 ], "pop" : 3697, "state" : "MA" } +{ "_id" : "02109", "city" : "BOSTON", "loc" : [ -71.053386, 42.362963 ], "pop" : 3926, "state" : "MA" } +{ "_id" : "02110", "city" : "BOSTON", "loc" : [ -71.051417, 42.357636 ], "pop" : 957, "state" : "MA" } +{ "_id" : "02111", "city" : "BOSTON", "loc" : [ -71.0629, 42.350348 ], "pop" : 3759, "state" : "MA" } +{ "_id" : "02113", "city" : "BOSTON", "loc" : [ -71.055958, 42.365656 ], "pop" : 6698, "state" : "MA" } +{ "_id" : "02114", "city" : "BOSTON", "loc" : [ -71.06823, 42.361111 ], "pop" : 10246, "state" : "MA" } +{ "_id" : "02115", "city" : "BOSTON", "loc" : [ -71.092215, 42.342706 ], "pop" : 25597, "state" : "MA" } +{ "_id" : "02116", "city" : "BOSTON", "loc" : [ -71.076798, 42.349201 ], "pop" : 17459, "state" : "MA" } +{ "_id" : "02118", "city" : "ROXBURY", "loc" : [ -71.075627, 42.340154 ], "pop" : 21914, "state" : "MA" } +{ "_id" : "02119", "city" : "ROXBURY", "loc" : [ -71.086923, 42.322414 ], "pop" : 25207, "state" : "MA" } +{ "_id" : "02120", "city" : "ROXBURY", "loc" : [ -71.097978, 42.332844 ], "pop" : 14212, "state" : "MA" } +{ "_id" : "02121", "city" : "DORCHESTER", "loc" : [ -71.08305, 42.307503 ], "pop" : 25602, "state" : "MA" } +{ "_id" : "02122", "city" : "DORCHESTER", "loc" : [ -71.05830400000001, 42.297278 ], "pop" : 21266, "state" : "MA" } +{ "_id" : "02124", "city" : "DORCHESTER", "loc" : [ -71.072898, 42.287984 ], "pop" : 48560, "state" : "MA" } +{ "_id" : "02125", "city" : "DORCHESTER", "loc" : [ -71.061924, 42.315305 ], "pop" : 31393, "state" : "MA" } +{ "_id" : "02126", "city" : "MATTAPAN", "loc" : [ -71.09387099999999, 42.273889 ], "pop" : 27808, "state" : "MA" } +{ "_id" : "02127", "city" : "SOUTH BOSTON", "loc" : [ -71.043792, 42.333454 ], "pop" : 29170, "state" : "MA" } +{ "_id" : "02128", "city" : "EAST BOSTON", "loc" : [ -71.028682, 42.378137 ], "pop" : 32941, "state" : "MA" } +{ "_id" : "02129", "city" : "CHARLESTOWN", "loc" : [ -71.062715, 42.377815 ], "pop" : 14775, "state" : "MA" } +{ "_id" : "02130", "city" : "JAMAICA PLAIN", "loc" : [ -71.11149500000001, 42.312596 ], "pop" : 36571, "state" : "MA" } +{ "_id" : "02131", "city" : "ROSLINDALE", "loc" : [ -71.129543, 42.283615 ], "pop" : 32677, "state" : "MA" } +{ "_id" : "02132", "city" : "WEST ROXBURY", "loc" : [ -71.158868, 42.27868 ], "pop" : 26366, "state" : "MA" } +{ "_id" : "02134", "city" : "ALLSTON", "loc" : [ -71.13286600000001, 42.353519 ], "pop" : 23775, "state" : "MA" } +{ "_id" : "02135", "city" : "BRIGHTON", "loc" : [ -71.156599, 42.34779 ], "pop" : 35011, "state" : "MA" } +{ "_id" : "02136", "city" : "HYDE PARK", "loc" : [ -71.126052, 42.253989 ], "pop" : 24260, "state" : "MA" } +{ "_id" : "02138", "city" : "CAMBRIDGE", "loc" : [ -71.12561100000001, 42.377045 ], "pop" : 33841, "state" : "MA" } +{ "_id" : "02139", "city" : "CAMBRIDGE", "loc" : [ -71.10415500000001, 42.364688 ], "pop" : 33149, "state" : "MA" } +{ "_id" : "02140", "city" : "NORTH CAMBRIDGE", "loc" : [ -71.129379, 42.391366 ], "pop" : 16313, "state" : "MA" } +{ "_id" : "02141", "city" : "EAST CAMBRIDGE", "loc" : [ -71.08827700000001, 42.370701 ], "pop" : 10392, "state" : "MA" } +{ "_id" : "02142", "city" : "CAMBRIDGE", "loc" : [ -71.083011, 42.362025 ], "pop" : 1336, "state" : "MA" } +{ "_id" : "02143", "city" : "SOMERVILLE", "loc" : [ -71.102814, 42.382945 ], "pop" : 25597, "state" : "MA" } +{ "_id" : "02144", "city" : "SOMERVILLE", "loc" : [ -71.12205899999999, 42.40032 ], "pop" : 26374, "state" : "MA" } +{ "_id" : "02145", "city" : "SOMERVILLE", "loc" : [ -71.092944, 42.390678 ], "pop" : 24422, "state" : "MA" } +{ "_id" : "02146", "city" : "BROOKLINE", "loc" : [ -71.128917, 42.339158 ], "pop" : 56614, "state" : "MA" } +{ "_id" : "02148", "city" : "MALDEN", "loc" : [ -71.060507, 42.42911 ], "pop" : 54114, "state" : "MA" } +{ "_id" : "02149", "city" : "EVERETT", "loc" : [ -71.05144799999999, 42.411199 ], "pop" : 35493, "state" : "MA" } +{ "_id" : "02150", "city" : "CHELSEA", "loc" : [ -71.032521, 42.396252 ], "pop" : 28790, "state" : "MA" } +{ "_id" : "02151", "city" : "REVERE", "loc" : [ -71.00516500000001, 42.413767 ], "pop" : 42766, "state" : "MA" } +{ "_id" : "02152", "city" : "WINTHROP", "loc" : [ -70.98004299999999, 42.376294 ], "pop" : 18907, "state" : "MA" } +{ "_id" : "02154", "city" : "NORTH WALTHAM", "loc" : [ -71.236497, 42.382492 ], "pop" : 57871, "state" : "MA" } +{ "_id" : "02155", "city" : "MEDFORD", "loc" : [ -71.10868600000001, 42.417335 ], "pop" : 57338, "state" : "MA" } +{ "_id" : "02158", "city" : "NEWTONVILLE", "loc" : [ -71.1902, 42.353835 ], "pop" : 13271, "state" : "MA" } +{ "_id" : "02159", "city" : "NEWTON CENTER", "loc" : [ -71.191839, 42.318889 ], "pop" : 18726, "state" : "MA" } +{ "_id" : "02160", "city" : "NEWTONVILLE", "loc" : [ -71.208771, 42.351961 ], "pop" : 8872, "state" : "MA" } +{ "_id" : "02161", "city" : "NEWTON HIGHLANDS", "loc" : [ -71.20934699999999, 42.318512 ], "pop" : 6657, "state" : "MA" } +{ "_id" : "02162", "city" : "NEWTONVILLE", "loc" : [ -71.258025, 42.330296 ], "pop" : 1427, "state" : "MA" } +{ "_id" : "02163", "city" : "CAMBRIDGE", "loc" : [ -71.141879, 42.364005 ], "pop" : 0, "state" : "MA" } +{ "_id" : "02164", "city" : "NEWTON UPPER FAL", "loc" : [ -71.221615, 42.312562 ], "pop" : 2597, "state" : "MA" } +{ "_id" : "02165", "city" : "NEWTONVILLE", "loc" : [ -71.22795000000001, 42.352366 ], "pop" : 12027, "state" : "MA" } +{ "_id" : "02166", "city" : "AUBURNDALE", "loc" : [ -71.247598, 42.345928 ], "pop" : 6123, "state" : "MA" } +{ "_id" : "02167", "city" : "BOSTON COLLEGE", "loc" : [ -71.16271999999999, 42.31903 ], "pop" : 15619, "state" : "MA" } +{ "_id" : "02168", "city" : "WABAN", "loc" : [ -71.23070300000001, 42.327049 ], "pop" : 5759, "state" : "MA" } +{ "_id" : "02169", "city" : "QUINCY", "loc" : [ -70.997816, 42.249133 ], "pop" : 48920, "state" : "MA" } +{ "_id" : "02170", "city" : "QUINCY", "loc" : [ -71.01864399999999, 42.26713 ], "pop" : 18330, "state" : "MA" } +{ "_id" : "02171", "city" : "QUINCY", "loc" : [ -71.024141, 42.282519 ], "pop" : 18251, "state" : "MA" } +{ "_id" : "02172", "city" : "EAST WATERTOWN", "loc" : [ -71.180266, 42.371497 ], "pop" : 33930, "state" : "MA" } +{ "_id" : "02173", "city" : "LEXINGTON", "loc" : [ -71.225916, 42.445384 ], "pop" : 28994, "state" : "MA" } +{ "_id" : "02174", "city" : "ARLINGTON", "loc" : [ -71.16251699999999, 42.417098 ], "pop" : 44539, "state" : "MA" } +{ "_id" : "02176", "city" : "MELROSE", "loc" : [ -71.063191, 42.458066 ], "pop" : 28228, "state" : "MA" } +{ "_id" : "02178", "city" : "BELMONT", "loc" : [ -71.17464699999999, 42.389656 ], "pop" : 24733, "state" : "MA" } +{ "_id" : "02180", "city" : "STONEHAM", "loc" : [ -71.09780000000001, 42.482778 ], "pop" : 22147, "state" : "MA" } +{ "_id" : "02181", "city" : "WELLESLEY", "loc" : [ -71.287966, 42.305593 ], "pop" : 26615, "state" : "MA" } +{ "_id" : "02184", "city" : "BRAINTREE", "loc" : [ -70.99630399999999, 42.209284 ], "pop" : 33836, "state" : "MA" } +{ "_id" : "02186", "city" : "MILTON", "loc" : [ -71.077051, 42.253663 ], "pop" : 25558, "state" : "MA" } +{ "_id" : "02188", "city" : "WEYMOUTH", "loc" : [ -70.958248, 42.211327 ], "pop" : 13187, "state" : "MA" } +{ "_id" : "02189", "city" : "WEYMOUTH", "loc" : [ -70.93167099999999, 42.211606 ], "pop" : 14055, "state" : "MA" } +{ "_id" : "02190", "city" : "WEYMOUTH", "loc" : [ -70.94869, 42.172817 ], "pop" : 17668, "state" : "MA" } +{ "_id" : "02191", "city" : "WEYMOUTH", "loc" : [ -70.944318, 42.243564 ], "pop" : 9153, "state" : "MA" } +{ "_id" : "02192", "city" : "NEEDHAM", "loc" : [ -71.23517200000001, 42.278908 ], "pop" : 19570, "state" : "MA" } +{ "_id" : "02193", "city" : "WESTON", "loc" : [ -71.300291, 42.359422 ], "pop" : 10221, "state" : "MA" } +{ "_id" : "02194", "city" : "NEEDHAM", "loc" : [ -71.234363, 42.297702 ], "pop" : 8006, "state" : "MA" } +{ "_id" : "02199", "city" : "BOSTON", "loc" : [ -71.082543, 42.347873 ], "pop" : 886, "state" : "MA" } +{ "_id" : "02210", "city" : "BOSTON", "loc" : [ -71.046511, 42.348921 ], "pop" : 308, "state" : "MA" } +{ "_id" : "02215", "city" : "BOSTON", "loc" : [ -71.102689, 42.347088 ], "pop" : 17769, "state" : "MA" } +{ "_id" : "02322", "city" : "AVON", "loc" : [ -71.043738, 42.125825 ], "pop" : 4594, "state" : "MA" } +{ "_id" : "02324", "city" : "BRIDGEWATER", "loc" : [ -70.97234, 41.977341 ], "pop" : 21198, "state" : "MA" } +{ "_id" : "02330", "city" : "CARVER", "loc" : [ -70.767754, 41.888265 ], "pop" : 10573, "state" : "MA" } +{ "_id" : "02332", "city" : "DUXBURY", "loc" : [ -70.716257, 42.039936 ], "pop" : 13913, "state" : "MA" } +{ "_id" : "02333", "city" : "EAST BRIDGEWATER", "loc" : [ -70.944964, 42.031478 ], "pop" : 11104, "state" : "MA" } +{ "_id" : "02338", "city" : "HALIFAX", "loc" : [ -70.84479399999999, 42.000159 ], "pop" : 6526, "state" : "MA" } +{ "_id" : "02339", "city" : "HANOVER", "loc" : [ -70.857006, 42.121406 ], "pop" : 11912, "state" : "MA" } +{ "_id" : "02341", "city" : "HANSON", "loc" : [ -70.865053, 42.061627 ], "pop" : 9037, "state" : "MA" } +{ "_id" : "02343", "city" : "HOLBROOK", "loc" : [ -71.008273, 42.14641 ], "pop" : 11041, "state" : "MA" } +{ "_id" : "02346", "city" : "MIDDLEBORO", "loc" : [ -70.892965, 41.888396 ], "pop" : 17867, "state" : "MA" } +{ "_id" : "02347", "city" : "LAKEVILLE", "loc" : [ -70.958195, 41.837377 ], "pop" : 7785, "state" : "MA" } +{ "_id" : "02351", "city" : "ABINGTON", "loc" : [ -70.95429300000001, 42.116715 ], "pop" : 13849, "state" : "MA" } +{ "_id" : "02356", "city" : "NORTH EASTON", "loc" : [ -71.112337, 42.058956 ], "pop" : 10397, "state" : "MA" } +{ "_id" : "02359", "city" : "PEMBROKE", "loc" : [ -70.80440400000001, 42.062072 ], "pop" : 14535, "state" : "MA" } +{ "_id" : "02360", "city" : "PLYMOUTH", "loc" : [ -70.642004, 41.910404 ], "pop" : 45629, "state" : "MA" } +{ "_id" : "02364", "city" : "KINGSTON", "loc" : [ -70.740993, 41.995022 ], "pop" : 9045, "state" : "MA" } +{ "_id" : "02367", "city" : "PLYMPTON", "loc" : [ -70.804582, 41.96549 ], "pop" : 2384, "state" : "MA" } +{ "_id" : "02368", "city" : "RANDOLPH", "loc" : [ -71.05139200000001, 42.173587 ], "pop" : 30057, "state" : "MA" } +{ "_id" : "02370", "city" : "ROCKLAND", "loc" : [ -70.913263, 42.129286 ], "pop" : 16123, "state" : "MA" } +{ "_id" : "02375", "city" : "SOUTH EASTON", "loc" : [ -71.098814, 42.025704 ], "pop" : 9247, "state" : "MA" } +{ "_id" : "02379", "city" : "WEST BRIDGEWATER", "loc" : [ -71.016054, 42.025511 ], "pop" : 6440, "state" : "MA" } +{ "_id" : "02382", "city" : "WHITMAN", "loc" : [ -70.93812699999999, 42.081603 ], "pop" : 13208, "state" : "MA" } +{ "_id" : "02401", "city" : "BROCKTON", "loc" : [ -71.03434799999999, 42.081571 ], "pop" : 59498, "state" : "MA" } +{ "_id" : "02402", "city" : "BROCKTON", "loc" : [ -71.001947, 42.088396 ], "pop" : 33290, "state" : "MA" } +{ "_id" : "02532", "city" : "ONSET", "loc" : [ -70.59316800000001, 41.752918 ], "pop" : 12047, "state" : "MA" } +{ "_id" : "02535", "city" : "CHILMARK", "loc" : [ -70.741613, 41.357523 ], "pop" : 952, "state" : "MA" } +{ "_id" : "02536", "city" : "TEATICKET", "loc" : [ -70.565174, 41.58504 ], "pop" : 15976, "state" : "MA" } +{ "_id" : "02537", "city" : "EAST SANDWICH", "loc" : [ -70.46822, 41.684603 ], "pop" : 7254, "state" : "MA" } +{ "_id" : "02538", "city" : "EAST WAREHAM", "loc" : [ -70.653237, 41.768247 ], "pop" : 4778, "state" : "MA" } +{ "_id" : "02539", "city" : "EDGARTOWN", "loc" : [ -70.53389300000001, 41.388856 ], "pop" : 3062, "state" : "MA" } +{ "_id" : "02540", "city" : "FALMOUTH", "loc" : [ -70.621663, 41.564754 ], "pop" : 8588, "state" : "MA" } +{ "_id" : "02542", "city" : "OTIS A F B", "loc" : [ -70.57383, 41.660927 ], "pop" : 2078, "state" : "MA" } +{ "_id" : "02543", "city" : "WOODS HOLE", "loc" : [ -70.66431, 41.526272 ], "pop" : 833, "state" : "MA" } +{ "_id" : "02554", "city" : "NANTUCKET", "loc" : [ -70.093216, 41.272529 ], "pop" : 6012, "state" : "MA" } +{ "_id" : "02556", "city" : "NORTH FALMOUTH", "loc" : [ -70.623043, 41.641677 ], "pop" : 2651, "state" : "MA" } +{ "_id" : "02559", "city" : "POCASSET", "loc" : [ -70.610512, 41.688115 ], "pop" : 3907, "state" : "MA" } +{ "_id" : "02563", "city" : "SANDWICH", "loc" : [ -70.469325, 41.698304 ], "pop" : 9007, "state" : "MA" } +{ "_id" : "02568", "city" : "VINEYARD HAVEN", "loc" : [ -70.593737, 41.449955 ], "pop" : 5924, "state" : "MA" } +{ "_id" : "02571", "city" : "WAREHAM", "loc" : [ -70.71159400000001, 41.754084 ], "pop" : 9304, "state" : "MA" } +{ "_id" : "02575", "city" : "WEST TISBURY", "loc" : [ -70.65580199999999, 41.413717 ], "pop" : 1603, "state" : "MA" } +{ "_id" : "02576", "city" : "WEST WAREHAM", "loc" : [ -70.764179, 41.779617 ], "pop" : 3919, "state" : "MA" } +{ "_id" : "02601", "city" : "WEST YARMOUTH", "loc" : [ -70.298176, 41.653682 ], "pop" : 14543, "state" : "MA" } +{ "_id" : "02630", "city" : "BARNSTABLE", "loc" : [ -70.300067, 41.698289 ], "pop" : 1776, "state" : "MA" } +{ "_id" : "02631", "city" : "BREWSTER", "loc" : [ -70.069868, 41.749179 ], "pop" : 8535, "state" : "MA" } +{ "_id" : "02632", "city" : "CENTERVILLE", "loc" : [ -70.353196, 41.660585 ], "pop" : 10636, "state" : "MA" } +{ "_id" : "02633", "city" : "SOUTH CHATHAM", "loc" : [ -69.98075799999999, 41.687634 ], "pop" : 4744, "state" : "MA" } +{ "_id" : "02635", "city" : "COTUIT", "loc" : [ -70.433431, 41.696025 ], "pop" : 3266, "state" : "MA" } +{ "_id" : "02638", "city" : "DENNIS", "loc" : [ -70.19105399999999, 41.732166 ], "pop" : 3216, "state" : "MA" } +{ "_id" : "02639", "city" : "DENNIS PORT", "loc" : [ -70.132711, 41.664873 ], "pop" : 2510, "state" : "MA" } +{ "_id" : "02642", "city" : "EASTHAM", "loc" : [ -69.984865, 41.840781 ], "pop" : 4582, "state" : "MA" } +{ "_id" : "02644", "city" : "FORESTDALE", "loc" : [ -70.51431700000001, 41.682695 ], "pop" : 2712, "state" : "MA" } +{ "_id" : "02645", "city" : "HARWICH", "loc" : [ -70.057929, 41.70082 ], "pop" : 7363, "state" : "MA" } +{ "_id" : "02646", "city" : "HARWICH PORT", "loc" : [ -70.07675500000001, 41.67128 ], "pop" : 1843, "state" : "MA" } +{ "_id" : "02648", "city" : "MARSTONS MILLS", "loc" : [ -70.416321, 41.670274 ], "pop" : 5777, "state" : "MA" } +{ "_id" : "02649", "city" : "MASHPEE", "loc" : [ -70.485361, 41.618116 ], "pop" : 4469, "state" : "MA" } +{ "_id" : "02650", "city" : "NORTH CHATHAM", "loc" : [ -69.966607, 41.70298 ], "pop" : 995, "state" : "MA" } +{ "_id" : "02652", "city" : "NORTH TRURO", "loc" : [ -70.08750999999999, 42.033779 ], "pop" : 834, "state" : "MA" } +{ "_id" : "02653", "city" : "ORLEANS", "loc" : [ -69.982198, 41.779161 ], "pop" : 5860, "state" : "MA" } +{ "_id" : "02655", "city" : "OSTERVILLE", "loc" : [ -70.383726, 41.63005 ], "pop" : 2330, "state" : "MA" } +{ "_id" : "02657", "city" : "PROVINCETOWN", "loc" : [ -70.186504, 42.053364 ], "pop" : 3561, "state" : "MA" } +{ "_id" : "02659", "city" : "SOUTH CHATHAM", "loc" : [ -70.024106, 41.680126 ], "pop" : 840, "state" : "MA" } +{ "_id" : "02660", "city" : "SOUTH DENNIS", "loc" : [ -70.15851000000001, 41.709711 ], "pop" : 6680, "state" : "MA" } +{ "_id" : "02664", "city" : "BASS RIVER", "loc" : [ -70.19731, 41.672805 ], "pop" : 8514, "state" : "MA" } +{ "_id" : "02666", "city" : "TRURO", "loc" : [ -70.05636199999999, 41.998792 ], "pop" : 739, "state" : "MA" } +{ "_id" : "02667", "city" : "WELLFLEET", "loc" : [ -70.018587, 41.928934 ], "pop" : 2373, "state" : "MA" } +{ "_id" : "02668", "city" : "WEST BARNSTABLE", "loc" : [ -70.371985, 41.700212 ], "pop" : 2311, "state" : "MA" } +{ "_id" : "02670", "city" : "WEST DENNIS", "loc" : [ -70.168092, 41.662557 ], "pop" : 1347, "state" : "MA" } +{ "_id" : "02671", "city" : "WEST HARWICH", "loc" : [ -70.113501, 41.669367 ], "pop" : 1061, "state" : "MA" } +{ "_id" : "02673", "city" : "WEST YARMOUTH", "loc" : [ -70.23629699999999, 41.661367 ], "pop" : 6972, "state" : "MA" } +{ "_id" : "02675", "city" : "YARMOUTH PORT", "loc" : [ -70.227014, 41.705149 ], "pop" : 5735, "state" : "MA" } +{ "_id" : "02702", "city" : "ASSONET", "loc" : [ -71.06073600000001, 41.797458 ], "pop" : 3614, "state" : "MA" } +{ "_id" : "02703", "city" : "ATTLEBORO", "loc" : [ -71.30092, 41.929599 ], "pop" : 38528, "state" : "MA" } +{ "_id" : "02713", "city" : "CUTTYHUNK", "loc" : [ -70.87854, 41.443601 ], "pop" : 98, "state" : "MA" } +{ "_id" : "02715", "city" : "DIGHTON", "loc" : [ -71.142723, 41.812505 ], "pop" : 1828, "state" : "MA" } +{ "_id" : "02717", "city" : "EAST FREETOWN", "loc" : [ -70.967709, 41.763455 ], "pop" : 4883, "state" : "MA" } +{ "_id" : "02718", "city" : "EAST TAUNTON", "loc" : [ -71.01922500000001, 41.873585 ], "pop" : 4800, "state" : "MA" } +{ "_id" : "02719", "city" : "FAIRHAVEN", "loc" : [ -70.889608, 41.640924 ], "pop" : 16141, "state" : "MA" } +{ "_id" : "02720", "city" : "FALL RIVER", "loc" : [ -71.13999099999999, 41.718221 ], "pop" : 30600, "state" : "MA" } +{ "_id" : "02721", "city" : "FALL RIVER", "loc" : [ -71.15742400000001, 41.688305 ], "pop" : 26884, "state" : "MA" } +{ "_id" : "02723", "city" : "FALL RIVER", "loc" : [ -71.133214, 41.692612 ], "pop" : 16801, "state" : "MA" } +{ "_id" : "02724", "city" : "FALL RIVER", "loc" : [ -71.17482200000001, 41.684975 ], "pop" : 18141, "state" : "MA" } +{ "_id" : "02725", "city" : "SOMERSET", "loc" : [ -71.177971, 41.722299 ], "pop" : 2528, "state" : "MA" } +{ "_id" : "02726", "city" : "SOMERSET", "loc" : [ -71.14920600000001, 41.756012 ], "pop" : 15117, "state" : "MA" } +{ "_id" : "02738", "city" : "MARION", "loc" : [ -70.761261, 41.709526 ], "pop" : 4496, "state" : "MA" } +{ "_id" : "02739", "city" : "MATTAPOISETT", "loc" : [ -70.816357, 41.661845 ], "pop" : 5850, "state" : "MA" } +{ "_id" : "02740", "city" : "NEW BEDFORD", "loc" : [ -70.9372, 41.634749 ], "pop" : 46426, "state" : "MA" } +{ "_id" : "02743", "city" : "ACUSHNET", "loc" : [ -70.908652, 41.6997 ], "pop" : 9601, "state" : "MA" } +{ "_id" : "02744", "city" : "NEW BEDFORD", "loc" : [ -70.916746, 41.612716 ], "pop" : 13424, "state" : "MA" } +{ "_id" : "02745", "city" : "NEW BEDFORD", "loc" : [ -70.935545, 41.691337 ], "pop" : 23661, "state" : "MA" } +{ "_id" : "02746", "city" : "NEW BEDFORD", "loc" : [ -70.93243, 41.659972 ], "pop" : 16236, "state" : "MA" } +{ "_id" : "02747", "city" : "NORTH DARTMOUTH", "loc" : [ -70.995769, 41.633789 ], "pop" : 16383, "state" : "MA" } +{ "_id" : "02748", "city" : "PADANARAM VILLAG", "loc" : [ -70.956521, 41.591728 ], "pop" : 10980, "state" : "MA" } +{ "_id" : "02760", "city" : "NORTH ATTLEBORO", "loc" : [ -71.329757, 41.977542 ], "pop" : 22289, "state" : "MA" } +{ "_id" : "02762", "city" : "PLAINVILLE", "loc" : [ -71.327454, 42.012403 ], "pop" : 6874, "state" : "MA" } +{ "_id" : "02763", "city" : "NORTH ATTLEBORO", "loc" : [ -71.31035300000001, 41.970979 ], "pop" : 2737, "state" : "MA" } +{ "_id" : "02764", "city" : "NORTH DIGHTON", "loc" : [ -71.148523, 41.852874 ], "pop" : 3779, "state" : "MA" } +{ "_id" : "02766", "city" : "NORTON", "loc" : [ -71.189441, 41.971801 ], "pop" : 14329, "state" : "MA" } +{ "_id" : "02767", "city" : "RAYNHAM", "loc" : [ -71.04685600000001, 41.932361 ], "pop" : 9804, "state" : "MA" } +{ "_id" : "02769", "city" : "REHOBOTH", "loc" : [ -71.254453, 41.85152 ], "pop" : 7762, "state" : "MA" } +{ "_id" : "02770", "city" : "ROCHESTER", "loc" : [ -70.85225699999999, 41.759082 ], "pop" : 3270, "state" : "MA" } +{ "_id" : "02771", "city" : "SEEKONK", "loc" : [ -71.322406, 41.837835 ], "pop" : 13375, "state" : "MA" } +{ "_id" : "02777", "city" : "SWANSEA", "loc" : [ -71.21216699999999, 41.74734 ], "pop" : 15865, "state" : "MA" } +{ "_id" : "02779", "city" : "BERKLEY", "loc" : [ -71.076534, 41.835325 ], "pop" : 4438, "state" : "MA" } +{ "_id" : "02780", "city" : "TAUNTON", "loc" : [ -71.10261, 41.905007 ], "pop" : 44894, "state" : "MA" } +{ "_id" : "02790", "city" : "WESTPORT", "loc" : [ -71.08900300000001, 41.621127 ], "pop" : 14154, "state" : "MA" } +{ "_id" : "02804", "city" : "ASHAWAY", "loc" : [ -71.783745, 41.423054 ], "pop" : 2472, "state" : "RI" } +{ "_id" : "02806", "city" : "BARRINGTON", "loc" : [ -71.317497, 41.744334 ], "pop" : 15849, "state" : "RI" } +{ "_id" : "02807", "city" : "BLOCK ISLAND", "loc" : [ -71.574825, 41.171546 ], "pop" : 836, "state" : "RI" } +{ "_id" : "02808", "city" : "BRADFORD", "loc" : [ -71.746453, 41.411448 ], "pop" : 2184, "state" : "RI" } +{ "_id" : "02809", "city" : "BRISTOL", "loc" : [ -71.26755799999999, 41.68247 ], "pop" : 21625, "state" : "RI" } +{ "_id" : "02812", "city" : "RICHMOND", "loc" : [ -71.650279, 41.46941 ], "pop" : 1011, "state" : "RI" } +{ "_id" : "02813", "city" : "CHARLESTOWN", "loc" : [ -71.661455, 41.400749 ], "pop" : 6663, "state" : "RI" } +{ "_id" : "02814", "city" : "CHEPACHET", "loc" : [ -71.679483, 41.91549 ], "pop" : 8191, "state" : "RI" } +{ "_id" : "02815", "city" : "CLAYVILLE", "loc" : [ -71.67058900000001, 41.777762 ], "pop" : 45, "state" : "RI" } +{ "_id" : "02816", "city" : "COVENTRY", "loc" : [ -71.57679400000001, 41.69143 ], "pop" : 29842, "state" : "RI" } +{ "_id" : "02817", "city" : "WEST GREENWICH", "loc" : [ -71.64354899999999, 41.639977 ], "pop" : 3246, "state" : "RI" } +{ "_id" : "02818", "city" : "EAST GREENWICH", "loc" : [ -71.474009, 41.649777 ], "pop" : 16180, "state" : "RI" } +{ "_id" : "02822", "city" : "EXETER", "loc" : [ -71.607626, 41.574031 ], "pop" : 3774, "state" : "RI" } +{ "_id" : "02825", "city" : "FOSTER", "loc" : [ -71.71874800000001, 41.781455 ], "pop" : 5175, "state" : "RI" } +{ "_id" : "02827", "city" : "GREENE", "loc" : [ -71.735607, 41.706151 ], "pop" : 1241, "state" : "RI" } +{ "_id" : "02828", "city" : "GREENVILLE", "loc" : [ -71.556923, 41.873409 ], "pop" : 6945, "state" : "RI" } +{ "_id" : "02830", "city" : "HARRISVILLE", "loc" : [ -71.65340500000001, 41.976379 ], "pop" : 6384, "state" : "RI" } +{ "_id" : "02831", "city" : "HOPE", "loc" : [ -71.56122499999999, 41.751603 ], "pop" : 3653, "state" : "RI" } +{ "_id" : "02832", "city" : "RICHMOND", "loc" : [ -71.73486200000001, 41.506974 ], "pop" : 3466, "state" : "RI" } +{ "_id" : "02835", "city" : "JAMESTOWN", "loc" : [ -71.376108, 41.516405 ], "pop" : 4999, "state" : "RI" } +{ "_id" : "02836", "city" : "RICHMOND", "loc" : [ -71.683992, 41.477694 ], "pop" : 183, "state" : "RI" } +{ "_id" : "02837", "city" : "LITTLE COMPTON", "loc" : [ -71.161215, 41.52204 ], "pop" : 3341, "state" : "RI" } +{ "_id" : "02838", "city" : "MANVILLE", "loc" : [ -71.474113, 41.96888 ], "pop" : 3259, "state" : "RI" } +{ "_id" : "02840", "city" : "MIDDLETOWN", "loc" : [ -71.30347999999999, 41.504502 ], "pop" : 47687, "state" : "RI" } +{ "_id" : "02852", "city" : "NORTH KINGSTOWN", "loc" : [ -71.46249400000001, 41.589426 ], "pop" : 22325, "state" : "RI" } +{ "_id" : "02857", "city" : "NORTH SCITUATE", "loc" : [ -71.62418700000001, 41.8439 ], "pop" : 9563, "state" : "RI" } +{ "_id" : "02858", "city" : "OAKLAND", "loc" : [ -71.64292500000001, 41.963637 ], "pop" : 462, "state" : "RI" } +{ "_id" : "02859", "city" : "PASCOAG", "loc" : [ -71.70986600000001, 41.962728 ], "pop" : 7156, "state" : "RI" } +{ "_id" : "02860", "city" : "PAWTUCKET", "loc" : [ -71.39071300000001, 41.872873 ], "pop" : 45442, "state" : "RI" } +{ "_id" : "02861", "city" : "PAWTUCKET", "loc" : [ -71.35600100000001, 41.881384 ], "pop" : 27013, "state" : "RI" } +{ "_id" : "02863", "city" : "CENTRAL FALLS", "loc" : [ -71.394527, 41.888263 ], "pop" : 17380, "state" : "RI" } +{ "_id" : "02864", "city" : "CUMBERLAND", "loc" : [ -71.415419, 41.948352 ], "pop" : 29327, "state" : "RI" } +{ "_id" : "02865", "city" : "LINCOLN", "loc" : [ -71.434777, 41.908906 ], "pop" : 14765, "state" : "RI" } +{ "_id" : "02871", "city" : "PORTSMOUTH", "loc" : [ -71.25201800000001, 41.594397 ], "pop" : 16707, "state" : "RI" } +{ "_id" : "02872", "city" : "PRUDENCE ISLAND", "loc" : [ -71.31182699999999, 41.613606 ], "pop" : 150, "state" : "RI" } +{ "_id" : "02874", "city" : "SAUNDERSTOWN", "loc" : [ -71.44269300000001, 41.510528 ], "pop" : 3196, "state" : "RI" } +{ "_id" : "02876", "city" : "SLATERSVILLE", "loc" : [ -71.5682, 42.001478 ], "pop" : 639, "state" : "RI" } +{ "_id" : "02877", "city" : "SLOCUM", "loc" : [ -71.53716900000001, 41.521237 ], "pop" : 1114, "state" : "RI" } +{ "_id" : "02878", "city" : "TIVERTON", "loc" : [ -71.180823, 41.633839 ], "pop" : 14310, "state" : "RI" } +{ "_id" : "02879", "city" : "NARRAGANSETT", "loc" : [ -71.525138, 41.430195 ], "pop" : 13422, "state" : "RI" } +{ "_id" : "02881", "city" : "KINGSTON", "loc" : [ -71.529239, 41.480295 ], "pop" : 7683, "state" : "RI" } +{ "_id" : "02882", "city" : "NARRAGANSETT", "loc" : [ -71.46164, 41.435313 ], "pop" : 13596, "state" : "RI" } +{ "_id" : "02883", "city" : "PEACE DALE", "loc" : [ -71.500057, 41.45157 ], "pop" : 1652, "state" : "RI" } +{ "_id" : "02885", "city" : "WARREN", "loc" : [ -71.27016500000001, 41.725618 ], "pop" : 11385, "state" : "RI" } +{ "_id" : "02886", "city" : "WARWICK", "loc" : [ -71.447591, 41.702601 ], "pop" : 40845, "state" : "RI" } +{ "_id" : "02888", "city" : "WARWICK", "loc" : [ -71.40836, 41.74936 ], "pop" : 20869, "state" : "RI" } +{ "_id" : "02889", "city" : "WARWICK", "loc" : [ -71.390146, 41.714069 ], "pop" : 20849, "state" : "RI" } +{ "_id" : "02891", "city" : "WESTERLY", "loc" : [ -71.81264299999999, 41.369128 ], "pop" : 20290, "state" : "RI" } +{ "_id" : "02892", "city" : "RICHMOND", "loc" : [ -71.599076, 41.506716 ], "pop" : 3943, "state" : "RI" } +{ "_id" : "02893", "city" : "WEST WARWICK", "loc" : [ -71.518349, 41.700433 ], "pop" : 27821, "state" : "RI" } +{ "_id" : "02894", "city" : "WOOD RIVER JUNCT", "loc" : [ -71.709512, 41.453771 ], "pop" : 684, "state" : "RI" } +{ "_id" : "02895", "city" : "NORTH SMITHFIELD", "loc" : [ -71.513683, 41.99948 ], "pop" : 53733, "state" : "RI" } +{ "_id" : "02898", "city" : "RICHMOND", "loc" : [ -71.68397299999999, 41.523362 ], "pop" : 1508, "state" : "RI" } +{ "_id" : "02903", "city" : "PROVIDENCE", "loc" : [ -71.415801, 41.820002 ], "pop" : 9093, "state" : "RI" } +{ "_id" : "02904", "city" : "CENTREDALE", "loc" : [ -71.438102, 41.860461 ], "pop" : 28119, "state" : "RI" } +{ "_id" : "02905", "city" : "CRANSTON", "loc" : [ -71.40314600000001, 41.786568 ], "pop" : 24885, "state" : "RI" } +{ "_id" : "02906", "city" : "PROVIDENCE", "loc" : [ -71.397065, 41.835104 ], "pop" : 31069, "state" : "RI" } +{ "_id" : "02907", "city" : "CRANSTON", "loc" : [ -71.42403899999999, 41.800842 ], "pop" : 25668, "state" : "RI" } +{ "_id" : "02908", "city" : "PROVIDENCE", "loc" : [ -71.437684, 41.838294 ], "pop" : 35933, "state" : "RI" } +{ "_id" : "02909", "city" : "CRANSTON", "loc" : [ -71.448165, 41.816777 ], "pop" : 34261, "state" : "RI" } +{ "_id" : "02910", "city" : "CRANSTON", "loc" : [ -71.43833100000001, 41.776572 ], "pop" : 21128, "state" : "RI" } +{ "_id" : "02911", "city" : "CENTREDALE", "loc" : [ -71.474058, 41.853412 ], "pop" : 13858, "state" : "RI" } +{ "_id" : "02914", "city" : "EAST PROVIDENCE", "loc" : [ -71.368785, 41.813777 ], "pop" : 22965, "state" : "RI" } +{ "_id" : "02915", "city" : "RIVERSIDE", "loc" : [ -71.35424399999999, 41.772313 ], "pop" : 18934, "state" : "RI" } +{ "_id" : "02916", "city" : "RUMFORD", "loc" : [ -71.35593799999999, 41.842472 ], "pop" : 8550, "state" : "RI" } +{ "_id" : "02917", "city" : "SMITHFIELD", "loc" : [ -71.52066600000001, 41.896382 ], "pop" : 12213, "state" : "RI" } +{ "_id" : "02919", "city" : "CRANSTON", "loc" : [ -71.497646, 41.826431 ], "pop" : 26575, "state" : "RI" } +{ "_id" : "02920", "city" : "CRANSTON", "loc" : [ -71.465889, 41.77157 ], "pop" : 37385, "state" : "RI" } +{ "_id" : "02921", "city" : "CRANSTON", "loc" : [ -71.506102, 41.761357 ], "pop" : 6502, "state" : "RI" } +{ "_id" : "03031", "city" : "AMHERST", "loc" : [ -71.607536, 42.856944 ], "pop" : 8998, "state" : "NH" } +{ "_id" : "03032", "city" : "AUBURN", "loc" : [ -71.344892, 42.992529 ], "pop" : 4085, "state" : "NH" } +{ "_id" : "03033", "city" : "BROOKLINE", "loc" : [ -71.666254, 42.738442 ], "pop" : 2410, "state" : "NH" } +{ "_id" : "03034", "city" : "CANDIA", "loc" : [ -71.304857, 43.058514 ], "pop" : 3557, "state" : "NH" } +{ "_id" : "03036", "city" : "CHESTER", "loc" : [ -71.244962, 42.967756 ], "pop" : 2691, "state" : "NH" } +{ "_id" : "03037", "city" : "DEERFIELD", "loc" : [ -71.25126400000001, 43.137756 ], "pop" : 3124, "state" : "NH" } +{ "_id" : "03038", "city" : "DERRY", "loc" : [ -71.30197099999999, 42.887404 ], "pop" : 29556, "state" : "NH" } +{ "_id" : "03042", "city" : "EPPING", "loc" : [ -71.076367, 43.041052 ], "pop" : 6797, "state" : "NH" } +{ "_id" : "03043", "city" : "FRANCESTOWN", "loc" : [ -71.81131000000001, 42.991952 ], "pop" : 1219, "state" : "NH" } +{ "_id" : "03044", "city" : "FREMONT", "loc" : [ -71.121836, 42.984016 ], "pop" : 2677, "state" : "NH" } +{ "_id" : "03045", "city" : "DUNBARTON", "loc" : [ -71.56264, 43.018224 ], "pop" : 9428, "state" : "NH" } +{ "_id" : "03047", "city" : "GREENFIELD", "loc" : [ -71.872755, 42.949277 ], "pop" : 1422, "state" : "NH" } +{ "_id" : "03048", "city" : "MASON", "loc" : [ -71.784487, 42.7489 ], "pop" : 3443, "state" : "NH" } +{ "_id" : "03049", "city" : "HOLLIS", "loc" : [ -71.577206, 42.748513 ], "pop" : 5705, "state" : "NH" } +{ "_id" : "03051", "city" : "HUDSON", "loc" : [ -71.412144, 42.769038 ], "pop" : 26489, "state" : "NH" } +{ "_id" : "03053", "city" : "LONDONDERRY", "loc" : [ -71.37719, 42.865555 ], "pop" : 19687, "state" : "NH" } +{ "_id" : "03054", "city" : "MERRIMACK", "loc" : [ -71.51278000000001, 42.866689 ], "pop" : 21632, "state" : "NH" } +{ "_id" : "03055", "city" : "MILFORD", "loc" : [ -71.660569, 42.828497 ], "pop" : 11795, "state" : "NH" } +{ "_id" : "03057", "city" : "MONT VERNON", "loc" : [ -71.676243, 42.897597 ], "pop" : 1812, "state" : "NH" } +{ "_id" : "03060", "city" : "NASHUA", "loc" : [ -71.466684, 42.756395 ], "pop" : 41438, "state" : "NH" } +{ "_id" : "03062", "city" : "NASHUA", "loc" : [ -71.489282, 42.723472 ], "pop" : 23927, "state" : "NH" } +{ "_id" : "03063", "city" : "NASHUA", "loc" : [ -71.513156, 42.771686 ], "pop" : 14891, "state" : "NH" } +{ "_id" : "03070", "city" : "NEW BOSTON", "loc" : [ -71.686402, 42.97217 ], "pop" : 2701, "state" : "NH" } +{ "_id" : "03071", "city" : "NEW IPSWICH", "loc" : [ -71.870318, 42.751142 ], "pop" : 4014, "state" : "NH" } +{ "_id" : "03076", "city" : "PELHAM", "loc" : [ -71.304551, 42.72881 ], "pop" : 6012, "state" : "NH" } +{ "_id" : "03077", "city" : "RAYMOND", "loc" : [ -71.191159, 43.032512 ], "pop" : 9005, "state" : "NH" } +{ "_id" : "03079", "city" : "SALEM", "loc" : [ -71.21760999999999, 42.78465 ], "pop" : 25746, "state" : "NH" } +{ "_id" : "03082", "city" : "LYNDEBOROUGH", "loc" : [ -71.774373, 42.895449 ], "pop" : 1294, "state" : "NH" } +{ "_id" : "03084", "city" : "TEMPLE", "loc" : [ -71.85234699999999, 42.820035 ], "pop" : 1194, "state" : "NH" } +{ "_id" : "03086", "city" : "WILTON", "loc" : [ -71.75406599999999, 42.836761 ], "pop" : 3122, "state" : "NH" } +{ "_id" : "03087", "city" : "WINDHAM", "loc" : [ -71.306735, 42.805106 ], "pop" : 9000, "state" : "NH" } +{ "_id" : "03101", "city" : "MANCHESTER", "loc" : [ -71.463255, 42.992858 ], "pop" : 2697, "state" : "NH" } +{ "_id" : "03102", "city" : "MANCHESTER", "loc" : [ -71.488433, 42.99442 ], "pop" : 29308, "state" : "NH" } +{ "_id" : "03103", "city" : "MANCHESTER", "loc" : [ -71.449325, 42.965563 ], "pop" : 36613, "state" : "NH" } +{ "_id" : "03104", "city" : "MANCHESTER", "loc" : [ -71.448233, 43.007307 ], "pop" : 29950, "state" : "NH" } +{ "_id" : "03106", "city" : "HOOKSETT", "loc" : [ -71.444446, 43.061708 ], "pop" : 8668, "state" : "NH" } +{ "_id" : "03109", "city" : "MANCHESTER", "loc" : [ -71.41347399999999, 42.971349 ], "pop" : 7884, "state" : "NH" } +{ "_id" : "03110", "city" : "BEDFORD", "loc" : [ -71.52127, 42.940307 ], "pop" : 12468, "state" : "NH" } +{ "_id" : "03216", "city" : "ANDOVER", "loc" : [ -71.78295199999999, 43.428668 ], "pop" : 1638, "state" : "NH" } +{ "_id" : "03217", "city" : "ASHLAND", "loc" : [ -71.61208499999999, 43.703428 ], "pop" : 2056, "state" : "NH" } +{ "_id" : "03218", "city" : "BARNSTEAD", "loc" : [ -71.286946, 43.36513 ], "pop" : 793, "state" : "NH" } +{ "_id" : "03220", "city" : "BELMONT", "loc" : [ -71.488991, 43.451189 ], "pop" : 2997, "state" : "NH" } +{ "_id" : "03221", "city" : "BRADFORD", "loc" : [ -71.98504800000001, 43.294343 ], "pop" : 3273, "state" : "NH" } +{ "_id" : "03222", "city" : "BRISTOL", "loc" : [ -71.750664, 43.611994 ], "pop" : 4288, "state" : "NH" } +{ "_id" : "03223", "city" : "BEEBE RIVER", "loc" : [ -71.63614200000001, 43.888507 ], "pop" : 2802, "state" : "NH" } +{ "_id" : "03224", "city" : "CANTERBURY", "loc" : [ -71.557008, 43.357041 ], "pop" : 2085, "state" : "NH" } +{ "_id" : "03225", "city" : "CENTER BARNSTEAD", "loc" : [ -71.24244, 43.356563 ], "pop" : 2307, "state" : "NH" } +{ "_id" : "03226", "city" : "CENTER HARBOR", "loc" : [ -71.47973, 43.710688 ], "pop" : 470, "state" : "NH" } +{ "_id" : "03227", "city" : "CENTER SANDWICH", "loc" : [ -71.450614, 43.816169 ], "pop" : 615, "state" : "NH" } +{ "_id" : "03229", "city" : "HOPKINTON", "loc" : [ -71.696299, 43.218898 ], "pop" : 6071, "state" : "NH" } +{ "_id" : "03230", "city" : "DANBURY", "loc" : [ -71.869074, 43.5115 ], "pop" : 1098, "state" : "NH" } +{ "_id" : "03231", "city" : "EAST ANDOVER", "loc" : [ -71.75960600000001, 43.47766 ], "pop" : 177, "state" : "NH" } +{ "_id" : "03232", "city" : "EAST HEBRON", "loc" : [ -71.76790699999999, 43.696969 ], "pop" : 47, "state" : "NH" } +{ "_id" : "03234", "city" : "EPSOM", "loc" : [ -71.35457599999999, 43.217398 ], "pop" : 2931, "state" : "NH" } +{ "_id" : "03235", "city" : "FRANKLIN", "loc" : [ -71.64912200000001, 43.442569 ], "pop" : 9780, "state" : "NH" } +{ "_id" : "03237", "city" : "GILMANTON", "loc" : [ -71.412063, 43.417476 ], "pop" : 1308, "state" : "NH" } +{ "_id" : "03240", "city" : "GRAFTON", "loc" : [ -71.96338900000001, 43.572743 ], "pop" : 890, "state" : "NH" } +{ "_id" : "03241", "city" : "HEBRON", "loc" : [ -71.82696, 43.718571 ], "pop" : 657, "state" : "NH" } +{ "_id" : "03242", "city" : "HENNIKER", "loc" : [ -71.815921, 43.179091 ], "pop" : 4151, "state" : "NH" } +{ "_id" : "03243", "city" : "HILL", "loc" : [ -71.729168, 43.527422 ], "pop" : 778, "state" : "NH" } +{ "_id" : "03244", "city" : "HILLSBORO", "loc" : [ -71.902818, 43.120709 ], "pop" : 5246, "state" : "NH" } +{ "_id" : "03246", "city" : "GILFORD", "loc" : [ -71.452907, 43.538713 ], "pop" : 24409, "state" : "NH" } +{ "_id" : "03251", "city" : "LINCOLN", "loc" : [ -71.672707, 44.058159 ], "pop" : 1229, "state" : "NH" } +{ "_id" : "03253", "city" : "MEREDITH", "loc" : [ -71.51132699999999, 43.650208 ], "pop" : 5959, "state" : "NH" } +{ "_id" : "03254", "city" : "MOULTONBOROUGH", "loc" : [ -71.392245, 43.728133 ], "pop" : 3208, "state" : "NH" } +{ "_id" : "03256", "city" : "NEW HAMPTON", "loc" : [ -71.643513, 43.618393 ], "pop" : 1214, "state" : "NH" } +{ "_id" : "03257", "city" : "NEW LONDON", "loc" : [ -71.985674, 43.414501 ], "pop" : 3280, "state" : "NH" } +{ "_id" : "03259", "city" : "NORTH SANDWICH", "loc" : [ -71.385025, 43.845182 ], "pop" : 338, "state" : "NH" } +{ "_id" : "03261", "city" : "NORTHWOOD", "loc" : [ -71.200423, 43.206965 ], "pop" : 3013, "state" : "NH" } +{ "_id" : "03262", "city" : "NORTH WOODSTOCK", "loc" : [ -71.697684, 44.019831 ], "pop" : 1091, "state" : "NH" } +{ "_id" : "03263", "city" : "PITTSFIELD", "loc" : [ -71.33302999999999, 43.287384 ], "pop" : 5806, "state" : "NH" } +{ "_id" : "03264", "city" : "PLYMOUTH", "loc" : [ -71.684714, 43.763524 ], "pop" : 8980, "state" : "NH" } +{ "_id" : "03266", "city" : "RUMNEY", "loc" : [ -71.84801899999999, 43.804389 ], "pop" : 1912, "state" : "NH" } +{ "_id" : "03268", "city" : "SALISBURY", "loc" : [ -71.70446800000001, 43.406652 ], "pop" : 140, "state" : "NH" } +{ "_id" : "03269", "city" : "SANBORNTON", "loc" : [ -71.600348, 43.549552 ], "pop" : 699, "state" : "NH" } +{ "_id" : "03275", "city" : "ALLENSTOWN", "loc" : [ -71.439663, 43.147554 ], "pop" : 11565, "state" : "NH" } +{ "_id" : "03276", "city" : "TILTON", "loc" : [ -71.57741300000001, 43.46033 ], "pop" : 7356, "state" : "NH" } +{ "_id" : "03278", "city" : "WARNER", "loc" : [ -71.83534899999999, 43.303512 ], "pop" : 3265, "state" : "NH" } +{ "_id" : "03279", "city" : "WARREN", "loc" : [ -71.89013, 43.944667 ], "pop" : 886, "state" : "NH" } +{ "_id" : "03280", "city" : "WASHINGTON", "loc" : [ -72.082407, 43.174705 ], "pop" : 628, "state" : "NH" } +{ "_id" : "03281", "city" : "WEARE", "loc" : [ -71.70376, 43.071422 ], "pop" : 7481, "state" : "NH" } +{ "_id" : "03282", "city" : "WENTWORTH", "loc" : [ -71.909651, 43.868456 ], "pop" : 556, "state" : "NH" } +{ "_id" : "03284", "city" : "WEST SPRINGFIELD", "loc" : [ -72.057855, 43.491615 ], "pop" : 788, "state" : "NH" } +{ "_id" : "03287", "city" : "WILMOT FLAT", "loc" : [ -71.900983, 43.432177 ], "pop" : 931, "state" : "NH" } +{ "_id" : "03290", "city" : "NOTTINGHAM", "loc" : [ -71.110983, 43.119632 ], "pop" : 598, "state" : "NH" } +{ "_id" : "03291", "city" : "WEST NOTTINGHAM", "loc" : [ -71.111006, 43.133971 ], "pop" : 27, "state" : "NH" } +{ "_id" : "03301", "city" : "CONCORD", "loc" : [ -71.527734, 43.218525 ], "pop" : 34035, "state" : "NH" } +{ "_id" : "03303", "city" : "BOSCAWEN", "loc" : [ -71.612723, 43.285285 ], "pop" : 12046, "state" : "NH" } +{ "_id" : "03304", "city" : "BOW", "loc" : [ -71.544814, 43.138788 ], "pop" : 5500, "state" : "NH" } +{ "_id" : "03431", "city" : "SURRY", "loc" : [ -72.28954, 42.943127 ], "pop" : 23882, "state" : "NH" } +{ "_id" : "03440", "city" : "ANTRIM", "loc" : [ -71.938698, 43.059547 ], "pop" : 3379, "state" : "NH" } +{ "_id" : "03441", "city" : "ASHUELOT", "loc" : [ -72.434899, 42.785057 ], "pop" : 285, "state" : "NH" } +{ "_id" : "03442", "city" : "BENNINGTON", "loc" : [ -71.91534, 43.010309 ], "pop" : 1236, "state" : "NH" } +{ "_id" : "03443", "city" : "CHESTERFIELD", "loc" : [ -72.487219, 42.900785 ], "pop" : 1455, "state" : "NH" } +{ "_id" : "03444", "city" : "DUBLIN", "loc" : [ -72.050538, 42.897198 ], "pop" : 1474, "state" : "NH" } +{ "_id" : "03445", "city" : "EAST SULLIVAN", "loc" : [ -72.191778, 42.994005 ], "pop" : 169, "state" : "NH" } +{ "_id" : "03446", "city" : "EAST SWANZEY", "loc" : [ -72.249298, 42.884137 ], "pop" : 796, "state" : "NH" } +{ "_id" : "03447", "city" : "FITZWILLIAM", "loc" : [ -72.145014, 42.7611 ], "pop" : 2016, "state" : "NH" } +{ "_id" : "03448", "city" : "GILSUM", "loc" : [ -72.263272, 43.043105 ], "pop" : 745, "state" : "NH" } +{ "_id" : "03449", "city" : "HANCOCK", "loc" : [ -71.981858, 42.976817 ], "pop" : 1526, "state" : "NH" } +{ "_id" : "03450", "city" : "HARRISVILLE", "loc" : [ -72.09724300000001, 42.939874 ], "pop" : 981, "state" : "NH" } +{ "_id" : "03451", "city" : "HINSDALE", "loc" : [ -72.501474, 42.802714 ], "pop" : 3936, "state" : "NH" } +{ "_id" : "03452", "city" : "JAFFREY", "loc" : [ -72.027514, 42.81779 ], "pop" : 5334, "state" : "NH" } +{ "_id" : "03455", "city" : "MARLBOROUGH", "loc" : [ -72.201292, 42.898804 ], "pop" : 1927, "state" : "NH" } +{ "_id" : "03456", "city" : "MARLOW", "loc" : [ -72.21087900000001, 43.132585 ], "pop" : 650, "state" : "NH" } +{ "_id" : "03457", "city" : "MUNSONVILLE", "loc" : [ -72.133702, 42.998646 ], "pop" : 535, "state" : "NH" } +{ "_id" : "03458", "city" : "PETERBOROUGH", "loc" : [ -71.94696399999999, 42.88559 ], "pop" : 5713, "state" : "NH" } +{ "_id" : "03461", "city" : "RINDGE", "loc" : [ -72.01903799999999, 42.754391 ], "pop" : 4968, "state" : "NH" } +{ "_id" : "03462", "city" : "SPOFFORD", "loc" : [ -72.41027699999999, 42.911973 ], "pop" : 1266, "state" : "NH" } +{ "_id" : "03464", "city" : "STODDARD", "loc" : [ -72.108811, 43.073944 ], "pop" : 622, "state" : "NH" } +{ "_id" : "03465", "city" : "TROY", "loc" : [ -72.184753, 42.82697 ], "pop" : 2097, "state" : "NH" } +{ "_id" : "03466", "city" : "WEST CHESTERFIEL", "loc" : [ -72.511216, 42.873152 ], "pop" : 391, "state" : "NH" } +{ "_id" : "03467", "city" : "WESTMORELAND", "loc" : [ -72.435784, 42.968999 ], "pop" : 1596, "state" : "NH" } +{ "_id" : "03469", "city" : "WEST SWANZEY", "loc" : [ -72.29768799999999, 42.870313 ], "pop" : 5440, "state" : "NH" } +{ "_id" : "03470", "city" : "RICHMOND", "loc" : [ -72.36367199999999, 42.773922 ], "pop" : 4625, "state" : "NH" } +{ "_id" : "03561", "city" : "LITTLETON", "loc" : [ -71.776816, 44.311187 ], "pop" : 6663, "state" : "NH" } +{ "_id" : "03570", "city" : "BERLIN", "loc" : [ -71.18923599999999, 44.48107 ], "pop" : 12892, "state" : "NH" } +{ "_id" : "03574", "city" : "BETHLEHEM", "loc" : [ -71.682929, 44.280846 ], "pop" : 1885, "state" : "NH" } +{ "_id" : "03576", "city" : "COLEBROOK", "loc" : [ -71.47934100000001, 44.907776 ], "pop" : 4232, "state" : "NH" } +{ "_id" : "03579", "city" : "ERROL", "loc" : [ -71.143612, 44.800273 ], "pop" : 366, "state" : "NH" } +{ "_id" : "03580", "city" : "FRANCONIA", "loc" : [ -71.751822, 44.205273 ], "pop" : 1090, "state" : "NH" } +{ "_id" : "03581", "city" : "GORHAM", "loc" : [ -71.17998299999999, 44.399601 ], "pop" : 3610, "state" : "NH" } +{ "_id" : "03582", "city" : "GROVETON", "loc" : [ -71.506421, 44.598367 ], "pop" : 2527, "state" : "NH" } +{ "_id" : "03583", "city" : "JEFFERSON", "loc" : [ -71.45183400000001, 44.399907 ], "pop" : 986, "state" : "NH" } +{ "_id" : "03584", "city" : "LANCASTER", "loc" : [ -71.55911500000001, 44.492074 ], "pop" : 3825, "state" : "NH" } +{ "_id" : "03585", "city" : "LISBON", "loc" : [ -71.896565, 44.214837 ], "pop" : 2295, "state" : "NH" } +{ "_id" : "03588", "city" : "MILAN", "loc" : [ -71.181031, 44.586968 ], "pop" : 987, "state" : "NH" } +{ "_id" : "03590", "city" : "NORTH STRATFORD", "loc" : [ -71.564368, 44.714915 ], "pop" : 927, "state" : "NH" } +{ "_id" : "03592", "city" : "PITTSBURG", "loc" : [ -71.36359299999999, 45.086564 ], "pop" : 1104, "state" : "NH" } +{ "_id" : "03598", "city" : "WHITEFIELD", "loc" : [ -71.603453, 44.36811 ], "pop" : 3139, "state" : "NH" } +{ "_id" : "03602", "city" : "ALSTEAD", "loc" : [ -72.328052, 43.126484 ], "pop" : 1721, "state" : "NH" } +{ "_id" : "03603", "city" : "CHARLESTOWN", "loc" : [ -72.40638, 43.257339 ], "pop" : 4678, "state" : "NH" } +{ "_id" : "03605", "city" : "EAST LEMPSTER", "loc" : [ -72.16620500000001, 43.21863 ], "pop" : 323, "state" : "NH" } +{ "_id" : "03607", "city" : "SOUTH ACWORTH", "loc" : [ -72.341053, 43.176942 ], "pop" : 1008, "state" : "NH" } +{ "_id" : "03608", "city" : "WALPOLE", "loc" : [ -72.41548899999999, 43.076533 ], "pop" : 2466, "state" : "NH" } +{ "_id" : "03609", "city" : "NORTH WALPOLE", "loc" : [ -72.44825299999999, 43.142759 ], "pop" : 744, "state" : "NH" } +{ "_id" : "03740", "city" : "BATH", "loc" : [ -71.95674099999999, 44.173419 ], "pop" : 155, "state" : "NH" } +{ "_id" : "03741", "city" : "CANAAN", "loc" : [ -72.029724, 43.660092 ], "pop" : 3065, "state" : "NH" } +{ "_id" : "03743", "city" : "CLAREMONT", "loc" : [ -72.342186, 43.367942 ], "pop" : 14820, "state" : "NH" } +{ "_id" : "03745", "city" : "CORNISH", "loc" : [ -72.339426, 43.496339 ], "pop" : 2275, "state" : "NH" } +{ "_id" : "03748", "city" : "ENFIELD", "loc" : [ -72.127014, 43.625584 ], "pop" : 4118, "state" : "NH" } +{ "_id" : "03750", "city" : "ETNA", "loc" : [ -72.212479, 43.711333 ], "pop" : 944, "state" : "NH" } +{ "_id" : "03752", "city" : "GOSHEN", "loc" : [ -72.124117, 43.302623 ], "pop" : 742, "state" : "NH" } +{ "_id" : "03753", "city" : "GRANTHAM", "loc" : [ -72.133437, 43.510324 ], "pop" : 1247, "state" : "NH" } +{ "_id" : "03755", "city" : "HANOVER", "loc" : [ -72.28496, 43.704532 ], "pop" : 7070, "state" : "NH" } +{ "_id" : "03765", "city" : "HAVERHILL", "loc" : [ -72.057276, 44.039438 ], "pop" : 498, "state" : "NH" } +{ "_id" : "03766", "city" : "LEBANON", "loc" : [ -72.242818, 43.644688 ], "pop" : 9032, "state" : "NH" } +{ "_id" : "03768", "city" : "LYME", "loc" : [ -72.161993, 43.791327 ], "pop" : 2172, "state" : "NH" } +{ "_id" : "03770", "city" : "MERIDEN", "loc" : [ -72.275644, 43.529873 ], "pop" : 126, "state" : "NH" } +{ "_id" : "03771", "city" : "MONROE", "loc" : [ -72.02502800000001, 44.273358 ], "pop" : 760, "state" : "NH" } +{ "_id" : "03773", "city" : "NEWPORT", "loc" : [ -72.183789, 43.353228 ], "pop" : 8073, "state" : "NH" } +{ "_id" : "03774", "city" : "NORTH HAVERHILL", "loc" : [ -72.01911200000001, 44.097841 ], "pop" : 1744, "state" : "NH" } +{ "_id" : "03777", "city" : "ORFORD", "loc" : [ -72.097846, 43.894101 ], "pop" : 1008, "state" : "NH" } +{ "_id" : "03779", "city" : "PIERMONT", "loc" : [ -72.081299, 43.990572 ], "pop" : 431, "state" : "NH" } +{ "_id" : "03780", "city" : "PIKE", "loc" : [ -72.009587, 44.025511 ], "pop" : 751, "state" : "NH" } +{ "_id" : "03781", "city" : "PLAINFIELD", "loc" : [ -72.270398, 43.551919 ], "pop" : 1314, "state" : "NH" } +{ "_id" : "03782", "city" : "SUNAPEE", "loc" : [ -72.095044, 43.386816 ], "pop" : 2570, "state" : "NH" } +{ "_id" : "03784", "city" : "WEST LEBANON", "loc" : [ -72.300735, 43.64401 ], "pop" : 3784, "state" : "NH" } +{ "_id" : "03785", "city" : "WOODSVILLE", "loc" : [ -71.989215, 44.138549 ], "pop" : 2292, "state" : "NH" } +{ "_id" : "03801", "city" : "NEWINGTON", "loc" : [ -70.780412, 43.066524 ], "pop" : 27430, "state" : "NH" } +{ "_id" : "03809", "city" : "ALTON", "loc" : [ -71.229709, 43.46302 ], "pop" : 2939, "state" : "NH" } +{ "_id" : "03810", "city" : "ALTON BAY", "loc" : [ -71.24888, 43.484468 ], "pop" : 157, "state" : "NH" } +{ "_id" : "03811", "city" : "ATKINSON", "loc" : [ -71.16030000000001, 42.836981 ], "pop" : 5145, "state" : "NH" } +{ "_id" : "03812", "city" : "BARTLETT", "loc" : [ -71.2491, 44.08656 ], "pop" : 1379, "state" : "NH" } +{ "_id" : "03813", "city" : "CENTER CONWAY", "loc" : [ -71.060677, 43.98776 ], "pop" : 2394, "state" : "NH" } +{ "_id" : "03814", "city" : "CENTER OSSIPEE", "loc" : [ -71.134882, 43.768189 ], "pop" : 2492, "state" : "NH" } +{ "_id" : "03815", "city" : "CENTER STRAFFORD", "loc" : [ -71.107122, 43.262888 ], "pop" : 436, "state" : "NH" } +{ "_id" : "03816", "city" : "CENTER TUFTONBOR", "loc" : [ -71.26505899999999, 43.690205 ], "pop" : 885, "state" : "NH" } +{ "_id" : "03817", "city" : "CHOCORUA", "loc" : [ -71.24071600000001, 43.890851 ], "pop" : 70, "state" : "NH" } +{ "_id" : "03818", "city" : "CONWAY", "loc" : [ -71.15028, 43.974161 ], "pop" : 1875, "state" : "NH" } +{ "_id" : "03819", "city" : "DANVILLE", "loc" : [ -71.120985, 42.923432 ], "pop" : 2471, "state" : "NH" } +{ "_id" : "03820", "city" : "MADBURY", "loc" : [ -70.88488099999999, 43.190006 ], "pop" : 27182, "state" : "NH" } +{ "_id" : "03824", "city" : "LEE", "loc" : [ -70.952333, 43.133821 ], "pop" : 15487, "state" : "NH" } +{ "_id" : "03825", "city" : "BARRINGTON", "loc" : [ -71.03767499999999, 43.2027 ], "pop" : 5842, "state" : "NH" } +{ "_id" : "03826", "city" : "EAST HAMPSTEAD", "loc" : [ -71.127978, 42.887656 ], "pop" : 1880, "state" : "NH" } +{ "_id" : "03827", "city" : "SOUTH HAMPTON", "loc" : [ -70.976904, 42.911289 ], "pop" : 3197, "state" : "NH" } +{ "_id" : "03830", "city" : "EAST WAKEFIELD", "loc" : [ -71.007712, 43.641022 ], "pop" : 675, "state" : "NH" } +{ "_id" : "03833", "city" : "BRENTWOOD", "loc" : [ -70.96430599999999, 42.977169 ], "pop" : 14374, "state" : "NH" } +{ "_id" : "03835", "city" : "FARMINGTON", "loc" : [ -71.06469300000001, 43.388373 ], "pop" : 4676, "state" : "NH" } +{ "_id" : "03836", "city" : "FREEDOM", "loc" : [ -71.062815, 43.817242 ], "pop" : 935, "state" : "NH" } +{ "_id" : "03837", "city" : "GILMANTON IRON W", "loc" : [ -71.330315, 43.425281 ], "pop" : 1301, "state" : "NH" } +{ "_id" : "03838", "city" : "GLEN", "loc" : [ -71.192457, 44.101777 ], "pop" : 84, "state" : "NH" } +{ "_id" : "03839", "city" : "GONIC", "loc" : [ -70.976642, 43.268374 ], "pop" : 4474, "state" : "NH" } +{ "_id" : "03840", "city" : "GREENLAND", "loc" : [ -70.847476, 43.035294 ], "pop" : 2450, "state" : "NH" } +{ "_id" : "03841", "city" : "HAMPSTEAD", "loc" : [ -71.175802, 42.881957 ], "pop" : 5291, "state" : "NH" } +{ "_id" : "03842", "city" : "HAMPTON", "loc" : [ -70.824336, 42.935883 ], "pop" : 12278, "state" : "NH" } +{ "_id" : "03844", "city" : "HAMPTON FALLS", "loc" : [ -70.887608, 42.926323 ], "pop" : 1503, "state" : "NH" } +{ "_id" : "03845", "city" : "INTERVALE", "loc" : [ -71.119415, 44.095479 ], "pop" : 1811, "state" : "NH" } +{ "_id" : "03846", "city" : "JACKSON", "loc" : [ -71.187808, 44.166989 ], "pop" : 689, "state" : "NH" } +{ "_id" : "03848", "city" : "KINGSTON", "loc" : [ -71.063914, 42.913258 ], "pop" : 6111, "state" : "NH" } +{ "_id" : "03849", "city" : "MADISON", "loc" : [ -71.125412, 43.915206 ], "pop" : 1669, "state" : "NH" } +{ "_id" : "03852", "city" : "MILTON MILLS", "loc" : [ -70.969729, 43.502494 ], "pop" : 514, "state" : "NH" } +{ "_id" : "03853", "city" : "MIRROR LAKE", "loc" : [ -71.272858, 43.636552 ], "pop" : 696, "state" : "NH" } +{ "_id" : "03854", "city" : "NEW CASTLE", "loc" : [ -70.719922, 43.068114 ], "pop" : 840, "state" : "NH" } +{ "_id" : "03855", "city" : "NEW DURHAM", "loc" : [ -71.140828, 43.443045 ], "pop" : 2148, "state" : "NH" } +{ "_id" : "03857", "city" : "NEWMARKET", "loc" : [ -70.95531699999999, 43.072628 ], "pop" : 9049, "state" : "NH" } +{ "_id" : "03858", "city" : "NEWTON", "loc" : [ -71.04202100000001, 42.867805 ], "pop" : 2944, "state" : "NH" } +{ "_id" : "03860", "city" : "NORTH CONWAY", "loc" : [ -71.123811, 44.033613 ], "pop" : 3458, "state" : "NH" } +{ "_id" : "03862", "city" : "NORTH HAMPTON", "loc" : [ -70.82673800000001, 42.977625 ], "pop" : 3637, "state" : "NH" } +{ "_id" : "03864", "city" : "OSSIPEE", "loc" : [ -71.11287299999999, 43.694506 ], "pop" : 1490, "state" : "NH" } +{ "_id" : "03865", "city" : "PLAISTOW", "loc" : [ -71.093397, 42.835551 ], "pop" : 7124, "state" : "NH" } +{ "_id" : "03867", "city" : "ROCHESTER", "loc" : [ -71.055753, 43.309203 ], "pop" : 3793, "state" : "NH" } +{ "_id" : "03868", "city" : "EAST ROCHESTER", "loc" : [ -70.968581, 43.31256 ], "pop" : 20616, "state" : "NH" } +{ "_id" : "03869", "city" : "ROLLINSFORD", "loc" : [ -70.833207, 43.226936 ], "pop" : 2395, "state" : "NH" } +{ "_id" : "03870", "city" : "RYE", "loc" : [ -70.765153, 43.009468 ], "pop" : 4415, "state" : "NH" } +{ "_id" : "03872", "city" : "SANBORNVILLE", "loc" : [ -71.020005, 43.551278 ], "pop" : 2382, "state" : "NH" } +{ "_id" : "03873", "city" : "SANDOWN", "loc" : [ -71.18606, 42.930819 ], "pop" : 4060, "state" : "NH" } +{ "_id" : "03874", "city" : "SEABROOK", "loc" : [ -70.86463999999999, 42.88536 ], "pop" : 6503, "state" : "NH" } +{ "_id" : "03875", "city" : "SILVER LAKE", "loc" : [ -71.190501, 43.878974 ], "pop" : 640, "state" : "NH" } +{ "_id" : "03878", "city" : "SOMERSWORTH", "loc" : [ -70.87558900000001, 43.252546 ], "pop" : 11170, "state" : "NH" } +{ "_id" : "03882", "city" : "SOUTH EFFINGHAM", "loc" : [ -71.002109, 43.721216 ], "pop" : 201, "state" : "NH" } +{ "_id" : "03883", "city" : "SOUTH TAMWORTH", "loc" : [ -71.311654, 43.833613 ], "pop" : 188, "state" : "NH" } +{ "_id" : "03884", "city" : "STRAFFORD", "loc" : [ -71.162475, 43.250575 ], "pop" : 1618, "state" : "NH" } +{ "_id" : "03885", "city" : "STRATHAM", "loc" : [ -70.899714, 43.019432 ], "pop" : 4967, "state" : "NH" } +{ "_id" : "03886", "city" : "TAMWORTH", "loc" : [ -71.264454, 43.862049 ], "pop" : 1285, "state" : "NH" } +{ "_id" : "03887", "city" : "UNION", "loc" : [ -71.02085700000001, 43.4382 ], "pop" : 4229, "state" : "NH" } +{ "_id" : "03890", "city" : "WEST OSSIPEE", "loc" : [ -71.205141, 43.835956 ], "pop" : 362, "state" : "NH" } +{ "_id" : "03894", "city" : "WOLFEBORO", "loc" : [ -71.190843, 43.594996 ], "pop" : 5586, "state" : "NH" } +{ "_id" : "03901", "city" : "BERWICK", "loc" : [ -70.85503799999999, 43.28992 ], "pop" : 5942, "state" : "ME" } +{ "_id" : "03902", "city" : "CAPE NEDDICK", "loc" : [ -70.639685, 43.213318 ], "pop" : 953, "state" : "ME" } +{ "_id" : "03903", "city" : "ELIOT", "loc" : [ -70.78221600000001, 43.130943 ], "pop" : 6506, "state" : "ME" } +{ "_id" : "03904", "city" : "KITTERY", "loc" : [ -70.742876, 43.092128 ], "pop" : 3537, "state" : "ME" } +{ "_id" : "03905", "city" : "KITTERY POINT", "loc" : [ -70.712108, 43.097571 ], "pop" : 4589, "state" : "ME" } +{ "_id" : "03906", "city" : "NORTH BERWICK", "loc" : [ -70.72117299999999, 43.325401 ], "pop" : 6465, "state" : "ME" } +{ "_id" : "03907", "city" : "OGUNQUIT", "loc" : [ -70.597176, 43.228457 ], "pop" : 852, "state" : "ME" } +{ "_id" : "03908", "city" : "SOUTH BERWICK", "loc" : [ -70.785949, 43.229201 ], "pop" : 5982, "state" : "ME" } +{ "_id" : "03909", "city" : "YORK", "loc" : [ -70.657826, 43.154447 ], "pop" : 8477, "state" : "ME" } +{ "_id" : "04001", "city" : "ACTON", "loc" : [ -70.93068700000001, 43.549405 ], "pop" : 767, "state" : "ME" } +{ "_id" : "04002", "city" : "ALFRED", "loc" : [ -70.69608700000001, 43.487503 ], "pop" : 4730, "state" : "ME" } +{ "_id" : "04003", "city" : "BAILEY ISLAND", "loc" : [ -69.995175, 43.734147 ], "pop" : 464, "state" : "ME" } +{ "_id" : "04005", "city" : "ARUNDEL", "loc" : [ -70.47192800000001, 43.483647 ], "pop" : 23646, "state" : "ME" } +{ "_id" : "04006", "city" : "BIDDEFORD POOL", "loc" : [ -70.352024, 43.442722 ], "pop" : 269, "state" : "ME" } +{ "_id" : "04008", "city" : "BOWDOINHAM", "loc" : [ -69.91884899999999, 44.036806 ], "pop" : 4328, "state" : "ME" } +{ "_id" : "04009", "city" : "BRIDGTON", "loc" : [ -70.724081, 44.052049 ], "pop" : 3980, "state" : "ME" } +{ "_id" : "04010", "city" : "BROWNFIELD", "loc" : [ -70.90322500000001, 43.971316 ], "pop" : 1148, "state" : "ME" } +{ "_id" : "04011", "city" : "BIRCH ISLAND", "loc" : [ -69.95546899999999, 43.897591 ], "pop" : 22557, "state" : "ME" } +{ "_id" : "04013", "city" : "BUSTINS ISLAND", "loc" : [ -70.042247, 43.79602 ], "pop" : 0, "state" : "ME" } +{ "_id" : "04015", "city" : "CASCO", "loc" : [ -70.52601300000001, 43.959623 ], "pop" : 3010, "state" : "ME" } +{ "_id" : "04016", "city" : "CENTER LOVELL", "loc" : [ -70.883618, 44.168139 ], "pop" : 148, "state" : "ME" } +{ "_id" : "04017", "city" : "CHEBEAGUE ISLAND", "loc" : [ -70.116878, 43.735363 ], "pop" : 337, "state" : "ME" } +{ "_id" : "04019", "city" : "CLIFF ISLAND", "loc" : [ -70.107097, 43.695547 ], "pop" : 87, "state" : "ME" } +{ "_id" : "04020", "city" : "CORNISH", "loc" : [ -70.77843300000001, 43.779612 ], "pop" : 1736, "state" : "ME" } +{ "_id" : "04021", "city" : "CUMBERLAND CENTE", "loc" : [ -70.2484, 43.809818 ], "pop" : 8544, "state" : "ME" } +{ "_id" : "04022", "city" : "DENMARK", "loc" : [ -70.79240900000001, 43.975499 ], "pop" : 679, "state" : "ME" } +{ "_id" : "04024", "city" : "EAST BALDWIN", "loc" : [ -70.692159, 43.864604 ], "pop" : 976, "state" : "ME" } +{ "_id" : "04027", "city" : "WEST LEBANON", "loc" : [ -70.91098599999999, 43.410304 ], "pop" : 5224, "state" : "ME" } +{ "_id" : "04029", "city" : "NORTH SEBAGO", "loc" : [ -70.633865, 43.882247 ], "pop" : 597, "state" : "ME" } +{ "_id" : "04030", "city" : "EAST WATERBORO", "loc" : [ -70.69062599999999, 43.599537 ], "pop" : 1153, "state" : "ME" } +{ "_id" : "04032", "city" : "FREEPORT", "loc" : [ -70.113854, 43.851093 ], "pop" : 8081, "state" : "ME" } +{ "_id" : "04037", "city" : "FRYEBURG", "loc" : [ -70.966841, 44.031278 ], "pop" : 2551, "state" : "ME" } +{ "_id" : "04038", "city" : "GORHAM", "loc" : [ -70.467968, 43.684329 ], "pop" : 13642, "state" : "ME" } +{ "_id" : "04039", "city" : "GRAY", "loc" : [ -70.342939, 43.894202 ], "pop" : 5383, "state" : "ME" } +{ "_id" : "04040", "city" : "HARRISON", "loc" : [ -70.65385499999999, 44.107099 ], "pop" : 2274, "state" : "ME" } +{ "_id" : "04041", "city" : "HIRAM", "loc" : [ -70.853076, 43.862217 ], "pop" : 1905, "state" : "ME" } +{ "_id" : "04042", "city" : "HOLLIS CENTER", "loc" : [ -70.605074, 43.594578 ], "pop" : 2243, "state" : "ME" } +{ "_id" : "04043", "city" : "KENNEBUNK", "loc" : [ -70.547802, 43.388055 ], "pop" : 7826, "state" : "ME" } +{ "_id" : "04046", "city" : "KENNEBUNKPORT", "loc" : [ -70.47286699999999, 43.392288 ], "pop" : 5220, "state" : "ME" } +{ "_id" : "04047", "city" : "KEZAR FALLS", "loc" : [ -70.892717, 43.785361 ], "pop" : 852, "state" : "ME" } +{ "_id" : "04048", "city" : "LIMERICK", "loc" : [ -70.786556, 43.696265 ], "pop" : 2982, "state" : "ME" } +{ "_id" : "04049", "city" : "LIMINGTON", "loc" : [ -70.675178, 43.726031 ], "pop" : 776, "state" : "ME" } +{ "_id" : "04050", "city" : "LONG ISLAND", "loc" : [ -70.15509, 43.692014 ], "pop" : 201, "state" : "ME" } +{ "_id" : "04051", "city" : "LOVELL", "loc" : [ -70.929951, 44.161404 ], "pop" : 763, "state" : "ME" } +{ "_id" : "04053", "city" : "MEREPOINT", "loc" : [ -70.00346999999999, 43.843496 ], "pop" : 269, "state" : "ME" } +{ "_id" : "04055", "city" : "NAPLES", "loc" : [ -70.598754, 43.968121 ], "pop" : 2868, "state" : "ME" } +{ "_id" : "04058", "city" : "NORTH FRYEBURG", "loc" : [ -70.981286, 44.132936 ], "pop" : 185, "state" : "ME" } +{ "_id" : "04060", "city" : "NORTH SHAPLEIGH", "loc" : [ -70.874392, 43.583458 ], "pop" : 302, "state" : "ME" } +{ "_id" : "04061", "city" : "NORTH WATERBORO", "loc" : [ -70.729799, 43.639976 ], "pop" : 1516, "state" : "ME" } +{ "_id" : "04062", "city" : "WINDHAM", "loc" : [ -70.414281, 43.795771 ], "pop" : 13482, "state" : "ME" } +{ "_id" : "04064", "city" : "OLD ORCHARD BEAC", "loc" : [ -70.392053, 43.517449 ], "pop" : 8451, "state" : "ME" } +{ "_id" : "04066", "city" : "ORRS ISLAND", "loc" : [ -69.966793, 43.77267 ], "pop" : 861, "state" : "ME" } +{ "_id" : "04068", "city" : "PORTER", "loc" : [ -70.924266, 43.826216 ], "pop" : 985, "state" : "ME" } +{ "_id" : "04069", "city" : "POWNAL", "loc" : [ -70.195497, 43.890042 ], "pop" : 1690, "state" : "ME" } +{ "_id" : "04071", "city" : "RAYMOND", "loc" : [ -70.449834, 43.921917 ], "pop" : 3516, "state" : "ME" } +{ "_id" : "04072", "city" : "SACO", "loc" : [ -70.454632, 43.520946 ], "pop" : 16192, "state" : "ME" } +{ "_id" : "04073", "city" : "SANFORD", "loc" : [ -70.75847899999999, 43.428541 ], "pop" : 15723, "state" : "ME" } +{ "_id" : "04074", "city" : "SCARBOROUGH", "loc" : [ -70.345668, 43.583476 ], "pop" : 12550, "state" : "ME" } +{ "_id" : "04075", "city" : "SEBAGO LAKE", "loc" : [ -70.573454, 43.758355 ], "pop" : 4141, "state" : "ME" } +{ "_id" : "04076", "city" : "SHAPLEIGH", "loc" : [ -70.828619, 43.567353 ], "pop" : 314, "state" : "ME" } +{ "_id" : "04077", "city" : "SOUTH CASCO", "loc" : [ -70.51293800000001, 43.876736 ], "pop" : 250, "state" : "ME" } +{ "_id" : "04079", "city" : "SOUTH HARPSWELL", "loc" : [ -69.993709, 43.781932 ], "pop" : 1767, "state" : "ME" } +{ "_id" : "04081", "city" : "SOUTH WATERFORD", "loc" : [ -70.792061, 44.151256 ], "pop" : 439, "state" : "ME" } +{ "_id" : "04083", "city" : "SPRINGVALE", "loc" : [ -70.806445, 43.471499 ], "pop" : 5472, "state" : "ME" } +{ "_id" : "04084", "city" : "STANDISH", "loc" : [ -70.48065699999999, 43.814211 ], "pop" : 1592, "state" : "ME" } +{ "_id" : "04085", "city" : "STEEP FALLS", "loc" : [ -70.645627, 43.757137 ], "pop" : 2060, "state" : "ME" } +{ "_id" : "04086", "city" : "PEJEPSCOT", "loc" : [ -69.964479, 43.941286 ], "pop" : 8535, "state" : "ME" } +{ "_id" : "04087", "city" : "WATERBORO", "loc" : [ -70.743115, 43.566097 ], "pop" : 1797, "state" : "ME" } +{ "_id" : "04090", "city" : "WELLS", "loc" : [ -70.59688300000001, 43.314352 ], "pop" : 5590, "state" : "ME" } +{ "_id" : "04091", "city" : "WEST BALDWIN", "loc" : [ -70.749015, 43.829873 ], "pop" : 770, "state" : "ME" } +{ "_id" : "04092", "city" : "WESTBROOK", "loc" : [ -70.35803300000001, 43.684268 ], "pop" : 16121, "state" : "ME" } +{ "_id" : "04093", "city" : "WEST BUXTON", "loc" : [ -70.601546, 43.661586 ], "pop" : 4910, "state" : "ME" } +{ "_id" : "04095", "city" : "MAPLEWOOD", "loc" : [ -70.913476, 43.643417 ], "pop" : 1126, "state" : "ME" } +{ "_id" : "04096", "city" : "YARMOUTH", "loc" : [ -70.174958, 43.800933 ], "pop" : 3068, "state" : "ME" } +{ "_id" : "04101", "city" : "PORTLAND", "loc" : [ -70.258864, 43.660564 ], "pop" : 17147, "state" : "ME" } +{ "_id" : "04102", "city" : "PORTLAND", "loc" : [ -70.28981, 43.660168 ], "pop" : 17660, "state" : "ME" } +{ "_id" : "04103", "city" : "PORTLAND", "loc" : [ -70.2876, 43.687568 ], "pop" : 28461, "state" : "ME" } +{ "_id" : "04105", "city" : "FALMOUTH", "loc" : [ -70.26253, 43.734038 ], "pop" : 7609, "state" : "ME" } +{ "_id" : "04106", "city" : "SOUTH PORTLAND", "loc" : [ -70.270878, 43.631847 ], "pop" : 23131, "state" : "ME" } +{ "_id" : "04107", "city" : "CAPE ELIZABETH", "loc" : [ -70.230099, 43.601735 ], "pop" : 8854, "state" : "ME" } +{ "_id" : "04108", "city" : "PEAKS ISLAND", "loc" : [ -70.194017, 43.658921 ], "pop" : 775, "state" : "ME" } +{ "_id" : "04109", "city" : "CUSHING ISLAND", "loc" : [ -70.202201, 43.674971 ], "pop" : 28, "state" : "ME" } +{ "_id" : "04110", "city" : "CUMBERLAND FORES", "loc" : [ -70.188333, 43.774485 ], "pop" : 2879, "state" : "ME" } +{ "_id" : "04210", "city" : "AUBURN", "loc" : [ -70.238978, 44.094785 ], "pop" : 24160, "state" : "ME" } +{ "_id" : "04216", "city" : "ANDOVER", "loc" : [ -70.79666, 44.663703 ], "pop" : 878, "state" : "ME" } +{ "_id" : "04217", "city" : "BETHEL", "loc" : [ -70.803685, 44.416176 ], "pop" : 2775, "state" : "ME" } +{ "_id" : "04219", "city" : "BRYANT POND", "loc" : [ -70.643468, 44.395714 ], "pop" : 1563, "state" : "ME" } +{ "_id" : "04220", "city" : "BUCKFIELD", "loc" : [ -70.36829299999999, 44.287676 ], "pop" : 1551, "state" : "ME" } +{ "_id" : "04221", "city" : "CANTON", "loc" : [ -70.321719, 44.418894 ], "pop" : 1673, "state" : "ME" } +{ "_id" : "04223", "city" : "DANVILLE", "loc" : [ -70.27205499999999, 44.036528 ], "pop" : 1086, "state" : "ME" } +{ "_id" : "04224", "city" : "DIXFIELD", "loc" : [ -70.424099, 44.554799 ], "pop" : 3032, "state" : "ME" } +{ "_id" : "04225", "city" : "DRYDEN", "loc" : [ -70.223962, 44.600218 ], "pop" : 4520, "state" : "ME" } +{ "_id" : "04226", "city" : "EAST ANDOVER", "loc" : [ -70.729555, 44.603011 ], "pop" : 154, "state" : "ME" } +{ "_id" : "04228", "city" : "EAST LIVERMORE", "loc" : [ -70.130334, 44.399402 ], "pop" : 560, "state" : "ME" } +{ "_id" : "04231", "city" : "EAST STONEHAM", "loc" : [ -70.852936, 44.238201 ], "pop" : 429, "state" : "ME" } +{ "_id" : "04235", "city" : "FRYE", "loc" : [ -70.565319, 44.599482 ], "pop" : 28, "state" : "ME" } +{ "_id" : "04236", "city" : "GREENE", "loc" : [ -70.145532, 44.189059 ], "pop" : 3661, "state" : "ME" } +{ "_id" : "04237", "city" : "HANOVER", "loc" : [ -70.716735, 44.495875 ], "pop" : 272, "state" : "ME" } +{ "_id" : "04238", "city" : "HEBRON", "loc" : [ -70.37536900000001, 44.202136 ], "pop" : 826, "state" : "ME" } +{ "_id" : "04239", "city" : "JAY", "loc" : [ -70.209883, 44.515994 ], "pop" : 4631, "state" : "ME" } +{ "_id" : "04240", "city" : "LEWISTON", "loc" : [ -70.191619, 44.098538 ], "pop" : 40173, "state" : "ME" } +{ "_id" : "04250", "city" : "LISBON", "loc" : [ -70.113933, 44.025511 ], "pop" : 3633, "state" : "ME" } +{ "_id" : "04252", "city" : "LISBON FALLS", "loc" : [ -70.073375, 43.997759 ], "pop" : 8095, "state" : "ME" } +{ "_id" : "04254", "city" : "LIVERMORE FALLS", "loc" : [ -70.193614, 44.445756 ], "pop" : 4845, "state" : "ME" } +{ "_id" : "04256", "city" : "MECHANIC FALLS", "loc" : [ -70.368206, 44.099957 ], "pop" : 6247, "state" : "ME" } +{ "_id" : "04257", "city" : "MEXICO", "loc" : [ -70.535797, 44.562776 ], "pop" : 3316, "state" : "ME" } +{ "_id" : "04259", "city" : "MONMOUTH", "loc" : [ -70.02627, 44.22083 ], "pop" : 1838, "state" : "ME" } +{ "_id" : "04260", "city" : "NEW GLOUCESTER", "loc" : [ -70.297381, 43.960835 ], "pop" : 3916, "state" : "ME" } +{ "_id" : "04261", "city" : "NEWRY", "loc" : [ -70.79261099999999, 44.407937 ], "pop" : 300, "state" : "ME" } +{ "_id" : "04263", "city" : "LEEDS", "loc" : [ -70.125277, 44.28343 ], "pop" : 1669, "state" : "ME" } +{ "_id" : "04265", "city" : "NORTH MONMOUTH", "loc" : [ -70.036686, 44.275328 ], "pop" : 616, "state" : "ME" } +{ "_id" : "04266", "city" : "NORTH TURNER", "loc" : [ -70.256147, 44.335031 ], "pop" : 953, "state" : "ME" } +{ "_id" : "04267", "city" : "NORTH WATERFORD", "loc" : [ -70.717393, 44.206511 ], "pop" : 1168, "state" : "ME" } +{ "_id" : "04268", "city" : "NORWAY", "loc" : [ -70.560135, 44.212654 ], "pop" : 5258, "state" : "ME" } +{ "_id" : "04270", "city" : "OXFORD", "loc" : [ -70.509799, 44.11183 ], "pop" : 2822, "state" : "ME" } +{ "_id" : "04273", "city" : "POLAND", "loc" : [ -70.41181899999999, 44.059187 ], "pop" : 179, "state" : "ME" } +{ "_id" : "04274", "city" : "POLAND SPRING", "loc" : [ -70.37966400000001, 44.021162 ], "pop" : 1375, "state" : "ME" } +{ "_id" : "04275", "city" : "ROXBURY", "loc" : [ -70.609188, 44.65657 ], "pop" : 548, "state" : "ME" } +{ "_id" : "04276", "city" : "RUMFORD", "loc" : [ -70.564475, 44.543446 ], "pop" : 7035, "state" : "ME" } +{ "_id" : "04278", "city" : "RUMFORD CENTER", "loc" : [ -70.700058, 44.592334 ], "pop" : 92, "state" : "ME" } +{ "_id" : "04279", "city" : "RUMFORD POINT", "loc" : [ -70.700276, 44.557104 ], "pop" : 36, "state" : "ME" } +{ "_id" : "04280", "city" : "SABATTUS", "loc" : [ -70.074792, 44.113269 ], "pop" : 4809, "state" : "ME" } +{ "_id" : "04281", "city" : "SOUTH PARIS", "loc" : [ -70.50117899999999, 44.216674 ], "pop" : 6054, "state" : "ME" } +{ "_id" : "04282", "city" : "TURNER", "loc" : [ -70.249444, 44.255669 ], "pop" : 3365, "state" : "ME" } +{ "_id" : "04284", "city" : "WAYNE", "loc" : [ -70.0712, 44.349283 ], "pop" : 546, "state" : "ME" } +{ "_id" : "04285", "city" : "WELD", "loc" : [ -70.42489999999999, 44.701624 ], "pop" : 430, "state" : "ME" } +{ "_id" : "04289", "city" : "WEST PARIS", "loc" : [ -70.573167, 44.32527 ], "pop" : 2149, "state" : "ME" } +{ "_id" : "04290", "city" : "PERU", "loc" : [ -70.443459, 44.494408 ], "pop" : 1541, "state" : "ME" } +{ "_id" : "04291", "city" : "WEST POLAND", "loc" : [ -70.450166, 44.047167 ], "pop" : 733, "state" : "ME" } +{ "_id" : "04292", "city" : "WEST SUMNER", "loc" : [ -70.43231400000001, 44.372804 ], "pop" : 761, "state" : "ME" } +{ "_id" : "04294", "city" : "WILTON", "loc" : [ -70.296064, 44.59107 ], "pop" : 227, "state" : "ME" } +{ "_id" : "04330", "city" : "AUGUSTA", "loc" : [ -69.766548, 44.323228 ], "pop" : 25195, "state" : "ME" } +{ "_id" : "04341", "city" : "COOPERS MILLS", "loc" : [ -69.507672, 44.258823 ], "pop" : 1082, "state" : "ME" } +{ "_id" : "04342", "city" : "DRESDEN", "loc" : [ -69.745726, 44.078507 ], "pop" : 1336, "state" : "ME" } +{ "_id" : "04344", "city" : "FARMINGDALE", "loc" : [ -69.791313, 44.25233 ], "pop" : 2917, "state" : "ME" } +{ "_id" : "04345", "city" : "GARDINER", "loc" : [ -69.785774, 44.207029 ], "pop" : 8387, "state" : "ME" } +{ "_id" : "04346", "city" : "RANDOLPH", "loc" : [ -69.774918, 44.228704 ], "pop" : 6619, "state" : "ME" } +{ "_id" : "04347", "city" : "HALLOWELL", "loc" : [ -69.80573800000001, 44.286414 ], "pop" : 2613, "state" : "ME" } +{ "_id" : "04348", "city" : "JEFFERSON", "loc" : [ -69.483895, 44.189419 ], "pop" : 1488, "state" : "ME" } +{ "_id" : "04349", "city" : "KENTS HILL", "loc" : [ -70.074822, 44.438259 ], "pop" : 755, "state" : "ME" } +{ "_id" : "04350", "city" : "LITCHFIELD", "loc" : [ -69.958071, 44.163437 ], "pop" : 2354, "state" : "ME" } +{ "_id" : "04351", "city" : "MANCHESTER", "loc" : [ -69.884657, 44.308375 ], "pop" : 603, "state" : "ME" } +{ "_id" : "04352", "city" : "MOUNT VERNON", "loc" : [ -69.990336, 44.499342 ], "pop" : 1396, "state" : "ME" } +{ "_id" : "04353", "city" : "NORTH WHITEFIELD", "loc" : [ -69.602164, 44.217844 ], "pop" : 1931, "state" : "ME" } +{ "_id" : "04354", "city" : "PALERMO", "loc" : [ -69.43337, 44.384282 ], "pop" : 752, "state" : "ME" } +{ "_id" : "04355", "city" : "READFIELD", "loc" : [ -69.95063399999999, 44.403221 ], "pop" : 1725, "state" : "ME" } +{ "_id" : "04357", "city" : "RICHMOND", "loc" : [ -69.821077, 44.104213 ], "pop" : 3072, "state" : "ME" } +{ "_id" : "04358", "city" : "SOUTH CHINA", "loc" : [ -69.58036, 44.395334 ], "pop" : 182, "state" : "ME" } +{ "_id" : "04361", "city" : "WEEKS MILLS", "loc" : [ -69.541738, 44.407543 ], "pop" : 2942, "state" : "ME" } +{ "_id" : "04363", "city" : "WINDSOR", "loc" : [ -69.58058699999999, 44.300878 ], "pop" : 1618, "state" : "ME" } +{ "_id" : "04364", "city" : "WINTHROP", "loc" : [ -69.973128, 44.314031 ], "pop" : 7929, "state" : "ME" } +{ "_id" : "04401", "city" : "BANGOR", "loc" : [ -68.791839, 44.824199 ], "pop" : 40434, "state" : "ME" } +{ "_id" : "04406", "city" : "ABBOT VILLAGE", "loc" : [ -69.52513999999999, 45.279838 ], "pop" : 1193, "state" : "ME" } +{ "_id" : "04408", "city" : "AURORA", "loc" : [ -68.295929, 44.886113 ], "pop" : 141, "state" : "ME" } +{ "_id" : "04410", "city" : "BRADFORD", "loc" : [ -68.923491, 45.08552 ], "pop" : 1103, "state" : "ME" } +{ "_id" : "04411", "city" : "BRADLEY", "loc" : [ -68.626328, 44.901454 ], "pop" : 1136, "state" : "ME" } +{ "_id" : "04412", "city" : "BREWER", "loc" : [ -68.753896, 44.787433 ], "pop" : 9021, "state" : "ME" } +{ "_id" : "04413", "city" : "BROOKTON", "loc" : [ -67.70782800000001, 45.5686 ], "pop" : 236, "state" : "ME" } +{ "_id" : "04414", "city" : "BROWNVILLE", "loc" : [ -69.042331, 45.341229 ], "pop" : 1426, "state" : "ME" } +{ "_id" : "04416", "city" : "BUCKSPORT", "loc" : [ -68.77682299999999, 44.601546 ], "pop" : 5340, "state" : "ME" } +{ "_id" : "04417", "city" : "BURLINGTON", "loc" : [ -68.442701, 45.218438 ], "pop" : 643, "state" : "ME" } +{ "_id" : "04418", "city" : "CARDVILLE", "loc" : [ -68.60327700000001, 45.077599 ], "pop" : 1309, "state" : "ME" } +{ "_id" : "04419", "city" : "CARMEL", "loc" : [ -68.99415, 44.805315 ], "pop" : 3328, "state" : "ME" } +{ "_id" : "04422", "city" : "CHARLESTON", "loc" : [ -69.086856, 45.067017 ], "pop" : 1819, "state" : "ME" } +{ "_id" : "04423", "city" : "COSTIGAN", "loc" : [ -68.61296900000001, 44.975336 ], "pop" : 1895, "state" : "ME" } +{ "_id" : "04424", "city" : "DANFORTH", "loc" : [ -67.86877800000001, 45.668654 ], "pop" : 965, "state" : "ME" } +{ "_id" : "04426", "city" : "DOVER FOXCROFT", "loc" : [ -69.204472, 45.18774 ], "pop" : 5924, "state" : "ME" } +{ "_id" : "04427", "city" : "EAST CORINTH", "loc" : [ -69.008532, 44.983655 ], "pop" : 2177, "state" : "ME" } +{ "_id" : "04428", "city" : "EAST EDDINGTON", "loc" : [ -68.61883, 44.820642 ], "pop" : 2263, "state" : "ME" } +{ "_id" : "04429", "city" : "EAST HOLDEN", "loc" : [ -68.648307, 44.742209 ], "pop" : 4472, "state" : "ME" } +{ "_id" : "04430", "city" : "EAST MILLINOCKET", "loc" : [ -68.572822, 45.629967 ], "pop" : 2198, "state" : "ME" } +{ "_id" : "04431", "city" : "EAST ORLAND", "loc" : [ -68.70174, 44.57249 ], "pop" : 1281, "state" : "ME" } +{ "_id" : "04433", "city" : "ENFIELD", "loc" : [ -68.605802, 45.266477 ], "pop" : 1483, "state" : "ME" } +{ "_id" : "04434", "city" : "ETNA", "loc" : [ -69.13222500000001, 44.793232 ], "pop" : 966, "state" : "ME" } +{ "_id" : "04435", "city" : "EXETER", "loc" : [ -69.107934, 44.967927 ], "pop" : 561, "state" : "ME" } +{ "_id" : "04438", "city" : "FRANKFORT", "loc" : [ -68.933981, 44.59794 ], "pop" : 1141, "state" : "ME" } +{ "_id" : "04441", "city" : "GREENVILLE", "loc" : [ -69.58437600000001, 45.471566 ], "pop" : 2054, "state" : "ME" } +{ "_id" : "04442", "city" : "GREENVILLE JUNCT", "loc" : [ -69.63752599999999, 45.488394 ], "pop" : 99, "state" : "ME" } +{ "_id" : "04443", "city" : "GUILFORD", "loc" : [ -69.397491, 45.173455 ], "pop" : 2833, "state" : "ME" } +{ "_id" : "04444", "city" : "HAMPDEN", "loc" : [ -68.87305000000001, 44.741073 ], "pop" : 6756, "state" : "ME" } +{ "_id" : "04446", "city" : "HAYNESVILLE", "loc" : [ -67.98858, 45.837991 ], "pop" : 244, "state" : "ME" } +{ "_id" : "04448", "city" : "SEBOEIS", "loc" : [ -68.669252, 45.247813 ], "pop" : 1628, "state" : "ME" } +{ "_id" : "04449", "city" : "HUDSON", "loc" : [ -68.88783100000001, 44.991415 ], "pop" : 1048, "state" : "ME" } +{ "_id" : "04450", "city" : "KENDUSKEAG", "loc" : [ -68.934179, 44.918251 ], "pop" : 1234, "state" : "ME" } +{ "_id" : "04451", "city" : "KINGMAN", "loc" : [ -68.23662, 45.598433 ], "pop" : 378, "state" : "ME" } +{ "_id" : "04453", "city" : "LAGRANGE", "loc" : [ -68.83448, 45.178918 ], "pop" : 707, "state" : "ME" } +{ "_id" : "04455", "city" : "LEE", "loc" : [ -68.290885, 45.363504 ], "pop" : 832, "state" : "ME" } +{ "_id" : "04456", "city" : "LEVANT", "loc" : [ -68.98367, 44.884279 ], "pop" : 1627, "state" : "ME" } +{ "_id" : "04457", "city" : "LINCOLN", "loc" : [ -68.507693, 45.350832 ], "pop" : 4715, "state" : "ME" } +{ "_id" : "04458", "city" : "LINCOLN CENTER", "loc" : [ -68.457065, 45.431731 ], "pop" : 1556, "state" : "ME" } +{ "_id" : "04459", "city" : "MATTAWAMKEAG", "loc" : [ -68.35195, 45.526387 ], "pop" : 841, "state" : "ME" } +{ "_id" : "04460", "city" : "MEDWAY", "loc" : [ -68.52270900000001, 45.60704 ], "pop" : 1986, "state" : "ME" } +{ "_id" : "04461", "city" : "MILFORD", "loc" : [ -68.629597, 44.939263 ], "pop" : 1732, "state" : "ME" } +{ "_id" : "04462", "city" : "MILLINOCKET", "loc" : [ -68.710117, 45.659563 ], "pop" : 7265, "state" : "ME" } +{ "_id" : "04463", "city" : "DERBY", "loc" : [ -68.977098, 45.250697 ], "pop" : 3091, "state" : "ME" } +{ "_id" : "04464", "city" : "MONSON", "loc" : [ -69.48798600000001, 45.298088 ], "pop" : 263, "state" : "ME" } +{ "_id" : "04468", "city" : "OLD TOWN", "loc" : [ -68.67496, 44.943044 ], "pop" : 9290, "state" : "ME" } +{ "_id" : "04471", "city" : "NORTH AMITY", "loc" : [ -67.83774099999999, 45.805639 ], "pop" : 138, "state" : "ME" } +{ "_id" : "04472", "city" : "ORLAND", "loc" : [ -68.731312, 44.545818 ], "pop" : 524, "state" : "ME" } +{ "_id" : "04473", "city" : "ORONO", "loc" : [ -68.675466, 44.892472 ], "pop" : 10484, "state" : "ME" } +{ "_id" : "04474", "city" : "ORRINGTON", "loc" : [ -68.78759700000001, 44.726347 ], "pop" : 3309, "state" : "ME" } +{ "_id" : "04475", "city" : "PASSADUMKEAG", "loc" : [ -68.604328, 45.183687 ], "pop" : 428, "state" : "ME" } +{ "_id" : "04476", "city" : "PENOBSCOT", "loc" : [ -68.757409, 44.434371 ], "pop" : 2290, "state" : "ME" } +{ "_id" : "04478", "city" : "ROCKWOOD", "loc" : [ -69.822442, 45.659329 ], "pop" : 367, "state" : "ME" } +{ "_id" : "04479", "city" : "SANGERVILLE", "loc" : [ -69.321772, 45.140571 ], "pop" : 984, "state" : "ME" } +{ "_id" : "04487", "city" : "SPRINGFIELD", "loc" : [ -68.11075599999999, 45.42638 ], "pop" : 985, "state" : "ME" } +{ "_id" : "04488", "city" : "STETSON", "loc" : [ -69.106877, 44.884337 ], "pop" : 738, "state" : "ME" } +{ "_id" : "04490", "city" : "TOPSFIELD", "loc" : [ -67.747253, 45.430403 ], "pop" : 274, "state" : "ME" } +{ "_id" : "04491", "city" : "VANCEBORO", "loc" : [ -67.463419, 45.558761 ], "pop" : 217, "state" : "ME" } +{ "_id" : "04492", "city" : "WAITE", "loc" : [ -67.64281200000001, 45.357741 ], "pop" : 233, "state" : "ME" } +{ "_id" : "04495", "city" : "WINN", "loc" : [ -68.357465, 45.456786 ], "pop" : 479, "state" : "ME" } +{ "_id" : "04496", "city" : "WINTERPORT", "loc" : [ -68.886174, 44.655247 ], "pop" : 3175, "state" : "ME" } +{ "_id" : "04497", "city" : "WYTOPITLOCK", "loc" : [ -68.105541, 45.664476 ], "pop" : 384, "state" : "ME" } +{ "_id" : "04530", "city" : "BATH", "loc" : [ -69.826565, 43.906155 ], "pop" : 12628, "state" : "ME" } +{ "_id" : "04537", "city" : "BOOTHBAY", "loc" : [ -69.62732200000001, 43.894497 ], "pop" : 1701, "state" : "ME" } +{ "_id" : "04538", "city" : "CAPITOL ISLAND", "loc" : [ -69.61844000000001, 43.854559 ], "pop" : 2800, "state" : "ME" } +{ "_id" : "04539", "city" : "BRISTOL", "loc" : [ -69.495367, 43.951864 ], "pop" : 1220, "state" : "ME" } +{ "_id" : "04541", "city" : "CHAMBERLAIN", "loc" : [ -69.49861799999999, 43.884154 ], "pop" : 482, "state" : "ME" } +{ "_id" : "04543", "city" : "DAMARISCOTTA", "loc" : [ -69.504237, 44.029313 ], "pop" : 1217, "state" : "ME" } +{ "_id" : "04544", "city" : "EAST BOOTHBAY", "loc" : [ -69.593903, 43.826241 ], "pop" : 156, "state" : "ME" } +{ "_id" : "04547", "city" : "FRIENDSHIP", "loc" : [ -69.29160400000001, 44.006741 ], "pop" : 2085, "state" : "ME" } +{ "_id" : "04548", "city" : "MAC MAHAN", "loc" : [ -69.747424, 43.819649 ], "pop" : 936, "state" : "ME" } +{ "_id" : "04551", "city" : "MEDOMAK", "loc" : [ -69.43066399999999, 44.006292 ], "pop" : 540, "state" : "ME" } +{ "_id" : "04553", "city" : "NEWCASTLE", "loc" : [ -69.533113, 44.049866 ], "pop" : 1551, "state" : "ME" } +{ "_id" : "04554", "city" : "NEW HARBOR", "loc" : [ -69.50793400000001, 43.860541 ], "pop" : 362, "state" : "ME" } +{ "_id" : "04555", "city" : "NOBLEBORO", "loc" : [ -69.482786, 44.094301 ], "pop" : 1455, "state" : "ME" } +{ "_id" : "04556", "city" : "EDGECOMB", "loc" : [ -69.619742, 43.979179 ], "pop" : 1238, "state" : "ME" } +{ "_id" : "04558", "city" : "PEMAQUID", "loc" : [ -69.528919, 43.892389 ], "pop" : 103, "state" : "ME" } +{ "_id" : "04562", "city" : "PHIPPSBURG", "loc" : [ -69.814982, 43.768816 ], "pop" : 426, "state" : "ME" } +{ "_id" : "04563", "city" : "CUSHING", "loc" : [ -69.27206099999999, 43.986741 ], "pop" : 12, "state" : "ME" } +{ "_id" : "04564", "city" : "ROUND POND", "loc" : [ -69.46617000000001, 43.924983 ], "pop" : 159, "state" : "ME" } +{ "_id" : "04565", "city" : "SEBASCO ESTATES", "loc" : [ -69.857557, 43.769342 ], "pop" : 479, "state" : "ME" } +{ "_id" : "04567", "city" : "SMALL POINT", "loc" : [ -69.84116299999999, 43.731724 ], "pop" : 66, "state" : "ME" } +{ "_id" : "04568", "city" : "SOUTH BRISTOL", "loc" : [ -69.561367, 43.867714 ], "pop" : 476, "state" : "ME" } +{ "_id" : "04570", "city" : "SQUIRREL ISLAND", "loc" : [ -69.63097399999999, 43.809031 ], "pop" : 3, "state" : "ME" } +{ "_id" : "04571", "city" : "TREVETT", "loc" : [ -69.674601, 43.893508 ], "pop" : 338, "state" : "ME" } +{ "_id" : "04572", "city" : "WALDOBORO", "loc" : [ -69.374537, 44.104601 ], "pop" : 4702, "state" : "ME" } +{ "_id" : "04573", "city" : "WALPOLE", "loc" : [ -69.55165, 43.946235 ], "pop" : 349, "state" : "ME" } +{ "_id" : "04574", "city" : "WASHINGTON", "loc" : [ -69.384237, 44.269281 ], "pop" : 1261, "state" : "ME" } From a9ae1251659d56566815b97a08bc66b6ff8e8e61 Mon Sep 17 00:00:00 2001 From: mikr Date: Wed, 18 Aug 2021 12:35:08 +0200 Subject: [PATCH 55/82] JAVA-5950 Reduce size of core-java-os. --- .../grep/GrepWithUnix4JIntegrationTest.java | 12 ++++++------ .../core-java-os/src/test/resources/dictionary.in | 13 +++++++++++++ 2 files changed, 19 insertions(+), 6 deletions(-) create mode 100644 core-java-modules/core-java-os/src/test/resources/dictionary.in diff --git a/core-java-modules/core-java-os/src/test/java/com/baeldung/grep/GrepWithUnix4JIntegrationTest.java b/core-java-modules/core-java-os/src/test/java/com/baeldung/grep/GrepWithUnix4JIntegrationTest.java index 3ea7acf620..5c9da0cc9e 100644 --- a/core-java-modules/core-java-os/src/test/java/com/baeldung/grep/GrepWithUnix4JIntegrationTest.java +++ b/core-java-modules/core-java-os/src/test/java/com/baeldung/grep/GrepWithUnix4JIntegrationTest.java @@ -25,9 +25,9 @@ public class GrepWithUnix4JIntegrationTest { @Test public void whenGrepWithSimpleString_thenCorrect() { - int expectedLineCount = 4; + int expectedLineCount = 5; - // grep "NINETEEN" dictionary.txt + // grep "NINETEEN" dictionary.in List lines = Unix4j.grep("NINETEEN", fileToGrep).toLineList(); assertEquals(expectedLineCount, lines.size()); @@ -35,9 +35,9 @@ public class GrepWithUnix4JIntegrationTest { @Test public void whenInverseGrepWithSimpleString_thenCorrect() { - int expectedLineCount = 178687; + int expectedLineCount = 8; - // grep -v "NINETEEN" dictionary.txt + // grep -v "NINETEEN" dictionary.in List lines = grep(Options.v, "NINETEEN", fileToGrep).toLineList(); assertEquals(expectedLineCount, lines.size()); @@ -45,9 +45,9 @@ public class GrepWithUnix4JIntegrationTest { @Test public void whenGrepWithRegex_thenCorrect() { - int expectedLineCount = 151; + int expectedLineCount = 5; - // grep -c ".*?NINE.*?" dictionary.txt + // grep -c ".*?NINE.*?" dictionary.in String patternCount = grep(Options.c, ".*?NINE.*?", fileToGrep).cut(fields, ":", 1).toStringResult(); assertEquals(expectedLineCount, Integer.parseInt(patternCount)); diff --git a/core-java-modules/core-java-os/src/test/resources/dictionary.in b/core-java-modules/core-java-os/src/test/resources/dictionary.in new file mode 100644 index 0000000000..9e6c74ecdb --- /dev/null +++ b/core-java-modules/core-java-os/src/test/resources/dictionary.in @@ -0,0 +1,13 @@ +EIGHTTEEN +EIGHTTEENS +EIGHTTEENTH +EIGHTTEENTHS +NINETEEN +NINETEENS +NINETEENTH +NINETEENTHS +TWENTY +TWENTHIES +TWENTHIETH +TWENTHIETHS +TWENTYNINETEEN \ No newline at end of file From 8d391d6d05531ff386895de234f480413ee16fea Mon Sep 17 00:00:00 2001 From: Haroon Khan Date: Wed, 18 Aug 2021 13:02:59 +0100 Subject: [PATCH 56/82] [JAVA-5956] Replace sample jars with smaller libs --- .../gradle-dependency-management/build.gradle | 20 ++++++++++-------- .../libs/sampleOne.jar | Bin 0 -> 27138 bytes .../libs/sampleTwo.jar | Bin 0 -> 27138 bytes 3 files changed, 11 insertions(+), 9 deletions(-) create mode 100644 gradle/gradle-dependency-management/libs/sampleOne.jar create mode 100644 gradle/gradle-dependency-management/libs/sampleTwo.jar diff --git a/gradle/gradle-dependency-management/build.gradle b/gradle/gradle-dependency-management/build.gradle index 88ed84f4b1..787b23c382 100644 --- a/gradle/gradle-dependency-management/build.gradle +++ b/gradle/gradle-dependency-management/build.gradle @@ -3,6 +3,11 @@ plugins { id 'org.springframework.boot' version '2.3.4.RELEASE' } +ext { + springBootVersion = '2.3.4.RELEASE' + lombokVersion = '1.18.14' +} + group = 'com.gradle' version = '1.0.0' sourceCompatibility = '14' @@ -12,19 +17,16 @@ repositories { } dependencies { - implementation 'org.springframework.boot:spring-boot-starter:2.3.4.RELEASE' + implementation "org.springframework.boot:spring-boot-starter:${springBootVersion}" - testImplementation 'org.springframework.boot:spring-boot-starter-test:2.3.4.RELEASE' - - compileOnly 'org.projectlombok:lombok:1.18.14' - - testCompileOnly 'org.projectlombok:lombok:1.18.14' + compileOnly "org.projectlombok:lombok:${lombokVersion}" runtimeOnly files('libs/sampleOne.jar', 'libs/sampleTwo.jar') - - runtimeOnly fileTree('libs') { include '*.jar' } + runtimeOnly fileTree("libs") { include "*.jar" } -// implementation gradleApi() + testImplementation "org.springframework.boot:spring-boot-starter-test:${springBootVersion}" + + testCompileOnly "org.projectlombok:lombok:${lombokVersion}" } test { diff --git a/gradle/gradle-dependency-management/libs/sampleOne.jar b/gradle/gradle-dependency-management/libs/sampleOne.jar new file mode 100644 index 0000000000000000000000000000000000000000..b8f564975ef67b3edb631a2426f7c3ced2594386 GIT binary patch literal 27138 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 literal 0 HcmV?d00001 diff --git a/gradle/gradle-dependency-management/libs/sampleTwo.jar b/gradle/gradle-dependency-management/libs/sampleTwo.jar new file mode 100644 index 0000000000000000000000000000000000000000..b8f564975ef67b3edb631a2426f7c3ced2594386 GIT binary patch literal 27138 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 literal 0 HcmV?d00001 From b39eae32f8edbe5bded8e73f6a8b6b5dd4e1af2c Mon Sep 17 00:00:00 2001 From: Haroon Khan Date: Wed, 18 Aug 2021 13:09:46 +0100 Subject: [PATCH 57/82] [JAVA-5956] Add missing Gradle Wrapper files --- .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59536 bytes gradle/gradle-dependency-management/gradlew | 234 ++++++++++++++++++ .../gradle-dependency-management/gradlew.bat | 89 +++++++ 3 files changed, 323 insertions(+) create mode 100644 gradle/gradle-dependency-management/gradle/wrapper/gradle-wrapper.jar create mode 100755 gradle/gradle-dependency-management/gradlew create mode 100644 gradle/gradle-dependency-management/gradlew.bat diff --git a/gradle/gradle-dependency-management/gradle/wrapper/gradle-wrapper.jar b/gradle/gradle-dependency-management/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..7454180f2ae8848c63b8b4dea2cb829da983f2fa GIT binary patch literal 59536 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 QuEJmfE|#`Dqx|px0L@K;Y5)KL literal 0 HcmV?d00001 diff --git a/gradle/gradle-dependency-management/gradlew b/gradle/gradle-dependency-management/gradlew new file mode 100755 index 0000000000..1b6c787337 --- /dev/null +++ b/gradle/gradle-dependency-management/gradlew @@ -0,0 +1,234 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit + +APP_NAME="Gradle" +APP_BASE_NAME=${0##*/} + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/gradle/gradle-dependency-management/gradlew.bat b/gradle/gradle-dependency-management/gradlew.bat new file mode 100644 index 0000000000..ac1b06f938 --- /dev/null +++ b/gradle/gradle-dependency-management/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega From 150623294540e24be314cdf3b8e097a4fc9e039a Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Thu, 19 Aug 2021 11:13:36 +0530 Subject: [PATCH 58/82] JAVA-6216 Updating frontend maven plugin and removing manually (#11143) specifying maven version --- spring-security-modules/spring-security-web-react/pom.xml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/spring-security-modules/spring-security-web-react/pom.xml b/spring-security-modules/spring-security-web-react/pom.xml index e24d657409..d8b40de25d 100644 --- a/spring-security-modules/spring-security-web-react/pom.xml +++ b/spring-security-modules/spring-security-web-react/pom.xml @@ -114,7 +114,6 @@ ${frontend-maven-plugin.version} ${node.version} - ${npm.version} src/main/webapp/WEB-INF/view/react @@ -207,7 +206,7 @@ 19.0 2.7 - 1.6 + 1.12.0 9.4.11.v20180605 v8.11.3 From 6ecf7ec207f235319d9f83f3437b30178234df57 Mon Sep 17 00:00:00 2001 From: kwoyke Date: Thu, 19 Aug 2021 16:47:32 +0200 Subject: [PATCH 59/82] JAVA-5954: Strip out unnecceary test data from 10mb file (#11145) --- ...urceWithConcurrentAxisIntegrationTest.java | 2 +- .../sirix/src/test/resources/xml/regions.xml | 8819 +++++++++++++++++ 2 files changed, 8820 insertions(+), 1 deletion(-) create mode 100644 persistence-modules/sirix/src/test/resources/xml/regions.xml diff --git a/persistence-modules/sirix/src/test/java/io/sirix/tutorial/xml/QueryXmlResourceWithConcurrentAxisIntegrationTest.java b/persistence-modules/sirix/src/test/java/io/sirix/tutorial/xml/QueryXmlResourceWithConcurrentAxisIntegrationTest.java index ab892a7fec..7833e2ed1a 100644 --- a/persistence-modules/sirix/src/test/java/io/sirix/tutorial/xml/QueryXmlResourceWithConcurrentAxisIntegrationTest.java +++ b/persistence-modules/sirix/src/test/java/io/sirix/tutorial/xml/QueryXmlResourceWithConcurrentAxisIntegrationTest.java @@ -50,7 +50,7 @@ public class QueryXmlResourceWithConcurrentAxisIntegrationTest { @Test public void createDatabaseAndXMarkResourceAndCheckQuery() throws IOException { - final var pathToXmlFile = XML_DIRECTORY.resolve("10mb.xml"); + final var pathToXmlFile = XML_DIRECTORY.resolve("regions.xml"); // Create an empty XML database. Databases.createXmlDatabase(new DatabaseConfiguration(DATABASE_PATH)); diff --git a/persistence-modules/sirix/src/test/resources/xml/regions.xml b/persistence-modules/sirix/src/test/resources/xml/regions.xml new file mode 100644 index 0000000000..9b1acaf280 --- /dev/null +++ b/persistence-modules/sirix/src/test/resources/xml/regions.xml @@ -0,0 +1,8819 @@ + + + + + + + United States + 1 + duteous nine eighteen + Creditcard + + + + + page rous lady idle authority capt professes stabs monster petition heave humbly removes + rescue runs shady peace most piteous worser oak assembly holes patience but malice + whoreson mirrors master tenants smocks yielded + officer embrace such fears distinction attires + + + + + shepherd noble supposed dotage humble servilius bitch theirs venus dismal wounds gum + merely raise red breaks earth god folds closet captain dying reek + + + + + Will ship internationally, See description for charges + + + + + + + + Libero Rive mailto:Rive@hitachi.com + Benedikte Glew mailto:Glew@sds.no + 07/05/2000 + + virgin preventions half logotype weapons granted factious already carved fretted impress + pestilent girdles deserts flood george nobility reprieve discomfort + sinful conceiv corn preventions greatly suit observe sinews enforcement armed gold + gazing set almost catesby turned servilius cook doublet preventions shrunk smooth great + choice enemy disguis tender might deceit ros dreadful stabbing fold unjustly ruffian life + hamlet containing leaves + + + + + + Moldova, Republic Of + 1 + condemn + Money order, Creditcard, Cash + + + gold promotions despair flow tempest pitch concluded dian wenches musing author debase get bourn + openly gonzago determine conceit parcel continue trophies bade cries merrily signet sportive + valor planetary hastings empire vow merciless shoulders sewing player experience hereford dorset + sue horn humorous fiend intellect venture invisible fathers lucilius add jests villains ballad + greek feelingly doubt circumstances hearty britaines trojans tune worship canst france pay + progeny wisdom stir mov impious promis clothes hangman trebonius choose men fits preparation + + + Will ship only within country, Buyer pays fixed shipping charges, See description for + charges + + + + + + + + + + + + + Javam Suwanda mailto:Suwanda@gmu.edu + Mehrdad Glew mailto:Glew@cohera.com + 05/28/2001 + + back greg flay across sickness peter enough royal herb embrace piteous die servilius avoid + laying chance dungeons pleasant thyself fellow purse steward heaven ambassador terrible + doubtfully + milk sky clouds unbraced put sacrifices seas childish longer flout heavy pitch + rosalind orderly music delivery appease confound brook balance bravery bench bearing + compounds attentive learned senses concave boughs discourse punishment physic further + reading chair discords instruments bankrupts countrymen horrid royalties necessity tend cap + curiously waken therewithal horse gather uncleanliness chief traffic where nuptial either + remember peerless doing preparation rejoice gallants shepherd barbarian ford + ruin coxcomb excess childish carrions imaginary wooden preventions bounteous + sounded consider sayings fishified fine prime may + ponderous doubtful rite dotage discipline choughs mew here vill discontent + manage beatrice straight muse shame prays maecenas any conveyance fingers whereupon child + case season presently victory women beating deprive almost wed dreams + slew + + + + + + United States + 1 + earnestly subtle spotted attend + Money order, Cash + + + + + tormenting naturally sanctuary riddle exile coming awake senseless chance famous + albans + service cricket limb from clouds amongst shore penker defend quantity dumb churlish + uncover swung eros figur sulphur sky birth stare negligent unction shield instance + ambition gate injury fort put infants find slavish hugh see afterwards slanders chides + eyes minds alb loved endure combating voyage never maintained peril rivall suddenly + finds studies weary truth indulgence anatomy assisted imminent may excepted yonder aches + regal battle friar prophetess spirits delays turning cassio finding + unpractis steel sweets promises credulity err nym complete star greatly mope sorry + experience virtues been offending bed drives faction learnt hurl eleven huge wont pretty + piece requite protectorship stock hours cruelly league winged tract element + sails course placed fouler four plac joint + words blessing fortified loving forfeit doctor valiant crying wife county planet + charge haughty precious alexander longboat bells lewd kingdoms knife giver frantic raz + commend sit sovereignty engaged perceive its art alliance forge bestow perforce complete + roof fie confident raging possible cassio teen crave park reign lords sounded our + requite fourth confidence high flaw surfeiter challenger cried main recreation + answer + + + + + gladly mows our craving preventions spurr edmund drunk how faction quickly + bolingbroke painfully + valorous line clasp cheek patchery encompassed honest after auspicious home engaged + prompt mortimer bird dread jephthah prithee unfold deeds fifty goose either herald + temperance coctus took sought fail each ado checking funeral thinks linger advantage bag + ridiculous along accomplishment flower glittering school disguis portia beloved crown + sheets garish rather forestall vaults doublet embassy ecstasy crimson + + + + + + + will little haunt reasons ungenitur exquisite mote penalty respite gently skins + bora parting desdemona longing third throng character hat were mounts true + rounds house benefit field nearest lucrece tidings + fought logotype eaten commanding treason censur ripe praises windsor + temperate jealous made sleeve scorn throats fits uncape tended science + preventions preventions high pipes reprieves sold marriage sampson + safety distrust witch christianlike plague doubling visited with bleed offenders + catching attendants cars livery stand denay cimber paper + admittance tread character + battlements seen dun irish throw redeem afflicts suspicion + + + + + traduc barks twenty secure pursuit believing necessities longs mental lack + further observancy uncleanly understanding vault athens lucius sleeps nor safety + evidence repay whensoever senses proudest restraint love mouths slaves water + athenian willingly hot grieves delphos pavilion sword indeed lepidus taking + disguised proffer salt before educational streets things osw rey stern lap + studies finger doomsday pots bounty famous manhood observe hopes unless languish + transformed nourish breeds north + + + + + sequent mountain fairies lepidus shoot dangers after unworthy odds suspicion + chains rosencrantz bags heed lawn diest unvirtuous supposed numbers + game roman greece leading wrestler sky slanderous noblemen beast + shivers desolate norfolk george fret beggar sheath + his valour burnt bedfellow protector father orchard enemies prison charge + cloud boast heads mild scene true metals confidence hundred those guiltless + mutiny edge lik complaints dion + + + + + device brings custom chapless spar sold courtesies beside sex dowry casca goods + priam blasphemy friendly octavia rot frantic brain inward + missing conspiracy tents scab inundation caesar officer prize execution beckon + rue physicians some crickets lend larron interruption flesh whispering perjur + kills insanie unfortunate conjuration first choler saucy lack guard blank was + + + + + + + Will ship only within country, See description for charges + + + + + + + + United States + 1 + poisons + Money order, Creditcard, Personal Check, Cash + + + jack + + + Will ship internationally, Buyer pays fixed shipping charges, See description for charges + + + + + Mitsuyuki Toussaint mailto:Toussaint@uiuc.edu + Cort Penn mailto:Penn@uic.edu + 07/17/2000 + + gentleman observe silver eagle battles bastardy shames brook mounted officers dean shrunk + lowness dew sandy prologue armies suspicion eighty advance thankfulness albany ended + experience halt doubted wert kingdom fiend directed pair perhaps happy lucky odds rend + condemn + cannot dispos perfect silence + + + + + + United States + 1 + thought inland different + Creditcard, Personal Check, Cash + + + dictynna later supper striving soil + + + Will ship only within country, See description for charges + + + + + Pierangelo Bokhari mailto:Bokhari@sleepycat.com + Spencer Malabarba mailto:Malabarba@solidtech.com + 06/15/2001 + + scourge ladyship view presume loggets feed blows plantain joint afoot yields erection sith + stuck dagger balthasar fathers datchet foot thankless lear cause cheerfully instance tarried + because cough devout testimony tarquin cousin reported porter beastly jade bark sex slack + lear devil devoured amiable mason moss shoulders labour meanest feign eggs encount forbid + enobarbus halters nam emilia fiends bearing food inheritor wiser hedge functions + there capital greasy dark crush your sequest between devout thou strikes demand dost + reverent conference least told ado modena jealousy nunnery mistrust nightly worthy closes + tall proudly fierce receive nearness safer jacks shut dire mates wind unfortunate monsieur + parcels sauced extremities throat dog empty treasury etc detested stand taxations edges + mourner sue knavery unlook perseus diadem heartily peer tut compounded art reconcile + + + + + + Zimbabwe + 1 + approves + Personal Check, Cash + + + + + + + throws torments ropes contrive story slain advise lecher ardea relics keeping + treads buckingham defences lag neighbour ourself marshal disordered moderate + venus + + + + + rot hazards craft crowns unauthorized preventions spoken plainness patient smile + knowledge diseases fast change neighbour medicine sooth strange instead lid + happy tokens bridges supper without them bias denied bands unseal powder + + + + + yesternight moon pattern lived unsur brutish states wet prepar likelihood eagle + body walk borachio month writing left speed patents coach through protectorship + congruent confusion favours following populous garden henceforth shoots function + fourscore mangled favorably slain secretly vice distinguish bardolph content + hence boy worse bring usurers stew beard longed creep hid pursuivant beholders + senators son mercutio woo bestow trumpet excess muffler pick ugly felt causes + remove adding tear often rounds underbearing tree purer kibes endless women + benefit throw + claim firmness arrived sees wrestled multitude repent preventions + infamy reproof shalt hearted prais knave doubtless + deny + + merely grave voluble late loath digest horn slave hunger stronger amazed salt + killing ross cry dry tongue kiss yields auspicious quietness perpetual ways + began leg running unjust court mean returning brook creatures appointed paunches + henry sights west prunes flutes regiment seems bed + musicians slumber post friendship prevention abreast wouldst words + vexation builds unfelt holly walk inform moods deck bulk begin action school + nobles antique people unkennel stomach into petitions jack assail yongrey ages + betimes golden sink droop kernel hoppedance perfection weight whining safe + english rod other featur + betwixt orator across amiss mine guests guard yon willing remit longing + goneril visitation honey haply tell bargain holds detest erring pray hereby + their hope learned preventions prodigal disposition substance prick afterwards + seemeth key phrase offended illegitimate prostrate all others emboss down + suddenly coventry entreat music treble letting breaking thrifty + kissing threat asham dismantled hope + + + + + wert twice girl here miserable trick overcome unthrifty pillar othello + + + + + + + wolf entreat audaciously down + arm duellist league holiday cheek knot selves ionia impure prophet draw throwing solemn + yonder rightful foam worthless polack veronesa antony beget thereby carry untread hales + + + + + + + twain more kept shoot dispatch reported dotard holofernes din audrey + says waterdrops carrion tax prithee crowned troubled naked finds owe silent + recount crowned abus four door fragment pamper arthur thrive wound fouler + streets preventions obey vow bawds myrtle said infinite montague fierce sense + ride souls commended gainsay profession labour intents persuade alter villain + wore thunder congeal pawned alack customary deny faithful top office + + + + + spoken white obey quaint please neighbour office afternoon construe paradox + leapt shun brown weary congregation yield faulconbridge axe falling within + uncurable next cor full farewell dire tricks protest cut horatio brother speech + sleeping adultress pitch cave liv nurse drink state plants combating desired + requir rebellion afraid repented tree scald stopp wine advise undermine norfolk + vilely whet scars companions hanging foolish scene musty fruitful unburthen + teacher garments betimes sight now for oaths vouchsafe particulars globe laertes + afflictions rouse once news humanity buck destroy military lucius lap + considered forc mourning verona + waters triumphing officer hastily resign subject figure hay thwart + written signs gout bred distance period glove players change folly + going wat lost + + + + + + + place fighting emulation leading cave twice blind malefactor give frenzy sprightly + dislike invite forbids morn devour ambassador seldom speak tickling rejoice triumphant + ascanius forward capable disguise compare buys english shame vulcan farther generation + for hearts canst devils furrow promise lusty hatch privilege truly like serpent sing + woman warn rejoice sooth perceived repeat roaring broke england plac seem villains + garments therefore produce done hereford redemption princely smil fields plague hearts + precepts laboured gentleman joint borrow lay believe rogue silken break suffer desire + paper + main cressid person whate lily pilgrim flaying therefore meantime similes + base + dowry rotted curan press debtor alexandria sugar battle orbed embrac supremacy + answering + + cradle shoulder corpse canons domain night forsake yea satisfy between + senators browsing monsters ear players moreover sir hor shape suspicious + taffeta + banquet + + forbear unshown frail journey loves swearing proceeds detain eighteen petter stone + battle breathless kindness prophesy entomb over wishing conquer provoke his forehead + persuaded places needy balth others school feasted rivers tomb honor garland worser + wounding brook stoops brooch plucks level samp tent windsor rubs whereof beam signior + built suff heavy dull husbands roman favour urge spear gone wolf cheeks execute resolv + such horrid drives provide twice spoke trade friar taking pheasant sentenc scarf + corrections brothers charge spur ass agamemnon truepenny saves roots practis impatient + diest didest starv seeing beneath interpose gods home black forgot snuff dress dozen + napkins countess northumberland headlong needless angry pleading better joy + meagre + reap enquire crab wales died violent rear past liberty braggart armour infer + bankrupt winds teeth + case wore pouch crows cognition reports expedition free chief cressida + hearsed + loath monuments silent congregation soon farm doct ross susan ready empty + dedicate shilling whole soul foot beseech higher lifeless hay postmaster distress + disposition inherits marcus betters pitch betray beam corse player quality + ros conduct thersites greediness boast pilgrims startles contented belch hung thus + captain early blood par brook jul gain needs above ensign grapes revelling glean thank + seeing tenth succession lief wall bands enterprise flat preventions knave wine shield + prey key farewells religion fetch bells rage names valued exeunt soul albans ungently + advised serving ratcliff braggarts knowest desp sheep died repeat toy corrupted michael + help dunghill trembles pill reap office early secure desires hated garland carriage + impatient deserts feel challenger evil editions depart laur hereford richer prithee + lust shortly approve rey should spectacles fiery perfect worshipp foul quod yes remorse + young tyburn thrust attending spear shun doctor wild murd awak helpless ventidius tread + defeat teem durst accuse rhyme wonderful attaint dealing mortality + asleep murder throat attendants themselves spark skill pol see + conference sail text speed essence white + contrary terms girl paris commodity faded fall ugly honester smile + achiev however outrage proud pays spilling rancour reasons grieves camp bachelor + clock hearing feature can whom youth soldiers for time vere record penury herself + reasons merits villainous whereupon wrote penny mar preventions followed best eternity + bestow blots rocks barnardine torn cassio tailor fame forfeit triumphant conceived deem + cowardly merciful topgallant flint purgation whosoever ventidius befits forever bankrupt + choughs stains certain violated burgundy shadows possesseth men repent predominant burns + revelry swore prodigious next tyrant oath noses apart balth trade feasting field + importunity expect experience kingly stay babe hopes liege astonished suspicion + unmannerd alexander crown soil committed god stately incensed trance oracle slowness + fast princes damned corn grandsire change tender end fields slain palm softly samp shore + notion herod messengers horseman riggish quirks shut thence beware jewels + sland preventions + + + + + + + coupled weraday sells daughters pipes leontes pow maggot lays dishes display + + + + + durst liker weight ursula preventions diable commandment his fall observer + stroke scape given professes commons lordship clear operation practice pyrrhus + earnest broke devil posterity company text misbegotten oregon + + + + + cross augury saw arthur earnestly brow popilius metal secretly + purposes frailty shrift slack lieutenant hers stop clown amends owes + + + + + pomp pretty wildly wake expectation sacrament point marr painted seat fords + divided delicate mocking active bills filth pledge latin done statue moved + converse goot claw show edmundsbury torment tarquin pyrrhus vanities heathen + betray lordship forget enforce gods fills overcame burns leg overthrown + institutions adverse brought strives occasion event ready troyan shoulders + matters sinews liquid ashy gentlewomen authority assay hole selves living near + doting modest wiltshire mocker eton profess forgeries butt wade lawful + maccabaeus wert forced succeeding becomes wayward got thief obedience wretches + yoke run destroy hole frighting enemies permission vowed swinstead body oph + crave consorted requite forfeit speed possess peremptory fraughtage confin + + + + + + + + + + + + + United States + 1 + disguise engross hero restraint + Money order, Creditcard, Cash + + + laws prey egg + + + Will ship internationally, See description for charges + + + + + + + + + + + United States + 1 + renown stained entrails bone + Creditcard, Personal Check + + + + + + + prolong dotes vesture collatinus which conspirator crowns fellowship + indisposition opinion about action skins moe verse friar filthy divers fault + apparell worthiness supposition parchment restitution rings rages remains + + + + + lass paradoxes unmask desdemona weak sudden guil edg shame wisely + cheek every poison avoid gave punishment much anointed bloody noise traitor + carol shook here armado supply britaine digestion unresisted beer ding + figure made unwrung + stumble meanest read heat instance aboard nan stake shriek condemned nights + armed drinking instant scruple citizens scales sworn quintessence dismal other + fasting attends judge aspire putting repeal worldly wits weeding grounds bestrid + commission crave mess tarries sport view lame done self bolingbroke scald kills + derby approves blessings question hem ambitious pencil churlish + + + + + + + letter + count body hang lapwing cleomenes thrust mirror gently mock + allow index disguise evils should + + damsons + + + + + gild darts cupid morn banish success apprehend trail den eldest whatever + oblivion wars + shifted clay tire robbers guarded strives frozen plots stab states mark + parcels advertised utterly virtue flatter sleeping ope extemporal inherited beast + lucilius + speaker comfortable grant killed kindly discontenting breeding resting + + + + + + + bosom garden tott overcame dun lifted offer bail navy next + strongly scene scythe rhodes within quoth assembly did wench secrets + drunkard rises gossip eternal crown hie thou outward bouge murther + + + + + lucrece allow minute jumps sister lend smell find motley treasure + decline supposed puddle dinner + + + + + ten suited horns tenderness lessens promise guilt confess gentlewomen cornwall + transported learning steads false voke colour need division conjoin preventions + their apemantus pol plague ink incite doctrine sugar purity suddenly find lusts + sin near conquerors over pays thief whoso manent where despite not freetown + instigated moralize sequel noble music + + + + + massacre soundly aweary misfortune commended troy stomach christian piece fare + gate bar her pupil peep gives longest + + + + + emulate feast church ornaments madcap pales sometime tutor stern magician nine + george lightning singing pearl frederick creditors dart cousin beneath yourself + dishes expects pander near finely juno nell + + + + + + + Will ship only within country, Will ship internationally + + + + + + Micah Ishibashi mailto:Ishibashi@gte.com + Mansur Giegerich mailto:Giegerich@ab.ca + 04/06/1998 + + guilty lear chain depriv renascence filthy put seeing flower kindled minister forgive + husband vantage tyrrel diomed lies satisfaction gratulate untimely abominable confession + greet heaven + + + + Yasuharu Carrera mailto:Carrera@uni-muenster.de + Nate Cheriyan mailto:Cheriyan@cti.gr + 10/21/2001 + + evil contrive guilt big recourse follower therein fool could sickly whipt belief + control picked unless desirous crash fate divide hyperboles traitors bourn notes limited + passeth inflame + forerun monsieur barr damned tops poetry tent manners sextus savage medicine supremacy + fresh answers possession carried opposed burns asleep awkward stiffly fashion pent raised + certain dogberry brains precious seduced touching throw valiant fathers creatures hare + health frailty stumble henry patch outjest heartless axe lightly conrade + passing easily gap gay ravin beauty thaw yourself grace loud gear falstaff dearest prick + amen hope preventions speak strike use kisses desires spy hies potent idle begin call + body shroud tears dark misery satiety bare from newness can loveliness bereft fulvia + wooing earnest dismiss resemble fairy troyan business convenient front emperor + whoremaster breeding duty dance + venetian displeasure sow law foolish strongly grieve head presently painted + have + + loved sheep decay legions clock brought congregation honorable kerns necklace verge humbly + better distance slaves balls thyself foot passing comfort beds virtuously frets + holy dumbness loose sea lusty victory wounds holds nest bosoms lord swells scratch won + neighbour pedro octavia taught subjects synod grave fed unarm nicer one close territories + ply uncles doubtful till devis discover trick ships goneril heavens anger castles + lights spok low beggarly keeps mercy + + + + + + United States + 1 + irrevocable holding succeeding + Money order, Personal Check, Cash + + + + + + + looks perchance egypt vill advantage drawing outwardly unbuckle + stand better key enjoin + + + + + dissuade soldier obedient tokens churl trembles rot mistake roderigo shore knee + adder + + + + + jove whore affords succour call since warm wears angiers pleased functions tom + burnt pit painter refuse hatfield corruption faint bad shuns faulconbridge after + hail antic + tendance lain huswife remember laughter spread revenges accurs hearer + couched has labours requite wrongs report continue word griev sweep suspected + flight conditions refuse shifts home attire dropping misery goddess attired + printing walk tricks consider awake anything collatine basin preventions + instruments understand pick down take stock + + + + + + + overthrown attempt grudge durance following youth peril directly knaves seven approof + thereon rings credit strength sends messenger orlando youngest murder brainford coward + say bee bolingbroke reports liberty zed they airy question naught hastily falconers + seems grass entrance benedick fights submit eternal embassy society through + entertainment that nightly dove king far plutus pole fate ploughmen proceeding goddess + boast shore counsel rais boy watchmen decay conference calling steals fall clink mean + now alone fault tyrant phoebus contagion crept not commoners sequence mar thoughts money + silence boist besort henry mortality something caesar whate fine wrested + blemishes burns provok whom catastrophe poictiers soon graces march wild willingly walls + following applied satisfied expect lancaster measure jauncing uses thetis utterly + scruple self report towards madness touching constables chapel south rank vizarded + serves french yonder alb dramatis best mistrust paulina remedies prodigal gods proclaim + lewis preventions etc definement sorrow preparation question sullen receive perceive + fearfull engraven heed engag alms heavens base add eleanor fell were urg drops bright + anchor worth arrive courageous unmanly superfluous benedick there compounds charm + fumbles cashier his bowl leprosy pow amorous perceive follow murders midst above shoes + unfold rich viol here marquis safety pillar crush either blast please eager + petition followers troth comments dar afternoon heel pride calf conjure childish base + cinna guilty valiant returns attendant edward duty devis creatures mangled mistake + twigs swearing + shelter mouth camillo cost throne hum perpetual turned english say tents dearly lion + difference stern cure dejected hateful nowhere didst craves good plate gall round bait + disturb effect ambitious shalt want joyful bound shall travel mud + + + + + prepared throughout vulgar shamed robb bird hies silk plenteous tables + bravely determin memory subtilly clamorous crop counterfeited slander flatter revenge + any lords grape hath check march conference able asleep flood tongues enter saw cassius + aspiring throne these fashion change deck nothing health modern mechanical vainly injury + watch folly correction shedding jests compact paper shroud mortality head chill + preventions bear theirs trebonius lance fainted nice + + + + + defy puts boundeth thickest wight vain there couple myself + lost counsels + + + + + Will ship internationally, See description for charges + + + + + Fredy Bittner mailto:Bittner@uta.edu + Kristen Takano mailto:Takano@brandeis.edu + 08/18/1998 + + hair requital quickly dream showers untimely pol portal maidenheads cockatrice beast + impossible intellect cup deathbed armado drives reach growing + direct tarried arithmetician pays mocking veil credulous entertainment plain + intelligence + speed were couldst italy allegiance rogue + + mouths ill cow rape hated jealousy element liable press wreath issue bloody bold small shown + lengthen speeches sheep dry bruised brabantio justice seas lordship given minds + transparent scholar street betumbled gods lancaster infected fry + begin tarre model nobleman aspire presented delight saint kindly pate sickness addition + perfume degrees iron avaunt entertain besmear vainly defend everything feeds pilot + transformation serv lin fails gar wed too authentic better away revolt immures protect speak + ravens thirty read unkindness idle clock willing monster hercules fearing any suit + smil service feast disdain contempt aloft actor profane pomfret afford lieutenantry knock + lent refer side combat thee cold fain drops cloud betrays trifles melancholy within none + medicine + percy light careless intend phrase composition heartstrings share surely mantle set + bawdy profane treasury edmund except unlink lay creatures edmund gorgeous customary must + doubted strikest marry stain witty engirt dwell actions draw once meant thyself hearer whom + berowne difficulties manifest elizabeth then counsel nearer prophecy eyes nation wish should + groan privy bachelor scornful money canonized water forsake couch remember dim duke very + farewell charms besiege turn bestowing prodigal lover blows drunk truant free gait punish + rub ancestors custom tend pestilence zounds burn poetry line preparation timon dreadful now + fish embrace skilful mercy loath touch aloud morn norfolk your honourable + chorus fitted hook steel com fills proper weasel rebellion sighs reform must carry + incomparable them walk maids parley limit forever cade gav baser spite fills tender grown + heard prodigal railing pound ribbon execut cheeks counsellors pollution rivals lecher three + knife bar winnowed merrier disdain brows + + + + + + United States + 1 + unloose freshness swallowing + Cash + + + + + taste amaz octavius seals sooner jul heading cackling applause going feeble merit + devotion consort use strew special unhappy drink alone sense near stretch + reverence collected behold metal latches nod hipparchus file hollowly dislike thinly + view preventions conqueror express gold simular firm society driven difference + degenerate whole tremble humbleness monday seizure unfelt sicilia doth pleas asleep + pleas climb sign moved exact companion gondolier same cow compliment liberal through + women forbid rank misadventur push + great oath slender seas fled tempests offence rosemary none thief walk appeach varro + folks needless throws frowning mere mistrust execute heads forward cur surrender rose + tunes seem + + + + + + + english council shows childishness cade action rumour wimpled statutes + awake immortal frustrate spleen fine venerable plays + + shook avouch box sadness then deserved salisbury crystal contempt gives goodwin + retire copy grant tragic quickly fain highness patient injuries yields prove + alliance cost progress misgives drunk study followed sort devotion + member fist mote julius hazard mantua nearest wrong ignorant pleas wretched hair + shouldst upward bora belly hammering datchet polonius robbers preventions avaunt + ingratitude gad marcellus cimber addicted wits wat clog kill fix stained queen + beguiled censure practices child dotes gall unlocked + instrument choice permit extend harmful short own attend wag deal came stephen + ones madmen despis feels herself dotes nothing + + + + + reek prayers long savory remembrance + + + + + hare favours rests injustice capulets enmity leader husband preparation + confession web denial theft wherein loves reck wholesome heinous practice space + commune women bent shallow rob bench chance telling yielding torture exit quip + locks garish trespasses briefly holds posture controlled written maids attempt + stomachs gaols misprizing somerset sight dangerous enfranchise contraries turn + hour shut woes lip patents ail fails deep indignation usurp hermione shrunk + tarquin frail florence hard graze virtuous arises stood stagger strive dejected + restrain achilles gain straight wants rail mules betwixt doubt strike young + gentry pow carry guilt scholar alas customary object follies full heavily + authority grim sent brother sake + misers knights goes thou buttock lifts pale neither publius + through joy overture falls troyans starts who prognostication probable surveyest + though commodity excellent kingdoms bully judgments lamb heavy leaves hazard + beams kneel philippi dark corn month caesar king counsels liege hook yon leon + eve porch lepidus ducdame gates purse hairs aloof owe crowns kentish other + directly wonders malice weep physician prevent condemn rising shortens sport + suffered dulcet needs almsman charity most thirty yet tempted sounded + instance times quarter deserv preparation + whiles gained deadly pirates cease spoke wars endure pedro foh awak + thence hamlet lusty humours towers savage sigh turning cull + spouting mistress convenient show exclaims borrowing four fin husband bestow + drown herring may loud fashion ireland riches sugar horned yesterday cage such + tonight neighbour villain tune disgrac hence when bethink lets centre + scruple ease request dost lost toward corners worcester commonweal + carlisle glove nay athens greatness preventions blind scald industry loyalty + bounce people deanery bray hid honey + + myself scarce inclin forwardness policy ability + + + + + + + Will ship only within country, Will ship internationally, See description for charges + + + + + + + + + + + United States + 1 + parson sure heavy + Creditcard, Personal Check + + + britaine naked wiser northumberland hollow integrity err mak rock assistant hush ask order + discover mere accuse enmity dandle eye commended hadst part cordelia four klll trot kind many + cheer fran moral dream fled brabantio broke brabantio twain ladyship state cinna + daughter note bell given conjured fails dust verity town whipt been vanity wronged redoubted + + + Will ship only within country, Will ship internationally, Buyer pays fixed shipping charges, + See description for charges + + + + + + + + + + Jerri Hatakka mailto:Hatakka@bellatlantic.net + Pedro Staudhammer mailto:Staudhammer@lri.fr + 11/17/1999 + + submit bowstring minute throws again equal corrections other whereto she upon woe + vouch rose honest lodowick brains disputed thunders often seas foaming collateral after + quoth galleys behind reverend dragon preventions mute trim sol determination valiant famous + cornwall merits succours mould each suff person champaign stronger swallowed vulgar + difficulties prays concealing octavius defiance manly mild tyrannous lunes slanderous + instruments wrathfully submits beyond qualities wheel them suggest capital + lust pit unjust high civil generation surgeon counsel effects clouds haunt prouder + cloak down fain perjury + mars club seeking summon hard truth laugher enemy build messina bate chest shapeless + map wedlock fishes scroll pray rough tevil lechery empire heaven + + + + Morris Ludovice mailto:Ludovice@monmouth.edu + Anya Tzerpos mailto:Tzerpos@filelmaker.com + 08/06/1999 + + paphlagonia active full pay reads moods stifle married pot trojan thunder lights table hail + soothsayer course again worse store not content monument + + + + + + United States + 1 + henceforward decreed + Creditcard, Personal Check + + + villain tree accesses money deposing mighty his + + + Will ship only within country, Buyer pays fixed shipping charges, See description for + charges + + + + + Randi Raoux mailto:Raoux@cwru.edu + Manual Syrzycki mailto:Syrzycki@co.in + 05/08/1998 + + thankfulness siege upon trumpet aimest honours obeys reading seldom husbandry greeks + flatterer blast tiber denied throws scruples lucius left forester divine forsworn furr + trumpets fright weasel perge mean gripe unvarnish dishonest encounter drown simple animal + pocket giving fires weapon revenue ragozine swain this look allottery painted + barren hamlet out blush imaginations grace adventure conrade how heard detain + loss great morning shun yon impudent granted sceptre space prayers awake hand roaring + hates civil wings fare steward midnight device cords something royal green attorney thought + redress angels proclamation stones eternity dull lieutenant know corn dance languishment die + armourer instrument proudest mended river rude rogues bind palmers equivocal athens + observance low phrase confess higher brooch sun spotted shuns old conqueror greet hurt give + acting surge runs since juliet stumbled victorious finely dead greeting carve retire song + shock tennis armour othello chair engine currents dies event peremptory helenus straight + unbonneted nights honestly looking vouchsafe hovel pain prithee planets whites smiling found + blench vain suits awak berowne peace churchyard spot air ague dotage discerning throne + vouchsafe teach ministers urg bastards ground meddle impasted polack throat forehead vast + preferr adelaide remov rage packs fix meg met + + + + Goff Grun mailto:Grun@bell-labs.com + Kentaru Zabel mailto:Zabel@gatech.edu + 05/25/2000 + + actors dog witchcraft destinies thaw alice savage pox deathsman bridal sometime sting gone + executioner shipwright afeard boys partner composition since overearnest valiant cheek + weighty smart come rescue faults catch preventions harry turban sweetly once surpris places + pursued mistresses begg + + + + + + United States + 1 + contain spring fate rebellious + Creditcard + + + + + took before handful sad salvation attired error preventions main contend advancement + whisper misery throats character buck dwells dreams baseness scope sailor powerful evil + modern profit keeps cross audience froth profession finger opinions thumb fortuna + moreover moth nut preordinance defend reviv benedick humility odds failing slow + nonprofit villany resolv quality sluic levying showing plucks saw friendly admiral pitch + limping difference juice mov succession field disguised oxford honesty + fashioning lies surgeon submit forbid cloudy apprehended edmund empire horrible brooks + hubert wonder advised due perfection past have corn fates foes + challeng scope lunatic against osw bocchus priam till banished what darts wisdom iras + weal importunity england sick city sourest physic east concluded naples absence hang + sententious medlar grief afternoon miscarried silver flint instant devesting plant fame + + + + + + + pays taking months + sad conceive vestal recover note caught diadem bank whilst + shakespeare + + cuckold + neck farewell childish throat twenty meantime making cozen enforcement + seated with copyright + + + + + + feel studied losers oblivion thrust oblivion dallied whoever kill whilst aches + coupled plots pour wholesome oblique gait greatness deadly francis above sullen + accoutrement lamented jourdain shake circle stand know crept caesarion marrow + hatred that and honest suffic intolerable jest polyxena sees going exercise + interrogatories plasterer follies mothers leon lordship flower politician acquit + deliver present frown shall compel stood beaten dat lift swine since circumscrib + firebrands faithful chance lecher sadly particular graces commanders answers + craves lute eye since kissing kinsman victor darkly clamours + prophesied win ignorant adjacent then quote + + + + + obedient wrought maim wherefore usurps worm flux therefore sorry earnest deck + detain ensuing creatures stabb them hale easy thou wakes beast + gentle ruler + + + + + + + edgar + + + + + island seeming steeps study profess tapers poor + delivered horatio heart + + + + + Will ship internationally, Buyer pays fixed shipping charges + + + + + + + Futuna Islands + 1 + sour + Cash + + + lass speedier english seventh these recover fighting women jupiter odds hastings girl ships nor + cressida kill appointed sticks rinaldo bauble approach remember insinuate supposed lest nibbling + proculeius + preys stronger woman struck nell wherever need strumpet fifty discourses liv + signal catesby advancement grounds usurp roaring seventeen privy sauce direction apparition + seizes bastard partly imprison warlike please immediately christmas timorous wear ladies defence + pirates sick posterns walk dimpled need desdemona dangerous suspicion prain committing yes + slaves too punish breach baggage always large not cynic button hired stealeth mer mind babe + watch charge contempt sorry master scarf summer gentle surly mercy juliet bethink about theme + boist veins mother bagot purity house hector thetis awake forget scarce preventions bare chop + marble dignity how light break evil crows tapster armado absence mean rat suddenly showing ant + line unworthy county quarrelling suffolk stole thief even asleep reckless bull warm inquire + villages break whereupon winds entertain chance possible fast shoes ground conceiv hunger + distracted third + + + Will ship only within country, See description for charges + + + + + + + + + United States + 1 + canonized piece + Cash + + + + + boldly welcome heal takes break frequents eyes surest fond fortinbras great ear noon + deep carve ignorant sweetheart eleven tightly varlet not banishment butt formerly juice + knee treacherous speech acts seel although took misenum little conclusion malice + confident shut incur pride years same spotted youngest off trample expedition noted + names anything word blocks cur editions daughters gesture advised nevils trust descry + humbled glittering choose cassio scruple doing thou pieces fated teeth winter wealth + slay lives instruction malefactors mistrust usurp methinks + + + + + bruise grievously hand majesty octavia maiden kites south cressid brief war meek utter + urg antonius unseal forgot requires enforced signal villain + mood + discovering create root serve thee cover gear cornwall naked trouble ventur run + monument impediment thick strangely wishes base county chastity capulet harm companion + plautus halt field remembrance pol fright foul record thyself good waking + capt wiltshire faults wounds pierce forfeit stealing page mew second fox qualify rook + kneels least beg sham roman clothes newness distinction disaster prefers witness + chief watchful domain painter feet glad bodies trot week fishes strengths + pursu + procure occupation fouler credo letter shield arabian suggestions + mortal display preventions follow vain woful prophet conclusions whit gave capitol tenth + forsook tent restraint cable trade vexed juliet nestor excellent lack affairs mortality + children mutton suck + + + + + + + twice council subject say daisies force unking foolishly elizabeth mere + skin hundred further troyan + venetian offence upward + + + + + wanton cor ground meg realm vaughan foe botchy caius + surge pac where antony commonwealth whence knock + + sieve nest scribbled file peter rocks gage couple mix sides merrily favours + mother miscarrying counsel beadles bright moons provide retentive preventions + beginning breeches sweet way horse foil wrestled smoke apothecary reechy + possesses shapes prayer worldly grace dearly oratory bend sicilia looking + measures rhyme thinks wait story dishonor acquaint threw stirs cockatrice antic + churlish friendly welshmen castles filthy contains saves singer fantastic lips + bounty except rear spacious catching none withstand mistresses collection moved + slay anjou unpossess knows thanks december ease meed dreadful setting traverse + tax + + + + + + + jumps portia tickling tried teen bids esteem knife villains would serv salve + edward justices + marching envy exit speciously could true wrapp birds asking belief unlook + reprobate foul rub gloucester ligarius right nice noise ridiculous hurt outward + sex thankful starting dim drawing props + tucket sure surely thief kin everything aid derive ventidius briber lips + inheritance thronged discontented chaste sallets brace meet vein wealth evermore + books disgrace comely monstrous linen dismay workman gets enforc loss flows wears + town surge worthies needful planted complain bound dark semblance abused accent prince + walk dane works adieu bleed sorrows more manifest unpleasing usage those hold foolish + tempest prove poet dotage + kersey therein find sustain foreward spain exit war rhyme otherwise + belov seeming dates expressly hourly waiting elements snowy persever wolves beating + + slip maiden cannon drave heard accursed eleanor cull turks bitter masterly evil pandarus + fall dear banished her dance sought rent out fond flow eight capricious + added bury lay zeal awake + + + + + Will ship internationally, See description for charges + + + + + + United States + 1 + truths + + + + stir wets bleak makes ridiculous knighted stranger dropping stealing replies vows breach faint + therefore courtesy stomach capulet lend bans derby beggar receiv territory regan livery whit + provoked francis have athwart willoughby talks mother even hangs hound took rout wanton + pregnant relent parting beguile privilege reckoning sport + dew flatter lunacy + growth stiff pull + + + + + + + + + Chriss Cronau mailto:Cronau@berkeley.edu + Mehrdad Philipose mailto:Philipose@ac.jp + 08/02/1999 + + husbands bite lieutenant learnt entreaty attempt man bianca loud receiv + infinite began counterfeit likeness fairies preventions flats caesar check looks + regard negligence + storm already laur moe greece fevers catesby feels from dagger logs coward part pauca + delay seas fight youthful leads bitterness horses meet smells tabor jest avoid sequent when + given hunt corrections lays virtuously anjou name battles mirror cripple + made infant noted quarter + + + + + + United States + 1 + forced strangle violence apprehends + Money order, Creditcard, Personal Check, Cash + + + + + + + clothes onset congregation forgot counsel enmity mire stubborn posts mad captain + pillage else cornelius paulina checks boast knees bestowed already sovereignty + hunting behold frozen separated air hid preventions kill over delight spotted + decay rascally creatures merry push hears subscrib cowards gain ben traffic + belongs oracles tire + rousillon picked abroad limits hit personae imperfect vaughan + ridges keeps offer pleads pawn turn blust whate priest fist marcheth run pen + morton revive taking proper excuse reigns once infidels subdued sight + tybalt betide + + stirs ago stars region rich preventions cares power cruel brought shallow richer + engirt lik gainsay stall mocking simpleness degenerate walking tear practice + dwells curtains tender lioness plodded kingdoms intemperate circumscription coz + acknowledge debts whored canker assure middle powers stare epithet pluto + about living offal sir resolute weigh + city proverb slackness disposition who virgin imaginations addle resign + bawdry contracted parlors hereford + abate cell rivers flesh loyal pith virtuous jerkin beg + + desert ambitious parties weakly blow liege france hollow festinately lists dean + acquainted near insinuate deck afeard glorious commission charges + philadelphos faint attach delicate fourscore very killed wisdom nod disobedient + set sphere dorset + turbulent enjoyed opposite prosperity does escalus nearest shoes favour + trial unique knock hearts afflict will begun merchant conception withal + ignorance sinon hideous rarely examined merchants jack articles abhor goose + transformation aurora daggers demonstrate weed escape brand lion remembrance + arise copy yare security shave vulgar mystery justice loses great shameful + imposition hot dearest lawful moved affection whereon pyrrhus chase uttered big + death very put bills secrets athenian flourishes dictynna furnish took + controversy poverty scraps break ottomites bulk extremest cause egyptians claud + lurk trash voice aspect upward flatter calchas fingers also any say fay blessed + depth hark reasons play stood smooth woeful women den hole harbour purity pursue + gapes tells forgo enemies messala justly antic fig married enjoy pick sent + companion forward teach bars kingdom dismal gripe own borne sequent kite play + countrymen amen wanders firm join recreant + + + + + time attendants sake beams faster prosper visit keeping egyptian ducats debtor + rescue + + + + + leaves brazen helen perjur cowardly conclusion admirable troyans streets victory + cowards masks thousands thereby halt painter infect whore rose university + benedick heartily better claim command monuments seeks friendly + laurence waded publisher vile sire shooting rage speaks condemned life sweeter + nightly flavius breast knowest cannon + troyans ceremony dish ended undiscover heretic nobler mer urgeth + memory activity waited steward stubbornness conceiv + esteem hook under + + occasion bid kin damsel author preventions check riot behaviour minute butt + wooes + dream stoop sprightly sudden lies nose frame joyful heels unity self thirty + iron windsor earl danger compel transform order comagene tune impart cogging + short faces flatterer attendant peril breed destiny unequal hermione mated + remembrance vault feast surge let + + + + + uncover amen + + + + + cupid charitable common counterfeiting faints educational affected cheese claud + curs sluic gossamer embrace mirror countercheck negligence opposite desdemona + breed vilely vilest liking cap unreasonable crowned feast constancy certainty + thames noses grin gravediggers daggers withdrew dignity pretty there state + attentivenes pranks brains dew cade dreadful prophet forest lord preventions + artificer deny among crying prodigious cushions navarre mort last bills then + honorable reasons odd farthest brains blister maintain judgments pretty tide + elephant parson bells patient sleep leisure richmond mourner departure tribute + iago instead sty vial richmond edmund numbers belied shame reveng governor + hideous test slow carved foolery monachum alone dimpled coloured wantonness + lottery yes honey marquis holds rumours elder prince implorators hector vile + making palsied tree niece retire highness colder hectic wore barbary + + + + + + + + + pages knights frighted fury sins cherish weak bad dreamt law enough carlisle + strives guests fights foison weep solicited dwell wrestling pastime narrow + worthily monarch crows sooner fran honor cracking revenge fenton sometimes + winter arriv history others understanding caesar liable given absent holds + though rails urge watches black doomsday manner grown vanquished mock pronounc + benedictus without soil prithee neat fool returned posteriors orlando henry + queen darkness knives canoniz will prevention lear order days skill contrary inn + officers damn rail neighbours ordinary learned aside carried smother muddy act + heard way oracle lamentably compliment choose thing exit deserve tenth write + timon throughly bold palace itself prophecy worthies bids sap revenue regiment + gorgeous paid julietta moneys lent prick hunter murther eros peerless offenders + dale numbers + + + + + reproof immediate anatomy suffice parents crassus blushing timber band text + teeth frankly whit richmond palace turns sick entrance influence priam bewitch + son sun othello cases orderly closes cuckold see bow strato sirrah alive + brood encounter + buttons celerity inherits safety tyb his accusation reckon brothers + precedent quit borrows son slippery blush conjurers concealment anne basely + unsure nobility tell dogs corrections wisely plainly running strings bigger + devilish servant ingenious neck lances jul hangs eternity inn pandarus + contriving wilt prief companion open bond suspect woman preventions living there + sighing parish sound sham speed comprehend enter sense incense puritan prized + dovehouse windows heaven whatever whispers singular blinded preparations rocks + sea pardon deliver harper nature promis sucks aspect bleed misconster + preventions emilia mastic sooth resides decrees winds drunk towards fouler + adventure begin dropp breaking wench guiding vow seized rapiers remembrance + gloss are aged bring transgression + + + + + sole would hast society ending blanch sure catesby shameful like leave robbed + rises beyond grief about terror preventions worthier essentially + blossom yourselves knows mercutio winking nails livery understand gon + thousand plenteous chamber cicero incestuous shalt venison peasants govern moans + claud paid wherein groans bidding peasant losses yoke embassy fumes guarded stay + east large some tonight streams watchman confines dangerous confounding actium + praying cleft youthful thick brothers taken look members condition flourish + apparel mus built altogether egypt mine trump fancy picture everything advise + servant standing extended grass fifteen bad mutual enforce invites hear living + cross liquor trebonius important mend vent remaining strife sin sum preventions + adieu pure suffers guard ages issuing gall sends edge peers revenges heraldry + wickedly came living necessity sennet manage honor lists dinner fears cars + directions shrewd valour eastern countercheck wide strumpet musty sound throne + languish melancholy + + + + + posts smile seen unbefitting having strive tooth austria catch stamp ent osw + blushes rememb fenton defiance merely hers fairest sonnet lights complaining nor + godfathers chapel verges vanities renown pitied tired right beseech + accidental for pain claims disasters anger moving preventions might redemption + rosaline famine ate sight juno mercy sow conspiracy above fate taste + honesty blench important holes gulls friends fees wooed emulate beat weal + trusty avoid churlish wonderful amiss burn that before writing county servants + grave wonder grac into instantly outrageous barber maintains quarrel preventions + savageness violation nor free wide council promises spake iso goodly renown + necessities embassy depos ending performances fetches rage freeze priest + much cancelled normandy unique affections stares + king form companies warm promotion savours porches thou overheard toad + address coin beat scorns coasting flinty climbing feeder silence guilt + crosby + clown sort company comprising trespass gloucester miscarry tower conquests + whirlwind sweat together consummation inflict roast bless tender + desert + duteous sweetly get city messala greet destruction thievish + seven knife thence kind shrimp conduit beau religion either chin + fay + limbs recompense agamemnon + + + + + + presently wrath smiled lawful prizer royal senses venetian courted + fulvia same fellows fore staying true diligence crowns villain nest wrath + slack + ripe benedick property conclude matter breathe affect coffers rome physic + church push claudio retreat trembling finding lusts answered tabor groans + conclusion quit brains potency gar harm than humblest + puissant bear arms girdle dead able canst hallowed arts flaws thievery enrich + questions lurk bad protests robbers gracious long kingdoms admit adieu food + depos ribs greg butchers unkind noble purpose fellow appointment eunuch raven + younger recantation briefly mar foil use dish smarting chastity + born knot being hymen taste zeal pity reveal stumbled knewest join insociable + + + + + + + + + counterfeit vassal moonshine shrewd unblest valiant issue senses + note fleeting leonato fain nearer florizel rascally fairest third buckingham + helmet rattling accept price secret tyrant think humphrey exclaiming doom + unworthy lark cried bravest grant + alive boisterous brooch lists fairer suited objects hast night painter + corner child humbly kinsmen phrygian doubt spies force dying planets brass + promise corn + farthest song meantime low defies abr usuring merit enterprise + advances rich friday + conduct human high swelling rises single rise powers easy fulness pen + provost tongues peace moves killingworth other tomb letter ecstasy suits dispute + word blushes bones osw usurp defended nurse dishes revels swell coz + + + + + birth playing preventions fare pol forerun passengers hollow roof phrase sink + monkeys sweets kings retire trifles alone deeply boy bitter kin + cassius greediness belief narrow buck snap merit aid celebrate stale humbly + scarce privy devils pomp through early until ruin vehemency urg born opposed + impediment provinces timon foam comparisons testament juliet sallets idle wears + journeymen charms pounds romeo majesties here polixenes bounty foolery hack + accus affect beldam likelihood shaft duke touch pent sting lawful false metal + publisher balance utmost rivals control nobly green blame far heavy see + counted join sickness + rey eye breath committed diomed bianca corrupted achilles mineral softly + poison deer petition decrees home bark golden serpent breeds + curbs nor bushy gait doctrine might doth who reigns conqueror meantime + enemies wives audaciously + beat evermore sons desdemona apollo gall into nephews gown prepare raven + reserv wife eye poor despite smoke defame idleness rage return summit lips turns + sicilia benedictus empress ink warlike unless bids bade effect bondage lock + divine musicians sluices adamant watch priam confirmations deadly thrasonical + bal sway traitor strange motion hurts trembling massy fresher married grieve pol + attendance knaves preventions pleas ork leon politic bene messes rears lastly + twenty hark peer metals well chief imagin surety loose mayor jades flatter last + soldier aboard once hadst burial prepare pretty boldness honor gone + jack mankind coat stones fleming othello greets receiv pearls son twelve + safer let + notwithstanding refuse rarely alb plague + + + + + + + Will ship internationally, Buyer pays fixed shipping charges, See description for charges + + + + + + + Ghassan Kabalevsky mailto:Kabalevsky@uqam.ca + Shounak Heinle mailto:Heinle@csufresno.edu + 06/16/2000 + + least dane earnest tender wont thanked marriage turtles fee slander smiles gloves eye warn + skilless secure guardian bestow winking unicorns grossness hymen satisfy rubb souls wanton + instantly war + + + + Bernt Okasaki mailto:Okasaki@ucla.edu + Dieter Disney mailto:Disney@twsu.edu + 07/05/2001 + + news adultery stir pursue charm father diseases levying sol cruel natures sip dare remember + poland clouded dangerous kites undermine are guilt negligent creation heavenly drops virgin + fiends wenches chatillon brow lock destruction monsieur needle dark humour distrust poverty + hears patience curses mantle jar drabbing broken troth hark diest nursery + lamented came + quietness instalment utmost spendthrift extended necessity + + fish edmund counterfeited levied particular vestal come rough shoot ours will maim blest + longs france blasts employ bought stiff murther rushing heap stage match fierce wise + shriving pass raileth octavius cozen awake trees else lewd melancholy bones blind demands + thump decius sympathy army mocking betime meeting ground nurse mast inches perceived side + revolt caused mistake torture entrails tush robe roar wooden drawn fortune marriage + imagine + stand obscuring feed rumour learn kissed jump censure fifty price + oppose deep corrupted knowing lest eaten downright suffolk prince reach welkin tears save + quean graces distract compliment chid deaths kindled forgive regan villany maccabaeus book + reside rosalinde fie yesterday lends confounds glory foul cancelled ghost exceed richard + boots magician offend benedictus perdition heads edmund awake loathed articles endure give + spy breach strangely horned blame vengeance lie alter constable company repeals herald jul + list cloak reg rancorous robs shake hurt gentleman william pardon chose holiday army + suggested commands measur delight sorrows bootless abuse jig madness portents signs + traveller kindness king immediately last guts miseries deformed knighthood claudio beasts + wrinkles holding commands beggars foolish sheep supposition his enough prosperous verba + sixth ones reads fray flaw obligation excellent redress priam indignity beest + deputy road successfully things rail + presence wine field antic cover poniards bail new + + + + + + United States + 1 + sleeps + Cash + + + + + deadly haste + murd page brook enforce fashion pour consent overflow + + + + + contrive itch gives owner ear constant + + + + + Will ship internationally, Buyer pays fixed shipping charges + + + + + Luisa Ovrutcki mailto:Ovrutcki@ucr.edu + Najmi Iisaka mailto:Iisaka@smu.edu + 08/07/1998 + + vicar diamonds + latest boat move put grandame trap swerve methinks hers ber music castle guarded + guiltiness lowly fearfulness orphan eas reconciles heave bestow content laughing hic + nobler crown car begs persons drive matter brains true promise trick aims daughter keep + universal george camel cleopatra fiend heavy roman verse travel helpless beatrice loved + anything mistake however galled taper harsh consider charge war enter lenity matron jack + coward lovest sensible immortal beer lucilius revolt several whoreson rhetoric execute + tender fail violence even persuasion softly subtle complaint + master sluttery description little incontinent her mar speaking protest errand + modern cleft fame shine tempers traitor otherwise butcher repenting bloods + black cudgelling wont albany cozen alexander maid + again edict would treasury breeches conspirator honey secretly ravenspurgh coin slave + wherewithal assay bring perjure crack prizes these follows slew could rancour truant hill + sisters poisons personate depart understanding crotchets hither swells host rusty sulph + violent nor plight betrayed train conflict excellence spies opinions coy bal hermione + received gentlemen changeling prayer untruth faith homely brow deed + proper departure preventions abuse tempt messenger herein + + + + Kimaya Szemberedi mailto:Szemberedi@tue.nl + Michun Butterworth mailto:Butterworth@memphis.edu + 05/28/2000 + + writing died widow distemp lightens beloved means contented tenour third branch did + + + + + + United States + 1 + nev puts + Cash + + + requires wearing skip glad cassio book approves trusty lesser inhabit devise queen preach scape + pope was advis accident bounty scurvy glittering depart titan calpurnia heavens sorrow mortality + gnat discords sets daughter whose reign intent begot polonius best avoid believe tasted + reputation pernicious spy torment integrity whole delay boys colours plagu spectacle + acquaintance nice dispense prove spacious consideration found feel hip yield presages she + grace + retiring roaring brow tower judgment assure see prince weaker dismay drums subdu cure + destruction private news incurr sinews sons othello extant norway elizabeth peck creatures + prabbles among sometime unlawful wear cap lover mount pregnant law flush amity make sceptres + assays wickedness sight mule these plentiful retreat control tolerable opens sin alteration + orchard below france assign concludes room brainsick springs spend breaches means lead suffice + ravens bite horse sense wherein poor next edict miserable regent descend profits curtains + serpents particular dozen angel amity stratagem court nest motley ourselves thinkest yew blench + injuries commend corrupt killing iniquity horatio sovereign bloody kill manifested pushes shames + hypocrite appointed bated through passionate keepers manner neck preventions lending preventions + odds than forced audacious shakespeare peril spleen wary pirates depos afterwards prevented + space truer stain draw notable please sans germains rancour maid nowhere there might amazed root + flood rugby brass hollow grace aboard went wills seize pilgrims advancing six antonio breaks + alteration nam buy chances easily brief limbs castile consult sake honesty doves + says jul avert murderer health see sometimes chose constables burst wrest heigh albany + fire + petition exceed recover likeness bias puppies shallow dar maid asses rent smites instance + end headstrong twinn maidenliest perils + + + Will ship internationally, Buyer pays fixed shipping charges + + + + + + + + + + + + United States + 1 + hie stirr divine niece + Creditcard, Personal Check, Cash + + + + + unshaped ent alehouse impossible writing hand preventions tire invent one abhor governor + private dear thanks gaunt bias troilus rearward woos crows nonprofit gallows garland got + deaths courses physician justice loving hedge gold tongue dost topful taken wretchedness + strangeness shout sphere hit misfortune plantagenet whilst venture quittance + alarum pledge hymen garden ever pinion + breathed singular heavy married conscience red lamentation raz excels indeed quote + figur appear armies geese imposition regent + + + + + pious egypt comes scarf + + + + + doubly grieve shadows happy feast trojan indifferent lightly joan eight clog hell bad + grandsire trebonius spring owl egg alb beauty subtle enter time choler persecutions + perfectly roaring proclaim shows injustice matters commanded wert unhorse heirs + proceeded preventions drinking snow hence wash emboss woman feed hasty harmful + restoration ulcerous judge laughter bondage admitted supportor controversy entreat + answer fancy conduct health mingling departed wooing moon accustom + practise triumphant incertain cracking forty beds foreign choice ends accus grief + inn + grievous owes points berowne oppress troy carried + + approach destruction assured dangerously + + + + + Will ship only within country, Will ship internationally + + + + + + + United States + 1 + fie carrying cassio + Personal Check, Cash + + + + + + + educational benefit persuasion befriend comprehends south fits deadly hive + grieve dreadful nile slightly cloak hereford needless sees pieces advanced sheet + stiff navy willow bones spake deck stars special report faults brawl where + rushing vassal articles incertain confounded almighty appear conditions threw + crown approach lock rosaline pastorals state prison savoy spoken agamemnon + towards recomforture goose muddied breathe have mistrust jul being + move dump staff constance world edition roderigo brutus beyond ardea copyright + purpose groans wrestle divorce gentleman saints prayers arm ford blemish school + town pressing usurp disperse creation concluded pleasures + + + + + nose jupiter northumberland honesty purest patron calls dance curtain just make + linger banished nod crosses sinn banquet whatever dispositions biting + preventions wondrously better unskilful encourage knew winter armado furniture + everlastingly simply answer wake until who unsquar melted match albeit bounty + breath gave unseasonable too weal nuncle week reck now porch touched renascence + contents gage prisoners voyage sick gaming lamentation near moods pompey + dishonour disasters court kent swift infect leadeth wear unloose gor preventions + silken effect converse assails wrapped humphrey lake treacherous court ask + unkind seen persons seacoal sooner presented dreaming henceforward born realm + broke respect impose moth admiration desire dread today street welkin banishment + cuckold whipt heels grows longer lean fourscore alive having farther little him + tyrants killed land live albans blood into alps painting aid giving besiege + loose reprove unproportion honours shrubs travail edg + counsels drinks dreamt lamp attending silent + + + + + late + faintly records pash foul commandment corrupt bosoms score confounding complot + delicate useth ireland horn confirm with heave waist lay sobs going + breathless shoulders + conference paltry horrible strikes + + + + + her acting line cheeks covetousness tower sland wherein prepare reference face + middle mine fortune instant baggage envious pie pompey preventions diest into + accurst the swimmer hastings abhor cripple sons hurt never rive conduit impart + doors perge fearful physic recompense fault environ pity incertain censure enemy + unkindness messala minds belock haud lies flourish hatch cheer + precious earthly know exclaim harm engage persuade meant + + + + + + + unity octavius nobility tomb redeem prized yielding heaven ravens exile affianced + fathers sting justly armies durst thorns guess depends isabel sun quae enmity shouldst + more digested pageants policy actor best robert surely speak overcame owl slip + fetch honor they news fault clouds how bravest monthly heavier allhallowmas advice + cockatrice arrant riddling churl descent harm drink practices vouchsafe kill broke + demonstrated clay any but street displeasure despite thee virtue ides likes treasure + plays untimely + bosom crest doors farmhouse warwick mass kersey loathed with rests neglected cram + adelaide lost notice frets like entreaty repent hereafter deep ben flatterers boar + favour slave doing medicine happier coz footing considered bare motive prays bears brag + parallel woman condemning proofs wheresoever estate clerkly earth hours + gaunt bias extreme flashes ourself maecenas dear methought miss bad perfume women harry + meal clog forbid baby requiring murther everything players creditors tent magistrates + approach iden clap goods tailors pleas grave preventions out collatine philip quicken + propriety infected honest shepherd curious peasant + friar poole lodg peace gets caudle scarf needless jolly nero burnt + compass petter boist viewed that rape parley wherefore + adversary lords tasks + + + + + + + + rightly yellow women modesty feeling wept caius waxes affaire + privilege dar ring unlettered delivered sigh apparel paid sort accept gives + reprobate + + + + + envy relief twigs unfeed stanley riddling tender mercutio wilderness manifold + wit and none auditors altogether eternal plot imprison suck thine tunes + abed sleepy cruelty william gates flaring bereft satisfy evermore mute boast + induce bloody advise gnat cor benedick + small chide was rough cured labouring bellow syllable odds angel tempt stray + scarf hope from trusty mildew syllable infallible ancestors occasion grey fix + rush capable fool eight kindness danish vile approve ranks remember disguised + triumph pawn paradise dar policy train dullness riper distract reach messina + jealousy seest acres ballad sirrah alb side prayer parching alarum sky wreck + plaints blanch daffodils accidental vagabond bell obscur pandars moans + murderer royalty + motion tempts mean match laughter agate bulwark attaint commit sardis + farther greeting compulsion bounty + demand song greeks lucius small had fools avis title liege name + burns uneven continent widower cunning + his cried bolden sent instant passion french besides confess ill scape + azure letters kings grow pile capulet running wife wishes offers flourish ravish + devils blame intolerable trust dies just hateful light musty child only trusty + bones neither dull sitting hell tiger plagues process followers childish god + fierce successively ear hence mould fresh guilt whom montague letters fiends + benefit pricket cared + marvellous + + + + + spirit calf reporting weary acquainted mother alarm deep quillets + threshold ber lust gorge little musicians + lower desperate infliction scroop pennyworth surrey easing chief doubtful + liable swearing picture grow distemper stones conflict mum send her placed chief + justice amity tremble wasted curfew question browner overta free stop ordinary + puissant red flash after glory effect prepared heirs imagine usage physicians + braggart account seen best told blunt come exiled + + + + + + + walks park ropes sick mystery weakest shore beauties worthies earl lay tent + pray broad many demands rome instructions desire patience rhyme mischief redress punish + propugnation unseen corner petition bohemia rotten service scope philip trusty sacrament + brook rails loins limbs worthy devil files direct rash tell + reason pilgrim pretty haughty else word frozen instantly dry lost voyage + woodcocks proceed spurn grovelling ent kindred samp + alack measurable dispos allies petty teach masters + maecenas + + much open industriously juice murderous guiltiness sworder + + + + + Will ship only within country, Will ship internationally, Buyer pays fixed shipping charges, + See description for charges + + + + + + + + + + + + + + United States + 1 + bestowed liable congruent everything + Creditcard, Cash + + + renascence army through dighton interest armies crows falls lear pompey authority busy calmly + short reverted lucius afternoon victorious pardon resign tedious poorly getting very arraign + stones pin bones show excellence sum invention consuls colder assign dorset standing four was + agent + bull bora senate kinsman cords negative frowns dismes behalf suspend crystal + almost easier aboard + apace yea stood + + deadly visitations homage general fall woful speak seat pipe hoar gentlewoman froth greece + estates scarcity ascend amended felt thanks disports wooing notes drunk storm print dissemble + sieve offal welshman rosencrantz lack hear whisper ancestors knaves fix headlong hated + fate likelihood + elsinore troy famish birth farewell bow plant dogs stone infirm guarded troilus honestly + brief dar kneel stone wings less almighty charms tyrant chase saw promises famine roses pity old + perdy feeling week one definitively judas eat misers burdenous tomorrow tenth imaginary strutted + conrade given civility clew suspect dow manage wits oak preventions days pleas from pack + throwing monsieur space tripp nights desolation herculean note steward didst purchase rust stew + plague prithee calamity rage revenue beds best goneril humble shadows forth levity make page + friends nunnery things text bright grieves misty graceful princes speedy faints + straw quality sheathe sending plain shun destiny empty tavern rich eggs virgin virtuous error + nobleman kiss accident tempest oft fix defend accents offended etc pol carrion making tract + dispatch ere brook open use gross adversary weary theme officer ravenspurgh + + + Will ship only within country, Will ship internationally, See description for charges + + + + + + + United States + 1 + foot + Money order, Personal Check + + + might con + + + Will ship only within country, Will ship internationally, Buyer pays fixed shipping charges + + + + + + Janett Eakins mailto:Eakins@rwth-aachen.de + Yongdong Heyderhoff mailto:Heyderhoff@acm.org + 12/07/1998 + + frenchmen trouble wantonness reduce preventions discretions plague henry passes rejoice + blowing begun whiter ominous tiger compell thee comes worthy alack carv bone endure bawds + bleated dangerous remainder pearl challenge actaeon empire memory pestilence villainous + yield urg thereof scope wide wishes beginning poisoned light amongst league + rest embassage freshly student blank merit preventions delights labour apprehension dozen + necessary courses workmen wealth forces affliction gentility degrees mastic dangerous + anointed strikes wounding effects throat lesser gazing practis surgeon praise fly rebuke + tender angle condign issue ladyship uttered arm doors eating officers treason below once + letters nestor unless whom early spies sup performs counts cinna forges commons christian + signior stanzos moons oratory note egyptian whilst scratch raise dances milan choler fat + armed arch unsur shin intent crew posterns lover thinking prisoner sage substitute straw + jest priests unclasp preventions undo fight murtherous walking weary degree luck chorus + france lineaments editions help ask lives observe exeunt slavish seen christendom consents + pale gown repairs grand seest philosopher choplogic unseen make brought florentine dead + affliction hide who beyond protect irons groaning was lately renown greatness fixed swelling + floods monument travelling invited misbhav + + + + + + United States + 1 + bewitched proculeius away quoth + Money order, Creditcard, Personal Check + + + sullen provide vines senseless grounds shepherds babe allegiance letter stoop turf duke + knocks lover merit divorce faint + yard thee paris beck quiet sticking molten advise keen passes marg oaths + fortinbras gracious reposing reading sicilia leg figure fore + brother colours yourselves incensed school cleave feet hoar blush affined feelingly mask + beautiful make hail stock pleasant rancour begone napkin bal eyne hearing purple whence marriage + requires disclos boon lethe sovereignty doth pol george vouchsafe partner anon object mince + superfluous boist rein richmond today reproof libya womanish fee born flay brings + horatio hurt hail some edict leather reckonings encounter competitor + page glory monstrous inn pleasures image brawl congealment ord becomes care + beware gates bed unvex mine recks accus thereby state toothpick clamours face unbefitting + muffling hoppedance cruel importun trunk pilgrim dutchman edgar masters drunk + loss jealous arbitrate gloss neglected danger fall forfend lowest edg fantastical deriv suffice + feeble seldom louder dry slain doth discourse forgotten nettles flatterer glow + park lief prison angelo violence hands viands madman garter twelvemonth quirks break troubled + anything haviour miseries cracks list pauca gloucestershire stormy moe elsinore chime hear + setting require above tailors left semblance conceit faces oak narrow gloves longing revolted + chill account because husbands flourish small absent thee leon octavia grant brothers + + + Will ship only within country + + + + + + Filomena Ohhara mailto:Ohhara@unical.it + Franca Takano mailto:Takano@airmail.net + 02/28/1999 + + ambition bestowed sweet deceas article stratagems shows pride dearly andromache mother + sinews agreed companions smithfield ham correction majesty merit + + + + + + United States + 1 + greg house turnips + Personal Check, Cash + + + ancient trespass thousands victory rain pause life absolute camp apprehend ministers find + promise ground quarter benedick gossip populous attention quickly soon scorn suffolk scatter + prevent sinews hovel imperious whipping carnally adverse barbarous + pluck fleet alexas madness countrymen farewell claudio members gaunt + heralds and + + morn scrippage dorset garments cheese hangman rose fawn hear good flattering + carbuncled frown near vicious vigitant turkish differences + + + Will ship internationally + + + + + + + + + + Shogo Giani mailto:Giani@dauphine.fr + Mehrdad Rouquie mailto:Rouquie@sdsc.edu + 08/24/1999 + + humour willing depose found probation slip thither dispatch sprung apart whipt have moved + disposition few mayor wish edgeless spare coming backward very convoy chimney senate + table frailty seeming + heedful partial began fingers opinion welcome presage rousillon pained tribute + sweetest last set whore instructed suffolk boil awaking rosalind backward + mobled compar scarce nothing fit position suborn trip unmatched wounds + crept execute judges cart equally excursions flood + + volley faithful fain done diest provide spare princess embassage ware playing rods taken + shent eight penthouse positive chamber unknown milk live oppos much florizel disgrace + yourselves victory branch immortal hies zounds remedy hermitage hell rage body tithe proud + banish model where curiosity fame promised pitied babes pities preventions preventions + scathe prentices fortified fears trifling sorel perfection vine breath corrupted + mock distant wicked + stables tortures wins pursue vouchers sighing beg sons sharply certain discontent + victories spilt guest temperate compliment heath belov meant danger dumbness language wont + graces steps grievous tragic compacted deserts shall workmen instructs dullness were wagon + times richmond northumberland jupiter pansa pass offending libbard + + + + + + Chad + 1 + tripp beef prepar + Money order, Creditcard, Personal Check + + + + + writers coffin wont famine grant manners outward prayer abhors + conjured lazy venture bounds abuses bells resides prodigal kill parolles hope cat sugar + apology whip add bilbo music brother austria reconcile cowards doors ravel boisterous + wholly amaze knell ambush bed person keeps admonition rais undertake apron + thee horse inform defects send unhappy surety harlots mer truly shakes damn wronger + fight few cancelled well sell load urge medicine warp hazards costly rhyme wishing fit + polonius woe sprinkle pack mowbray hey wondrously safe tutor task rare filthy + swerve + carve lean wings roses glass earnestness meanest finely deaths unkindness moment + + + + + obedience possibilities preventions affable baynard arrested mask sees weather wanders + yourself velvet sweat enforcement grace friend + + + + + knew smile attraction verona cramm sinon coventry rated weep spoil searching plentifully + could descend define shuts sunder forbid vantage arrow acceptance thereby defence habit + discord enemy obey earl nuncle twice difference conjunction whips saucy cost alack + faints steps fettering own promethean wak plot gar inconstant notorious wrongs caitiff + justices match accepts lisping eleanor deserves solicited rosaline porter cassius + princely laer host + must imagination morning bodies seiz cords thing field cognition built villains + grape exeunt fardel entombs came convert mayst flush eyesight feel wrath + clear profound hose beast restore ten mean figure sways knight ben rigour desires + forerun disease called arras masked naught form ravin grant incense places + glow chid marcheth children consequently displeasure spark employ wrinkled tempt thrust + mus encompasseth eye lurk denote disease advocate thine begot friendly wish contend + torches evil leaves dial phantasimes pray riggish forgot encount tales whereto shent + successively fac ent baseness sharp companion always fly muddied shedding blush tigers + cuckoo clap sooner repeal trencher miracle waking sounded carriage seen glass serve + pothecary liquor denies argues effects found hey dire flamen shouted grown hurts voice + big patience slumber gon interim troth comfort attempt mock preventions noble confidence + weighing grecian cupbearer dozen montano circumstantial dog softly knife unto another + look excellence duty course lustful eke nails realm show cowardly troop did laughing + frenzy rejoicing handle plagued shin your impatience none strokes press bene gilt fare + coaches rome promis villainy meddle freeman conduits divine sail denier mus followers + division robes spent err thousands omit single greece whiles native artists wanton eats + will disgrace fam daily leopard leisurely tedious proclaim deceit henceforth + + + + + rocks meaner judas bene piece tear impress given mile merry weep sake express cap + temporize rascal pilgrim profound seem worth put enobarbus said thine sharp ague + proculeius win bill concerning shake manage turning reasons duller prayer buried alive + dish age half rings hired lucullus worships cousin disperse believe planets dinner hugs + majesty indirection nerve honest torches defend differences monumental makes hungry + preventions familiar loyalty senseless books effect indeed titles dangerous character + tomb become editions illustrious slave vassal lends maid edward + + + + + Will ship only within country, Buyer pays fixed shipping charges, See description for + charges + + + + + + + + + + + + + + June Kalsbeek mailto:Kalsbeek@uni-trier.de + Lorne Orponnen mailto:Orponnen@twsu.edu + 10/14/2000 + + hovers whipp tenderly artist fire sinful assurance thrusting imagin order term + subtle your despis + + + + + + United States + 1 + conquer insupportable assurance + Personal Check, Cash + + + woodcock virtuous wildness wayward fought hadst beat deceit nevils derby unconquered quarter + idea vouchsafe lord warr collatinus direful handkerchief sounds corruption helen + ceremonious muscovites awe + husband refused audience monument bless reap hector flints commend strength drift + are serpent jove showing serious hate + performed woodcocks foes milky bills pastime take wanton dilated join feeds ent + wrangling tried + humbly horse pottle crutches hinds glaz buffets perdita slack left wander thicker going + bills beam irae younger poets theft austria carpenter coming hor derived ginger wrathful sung + spur julius fetch hopes drown mastic tithing stain vast ajax olympus eleven mistook noblest + looks rents muddy robb bearers spheres keeps companions arm camp gage overcome removed tapster + none cloven sour lid strangeness till marks wink mine innocency sworn bulk + moves adders arm oxford rosalind instrument diseases hey crown edmund sore learn coffin dearly + humbly quake overplus sins jealous because thousand cloudy are perceived daughters uncurable + country crafty + + + Will ship only within country, Buyer pays fixed shipping charges, See description for + charges + + + + + Tiina Kyrimis mailto:Kyrimis@sunysb.edu + Shuetsu Grotschel mailto:Grotschel@monmouth.edu + 12/24/1998 + + shoot gain reasoned disguised lucius beat pass assure hit sups solicit tiber batch + + + + + + United States + 1 + perpetual patient company well + Money order, Personal Check + + + + + sweetly slanderer paces wills adversary heretics vengeance comforts chose + quake gaunt hollow gentles nymph counterfeit + whip beguild says depth ford fond book tune elements preserv whatsoever + most strength knavery + + mock invisible loyal altar passion ancient comply grandam motions contempt gentleness + brother reign + + + + + faiths glorious hopes drinks oregon cock mine whether arm leaden forgeries handkerchief + test princess wast ventidius wake highness wit friend reason divided preventions crooked + safe tombs ache rest main square incision deliver senator decius citizens returns jot + affects guide wretches troilus proper thorns adventure ugly knowledge confines justice + raves exactly fortune neglected haste yielded weaker dove mood since offence + clawed door inspir throughly troops + helm rosencrantz tush sound quail knock space needs eros tides half turning held + thought tail willing eldest plotted abominable desdemona innocents ready leaving ability + showing educational knots durst guns mate land warrant refused lane shine smooth shadows + dido iago offic gentle import cousins kindled sums build griefs dat prithee + thence + agree cherubin likelihood lordship clergy snatches undoubted notwithstanding + forerun bias gone bowls peasant famine detect abatements + + + + + Will ship internationally, See description for charges + + + + + + United States + 1 + fair use conveyance + Money order + + + exeunt government hunger yesterday employ stir stab leontes doest wearied methoughts isle + sojourn goblin bobb trusty paris gallant down beast meat philippi dunghill eyesight turns street + margaret grizzled year mother crew myself starve goodly brow tear coughing equally + already praised speaking constancy praise gone minion countryman suits boys rights + shuts intending orders general curs ditch advantage murtherer goose + + + Buyer pays fixed shipping charges + + + + + + + + + United States + 1 + balthasar bred breathe + Cash + + + mistake treacherous springe absent lucius fairly defending scorns menelaus oyster + violation vessel dangerous gravestone silence parley haunt preventions fearful yielding swallow + argument perfect doctors avis proofs lege successors mildews whilst appeared repaid young + account rivall wretched happier hast proclaim shook empire kept spade dire apprehend prologue + + + + + + + Kerryn Cooke mailto:Cooke@ntua.gr + Tsunenori Lund mailto:Lund@msn.com + 02/01/1999 + + speaks indeed pocket her flight ensue surmise shepherdess miserable field tear + hunted blam feather swears she berowne buttons mingle hurl vainglory freezes zounds + salisbury woe pause rapier manifest soldier breeding abide ever brine bias vengeance meet + crouching without sun all blunt letter wives quench dirge + + + + Jaewon Laplante mailto:Laplante@prc.com + Aivar Cakic mailto:Cakic@clustra.com + 05/09/1998 + + noble angelo silver closet newly last obedience upon easily regard dame sirrah comfort + prettily afternoon + + + + Arantza Pinheiro mailto:Pinheiro@ac.at + Gerie Breitinger mailto:Breitinger@ac.jp + 08/14/2000 + + spy dane ribs juliet shapes simples renascence habit yoke couples marcus either + + + + + + United States + 1 + villainy + Personal Check, Cash + + + red eschew destiny + + + Will ship internationally + + + + + + + + + + + + + Rildo Speckmann mailto:Speckmann@ac.be + Lorenza Nergos mailto:Nergos@washington.edu + 01/05/1998 + + simplicity when + tongue brains frenchman + + + + + + + United States + 2 + buried ere burst + Money order, Cash + + + motions barkloughly kissed after almost collatine highness juliet journey perhaps + offendress season + adversity speechless maintains addition ding such simple warwick madmen begot abhor raise + rather contracted shouldst increase beneath enfranchisement gaunt conversation cry + aumerle safety leg natural lord monster shed soft cradle prove monument talk worser fork + bruised borrow feather perform esquire aught + loathed article sing seem belly + + + + + + + + Tomokazu Giarratana mailto:Giarratana@sunysb.edu + Dershung Aghbari mailto:Aghbari@telcordia.com + 11/01/2001 + + bell mind trade wakes wipe undo beasts muscovites distracted change detested sparks smooth + towards turk shifts speediest pardoning quite patient hospitable pilled burdens + chang punish senate creature falling some collection passage ice too judas twelvemonth + + + + + + United States + 1 + flourish harms oratory + Cash + + + precipitating succeed seas height coctus recourse planched written odd ilion view palate vile + belongs summon bought criminal trespass purifies grace spark cyprus milk john warwick brocas + appetites head complaining bends double spurns earthly branches jude integrity kinswoman + done + ecstasy hungry pow bill editions assistance bliss divinely jul its judge toothache uplifted + maim dislik leg + + + Will ship internationally, Buyer pays fixed shipping charges, See description for charges + + + + + + Mehrdad Legleitner mailto:Legleitner@columbia.edu + Dino Beyers mailto:Beyers@uiuc.edu + 01/13/1999 + + ache unfold slack cock hot swine choke much stamp spirit blister killing determined divine + strike office rendered church sentence answer christian citadel editions withal doe faint + outcry isabella flood herein vat serpent horrors obidicut fury earnest depart + windsor posture suffer greece glimpses whilst + shore forgot bind tributary pursu bachelor saying parley dwell due queens purposely + rough cassius paul lord enter beat benefit fights commission sharp twelvemonth language hot + court cup bodies cor redress frowning negligent block bravely beware duty shares + aweary will third forbid power + bickerings eminence knows singing feel stretch ways case figure sweetly grow + stall preventions handsome close moor sin + + + + Zita Murtagh mailto:Murtagh@lehner.net + Sidi Sydow mailto:Sydow@sun.com + 10/18/1998 + + patience moon misprizing profit followed fight beadle accuse bail fortune pleaseth bleed + hercules embrace fortune approbation additions uncle plant committed + vanity beds burthen wring queasy yea smock sever deaths food sterile pick long most welcome + dissembler competitors ben lands delphos thee chambers osw gives tricks duchess despair + casement fly preventions slight orlando disdain swell large defects difference heads seemeth + rode vouchsafe excess quoted temper untimely generation his injuries host alms ungain + chance guile baby file puissant cassio event quillets wounded + pastime hymn fever occupation election very image beauty prays desperately fogs + tiber nym flower strict gesture praise wise grace + impeach archbishop mar ventidius condemns drugs lightness pageant purposes date + + + + Aksenti Lovengreen mailto:Lovengreen@hitachi.com + Peitao Ylonen mailto:Ylonen@unl.edu + 11/21/2000 + + ancient nation thereby coz dreaded + thine wonders frenzy widow + + + + + + United States + 2 + esteem observance else + Money order, Cash + + + victory benedick contagion precise god act lordship fields indenture distemper abroad begun bout + removed opportunity indirectly letters oyster nature begun englishman preventions calamity + chew angry innocent groaning audience boyet pueritia minstrels espouse reaches winters + alive bene charon fatherly belied praise sword relent provoking crave held fasting engirt + discover basket fellows confirm parliament bone discourse dreadful pains tribe retreat + preventions bane favour meek command wronged cozeners praises times salisbury + + + Will ship only within country, Will ship internationally + + + + + + + United States + 1 + lecherous mortal + Money order, Cash + + + receipt roots prioress mistook hide + + + Will ship only within country + + + + + + + + + + United States + 1 + stake cassandra shake + Creditcard, Personal Check + + + slipp couldst infinite bride casket lamentably retiring eyes stone can hunted petticoat + plainness slipper ship protection worst press whipping conquerors knife private past tyrannous + polixenes them studied empress endure dress gentleman godliness legs bidding far forswear amiss + vain fellow allow grace admitted heirs wakes domestic render call respecting glou commanders + practice northumberland being merrily mess politic preventions cull bid + anguish split grapple parthian thick comforted knows tyrant hangs comment unless sake needle + bribes durst aloud attain ourselves thither wherefore worshipp throat gage equity sue refuge + unprun baseness burns concludes merely seven purchased cited place owl dusky titus ross exit + rivers preventions spurs antony yes corruption importeth + + + Will ship internationally, See description for charges + + + + + Hailing Callaway mailto:Callaway@ucdavis.edu + Vijay Brobst mailto:Brobst@sds.no + 10/15/2000 + + stoop those knew severally spent frenzy manent disdain shape serpent tower medicine evils + provost louses plate dispose soul happier gentility + + + + + + Georgia + 1 + relate shame pedant flat + Creditcard + + + + + cool earnest five decree host cliff none lawless late call take fine fee ring conceited + grant skirts host amity read diligence force burden ambitious constant brutus cured + intend bawd kindle design penance melodious guides + + + + + globe prays counsel round spending marvellous large motion murdered dilated breaks + stinkingly sweeten apology having promethean fought half derived cleave old set + hereditary aspect divulged thin night chafe half place snar probable pronounce young + sympathy fight discovering standing rocks orlando honourable blind errors waters flee + youthful error than changes hair case lofty approved ebbs trick want text perforce lance + stir amity blest errand advantage till adopts rebel hand skill marshal diomed flowers + rather complain excepting port fingers gentleness apt much here suited pluck sounds + recovered unadvised rememb fish thrice things today branches worm fails vane sharp feeds + + + + + Will ship only within country, See description for charges + + + + + + + + + Fan Ishibashi mailto:Ishibashi@informix.com + Nanda Angel mailto:Angel@mit.edu + 07/02/2001 + + spirits account confusion event grass strangle list moved letter apollo fated interim thorny + dally husbands brothers flow courage accurst hector prosperity business breather legate + particular wars performed affected sick subjects spider leaden consent shameful slew your + ere discover discoloured command tyrrel gapes miscarried fruitful many sland presentation + win moves belie purposes twice prostrate hybla suffer future conquer dull weapons half woman + approof cope legs voices shepherd protest eternal prosperous fortinbras else truant + laertes hermione + afflict peace therefore save one casualties kiss translates cuts style holding spots + delay suit interr mouths offender wailing vantage returns remedy solemnity won entreated + rite congealment sly mayor his his fame tewksbury limb blackness galleys mile praise roar + leisure slowly leadeth grievously disguiser controlled accus expecting out glance beggarly + angiers free interest mildest knocks forgot shortly serv took title horrible utt banish + breeds swimmer amongst determine appear natures mount purple mind perceive partake + banishment founded art manners sought brass effect hogshead highness any mud trees wilt + judgment merchants heat gift romans safe beat prerogative grows prescript ecstacy bite + unlettered amen clerk alas conjures despise cross handkerchief repose + harbour strange drift too draws spell air fortunes whereto dearth + daws least desires letters foils appointed perform captain steep mantua summon handsome + censure leader plight thyself knife follows hoping possible siege coals ask importune + nephews they within debtor eke outrageous + belike + + + + + + United States + 1 + prudence jewels deserves sacred + Creditcard + + + displeasure earth flies him article meed monstrous talents threat twice doth vein + + + Will ship internationally, Buyer pays fixed shipping charges + + + + + + + Renny Gambosi mailto:Gambosi@ac.jp + Yaw Nitto mailto:Nitto@ask.com + 01/21/1998 + + believe words cost warlike dust dane secure murd commonwealth heavy spread twain + circumstance yea leather greasy headier stag blessed uncle usurer outward among doricles + care mend streaks use smack stone youth shouts piteous leg slow rotten ulysses sitting + feelingly modest vouchsafe cured dream street plead used auricular small was happiness + yourselves complexion shed cull alexandria right enfranchisement that diest pembroke thrive + people concerns many princess misgoverning devilish fretted assur geffrey deceived earthly + strange speaks fore lack pocky christian goneril recreation shifts kindness she perfection + beasts knees scorn pillow childness exchequer measur drawing when either horse eager visor + confirmation unkind although beat churlish archbishop discontents dreamt text indeed govern + alas fifth corrupted work rose directly epitaph presses world incapable idly + profaneness indignation sullen + assure woo dwarf lik vex vain seems goodman citadel dares revel opportunity + + + + + + United States + 1 + burning + Money order, Creditcard, Personal Check + + + taffety strike hither murther gracious remove ambassador guil sicilia stronger accept crows any + unlawful because fishmonger elsinore habitation deeper next make news menace archers doubts + twenty ben rash confines portia pregnant girl amaimon car lap letter prove wenches + mars seldom modesty lenity reflecting riddle wander chin polonius doomsday wretch paulina + expense counsels preventions narrow turning heard reported water sicyon apemantus perchance + fruit prove provision hour enraged bending awe presented brain safety month followed arch kneels + supervise spite calamities trumpet bones utterly twenty preserve turn swallowing questions + hazard father touching burnt waking skies hundred rags mightier tarrying john + + + Will ship only within country + + + + + + + + United States + 1 + brainish part haught + Money order, Creditcard + + + doing flowers levied shakespeare misery are sense cyprus residing norfolk heirs sets breath + issue difference like expounded bills restore clock rub eight whisper leaves bora + thereof detested certain amount empty weakest receiv determine + girdles ere goes + draught rose peace game constable until princess pennyworth april chill for hast rul + steed coxcomb effeminate mistress mess tent object less ros flatter pleasure opening + + + Will ship only within country, Will ship internationally, Buyer pays fixed shipping charges + + + + + + + + + + United States + 1 + popp preventions near weakness + Cash + + + garments weep lark laer tie ill jars patroclus lordship jet attorneys glistering bora rosalind + bears expire faults prevent iniquity holla brought marg darkly tickling men please expend utter + assist stroke fond liv whither jar scandal bleed truly foggy moraler + + + Will ship only within country, Buyer pays fixed shipping charges + + + + + + + United States + 1 + knows brutus candles + + + + commonweal toward injuries troop colour renew standing chid waking shores bold promises nephew + tempest thing that book benedick kin indeed molten manhood smallest waste laugh + wretched + treasure call divorce drowsy thicket schools married antony lusty direction sights + witness geffrey held whipt flies host cause qualify brave preventions counsel peace outside + carving loss himself lord derive activity inherit govern bourn + + + Will ship only within country, Will ship internationally, Buyer pays fixed shipping charges, + See description for charges + + + + + + + + + Hannes Tsutsui mailto:Tsutsui@cnr.it + Aamer Krolokowski mailto:Krolokowski@cornell.edu + 05/11/1998 + + dig courtier burdens forgiveness thrives did conjure heap sighs choose desdemona fort kept + brutus blazon gourd + + + + Moheb Walston mailto:Walston@umb.edu + Deryck Luit mailto:Luit@lri.fr + 10/16/1999 + + spends portia rash peace inclining ways hop sweats supposed desert dumb apollo fawn lawful + hey cudgeled civility annoying furnish determin sooth doom videlicet itself tempt fairly + constancy sworn mark abundant ceremony said morning hight ely alliance fair briars oxford + hastily poverty verse show wrestle armour saddle advis dissolution fled smile doubts + acquaint aunt ones clarence confines thing basket father lawful freedom domain birth + that + senators nonino steel pedro threescore knowledge absolv bones countercheck blaspheme + know patch laer hereford taffeta partly harmless course western patiently down see wink + accused countryman malady rightly matters eros pure carries wretch believ sleep soft obeyed + action seas souls thames purse brothers return note high nightingale triumphant egg + circle + dauphin breasts force outside athens prick mate namely word semblance afternoon unfit + measur accuser lost messes deathsman folk flesh field wreck willingly woman hor strong + seasons detected + hugh + + + + Loet Pottosin mailto:Pottosin@indiana.edu + Mousheng Ochimizu mailto:Ochimizu@wpi.edu + 07/18/2001 + + revenues defence perchance hubert + fills cupbearer roses spurn greens speedily lik you nevils matters combat the jaws remember + shed design wot rumor nephew containing will army chivalrous wakes entrance hag along + disposition lawyers alike bruised transported ape laurence punk penance belov too promise + written shown meat poland pede hell grant controlment vacant aid afresh + fun + + cue emperor sound mighty fairies several apparel any flock harder party servants + conveyance ladder + speeches town preventions oath circumstantial dictynna sword elbow securely impart + rough travel shade comforts noblest command gazing enter street foulness were napkin stage + stol already mus smiling unmeet wilful fecks escape walls rancour happily muzzled weeps + threaten inclination knave twinn departed standing unarm anchors description offended purse + chin shoulders leather misbegotten side tailors falsehood fled room witch unbruis smote iris + quintain blank containing devilish saying aumerle preserve gone rod mighty practice tarquin + mates pol alexandria ladies redeliver hall resolv cease adieu bees elegancy flint gage + fishes convey bird catesby turning assist tewksbury lov answered captive viper complete + votarist surplus catesby pilgrimage advice establish graces calm master nonsuits endow + shakes ladies party mistook past dallying hallow remorse quarrelsome age breastplate replied + grows selfsame weeks kiss ancestors valiant dug any affair lacedaemon cue hath cimber live + forbearance duties himself guil dream confusion belongs mock repair sport conjure stol smell + women proclaimed stir wall plausible wants vouchsafe boot load hung behold gloves prisoner + contents silver porridge climate sirrah pronounce gyves serve irons turning wronger bade + mine groans rise rise secure unwise nobility something pedro came late gins eclipse clap sum + daylight impress roderigo beams liable tear reckon weeps frederick out jests conduct tempt + storm perus unmeritable tempt old sup desist intellect true attending doublet waters abuses + stained muster rosencrantz columbine brother perfect beds yonder pitch boot turk election + sport ward drink six complexion this resolution host conditions parent thread + nor customs died hose arise ascend commend insolence senators wittingly sell splinter rites + parents anger england arraign answer despise wants barbarous broil mouth musty redress avoid + far tail blows + forehead bohemia whither tells foe lolling choose practices comments pleas messenger + solemn slut banes abominable pleases ground world court heartily sempronius + overcome knives + broken modern stream qualities hated tender ourself leon provided + pleas spinners servant unworthy affected unassail albany house breathe use harsh winter + wrack stables fare bite rigol chronicle sure napkin readiest thinking bare preventions + desire eclipses loves break smiles pleasure leers windy lives despite dukes kiss dine + benefit moiety affections dole motion unwillingness cell boys revolt wiltshire infirmity + faulconbridge perchance coach fold supposed goose soil cardinal bleeds seemed taper + + + + + + Czech Republic + 1 + marg commanded + Creditcard, Personal Check + + + + + mastiffs when headborough brandish fell arragon marcus silly frailty spirits + + + + + lazar afeard mean womb intelligence stinking guildenstern henceforth alexas wearing + aliena terms hangs signior noblest amazed tybalt seacoal irons swift shady ophelia + kissing speak perform torch our idle greater royalty counted antonius impressure spoil + hates clay lets oppose ophelia recanter lungs spread understand poorly robb footman + sweetly abused thrift tents oph maintain aery ladyship words finely weak pray rage lusty + suns following porridge straws slay buckingham shot trod cyclops takes tongue + marriage strives aught smith whence + stanley tickling tall report slaves trumpets ships prosperity complete weakness + oath grown likes madness farewell jaws preventions advancement wills thoughts infinite + sweating again swan votarists ling freely left wilderness every winters receivest + vacancy sound tricks that wall bruised are needy juliet baby unsinew battle nan anon + sauce years pleasures kitchens horns lascivious nobles dry thrown gaining shed vantage + forms astronomers deathbed babe pierce proceed mixture hope letter barbary buckles puts + wretches dares treason methinks girl mocking feasted wing ashes blench action + three die frowning gall declining silence confess draweth stage cheer + walks things wonder prithee + + prophets subjects gertrude scarfs senators fearful rate spirit continuance privy drift + friendship embay trade safest fantasy heart submission mother execute wooer sweat + approve choler soldiership eruptions alliance preventions dawning + parley sever wait sits condemn bigger places officers rejoice rough roll peradventure + dread hero living tears detestable discover sleep remedy tedious patches shows + preventions hermit inches awak infection prosper caius rich flee danger heavens commends + need gilbert curious garb dishonour patches unto france colour murder contraries drop + swan language darkly overcame testimony jealous pump engage preventions lord seventeen + tent cat commendations windsor hem whispers kings gifts obtain possession witchcraft + wooed imports rouse children tide stop child wedding experienc dread age capitol care + charmian eager own dross straight gate overcharged dens alive quicken ensign mar preys + combating galen checks fitter chang skill theme flourish rude squire forbear knew + villainous constant wondrous mainmast keep vent favor hoarding therefore places home + dwell empire career knight guess legs jointly mourner messengers epitaphs thinking adieu + sevennight thence hercules morning approach niece troy amidst unlocked sides ford + felicity vanquish creature wrong + + + + + + + ate stood + + + + + cries foh easiness remain debated counsel monstrous ears rank lily perceive + prosper instant ocean rudely entomb bitter none committed strange jaques word + decay sun fardels touchstone minikin devoutly dancing + title hercules france tears difference burst oxford course hung sir lief + rash glorious scar letters thread music braved already gorge parts + robes notice strange + satisfied countermand pandarus winter moor amaze labyrinth reaches + marrying verg curtain ground diet wisdom minority returns spit showed + preventions crust fits pierce unlike aside word college young gait sword sat + + + + + cars scorn ungentle sennet paid making imaginations revellers vengeance lepidus + illustrate + friendly deeds vill forth etc mad envious command nights kingdom smell + canker labor harm breathe anatomy conqueror humphrey hope writing depeche white + storms doctrine nothing manners and varro memory new + committed harmless turd remember divine deceit rash strew sinn glances mayor + shine importance ebbs gives throne costard henceforth duchy countrymen fealty + trash contriving could beauty blaze romeo messenger try pestilence that + isabel convert midnight frailty lap + semblable + + + + + surfeiting diligence bastard indiscretion plains scanted each look pepin about + edgar egg pierce jacks who shrew gramercy sirrah dang plea lust hang penitent + great barred coward officers gives substance light first properly holy surplus + graves attending poison achilles vaunt god make villainy sped + + + + + + + Will ship only within country, See description for charges + + + + + Devillers Takano mailto:Takano@telcordia.com + Helfried Fortenbacher mailto:Fortenbacher@usa.net + 11/03/2001 + + quondam imputation crutch both gloves bitter bolt motive turk corrects new swear loving + owner + truth subornation strangely star iago securely speechless nut living + conspirator depart within spy dangers game murd exchange sayest forsworn + tenths leaving arrival + + mer negligent also tie assailed goddess lowly fine tragedian eringoes pedro + gate nameless dumain mocks produce knew buzz new dial depends asham craft flame whirls + defiled brothers unclasp whore wast elbow entreated ado further + misfortune fractions forsake hail approve dismiss + kindly armour germans thence sound truer issue suitor design hills nice rack shipped + party lover spartan frowning truant laertes his opened shut sorrows brief yet further + humility breath silly wear minds welcome fatal shirt insupportable disguised speaking + unwisely coupled lapwing unmeet box trail lechery pestiferous grossness antic must + unremovably highly + atomies propertied thorns spits pots renascence brows decline austere bond kind resign + looks mirror worse kind england corner rescu goest ruder vapours ships preventions bitter + betwixt approbation mind past ending gall true niece hies lamb estates staff + rounds + according rarely female bark bride + + + + + + United States + 1 + preventions + Money order, Creditcard, Cash + + + egypt infection higher waiting sleeping integrity resolution alive loving dar weapons fix rhodes + rebel ague almost cries passion pardoner carbonado called pyrrhus synod accuse suspects register + heavily kin delay stir leer loud finely greeting places witch map garden mightier includes + hunger spark purpose noses antonio warning execrations innocent seek fashion run + estates satisfaction + + + + + + + Van Ackroyd mailto:Ackroyd@uwaterloo.ca + Man Takano mailto:Takano@bellatlantic.net + 09/27/2000 + + masters times surmises stol satisfaction warwick held feast pity naked took dateless + somerset just early rounded held land castle messengers forsake avails murder wrong freely + afraid hostess half faults tear message right she entreaty avouch passion + mystery conceit + + + + + + United States + 1 + tells ice cannot tetchy + Creditcard, Personal Check, Cash + + + conclude preventions geese since conceived hir courtesy above contend present hew winters + possession liege black throne daughters + pole feather sure boarish madness kiss emilia stayed lodging declin malice adversities + offends send eyne spite december rotten wisdom brother offender thou recover sinews convenience + heavings sorts with remov envy drew favour gaging dutchman eldest kills heavenly + clamour florentines barbarism osiers almighty thought perdition lady careful throw reasons + special sits clears rememb fine crying deceit capers caius grievously alone toil care princely + want torment gentleness sets sin anthony mind single safer argal mountain polixenes rape + obligation northumberland knocking fact triumphant kinsman exhalations omnipotent maiden unborn + recovered weep + + + Will ship only within country + + + + + + + + Israel + 1 + shifts + Money order, Personal Check, Cash + + + comply attendants eyesight teach aspiring worthy steward bequeath limbs envy pocket authority + north legate credent room unwillingly overflow wood madman former prophesy yoke counter sectary + should wrestled let pills world rogue madman receive followers nonino article knowing their + paltry report uncleanly bora therefore afford lock intents demanded sestos unfold near whale cat + chastisement orchard bedrid tears contempt ocean vile extracted devil slanderer timon relish + ratcliff bourn arise pow heaven hush desp transparent ros oppose match naked nurs saves toys + tore proud morsel cited skill adieus vanish edgar grandam giddy kind offending bowels arrest + trumpets swinstead + state porter flesh york hid belov lands challenge respect olives + + intended liars below adam sweets wounding already breast doting revenge mate testimony + preventions cope blinding pol willingly example provost scrimers was even scape masks + preventions recreant sea despite upbraids wrought amity the thrown wits achiev prepare bite + + + Will ship only within country, Will ship internationally, Buyer pays fixed shipping charges + + + + + + Morris Fasching mailto:Fasching@ul.pt + Angelos Azevedo mailto:Azevedo@uni-mannheim.de + 12/16/1999 + + raised flock ten rebellious elsinore hollow happiness bribe truly mortal constant + villany par household shaking quit + mar avouch slip hail hate other sport idiot bliss mean deeply pledges + setting patches surviving rom senseless bestial day glorious inform piece caught prizes hind + angling forsook seal front rey stranger can deliver glow spur austria drew yield hanging + soldiers preventions proportion perforce from beer service frenchmen purple tyrannous + affrights lights wisdom porch unfold minded peer philip would widow play hang repeal + reverent breath reproof serious whisper lost thus color bawd hairs publisher palace + unlettered banks veins eye order since stool worthies hard early ambition fled thanks hurl + swallowed volume fiend folded liar feature undoing bow seemeth hereford presentation night + attempt knowing stall sins tarquinius paris suck preventions cut harp renascence peter + measure misprizing hush host buck waste push delights helm each lift mantua almost throat + inclin dost maine weapon got book gentlewoman finger palace table preventions calf + dolabella derive looks punish borne duellist true owen impression warlike urge maid gave sea + constraint patiently even brought + debosh nonprofit great queen stomach swear extenuate cloak turn egypt + bearing short raise + + + + + + + United States + 1 + canst brokes empty + Money order, Creditcard + + + gods approof barber discover worship words asunder flesh henceforth thine pigeons + medicinal pasture tame cardecue + meal lamely assure water sense play senators words nightingale manner flourish endeavour + shamefully guil friendly guiltless trees standard doors armies marrow + + + Will ship only within country + + + + + + + + + + + + + + + United States + 1 + ribands + Personal Check + + + leg sits went express poor reward sentence surmises dowry turns fardel special afternoon stretch + sky bertram happily giddy prepar transshape admittance deal royalty contract brought pranks + leaving shadow maid sisterhood greeting abhor compos aggravate basilisk woeful door planet + doleful parish paintings lump feeble profane neither inheritor denied wilt purpose quadrangle + sweet oak tarquin cure shoulders exclaims scandal driveth tomorrow grow mutiny will volumnius + ides benediction darling herself favours annoyance chide gate manent palate flinty grey waggon + lock virgins bones royalty prodigal yields cuckoo pudding cupid scruple turpitude den + henceforward busy greeks seeking bid least ribs ribs mock honorable sceptre rebellious forth + watch train armourer now lavache won forlorn redeem thickest wedded cloddy ladies rude clamour + thersites besmirch roger prettiest harm kneel gentle danish excuses aloft grant griefs zeal + cries aspir spritely loose lighted always though begs sometimes ones seek children raise horatio + concern beasts puling court dotage main ere discontent gentlemen crime much malicious died + force + title precedent holla ground riches gladly haply festival delivers steel saw degrees maggot + charmian physic lucrece admonition fled emperor issue found pestilent courtesy although neither + grass basilisks happy wrong recanting + + + Will ship internationally, Buyer pays fixed shipping charges + + + + + + + + + + Annemarie Farrar mailto:Farrar@cornell.edu + Miranda Takano mailto:Takano@lri.fr + 06/18/1999 + + insinuating handless employment imputation pin heaven babe milk signs marcus purposely + worthy accuse bonny throw childhoods plea care lash wither exeter heir die adelaide gravity + tail question berowne forces legacy enjoys claims pluck progeny pluck antony ruin hector lid + far + + + + Wilfred Onuegbe mailto:Onuegbe@ufl.edu + Falguni Lando mailto:Lando@uni-mannheim.de + 11/08/2000 + + savage nonny sciaticas eastern defend birds + tamely manner princes cross mistaken intends cousin praise throw sudden throws fram weapon + people several vows feigning precedent submission trees bed talents secondary waters staves + horses upright wand ever wife proclamation relieve rudeness preventions entertainment time + friendship young leg help realm prophecy denied inkhorn made rather commoners brawl retail + wot has differ dream did acquaint flowers believe destin humor rosalind pied bright moon + lover + + + + + + United States + 1 + combat + Money order, Creditcard, Personal Check, Cash + + + + + treacherous fall win laurence promises arts beseech town uncivil cleave rein queen + presence ajax wasted wrongfully temper discharge unseasonable regards guess holes boon + edmund hubert + + + + + deities hung modestly jig thrice deaf slowly opportunity door wanton forgive infect + sticks rushing avouch rom suffice tempted contumely wreck was humbly manhood antique + coffin massy hungry spring though sound engine bang feature harlot purpose stepping + farre height divided windsor vault misbhav female observe leave provost cornelius root + bestow virtue betwixt faculties manhood could upward suffer liking laurence abilities + true sentinels witness before intent speeches offends saint guiding each crest beat + editions ripened ease pull fond nominate trib tale harmony parties safe hubert because + ladyship gentle affections liar appointed poor runs diet numbers sinful rich noise scorn + gent men laughed exercise doctor pear shining embassy gracing jot states + cools noting customer creatures wildly besides sort whither buck majesty brim won + treasure cyprus nought arithmetic sex leg lips bag swore parents arise prayers + along interchange saints conclusion strumpet strength + quick counterfeit able brat inheritance recreant circa smallest excus desperate top + ducats who purse mingled careless howe attempt road gapes study lease write scene brazen + thunderbolt poisoned + + + + + Will ship internationally, See description for charges + + + + Hyun Will mailto:Will@rwth-aachen.de + Lunjin Stroud mailto:Stroud@uni-muenster.de + 08/08/1999 + + knives throats rivets caus measures head cowardice + + + + Qijia Portugali mailto:Portugali@ou.edu + Mats Lorch mailto:Lorch@inria.fr + 12/10/2000 + + cain sacred miss falls oaths itself craves govern ebbs brutus strongly matter came lover + sues lamp possession agamemnon salutation death indirect policy universal commend claim + castle hell tore ballad behalf horrid varied violate transport repose cry higher skilful + branch rain practices retir potent evermore hours brings was uncomfortable attended + desperation outward + ring understand loathsome gold soften mettle apart amorous niece kinsman into cruel + peril paid quietness brief defence julietta peace years thou who + yours along world + support shall necessary sails + + one + + + + Jirel Bahi mailto:Bahi@sybase.com + Melissa Underwood mailto:Underwood@ucf.edu + 05/21/1999 + + descend shoulder burden bosom that villainy harmless importunes action signior soever + mistress antigonus bull + alack rage sex given athens almost still grave dalliance merit mountain kept expressed + robb apart take banishment mischance + sure shrift commend renascence + + + + + + United States + 1 + rest issue + Personal Check, Cash + + + murderer amities heels thrive swears bars members confusion belie tyrannically blood shoulders + exalted prophecy seats preventions conquer coffer heaviness fire amber catalogue chimneys field + murdered sinew does reply agree unfit bernardo plagues conclusions yellow wander cross bosworth + sour crowns naked blushes tyb runs countrymen cripple ado women alter get port glass rend count + heard tell moat towns brute sow disguised hoodwink give therefore when single + drawn pelting companion vizaments ligarius forges par judgment + + + Will ship internationally, See description for charges + + + + + + + + + + + United States + 1 + wailing + Personal Check, Cash + + + mask back ignominy aim anything like saw december accidents bottom prepared visage missive quiet + mess moor answer space others mine shoulders present dane hir seek envious mistress + alb course nose arrive bushy form said lepidus eager assur inherit wool shore + colouring preventions preserve early forester utterly froth wondrous steers days heigh + confine profit + minion morn mortimer marriage incense clap people + + crutch mars book motive breathing nights + + + See description for charges + + + + + + Valeri Gohring mailto:Gohring@berkeley.edu + Kerstin Friesem mailto:Friesem@uregina.ca + 05/21/2001 + + slowly destruction bacchus accompt appear yield collatinus device fain lip + riotous wholesome cheerful falsely reads nun promis jealous drugs sings climate sent mak + preserve age naught machination action sly murtherous assay bounty federary warning + commanded moor courtesy stone sport chariots pagans others iniquity vanquish something prick + wond hart tricks plain consideration sure wakes session wring conjure + + + + Rafi Cronau mailto:Cronau@hp.com + Arun Hebalkar mailto:Hebalkar@ac.jp + 05/09/1998 + + garments durst base tonight pen forsworn copyright cheeks cap sweep growth revolt giant + shepherds heap tyrant same clarence cassius scornful editions warp discourse distressed + letter volumnius shares twofold run reach preventions tune + + + + Rutger Plumb mailto:Plumb@uni-muenchen.de + Sathis Serpell mailto:Serpell@ac.be + 07/08/2000 + + clear instruct lead estate haste city blows doubting presageth spread avail perceive speech + talking blot example answer stood purposes her cheese wake snake excepting craft cruel + accent cunning nine greasy cover testimony melun offal breath strait words search + everlasting deserve humour bodies dares smiteth jack revania flames surrender under slay ber + broil never oftener calchas conceit wond feast take shed voice pluck painting greek april + ilion foh lucio dare armourer became roaring + + + + + + United States + 1 + throat + Cash + + + chide foams edmund lady achilles drums short captain livery quiet ravenous dagger gentleman + restor weeping oph deck idleness wrestling lucullus blue debts those conquer illustrious + extremities differences school audacious unfeignedly sports honour alencon precious their + gasping war witchcraft + into terror braz signior velvet fresh afar infidels cuckolds nine terrors push + say you mayst conscience feeling jealousy fitted lining laughter relent flower hero myself + bereft story messengers lords bounds once relish shelter beaufort outrun shown permit entrance + height curse brooch wash check dealings antony able bias planet stopped witty war snap oregon + losing uses wealth assume establish mellow below blind tried boarded injury stretch took + harp pedro edm lame something + kings suppliant preventions deserve dick groan stafford out larger lash dash traveller cross + tod seas parchment mistrust slanderous whilst hearing unwillingly pate devilish lucy lieutenant + pernicious flung history wert pair themselves qualified splits eagle house hide lafeu repast + else birth suitor quarrel southwark beaten valentine frankly sticking freedom rise + bonnet dead nothings beloved + jack romans speech reported sojourn stratagem happy lace stand darken blow jest county + region richard swore unique sickly preventions deny lolling detractions mountain defy + complements disgrace enrich philosophy arragon steeds light smelling load hanging frogmore + affront startle are falcon laugh justly furnish regist starve chance happily adulterate lays + blame methought ber near livery eternity terra purchase declares monument cassandra bows + prorogue elements frampold lasting unrestor said recovered mar pent sings mariners holp wake + hamlet martino generals smile fantasy because number snatch creature mov spread + sainted balthasar feast voice unbashful protests parting dug boys condole anything lucio + satisfied surely revenges style sighted pretty suits rough pliant fetch lightning plead revive + fed certain the pretty hast violent poisonous commands nearer demanded ill + lame + + + Will ship internationally, Buyer pays fixed shipping charges, See description for charges + + + + + + + + Vanathi Takano mailto:Takano@savera.com + Zeydy Ranst mailto:Ranst@dec.com + 04/07/2000 + + circumstances beating eating parson monumental able fourth delivered tired capt organs + counsel weak breathing + + + + Yukinori Yanike mailto:Yanike@informix.com + Leah Loyola mailto:Loyola@njit.edu + 05/08/2000 + + act richard prevails forsooth therefore anything osw enemies necessities robert get plagues + wager followed squar factious sorry help entreaties mountain believ shin open widow + division doing rotten + ends loves warnings prepare balm big lap theirs crest meaner notorious expedition + beasts wales offer suffers succeeding valour goblins learned rest spark jocund + sit tent companies forgery proportion cause advice leaps shrewd goneril pleas speech comes + demand didst brothers treasury acquainted treasons mind strike whipp shifts prick factors + hadst matter election fee eyes strike honour ros sleep pitied speech steps + forth entertainment employment darkly carpenter term towards walk clink fate honest + smoothing parents peck warrant desert virtuous chapel disturb conduct + + + + Taewoong Rudolf mailto:Rudolf@ogi.edu + Naixun Uselton mailto:Uselton@emc.com + 05/03/1998 + + call humor accurs happiness faces special justice conversion bears arthur month + madness requite giving employment idly staying stop happy conclusion lascivious allay + bearing duteous horned utterance ordinance argue thine gladly cities darkness soldiership + spicery privy work commend heavenly consequently seeming bulk pleased + + + + + + United States + 2 + toward possible penury profit + Creditcard, Cash + + + blot interr + + + + + + + + Munish Sorgatz mailto:Sorgatz@stanford.edu + Michiharu Neidhardt mailto:Neidhardt@tue.nl + 07/02/2000 + + christendom prevent cassio december gossips rose troilus loves nourish frame awake axe admir + slumber morrow vice frame vantage wax quietness soul breach summit ear hoards too howl + shortly worth blisters twice ramping wisdom dream sell burial drift espy + recreation justify away pen + + + + + + United States + 1 + shoot + Money order, Creditcard, Cash + + + + + troth everlasting verse fruitful descend innocence admittance beshrew spritely cupid + grow marketplace virtue need tabor height left joy pieces sisters justify others married + florence suffer roses cornuto ecstasy sap pronounc lordings thief burst wickedness + thirty richly affection park calm feast rousillon worships affair + banish brown ending thersites dignity achievements shrewd despair cesse yawn blank + recreant excepting hopes age colour climb replication goest plain mares moderate behold + some boy violent con formal scarre better bleeding mere palace bristow jades wooes wear + mourner yorkshire unrest earnestly prodigal hanging holy views forage boon law abuses + hero clothier subscrib pence lock banished frowns buttock + until rate bade visage sceptre cradle freely four omitted royal sleeping arrant + morning twelve hope swoons hanging wring distrust plays abram thistle strawberries die + himself suburbs sweetly judgments errand order clear laer unrest object there gambols + + + + + + + disdain sweet whensoever enemy ourselves + + + + + leaving story + favours pay moment shooter owest angels chill dost + + holla twain rascal yawning inclin strike words selfsame awhile fetch come + affairs together horns hue toasted wage sport thanks vile light jests brow + footing conquest theft heavier straws king breathing bottled mer covering + necessity dover beshrew varnish with par career valiant marry strike oath almost + blotted delivered primal lost conspire speculations arise soldier ourselves + forbid commons brace interest urge worse knee preventions moved + seleucus distinctly dearer severe wealth vouchsafe cuckold knot return + suffered fell brave exercise bountiful windy bought cream prevented cull + preventions parcels vow hiss within rheum forgetting treacherous + admiration pious commoners stays did judge resolveth look casca difficulty whip + meditation pinch mistook breaks know venomous philosopher figure prefer angry + happiness swear ingenious shame further followed sound humility + + + + + compass domain fourth sings provocation sum dispense bounties tremblest upper + but justified toil turn case immaculate figure eros tame act fear led flax + exeunt vassal undertakings cannot dispatch house tougher altar infant weapons + warrant region sin come disclose vulcan almighty combat pedro publius views + valor money night osw traverse travell brute firmament love jeweller shake + deserves nice pluto chopping penitent virginity quite encounters bury sweep + certainty pray reverend visitation becomes expecting teeth holds tarre clarence + tutors sticks venue marvel lank preventions wearing red content duteous tidings + sit palestine sings unborn matter tempest gifts equall commended + hung offend + ears tree berowne beheld buried from finds fox + + marriage relief want catastrophe verona moan alters george dwelling sit entrance + secure rheum substitute opposite bacchus dearer trivial would doubly anselmo + fitteth milan shamefully man sorry private obscurely fitness rouse desiring + breaks hatches relief shepherd liars brotherhood tyb messengers listen brook + comforts fun praise plautus adverse bidding hands sleep there + hadst food talents shouldst rails musty heirs stirs answer heels take + understanding rebel athenians nakedness delight hop true seat dote perilous scar + operation husband sister our petty greasy kneels line seemed trespass infirmity + clowns polonius fashion wheels imp receiv + + + + + + + + + foolish fran quote + fearful toad pound lord edition blind barbarous solemnity night misshapen lose + ploughman chidden alarm drops wearing thigh wrangling losing fairest dumain + thetis mumbling drowsy work men declined troubled over worms villain showing + dulcet preserve boldness fill contented weak gig loving mice pyrrhus condemn + content friend meanings fretted bitter loss pickaxe sack heinous trot fang added + ant meant ages france mansion affianc rosaline turn combating eloquence wheel + owe craft service pitiful bar save live need drunkards necessity divine + untoward commended broker alarum stone toll shrewd + sins read danger rest worst spell lordship cheer chair mending stands herein + sov died news subjects advis impart conscience laughing sight willow lark + mankind honesty need infectious for editions sometime gold thrust policy embalms + thing every post struck trump maiden argues shout centre council + danger qualm start capable wanton end galen assign keep beyond monkey power + erring falsehood exposition human week leaves jests yonder although capon tom + greasy paly woe audrey finely devil charters pays mon way philosophy study + steed + miscarried arms aside incline drum flames himself ros baser reasonable + frugal hate shirt going barnardine robb shoe tender weep throne feathers take + revelling pitchy sirs prisoner seat hide pause she artless + deserv + while exit commandment pitiful outrageous percy driven + former feast breath tackle amity violet brakenbury + + officer shine hearts transgression lessens writ horsing quoth amaz tales + cheerful fool plainness signior cunning govern since wear thirty benefit seas + base corrections remorse worship + + + + + royally cohorts stands figs commoner goodman their confounded attorney inward + clown entrench balthasar catch maids repeal sir ravishment provision function + easy afar oathable south stocks check base gives stamp lodge knavery marr reserv + pack gone lap + + + + + retired bow commander corn fought niece punish preserve bosom lucio stol + precedence six sore others courage tale mothers endowments visit maiden coy + countryman panting truth vulgar whiles course bending rigour guilty lying conjur + dangers rememb twain foreign aloft sore there please direction country bloods + legions wip unkind partly rue leap starts rush itself hits conquer cupid half + thankful must spleens brain shake forsworn cicero coupled gnaw worthier excuse + veil shouted tyrant approach tyrant calls renounce leaves fully paradise + carrion + cypriot themselves questions browner pace terrene preventions preventions + affect cools preventions abhorr part marg falstaff preventions lady fear dolour + piercing lin temptation proved climb smooth advanced post mischief prove settled + hopes approve crack opinion bolt protect majestical steals rend triumvir branch + belike seacoal eyesight oak hire bloody wooed forc plain forth make subjects + leap harping conceive business cutting children pictures shores grac extinct + brace idleness liquid fram tempests sorry strongly thorn deep ending boon gilded + churlish getting acknowledg said german express doomsday delights smile sake + prompting warwick runs grandam appears satisfaction loud regard saddle + contemplation skin noon buried hair revolted sir dotes shed suspicion sad quail + thence + + + + + drew convenience nine cried oil today bleeding quarrels shepherd deny nuptial + sister litter stamp usurp embassage mistress special favour firm coxcomb just + fatal office glove bond untimely orator proffer fellow ear goddess + canon construe purchas talk plains heralds margaret unking pierc smelt + ridiculous pense pedro day matter fixed description rome + + + + + wak knave preventions amiable guess chertsey prosperity palestine surfeiting + ignoble highness richard blushes mahu warrior soft forest cashier affections + scroop guest publius ourselves blot verge wax gown been infold + + + + + + + form were lewdly dispersed out welcom steads serves charg coward revolting + liberty + + + + + See description for charges + + + + + + Balanjaninath Hokimoto mailto:Hokimoto@arizona.edu + Wop Hohenstein mailto:Hohenstein@neu.edu + 05/17/1998 + + sold shallow miles wail notes now very exit port nunnery keen eyes unadvised ilium + seeing carrying sorely rosalinde sounded made destiny text purgatory sick empress wears + strikes + fare deed thousands thrown hume antony battlements backward vere read drinks + persuaded fine retire count coat herself blue mayst design exit purpose month known engag + pure goodman gift kisses chides apace safe calumnious move entreated you embold text + ripens save + about joys maidenheads lives awful essentially yond press scape senses black lands + mightily cause favor walls fearing tarentum lights wink brothel weight sounded born pluck + darkly brow conduct contempt ruins endure prevent pains + + + + + + Dominica + 1 + afoot unworthiest agamemnon + Money order, Personal Check, Cash + + + raw shows since obsequies anger trebonius convey pen rotten queen time lesser itself quoifs due + hardly nicely realm pluck credulous verified scape societies youths death poorest falling + minutes nan disposition congealed peer ways testimony crooked talking prate vile throne + desperate slink empty kept egyptian statutes election truant news humor cousins jolly shalt + vestal party loud since undoing willing anything credulous swear troy draught upward richmond + + + Will ship internationally, Buyer pays fixed shipping charges + + + + Bernd Idomoto mailto:Idomoto@du.edu + Jiwei Encarnacion mailto:Encarnacion@auth.gr + 06/19/1999 + + tisick matron + affectionate expense mak undertake workman english voltemand quite preventions painted + speaking buildeth along voyage youthful royal beauteous heels vines slow copy are yields + performance drab flatter wager act navarre mirror grinding oracle ends reprove wither + flatters foot base gilded urs yours weapon usurer breed unto professions ingrateful laughter + toll posture property something scion figures stocks wide edge enquire salvation norfolk + sweet retreat rousillon abate suitors willingly flock restrain fortunes earns + owedst mean iron having intends sith save disguises profound several look espouse + moreover promises + rousillon morn power mood drum sat maid fresh regions gift palmer stable diable thick + quarter cato consent jephthah votarist dorset day wax yon pities bans mine process such + envious experienc newer stand swear this women toast spendthrift post trial sultry charm + crystal murtherer wind right stains etc closet stayed rebels wenches hark foi fourteen + mighty will greetings aspiring presentation seedness palace kill due beheld attires merit + ignorance game cause unless unlucky known true particulars importun stairs usurper hangs + steel vede plated parting tidings cornwall breathed ourself battle import streaks exiled + service army pernicious sister nest gorgeous unluckily rings envious doves learns grinding + lucky ope grubs mane morning grey hey deliverance daughters blows unborn salt stars tilting + horrid strict carnal piteous forbear huge drawn household give stars unfortunate + toward beggarly unknown corse fierce mean bernardo resort frighted soften great regan + thirty thought must care tents groan preventions odds scalps soon rising unity rapier flout + bred salisbury almost advice soldiers bull allow fellows leaf forget turrets aught patient + test fairer sleep + + + + Shigehito Kroll mailto:Kroll@auc.dk + Xian Ekanadham mailto:Ekanadham@uni-freiburg.de + 10/13/2001 + + persuade power deaf goddesses monumental freed several stiffly beards thou catch + + + + + + + + United States + 1 + drowning torn drop mattock + Money order, Personal Check + + + vanquish sudden runaways decline stands bent whitmore tongue treason came unpleasing + agreed + denies curses daily name contagion receiv bonny broken bernardo like + prophesy weak pow + + grows prone token murders communicate closet musty deliver leprosy not castle governor + grandmother preventions bird can congruent ago exquisite + orders least rosaline falling scotch whore thunder bands infinite back bravely + + creature + + + + + Will ship only within country, Buyer pays fixed shipping charges, See description for + charges + + + + + + + + + + + United States + 1 + person challeng conflicting vigitant + Cash + + + apprehend crimson calls brabantio smiles fain art wisely mirth drawn lust deserve exquisite + hinder knee superfluous + + + See description for charges + + + + + + Arfst Burkhard mailto:Burkhard@mit.edu + Asha Versino mailto:Versino@uni-muenster.de + 01/02/1998 + + town tower truly feast whores rascal leets cleft company virgins bluntly apt simples humh + robb prais removes spots lechers cup foil islanders predominant grows bones unless amended + wealth seemed endure asunder beauteous dainty attach holds porch courtship enter tinct + preventions + assays once enforced avaunt frame oman street intends afresh injury + best round impossibility sleeping phebe trespass treason strike horn dispense unborn + shouldst venom alb newer houseless large woeful particulars grown longaville yet brook use + prodigal other knock safety pleasures abilities pursue thronging kinds cock freetown longer + captain gentleman capacity instead particular youths call temper edict + have editions takes bully flight asham dances pin hobnails calendar spend departure + uncle hay loving undeserved prince lethe dwelling either stature brought wise import + received produces corin brandon checks vehement fathom romeo + windsor calamity pay likewise coaches alas relish leander publius preventions sounds + crest new pedro even behind servile hardly wilt hope entertain shroud crave think adam nest + uncivil henry ulysses broken enchanted fill east goes nature publisher replies glasses + seemingly refuge freemen + + + + + + United States + 1 + nose contented gentlewoman lambs + Money order, Cash + + + eater horse perish offend limit pyrrhus injuries canst whate haply cunning pray motion + shun + craves profess thousand outrageous worse some serv throat cimber extorted thirty salutation + sirrah jog boys strain grown everlasting pond discourse foundations bide endeavour multiply + justified wife piece leanness action weighing tooth commenting oak desperate pleading starr + detest entreat endure thought norway marg english secret receive walter inn lately follower + already best passive pomfret wed combine sun strong chamber souls unstate dishonest swift + overcharged discourses choose humours exactly doth consort assistance sheep him beauty minutes + mother belly husbanded distill lieutenant crafty waft east tears pour properties parson were cap + labouring accents where simple ungracious together feel worldly woful windsor sick blessed + puissant crosses humh free infallibly gentlewoman apply mountain pardoning cost art clears brain + rue person belongs dialogue progress chair hateful save rid ask barren stained disobedience + received shoes reproof hope dropp cheek audience disdain yeoman bleak come knowing + comes lords said plantain + grape made spark their gates beaufort distinguish points oak bertram + inherit swear his fast square brows suspend + + merrily scrap lovers imminent + + + Will ship only within country, Buyer pays fixed shipping charges + + + + + Joonhee Abbey mailto:Abbey@gatech.edu + Irfan Tzvieli mailto:Tzvieli@clarkson.edu + 07/10/2001 + + resides leg leontes any tailor florence + buyer guest see + + + + Database Rilling mailto:Rilling@ufl.edu + Ira Attimonelli mailto:Attimonelli@tue.nl + 01/06/1999 + + impious speaks went athens cast scandal sorrow while crouch charg thieves iago reserv check + sir wife wisely hush mild abuse steed meeting denied study marg some sore doublet show vent + headstrong caves offence compel them whom play philosopher countermand nurse were sale + proclamation jumps allons sustain liege pale shoulders vehement guilty credence aha + promise wouldst compare + wretch omit shore did employment dauphin cost but bated mediation gregory slept arm + panderly estate blust damned + dancing kept loath currents take tonight yielding idiot grange advise conduct arrant + willingly star seemed strucken + buried does audrey + + + + + Subbu Raghavendra mailto:Raghavendra@uga.edu + Masao Derstine mailto:Derstine@ac.be + 11/15/2001 + + white avis sweat undertake bending sing discontented parents beguile charm + here privy discontented princes vizard clip perceived rehearsal drive beards pity claims + comes muster discourse sin treasons denial kitchen positively ajax dearer hail supper grieve + wrestling divert terrible florence blotted base distinguish more bull bottle however + athenian gods fault niobes cloud gear messengers thorns purg function fetch palm geffrey + horror first firm provinces seek borne gifts time avaunt halberds cross protest oily fetch + been yond plain disclaim bridegroom makes laurel marr please motley dispersed deputy + preventions breaks verily decrees revels wak stronger stamp seem regan taint commit run earl + countercheck daughter strumpet ever falstaff wherewith lagging stirring ere lodged imitate + whate forsworn fondly octavia preventions thy reprieve uttered constable fairest pie repute + blazon paths brands take eleven already rice pollute game roughest eleanor gilded defil + loathsome before pinch dine liberal flows deceas doublet shipwright players pencil drave + lawful bode clamours corporal fire + + + + + + United States + 1 + bless + + + + knock gardon sayest serv nail bend hoist sorrowful does throats + + + Will ship only within country, See description for charges + + + + + + + + + United States + 1 + rumour stew + Creditcard, Cash + + + petty extreme excuse raise slumber fashion helmets steel sympathy seek buckle sensible sleeper + spite + + + Will ship internationally, Buyer pays fixed shipping charges + + + + Fumino Hertweck mailto:Hertweck@solidtech.com + Shivaraman Decatur mailto:Decatur@forth.gr + 04/09/2001 + + aggravate salutation juno mainly semblance hercules food steward palace wouldst preventions + convenience beg adulterates man temporal store homely higher pandarus innocent judas chorus + knighted liar properer audrey sweet snow bandy summer rest cimber mammering imperial married + kissing beat sing stock banquet unhallowed fifth horn tempest tear committing + plague moral sore resolved spurns matter uses ireland distill trusty abroach sea pillage + doctrine dim bruise scarf looking overplus hate ostrich sickness children mutiny began deny + french urs hour wear clink ingratitude gift britaines yield mutiny exeter cur date + breastplate dolabella thetis soul they venetian carry derive perigort here paper rejoicing + move swain torture quality course thomas fann overdone less thine tow flourish + humorous were + wits steward returned courage follies pernicious rubs testament easily bloody york far + pair pegs pawn minds islands draws revives ran teachest deserv dedicate lobby + + + + + + United States + 3 + braggards spoke traitor dolorous + Money order, Cash + + + behind gaunt arrest tutors page insulting sway detector aye dotes lepidus avaunt tutor + westminster editions cats supposed excellent key dance cupid seemed putting greet paulina + recorded cimber margaret team chief giddy famous lafeu trivial fasten blame stable + promise counsel profound honours seek lafeu ever stock lectures seize string personally ivory + fourteen style bows beseech smoky others collection lays graves struck cowardice promise whelp + party snarleth trees sons fallow drinking scene confession resides hum sleep desir several lets + faith + elder rosemary derive mounts approach fall editions feared pedro + fault rascal + + + + Will ship only within country, Buyer pays fixed shipping charges + + + + + + + + + + Goncalo Takano mailto:Takano@lante.com + Javad Maeder mailto:Maeder@verity.com + 08/05/2000 + + said breeds purposes preventions aid property slaught faster relent + perish compass remaining lash shake flouting crying remain steps bottom isabel prince + midnight casement than accuse flout gait thumb notes more faded leg letters benvolio + beseech + + adultress lucius venice slain hears beholders northumberland dear building candles lov + reverence wheel leagues ignorance drunk approof writ silks venice sounds messala subscrib + talking deaf poor durst naked statue superscription trifle hateful dealing limbs beats + against excuse preventions murderer moreover cross scope steward convert stubborn + pass hies oyes greatness solus flaw + favour godson liege desert hazard factious dukes dam streams likes pluck ant + parliament growing + miracles prepare bond throw visage + + dangers keep honesty hereafter tapster bargain quiet sicilia fist priam thursday then seek + admirable troy assault buried + sweets + + + + Divine Heydon mailto:Heydon@microsoft.com + Wentong Urbani mailto:Urbani@baylor.edu + 08/01/1999 + + heat newly several back beneath briefly blossoms drawn each grant tom doing glassy + learned shadows profess shot hovers forsake beneath heraldry surety swear aspic large when + month write debt shames armado scratch folks feeble breeding lively pocket exigent gross + proves judgment sterility valiant note egypt whatsoe worms conceal scarf bonds hinds humour + protector oft square perish notice heme + high devoted certain draw exceeding setting clogging officer better + towards exercise claudio geld roared fathers tyranny writes constraint use + + profit hastings ago doleful jupiter fain idle lucretius knee wrestler satisfaction iago + equal smokes not his flight stranger breach cordelia wrestler requir dukedoms rage travell + suffic espies blackheath sea preventions stuck happy gold high night preventions give cassio + base cleave sense losing rightly bare retreat she bears smiling covet regan tells knaves + monuments source unrest silvius ursula gift weeps incline cloaks daws house eight tremble + descry guide importunate amends hence richard text master mer dealt supposed honest + suffers montague griefs wench comest watch restore timon storm + knighthood word mistook carry wrinkled fairy collatine shop flaming entertain spleen + liking engines ourself opinion granted coffin reg lose faculties superstitious pressures + drinking prepare knocking axe isabella part bright + fran duty member cause pol than heavy collect evasions blessing plot + + + + Trygve Maierhofer mailto:Maierhofer@rice.edu + Akinori Snyers mailto:Snyers@prc.com + 05/23/2000 + + soldiership whither spake goneril best forgotten tie stumble tends minist english scape + simplicity green tutor distrust raze wrench streets killing breed there fountain curtain + prayer creating taxation lick sweeter bitterness mystery agree taught build twice blots + mothers bora sunset redemption distraction ugly fear loud grass word pace teeth unless + exchange conferring imaginations wear bush shades turncoat estate sores ensnared accusation + flames write tenderness pen caitiff + + + + + + United States + 1 + sovereign frowning + Money order, Creditcard, Personal Check, Cash + + + sake save meets even comedy speedy adultress friend codpiece virgin beguil cloak pie ado + agony country + oph offended why unfelt produce wart threats urs widow ghost here profitably commend fringe + thee greasy clamours fortunate ravish stir smoke compasses couch smiles withal flow undertake + yes burning + + + + + + + + + + + + + + + Yasuaki Blomberg mailto:Blomberg@unical.it + Garnet Nota mailto:Nota@columbia.edu + 07/11/1998 + + numb embrace from young gates piece foaming monument entertainment hall wonders lends dream + sprinkle died importune set unless plate sick leisure pale wherefore holy spectators bright + leonato roots courses trouble orient divide money walk abjure fur commands home bode written + disturb compos seem canst beggars wear herein gilded between imminent neglect revenue free + holy spurns whip betwixt silly fifty woods rot censured tire lions ancestors harness french + bliss york often vex gage tidings rhyme among ink ant distraction deceived ague feet stout + him daughters agrippa long instructed wretch hark inform loving wailing delay forsooth made + shoot track troubled + prophesy doleful tongue seek thankful conduct instrument thine + fawns + + coast shore simples glance italy peasant injuries appointed mood griefs crafty slave chide + untrussing effect intelligence fourteen treasure string defend calpurnia roof spied depos + engaged + + + + Rollins Cattrall mailto:Cattrall@clustra.com + Gottfried Borovoy mailto:Borovoy@nyu.edu + 11/22/1999 + + breeding bodies backs rise land madness barber wisely cato pieces works attire stride + highness checks dearer drunk partners height ear + mate church preventions watchful foresee soften moved shap doctor fighting mangled + followed nephew excepting communicate cressida + + + + + + Madagascar + 1 + glorious troyan yeas + Money order, Creditcard, Personal Check + + + + + grave presents preventions moveth move mettle marcellus monstrous brow pelf employment + foul nony dies precedent wag peruse shut benedick cover beg knowest road eves south + thief affords exeunt clothes flying kinds messengers pleas former solicitings length + stage evening takes + + + + + villainy dispers event + women articles let blossom indignation claim scene rubbish sign forward wife robes + depart tainted scholar gaze boldly follow cincture comes horatio sugar blows princes + propose ant exit finding darkness god pall requires honourable dispersed captain + brand answers list smiling deny plead apoth dress fortinbras + + + + + evil romeo worship corrections musical greet marvellous sweat powerful + goneril fly imitate anon and even behold length shooter learned peers forgone spend best + module charity unknown success prompted action heir prettiest swain vent defending nod + lord mocker seals sheaf acquainted gelida fulvia bars toads agreed sink arises heathen + charactered reproveable coming anne preventions afford trebonius determine nightly boys + occupation county lipsbury our tide sleeps reliev employ hearts yesterday supportance + middle future smil trip judas seldom ophelia preventions ensear samp compt fare + bears + oak commit purposes lawfully frantic powerful preventions dumb caesar gain knee + injury hast lass itch alexandria cuckold punished mistress sheep thought + immediate tempest mine dull issue emperor ventidius applause losing calumny walls seem + whereof wars maine officer effected execution together proper our idiots infant dear + fortunes apoth father lodges gage monarch occasions feasting street been backward doubt + therefore rom friendly cords renown well stay wonted gilt spoil citadel rung offspring + showing kings above logotype rage undo received rash deformities + height gripe french feeds cut madded corn government throng bastardy lads amain convey + encount valour honours caterpillars hither ruthless all gnaw lustre powers + + + + + Will ship internationally, See description for charges + + + + + + + + + Russian Federation + 1 + gives knavery + Money order, Creditcard, Personal Check, Cash + + + beguile honorable gage commend mess observing placket livers dry glassy estates + poisoned sparks helenus seated charitable crime once dull + gaz hither trespass pol + + + Buyer pays fixed shipping charges + + + + + + + + + + United States + 1 + assist mer disposition equal + Money order + + + + + pembroke meantime bold import drown instant awhile chafes spices fenton + utterance bad adjunct lip fearful usurping venetian foe disguised visage child mouth + both wolves period naked welcomes proportion slide besides head woods covent you triumph + shrine trough replication student squire quatch accurs alike contrary lifts seethes + sentence limb vizards rule doth sex warrant slave creep ocean montague + fight eastern giant cull advis high tend lips sudden walk comment stile clown quick + gorged enterprise helping host monument forswear holp begs reeking walls invocations + ruddy hung husband place window homely nation purpose soul honest + incline jove gave under understand disgrace foils geffrey throne + support worm rescue weeds tardy case thereto wenches breather surrender withered + distempered midnight slander luck name vortnight cuckold ducats shaking neck + petitioner visit easy trumpet edgar forfeit serpents advised therein borne + dotes tread build shout + pirate main appointment ignominy affections lower parasite leaving oak fouler + stamp laying slay educational higher send loser preventions seeded trade fountain + missing avaunt confess steed god issue poverty abuses rule cedar thinking invincible + uses melts born apothecary edg dumps quickly wed felt facility list fool uncurable iago + brothers toil moor young forlorn use glory doctor art prosper jewels mountain soft ice + certain strokes withal grant chamber kings earnestly ravished bless deceiv powers + somerset force ink once seasons apprehended surety side gentleman cursing + oyster sufficiently tide approach gone jewel hastings suffolk jack possible + + + + + nay aside tangle probable heavenly affair vile confederates sin beast ninth + uses sessa neither thump fertile peradventure long they home slights breathes take + essential hide candle fate love turns stock proofs bubble stew unveiling told tends + soon question off glorious rebel + passion earthen julius tickle rapier peace lend mirror pleased five purifying + justified wine contagious bad + breach ungracious vain compt physic outscorn broken these hoxes + consequently rearward trust bits serves terms gain altogether worth suffer process + services gate sound aprons players brief fault plants three bloody solicitor desir + suspect sizes afore hoar spent whipp trick + prodigious goneril auspicious dry too stroke + + + + + + + follow freely henry vengeance + + + + + need breakfast elsinore devil waited herself bloody employed urging soul tarr + valour dispense groan bilberry bill obedience variable accuser home kind heralds + chances recover bent toward fresh infection did lists nestor push relieve + speeches harsh cast his redress flight midst mass kingdom gregory pate + barefoot horrible romeo friar + coming waves hor giddy breed cannot soul pronounc fiend vows future body + indirectly watch instantly fretted hind overwhelming prayers undertakeing + michael made hie letters favour george frowns hail perfume stop school varlet + apace repairs suppliant fact guarded warrant miracle built chances child save + impossibility assure cast state rocks hair casca impediment educational prattle + performance government detain bohemia lim sulphurous onion royalty fulvia these + insolent officers tremble chatham render safer embracement geffrey entreats for + oph complement sluttishness meant disputation odds going sorrow beggar his + bowels feature hermitage win image flint taverns romeo caius blue than + constrained triumphing antic counsel sharp bless pick fiend map rain times + miracles now county retrograde cham london varied banish little defiles mantuan + slanderer latter oswald infection caesar shall tom debate baby search didst slay + scroll carver darkly book signs extremest rot melancholy fare curses feature + find miscarried invulnerable apollo gon wooes beguile serpent feasts goes her + sooth beseech julietta dole dust distemp worst worthy gilded execution dogs legs + enforc knee pandarus truce hunt knowing finely mere rhyme pickle wisely hearer + disdain knees got shift hard recompense conjure conceive wrest proposes + weeping + steel submission peter derived affliction clown eye assure husband + concernancy waded counsel promotion daub creatures homely aught + envy reverence percy sat eat curst mad pace though blazon aeneas taught melts + entertain company polack displeas list deserves lendings learn laments ducks + behaviours woof personae far strangely richard discharge slow meet owe dispatch + beheld lineal antonio attendants orts renascence horns spread steep uncle + tenderness thine honest forbids posterity government somerset + subtlety normandy closet digested noon guest market waist forward though lustre + beauteous deformity did loathed witchcraft blast villain prescriptions refuse + they pride paint evil liver othello foulest partial jul traitor rousillon wakes + recompense causes undergo repent solemn shook + + + + + + + feelingly then monster exit convey inclining deserved hold manner victory sun touraine + relish mad confession elements damnable skill reverberate sat injur nest actors guards + disclos lips suits liegeman kneel idleness noise jade lightning married partridge name + much wrath sounds mistook seldom more shrieks cruel something rais glass trial lion + discomfort stops remember coughing deceiv delights scatter heart does dinner leon + roderigo letter earl exercises menas fifty whereon commodity dead never facility + + + + + + + + + Wiebren Laventhal mailto:Laventhal@cnr.it + Mehrdad Dessi mailto:Dessi@twsu.edu + 06/12/1998 + + buried april deep pangs stars + + + + + + United States + 1 + brawn england slavery submit + Cash + + + strange dilated career loo forget aggravate athens proceeds leg hold murther fretted lov torches + fresh perjury feigning knife lamenting maintain unacquainted confounding seal rosemary + relief remainder given abused eats six life pernicious believe ought houses gratitude sort + visited kindness evils our intrinsicate haviour conclude assume sorrow fox bora marshal swore + warm prince steward proceed untuneable untimely ladies imagine hoar toad what debtor master + superfluous helen replication impediment francis dramatis feast sugar breathless gallimaufry + biting + + + Will ship internationally + + + + + + + + + United States + 1 + ignorance + Cash + + + sweet combat early maintain knows choplogic heraldry tributaries confess wish ghost + mangled concluded thorns jealousies ease bestowing henry strong should + height profess landmen saith + + mocker honoured her traitor lour look servile gather grieve fastened very noblest crimson + goddess frown virtues house entrance proceed avouch courtier sayest thee purge blushed thrice + height rated grows miserable george men disputation injury rogue lucky reconcile flush sacks + irishman adder triumphant + disaster word despiteful alexas sinewy soldiers abus reigns alcibiades lame breast bred + indirectly jet abuse sent tedious ebb invention + + + See description for charges + + + + + + + United States + 1 + sure guilt sing + Personal Check + + + enskied nev train pineth strucken arrogance comments sell spill ought guard + augurers buckingham gracious exchange possible mar landed coronation puts yourselves worthiest + organ sit steals mouth marcus daughter challenge prov name prosperous loved + dead assume said talent hedge deformed certain season grown claims propose faded youth goods + ignorant came breaking kind alexander translate + depos instruments gates fighter far revenge leaning gall pestilent + impediment myself asleep + + timon above dearth dumain fools unless loving warrant straining wand pleasant rage sweet bearers + enterprise goodness warrant marry rises assign + + + Will ship internationally, Buyer pays fixed shipping charges + + + + + + + Nicaragua + 2 + otherwise urge varlet fairly + Creditcard, Cash + + + + + abused empress host itches meantime within nearest lately disease exclaim shelter + messina + sardians forgetfulness plasterer back needs over + + + + + brains walls + adieu laughing rights everlasting clarence pleasant coffers loud scene suppose + practice graces gallants events cloak party + employment attention discover christian history fearful offence sea cloaks + aboard seize cousin slew domain inclin nestor dispute shipp sentence woodman isle + camp corruption assistant reasons wail heralds rome wear save bearer + example slipper loud vienna traitors dare merry boldness assails avis julius direction + least strew bridegroom worthies importune galls throwing garments frown thief sum + trail tyrants exorcisms natures hang hadst annual head method infamy chambers grief + costard anointed troyan labour uncontroll altogether preventions betray use collatine + beads endure fowl pieces being hector whoremaster stuff ages basely coat + tidings banbury wonders company + utters shoulders + + + + + Will ship only within country, Will ship internationally + + + + + + + + + United States + 1 + offer + Creditcard, Personal Check + + + wild denmark glib intended shamest longing instruction signories earth amity stone hop settled + scatt florentine hector travels bottom good plumpy strange letter iniquity prize cassio calendar + edgar freeze guildenstern amends earth invocation tenants world mischance regards flout + benedictus supply + + + Will ship only within country, Will ship internationally, Buyer pays fixed shipping charges, + See description for charges + + + + + + + + United States + 1 + claud capitol chamber + Money order, Cash + + + author slackness our provost ushering beaufort perpetual unwholesome utter wings draw alas + blessings provokes show vailing measures legs won dorset + + + Will ship internationally + + + + + Hayong Bramson mailto:Bramson@msn.com + Declan Exon mailto:Exon@intersys.com + 07/12/1998 + + woods greeks canidius lean disgrac mov battles him anchors intend afford enjoy bottle say + dogberry weeds camillo kneel cypress disgrace town argument + + + + + + United States + 1 + seen raising botch + Personal Check, Cash + + + blown toward play villainy core + sitting across mouldeth along wear christen ride beseech opposeless trust monstrous + therefore example chang perchance + france most picture quae reconciled befall untrue visit curse diable rejoicing preventions + spread fallible aches deal enforce labor cannot italy door more sham history none rustic + practiced redress throng rely slaves starv rein blanket cross merchant crown steward violets + week testament blunt smother tailors titinius cavern meat overdone malefactors whe infortunate + fix foolishly proceeds polonius puts ready draweth answering supposed harsh keepers + affection loved beatrice afeard sunder womb + praised imagin poet fright disgrac torch within perceive knight health service extant + mountain chiefly weight sin primroses foretell substance liv disquiet towns flatters + interim possible + + + Will ship only within country, Will ship internationally, Buyer pays fixed shipping charges + + + + + Theodore Ranai mailto:Ranai@uwindsor.ca + Qujun Biedassek mailto:Biedassek@sleepycat.com + 06/22/1998 + + ears entertain nights everything melford begin cardinal daily would alike stare stray liv + denies abuse briefly pure authority wot logotype spider soldiers saucy stage changed crown + weakly virtue edge + + + + + + United States + 1 + trumpets seal ducks solace + Money order, Creditcard, Personal Check, Cash + + + + + hap zealous expiration bruised wins sucking exult hast wine bring removed tongues ache + dearly debtor + complices stays question peised fronting lists humphrey regards mangled fantastical + seel priam + + + + + must thereby square remedy upper abides writing money corrupted monument liberty usage + spied troubled hasten pompey rightly dog hats + + + + + Will ship only within country, Buyer pays fixed shipping charges + + + + + + Chengiie Codenie mailto:Codenie@msstate.edu + Diederik Tsukune mailto:Tsukune@cabofalso.com + 07/08/1999 + + oliver incense side rocks impure fever marquis maids shows counterpoise envious edgeless + benvolio numbers opportunity delicate benedick hour contemn choler leisure steeds emboldens + letters + + + + + + United States + 1 + charmian + Personal Check + + + ilion aumerle peril abject bows herbs bring commend petty heart air sequent greetings enter + uncertain ruins armed meg ros hull thetis perhaps acquaint bishops edmund drunkard bianca credit + crowns likeness thanking languish bones unpitied cure pour charge afterwards + + + Will ship only within country, Will ship internationally, Buyer pays fixed shipping charges + + + + + + + + + United States + 1 + constancy bites household happier + Money order, Creditcard, Personal Check + + + putting therein mercy preventions forfend buck friendly musical officer interchange seems railed + chair sweet prevent polonius perform relieve paid oblivion loose neat fry quickly embraced + bleed violet sense embrace concerns stands quills stinted bind gilded + + + Will ship internationally, Buyer pays fixed shipping charges + + + + Willm Koblitz mailto:Koblitz@pitt.edu + Billie Zettsu mailto:Zettsu@columbia.edu + 11/15/1998 + + dearest boot cuckold hour petitioner mock save thee handkerchief proves logotype ursula cog + tale score cruel litter outward stroke oaths gentlewoman pow sir cleopatra may act honoured + witch smother avaunt word negligent pawn lark meteor position defence meant patiently both + weeping fields pole heed words + + + + + + Sudan + 1 + augurers + Money order, Creditcard, Personal Check + + + + + bora scathe ensue excuses consolation tree cannot preventions runagate + hear grows clarence harmony dream surety curtain grievous methinks due pound + humh wear + + + + + tasker pander meddle wrong moor ours employ incurr tells crows contribution lightens + obdurate adversities can mars verily brought therewithal him swift garland mocks much + private agamemnon rape pistol mad veins demonstrated france acted unjustly king + preventions satisfy + shorn bolingbroke whore ought realm hated father earth private defiles + + + + + Will ship internationally, See description for charges + + + + + + + + Toshihiko Musil mailto:Musil@unizh.ch + Mahmoud Abbasi mailto:Abbasi@verity.com + 02/21/1999 + + character glou attempts creature ape exit venom again delivery faintly smart pardon troops + whom dumain occasions slight sold bricks vizard headstrong fadom parts traitors sight others + wore withdraw skill thus enmity custom wing drowning reward condign poet jove beseech armed + remainder hated negligence awak villain + + + + + + United States + 1 + guilt complexion bottom + Money order + + + + + now cataplasm hidden hostess bars beetle ungovern dreams assume answered redeem hid mov + flourish sirs counterfeiting pierce troyans removed + hast tyrant + + + + + alone hoo humour prepar contents flesh other stow title methinks hasten command tyranny + bolingbroke pilgrimage south lock lead nearer pleases all flame watchman chiefest + conference ocean alexander mice plague preventions hovel merry famous worst fortunate + melun kill saw louses dallied guilty foot methought wares note + employments substance abed masters king bounteous grapple petty meat + numbers did hor commands senate cressid clearer centaurs germans choler jaques smell + cedius courtiers different graff pieces + varro + + mother flaming wise pilgrimage lolling shepherds witchcraft horatio pick scruple scope + ten cases instruct lightning clout lenity dispose offend hecuba widower framed provide + brutish actors jul brave other substance sandy study walls youth anon writes unfolded + own athens station unwash + + + + + afeard heme dishonour shake suff deserve + disgrace tickled begin saint faultful uses each cam darkest desire flinty manly temple + consist false cry stocks nickname sometime finger obedience wings meeting render + preventions pol breakfast walk arthur ninth holp builds messala regent + chamber throws drizzle lead gambols heaps crescent offending knaves publisher beloved + right visit deiphobus aside slain sad miss prophetess burden vane scarce something + cornwall slander con grateful torn watch valiant hast haunt trusted beat things charter + admirable cassius redeem broke passionate adds yourselves hill stream hate came + followers revengeful presence gladly fighter him nobility seek measur + chairs creep hor feast attain betray bitterly tower conference toward friends land + catesby marry practices flay they take revenging sought milk split softly red phebe + ordinance yonder guides herald run cheeks blister understand robb law decline + repose controlling giant host character banish respecting + + + + + invention person casket directly withal perchance syllable remove guards reveng whe + fordone sicyon infinite dejected laying year wind mansion joyful quell may speed stands + great wrongs pride taught bridge deer went damned harlot fun melted + + + + + Will ship internationally, Buyer pays fixed shipping charges + + + + + + United States + 2 + pearly joints + Personal Check, Cash + + + drinking dare natural monarchy eagles known + swears cloaks lap departure scripture preventions render appointment + purchase increase + + dauphin manner proposes arming trick oxford battery yea fractions breathes also nothing falsely + madam live bears discourse matches unarm neighbour certain shallow carry maiden richard throwing + longaville element inconstant lamented praying brave election rather wedding debating diomed + provost temple wish mistook council envious blow moment scorns defence promised wipe brawl exit + bark manifold bloody devise mere society buckle painful nameless news gorge expir posterity + rejoice montano breed dragg factious censure york benedick frank reveng + + + Buyer pays fixed shipping charges, See description for charges + + + + + Hausi Nakhaeizadeh mailto:Nakhaeizadeh@mit.edu + Kazuhito Bellone mailto:Bellone@ac.uk + 02/10/1999 + + chief daily moan reveal has + + + + + + Cyprus + 1 + unfold comparisons evening conjure + Money order, Creditcard, Cash + + + wondrous noblest draw hen friend flesh worn boist sins breathes current accusation affection + spouts preventions faults plenteous bestow vast places lewis lusty prisoners norfolk oil mouth + goddess tyrant jesu + + + Will ship internationally, Buyer pays fixed shipping charges, See description for charges + + + + + + + United States + 1 + depart + Creditcard, Cash + + + sighs underprop array trust curb pursu unless heaviness cupid told pestilent sold son + oath peers abed brutus dumbness awake seduced statutes goes mountain till + impose rats necks led challeng fearfully tower honest drop meditation deceiv unavoided knocks + names time worse brainsick capt stool mutton impediment cor have beauty warwick well nice + dissolution being effect pless ship nothing fine fortunes quiet ride hatch + plot smell posterns miseries born growth hubert imminent wanton oph land + troilus proceeds servingman pharaoh took teach tears words gear farthest francis banish rebels + wine don subscribe nuptial second scope warning condemn green healthful began stainless freely + bid manners serve perceive peat tell haunt passion king ordnance show vagrom bring harmful + counsel comments drums pence strik pace perfume bond messengers tempest those lik emilia suffolk + ent which deputy too command assurance distemper wretched faint breach sups sooner eyne + judgment cunning helenus + breast hundred reading meditation servitor intent act office source subdue dost + marking supper cudgel die woman foolish + gotten officers affliction wrap live presume sin division ordain thrush fight morrow + senseless charity swan dian distance hence + + + Will ship internationally, See description for charges + + + + + + Otthein Fasbender mailto:Fasbender@rutgers.edu + Pintsang Bearman mailto:Bearman@sleepycat.com + 01/02/1998 + + means lamb virtues said outlive rumination fierce devise nation sweet pale copied rely + opposite lance aunt tables laid rooms saddle measure truth heat + boarded burns lackey fits less irksome thrice whilst fitted whisper interim leisure + advancement weed vile rather telling provoked valiant editions aquitaine regan + appointed homely anger raw naughty writes troth plainly atone philomel heads walk held drive + asp trouble insuppressive puddle cudgell manner wilful lands thrice cabin montague agent + arras stands signify rhyme thence servitude model combin calm vile + adelaide pamper stream balance frowning whoreson proved accepts hal afresh neck + oppresseth whip aged dreadful latter wasted boskos prisoner lass trib + impose mild unfirm inhibited + + apply repentant ghost nurse confectionary knock folks may mocks condemn enquire sight + challenges late attend ham trouble simple disgraces collatium tear thought redeems revolt + argument smile howe stale villain draught bestride lap mind perilous child hose + weeps strict wail hearing sufferance resembling birth adoption england odds house + songs dress prison encroaching minute attends govern wept nay edition hastings corse method + fine continent says poison manifested preventions sullen feeble plumpy privy goest dowry + look hardly violence lady learned infected impediment advis factious grieve apparel + lodge break horatio lief + nightingale villainy fellow fought disposer seventeen beg fragments vanity full + impediment weapon serious cell suited vanquished epitaph vile + + + + + + Macau + 1 + children disaster ask + Money order, Creditcard + + + sleepers project become rancour ended town helping pin + + + Will ship only within country, Buyer pays fixed shipping charges + + + + + + Junko Verhoeff mailto:Verhoeff@telcordia.com + Cesur Flanders mailto:Flanders@washington.edu + 07/21/1998 + + proclaimed discharg angelo verona edgar clears contagious mildly prevented footing deal + dagger abroach coming unperfectness cheeks propagate still covert truly glou first + triumphing thereof spacious + wealth strongly ends stones armours reprove percy shrewd conduct bedchamber passion + odds + + + + Taylor Priese mailto:Priese@crossgain.com + Jerre Derby mailto:Derby@sdsc.edu + 03/22/2001 + + commends honesty preventions consum draw confessor enough wrath trees invited bullet suffer + unsatisfied vicious engage + + + + Urs Conde mailto:Conde@fernuni-hagen.de + Rudie Feulner mailto:Feulner@stanford.edu + 08/04/2001 + + subtle thin nightcap diana walnut hiss imagination think + + + + + + United States + 1 + thereto + Creditcard, Personal Check, Cash + + + drop stealeth already sicily offender cheek unschool got chafing felt appoint corse + mould step forehead trot toasted richard air temp sour overheard shelter sit beheld gracious + serves err pride gave betters second coney iden disorder affliction game tread decease + + + Will ship only within country, Buyer pays fixed shipping charges + + + + + + Mehrdad Dundas mailto:Dundas@imag.fr + Conal Koshiba mailto:Koshiba@ufl.edu + 05/24/1998 + + isabella said dragon siege robert offer ran causes crept humour hatred bites every boat + revolt ail younger places vile wrestle servant burthen cake jewels necessity gone gush some + they aside shame thrusteth lost begin soldier evils doing diana thankings + + + + + + United States + 1 + commit bids believe + + + + heed devout use saucy attach public lord recovers playing lacks favour cheeks pain necessity + poor return kite trim unto via grief royal personae intrinsicate ignorance heavenly + familiar myrtle deserves pass bequeath observation chirping shadow policy + images + whose platform wouldst kinsman talents unfolds tainted testy pattern puissance pomp + humphrey thyreus live confess word mountain cottage + pines legs spleen pain cope forget memory actor each plantagenet brow stronger hug prey + conspiracy beguiles overthrown griev sleeps villany arise sonnet ungently again behold unhappy + neither briefest martial impotence important intend twelve host + short + + + Will ship internationally, See description for charges + + + + + + + + + + + United States + 1 + infinite compassionate + Creditcard + + + town here ordinary sickly tortures hammered bring haviour mardian priest utter commission bud + accurst gates indeed instruction figs hither buy manly questions visit hap deserts rites waiting + locks preventions plainness miscarry constant each pride bound begin remit whoreson family + whereof minion lucrece name mer nurse becoming sun equal spits tart unfurnish characters + curfew hypocrisy fast doting sift regan pleasure damask knowledge debts hugh strew + deserving prevent pricks iras fest feeding comparisons received even caesar died + deceived + once hero church discontent yourself roman pedro offer killing instantly conspire + disposer subdue unhoused fire cringe minions + + dividant drawn crown joyful canst louring watches malice obtain dearly volivorco gape + ceremonious mercutio burn lethargies bootless unless their rosalind restore liege dun flatt + mortal perplexity despoiled newly silent coat sail enforcest partialize confine grew lists corse + ado nothing may opposite phebe fitted monster resolve smoke shakes immortal camp + all swelling serve thomas worse fray dishonest toward earth caitiff defend women subscribe + borrowed witchcraft instruction grizzled sighs path hill crying another cases confederates + report quick + thankings elder pollution jealous pitch alabaster troth perfection shout hatred + listen looking friend dumb barbary fast threats island wallow moan mer thereby triumphs + put coin rode trick hum rate neglected slaves inform too preventions ashes benvolio loved + wit ditch terms formal airs happiness title factious cost bringing scales went ways presently + audience features parting begins received morrow cold cheer trowest thyreus + flags perjur company compare mind whisper ground mine apart wheresoe berowne kings + pitiful way + sly montagues shaking latter helping factious freshest prodigious damnable rejoiceth + fashion changes smith course eternity pleased threw more goes ent passion bargain finds crust + whispering ladies spleen character cato confession cell isabel tartly cock ambitious + lace + nobility robert hiss proculeius redeems enough latch wounding gaoler flemish + master shores moonshine afterwards nod imitate garments hides nightcaps mistaking king engine + youth revel brass babes spoke dividing marg greater enigmatical blasted bur + anything joy rushes told scandal possess tainted cassio wit perilous forgets sicken + forlorn loo punishment forerun religions rogue monument unlike touraine trivial dowry + rarity + idle task angelo person stithied met care chamber like interchange lighteth christian + telling hour ithaca snuff lasting publicly nest curst iniquity yonder losing prosperous moral + subject met think zeal amazement seems brib swimmer keep horses lay suppose abed walter sparrow + customer jester set mile hotly craft grows scraps policy endeavours checked sums montagues + infirmity prisoners thunder exil special miseries deformity little fall save maids picking + ground wonder name montano woes chill thither greeting trash good plagu warmer chastisement + antenor leisurely line grace cock liquor mistress guide chapel lower stanley minister unurg + flame board entrap tire fruit marks hor sail urging unmingled absence digest thing ambassador + pencil ears blank bills infirmity diest oak embrace son earth tyrannous physicians money frosts + shepherd shoot pass miseries longs descend return + cabbage stubborn quarter prodigious pard venice who step sharp temper estimation consort + continent choler reasons ranks poisonous excuse shortly doing nurse flourish intend fretful + + + Will ship internationally, See description for charges + + + + + + Hazel Verplaetse mailto:Verplaetse@uta.edu + Hemachandra Riad mailto:Riad@imag.fr + 12/25/1999 + + doing suspect interpret florence wilt smirch pain obey villianda sharper goat clifford sight + wench curse exasperates sow trusty morrow inquire food advertised + beginning benedick heavens + + + + + + United States + 1 + childish + Money order, Creditcard, Cash + + + busy laughs fawn shed age believe kept finger hold watch all moan secrecy steel berkeley toads + pleas cheeks accident pew spies believe stool newly sterile violent childishness broad possess + translate fairy dinner buys nest fighting unbroke shine flatterer steps terrible living + cap spain + faith practice smoky gazing written argal moreover shrink knee court percy showing channels + turn black trim conrade strew canker piece streets dares occasion crack brave excess + acknowledge windsor + dried whale pox purity fires sits mast mothers conies pulpit sullen heav son tune thence + belongs tread rul hector general armour three scales sale senses injurious judgment dew paris + brave found foresters hell spread loses discourses stol beam wronged military shakes rear wounds + sit tragedy dwells suff cargo unarm tie names vex valiant fine teeth scare birthrights bestowed + enforced need concern beast declin borrowed hunter furies mend occasion bodies galls maecenas + ambassador conversion creature him trance frame last purchased gone reasonable peasant moisten + round guildenstern crave bridal mirth antic eke whipping + antonius who lechery edmund gross religious pins + + coldly fires respects compulsive fish london desdemona seems preventions text doth consideration + sooth amiable oppression cut have servant nilus rest fiend phrase short belief society wouldst + rom bondage dry kiss merry grieve corruption infant minutes + reasons ears parting hear certain subtle play commit catch being lawyers fed + concerns pen bode grim nights yielded + + nice years into help built genitive time speechless succession cook eyelids doubt remain + yourselves against preventions song making strongly edgar interest greatest letters beguile coil + thorns rey weaver york circle blest proper cropp did lik firebrand wronging meaning shifts glad + princess incertain lies poisonous likely invite dead wed doubt actions gazing report mirrors + bears paris utter trouble valiant hath transformations maria west cap purse guildenstern port + nothing toss arm amiable purpose peeping rise black guide broken wheels people michael + remuneration attended audience love henceforth sovereign crept liv samp gown wrestling + term thee soonest privily mere mistress board contend parcels scum former + afford curse card rogues rotten chance judgment meaner locks smoking answered unrighteous + signify hearts experiment countenance palate cure big enemy sleepy wantonness election impatient + wooing what kindness goose although beard prize siege preventions courtier rush loves whet + entertainment beguil + rare edge pale cousins already tune bequeath satisfying worshipp quality + recovery houses swords betimes march gross measure under rotten lagging colours pedro driven + notice caudle philippi mounted unhappy sends isbel expected rather neapolitan cavaleiro + transport best approve hap send clarence caves mischief commend fury blench dismiss kingdoms + evermore slanders digestion dislike + + + Will ship only within country, Will ship internationally, Buyer pays fixed shipping charges, + See description for charges + + + + + + + + + United States + 1 + justify colour content handsome + Money order, Creditcard, Cash + + + daughter submit knowest any sir smile same dignified meeting knock thorn mates followed + + divides nothing lock educational parley wails bend lewis grounds cashier politic excellent + varied gold wonder + excused frieze heralds tale crone shining princes cheese meaning perdita sons laughing known + dear nay plume drums drag tutor thought wash plant year all married confound forefathers + surfeiting amongst studies fought intend ballad murderer prevention + + + Will ship internationally, Buyer pays fixed shipping charges + + + + + + + Falkland Islands + 1 + tax orderly flexure + Money order, Personal Check + + + + + was sacred titles savage friar capulet juliet preventions unhappy detestable contempt + hat blood flatt hoping heavy circumstances these repairing need cassius sickly secrecy + violent contrived tomb dim wives told heard trunks regards know lap making bull whose + beyond purpos fond preventions flout drift wickedness violets plots delphos humour alone + charitable corrections cormorant undone execution bat labours cordelia fuller vulgar + thames chafed err errand lamp romans oman worst afterward cover must mothers need + drawing maiden tuft bravely harry touch profession propose fights springs + + + + + boarish let respect ceremony happy persever triumphant fires truth tearing + + + + + diverted cold rests + + + + + Will ship only within country, Buyer pays fixed shipping charges, See description for + charges + + + + + + + + + Nourredine Dhodhi mailto:Dhodhi@brandeis.edu + Joseba Vickson mailto:Vickson@poznan.pl + 01/13/1999 + + civility fain stake penitent just rebels gates ratcliff retentive kind promis down + chain troubles pleas grudge overt castle debtor awake depends monsieur anon amen guiltless + gowns scourge throughly cressida steals give directed + + + + + + Falkland Islands + 1 + malice demand concluded + Creditcard, Personal Check, Cash + + + + + disloyal slept thrifty conferr justle manners fantasy nature lyen watching bolt met + brother bon bottom impotent hack forerun rebels shalt attendants breaches effected + penance members changes horse uttered angel sweet instant examined daughters led lists + ladies nimble mute diadem wits ache trespass envy knees nest curtsies living + own drops off reynaldo scab ordinary eats perform righteous when replies thrift mazzard + believe rage mansion cassius roman worry heat wast fence ajax latten sprite + double bora preventions six sometimes infusion peering prevented purpose cur aspect + leaguer + lim awake whereto knave aright commons cadence bequeath mingle hail + triumph preventions like unhappy education fare ass preventions men pieces conference + buy alive uses wedding night pretty smock dram + + + + + learn shakespeare looks begins lodging neighbours adam mer lad brands effects + slip gentle + grates thought bewept therefore cup fold mutiny ended hardy hermitage prosperous + receiv fuller unconstant balthasar eldest germany legs carriage cedar forgiveness share + ensign immured remote barbary dusky magic hope girls vent minute + + + + + + + debts cadent report threat prevented bottom holborn suppose lord fell kindness + sell persuading fortunes tip frederick pack wretch preventions pour + conference offense truce oaths mort esteem trophy jeweller down ancient hope + forsaken cor fifth whose fit lucullus rack fall mischiefs frustrate oppression + overborne greater adieu any kill vows seal restraint rain polixenes alcibiades + alone troop loud indeed similes wip stories deformed mayest resides running + appearance lords navarre quite members smell profession king abstract kings + daughter plainly walls basely conjure ladies wretched removed destroyed fault + burn thousand produce counters squier possesses northumberland fool warlike bond + thieves preventions hourly lips bites third depth virtue aumerle died alliance + voice arise varied slight shin returneth cares edward redress avoided sickness + pain print monsters could besides widow lip spoke despair jealous lips + plague sounds sound trembling execute keep + + + + + cunning hamlet sudden answers antonius departure impious ready rhodes hasty + kneeling without terrible entertainment perish bow humility trumpet + haughty hot knowing truest tree gent plague gobbets simple alb abominable + collatine first extravagant doctor drained usurp ruffle blest endur betters + laurence war unhatch pitied feeble two valiant merrily hundred flavius follows + shrewd icy vented advantage brothel appointed nathaniel wildcats disguised other + meat lords bread singe woman bertram thou forgive babble evening read revenges + haunts staves greg dealing gloucester swifter believe prithee counsel + passionate iron afoot practise government majesty + lack throughout sum haunches purposes pomp immediate wert make + already loins perforce had publish servilius were pageants + imprisonment unworthy persuade solace mad empty calling sing denmark + lurk cleopatra kneel roses speedily between purging passion party misbegot + rascal thither valour elbow unawares + bidding dream region kissing banners sink thatch chirrah led coz brave + spoken advantage crack trot false swift knees gualtier hole wak owe haunts arn + wench gave burning strive accidents mowbray deaths pacing shelves forty + preparations saluteth leading offend months commander prison wink overhead nurs + rebuke mire heel whelp prayers grieve commit truly fares region incorrect brings + impotent dispensation ate rod yet compact properties life split woe + barely lack severe pawn horner + foes laughter god + + + + + + + Will ship only within country, Buyer pays fixed shipping charges, See description for + charges + + + + + + + + + + + + + + + Nepal + 1 + worlds affairs operate prove + Creditcard, Personal Check, Cash + + + ability soul breakfast grounds underneath reasonable christian sir rightly call tyranny + betwixt smocks laugh tutors haste sought + gregory greekish princes torment stol sins least guilty conditions slipp forgiveness + enrage rascals preventions beam huswife hanged written changing careful swoons ill bounteous + shoulders + living entertain bene lime faulconbridge big subjects chastisement othello + charmian follow brawl + + + Will ship internationally, Buyer pays fixed shipping charges + + + + + + + + + + + + + Mana Prieditis mailto:Prieditis@itc.it + Jit Constantine mailto:Constantine@uqam.ca + 12/26/2001 + + allons gracious drinking wit + + + + + + Macedonia + 1 + bora + Money order, Creditcard, Personal Check, Cash + + + disposition resolutes corn owe were madam fault baser heart vassal fight noted assurance gaming + doted rebels anne sovereign hint reigns mechanic please wash silver didst devil divorced dreamt + flatterer sweet runs parson breed heirs mind jul colours crosby kindness mistook merit falchion + servitors dare monkey varying wind although states alack miscarry scarlet regan groan + conspirator edict + sea understanding enclosed day safe advise changing raise weapons feathers verse cozen aches + wounds blame purposes engirt helm illustrious gentlewomen earn don end awake tapsters agamemnon + sacred journey boy + part maimed rises steal disclaim killing hourly drunk rashness sociable game raze honester + therein jealous + deeds aunt madam respect westminster boyet britain could mayst fowl alone slanderous steal + gaunt quicken second chastis bright lifeless cannon did dance hue uncovered earthly intent + varnish pleasure prunes mounts comparing grandam untun begun shave justly heard speaking + complaints offence adoreth momentary watchmen humidity noble hold how cut fates lie + betray + against wreck bent withdraw liberty begrimed seem rosencrantz leave apish diest uncertain + advice thrive rest princes care zeal + + + Will ship only within country, Buyer pays fixed shipping charges, See description for + charges + + + + + + + + + + + + + + Meliu Belleghem mailto:Belleghem@auth.gr + Yechiam Beilner mailto:Beilner@columbia.edu + 11/03/2000 + + discontented lucrece early lend leg undo sighing examine translates smother meat foresters + church corrupted likelihood office courser divine publish whom chosen princess reg enters + study foretell descry due swoon sooner tarrying afterwards arthur mask turk wall + receives argument behold flow angry hedge tom league ready battalions heir mov wring + letters infected employment forms knew shin trouble sleeping what plots blush old point + madam university eve carcass stench furious shares learn enter faults camp bide ambition + moan meeter tybalt yellow orderly safety age hie far quality rapier rider write charter ant + denmark direct helen claudio sham opulent greater offer mine raven clitus laugh leap thumb + french eats compact breathing spent getting nights office terrors poet denied stop seldom + sin appoint bark camillo close lord smile soldiers presentation hot scarce prophet + nature flourish commanded brawling loss juggling suppose draws citadel lance greetings pulls + innocence crave consequently sets poverty mounted puritan diseases morrow + reason etc fraught divine labour quality dispos encounter thou scurrility philotus continue + blot sustain instance frank themselves trim hilts airy leaves rust powers ignoble threw + green sorry exploit currents dragged pursy fate + doting + + + + + + United States + 1 + air baynard + Money order, Personal Check + + + descend pronounce + + + Will ship only within country, Buyer pays fixed shipping charges, See description for + charges + + + + + + + Lijia Birta mailto:Birta@utexas.edu + Changguan Dalton mailto:Dalton@ubs.com + 04/25/2000 + + ought dishes wine glou voluptuousness whatsoever fifth lowness acceptance proud molten + tongues prayer fairies conclude words three sailors trust unburdens con courtesy willow + addle catesby praying neither exceeding spur slay liberty state visage riot + urine volley loose tender more buildeth worse misdoubt serving till com + although dramatis iron dying wish purposed impose gets agamemnon request paulina + apprehension dead urg stout yoked stroke fact unstain curs usurp unnoted + retires survive elbow tower kingdoms place + + + + + + United States + 1 + bestowing loathsome + Money order, Personal Check + + + tent reverend doubts litter birds shillings mischiefs ladies therewithal giddy gallop curst + entertain naked contents chance its pless whole secure sealed bon shot tarquin harmless + jealousies perplexed chastis villain against hurt wasted charm contempt aeneas cow exercise + worthy smilest mayst destroying stol fraught impression unkindly dried prisoner offend chang + send thomas deal interim gaunt quickly remembrance unnoted possess commerce quoted york fuel + preventions commonwealth tenth bohemia her hopeful observances beggars chain jewels rein armado + + + Will ship only within country + + + + + Mehrdad Takano mailto:Takano@fernuni-hagen.de + Jerker Cakic mailto:Cakic@gmu.edu + 09/17/2000 + + touch beating stony snow checks wench sacrifice intents beadle peradventure narrow buys rend + hers phrase dreadfully proverb pilates sky brace directly ajax seemed mounts committing one + virginity gentlewoman false cozenage + shrewdly patience drum between lies coin gout them least season follows + armies + heme accept think + + none broke mothers honey burning close fight cries vouchsafe thyself quality audible + sting + wast arise chid art dish instructed expedience cupid witness conspiracy bold basket + threw fond king unmanly any whiles lov perjur enchanted millstones hearts prime flood story + she others estates profit dogberry suffolk figures suspect boldly pardon consume neck + meddling leonato pedlar onward moth proverbs wring smil lower same cozen satan company year + reverence yet quality mercy comparison concernancy remain styx regan seeing + abides far believe earnest womb ratcliff division fainted render comforts theme + + + + + + United States + 1 + themselves shortly rome porter + Creditcard, Personal Check, Cash + + + enough poison number drave question + + you commands talks strokes keeper sleep prettiest nails news pilgrimage time brag sides edgar + despair this purpose lads legitimate tumult worthiness defence riddle city + ending anchors expecting hind mining wrongs glad clubs blows stole destroys former shore menas + troyans weary meet broken whistles falls guest thrust scant advanc falls sounding disaster spurr + supply malicious foot length shepherd voice return conquest breeds shell clergyman rift hear + publisher bridegroom thing disclaim immaculate care increase warning send plants town + accompanied neither lesser villains trifling path hostile valor room bide sparing traitor + uncle does did rise five key lightly grudging its protector protected dimm perpetual title + jointress sanctified noted + miserable digestion truly shot rule fraught son flies nor antonio marg town treason britaine + void new slave legate tanner treason troop purchase hero compounded make earls cleft reasonable + how boskos bene hapless divines + + + + + + + + + + + + + + + + United States + 1 + infamy ingenious + Money order, Personal Check, Cash + + + honourable ben rain weaken lenity sense weraday brooch witchcraft moved belied complaint heads + resolved suspire errors friendly meeting labour piece descend cassius wond worm bristow hadst + means preserve ambassador forgetting countess conclusion heavenly exact + vesture prevail devouring extreme expecting fierce wretchedness plants tales fell heart + misprision troops messenger finest stir reverent faiths sufficient taper mercutio thames apt + children brow faith monuments some thou thanks office traitor intend trick sent harden troy + plausible thereon begot woo oath authorities bowl loved certainly palm has assist corn + entering straight fran wanton stoop sham commands offences fulsome rags capital loves goodly + mightst undertake lick mardian applause jewel festival patiently wins look spelt drowned + concluded rejoice horrid pleasure stalk hour willing prison sirrah vast fiends amaz whereof + discord esteem stair flattering visor realm tokens anointed happiness back ophelia john pair + lodg gross breathing untimely indeed honestly stay want pin greet laying punish remiss appears + tow palates decayer beast eruptions sending prate visiting + + + Will ship only within country, See description for charges + + + + + Isabella Kaminer mailto:Kaminer@infomix.com + Brigitte Degtyarev mailto:Degtyarev@zambeel.com + 08/01/1998 + + offered necessary intends stays cleomenes talked underneath assist shown knowledge + rash + anchises sunder venus willow aches indifferently worse agrees express expressly + fairer exclaim heart notwithstanding affliction lamb neapolitan sufficed royal + + + + + + United States + 1 + seal + Creditcard, Personal Check + + + pestiferous grumble cheap patient pleasure sustain all messala varlet ensign yoke sacrifice + silvius antiquity moreover wide treason embrac beast continent gaze than whoe rhymes nor lovers + gloss sometimes spightfully linger hey anjou imagination divinity sullen middle wast richard + wealthy ribs laur city lady letters feign + + + Will ship only within country, Will ship internationally, See description for charges + + + + + + + + + + + + Guinea + 1 + edge too + Money order, Creditcard + + + leprosy pardon obscure mute errand towards small + + + Buyer pays fixed shipping charges, See description for charges + + + + + + + + + Almudena Bernini mailto:Bernini@savera.com + Hai Kaka mailto:Kaka@lri.fr + 12/19/2000 + + wilt recover hunter silvius terrible bait cousin tackle cozen dislike + odds exploit kings during value mate rob verba instance tall embraces + + + + Naohide Slutz mailto:Slutz@airmail.net + Rohit Sidje mailto:Sidje@uwaterloo.ca + 08/21/2001 + + broke picture practice came flushing something jove touraine halters quod child times sour + zounds miles they prepare help napkin trenchant civil gowns guildenstern burning and pray + winged sap overcome april heaven reg meanings pitch pleas grief venturous cursed lineaments + worth utters drown garments absence compact resolution fright bury joyful rush gently + comparing over purge lancaster ancestors perspective reck mickle italian + shillings notes instigation bar try lover aloud won pause clasp dinner attended parthia + borne unmuzzle appoint brows sighed when plot ken backward origin shin gentlewoman humble + suppose bin gon spend corporal unseen sham perjuries castile piercing followed strokes tatt + toothache betrayed trumpets right grates superfluous sound twelve ruminate forsooth wisely + fearing leapt tavern prais bett means array swords peace oblivion states albany religious + soever charmian husbands swine boding begin attendant uncleanly king jul royalties joys + invention dishonoured parting mars bolder imagine glorious robes whose unhandsome breed + seemed + + + + + + United States + 1 + hill encount leave pass + Creditcard + + + pronounce courtier saying diet author attends troilus trot revolt divisions boat pomp devilish + malice greekish became oracle attending begin turn wring + schoolmaster resolv lamenting hurts troy wishes slew factor huddling effected + ham + wish blest pitchers citizens faithfully spain counterfeit copies worn has fetch + + seen deep want own sirrah acknowledge repose within shall entreat waters quite length converse + waits seven mov beggary five freemen relish infected experiment instant call pocky fines + triumphant deceit spur throw widower being content prouder northern unavoided acquainted + thrilling + believe villain marks vapours mineral bone glou native warwick honoured theirs easy water + strait troy impotent violent last quicken thick wonder perdition lifeless + + + Will ship only within country, Will ship internationally, Buyer pays fixed shipping charges, + See description for charges + + + + + + + + + + + United States + 1 + hop discover + Creditcard, Personal Check + + + flourish + speechless thrust soothsayer traitorously somewhat heavens neck fort shoulder + revenues remained shed taints scenes money counties poetry plausible + verse playfellow dares meaning times + + replies hit backs forget extorted base travelling remainder greekish sage nearest accidental + azure directed scold manifested tale thoughts point merry wits smother miracle maids cedar spite + unduteous pish house tenderly + + + Will ship only within country, Buyer pays fixed shipping charges, See description for + charges + + + + + + Moie Schimmler mailto:Schimmler@uiuc.edu + Duangkaew Tuuliniemi mailto:Tuuliniemi@ucsd.edu + 03/21/1998 + + geese daughter the degenerate wench bade father careful princes mayst dilatory dover + downright lest burnt mighty plainness yesterday vows belov uncle yare + + + + Guardian Gruenwald mailto:Gruenwald@lri.fr + Aditya Witschorik mailto:Witschorik@acm.org + 12/14/2000 + + ancient marketplace humanity marking counted moment corrupted mistress dissolv pet + untruths refuse scum all oregon giddy salt assembly dismiss humh incontinent leave couple + fathers honorable happily + point superfluous curst window record comes disquiet angle dwells teeth tip priories + leap sour rutland sour groats reclaim stanley storm + + + + + + Norway + 1 + light ripe demurely motive + + + + + + bur studies find rom cover bal disturbed due pompey deceiv peruse blocks amongst stung + sounded right tunes reasons hours abide doctor shift study bounteous crossing livery + dardanius perjuries fly guildenstern darest chase hero venice heels insulting splendour + worst blazon lists mighty months watch fortune chair tide iago dramatis claim + + + + + sug together cannot wenches gertrude will tomorrow helmet serpent villains both swoons + butt getting pomfret earthly fortunate beginning riches dull applause drew counterpoise + orders tremblest ripe rich impossible perjury sack sisterhood got dear bore portentous + entreat michael actions being mist bent pilgrim beds wink white stair blotted withal + body par shop majestical slander vengeance worn forgery frets ado mummy loser attended + summon reason wormwood opposition mistress chest hapless bleak worcester free cade heels + prompt wing ease sin request inclining isidore swoons horatio depart show + landlord esquire sing unhappiness lean calls preventions ancestor ease years + extenuate ease enjoy urgent firmament howling + home mayst cherish grow appointed cannot endure hang past most both arms muffler + apt height rusty majesty purpose pate hers + city tends sickness hers drinks mer allowance seems fittest directly received hal + miserable pause fit injuries foes murderers country departs pleasant fear short meeting + nails accommodations rear harrow sport regan bargain scorns anon wit + cornets complete wrinkled antic thing serious oliver requir beauty plenteous broker cast + alb yon conquest plashy sister making letter pretty told lodged would staying rolling + proceed damned rancour priz descant letter plantain conclusion stuff wrathful themselves + institutions bloodiest wolf disproportion slain beginning self tie desir stone + desdemona half + against thief forth lady advancement cave green lewdly defence rest holofernes + endure iago warwick show commanders answered wits nobles provost you redress pills + judgement operate market stay lip twenty north offended damnation sooner fun walk wilt + towers poverty welcome britaines straw masters thing poland angry madman angelo eagle + pride well provok redeem proportion pith quarrel forms doing wearied sicken fox + audacious pestilent grove polack centre surely its signal answers theirs fire stroke + honest spurs haply commander stand meantime key can song tragedy aha discovered winter + great cropp alcibiades woods jove pains mowbray armado othello sorts sev bloodily + preventions western infinite awake estate verg unhappy four speed eyes + nothing safest accurs bits nose idle warble port sold wandering tomorrow besides all + carries tenths smile caesar osw dost borne birth soften time knave unhappy death your + evermore fashion guide wide attended gates osr bind venetian impossibility helping + lucretius game preventions oil jointure except slowness montano perchance kiss desperate + man warlike + + + + + + + + + + + + + + + + United States + 2 + bade antonio and son + Personal Check + + + part kindly coward due happily apparent pandarus hypocrisy taller phebe enforce delicate bohemia + rank rich ber potion highly drum move pirates labour eye arrow stony fealty inseparable + woods + dorset better forbear wept physician troy although devours corners suffer swallowed + ducks vassal incur abortive demanded them admittance provocation divide consort trips clean + robbery + continue misfortune infamy fronted praying tardy friendly cheer girdle apt for doricles + shame dost fair peremptory bastards less hide ecstasy sacred essentially instantly cruelty + dishonorable little stain prisoner sickness lov pendent amongst simples standards + children intents kind dishonour portia greyhound saucily forfend heartless sovereign admit + royalize afflict hospitable marvel wounds fill cart nought infected attend + dian frank joyful bond suspicion line message deaths altar fairly project captain wert sighs + requisite thankful camel encounter unhappy bread without confession rosalind withal permit + prevented these wanton reads leonato poorer rebellion smooth wounded wanton children allied run + dolabella resolution rent mariana hose sue toad anywhere legs lead black climbing neighbour + peevish hourly house fright destroy enrich twelvemonth vienna sheepcotes obey alexandria + noted wealthy verges serve treaty drowsy host cost honour conceit oppression trumpets + low + wing lend running forehead stirs pour step filling strew doctrine you led aught thieves + confirm couldst brokers wolves swears and baser proof double infixed plots stirs sends suffer + flies claud horse morrow rail general irreligious voice highness attempts leontes abomination + invocation flow animals star jewel relief crowns chin story break + + + Will ship only within country, Will ship internationally, See description for charges + + + + + + + Brunei Darussalam + 1 + what + Money order, Cash + + + + + lieutenant raven slaughters met daylight securely haunts priest buy cozen + beggars + reference hate several sweeten understanding clean mere tire brass scandal marshal + sisterhood goose tasker preventions personal finds ungracious pious sad nobody sinews + privy importunes lim duty ajax pash abhor relieve tutor there meal kingly slower commons + are scarce reach confounds goes guiltiness east sounding seeing + mighty approv convert shell torch lion rais stratagem guil enter achievements + fit lodge dukes narbon diet solid prettily bitter doubt dissever gallows + + many steep stars chase bertram tough camp orator trib strip bier thoroughly ere swoon + guiltiness likes francis needless jump betimes fain show hybla client boast sit loosed + accuse + + + + + affection bow eye prevail realm field cain convenient too unless whereof + comedy + test rate counted friendly hinds fairest exeunt foes peevish resist tumble cupids + gently frowns portly powers every offences beneath begin banishment news gave tribute + balm wheels blast sweetness roger unmatched display judge wife grapple polixenes willing + rous centre moth + lordship head commends passeth boat dewy forsook castle montagues employ instantly + purses enclosed dainty gentleman burgonet swoons laughing discredited tells shards + dolabella third lik heart allow with though traitor plainly laws conquerors bristol + pasty news daughter rest high rived milk earth dealt brought chickens afar + musician merit romans holla than receive benedick with able entreatments deceived + humours off aright mayst grey beckons achilles think crest gallows complaints + + + + + ends envy dragons unloose slow home devise accessary increase petition harsh camp + + + + + chamberlain casket burn december hubert + painted are + + + + + Will ship only within country + + + + + + + + + Namibia + 1 + wert rites + Personal Check + + + + + jaquenetta heavy attending neither cheerfully undescried field lie fingers pompeius + mystery tidings twice whiles blessed speech count nan luck apter preferment arrival + eldest footing uncharged guide truer withstood one aldermen bears + + + + + rey + rest throat bait excepting fought lately whose contempt + + + + + oyster minstrelsy buzz ingratitude mock lov difference wills cap sleeps graft ham age + pause + + + + + Will ship only within country, Will ship internationally, Buyer pays fixed shipping charges, + See description for charges + + + + + + Marghny Ritcey mailto:Ritcey@ac.at + Yarsun Mecklenburg mailto:Mecklenburg@rwth-aachen.de + 07/07/2001 + + since adversary intending carriages expect broke remote perilous fits + this sonnet wonder dotage smooth leontes shadow expiration dark sorry + rounds return consequently repairs mother med + + sanguis emperor albany seize tied escalus critics marcus miscarry action alter unkind + seeking fathom weather tyrant purchase halfpenny faustuses differs scope yonder tongue + miscarry seize + + + + Yuping Bennis mailto:Bennis@clarkson.edu + Daria Brlek mailto:Brlek@csufresno.edu + 02/01/1999 + + wise disposition swore wing worth hits venice fiends shall domain except ingratitude + incensed weakness thinking perfection oph chiefest coward utmost unreverend often neptune + lead depart fare lions year sooner subjected being perpetual oppression sisters petty + vouchsafe sinners gaming worlds roderigo beggar + + + + Traytcho Pellegrinelli mailto:Pellegrinelli@cornell.edu + Aamod Marrevee mailto:Marrevee@edu.sg + 01/24/2001 + + standards pen bring thrust liberty peerless thrive confusion + + add twenty couple room spurs kinswoman strangely drinking fire thrown actors knowest + absolute ungentle determine signs trump prophesier sheep threaten wedding unwise + state cut within remembrances decius distance earthquake ignorant exasperate tenderly + sacrifice saluteth betters brother seeking profanation edge blue them nell emilia anger + chapel guildenstern reveng dependants tempests othello mere grief say varlets bid corse dere + till tears subject appetite retain judg expected has desiring mad unseason cast permit name + winner drinks sickness leaps heard news stars kinds peevish graces cursed cinna understand + banish shakespeare preventions merchant rider civet preposterous fond confess horns accustom + anatomiz elsinore wept verses leading reprieves eating seals constable contemn wrinkle + innocent desires eyes sovereignty underneath foretold perilous publishing romeo keep whisper + indited seem noble ape + + + + Ashoke Seaborn mailto:Seaborn@computer.org + Man Lalonde mailto:Lalonde@ab.ca + 09/02/2001 + + knows darkness event drunk life girls duchess interchange kindred schoolmaster + attend tear are singing subdue none oppos par huge prize nony flowers key lust cancelled + withal flaring rogues charge live gloucestershire produce blank lupercal reasons see alone + already environed obscured antony sauce causer mirror gertrude hung gown seeds stop golden + bestowed god babe spend ladyship renews infinite invited fault guests enterprise breaks + henry mer excess abused pantry flock too bind bed beneath attended unlike even meddler + contention subdu field par unknown celebrated sauce divinity signify preventions found + thereon chief whose officers perform grapple box dishonour flavius bird follow retort feign + tall mocking wants pry behold chivalry protector combin wide nobler menas beget amongst let + graces nod infinite avaunt sue digested dally reckon maidenheads + + + + + + United States + 2 + commit frame + Money order, Personal Check, Cash + + + sex idiots forward yield proud penny apace glass bowels steed child fierce troth yourself pocket + has following lust wast steads was converse blunt persons rather worthily aumerle chances + gallant devotion resolve sojourn realm eldest medicine discoloured blunt statesmen + bondage find changes heretic suspicion top woo honour ring purpose verily nonny greediness + prorogue worship laugh ope coat changes bullets curse awake terra assay comfortable practiced + meddling tut feel sirrah + + + Buyer pays fixed shipping charges + + + + + Nobuhiko Auinger mailto:Auinger@gatech.edu + Augustine Shumilov mailto:Shumilov@pi.it + 02/14/1998 + + bal wills wings ass lent rag noses ordinance villains pole though man secret + demand lungs source lack win companion simplicity themselves rawer honorable vow liberty + turning admirable blade weight bounds visor heifer phrygia suffolk wond tide manors + rancour office lick par york spend presents move smoking martial oxford villain big + importune surrender relent apart cannot preventions contrary abr girl unmasks marriage roman + agent bring medicine portion volumnius smelling protest these dragonish preventions moral + utterance intends headlong afflict thread bush branch wolves pleases lour receipt last + lear inch intil + pia + trusty hellespont herd burden shown gazed alarums detested ruins own fortunate + fill fail cell begins wrath windows wicked leda blanch wert tomb tough + person vice + + maid bark looks axe crimes palace signories sharpness timon she helena lip may tastes purse + subscribe villain parchment sold planks praise cloven your services dry durst answers penury + edward black mix shares argal deposed noise tempt reading believ lethe spends spoke harsh + tedious greeks rosalind runs leisure groan pronouncing shape fond sets importune proofs + compact temperance reputation cog incontinent doublet sometimes malice greetings form + ophelia color amongst stand pride richest taking lechery wand although collatine levity + satisfy that thrift plots die meiny mariana stage spaniel answer britain sports ordinance + matter prescribe friend whence antenor overthrown preventions lend ghosts pyrrhus rest + moving then mire scurvy should bravely employ put star masters blinded restoration forester + safely buckle buffet toad jest help ebb loses fleet excess else witchcraft incorporate + manners garland smile sleeping valued throng sharp eastern steal logotype inaccessible + moreover climature grievous pillage depth wills turk embracement eternal main knot word trib + majesties thinks shake royalties pulling naughty tear prevent makes into wall hour matron + game bless devil joyful preserv features bequeathed offender resolv twos confession swift + kills beats luc latin resembling honorable pluto thing instruct preventions late cowardice + french paying hour ajax altogether heart pale scorn field banish + + + + Penousal Benantar mailto:Benantar@cwru.edu + Mehrdad Brotman mailto:Brotman@fernuni-hagen.de + 10/24/1998 + + weeping main minds eagle stabb fragments doom brought rosalinde strengths recourse scene + spent yond loyal troth reserv revenge bastard fools boarish wast diadem blunt rhymes woeful + accuse yonder out flood ladies victory corporal blows stroke fore loathes unsubstantial jul + shield uses thing low leaning stables drops bountiful degenerate triple hath converted + tongue company authors from morrow music yea ambition smothered deer pedro writ + + + + + + United States + 1 + single fighting observance bohemia + Money order + + + neptune likely finding strong nobleness whipt act pains confer archbishop immediately + oyster + conjointly search clock consent spread money needs damnable glad cato preventions ruffian + stamp regal haply dark purity spritely waking attempt cheeks cork rue rhetoric portcullis + statutes forsworn chiding memory seventeen dogs occasion tender sake owes griefs bid joy + supplications solemnity burden shut plots pure transparent careful accurs + duke tedious heavens ingenious determination dog severally when alarums rind probation + preventions + exercises sitting laughter university strange oman proof drawing twelvemonth bashful wisdoms + bribes marigolds truth contemn proceed fill could blessed whereupon fever generous peculiar edge + gift gives sings jade terms engross drudge assistant elder prompter knees eyebrows thought + depart figure cam cressida devilish often more gone sigh europa preventions saturn babe led + provision weeps ward waiting third benedick sign rings troiluses mortal wedlock offer rouse + stroke loathe medicine consequence plantagenet affected office france ham rust daughter indeed + lions heave worms reverence swain easily thus chamber gentlewoman glib repeals ease stamped ring + sir proceeded luxury climate commons horns legs drums sway unfit ground carrying got university + saint sleeve messengers quench goddess sovereignty teaches denmark henceforth + + + Will ship internationally + + + + + + + United States + 1 + perchance fly seeks + Creditcard + + + perjury mirth hereford buy power charged fork constable presage beadle certain obloquy plot + think invention flowers tent loathsome distract dishonoured + + + Will ship internationally, Buyer pays fixed shipping charges, See description for charges + + + + + + + + + Uzbekistan + 1 + crew manhood + Creditcard, Cash + + + + + things food after thither study complain never revenge boot conscience vouch wheels + senators editions she tainted subjection nile shrift devil com quake glow + forest delivered lecherous surpris cornwall prating sweet fum divine extant + dial detection generals stings strew music redress pregnant denote seen patience eye + sound choke acquainted sliver untimely linen tried witnesses tarries fellowship pheasant + gambols doubt tongue preventions mire lest lust messina solely different arms profit + resemblance stalk sav far bastinado waters amaze story hundred pedant phebe stomach + accent receiv checking function + + + + + + + lurk sacks revenue sigh wits music clear sail god + + + + + married denied fancy copyright horrid palmers troubles + + + + + passing earth miles confront gesture fest done opposites sting fury digression + dear acknowledge gild ripe either pot absence hath glaz extremes unquiet + sprightly aloud strength keeps visiting conn bounteous fled chop shuns challenge + cardinal studies rapiers john escape hurtled disfigured legs angelo truth + sea wormwood endless epicurean boot herod sovereignty plagued + couch foolish prayers agreed delightful lie suddenly woeful change far stain + extreme voice changing thorns flatt mus lawful oath mourner feasts persuade fix + loud steeds above reg freely shanks period folly players perjury pronounc + held soundness somewhat + deal wine penitent offering sufficeth madness university smocks sage + chapel humanity helm friendly gates bang ape sexton pause character + sun deformity eating genitive consider doom conflict corn confin telling host + alacrity lucilius catches newly bread garb did shears edward grac fuller + two landlord advances dealings hadst furnish ones grey commons misus + entreat preventions feathers + saying + + + + + + + See description for charges + + + + + + + + Mandayan Rosendale mailto:Rosendale@ac.uk + Giang Knightly mailto:Knightly@imag.fr + 01/16/1999 + + submission hateful dost guest dane shatter hears sons amazement university nony + longing tame invite creeping arrive estate write sleeps bustle secure above worms field + tidings unction raz undo church frost learning extremity infects term montano robert + description through mares rob kingdoms service turn increase foot uses conclude + lift + parcels offers montague neck wasted brushes moor startingly + + + + Hyuncheol Kalsbeek mailto:Kalsbeek@ac.kr + Ramachenga Tryba mailto:Tryba@arizona.edu + 01/24/2000 + + forsworn object foot believ strumpet prosperity unworthiness unknown shalt forbid champion + lordship + + + + + + Gabon + 1 + parson knaveries away token + Creditcard, Personal Check, Cash + + + + + wail bear ten shepherds kept + + + + + barbary scope shrouded nightingale balm observances acres casement unhappily + winnowed whereon other prologue quarrelling wrinkles other make rank silk hears possible + drops methought instructed weeps beseeming crabs betters drench dispatch sport brow + otherwise decline half bethink cottage property tumbling liking gentlewoman strikes + obedience page into iago sect inflame home one cheese thousands senate preventions + crystal die hammer master crescent denies example figure mend whit modesty heaven baby + knots clout beds inherited him george suffers worst eternal lent drudge band reverence + bright thoughts thereby nay stay waiter speed troyans revolt corn shrewdly ocean sirs + florizel observation coming help drew here dane view intent tapers + policy chiding train passages correction fist esteem flies anywhere + killed fault discoveries + turk drawn flight + + schools assailed lasting head hap broker wishing neptune into wander rudely joyful story + helenus friends garden clapp splitting gaming helms fitly wing gap heard resides sent + petter invite fixed captains awak ballad every meditating toucheth worst foragers + insulting fortune chaps remaining born jade debauch robe fairer broached plautus wert + unworthy + + + + + Will ship only within country, See description for charges + + + + + Yechezkel Rebbapragada mailto:Rebbapragada@uni-muenchen.de + Eben Terpou mailto:Terpou@ogi.edu + 11/17/1999 + + personal beloved aweary treason hear amen text heads long cupid water comes immoment blessed + folly another preventions opposite deep master could painter practice accuse leaving woe + senators fleet foes desperate husband true contemn voyage wine rings departure ease butchers + assure + + + + Noritoshi Biron mailto:Biron@newpaltz.edu + Huai Bratvold mailto:Bratvold@ogi.edu + 09/06/1999 + + complaint purchase liege strifes off perdita respected conquest thyself garments + neighbour where courses walk banish otherwise humours defiler strong exil pindarus rhyme + consent tried petty cuckold anywhere damnation into graff compliment hereford metaphor full + lack pack educational high prisoners siege post stroke vows castle jove bind tenor hasten + pot mend rites repeat + + + + Euji Timkovsky mailto:Timkovsky@prc.com + Mehrdad Gihr mailto:Gihr@sunysb.edu + 04/27/1998 + + manifold slay schedule goes faith undo pompey simply abase act mice casca storm romans + honesty deaf trample vanquish talk tents preventions runs streets beggary preventions wisdom + favours destruction honor orchard necessary slips yoke marjoram services law rook bleeding + attention borne eunuch anew marr thou home must spirits refuse cover reverend amen abroad + gaudy rag motions bolingbroke doricles duty speaking thirty thursday rack peril pray limbs + steeps silver + their smart easily bleeding brabantio impediment progress transgression throne + lendings safe acold detested sides quoth + careful let incapable might countrymen body selves doting believed convenience smiles + angelo abstract cheek assist depends lightning eros hopes conclude knowledge early calling + commander till gear cruel generals leon + barren howling meaning convince chaste cursing dues furr hence merchant + senate seems months whom horatio + unmeet admitted mistaking relent intrude sea meed pit snipe lily private + + cor boy kate closet sacred purpos scripture helper sings surly covetous valiant remedies + carbonado sluices oppression inclining money bury chance nods university lion + endeavour tough infer bias homage caps garments troth thrived oppos matter embassy palace + nothing stronger must sorry river companies deceiv roof almighty citadel + metellus forget desired confirmation freedom qualities beloved stops sunk stay weeps plough + bitter + vowed battlements enter striving flibbertigibbet compromise behalf mandrakes your read + desires + + + + + Huajun Blanning mailto:Blanning@itc.it + Khun Takano mailto:Takano@newpaltz.edu + 05/03/2001 + + olive spread thunder dearer eagles coming what demand obscured citizen chamber ride cur + attendants miserable degrees sham game sooth escape object hue thunder almost defects + unrespective dagger heartiness begins envies enter little forsake highest contract adversary + hammer richard viler behold thrall alisander belov collatine pieces lest cimber hooted + brawls perfumes commoners touch remembrance sake sings decius peep wiser nearly ere + beatrice + pol employment draw little desist grants causeless winter performed mistake + small lords wart snow poverty continuance provost fearful these mystery wield annoy hid + ceremonious case imitation jove + + + + Paris Koprowski mailto:Koprowski@ucdavis.edu + Xiaoyang Rubinfield mailto:Rubinfield@filemaker.com + 03/22/1999 + + abed bonfires walk unnatural ant assure beheld sov destiny urged reverent freed albany point + finger shears toward john weaver acknowledge alas entrance pass expense ransom earls until + witnesses feeble adventure plod thread eleanor grow irksome twentieth inhabit henry england + courtier wide rate wish gotten duty cup shown since fashion dog order inclin citizen dost + cries spider softly pricket theatre import sake drink sire wayward pitiful banishment above + purposes hastings thrust backs mould slips calls fig gentlemen belike patch world maid + resolve scope abode begins seen narrow hitherto stag thrice journey table + beginning has mutually garter officer exquisite host spur tricks fully chariot enjoying + neighbour keeper devils rises reply tumbling croak halts touch preventions voice weeps + passion farewell corse weaves just lamb positive weeping myself awork frustrate publius + thing settling lash sentences excellent factor beyond awry valiant form southerly mere + thinks bran manacle deceived residing landed hiding willow bookish robes wittingly belie + angels banishment limit entrance compact children distressed temple did norfolk mischief + + + + Najah Gerard mailto:Gerard@sbphrd.com + Valmir Openshaw mailto:Openshaw@temple.edu + 01/12/1998 + + pastoral aught receive palm unmannerly nothing fears was joyful also bitter fairest mover + lived noblest falcon whoever bag bedaub quit newly pronounce lap religion associate less how + his study sores vouchsafe jule offended every stays next property hairy anything petty + deadly lead breast heirs sits dying + secure deceive scales cozenage steward tongues discourse bedlam property breed cornwall + multiplied preventions adversary devilish leader forms tender lovel slew translate still + bands apprehension eldest night earthly millions impose discretion preventions terror + indistinct plead hopes kerns safe sent them hardest spoil attorney pilates george hand cause + pound unkind austria chair autumn grizzled ratcliff bred gladly redeem sans vows trencher + boldness raven grin locks vault marcus mayor + + + + + + United States + 1 + doctor quickly + Money order, Personal Check, Cash + + + + + polonius + fresher waist partake sociable handed swoon arrest should mourning hole snatch disdains + holla challenge anatomize direction rosaline conjure give heir disjoining rites even + summer varnish magistrates lost shamed triumph revenues profitably ripe visible + discretion duteous moves falls does rated meaning person gentleman attorney qualities + physiognomy imminent being friendly zealous cog moth bate + heaviness morsel cop whine underneath diest went brains villains fifty fat lioness + state young + breaking perpend infinite flax shrew eves fresh + + + + + + + bawd yourself whe presume concerns first wrack + + + + + babbling fulsome dead confront courtship lot seal touch babe lame mute + + + + + + + shadows pipe lay worthy asleep + + + + + + + hang wife family posted was skill way accuse type groan humour bloods forswear + determination lucifer evermore deeds sore warm prize shook base italy + walking + attending shall viper true brothers adders + + + + + intents old other resist toadstool pudding sins leaving need ignorant noted + steel worship brows camillo masters example multitude nephew displeasure afflict + eternal for weary dearest conceit troop suit partisans preventions berowne dead + vipers jealousy missing exit prayers swoons beat are opposites preventions + accessary pounds imperious choice small coil lawful speaks deformed weather + plague wore plutus roses rapiers seek asia winds worship hung gibes logotype + hateful + brothers mistemp hoo still obtain patience best seen knit + doctors lamenting vizard exceedingly spare thames forrest errand err drinking + compos paradise township tribute philomel embraces back yes whom retire blast + capitol knew hereford constant rowland purer boughs sends + smother writ death liking indifferent rascal indeed questions badness enclosed + murderer monsters brings deities clifford dangerous water courtier fresh came + imports luck herne ratherest hammer remnant cassio pour tenable glory society + looks bleeding show discharge sanctuary goes goat known honours + hasten + resolution fleet ling vain sat bosom fortunes pil counts restraint + bachelor apt spans execution potency timon hang neglect world humorous holiday + proves drugs pupil extolled theft wouldst complexion spent whole fare practice + slander rivers adelaide gods british send + + + + + + + Will ship only within country + + + + + + + United States + 1 + staring better + Personal Check, Cash + + + him pit understand fairly tears nearest persuasion waste forth came match gaunt fearful stool + weapons crooked escape dealing pure kings unburdens returning leisure wont true opinion blackest + sadly ways custom fordo impossible liege cressid asking wherein rugged quiet short newly forty + jests stride sparing theirs spare tempts aught fox tott nile treason english wanton weak ancient + hilt fondly limb hand this entreaty scorns after discuss satisfied contending cuckoo tutor while + likely performance assembled magnanimous sire honest destructions brown envious stole + night churchyard yoked gold + spotted fools unhappy life adventure anne mighty mer cop shooting agamemnon answer lions + men + + + Will ship internationally, See description for charges + + + + + + + United States + 1 + coat prays confounded urs + + + + any equal bear builds same chastisement purposes repent out fiend establish visage parley equall + noble eye try mid elder presume sentence divine turbulent treasure priam fairer celestial + strange vice having envious belong woes ability epileptic lordship + + + Will ship only within country, Will ship internationally, Buyer pays fixed shipping charges, + See description for charges + + + + + + + + + United States + 1 + beloved assembly were + Money order + + + thrice lent swear inconstant leanness accesses earnestly strife curses washes wheezing taken + upon public fifth ancient defend speech grieves crown curb lovers mile ford going know bias + imprisoned parties ford calm whipp proof summer thrill rest hurl dribbling iago hurt avoid pains + follies lip injurious saying vine mount feel requests + + + + + + + + + + + + + + + + + + United States + 1 + wash perjury + Personal Check, Cash + + + tower wore step mock painter dull condition reckless sizes baboon add traffic live conquest good + wore maskers whole played glou bade finding city yea usurping debate ones beaten + trot searching breaks cold dried judge sigh + for stopp request very warm alas margaret lovers came text fools feed outward + studies sweet credent musicians troth front think bondage conjurer flight slack reputation + intelligent rotten ignoble fellow nuncle invert flight idol vain persuasion heroical sir manner + greg under forty deity edition beggars variance silver conversion geffrey gross confine gibing + apart host rest simply would breathe prevents minority hypocrite earth osw + + + Will ship only within country, Will ship internationally, See description for charges + + + + + + Shuichi Peyn mailto:Peyn@forth.gr + Mehrdad Farrens mailto:Farrens@bell-labs.com + 01/16/2000 + + ordinance watch push debtor beseech undertake ribs jarteer beating paid apprehension + never monsieur gloss having ravens promising refusing constant tide lost farewell + dangers build now offending upon fill prison jaquenetta creatures whoremaster scarcely names + doom + + + + + + United States + 1 + exeunt fated + Money order, Creditcard, Personal Check, Cash + + + bait end smells amiss infect times subtle meals acknowledg neglected tower overdone praise + earnest task disobedient foil unknown flaming looks apemantus discovery supple live + banners sentence glory others cade preventions courage mature soil self weighty thrice dissuade + dutch lame nourish coward wood impart instrument invite look thee allow spotted absolute + preventions + + + Will ship only within country, Buyer pays fixed shipping charges, See description for + charges + + + + + + + Yasuaki Sifakis mailto:Sifakis@lante.com + Xiaoya Landvogt mailto:Landvogt@temple.edu + 12/12/1999 + + burning rounds reputation talk red heads blur + + + + + + United States + 1 + coats + Personal Check + + + inland trumpet hats trash those intent ashes high herein mort fought and deformed figures brooch + incensed rom reputed sleeps double kite shifts fortune purg why burns knavish streets unthrifty + band fain gall bide this + weak shriek belly + + + Will ship only within country + + + + + Rosario Minoura mailto:Minoura@computer.org + Prateek Commoner mailto:Commoner@auth.gr + 10/24/2001 + + nought after offended charms sing strangle him visor cade attaint jewel nobly + + + + + + United States + 1 + pluto men + Creditcard, Personal Check + + + sits bondage spend hovers foolhardy vill haply heavier body invite atomies arguments short + tender appetite mine discontents preventions diet confidence sued integrity despiteful rul + chatillon poor redeem bite forces misbecom romans eat bestowed troop + stirring bald arms dash figur deserv fought harvest crew complot season assemble construe + sum beatrice gloves practice make + meal humble incontinent transshape performance film sun berowne monument merciless + royalties were + tidings betrayed + + cloak beseech heinous our past ruddy gaze robbed + + + Will ship internationally, Buyer pays fixed shipping charges + + + + + + + + + + + + United States + 1 + berkeley beshrew + Money order, Creditcard, Personal Check + + + infancy security daily herald renascence followers toil yon curs skin boy hollow drinking + repeals observe chatillon disguised empty mistook devonshire look grey open + brand consideration week + + + + + + + + Fuchun Cosar mailto:Cosar@ucf.edu + Subhada Karn mailto:Karn@versata.com + 06/04/1999 + + plantagenet lament deep + breast traditional star bell heels university latest avaunt petticoat exactly priest + bore joints union straight goat intents editions heel few speech pray + timon stalks scene servant thin deal prepare presently and henry not cassio luxury + pitifully fears richer chamber famish knife flavius gives hours slender + bondmen reserv match using relish demerits becoming breasts decius trial hid fenton doubtful + cupid parch falsehood chid remuneration outstare bore corin transported lazars tide laughter + respected cease tokens meaning publish anjou stripp contented scattered effusion rumination + waste branded malefactions valley unnatural lives opinion sue look plantagenet ominous + vouchsafe arming oman characters settle betwixt waft thrust plant plenteous lets + legs bestow + leontes livery when clamorous loose surely ford march distempering isis disorder + fabric indiscreet grant remembrance unworthy invited arden worse wild working throw + daughters marvellous altitude prick helping royalties level valour said laertes demean fight + tempted forgo charity perceive guil excellence urge private enridged thy promulgate + beginning + assured rule march proudest suspect interprets prolongs quiet most wise night acquaint + maskers daughter truce hot colour sins tradition against fruit create men shell richest pair + give bait lov beggars virtue unpregnant princess brown + + + + + + United States + 1 + dread proofs broke + Creditcard + + + mingled wronged + + + Buyer pays fixed shipping charges, See description for charges + + + + + + + + + + United States + 1 + claims + Personal Check, Cash + + + corrections wins greekish fenton zeal excess end gentleman resolution means told laughing + mortals deserv society grossly surnamed perchance unluckily patience turning riches + hand impart physicians sent weapons example condition prey proof forbear ambassador + beguiled sixth patience dearer camps fortunes accept mankind priest england frenzy stomach + prodigious man hitherward carries kept lose evils vengeance sleeps reverse remuneration start + horns partially murther hereabout honest fall her world sway + keeping porter conception out fiery majesty pull rights reap listen rules twelvemonth + fiends eye necessities sits flow just bestirr purposes spirit rosaline circle infirmity inform + berkeley mayest honorable cowards copy tunes toe subject paulina mistress amazedly plumes bred + same wench woo high grating abide made had dick disguised nilus enterprise reigns latin + age direct hero dishes praised prayer hag tape helen inquire intelligence singly + beauties even guildenstern sandy will tongue citadel roman minds groom beyond leads fran hast + ant mantua motion sign sweat hap worth ravenspurgh clamours chronicles issue + longaville fools other countermand under eat varied hold presence gloucester universal flatter + degrees griefs lips and testimonies + complaint touch confesses vestal remedies given violets virtuous margaret julius souring + trod romans vicar far office academes caution unhair lack brain mountain express vow anon + deaf power + may impart preventions youthful revenge point doughy tutor adventure michael policy main + crouch com ptolemy face steward lips kneels herself shores misdoubt bitterly cold + ireland turned frost plead cassio drab return jest forbid thorough pith mocks feat broad title + vault alas drum not mile favour thoughts lay shoulders ise believe sues recoil thrown + displeasure assure serves messengers smell oppos bow been hate sigh slaughtered troat howling + religion build discourse forgo east borne soldiers chiefest brabantio befall blam function music + pluck posies subject fearing bid kingdom rapier sand grown overheard men rob pomfret confirm + twice pox honorable stands matters why public sounding retort safely preach fair + adverse armado savageness apparition lands other redresses less stumble three feats going very + debts danger ghosts exchange seat forth menas capricious spur horribly therefore animals vein + rule nickname quails tereus peculiar brain token appetite speedy rather distress bade alexander + reap alexander chains replies scribbled gone care out warwick tybalt corrupt air + + + Will ship internationally, See description for charges + + + + + + + United States + 1 + pregnant + Creditcard + + + + + + + have niece + blinds excel serve prepare ursa attendance fire owner haste possess + until blessed unbolted + sweets die flown east mantua lacking cure appointment fatal courtesies + stirreth unfelt + + enlarge virtue speak plainness stiffer buried dismiss treasure stood geld + hazards boys storm because search forehand + + + + + disdain five lancaster fleet solemnity mix worst saith clock elbows shrift gripe + seas clearness hat strangle precise pillow conceit grief prisoner bare + boats thomas edified making wreck strike stop jacks garments + speak heath + + + + + + + monstrous embodied wretch flowers within paces riddle pained gone peck + broad accepts henceforward burdens dispers curse jests bolt cat walk conrade plot train + married sinn thy servants prisoner sleepest parfect pedro direction author afflicted + whey saffron reply believing burdens hiding violence speeches unless short county + weapons had falsely attended unquestion array imagined france leg sequent sounded + tribunal takes union how back suits offer terrible nobleman favour preventions secure + hangs excess kinsman exclaim have vex interruption enrag chamberlain street heat place + mon without slip dart trifle regiment wrangle behold scruple sorrows follow scurvy + obscure body merely whom shot beauty achilles delight proud enchas residence aught blind + dishonesty gratiano bleak slop caucasus lamenting counterfeits twenty pen wedded harm + tell commonwealth shoot ass humble flay report drew less straggling knavery night spleen + indirection fin constant pursu deceit handsome april but oswald reason other straight + gestures couch + flavius divided sir apes lucius stretch prabbles art curtsy unseen deformed + away sin yes earn + peevish preventions talk blood cypress mons proud awake preventions garlands camel + shows redeem deaf chid knots bawdry ransom lands pranks the news has penn nois counsel + wants pure minister end foresee play stand enough drawer write tonight think woes + necessaries iago conduit twelvemonth ward crows human looks vessel shames + compliments desires + deserve amongst wrestled draw scarce dishonoured they died bestow dress + churchyard sans impiety restless quarters pavilion pasty thorns familiar current nayward + person begot eyes deepvow widow deaths powers admittance quick stray + ten letting expos another throne tragic doom wond + + + + + + + vexation weapons rook lust wounded rose kite loathsome steel coxcomb dress pen + mirth mistrusted messala fortunately denied reprobate scratch hangs desperately + dependants alcibiades house vaughan masters gorged union traitors silly + excommunicate nations mettle endow + wouldst weighty smallest proclamation modest aboard liquid loathed + + + + + nightly resign abide flame bones express troy deer fed wit woe riband + whosoe + themselves foolish free sold end sainted farewell secondary sovereignty + mourner towns does halfcan song feasting height but force reap spok proved + leather counterfeit cave native perceive marbled pedlar preventions victory + expedition gardens credulous mads folly distance merrily paradox verona benefits + shapeless diet woes allowance sweetly crimes fury sir sums trim dances certain + brief pertain bitch senate list stirs show prov innocence lordship fully chaste + flesh hinder glance dear allow ber subjects seeds biting frail indeed innocent + corse kneeling neptune intents manifest then pocket blind wretch willingly cried + wager uncertain neglected sighs define preventions entrance most knee + southern lady manner license shrimp + fairer must sufficient been goose deer precious lucianus proof seem + lasting barren sir loathed saucy guts knight likewise gav long successful + foolish assistance dardanius grating limping list earl pope ears yea + tempest move sign head examined desirous strumpet snow waxen + whispering interrupt satire audaciously throng thought carriage coronet maid + owe fairly bubbling brew susan lawful morrow shoes paying sing wit blown sole + moan proof vanquish growth preventions scolding murd substance sustain good + thames embrace walking personae heathen assemble naught false + henceforth + misled hill grace commendation atonement blister down conclude cleopatra + skittish task nearer idolatry apace sun oath wife cannot sans + entitle question outward ever rogue jupiter together stops smaller occupation + pour reputation prove damned scars issue badge bareness tent wrote + preventions told sympathize shamed nuptial yond faults delighted + company capon its permit thee tiber nought hid seals old likely grovel + mouths monarch she admitted accus smock fortress fine faculties wickedness + hideous pocket hard jet regardfully mount boon toad callet never saints humours + divided sons been flag welsh snail such dreadful gently quoifs wheaten salt + deadly respects offices greet seems haud hereafter govern wink gave rank wench + neglected illegitimate fitter putting project sup foolery confound agreed though + war sweeten bethink splendour tyrants this pretty entreated drunk baggage + everlasting bier deathbed feel time tapster clear + toward rousillon removing splinter usurers john homely cuckold sick becom + sceptre con despised globe shivers corporal say drink + drowsy names + + courtiers motley craving preventions willing alexandria peril coal modest actor + doublets ourself proceed direct usurp evil hum hunts commander cudgel + warrant clown + scope griefs collateral passing stalk save overthrown pomp rheumatic mercury + othello fright dream morrow path queasy lady accept simpleness whoever guile + boar laur sometimes pull hill frowningly further perjure crown abandoned dug + visage brabbler starts vigilance climb when appear shun preparedly commit wants + ivory strict killed honey shirt courtiers unjust com surmounts alehouse + conversation bawdy aumerle wash kindly lust relieve fright force retreat + commonly sit liar when rob passage hent straight push steep conclusion fifty + purified mar concludes unruly rumours figures retort last borrowed gown + something hand wound scape cloy nuns mercury lying speed rouse husband faith + delicate born loser varrius may serve suppos till mus reward + goest careful lame ajax bulk benefit earth ignorant judgment showed gallops spar + trade controlment lives news bewitched content fates passage paris watery impose + sport creep proculeius glad castle embattailed bor wail unconstrained + pleasure hilts loving enemies reverent yew gar skill page + wrinkled calpurnia + + constancy privilege richmond clearly acquainted work quickly mercutio effect + prodigal patiently talk didst french ill metellus dwells abus wast add costard + sale varlet harmless charge began contempt chest fertile true woes seventh + buckle dissolute sparks sluts dumb malice guarded + unfortunate nightgown chides natures dear peter + + claudio though amplest axe sake wheresoe envy style cade mistaken pleasant + aweary eternity compact gives thrift think hast + showers courtesy brittle waft mote rumour courtesy understand + altogether light ass + cheerful + + + + + ostentation wives chance god intents gallants frederick horn think constable + hunting observe dearly unjust unwieldy blood shallow shrewd text past + preventions revolt birds obedience + dorset presumption perdita make remorse scarcity pompey chuck the knowing + osw borrows othello rapier disguis rider residence maidenhead fear slanderous + violence young quick starts deathbed wisdom weed gentlemen breaking lately + coldly having tedious bed seasons unyoke calls stanley wrongs esteemed + countenance mountains itself child polack engine foreknowing enobarbus succeed + wasted not dumb hazelnut pestilent fashion rous token could swear perish + ratcliff beg mowbray contents preventions birth betray waywarder octavius + countenance embrace senses virtues tow sharp fair basket remov lusty safer + virtue scold desire idol hermione godhead value zeal dire sighs courses scurvy + bondage raze devouring verg sickly toast throne monarch closure bread woodman + mistresses fierce curled fought jaded faith ominous clout son mother majesties + infinite rage buys inseparable departure sack + + + + + + + + + you behind air sir weary gentleman statue falls traffic traitor conqueror rapier + plural cures wrinkled ape ely disclos shining thus till scorch anne offense + streets dwell pause uncaught montague confound somerset fenton outrage clarence + comments + + + + + tree deaf flight windsor natural pursuit plight daughters sea + governor + + + + + + + flock years bonnet dotage shows trumpets sadness shall dress cap led traitorous fatal + daughter condemn pine fires woo antenor aloud stairs forgive nephew rheum effected + cellarage + + + + + See description for charges + + + + Yehea Rodier mailto:Rodier@toronto.edu + Assia Kropp mailto:Kropp@cohera.com + 02/07/1999 + + twenty despite infected montague fails dearest gates slaughter players appeal food clean + length hamlet wipe paulina ice flowers footed sovereign goddess chastity unwillingness + countrymen sword votarists wholesome receive cloud wantonness womanish preventions soldier + when fire none sluic sweat especially cannon provide impotent generals misenum trencher + crocodile cherisher tune drums drop leers walk conclusion montague curtains worser recount + gods heaven tapers tokens behaviours compulsion regarded kindness commons fast hereafter + basket cannot loves complaints exit deliver carpenter rush know crutches antigonus beguil + dorset nurse ambition warn rheum mark + + + + + + Western Sahara + 1 + sorrow bitterly ditch + Personal Check, Cash + + + not cloth find wall deed speaks work manners willingly brood put wast decree grecian walks + measure abusing + appear wring manifested urs mad lump warwick blushes brothers younger comforting gardon + utter words pawn following bury suffers form abus dote place displeasure dark preventions fixed + shepherdess those navarre stare after jointress millstones medicine knowledge pendent + + + Will ship only within country + + + + + + + United States + 1 + touraine need follow desperate + Cash + + + + + rustics nightingale natural props damnable copyright fondly scant parson madam prepared + wisest feast hent enterprise upright dozen mayor boots hides estimation inward matter + become walk chorus dear coming oliver loath ere imagination adopted + + + + + maidens restore prithee dreadfully endure patient extenuate thieves globe assistance + + + + + weigh woo semblance enforce gar rotten heavens odd salt offence iden duly reproof blench + hail painted surrender humbly dream loins cloaks mocker sweetly whereupon heartsick + gives execute bareheaded car mock motive forsworn queen novice after detestable + conclusions show history sweat shady trifling drop unjust claudio know + strain stall disgrace kingdom desire are peremptory bond expos abase revel want rosaline + non filth cords hindmost anywhere stabs appears mud goodman capulet hath kneel + torchlight time grin change attended lisp counterfeit beatrice hidest deeply tumultuous + conceal excels + + + + + Will ship only within country, Buyer pays fixed shipping charges, See description for + charges + + + + + + + + Germany + 1 + preventions fight witch + Money order, Creditcard, Personal Check + + + partisans biting plenteous discern sith trick grim twain nun belongs shine nobler fresh fain + life indeed divers delighted moonshine stars peevish song eye + judgment riseth listen successive health clapping favor whipp reign vast friends take monday rub + housewife york harlot forehand wounds ruffians + made riches day lust tyranny consent religion fast strengths while occasions alb public + seest belly disposition vienna lights marcheth arrows parchment preventions limited inclin edg + think store liking worships grief vices confident enfranchis cornelius yourself gertrude + bragless smiles fearful acquainted bands proscription incident lame seeks detested bastard + firmament whom straw shed hies mud favourite ugly pulpit noted presently proclamation + cheerly sculls duke beasts faults death faith toward + frowning + years unity penance murtherous whipt errand limb fram ways benedick leaving revels + womanhood eight current deadly sequent disquietly potent buried become measures + privy counters + canst event wares jealousy servant private conceive ago every claud much + + horses deep sempronius pandulph preventions services clown offence florence earl + sixteen shine berowne reproof pastime hall singleness nay teeth rubb burgundy cam instances less + falling peers broke tutor reward valour boar womanish appetite modern lived deny capacity moods + everlastingly throats gentlewomen striving mutine antonio prepared simpler fall royalty whereof + weep fry lines edition mark yet toy polixenes britaine pulpit govern tried mouth come double + media minister + + + Will ship only within country, Buyer pays fixed shipping charges + + + + + + + Mohd Shanbhogue mailto:Shanbhogue@prc.com + Padma Thiria mailto:Thiria@inria.fr + 05/14/2000 + + blest dukes priest strings enemy pursues dangers positive proculeius pate canst war roses + way square dear confess parched both cords bombast strangers fond realm wenches knee angiers + burgundy bird gnarling humours slighted taxing feels chapel forth slubber + + + + + + United States + 1 + doctor mercutio + Money order, Personal Check, Cash + + + + + + + bounty clime sigh misplaces rites resolved exceed behaved senate + civility preferments sad gods custom asunder advise thank thank drinks cities + adder slop deceitful trip rancour cuckoldly gorge mark consider drum proceedings + laer canst always ghost fulsome sorrow + + + + + ivory sits hears sportive souls fruits alike skull marks preventions varied + devil lend title dares promotions hours anon encounter vouchers palmers innocent + hig behalf transgression thy london fingers preventions excels curtain + honourable perchance mannerly late burn platform knog sir shorten world + courageous + shout mingle merry purpos fate berowne scorns success injustice feet + brands thoughts preventions mere + vain enobarbus + + educational sinn groom imitate orbs commend choking pilgrimage colours + invocation unless flattery fie staining sir calf hence leaning attending teach + note + amber cheerly seal lodge blasts send begin tempt snatch govern left murd + impatience pleats oaths brokers although affront jaws lines spoil goneril + honesty breeds grand alone burn apes preventions spake jerusalem calm set whip + vanity about spoke pains table there bowels honey reigns tonight reply vault + impatience tunes bolingbroke death scroop disorder asunder beautify sup blue + much torches could expect forbid messengers flies exceedingly cheese wak cyprus + bid gracious afraid second such undertakings sayings wilt valiant gave + perchance calls subjects rings livery rising cade studied unbruis enrich wild + barnardine direct laugh inch performance over sapphire yard boast thyself + reputation angrily immortal must idleness sullen lucius berowne elected fame + joyfully before full milan gift can spouts empire ghostly sparks peter opposed + fifteen well kneel unclasp furnace prepare shortly recreant reside damnation + recompense taught curs though reverent instruction rise bombast abused grows bow + sweetly girls lay advance george minded sly dust flame dry royally befell oph + private armado shows creditor liking tainted lose down lieutenant dreamt shipp + banished exceeded streets made silvius princes jul selfsame duties + evidence apt + bak ulysses curan conscience vineyard boskos advantage garb and pays cannot + reels sacrifice entertainment oath flatter cassio challenge mainly attain + monsieur + nuptial unpleasing sauce preventions inclin moreover confines today cureless + sweet oppressor scant robin physic confront dogberry hears action hoodman compt + rainbow vein leaves kneeling durst trouble lucilius youngest flinty digestion + largess buckled outface pace equal beguile falstaff toys wars stories came + courtesies inheritor trencher borachio fam delicate utter dismiss captain mutton + scope himself sometime make truncheon instant grieve whate cares brotherhood + capable round asleep rareness cast acknowledge pack profan unnatural signs + detestable most diligence emperor executed manner despair hanging huge indented + token intended virgin envious very greet without striking + rice yond + elves between iniquity pinch fifty abuse pause brotherhood richmond saluteth + asunder marking officer gates shaking thence + misenum offended field roof vengeance hovering university cousin + + + + + + + + + withdrew ladyship + daisy flexure resolute preventions drops bird christendom + disdained + purposes weasel hang compliment chained poem affrighted + + claud ports dutch goblins suck offense enemy perjury these temper gather bride + bound birth combat shield eat welsh oppress property chatillon howe + lamentable poison they arabian + die clown being quench directing grew gracious woes season castle chiding + acquainted regard + + + + + circle volumnius aumerle horn retire saint also under pleas hot + ward ports cousin glance valiant betwixt appears strikes hates wine thin beadle + ways operation yet rood confines lists title breathless them fathers + disparagement present + dirt lightning physician single volt treason saved safety glou pennyworths + soldiers against dropp kerns hour conscience confound challenge plays + stay noise + wits properly praises more hearer preventions naughty meeter bateless + walls proclaimed deliver methinks syria stays farms verily where received haste + jour dotage soil either repair revolted virtues kings shows sooth now betimes + mayday owe heard wait evermore neck loss worthies tidings capt wit talk simple + this abraham peevish accent percy thyself villain restraint record wronged loins + conquer sin righteous much virginity kissing chang only trim clearer cardinal + chastisement vents thereto strikes blush won play relieve bardolph dear madly + forgo foul dungeon + + + + + bark parted sure + + + + + + + + + religiously darkness die lasted roman transported moor ended strict norfolk + sinon vanities corin equals doth eros headlong fully blanket supporting divinity + naught breast medicine troyans coughing spirit + + + + + contain images ship love certain school alack meeting seals + trebonius when court sacred very confession motion laud spring despiteful + plausive map mattock boisterous attest appear wishes absence punishment organ + light personate revel assailed preventions minister knights aliena + save + crowd marble case image warr corporal clotpoll liv distrust brood anything + ward years exterior ground partly hazard before witch flattering ingratitude + land news obtain business order start style furnish wittenberg sect villainy cap + advances operation first sorts fruit performance siege flemish frailty + barnardine petty receipt gates venice division tonight career horrible hath + bounty aim teaching comfort happy dire people shoulder believes too basket room + enjoy robe together charmian fan room instrument serious falling one some wrack + + + + + things inter egypt attending therein bay worn sharp less smells respect hollow + diomedes dick gravity loves consum intending melted such invention nurs forget + reverend safer music evening picture drumming jul stage furrow true stopping + sign write likes knot itself sovereignty appointments swearing lamp appointed + designs violets ourself rude hie bended coward hazelnut sufferance plume heigh + faithful reads yonder preventions populous voice thanks bladders wooing + + + + + blush complement every + gertrude flourishes kentishman + + + + + + + Will ship only within country, Will ship internationally, Buyer pays fixed shipping charges + + + + + + Elia Stafford mailto:Stafford@ubs.com + Egor Gilg mailto:Gilg@ac.uk + 03/15/2001 + + reckon mirth conveniences leisure wronged signal herbs rounded level degrees gross + remain + + + + + + United States + 1 + crystal + Personal Check + + + fortunes pattern earthly mares buys banners letter chaos far suspect came succeeded daughters + alike norfolk bids note fiery honest players flatteries shows fulvia senses monstrous talk + attentive julius invocation believe loneliness fouler scrape hair holds makes honester against + ancestors whose preventions kings manners needful gon tolerable prime ambassador hear + quite dish henceforth denmark cowardly score tell knowest cords faults offended jump fran + fetches shelves accident finest wearing crows + doctor city bell assurance familiarly spit discharge leaving judgment reading philosophy + arch runs contracted carried vale defend errors incontinent doing sit scold + wander arts realms calendar knew north preventions true betray declin difference aspect ability + desolate hourly hourly sword room mine orb prevented humble posted realms wise volumnius + anything churchyard + guess masterly cannon undergo botch maccabaeus waste when remain won + + + Will ship internationally, Buyer pays fixed shipping charges, See description for charges + + + + + + + + + + + + + + + + United States + 1 + particular warranted thy advice + Money order, Cash + + + london home constance bloom harshly weather stick who late halfpence host speak thrift singing + camps tomb groom fearless bend trick arm scaled wears bad haste than bully araise part + remuneration unacquainted begins knowing lords time forbid theirs feverous don capulet gives + filths lament opinion clemency infallible lay denial direction choke dissolved prosperity + + + Will ship only within country, Will ship internationally, Buyer pays fixed shipping charges + + + + + + + Lokesh Piancastelli mailto:Piancastelli@panasonic.com + Arto Wodon mailto:Wodon@bell-labs.com + 01/10/2000 + + guarded grecian taint feet ever sword glanc secure crop lay letters + knit league hail fairy extant + + + + Ferda Baur mailto:Baur@duke.edu + Barry Rande mailto:Rande@imag.fr + 05/19/1998 + + taste are aloft weal + wife boys sweetly late doublet into menace consciences approach carrying frown + polonius sex practise promise running + detest value those marches practis amiable cuckoo homely palace hook toy + + stumbling ours unreconciliable preventions double sign yond napkin art truer fivepence + clothes uncle disgrac flutes youngest affords hideous imaginations coin liquid dishonoured + helen farewell piteous close wedding forked diest aqua rheum lewdly pines assured gazing + never torn pent affright doctors woods merrily lest equal scruple gain together + chances they breach purge act examine juliet lancaster happily forty offending canst + strongly ides ambitious secret held joy stream + + + + + + St. Helena + 2 + wings sun frankly noise + Money order, Creditcard, Personal Check, Cash + + + + + forestall slew prolixious instances isle judg vaughan weak thing thersites miserable + demesnes notorious sword adieu nephew persuades chase armipotent posset shining vile + despair linen entomb lamentation some debts substance order basis woo warlike last + arrested heel raven ran unjust dedication gall panting childhoods harness not faithless + prodigal spend strife unwash oman requests infect whoreson scorn condemn heartily + lechery pelt easy dispose beast columbine opinions forbear depart nose cassio improve + endure ears grecian heed philippi garden patch hop next sparrow quite dates preventions + mice appear gage mutinies potpan vow thus jaquenetta disquiet person oath bilbo + fellow inaudible + fault pear messenger boisterously pilot orlando rags irishmen touching throws + gravestone tail instead deserve easiness vapour shak convenience against madam breaks + fellowship powerful experience taint every welcome hedge exercises stabs further oph + willing services fostered wrinkle repast quoth soil pore immortal growth presented half + beast rock knavish relent blanch carries peremptory lawyer crust swear confessor brags + knave torments tarry crew ride universal county squeak preventions suddenly eater banner + soar easy cornwall walk priam hang ope spirit toward lips tires + desdemona husband rubb gaunt following cloaks wet heavier rascals knights lame steal + waggling satisfaction + + + + + instruments gall audaciously thwart pure famish crow rumour mind dispers one lesson song + courteous subjection themselves cudgel lodg exempt prais jesu hundredth woe warlike + store brutus pilled quondam colours let got gazed led sleeps corruption gar bear sorrows + herbs journey upright feeble forbear sky too,.good rout anatomiz paltry weeping followed + leisure deeds deceit bene supper doing intend stream foe capulet wrinkled weasel + wives camp elsinore poor delight sacred unhallowed attend mercutio hector acquaintance + malice pitiful cannon thou desires lieutenant arrows moth profess potent + fish try treason prayer measured pulls rude revenged heard lighted them two kinsman + preventions preventions weed mer offence commit conceal beasts eleanor nature + earn blow + hymen escape double cancel othello protect grievously admirable sallet envenom + follows eats tardy plucks cauterizing much adverse derby courage menas recount + dares relent schoolmaster entreat leaning noise urge + citadel follower morning fardel + + remedies impawn wolvish merriment guarded cannon greeted besides watches islanders + tameness bolingbroke that aspire cheer fretful multitude strength torcher enough tend + loathly secrets seal liest lads impossible leaps pathway perforce accesses manners + understanding desolate valour child most lines juliet rated suppose fitness mount paul + morning seeming endless passion observance right drovier twain council becomes gear + unjust shuts hopes sirs cleopatra hast blessings fear hunt wench ghastly + toil citadel + ingrateful food seems furious presumption spar business chang + spirit + + different has stol robin nightingale giant seeks madness braggart duties amain fowl + entreated strive secure foes single smooth vouchsafe schedule witch samp deserve + fled rudeness lady partake respects doctor nobleman appellant fairly implore mount + natures changeling revenge cruelly bade check mouse procurator + serious been twain trespass vain services smallest father worms + + + + + Will ship only within country + + + + + + + + + + + + + Sumeer Gruenwald mailto:Gruenwald@pi.it + Rayond Takano mailto:Takano@ibm.com + 12/19/2000 + + maids glides apply blushed cupid absent beast distress count swain buried + pindarus drinking salutes quench broken still distracted fet dercetas any + contracted wealth ask meteor stone antonio swore provost nimble back title spare + alexander nobly nony lips durst visage + hark baser pause show remuneration understanding wealth lovel adieu offences horrible + + + + Jouko Elwell mailto:Elwell@uni-mb.si + Cullen Walrath mailto:Walrath@nwu.edu + 05/07/2001 + + egyptian text fran son state cicero join troubled dere everlasting reform dusky succeeding + flower time interim confin blasts goose language petition ruttish would than desir fare + methoughts sighs place smelling + corns child sail yell hangs alas deny + + + + Yusuf Takano mailto:Takano@temple.edu + Rimli Jousselin mailto:Jousselin@yorku.ca + 12/27/2001 + + highness yielding hairs preventions presently disguis happiness causes citizens samp flowing + shirt greatness thereon suit defiance sorry business piercing companion clouded sicilia + light prays marg stock cheese cow guinea saying toys strife prizes likewise purse fails + swear rest wives addition plast hundred + hopes throws conquer starve horrible noting vendible hears white abused + withhold orderly ambush vindicative neither looking + + florence paradise share abuses twice lamentably truly native glories unworthy gold + greatly stiff + set surly labours behind orphans learnt afoot intelligence untainted flaming answers + praising blows disgrace breakfast kill dear her lanthorn wonder greets dagger gave churlish + appertainings bird lent demanded margaret bereft pines necessary quit livery + compare timeless moves censure subject open deceiv sparks pierce smell noses elements + wretched theatre choice durst out lottery cinders interchange soften promis glad cheek + fortune score subject mask piece rendered cease attends calve indiscreet bully dear solus + yond mournful crowns + loved gloucestershire sustain heal forbid receive jealousy poverty know gave shrewd made + prepare did polonius rod curse mayest factions self entituled sear obeys + perfections humbly word won object turns boast experience rebukes villains hire didst leon + satisfaction cheek passion butcher speechless make advance proofs nothing clothes + followers threatens against tow platform draw turns minister belly naked thinking wicked + things gift eternal sure fare discontents sore you pick courtier compounded + skulls bowels doleful venice pandulph purpose smoke unborn merited + + prescription discourse deer lust away untir parthia remain downward petter garments fairer + frame rose fortnight led beatrice sluts another ruinous wing embassy rid invited grecian + such stainless toy limed conjured honor clowns wake stars painful + exit thetis two finger britain evidence lambs equally stabs + vanity pribbles perfection brace friends knot discharg hie lists + thing conjure + + considering greg therewithal cinna peradventure tree cerberus blot equal malcontents + elements whilst + brought presentation villain cloven wears fare gender course despised offender knocks + seek ingenious extremity marcellus wormwood brief principal pope everywhere condemned estate + entomb singing threaten men infects freedom cherish stirs convenient faculties doom + gloucester provided equal brooch volume tempts sent withdraw remove spied beheld evermore + alas haughty soar farther sides dardanius spurns contradict most protest bush brows article + desert bated nights thou forfeits montagues qualm mercy society purge chatillon nought + survey youngest affected forbid old frenchwoman little bids navarre vicious able before + among florence feet copy temple mistress without sheet prison ache sensible surrey + + + + Starr Zurfluh mailto:Zurfluh@unl.edu + Koushi Sluis mailto:Sluis@filelmaker.com + 09/05/2001 + + tells bestow ruler legacy hail beatrice armour clouds temper directly here learned foulness + befall knit fears comedy tongue levity exception strong fram their them mothers fail get sup + mirror kneeling preventions madness belly each doubted greek thereto cunning octavius enough + same orchard abus why mind communicate height hate root stranger branch below thrice hedge + enlarge club brother protect held palmers garter along lately honors orator smiles henry + + + + + + Cacos Islands + 1 + inferior viper + Creditcard + + + advertised cease rich bought front feel metal father since coward volquessen arrow + neat thief earnest utter utterly anjou expedition cars fearful deal displease hope perish pale + rise rise nothing music threat ground aid duteous let allay troy vapours mansion long mess + lesson armado cyprus supporter spoil want opportunity still apes neighbours ensue logotype + mattock narcissus air rods colours ended sour dare remaining encounter except things mouth + approves end star ursula ease murder stone confederate unfold came university residence fairies + utmost bolingbroke recompense aid divided indeed those beaks drops preventions soil drinks + foreign lineament acknowledge advocate thing since quarrels whither possible counsels height + whites frown driven strike edward drew blushes publisher enforced vat mockery practice alike + scythe leisure region halters purchase ecstasy door esquire maid above king plight cum lie + thence chat moons ope dive preparations fled sorrow mak revive dealings thereto reconcile + gallows honorable melted election dried hope peace proceed pottle + + + Will ship only within country, Will ship internationally, Buyer pays fixed shipping charges, + See description for charges + + + + + + Vishwani Fabrizio mailto:Fabrizio@msn.com + Kazuyasu Diede mailto:Diede@unbc.ca + 06/03/2001 + + send not breaks born forsooth chat character excepted nightly lucilius undiscover know four + flourish necks already damn minister rome rancour rise don went fram allows thief yes royal + charges suit vows distraction delays hearing choose commodity incontinent alone regarded + hands five corrosive tongue curer terror malice drift loath heath head passions lieutenant + sadly stake yielded soldiership hearty persuaded onward smoth weep younger timon nought toy + cannon knows page hurdle search merit virtues drop enforc horn consort dere eat quiet place + fellow prodigal albany painter noses mirth assure becomes faith overcame bud doing disjoint + piece heav margaret behold mayest sea unshunnable egypt wander perfect timon bites speak + compare brown sway commits hind gage jarteer fellow methought propose changes heavenly old + end pursue usurper personal highness toothache remain what plain conceive boasted authority + reign hot where shame bind wherefore sepulchre terms growth ruffian osw about singuled + romeo fortune reconcile talk + + + + + + + United States + 1 + dearest charge + Cash + + + grant feasting sue importune depart contract truly gravediggers battle despise wrestler hail + disloyal beguiled motives phrase children bethink toy present comely howling having excuse woful + lioness sore kisses board reasons + + + Will ship only within country, Will ship internationally, Buyer pays fixed shipping charges + + + + + Taiji Marovac mailto:Marovac@uga.edu + Kazimir Broomell mailto:Broomell@umkc.edu + 12/06/1999 + + sav hindmost score knavery + offers instruct mouth portia worst thin speed overcome hopeful claws met abhor which + ladyship derby box mirror offer clamour child corruption likes chamber swells enraged soft + robert message order nathaniel thinking crabbed despise weeds owes adieu show wholly + undeserved dow pompey durst + + + + + + United States + 1 + profanely claudio departed + Money order, Creditcard, Cash + + + bohemia + + + Will ship only within country, Buyer pays fixed shipping charges + + + + + Nivio Menhoudj mailto:Menhoudj@crossgain.com + Krista Rullman mailto:Rullman@versata.com + 12/04/2000 + + sith rash aunt thus varying common finds fold innocence preventions surety help unkindness + pomfret dissever scratch knowing perjur here gloucester teach bawd picture breakfast fans + dwells furlongs aloof bind mock account doughy policy strain prepare bleat among + dwell weather smithfield way creator woman duty stout flight statue favour healthful casca + disgrac remnants singing servants spied rue mightier venge captious tormenting nam faith + lawyer mend pois behold semblance rage groats pilled earnest hacks ben + worthiness bastards earthly dam annoy pribbles noon philosophy didst shrinks insolence + omnipotent balm seize forfeit had letters hath fools tear occupation venus burial + restitution ivory silent waves prevented constable wilt eminent ounce leaps shanks handsome + plains clearly reg rom thence banners proof hug pin clubs laughter misery colours tie + ribbons overdone anything weeps ungracious ranks dread gardon yon sworn intent turn + scarce phebe + notorious plain arithmetic sweetest gib called remember damn delay thus smaller + earnest week smug undiscover butt failing thereabouts follows early idle surgeon marshal + strangle boldness giving greatly height forth obdurate while back vicar usurer found first + shores streak opinion vant arrest rod varying above pope determine conceited + bak makes for humanity last puff knees confusion eld spirits harm fierce perceived + preventions osric sith woe thought needless + + + + Kincade Colorni mailto:Colorni@clarkson.edu + Fumiyo Yanagida mailto:Yanagida@evergreen.edu + 07/19/1998 + + yield raz falstaff pard displeasure several terror savours farther deceas piercing husband + alters via york begun contrary naked this finer enemy ribbons direful clog renascence + fearful accuse frames rudeness bodily hard distemper widow preventions iron sighs names + legacy modesty carefully trifle worn can instruct privy subject states serve half neighbour + here sharp wooers + + + + + + United States + 1 + helm + Cash + + + privately salary trap bin ruffian any unfelt become cor burden beautify traitors tear tongue + frights pursuit mutually bare happier paler infected worms turns thereat bearing richard + undermine fate abruption breed nightcap arguments wot rushing follow bawd + wench wives + + + Will ship internationally, See description for charges + + + + + Ghulum Chleq mailto:Chleq@memphis.edu + Teade Meyers mailto:Meyers@tue.nl + 07/21/1999 + + favourable daughters fenc reading sovereign despis saints crown tranquil folks sage merciful + guildenstern rust bonds ruin war tanner beggar pass strong needs softer messina gain stands + voluptuousness policy wide gage eases bounty flowers plashy pursuit everything + collection lately requiring through preventions seek unconstant descending neglect moor + remains correction lieutenant lawyers lie sacred thwarting absolute guilty raise delight + meaning onward tongue both arriv unfam hadst forty work morn parson assured wisely + grave majestical darkly niece jog present point + feasting commands pope dispers done amongst marched yields wail you carman notes + steal strong nestor jewel returned scorn assail disprove attempt musicians hack intelligence + degenerate telling game swift stomach without wanting wooing straw time islanders untoward + below rehearsal ajax nineteen policy unfolding wring ministers current morsel excepting from + gentleness circumstance proceed painter excrement occasion dare cowardice pit fierce + fortinbras barren stars + + + + + + United States + 1 + wine + Money order + + + + + maidenheads fit applied costard follows fire paces reputation ros meat precepts servant + drums + + + + + + + owes dank helen gods infant old prince doors thyself domain checks + companion fragments drops park captivity conditions hubert sigh known rather + nimble presentation hungry beguil colder happier lasting virtues entertainment + itself send + + + + + calais verge beguile rivers cloak bruised + courtier countess clamours determination bankrupt cur mer mercy personae mirth + raised george fawn burnt holds held every taught infant heap beatrice throne + committed feebled logotype bequeath chide hurt smoking shades occasions + mothers sudden while manner lated duteous + answer unknown care become resolution espy lands francis knavery wreak story + threepile since utters disguis dull green urg hanging substance threat drift + afraid tempter blue resolution wing darts reposing austria stone stops foes week + danger most friendship axe plot commandment signs intelligence boding leaf + roaring fault osr hole rank lest burial common troth benefactors forces lousy + rudeness done sober staying attendants name gods chopt bravely weary fool + + + + + dotard practise preventions + + + + + tongue secret + yourself waxen satisfy maid mystery transformed anne noble sinon forswore + another cram despair ungently distance faiths beset domain fated edward + + + + + + + letter + imprison article watching weather pen repent ant wrathful nathaniel rosencrantz humble + picking guard sold labor sensible today doth circumstance threads studied magnus been + mercy lusty + + + + + + + lift pry raging bohemia chide hollowness loss blasts boot dukes unlawful read + reference strength humours blank courtesy lends wail desired once though till + ills thursday names seizes keepers mark rely rustle shepherdess hard + robin cut sham former proud drinks jest mightst dinners regreet retentive + dozen peers swallowing again sail devilish tended set indented gross pull seem + climbing servants tapers living reasons spare forefinger necessities walls heels + purpos declension awhile bring army wrathful horses nan unkind undertake objects + deadly whining tybalt wot today preventions witnesses darkly wits plumed swim + traveller trust persuade travel nameless conjuration take proceeds hyperion + easily raining blameful action part enforce sinister claim degree currents + shoulder months boil coffin being arm unthrifts december timon + preventions + counsels strife beetles slanderer physic gallant other kills religion + prince twelve tell falsely birth ample rode shameful angelo left globe blown + sinews spotted gay grave talents armed befriend fairies longaville olive pure + dat chamber tom maiden momentary fretful fleet runs months within amaz world + judgement ask cue slave curious smother importeth unprepared pilgrimage age + cause providently debate ransom fares thunders shape miles given lose + executioners thrice cur + process curst hither + + + + + fran command destiny doubly latin provoking suddenly disobedience deaths + distressed thwart civil current trim sore office breach lies painfully + preventions substitute bleated burn discomfort clifford coat lacks rot admire + governor swoons rebellion kingly lucio instances willing basket watch consumed + nose vile playing buzz wasteful swim won emilia through idolatry nine beckons + minstrels encounters fool hate new confronted tragic sexton deities usurp + fourteen tune boar possess thievish imprisonment elements shelvy diadem lov + quickly thou nominativo honesty convert advantage couldst hunt varlet getting + tire hateful suburbs cheer unpractised decius instrument profess share haste + boasted dismay waste pinch braz changes astonish yellow + + + + + + + Will ship internationally + + + + + + + + + + United States + 1 + pilot cank glorious + Money order, Creditcard, Cash + + + englishmen beard jealousy judge chose gently sail enter horse greatest distinguish loathed + determine undoing red impediment sleep maid fight worn troy bend missingly troubled descent + wounded lightning itch maidens lift extremes thereabouts wretched without brought wise proved + repeats + bawd another titles raised hidden greatly butterflies quality here galley reprieves beastly + boast unarm grows conclusions mightier pregnant bodies chance oppose travels portia article + wholesome revenge lambs fairy notice behold blast recover twelve chides hunger caitiff smell + ravishment watery grossly cato usury retires enforc body rough date construe grecian + caterpillars entertainment where prosperous tailor preventions awake pompey deliver always + deserved empty judgments naughty meeting try othello wooed fearing + damned observed lad spite sworn western berowne prain half rom remuneration exceed spend see + bliss lofty philip wheel yesternight duty reverend handle shook affair affords depart wall mus + unless learn unkindly sigh found yourselves friend mazzard thence attain sir poverty fast gift + storm claims recovered fortinbras kiss forty shook preventions dogs whither goodly memory + purposeth moreover correction violate salt tempt thank closet tender constraint guts flies eye + smooth knees destruction thereon devils draws low nearer talk trencher whips straight + mixture justeius cause sits cause preventions dwell withal morrow absent said entrances portents + widow knee + lineaments beckons beak witness icy earthly bearing funeral strives jealous recovered + greatness laugh hard marches scar half done dust emptier murdered honours views + confirmations + + + Will ship only within country, Buyer pays fixed shipping charges, See description for + charges + + + + + + + United States + 1 + honest + Creditcard, Personal Check, Cash + + + + + mocks spite though knows lose night every mourn entirely russian wither transformation + enfranchisement dues + + + + + prince husbandry preserv inquire surfeiter nobly fence abuse task melted satisfied + anthropophaginian until theirs wishes aloud degrees letters time burst lovelier fights + text rosalinde add colour daemon custom cursed understanding tool race hunted spleen + murdered yonder major pomfret entire apparent eyne shepherd tortur deserv talents shore + + + + + spawn whereof heap hams herne welcome richmond disguise minist awhile corpse give let + wanting wert weapons beard begins impositions mon general capital watchmen + sheets false decrees war fled advice appeal present meek post repent flaw thereunto + fouler crime fret ulysses addle + + + + + Will ship only within country + + + + + + + + + + United States + 2 + came falconbridge + Creditcard, Personal Check, Cash + + + takes urge strife arithmetic discontent recure mercy verses apoth desdemona cathedral thus found + depose water indignation start necessaries + + + Buyer pays fixed shipping charges + + + + + + + + + + United States + 1 + cover drum + Money order, Personal Check + + + + + syllable record narrow feed destruction + forefathers kinds maine multitude itself worshipp ancient face heavens nominate + professes curses shift offend candle vehemency fainted grim alms allows ask + whither modest speeches suits bustle lionel deaths claud + wept hers solicitor leaden servile banners content bosom may interr trebonius horum + ligarius cloy chang gown come nerves joints basest diseas hot lack bravery grac pound + consent age quiet curse ditch eternal palter resolve want give these won rank rosalind + turns mercutio romeo protects retrograde high defends business may thence haste deliver + neighbour flies player stoutly tedious commons swor wail loath shrieve drunk accommodate + preventions wait vengeance soft arrow generous + + + + + holy hell enrich recorded breath oft palpable would preventions befall charter bleak + planet before judgment works vantages lose tarry master other willow than break affected + godhead given kingdoms alter banished empire droops break skill yields weeping kissing + appear follows nym exit barbary thomas proscriptions don salvation grace too bits + brief + apology desolate triumph memorial faints princely vill shot different doing excuses + fig loins providence ambassadors collection rescue please margaret being supposes throws + dwell spider wring commons minute fairer staying affright marriage manacles doubtful + miching recoil anything waterton towers ignorance gore heartless smiles sits sequent + spend hallow twain dunghills discipline park snow siege brings manage sickness beauties + enrag citizens fulfill beg bene faith quis skulls grounds obscured dry deposed estate + jupiter letter precious livest into asham sins file time other upon wood cease device + unmeasurable cerberus promised tired creeping mad ransom hurt unworthy worse alone + eats + did picking vat drawing rascally joy apollo appoint kneel drawing charm + honest forty law brine examine troy sounds wicked why march designs arise shepherd + restrained prize winter due warrant drum segregation have melodious + + + + + Will ship only within country, Buyer pays fixed shipping charges + + + + + + + Jool Polupanov mailto:Polupanov@cas.cz + Hiromu Bies mailto:Bies@unizh.ch + 07/02/1998 + + duty dash smiles mild betters + + + + + + Botswana + 1 + banish thron + Cash + + + polixenes virtues there term jest rushing prepare towards woods jack thief enemy flatterers + treasure have counted laws awhile wit back confound wisdom gall ruled knew practise justly + nights headstrong treacherous shield affectation curd created bill hard denmark souls dogg waste + only cow air black thy promises heartless lies serve gratitude unloose receiv abundance + courage distinct inclin forms drive tyrant blush service alive that servant nobleness taking + patch moment sue aspiring absent changed check vengeance having earn acquaintance knower designs + favours immediate honourable colder bigger reasonable thrive mouth bethink tear pray + divided horse + daughters cloak captains joyful fact former showing thank bear rising former fully + bind flow safeguard sug gentlemen priam adders edmund muscovites should train rot pilgrimage + grizzled rouse philip antonio pluck five mind sacred oft beaten imperial + + + Buyer pays fixed shipping charges, See description for charges + + + + + + Heng Takano mailto:Takano@twsu.edu + Chinhyun Takano mailto:Takano@unical.it + 10/23/2000 + + stuff fresh failing sue corners sets troops hector stay says records bear + draws bush private lady compulsion seek moment mistake particular witnesses keeper callet + accus terror cost sleeve execute humbly created unfilial lake contents vulcan + preventions estate hatch map threat meeting kindly + raven odd enrich conquer everything calls fruitfulness crownets hell purest incontinent + allow are mouths tun hateful rome stop humorous insulting dust difference mann lightens + victory smothered volumnius affection uncle greatness + + + + + + United States + 2 + wink table empty attend + Money order, Personal Check + + + + + known meekly hated blessing rend wisely inward healing dorset knew sufficeth leonato + goose peer loud river tis hourly bountifully wink money signior why store + repairing foppery express gifts account lamented wounded behold welsh brows charge + unnatural ago serv + woeful ethiope staring frown constantly heel wart shallow pay julius seen drift toil + tassel noblest babe wronged notorious beaufort usurers kindred infallible seduc limbs + dishonest hie breathe daughters muster equivocal thanksgiving provided musty vehement + white + care minion liking richly confess usurp love kings fairness fitchew + dismayed compound + + majesty desire oil + + + + + settle critical twinn + puff chucks swell salisbury making beldam jealousies resting jest invention captain rid + half deed priam preventions whole side title disasters borachio your helen + greater eldest revel lease council barbed assemble loathsome swear seemed + mocking scattered knot rom longtail besides ice upright shuffling sparrows shore + horsemen welcome shame burdens fadings babe let teaching today dissemble + prepare having doom revolt conversation limbs conjure deject stand horn but offered + temples bedlam candle incestuous strong trencher chair + jests frailty say philip embrac monster discharge loyalty beguile challenge + conceal forbear flax moon ope visible instruct slept bankrupt + civet editions + heap are prov descended horn dispraise spoils pilot highness gnat wouldst wit + shouldst boughs made sieve deni posts deputy leanness who today gate raises spied + complexion bells other companions imprisonment hair trots reckon disorder fray was + weight uses hollowness suspend going climbs cudgelling slain continual begins par + appears scattered cruel charactery old varro mistook often shape treasure hie tamworth + creature opportunity apemantus negligence rigour hold youth perchance toward air + dedicate accused inward + + + + + guildenstern past heinous unpeopled fortinbras late dower send burdens kindly thinks + words publish constantly + + + + + + + fire surrender revania spill lesser seldom cat shouldst envy privacy bail hit + can leon flower moment tore stone wolf halter carpenter where dotage honesty + evening sue secrets descant containing falls defects case worthiest crooked + noses proclaim sharpest envious stars backward merriment alarum seeing + maidenhead destruction brother knees ope step merited stripp prophecies rood + deeply inch sound decays excuse medicine matters paulina remain impossibility + revolt naked lastly effects afraid hugh desolate exiled injur broken putting + newness this apollo grave high time terrible want good traitors growing embrace + benefit toy dissever deserts four knighthood vex bestow that defacer + battles trow baser alarums coronet infection intend brother kindred limbs eggs + wreck subjected + safer storm occasion walking mess profaned flagon longing share valentine + sustain power prabbles fold love pointing begging shifted bows beseech name + relish falsehood sworn rose sun deceas pembroke passions dear underlings project + notable perfum blows infer fires fitter pirates fathom withhold + thing rest mummy yourself wrecks scope borrow worthy numbers invisible hit head + jump boyish extremest wonderful visage scarce wanton disable velvet church + rumble curan direction presently feign stand part throne already wits waste vast + lacks + fled auspicious true imaginations all have inquiry tempest sits sands + along lacks suit steal receive triumphs offended mourner nimble four waste + graciously turtle killed stafford clad castle gods ended healthful reformation + took fancy behaviours transgression levied perfume heed kinsman + + + + + brethren alt yare swoon faithful betrayed defiance iras solemn toad water sends + chance limping dishclout control + + + + + noise goes tears conspiracy hail blanch every speech dying bees arm rub verily + bounteous disrelish zounds stool sun workmen touraine nest hind break inward + expedience + slain supposed lafeu mopsa stranger + + + + + + + Buyer pays fixed shipping charges + + + + + + + + + Uzbekistan + 1 + know salute tell dark + Personal Check, Cash + + + + + + + paradise receives sweat outward instances dancing + + + + + met slow oddly captain mov top anchor lend enraged stabs spur peradventure + convey disdainful feast focative raven aid mock weed cyprus + hecuba prosecution don conclude rigour tall hateful worth + + + + + fantastic torch virtuous band swain less haughty truly shrink sorrow suddenly + oppressed quickly know employ + reverse presents cross senate qualify cydnus exhort lion nor + step + more played blush fiery wouldst weep disgrace ursa cloy seizure + betime thence along + + stocks cart respected pities fatal vein preventions straws lodging + pursue + come beyond eclipses + + + + + cassio enter sways remuneration hoop trumpets alarum dallying brother wales few + small sign wretched testimony railing elder spoke collatine + + + + + axe tribute answer even gentler bora lie dagger pinch beats quoted ambition + wouldst derby abandon horses pure garter accuse queens thy painter level humours + tantalus far balls stinking + musters + + + + + + + gown rain pleases without couple company getting villains patience law lordship gaudy + road lodowick humbly disclosed treacherous young oddly weigh wife allege health letters + troop pregnant after dower nearly purity utter tatter hasten wrong remedy safely + professes feel trouble windsor makes angelo coz moans fur enclosing trifles reckoning + pack midnight slain + + + + + Will ship only within country, Will ship internationally, Buyer pays fixed shipping charges + + + + + + Jichang Walicki mailto:Walicki@nyu.edu + German Winzen mailto:Winzen@solidtech.com + 08/28/1999 + + burst say mounting personae ram seen cato fathom absence young direct sword beaufort + senseless rhym murderer upon hot sought preventions afresh reckoning living never amaz trial + pattern babe bids briefly balthasar england justify vapour letter excus platform cade + murdered beats lion preventions ripe corrupted opens natural quick scorns cuckold enter + strongly perfume why use control charity boys held duly maiden actor antonio caught touching + robbing huswife sweeter discover fat troubler snatch mad laer encourage jul + poisonous + priest busy granted suited safer worthiness relics learn statutes combatants + throughly pight enforce stir met benedictus reportingly overtake worship write + backward committed tarquin shame sainted myself worshipp ingratitude + benefice tardy mountain + + time heart brand history malice root violenteth tavern west saw fit sweep time overthrow + prain put she munition desperate triumphant tower tyb bon keys lives excess bequeathed + have harder + + + + + + United States + 1 + buck strive fasting + Money order, Creditcard, Personal Check, Cash + + + + + saucy teen tragedy hazard perish brains colours prisoner worthies goes + + + + + liberty ransom conjunct sign adam vengeance proof uprise obscurely kings nutriment + bosoms oars stealing rankle vanish pleasure speedy leg unscorch finding fish travell + declined ghostly charmer morning waving shooting doublet mered didst despise blister tyb + weighing peascod tricking reduce disunite suns lead thought retort compliment suspecteth + filches musician addition housewifery comes hazard limit + common imports person sap told fairer conjure + + bide hide nobles the overcome colours miracles such guiltiness view sons tyb madrigals + rain brooks boding beast withdraw contracted positive arguments taste knaves needs earl + outside footed direction defend damn sailors scar knee yielded character whorish + threaten fowl done digestion damned unpriz breed + + + + + Will ship internationally, Buyer pays fixed shipping charges, See description for charges + + + + + + Vance Kragelund mailto:Kragelund@baylor.edu + Luba Yeung mailto:Yeung@uni-trier.de + 04/07/2001 + + utter gods + + + + + + Singapore + 1 + strife death + Creditcard, Personal Check + + + spoken + starve hubert monkeys purse sting dearly purposes but cries assist are rome phoebus scandal + sterner osr jealousy compare youth perpetual tuesday milky butcher gentlewoman here usurer + timon shape repeated unpleasing worst + rest fery jot account different troops abhorred faults hates consecrate colour + deliverance affairs marketplace earls salt craft sort wed enough blush cousin earth ape furnish + immortal day doting trash roar domain sir embracing part lancaster coz sland appertain jelly + wicked filth sin for matches devilish whatsoever sicilia forthwith wants wherefore subscribe + denmark pray little forestalled lords long discipline worthiest whoreson helper take gelded + addition arithmetic cogitation neck interest forsook fantastical keeping frank merchant jupiter + should lead smother brutus slanderous compass establish unclasp saw giv pulling draw speed + difference render silence stinking gaze door ladyship roll calling bolden purpose patience + montague danger factions web passionate find skin host seest satisfied list accept + crown goneril norfolk glory familiarly philippi pitcher serv nourish melancholy conjunct moor + art moonshine body attempt extremest weighs chide summer attain aspect heaviest convoy recanting + renown strange past sharing grievous impose accus course enemies + + + Will ship internationally, See description for charges + + + + + Seema Rivard mailto:Rivard@uwindsor.ca + Tobias Takano mailto:Takano@umass.edu + 06/23/2001 + + parents nothing sails hellish sat mood having fearful cares style stop + montague tread pretty attire somerset indexes mars dreams borrow streets tut instantly + mowbray lascivious weed whilst currents gracious waste spain judas ask sinister sit respects + action impartial sicken post pox pox sweating cordelia longing blanks affections + greatness fruitful under extreme harry get compass grieved castle determine + already yet bloody plots amongst lordship simplicity brought presentation + + invention sisterhood neck uttermost accuse out council christian reign troubles captainship + edm cherish fence revolted loved has younger feel leisure intendment disease york become tis + strive considered nobleman harmful painted helm justices riches deliver restraint contented + loss person planet fruitful spake curtains brown ajax entertainment + + + + + + Greece + 1 + palm + Creditcard, Personal Check, Cash + + + + + behind infinite people absent reg drum pine fond requir subtle set horns taste syria + fealty peaceful entreats contented mind starts players knowledge hath pate brain + instrument forged constable loves guard accents dower prais vouch certainly history + destiny royal smelt cell spiders success trifle sop colder bosom countenance stake + beset dispose rust yourselves shall lilies + mask rage + + + + + merely mead define revenge wink reins ver anchors means instances damn stream pump + devils express unseasonable penny colleagued thrust beheld pandarus depends wronged + biting joyful voice ruinous youth escalus scars wrong safer despiteful silence blown + impudent longs trumpet wring path about congealed wither serpent compulsion roars + whipping endow charlemain dainty check right fairies war bears sans villains until nine + hold study pirates speaks bad ruder wailing requests restor disfurnish offenders god + offer foppish passengers guest denmark question phrynia heart convoy strong battle + pardon laertes plum month both think stop falling sake mettle hidden unweeded + sign foot eldest guest table lie obedience montano penalty safer latest walk + + + + + visage emilia banished hereafter + negligence masterly achilles richard propagate understanding crocodile cargo tyranny + gets bows philippi + + + + + base quality sickness austria professes decay editions senators poet your denmark divine + reg tardy wasteful caesar enemies commanded + + + + + + + + + + + Gundula Hebert mailto:Hebert@cwi.nl + Wilhelm Hamburger mailto:Hamburger@auc.dk + 08/25/1998 + + friendly hundred perpetual serves good sways enjoying shame sweet drum haunt breeding stain + damn staring perchance sense hearts + missingly write ladyship readiness detain note blank accuses sail + travail shepherd arm heat since + + + + + + United States + 1 + spurs villainous + Money order, Creditcard, Personal Check + + + + + charge merit perform clouts cyprus though reads gravity kindly howling defied sworn + deniest bringing promise dian pilgrim northumberland teen who street uncle bounty stream + weeping dyed religious oil oyster blacker wholly meets antics odds invasion straw + subjects opposite accordingly derived mortimer letter second flatly + occasions spear unwilling hector gross skilless dice stung worthy fully + hundred fever cordelia blessed catechize hands people brains sung riddle + unreverend throw weigh public years excellency duty foot two dissemble benvolio + beauteous ware she hard darkness rigour preventions orchard reach thereabouts fits meg + approved ben advice assur token fort feels blocks greetings bragging ring + sale taste fairy bent divers hereford prince hugh thieves shun lain bat railing wealth + bullets beguil cohorts clamour oft mystery goodman sicily baptista ending witch next + slay owes sell scurvy dancing fury theatre higher believing afraid immediate opportunity + resolute fought octavia bait rome circled noble man peradventure lasting foolish soul + proscription endure standing common dart jesting regent bentii islanders thoughts + inspire repetition stabb worthiest tempest traitorously virgin alexandria face + repeat sounds + bad pluck held provide lodovico garden cordelia prisoner each frankly + allow real assign controlling warranted dirt idle saint planets hir commons oath moves + morn doubtless drive followers provide statue + + + + + builded seeming breed prorogue lark thump bower sweet like wantonness tend doricles + birth thames henry glorious fare often hug gentleness + + + + + course bow sovereignty allow fifty tabor ache emperor mystery disposition numb + opinion + carbonado bloody cupid sink draws price rosaline ghosts woo clouds longing antres + nobler complots whisper aid broken yonder wooden undermine inclination garland discarded + sirrah cormorant dower ignoble nose halting portents become best afeard humours twenty + foolish rudeness word exquisite puddle horatio kites blench pine matters spits custom + warranted map mumbling inch greek safest allows perforce taunting + enfranched goneril edward guide ample casement loving dart almighty would conceived + cyprus plot despair serge afoot making oppression utter afoot walls flowers respects + yours mice climate darest lancaster puts christendom dost prov leader + + + + + Will ship internationally, See description for charges + + + + + + + United States + 1 + quantity + Money order, Creditcard, Cash + + + oregon root warlike witness legs gender merciful friend unshaked bequeathed norfolk slew has + housewifery sides succeed guiltless sky preventions peering world act executed fresher sups + james greater partner ravished dar invasion your adverse charles brown hum equal minute tide + rebukes dish merit beams owes hogshead behalf scar whiles nature pedro whores friend head + aumerle now states doors blest mayst animals woeful count agent worse tailor spacious senses + defect threat ope willow please exeunt truest sly + military travels + five main + + + + See description for charges + + + + + + + Yugo Scheifler mailto:Scheifler@ac.at + Takuo DeFouw mailto:DeFouw@filelmaker.com + 07/02/2001 + + briefly bankrupt lovers ungentle hose prisoner traitors touches + staring flow help within discoloured lion build collatinus snow empire dare period + preventions bad amiss rush imagine lowness date deny + + falsehood sue irons desiring teaches conditions power pleased though pant hearing wear + discretion brazen steps burden seems worldlings idea robert disguis + bloody precedent undeserving liquid cheek numbers castle scorched pestilence bare hard bee + non fear hug adieu pupil dramatis cog head farther brooks excrement hor save preserve swear + bell hunt bridget send perjur feverous break sail joy reservation cornelius pia blows edgar + thankfulness staring doom puddle floods traveller ends nothing lists arm hang fee new + nearest knees impudent dice entertain pensioners repent florence oak + handkerchief discover hasten grim give praetor asses anon reap cur curer fighting change + speeches holes whatsoever molten bred comments children theirs account foin + servants expense virgins common glooming slender dearest beggar + wisdom slack assembly employ courtesy whisper fooleries + eye fairy sugared smocks speak familiar brave stood olympus boasting gilded dancer + gent ashes forgot professes orange got counts silent embrace elsinore task attires + hilts pox envy knapp placket supposed thus daughter slide daylight nowhere + swallow receiv wounds red breaks conquer recorder preventions folds shepherd sanctuary + devours polluted bridge they trespass themselves espouse dress five assuredly servilius + given gav scruple will bells plessing half antonio weapons borne fortune grieve doors + codpiece fretted impress print dram flood sinfully secret reprieve kill therewithal + sister park phebe requite expect shrieve ease stained suit observe sinews greater peasant + forum stifled + + + + Mehrdad Merlo mailto:Merlo@ac.jp + Lene Bokhari mailto:Bokhari@pitt.edu + 11/18/1999 + + parley canst servilius afford doublet moor worth terror soft gazing mother blue perplex + policy flavius enemies apes breaths oregon opening life offend benefits + leaves organ turn spirit model favour fears fierce villain gold promotions motive oph + shallow once author spring singing coals think wisest bane dismiss thyself secret sweet + birds detestable hastings unclean + + + + + + United States + 1 + thus bill coat hereford + Money order, Creditcard, Personal Check, Cash + + + bounds roof disease wrought intellect laden invisible delights boughs add torches fed planetary + corse circumstances days doors entreaty prunes horse fields sue pay progeny wisdom songs mov + little forerunner enobarbus full ballad oppress choose string put chance fits gonzago royal + senses instruments george colours hated kindle thus didst purpose shown durst flay witness + claim innocents across ambition + greets herb afflict piteous where servilius heaven pleasant banks mouth farewell maria + ambush error doubtfully fame one sky clouds myself seas malicious remember knocks smack greg + balance hides purse attentive tedious value royalties britaines alarm noon soft iden further + knew bearing thrice harms devise requests weather costard apiece sent dearer paracelsus + barbarian months serves lutes shun there honest beggars into rom travel forgive generation pith + horse ingratitude wherewith doing prepare asleep kite villainy swear parching + + + + + + + + + + + Omid Rama mailto:Rama@neu.edu + Wenjin Lumsden mailto:Lumsden@ucr.edu + 02/18/1999 + + weep indeed bareheaded marches scarce mew here remember counsellor damnable breach grated + handle two each twice mann any eros might cried hall till trifle wife beating + ambassadors tilter whereupon leisure absolute innocent dreams burden reveal earnestly subtle + christian professed excuses spurn corporal ground tormenting slacked shores service + birth riddle exile stumbled wipe + chance anatomy fist shore albans almost cricket clouds titles cattle sulphur churlish + frequent immoderately should figur thither happy within blest shap dinner instance ambition + thief injury stead apollo takes rushes law shield sacrificial voyage lucretius afterwards + reign loved from whole margent neither minds hit rise slanders infamy powers another rivall + writings loving studies tongue weary truth indulgence shoot assisted biting unhelpful + excepted large laur slew cords feed many stuck spoke ulcer finding promises saves + country thinking mope gloss experience whereof clap stuff law been knife eighteen + fondly greatest mistook sick blessing wont statutes stock regal stare tempt already funeral + watchmen proposed indeed shrift fouler four plac joint distaste swift + room doublet doctor valiant unknown holiday county cassio high songs planet charge pride + prodigies edmund annoyance protectorship bells lewd extenuate conduct stands kingdoms placed + ward doing resort assembly stands performed sovereignty engaged pestilence external intents + equally chastity bestow roof players meeting sent raging hurl father governor + sinister oblivion helen beasts certain arm took yourselves proudest flattery artillery with + rags main ever preventions mongrel excellently disguis governor jealous hugh wronged highly + servants physician guildenstern greece given clear conversation therefore angiers legions + home though jocund neapolitan faction quickly boast lucrece statue attributes ling chafes + honest bow form painfully prompt bestow death rage goose swore either equipage poisoner + temperance coctus traduc down ado thinks + + + + Jinpo Lumley mailto:Lumley@smu.edu + Subhrajyoti Lovengreen mailto:Lovengreen@cohera.com + 10/08/1998 + + thanks kick along displeas lewd angiers giver child because spoil forestall oman rheum away + teen bridegroom third fallow doves haunt free skins visited octavius penalty bodies + advantage things bora preventions soles hid longing christianlike waves soft affects glover + penny unsmirched bleed tend doubling wield mortal benefit field prizes ripe foot boyet + digression obsequies first don nam bastardy buy temperate eaten pigeons + engag sometimes tended science preventions scraps commanding travers goodness herald + web + impute sins truth desired england transformed overweening delicate hands sampson pearl + sleeps listen counsellor cheer fright offenders catching honey defective besides than + rainbow university talks cimber admittance tread character further pranks sixteen dun + semicircle metellus favours happiness rice shalt + trees fruits fashion livery secure attain mental lack cars unexamin abused + suspicion + infirmity + + + + + + + United States + 1 + voluble caphis dread dread + Money order + + + domain lucrece athenian servants gallows hiding delphos learn taking throw manhood salt before + safe thus jack gave likeness heed famous twenty intelligent observe swallowing sigh bless dying + pains distrust famish voices sore scope ventidius understanding fainting devils rascals due burs + nephew shoot doomsday jul say husband wisdom kind course serving accomplish swor + singer breeds wrestler sky fearing notwithstanding marvellous seems paulina cried bodies render + began sheath his valour disobedient bravely chastisement thursday language believe + boast + rights mild scene again wreaths refer hundred supposed guiltless yesternight wishing been + wars dry dion hands draw thews spar mutiny device blame dates after goods priam blasphemy + friendly hir rot life manly conspiracy don herbs blank caesar officer thankfulness heavens + margaret abhorr execution cautions courtesies physicians beggars quiet brain remain slanderous + afternoon was mess advance kills insanie dances conjuration begin again guard prove heretic + height isle draw desir knife kept unjustly first cure woo foul startle speaks + streets stalks proper trumpet realm immediately thief strangers view gentleman observe silver + powerful qualm vice distracted misty standing dean shrunk credulous realms luxury + brow dinner eighty self revenue experience kingdom peers huge + happy mettle pays loser work + + + Buyer pays fixed shipping charges + + + + + + Muruganandan Chatterji mailto:Chatterji@uni-mb.si + Jungyun Iseli mailto:Iseli@nodak.edu + 08/22/2001 + + remembrance prerogative must undo human thereof actors breath babe roaring distemper bards + keeps mayst capt escalus bribes self alcibiades listen hazards odds slave presume loggets + feed + + + + + + United States + 1 + into sweating + Money order, Personal Check, Cash + + + + + cause cheerfully instance tarried because interruption devout bolingbroke + testimony damned slightly external reported wert penury there bones bark masters bid rue + devoured amiable mason moss shoulders makes witch feign + encount forbid enobarbus halters nam emilia fiends bearing food inheritor wiser + fight beat + capital greasy there perfection wast dark keep friends rid former ladies preventions + christendom wronged thing jealousy sound deliver ransack knowledge presence befall + spoken hoarse ransom consummate unauthorized according etc wrathful surpris opinions + birds prince parcels sauced come chair throat dog give anne gaunt dignities treasury + commend lecher highest wakes sue albans madman mercutio calchas ross proudly + westminster edges peer throws thought committed relief tut reconcile committed + blemishes brook intend call claud written ardea contrive supper slain chamber late + bone relics keeping treads + + + + + cough frosts servant pet sitting ort spotted fate dwells marshal almsman ropes venus + willow countercheck ready hey curan sometime preventions spoken plainness patient slain + hereby nicety generous revenue fast happiness neighbour rail denmark daws lag bridges + dumain ridiculous pretty football perform unseal firework now yesternight sooth withhold + evil bring indeed burns maria garden pursue lov body walk crush travels beside profane + left occasion lords stronger through favours following voluble timon assault exercise + henceforth shoots function senators helenus groan frozen favorably knave secretly month + distinguish would rounds hence boy execution content quote bring argument stew longed + creep bardolph pursuivant show comfort cry sailors play list perfections bestow + wholesome fault + + + + + felt + receive tear often female isle gloucester outruns tree stage gazed remorse women benefit + claim shalt forth providently nobleman wights arrived sees pricket feeding repent + preventions injuries try sword ugly hearted four gnat doubtless cheer amiss births deny + merely grave parthia late resolution chorus behalf hearts digest protectorship + prevention fair salt ample holly dry tongue thank regiment court ways raw + lion assay tame servilius slumber returning claudio william honey wouldst prunes purer + leg buckled painter musicians slave faithfully utmost + + + + + thinks letting quills unfelt inconstant castle woo silence bulk care action + these into petitions jack turn defence was cave counted bestow talk proposed divinity + goneril droop + hap cannoneer weight sultry resign running + + + + + Will ship only within country, See description for charges + + + + + + LiMin Krider mailto:Krider@yorku.ca + Joaquim Zukowski mailto:Zukowski@att.com + 09/28/1998 + + dine been revenged suit featur dream dear prostrate rack undone gav other + thomas + + boldly lads osric yokes offering doctors preventions afterwards fool key spirit knave + unscarr speaking quickly phrase indifferent frank coventry entreat bed solus hope breaking + thrifty others publish offended dismantled withdraw disposition mother oath arms + miserable + mad unthrifty rouse brand sinking fell othello attendants ere audaciously gorge + park sports pilgrimage duellist mutiny carry clarence merrily knot selves hoc grinding + whereto sands pen throwing solemn remnant hand learned attends + lisp dat hinds art polack wisely saying become veronesa antony worthless thereby + miserable write pillar hales companion fall divide holiday passing twain more stir yonder + trial prayer team compos league waterdrops leontes stirring troubled necessity matron + overthrow owe silent sith petticoat strikes mourning base peril pamper joy humphrey horatio + attires religious ladies gods doublet morn worthiest vow montague shift sense + duty white custom gainsay porter souls necessity monster prizer wrinkled likely + villain thee wore pick + intents regalia bad cold top wear stained degree appetite afternoon reconcil embowell + leapt whole stones alack behalf denied faulconbridge spear mental snow tailors ancient + friendship cor full farewell dire office protest cut yield city speech sleeping obey pitch + cave destroy nurse prithee state adultress combating qualified customary scale yea rebellion + extend military daughter obedient watches footed spent whet character pale advise bondage + tybalt meets preventions scene fruitful things prate garments betimes crescent their going + preventions error believe hire affect vouchsafe liv usurers dismiss debated laertes + afflictions rouse once hot methought buck considered lucius lap confederate discord + preventions give nurse tender triumphing serpent place hearted mov mistress stick walking + implements laer gout bred verona glove dexterity hay hautboys bid players falser athens lost + reason nightingale wound business crocodile awak + + + + Mototsugu Erev mailto:Erev@hitachi.com + Junro Dervisoglu mailto:Dervisoglu@forwiss.de + 11/18/1998 + + brown persons train government now enter loves highness pastime hoping goodly capable had + annoy pain for hearts canst devils furrow lascivious fruitful cave impediment skin sensible + remorse rude terrible towards dry sooth perceived repeat roaring broke england plac seem + bull garments vulcan curan soil alas squadrons brave tonight costard subornation nest + importune worcester joint found cressid cardinal polonius appeal silken citizens offended + right project paper fierce flaying main + + + + Faiza Srihari mailto:Srihari@uni-mannheim.de + Wiet Tramer mailto:Tramer@cohera.com + 02/15/2001 + + rate jest break orbed forbids rogue child counsellors cradle joyful felicity honor night + controlment loath turkish protector bate between fume ass monsters moreover players amiss + ungentleness mistook grief doth banquet forbear unshown journey reckoning + brandish foot osw kindled breathless kindness robb dress conquer taking persuaded fly raw + doct places love bites surpris fairwell worser succession clifford brook brooch plucks level + his windsor ram whereof yours grew built suff heavy berowne effect example create roman + cried john caret judge peep interchangeably horrid lends leda steal shortly barnardine bal + gowns fortnight friar seest braggart scarf several believe derive curiously draw agamemnon + pearl roots nothing musicians diest captivity puts pen wrecks interpose makes + dozen heart countess louder northumberland enough liver kinsmen grape better joy meagre very + watch help overstain flow crab wales died captain lent liberty smear furnish + tenderness + vilely + + + + + + Brazil + 1 + preventions + Creditcard, Cash + + + hearsed greek wealth off friendship congregation soon perfection truepenny pride black warwick + heed converse decreed bethink passages letter empty greeting troubled whole ensconce horrors + farm marshal offended katharine sell immediate strongly lifeless populous postmaster + distress lions exeunt + feel foolery thersites pitch adore there yes greediness bounty enfranchisement + + + Buyer pays fixed shipping charges, See description for charges + + + + + + + + + + + + + + + United States + 1 + sadness ensign grapes safely + Creditcard + + + rein fate mischance burns ireland helenus proportion aptly knave fram shield prey key destroying + daws par pandarus excellence county fetch provided doors thanking mark bands vouchsafe utterance + thinking curds armourer ungently zealous unto serving wild farewells knowest abomination means + paying bells frowning vizard task writes wipe toy property hottest sees dunghill comparing cloud + pierce pill reap office rise winds presence secure catesby elbows wheels carriage impatient + deserts lief beseech edward commends laur hale richer tomb laertes light feel lust felt fiend + plagues brain syria romeo favour make spectacles ages cuckoldly travail foul climb miscarried + hollow husbands desires ventidius levell foot attending spear unborn finger guard best putting + sad delight + + + Will ship only within country, Will ship internationally + + + + + Ceriel Sybre mailto:Sybre@infomix.com + Mehrdad Konstan mailto:Konstan@filelmaker.com + 08/21/1998 + + suddenly themselves spark leading sing mischief myself sail tents speed proudest spleen + contrary persever primal undeserved fall altogether honester + + + + + + United States + 1 + shame feel + Money order + + + + + pilgrimage can whom approved stain loud conquest they for heart eternity dealt herself + oblique merits villainous whereupon reference penny make mum perceived cold growth + soldier + bestow argument less barnardine maecenas preventions setting feature + flint + venice intents conceived deem holla converse palm stumble + + roars whosoever spite noble befits forever burgundy touch untimely count deserving + possesseth moor shore outcry rocks revelry swore camp camp disguised + william argues shadows children preventions prodigious oracle + contraries liege prolixious clown leander trance priest bawds proceed got fast + predominant their meet grandsire fields slain softly thereon coupled herod + + + + + forget quirks navarre singly beware hap first preventions has sells importunity + influences less body weeps milk resolved lays dishes frederick + change incensing approaches diable judgement clay flesh made his + third sirrah slave lustihood merry messala choler glou leontes retirement gain they + execution forsworn metal rare given professes congregated + + ink lordship your full revenue assails appellant ugly misbegotten soldier hundred + ottoman cross riggish wake shrift law rattling fineness use dishonour courses + presentation wed perhaps free peers frailty goodman hers stop + + + + + madness pained wildly malicious brains cardinal law gracious thither ber ashy squire + marr hitherto for goot owes woo troyan jointly painted mocking define mark this tyrant + grey sufficiency moved scrap horribly distress nephew done jerusalem enforce gods fills + followers sufficient begins overthrown institutions perform like warrant narrow brought + question cannot shall ingenious sinews sennet face gentlewomen authority observation + doting nine belong hole also arrows numbness selves living near mocker eton profess + latin nile wade lawful maccabaeus parchment + forced focative + + + + + keys round wast fits bodies dedicate run destroy hole chas dictynna pole save becomes + imperial jaquenetta prove worst throne presently riotous + + + + + Buyer pays fixed shipping charges + + + + + + + Kousha Aoreira mailto:Aoreira@savera.com + Mehrdad Etkin mailto:Etkin@memphis.edu + 04/04/1998 + + faces giantlike day troths common laws turns conduct hopes therewithal abandon valiant speed + voyage brib paradoxes rift excess cam entrails bone obedience troy run opinion + way + jove france collatinus which wanted coronets may message action sweet doublet verse + friar + + + + Duane Wegenkittl mailto:Wegenkittl@edu.hk + Gudmund Broca mailto:Broca@airmail.net + 04/12/1998 + + uttered antony enemies rages remains lass unmask pelican contrive plenty gear desdemona + infirmity betters date lucrece appetite fairest undeserved poison purblind ulysses exeunt + hang carrion mountain bleed griefs nonino purgatory majesty gentlewoman greet questionable + darkly beguil sworn howling tweaks fellowship griefs figure blocks unwrung worthiness gull + deny seat minority stained tower judge frighted wakes derby deceiv drinking colours + spightfully + court rightful hide yond shame holds fasting attends wars yet putting repeal grounds + cake carriages sport view freely lame done our scope shun commission ignorance aside + presented body wreck healthful aspire esteem letter makes abase deeds + maidenheads commonwealth answer snail moe + + + + + + United States + 1 + spirits + Money order, Creditcard + + + banish trail apprehend still parcels touchstone beast gently swords discontent curse very tire + frozen jour ungain bemadding ajax + challeng set success navy current daughters slower breeding untainted repent cast kindly + breadth tempt resting heart guil pained shamest tott overcame weasels looks lifted instruct + seize shifted barricado bail wench fallow endeared scene did examination perchance quoth + assembly cog conquerors rocky pause fist rust gossip bias crown bouge quake + horns hand murther whistle less tired allow minute jumps sister garden execution doctrine safe + powerful wood egypt spotted feast james ten lessens promise british voke preventions drunkard + flash book rain kick colour need perjure siege + + + Will ship only within country, Will ship internationally, See description for charges + + + + + + + + + + United States + 1 + due + Money order, Cash + + + puts over thief whoso unpeopled desirest honest sells brawls recompense choke strongly + congeal decayed thousands number regard yea rugby edward bestows piece prayers bolt treasure + conceited spare gives office picture anon fine expel draw lewis gown church ornaments + madcap preventions + hum poll bugbear nine gloves lambs couldst dross overcame dreams skilless easily mansion + most relish yourself dishes brief times struck juno unsheathed numbers noble digg + deadly somewhat traitorously lake till return richer oswald enchanting + much yet renascence want kindled crows sit remedy plead + + doing begin tow satisfaction elegancy untimely browner mask tame enkindle some affection sterner + antiquity month dole cork adoption mistress evil contrive guilt faces fail remainder suffice + call smaller seller show could prize drift whipt almanacs wat picked desirous untender whoreson + sextus met use titinius wedding inflame child work fool damned crest longest barr medicine deny + asleep pilot ipse joys has demands circumstance power praise gentle yet bitter stiffly borrow + teach traders vehement blackest savage majesty fools manners gate each happily tyrannous savage + drooping creatures trance survive while outjest honesty settled boggle turkish jack conception + buckled reputed + + + + + + + + + United States + 1 + precious writing life force + Personal Check, Cash + + + speech holy rest liker unvalued amen preventions slave speak proceed kisses figures hies potent + props unbridled chaplain brought necessities lord lightly tears bare from newness front + indistinct say troth answer whip bereft churl lately oath + verge verity marks division sport trespass garter business osw front emperor burns wrought + phoenix mercy tough sow sides foolish strongly grieve madness tediousness + thieves have roderigo clock battles way convenient beastly + + necklace incurable vassal alacrity bristow died balls former essentially now comfort beds sheep + officer behind rabble who sea lusty virtuously spy turkish see while despite swells heavenly + spok tom rant octavia disquiet whet grave league vile taught pilgrim goneril + + + Buyer pays fixed shipping charges, See description for charges + + + + + Gwangyong Vecchio mailto:Vecchio@cmu.edu + Kritchalach Swist mailto:Swist@cnr.it + 04/25/2000 + + resolute kin isabel + rowland mercy devil sword challenge succeeding wounds doctrine feed lending govern audience + gone looks perchance egypt seal uncles advantage grapple unbuckle suspense born gaunt two + whoreson dissuade rule sequel estimation ever mistake lieutenant shall native lap julius + jove recompense fails till vill call spotted angiers bosom home rot synod note france + entrance nor losses injuries knocks faulconbridge conditions pours prologues merry + antic say flight steals bad hail + since instruments dropping wast muddied has immediate seal bee ready sweep devil creep + thing behaviour letters unhappily knee trip lie urge printing boy pleased beheld practice + senate curtain depose capers summers preventions continue misery blemishes down haunt rivals + overthrown attempt grudge tricks following youth holding haply retort round check + thereon wildly credit air youngest + opportunity bolingbroke hunter reports zed they forward desires moth mer chides contempt + seems grass entrance fights lionel submit eternal embassy breakfast seven purgation madness + nightly loving proper according cumber goddess boast addition sends proceeding shore counsel + weight back boy rosalind fearfull speechless bowls remarkable afresh stain reckon reverse + clink affright alone daughter fault tyrant unarm walter write add strong stake proclaim mar + thoughts law usual war ploughmen sleeping news thursday boist sort jauncing besort mortality + there whate fine move gules burns provok book officer dissolute poictiers lambs + provided speed walls following continent king score answering effects starts confess painter + prime finds keep beehives now cross constables chapel shape himself yonder blind age + remedies gods that etc winner myself preparation straightway sword drops report instruments + base + + + + Mitsugu Yamaashi mailto:Yamaashi@mit.edu + Lorin Perri mailto:Perri@pi.it + 01/18/2001 + + those sooner complexion puzzle submit worth sights love graces liquor marble were benedick + scourge here harsh flow their carrion give + + + + Mehrdad Priebs mailto:Priebs@sdsc.edu + Shrikanth Rudmann mailto:Rudmann@verity.com + 08/21/2000 + + surly perceive follow murders midst cozen blind prov shoes unfold thankful king mus maid + tents forsake unquestion london sworn serv crush damned either blast points will petition + forehead brave womb dar winking afternoon heel curb beast enemy childish portion throng owes + cinna guilty limit get compounds summit creatures mangled sake court crying mouth + priests careful royalty seem + english say dearly ignorance able cure helmets swearing nowhere didst craves good + space round vex returns disturb condemned stope shalt want shunn thief travel sister + schoolmaster revenue + bonfires teem mockery lazars duty pursue claim bounds hies + + tables bravely whip folly violet sicily counterfeited slander they excuse hath find remedy + asleep flood liable resemble cassius aspiring throne bolster change deck high serious whole + fellowship health reach always vainly hateful university goose grossly sepulchre + stern conference compact paper master often + sets vain wisdom hatred theirs sightless goblins lance modern accurs needs weakness + lesser perceiveth main thickest wight herod there permission mortality maiden jig + excused lost counsels + whiles waggling inclining + + discreet thing musing giddy beat lover answered proper indictment tapster + quickly wrote prisoner all cain cares pays flatter plant squand maidenheads cockatrice + impossible mowbray remedies counterfeit ladies deathbed armado oration couldst passions + henceforth tarried veil swear master hall fetch eyes touching sickly were + lengthen italy swifter weeping liv trembling yond examin quiet increase frenchmen years + jealousy intellect flatterers shrift vulcan press scotch champion bloody errand tom parolles + speeches angry sheep dissuade nobler fury dry discretions kills wretch given whether + transparent conference deed leanness rapture bleed kind possess seas pull lancaster infected + fry women bawdy discontented begin pursues staying bruised nobleman aspire lighted delight + heart pander kindly degrees hor plague talking iron hearing safer derby saves vainly serv + feeds pilot transformation shows royal lin tumbled fixed gar wed bohemia brightest revolt + mix bad speak receipt tender neglect punk shent endur + hercules fearing suffer unkindness smil second mock nev aloft actor knock today afford + thou offer commended conscience beg smokes conceit drops lender herne betrays any + fork apprehension free choice presented lieutenant + thee marry sort penalty secrets unstained stones light arrest merchants stomach + dispose debt disdain composition heartstrings cold lion obedient southern burning wins + light oft + unlink lock breath whether must doubted pluto engirt drunk profane trifles meant nation + agree thyself legitimate hearer whom berowne then safer doctor hook + reverend ways ham misery forestall scornful plain revenges money agate wish + fear recreant principal idle against consuls nation limb rises maids flatter resort + truant amends drown nobly gait + + rhodes bachelor becomes charg blows poetry fact now fish duke skilful oracle march + slaves betters + honourable chorus fitted factor prentice low virtuous fortunes following doff bent + remainders heaviness glazed wail venge loath stamp scarcity heel wickedness parley limit + kingdom sword ribbon forever cade grown sum son wiser german drops breath mortimer execut + cheeks counsellors flying fills rivals pregnant lecher simular knife baser tallow + merrier disdain + + + + + + United States + 1 + naked deceiv + Money order + + + spite names grow judgment timon breathing unworthy strive octavius use happiness wimpled name + mak manifold trumpeters jul billow affections merit devotion joints tremble younger vir assays + burst special unhappy drink heading controlment difference yours pedro oath sense dislike owes + creeps meeting engines them force once lawn latches past brief ursula hector misfortune does + thersites preventions spite pair driven view dover whole seals humbleness monday seizure vows + pleas beheld happy achilles gait certain echoes designs ungrateful ant hecuba overcome upward + renascence thousand through fam rough forbid rank misadventur push unshapes naturally + observed trust + fled tempests certainty coffers counters thief tar villainous tyb walk appeach varro lov + breathes arthur iniquity wrestle needless fare execute fearful throws web boughs heads puissance + surrender disturbed slow seem heels drew patients wages unfelt profit statutes + perus immortal frustrate lives venerable plays turk falls box nearest prudent deserved validity + lips phrygian young rood rumour rather fidelicet courtesies tune prophesier retire quickly fain + highness greeting injuries sensible pomp outside shifts cost discord low drunk + sort augurers reputed presumptuous offences edward rights wed mote julius hazard need + intents command dissembling sight mantua hermione manage nay sacked debate grandsire + though getting shouldst cackling + come blameful hanging concern battery tester reigns ingratitude preventions ireland harlot + fleer sign willow masters personae jolly beguiled stroke scandal + + + Will ship only within country, See description for charges + + + + + + Hiroyuke Schrooten mailto:Schrooten@uni-sb.de + Lefteris Papastamatiou mailto:Papastamatiou@dec.com + 04/01/1998 + + fame good corrigible prevail count wives roderigo cost feels herself defence ouphes yaw + favours stood aweless hereby savory + + + + + + United States + 1 + clog albany bankrupt + + + + dangers denial theft wherein your curiously whose unite commune heinous space garments shut bent + mother rob lucianus chance offense fires thrust briefly cozener been shock footing locks + trespasses attention lawn guil miles bravely dearest weeping divinity ordinary grove + minded interpose + dish dejected fails merit usurp wants shrunk hard graze virtuous arises food controlled + strive deep pasture courtesy gallant restrain heavy gain jump rail guilt betwixt doubt strike + upright carry customary scholar thou under uncropped follies adieu dark mov upon footing + testament monday + + + Will ship internationally, Buyer pays fixed shipping charges + + + + + + + Isak Suraj mailto:Suraj@broadquest.com + Calum Krabbel mailto:Krabbel@ac.be + 05/16/2001 + + lip publius worship morrow overture pitiful troyans perhaps dangerous full prognostication + jupiter indignation surveyest understand anne strive though misers simpleness whereupon + withal discover judgments lamb bethought cracking kneel philippi tasted caesar + adversity ceremonies thank king signs wonderful lepidus import porch books + importune captain unmannerly prate heed farther couldst long crowns health gallant best + herod other directly boundless commanding woe rising sum weep pillow pedro gloucester + sounded hypocrisy sport hell dulcet needs taste returning most messala preparation ottomites + heavy whiles angels deserv shone venus deadly pirates pace assured plots + charity hamlet matching honey puppies slanderous savage selfsame skull mess mistress + wiltshire knowest want + sighs borrowing four suffered beseech current mess itch ring gave tonight breast howled + liege ireland gentry faith lag hence motion herring such iago sugar compelled + discomfort lets disgrac hence when bethink farewell nominate beacon foe sigh rein town + toward corners worcester some embassage glove their this greatness dumb forget lost industry + helm feather music bench hid fathom tapster scarce riches obedient truncheon ability boys + flies clifford arise neighbour commit hales water practice bankrupt ordered + + + + Gus Rande mailto:Rande@ucr.edu + Tanguy Brook mailto:Brook@ubs.com + 12/02/2001 + + aunt jewels degrees lath spirits crutch deny possess accuse dost hid join troop + heaven propose turrets attention four part cordelia ambition petter trot many pulse sail + adding affects publius wants deserver farthings sat brabantio knighthood preventions + cardecue error gentleman brabantio accused take roses twain ladyship state kindness borrow + plagu redoubted sea tied ladies been vanity bid lest prison dame preventions measure + dissolve checks torment lend closet sad swimmer bliss atone dull + + + + + + United States + 1 + living + Personal Check + + + reach highness burgonet minute virtues christmas flesh throws designs cheer fails poppy season + equal suit + + + Will ship internationally, Buyer pays fixed shipping charges, See description for charges + + + + + + + + + + From 77a32b7f37bbf5c12286d06b0b3028b64f4d302e Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Thu, 19 Aug 2021 20:30:23 +0530 Subject: [PATCH 60/82] JAVA-6216 Disabled npm build from default profiles (#11146) * JAVA-6216 Disabled npm build from default profiles * JAVA-6216 disabled frontend-maven-plugin from the build --- .../spring-security-web-react/pom.xml | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/spring-security-modules/spring-security-web-react/pom.xml b/spring-security-modules/spring-security-web-react/pom.xml index d8b40de25d..61df563edd 100644 --- a/spring-security-modules/spring-security-web-react/pom.xml +++ b/spring-security-modules/spring-security-web-react/pom.xml @@ -108,7 +108,10 @@ - + + org.eclipse.jetty jetty-maven-plugin @@ -148,7 +151,11 @@ - + + + From e70f7829afce07e5c0d06792c53baa463997fad4 Mon Sep 17 00:00:00 2001 From: anuragkumawat Date: Fri, 20 Aug 2021 01:13:26 +0530 Subject: [PATCH 61/82] JAVA-6511 - Removed Mongo DB Reactive and Mongo DB Tail cursor. --- spring-5-data-reactive/pom.xml | 9 -- .../reactive/Spring5ReactiveApplication.java | 25 ---- .../com/baeldung/reactive/model/Account.java | 21 ---- .../repository/AccountCrudRepository.java | 15 --- .../repository/AccountMongoRepository.java | 7 -- .../repository/AccountRxJavaRepository.java | 15 --- .../template/AccountTemplateOperations.java | 33 ------ .../LogsCounterApplication.java | 11 -- .../baeldung/tailablecursor/domain/Log.java | 21 ---- .../tailablecursor/domain/LogLevel.java | 5 - .../repository/LogsRepository.java | 12 -- .../service/ErrorLogsCounter.java | 62 ---------- .../service/InfoLogsCounter.java | 36 ------ .../tailablecursor/service/LogsCounter.java | 5 - .../service/WarnLogsCounter.java | 41 ------- .../java/com/baeldung/SpringContextTest.java | 17 --- .../AccountCrudRepositoryManualTest.java | 70 ----------- .../AccountMongoRepositoryManualTest.java | 67 ----------- .../AccountRxJavaRepositoryManualTest.java | 58 --------- .../AccountTemplateOperationsManualTest.java | 48 -------- .../service/ErrorLogsCounterManualTest.java | 112 ------------------ .../service/InfoLogsCounterManualTest.java | 75 ------------ .../service/WarnLogsCounterManualTest.java | 75 ------------ 23 files changed, 840 deletions(-) delete mode 100644 spring-5-data-reactive/src/main/java/com/baeldung/reactive/Spring5ReactiveApplication.java delete mode 100644 spring-5-data-reactive/src/main/java/com/baeldung/reactive/model/Account.java delete mode 100644 spring-5-data-reactive/src/main/java/com/baeldung/reactive/repository/AccountCrudRepository.java delete mode 100644 spring-5-data-reactive/src/main/java/com/baeldung/reactive/repository/AccountMongoRepository.java delete mode 100644 spring-5-data-reactive/src/main/java/com/baeldung/reactive/repository/AccountRxJavaRepository.java delete mode 100644 spring-5-data-reactive/src/main/java/com/baeldung/reactive/template/AccountTemplateOperations.java delete mode 100644 spring-5-data-reactive/src/main/java/com/baeldung/tailablecursor/LogsCounterApplication.java delete mode 100644 spring-5-data-reactive/src/main/java/com/baeldung/tailablecursor/domain/Log.java delete mode 100644 spring-5-data-reactive/src/main/java/com/baeldung/tailablecursor/domain/LogLevel.java delete mode 100644 spring-5-data-reactive/src/main/java/com/baeldung/tailablecursor/repository/LogsRepository.java delete mode 100644 spring-5-data-reactive/src/main/java/com/baeldung/tailablecursor/service/ErrorLogsCounter.java delete mode 100644 spring-5-data-reactive/src/main/java/com/baeldung/tailablecursor/service/InfoLogsCounter.java delete mode 100644 spring-5-data-reactive/src/main/java/com/baeldung/tailablecursor/service/LogsCounter.java delete mode 100644 spring-5-data-reactive/src/main/java/com/baeldung/tailablecursor/service/WarnLogsCounter.java delete mode 100644 spring-5-data-reactive/src/test/java/com/baeldung/SpringContextTest.java delete mode 100644 spring-5-data-reactive/src/test/java/com/baeldung/reactive/repository/AccountCrudRepositoryManualTest.java delete mode 100644 spring-5-data-reactive/src/test/java/com/baeldung/reactive/repository/AccountMongoRepositoryManualTest.java delete mode 100644 spring-5-data-reactive/src/test/java/com/baeldung/reactive/repository/AccountRxJavaRepositoryManualTest.java delete mode 100644 spring-5-data-reactive/src/test/java/com/baeldung/reactive/template/AccountTemplateOperationsManualTest.java delete mode 100644 spring-5-data-reactive/src/test/java/com/baeldung/tailablecursor/service/ErrorLogsCounterManualTest.java delete mode 100644 spring-5-data-reactive/src/test/java/com/baeldung/tailablecursor/service/InfoLogsCounterManualTest.java delete mode 100644 spring-5-data-reactive/src/test/java/com/baeldung/tailablecursor/service/WarnLogsCounterManualTest.java diff --git a/spring-5-data-reactive/pom.xml b/spring-5-data-reactive/pom.xml index 94a3c47809..dffd4be99b 100644 --- a/spring-5-data-reactive/pom.xml +++ b/spring-5-data-reactive/pom.xml @@ -24,10 +24,6 @@ org.springframework.boot spring-boot-starter-data-couchbase-reactive - - org.springframework.boot - spring-boot-starter-data-mongodb-reactive - org.springframework.boot spring-boot-starter-web @@ -54,11 +50,6 @@ spring-boot-starter-test test - - de.flapdoodle.embed - de.flapdoodle.embed.mongo - test - org.springframework.boot spring-boot-starter-webflux diff --git a/spring-5-data-reactive/src/main/java/com/baeldung/reactive/Spring5ReactiveApplication.java b/spring-5-data-reactive/src/main/java/com/baeldung/reactive/Spring5ReactiveApplication.java deleted file mode 100644 index e96767145e..0000000000 --- a/spring-5-data-reactive/src/main/java/com/baeldung/reactive/Spring5ReactiveApplication.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.baeldung.reactive; - -import com.mongodb.reactivestreams.client.MongoClient; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.context.annotation.Bean; -import org.springframework.data.mongodb.core.ReactiveMongoTemplate; - -@SpringBootApplication -public class Spring5ReactiveApplication{ - - public static void main(String[] args) { - SpringApplication.run(Spring5ReactiveApplication.class, args); - } - - @Autowired - MongoClient mongoClient; - - @Bean - public ReactiveMongoTemplate reactiveMongoTemplate() { - return new ReactiveMongoTemplate(mongoClient, "test"); - } - -} diff --git a/spring-5-data-reactive/src/main/java/com/baeldung/reactive/model/Account.java b/spring-5-data-reactive/src/main/java/com/baeldung/reactive/model/Account.java deleted file mode 100644 index 57abd80009..0000000000 --- a/spring-5-data-reactive/src/main/java/com/baeldung/reactive/model/Account.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.baeldung.reactive.model; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.ToString; -import org.springframework.data.annotation.Id; -import org.springframework.data.mongodb.core.mapping.Document; - -@Document -@Data -@ToString -@AllArgsConstructor -@NoArgsConstructor -public class Account { - - @Id - private String id; - private String owner; - private Double value; -} diff --git a/spring-5-data-reactive/src/main/java/com/baeldung/reactive/repository/AccountCrudRepository.java b/spring-5-data-reactive/src/main/java/com/baeldung/reactive/repository/AccountCrudRepository.java deleted file mode 100644 index 8798c13772..0000000000 --- a/spring-5-data-reactive/src/main/java/com/baeldung/reactive/repository/AccountCrudRepository.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.baeldung.reactive.repository; - -import com.baeldung.reactive.model.Account; -import org.springframework.data.repository.reactive.ReactiveCrudRepository; -import org.springframework.stereotype.Repository; -import reactor.core.publisher.Flux; -import reactor.core.publisher.Mono; - -@Repository -public interface AccountCrudRepository extends ReactiveCrudRepository { - - public Flux findAllByValue(Double value); - - public Mono findFirstByOwner(Mono owner); -} diff --git a/spring-5-data-reactive/src/main/java/com/baeldung/reactive/repository/AccountMongoRepository.java b/spring-5-data-reactive/src/main/java/com/baeldung/reactive/repository/AccountMongoRepository.java deleted file mode 100644 index 5c09e4a264..0000000000 --- a/spring-5-data-reactive/src/main/java/com/baeldung/reactive/repository/AccountMongoRepository.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.baeldung.reactive.repository; - -import com.baeldung.reactive.model.Account; -import org.springframework.data.mongodb.repository.ReactiveMongoRepository; - -public interface AccountMongoRepository extends ReactiveMongoRepository { -} diff --git a/spring-5-data-reactive/src/main/java/com/baeldung/reactive/repository/AccountRxJavaRepository.java b/spring-5-data-reactive/src/main/java/com/baeldung/reactive/repository/AccountRxJavaRepository.java deleted file mode 100644 index 6afe92a21b..0000000000 --- a/spring-5-data-reactive/src/main/java/com/baeldung/reactive/repository/AccountRxJavaRepository.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.baeldung.reactive.repository; - -import com.baeldung.reactive.model.Account; -import io.reactivex.Observable; -import io.reactivex.Single; -import org.springframework.data.repository.reactive.RxJava2CrudRepository; -import org.springframework.stereotype.Repository; - -@Repository -public interface AccountRxJavaRepository extends RxJava2CrudRepository{ - - public Observable findAllByValue(Double value); - - public Single findFirstByOwner(Single owner); -} diff --git a/spring-5-data-reactive/src/main/java/com/baeldung/reactive/template/AccountTemplateOperations.java b/spring-5-data-reactive/src/main/java/com/baeldung/reactive/template/AccountTemplateOperations.java deleted file mode 100644 index 9d32f34e3b..0000000000 --- a/spring-5-data-reactive/src/main/java/com/baeldung/reactive/template/AccountTemplateOperations.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.baeldung.reactive.template; - -import com.baeldung.reactive.model.Account; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.mongodb.core.ReactiveMongoTemplate; -import org.springframework.data.mongodb.core.ReactiveRemoveOperation; -import org.springframework.stereotype.Service; -import reactor.core.publisher.Flux; -import reactor.core.publisher.Mono; - -@Service -public class AccountTemplateOperations { - - @Autowired - ReactiveMongoTemplate template; - - public Mono findById(String id) { - return template.findById(id, Account.class); - } - - public Flux findAll() { - return template.findAll(Account.class); - } - - public Mono save(Mono account) { - return template.save(account); - } - - public ReactiveRemoveOperation.ReactiveRemove deleteAll() { - return template.remove(Account.class); - } - -} diff --git a/spring-5-data-reactive/src/main/java/com/baeldung/tailablecursor/LogsCounterApplication.java b/spring-5-data-reactive/src/main/java/com/baeldung/tailablecursor/LogsCounterApplication.java deleted file mode 100644 index 8b2511a8f3..0000000000 --- a/spring-5-data-reactive/src/main/java/com/baeldung/tailablecursor/LogsCounterApplication.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.baeldung.tailablecursor; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - -@SpringBootApplication -public class LogsCounterApplication { - public static void main(String[] args) { - SpringApplication.run(LogsCounterApplication.class, args); - } -} diff --git a/spring-5-data-reactive/src/main/java/com/baeldung/tailablecursor/domain/Log.java b/spring-5-data-reactive/src/main/java/com/baeldung/tailablecursor/domain/Log.java deleted file mode 100644 index 717a367751..0000000000 --- a/spring-5-data-reactive/src/main/java/com/baeldung/tailablecursor/domain/Log.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.baeldung.tailablecursor.domain; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; -import org.springframework.data.annotation.Id; -import org.springframework.data.mongodb.core.mapping.Document; - -@Data -@Document -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class Log { - @Id - private String id; - private String service; - private LogLevel level; - private String message; -} diff --git a/spring-5-data-reactive/src/main/java/com/baeldung/tailablecursor/domain/LogLevel.java b/spring-5-data-reactive/src/main/java/com/baeldung/tailablecursor/domain/LogLevel.java deleted file mode 100644 index 6826fbffd3..0000000000 --- a/spring-5-data-reactive/src/main/java/com/baeldung/tailablecursor/domain/LogLevel.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.baeldung.tailablecursor.domain; - -public enum LogLevel { - ERROR, WARN, INFO -} diff --git a/spring-5-data-reactive/src/main/java/com/baeldung/tailablecursor/repository/LogsRepository.java b/spring-5-data-reactive/src/main/java/com/baeldung/tailablecursor/repository/LogsRepository.java deleted file mode 100644 index dce11c548c..0000000000 --- a/spring-5-data-reactive/src/main/java/com/baeldung/tailablecursor/repository/LogsRepository.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.baeldung.tailablecursor.repository; - -import com.baeldung.tailablecursor.domain.Log; -import com.baeldung.tailablecursor.domain.LogLevel; -import org.springframework.data.mongodb.repository.Tailable; -import org.springframework.data.repository.reactive.ReactiveCrudRepository; -import reactor.core.publisher.Flux; - -public interface LogsRepository extends ReactiveCrudRepository { - @Tailable - Flux findByLevel(LogLevel level); -} diff --git a/spring-5-data-reactive/src/main/java/com/baeldung/tailablecursor/service/ErrorLogsCounter.java b/spring-5-data-reactive/src/main/java/com/baeldung/tailablecursor/service/ErrorLogsCounter.java deleted file mode 100644 index c243e64f97..0000000000 --- a/spring-5-data-reactive/src/main/java/com/baeldung/tailablecursor/service/ErrorLogsCounter.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.baeldung.tailablecursor.service; - -import com.baeldung.tailablecursor.domain.Log; -import com.baeldung.tailablecursor.domain.LogLevel; -import lombok.extern.slf4j.Slf4j; -import org.springframework.data.mongodb.core.MongoTemplate; -import org.springframework.data.mongodb.core.mapping.Document; -import org.springframework.data.mongodb.core.messaging.DefaultMessageListenerContainer; -import org.springframework.data.mongodb.core.messaging.MessageListener; -import org.springframework.data.mongodb.core.messaging.MessageListenerContainer; -import org.springframework.data.mongodb.core.messaging.TailableCursorRequest; - -import javax.annotation.PreDestroy; -import java.util.concurrent.atomic.AtomicInteger; - -import static org.springframework.data.mongodb.core.query.Criteria.where; -import static org.springframework.data.mongodb.core.query.Query.query; - -@Slf4j -public class ErrorLogsCounter implements LogsCounter { - - private static final String LEVEL_FIELD_NAME = "level"; - - private final String collectionName; - private final MessageListenerContainer container; - - private final AtomicInteger counter = new AtomicInteger(); - - public ErrorLogsCounter(MongoTemplate mongoTemplate, - String collectionName) { - this.collectionName = collectionName; - this.container = new DefaultMessageListenerContainer(mongoTemplate); - - container.start(); - TailableCursorRequest request = getTailableCursorRequest(); - container.register(request, Log.class); - } - - @SuppressWarnings("unchecked") - private TailableCursorRequest getTailableCursorRequest() { - MessageListener listener = message -> { - log.info("ERROR log received: {}", message.getBody()); - counter.incrementAndGet(); - }; - - return TailableCursorRequest.builder() - .collection(collectionName) - .filter(query(where(LEVEL_FIELD_NAME).is(LogLevel.ERROR))) - .publishTo(listener) - .build(); - } - - @Override - public int count() { - return counter.get(); - } - - @PreDestroy - public void close() { - container.stop(); - } -} diff --git a/spring-5-data-reactive/src/main/java/com/baeldung/tailablecursor/service/InfoLogsCounter.java b/spring-5-data-reactive/src/main/java/com/baeldung/tailablecursor/service/InfoLogsCounter.java deleted file mode 100644 index 29301bffec..0000000000 --- a/spring-5-data-reactive/src/main/java/com/baeldung/tailablecursor/service/InfoLogsCounter.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.baeldung.tailablecursor.service; - -import com.baeldung.tailablecursor.domain.Log; -import com.baeldung.tailablecursor.domain.LogLevel; -import com.baeldung.tailablecursor.repository.LogsRepository; -import lombok.extern.slf4j.Slf4j; -import reactor.core.Disposable; -import reactor.core.publisher.Flux; - -import javax.annotation.PreDestroy; -import java.util.concurrent.atomic.AtomicInteger; - -@Slf4j -public class InfoLogsCounter implements LogsCounter { - - private final AtomicInteger counter = new AtomicInteger(); - private final Disposable subscription; - - public InfoLogsCounter(LogsRepository repository) { - Flux stream = repository.findByLevel(LogLevel.INFO); - this.subscription = stream.subscribe(logEntity -> { - log.info("INFO log received: " + logEntity); - counter.incrementAndGet(); - }); - } - - @Override - public int count() { - return this.counter.get(); - } - - @PreDestroy - public void close() { - this.subscription.dispose(); - } -} diff --git a/spring-5-data-reactive/src/main/java/com/baeldung/tailablecursor/service/LogsCounter.java b/spring-5-data-reactive/src/main/java/com/baeldung/tailablecursor/service/LogsCounter.java deleted file mode 100644 index e14a3eadd7..0000000000 --- a/spring-5-data-reactive/src/main/java/com/baeldung/tailablecursor/service/LogsCounter.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.baeldung.tailablecursor.service; - -public interface LogsCounter { - int count(); -} diff --git a/spring-5-data-reactive/src/main/java/com/baeldung/tailablecursor/service/WarnLogsCounter.java b/spring-5-data-reactive/src/main/java/com/baeldung/tailablecursor/service/WarnLogsCounter.java deleted file mode 100644 index 2dff8e8e40..0000000000 --- a/spring-5-data-reactive/src/main/java/com/baeldung/tailablecursor/service/WarnLogsCounter.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.baeldung.tailablecursor.service; - -import com.baeldung.tailablecursor.domain.Log; -import com.baeldung.tailablecursor.domain.LogLevel; -import lombok.extern.slf4j.Slf4j; -import org.springframework.data.mongodb.core.ReactiveMongoOperations; -import reactor.core.Disposable; -import reactor.core.publisher.Flux; - -import javax.annotation.PreDestroy; -import java.util.concurrent.atomic.AtomicInteger; - -import static org.springframework.data.mongodb.core.query.Criteria.where; -import static org.springframework.data.mongodb.core.query.Query.query; - -@Slf4j -public class WarnLogsCounter implements LogsCounter { - - private static final String LEVEL_FIELD_NAME = "level"; - - private final AtomicInteger counter = new AtomicInteger(); - private final Disposable subscription; - - public WarnLogsCounter(ReactiveMongoOperations template) { - Flux stream = template.tail(query(where(LEVEL_FIELD_NAME).is(LogLevel.WARN)), Log.class); - subscription = stream.subscribe(logEntity -> { - log.warn("WARN log received: " + logEntity); - counter.incrementAndGet(); - }); - } - - @Override - public int count() { - return counter.get(); - } - - @PreDestroy - public void close() { - subscription.dispose(); - } -} diff --git a/spring-5-data-reactive/src/test/java/com/baeldung/SpringContextTest.java b/spring-5-data-reactive/src/test/java/com/baeldung/SpringContextTest.java deleted file mode 100644 index bedb30fcaa..0000000000 --- a/spring-5-data-reactive/src/test/java/com/baeldung/SpringContextTest.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.baeldung; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; - -import com.baeldung.reactive.Spring5ReactiveApplication; - -@RunWith(SpringRunner.class) -@SpringBootTest(classes = Spring5ReactiveApplication.class) -public class SpringContextTest { - - @Test - public void whenSpringContextIsBootstrapped_thenNoExceptions() { - } -} diff --git a/spring-5-data-reactive/src/test/java/com/baeldung/reactive/repository/AccountCrudRepositoryManualTest.java b/spring-5-data-reactive/src/test/java/com/baeldung/reactive/repository/AccountCrudRepositoryManualTest.java deleted file mode 100644 index d4b1d0eeda..0000000000 --- a/spring-5-data-reactive/src/test/java/com/baeldung/reactive/repository/AccountCrudRepositoryManualTest.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.baeldung.reactive.repository; - - -import com.baeldung.reactive.Spring5ReactiveApplication; -import com.baeldung.reactive.model.Account; -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 reactor.core.publisher.Flux; -import reactor.core.publisher.Mono; -import reactor.test.StepVerifier; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -@RunWith(SpringRunner.class) -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = Spring5ReactiveApplication.class) -public class AccountCrudRepositoryManualTest { - - @Autowired - AccountCrudRepository repository; - - @Test - public void givenValue_whenFindAllByValue_thenFindAccount() { - repository.save(new Account(null, "Bill", 12.3)).block(); - Flux accountFlux = repository.findAllByValue(12.3); - - StepVerifier.create(accountFlux) - .assertNext(account -> { - assertEquals("Bill", account.getOwner()); - assertEquals(Double.valueOf(12.3) , account.getValue()); - assertNotNull(account.getId()); - }) - .expectComplete() - .verify(); - } - - @Test - public void givenOwner_whenFindFirstByOwner_thenFindAccount() { - repository.save(new Account(null, "Bill", 12.3)).block(); - Mono accountMono = repository.findFirstByOwner(Mono.just("Bill")); - - StepVerifier.create(accountMono) - .assertNext(account -> { - assertEquals("Bill", account.getOwner()); - assertEquals(Double.valueOf(12.3) , account.getValue()); - assertNotNull(account.getId()); - }) - .expectComplete() - .verify(); - - - - } - - @Test - public void givenAccount_whenSave_thenSaveAccount() { - Mono accountMono = repository.save(new Account(null, "Bill", 12.3)); - - StepVerifier - .create(accountMono) - .assertNext(account -> assertNotNull(account.getId())) - .expectComplete() - .verify(); - } - - -} \ No newline at end of file diff --git a/spring-5-data-reactive/src/test/java/com/baeldung/reactive/repository/AccountMongoRepositoryManualTest.java b/spring-5-data-reactive/src/test/java/com/baeldung/reactive/repository/AccountMongoRepositoryManualTest.java deleted file mode 100644 index 2ca075aa5e..0000000000 --- a/spring-5-data-reactive/src/test/java/com/baeldung/reactive/repository/AccountMongoRepositoryManualTest.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.baeldung.reactive.repository; - -import com.baeldung.reactive.Spring5ReactiveApplication; -import com.baeldung.reactive.model.Account; -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.data.domain.Example; -import org.springframework.data.domain.ExampleMatcher; -import org.springframework.test.context.junit4.SpringRunner; -import reactor.core.publisher.Flux; -import reactor.core.publisher.Mono; -import reactor.test.StepVerifier; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.springframework.data.domain.ExampleMatcher.GenericPropertyMatchers.startsWith; - -@RunWith(SpringRunner.class) -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = Spring5ReactiveApplication.class) -public class AccountMongoRepositoryManualTest { - - @Autowired - AccountMongoRepository repository; - - @Test - public void givenExample_whenFindAllWithExample_thenFindAllMacthings() { - repository.save(new Account(null, "john", 12.3)).block(); - ExampleMatcher matcher = ExampleMatcher.matching().withMatcher("owner", startsWith()); - Example example = Example.of(new Account(null, "jo", null), matcher); - Flux accountFlux = repository.findAll(example); - - StepVerifier - .create(accountFlux) - .assertNext(account -> assertEquals("john", account.getOwner())) - .expectComplete() - .verify(); - } - - @Test - public void givenAccount_whenSave_thenSave() { - Mono accountMono = repository.save(new Account(null, "john", 12.3)); - - StepVerifier - .create(accountMono) - .assertNext(account -> assertNotNull(account.getId())) - .expectComplete() - .verify(); - } - - @Test - public void givenId_whenFindById_thenFindAccount() { - Account inserted = repository.save(new Account(null, "john", 12.3)).block(); - Mono accountMono = repository.findById(inserted.getId()); - - StepVerifier - .create(accountMono) - .assertNext(account -> { - assertEquals("john", account.getOwner()); - assertEquals(Double.valueOf(12.3), account.getValue()); - assertNotNull(account.getId()); - }) - .expectComplete() - .verify(); - } -} \ No newline at end of file diff --git a/spring-5-data-reactive/src/test/java/com/baeldung/reactive/repository/AccountRxJavaRepositoryManualTest.java b/spring-5-data-reactive/src/test/java/com/baeldung/reactive/repository/AccountRxJavaRepositoryManualTest.java deleted file mode 100644 index d91acd24e2..0000000000 --- a/spring-5-data-reactive/src/test/java/com/baeldung/reactive/repository/AccountRxJavaRepositoryManualTest.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.baeldung.reactive.repository; - -import com.baeldung.reactive.Spring5ReactiveApplication; -import com.baeldung.reactive.model.Account; -import io.reactivex.Observable; -import io.reactivex.Single; -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 static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -@RunWith(SpringRunner.class) -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = Spring5ReactiveApplication.class) -public class AccountRxJavaRepositoryManualTest { - - @Autowired - AccountRxJavaRepository repository; - - @Test - public void givenValue_whenFindAllByValue_thenFindAccounts() throws InterruptedException { - repository.save(new Account(null, "bruno", 12.3)).blockingGet(); - Observable accountObservable = repository.findAllByValue(12.3); - - accountObservable - .test() - .await() - .assertComplete() - .assertValueAt(0, account -> { - assertEquals("bruno", account.getOwner()); - assertEquals(Double.valueOf(12.3), account.getValue()); - return true; - }); - - } - - @Test - public void givenOwner_whenFindFirstByOwner_thenFindAccount() throws InterruptedException { - repository.save(new Account(null, "bruno", 12.3)).blockingGet(); - Single accountSingle = repository.findFirstByOwner(Single.just("bruno")); - - accountSingle - .test() - .await() - .assertComplete() - .assertValueAt(0, account -> { - assertEquals("bruno", account.getOwner()); - assertEquals(Double.valueOf(12.3), account.getValue()); - assertNotNull(account.getId()); - return true; - }); - - } - -} \ No newline at end of file diff --git a/spring-5-data-reactive/src/test/java/com/baeldung/reactive/template/AccountTemplateOperationsManualTest.java b/spring-5-data-reactive/src/test/java/com/baeldung/reactive/template/AccountTemplateOperationsManualTest.java deleted file mode 100644 index 5fa0e39317..0000000000 --- a/spring-5-data-reactive/src/test/java/com/baeldung/reactive/template/AccountTemplateOperationsManualTest.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.baeldung.reactive.template; - -import com.baeldung.reactive.Spring5ReactiveApplication; -import com.baeldung.reactive.model.Account; -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 reactor.core.publisher.Flux; -import reactor.core.publisher.Mono; - -import java.util.List; - -import static org.junit.jupiter.api.Assertions.*; - -@RunWith(SpringRunner.class) -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = Spring5ReactiveApplication.class) -public class AccountTemplateOperationsManualTest { - - @Autowired - AccountTemplateOperations accountTemplate; - - @Test - public void givenAccount_whenSave_thenSave() { - Account account = accountTemplate.save(Mono.just(new Account(null, "Raul", 12.3))).block(); - assertNotNull( account.getId() ); - } - - @Test - public void givenId_whenFindById_thenFindAccount() { - Mono accountMono = accountTemplate.save(Mono.just(new Account(null, "Raul", 12.3))); - Mono accountMonoResult = accountTemplate.findById(accountMono.block().getId()); - assertNotNull(accountMonoResult.block().getId()); - assertEquals(accountMonoResult.block().getOwner(), "Raul"); - } - - @Test - public void whenFindAll_thenFindAllAccounts() { - Account account1 = accountTemplate.save(Mono.just(new Account(null, "Raul", 12.3))).block(); - Account account2 = accountTemplate.save(Mono.just(new Account(null, "Raul Torres", 13.3))).block(); - Flux accountFlux = accountTemplate.findAll(); - List accounts = accountFlux.collectList().block(); - assertTrue(accounts.stream().anyMatch(x -> account1.getId().equals(x.getId()) )); - assertTrue(accounts.stream().anyMatch(x -> account2.getId().equals(x.getId()) )); - } - -} \ No newline at end of file diff --git a/spring-5-data-reactive/src/test/java/com/baeldung/tailablecursor/service/ErrorLogsCounterManualTest.java b/spring-5-data-reactive/src/test/java/com/baeldung/tailablecursor/service/ErrorLogsCounterManualTest.java deleted file mode 100644 index 5e20d3ec79..0000000000 --- a/spring-5-data-reactive/src/test/java/com/baeldung/tailablecursor/service/ErrorLogsCounterManualTest.java +++ /dev/null @@ -1,112 +0,0 @@ -package com.baeldung.tailablecursor.service; - -import com.baeldung.tailablecursor.domain.Log; -import com.baeldung.tailablecursor.domain.LogLevel; -import com.mongodb.MongoClient; -import com.mongodb.client.MongoCollection; -import com.mongodb.client.MongoDatabase; -import com.mongodb.client.model.CreateCollectionOptions; -import de.flapdoodle.embed.mongo.MongodExecutable; -import de.flapdoodle.embed.mongo.MongodProcess; -import de.flapdoodle.embed.mongo.MongodStarter; -import de.flapdoodle.embed.mongo.config.MongodConfigBuilder; -import de.flapdoodle.embed.mongo.config.Net; -import de.flapdoodle.embed.mongo.distribution.Version; -import de.flapdoodle.embed.process.runtime.Network; -import org.bson.Document; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.springframework.data.mongodb.core.MongoTemplate; -import org.springframework.util.SocketUtils; - -import java.io.IOException; -import java.util.stream.IntStream; - -import static org.hamcrest.Matchers.is; -import static org.junit.Assert.assertThat; - -public class ErrorLogsCounterManualTest { - - private static final String SERVER = "localhost"; - private static final int PORT = SocketUtils.findAvailableTcpPort(10000); - private static final String DB_NAME = "test"; - private static final String COLLECTION_NAME = Log.class.getName().toLowerCase(); - - private static final MongodStarter starter = MongodStarter.getDefaultInstance(); - private static final int MAX_DOCUMENTS_IN_COLLECTION = 3; - - private ErrorLogsCounter errorLogsCounter; - private MongodExecutable mongodExecutable; - private MongodProcess mongoDaemon; - private MongoDatabase db; - - @Before - public void setup() throws Exception { - MongoTemplate mongoTemplate = initMongoTemplate(); - - MongoCollection collection = createCappedCollection(); - - persistDocument(collection, -1, LogLevel.ERROR, "my-service", "Initial log"); - - errorLogsCounter = new ErrorLogsCounter(mongoTemplate, COLLECTION_NAME); - Thread.sleep(1000L); // wait for initialization - } - - private MongoTemplate initMongoTemplate() throws IOException { - mongodExecutable = starter.prepare(new MongodConfigBuilder() - .version(Version.Main.PRODUCTION) - .net(new Net(SERVER, PORT, Network.localhostIsIPv6())) - .build()); - mongoDaemon = mongodExecutable.start(); - - MongoClient mongoClient = new MongoClient(SERVER, PORT); - db = mongoClient.getDatabase(DB_NAME); - - return new MongoTemplate(mongoClient, DB_NAME); - } - - private MongoCollection createCappedCollection() { - db.createCollection(COLLECTION_NAME, new CreateCollectionOptions() - .capped(true) - .sizeInBytes(100000) - .maxDocuments(MAX_DOCUMENTS_IN_COLLECTION)); - return db.getCollection(COLLECTION_NAME); - } - - private void persistDocument(MongoCollection collection, - int i, LogLevel level, String service, String message) { - Document logMessage = new Document(); - logMessage.append("_id", i); - logMessage.append("level", level.toString()); - logMessage.append("service", service); - logMessage.append("message", message); - collection.insertOne(logMessage); - } - - @After - public void tearDown() { - errorLogsCounter.close(); - mongoDaemon.stop(); - mongodExecutable.stop(); - } - - @Test - public void whenErrorLogsArePersisted_thenTheyAreReceivedByLogsCounter() throws Exception { - MongoCollection collection = db.getCollection(COLLECTION_NAME); - - IntStream.range(1, 10) - .forEach(i -> persistDocument(collection, - i, - i > 5 ? LogLevel.ERROR : LogLevel.INFO, - "service" + i, - "Message from service " + i) - ); - - Thread.sleep(1000L); // wait to receive all messages from the reactive mongodb driver - - assertThat(collection.countDocuments(), is((long) MAX_DOCUMENTS_IN_COLLECTION)); - assertThat(errorLogsCounter.count(), is(5)); - } - -} diff --git a/spring-5-data-reactive/src/test/java/com/baeldung/tailablecursor/service/InfoLogsCounterManualTest.java b/spring-5-data-reactive/src/test/java/com/baeldung/tailablecursor/service/InfoLogsCounterManualTest.java deleted file mode 100644 index cd8bd68257..0000000000 --- a/spring-5-data-reactive/src/test/java/com/baeldung/tailablecursor/service/InfoLogsCounterManualTest.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.baeldung.tailablecursor.service; - -import com.baeldung.tailablecursor.LogsCounterApplication; -import com.baeldung.tailablecursor.domain.Log; -import com.baeldung.tailablecursor.domain.LogLevel; -import com.baeldung.tailablecursor.repository.LogsRepository; -import lombok.extern.slf4j.Slf4j; -import org.junit.Before; -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.data.mongodb.core.CollectionOptions; -import org.springframework.data.mongodb.core.ReactiveMongoTemplate; -import org.springframework.test.context.junit4.SpringRunner; -import reactor.core.publisher.Flux; - -import static org.hamcrest.Matchers.is; -import static org.junit.Assert.assertThat; - - -@RunWith(SpringRunner.class) -@SpringBootTest(classes = LogsCounterApplication.class) -@Slf4j -public class InfoLogsCounterManualTest { - @Autowired - private LogsRepository repository; - - @Autowired - private ReactiveMongoTemplate template; - - @Before - public void setUp() { - createCappedCollectionUsingReactiveMongoTemplate(template); - - persistDocument(Log.builder() - .level(LogLevel.INFO) - .service("Service 2") - .message("Initial INFO message") - .build()); - } - - private void createCappedCollectionUsingReactiveMongoTemplate(ReactiveMongoTemplate reactiveMongoTemplate) { - reactiveMongoTemplate.dropCollection(Log.class).block(); - reactiveMongoTemplate.createCollection(Log.class, CollectionOptions.empty() - .maxDocuments(5) - .size(1024 * 1024L) - .capped()).block(); - } - - private void persistDocument(Log log) { - repository.save(log).block(); - } - - @Test - public void wheInfoLogsArePersisted_thenTheyAreReceivedByLogsCounter() throws Exception { - InfoLogsCounter infoLogsCounter = new InfoLogsCounter(repository); - - Thread.sleep(1000L); // wait for initialization - - Flux.range(0,10) - .map(i -> Log.builder() - .level(i > 5 ? LogLevel.WARN : LogLevel.INFO) - .service("some-service") - .message("some log message") - .build()) - .map(entity -> repository.save(entity).subscribe()) - .blockLast(); - - Thread.sleep(1000L); // wait to receive all messages from the reactive mongodb driver - - assertThat(infoLogsCounter.count(), is(7)); - infoLogsCounter.close(); - } -} \ No newline at end of file diff --git a/spring-5-data-reactive/src/test/java/com/baeldung/tailablecursor/service/WarnLogsCounterManualTest.java b/spring-5-data-reactive/src/test/java/com/baeldung/tailablecursor/service/WarnLogsCounterManualTest.java deleted file mode 100644 index 79d94b6784..0000000000 --- a/spring-5-data-reactive/src/test/java/com/baeldung/tailablecursor/service/WarnLogsCounterManualTest.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.baeldung.tailablecursor.service; - -import com.baeldung.tailablecursor.LogsCounterApplication; -import com.baeldung.tailablecursor.domain.Log; -import com.baeldung.tailablecursor.domain.LogLevel; -import com.baeldung.tailablecursor.repository.LogsRepository; -import lombok.extern.slf4j.Slf4j; -import org.junit.Before; -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.data.mongodb.core.CollectionOptions; -import org.springframework.data.mongodb.core.ReactiveMongoTemplate; -import org.springframework.test.context.junit4.SpringRunner; -import reactor.core.publisher.Flux; - -import static org.hamcrest.Matchers.is; -import static org.junit.Assert.assertThat; - - -@RunWith(SpringRunner.class) -@SpringBootTest(classes = LogsCounterApplication.class) -@Slf4j -public class WarnLogsCounterManualTest { - @Autowired - private LogsRepository repository; - - @Autowired - private ReactiveMongoTemplate template; - - @Before - public void setUp() { - createCappedCollectionUsingReactiveMongoTemplate(template); - - persistDocument(Log.builder() - .level(LogLevel.WARN) - .service("Service 1") - .message("Initial Warn message") - .build()); - } - - private void createCappedCollectionUsingReactiveMongoTemplate(ReactiveMongoTemplate reactiveMongoTemplate) { - reactiveMongoTemplate.dropCollection(Log.class).block(); - reactiveMongoTemplate.createCollection(Log.class, CollectionOptions.empty() - .maxDocuments(5) - .size(1024 * 1024L) - .capped()).block(); - } - - private void persistDocument(Log log) { - repository.save(log).block(); - } - - @Test - public void whenWarnLogsArePersisted_thenTheyAreReceivedByLogsCounter() throws Exception { - WarnLogsCounter warnLogsCounter = new WarnLogsCounter(template); - - Thread.sleep(1000L); // wait for initialization - - Flux.range(0,10) - .map(i -> Log.builder() - .level(i > 5 ? LogLevel.WARN : LogLevel.INFO) - .service("some-service") - .message("some log message") - .build()) - .map(entity -> repository.save(entity).subscribe()) - .blockLast(); - - Thread.sleep(1000L); // wait to receive all messages from the reactive mongodb driver - - assertThat(warnLogsCounter.count(), is(5)); - warnLogsCounter.close(); - } -} \ No newline at end of file From 1d2d3e9e759b997b1407d11a7281223c22c679c5 Mon Sep 17 00:00:00 2001 From: majewsk6 Date: Fri, 20 Aug 2021 12:23:01 +0200 Subject: [PATCH 62/82] BAEL-5009 - fix test name --- ...itoryIntegrationTest.java => ArticleRepositoryLiveTest.java} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename persistence-modules/spring-data-arangodb/src/test/java/com/baeldung/arangodb/{ArticleRepositoryIntegrationTest.java => ArticleRepositoryLiveTest.java} (98%) diff --git a/persistence-modules/spring-data-arangodb/src/test/java/com/baeldung/arangodb/ArticleRepositoryIntegrationTest.java b/persistence-modules/spring-data-arangodb/src/test/java/com/baeldung/arangodb/ArticleRepositoryLiveTest.java similarity index 98% rename from persistence-modules/spring-data-arangodb/src/test/java/com/baeldung/arangodb/ArticleRepositoryIntegrationTest.java rename to persistence-modules/spring-data-arangodb/src/test/java/com/baeldung/arangodb/ArticleRepositoryLiveTest.java index 1d4258688a..9d0aa5e6f5 100644 --- a/persistence-modules/spring-data-arangodb/src/test/java/com/baeldung/arangodb/ArticleRepositoryIntegrationTest.java +++ b/persistence-modules/spring-data-arangodb/src/test/java/com/baeldung/arangodb/ArticleRepositoryLiveTest.java @@ -17,7 +17,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; @SpringBootTest -public class ArticleRepositoryIntegrationTest { +public class ArticleRepositoryLiveTest { @Autowired ArticleRepository articleRepository; From b6a5974f856fd550c018384c84a33dec9cacb828 Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Sat, 21 Aug 2021 14:14:24 +0530 Subject: [PATCH 63/82] JAVA-3247 Reduce logging of tutorials-integration job --- .../algorithms/astar/RouteFinder.java | 13 +- .../RouteFinderIntegrationTest.java | 9 +- drools/src/main/resources/logback.xml | 3 +- .../server/config/HelloDynamicBinding.java | 6 - .../JMapperRelationalIntegrationTest.java | 6 - .../LazyCollectionIntegrationTest.java | 7 +- .../src/test/resources/log4j.xml | 11 +- .../src/test/resources/log4j2.xml | 6 +- .../src/test/resources/logback.xml | 6 +- .../test/resources/META-INF/persistence.xml | 212 ++++++++++++++++++ .../test/resources/META-INF/persistence.xml | 152 +++++++++++++ .../java-jpa-3/src/test/resources/logback.xml | 15 ++ persistence-modules/java-jpa/README.md | 2 +- ...lication-lazy-load-no-trans-off.properties | 2 +- ...plication-lazy-load-no-trans-on.properties | 2 +- .../application/entities/User.java | 9 + .../src/test/resources/application.properties | 2 +- ...st.java => ArticleRepositoryLiveTest.java} | 5 +- 18 files changed, 427 insertions(+), 41 deletions(-) create mode 100644 persistence-modules/java-jpa-2/src/test/resources/META-INF/persistence.xml create mode 100644 persistence-modules/java-jpa-3/src/test/resources/META-INF/persistence.xml create mode 100644 persistence-modules/java-jpa-3/src/test/resources/logback.xml rename persistence-modules/spring-data-arangodb/src/test/java/com/baeldung/arangodb/{ArticleRepositoryIntegrationTest.java => ArticleRepositoryLiveTest.java} (96%) diff --git a/algorithms-miscellaneous-2/src/test/java/com/baeldung/algorithms/astar/RouteFinder.java b/algorithms-miscellaneous-2/src/test/java/com/baeldung/algorithms/astar/RouteFinder.java index 35458093c5..f8b66fec88 100644 --- a/algorithms-miscellaneous-2/src/test/java/com/baeldung/algorithms/astar/RouteFinder.java +++ b/algorithms-miscellaneous-2/src/test/java/com/baeldung/algorithms/astar/RouteFinder.java @@ -8,6 +8,9 @@ import java.util.PriorityQueue; import java.util.Queue; import java.util.stream.Collectors; +import lombok.extern.slf4j.Slf4j; + +@Slf4j public class RouteFinder { private final Graph graph; private final Scorer nextNodeScorer; @@ -28,11 +31,11 @@ public class RouteFinder { openSet.add(start); while (!openSet.isEmpty()) { - System.out.println("Open Set contains: " + openSet.stream().map(RouteNode::getCurrent).collect(Collectors.toSet())); + log.debug("Open Set contains: " + openSet.stream().map(RouteNode::getCurrent).collect(Collectors.toSet())); RouteNode next = openSet.poll(); - System.out.println("Looking at node: " + next); + log.debug("Looking at node: " + next); if (next.getCurrent().equals(to)) { - System.out.println("Found our destination!"); + log.debug("Found our destination!"); List route = new ArrayList<>(); RouteNode current = next; @@ -41,7 +44,7 @@ public class RouteFinder { current = allNodes.get(current.getPrevious()); } while (current != null); - System.out.println("Route: " + route); + log.debug("Route: " + route); return route; } @@ -55,7 +58,7 @@ public class RouteFinder { nextNode.setRouteScore(newScore); nextNode.setEstimatedScore(newScore + targetScorer.computeCost(connection, to)); openSet.add(nextNode); - System.out.println("Found a better route to node: " + nextNode); + log.debug("Found a better route to node: " + nextNode); } }); } diff --git a/algorithms-miscellaneous-2/src/test/java/com/baeldung/algorithms/astar/underground/RouteFinderIntegrationTest.java b/algorithms-miscellaneous-2/src/test/java/com/baeldung/algorithms/astar/underground/RouteFinderIntegrationTest.java index 1e4ad56d94..aba7f149da 100644 --- a/algorithms-miscellaneous-2/src/test/java/com/baeldung/algorithms/astar/underground/RouteFinderIntegrationTest.java +++ b/algorithms-miscellaneous-2/src/test/java/com/baeldung/algorithms/astar/underground/RouteFinderIntegrationTest.java @@ -1,5 +1,7 @@ package com.baeldung.algorithms.astar.underground; +import static org.assertj.core.api.Assertions.assertThat; + import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -10,9 +12,13 @@ import java.util.stream.Stream; import com.baeldung.algorithms.astar.Graph; import com.baeldung.algorithms.astar.RouteFinder; + +import lombok.extern.slf4j.Slf4j; + import org.junit.Before; import org.junit.Test; +@Slf4j public class RouteFinderIntegrationTest { private Graph underground; @@ -637,7 +643,8 @@ public class RouteFinderIntegrationTest { @Test public void findRoute() { List route = routeFinder.findRoute(underground.getNode("74"), underground.getNode("7")); + assertThat(route).size().isPositive(); - System.out.println(route.stream().map(Station::getName).collect(Collectors.toList())); + route.stream().map(Station::getName).collect(Collectors.toList()).forEach(station -> log.debug(station)); } } diff --git a/drools/src/main/resources/logback.xml b/drools/src/main/resources/logback.xml index 7d900d8ea8..b928039804 100644 --- a/drools/src/main/resources/logback.xml +++ b/drools/src/main/resources/logback.xml @@ -6,7 +6,8 @@ - + + diff --git a/jersey/src/main/java/com/baeldung/jersey/server/config/HelloDynamicBinding.java b/jersey/src/main/java/com/baeldung/jersey/server/config/HelloDynamicBinding.java index e56cdec140..19c407f80d 100644 --- a/jersey/src/main/java/com/baeldung/jersey/server/config/HelloDynamicBinding.java +++ b/jersey/src/main/java/com/baeldung/jersey/server/config/HelloDynamicBinding.java @@ -5,20 +5,14 @@ import javax.ws.rs.container.ResourceInfo; import javax.ws.rs.core.FeatureContext; import javax.ws.rs.ext.Provider; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import com.baeldung.jersey.server.Greetings; import com.baeldung.jersey.server.filter.ResponseServerFilter; @Provider public class HelloDynamicBinding implements DynamicFeature { - private static final Logger LOG = LoggerFactory.getLogger(HelloDynamicBinding.class); - @Override public void configure(ResourceInfo resourceInfo, FeatureContext context) { - LOG.info("Hello dynamic binding"); if (Greetings.class.equals(resourceInfo.getResourceClass()) && resourceInfo.getResourceMethod() .getName() diff --git a/libraries-data/src/test/java/com/baeldung/jmapper/JMapperRelationalIntegrationTest.java b/libraries-data/src/test/java/com/baeldung/jmapper/JMapperRelationalIntegrationTest.java index 7a497c4a83..15a16e22da 100644 --- a/libraries-data/src/test/java/com/baeldung/jmapper/JMapperRelationalIntegrationTest.java +++ b/libraries-data/src/test/java/com/baeldung/jmapper/JMapperRelationalIntegrationTest.java @@ -22,8 +22,6 @@ public class JMapperRelationalIntegrationTest { UserDto1 result1 = relationalMapper.oneToMany(UserDto1.class, user); UserDto2 result2= relationalMapper.oneToMany(UserDto2.class, user); - System.out.println(result1); - System.out.println(result2); assertEquals(user.getId(), result1.getId()); assertEquals(user.getEmail(), result1.getUsername()); assertEquals(user.getId(), result2.getId()); @@ -40,8 +38,6 @@ public class JMapperRelationalIntegrationTest { UserDto1 result1 = relationalMapper.oneToMany(UserDto1.class, user); UserDto2 result2 = relationalMapper.oneToMany(UserDto2.class, user); - System.out.println(result1); - System.out.println(result2); assertEquals(user.getId(), result1.getId()); assertEquals(user.getEmail(), result1.getUsername()); assertEquals(user.getId(), result2.getId()); @@ -64,8 +60,6 @@ public class JMapperRelationalIntegrationTest { UserDto1 result1 = relationalMapper.oneToMany(UserDto1.class, user); UserDto2 result2 = relationalMapper.oneToMany(UserDto2.class, user); - System.out.println(result1); - System.out.println(result2); assertEquals(user.getId(), result1.getId()); assertEquals(user.getEmail(), result1.getUsername()); assertEquals(user.getId(), result2.getId()); diff --git a/persistence-modules/hibernate-annotations/src/test/java/com/baeldung/hibernate/lazycollection/LazyCollectionIntegrationTest.java b/persistence-modules/hibernate-annotations/src/test/java/com/baeldung/hibernate/lazycollection/LazyCollectionIntegrationTest.java index 97888471a4..dd86820c03 100644 --- a/persistence-modules/hibernate-annotations/src/test/java/com/baeldung/hibernate/lazycollection/LazyCollectionIntegrationTest.java +++ b/persistence-modules/hibernate-annotations/src/test/java/com/baeldung/hibernate/lazycollection/LazyCollectionIntegrationTest.java @@ -1,7 +1,5 @@ package com.baeldung.hibernate.lazycollection; -import com.baeldung.hibernate.lazycollection.model.Branch; -import com.baeldung.hibernate.lazycollection.model.Employee; import org.hibernate.Hibernate; import org.hibernate.Session; import org.hibernate.SessionFactory; @@ -9,15 +7,14 @@ import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.cfg.Configuration; import org.hibernate.dialect.H2Dialect; import org.hibernate.service.ServiceRegistry; - -import org.junit.After; import org.junit.AfterClass; import org.junit.Assert; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; -import javax.annotation.PostConstruct; +import com.baeldung.hibernate.lazycollection.model.Branch; +import com.baeldung.hibernate.lazycollection.model.Employee; public class LazyCollectionIntegrationTest { diff --git a/persistence-modules/hibernate-annotations/src/test/resources/log4j.xml b/persistence-modules/hibernate-annotations/src/test/resources/log4j.xml index 2d153af124..7e2895f1e0 100644 --- a/persistence-modules/hibernate-annotations/src/test/resources/log4j.xml +++ b/persistence-modules/hibernate-annotations/src/test/resources/log4j.xml @@ -1,6 +1,5 @@ - - + @@ -10,16 +9,16 @@ - + - + - + - \ No newline at end of file + \ No newline at end of file diff --git a/persistence-modules/hibernate-annotations/src/test/resources/log4j2.xml b/persistence-modules/hibernate-annotations/src/test/resources/log4j2.xml index c5d0f12462..69352715da 100644 --- a/persistence-modules/hibernate-annotations/src/test/resources/log4j2.xml +++ b/persistence-modules/hibernate-annotations/src/test/resources/log4j2.xml @@ -8,9 +8,9 @@ - - - + + + diff --git a/persistence-modules/hibernate-annotations/src/test/resources/logback.xml b/persistence-modules/hibernate-annotations/src/test/resources/logback.xml index 9e591977d7..ed39d69fc2 100644 --- a/persistence-modules/hibernate-annotations/src/test/resources/logback.xml +++ b/persistence-modules/hibernate-annotations/src/test/resources/logback.xml @@ -8,9 +8,9 @@ - - - + + + diff --git a/persistence-modules/java-jpa-2/src/test/resources/META-INF/persistence.xml b/persistence-modules/java-jpa-2/src/test/resources/META-INF/persistence.xml new file mode 100644 index 0000000000..00c7274dd4 --- /dev/null +++ b/persistence-modules/java-jpa-2/src/test/resources/META-INF/persistence.xml @@ -0,0 +1,212 @@ + + + + + org.hibernate.jpa.HibernatePersistenceProvider + com.baeldung.jpa.queryparams.Employee + true + + + + + + + + + + + + + + + + org.hibernate.jpa.HibernatePersistenceProvider + com.baeldung.jpa.text.Exam + true + + + + + + + + + + + + + + org.hibernate.jpa.HibernatePersistenceProvider + com.baeldung.jpa.defaultvalues.User + true + + + + + + + + + + + + + + org.hibernate.jpa.HibernatePersistenceProvider + com.baeldung.jpa.querytypes.UserEntity + true + + + + + + + + + + + + + + + org.hibernate.jpa.HibernatePersistenceProvider + com.baeldung.jpa.projections.Product + true + + + + + + + + + + + + + + + org.hibernate.jpa.HibernatePersistenceProvider + com.baeldung.jpa.criteria.Item + true + + + + + + + + + + + + + + + org.hibernate.jpa.HibernatePersistenceProvider + com.baeldung.jpa.multipletables.multipleentities.MealWithMultipleEntities + com.baeldung.jpa.multipletables.multipleentities.AllergensAsEntity + + com.baeldung.jpa.multipletables.secondarytable.MealAsSingleEntity + + com.baeldung.jpa.multipletables.secondarytable.embeddable.MealWithEmbeddedAllergens + com.baeldung.jpa.multipletables.secondarytable.embeddable.AllergensAsEmbeddable + + true + + + + + + + + + + + + + + + org.hibernate.jpa.HibernatePersistenceProvider + com.baeldung.jpa.unrelated.entities.Cocktail + com.baeldung.jpa.unrelated.entities.Recipe + com.baeldung.jpa.unrelated.entities.MultipleRecipe + true + + + + + + + + + + + + + + org.eclipse.persistence.jpa.PersistenceProvider + com.baeldung.jpa.generateidvalue.Admin + com.baeldung.jpa.generateidvalue.Article + com.baeldung.jpa.generateidvalue.IdGenerator + com.baeldung.jpa.generateidvalue.Task + com.baeldung.jpa.generateidvalue.User + true + + + + + + + + + + + + + + diff --git a/persistence-modules/java-jpa-3/src/test/resources/META-INF/persistence.xml b/persistence-modules/java-jpa-3/src/test/resources/META-INF/persistence.xml new file mode 100644 index 0000000000..9a33f912bf --- /dev/null +++ b/persistence-modules/java-jpa-3/src/test/resources/META-INF/persistence.xml @@ -0,0 +1,152 @@ + + + + org.hibernate.jpa.HibernatePersistenceProvider + com.baeldung.jpa.equality.EqualByJavaDefault + com.baeldung.jpa.equality.EqualById + com.baeldung.jpa.equality.EqualByBusinessKey + true + + + + + + + + + + + + + + org.hibernate.jpa.HibernatePersistenceProvider + com.baeldung.jpa.removal.ShipmentInfo + com.baeldung.jpa.removal.LineItem + com.baeldung.jpa.removal.OrderRequest + true + + + + + + + + + + + + + + org.hibernate.jpa.HibernatePersistenceProvider + com.baeldung.jpa.index.Student + true + + + + + + + + + + + + + org.hibernate.jpa.HibernatePersistenceProvider + com.baeldung.jpa.multiplebagfetchexception.Album + com.baeldung.jpa.multiplebagfetchexception.Song + com.baeldung.jpa.multiplebagfetchexception.User + com.baeldung.jpa.multiplebagfetchexception.Artist + com.baeldung.jpa.multiplebagfetchexception.Offer + com.baeldung.jpa.multiplebagfetchexception.Playlist + com.baeldung.jpa.multiplebagfetchexception.FavoriteSong + true + + + + + + + + + + + + + + org.hibernate.jpa.HibernatePersistenceProvider + com.baeldung.jpa.hibernateunproxy.Payment + com.baeldung.jpa.hibernateunproxy.CreditCardPayment + com.baeldung.jpa.hibernateunproxy.PaymentReceipt + com.baeldung.jpa.hibernateunproxy.WebUser + true + + + + + + + + + + + + + + + + org.hibernate.jpa.HibernatePersistenceProvider + com.baeldung.jpa.IdGeneration.User + true + + + + + + + + + + + + + org.hibernate.jpa.HibernatePersistenceProvider + com.baeldung.jpa.uniqueconstraints.Person + com.baeldung.jpa.uniqueconstraints.Address + true + + + + + + + + + + + + + org.hibernate.jpa.HibernatePersistenceProvider + com.baeldung.jpa.returnmultipleentities.Channel + com.baeldung.jpa.returnmultipleentities.Subscription + com.baeldung.jpa.returnmultipleentities.User + com.baeldung.jpa.returnmultipleentities.ReportRepository + true + + + + + + + + + + + + + + diff --git a/persistence-modules/java-jpa-3/src/test/resources/logback.xml b/persistence-modules/java-jpa-3/src/test/resources/logback.xml new file mode 100644 index 0000000000..0e1b193434 --- /dev/null +++ b/persistence-modules/java-jpa-3/src/test/resources/logback.xml @@ -0,0 +1,15 @@ + + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - + %msg%n + + + + + + + + \ No newline at end of file diff --git a/persistence-modules/java-jpa/README.md b/persistence-modules/java-jpa/README.md index be4c7fb79a..9dd76b13d6 100644 --- a/persistence-modules/java-jpa/README.md +++ b/persistence-modules/java-jpa/README.md @@ -14,4 +14,4 @@ This module contains articles about the Java Persistence API (JPA) in Java. - [Defining JPA Entities](https://www.baeldung.com/jpa-entities) - [JPA @Basic Annotation](https://www.baeldung.com/jpa-basic-annotation) - [Persisting Enums in JPA](https://www.baeldung.com/jpa-persisting-enums-in-jpa) -- More articles: [[next -->]](/java-jpa-2) +- More articles: [[next -->]](/persistence-modules/java-jpa-2) diff --git a/persistence-modules/spring-boot-persistence-h2/src/main/resources/application-lazy-load-no-trans-off.properties b/persistence-modules/spring-boot-persistence-h2/src/main/resources/application-lazy-load-no-trans-off.properties index 1055806ecf..ca60ef3ce3 100644 --- a/persistence-modules/spring-boot-persistence-h2/src/main/resources/application-lazy-load-no-trans-off.properties +++ b/persistence-modules/spring-boot-persistence-h2/src/main/resources/application-lazy-load-no-trans-off.properties @@ -8,7 +8,7 @@ spring.h2.console.path=/h2-console spring.datasource.data=data-trans.sql logging.level.org.hibernate.SQL=INFO -logging.level.org.hibernate.type=TRACE +logging.level.org.hibernate.type=INFO spring.jpa.properties.hibernate.validator.apply_to_ddl=false spring.jpa.properties.hibernate.enable_lazy_load_no_trans=false spring.jpa.open-in-view=false \ No newline at end of file diff --git a/persistence-modules/spring-boot-persistence-h2/src/main/resources/application-lazy-load-no-trans-on.properties b/persistence-modules/spring-boot-persistence-h2/src/main/resources/application-lazy-load-no-trans-on.properties index 77aacf0d77..0469ea0dde 100644 --- a/persistence-modules/spring-boot-persistence-h2/src/main/resources/application-lazy-load-no-trans-on.properties +++ b/persistence-modules/spring-boot-persistence-h2/src/main/resources/application-lazy-load-no-trans-on.properties @@ -8,7 +8,7 @@ spring.h2.console.path=/h2-console spring.datasource.data=data-trans.sql logging.level.org.hibernate.SQL=INFO -logging.level.org.hibernate.type=TRACE +logging.level.org.hibernate.type=INFO spring.jpa.properties.hibernate.validator.apply_to_ddl=false spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true spring.jpa.open-in-view=false \ No newline at end of file diff --git a/persistence-modules/spring-boot-persistence/src/main/java/com/baeldung/springbootdatasourceconfig/application/entities/User.java b/persistence-modules/spring-boot-persistence/src/main/java/com/baeldung/springbootdatasourceconfig/application/entities/User.java index 518a11701f..84a9ae74ff 100644 --- a/persistence-modules/spring-boot-persistence/src/main/java/com/baeldung/springbootdatasourceconfig/application/entities/User.java +++ b/persistence-modules/spring-boot-persistence/src/main/java/com/baeldung/springbootdatasourceconfig/application/entities/User.java @@ -13,6 +13,7 @@ public class User { @Id @GeneratedValue(strategy = GenerationType.AUTO) private long id; + private long status; private String name; private String email; @@ -39,6 +40,14 @@ public class User { this.email = email; } + public void setStatus(long status) { + this.status = status; + } + + public long getStatus() { + return status; + } + @Override public String toString() { return "User{" + "id=" + id + ", name=" + name + ", email=" + email + '}'; diff --git a/persistence-modules/spring-boot-persistence/src/test/resources/application.properties b/persistence-modules/spring-boot-persistence/src/test/resources/application.properties index 3a6470c8dc..559522ddbc 100644 --- a/persistence-modules/spring-boot-persistence/src/test/resources/application.properties +++ b/persistence-modules/spring-boot-persistence/src/test/resources/application.properties @@ -12,5 +12,5 @@ hibernate.cache.use_second_level_cache=true hibernate.cache.use_query_cache=true hibernate.cache.region.factory_class=org.hibernate.cache.ehcache.EhCacheRegionFactory -spring.jpa.properties.hibernate.hbm2ddl.import_files=migrated_users.sql, import_books.sql +#spring.jpa.properties.hibernate.hbm2ddl.import_files=import_active_users.sql,import_inactive_users.sql spring.datasource.data=import_*_users.sql \ No newline at end of file diff --git a/persistence-modules/spring-data-arangodb/src/test/java/com/baeldung/arangodb/ArticleRepositoryIntegrationTest.java b/persistence-modules/spring-data-arangodb/src/test/java/com/baeldung/arangodb/ArticleRepositoryLiveTest.java similarity index 96% rename from persistence-modules/spring-data-arangodb/src/test/java/com/baeldung/arangodb/ArticleRepositoryIntegrationTest.java rename to persistence-modules/spring-data-arangodb/src/test/java/com/baeldung/arangodb/ArticleRepositoryLiveTest.java index 1d4258688a..35232766ab 100644 --- a/persistence-modules/spring-data-arangodb/src/test/java/com/baeldung/arangodb/ArticleRepositoryIntegrationTest.java +++ b/persistence-modules/spring-data-arangodb/src/test/java/com/baeldung/arangodb/ArticleRepositoryLiveTest.java @@ -16,8 +16,11 @@ import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; +/** + * ArangoDB server should be up and running for this test case to run successfully + */ @SpringBootTest -public class ArticleRepositoryIntegrationTest { +public class ArticleRepositoryLiveTest { @Autowired ArticleRepository articleRepository; From fae92b4fa6df692c5dac60c3f3fb817e357ca1d7 Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Sat, 21 Aug 2021 14:35:49 +0530 Subject: [PATCH 64/82] JAVA-3247 further changes to reduce logging build pass --- .../src/main/resources/schema.sql | 9 ++++++++- .../src/test/resources/application.properties | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/persistence-modules/spring-boot-persistence/src/main/resources/schema.sql b/persistence-modules/spring-boot-persistence/src/main/resources/schema.sql index 4cfc8a7927..296d319b33 100644 --- a/persistence-modules/spring-boot-persistence/src/main/resources/schema.sql +++ b/persistence-modules/spring-boot-persistence/src/main/resources/schema.sql @@ -1,5 +1,6 @@ drop table if exists USERS; drop table if exists country; +drop table if exists BOOK; create table USERS( ID int not null AUTO_INCREMENT, @@ -12,4 +13,10 @@ CREATE TABLE country ( id INTEGER NOT NULL AUTO_INCREMENT, name VARCHAR(128) NOT NULL, PRIMARY KEY (id) -); \ No newline at end of file +); + +create table BOOK( + ID int not null AUTO_INCREMENT, + NAME varchar(128) not null, + PRIMARY KEY ( ID ) +); diff --git a/persistence-modules/spring-boot-persistence/src/test/resources/application.properties b/persistence-modules/spring-boot-persistence/src/test/resources/application.properties index 559522ddbc..07101ca2f5 100644 --- a/persistence-modules/spring-boot-persistence/src/test/resources/application.properties +++ b/persistence-modules/spring-boot-persistence/src/test/resources/application.properties @@ -12,5 +12,5 @@ hibernate.cache.use_second_level_cache=true hibernate.cache.use_query_cache=true hibernate.cache.region.factory_class=org.hibernate.cache.ehcache.EhCacheRegionFactory -#spring.jpa.properties.hibernate.hbm2ddl.import_files=import_active_users.sql,import_inactive_users.sql +spring.jpa.properties.hibernate.hbm2ddl.import_files=import_books.sql spring.datasource.data=import_*_users.sql \ No newline at end of file From 5dfb39712d62767c74f81ad2c12f73a4ad2e1dc6 Mon Sep 17 00:00:00 2001 From: Kai Yuan Date: Sat, 21 Aug 2021 17:18:36 +0200 Subject: [PATCH 65/82] first commit (#11118) --- maven-modules/maven-surefire-plugin/pom.xml | 17 +++++++++++ .../runasingletest/TheFirstUnitTest.java | 14 +++++++++ .../runasingletest/TheSecondUnitTest.java | 30 +++++++++++++++++++ maven-modules/pom.xml | 3 +- 4 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 maven-modules/maven-surefire-plugin/pom.xml create mode 100644 maven-modules/maven-surefire-plugin/src/test/java/com/baeldung/runasingletest/TheFirstUnitTest.java create mode 100644 maven-modules/maven-surefire-plugin/src/test/java/com/baeldung/runasingletest/TheSecondUnitTest.java diff --git a/maven-modules/maven-surefire-plugin/pom.xml b/maven-modules/maven-surefire-plugin/pom.xml new file mode 100644 index 0000000000..903adf3c11 --- /dev/null +++ b/maven-modules/maven-surefire-plugin/pom.xml @@ -0,0 +1,17 @@ + + + 4.0.0 + maven-surefire-plugin + 0.0.1-SNAPSHOT + maven-surefire-plugin + jar + + com.baeldung + maven-modules + 0.0.1-SNAPSHOT + + + + diff --git a/maven-modules/maven-surefire-plugin/src/test/java/com/baeldung/runasingletest/TheFirstUnitTest.java b/maven-modules/maven-surefire-plugin/src/test/java/com/baeldung/runasingletest/TheFirstUnitTest.java new file mode 100644 index 0000000000..1e7fce885e --- /dev/null +++ b/maven-modules/maven-surefire-plugin/src/test/java/com/baeldung/runasingletest/TheFirstUnitTest.java @@ -0,0 +1,14 @@ +package com.baeldung.runasingletest; + +import org.junit.jupiter.api.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +class TheFirstUnitTest { + private static final Logger logger = LoggerFactory.getLogger(TheFirstUnitTest.class); + + @Test + void whenTestCase_thenPass() { + logger.info("Running a dummyTest"); + } +} diff --git a/maven-modules/maven-surefire-plugin/src/test/java/com/baeldung/runasingletest/TheSecondUnitTest.java b/maven-modules/maven-surefire-plugin/src/test/java/com/baeldung/runasingletest/TheSecondUnitTest.java new file mode 100644 index 0000000000..fd05751599 --- /dev/null +++ b/maven-modules/maven-surefire-plugin/src/test/java/com/baeldung/runasingletest/TheSecondUnitTest.java @@ -0,0 +1,30 @@ +package com.baeldung.runasingletest; + +import org.junit.jupiter.api.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +class TheSecondUnitTest { + + private static final Logger logger = LoggerFactory.getLogger(TheSecondUnitTest.class); + + @Test + void whenTestCase1_thenPrintTest1_1() { + logger.info("Running When Case1: test1_1"); + } + + @Test + void whenTestCase1_thenPrintTest1_2() { + logger.info("Running When Case1: test1_2"); + } + + @Test + void whenTestCase1_thenPrintTest1_3() { + logger.info("Running When Case1: test1_3"); + } + + @Test + void whenTestCase2_thenPrintTest2_1() { + logger.info("Running When Case2: test2_1"); + } +} diff --git a/maven-modules/pom.xml b/maven-modules/pom.xml index 5b4b567ae6..a0c45234d2 100644 --- a/maven-modules/pom.xml +++ b/maven-modules/pom.xml @@ -35,6 +35,7 @@ maven-builder-plugin host-maven-repo-example plugin-management + maven-surefire-plugin - \ No newline at end of file + From cf452d7add33fba456c75f5d496a1364690518c1 Mon Sep 17 00:00:00 2001 From: Anton Kudruk Date: Sat, 21 Aug 2021 19:09:19 +0300 Subject: [PATCH 66/82] Added JavaFX demo app for ListView CellFactory (#11133) * Added JavaFX demo app for ListView CellFactory * Moved to the common project --- .../baeldung/listview/ExampleController.java | 38 +++++++++++++++++++ .../main/java/com/baeldung/listview/Main.java | 28 ++++++++++++++ .../java/com/baeldung/listview/Person.java | 25 ++++++++++++ .../cellfactory/CheckboxCellFactory.java | 29 ++++++++++++++ .../cellfactory/PersonCellFactory.java | 23 +++++++++++ javafx/src/main/resources/example.fxml | 14 +++++++ 6 files changed, 157 insertions(+) create mode 100644 javafx/src/main/java/com/baeldung/listview/ExampleController.java create mode 100644 javafx/src/main/java/com/baeldung/listview/Main.java create mode 100644 javafx/src/main/java/com/baeldung/listview/Person.java create mode 100644 javafx/src/main/java/com/baeldung/listview/cellfactory/CheckboxCellFactory.java create mode 100644 javafx/src/main/java/com/baeldung/listview/cellfactory/PersonCellFactory.java create mode 100644 javafx/src/main/resources/example.fxml diff --git a/javafx/src/main/java/com/baeldung/listview/ExampleController.java b/javafx/src/main/java/com/baeldung/listview/ExampleController.java new file mode 100644 index 0000000000..c02fa68d2e --- /dev/null +++ b/javafx/src/main/java/com/baeldung/listview/ExampleController.java @@ -0,0 +1,38 @@ +package com.baeldung.listview; + +import com.baeldung.listview.cellfactory.CheckboxCellFactory; +import com.baeldung.listview.cellfactory.PersonCellFactory; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.control.ListView; + +import java.net.URL; +import java.util.ResourceBundle; + +public class ExampleController implements Initializable { + @FXML + private ListView listView; + + @Override + public void initialize(URL location, ResourceBundle resources) { + ObservableList wordsList = FXCollections.observableArrayList(); + wordsList.add(new Person("Isaac", "Newton")); + wordsList.add(new Person("Albert", "Einstein")); + wordsList.add(new Person("Ludwig", "Boltzmann")); + listView.setItems(wordsList); + } + + public void defaultButtonClick() { + listView.setCellFactory(null); + } + + public void cellFactoryButtonClick() { + listView.setCellFactory(new PersonCellFactory()); + } + + public void checkboxCellFactoryButtonClick() { + listView.setCellFactory(new CheckboxCellFactory()); + } +} diff --git a/javafx/src/main/java/com/baeldung/listview/Main.java b/javafx/src/main/java/com/baeldung/listview/Main.java new file mode 100644 index 0000000000..a067971758 --- /dev/null +++ b/javafx/src/main/java/com/baeldung/listview/Main.java @@ -0,0 +1,28 @@ +package com.baeldung.javafx.listview; + +import javafx.application.Application; +import javafx.fxml.FXMLLoader; +import javafx.scene.Parent; +import javafx.scene.Scene; +import javafx.stage.Stage; + +import java.net.URL; + +public class Main extends Application { + + public static void main(String args[]) { + launch(args); + } + + @Override + public void start(Stage primaryStage) throws Exception { + FXMLLoader loader = new FXMLLoader(); + URL xmlUrl = getClass().getResource("/example.fxml"); + loader.setLocation(xmlUrl); + Parent root = loader.load(); + + primaryStage.setTitle("List View Demo"); + primaryStage.setScene(new Scene(root)); + primaryStage.show(); + } +} diff --git a/javafx/src/main/java/com/baeldung/listview/Person.java b/javafx/src/main/java/com/baeldung/listview/Person.java new file mode 100644 index 0000000000..cdc0ab2dc8 --- /dev/null +++ b/javafx/src/main/java/com/baeldung/listview/Person.java @@ -0,0 +1,25 @@ +package com.baeldung.listview; + +public class Person { + + private final String firstName; + private final String lastName; + + public Person(String firstName, String lastName) { + this.firstName = firstName; + this.lastName = lastName; + } + + public String getFirstName() { + return firstName; + } + + public String getLastName() { + return lastName; + } + + @Override + public String toString() { + return firstName + " " + lastName; + } +} diff --git a/javafx/src/main/java/com/baeldung/listview/cellfactory/CheckboxCellFactory.java b/javafx/src/main/java/com/baeldung/listview/cellfactory/CheckboxCellFactory.java new file mode 100644 index 0000000000..522afcb76e --- /dev/null +++ b/javafx/src/main/java/com/baeldung/listview/cellfactory/CheckboxCellFactory.java @@ -0,0 +1,29 @@ +package com.baeldung.listview.cellfactory; + +import com.baeldung.listview.Person; +import javafx.scene.control.CheckBox; +import javafx.scene.control.ListCell; +import javafx.scene.control.ListView; +import javafx.util.Callback; + +public class CheckboxCellFactory implements Callback, ListCell> { + @Override + public ListCell call(ListView param) { + return new ListCell(){ + @Override + public void updateItem(Person person, boolean empty) { + super.updateItem(person, empty); + if (empty) { + setText(null); + setGraphic(null); + } else if (person != null) { + setText(null); + setGraphic(new CheckBox(person.getFirstName() + " " + person.getLastName())); + } else { + setText("null"); + setGraphic(null); + } + } + }; + } +} diff --git a/javafx/src/main/java/com/baeldung/listview/cellfactory/PersonCellFactory.java b/javafx/src/main/java/com/baeldung/listview/cellfactory/PersonCellFactory.java new file mode 100644 index 0000000000..57866b9ead --- /dev/null +++ b/javafx/src/main/java/com/baeldung/listview/cellfactory/PersonCellFactory.java @@ -0,0 +1,23 @@ +package com.baeldung.listview.cellfactory; + +import com.baeldung.listview.Person; +import javafx.scene.control.ListCell; +import javafx.scene.control.ListView; +import javafx.util.Callback; + +public class PersonCellFactory implements Callback, ListCell> { + @Override + public ListCell call(ListView param) { + return new ListCell(){ + @Override + public void updateItem(Person person, boolean empty) { + super.updateItem(person, empty); + if (empty || person == null) { + setText(null); + } else { + setText(person.getFirstName() + " " + person.getLastName()); + } + } + }; + } +} diff --git a/javafx/src/main/resources/example.fxml b/javafx/src/main/resources/example.fxml new file mode 100644 index 0000000000..c68df076d0 --- /dev/null +++ b/javafx/src/main/resources/example.fxml @@ -0,0 +1,14 @@ + + + + + + + + + +