private Url encryptUrl(final Url url) { if (url.getSegments().isEmpty() && url.getQueryParameters().isEmpty()) { return url; } final String encryptedUrlString = this.getCrypt().encryptUrlSafe(url.toString()); final Url encryptedUrl = new Url(url.getCharset()); encryptedUrl.getSegments().add(encryptedUrlString); final int numberOfSegments = url.getSegments().size(); final HashedSegmentGenerator generator = new HashedSegmentGenerator(encryptedUrlString); for (int segNo = 0; segNo < numberOfSegments; ++segNo) { encryptedUrl.getSegments().add(generator.next()); } return encryptedUrl; }