diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000000..273fff0a80 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,11 @@ +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for all configuration options: +# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file + +version: 2 +updates: + - package-ecosystem: "maven" # See documentation for possible values + directory: "/" # Location of package manifests + schedule: + interval: "weekly" diff --git a/changes.md b/changes.md index 2a8afd36f4..fe8b5e7b23 100644 --- a/changes.md +++ b/changes.md @@ -1,7 +1,12 @@ Changes log =========== -- 2.6.1 (??-??-2025) +- 2.6.1 (??-??-2026) + - Bugs fixed + - Reuse an instance of Random class in RandomUtils. Issue #1487. + - Complete test classes. Issue #1490. + - Deprecate the implementations of the clone method. Issue #1498. + - Avoid non-short-circuit logic in FileClientHelper. Issue #1495. - 2.6.0 (29-06-2025) diff --git a/org.restlet.gwt/org.restlet.gwt/src/main/java/org/restlet/client/engine/util/ImmutableDate.java b/org.restlet.gwt/org.restlet.gwt/src/main/java/org/restlet/client/engine/util/ImmutableDate.java index c1fda55d38..b084b998a4 100644 --- a/org.restlet.gwt/org.restlet.gwt/src/main/java/org/restlet/client/engine/util/ImmutableDate.java +++ b/org.restlet.gwt/org.restlet.gwt/src/main/java/org/restlet/client/engine/util/ImmutableDate.java @@ -38,7 +38,7 @@ public ImmutableDate(Date date) { /** {@inheritDoc} */ @Override - public Object clone() { + public Object clone() throws UnsupportedOperationException { throw new UnsupportedOperationException("ImmutableDate is immutable"); } diff --git a/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/FormDataSetTestCase.java b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/FormDataSetTestCase.java deleted file mode 100644 index 2a3e21efa1..0000000000 --- a/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/FormDataSetTestCase.java +++ /dev/null @@ -1,47 +0,0 @@ -/** - * Copyright 2005-2024 Qlik - *

- * The contents of this file is subject to the terms of the Apache 2.0 open - * source license available at http://www.opensource.org/licenses/apache-2.0 - *

- * Restlet is a registered trademark of QlikTech International AB. - */ - -package org.restlet.ext.jetty; - -import org.junit.jupiter.api.Test; - -import java.io.IOException; - -/** - * Unit tests for the Form class. - * - * @author Jerome Louvel - */ -public class FormDataSetTestCase { - - /** - * Tests the cookies parsing. - */ - @Test - public void testParsing() throws IOException { -/* -TODO restore test of Form class - FormDataSet form = new FormDataSet(); - form.add("name", "John D. Mitchell"); - form.add("email", "john@bob.net"); - form.add("email2", "joe@bob.net"); - String query = form.encode(); - - Series newFormData = new FormReader(query, - CharacterSet.UTF_8, '&').read(); - - FormDataSet newForm = new FormDataSet(); - newForm.getEntries().addAll(newFormData); - String newQuery = newForm.encode(); - - assertEquals(query, newQuery); - */ - } - -} diff --git a/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/BaseConnectorsTestCase.java b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/BaseConnectorsTestCase.java index b6e068f9d4..52d3f4a71a 100644 --- a/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/BaseConnectorsTestCase.java +++ b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/BaseConnectorsTestCase.java @@ -64,13 +64,13 @@ protected void configureServer(final Server server) { protected abstract Application createApplication(); - protected List listTestCases() { + protected List listTestCases() { return List.of( // let's focus on Jetty server extension // new ConnectorTestCase(HttpServer.INTERNAL_HTTP, HttpClient.INTERNAL), // new ConnectorTestCase(HttpServer.INTERNAL_HTTP, HttpClient.JETTY), - new ConnectorTestCase(HttpServer.JETTY_HTTP, HttpClient.INTERNAL), - new ConnectorTestCase(HttpServer.JETTY_HTTP, HttpClient.JETTY) + new ConnectorsPair(HttpServer.JETTY_HTTP, HttpClient.INTERNAL), + new ConnectorsPair(HttpServer.JETTY_HTTP, HttpClient.JETTY) ); } diff --git a/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/ConnectorTestCase.java b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/ConnectorsPair.java similarity index 72% rename from org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/ConnectorTestCase.java rename to org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/ConnectorsPair.java index 36b45ff6f0..328d1f0f8e 100644 --- a/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/ConnectorTestCase.java +++ b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/ConnectorsPair.java @@ -2,11 +2,11 @@ import static java.lang.String.format; -public class ConnectorTestCase { +public class ConnectorsPair { final BaseConnectorsTestCase.HttpServer httpServer; final BaseConnectorsTestCase.HttpClient httpClient; - public ConnectorTestCase(BaseConnectorsTestCase.HttpServer httpServer, BaseConnectorsTestCase.HttpClient httpClient) { + public ConnectorsPair(BaseConnectorsTestCase.HttpServer httpServer, BaseConnectorsTestCase.HttpClient httpClient) { this.httpServer = httpServer; this.httpClient = httpClient; } diff --git a/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/SslBaseConnectorsTestCase.java b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/SslBaseConnectorsTestCase.java index d82d697aea..fb47a1935b 100644 --- a/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/SslBaseConnectorsTestCase.java +++ b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/SslBaseConnectorsTestCase.java @@ -58,13 +58,13 @@ public static void globalSetUp() throws IOException { } @Override - protected List listTestCases() { + protected List listTestCases() { return List.of( // let's focus on Jetty server extension // new ConnectorTestCase(HttpServer.INTERNAL_HTTPS, HttpClient.JETTY), // new ConnectorTestCase(HttpServer.INTERNAL_HTTPS, HttpClient.INTERNAL), - new ConnectorTestCase(HttpServer.JETTY_HTTPS, HttpClient.INTERNAL), - new ConnectorTestCase(HttpServer.JETTY_HTTPS, HttpClient.JETTY) + new ConnectorsPair(HttpServer.JETTY_HTTPS, HttpClient.INTERNAL), + new ConnectorsPair(HttpServer.JETTY_HTTPS, HttpClient.JETTY) ); } diff --git a/org.restlet.java/org.restlet.ext.odata/src/main/java/org/restlet/ext/odata/Query.java b/org.restlet.java/org.restlet.ext.odata/src/main/java/org/restlet/ext/odata/Query.java index 393f23409a..bffd7d2223 100644 --- a/org.restlet.java/org.restlet.ext.odata/src/main/java/org/restlet/ext/odata/Query.java +++ b/org.restlet.java/org.restlet.ext.odata/src/main/java/org/restlet/ext/odata/Query.java @@ -395,6 +395,7 @@ public void execute() throws Exception { entities.add(entryContentHandler.getEntity()); } } + break; default: // Can only guess entity and entity set, a priori. // TODO May we go a step further by analyzing the metadata diff --git a/org.restlet.java/org.restlet.ext.spring/src/test/java/org/restlet/ext/spring/SpringTestCase.java b/org.restlet.java/org.restlet.ext.spring/src/test/java/org/restlet/ext/spring/SpringTestCase.java index 5947fb36b4..70e2f13972 100644 --- a/org.restlet.java/org.restlet.ext.spring/src/test/java/org/restlet/ext/spring/SpringTestCase.java +++ b/org.restlet.java/org.restlet.ext.spring/src/test/java/org/restlet/ext/spring/SpringTestCase.java @@ -18,6 +18,8 @@ import org.springframework.context.support.ClassPathXmlApplicationContext; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; /** * Unit test case for the Spring extension. @@ -33,7 +35,9 @@ public void testSpring() throws Exception { // Start the Restlet component Component component = (Component) ctx.getBean("component"); component.start(); + assertTrue(component.isStarted()); component.stop(); + assertFalse(component.isStarted()); } @Test diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Reference.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Reference.java index 7cdae27d8e..2cafe5c570 100644 --- a/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Reference.java +++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Reference.java @@ -638,8 +638,16 @@ public Reference addSegment(String value) { return this; } + /** + * @deprecated Use the {@code copy} method instead. + */ @Override + @Deprecated public Reference clone() { + return copy(); + } + + public Reference copy() { final Reference newRef = new Reference(); if (this.baseRef == null) { @@ -647,7 +655,7 @@ public Reference clone() { } else if (equals(this.baseRef)) { newRef.baseRef = newRef; } else { - newRef.baseRef = this.baseRef.clone(); + newRef.baseRef = this.baseRef.copy(); } newRef.fragmentIndex = this.fragmentIndex; diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/local/FileClientHelper.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/local/FileClientHelper.java index 000e290012..90cf92e9eb 100644 --- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/local/FileClientHelper.java +++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/local/FileClientHelper.java @@ -106,7 +106,7 @@ protected boolean checkExtensionsConsistency(File file) { * * @param fileName The name of the resource * @param representation The provided representation. - * @return True if the metadata of the representation are compatible with the + * @return True if the metadata of the representation is compatible with the * metadata extracted from the filename */ private boolean checkMetadataConsistency(String fileName, Representation representation) { @@ -208,7 +208,7 @@ private static boolean isFileInDirectory(final Directory directory, final File f final String fileAbsolute = directory.getRootRef().getPath(true); final String filePath; - if (fileAbsolute.indexOf(':') == 2 | fileAbsolute.indexOf('|') == 2) { + if (fileAbsolute.indexOf(':') == 2 || fileAbsolute.indexOf('|') == 2) { filePath = fileAbsolute.substring(1); } else { filePath = fileAbsolute; @@ -541,7 +541,7 @@ private Status createFile(Request request, File file) { } private void cleanTemporaryFileIfUploadNotResumed(File tmp) { - if (tmp.exists() && !isResumeUpload()) { + if (tmp!= null && tmp.exists() && !isResumeUpload()) { IoUtils.delete(tmp); } } @@ -567,18 +567,14 @@ private void updateFileExtension(StringBuilder fileName, Metadata metadata) { boolean defaultMetadata = true; if (getMetadataService() != null) { - if (metadata instanceof Language) { - Language language = (Language) metadata; - defaultMetadata = language.equals(getMetadataService().getDefaultLanguage()); - } else if (metadata instanceof MediaType) { - MediaType mediaType = (MediaType) metadata; - defaultMetadata = mediaType.equals(getMetadataService().getDefaultMediaType()); - } else if (metadata instanceof CharacterSet) { - CharacterSet characterSet = (CharacterSet) metadata; - defaultMetadata = characterSet.equals(getMetadataService().getDefaultCharacterSet()); - } else if (metadata instanceof Encoding) { - Encoding encoding = (Encoding) metadata; - defaultMetadata = encoding.equals(getMetadataService().getDefaultEncoding()); + if (metadata instanceof final Language language) { + defaultMetadata = language.equals(getMetadataService().getDefaultLanguage()); + } else if (metadata instanceof final MediaType mediaType) { + defaultMetadata = mediaType.equals(getMetadataService().getDefaultMediaType()); + } else if (metadata instanceof final CharacterSet characterSet) { + defaultMetadata = characterSet.equals(getMetadataService().getDefaultCharacterSet()); + } else if (metadata instanceof final Encoding encoding) { + defaultMetadata = encoding.equals(getMetadataService().getDefaultEncoding()); } } diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/util/AlphaNumericComparator.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/util/AlphaNumericComparator.java index 313b10f5c5..f8d0d3bce8 100644 --- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/util/AlphaNumericComparator.java +++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/util/AlphaNumericComparator.java @@ -12,28 +12,28 @@ /** * Optimized public-domain implementation of a Java alphanumeric sort. *

- * + * * This implementation uses a single comparison pass over the characters in a - * CharSequence, and returns as soon as a differing character is found, unless + * CharSequence and returns as soon as a differing character is found, unless * the difference occurs in a series of numeric characters, in which case that * series is followed to its end. Numeric series of equal length are compared * numerically, that is, according to the most significant (leftmost) differing * digit. Series of unequal length are compared by their length. *

- * + * * This implementation appears to be 2-5 times faster than alphanumeric - * comparators based based on substring analysis, with a lighter memory + * comparators based on substring analysis, with a lighter memory * footprint. *

- * + * * This alphanumeric comparator has approximately 20%-50% the performance of the * lexical String.compareTo() operation. Character sequences without numeric * data are compared more quickly. *

- * + * * Dedicated to the public domain by the original author: - * http://creativecommons.org/licenses/publicdomain/ - * + * Public Domain List + * * @author Rob Heittman, Solertium * Corporation */ diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/util/AlphabeticalComparator.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/util/AlphabeticalComparator.java index f88f95785c..760e574637 100644 --- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/util/AlphabeticalComparator.java +++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/util/AlphabeticalComparator.java @@ -15,7 +15,7 @@ import java.util.Comparator; /** - * Allows to sort the list of references set by the resource. + * Allows sorting the list of references set by the resource. * * @author Jerome Louvel */ diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/routing/Router.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/routing/Router.java index a35b73a990..ac3159808b 100644 --- a/org.restlet.java/org.restlet/src/main/java/org/restlet/routing/Router.java +++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/routing/Router.java @@ -94,7 +94,7 @@ public class Router extends Restlet { /** * Each call will be randomly routed to one of the routes that reached the - * required score. If the random route selected is not a match then the + * required score. If the random route selected is not a match, then the * immediate next route is evaluated until one matching route is found. If we * get back to the initial random route selected with no match, then we return * null. Unless all the routes score above the required score, this mode will diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/util/RouteList.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/util/RouteList.java index d46f478162..ddf7f8c819 100644 --- a/org.restlet.java/org.restlet/src/main/java/org/restlet/util/RouteList.java +++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/util/RouteList.java @@ -16,8 +16,8 @@ import java.util.Collections; import java.util.List; -import java.util.Random; import java.util.concurrent.CopyOnWriteArrayList; +import java.util.concurrent.ThreadLocalRandom; /** * Modifiable list of routes with some helper methods. Note that this class @@ -34,14 +34,14 @@ * @see java.util.List */ public final class RouteList extends WrapperList { - /** The index of the last route used in the round robin mode. */ + /** The index of the last route used in the round-robin mode. */ private volatile int lastIndex; /** * Constructor. */ public RouteList() { - super(new CopyOnWriteArrayList()); + super(new CopyOnWriteArrayList<>()); this.lastIndex = -1; } @@ -51,7 +51,7 @@ public RouteList() { * @param delegate The delegate list. */ public RouteList(List delegate) { - super(new CopyOnWriteArrayList(delegate)); + super(new CopyOnWriteArrayList<>(delegate)); this.lastIndex = -1; } @@ -120,7 +120,7 @@ public synchronized Route getLast(Request request, Response response, float requ } /** - * Returns a next route match in a round robin mode for a given call. + * Returns a next route match in a round-robin mode for a given call. * * @param request The request to score. * @param response The response to score. @@ -159,7 +159,7 @@ public synchronized Route getRandom(Request request, Response response, float re int length = size(); if (length > 0) { - int j = new Random().nextInt(length); + int j = ThreadLocalRandom.current().nextInt(length); Route route = get(j); if (route.score(request, response) >= requiredScore) { @@ -169,7 +169,7 @@ public synchronized Route getRandom(Request request, Response response, float re boolean loopedAround = false; do { - if ((j == length) && (loopedAround == false)) { + if ((j == length) && !loopedAround) { j = 0; loopedAround = true; } @@ -187,7 +187,7 @@ public synchronized Route getRandom(Request request, Response response, float re } /** - * Removes all routes routing to a given target. + * Removes all routes to a given target. * * @param target The target Restlet to detach. */ diff --git a/org.restlet.java/org.restlet/src/test/java/org/restlet/RestartTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/RestartTestCase.java index 27e73d0cfe..a2e47b8964 100644 --- a/org.restlet.java/org.restlet/src/test/java/org/restlet/RestartTestCase.java +++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/RestartTestCase.java @@ -9,6 +9,9 @@ package org.restlet; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + import org.junit.jupiter.api.Test; import org.restlet.data.Protocol; @@ -16,32 +19,30 @@ /** * Test the ability of a connector to be restarted. - * + * * @author Jerome Louvel */ public class RestartTestCase { - @Test - public void testRestart() throws Exception { + @Test + void testRestart() throws Exception { final Duration waitTime = Duration.ofMillis(10); final Server connector = new Server(Protocol.HTTP, 0, (Restlet) null); - System.out.print("Starting connector... "); connector.start(); - System.out.println("done"); + assertTrue(connector.isStarted()); Thread.sleep(waitTime.toMillis()); - System.out.print("Stopping connector... "); connector.stop(); - System.out.println("done"); + assertFalse(connector.isStarted()); Thread.sleep(waitTime.toMillis()); - System.out.print("Restarting connector... "); connector.start(); - System.out.println("done"); + assertTrue(connector.isStarted()); Thread.sleep(waitTime.toMillis()); connector.stop(); + assertFalse(connector.isStarted()); } } diff --git a/org.restlet.java/org.restlet/src/test/java/org/restlet/data/ZipClientTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/data/ZipClientTestCase.java index 52022aaece..6c88dd4db9 100644 --- a/org.restlet.java/org.restlet/src/test/java/org/restlet/data/ZipClientTestCase.java +++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/data/ZipClientTestCase.java @@ -11,6 +11,8 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; import org.restlet.representation.EmptyRepresentation; import org.restlet.representation.StringRepresentation; import org.restlet.resource.ClientResource; @@ -29,6 +31,7 @@ * * @author Remi Dewitte */ +@Disabled("flaky on github") public class ZipClientTestCase { private File zipFile; @@ -44,8 +47,8 @@ protected void tearDownEach() throws Exception { zipFile.delete(); } - // @Test TODO seems flaky on github - public void testFileClient() throws IOException { + @Test + void testFileClient() throws IOException { String text = "Test content\r\nLine 2\r\nLine2"; String text2 = "Test content\nLine 2"; LocalReference fr = LocalReference.createFileReference(zipFile); @@ -58,42 +61,42 @@ public void testFileClient() throws IOException { // Write test.txt as first entry ClientResource testFileEntryClientResource = new ClientResource(testFileEntryReference); testFileEntryClientResource.put(new StringRepresentation(text)); - assertEquals(testFileEntryClientResource.getStatus(), Status.SUCCESS_CREATED); + assertEquals(Status.SUCCESS_CREATED, testFileEntryClientResource.getStatus()); // Get the text and compare to the original testFileEntryClientResource.get(); - assertEquals(testFileEntryClientResource.getStatus(), Status.SUCCESS_OK); - assertEquals(testFileEntryClientResource.getResponseEntity().getText(), text); + assertEquals(Status.SUCCESS_OK, testFileEntryClientResource.getStatus()); + assertEquals(text, testFileEntryClientResource.getResponseEntity().getText()); testFileEntryClientResource.release(); // Write test2.txt as second entry ClientResource test2FileEntryClientResource = new ClientResource(test2FileEntryReference); test2FileEntryClientResource.put(new StringRepresentation(text2)); - assertEquals(test2FileEntryClientResource.getStatus(), Status.SUCCESS_OK); + assertEquals(Status.SUCCESS_OK, test2FileEntryClientResource.getStatus()); // Check that the first entry has not been overwritten testFileEntryClientResource.get(); - assertEquals(testFileEntryClientResource.getStatus(), Status.SUCCESS_OK); - assertEquals(testFileEntryClientResource.getResponseEntity().getText(), text); + assertEquals(Status.SUCCESS_OK, testFileEntryClientResource.getStatus()); + assertEquals(text, testFileEntryClientResource.getResponseEntity().getText()); testFileEntryClientResource.release(); // Put a directory ClientResource dirEntryClientResource = new ClientResource(dirEntryReference); dirEntryClientResource.put(new EmptyRepresentation()); - assertEquals(dirEntryClientResource.getStatus(), Status.SUCCESS_OK); + assertEquals(Status.SUCCESS_OK, dirEntryClientResource.getStatus()); dirEntryClientResource.get(); - assertEquals(dirEntryClientResource.getStatus(), Status.SUCCESS_OK); + assertEquals(Status.SUCCESS_OK, dirEntryClientResource.getStatus()); // Add a file inside the directory ClientResource testFileInDirEntryCLientResource = new ClientResource(test3FileInDirEntryReference); testFileInDirEntryCLientResource.put(new StringRepresentation(text)); - assertEquals(testFileInDirEntryCLientResource.getStatus(), Status.SUCCESS_OK); + assertEquals(Status.SUCCESS_OK, testFileInDirEntryCLientResource.getStatus()); // Check that the second entry is still there test2FileEntryClientResource.get(); - assertEquals(test2FileEntryClientResource.getStatus(), Status.SUCCESS_OK, "Could not get " + test2FileEntryReference); - assertEquals(test2FileEntryClientResource.getResponseEntity().getText(), text2); + assertEquals(Status.SUCCESS_OK, test2FileEntryClientResource.getStatus(), "Could not get " + test2FileEntryReference); + assertEquals(text2, test2FileEntryClientResource.getResponseEntity().getText()); // Check that content negotiation does not work ClientResource rTest2 = new ClientResource(zr + "!test2"); diff --git a/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/util/AlphaNumericComparatorTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/util/AlphaNumericComparatorTestCase.java index e62f890faf..17706c04e2 100644 --- a/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/util/AlphaNumericComparatorTestCase.java +++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/util/AlphaNumericComparatorTestCase.java @@ -10,6 +10,8 @@ package org.restlet.engine.util; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; import org.restlet.data.Reference; import org.restlet.resource.Directory; @@ -18,6 +20,7 @@ import java.util.List; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; /** * Test case for the alphanum algorithm used by {@link Directory}. @@ -49,13 +52,16 @@ public void testBug() { assertEquals(expected, result); } - @Test - public void test02() { + @ParameterizedTest + @CsvSource({ + "Intel 5000X,Intel 5500", + "3,66", + "200,66", + "18,2" + }) + void testFirstIsLessThan(final String first, final String second) { AlphaNumericComparator anc = new AlphaNumericComparator(); - System.out.println(anc.compare("Intel 5000X", "Intel 5500")); - System.out.println(anc.compare("66", "3")); - System.out.println(anc.compare("200", "66")); - System.out.println(anc.compare("18", "2")); + assertTrue(anc.compare(first, second) < 0); } } diff --git a/readme.md b/readme.md index 407367f2d8..8d7c7ea4db 100644 --- a/readme.md +++ b/readme.md @@ -20,7 +20,7 @@ To learn more about Restlet Framework, please have a look at the following resou * [Tutorials](https://restlet.talend.com/documentation/tutorials/2.6/) * [User Guide](https://restlet.talend.com/documentation/user-guide/2.6/) * [JavaDocs](https://restlet.talend.com/documentation/javadocs/2.6/) -* [Change Log](https://restlet.talend.com/documentation/2.6/changelog) +* [What's New](https://restlet.talend.com/documentation/whats-new/2.6/) * [Issues](https://github.com/restlet/restlet-framework-java/issues) * [Discussions](https://github.com/restlet/restlet-framework-java/discussions) * [Stack Overflow](http://stackoverflow.com/questions/tagged/restlet)