[Project] fixes to tutorial

This commit is contained in:
Robert von Burg 2018-02-27 19:00:13 +01:00
parent 5618e0e893
commit 327e4411da
2 changed files with 235 additions and 220 deletions

View File

@ -62,219 +62,236 @@
<b>pom.xml</b>
<pre class="pre-scrollable">
&lt;?xml version="1.0"?&gt;
&lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"&gt;
&lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
&lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"&gt;
&lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
&lt;groupId&gt;li.strolch&lt;/groupId&gt;
&lt;artifactId&gt;strolch-bookshop&lt;/artifactId&gt;
&lt;version&gt;0.1.0-SNAPSHOT&lt;/version&gt;
&lt;packaging&gt;war&lt;/packaging&gt;
&lt;groupId&gt;li.strolch&lt;/groupId&gt;
&lt;artifactId&gt;strolch-bookshop&lt;/artifactId&gt;
&lt;version&gt;0.1.0-SNAPSHOT&lt;/version&gt;
&lt;packaging&gt;war&lt;/packaging&gt;
&lt;name&gt;strolch-bookshop&lt;/name&gt;
&lt;description&gt;Bookshop built on Strolch&lt;/description&gt;
&lt;inceptionYear&gt;2017&lt;/inceptionYear&gt;
&lt;name&gt;strolch-bookshop&lt;/name&gt;
&lt;description&gt;Bookshop built on Strolch&lt;/description&gt;
&lt;inceptionYear&gt;2017&lt;/inceptionYear&gt;
&lt;properties&gt;
&lt;project.build.sourceEncoding&gt;UTF-8&lt;/project.build.sourceEncoding&gt;
&lt;maven.build.timestamp.format&gt;yyyy-MM-dd HH:mm:ss&lt;/maven.build.timestamp.format&gt;
&lt;buildTimestamp&gt;${maven.build.timestamp}&lt;/buildTimestamp&gt;
&lt;properties&gt;
&lt;project.build.sourceEncoding&gt;UTF-8&lt;/project.build.sourceEncoding&gt;
&lt;maven.build.timestamp.format&gt;yyyy-MM-dd HH:mm:ss&lt;/maven.build.timestamp.format&gt;
&lt;buildTimestamp&gt;${maven.build.timestamp}&lt;/buildTimestamp&gt;
&lt;java-version&gt;1.8&lt;/java-version&gt;
&lt;jdk.version&gt;1.8&lt;/jdk.version&gt;
&lt;strolch.version&gt;1.5.0-SNAPSHOT&lt;/strolch.version&gt;
&lt;jersey.version&gt;2.11&lt;/jersey.version&gt;
&lt;jaxrs.api.version&gt;2.0&lt;/jaxrs.api.version&gt;
&lt;jersey.version&gt;2.25.1&lt;/jersey.version&gt;
&lt;slf4j.version&gt;1.7.25&lt;/slf4j.version&gt;
&lt;logback.version&gt;1.2.3&lt;/logback.version&gt;
&lt;petitparser.version&gt;2.1.0&lt;/petitparser.version&gt;
&lt;hikaricp.version&gt;2.7.1&lt;/hikaricp.version&gt;
&lt;postgresql.version&gt;42.1.4&lt;/postgresql.version&gt;
&lt;gson.version&gt;2.8.2&lt;/gson.version&gt;
&lt;annotation.version&gt;1.3.1&lt;/annotation.version&gt;
&lt;javaxmail.version&gt;1.6.0&lt;/javaxmail.version&gt;
&lt;serverlet.version&gt;3.1.0&lt;/serverlet.version&gt;
&lt;jaxrs.api.version&gt;2.1&lt;/jaxrs.api.version&gt;
&lt;warFinalName&gt;bookshop&lt;/warFinalName&gt;
&lt;m2eclipse.wtp.contextRoot&gt;${warFinalName}&lt;/m2eclipse.wtp.contextRoot&gt;
&lt;/properties&gt;
&lt;junit.version&gt;4.12&lt;/junit.version&gt;
&lt;hamcrest.version&gt;1.3&lt;/hamcrest.version&gt;
&lt;mockito.version&gt;2.0.8-beta&lt;/mockito.version&gt;
&lt;dependencies&gt;
&lt;!-- base --&gt;
&lt;dependency&gt;
&lt;groupId&gt;org.slf4j&lt;/groupId&gt;
&lt;artifactId&gt;slf4j-api&lt;/artifactId&gt;
&lt;version&gt;1.7.2&lt;/version&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
&lt;groupId&gt;ch.qos.logback&lt;/groupId&gt;
&lt;artifactId&gt;logback-classic&lt;/artifactId&gt;
&lt;version&gt;1.0.13&lt;/version&gt;
&lt;/dependency&gt;
&lt;maven-compiler-plugin.version&gt;3.7.0&lt;/maven-compiler-plugin.version&gt;
&lt;maven-source-plugin.version&gt;3.0.1&lt;/maven-source-plugin.version&gt;
&lt;maven-jar-plugin.version&gt;3.0.2&lt;/maven-jar-plugin.version&gt;
&lt;maven-war-plugin.version&gt;3.1.0&lt;/maven-war-plugin.version&gt;
&lt;!-- strolch --&gt;
&lt;dependency&gt;
&lt;groupId&gt;li.strolch&lt;/groupId&gt;
&lt;artifactId&gt;li.strolch.utils&lt;/artifactId&gt;
&lt;version&gt;${strolch.version}&lt;/version&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
&lt;groupId&gt;li.strolch&lt;/groupId&gt;
&lt;artifactId&gt;li.strolch.privilege&lt;/artifactId&gt;
&lt;version&gt;${strolch.version}&lt;/version&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
&lt;groupId&gt;li.strolch&lt;/groupId&gt;
&lt;artifactId&gt;li.strolch.model&lt;/artifactId&gt;
&lt;version&gt;${strolch.version}&lt;/version&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
&lt;groupId&gt;li.strolch&lt;/groupId&gt;
&lt;artifactId&gt;li.strolch.agent&lt;/artifactId&gt;
&lt;version&gt;${strolch.version}&lt;/version&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
&lt;groupId&gt;li.strolch&lt;/groupId&gt;
&lt;artifactId&gt;li.strolch.rest&lt;/artifactId&gt;
&lt;version&gt;${strolch.version}&lt;/version&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
&lt;groupId&gt;li.strolch&lt;/groupId&gt;
&lt;artifactId&gt;li.strolch.service&lt;/artifactId&gt;
&lt;version&gt;${strolch.version}&lt;/version&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
&lt;groupId&gt;li.strolch&lt;/groupId&gt;
&lt;artifactId&gt;li.strolch.testbase&lt;/artifactId&gt;
&lt;version&gt;${strolch.version}&lt;/version&gt;
&lt;scope&gt;test&lt;/scope&gt;
&lt;/dependency&gt;
&lt;strolch.version&gt;1.6.0-SNAPSHOT&lt;/strolch.version&gt;
&lt;!-- utils --&gt;
&lt;dependency&gt;
&lt;groupId&gt;com.github.petitparser.java-petitparser&lt;/groupId&gt;
&lt;artifactId&gt;petitparser-core&lt;/artifactId&gt;
&lt;version&gt;2.0.3&lt;/version&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
&lt;groupId&gt;com.google.code.gson&lt;/groupId&gt;
&lt;artifactId&gt;gson&lt;/artifactId&gt;
&lt;version&gt;2.3.1&lt;/version&gt;
&lt;/dependency&gt;
&lt;warFinalName&gt;bookshop&lt;/warFinalName&gt;
&lt;m2eclipse.wtp.contextRoot&gt;${warFinalName}&lt;/m2eclipse.wtp.contextRoot&gt;
&lt;/properties&gt;
&lt;!-- web --&gt;
&lt;dependency&gt;
&lt;groupId&gt;javax.servlet&lt;/groupId&gt;
&lt;artifactId&gt;javax.servlet-api&lt;/artifactId&gt;
&lt;version&gt;3.0.1&lt;/version&gt;
&lt;scope&gt;provided&lt;/scope&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
&lt;groupId&gt;javax.ws.rs&lt;/groupId&gt;
&lt;artifactId&gt;javax.ws.rs-api&lt;/artifactId&gt;
&lt;version&gt;${jaxrs.api.version}&lt;/version&gt;
&lt;/dependency&gt;
&lt;dependencies&gt;
&lt;!-- testing --&gt;
&lt;dependency&gt;
&lt;groupId&gt;junit&lt;/groupId&gt;
&lt;artifactId&gt;junit&lt;/artifactId&gt;
&lt;version&gt;4.11&lt;/version&gt;
&lt;scope&gt;test&lt;/scope&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
&lt;groupId&gt;org.hamcrest&lt;/groupId&gt;
&lt;artifactId&gt;hamcrest-core&lt;/artifactId&gt;
&lt;version&gt;1.3&lt;/version&gt;
&lt;scope&gt;test&lt;/scope&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
&lt;groupId&gt;org.hamcrest&lt;/groupId&gt;
&lt;artifactId&gt;hamcrest-library&lt;/artifactId&gt;
&lt;version&gt;1.3&lt;/version&gt;
&lt;scope&gt;test&lt;/scope&gt;
&lt;/dependency&gt;
&lt;/dependencies&gt;
&lt;!-- base --&gt;
&lt;dependency&gt;
&lt;groupId&gt;org.slf4j&lt;/groupId&gt;
&lt;artifactId&gt;slf4j-api&lt;/artifactId&gt;
&lt;version&gt;${slf4j.version}&lt;/version&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
&lt;groupId&gt;ch.qos.logback&lt;/groupId&gt;
&lt;artifactId&gt;logback-classic&lt;/artifactId&gt;
&lt;version&gt;${logback.version}&lt;/version&gt;
&lt;scope&gt;runtime&lt;/scope&gt;
&lt;/dependency&gt;
&lt;build&gt;
&lt;resources&gt;
&lt;!-- filter properties files, and copy the rest --&gt;
&lt;resource&gt;
&lt;directory&gt;src/main/resources&lt;/directory&gt;
&lt;filtering&gt;true&lt;/filtering&gt;
&lt;includes&gt;
&lt;include&gt;**/*.properties&lt;/include&gt;
&lt;/includes&gt;
&lt;/resource&gt;
&lt;resource&gt;
&lt;directory&gt;src/main/resources&lt;/directory&gt;
&lt;filtering&gt;false&lt;/filtering&gt;
&lt;excludes&gt;
&lt;exclude&gt;**/*.properties&lt;/exclude&gt;
&lt;/excludes&gt;
&lt;/resource&gt;
&lt;/resources&gt;
&lt;!-- strolch --&gt;
&lt;dependency&gt;
&lt;groupId&gt;li.strolch&lt;/groupId&gt;
&lt;artifactId&gt;li.strolch.utils&lt;/artifactId&gt;
&lt;version&gt;${strolch.version}&lt;/version&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
&lt;groupId&gt;li.strolch&lt;/groupId&gt;
&lt;artifactId&gt;li.strolch.privilege&lt;/artifactId&gt;
&lt;version&gt;${strolch.version}&lt;/version&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
&lt;groupId&gt;li.strolch&lt;/groupId&gt;
&lt;artifactId&gt;li.strolch.model&lt;/artifactId&gt;
&lt;version&gt;${strolch.version}&lt;/version&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
&lt;groupId&gt;li.strolch&lt;/groupId&gt;
&lt;artifactId&gt;li.strolch.agent&lt;/artifactId&gt;
&lt;version&gt;${strolch.version}&lt;/version&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
&lt;groupId&gt;li.strolch&lt;/groupId&gt;
&lt;artifactId&gt;li.strolch.rest&lt;/artifactId&gt;
&lt;version&gt;${strolch.version}&lt;/version&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
&lt;groupId&gt;li.strolch&lt;/groupId&gt;
&lt;artifactId&gt;li.strolch.service&lt;/artifactId&gt;
&lt;version&gt;${strolch.version}&lt;/version&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
&lt;groupId&gt;li.strolch&lt;/groupId&gt;
&lt;artifactId&gt;li.strolch.testbase&lt;/artifactId&gt;
&lt;version&gt;${strolch.version}&lt;/version&gt;
&lt;scope&gt;test&lt;/scope&gt;
&lt;/dependency&gt;
&lt;plugins&gt;
&lt;plugin&gt;
&lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
&lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt;
&lt;version&gt;3.0&lt;/version&gt;
&lt;configuration&gt;
&lt;source&gt;${java-version}&lt;/source&gt;
&lt;target&gt;${java-version}&lt;/target&gt;
&lt;/configuration&gt;
&lt;/plugin&gt;
&lt;plugin&gt;
&lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
&lt;artifactId&gt;maven-war-plugin&lt;/artifactId&gt;
&lt;version&gt;2.4&lt;/version&gt;
&lt;configuration&gt;
&lt;failOnMissingWebXml&gt;false&lt;/failOnMissingWebXml&gt;
&lt;warName&gt;${warFinalName}&lt;/warName&gt;
&lt;/configuration&gt;
&lt;/plugin&gt;
&lt;/plugins&gt;
&lt;/build&gt;
&lt;!-- utils --&gt;
&lt;dependency&gt;
&lt;groupId&gt;com.google.code.gson&lt;/groupId&gt;
&lt;artifactId&gt;gson&lt;/artifactId&gt;
&lt;version&gt;${gson.version}&lt;/version&gt;
&lt;/dependency&gt;
&lt;repositories&gt;
&lt;!-- used by petit-parser --&gt;
&lt;repository&gt;
&lt;id&gt;jitpack.io&lt;/id&gt;
&lt;name&gt;snapshots&lt;/name&gt;
&lt;url&gt;https://jitpack.io&lt;/url&gt;
&lt;releases&gt;
&lt;enabled&gt;true&lt;/enabled&gt;
&lt;/releases&gt;
&lt;snapshots&gt;
&lt;enabled&gt;true&lt;/enabled&gt;
&lt;/snapshots&gt;
&lt;/repository&gt;
&lt;/repositories&gt;
&lt;!-- web --&gt;
&lt;dependency&gt;
&lt;groupId&gt;javax.servlet&lt;/groupId&gt;
&lt;artifactId&gt;javax.servlet-api&lt;/artifactId&gt;
&lt;version&gt;${serverlet.version}&lt;/version&gt;
&lt;scope&gt;provided&lt;/scope&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
&lt;groupId&gt;javax.ws.rs&lt;/groupId&gt;
&lt;artifactId&gt;javax.ws.rs-api&lt;/artifactId&gt;
&lt;version&gt;${jaxrs.api.version}&lt;/version&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
&lt;groupId&gt;org.glassfish.jersey.core&lt;/groupId&gt;
&lt;artifactId&gt;jersey-common&lt;/artifactId&gt;
&lt;version&gt;${jersey.version}&lt;/version&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
&lt;groupId&gt;org.glassfish.jersey.core&lt;/groupId&gt;
&lt;artifactId&gt;jersey-server&lt;/artifactId&gt;
&lt;version&gt;${jersey.version}&lt;/version&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
&lt;groupId&gt;org.glassfish.jersey.containers&lt;/groupId&gt;
&lt;artifactId&gt;jersey-container-servlet&lt;/artifactId&gt;
&lt;version&gt;${jersey.version}&lt;/version&gt;
&lt;/dependency&gt;
&lt;profiles&gt;
&lt;!-- active when building on eitch's machines --&gt;
&lt;profile&gt;
&lt;id&gt;m2e.eitchpc&lt;/id&gt;
&lt;activation&gt;
&lt;property&gt;
&lt;name&gt;user.name&lt;/name&gt;
&lt;value&gt;eitch&lt;/value&gt;
&lt;/property&gt;
&lt;os&gt;
&lt;family&gt;unix&lt;/family&gt;
&lt;/os&gt;
&lt;/activation&gt;
&lt;properties&gt;
&lt;strolch.env&gt;dev.eitchpc&lt;/strolch.env&gt;
&lt;/properties&gt;
&lt;/profile&gt;
&lt;profile&gt;
&lt;id&gt;m2e.eitchmac&lt;/id&gt;
&lt;activation&gt;
&lt;property&gt;
&lt;name&gt;user.name&lt;/name&gt;
&lt;value&gt;eitch&lt;/value&gt;
&lt;/property&gt;
&lt;os&gt;
&lt;family&gt;mac&lt;/family&gt;
&lt;/os&gt;
&lt;/activation&gt;
&lt;properties&gt;
&lt;strolch.env&gt;dev.eitchmac&lt;/strolch.env&gt;
&lt;/properties&gt;
&lt;/profile&gt;
&lt;/profiles&gt;
&lt;!-- testing --&gt;
&lt;dependency&gt;
&lt;groupId&gt;junit&lt;/groupId&gt;
&lt;artifactId&gt;junit&lt;/artifactId&gt;
&lt;version&gt;${junit.version}&lt;/version&gt;
&lt;scope&gt;test&lt;/scope&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
&lt;groupId&gt;org.hamcrest&lt;/groupId&gt;
&lt;artifactId&gt;hamcrest-core&lt;/artifactId&gt;
&lt;version&gt;${hamcrest.version}&lt;/version&gt;
&lt;scope&gt;test&lt;/scope&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
&lt;groupId&gt;org.hamcrest&lt;/groupId&gt;
&lt;artifactId&gt;hamcrest-library&lt;/artifactId&gt;
&lt;version&gt;${hamcrest.version}&lt;/version&gt;
&lt;scope&gt;test&lt;/scope&gt;
&lt;/dependency&gt;
&lt;/dependencies&gt;
&lt;build&gt;
&lt;resources&gt;
&lt;!-- filter properties files, and copy the rest --&gt;
&lt;resource&gt;
&lt;directory&gt;src/main/resources&lt;/directory&gt;
&lt;filtering&gt;true&lt;/filtering&gt;
&lt;includes&gt;
&lt;include&gt;**/*.properties&lt;/include&gt;
&lt;/includes&gt;
&lt;/resource&gt;
&lt;resource&gt;
&lt;directory&gt;src/main/resources&lt;/directory&gt;
&lt;filtering&gt;false&lt;/filtering&gt;
&lt;excludes&gt;
&lt;exclude&gt;**/*.properties&lt;/exclude&gt;
&lt;/excludes&gt;
&lt;/resource&gt;
&lt;/resources&gt;
&lt;plugins&gt;
&lt;plugin&gt;
&lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
&lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt;
&lt;version&gt;${maven-compiler-plugin.version}&lt;/version&gt;
&lt;configuration&gt;
&lt;source&gt;${jdk.version}&lt;/source&gt;
&lt;target&gt;${jdk.version}&lt;/target&gt;
&lt;/configuration&gt;
&lt;/plugin&gt;
&lt;plugin&gt;
&lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
&lt;artifactId&gt;maven-war-plugin&lt;/artifactId&gt;
&lt;version&gt;${maven-war-plugin.version}&lt;/version&gt;
&lt;configuration&gt;
&lt;failOnMissingWebXml&gt;false&lt;/failOnMissingWebXml&gt;
&lt;warName&gt;${warFinalName}&lt;/warName&gt;
&lt;/configuration&gt;
&lt;/plugin&gt;
&lt;/plugins&gt;
&lt;/build&gt;
&lt;profiles&gt;
&lt;!-- active when building on eitch's machines --&gt;
&lt;profile&gt;
&lt;id&gt;m2e.eitchpc&lt;/id&gt;
&lt;activation&gt;
&lt;property&gt;
&lt;name&gt;user.name&lt;/name&gt;
&lt;value&gt;eitch&lt;/value&gt;
&lt;/property&gt;
&lt;os&gt;
&lt;family&gt;unix&lt;/family&gt;
&lt;/os&gt;
&lt;/activation&gt;
&lt;properties&gt;
&lt;strolch.env&gt;dev.eitchpc&lt;/strolch.env&gt;
&lt;/properties&gt;
&lt;/profile&gt;
&lt;profile&gt;
&lt;id&gt;m2e.eitchmac&lt;/id&gt;
&lt;activation&gt;
&lt;property&gt;
&lt;name&gt;user.name&lt;/name&gt;
&lt;value&gt;eitch&lt;/value&gt;
&lt;/property&gt;
&lt;os&gt;
&lt;family&gt;mac&lt;/family&gt;
&lt;/os&gt;
&lt;/activation&gt;
&lt;properties&gt;
&lt;strolch.env&gt;dev.eitchmac&lt;/strolch.env&gt;
&lt;/properties&gt;
&lt;/profile&gt;
&lt;/profiles&gt;
&lt;/project&gt;
</pre>
@ -361,7 +378,9 @@
&lt;/Parameters&gt;
&lt;EncryptionHandler class="li.strolch.privilege.handler.DefaultEncryptionHandler"&gt;
&lt;Parameters&gt;
&lt;Parameter name="hashAlgorithm" value="SHA-256"/&gt;
&lt;Parameter name="hashAlgorithm" value="PBKDF2WithHmacSHA512"/&gt;
&lt;Parameter name="hashIterations" value="10000"/&gt;
&lt;Parameter name="hashKeyLength" value="256"/&gt;
&lt;/Parameters&gt;
&lt;/EncryptionHandler&gt;
&lt;PersistenceHandler class="li.strolch.privilege.handler.XmlPersistenceHandler"&gt;

View File

@ -80,6 +80,8 @@ public class RestfulApplication extends ResourceConfig {
// add strolch resources
register(AuthenticationService.class);
register(ModelQuery.class);
register(Inspector.class);
// add project resources by package name
packages(BooksResource.class.getPackage().getName());
@ -199,9 +201,7 @@ public class BooksResource {
try (StrolchTransaction tx = RestfulStrolchComponent.getInstance().openTx(cert, getClass())) {
// prepare the query
ResourceQuery&lt;JsonObject&gt; query = new BooksQuery&lt;JsonObject&gt;() //
// set transformation to JSON
.setVisitor(new StrolchElementToJsonVisitor().flat());
ResourceQuery&lt;Resource&gt; query = new BooksQuery&lt;JsonObject&gt;();
// prepare selections
if (StringHelper.isEmpty(queryS)) {
@ -217,13 +217,15 @@ public class BooksResource {
}
// perform the query
List&lt;JsonObject&gt; books = tx.doQuery(query);
List&lt;Resource&gt; books = tx.doQuery(query);
// perform paging
Paging&lt;JsonObject&gt; page = Paging.asPage(books, offset, limit);
Paging&lt;Resource&gt; paging = Paging.asPage(books, offset, limit);
List&lt;Resource&gt; page = paging.getPage();
// return result
return ResponseUtil.toResponse(StrolchRestfulConstants.DATA, page.getPage());
ResourceVisitor&lt;JsonObject&gt; visitor = new StrolchRootElementToJsonVisitor().flat().asResourceVisitor();
return ResponseUtil.listToResponse(StrolchRestfulConstants.DATA, page, a -&gt; a.accept(visitor));
}
}
}
@ -259,7 +261,7 @@ public Response get(@Context HttpServletRequest request, @PathParam("id") String
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);
@ -336,12 +338,10 @@ public class CreateBookService extends AbstractService<JsonServiceArgument, Json
book = tx.getResourceTemplate(BookShopConstants.TYPE_BOOK);
// map all values from the JSON object into the new book element
new FromFlatJsonVisitor().visit(book, arg.jsonElement.getAsJsonObject());
book.accept(new FromFlatJsonVisitor(arg.jsonElement.getAsJsonObject()).ignoreBag(BAG_RELATIONS));
// add command to store the resource
AddResourceCommand cmd = new AddResourceCommand(getContainer(), tx);
cmd.setResource(book);
tx.addCommand(cmd);
// save changes
tx.add(book);
// notify the TX that it should commit on close
tx.commitOnClose();
@ -437,12 +437,10 @@ public class UpdateBookService extends AbstractService&lt;JsonServiceArgument, J
book = tx.getResourceBy(BookShopConstants.TYPE_BOOK, arg.objectId, true);
// map all values from the JSON object into the new book element
new FromFlatJsonVisitor().visit(book, arg.jsonElement.getAsJsonObject());
book.accept(new FromFlatJsonVisitor(arg.jsonElement.getAsJsonObject()).ignoreBag(BAG_RELATIONS));
// add command to update the resource
UpdateResourceCommand cmd = new UpdateResourceCommand(getContainer(), tx);
cmd.setResource(book);
tx.addCommand(cmd);
// save changes
tx.update(book);
// notify the TX that it should commit on close
tx.commitOnClose();
@ -527,10 +525,8 @@ public class RemoveBookService extends AbstractService&lt;StringServiceArgument,
// get the existing book
Resource book = tx.getResourceBy(BookShopConstants.TYPE_BOOK, arg.value, true);
// add command to remove the resource
RemoveResourceCommand cmd = new RemoveResourceCommand(getContainer(), tx);
cmd.setResource(book);
tx.addCommand(cmd);
// save changes
tx.remove(book);
// notify the TX that it should commit on close
tx.commitOnClose();