forked from eugenp/tutorials
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* initial commit * change path value * change path value * clean * model to json mapper * Model to Json mapper * json to model * rename * clean * clean * Open Liberty runtime * clean * OpenLiberty Config File * OpenLiberty maven plugin * clean * clean * clean * clean
- Loading branch information
1 parent
b89b1ca
commit d172168
Showing
10 changed files
with
452 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,87 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
xmlns="http://maven.apache.org/POM/4.0.0" | ||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||
<modelVersion>4.0.0</modelVersion> | ||
|
||
<groupId>com.baeldung</groupId> | ||
<artifactId>microprofile</artifactId> | ||
<version>1.0-SNAPSHOT</version> | ||
<packaging>war</packaging> | ||
|
||
<properties> | ||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | ||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> | ||
<maven.compiler.source>1.8</maven.compiler.source> | ||
<maven.compiler.target>1.8</maven.compiler.target> | ||
<app.name>library</app.name> | ||
<package.file>${project.build.directory}/${app.name}-service.jar</package.file> | ||
<packaging.type>runnable</packaging.type> | ||
</properties> | ||
|
||
<dependencies> | ||
<dependency> | ||
<groupId>org.eclipse.microprofile</groupId> | ||
<artifactId>microprofile</artifactId> | ||
<version>1.2</version> | ||
<scope>provided</scope> | ||
<type>pom</type> | ||
</dependency> | ||
</dependencies> | ||
|
||
<build> | ||
<plugins> | ||
<plugin> | ||
<artifactId>maven-war-plugin</artifactId> | ||
<configuration> | ||
<failOnMissingWebXml>false</failOnMissingWebXml> | ||
<packagingExcludes>pom.xml</packagingExcludes> | ||
</configuration> | ||
</plugin> | ||
<plugin> | ||
<groupId>net.wasdev.wlp.maven.plugins</groupId> | ||
<artifactId>liberty-maven-plugin</artifactId> | ||
<version>2.1.2</version> | ||
<configuration> | ||
<assemblyArtifact> | ||
<groupId>io.openliberty</groupId> | ||
<artifactId>openliberty-runtime</artifactId> | ||
<version>17.0.0.4</version> | ||
<type>zip</type> | ||
</assemblyArtifact> | ||
<configFile>${basedir}/src/main/liberty/config/server.xml</configFile> | ||
<packageFile>${package.file}</packageFile> | ||
<include>${packaging.type}</include> | ||
<looseApplication>false</looseApplication> | ||
<installAppPackages>project</installAppPackages> | ||
<bootstrapProperties> | ||
<app.context.root>/</app.context.root> | ||
<app.location>${project.artifactId}-${project.version}.war</app.location> | ||
<default.http.port>9080</default.http.port> | ||
<default.https.port>9443</default.https.port> | ||
</bootstrapProperties> | ||
</configuration> | ||
<executions> | ||
<execution> | ||
<id>install-server</id> | ||
<phase>prepare-package</phase> | ||
<goals> | ||
<goal>install-server</goal> | ||
<goal>create-server</goal> | ||
<goal>install-feature</goal> | ||
</goals> | ||
</execution> | ||
<execution> | ||
<id>package-server-with-apps</id> | ||
<phase>package</phase> | ||
<goals> | ||
<goal>install-apps</goal> | ||
<goal>package-server</goal> | ||
</goals> | ||
</execution> | ||
</executions> | ||
</plugin> | ||
</plugins> | ||
</build> | ||
|
||
</project> |
8 changes: 8 additions & 0 deletions
8
microprofile/src/main/java/com/baeldung/microprofile/LibraryApplication.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
package com.baeldung.microprofile; | ||
|
||
import javax.ws.rs.ApplicationPath; | ||
import javax.ws.rs.core.Application; | ||
|
||
@ApplicationPath("/library") | ||
public class LibraryApplication extends Application { | ||
} |
50 changes: 50 additions & 0 deletions
50
microprofile/src/main/java/com/baeldung/microprofile/model/Book.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
package com.baeldung.microprofile.model; | ||
|
||
public class Book { | ||
|
||
private String id; | ||
private String isbn; | ||
private String name; | ||
private String author; | ||
private Integer pages; | ||
|
||
public String getId() { | ||
return id; | ||
} | ||
|
||
public void setId(String id) { | ||
this.id = id; | ||
} | ||
|
||
public String getName() { | ||
return name; | ||
} | ||
|
||
public void setName(String name) { | ||
this.name = name; | ||
} | ||
|
||
public String getIsbn() { | ||
return isbn; | ||
} | ||
|
||
public void setIsbn(String isbn) { | ||
this.isbn = isbn; | ||
} | ||
|
||
public String getAuthor() { | ||
return author; | ||
} | ||
|
||
public void setAuthor(String author) { | ||
this.author = author; | ||
} | ||
|
||
public Integer getPages() { | ||
return pages; | ||
} | ||
|
||
public void setPages(Integer pages) { | ||
this.pages = pages; | ||
} | ||
} |
42 changes: 42 additions & 0 deletions
42
...oprofile/src/main/java/com/baeldung/microprofile/providers/BookListMessageBodyWriter.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
package com.baeldung.microprofile.providers; | ||
|
||
import com.baeldung.microprofile.model.Book; | ||
import com.baeldung.microprofile.util.BookMapper; | ||
|
||
import javax.json.Json; | ||
import javax.json.JsonArray; | ||
import javax.json.JsonWriter; | ||
import javax.ws.rs.Produces; | ||
import javax.ws.rs.WebApplicationException; | ||
import javax.ws.rs.core.MediaType; | ||
import javax.ws.rs.core.MultivaluedMap; | ||
import javax.ws.rs.ext.MessageBodyWriter; | ||
import javax.ws.rs.ext.Provider; | ||
import java.io.IOException; | ||
import java.io.OutputStream; | ||
import java.lang.annotation.Annotation; | ||
import java.lang.reflect.Type; | ||
import java.util.List; | ||
|
||
@Provider | ||
@Produces(MediaType.APPLICATION_JSON) | ||
public class BookListMessageBodyWriter implements MessageBodyWriter<List<Book>> { | ||
|
||
@Override | ||
public boolean isWriteable(Class<?> clazz, Type genericType, Annotation[] annotations, MediaType mediaType) { | ||
return true; | ||
} | ||
|
||
@Override | ||
public long getSize(List<Book> books, Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) { | ||
return 0; | ||
} | ||
|
||
@Override | ||
public void writeTo(List<Book> books, Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType, MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream) throws IOException, WebApplicationException { | ||
JsonWriter jsonWriter = Json.createWriter(entityStream); | ||
JsonArray jsonArray = BookMapper.map(books); | ||
jsonWriter.writeArray(jsonArray); | ||
jsonWriter.close(); | ||
} | ||
} |
30 changes: 30 additions & 0 deletions
30
microprofile/src/main/java/com/baeldung/microprofile/providers/BookMessageBodyReader.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
package com.baeldung.microprofile.providers; | ||
|
||
import com.baeldung.microprofile.model.Book; | ||
import com.baeldung.microprofile.util.BookMapper; | ||
|
||
import javax.ws.rs.Consumes; | ||
import javax.ws.rs.WebApplicationException; | ||
import javax.ws.rs.core.MediaType; | ||
import javax.ws.rs.core.MultivaluedMap; | ||
import javax.ws.rs.ext.MessageBodyReader; | ||
import javax.ws.rs.ext.Provider; | ||
import java.io.IOException; | ||
import java.io.InputStream; | ||
import java.lang.annotation.Annotation; | ||
import java.lang.reflect.Type; | ||
|
||
@Provider | ||
@Consumes(MediaType.APPLICATION_JSON) | ||
public class BookMessageBodyReader implements MessageBodyReader<Book> { | ||
|
||
@Override | ||
public boolean isReadable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) { | ||
return type.equals(Book.class); | ||
} | ||
|
||
@Override | ||
public Book readFrom(Class<Book> type, Type genericType, Annotation[] annotations, MediaType mediaType, MultivaluedMap<String, String> httpHeaders, InputStream entityStream) throws IOException, WebApplicationException { | ||
return BookMapper.map(entityStream); | ||
} | ||
} |
57 changes: 57 additions & 0 deletions
57
microprofile/src/main/java/com/baeldung/microprofile/providers/BookMessageBodyWriter.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
package com.baeldung.microprofile.providers; | ||
|
||
import com.baeldung.microprofile.model.Book; | ||
import com.baeldung.microprofile.util.BookMapper; | ||
|
||
import javax.json.Json; | ||
import javax.json.JsonObject; | ||
import javax.json.JsonWriter; | ||
import javax.ws.rs.Produces; | ||
import javax.ws.rs.WebApplicationException; | ||
import javax.ws.rs.core.MediaType; | ||
import javax.ws.rs.core.MultivaluedMap; | ||
import javax.ws.rs.ext.MessageBodyWriter; | ||
import javax.ws.rs.ext.Provider; | ||
import java.io.IOException; | ||
import java.io.OutputStream; | ||
import java.lang.annotation.Annotation; | ||
import java.lang.reflect.Type; | ||
|
||
@Provider | ||
@Produces(MediaType.APPLICATION_JSON) | ||
public class BookMessageBodyWriter implements MessageBodyWriter<Book> { | ||
@Override | ||
public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) { | ||
return type.equals(Book.class); | ||
} | ||
|
||
/* | ||
Deprecated in JAX RS 2.0 | ||
*/ | ||
@Override | ||
public long getSize(Book book, Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) { | ||
return 0; | ||
} | ||
|
||
/** | ||
* Marsahl Book to OutputStream | ||
* | ||
* @param book | ||
* @param type | ||
* @param genericType | ||
* @param annotations | ||
* @param mediaType | ||
* @param httpHeaders | ||
* @param entityStream | ||
* @throws IOException | ||
* @throws WebApplicationException | ||
*/ | ||
@Override | ||
public void writeTo(Book book, Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType, MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream) throws IOException, WebApplicationException { | ||
JsonWriter jsonWriter = Json.createWriter(entityStream); | ||
JsonObject jsonObject = BookMapper.map(book); | ||
jsonWriter.writeObject(jsonObject); | ||
jsonWriter.close(); | ||
} | ||
|
||
} |
53 changes: 53 additions & 0 deletions
53
microprofile/src/main/java/com/baeldung/microprofile/repo/BookManager.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
package com.baeldung.microprofile.repo; | ||
|
||
import com.baeldung.microprofile.model.Book; | ||
|
||
import javax.enterprise.context.ApplicationScoped; | ||
import java.time.LocalDate; | ||
import java.time.format.DateTimeFormatter; | ||
import java.util.ArrayList; | ||
import java.util.List; | ||
import java.util.concurrent.ConcurrentHashMap; | ||
import java.util.concurrent.ConcurrentMap; | ||
import java.util.concurrent.atomic.AtomicInteger; | ||
|
||
@ApplicationScoped | ||
public class BookManager { | ||
|
||
private DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMM"); | ||
private AtomicInteger bookIdGenerator = new AtomicInteger(0); | ||
|
||
private ConcurrentMap<String, Book> inMemoryStore = new ConcurrentHashMap<>(); | ||
|
||
public BookManager() { | ||
Book book = new Book(); | ||
book.setId(getNextId()); | ||
book.setName("Building Microservice With Eclipse MicroProfile"); | ||
book.setIsbn("1"); | ||
book.setAuthor("baeldung"); | ||
book.setPages(420); | ||
inMemoryStore.put(book.getId(), book); | ||
} | ||
|
||
private String getNextId() { | ||
String date = LocalDate.now().format(formatter); | ||
return String.format("%04d-%s", bookIdGenerator.incrementAndGet(), date); | ||
} | ||
|
||
public String add(Book book) { | ||
String id = getNextId(); | ||
book.setId(id); | ||
inMemoryStore.put(id, book); | ||
return id; | ||
} | ||
|
||
public Book get(String id) { | ||
return inMemoryStore.get(id); | ||
} | ||
|
||
public List<Book> getAll() { | ||
List<Book> books = new ArrayList<>(); | ||
books.addAll(inMemoryStore.values()); | ||
return books; | ||
} | ||
} |
Oops, something went wrong.