rest with spark java (#1028)
This commit is contained in:
parent
f7236b301b
commit
7ba5cfb314
|
@ -0,0 +1,38 @@
|
|||
<?xml version="1.0"?>
|
||||
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>com.baeldung</groupId>
|
||||
<artifactId>parent-modules</artifactId>
|
||||
<version>1.0.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<groupId>com.baeldung</groupId>
|
||||
<artifactId>rest-with-spark-java</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<name>rest-with-spark-java</name>
|
||||
<url>http://maven.apache.org</url>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>3.8.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.sparkjava</groupId>
|
||||
<artifactId>spark-core</artifactId>
|
||||
<version>2.5.4</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-core</artifactId>
|
||||
<version>2.8.6</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-databind</artifactId>
|
||||
<version>2.8.6</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
|
@ -0,0 +1,50 @@
|
|||
package com.baeldung;
|
||||
|
||||
import static spark.Spark.after;
|
||||
import static spark.Spark.before;
|
||||
import static spark.Spark.delete;
|
||||
import static spark.Spark.get;
|
||||
import static spark.Spark.post;
|
||||
import static spark.Spark.port;
|
||||
|
||||
import com.baeldung.domain.Book;
|
||||
import com.baeldung.service.LibraryService;
|
||||
|
||||
public class Router {
|
||||
|
||||
public static void main( String[] args ){
|
||||
|
||||
port(8080);
|
||||
|
||||
before((request, response) -> {
|
||||
|
||||
//do some filtering stuff
|
||||
|
||||
});
|
||||
|
||||
after((request, response) -> {
|
||||
response.type("application/json");
|
||||
});
|
||||
|
||||
get("ListOfBooks", (request, response) -> {
|
||||
return LibraryService.view();
|
||||
});
|
||||
|
||||
get("SearchBook/:title", (request, response) -> {
|
||||
return LibraryService.view(request.params("title"));
|
||||
});
|
||||
|
||||
post("AddBook/:title/:author/:publisher", (request, response) -> {
|
||||
Book book = new Book();
|
||||
book.setTitle(request.params("title"));
|
||||
book.setAuthor(request.params("author"));
|
||||
book.setPublisher(request.params("publisher"));
|
||||
return LibraryService.add(book);
|
||||
});
|
||||
|
||||
delete("DeleteBook/:title", (request, response) -> {
|
||||
return LibraryService.delete(request.params("title"));
|
||||
});
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,52 @@
|
|||
package com.baeldung.domain;
|
||||
|
||||
public class Book {
|
||||
|
||||
private String title;
|
||||
private String author;
|
||||
private String publisher;
|
||||
|
||||
public Book() {}
|
||||
|
||||
public Book(String title, String author, String publisher) {
|
||||
super();
|
||||
this.title = title;
|
||||
this.author = author;
|
||||
this.publisher = publisher;
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return title;
|
||||
}
|
||||
public void setTitle(String title) {
|
||||
this.title = title;
|
||||
}
|
||||
public String getAuthor() {
|
||||
return author;
|
||||
}
|
||||
|
||||
public void setAuthor(String author) {
|
||||
this.author = author;
|
||||
}
|
||||
public String getPublisher() {
|
||||
return publisher;
|
||||
}
|
||||
public void setPublisher(String publisher) {
|
||||
this.publisher = publisher;
|
||||
}
|
||||
|
||||
protected boolean canEqual(Object other) {
|
||||
return other instanceof Book;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (o == this) return true;
|
||||
if (!(o instanceof Book)) return false;
|
||||
Book other = (Book) o;
|
||||
if (!other.canEqual((Object)this)) return false;
|
||||
if (this.getTitle() == null ? other.getTitle() != null : !this.getTitle().equals(other.getTitle())) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
package com.baeldung.service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.baeldung.domain.Book;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.ObjectWriter;
|
||||
|
||||
public class LibraryService {
|
||||
|
||||
private static ObjectWriter mapper = new ObjectMapper().writer().withDefaultPrettyPrinter();
|
||||
private static Map<String, Book> library = new HashMap<String,Book>();
|
||||
|
||||
public static String view() throws JsonProcessingException {
|
||||
List<Book> books = new ArrayList<Book>();
|
||||
library.forEach((key, value) -> {
|
||||
books.add(value);
|
||||
});
|
||||
return mapper.writeValueAsString(books);
|
||||
}
|
||||
|
||||
public static String view(String title) throws JsonProcessingException {
|
||||
return mapper.writeValueAsString(library.get(title));
|
||||
}
|
||||
|
||||
public static String add(Book book) throws JsonProcessingException {
|
||||
library.put(book.getTitle(), book);
|
||||
return mapper.writeValueAsString(book);
|
||||
}
|
||||
|
||||
public static String delete(String title) throws JsonProcessingException {
|
||||
Book deletedBook = library.remove(title);
|
||||
return mapper.writeValueAsString(deletedBook);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,148 @@
|
|||
package com.baeldung;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.baeldung.domain.Book;
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
|
||||
import junit.framework.Test;
|
||||
import junit.framework.TestCase;
|
||||
import junit.framework.TestSuite;
|
||||
|
||||
public class AppTest extends TestCase {
|
||||
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
|
||||
public AppTest( String testName ) {
|
||||
super( testName );
|
||||
}
|
||||
|
||||
public static Test suite() {
|
||||
return new TestSuite( AppTest.class );
|
||||
}
|
||||
|
||||
public void testApp() throws IOException, ClassNotFoundException {
|
||||
|
||||
URL url;
|
||||
HttpURLConnection conn;
|
||||
BufferedReader br;
|
||||
String output;
|
||||
StringBuffer resp;
|
||||
Book book;
|
||||
Book temp;
|
||||
|
||||
url = new URL("http://localhost:8080/AddBook/Odessy/YannMartel/GreenLeaves");
|
||||
conn = (HttpURLConnection) url.openConnection();
|
||||
conn.setRequestMethod("POST");
|
||||
conn.getContent();
|
||||
br = new BufferedReader(new InputStreamReader(
|
||||
(conn.getInputStream())));
|
||||
resp = new StringBuffer();
|
||||
|
||||
while ((output = br.readLine()) != null) {
|
||||
resp.append(output);
|
||||
}
|
||||
|
||||
book = mapper.readValue(resp.toString(), Book.class);
|
||||
temp = new Book("Odessy","YannMartel","GreenLeaves");
|
||||
|
||||
assertEquals(book, temp);
|
||||
|
||||
url = new URL("http://localhost:8080/AddBook/Twilight/StephenieMeyer/LittleBrown");
|
||||
conn = (HttpURLConnection) url.openConnection();
|
||||
conn.setRequestMethod("POST");
|
||||
br = new BufferedReader(new InputStreamReader(
|
||||
(conn.getInputStream())));
|
||||
resp = new StringBuffer();
|
||||
|
||||
while ((output = br.readLine()) != null) {
|
||||
resp.append(output);
|
||||
}
|
||||
|
||||
book = mapper.readValue(resp.toString(), Book.class);
|
||||
temp = new Book("Twilight","StephenieMeyer","LittleBrown");
|
||||
|
||||
assertEquals(book, temp);
|
||||
|
||||
url = new URL("http://localhost:8080/ListOfBooks");
|
||||
conn = (HttpURLConnection) url.openConnection();
|
||||
conn.setRequestMethod("GET");
|
||||
br = new BufferedReader(new InputStreamReader(
|
||||
(conn.getInputStream())));
|
||||
resp = new StringBuffer();
|
||||
|
||||
while ((output = br.readLine()) != null) {
|
||||
resp.append(output);
|
||||
}
|
||||
|
||||
List<Book> books = new ArrayList<Book>();
|
||||
|
||||
books.add(new Book("Odessy","YannMartel","GreenLeaves"));
|
||||
books.add(new Book("Twilight","StephenieMeyer","LittleBrown"));
|
||||
|
||||
List<Book> listOfBooks = mapper.readValue(resp.toString(), new TypeReference<List<Book>>(){});
|
||||
|
||||
assertEquals(books, listOfBooks);
|
||||
|
||||
url = new URL("http://localhost:8080/SearchBook/Twilight");
|
||||
conn = (HttpURLConnection) url.openConnection();
|
||||
conn.setRequestMethod("GET");
|
||||
br = new BufferedReader(new InputStreamReader(
|
||||
(conn.getInputStream())));
|
||||
resp = new StringBuffer();
|
||||
|
||||
while ((output = br.readLine()) != null) {
|
||||
resp.append(output);
|
||||
}
|
||||
|
||||
book = mapper.readValue(resp.toString(), Book.class);
|
||||
temp = new Book("Twilight","StephenieMeyer","LittleBrown");
|
||||
|
||||
assertEquals(book, temp);
|
||||
|
||||
url = new URL("http://localhost:8080/DeleteBook/Twilight");
|
||||
conn = (HttpURLConnection) url.openConnection();
|
||||
conn.setRequestMethod("DELETE");
|
||||
br = new BufferedReader(new InputStreamReader(
|
||||
(conn.getInputStream())));
|
||||
resp = new StringBuffer();
|
||||
|
||||
while ((output = br.readLine()) != null) {
|
||||
resp.append(output);
|
||||
}
|
||||
|
||||
book = mapper.readValue(resp.toString(), Book.class);
|
||||
temp = new Book("Twilight","StephenieMeyer","LittleBrown");
|
||||
|
||||
assertEquals(book, temp);
|
||||
|
||||
url = new URL("http://localhost:8080/ListOfBooks");
|
||||
conn = (HttpURLConnection) url.openConnection();
|
||||
conn.setRequestMethod("GET");
|
||||
br = new BufferedReader(new InputStreamReader(
|
||||
(conn.getInputStream())));
|
||||
resp = new StringBuffer();
|
||||
|
||||
while ((output = br.readLine()) != null) {
|
||||
resp.append(output);
|
||||
}
|
||||
|
||||
books = new ArrayList<Book>();
|
||||
|
||||
books.add(new Book("Odessy","YannMartel","GreenLeaves"));
|
||||
listOfBooks = mapper.readValue(resp.toString(), new TypeReference<List<Book>>(){});
|
||||
|
||||
assertEquals(books, listOfBooks);
|
||||
|
||||
conn.disconnect();
|
||||
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue