From 9de150ccdc34d6561d834ac133a67c74c07bbdd6 Mon Sep 17 00:00:00 2001 From: Fabio Scotto di Santolo Date: Fri, 5 Apr 2019 23:14:28 +0200 Subject: [PATCH] Aggiunto l'esempio del capitolo su Java Server Faces --- .idea/artifacts/jsfdemo_ejb_exploded.xml | 9 +++ .idea/artifacts/jsfdemo_war_exploded.xml | 23 +++++++ .idea/compiler.xml | 1 + .idea/encodings.xml | 1 + .idea/misc.xml | 1 + jaxrsdemo/jaxrsdemo.iml | 4 +- jsfdemo/jsfdemo.iml | 35 +++++++++++ jsfdemo/pom.xml | 61 +++++++++++++++++++ .../src/main/java/it/plague/jeedemo/Book.java | 47 ++++++++++++++ .../main/java/it/plague/jeedemo/BookEJB.java | 35 +++++++++++ .../main/java/it/plague/jeedemo/BookView.java | 36 +++++++++++ .../it/plague/jeedemo/DatabaseProducer.java | 12 ++++ .../main/resources/META-INF/persistence.xml | 16 +++++ jsfdemo/src/main/webapp/WEB-INF/beans.xml | 8 +++ .../src/main/webapp/WEB-INF/faces-config.xml | 7 +++ jsfdemo/src/main/webapp/WEB-INF/web.xml | 15 +++++ jsfdemo/src/main/webapp/layout.xhtml | 22 +++++++ jsfdemo/src/main/webapp/newBook.xhtml | 47 ++++++++++++++ jsfdemo/src/main/webapp/viewBook.xhtml | 30 +++++++++ .../test/java/it/plague/jeedemo/AppTest.java | 20 ++++++ pom.xml | 1 + 21 files changed, 430 insertions(+), 1 deletion(-) create mode 100644 .idea/artifacts/jsfdemo_ejb_exploded.xml create mode 100644 .idea/artifacts/jsfdemo_war_exploded.xml create mode 100644 jsfdemo/jsfdemo.iml create mode 100644 jsfdemo/pom.xml create mode 100644 jsfdemo/src/main/java/it/plague/jeedemo/Book.java create mode 100644 jsfdemo/src/main/java/it/plague/jeedemo/BookEJB.java create mode 100644 jsfdemo/src/main/java/it/plague/jeedemo/BookView.java create mode 100644 jsfdemo/src/main/java/it/plague/jeedemo/DatabaseProducer.java create mode 100644 jsfdemo/src/main/resources/META-INF/persistence.xml create mode 100644 jsfdemo/src/main/webapp/WEB-INF/beans.xml create mode 100644 jsfdemo/src/main/webapp/WEB-INF/faces-config.xml create mode 100644 jsfdemo/src/main/webapp/WEB-INF/web.xml create mode 100644 jsfdemo/src/main/webapp/layout.xhtml create mode 100644 jsfdemo/src/main/webapp/newBook.xhtml create mode 100644 jsfdemo/src/main/webapp/viewBook.xhtml create mode 100644 jsfdemo/src/test/java/it/plague/jeedemo/AppTest.java diff --git a/.idea/artifacts/jsfdemo_ejb_exploded.xml b/.idea/artifacts/jsfdemo_ejb_exploded.xml new file mode 100644 index 0000000..90e7411 --- /dev/null +++ b/.idea/artifacts/jsfdemo_ejb_exploded.xml @@ -0,0 +1,9 @@ + + + $PROJECT_DIR$/out/artifacts/jsfdemo_ejb_exploded + + + + + + \ No newline at end of file diff --git a/.idea/artifacts/jsfdemo_war_exploded.xml b/.idea/artifacts/jsfdemo_war_exploded.xml new file mode 100644 index 0000000..e03b8e1 --- /dev/null +++ b/.idea/artifacts/jsfdemo_war_exploded.xml @@ -0,0 +1,23 @@ + + + $PROJECT_DIR$/jsfdemo/target/jsfdemo-1.0-SNAPSHOT + + + true + jsfdemo + war + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml index f32ccde..5264490 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -9,6 +9,7 @@ + diff --git a/.idea/encodings.xml b/.idea/encodings.xml index 134b3b9..cff944a 100644 --- a/.idea/encodings.xml +++ b/.idea/encodings.xml @@ -9,6 +9,7 @@ + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index ab45356..a60049d 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -4,6 +4,7 @@ + diff --git a/jaxrsdemo/jaxrsdemo.iml b/jaxrsdemo/jaxrsdemo.iml index dc9c244..6a56488 100644 --- a/jaxrsdemo/jaxrsdemo.iml +++ b/jaxrsdemo/jaxrsdemo.iml @@ -4,7 +4,9 @@ - + + + diff --git a/jsfdemo/jsfdemo.iml b/jsfdemo/jsfdemo.iml new file mode 100644 index 0000000..0ae94f4 --- /dev/null +++ b/jsfdemo/jsfdemo.iml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/jsfdemo/pom.xml b/jsfdemo/pom.xml new file mode 100644 index 0000000..830f992 --- /dev/null +++ b/jsfdemo/pom.xml @@ -0,0 +1,61 @@ + + + 4.0.0 + jsfdemo + war + jsfdemo + + + jeedemo + it.plague.jeedemo + 1.0-SNAPSHOT + + + + UTF-8 + 1.7 + 1.7 + + + + + org.projectlombok + lombok + provided + + + org.glassfish.main.extras + glassfish-embedded-all + provided + + + junit + junit + test + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.0 + + 1.7 + 1.7 + + + + org.apache.maven.plugins + maven-war-plugin + 3.2.2 + + false + + + + + diff --git a/jsfdemo/src/main/java/it/plague/jeedemo/Book.java b/jsfdemo/src/main/java/it/plague/jeedemo/Book.java new file mode 100644 index 0000000..b877ec1 --- /dev/null +++ b/jsfdemo/src/main/java/it/plague/jeedemo/Book.java @@ -0,0 +1,47 @@ +package it.plague.jeedemo; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.NamedQuery; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +import javax.xml.bind.annotation.XmlRootElement; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Entity +@XmlRootElement +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +@NamedQuery(name = Book.FIND_ALL, query = "select b from Book b") +public class Book { + + public static final String FIND_ALL = "FIND_ALL"; + + @Id + @GeneratedValue + private Long id; + + @NotNull + @Size(min = 4, max = 50) + @Column(nullable = false) + private String title; + + private Float price; + + @Column(length = 2000) + private String description; + + private String isbn; + + private Integer nbOfPage; + + private Boolean illustrations; + +} diff --git a/jsfdemo/src/main/java/it/plague/jeedemo/BookEJB.java b/jsfdemo/src/main/java/it/plague/jeedemo/BookEJB.java new file mode 100644 index 0000000..9931590 --- /dev/null +++ b/jsfdemo/src/main/java/it/plague/jeedemo/BookEJB.java @@ -0,0 +1,35 @@ +package it.plague.jeedemo; + +import java.util.List; +import javax.annotation.sql.DataSourceDefinition; +import javax.ejb.Stateless; +import javax.inject.Inject; +import javax.inject.Named; +import javax.persistence.EntityManager; + +@Named +@Stateless +@DataSourceDefinition( + name = "java:global/jdbc/lab11DS", + className = "org.apache.derby.jdbc.EmbeddedDriver", + url = "jdbc:derby:memory:lab11DB;create=true;user=app;password=app" +) +public class BookEJB { + + @Inject + private EntityManager em; + + public Book createBook(Book book) { + em.persist(book); + return book; + } + + public List findAllBooks() { + return em.createNamedQuery(Book.FIND_ALL, Book.class).getResultList(); + } + + public Book findBookById(Long id) { + return em.find(Book.class, id); + } + +} diff --git a/jsfdemo/src/main/java/it/plague/jeedemo/BookView.java b/jsfdemo/src/main/java/it/plague/jeedemo/BookView.java new file mode 100644 index 0000000..77db08d --- /dev/null +++ b/jsfdemo/src/main/java/it/plague/jeedemo/BookView.java @@ -0,0 +1,36 @@ +package it.plague.jeedemo; + +import javax.enterprise.context.RequestScoped; +import javax.faces.application.FacesMessage; +import javax.faces.context.FacesContext; +import javax.inject.Inject; +import javax.inject.Named; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Named +@RequestScoped +@NoArgsConstructor +public class BookView { + + @Inject + private BookEJB bookEJB; + + @Getter + @Setter + private Book book = new Book(); + + public void doFindBookById() { + book = bookEJB.findBookById(book.getId()); + } + + public String doCreateBook() { + bookEJB.createBook(book); + FacesContext.getCurrentInstance().addMessage(null, + new FacesMessage(FacesMessage.SEVERITY_INFO, "Book created", + "The book " + book.getTitle() + " has been created with id = " + book.getId())); + return "newBook.xhtml"; + } + +} diff --git a/jsfdemo/src/main/java/it/plague/jeedemo/DatabaseProducer.java b/jsfdemo/src/main/java/it/plague/jeedemo/DatabaseProducer.java new file mode 100644 index 0000000..d1c9dfb --- /dev/null +++ b/jsfdemo/src/main/java/it/plague/jeedemo/DatabaseProducer.java @@ -0,0 +1,12 @@ +package it.plague.jeedemo; + +import javax.enterprise.inject.Produces; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; + +public class DatabaseProducer { + + @Produces + @PersistenceContext(unitName = "jsfdemoPU") + private EntityManager em; +} diff --git a/jsfdemo/src/main/resources/META-INF/persistence.xml b/jsfdemo/src/main/resources/META-INF/persistence.xml new file mode 100644 index 0000000..84a6131 --- /dev/null +++ b/jsfdemo/src/main/resources/META-INF/persistence.xml @@ -0,0 +1,16 @@ + + + + + java:global/jdbc/lab11DS + + + + + + + + \ No newline at end of file diff --git a/jsfdemo/src/main/webapp/WEB-INF/beans.xml b/jsfdemo/src/main/webapp/WEB-INF/beans.xml new file mode 100644 index 0000000..ae0f4bf --- /dev/null +++ b/jsfdemo/src/main/webapp/WEB-INF/beans.xml @@ -0,0 +1,8 @@ + + + \ No newline at end of file diff --git a/jsfdemo/src/main/webapp/WEB-INF/faces-config.xml b/jsfdemo/src/main/webapp/WEB-INF/faces-config.xml new file mode 100644 index 0000000..c2df863 --- /dev/null +++ b/jsfdemo/src/main/webapp/WEB-INF/faces-config.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/jsfdemo/src/main/webapp/WEB-INF/web.xml b/jsfdemo/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..aebe7b9 --- /dev/null +++ b/jsfdemo/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,15 @@ + + + + Faces Servlet + javax.faces.webapp.FacesServlet + 1 + + + Faces Servlet + *.xhtml + + \ No newline at end of file diff --git a/jsfdemo/src/main/webapp/layout.xhtml b/jsfdemo/src/main/webapp/layout.xhtml new file mode 100644 index 0000000..109df1d --- /dev/null +++ b/jsfdemo/src/main/webapp/layout.xhtml @@ -0,0 +1,22 @@ + + + + + + <ui:insert name="title">Defautl title</ui:insert> + + + + +

Default title

+
+ + Default content +
+ +
+ diff --git a/jsfdemo/src/main/webapp/newBook.xhtml b/jsfdemo/src/main/webapp/newBook.xhtml new file mode 100644 index 0000000..77c2a87 --- /dev/null +++ b/jsfdemo/src/main/webapp/newBook.xhtml @@ -0,0 +1,47 @@ + + + + + + Create new book + + + + + + + + + + + + + + + + + + +
+

List of books

+ + + + + + + + + + + + + + +
+
+ diff --git a/jsfdemo/src/main/webapp/viewBook.xhtml b/jsfdemo/src/main/webapp/viewBook.xhtml new file mode 100644 index 0000000..938f0ce --- /dev/null +++ b/jsfdemo/src/main/webapp/viewBook.xhtml @@ -0,0 +1,30 @@ + + + + + + + + + + View a book + + + + + + + + + + + + + + + + diff --git a/jsfdemo/src/test/java/it/plague/jeedemo/AppTest.java b/jsfdemo/src/test/java/it/plague/jeedemo/AppTest.java new file mode 100644 index 0000000..5bd98cc --- /dev/null +++ b/jsfdemo/src/test/java/it/plague/jeedemo/AppTest.java @@ -0,0 +1,20 @@ +package it.plague.jeedemo; + +import static org.junit.Assert.assertTrue; + +import org.junit.Test; + +/** + * Unit test for simple App. + */ +public class AppTest +{ + /** + * Rigorous Test :-) + */ + @Test + public void shouldAnswerWithTrue() + { + assertTrue( true ); + } +} diff --git a/pom.xml b/pom.xml index 8d69e26..e3f84a3 100644 --- a/pom.xml +++ b/pom.xml @@ -17,6 +17,7 @@ jmsdemo jaxwsdemo-service jaxrsdemo + jsfdemo