From 60a3b929dc10a10b187d40c83533d2a6f8a5c96f Mon Sep 17 00:00:00 2001 From: Jad El-khoury Date: Wed, 23 Oct 2019 11:30:18 +0200 Subject: [PATCH] =?UTF-8?q?Allow=20configuration=20of=20PagedTRS=20=C3=ADm?= =?UTF-8?q?plementation,=20to=20be=20able=20to=20specify=20(#36)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit the "base" & "changelog" relative paths. --- .../lyo/oslc4j/trs/server/InmemPagedTrs.java | 36 +++++++++++++++++-- .../service/TrackedResourceSetService.java | 4 +-- 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/eclipse/lyo/oslc4j/trs/server/InmemPagedTrs.java b/src/main/java/org/eclipse/lyo/oslc4j/trs/server/InmemPagedTrs.java index e15d9ce..d6106f2 100644 --- a/src/main/java/org/eclipse/lyo/oslc4j/trs/server/InmemPagedTrs.java +++ b/src/main/java/org/eclipse/lyo/oslc4j/trs/server/InmemPagedTrs.java @@ -68,6 +68,16 @@ public class InmemPagedTrs implements PagedTrs, ResourceEventHandler { */ private final int basePageLimit; + /** + * The relative path of the base, may contain URI template parameters. + */ + private final String baseRelativePath; + + /** + * The relative path of the changeLog, may contain URI template parameters. + */ + private final String changeLogRelativePath; + /** * List of base resources */ @@ -78,6 +88,24 @@ public class InmemPagedTrs implements PagedTrs, ResourceEventHandler { */ private final List changelogResources = new ArrayList<>(); + /** + * @param basePageLimit Max items per Base page + * @param changelogPageLimit Max items per Changelog page + * @param uriBase Set it via eg
UriBuilder.fromUri(OSLC4JUtils.getServletURI()).path("trs").build()
+ * @param baseRelativePath The relative path of the base, may contain URI template parameters. + * @param changeLogRelativePath The relative path of the changeLog, may contain URI template parameters. + * @param baseResourceUris Initial set of the TRS Base resource URIs + */ + public InmemPagedTrs(final int basePageLimit, final int changelogPageLimit, final URI uriBase, + final String baseRelativePath, final String changeLogRelativePath, final Collection baseResourceUris) { + this.basePageLimit = basePageLimit; + this.changelogPageLimit = changelogPageLimit; + this.uriBase = uriBase; + this.baseRelativePath = baseRelativePath; + this.changeLogRelativePath = changeLogRelativePath; + initBase(baseResourceUris); + } + /** * @param basePageLimit Max items per Base page * @param changelogPageLimit Max items per Changelog page @@ -89,6 +117,8 @@ public InmemPagedTrs(final int basePageLimit, final int changelogPageLimit, fina this.basePageLimit = basePageLimit; this.changelogPageLimit = changelogPageLimit; this.uriBase = uriBase; + this.baseRelativePath = "base"; + this.changeLogRelativePath = "changelog"; initBase(baseResourceUris); } @@ -303,18 +333,18 @@ private Base getLastBaseResource() { } private URI createBaseUri() { - final URI uri = getUriBuilder().path("base").build(); + final URI uri = getUriBuilder().path(this.baseRelativePath).build(); return uri; } private URI createBasePageUri(final int pageId) { - final URI uri = getUriBuilder().path("base").path(String.valueOf(pageId)).build(); + final URI uri = getUriBuilder().path(this.baseRelativePath).path(String.valueOf(pageId)).build(); return uri; } private URI createChangelogUri() { final int nextPageId = this.changelogResources.size() + 1; - final URI uri = getUriBuilder().path("changelog").path(String.valueOf(nextPageId)).build(); + final URI uri = getUriBuilder().path(this.changeLogRelativePath).path(String.valueOf(nextPageId)).build(); return uri; } diff --git a/src/main/java/org/eclipse/lyo/oslc4j/trs/server/service/TrackedResourceSetService.java b/src/main/java/org/eclipse/lyo/oslc4j/trs/server/service/TrackedResourceSetService.java index c55ed00..e370212 100644 --- a/src/main/java/org/eclipse/lyo/oslc4j/trs/server/service/TrackedResourceSetService.java +++ b/src/main/java/org/eclipse/lyo/oslc4j/trs/server/service/TrackedResourceSetService.java @@ -54,8 +54,8 @@ @OslcService(TRSConstants.TRS_NAMESPACE) public class TrackedResourceSetService { private static final Logger log = LoggerFactory.getLogger(TrackedResourceSetService.class); - private static final String BASE_PATH = "base"; - private static final String CHANGELOG_PATH = "changeLog"; + public static final String BASE_PATH = "base"; + public static final String CHANGELOG_PATH = "changeLog"; public static final String RESOURCE_PATH = "/trs"; /**