diff --git a/.gitignore b/.gitignore index 8bd3a05..58eaa38 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ /.settings/ /.classpath /.project +*.iml \ No newline at end of file diff --git a/pom.xml b/pom.xml index e226ef7..a17cc19 100644 --- a/pom.xml +++ b/pom.xml @@ -1,215 +1,232 @@ - - 4.0.0 + + 4.0.0 - li.strolch - strolch-bookshop - 0.1.0-SNAPSHOT - war - - strolch-bookshop - Bookshop built on Strolch - 2017 + li.strolch + strolch-bookshop + 0.1.0-SNAPSHOT + war - - UTF-8 - yyyy-MM-dd HH:mm:ss - ${maven.build.timestamp} + strolch-bookshop + Bookshop built on Strolch + 2017 - 1.8 + + UTF-8 + yyyy-MM-dd HH:mm:ss + ${maven.build.timestamp} - 1.6.0-SNAPSHOT - 2.25.1 - 2.0 + 1.8 - bookshop - ${warFinalName} - + 2.25.1 + 1.7.25 + 1.2.3 + 2.1.0 + 2.7.1 + 42.1.4 + 2.8.2 + 1.3.1 + 1.6.0 + 3.1.0 + 2.1 - - - - org.slf4j - slf4j-api - 1.7.25 - - - ch.qos.logback - logback-classic - 1.2.3 - + 4.12 + 1.3 + 2.0.8-beta - - - li.strolch - li.strolch.utils - ${strolch.version} - - - li.strolch - li.strolch.privilege - ${strolch.version} - - - li.strolch - li.strolch.model - ${strolch.version} - - - li.strolch - li.strolch.agent - ${strolch.version} - - - li.strolch - li.strolch.rest - ${strolch.version} - - - li.strolch - li.strolch.service - ${strolch.version} - - - li.strolch - li.strolch.testbase - ${strolch.version} - test - + 3.7.0 + 3.0.1 + 3.0.2 + 3.1.0 - - - com.github.petitparser.java-petitparser - petitparser-core - 2.0.3 - - - com.google.code.gson - gson - 2.3.1 - + 1.6.0-SNAPSHOT - - - javax.servlet - javax.servlet-api - 3.0.1 - provided - - - javax.ws.rs - javax.ws.rs-api - ${jaxrs.api.version} - + bookshop + ${warFinalName} + - - - junit - junit - 4.11 - test - - - org.hamcrest - hamcrest-core - 1.3 - test - - - org.hamcrest - hamcrest-library - 1.3 - test - - + - - - - - src/main/resources - true - - **/*.properties - - - - src/main/resources - false - - **/*.properties - - - + + + org.slf4j + slf4j-api + ${slf4j.version} + + + ch.qos.logback + logback-classic + ${logback.version} + runtime + - - - org.apache.maven.plugins - maven-compiler-plugin - 3.0 - - ${java-version} - ${java-version} - - - - org.apache.maven.plugins - maven-war-plugin - 2.4 - - false - ${warFinalName} - - - - + + + li.strolch + li.strolch.utils + ${strolch.version} + + + li.strolch + li.strolch.privilege + ${strolch.version} + + + li.strolch + li.strolch.model + ${strolch.version} + + + li.strolch + li.strolch.agent + ${strolch.version} + + + li.strolch + li.strolch.rest + ${strolch.version} + + + li.strolch + li.strolch.service + ${strolch.version} + + + li.strolch + li.strolch.testbase + ${strolch.version} + test + - - - - jitpack.io - snapshots - https://jitpack.io - - true - - - true - - - + + + com.google.code.gson + gson + ${gson.version} + - - - - m2e.eitchpc - - - user.name - eitch - - - unix - - - - dev.eitchpc - - - - m2e.eitchmac - - - user.name - eitch - - - mac - - - - dev.eitchmac - - - + + + javax.servlet + javax.servlet-api + ${serverlet.version} + provided + + + javax.ws.rs + javax.ws.rs-api + ${jaxrs.api.version} + + + org.glassfish.jersey.core + jersey-common + ${jersey.version} + + + org.glassfish.jersey.core + jersey-server + ${jersey.version} + + + org.glassfish.jersey.containers + jersey-container-servlet + ${jersey.version} + + + + + junit + junit + ${junit.version} + test + + + org.hamcrest + hamcrest-core + ${hamcrest.version} + test + + + org.hamcrest + hamcrest-library + ${hamcrest.version} + test + + + + + + + + src/main/resources + true + + **/*.properties + + + + src/main/resources + false + + **/*.properties + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + ${jdk.version} + ${jdk.version} + + + + org.apache.maven.plugins + maven-war-plugin + ${maven-war-plugin.version} + + false + ${warFinalName} + + + + + + + + + m2e.eitchpc + + + user.name + eitch + + + unix + + + + dev.eitchpc + + + + m2e.eitchmac + + + user.name + eitch + + + mac + + + + dev.eitchmac + + + diff --git a/src/main/java/li/strolch/bookshop/rest/BooksResource.java b/src/main/java/li/strolch/bookshop/rest/BooksResource.java index d9df346..50e313d 100644 --- a/src/main/java/li/strolch/bookshop/rest/BooksResource.java +++ b/src/main/java/li/strolch/bookshop/rest/BooksResource.java @@ -1,42 +1,34 @@ package li.strolch.bookshop.rest; -import java.util.List; - import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; +import javax.ws.rs.*; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.Status; +import java.util.List; import com.google.gson.JsonObject; import com.google.gson.JsonParser; - import li.strolch.bookshop.BookShopConstants; import li.strolch.bookshop.query.BooksQuery; import li.strolch.bookshop.service.CreateBookService; import li.strolch.bookshop.service.RemoveBookService; import li.strolch.bookshop.service.UpdateBookService; import li.strolch.model.Resource; -import li.strolch.model.json.StrolchElementToJsonVisitor; +import li.strolch.model.json.StrolchRootElementToJsonVisitor; import li.strolch.model.query.NameSelection; import li.strolch.model.query.OrSelection; import li.strolch.model.query.ParameterSelection; import li.strolch.model.query.ResourceQuery; +import li.strolch.model.visitor.ResourceVisitor; import li.strolch.persistence.api.StrolchTransaction; import li.strolch.privilege.model.Certificate; import li.strolch.rest.RestfulStrolchComponent; import li.strolch.rest.StrolchRestfulConstants; import li.strolch.rest.helper.ResponseUtil; -import li.strolch.rest.util.JsonServiceArgument; -import li.strolch.rest.util.JsonServiceResult; +import li.strolch.service.JsonServiceArgument; +import li.strolch.service.JsonServiceResult; import li.strolch.service.StringServiceArgument; import li.strolch.service.api.ServiceHandler; import li.strolch.service.api.ServiceResult; @@ -62,17 +54,16 @@ public class BooksResource { try (StrolchTransaction tx = RestfulStrolchComponent.getInstance().openTx(cert, getClass())) { // prepare the query - ResourceQuery query = new BooksQuery() // - // set transformation to JSON - .setVisitor(new StrolchElementToJsonVisitor().flat()); + ResourceQuery query = new BooksQuery<>(); // prepare selections if (StringHelper.isEmpty(queryS)) { query.withAny(); } else { OrSelection or = new OrSelection(); - or.with(ParameterSelection.stringSelection(BookShopConstants.BAG_PARAMETERS, - BookShopConstants.PARAM_DESCRIPTION, queryS, StringMatchMode.ci())); + or.with(ParameterSelection + .stringSelection(BookShopConstants.BAG_PARAMETERS, BookShopConstants.PARAM_DESCRIPTION, queryS, + StringMatchMode.ci())); or.with(new NameSelection(queryS, StringMatchMode.ci())); // add selections @@ -80,13 +71,15 @@ public class BooksResource { } // perform the query - List books = tx.doQuery(query); + List books = tx.doQuery(query); // perform paging - Paging page = Paging.asPage(books, offset, limit); + Paging paging = Paging.asPage(books, offset, limit); + List page = paging.getPage(); - // return result - return ResponseUtil.toResponse(StrolchRestfulConstants.DATA, page.getPage()); + // return result, transforming to JSON + ResourceVisitor visitor = new StrolchRootElementToJsonVisitor().flat().asResourceVisitor(); + return ResponseUtil.listToResponse(StrolchRestfulConstants.DATA, page, a -> a.accept(visitor)); } } @@ -107,7 +100,7 @@ public class BooksResource { return ResponseUtil.toResponse(Status.NOT_FOUND, "Book " + id + " does not exist!"); // transform to JSON - JsonObject bookJ = book.accept(new StrolchElementToJsonVisitor().flat()); + JsonObject bookJ = book.accept(new StrolchRootElementToJsonVisitor().flat()); // return return ResponseUtil.toResponse(StrolchRestfulConstants.DATA, bookJ); diff --git a/src/main/java/li/strolch/bookshop/service/CreateBookService.java b/src/main/java/li/strolch/bookshop/service/CreateBookService.java index 49f56b1..6819639 100644 --- a/src/main/java/li/strolch/bookshop/service/CreateBookService.java +++ b/src/main/java/li/strolch/bookshop/service/CreateBookService.java @@ -1,15 +1,15 @@ package li.strolch.bookshop.service; -import com.google.gson.JsonObject; +import static li.strolch.report.ReportConstants.BAG_RELATIONS; +import com.google.gson.JsonObject; import li.strolch.bookshop.BookShopConstants; import li.strolch.model.Resource; import li.strolch.model.json.FromFlatJsonVisitor; -import li.strolch.model.json.StrolchElementToJsonVisitor; -import li.strolch.persistence.api.AddResourceCommand; +import li.strolch.model.json.StrolchRootElementToJsonVisitor; import li.strolch.persistence.api.StrolchTransaction; -import li.strolch.rest.util.JsonServiceArgument; -import li.strolch.rest.util.JsonServiceResult; +import li.strolch.service.JsonServiceArgument; +import li.strolch.service.JsonServiceResult; import li.strolch.service.api.AbstractService; public class CreateBookService extends AbstractService { @@ -37,19 +37,17 @@ public class CreateBookService extends AbstractService