formatting work

This commit is contained in:
eugenp 2017-01-29 16:01:58 +02:00
parent 1eb53d544c
commit 44bf48068f
44 changed files with 341 additions and 484 deletions

View File

@ -10,7 +10,7 @@ public interface PrivateInterface {
return "instance private"; return "instance private";
} }
public default void check(){ public default void check() {
String result = staticPrivate(); String result = staticPrivate();
if (!result.equals("static private")) if (!result.equals("static private"))
throw new AssertionError("Incorrect result for static private interface method"); throw new AssertionError("Incorrect result for static private interface method");

View File

@ -8,37 +8,36 @@ import java.time.Duration;
import java.time.Instant; import java.time.Instant;
import java.util.stream.Stream; import java.util.stream.Stream;
public class ProcessUtils { public class ProcessUtils {
public static String getClassPath(){ public static String getClassPath() {
String cp = System.getProperty("java.class.path"); String cp = System.getProperty("java.class.path");
System.out.println("ClassPath is "+cp); System.out.println("ClassPath is " + cp);
return cp; return cp;
} }
public static File getJavaCmd() throws IOException{ public static File getJavaCmd() throws IOException {
String javaHome = System.getProperty("java.home"); String javaHome = System.getProperty("java.home");
File javaCmd; File javaCmd;
if(System.getProperty("os.name").startsWith("Win")){ if (System.getProperty("os.name").startsWith("Win")) {
javaCmd = new File(javaHome, "bin/java.exe"); javaCmd = new File(javaHome, "bin/java.exe");
}else{ } else {
javaCmd = new File(javaHome, "bin/java"); javaCmd = new File(javaHome, "bin/java");
} }
if(javaCmd.canExecute()){ if (javaCmd.canExecute()) {
return javaCmd; return javaCmd;
}else{ } else {
throw new UnsupportedOperationException(javaCmd.getCanonicalPath() + " is not executable"); throw new UnsupportedOperationException(javaCmd.getCanonicalPath() + " is not executable");
} }
} }
public static String getMainClass(){ public static String getMainClass() {
return System.getProperty("sun.java.command"); return System.getProperty("sun.java.command");
} }
public static String getSystemProperties(){ public static String getSystemProperties() {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
System.getProperties().forEach((s1, s2) -> sb.append(s1 +" - "+ s2) ); System.getProperties().forEach((s1, s2) -> sb.append(s1 + " - " + s2));
return sb.toString(); return sb.toString();
} }
} }

View File

@ -8,7 +8,6 @@ public class ServiceMain {
ProcessHandle thisProcess = ProcessHandle.current(); ProcessHandle thisProcess = ProcessHandle.current();
long pid = thisProcess.getPid(); long pid = thisProcess.getPid();
Optional<String[]> opArgs = Optional.ofNullable(args); Optional<String[]> opArgs = Optional.ofNullable(args);
String procName = opArgs.map(str -> str.length > 0 ? str[0] : null).orElse(System.getProperty("sun.java.command")); String procName = opArgs.map(str -> str.length > 0 ? str[0] : null).orElse(System.getProperty("sun.java.command"));

View File

@ -19,10 +19,7 @@ public class Java9OptionalsStreamTest {
public void filterOutPresentOptionalsWithFilter() { public void filterOutPresentOptionalsWithFilter() {
assertEquals(4, listOfOptionals.size()); assertEquals(4, listOfOptionals.size());
List<String> filteredList = listOfOptionals.stream() List<String> filteredList = listOfOptionals.stream().filter(Optional::isPresent).map(Optional::get).collect(Collectors.toList());
.filter(Optional::isPresent)
.map(Optional::get)
.collect(Collectors.toList());
assertEquals(2, filteredList.size()); assertEquals(2, filteredList.size());
assertEquals("foo", filteredList.get(0)); assertEquals("foo", filteredList.get(0));
@ -33,9 +30,7 @@ public class Java9OptionalsStreamTest {
public void filterOutPresentOptionalsWithFlatMap() { public void filterOutPresentOptionalsWithFlatMap() {
assertEquals(4, listOfOptionals.size()); assertEquals(4, listOfOptionals.size());
List<String> filteredList = listOfOptionals.stream() List<String> filteredList = listOfOptionals.stream().flatMap(o -> o.isPresent() ? Stream.of(o.get()) : Stream.empty()).collect(Collectors.toList());
.flatMap(o -> o.isPresent() ? Stream.of(o.get()) : Stream.empty())
.collect(Collectors.toList());
assertEquals(2, filteredList.size()); assertEquals(2, filteredList.size());
assertEquals("foo", filteredList.get(0)); assertEquals("foo", filteredList.get(0));
@ -46,9 +41,7 @@ public class Java9OptionalsStreamTest {
public void filterOutPresentOptionalsWithFlatMap2() { public void filterOutPresentOptionalsWithFlatMap2() {
assertEquals(4, listOfOptionals.size()); assertEquals(4, listOfOptionals.size());
List<String> filteredList = listOfOptionals.stream() List<String> filteredList = listOfOptionals.stream().flatMap(o -> o.map(Stream::of).orElseGet(Stream::empty)).collect(Collectors.toList());
.flatMap(o -> o.map(Stream::of).orElseGet(Stream::empty))
.collect(Collectors.toList());
assertEquals(2, filteredList.size()); assertEquals(2, filteredList.size());
assertEquals("foo", filteredList.get(0)); assertEquals("foo", filteredList.get(0));
@ -59,9 +52,7 @@ public class Java9OptionalsStreamTest {
public void filterOutPresentOptionalsWithJava9() { public void filterOutPresentOptionalsWithJava9() {
assertEquals(4, listOfOptionals.size()); assertEquals(4, listOfOptionals.size());
List<String> filteredList = listOfOptionals.stream() List<String> filteredList = listOfOptionals.stream().flatMap(Optional::stream).collect(Collectors.toList());
.flatMap(Optional::stream)
.collect(Collectors.toList());
assertEquals(2, filteredList.size()); assertEquals(2, filteredList.size());
assertEquals("foo", filteredList.get(0)); assertEquals("foo", filteredList.get(0));

View File

@ -13,7 +13,6 @@ import org.junit.Test;
public class MultiResultionImageTest { public class MultiResultionImageTest {
@Test @Test
public void baseMultiResImageTest() { public void baseMultiResImageTest() {
int baseIndex = 1; int baseIndex = 1;
@ -38,10 +37,8 @@ public class MultiResultionImageTest {
return 8 * (i + 1); return 8 * (i + 1);
} }
private static BufferedImage createImage(int i) { private static BufferedImage createImage(int i) {
return new BufferedImage(getSize(i), getSize(i), return new BufferedImage(getSize(i), getSize(i), BufferedImage.TYPE_INT_RGB);
BufferedImage.TYPE_INT_RGB);
} }
} }

View File

@ -1,7 +1,5 @@
package com.baeldung.java9.httpclient; package com.baeldung.java9.httpclient;
import static java.net.HttpURLConnection.HTTP_OK; import static java.net.HttpURLConnection.HTTP_OK;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
@ -28,7 +26,7 @@ import org.junit.Test;
public class SimpleHttpRequestsTest { public class SimpleHttpRequestsTest {
private URI httpURI; private URI httpURI;
@Before @Before
public void init() throws URISyntaxException { public void init() throws URISyntaxException {
@ -37,24 +35,24 @@ public class SimpleHttpRequestsTest {
@Test @Test
public void quickGet() throws IOException, InterruptedException, URISyntaxException { public void quickGet() throws IOException, InterruptedException, URISyntaxException {
HttpRequest request = HttpRequest.create( httpURI ).GET(); HttpRequest request = HttpRequest.create(httpURI).GET();
HttpResponse response = request.response(); HttpResponse response = request.response();
int responseStatusCode = response.statusCode(); int responseStatusCode = response.statusCode();
String responseBody = response.body(HttpResponse.asString()); String responseBody = response.body(HttpResponse.asString());
assertTrue("Get response status code is bigger then 400", responseStatusCode < 400); assertTrue("Get response status code is bigger then 400", responseStatusCode < 400);
} }
@Test @Test
public void asynchronousGet() throws URISyntaxException, IOException, InterruptedException, ExecutionException{ public void asynchronousGet() throws URISyntaxException, IOException, InterruptedException, ExecutionException {
HttpRequest request = HttpRequest.create(httpURI).GET(); HttpRequest request = HttpRequest.create(httpURI).GET();
long before = System.currentTimeMillis(); long before = System.currentTimeMillis();
CompletableFuture<HttpResponse> futureResponse = request.responseAsync(); CompletableFuture<HttpResponse> futureResponse = request.responseAsync();
futureResponse.thenAccept( response -> { futureResponse.thenAccept(response -> {
String responseBody = response.body(HttpResponse.asString()); String responseBody = response.body(HttpResponse.asString());
}); });
HttpResponse resp = futureResponse.get(); HttpResponse resp = futureResponse.get();
HttpHeaders hs = resp.headers(); HttpHeaders hs = resp.headers();
assertTrue("There should be more then 1 header.", hs.map().size() >1); assertTrue("There should be more then 1 header.", hs.map().size() > 1);
} }
@Test @Test
@ -68,11 +66,11 @@ public class SimpleHttpRequestsTest {
} }
@Test @Test
public void configureHttpClient() throws NoSuchAlgorithmException, URISyntaxException, IOException, InterruptedException{ public void configureHttpClient() throws NoSuchAlgorithmException, URISyntaxException, IOException, InterruptedException {
CookieManager cManager = new CookieManager(); CookieManager cManager = new CookieManager();
cManager.setCookiePolicy(CookiePolicy.ACCEPT_ORIGINAL_SERVER); cManager.setCookiePolicy(CookiePolicy.ACCEPT_ORIGINAL_SERVER);
SSLParameters sslParam = new SSLParameters (new String[] { "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256" }, new String[] { "TLSv1.2" }); SSLParameters sslParam = new SSLParameters(new String[] { "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256" }, new String[] { "TLSv1.2" });
HttpClient.Builder hcBuilder = HttpClient.create(); HttpClient.Builder hcBuilder = HttpClient.create();
hcBuilder.cookieManager(cManager).sslContext(SSLContext.getDefault()).sslParameters(sslParam); hcBuilder.cookieManager(cManager).sslContext(SSLContext.getDefault()).sslParameters(sslParam);
@ -85,42 +83,44 @@ public class SimpleHttpRequestsTest {
assertTrue("HTTP return code", statusCode == HTTP_OK); assertTrue("HTTP return code", statusCode == HTTP_OK);
} }
SSLParameters getDefaultSSLParameters() throws NoSuchAlgorithmException{ SSLParameters getDefaultSSLParameters() throws NoSuchAlgorithmException {
SSLParameters sslP1 = SSLContext.getDefault().getSupportedSSLParameters(); SSLParameters sslP1 = SSLContext.getDefault().getSupportedSSLParameters();
String [] proto = sslP1.getApplicationProtocols(); String[] proto = sslP1.getApplicationProtocols();
String [] cifers = sslP1.getCipherSuites(); String[] cifers = sslP1.getCipherSuites();
System.out.println(printStringArr(proto)); System.out.println(printStringArr(proto));
System.out.println(printStringArr(cifers)); System.out.println(printStringArr(cifers));
return sslP1; return sslP1;
} }
String printStringArr(String ... args ){ String printStringArr(String... args) {
if(args == null){ if (args == null) {
return null; return null;
} }
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
for (String s : args){ for (String s : args) {
sb.append(s); sb.append(s);
sb.append("\n"); sb.append("\n");
} }
return sb.toString(); return sb.toString();
} }
String printHeaders(HttpHeaders h){ String printHeaders(HttpHeaders h) {
if(h == null){ if (h == null) {
return null; return null;
} }
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
Map<String, List<String>> hMap = h.map(); Map<String, List<String>> hMap = h.map();
for(String k : hMap.keySet()){ for (String k : hMap.keySet()) {
sb.append(k).append(":"); sb.append(k).append(":");
List<String> l = hMap.get(k); List<String> l = hMap.get(k);
if( l != null ){ if (l != null) {
l.forEach( s -> { sb.append(s).append(","); } ); l.forEach(s -> {
} sb.append(s).append(",");
sb.append("\n"); });
} }
return sb.toString(); sb.append("\n");
}
return sb.toString();
} }
} }

View File

@ -7,7 +7,7 @@ public class TryWithResourcesTest {
static int closeCount = 0; static int closeCount = 0;
static class MyAutoCloseable implements AutoCloseable{ static class MyAutoCloseable implements AutoCloseable {
final FinalWrapper finalWrapper = new FinalWrapper(); final FinalWrapper finalWrapper = new FinalWrapper();
public void close() { public void close() {
@ -57,7 +57,6 @@ public class TryWithResourcesTest {
assertEquals("Expected and Actual does not match", 5, closeCount); assertEquals("Expected and Actual does not match", 5, closeCount);
} }
static class CloseableException extends Exception implements AutoCloseable { static class CloseableException extends Exception implements AutoCloseable {
@Override @Override
public void close() { public void close() {
@ -66,5 +65,3 @@ public class TryWithResourcesTest {
} }
} }

View File

@ -13,15 +13,11 @@ public class CollectorImprovementTest {
public void givenList_whenSatifyPredicate_thenMapValueWithOccurences() { public void givenList_whenSatifyPredicate_thenMapValueWithOccurences() {
List<Integer> numbers = List.of(1, 2, 3, 5, 5); List<Integer> numbers = List.of(1, 2, 3, 5, 5);
Map<Integer, Long> result = numbers.stream() Map<Integer, Long> result = numbers.stream().filter(val -> val > 3).collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
.filter(val -> val > 3).collect(Collectors.groupingBy(
Function.identity(), Collectors.counting()));
assertEquals(1, result.size()); assertEquals(1, result.size());
result = numbers.stream().collect(Collectors.groupingBy( result = numbers.stream().collect(Collectors.groupingBy(Function.identity(), Collectors.filtering(val -> val > 3, Collectors.counting())));
Function.identity(), Collectors.filtering(val -> val > 3,
Collectors.counting())));
assertEquals(4, result.size()); assertEquals(4, result.size());
} }
@ -32,20 +28,13 @@ public class CollectorImprovementTest {
Blog blog2 = new Blog("2", "Disappointing", "Ok", "Could be better"); Blog blog2 = new Blog("2", "Disappointing", "Ok", "Could be better");
List<Blog> blogs = List.of(blog1, blog2); List<Blog> blogs = List.of(blog1, blog2);
Map<String, List<List<String>>> authorComments1 = Map<String, List<List<String>>> authorComments1 = blogs.stream().collect(Collectors.groupingBy(Blog::getAuthorName, Collectors.mapping(Blog::getComments, Collectors.toList())));
blogs.stream().collect(Collectors.groupingBy(
Blog::getAuthorName, Collectors.mapping(
Blog::getComments, Collectors.toList())));
assertEquals(2, authorComments1.size()); assertEquals(2, authorComments1.size());
assertEquals(2, authorComments1.get("1").get(0).size()); assertEquals(2, authorComments1.get("1").get(0).size());
assertEquals(3, authorComments1.get("2").get(0).size()); assertEquals(3, authorComments1.get("2").get(0).size());
Map<String, List<String>> authorComments2 = Map<String, List<String>> authorComments2 = blogs.stream().collect(Collectors.groupingBy(Blog::getAuthorName, Collectors.flatMapping(blog -> blog.getComments().stream(), Collectors.toList())));
blogs.stream().collect(Collectors.groupingBy(
Blog::getAuthorName, Collectors.flatMapping(
blog -> blog.getComments().stream(),
Collectors.toList())));
assertEquals(2, authorComments2.size()); assertEquals(2, authorComments2.size());
assertEquals(2, authorComments2.get("1").size()); assertEquals(2, authorComments2.get("1").size());
@ -54,7 +43,7 @@ public class CollectorImprovementTest {
} }
class Blog { class Blog {
private String authorName; private String authorName;
private List<String> comments; private List<String> comments;
public Blog(String authorName, String... comments) { public Blog(String authorName, String... comments) {

View File

@ -17,16 +17,11 @@ public class StreamFeaturesTest {
public static class TakeAndDropWhileTest { public static class TakeAndDropWhileTest {
public Stream<String> getStreamAfterTakeWhileOperation() { public Stream<String> getStreamAfterTakeWhileOperation() {
return Stream return Stream.iterate("", s -> s + "s").takeWhile(s -> s.length() < 10);
.iterate("", s -> s + "s")
.takeWhile(s -> s.length() < 10);
} }
public Stream<String> getStreamAfterDropWhileOperation() { public Stream<String> getStreamAfterDropWhileOperation() {
return Stream return Stream.iterate("", s -> s + "s").takeWhile(s -> s.length() < 10).dropWhile(s -> !s.contains("sssss"));
.iterate("", s -> s + "s")
.takeWhile(s -> s.length() < 10)
.dropWhile(s -> !s.contains("sssss"));
} }
@Test @Test
@ -72,25 +67,25 @@ public class StreamFeaturesTest {
} }
public static class OfNullableTest { public static class OfNullableTest {
private List<String> collection = Arrays.asList("A", "B", "C"); private List<String> collection = Arrays.asList("A", "B", "C");
private Map<String, Integer> map = new HashMap<>() {{ private Map<String, Integer> map = new HashMap<>() {
put("A", 10); {
put("C", 30); put("A", 10);
}}; put("C", 30);
}
};
private Stream<Integer> getStreamWithOfNullable() { private Stream<Integer> getStreamWithOfNullable() {
return collection.stream() return collection.stream().flatMap(s -> Stream.ofNullable(map.get(s)));
.flatMap(s -> Stream.ofNullable(map.get(s)));
} }
private Stream<Integer> getStream() { private Stream<Integer> getStream() {
return collection.stream() return collection.stream().flatMap(s -> {
.flatMap(s -> { Integer temp = map.get(s);
Integer temp = map.get(s); return temp != null ? Stream.of(temp) : Stream.empty();
return temp != null ? Stream.of(temp) : Stream.empty(); });
});
} }
private List<Integer> testOfNullableFrom(Stream<Integer> stream) { private List<Integer> testOfNullableFrom(Stream<Integer> stream) {
@ -107,10 +102,7 @@ public class StreamFeaturesTest {
@Test @Test
public void testOfNullable() { public void testOfNullable() {
assertEquals( assertEquals(testOfNullableFrom(getStream()), testOfNullableFrom(getStreamWithOfNullable()));
testOfNullableFrom(getStream()),
testOfNullableFrom(getStreamWithOfNullable())
);
} }

View File

@ -22,51 +22,50 @@ import static org.junit.Assert.assertTrue;
public class ProcessApi { public class ProcessApi {
@Before @Before
public void init() { public void init() {
} }
@Test @Test
public void processInfoExample()throws NoSuchAlgorithmException{ public void processInfoExample() throws NoSuchAlgorithmException {
ProcessHandle self = ProcessHandle.current(); ProcessHandle self = ProcessHandle.current();
long PID = self.getPid(); long PID = self.getPid();
ProcessHandle.Info procInfo = self.info(); ProcessHandle.Info procInfo = self.info();
Optional<String[]> args = procInfo.arguments(); Optional<String[]> args = procInfo.arguments();
Optional<String> cmd = procInfo.commandLine(); Optional<String> cmd = procInfo.commandLine();
Optional<Instant> startTime = procInfo.startInstant(); Optional<Instant> startTime = procInfo.startInstant();
Optional<Duration> cpuUsage = procInfo.totalCpuDuration(); Optional<Duration> cpuUsage = procInfo.totalCpuDuration();
waistCPU(); waistCPU();
System.out.println("Args "+ args); System.out.println("Args " + args);
System.out.println("Command " +cmd.orElse("EmptyCmd")); System.out.println("Command " + cmd.orElse("EmptyCmd"));
System.out.println("Start time: "+ startTime.get().toString()); System.out.println("Start time: " + startTime.get().toString());
System.out.println(cpuUsage.get().toMillis()); System.out.println(cpuUsage.get().toMillis());
Stream<ProcessHandle> allProc = ProcessHandle.current().children(); Stream<ProcessHandle> allProc = ProcessHandle.current().children();
allProc.forEach(p -> { allProc.forEach(p -> {
System.out.println("Proc "+ p.getPid()); System.out.println("Proc " + p.getPid());
}); });
} }
@Test @Test
public void createAndDestroyProcess() throws IOException, InterruptedException{ public void createAndDestroyProcess() throws IOException, InterruptedException {
int numberOfChildProcesses = 5; int numberOfChildProcesses = 5;
for(int i=0; i < numberOfChildProcesses; i++){ for (int i = 0; i < numberOfChildProcesses; i++) {
createNewJVM(ServiceMain.class, i).getPid(); createNewJVM(ServiceMain.class, i).getPid();
} }
Stream<ProcessHandle> childProc = ProcessHandle.current().children(); Stream<ProcessHandle> childProc = ProcessHandle.current().children();
assertEquals( childProc.count(), numberOfChildProcesses); assertEquals(childProc.count(), numberOfChildProcesses);
childProc = ProcessHandle.current().children(); childProc = ProcessHandle.current().children();
childProc.forEach(processHandle -> { childProc.forEach(processHandle -> {
assertTrue("Process "+ processHandle.getPid() +" should be alive!", processHandle.isAlive()); assertTrue("Process " + processHandle.getPid() + " should be alive!", processHandle.isAlive());
CompletableFuture<ProcessHandle> onProcExit = processHandle.onExit(); CompletableFuture<ProcessHandle> onProcExit = processHandle.onExit();
onProcExit.thenAccept(procHandle -> { onProcExit.thenAccept(procHandle -> {
System.out.println("Process with PID "+ procHandle.getPid() + " has stopped"); System.out.println("Process with PID " + procHandle.getPid() + " has stopped");
}); });
}); });
@ -74,38 +73,38 @@ public class ProcessApi {
childProc = ProcessHandle.current().children(); childProc = ProcessHandle.current().children();
childProc.forEach(procHandle -> { childProc.forEach(procHandle -> {
assertTrue("Could not kill process "+procHandle.getPid(), procHandle.destroy()); assertTrue("Could not kill process " + procHandle.getPid(), procHandle.destroy());
}); });
Thread.sleep(5000); Thread.sleep(5000);
childProc = ProcessHandle.current().children(); childProc = ProcessHandle.current().children();
childProc.forEach(procHandle -> { childProc.forEach(procHandle -> {
assertFalse("Process "+ procHandle.getPid() +" should not be alive!", procHandle.isAlive()); assertFalse("Process " + procHandle.getPid() + " should not be alive!", procHandle.isAlive());
}); });
} }
private Process createNewJVM(Class mainClass, int number) throws IOException{ private Process createNewJVM(Class mainClass, int number) throws IOException {
ArrayList<String> cmdParams = new ArrayList<String>(5); ArrayList<String> cmdParams = new ArrayList<String>(5);
cmdParams.add(ProcessUtils.getJavaCmd().getAbsolutePath()); cmdParams.add(ProcessUtils.getJavaCmd().getAbsolutePath());
cmdParams.add("-cp"); cmdParams.add("-cp");
cmdParams.add(ProcessUtils.getClassPath()); cmdParams.add(ProcessUtils.getClassPath());
cmdParams.add(mainClass.getName()); cmdParams.add(mainClass.getName());
cmdParams.add("Service "+ number); cmdParams.add("Service " + number);
ProcessBuilder myService = new ProcessBuilder(cmdParams); ProcessBuilder myService = new ProcessBuilder(cmdParams);
myService.inheritIO(); myService.inheritIO();
return myService.start(); return myService.start();
} }
private void waistCPU() throws NoSuchAlgorithmException{ private void waistCPU() throws NoSuchAlgorithmException {
ArrayList<Integer> randArr = new ArrayList<Integer>(4096); ArrayList<Integer> randArr = new ArrayList<Integer>(4096);
SecureRandom sr = SecureRandom.getInstanceStrong(); SecureRandom sr = SecureRandom.getInstanceStrong();
Duration somecpu = Duration.ofMillis(4200L); Duration somecpu = Duration.ofMillis(4200L);
Instant end = Instant.now().plus(somecpu); Instant end = Instant.now().plus(somecpu);
while (Instant.now().isBefore(end)) { while (Instant.now().isBefore(end)) {
//System.out.println(sr.nextInt()); // System.out.println(sr.nextInt());
randArr.add( sr.nextInt() ); randArr.add(sr.nextInt());
} }
} }

View File

@ -9,7 +9,8 @@ public class Person implements CouchbaseEntity {
private String name; private String name;
private String homeTown; private String homeTown;
Person() {} Person() {
}
public Person(Builder b) { public Person(Builder b) {
this.id = b.id; this.id = b.id;

View File

@ -13,9 +13,7 @@ import com.baeldung.couchbase.async.service.BucketService;
public class PersonCrudService extends AbstractCrudService<Person> { public class PersonCrudService extends AbstractCrudService<Person> {
@Autowired @Autowired
public PersonCrudService( public PersonCrudService(@Qualifier("TutorialBucketService") BucketService bucketService, PersonDocumentConverter converter) {
@Qualifier("TutorialBucketService") BucketService bucketService,
PersonDocumentConverter converter) {
super(bucketService, converter); super(bucketService, converter);
} }

View File

@ -11,10 +11,7 @@ public class PersonDocumentConverter implements JsonDocumentConverter<Person> {
@Override @Override
public JsonDocument toDocument(Person p) { public JsonDocument toDocument(Person p) {
JsonObject content = JsonObject.empty() JsonObject content = JsonObject.empty().put("type", "Person").put("name", p.getName()).put("homeTown", p.getHomeTown());
.put("type", "Person")
.put("name", p.getName())
.put("homeTown", p.getHomeTown());
return JsonDocument.create(p.getId(), content); return JsonDocument.create(p.getId(), content);
} }

View File

@ -19,10 +19,9 @@ public class RegistrationService {
} }
public Person findRegistrant(String id) { public Person findRegistrant(String id) {
try{ try {
return crud.read(id); return crud.read(id);
} } catch (CouchbaseException e) {
catch(CouchbaseException e) {
return crud.readFromReplica(id); return crud.readFromReplica(id);
} }
} }

View File

@ -24,4 +24,4 @@ public abstract class AbstractBucketService implements BucketService {
public Bucket getBucket() { public Bucket getBucket() {
return bucket; return bucket;
} }
} }

View File

@ -40,7 +40,7 @@ public abstract class AbstractCrudService<T extends CouchbaseEntity> implements
@Override @Override
public void create(T t) { public void create(T t) {
if(t.getId() == null) { if (t.getId() == null) {
t.setId(UUID.randomUUID().toString()); t.setId(UUID.randomUUID().toString());
} }
JsonDocument doc = converter.toDocument(t); JsonDocument doc = converter.toDocument(t);
@ -73,18 +73,15 @@ public abstract class AbstractCrudService<T extends CouchbaseEntity> implements
@Override @Override
public List<T> readBulk(Iterable<String> ids) { public List<T> readBulk(Iterable<String> ids) {
final AsyncBucket asyncBucket = bucket.async(); final AsyncBucket asyncBucket = bucket.async();
Observable<JsonDocument> asyncOperation = Observable Observable<JsonDocument> asyncOperation = Observable.from(ids).flatMap(new Func1<String, Observable<JsonDocument>>() {
.from(ids) public Observable<JsonDocument> call(String key) {
.flatMap(new Func1<String, Observable<JsonDocument>>() { return asyncBucket.get(key);
public Observable<JsonDocument> call(String key) { }
return asyncBucket.get(key); });
}
});
final List<T> items = new ArrayList<T>(); final List<T> items = new ArrayList<T>();
try { try {
asyncOperation.toBlocking() asyncOperation.toBlocking().forEach(new Action1<JsonDocument>() {
.forEach(new Action1<JsonDocument>() {
public void call(JsonDocument doc) { public void call(JsonDocument doc) {
T item = converter.fromDocument(doc); T item = converter.fromDocument(doc);
items.add(item); items.add(item);
@ -100,72 +97,42 @@ public abstract class AbstractCrudService<T extends CouchbaseEntity> implements
@Override @Override
public void createBulk(Iterable<T> items) { public void createBulk(Iterable<T> items) {
final AsyncBucket asyncBucket = bucket.async(); final AsyncBucket asyncBucket = bucket.async();
Observable Observable.from(items).flatMap(new Func1<T, Observable<JsonDocument>>() {
.from(items)
.flatMap(new Func1<T, Observable<JsonDocument>>() {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@Override @Override
public Observable<JsonDocument> call(final T t) { public Observable<JsonDocument> call(final T t) {
if(t.getId() == null) { if (t.getId() == null) {
t.setId(UUID.randomUUID().toString()); t.setId(UUID.randomUUID().toString());
} }
JsonDocument doc = converter.toDocument(t); JsonDocument doc = converter.toDocument(t);
return asyncBucket.insert(doc) return asyncBucket.insert(doc).retryWhen(RetryBuilder.anyOf(BackpressureException.class).delay(Delay.exponential(TimeUnit.MILLISECONDS, 100)).max(10).build());
.retryWhen(RetryBuilder
.anyOf(BackpressureException.class)
.delay(Delay.exponential(TimeUnit.MILLISECONDS, 100))
.max(10)
.build());
} }
}) }).last().toBlocking().single();
.last()
.toBlocking()
.single();
} }
@Override @Override
public void updateBulk(Iterable<T> items) { public void updateBulk(Iterable<T> items) {
final AsyncBucket asyncBucket = bucket.async(); final AsyncBucket asyncBucket = bucket.async();
Observable Observable.from(items).flatMap(new Func1<T, Observable<JsonDocument>>() {
.from(items)
.flatMap(new Func1<T, Observable<JsonDocument>>() {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@Override @Override
public Observable<JsonDocument> call(final T t) { public Observable<JsonDocument> call(final T t) {
JsonDocument doc = converter.toDocument(t); JsonDocument doc = converter.toDocument(t);
return asyncBucket.upsert(doc) return asyncBucket.upsert(doc).retryWhen(RetryBuilder.anyOf(BackpressureException.class).delay(Delay.exponential(TimeUnit.MILLISECONDS, 100)).max(10).build());
.retryWhen(RetryBuilder
.anyOf(BackpressureException.class)
.delay(Delay.exponential(TimeUnit.MILLISECONDS, 100))
.max(10)
.build());
} }
}) }).last().toBlocking().single();
.last()
.toBlocking()
.single();
} }
@Override @Override
public void deleteBulk(Iterable<String> ids) { public void deleteBulk(Iterable<String> ids) {
final AsyncBucket asyncBucket = bucket.async(); final AsyncBucket asyncBucket = bucket.async();
Observable Observable.from(ids).flatMap(new Func1<String, Observable<JsonDocument>>() {
.from(ids)
.flatMap(new Func1<String, Observable<JsonDocument>>() {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@Override @Override
public Observable<JsonDocument> call(String key) { public Observable<JsonDocument> call(String key) {
return asyncBucket.remove(key) return asyncBucket.remove(key).retryWhen(RetryBuilder.anyOf(BackpressureException.class).delay(Delay.exponential(TimeUnit.MILLISECONDS, 100)).max(10).build());
.retryWhen(RetryBuilder
.anyOf(BackpressureException.class)
.delay(Delay.exponential(TimeUnit.MILLISECONDS, 100))
.max(10)
.build());
} }
}) }).last().toBlocking().single();
.last()
.toBlocking()
.single();
} }
@Override @Override

View File

@ -27,7 +27,7 @@ public class ClusterServiceImpl implements ClusterService {
@Override @Override
synchronized public Bucket openBucket(String name, String password) { synchronized public Bucket openBucket(String name, String password) {
if(!buckets.containsKey(name)) { if (!buckets.containsKey(name)) {
Bucket bucket = cluster.openBucket(name, password); Bucket bucket = cluster.openBucket(name, password);
buckets.put(name, bucket); buckets.put(name, bucket);
} }

View File

@ -20,10 +20,7 @@ public class CodeSnippets {
} }
static Cluster loadClusterWithCustomEnvironment() { static Cluster loadClusterWithCustomEnvironment() {
CouchbaseEnvironment env = DefaultCouchbaseEnvironment.builder() CouchbaseEnvironment env = DefaultCouchbaseEnvironment.builder().connectTimeout(10000).kvTimeout(3000).build();
.connectTimeout(10000)
.kvTimeout(3000)
.build();
return CouchbaseCluster.create(env, "localhost"); return CouchbaseCluster.create(env, "localhost");
} }
@ -36,12 +33,7 @@ public class CodeSnippets {
} }
static JsonDocument insertExample(Bucket bucket) { static JsonDocument insertExample(Bucket bucket) {
JsonObject content = JsonObject.empty() JsonObject content = JsonObject.empty().put("name", "John Doe").put("type", "Person").put("email", "john.doe@mydomain.com").put("homeTown", "Chicago");
.put("name", "John Doe")
.put("type", "Person")
.put("email", "john.doe@mydomain.com")
.put("homeTown", "Chicago")
;
String id = UUID.randomUUID().toString(); String id = UUID.randomUUID().toString();
JsonDocument document = JsonDocument.create(id, content); JsonDocument document = JsonDocument.create(id, content);
JsonDocument inserted = bucket.insert(document); JsonDocument inserted = bucket.insert(document);
@ -70,12 +62,11 @@ public class CodeSnippets {
} }
static JsonDocument getFirstFromReplicaExample(Bucket bucket, String id) { static JsonDocument getFirstFromReplicaExample(Bucket bucket, String id) {
try{ try {
return bucket.get(id); return bucket.get(id);
} } catch (CouchbaseException e) {
catch(CouchbaseException e) {
List<JsonDocument> list = bucket.getFromReplica(id, ReplicaMode.FIRST); List<JsonDocument> list = bucket.getFromReplica(id, ReplicaMode.FIRST);
if(!list.isEmpty()) { if (!list.isEmpty()) {
return list.get(0); return list.get(0);
} }
} }
@ -85,8 +76,8 @@ public class CodeSnippets {
static JsonDocument getLatestReplicaVersion(Bucket bucket, String id) { static JsonDocument getLatestReplicaVersion(Bucket bucket, String id) {
long maxCasValue = -1; long maxCasValue = -1;
JsonDocument latest = null; JsonDocument latest = null;
for(JsonDocument replica : bucket.getFromReplica(id, ReplicaMode.ALL)) { for (JsonDocument replica : bucket.getFromReplica(id, ReplicaMode.ALL)) {
if(replica.cas() > maxCasValue) { if (replica.cas() > maxCasValue) {
latest = replica; latest = replica;
maxCasValue = replica.cas(); maxCasValue = replica.cas();
} }

View File

@ -7,7 +7,8 @@ public class Person {
private String name; private String name;
private String homeTown; private String homeTown;
Person() {} Person() {
}
public Person(Builder b) { public Person(Builder b) {
this.id = b.id; this.id = b.id;

View File

@ -32,7 +32,7 @@ public class PersonCrudService implements CrudService<Person> {
@Override @Override
public void create(Person person) { public void create(Person person) {
if(person.getId() == null) { if (person.getId() == null) {
person.setId(UUID.randomUUID().toString()); person.setId(UUID.randomUUID().toString());
} }
JsonDocument document = converter.toDocument(person); JsonDocument document = converter.toDocument(person);

View File

@ -11,10 +11,7 @@ public class PersonDocumentConverter implements JsonDocumentConverter<Person> {
@Override @Override
public JsonDocument toDocument(Person p) { public JsonDocument toDocument(Person p) {
JsonObject content = JsonObject.empty() JsonObject content = JsonObject.empty().put("type", "Person").put("name", p.getName()).put("homeTown", p.getHomeTown());
.put("type", "Person")
.put("name", p.getName())
.put("homeTown", p.getHomeTown());
return JsonDocument.create(p.getId(), content); return JsonDocument.create(p.getId(), content);
} }

View File

@ -19,10 +19,9 @@ public class RegistrationService {
} }
public Person findRegistrant(String id) { public Person findRegistrant(String id) {
try{ try {
return crud.read(id); return crud.read(id);
} } catch (CouchbaseException e) {
catch(CouchbaseException e) {
return crud.readFromReplica(id); return crud.readFromReplica(id);
} }
} }

View File

@ -38,7 +38,7 @@ public class ClusterServiceImpl implements ClusterService {
@Override @Override
synchronized public Bucket openBucket(String name, String password) { synchronized public Bucket openBucket(String name, String password) {
if(!buckets.containsKey(name)) { if (!buckets.containsKey(name)) {
Bucket bucket = cluster.openBucket(name, password); Bucket bucket = cluster.openBucket(name, password);
buckets.put(name, bucket); buckets.put(name, bucket);
} }
@ -48,9 +48,9 @@ public class ClusterServiceImpl implements ClusterService {
@Override @Override
public List<JsonDocument> getDocuments(Bucket bucket, Iterable<String> keys) { public List<JsonDocument> getDocuments(Bucket bucket, Iterable<String> keys) {
List<JsonDocument> docs = new ArrayList<>(); List<JsonDocument> docs = new ArrayList<>();
for(String key : keys) { for (String key : keys) {
JsonDocument doc = bucket.get(key); JsonDocument doc = bucket.get(key);
if(doc != null) { if (doc != null) {
docs.add(doc); docs.add(doc);
} }
} }
@ -59,18 +59,15 @@ public class ClusterServiceImpl implements ClusterService {
@Override @Override
public List<JsonDocument> getDocumentsAsync(final AsyncBucket asyncBucket, Iterable<String> keys) { public List<JsonDocument> getDocumentsAsync(final AsyncBucket asyncBucket, Iterable<String> keys) {
Observable<JsonDocument> asyncBulkGet = Observable Observable<JsonDocument> asyncBulkGet = Observable.from(keys).flatMap(new Func1<String, Observable<JsonDocument>>() {
.from(keys) public Observable<JsonDocument> call(String key) {
.flatMap(new Func1<String, Observable<JsonDocument>>() { return asyncBucket.get(key);
public Observable<JsonDocument> call(String key) { }
return asyncBucket.get(key); });
}
});
final List<JsonDocument> docs = new ArrayList<>(); final List<JsonDocument> docs = new ArrayList<>();
try { try {
asyncBulkGet.toBlocking() asyncBulkGet.toBlocking().forEach(new Action1<JsonDocument>() {
.forEach(new Action1<JsonDocument>() {
public void call(JsonDocument doc) { public void call(JsonDocument doc) {
docs.add(doc); docs.add(doc);
} }

View File

@ -22,7 +22,7 @@ public class TutorialBucketService implements BucketService {
bucket = couchbase.openBucket("baeldung-tutorial", ""); bucket = couchbase.openBucket("baeldung-tutorial", "");
} }
@Override @Override
public Bucket getBucket() { public Bucket getBucket() {
return bucket; return bucket;
} }

View File

@ -4,6 +4,6 @@ import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
@Configuration @Configuration
@ComponentScan(basePackages={"com.baeldung.couchbase.async"}) @ComponentScan(basePackages = { "com.baeldung.couchbase.async" })
public class AsyncIntegrationTestConfig { public class AsyncIntegrationTestConfig {
} }

View File

@ -42,57 +42,57 @@ public class PersonCrudServiceIntegrationTest extends AsyncIntegrationTest {
@Test @Test
public final void givenRandomPerson_whenCreate_thenPersonPersisted() { public final void givenRandomPerson_whenCreate_thenPersonPersisted() {
//create person // create person
Person person = randomPerson(); Person person = randomPerson();
personService.create(person); personService.create(person);
//check results // check results
assertNotNull(person.getId()); assertNotNull(person.getId());
assertNotNull(bucket.get(person.getId())); assertNotNull(bucket.get(person.getId()));
//cleanup // cleanup
bucket.remove(person.getId()); bucket.remove(person.getId());
} }
@Test @Test
public final void givenId_whenRead_thenReturnsPerson() { public final void givenId_whenRead_thenReturnsPerson() {
//create and insert person document // create and insert person document
String id = insertRandomPersonDocument().id(); String id = insertRandomPersonDocument().id();
//read person and check results // read person and check results
assertNotNull(personService.read(id)); assertNotNull(personService.read(id));
//cleanup // cleanup
bucket.remove(id); bucket.remove(id);
} }
@Test @Test
public final void givenNewHometown_whenUpdate_thenNewHometownPersisted() { public final void givenNewHometown_whenUpdate_thenNewHometownPersisted() {
//create and insert person document // create and insert person document
JsonDocument doc = insertRandomPersonDocument(); JsonDocument doc = insertRandomPersonDocument();
//update person // update person
Person expected = converter.fromDocument(doc); Person expected = converter.fromDocument(doc);
String updatedHomeTown = RandomStringUtils.randomAlphabetic(12); String updatedHomeTown = RandomStringUtils.randomAlphabetic(12);
expected.setHomeTown(updatedHomeTown); expected.setHomeTown(updatedHomeTown);
personService.update(expected); personService.update(expected);
//check results // check results
JsonDocument actual = bucket.get(expected.getId()); JsonDocument actual = bucket.get(expected.getId());
assertNotNull(actual); assertNotNull(actual);
assertNotNull(actual.content()); assertNotNull(actual.content());
assertEquals(expected.getHomeTown(), actual.content().getString("homeTown")); assertEquals(expected.getHomeTown(), actual.content().getString("homeTown"));
//cleanup // cleanup
bucket.remove(expected.getId()); bucket.remove(expected.getId());
} }
@Test @Test
public final void givenRandomPerson_whenDelete_thenPersonNotInBucket() { public final void givenRandomPerson_whenDelete_thenPersonNotInBucket() {
//create and insert person document // create and insert person document
String id = insertRandomPersonDocument().id(); String id = insertRandomPersonDocument().id();
//delete person and check results // delete person and check results
personService.delete(id); personService.delete(id);
assertNull(bucket.get(id)); assertNull(bucket.get(id));
} }
@ -101,21 +101,21 @@ public class PersonCrudServiceIntegrationTest extends AsyncIntegrationTest {
public final void givenIds_whenReadBulk_thenReturnsOnlyPersonsWithMatchingIds() { public final void givenIds_whenReadBulk_thenReturnsOnlyPersonsWithMatchingIds() {
List<String> ids = new ArrayList<>(); List<String> ids = new ArrayList<>();
//add some person documents // add some person documents
for(int i=0; i<5; i++) { for (int i = 0; i < 5; i++) {
ids.add(insertRandomPersonDocument().id()); ids.add(insertRandomPersonDocument().id());
} }
//perform bulk read // perform bulk read
List<Person> persons = personService.readBulk(ids); List<Person> persons = personService.readBulk(ids);
//check results // check results
for(Person person : persons) { for (Person person : persons) {
assertTrue(ids.contains(person.getId())); assertTrue(ids.contains(person.getId()));
} }
//cleanup // cleanup
for(String id : ids) { for (String id : ids) {
bucket.remove(id); bucket.remove(id);
} }
} }
@ -123,22 +123,22 @@ public class PersonCrudServiceIntegrationTest extends AsyncIntegrationTest {
@Test @Test
public final void givenPersons_whenInsertBulk_thenPersonsAreInserted() { public final void givenPersons_whenInsertBulk_thenPersonsAreInserted() {
//create some persons // create some persons
List<Person> persons = new ArrayList<>(); List<Person> persons = new ArrayList<>();
for(int i=0; i<5; i++) { for (int i = 0; i < 5; i++) {
persons.add(randomPerson()); persons.add(randomPerson());
} }
//perform bulk insert // perform bulk insert
personService.createBulk(persons); personService.createBulk(persons);
//check results // check results
for(Person person : persons) { for (Person person : persons) {
assertNotNull(bucket.get(person.getId())); assertNotNull(bucket.get(person.getId()));
} }
//cleanup // cleanup
for(Person person : persons) { for (Person person : persons) {
bucket.remove(person.getId()); bucket.remove(person.getId());
} }
} }
@ -148,34 +148,34 @@ public class PersonCrudServiceIntegrationTest extends AsyncIntegrationTest {
List<String> ids = new ArrayList<>(); List<String> ids = new ArrayList<>();
//add some person documents // add some person documents
for(int i=0; i<5; i++) { for (int i = 0; i < 5; i++) {
ids.add(insertRandomPersonDocument().id()); ids.add(insertRandomPersonDocument().id());
} }
//load persons from Couchbase // load persons from Couchbase
List<Person> persons = new ArrayList<>(); List<Person> persons = new ArrayList<>();
for(String id : ids) { for (String id : ids) {
persons.add(converter.fromDocument(bucket.get(id))); persons.add(converter.fromDocument(bucket.get(id)));
} }
//modify persons // modify persons
for(Person person : persons) { for (Person person : persons) {
person.setHomeTown(RandomStringUtils.randomAlphabetic(10)); person.setHomeTown(RandomStringUtils.randomAlphabetic(10));
} }
//perform bulk update // perform bulk update
personService.updateBulk(persons); personService.updateBulk(persons);
//check results // check results
for(Person person : persons) { for (Person person : persons) {
JsonDocument doc = bucket.get(person.getId()); JsonDocument doc = bucket.get(person.getId());
assertEquals(person.getName(), doc.content().getString("name")); assertEquals(person.getName(), doc.content().getString("name"));
assertEquals(person.getHomeTown(), doc.content().getString("homeTown")); assertEquals(person.getHomeTown(), doc.content().getString("homeTown"));
} }
//cleanup // cleanup
for(String id : ids) { for (String id : ids) {
bucket.remove(id); bucket.remove(id);
} }
} }
@ -185,16 +185,16 @@ public class PersonCrudServiceIntegrationTest extends AsyncIntegrationTest {
List<String> ids = new ArrayList<>(); List<String> ids = new ArrayList<>();
//add some person documents // add some person documents
for(int i=0; i<5; i++) { for (int i = 0; i < 5; i++) {
ids.add(insertRandomPersonDocument().id()); ids.add(insertRandomPersonDocument().id());
} }
//perform bulk delete // perform bulk delete
personService.deleteBulk(ids); personService.deleteBulk(ids);
//check results // check results
for(String id : ids) { for (String id : ids) {
assertNull(bucket.get(id)); assertNull(bucket.get(id));
} }
@ -207,17 +207,10 @@ public class PersonCrudServiceIntegrationTest extends AsyncIntegrationTest {
} }
private Person randomPerson() { private Person randomPerson() {
return Person.Builder.newInstance() return Person.Builder.newInstance().name(RandomStringUtils.randomAlphabetic(10)).homeTown(RandomStringUtils.randomAlphabetic(10)).build();
.name(RandomStringUtils.randomAlphabetic(10))
.homeTown(RandomStringUtils.randomAlphabetic(10))
.build();
} }
private Person randomPersonWithId() { private Person randomPersonWithId() {
return Person.Builder.newInstance() return Person.Builder.newInstance().id(UUID.randomUUID().toString()).name(RandomStringUtils.randomAlphabetic(10)).homeTown(RandomStringUtils.randomAlphabetic(10)).build();
.id(UUID.randomUUID().toString())
.name(RandomStringUtils.randomAlphabetic(10))
.homeTown(RandomStringUtils.randomAlphabetic(10))
.build();
} }
} }

View File

@ -4,6 +4,6 @@ import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
@Configuration @Configuration
@ComponentScan(basePackages={"com.baeldung.couchbase.spring"}) @ComponentScan(basePackages = { "com.baeldung.couchbase.spring" })
public class IntegrationTestConfig { public class IntegrationTestConfig {
} }

View File

@ -24,7 +24,7 @@ public class PersonCrudServiceIntegrationTest extends IntegrationTest {
@PostConstruct @PostConstruct
private void init() { private void init() {
clarkKent = personService.read(CLARK_KENT_ID); clarkKent = personService.read(CLARK_KENT_ID);
if(clarkKent == null) { if (clarkKent == null) {
clarkKent = buildClarkKent(); clarkKent = buildClarkKent();
personService.create(clarkKent); personService.create(clarkKent);
} }
@ -66,17 +66,10 @@ public class PersonCrudServiceIntegrationTest extends IntegrationTest {
} }
private Person buildClarkKent() { private Person buildClarkKent() {
return Person.Builder.newInstance() return Person.Builder.newInstance().id(CLARK_KENT_ID).name(CLARK_KENT).homeTown(SMALLVILLE).build();
.id(CLARK_KENT_ID)
.name(CLARK_KENT)
.homeTown(SMALLVILLE)
.build();
} }
private Person randomPerson() { private Person randomPerson() {
return Person.Builder.newInstance() return Person.Builder.newInstance().name(RandomStringUtils.randomAlphabetic(10)).homeTown(RandomStringUtils.randomAlphabetic(10)).build();
.name(RandomStringUtils.randomAlphabetic(10))
.homeTown(RandomStringUtils.randomAlphabetic(10))
.build();
} }
} }

View File

@ -35,9 +35,6 @@ public abstract class MemberRepository extends AbstractEntityRepository<Member,
public List<Member> findAllOrderedByNameWithQueryDSL() { public List<Member> findAllOrderedByNameWithQueryDSL() {
final QMember member = QMember.member; final QMember member = QMember.member;
return jpaQuery() return jpaQuery().from(member).orderBy(member.email.asc()).list(member);
.from(member)
.orderBy(member.email.asc())
.list(member);
} }
} }

View File

@ -64,7 +64,6 @@ public class MemberRegistration {
} }
} }
public void register(Member member) throws Exception { public void register(Member member) throws Exception {
log.info("Registering " + member.getName()); log.info("Registering " + member.getName());
validateMember(member); validateMember(member);

View File

@ -41,27 +41,13 @@ import org.junit.runner.RunWith;
public class MemberRegistrationTest { public class MemberRegistrationTest {
@Deployment @Deployment
public static Archive<?> createTestArchive() { public static Archive<?> createTestArchive() {
File[] files = Maven.resolver().loadPomFromFile("pom.xml") File[] files = Maven.resolver().loadPomFromFile("pom.xml").importRuntimeDependencies().resolve().withTransitivity().asFile();
.importRuntimeDependencies().resolve().withTransitivity().asFile();
return ShrinkWrap.create(WebArchive.class, "test.war") return ShrinkWrap.create(WebArchive.class, "test.war")
.addClasses( .addClasses(EntityManagerProducer.class, Member.class, MemberRegistration.class, MemberRepository.class, Resources.class, QueryDslRepositoryExtension.class, QueryDslSupport.class, SecondaryPersistenceUnit.class,
EntityManagerProducer.class, SecondaryEntityManagerProducer.class, SecondaryEntityManagerResolver.class)
Member.class, .addAsResource("META-INF/test-persistence.xml", "META-INF/persistence.xml").addAsResource("META-INF/apache-deltaspike.properties").addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml").addAsWebInfResource("test-ds.xml")
MemberRegistration.class, .addAsWebInfResource("test-secondary-ds.xml").addAsLibraries(files);
MemberRepository.class,
Resources.class,
QueryDslRepositoryExtension.class,
QueryDslSupport.class,
SecondaryPersistenceUnit.class,
SecondaryEntityManagerProducer.class,
SecondaryEntityManagerResolver.class)
.addAsResource("META-INF/test-persistence.xml", "META-INF/persistence.xml")
.addAsResource("META-INF/apache-deltaspike.properties")
.addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml")
.addAsWebInfResource("test-ds.xml")
.addAsWebInfResource("test-secondary-ds.xml")
.addAsLibraries(files);
} }
@Inject @Inject

View File

@ -7,7 +7,7 @@ import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication @SpringBootApplication
@EnableEurekaServer @EnableEurekaServer
public class DiscoveryApplication { public class DiscoveryApplication {
public static void main(String[] args) { public static void main(String[] args) {
SpringApplication.run(DiscoveryApplication.class, args); SpringApplication.run(DiscoveryApplication.class, args);
} }
} }

View File

@ -16,50 +16,29 @@ import org.springframework.security.config.http.SessionCreationPolicy;
public class SecurityConfig extends WebSecurityConfigurerAdapter { public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired @Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception{ public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication().withUser("discUser").password("discPassword").roles("SYSTEM"); auth.inMemoryAuthentication().withUser("discUser").password("discPassword").roles("SYSTEM");
} }
@Override @Override
protected void configure(HttpSecurity http) throws Exception { protected void configure(HttpSecurity http) throws Exception {
http.sessionManagement() http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.ALWAYS).and().requestMatchers().antMatchers("/eureka/**").and().authorizeRequests().antMatchers("/eureka/**").hasRole("SYSTEM").anyRequest().denyAll().and().httpBasic().and().csrf()
.sessionCreationPolicy(SessionCreationPolicy.ALWAYS) .disable();
.and()
.requestMatchers()
.antMatchers("/eureka/**")
.and()
.authorizeRequests()
.antMatchers("/eureka/**").hasRole("SYSTEM")
.anyRequest().denyAll()
.and()
.httpBasic()
.and()
.csrf()
.disable();
} }
@Configuration @Configuration
//no order tag means this is the last security filter to be evaluated // no order tag means this is the last security filter to be evaluated
public static class AdminSecurityConfig extends WebSecurityConfigurerAdapter { public static class AdminSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { @Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication(); auth.inMemoryAuthentication();
} }
@Override protected void configure(HttpSecurity http) throws Exception { @Override
http protected void configure(HttpSecurity http) throws Exception {
.sessionManagement() http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.NEVER).and().httpBasic().disable().authorizeRequests().antMatchers(HttpMethod.GET, "/").hasRole("ADMIN").antMatchers("/info", "/health").authenticated().anyRequest().denyAll()
.sessionCreationPolicy(SessionCreationPolicy.NEVER) .and().csrf().disable();
.and()
.httpBasic()
.disable()
.authorizeRequests()
.antMatchers(HttpMethod.GET, "/").hasRole("ADMIN")
.antMatchers("/info","/health").authenticated()
.anyRequest().denyAll()
.and()
.csrf()
.disable();
} }
} }
} }