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)