From 11b1cd3edd5e0a399b5e5c8fb7ebc3a53e69ba0f Mon Sep 17 00:00:00 2001 From: Egima profile Date: Sun, 4 Dec 2016 14:30:28 +0300 Subject: [PATCH] fixed optional (#877) * made changes to java reflection * removed redundant method makeSound in Animal abstract class * added project for play-framework article * added project for regex * changed regex project from own model to core-java * added project for routing in play * made changes to regex project * refactored code for REST API with Play project * refactored student store indexing to zero base * added unit tests, removed bad names * added NIO Selector project under core-java module * requested changes made * added project for nio2 * standardized exception based tests * fixed exception based tests * removed redundant files * added network interface project * used UUID other than timestamps * fixed network interface tests * removed filetest change * made changes to NIO2 FileTest names * added project for asyncronous channel apis * added project for NIO2 advanced filesystems APIS * merge conflicts * merged changes to asyncfiletest with future get API * removed while loops from async client and server * added project for java8 optional * fixed merge conflicts in spring-core * fixed optional --- .../java/nio2/async/AsyncEchoClient.java | 2 +- .../java/nio2/async/AsyncEchoServer2.java | 2 +- .../java/nio2/async/AsyncEchoTest.java | 89 ++++++++++++++----- .../baeldung/java8/optional/OptionalTest.java | 17 ++-- 4 files changed, 75 insertions(+), 35 deletions(-) diff --git a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoClient.java b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoClient.java index 227750047a..da586706a2 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoClient.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoClient.java @@ -83,4 +83,4 @@ public class AsyncEchoClient { } } -} +} \ No newline at end of file diff --git a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer2.java b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer2.java index 03ce233ce9..8a7174ae18 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer2.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoServer2.java @@ -97,4 +97,4 @@ public class AsyncEchoServer2 { return builder.start(); } -} +} \ No newline at end of file diff --git a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoTest.java b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoTest.java index 93cb3e1eb6..579301c5f9 100644 --- a/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoTest.java +++ b/core-java/src/test/java/com/baeldung/java/nio2/async/AsyncEchoTest.java @@ -1,36 +1,77 @@ package com.baeldung.java.nio2.async; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - +import java.io.File; import java.io.IOException; +import java.net.InetSocketAddress; +import java.nio.ByteBuffer; +import java.nio.channels.AsynchronousServerSocketChannel; +import java.nio.channels.AsynchronousSocketChannel; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Future; -import static org.junit.Assert.assertEquals; +public class AsyncEchoServer { + private AsynchronousServerSocketChannel serverChannel; + private Future acceptResult; + private AsynchronousSocketChannel clientChannel; -public class AsyncEchoTest { - - Process server; - AsyncEchoClient client; - - @Before - public void setup() throws IOException, InterruptedException { - server = AsyncEchoServer2.start(); - client = AsyncEchoClient.getInstance(); + public AsyncEchoServer() { + try { + serverChannel = AsynchronousServerSocketChannel.open(); + InetSocketAddress hostAddress = new InetSocketAddress("localhost", 4999); + serverChannel.bind(hostAddress); + acceptResult = serverChannel.accept(); + } catch (IOException e) { + e.printStackTrace(); + } } - @Test - public void givenServerClient_whenServerEchosMessage_thenCorrect() throws Exception { - String resp1 = client.sendMessage("hello"); - String resp2 = client.sendMessage("world"); - assertEquals("hello", resp1); - assertEquals("world", resp2); + public void runServer() { + try { + clientChannel = acceptResult.get(); + if ((clientChannel != null) && (clientChannel.isOpen())) { + while (true) { + + ByteBuffer buffer = ByteBuffer.allocate(32); + Future readResult = clientChannel.read(buffer); + + //do other things as operation continues in background + readResult.get(); + + buffer.flip(); + String message = new String(buffer.array()).trim(); + if (message.equals("bye")) { + break; // while loop + } + buffer = ByteBuffer.wrap(new String(message).getBytes()); + Future writeResult = clientChannel.write(buffer); + //run other code + writeResult.get(); + buffer.clear(); + + } // while() + + clientChannel.close(); + serverChannel.close(); + + } + } catch (InterruptedException | ExecutionException | IOException e) { + e.printStackTrace(); + } + } - @After - public void teardown() throws IOException { - server.destroy(); - client.stop(); + public static void main(String[] args) { + AsyncEchoServer server = new AsyncEchoServer(); + server.runServer(); } + public static Process start() throws IOException, InterruptedException { + String javaHome = System.getProperty("java.home"); + String javaBin = javaHome + File.separator + "bin" + File.separator + "java"; + String classpath = System.getProperty("java.class.path"); + String className = AsyncEchoServer.class.getCanonicalName(); + ProcessBuilder builder = new ProcessBuilder(javaBin, "-cp", classpath, className); + + return builder.start(); + } } diff --git a/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java b/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java index cd092fdd70..e292021731 100644 --- a/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java +++ b/core-java/src/test/java/com/baeldung/java8/optional/OptionalTest.java @@ -8,7 +8,6 @@ import java.util.Arrays; import java.util.List; import java.util.NoSuchElementException; import java.util.Optional; -import com.baeldung.java_8_features.Person; import org.junit.Test; @@ -102,7 +101,7 @@ public class OptionalTest { List companyNames = Arrays.asList("paypal", "oracle", "", "microsoft", "", "apple"); Optional> listOptional = Optional.of(companyNames); - int size = listOptional.map(list -> list.size()).get(); + int size = listOptional.map(List::size).orElse(0); assertEquals(6, size); } @@ -111,7 +110,7 @@ public class OptionalTest { String name = "baeldung"; Optional nameOptional = Optional.of(name); - int len = nameOptional.map(s -> s.length()).get(); + int len = nameOptional.map(String::length).orElse(0); assertEquals(8, len); } @@ -122,7 +121,7 @@ public class OptionalTest { boolean correctPassword = passOpt.filter(pass -> pass.equals("password")).isPresent(); assertFalse(correctPassword); - correctPassword = passOpt.map(pass -> pass.trim()).filter(pass -> pass.equals("password")).isPresent(); + correctPassword = passOpt.map(String::trim).filter(pass -> pass.equals("password")).isPresent(); assertTrue(correctPassword); } @@ -132,12 +131,12 @@ public class OptionalTest { Person person = new Person("john", 26); Optional personOptional = Optional.of(person); - Optional> nameOptionalWrapper = personOptional.map(p -> p.getName()); - Optional nameOptional = nameOptionalWrapper.get(); - String name1 = nameOptional.get(); + Optional> nameOptionalWrapper = personOptional.map(Person::getName); + Optional nameOptional = nameOptionalWrapper.orElseThrow(IllegalArgumentException::new); + String name1 = nameOptional.orElseThrow(IllegalArgumentException::new); assertEquals("john", name1); - String name = personOptional.flatMap(p -> p.getName()).get(); + String name = personOptional.flatMap(Person::getName).orElseThrow(IllegalArgumentException::new); assertEquals("john", name); } @@ -147,7 +146,7 @@ public class OptionalTest { person.setPassword("password"); Optional personOptional = Optional.of(person); - String password = personOptional.flatMap(p -> p.getPassword()).filter(cleanPass -> cleanPass.equals("password")).get(); + String password = personOptional.flatMap(Person::getPassword).filter(cleanPass -> cleanPass.equals("password")).orElseThrow(IllegalArgumentException::new); assertEquals("password", password); }