ResourcePath mediaUri = new ResourcePath(request.getRelativeUri()); if (!mediaUri.startsWith(uriPrefix)) mediaUri = mediaUri.withoutLeading(); // media if (mediaUri.startsWith("stillimages") || mediaUri.startsWith("movies")) if (mediaUri.getSegmentCount() == 3) final String extension = mediaUri.getExtension(); final String fileName = mediaUri.getTrailing(); // 20120802-0010.jpg mediaUri = mediaUri.withoutTrailing(); final String size = mediaUri.getTrailing(); // 1920 mediaUri = mediaUri.withoutTrailing(); mediaUri = mediaUri.appendedWith(fileName.replaceAll("\\..*$", "")) .appendedWith("" + size) .appendedWith("image." + extension); mediaUri = mediaUri.prependedWith(uriPrefix); final String redirect = mediaUri.asString(); log.info(">>>> permanently redirecting to {}", redirect); responseHolder.response().permanentRedirect(redirect).put(); final String extension = mediaUri.getExtension(); // jpg final String fileName = mediaUri.getTrailing(); // image.jpg mediaUri = mediaUri.withoutTrailing(); final String size = mediaUri.getTrailing(); // 1920 mediaUri = mediaUri.withoutTrailing(); final String mediaId = mediaUri.getTrailing(); // 20120802-0010
/******************************************************************************************************************* * ******************************************************************************************************************/ @Test(dataProvider = "relativePathProvider", dependsOnMethods = "must_properly_compute_asString") public void must_properly_compute_relative_paths (final @Nonnull String pathAsString, final @Nonnull String parentPathAsString, final @Nonnull String expectedPathAsString) { final ResourcePath underTest = new ResourcePath(pathAsString); final ResourcePath parentPath = new ResourcePath(parentPathAsString); final ResourcePath relativePath = underTest.relativeTo(parentPath); assertThat(relativePath.asString(), is(expectedPathAsString)); }
/******************************************************************************************************************* * * {@inheritDoc} * ******************************************************************************************************************/ @Override @Nonnull public DefaultRequest withRelativeUri (final @Nonnull String relativeUri) { return new DefaultRequest(baseUrl, new ResourcePath(relativeUri).urlDecoded().asString(), relativeUri, parametersMap, headersMap, preferredLocales); }
@Override @Nonnull protected String filter (final @Nonnull Matcher matcher) { final ResourcePath relativePath = new ResourcePath(matcher.group(1)).prependedWith("media"); return siteProvider.get().getSite().createLink(relativePath); } }
/******************************************************************************************************************* * * {@inheritDoc} * ******************************************************************************************************************/ @Override @Nonnull public String createLink (final @Nonnull ResourcePath relativeUri) { final ResourcePath link = new ResourcePath(contextPath).appendedWith(relativeUri); String linkAsString = requestHolder.get().getBaseUrl() + link.asString(); for (final LinkPostProcessor linkPostProcessor : linkPostProcessors) { linkAsString = linkPostProcessor.postProcess(linkAsString); } return linkAsString; }
@Override @Nonnull public String createLink (final @Nonnull ResourcePath relativeUri) { return relativeUri.asString(); }
/******************************************************************************************************************* * ******************************************************************************************************************/ @Test(dataProvider = "asStringProvider", dependsOnMethods = { "must_properly_create_an_empty_path", "must_properly_create_an_empty_path_from_string" }) public void must_properly_compute_asString (final @Nonnull ImmutableList<String> segments, final @Nonnull String expectedAsString) { final ResourcePath underTest = new ResourcePath(segments); assertThat(underTest.asString(), is(expectedAsString)); }
@Override @Nonnull public ResourcePath getPath() { return new ResourcePath(delegate.getPath()); }
/******************************************************************************************************************* * ******************************************************************************************************************/ @Test(dataProvider = "appendPrependProvider", dependsOnMethods = "must_properly_compute_asString") public void must_properly_prepend_path (final @Nonnull String pathAsString, final @Nonnull String secondPathAsString, final @Nonnull String expectedAppendedPathAsString, final @Nonnull String expectedPrependedPathAsString) { final ResourcePath underTest = new ResourcePath(pathAsString); final ResourcePath prependingPath = new ResourcePath(secondPathAsString); assertThat(underTest.prependedWith(prependingPath).asString(), is(expectedPrependedPathAsString)); }
/******************************************************************************************************************* * ******************************************************************************************************************/ @Test(dataProvider = "withoutLeadingAndTrailingProvider", dependsOnMethods = "must_properly_compute_asString") public void must_properly_compute_without_trailing (final @Nonnull String path, final @Nonnull String expectedPathWithoutLeadingAsString, final @Nonnull String expectedPathWithoutTrailingAsString) { final ResourcePath underTest = new ResourcePath(path); assertThat(underTest.withoutTrailing().asString(), is(expectedPathWithoutTrailingAsString)); }
/******************************************************************************************************************* * ******************************************************************************************************************/ @Test(dataProvider = "withoutLeadingAndTrailingProvider", dependsOnMethods = "must_properly_compute_asString") public void must_properly_compute_without_leading (final @Nonnull String pathAsString, final @Nonnull String expectedPathWithoutLeadingAsString, final @Nonnull String expectedPathWithoutTrailingAsString) { final ResourcePath underTest = new ResourcePath(pathAsString); assertThat(underTest.withoutLeading().asString(), is(expectedPathWithoutLeadingAsString)); }
/******************************************************************************************************************* * * {@inheritDoc} * ******************************************************************************************************************/ @Override @Nonnull protected List<? extends Type> computeResults() { final List<Type> result = new ArrayList<>(); for (final ResourceFile childFile : parentFile.findChildren().withRecursion(true).results()) { if (childFile.isFolder()) { try { final String relativeUri = childFile.getPath().relativeTo(resourceRootPath).urlDecoded().asString(); result.add(siteProvider.get().getSite().find(typeClass).withRelativePath(relativeUri).result()); } catch (NotFoundException e) { log.error("", e); } } } return result; }
/******************************************************************************************************************* * ******************************************************************************************************************/ @Nonnull protected ResourceFile createMockFolder (final @Nonnull ResourceFileSystem fileSystem, final @Nonnull ResourceFile parentFolder, final @Nonnull String name) { final ResourcePath path = parentFolder.getPath().appendedWith(name); final ResourceFile folder = createMockFolder(name); when(folder.getParent()).thenReturn(parentFolder); when(folder.getPath()).thenReturn(path); when(folder.toString()).thenReturn(path.asString()); when(fileSystem.findFileByPath(eq(path.asString()))).thenReturn(folder); final Collection<ResourceFile> children = new ArrayList<>(parentFolder.findChildren().results()); children.add(folder); when(parentFolder.findChildren()).thenReturn(new ListFinder(children)); return folder; }
/******************************************************************************************************************* * * ******************************************************************************************************************/ @Nonnull private Content findPostByExposedUri (final List<Content> allPosts, final @Nonnull ResourcePath exposedUri) throws NotFoundException, IOException { for (final Content post : allPosts) { try { if (exposedUri.equals(post.getExposedUri())) { return post; } } catch (NotFoundException e) { log.warn("{}", e.toString()); } catch (IOException e) { log.warn("", e); } } throw new NotFoundException("Blog post with exposedUri=" + exposedUri.asString()); }
/******************************************************************************************************************* * ******************************************************************************************************************/ @Test(dataProvider = "leadingAndTrailingProvider") public void must_properly_compute_trailing_segment (final @Nonnull String pathAsString, final @Nonnull String expectedLeadingSegment, final @Nonnull String expectedTrailingSegment) { final ResourcePath underTest = new ResourcePath(pathAsString); assertThat(underTest.getTrailing(), is(expectedTrailingSegment)); }
/******************************************************************************************************************* * ******************************************************************************************************************/ @Test(dataProvider = "segmentProvider", dependsOnMethods = "must_properly_compute_asString") public void must_properly_count_segments (final @Nonnull String pathAsString, final @Nonnull String expectedAsString, final @Nonnull List<String> expectedSegments) { final ResourcePath underTest = new ResourcePath(pathAsString); assertThat(underTest.getSegmentCount(), is(expectedSegments.size())); }
/******************************************************************************************************************* * ******************************************************************************************************************/ @Test(dataProvider = "nonRelativePathProvider", dependsOnMethods = "must_properly_compute_asString", expectedExceptions = IllegalArgumentException.class) public void must_properly_reject_non_relative_paths (final @Nonnull String pathAsString, final @Nonnull String parentPathAsString) { final ResourcePath underTest = new ResourcePath(pathAsString); final ResourcePath parentPath = new ResourcePath(parentPathAsString); underTest.relativeTo(parentPath); }
/******************************************************************************************************************* * * * ******************************************************************************************************************/ private void appendYearSelector (final @Nonnull StringBuilder builder, final @Nonnegative int firstYear, final @Nonnegative int lastYear, final @Nonnegative int selectedYear) { builder.append("<div class='nw-calendar-yearselector'>\n"); String separator = ""; for (int year = firstYear; year <= lastYear; year++) { builder.append(separator); separator = " | "; if (year != selectedYear) { final String url = site.createLink(siteNode.getRelativeUri().appendedWith("" + year)); builder.append(String.format("<a href='%s'>%d</a>%n", url, year)); } else { builder.append(year); } } builder.append("</div>\n"); }
/******************************************************************************************************************* * ******************************************************************************************************************/ @Test(dataProvider = "extensionProvider") public void must_properly_compute_extension (final @Nonnull String pathAsString, final @Nonnull String expectedExtension) { final ResourcePath underTest = new ResourcePath(pathAsString); assertThat(underTest.getExtension(), is(expectedExtension)); }
/******************************************************************************************************************* * ******************************************************************************************************************/ @Test(dataProvider = "startsWithProvider") public void must_properly_compute_startsWith (final @Nonnull String pathAsString, final @Nonnull String leadingSegment, final @Nonnull boolean expectedResult) { final ResourcePath underTest = new ResourcePath(pathAsString); assertThat(underTest.startsWith(leadingSegment), is(expectedResult)); }