();
+ this.registeredServers = new CopyOnWriteArrayList<>();
+ this.registeredAuthenticators = new CopyOnWriteArrayList<>();
+ this.registeredConverters = new CopyOnWriteArrayList<>();
if (discoverHelpers) {
try {
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/RestletHelper.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/RestletHelper.java
index 96e1436a13..ac62bddcdf 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/RestletHelper.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/RestletHelper.java
@@ -9,10 +9,6 @@
package org.restlet.engine;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.logging.Logger;
-
import org.restlet.Context;
import org.restlet.Request;
import org.restlet.Response;
@@ -21,6 +17,10 @@
import org.restlet.service.MetadataService;
import org.restlet.util.Series;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.logging.Logger;
+
/**
* Delegate used by API classes to get support from the implementation classes.
* Note that this is an SPI class that is not intended for public usage.
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/adapter/Adapter.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/adapter/Adapter.java
index a95f183e4a..dbe50bdb02 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/adapter/Adapter.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/adapter/Adapter.java
@@ -9,10 +9,10 @@
package org.restlet.engine.adapter;
-import java.util.logging.Logger;
-
import org.restlet.Context;
+import java.util.logging.Logger;
+
/**
* Converter between high-level and low-level HTTP calls.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/adapter/Call.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/adapter/Call.java
index 2e0f430809..bdddf70f40 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/adapter/Call.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/adapter/Call.java
@@ -9,10 +9,6 @@
package org.restlet.engine.adapter;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.logging.Logger;
-
import org.restlet.Context;
import org.restlet.data.Header;
import org.restlet.data.Protocol;
@@ -21,6 +17,10 @@
import org.restlet.representation.Representation;
import org.restlet.util.Series;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.logging.Logger;
+
/**
* Low-level call for the HTTP connectors.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/adapter/ClientAdapter.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/adapter/ClientAdapter.java
index 3e786f0322..bd7fa75e11 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/adapter/ClientAdapter.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/adapter/ClientAdapter.java
@@ -9,9 +9,6 @@
package org.restlet.engine.adapter;
-import java.io.IOException;
-import java.util.logging.Level;
-
import org.restlet.Context;
import org.restlet.Request;
import org.restlet.Response;
@@ -23,6 +20,9 @@
import org.restlet.engine.header.HeaderUtils;
import org.restlet.util.Series;
+import java.io.IOException;
+import java.util.logging.Level;
+
/**
* Converter of high-level uniform calls into low-level HTTP client calls.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/adapter/ClientCall.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/adapter/ClientCall.java
index 70f491f634..f75e608983 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/adapter/ClientCall.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/adapter/ClientCall.java
@@ -9,18 +9,6 @@
package org.restlet.engine.adapter;
-import static org.restlet.data.Encoding.IDENTITY;
-import static org.restlet.data.Status.CONNECTOR_ERROR_COMMUNICATION;
-import static org.restlet.data.Status.REDIRECTION_NOT_MODIFIED;
-import static org.restlet.data.Status.SUCCESS_NO_CONTENT;
-import static org.restlet.data.Status.SUCCESS_RESET_CONTENT;
-import static org.restlet.representation.Representation.UNKNOWN_SIZE;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.logging.Level;
-
import org.restlet.Context;
import org.restlet.Request;
import org.restlet.Response;
@@ -33,6 +21,15 @@
import org.restlet.representation.Representation;
import org.restlet.util.Series;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.logging.Level;
+
+import static org.restlet.data.Encoding.IDENTITY;
+import static org.restlet.data.Status.*;
+import static org.restlet.representation.Representation.UNKNOWN_SIZE;
+
/**
* Low-level HTTP client call.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/adapter/HttpClientHelper.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/adapter/HttpClientHelper.java
index 0c8cea6ce8..61a4fefd3f 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/adapter/HttpClientHelper.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/adapter/HttpClientHelper.java
@@ -9,8 +9,6 @@
package org.restlet.engine.adapter;
-import java.util.logging.Level;
-
import org.restlet.Client;
import org.restlet.Context;
import org.restlet.Request;
@@ -18,6 +16,8 @@
import org.restlet.data.Status;
import org.restlet.engine.connector.ClientHelper;
+import java.util.logging.Level;
+
/**
* Base HTTP client connector. Here is the list of parameters that are
* supported. They should be set in the Client's context before it is started:
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/adapter/HttpRequest.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/adapter/HttpRequest.java
index 271868bf5b..2370626a09 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/adapter/HttpRequest.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/adapter/HttpRequest.java
@@ -9,43 +9,10 @@
package org.restlet.engine.adapter;
-import static org.restlet.engine.header.HeaderConstants.HEADER_IF_MATCH;
-import static org.restlet.engine.header.HeaderConstants.HEADER_IF_MODIFIED_SINCE;
-import static org.restlet.engine.header.HeaderConstants.HEADER_IF_NONE_MATCH;
-import static org.restlet.engine.header.HeaderConstants.HEADER_IF_RANGE;
-import static org.restlet.engine.header.HeaderConstants.HEADER_IF_UNMODIFIED_SINCE;
-
-import java.io.IOException;
-import java.util.Date;
-import java.util.List;
-import java.util.Set;
-import java.util.logging.Level;
-
import org.restlet.Context;
import org.restlet.Request;
-import org.restlet.data.CacheDirective;
-import org.restlet.data.ChallengeResponse;
-import org.restlet.data.ClientInfo;
-import org.restlet.data.Conditions;
-import org.restlet.data.Cookie;
-import org.restlet.data.Header;
-import org.restlet.data.Method;
-import org.restlet.data.Range;
-import org.restlet.data.RecipientInfo;
-import org.restlet.data.Reference;
-import org.restlet.data.Tag;
-import org.restlet.data.Warning;
-import org.restlet.engine.header.CacheDirectiveReader;
-import org.restlet.engine.header.CookieReader;
-import org.restlet.engine.header.ExpectationReader;
-import org.restlet.engine.header.HeaderConstants;
-import org.restlet.engine.header.HeaderReader;
-import org.restlet.engine.header.PreferenceReader;
-import org.restlet.engine.header.RangeReader;
-import org.restlet.engine.header.RecipientInfoReader;
-import org.restlet.engine.header.StringReader;
-import org.restlet.engine.header.TagReader;
-import org.restlet.engine.header.WarningReader;
+import org.restlet.data.*;
+import org.restlet.engine.header.*;
import org.restlet.engine.security.AuthenticatorUtils;
import org.restlet.engine.util.DateUtils;
import org.restlet.engine.util.ReferenceUtils;
@@ -53,6 +20,14 @@
import org.restlet.representation.Representation;
import org.restlet.util.Series;
+import java.io.IOException;
+import java.util.Date;
+import java.util.List;
+import java.util.Set;
+import java.util.logging.Level;
+
+import static org.restlet.engine.header.HeaderConstants.*;
+
/**
* Request wrapper for server HTTP calls.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/adapter/HttpServerHelper.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/adapter/HttpServerHelper.java
index 87c2c5b68b..458b19a7a2 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/adapter/HttpServerHelper.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/adapter/HttpServerHelper.java
@@ -9,14 +9,14 @@
package org.restlet.engine.adapter;
-import java.lang.reflect.InvocationTargetException;
-import java.util.logging.Level;
-
import org.restlet.Context;
import org.restlet.Server;
import org.restlet.engine.Engine;
import org.restlet.engine.connector.ServerHelper;
+import java.lang.reflect.InvocationTargetException;
+import java.util.logging.Level;
+
/**
* Base HTTP server connector. Here is the list of parameters that are
* supported. They should be set in the Server's context before it is started:
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/adapter/ServerAdapter.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/adapter/ServerAdapter.java
index 0d79429546..bae71582a9 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/adapter/ServerAdapter.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/adapter/ServerAdapter.java
@@ -9,16 +9,6 @@
package org.restlet.engine.adapter;
-import static org.restlet.engine.header.HeaderConstants.ATTRIBUTE_HEADERS;
-import static org.restlet.engine.header.HeaderConstants.ATTRIBUTE_HTTPS_KEY_SIZE;
-import static org.restlet.engine.header.HeaderConstants.ATTRIBUTE_HTTPS_SSL_SESSION_ID;
-import static org.restlet.engine.header.HeaderConstants.ATTRIBUTE_VERSION;
-
-import java.io.IOException;
-import java.security.cert.Certificate;
-import java.util.List;
-import java.util.logging.Level;
-
import org.restlet.Context;
import org.restlet.data.Header;
import org.restlet.data.Method;
@@ -27,6 +17,13 @@
import org.restlet.representation.Representation;
import org.restlet.util.Series;
+import java.io.IOException;
+import java.security.cert.Certificate;
+import java.util.List;
+import java.util.logging.Level;
+
+import static org.restlet.engine.header.HeaderConstants.*;
+
/**
* Converter of low-level HTTP server calls into high-level uniform calls.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/adapter/ServerCall.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/adapter/ServerCall.java
index f95625b34d..c48966a0bf 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/adapter/ServerCall.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/adapter/ServerCall.java
@@ -9,31 +9,13 @@
package org.restlet.engine.adapter;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.PushbackInputStream;
-import java.security.cert.Certificate;
-import java.util.Base64;
-import java.util.List;
-import java.util.logging.Level;
-
-import javax.net.ssl.SSLPeerUnverifiedException;
-
import org.restlet.Context;
import org.restlet.Response;
import org.restlet.Server;
import org.restlet.data.Digest;
import org.restlet.data.Header;
import org.restlet.engine.connector.ConnectorHelper;
-import org.restlet.engine.header.ContentType;
-import org.restlet.engine.header.DispositionReader;
-import org.restlet.engine.header.EncodingReader;
-import org.restlet.engine.header.HeaderConstants;
-import org.restlet.engine.header.HeaderReader;
-import org.restlet.engine.header.HeaderUtils;
-import org.restlet.engine.header.LanguageReader;
-import org.restlet.engine.header.RangeReader;
+import org.restlet.engine.header.*;
import org.restlet.engine.io.IoUtils;
import org.restlet.engine.util.StringUtils;
import org.restlet.representation.EmptyRepresentation;
@@ -41,6 +23,16 @@
import org.restlet.representation.Representation;
import org.restlet.service.ConnectorService;
+import javax.net.ssl.SSLPeerUnverifiedException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.PushbackInputStream;
+import java.security.cert.Certificate;
+import java.util.Base64;
+import java.util.List;
+import java.util.logging.Level;
+
/**
* Abstract HTTP server connector call.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/ApplicationHelper.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/ApplicationHelper.java
index cbed8ebdfb..b88531650b 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/ApplicationHelper.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/ApplicationHelper.java
@@ -9,15 +9,7 @@
package org.restlet.engine.application;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-import org.restlet.Application;
-import org.restlet.Client;
-import org.restlet.Context;
-import org.restlet.Request;
-import org.restlet.Response;
-import org.restlet.Restlet;
+import org.restlet.*;
import org.restlet.data.Protocol;
import org.restlet.data.Reference;
import org.restlet.data.Status;
@@ -25,6 +17,9 @@
import org.restlet.routing.Filter;
import org.restlet.service.Service;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
/**
* Application implementation.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/Conneg.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/Conneg.java
index 29a1eb4fed..4992b4da5b 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/Conneg.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/Conneg.java
@@ -9,12 +9,12 @@
package org.restlet.engine.application;
-import java.util.List;
-
import org.restlet.Request;
import org.restlet.representation.Variant;
import org.restlet.service.MetadataService;
+import java.util.List;
+
/**
* Content negotiation algorithm.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/CorsFilter.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/CorsFilter.java
index 89606862cb..62ea3270a4 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/CorsFilter.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/CorsFilter.java
@@ -9,10 +9,6 @@
package org.restlet.engine.application;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
-
import org.restlet.Context;
import org.restlet.Request;
import org.restlet.Response;
@@ -21,6 +17,10 @@
import org.restlet.engine.util.SetUtils;
import org.restlet.routing.Filter;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
/**
* Filter that helps support CORS requests. This filter lets the target
* resources specify the allowed methods.
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/CorsResponseHelper.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/CorsResponseHelper.java
index 7bfc8ebd42..e293396a8f 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/CorsResponseHelper.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/CorsResponseHelper.java
@@ -9,10 +9,6 @@
package org.restlet.engine.application;
-import java.util.HashSet;
-import java.util.Set;
-import java.util.logging.Logger;
-
import org.restlet.Context;
import org.restlet.Request;
import org.restlet.Response;
@@ -20,6 +16,10 @@
import org.restlet.data.Status;
import org.restlet.engine.util.SetUtils;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.logging.Logger;
+
/**
* Helps to generate response CORS headers.
* The CORS specification defines a subset of methods qualified as simple HEAD,
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/DecodeRepresentation.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/DecodeRepresentation.java
index ef1c47eced..004892d49d 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/DecodeRepresentation.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/DecodeRepresentation.java
@@ -9,6 +9,11 @@
package org.restlet.engine.application;
+import org.restlet.data.Encoding;
+import org.restlet.engine.io.IoUtils;
+import org.restlet.representation.Representation;
+import org.restlet.util.WrapperRepresentation;
+
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
@@ -23,11 +28,6 @@
import java.util.zip.InflaterInputStream;
import java.util.zip.ZipInputStream;
-import org.restlet.data.Encoding;
-import org.restlet.engine.io.IoUtils;
-import org.restlet.representation.Representation;
-import org.restlet.util.WrapperRepresentation;
-
/**
* Representation that decodes a wrapped representation if its encoding is
* supported. If at least one encoding of the wrapped representation is not
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/Decoder.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/Decoder.java
index d1f7ecc6e1..126d7251e1 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/Decoder.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/Decoder.java
@@ -9,8 +9,6 @@
package org.restlet.engine.application;
-import java.util.Iterator;
-
import org.restlet.Context;
import org.restlet.Request;
import org.restlet.Response;
@@ -18,6 +16,8 @@
import org.restlet.representation.Representation;
import org.restlet.routing.Filter;
+import java.util.Iterator;
+
/**
* Filter uncompressing entities.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/EncodeRepresentation.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/EncodeRepresentation.java
index f20e2f3df8..a35278e407 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/EncodeRepresentation.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/EncodeRepresentation.java
@@ -9,6 +9,13 @@
package org.restlet.engine.application;
+import org.restlet.data.Disposition;
+import org.restlet.data.Encoding;
+import org.restlet.engine.io.IoUtils;
+import org.restlet.representation.Representation;
+import org.restlet.util.WrapperList;
+import org.restlet.util.WrapperRepresentation;
+
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
@@ -17,18 +24,7 @@
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
-import java.util.zip.Deflater;
-import java.util.zip.DeflaterOutputStream;
-import java.util.zip.GZIPOutputStream;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipOutputStream;
-
-import org.restlet.data.Disposition;
-import org.restlet.data.Encoding;
-import org.restlet.engine.io.IoUtils;
-import org.restlet.representation.Representation;
-import org.restlet.util.WrapperList;
-import org.restlet.util.WrapperRepresentation;
+import java.util.zip.*;
/**
* Content that encodes a wrapped content. Allows to apply only one encoding.
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/Encoder.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/Encoder.java
index bad880eabe..cb9737f7b8 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/Encoder.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/Encoder.java
@@ -9,9 +9,6 @@
package org.restlet.engine.application;
-import java.util.Iterator;
-import java.util.List;
-
import org.restlet.Context;
import org.restlet.Request;
import org.restlet.Response;
@@ -22,6 +19,9 @@
import org.restlet.routing.Filter;
import org.restlet.service.EncoderService;
+import java.util.Iterator;
+import java.util.List;
+
/**
* Filter compressing entities. The best encoding is automatically selected
* based on the preferences of the client and on the encoding supported by NRE:
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/FlexibleConneg.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/FlexibleConneg.java
index 4782485a0a..fdaee1d0bf 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/FlexibleConneg.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/FlexibleConneg.java
@@ -9,19 +9,13 @@
package org.restlet.engine.application;
-import java.util.ArrayList;
-import java.util.List;
-
import org.restlet.Request;
-import org.restlet.data.CharacterSet;
-import org.restlet.data.ClientInfo;
-import org.restlet.data.Encoding;
-import org.restlet.data.Language;
-import org.restlet.data.MediaType;
-import org.restlet.data.Metadata;
-import org.restlet.data.Preference;
+import org.restlet.data.*;
import org.restlet.service.MetadataService;
+import java.util.ArrayList;
+import java.util.List;
+
/**
* Content negotiation algorithm that flexibly interprets the content
* negotiation preferences to try to always return a variant even if the client
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/MetadataExtension.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/MetadataExtension.java
index c6e749551d..6ca1189c15 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/MetadataExtension.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/MetadataExtension.java
@@ -9,11 +9,7 @@
package org.restlet.engine.application;
-import org.restlet.data.CharacterSet;
-import org.restlet.data.Encoding;
-import org.restlet.data.Language;
-import org.restlet.data.MediaType;
-import org.restlet.data.Metadata;
+import org.restlet.data.*;
/**
* Associates an extension name and a metadata.
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/RangeFilter.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/RangeFilter.java
index e9c1c08d71..12abd5857c 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/RangeFilter.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/RangeFilter.java
@@ -1,16 +1,14 @@
/**
* 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.engine.application;
-import static org.restlet.data.Range.isBytesRange;
-
import org.restlet.Context;
import org.restlet.Request;
import org.restlet.Response;
@@ -19,92 +17,91 @@
import org.restlet.routing.Filter;
import org.restlet.service.RangeService;
+import static org.restlet.data.Range.isBytesRange;
+
/**
* Filter that is in charge to check the responses to requests for partial
* content.
- *
+ *
* @author Thierry Boileau
*/
public class RangeFilter extends Filter {
- /**
- * Constructor.
- *
- * @param context The parent context.
- */
- public RangeFilter(Context context) {
- super(context);
- }
+ /**
+ * Constructor.
+ *
+ * @param context The parent context.
+ */
+ public RangeFilter(Context context) {
+ super(context);
+ }
- @Override
- protected void afterHandle(Request request, Response response) {
- if (getRangeService().isEnabled()) {
- response.getServerInfo().setAcceptingRanges(true);
+ @Override
+ protected void afterHandle(Request request, Response response) {
+ if (getRangeService().isEnabled()) {
+ response.getServerInfo().setAcceptingRanges(true);
- if (request.getMethod().isSafe() && response.isEntityAvailable()) {
- Range responseRange = response.getEntity().getRange();
- boolean rangedEntity = responseRange != null && isBytesRange(responseRange);
+ if (request.getMethod().isSafe() && response.isEntityAvailable()) {
+ Range responseRange = response.getEntity().getRange();
+ boolean rangedEntity = responseRange != null && isBytesRange(responseRange);
- if (response.getStatus().isSuccess()) {
- if (Status.SUCCESS_PARTIAL_CONTENT.equals(response.getStatus())) {
- if (!rangedEntity) {
- getLogger().warning(
- "When returning a \"206 Partial content\" status, your response entity must be properly ranged.");
- } else {
- // We assume that the response entity has been
- // properly ranged.
- }
- } else {
- // At this time, list of ranges are not supported.
- if (request.getRanges().size() == 1 && (!request.getConditions().hasSomeRange()
- || request.getConditions().getRangeStatus(response.getEntity()).isSuccess())) {
- Range requestedRange = request.getRanges().get(0);
+ if (response.getStatus().isSuccess()) {
+ if (Status.SUCCESS_PARTIAL_CONTENT.equals(response.getStatus())) {
+ if (!rangedEntity) {
+ getLogger().warning(
+ "When returning a \"206 Partial content\" status, your response entity must be properly ranged.");
+ } else {
+ // We assume that the response entity has been properly ranged.
+ }
+ } else if (request.getRanges().size() > 1) { // At this time, lists of ranges are not supported.
+ // Return a server error as this feature isn't supported yet
+ response.setStatus(Status.SERVER_ERROR_NOT_IMPLEMENTED);
+ getLogger().warning("Multiple ranges are not supported at this time.");
+ response.setEntity(null);
+ } else if (request.getRanges().size() == 1 &&
+ (!request.getConditions().hasSomeRange()
+ || request.getConditions().getRangeStatus(response.getEntity()).isSuccess())) {
+ Range requestedRange = request.getRanges().get(0);
- if ((!response.getEntity().hasKnownSize())
- && ((requestedRange.getIndex() == Range.INDEX_LAST
- || requestedRange.getSize() == Range.SIZE_MAX)
- && !(requestedRange.getIndex() == Range.INDEX_LAST
- && requestedRange.getSize() == Range.SIZE_MAX))) {
- // The end index cannot be properly computed
- response.setStatus(Status.SERVER_ERROR_INTERNAL);
- getLogger().warning(
- "Unable to serve this range since at least the end index of the range cannot be computed.");
- response.setEntity(null);
- } else if (!requestedRange.equals(responseRange)) {
- if (rangedEntity) {
- getLogger().info(
- "The range of the response entity is not equal to the requested one.");
- }
+ if ((!response.getEntity().hasKnownSize())
+ && ((requestedRange.getIndex() == Range.INDEX_LAST
+ || requestedRange.getSize() == Range.SIZE_MAX)
+ && !(requestedRange.getIndex() == Range.INDEX_LAST
+ && requestedRange.getSize() == Range.SIZE_MAX))) {
+ // The end index cannot be properly computed
+ response.setStatus(Status.SERVER_ERROR_INTERNAL);
+ getLogger().warning(
+ "Unable to serve this range since at least the end index of the range cannot be computed.");
+ response.setEntity(null);
+ } else if (!requestedRange.equals(responseRange)) {
+ if (rangedEntity) {
+ getLogger().info(
+ "The range of the response entity is not equal to the requested one.");
+ }
- if (response.getEntity().hasKnownSize()
- && requestedRange.getSize() > response.getEntity().getAvailableSize()) {
- requestedRange.setSize(Range.SIZE_MAX);
- }
+ if (response.getEntity().hasKnownSize()
+ && requestedRange.getSize() > response.getEntity().getAvailableSize()) {
+ requestedRange.setSize(Range.SIZE_MAX);
+ }
- response.setEntity(new RangeRepresentation(response.getEntity(), requestedRange));
- response.setStatus(Status.SUCCESS_PARTIAL_CONTENT);
- }
- } else if (request.getRanges().size() > 1) {
- // Return a server error as this feature isn't supported yet
- response.setStatus(Status.SERVER_ERROR_NOT_IMPLEMENTED);
- getLogger().warning("Multiple ranges are not supported at this time.");
- response.setEntity(null);
- }
- }
- } else {
- // Ignore error responses
- }
- }
- }
- }
+ response.setEntity(new RangeRepresentation(response.getEntity(), requestedRange));
+ response.setStatus(Status.SUCCESS_PARTIAL_CONTENT);
+ }
+ }
+ } else {
+ // Ignore error responses
+ }
+ }
+ }
+ }
- /**
- * Returns the Range service of the parent application.
- *
- * @return The Range service of the parent application.
- */
- public RangeService getRangeService() {
- return getApplication().getRangeService();
- }
+ /**
+ * Returns the Range service of the parent application.
+ *
+ * @return The Range service of the parent application.
+ */
+ public RangeService getRangeService() {
+ return getApplication().getRangeService();
+ }
}
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/RangeRepresentation.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/RangeRepresentation.java
index 5bc08d89d6..c0923b6226 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/RangeRepresentation.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/RangeRepresentation.java
@@ -9,17 +9,17 @@
package org.restlet.engine.application;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.Reader;
-
import org.restlet.data.Range;
import org.restlet.engine.io.IoUtils;
import org.restlet.engine.io.RangeInputStream;
import org.restlet.representation.Representation;
import org.restlet.util.WrapperRepresentation;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.Reader;
+
/**
* Representation that exposes only a range of the content of a wrapped
* representation.
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/StatusFilter.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/StatusFilter.java
index cfc213909b..a1c6e02438 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/StatusFilter.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/StatusFilter.java
@@ -9,8 +9,6 @@
package org.restlet.engine.application;
-import java.util.logging.Level;
-
import org.restlet.Context;
import org.restlet.Request;
import org.restlet.Response;
@@ -18,6 +16,8 @@
import org.restlet.routing.Filter;
import org.restlet.service.StatusService;
+import java.util.logging.Level;
+
/**
* Filter associating a response entity based on the status. In order to
* customize the default representation, just subclass this class and override
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/StatusInfo.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/StatusInfo.java
index 3e9b4aa66c..42d6f1762a 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/StatusInfo.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/StatusInfo.java
@@ -9,10 +9,10 @@
package org.restlet.engine.application;
-import java.io.Serializable;
-
import org.restlet.data.Status;
+import java.io.Serializable;
+
/**
* Representation of a {@link Status}.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/StrictConneg.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/StrictConneg.java
index c84d558d52..b7440c32b9 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/StrictConneg.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/StrictConneg.java
@@ -9,26 +9,19 @@
package org.restlet.engine.application;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.logging.Level;
-
import org.restlet.Context;
import org.restlet.Request;
-import org.restlet.data.CharacterSet;
-import org.restlet.data.Encoding;
-import org.restlet.data.Form;
-import org.restlet.data.Language;
-import org.restlet.data.MediaType;
-import org.restlet.data.Metadata;
-import org.restlet.data.Parameter;
-import org.restlet.data.Preference;
+import org.restlet.data.*;
import org.restlet.engine.resource.MethodAnnotationInfo;
import org.restlet.engine.resource.VariantInfo;
import org.restlet.representation.Variant;
import org.restlet.service.MetadataService;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.logging.Level;
+
/**
* Content negotiation algorithm that strictly interprets the content
* negotiation preferences.
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/TunnelFilter.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/TunnelFilter.java
index 0ca16366b9..43b538232e 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/TunnelFilter.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/application/TunnelFilter.java
@@ -9,32 +9,10 @@
package org.restlet.engine.application;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-
import org.restlet.Context;
import org.restlet.Request;
import org.restlet.Response;
-import org.restlet.data.CharacterSet;
-import org.restlet.data.ClientInfo;
-import org.restlet.data.Encoding;
-import org.restlet.data.Form;
-import org.restlet.data.Header;
-import org.restlet.data.Language;
-import org.restlet.data.MediaType;
-import org.restlet.data.Metadata;
-import org.restlet.data.Method;
-import org.restlet.data.Preference;
-import org.restlet.data.Reference;
+import org.restlet.data.*;
import org.restlet.engine.Engine;
import org.restlet.engine.header.HeaderConstants;
import org.restlet.engine.header.PreferenceReader;
@@ -44,6 +22,13 @@
import org.restlet.service.TunnelService;
import org.restlet.util.Series;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.util.*;
+import java.util.Map.Entry;
+
/**
* Filter tunneling browser calls into full REST calls. The request method can
* be changed (via POST requests only) as well as the accepted media types,
@@ -59,7 +44,7 @@ public class TunnelFilter extends Filter {
/**
* Used to describe the replacement value for an old client preference and for a
- * a series of specific agent (i.e. web client) attributes.
+ * a series of specific agent (i.e., web client) attributes.
*
* @author Thierry Boileau
*/
@@ -122,7 +107,7 @@ public String getHeaderOld() {
* @param agentAttributes The user agent attributes to match.
* @param headerOld The facultative value of the current's request header
* to match.
- * @return true if the given request's attibutes match the current header
+ * @return true if the given request's attributes match the current header
* replacer.
*/
public boolean matchesConditions(Map agentAttributes, String headerOld) {
@@ -248,7 +233,7 @@ private List getheaderReplacers(final URL userAgentPropertiesUrl
final String key = keyValue[0].trim();
final String value = keyValue[1].trim();
if (oldHeaderName.equalsIgnoreCase(key)) {
- headerReplacerBuilder.setOldValue(("".equals(value)) ? null : value);
+ headerReplacerBuilder.setOldValue((value.isEmpty()) ? null : value);
} else if (newHeaderName.equalsIgnoreCase(key)) {
headerReplacerBuilder.setNewValue(value);
headerReplacers.add(headerReplacerBuilder.build());
@@ -330,7 +315,7 @@ private boolean processExtensions(Request request) {
// Discover extensions from right to left and stop at the first
// unknown extension. Only one extension per type of metadata is
- // also allowed: i.e. one language, one media type, one
+ // also allowed: i.e., one language, one media type, one
// encoding, one character set.
while (true) {
final int lastIndexOfPoint = extensions.lastIndexOf('.');
@@ -350,7 +335,7 @@ private boolean processExtensions(Request request) {
updateMetadata(clientInfo, metadata);
encodingFound = true;
} else {
- // extension do not match -> break loop
+ // extension does not match -> break loop
break;
}
if (lastIndexOfPoint > 0) {
@@ -391,7 +376,7 @@ private void processHeaders(Request request) {
// look for the new value of the method
final String newMethodValue = extraHeaders.getFirstValue(getTunnelService().getMethodHeader(), true);
- if (newMethodValue != null && newMethodValue.trim().length() > 0) {
+ if (newMethodValue != null && !newMethodValue.trim().isEmpty()) {
// set the current method to the new method
request.setMethod(Method.valueOf(newMethodValue));
}
@@ -507,11 +492,11 @@ private boolean processQuery(Request request) {
* version, etc.) taken from the "agent.properties" file located in the
* classpath. See {@link ClientInfo#getAgentAttributes()} for more details.
* The list of new media type preferences is loaded from a property file called
- * "accept.properties" located in the classpath in the sub directory
+ * "accept.properties" located in the classpath in the subdirectory
* "org/restlet/service". This property file is composed of blocks of
* properties. One "block" of properties starts either with the beginning of the
* properties file or with the end of the previous block. One block ends with
- * the "acceptNew" property which contains the value of the new accept header.
+ * the "acceptNew" property which contains the value of the new Accept header.
* Here is a sample block.
*
*
@@ -521,12 +506,12 @@ private boolean processQuery(Request request) {
*
*
* Each declared property is a condition that must be filled in order to update
- * the client preferences. For example "agentName: firefox" expresses the fact
+ * the client preferences. For example, "agentName: firefox" expresses the fact
* this block concerns only "firefox" clients.
*
- * The "acceptOld" property allows to check the value of the current "Accept"
- * header. If the latest equals to the value of the "acceptOld" property then
- * the preferences will be updated. This is useful for Ajax clients which looks
+ * The "acceptOld" property allows checking the value of the current "Accept"
+ * header. If the latest equals to the value of the "acceptOld" property, then
+ * the preferences will be updated. This is useful for Ajax clients that look
* like their browser (same agentName, agentVersion, etc.) but can provide their
* own "Accept" header.
*
@@ -579,16 +564,16 @@ private void updateMetadata(ClientInfo clientInfo, Metadata metadata) {
if (metadata != null) {
if (metadata instanceof CharacterSet) {
clientInfo.getAcceptedCharacterSets().clear();
- clientInfo.getAcceptedCharacterSets().add(new Preference((CharacterSet) metadata));
+ clientInfo.getAcceptedCharacterSets().add(new Preference<>((CharacterSet) metadata));
} else if (metadata instanceof Encoding) {
clientInfo.getAcceptedEncodings().clear();
- clientInfo.getAcceptedEncodings().add(new Preference((Encoding) metadata));
+ clientInfo.getAcceptedEncodings().add(new Preference<>((Encoding) metadata));
} else if (metadata instanceof Language) {
clientInfo.getAcceptedLanguages().clear();
- clientInfo.getAcceptedLanguages().add(new Preference((Language) metadata));
+ clientInfo.getAcceptedLanguages().add(new Preference<>((Language) metadata));
} else if (metadata instanceof MediaType) {
clientInfo.getAcceptedMediaTypes().clear();
- clientInfo.getAcceptedMediaTypes().add(new Preference((MediaType) metadata));
+ clientInfo.getAcceptedMediaTypes().add(new Preference<>((MediaType) metadata));
}
}
}
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/component/ClientRoute.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/component/ClientRoute.java
index 43213f1f20..009c7fbe30 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/component/ClientRoute.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/component/ClientRoute.java
@@ -9,8 +9,6 @@
package org.restlet.engine.component;
-import java.util.logging.Level;
-
import org.restlet.Client;
import org.restlet.Request;
import org.restlet.Response;
@@ -18,6 +16,8 @@
import org.restlet.routing.Route;
import org.restlet.routing.Router;
+import java.util.logging.Level;
+
/**
* Router scorer based on a target client connector.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/component/ClientRouter.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/component/ClientRouter.java
index 1b18a7ec83..64bdc29dee 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/component/ClientRouter.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/component/ClientRouter.java
@@ -9,15 +9,11 @@
package org.restlet.engine.component;
-import java.util.logging.Level;
-
-import org.restlet.Client;
-import org.restlet.Component;
-import org.restlet.Request;
-import org.restlet.Response;
-import org.restlet.Restlet;
+import org.restlet.*;
import org.restlet.routing.Router;
+import java.util.logging.Level;
+
/**
* Router that collects calls from all applications and dispatches them to the
* appropriate client connectors.
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/component/ComponentClientDispatcher.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/component/ComponentClientDispatcher.java
index a3c34bf137..831602a815 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/component/ComponentClientDispatcher.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/component/ComponentClientDispatcher.java
@@ -9,8 +9,6 @@
package org.restlet.engine.component;
-import java.util.Iterator;
-
import org.restlet.Component;
import org.restlet.Request;
import org.restlet.Response;
@@ -19,6 +17,8 @@
import org.restlet.engine.util.TemplateDispatcher;
import org.restlet.routing.VirtualHost;
+import java.util.Iterator;
+
/**
* Component client dispatcher.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/component/ComponentHelper.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/component/ComponentHelper.java
index 0d45b2f9b6..4e7a6ce5a1 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/component/ComponentHelper.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/component/ComponentHelper.java
@@ -9,13 +9,7 @@
package org.restlet.engine.component;
-import java.util.Iterator;
-
-import org.restlet.Application;
-import org.restlet.Client;
-import org.restlet.Component;
-import org.restlet.Restlet;
-import org.restlet.Server;
+import org.restlet.*;
import org.restlet.data.Protocol;
import org.restlet.engine.CompositeHelper;
import org.restlet.routing.Filter;
@@ -23,6 +17,8 @@
import org.restlet.routing.VirtualHost;
import org.restlet.service.Service;
+import java.util.Iterator;
+
/**
* Component helper.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/component/HostRoute.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/component/HostRoute.java
index a74c26636c..902879d058 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/component/HostRoute.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/component/HostRoute.java
@@ -9,15 +9,15 @@
package org.restlet.engine.component;
-import java.util.logging.Level;
-import java.util.regex.Pattern;
-
import org.restlet.Request;
import org.restlet.Response;
import org.restlet.routing.Route;
import org.restlet.routing.Router;
import org.restlet.routing.VirtualHost;
+import java.util.logging.Level;
+import java.util.regex.Pattern;
+
/**
* Route based on a target VirtualHost.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/component/ServerRouter.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/component/ServerRouter.java
index 7b293bc189..5d9a1c684b 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/component/ServerRouter.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/component/ServerRouter.java
@@ -9,8 +9,6 @@
package org.restlet.engine.component;
-import java.util.logging.Level;
-
import org.restlet.Component;
import org.restlet.Request;
import org.restlet.Response;
@@ -19,6 +17,8 @@
import org.restlet.routing.Router;
import org.restlet.routing.VirtualHost;
+import java.util.logging.Level;
+
/**
* Router that collects calls from all server connectors and dispatches them to
* the appropriate host routers. The host routers then dispatch them to the user
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/connector/ConnectionClosingRepresentation.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/connector/ConnectionClosingRepresentation.java
index cf43df4c67..a8df9b42bf 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/connector/ConnectionClosingRepresentation.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/connector/ConnectionClosingRepresentation.java
@@ -9,11 +9,11 @@
package org.restlet.engine.connector;
-import java.net.HttpURLConnection;
-
import org.restlet.representation.Representation;
import org.restlet.util.WrapperRepresentation;
+import java.net.HttpURLConnection;
+
/**
* Representation that wraps another representation and closes the parent
* {@link HttpURLConnection} when the representation is released.
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/connector/ConnectorHelper.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/connector/ConnectorHelper.java
index c4bb089b2f..c640c61bc8 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/connector/ConnectorHelper.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/connector/ConnectorHelper.java
@@ -9,14 +9,14 @@
package org.restlet.engine.connector;
-import java.util.List;
-import java.util.concurrent.CopyOnWriteArrayList;
-
import org.restlet.Connector;
import org.restlet.Context;
import org.restlet.data.Protocol;
import org.restlet.engine.RestletHelper;
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
+
/**
* Base connector helper.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/connector/FtpClientHelper.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/connector/FtpClientHelper.java
index ec250bd6c5..81f9d8bd9c 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/connector/FtpClientHelper.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/connector/FtpClientHelper.java
@@ -9,23 +9,20 @@
package org.restlet.engine.connector;
-import java.io.IOException;
-import java.net.URL;
-import java.net.URLConnection;
-import java.util.logging.Level;
-
import org.restlet.Client;
import org.restlet.Request;
import org.restlet.Response;
-import org.restlet.data.ChallengeScheme;
import org.restlet.data.Method;
-import org.restlet.data.Protocol;
-import org.restlet.data.Reference;
-import org.restlet.data.Status;
+import org.restlet.data.*;
import org.restlet.engine.local.Entity;
import org.restlet.engine.util.SystemUtils;
import org.restlet.representation.InputRepresentation;
+import java.io.IOException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.util.logging.Level;
+
/**
* FTP client connector using the {@link URLConnection}. Here is the list of
* parameters that are supported. They should be set in the Client's context
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/connector/HttpClientHelper.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/connector/HttpClientHelper.java
index 20f4973b01..9a1e3d8c84 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/connector/HttpClientHelper.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/connector/HttpClientHelper.java
@@ -9,18 +9,17 @@
package org.restlet.engine.connector;
-import java.io.IOException;
-import java.net.HttpURLConnection;
-import java.util.logging.Level;
-
-import javax.net.ssl.HostnameVerifier;
-
import org.restlet.Client;
import org.restlet.Request;
import org.restlet.data.Protocol;
import org.restlet.engine.adapter.ClientCall;
import org.restlet.engine.util.ReferenceUtils;
+import javax.net.ssl.HostnameVerifier;
+import java.io.IOException;
+import java.net.HttpURLConnection;
+import java.util.logging.Level;
+
/**
* HTTP client connector using the {@link HttpUrlConnectionCall}. Here is the
* list of parameters that are supported. They should be set in the Client's
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/connector/HttpExchangeCall.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/connector/HttpExchangeCall.java
index 44079f260e..61df7a8143 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/connector/HttpExchangeCall.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/connector/HttpExchangeCall.java
@@ -9,19 +9,18 @@
package org.restlet.engine.connector;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.List;
-
+import com.sun.net.httpserver.Headers;
+import com.sun.net.httpserver.HttpExchange;
import org.restlet.Server;
import org.restlet.data.Header;
import org.restlet.engine.adapter.ServerCall;
import org.restlet.representation.Representation;
import org.restlet.util.Series;
-import com.sun.net.httpserver.Headers;
-import com.sun.net.httpserver.HttpExchange;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.List;
/**
* Call that is used by the Basic HTTP server.
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/connector/HttpServerHelper.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/connector/HttpServerHelper.java
index 6fdeb9a194..79e9e6de75 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/connector/HttpServerHelper.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/connector/HttpServerHelper.java
@@ -9,16 +9,15 @@
package org.restlet.engine.connector;
-import java.io.IOException;
-import java.net.InetAddress;
-import java.net.InetSocketAddress;
-
-import org.restlet.Server;
-import org.restlet.data.Protocol;
-
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;
+import org.restlet.Server;
+import org.restlet.data.Protocol;
+
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
/**
* Internal HTTP server connector.
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/connector/HttpUrlConnectionCall.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/connector/HttpUrlConnectionCall.java
index 9ce97a9a0b..5d35ad8a3b 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/connector/HttpUrlConnectionCall.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/connector/HttpUrlConnectionCall.java
@@ -9,16 +9,6 @@
package org.restlet.engine.connector;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.ConnectException;
-import java.net.HttpURLConnection;
-import java.net.SocketTimeoutException;
-import java.net.URL;
-import java.util.logging.Level;
-
import org.restlet.Request;
import org.restlet.Response;
import org.restlet.Uniform;
@@ -29,6 +19,16 @@
import org.restlet.representation.Representation;
import org.restlet.util.Series;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.ConnectException;
+import java.net.HttpURLConnection;
+import java.net.SocketTimeoutException;
+import java.net.URL;
+import java.util.logging.Level;
+
/**
* HTTP client connector call based on JDK's java.net.HttpURLConnection class.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/connector/HttpsServerHelper.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/connector/HttpsServerHelper.java
index 0421a81bfe..05169e108e 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/connector/HttpsServerHelper.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/connector/HttpsServerHelper.java
@@ -9,24 +9,18 @@
package org.restlet.engine.connector;
-import java.io.IOException;
-import java.net.InetAddress;
-import java.net.InetSocketAddress;
-
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLParameters;
-
+import com.sun.net.httpserver.*;
import org.restlet.Server;
import org.restlet.data.Protocol;
import org.restlet.engine.ssl.DefaultSslContextFactory;
import org.restlet.engine.ssl.SslContextFactory;
import org.restlet.engine.ssl.SslUtils;
-import com.sun.net.httpserver.HttpExchange;
-import com.sun.net.httpserver.HttpHandler;
-import com.sun.net.httpserver.HttpsConfigurator;
-import com.sun.net.httpserver.HttpsParameters;
-import com.sun.net.httpserver.HttpsServer;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLParameters;
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
/**
* Internal HTTPS server connector. Here is the list of additional parameters
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/connector/Method.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/connector/Method.java
index 8004625594..20dc2d18c1 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/connector/Method.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/connector/Method.java
@@ -9,18 +9,13 @@
package org.restlet.engine.connector;
+import org.restlet.resource.*;
+
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
-import org.restlet.resource.Delete;
-import org.restlet.resource.Get;
-import org.restlet.resource.Options;
-import org.restlet.resource.Patch;
-import org.restlet.resource.Post;
-import org.restlet.resource.Put;
-
/**
* Meta annotation to declare method annotations.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/connector/NetServerHelper.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/connector/NetServerHelper.java
index 1196fabbd2..9793b28559 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/connector/NetServerHelper.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/connector/NetServerHelper.java
@@ -9,19 +9,13 @@
package org.restlet.engine.connector;
-import java.net.InetSocketAddress;
-import java.util.concurrent.ArrayBlockingQueue;
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.RejectedExecutionHandler;
-import java.util.concurrent.SynchronousQueue;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-
import org.restlet.Server;
import org.restlet.engine.adapter.HttpServerHelper;
import org.restlet.engine.log.LoggingThreadFactory;
+import java.net.InetSocketAddress;
+import java.util.concurrent.*;
+
/**
* Abstract Internal web server connector based on com.sun.net.httpserver
* package. Here is the list of parameters that are supported. They should be
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/converter/ConverterHelper.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/converter/ConverterHelper.java
index 74a6c31a1a..15ff41d6a3 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/converter/ConverterHelper.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/converter/ConverterHelper.java
@@ -9,10 +9,6 @@
package org.restlet.engine.converter;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
import org.restlet.data.ClientInfo;
import org.restlet.data.MediaType;
import org.restlet.data.Preference;
@@ -22,6 +18,10 @@
import org.restlet.representation.Variant;
import org.restlet.resource.Resource;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
/**
* Converter between Representations and regular Java objects.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/converter/ConverterUtils.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/converter/ConverterUtils.java
index e1ec8ff6e3..f32a5ebad2 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/converter/ConverterUtils.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/converter/ConverterUtils.java
@@ -9,10 +9,6 @@
package org.restlet.engine.converter;
-import java.io.IOException;
-import java.util.List;
-import java.util.logging.Level;
-
import org.restlet.Context;
import org.restlet.engine.Engine;
import org.restlet.engine.resource.VariantInfo;
@@ -20,6 +16,10 @@
import org.restlet.representation.Variant;
import org.restlet.resource.Resource;
+import java.io.IOException;
+import java.util.List;
+import java.util.logging.Level;
+
/**
* Utilities for the converter service.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/converter/DefaultConverter.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/converter/DefaultConverter.java
index cce5c722ad..6af4cbc3bf 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/converter/DefaultConverter.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/converter/DefaultConverter.java
@@ -9,27 +9,16 @@
package org.restlet.engine.converter;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.Reader;
-import java.io.Serializable;
-import java.util.List;
-
import org.restlet.data.Form;
import org.restlet.data.MediaType;
import org.restlet.data.Preference;
import org.restlet.engine.resource.VariantInfo;
-import org.restlet.representation.EmptyRepresentation;
-import org.restlet.representation.FileRepresentation;
-import org.restlet.representation.InputRepresentation;
-import org.restlet.representation.ObjectRepresentation;
-import org.restlet.representation.ReaderRepresentation;
-import org.restlet.representation.Representation;
-import org.restlet.representation.StringRepresentation;
-import org.restlet.representation.Variant;
+import org.restlet.representation.*;
import org.restlet.resource.Resource;
+import java.io.*;
+import java.util.List;
+
/**
* Converter for the built-in Representation classes.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/converter/StatusInfoHtmlConverter.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/converter/StatusInfoHtmlConverter.java
index a3dbb598e2..edd5db09d5 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/converter/StatusInfoHtmlConverter.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/converter/StatusInfoHtmlConverter.java
@@ -9,9 +9,6 @@
package org.restlet.engine.converter;
-import java.io.IOException;
-import java.util.List;
-
import org.restlet.Request;
import org.restlet.Response;
import org.restlet.data.MediaType;
@@ -25,6 +22,9 @@
import org.restlet.resource.Resource;
import org.restlet.service.StatusService;
+import java.io.IOException;
+import java.util.List;
+
/**
* Converter for the {@link StatusInfo} class.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/CacheDirectiveReader.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/CacheDirectiveReader.java
index ff5dbf4347..0217b83c80 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/CacheDirectiveReader.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/CacheDirectiveReader.java
@@ -9,12 +9,12 @@
package org.restlet.engine.header;
-import java.io.IOException;
-import java.util.Collection;
-
import org.restlet.data.CacheDirective;
import org.restlet.data.Header;
+import java.io.IOException;
+import java.util.Collection;
+
/**
* Cache directive header reader.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/CacheDirectiveWriter.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/CacheDirectiveWriter.java
index b756ae6e64..d6378ae256 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/CacheDirectiveWriter.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/CacheDirectiveWriter.java
@@ -9,10 +9,10 @@
package org.restlet.engine.header;
-import java.util.List;
-
import org.restlet.data.CacheDirective;
+import java.util.List;
+
/**
* Cache directive header writer.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/ChallengeRequestReader.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/ChallengeRequestReader.java
index 8c80b5dbf3..4a90958189 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/ChallengeRequestReader.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/ChallengeRequestReader.java
@@ -9,14 +9,14 @@
package org.restlet.engine.header;
-import static org.restlet.engine.header.HeaderUtils.isSpace;
-
-import java.io.IOException;
-
import org.restlet.data.ChallengeRequest;
import org.restlet.data.ChallengeScheme;
import org.restlet.data.Parameter;
+import java.io.IOException;
+
+import static org.restlet.engine.header.HeaderUtils.isSpace;
+
/**
* Challenge request header reader.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/ContentType.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/ContentType.java
index 74c3bba52f..aa0932e138 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/ContentType.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/ContentType.java
@@ -9,12 +9,12 @@
package org.restlet.engine.header;
-import java.io.IOException;
-
import org.restlet.data.CharacterSet;
import org.restlet.data.MediaType;
import org.restlet.representation.Representation;
+import java.io.IOException;
+
/**
* Association of a media type, a character set and modifiers.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/ContentTypeReader.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/ContentTypeReader.java
index cb431a54b5..35ce49f3d5 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/ContentTypeReader.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/ContentTypeReader.java
@@ -9,13 +9,13 @@
package org.restlet.engine.header;
-import java.io.IOException;
-
import org.restlet.data.CharacterSet;
import org.restlet.data.MediaType;
import org.restlet.data.Parameter;
import org.restlet.util.Series;
+import java.io.IOException;
+
/**
* Content type header reader.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/CookieReader.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/CookieReader.java
index 0ce63cad82..1f71ab7a0d 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/CookieReader.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/CookieReader.java
@@ -9,11 +9,11 @@
package org.restlet.engine.header;
-import java.io.IOException;
-
import org.restlet.data.Cookie;
import org.restlet.data.Parameter;
+import java.io.IOException;
+
/**
* Cookie header reader.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/CookieSettingReader.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/CookieSettingReader.java
index 4f55c535de..16a1bac49b 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/CookieSettingReader.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/CookieSettingReader.java
@@ -9,19 +9,17 @@
package org.restlet.engine.header;
-import static org.restlet.engine.util.DateUtils.FORMAT_ASC_TIME;
-import static org.restlet.engine.util.DateUtils.FORMAT_RFC_1036;
-import static org.restlet.engine.util.DateUtils.FORMAT_RFC_1123;
-
-import java.io.IOException;
-import java.util.Date;
-
import org.restlet.Context;
import org.restlet.data.CookieSetting;
import org.restlet.data.Parameter;
import org.restlet.engine.util.DateUtils;
import org.restlet.engine.util.StringUtils;
+import java.io.IOException;
+import java.util.Date;
+
+import static org.restlet.engine.util.DateUtils.*;
+
/**
* Cookie setting header reader.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/CookieSettingWriter.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/CookieSettingWriter.java
index 51a79a3e33..58aaa639a8 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/CookieSettingWriter.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/CookieSettingWriter.java
@@ -9,12 +9,12 @@
package org.restlet.engine.header;
-import java.util.Date;
-import java.util.List;
-
import org.restlet.data.CookieSetting;
import org.restlet.engine.util.DateUtils;
+import java.util.Date;
+import java.util.List;
+
/**
* Cookie setting header writer.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/CookieWriter.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/CookieWriter.java
index f03bcd94df..8ea959666e 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/CookieWriter.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/CookieWriter.java
@@ -9,12 +9,12 @@
package org.restlet.engine.header;
+import org.restlet.data.Cookie;
+
import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import org.restlet.data.Cookie;
-
/**
* Cookie header writer.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/DateWriter.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/DateWriter.java
index 4d4e92d71f..f6467c4527 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/DateWriter.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/DateWriter.java
@@ -9,10 +9,10 @@
package org.restlet.engine.header;
-import java.util.Date;
-
import org.restlet.engine.util.DateUtils;
+import java.util.Date;
+
/**
* Date header writer.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/DimensionReader.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/DimensionReader.java
index b237ba09bb..fb5e64f57d 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/DimensionReader.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/DimensionReader.java
@@ -9,12 +9,12 @@
package org.restlet.engine.header;
-import java.io.IOException;
-import java.util.Collection;
-
import org.restlet.data.Dimension;
import org.restlet.data.Header;
+import java.io.IOException;
+import java.util.Collection;
+
/**
* Dimension header reader.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/DimensionWriter.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/DimensionWriter.java
index 50d226451b..80c7d47f54 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/DimensionWriter.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/DimensionWriter.java
@@ -9,10 +9,10 @@
package org.restlet.engine.header;
-import java.util.Collection;
-
import org.restlet.data.Dimension;
+import java.util.Collection;
+
/**
* Dimension header writer.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/DispositionReader.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/DispositionReader.java
index 3b2f92ccfd..37e857182d 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/DispositionReader.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/DispositionReader.java
@@ -9,11 +9,11 @@
package org.restlet.engine.header;
-import java.io.IOException;
-
import org.restlet.data.Disposition;
import org.restlet.data.Parameter;
+import java.io.IOException;
+
/**
* Disposition header reader.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/EncodingReader.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/EncodingReader.java
index d09e5751bf..1afbc0e976 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/EncodingReader.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/EncodingReader.java
@@ -9,11 +9,11 @@
package org.restlet.engine.header;
+import org.restlet.data.Encoding;
+
import java.io.IOException;
import java.util.Collection;
-import org.restlet.data.Encoding;
-
/**
* Encoding header reader.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/EncodingWriter.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/EncodingWriter.java
index fea4da308c..38c37c4d71 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/EncodingWriter.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/EncodingWriter.java
@@ -9,10 +9,10 @@
package org.restlet.engine.header;
-import java.util.List;
-
import org.restlet.data.Encoding;
+import java.util.List;
+
/**
* Encoding header writer.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/ExpectationReader.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/ExpectationReader.java
index 7a94614496..8e69fc05e4 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/ExpectationReader.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/ExpectationReader.java
@@ -9,11 +9,11 @@
package org.restlet.engine.header;
-import java.io.IOException;
-
import org.restlet.data.ClientInfo;
import org.restlet.data.Expectation;
+import java.io.IOException;
+
/**
* Expectation header reader.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/ExpectationWriter.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/ExpectationWriter.java
index 714ba21ccb..8fbc4b23f3 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/ExpectationWriter.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/ExpectationWriter.java
@@ -9,11 +9,11 @@
package org.restlet.engine.header;
-import java.util.List;
-
import org.restlet.data.Expectation;
import org.restlet.data.Parameter;
+import java.util.List;
+
/**
* Expectation header writer.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/HeaderReader.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/HeaderReader.java
index a5d5251b56..4ea632f01d 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/HeaderReader.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/HeaderReader.java
@@ -9,17 +9,12 @@
package org.restlet.engine.header;
-import static org.restlet.engine.header.HeaderUtils.isCarriageReturn;
-import static org.restlet.engine.header.HeaderUtils.isComma;
-import static org.restlet.engine.header.HeaderUtils.isCommentText;
-import static org.restlet.engine.header.HeaderUtils.isDoubleQuote;
-import static org.restlet.engine.header.HeaderUtils.isLineFeed;
-import static org.restlet.engine.header.HeaderUtils.isLinearWhiteSpace;
-import static org.restlet.engine.header.HeaderUtils.isQuoteCharacter;
-import static org.restlet.engine.header.HeaderUtils.isQuotedText;
-import static org.restlet.engine.header.HeaderUtils.isSemiColon;
-import static org.restlet.engine.header.HeaderUtils.isSpace;
-import static org.restlet.engine.header.HeaderUtils.isTokenChar;
+import org.restlet.Context;
+import org.restlet.data.Encoding;
+import org.restlet.data.Header;
+import org.restlet.data.Parameter;
+import org.restlet.engine.util.DateUtils;
+import org.restlet.util.NamedValue;
import java.io.IOException;
import java.io.InputStream;
@@ -29,12 +24,7 @@
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.logging.Level;
-import org.restlet.Context;
-import org.restlet.data.Encoding;
-import org.restlet.data.Header;
-import org.restlet.data.Parameter;
-import org.restlet.engine.util.DateUtils;
-import org.restlet.util.NamedValue;
+import static org.restlet.engine.header.HeaderUtils.*;
/**
* HTTP-style header reader.
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/HeaderUtils.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/HeaderUtils.java
index 8bcddf84bf..83b73fd68c 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/HeaderUtils.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/HeaderUtils.java
@@ -9,102 +9,11 @@
package org.restlet.engine.header;
-import static java.lang.Boolean.parseBoolean;
-import static java.util.logging.Level.WARNING;
-import static org.restlet.data.Digest.ALGORITHM_MD5;
-import static org.restlet.data.Disposition.TYPE_NONE;
-import static org.restlet.data.Method.OPTIONS;
-import static org.restlet.data.Range.RANGE_BYTES_UNIT;
-import static org.restlet.data.Range.isBytesRange;
-import static org.restlet.data.Status.CLIENT_ERROR_METHOD_NOT_ALLOWED;
-import static org.restlet.engine.header.HeaderConstants.HEADER_ACCEPT;
-import static org.restlet.engine.header.HeaderConstants.HEADER_ACCEPT_CHARSET;
-import static org.restlet.engine.header.HeaderConstants.HEADER_ACCEPT_ENCODING;
-import static org.restlet.engine.header.HeaderConstants.HEADER_ACCEPT_LANGUAGE;
-import static org.restlet.engine.header.HeaderConstants.HEADER_ACCEPT_PATCH;
-import static org.restlet.engine.header.HeaderConstants.HEADER_ACCEPT_RANGES;
-import static org.restlet.engine.header.HeaderConstants.HEADER_ACCESS_CONTROL_ALLOW_CREDENTIALS;
-import static org.restlet.engine.header.HeaderConstants.HEADER_ACCESS_CONTROL_ALLOW_HEADERS;
-import static org.restlet.engine.header.HeaderConstants.HEADER_ACCESS_CONTROL_ALLOW_METHODS;
-import static org.restlet.engine.header.HeaderConstants.HEADER_ACCESS_CONTROL_ALLOW_ORIGIN;
-import static org.restlet.engine.header.HeaderConstants.HEADER_ACCESS_CONTROL_EXPOSE_HEADERS;
-import static org.restlet.engine.header.HeaderConstants.HEADER_ACCESS_CONTROL_MAX_AGE;
-import static org.restlet.engine.header.HeaderConstants.HEADER_ACCESS_CONTROL_REQUEST_HEADERS;
-import static org.restlet.engine.header.HeaderConstants.HEADER_ACCESS_CONTROL_REQUEST_METHOD;
-import static org.restlet.engine.header.HeaderConstants.HEADER_AGE;
-import static org.restlet.engine.header.HeaderConstants.HEADER_ALLOW;
-import static org.restlet.engine.header.HeaderConstants.HEADER_AUTHENTICATION_INFO;
-import static org.restlet.engine.header.HeaderConstants.HEADER_AUTHORIZATION;
-import static org.restlet.engine.header.HeaderConstants.HEADER_CACHE_CONTROL;
-import static org.restlet.engine.header.HeaderConstants.HEADER_CONNECTION;
-import static org.restlet.engine.header.HeaderConstants.HEADER_CONTENT_DISPOSITION;
-import static org.restlet.engine.header.HeaderConstants.HEADER_CONTENT_ENCODING;
-import static org.restlet.engine.header.HeaderConstants.HEADER_CONTENT_LANGUAGE;
-import static org.restlet.engine.header.HeaderConstants.HEADER_CONTENT_LENGTH;
-import static org.restlet.engine.header.HeaderConstants.HEADER_CONTENT_LOCATION;
-import static org.restlet.engine.header.HeaderConstants.HEADER_CONTENT_MD5;
-import static org.restlet.engine.header.HeaderConstants.HEADER_CONTENT_RANGE;
-import static org.restlet.engine.header.HeaderConstants.HEADER_CONTENT_TYPE;
-import static org.restlet.engine.header.HeaderConstants.HEADER_COOKIE;
-import static org.restlet.engine.header.HeaderConstants.HEADER_DATE;
-import static org.restlet.engine.header.HeaderConstants.HEADER_ETAG;
-import static org.restlet.engine.header.HeaderConstants.HEADER_EXPECT;
-import static org.restlet.engine.header.HeaderConstants.HEADER_EXPIRES;
-import static org.restlet.engine.header.HeaderConstants.HEADER_FROM;
-import static org.restlet.engine.header.HeaderConstants.HEADER_HOST;
-import static org.restlet.engine.header.HeaderConstants.HEADER_IF_MATCH;
-import static org.restlet.engine.header.HeaderConstants.HEADER_IF_MODIFIED_SINCE;
-import static org.restlet.engine.header.HeaderConstants.HEADER_IF_NONE_MATCH;
-import static org.restlet.engine.header.HeaderConstants.HEADER_IF_RANGE;
-import static org.restlet.engine.header.HeaderConstants.HEADER_IF_UNMODIFIED_SINCE;
-import static org.restlet.engine.header.HeaderConstants.HEADER_LAST_MODIFIED;
-import static org.restlet.engine.header.HeaderConstants.HEADER_LOCATION;
-import static org.restlet.engine.header.HeaderConstants.HEADER_MAX_FORWARDS;
-import static org.restlet.engine.header.HeaderConstants.HEADER_PRAGMA;
-import static org.restlet.engine.header.HeaderConstants.HEADER_PROXY_AUTHENTICATE;
-import static org.restlet.engine.header.HeaderConstants.HEADER_PROXY_AUTHORIZATION;
-import static org.restlet.engine.header.HeaderConstants.HEADER_RANGE;
-import static org.restlet.engine.header.HeaderConstants.HEADER_REFERRER;
-import static org.restlet.engine.header.HeaderConstants.HEADER_RETRY_AFTER;
-import static org.restlet.engine.header.HeaderConstants.HEADER_SERVER;
-import static org.restlet.engine.header.HeaderConstants.HEADER_SET_COOKIE;
-import static org.restlet.engine.header.HeaderConstants.HEADER_SET_COOKIE2;
-import static org.restlet.engine.header.HeaderConstants.HEADER_TRAILER;
-import static org.restlet.engine.header.HeaderConstants.HEADER_TRANSFER_ENCODING;
-import static org.restlet.engine.header.HeaderConstants.HEADER_TRANSFER_EXTENSION;
-import static org.restlet.engine.header.HeaderConstants.HEADER_UPGRADE;
-import static org.restlet.engine.header.HeaderConstants.HEADER_USER_AGENT;
-import static org.restlet.engine.header.HeaderConstants.HEADER_VARY;
-import static org.restlet.engine.header.HeaderConstants.HEADER_VIA;
-import static org.restlet.engine.header.HeaderConstants.HEADER_WARNING;
-import static org.restlet.engine.header.HeaderConstants.HEADER_WWW_AUTHENTICATE;
-import static org.restlet.engine.util.StringUtils.isNullOrEmpty;
-import static org.restlet.representation.Representation.UNKNOWN_SIZE;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Date;
-import java.util.List;
-import java.util.Set;
-import java.util.logging.Level;
-
import org.restlet.Context;
import org.restlet.Message;
import org.restlet.Request;
import org.restlet.Response;
-import org.restlet.data.AuthenticationInfo;
-import org.restlet.data.ChallengeRequest;
-import org.restlet.data.ChallengeResponse;
-import org.restlet.data.ClientInfo;
-import org.restlet.data.Conditions;
-import org.restlet.data.CookieSetting;
-import org.restlet.data.Header;
-import org.restlet.data.MediaType;
-import org.restlet.data.Range;
-import org.restlet.data.Reference;
-import org.restlet.data.Tag;
+import org.restlet.data.*;
import org.restlet.engine.Engine;
import org.restlet.engine.util.CaseInsensitiveHashSet;
import org.restlet.engine.util.DateUtils;
@@ -113,6 +22,23 @@
import org.restlet.representation.Representation;
import org.restlet.util.Series;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.*;
+import java.util.logging.Level;
+
+import static java.lang.Boolean.parseBoolean;
+import static java.util.logging.Level.WARNING;
+import static org.restlet.data.Digest.ALGORITHM_MD5;
+import static org.restlet.data.Disposition.TYPE_NONE;
+import static org.restlet.data.Method.OPTIONS;
+import static org.restlet.data.Range.RANGE_BYTES_UNIT;
+import static org.restlet.data.Range.isBytesRange;
+import static org.restlet.data.Status.CLIENT_ERROR_METHOD_NOT_ALLOWED;
+import static org.restlet.engine.header.HeaderConstants.*;
+import static org.restlet.engine.util.StringUtils.isNullOrEmpty;
+import static org.restlet.representation.Representation.UNKNOWN_SIZE;
+
/**
* HTTP-style header utilities.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/HeaderWriter.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/HeaderWriter.java
index 924dc7d9bb..1c7c547046 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/HeaderWriter.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/HeaderWriter.java
@@ -9,14 +9,14 @@
package org.restlet.engine.header;
-import java.io.StringWriter;
-import java.util.Collection;
-
import org.restlet.data.CharacterSet;
import org.restlet.data.Encoding;
import org.restlet.data.Reference;
import org.restlet.util.NamedValue;
+import java.io.StringWriter;
+import java.util.Collection;
+
/**
* HTTP-style header writer.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/LanguageReader.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/LanguageReader.java
index cc579c056a..e0f2e3010a 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/LanguageReader.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/LanguageReader.java
@@ -9,10 +9,10 @@
package org.restlet.engine.header;
-import java.io.IOException;
-
import org.restlet.data.Language;
+import java.io.IOException;
+
/**
* Language header reader.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/LanguageWriter.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/LanguageWriter.java
index 9b8960a595..e52c90b86e 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/LanguageWriter.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/LanguageWriter.java
@@ -9,10 +9,10 @@
package org.restlet.engine.header;
-import java.util.List;
-
import org.restlet.data.Language;
+import java.util.List;
+
/**
* Language header writer.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/MethodReader.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/MethodReader.java
index 6838b82257..2c9e4d7a8c 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/MethodReader.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/MethodReader.java
@@ -9,12 +9,12 @@
package org.restlet.engine.header;
-import java.io.IOException;
-import java.util.Collection;
-
import org.restlet.data.Header;
import org.restlet.data.Method;
+import java.io.IOException;
+import java.util.Collection;
+
/**
* Method header reader.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/MethodWriter.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/MethodWriter.java
index 302093751b..359e884101 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/MethodWriter.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/MethodWriter.java
@@ -9,10 +9,10 @@
package org.restlet.engine.header;
-import java.util.Set;
-
import org.restlet.data.Method;
+import java.util.Set;
+
/**
* Method header writer.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/PreferenceReader.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/PreferenceReader.java
index a209dda99b..a0a1602804 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/PreferenceReader.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/PreferenceReader.java
@@ -9,24 +9,13 @@
package org.restlet.engine.header;
-import static org.restlet.engine.header.HeaderUtils.isComma;
-import static org.restlet.engine.header.HeaderUtils.isDoubleQuote;
-import static org.restlet.engine.header.HeaderUtils.isSpace;
-import static org.restlet.engine.header.HeaderUtils.isText;
-import static org.restlet.engine.header.HeaderUtils.isTokenChar;
+import org.restlet.data.*;
+import org.restlet.util.Series;
import java.io.IOException;
import java.util.Iterator;
-import org.restlet.data.CharacterSet;
-import org.restlet.data.ClientInfo;
-import org.restlet.data.Encoding;
-import org.restlet.data.Language;
-import org.restlet.data.MediaType;
-import org.restlet.data.Metadata;
-import org.restlet.data.Parameter;
-import org.restlet.data.Preference;
-import org.restlet.util.Series;
+import static org.restlet.engine.header.HeaderUtils.*;
/**
* Preference header reader. Works for character sets, encodings, languages or
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/PreferenceWriter.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/PreferenceWriter.java
index 2253ba11e8..1b0ca1cd65 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/PreferenceWriter.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/PreferenceWriter.java
@@ -9,13 +9,13 @@
package org.restlet.engine.header;
+import org.restlet.data.Parameter;
+import org.restlet.data.Preference;
+
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
-import org.restlet.data.Parameter;
-import org.restlet.data.Preference;
-
/**
* Preference header writer.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/ProductReader.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/ProductReader.java
index 4dbb671666..ae13ef82f3 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/ProductReader.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/ProductReader.java
@@ -9,11 +9,11 @@
package org.restlet.engine.header;
+import org.restlet.data.Product;
+
import java.util.ArrayList;
import java.util.List;
-import org.restlet.data.Product;
-
/**
* User agent header reader.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/ProductWriter.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/ProductWriter.java
index 7495aadaf2..25f18ebc49 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/ProductWriter.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/ProductWriter.java
@@ -9,11 +9,11 @@
package org.restlet.engine.header;
+import org.restlet.data.Product;
+
import java.util.Iterator;
import java.util.List;
-import org.restlet.data.Product;
-
/**
* User agent header writer.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/RangeReader.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/RangeReader.java
index d8239d972a..8bd4e42b71 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/RangeReader.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/RangeReader.java
@@ -9,12 +9,12 @@
package org.restlet.engine.header;
-import java.util.ArrayList;
-import java.util.List;
-
import org.restlet.data.Range;
import org.restlet.representation.Representation;
+import java.util.ArrayList;
+import java.util.List;
+
/**
* Range header reader.
*
@@ -22,6 +22,8 @@
*/
public class RangeReader {
+ private static final String BYTES_RANGE_PREFIX = "bytes ";
+
/**
* Parse the Content-Range header value and update the given representation.
*
@@ -29,9 +31,8 @@ public class RangeReader {
* @param representation Representation to update.
*/
public static void update(String value, Representation representation) {
- String prefix = "bytes ";
- if (value != null && value.startsWith(prefix)) {
- value = value.substring(prefix.length());
+ if (value != null && value.startsWith(BYTES_RANGE_PREFIX)) {
+ value = value.substring(BYTES_RANGE_PREFIX.length());
int index = value.indexOf("-");
int index1 = value.indexOf("/");
@@ -89,7 +90,7 @@ public static List read(String rangeHeader) {
/**
* Private constructor to ensure that the class acts as a true utility class
- * i.e. it isn't instantiable and extensible.
+ * i.e., it isn't instantiable and extensible.
*/
private RangeReader() {
}
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/RangeWriter.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/RangeWriter.java
index 45559ca5cb..dc186a6a6f 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/RangeWriter.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/RangeWriter.java
@@ -9,11 +9,11 @@
package org.restlet.engine.header;
-import java.util.List;
-
import org.restlet.data.Range;
import org.restlet.representation.Representation;
+import java.util.List;
+
/**
* Range header writer.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/RecipientInfoReader.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/RecipientInfoReader.java
index 2a1b3964f7..e2912d92c1 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/RecipientInfoReader.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/RecipientInfoReader.java
@@ -9,13 +9,13 @@
package org.restlet.engine.header;
-import java.io.IOException;
-import java.util.Collection;
-
import org.restlet.data.Header;
import org.restlet.data.Protocol;
import org.restlet.data.RecipientInfo;
+import java.io.IOException;
+import java.util.Collection;
+
/**
* Recipient info header reader.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/RecipientInfoWriter.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/RecipientInfoWriter.java
index b1d0d692cb..7a4b030de4 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/RecipientInfoWriter.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/RecipientInfoWriter.java
@@ -9,10 +9,10 @@
package org.restlet.engine.header;
-import java.util.List;
-
import org.restlet.data.RecipientInfo;
+import java.util.List;
+
/**
* Recipient info header writer.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/StringReader.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/StringReader.java
index 0ae641dccf..8334b5a7f3 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/StringReader.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/StringReader.java
@@ -9,11 +9,11 @@
package org.restlet.engine.header;
+import org.restlet.data.Header;
+
import java.io.IOException;
import java.util.Collection;
-import org.restlet.data.Header;
-
/**
* String header reader.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/TagReader.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/TagReader.java
index c657a727ca..c517827e52 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/TagReader.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/TagReader.java
@@ -9,12 +9,12 @@
package org.restlet.engine.header;
-import java.io.IOException;
-import java.util.Collection;
-
import org.restlet.data.Header;
import org.restlet.data.Tag;
+import java.io.IOException;
+import java.util.Collection;
+
/**
* Tag header reader.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/TagWriter.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/TagWriter.java
index 86e763a667..5ede818710 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/TagWriter.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/TagWriter.java
@@ -9,10 +9,10 @@
package org.restlet.engine.header;
-import java.util.List;
-
import org.restlet.data.Tag;
+import java.util.List;
+
/**
* Tag header writer.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/WarningReader.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/WarningReader.java
index a9a5cd80f5..98df497f6f 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/WarningReader.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/WarningReader.java
@@ -9,14 +9,14 @@
package org.restlet.engine.header;
-import java.io.IOException;
-import java.util.Collection;
-
import org.restlet.data.Header;
import org.restlet.data.Status;
import org.restlet.data.Warning;
import org.restlet.engine.util.DateUtils;
+import java.io.IOException;
+import java.util.Collection;
+
/**
* Warning header reader.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/WarningWriter.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/WarningWriter.java
index 698a277647..4d1891f7b0 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/WarningWriter.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/header/WarningWriter.java
@@ -9,11 +9,11 @@
package org.restlet.engine.header;
-import java.util.List;
-
import org.restlet.data.Warning;
import org.restlet.engine.util.DateUtils;
+import java.util.List;
+
/**
* Warning header writer.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/internal/Activator.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/internal/Activator.java
index 82503d6175..5803404e74 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/internal/Activator.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/internal/Activator.java
@@ -9,18 +9,14 @@
package org.restlet.engine.internal;
-import java.net.URL;
-import java.util.List;
-
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.BundleEvent;
-import org.osgi.framework.BundleListener;
+import org.osgi.framework.*;
import org.restlet.Client;
import org.restlet.Server;
import org.restlet.engine.Engine;
+import java.net.URL;
+import java.util.List;
+
/**
* OSGi activator. It registers the NRE into the Restlet API and also introspect
* the bundles to find connector or authentication helpers.
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/io/IoUtils.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/io/IoUtils.java
index 223d3eef58..a744b4eedc 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/io/IoUtils.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/io/IoUtils.java
@@ -9,25 +9,17 @@
package org.restlet.engine.io;
-import static org.restlet.data.Range.isBytesRange;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.Reader;
-import java.io.UnsupportedEncodingException;
-import java.io.Writer;
-import java.util.logging.Level;
-
import org.restlet.Context;
import org.restlet.data.CharacterSet;
import org.restlet.data.Range;
import org.restlet.engine.Engine;
import org.restlet.representation.Representation;
+import java.io.*;
+import java.util.logging.Level;
+
+import static org.restlet.data.Range.isBytesRange;
+
/**
* IO manipulation utilities.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/io/RangeInputStream.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/io/RangeInputStream.java
index f9a8cb0413..591ac21a01 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/io/RangeInputStream.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/io/RangeInputStream.java
@@ -9,13 +9,13 @@
package org.restlet.engine.io;
+import org.restlet.data.Range;
+import org.restlet.representation.Representation;
+
import java.io.FilterInputStream;
import java.io.IOException;
import java.io.InputStream;
-import org.restlet.data.Range;
-import org.restlet.representation.Representation;
-
/**
* Filters an input stream to expose only a given range.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/io/ReaderInputStream.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/io/ReaderInputStream.java
index 514d955c95..1a24b53e79 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/io/ReaderInputStream.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/io/ReaderInputStream.java
@@ -9,6 +9,8 @@
package org.restlet.engine.io;
+import org.restlet.data.CharacterSet;
+
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
@@ -17,8 +19,6 @@
import java.nio.CharBuffer;
import java.nio.charset.CharsetEncoder;
-import org.restlet.data.CharacterSet;
-
/**
* Input stream based on a reader. The implementation relies on the NIO
* {@link CharsetEncoder} class.
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/io/WriterOutputStream.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/io/WriterOutputStream.java
index bef625174e..e22ec6a456 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/io/WriterOutputStream.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/io/WriterOutputStream.java
@@ -9,6 +9,8 @@
package org.restlet.engine.io;
+import org.restlet.data.CharacterSet;
+
import java.io.IOException;
import java.io.OutputStream;
import java.io.Writer;
@@ -16,8 +18,6 @@
import java.nio.CharBuffer;
import java.nio.charset.Charset;
-import org.restlet.data.CharacterSet;
-
/**
* Output stream wrapping a character writer.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/local/ClapClientHelper.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/local/ClapClientHelper.java
index 3c1b62fb9c..63f0754827 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/local/ClapClientHelper.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/local/ClapClientHelper.java
@@ -9,25 +9,21 @@
package org.restlet.engine.local;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.Date;
-import java.util.logging.Level;
-
import org.restlet.Client;
import org.restlet.Request;
import org.restlet.Response;
-import org.restlet.data.LocalReference;
-import org.restlet.data.Method;
-import org.restlet.data.Protocol;
-import org.restlet.data.Reference;
-import org.restlet.data.Status;
+import org.restlet.data.*;
import org.restlet.representation.InputRepresentation;
import org.restlet.representation.Representation;
import org.restlet.service.MetadataService;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.Date;
+import java.util.logging.Level;
+
/**
* Connector to the resources accessed via class loaders. Note that if you use
* the class authority for your CLAP URIs, you can provide a custom classloader
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/local/DirectoryServerResource.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/local/DirectoryServerResource.java
index 0876c92d2b..065b2c145a 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/local/DirectoryServerResource.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/local/DirectoryServerResource.java
@@ -9,23 +9,10 @@
package org.restlet.engine.local;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.List;
-import java.util.SortedSet;
-import java.util.TreeSet;
-import java.util.logging.Level;
-
import org.restlet.Request;
import org.restlet.Response;
import org.restlet.Restlet;
-import org.restlet.data.MediaType;
-import org.restlet.data.Method;
-import org.restlet.data.Reference;
-import org.restlet.data.ReferenceList;
-import org.restlet.data.Status;
+import org.restlet.data.*;
import org.restlet.engine.util.StringUtils;
import org.restlet.representation.Representation;
import org.restlet.representation.Variant;
@@ -33,6 +20,10 @@
import org.restlet.resource.ResourceException;
import org.restlet.resource.ServerResource;
+import java.io.IOException;
+import java.util.*;
+import java.util.logging.Level;
+
/**
* Resource supported by a set of context representations (from file system,
* class loaders and webapp context). A content negotiation mechanism (similar
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/local/Entity.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/local/Entity.java
index 3cd61012f7..42dfe7d2bc 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/local/Entity.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/local/Entity.java
@@ -9,21 +9,17 @@
package org.restlet.engine.local;
+import org.restlet.data.*;
+import org.restlet.representation.Representation;
+import org.restlet.representation.Variant;
+import org.restlet.service.MetadataService;
+
import java.io.File;
import java.util.Collection;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
-import org.restlet.data.CharacterSet;
-import org.restlet.data.Encoding;
-import org.restlet.data.Language;
-import org.restlet.data.MediaType;
-import org.restlet.data.Metadata;
-import org.restlet.representation.Representation;
-import org.restlet.representation.Variant;
-import org.restlet.service.MetadataService;
-
/**
* Represents a local entity, for example a regular file or a directory.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/local/EntityClientHelper.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/local/EntityClientHelper.java
index 7c8c59ea6c..a045b994be 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/local/EntityClientHelper.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/local/EntityClientHelper.java
@@ -9,21 +9,16 @@
package org.restlet.engine.local;
-import java.util.Collection;
-import java.util.Iterator;
-
import org.restlet.Client;
import org.restlet.Request;
import org.restlet.Response;
-import org.restlet.data.MediaType;
-import org.restlet.data.Method;
-import org.restlet.data.Preference;
-import org.restlet.data.Reference;
-import org.restlet.data.ReferenceList;
-import org.restlet.data.Status;
+import org.restlet.data.*;
import org.restlet.representation.Representation;
import org.restlet.representation.Variant;
+import java.util.Collection;
+import java.util.Iterator;
+
/**
* Connector to the local entities. That connector supports the content
* negotiation feature (i.e. for GET and HEAD methods) and implements the
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 c083ecaaf9..000e290012 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
@@ -9,23 +9,14 @@
package org.restlet.engine.local;
-import static java.lang.String.format;
-import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
-import static java.util.logging.Level.WARNING;
-import static org.restlet.data.Method.DELETE;
-import static org.restlet.data.Method.GET;
-import static org.restlet.data.Method.HEAD;
-import static org.restlet.data.Method.PUT;
-import static org.restlet.data.Protocol.FILE;
-import static org.restlet.data.Range.isBytesRange;
-import static org.restlet.data.Status.CLIENT_ERROR_BAD_REQUEST;
-import static org.restlet.data.Status.CLIENT_ERROR_FORBIDDEN;
-import static org.restlet.data.Status.CLIENT_ERROR_METHOD_NOT_ALLOWED;
-import static org.restlet.data.Status.CLIENT_ERROR_NOT_ACCEPTABLE;
-import static org.restlet.data.Status.SERVER_ERROR_INTERNAL;
-import static org.restlet.data.Status.SUCCESS_CREATED;
-import static org.restlet.data.Status.SUCCESS_NO_CONTENT;
-import static org.restlet.data.Status.SUCCESS_OK;
+import org.restlet.Client;
+import org.restlet.Request;
+import org.restlet.Response;
+import org.restlet.data.*;
+import org.restlet.engine.io.IoUtils;
+import org.restlet.representation.Representation;
+import org.restlet.representation.Variant;
+import org.restlet.resource.Directory;
import java.io.File;
import java.io.FileFilter;
@@ -39,21 +30,13 @@
import java.util.Iterator;
import java.util.List;
-import org.restlet.Client;
-import org.restlet.Request;
-import org.restlet.Response;
-import org.restlet.data.CharacterSet;
-import org.restlet.data.Encoding;
-import org.restlet.data.Language;
-import org.restlet.data.LocalReference;
-import org.restlet.data.MediaType;
-import org.restlet.data.Metadata;
-import org.restlet.data.Range;
-import org.restlet.data.Status;
-import org.restlet.engine.io.IoUtils;
-import org.restlet.representation.Representation;
-import org.restlet.representation.Variant;
-import org.restlet.resource.Directory;
+import static java.lang.String.format;
+import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
+import static java.util.logging.Level.WARNING;
+import static org.restlet.data.Method.*;
+import static org.restlet.data.Protocol.FILE;
+import static org.restlet.data.Range.isBytesRange;
+import static org.restlet.data.Status.*;
/**
* Connector to the file resources accessible. Here is the list of parameters
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/local/FileEntity.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/local/FileEntity.java
index 46d167b9b2..43390c1f1c 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/local/FileEntity.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/local/FileEntity.java
@@ -9,15 +9,15 @@
package org.restlet.engine.local;
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-
import org.restlet.data.MediaType;
import org.restlet.representation.FileRepresentation;
import org.restlet.representation.Representation;
import org.restlet.service.MetadataService;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
/**
* Local entity based on a regular {@link File}.
*/
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/local/ZipClientHelper.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/local/ZipClientHelper.java
index 02b6fb1781..da75259526 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/local/ZipClientHelper.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/local/ZipClientHelper.java
@@ -9,30 +9,21 @@
package org.restlet.engine.local;
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.Collection;
-import java.util.Enumeration;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipFile;
-import java.util.zip.ZipOutputStream;
-
import org.restlet.Client;
import org.restlet.Request;
import org.restlet.Response;
-import org.restlet.data.LocalReference;
-import org.restlet.data.Method;
-import org.restlet.data.Protocol;
-import org.restlet.data.ReferenceList;
-import org.restlet.data.Status;
+import org.restlet.data.*;
import org.restlet.engine.io.IoUtils;
import org.restlet.representation.Representation;
import org.restlet.service.MetadataService;
+import java.io.*;
+import java.util.Collection;
+import java.util.Enumeration;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
+import java.util.zip.ZipOutputStream;
+
/**
* ZIP and JAR client connector. Only works for archives available as local
* files.
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/local/ZipEntryEntity.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/local/ZipEntryEntity.java
index 130694f0fb..54759b5df0 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/local/ZipEntryEntity.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/local/ZipEntryEntity.java
@@ -9,16 +9,16 @@
package org.restlet.engine.local;
+import org.restlet.data.MediaType;
+import org.restlet.representation.Representation;
+import org.restlet.service.MetadataService;
+
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
-import org.restlet.data.MediaType;
-import org.restlet.representation.Representation;
-import org.restlet.service.MetadataService;
-
/**
* Local entity based on an entry in a Zip archive.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/local/ZipEntryRepresentation.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/local/ZipEntryRepresentation.java
index 7445a4ebdc..be51e61604 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/local/ZipEntryRepresentation.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/local/ZipEntryRepresentation.java
@@ -9,6 +9,11 @@
package org.restlet.engine.local;
+import org.restlet.data.Disposition;
+import org.restlet.data.MediaType;
+import org.restlet.engine.io.IoUtils;
+import org.restlet.representation.StreamRepresentation;
+
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
@@ -16,11 +21,6 @@
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
-import org.restlet.data.Disposition;
-import org.restlet.data.MediaType;
-import org.restlet.engine.io.IoUtils;
-import org.restlet.representation.StreamRepresentation;
-
/**
* An entry in a Zip/JAR file.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/log/DefaultAccessLogFormatter.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/log/DefaultAccessLogFormatter.java
index 10a7e84e61..4a77c7cf99 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/log/DefaultAccessLogFormatter.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/log/DefaultAccessLogFormatter.java
@@ -9,10 +9,10 @@
package org.restlet.engine.log;
-import java.util.logging.Handler;
-
import org.restlet.engine.Engine;
+import java.util.logging.Handler;
+
/**
* Access log record formatter which writes a header describing the default log
* format.
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/log/IdentClient.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/log/IdentClient.java
index aa948e4944..f4f33e3e2e 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/log/IdentClient.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/log/IdentClient.java
@@ -9,6 +9,10 @@
package org.restlet.engine.log;
+import org.restlet.Context;
+import org.restlet.engine.io.IoUtils;
+import org.restlet.engine.util.StringUtils;
+
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
@@ -17,10 +21,6 @@
import java.util.StringTokenizer;
import java.util.logging.Level;
-import org.restlet.Context;
-import org.restlet.engine.io.IoUtils;
-import org.restlet.engine.util.StringUtils;
-
/**
* Simple IDENT client. Follow the RFC 1413.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/log/LogFilter.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/log/LogFilter.java
index 6b540f8c5c..61b8f7ddec 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/log/LogFilter.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/log/LogFilter.java
@@ -9,9 +9,6 @@
package org.restlet.engine.log;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
import org.restlet.Context;
import org.restlet.Request;
import org.restlet.Response;
@@ -19,6 +16,9 @@
import org.restlet.routing.Filter;
import org.restlet.service.LogService;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
/**
* Filter logging all calls after their handling by the target Restlet. The
* current format is similar to IIS 6 logs. The logging is based on the
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/resource/AnnotationInfo.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/resource/AnnotationInfo.java
index b6d814267e..ab0334c0ea 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/resource/AnnotationInfo.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/resource/AnnotationInfo.java
@@ -9,17 +9,13 @@
package org.restlet.engine.resource;
-import java.lang.reflect.Array;
-import java.lang.reflect.GenericArrayType;
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
-import java.lang.reflect.TypeVariable;
-import java.util.Objects;
-import java.util.logging.Level;
-
import org.restlet.Context;
import org.restlet.engine.util.SystemUtils;
+import java.lang.reflect.*;
+import java.util.Objects;
+import java.util.logging.Level;
+
/**
* Descriptor for Restlet annotations.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/resource/AnnotationUtils.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/resource/AnnotationUtils.java
index 0b2de41d65..f083ee15ed 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/resource/AnnotationUtils.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/resource/AnnotationUtils.java
@@ -9,13 +9,6 @@
package org.restlet.engine.resource;
-import java.io.IOException;
-import java.lang.annotation.Annotation;
-import java.util.List;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-import java.util.concurrent.CopyOnWriteArrayList;
-
import org.restlet.Context;
import org.restlet.data.Form;
import org.restlet.data.Method;
@@ -24,6 +17,13 @@
import org.restlet.resource.Status;
import org.restlet.service.MetadataService;
+import java.io.IOException;
+import java.lang.annotation.Annotation;
+import java.util.List;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.CopyOnWriteArrayList;
+
/**
* Utilities to manipulate Restlet annotations.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/resource/ClientInvocationHandler.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/resource/ClientInvocationHandler.java
index 4a1fe0e7b8..7b3071ac99 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/resource/ClientInvocationHandler.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/resource/ClientInvocationHandler.java
@@ -9,13 +9,6 @@
package org.restlet.engine.resource;
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.Method;
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
-import java.util.List;
-import java.util.logging.Level;
-
import org.restlet.Context;
import org.restlet.Request;
import org.restlet.Response;
@@ -31,6 +24,13 @@
import org.restlet.resource.ResourceException;
import org.restlet.resource.Result;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.util.List;
+import java.util.logging.Level;
+
/**
* Reflection proxy invocation handler created for the
* {@link ClientResource#wrap(Class)} and related methods.
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/resource/MethodAnnotationInfo.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/resource/MethodAnnotationInfo.java
index 195bef3b58..387f43a72e 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/resource/MethodAnnotationInfo.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/resource/MethodAnnotationInfo.java
@@ -9,27 +9,17 @@
package org.restlet.engine.resource;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Objects;
-import java.util.StringTokenizer;
-
import org.restlet.Context;
-import org.restlet.data.CharacterSet;
-import org.restlet.data.Form;
-import org.restlet.data.Language;
-import org.restlet.data.MediaType;
-import org.restlet.data.Metadata;
-import org.restlet.data.Method;
-import org.restlet.data.Parameter;
+import org.restlet.data.*;
import org.restlet.engine.util.StringUtils;
import org.restlet.engine.util.SystemUtils;
import org.restlet.representation.Representation;
import org.restlet.representation.Variant;
import org.restlet.service.MetadataService;
+import java.io.IOException;
+import java.util.*;
+
/**
* Descriptor for method annotations.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/resource/ThrowableAnnotationInfo.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/resource/ThrowableAnnotationInfo.java
index f73f48e14e..53764b5b0f 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/resource/ThrowableAnnotationInfo.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/resource/ThrowableAnnotationInfo.java
@@ -9,11 +9,11 @@
package org.restlet.engine.resource;
-import java.util.Objects;
-
import org.restlet.data.Status;
import org.restlet.engine.util.SystemUtils;
+import java.util.Objects;
+
/**
* Descriptor for status annotations.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/resource/VariantInfo.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/resource/VariantInfo.java
index 44ff3795b7..a332fc9757 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/resource/VariantInfo.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/resource/VariantInfo.java
@@ -9,12 +9,12 @@
package org.restlet.engine.resource;
-import java.util.Objects;
-
import org.restlet.data.MediaType;
import org.restlet.engine.util.SystemUtils;
import org.restlet.representation.Variant;
+import java.util.Objects;
+
/**
* Variant that is declared by an annotated Java method.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/security/AuthenticatorHelper.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/security/AuthenticatorHelper.java
index b412d2a131..38b30073ed 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/security/AuthenticatorHelper.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/security/AuthenticatorHelper.java
@@ -9,22 +9,18 @@
package org.restlet.engine.security;
-import java.io.IOException;
-import java.util.logging.Logger;
-
import org.restlet.Context;
import org.restlet.Request;
import org.restlet.Response;
-import org.restlet.data.ChallengeRequest;
-import org.restlet.data.ChallengeResponse;
-import org.restlet.data.ChallengeScheme;
-import org.restlet.data.Header;
-import org.restlet.data.Reference;
+import org.restlet.data.*;
import org.restlet.engine.Helper;
import org.restlet.engine.header.ChallengeWriter;
import org.restlet.engine.header.HeaderConstants;
import org.restlet.util.Series;
+import java.io.IOException;
+import java.util.logging.Logger;
+
/**
* Base class for authentication helpers.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/security/AuthenticatorUtils.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/security/AuthenticatorUtils.java
index 4c0e506a12..df08c74e88 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/security/AuthenticatorUtils.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/security/AuthenticatorUtils.java
@@ -9,21 +9,10 @@
package org.restlet.engine.security;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.logging.Level;
-
import org.restlet.Context;
import org.restlet.Request;
import org.restlet.Response;
-import org.restlet.data.AuthenticationInfo;
-import org.restlet.data.ChallengeRequest;
-import org.restlet.data.ChallengeResponse;
-import org.restlet.data.ChallengeScheme;
-import org.restlet.data.Header;
-import org.restlet.data.Parameter;
-import org.restlet.data.Reference;
+import org.restlet.data.*;
import org.restlet.engine.Engine;
import org.restlet.engine.header.ChallengeRequestReader;
import org.restlet.engine.header.ChallengeWriter;
@@ -31,6 +20,11 @@
import org.restlet.engine.header.HeaderReader;
import org.restlet.util.Series;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.logging.Level;
+
/**
* Authentication utilities.
*
@@ -55,7 +49,7 @@ public static boolean anyNull(Object... objects) {
}
/**
- * Formats an authentication information as a HTTP header value. The header is
+ * Formats authentication information as an HTTP header value. The header is
* {@link HeaderConstants#HEADER_AUTHENTICATION_INFO}.
*
* @param info The authentication information to format.
@@ -66,13 +60,13 @@ public static String formatAuthenticationInfo(AuthenticationInfo info) {
boolean firstParameter = true;
if (info != null) {
- if (info.getNextServerNonce() != null && info.getNextServerNonce().length() > 0) {
+ if (info.getNextServerNonce() != null && !info.getNextServerNonce().isEmpty()) {
cw.setFirstChallengeParameter(firstParameter);
cw.appendQuotedChallengeParameter("nextnonce", info.getNextServerNonce());
firstParameter = false;
}
- if (info.getQuality() != null && info.getQuality().length() > 0) {
+ if (info.getQuality() != null && !info.getQuality().isEmpty()) {
cw.setFirstChallengeParameter(firstParameter);
cw.appendChallengeParameter("qop", info.getQuality());
firstParameter = false;
@@ -82,13 +76,13 @@ public static String formatAuthenticationInfo(AuthenticationInfo info) {
}
}
- if (info.getResponseDigest() != null && info.getResponseDigest().length() > 0) {
+ if (info.getResponseDigest() != null && !info.getResponseDigest().isEmpty()) {
cw.setFirstChallengeParameter(firstParameter);
cw.appendQuotedChallengeParameter("rspauth", info.getResponseDigest());
firstParameter = false;
}
- if (info.getClientNonce() != null && info.getClientNonce().length() > 0) {
+ if (info.getClientNonce() != null && !info.getClientNonce().isEmpty()) {
cw.setFirstChallengeParameter(firstParameter);
cw.appendChallengeParameter("cnonce", info.getClientNonce());
firstParameter = false;
@@ -99,7 +93,7 @@ public static String formatAuthenticationInfo(AuthenticationInfo info) {
}
/**
- * Formats a given nonce count as a HTTP header value. The header is
+ * Formats a given nonce count as an HTTP header value. The header is
* {@link HeaderConstants#HEADER_AUTHENTICATION_INFO}.
*
* @param nonceCount The given nonce count.
@@ -115,7 +109,7 @@ public static String formatNonceCount(int nonceCount) {
}
/**
- * Formats a challenge request as a HTTP header value. The header is
+ * Formats a challenge request as an HTTP header value. The header is
* {@link HeaderConstants#HEADER_WWW_AUTHENTICATE} . The default implementation
* relies on
* {@link AuthenticatorHelper#formatRequest(ChallengeWriter, ChallengeRequest, Response, Series)}
@@ -166,7 +160,7 @@ public static String formatRequest(ChallengeRequest challenge, Response response
}
/**
- * Formats a challenge response as a HTTP header value. The header is
+ * Formats a challenge response as an HTTP header value. The header is
* {@link HeaderConstants#HEADER_AUTHORIZATION}. The default implementation
* relies on
* {@link AuthenticatorHelper#formatResponse(ChallengeWriter, ChallengeResponse, Request, Series)}
@@ -176,7 +170,6 @@ public static String formatRequest(ChallengeRequest challenge, Response response
* @param request The parent request.
* @param httpHeaders The current request HTTP headers.
* @return The {@link HeaderConstants#HEADER_AUTHORIZATION} header value.
- * @throws IOException
* @link ChallengeResponse#getCredentials()}.
*/
public static String formatResponse(ChallengeResponse challenge, Request request, Series httpHeaders) {
@@ -222,7 +215,6 @@ public static String formatResponse(ChallengeResponse challenge, Request request
*
* @param header The header value to parse.
* @return The equivalent {@link AuthenticationInfo} instance.
- * @throws IOException
*/
public static AuthenticationInfo parseAuthenticationInfo(String header) {
AuthenticationInfo result = null;
@@ -271,7 +263,7 @@ public static AuthenticationInfo parseAuthenticationInfo(String header) {
}
/**
- * Parses an authenticate header into a list of challenge request. The header is
+ * Parses an WWW-Authenticate header into a list of challenge request. The header is
* {@link HeaderConstants#HEADER_WWW_AUTHENTICATE}.
*
* @param header The HTTP header value to parse.
@@ -377,7 +369,7 @@ public static void update(ChallengeResponse challengeResponse, Request request,
* Optionally updates the request with a challenge response before sending it.
* This is sometimes useful for authentication schemes that aren't based on the
* Authorization header but instead on URI query parameters or other headers. By
- * default it returns the resource URI reference unchanged.
+ * default, it returns the resource URI reference unchanged.
*
* @param resourceRef The resource URI reference to update.
* @param challengeResponse The challenge response provided.
@@ -402,7 +394,7 @@ public static Reference updateReference(Reference resourceRef, ChallengeResponse
/**
* Private constructor to ensure that the class acts as a true utility class
- * i.e. it isn't instantiable and extensible.
+ * i.e., it isn't instantiable and extensible.
*/
private AuthenticatorUtils() {
}
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/security/HttpBasicHelper.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/security/HttpBasicHelper.java
index 88e10dd70a..74466ab480 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/security/HttpBasicHelper.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/security/HttpBasicHelper.java
@@ -9,25 +9,21 @@
package org.restlet.engine.security;
-import java.io.CharArrayWriter;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.util.Base64;
-import java.util.logging.Level;
-
import org.restlet.Context;
import org.restlet.Request;
import org.restlet.Response;
-import org.restlet.data.ChallengeRequest;
-import org.restlet.data.ChallengeResponse;
-import org.restlet.data.ChallengeScheme;
-import org.restlet.data.Header;
-import org.restlet.data.Parameter;
+import org.restlet.data.*;
import org.restlet.engine.header.ChallengeWriter;
import org.restlet.engine.header.HeaderReader;
import org.restlet.engine.io.IoUtils;
import org.restlet.util.Series;
+import java.io.CharArrayWriter;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.util.Base64;
+import java.util.logging.Level;
+
/**
* Implements the HTTP BASIC authentication.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/ssl/DefaultSslContextFactory.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/ssl/DefaultSslContextFactory.java
index 4a0828ee18..b22e6c1a7e 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/ssl/DefaultSslContextFactory.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/ssl/DefaultSslContextFactory.java
@@ -9,6 +9,12 @@
package org.restlet.engine.ssl;
+import org.restlet.data.Parameter;
+import org.restlet.util.Series;
+
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLEngine;
+import javax.net.ssl.SSLSocketFactory;
import java.io.FileInputStream;
import java.security.KeyStore;
import java.security.SecureRandom;
@@ -16,13 +22,6 @@
import java.util.HashSet;
import java.util.Set;
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLEngine;
-import javax.net.ssl.SSLSocketFactory;
-
-import org.restlet.data.Parameter;
-import org.restlet.util.Series;
-
/**
* This {@link SslContextFactory} makes it possible to configure most basic
* options when building an SSLContext. See the {@link #init(Series)} method for
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/ssl/SslContextFactory.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/ssl/SslContextFactory.java
index e837a29aa7..01406d317e 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/ssl/SslContextFactory.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/ssl/SslContextFactory.java
@@ -9,11 +9,11 @@
package org.restlet.engine.ssl;
-import javax.net.ssl.SSLContext;
-
import org.restlet.data.Parameter;
import org.restlet.util.Series;
+import javax.net.ssl.SSLContext;
+
/**
* This is an abstract factory that produces configured and initialized
* instances of SSLContext. Concrete implementations of SslContextFactory must
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/ssl/SslUtils.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/ssl/SslUtils.java
index 58f859878e..46233894c8 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/ssl/SslUtils.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/ssl/SslUtils.java
@@ -9,14 +9,14 @@
package org.restlet.engine.ssl;
+import org.restlet.Context;
+import org.restlet.engine.RestletHelper;
+
import java.util.StringTokenizer;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.logging.Level;
-import org.restlet.Context;
-import org.restlet.engine.RestletHelper;
-
/**
* Various HTTPS utilities.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/ssl/WrapperSslContextSpi.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/ssl/WrapperSslContextSpi.java
index e601749451..074eabbff9 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/ssl/WrapperSslContextSpi.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/ssl/WrapperSslContextSpi.java
@@ -9,18 +9,10 @@
package org.restlet.engine.ssl;
+import javax.net.ssl.*;
import java.security.KeyManagementException;
import java.security.SecureRandom;
-import javax.net.ssl.KeyManager;
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLContextSpi;
-import javax.net.ssl.SSLEngine;
-import javax.net.ssl.SSLServerSocketFactory;
-import javax.net.ssl.SSLSessionContext;
-import javax.net.ssl.SSLSocketFactory;
-import javax.net.ssl.TrustManager;
-
/**
* Default SSL context SPI capable or setting additional properties on the
* created SSL engines and socket factories.
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/ssl/WrapperSslServerSocketFactory.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/ssl/WrapperSslServerSocketFactory.java
index e968d70607..10846de58b 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/ssl/WrapperSslServerSocketFactory.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/ssl/WrapperSslServerSocketFactory.java
@@ -9,13 +9,12 @@
package org.restlet.engine.ssl;
+import javax.net.ssl.SSLServerSocket;
+import javax.net.ssl.SSLServerSocketFactory;
import java.io.IOException;
import java.net.InetAddress;
import java.net.ServerSocket;
-import javax.net.ssl.SSLServerSocket;
-import javax.net.ssl.SSLServerSocketFactory;
-
/**
* SSL server socket factory that wraps the default one to do extra
* initialization. Configures the cipher suites and the SSL certificate request.
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/ssl/WrapperSslSocketFactory.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/ssl/WrapperSslSocketFactory.java
index 19b9161e99..8e457268d2 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/ssl/WrapperSslSocketFactory.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/ssl/WrapperSslSocketFactory.java
@@ -9,14 +9,13 @@
package org.restlet.engine.ssl;
+import javax.net.ssl.SSLSocket;
+import javax.net.ssl.SSLSocketFactory;
import java.io.IOException;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
-import javax.net.ssl.SSLSocket;
-import javax.net.ssl.SSLSocketFactory;
-
/**
* SSL socket factory that wraps the default one to do extra initialization.
* Configures the cipher suites and the SSL certificate request.
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 8c2c98da75..f88f95785c 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
@@ -9,11 +9,11 @@
package org.restlet.engine.util;
+import org.restlet.data.Reference;
+
import java.io.Serializable;
import java.util.Comparator;
-import org.restlet.data.Reference;
-
/**
* Allows to sort the list of references set by the resource.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/util/CallResolver.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/util/CallResolver.java
index d084505701..090288c982 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/util/CallResolver.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/util/CallResolver.java
@@ -9,10 +9,6 @@
package org.restlet.engine.util;
-import static org.restlet.engine.util.DateUtils.FORMAT_RFC_1123;
-
-import java.util.Date;
-
import org.restlet.Request;
import org.restlet.Response;
import org.restlet.data.ChallengeResponse;
@@ -22,6 +18,10 @@
import org.restlet.representation.Representation;
import org.restlet.util.Resolver;
+import java.util.Date;
+
+import static org.restlet.engine.util.DateUtils.FORMAT_RFC_1123;
+
/**
* Resolves variable values based on a request and a response.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/util/DefaultSaxHandler.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/util/DefaultSaxHandler.java
index 2c1fd7fbaf..729106a8d5 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/util/DefaultSaxHandler.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/util/DefaultSaxHandler.java
@@ -9,16 +9,16 @@
package org.restlet.engine.util;
-import java.io.IOException;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
import org.restlet.Context;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.xml.sax.helpers.DefaultHandler;
+import java.io.IOException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
/**
* A Utility class which extends the provided {@link DefaultHandler} and
* implements the {@link org.w3c.dom.ls.LSResourceResolver} interface. All the
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/util/EngineClassLoader.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/util/EngineClassLoader.java
index f9adbd274e..93646727ff 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/util/EngineClassLoader.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/util/EngineClassLoader.java
@@ -9,14 +9,14 @@
package org.restlet.engine.util;
+import org.restlet.engine.Edition;
+import org.restlet.engine.Engine;
+
import java.io.IOException;
import java.net.URL;
import java.util.Enumeration;
import java.util.Vector;
-import org.restlet.engine.Edition;
-import org.restlet.engine.Engine;
-
/**
* Flexible engine class loader. Uses the current class's class loader as its
* parent. Can also check with the user class loader defined by
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/util/FormReader.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/util/FormReader.java
index 22b49cfc93..3311119a0d 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/util/FormReader.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/util/FormReader.java
@@ -9,6 +9,13 @@
package org.restlet.engine.util;
+import org.restlet.Context;
+import org.restlet.data.CharacterSet;
+import org.restlet.data.Form;
+import org.restlet.data.Parameter;
+import org.restlet.representation.Representation;
+import org.restlet.util.Series;
+
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
@@ -18,13 +25,6 @@
import java.util.Map;
import java.util.logging.Level;
-import org.restlet.Context;
-import org.restlet.data.CharacterSet;
-import org.restlet.data.Form;
-import org.restlet.data.Parameter;
-import org.restlet.representation.Representation;
-import org.restlet.util.Series;
-
/**
* Form reader.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/util/FormUtils.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/util/FormUtils.java
index 38093e698e..8a6adbb188 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/util/FormUtils.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/util/FormUtils.java
@@ -9,19 +9,15 @@
package org.restlet.engine.util;
+import org.restlet.Context;
+import org.restlet.data.*;
+import org.restlet.representation.Representation;
+
import java.io.IOException;
import java.util.Iterator;
import java.util.Map;
import java.util.logging.Level;
-import org.restlet.Context;
-import org.restlet.data.CharacterSet;
-import org.restlet.data.Form;
-import org.restlet.data.MediaType;
-import org.restlet.data.Parameter;
-import org.restlet.data.Reference;
-import org.restlet.representation.Representation;
-
/**
* Representation of a Web form containing submitted parameters.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/util/InternetDateFormat.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/util/InternetDateFormat.java
index a60195c528..5f748be3ac 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/util/InternetDateFormat.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/util/InternetDateFormat.java
@@ -9,16 +9,8 @@
package org.restlet.engine.util;
-import java.text.DateFormat;
-import java.text.DecimalFormat;
-import java.text.FieldPosition;
-import java.text.ParseException;
-import java.text.ParsePosition;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.GregorianCalendar;
-import java.util.SimpleTimeZone;
-import java.util.TimeZone;
+import java.text.*;
+import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/util/MapResolver.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/util/MapResolver.java
index e87340bd3a..03f065a281 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/util/MapResolver.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/util/MapResolver.java
@@ -9,10 +9,10 @@
package org.restlet.engine.util;
-import java.util.Map;
-
import org.restlet.util.Resolver;
+import java.util.Map;
+
/**
* Resolves variable values based on a map.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/util/StringUtils.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/util/StringUtils.java
index 3a19bc52fa..44deac01b6 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/util/StringUtils.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/util/StringUtils.java
@@ -13,7 +13,6 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.StringTokenizer;
/**
* String manipulation utilities.
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/util/WrapperScheduledExecutorService.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/util/WrapperScheduledExecutorService.java
index a270eb1745..74c66707dd 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/util/WrapperScheduledExecutorService.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/engine/util/WrapperScheduledExecutorService.java
@@ -11,13 +11,7 @@
import java.util.Collection;
import java.util.List;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ScheduledFuture;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
+import java.util.concurrent.*;
/**
* Wrapper of a {@link ScheduledExecutorService} instance, to prevent
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/AppendableRepresentation.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/AppendableRepresentation.java
index 2d2368923c..6e585fd1ee 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/AppendableRepresentation.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/AppendableRepresentation.java
@@ -9,12 +9,12 @@
package org.restlet.representation;
-import java.io.IOException;
-
import org.restlet.data.CharacterSet;
import org.restlet.data.Language;
import org.restlet.data.MediaType;
+import java.io.IOException;
+
/**
* Represents an appendable sequence of characters.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/BufferingRepresentation.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/BufferingRepresentation.java
index 55b8301427..158a68d309 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/BufferingRepresentation.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/BufferingRepresentation.java
@@ -9,19 +9,13 @@
package org.restlet.representation;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.Reader;
-import java.io.Writer;
-import java.util.logging.Level;
-
import org.restlet.Context;
import org.restlet.engine.io.IoUtils;
import org.restlet.util.WrapperRepresentation;
+import java.io.*;
+import java.util.logging.Level;
+
/**
* Representation capable of buffering the wrapped representation. This is
* useful when you want to prevent chunk encoding from being used for dynamic
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/ByteArrayRepresentation.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/ByteArrayRepresentation.java
index 60ade4ece2..92df21d687 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/ByteArrayRepresentation.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/ByteArrayRepresentation.java
@@ -9,10 +9,10 @@
package org.restlet.representation;
-import java.io.ByteArrayInputStream;
-
import org.restlet.data.MediaType;
+import java.io.ByteArrayInputStream;
+
/**
* Representation wrapping a byte array.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/CharacterRepresentation.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/CharacterRepresentation.java
index 1fa8df18af..15c61f254f 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/CharacterRepresentation.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/CharacterRepresentation.java
@@ -9,15 +9,15 @@
package org.restlet.representation;
+import org.restlet.data.CharacterSet;
+import org.restlet.data.MediaType;
+import org.restlet.engine.io.IoUtils;
+
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Writer;
-import org.restlet.data.CharacterSet;
-import org.restlet.data.MediaType;
-import org.restlet.engine.io.IoUtils;
-
/**
* Representation based on a BIO character stream.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/DigesterRepresentation.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/DigesterRepresentation.java
index 245688d686..20116ff21c 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/DigesterRepresentation.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/DigesterRepresentation.java
@@ -9,22 +9,18 @@
package org.restlet.representation;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.Reader;
-import java.io.Writer;
+import org.restlet.Context;
+import org.restlet.data.Digest;
+import org.restlet.engine.io.IoUtils;
+import org.restlet.util.WrapperRepresentation;
+
+import java.io.*;
import java.security.DigestInputStream;
import java.security.DigestOutputStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.logging.Level;
-import org.restlet.Context;
-import org.restlet.data.Digest;
-import org.restlet.engine.io.IoUtils;
-import org.restlet.util.WrapperRepresentation;
-
/**
* Representation capable of computing a digest. It wraps another representation
* and allows to get the computed digest of the wrapped entity after reading or
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/FileRepresentation.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/FileRepresentation.java
index 518f154d8e..c543e8d1fc 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/FileRepresentation.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/FileRepresentation.java
@@ -9,21 +9,14 @@
package org.restlet.representation;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.Reader;
-import java.io.Writer;
-import java.util.Date;
-
import org.restlet.data.Disposition;
import org.restlet.data.LocalReference;
import org.restlet.data.MediaType;
import org.restlet.engine.io.IoUtils;
+import java.io.*;
+import java.util.Date;
+
/**
* Representation based on a static file. Note that in order for Web clients to
* display a download box upon reception of a file representation, it needs an
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/InputRepresentation.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/InputRepresentation.java
index dbf07dfb2a..d23adf96a2 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/InputRepresentation.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/InputRepresentation.java
@@ -9,15 +9,15 @@
package org.restlet.representation;
+import org.restlet.Context;
+import org.restlet.data.MediaType;
+import org.restlet.engine.io.IoUtils;
+
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.logging.Level;
-import org.restlet.Context;
-import org.restlet.data.MediaType;
-import org.restlet.engine.io.IoUtils;
-
/**
* Transient representation based on a BIO input stream.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/ObjectRepresentation.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/ObjectRepresentation.java
index 6dbff65735..fa55b389d9 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/ObjectRepresentation.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/ObjectRepresentation.java
@@ -9,15 +9,10 @@
package org.restlet.representation;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.OutputStream;
-import java.io.Serializable;
-
import org.restlet.data.MediaType;
+import java.io.*;
+
/**
* Representation based on a serializable Java object.
* It supports binary representations of JavaBeans using the
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/OutputRepresentation.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/OutputRepresentation.java
index 8aac4ea8b6..3e2f18e8b1 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/OutputRepresentation.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/OutputRepresentation.java
@@ -9,12 +9,12 @@
package org.restlet.representation;
-import java.io.IOException;
-import java.io.InputStream;
-
import org.restlet.data.MediaType;
import org.restlet.engine.io.IoUtils;
+import java.io.IOException;
+import java.io.InputStream;
+
/**
* Representation based on a BIO output stream. This class is a good basis to
* write your own representations, especially for the dynamic and large
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/ReaderRepresentation.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/ReaderRepresentation.java
index 2df605b9cd..89029f5a4d 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/ReaderRepresentation.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/ReaderRepresentation.java
@@ -9,15 +9,15 @@
package org.restlet.representation;
+import org.restlet.Context;
+import org.restlet.data.MediaType;
+import org.restlet.engine.io.IoUtils;
+
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;
import java.util.logging.Level;
-import org.restlet.Context;
-import org.restlet.data.MediaType;
-import org.restlet.engine.io.IoUtils;
-
/**
* Transient representation based on a BIO characters reader.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/Representation.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/Representation.java
index 852bc06f21..73fbfc818e 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/Representation.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/Representation.java
@@ -9,12 +9,6 @@
package org.restlet.representation;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.Reader;
-import java.util.Date;
-
import org.restlet.Request;
import org.restlet.Response;
import org.restlet.data.Disposition;
@@ -24,6 +18,12 @@
import org.restlet.engine.io.IoUtils;
import org.restlet.engine.util.DateUtils;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.Reader;
+import java.util.Date;
+
/**
* Current or intended state of a resource. The content of a representation can
* be retrieved several times if there is a stable and accessible source, like a
@@ -58,7 +58,7 @@ public abstract class Representation extends RepresentationInfo {
private volatile boolean available;
/**
- * The representation digest if any.
+ * The representation's digest, if any.
*/
private volatile org.restlet.data.Digest digest;
@@ -269,7 +269,7 @@ public Range getRange() {
}
/**
- * Returns a characters reader with the representation's content. This method is
+ * Returns a character reader with the representation's content. This method is
* ensured to return a fresh reader for each invocation unless it is a transient
* representation, in which case null is returned. If the representation has no
* character set defined, the system's default one will be used.
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/RepresentationInfo.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/RepresentationInfo.java
index 2fe6c2234b..7210106e77 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/RepresentationInfo.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/RepresentationInfo.java
@@ -9,12 +9,12 @@
package org.restlet.representation;
-import java.util.Date;
-
import org.restlet.data.MediaType;
import org.restlet.data.Tag;
import org.restlet.engine.util.DateUtils;
+import java.util.Date;
+
/**
* Information about a representation. Those metadata don't belong to the parent
* {@link Variant} class, however they are important for conditional method
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/StreamRepresentation.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/StreamRepresentation.java
index 6929a23a49..462209e7d7 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/StreamRepresentation.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/StreamRepresentation.java
@@ -9,13 +9,13 @@
package org.restlet.representation;
+import org.restlet.data.MediaType;
+import org.restlet.engine.io.IoUtils;
+
import java.io.IOException;
import java.io.OutputStream;
import java.io.Reader;
-import org.restlet.data.MediaType;
-import org.restlet.engine.io.IoUtils;
-
/**
* Representation based on a BIO stream.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/StringRepresentation.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/StringRepresentation.java
index 8c9911caa6..07d7e4bef1 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/StringRepresentation.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/StringRepresentation.java
@@ -9,20 +9,14 @@
package org.restlet.representation;
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.Reader;
-import java.io.StringReader;
-import java.io.UnsupportedEncodingException;
-import java.io.Writer;
-import java.util.logging.Level;
-
import org.restlet.Context;
import org.restlet.data.CharacterSet;
import org.restlet.data.Language;
import org.restlet.data.MediaType;
+import java.io.*;
+import java.util.logging.Level;
+
/**
* Represents an Unicode string that can be converted to any character set
* supported by Java.
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/Variant.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/Variant.java
index 9fd47d3fd0..0c282886ee 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/Variant.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/Variant.java
@@ -9,21 +9,15 @@
package org.restlet.representation;
+import org.restlet.data.*;
+import org.restlet.engine.util.SystemUtils;
+import org.restlet.util.WrapperList;
+
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Objects;
-import org.restlet.data.CharacterSet;
-import org.restlet.data.ClientInfo;
-import org.restlet.data.Encoding;
-import org.restlet.data.Language;
-import org.restlet.data.MediaType;
-import org.restlet.data.Preference;
-import org.restlet.data.Reference;
-import org.restlet.engine.util.SystemUtils;
-import org.restlet.util.WrapperList;
-
/**
* Descriptor for available representations of a resource. It contains all the
* important metadata about a representation but is not able to actually serve
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/WriterRepresentation.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/WriterRepresentation.java
index 31a525b3d3..0c8ddd8216 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/WriterRepresentation.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/representation/WriterRepresentation.java
@@ -9,12 +9,12 @@
package org.restlet.representation;
-import java.io.IOException;
-import java.io.Reader;
-
import org.restlet.data.MediaType;
import org.restlet.engine.io.IoUtils;
+import java.io.IOException;
+import java.io.Reader;
+
/**
* Representation based on a BIO characters writer. This class is a good basis
* to write your own representations, especially for the dynamic and large ones.
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/ClientResource.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/ClientResource.java
index 50509da0e1..0c3c0dd215 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/ClientResource.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/ClientResource.java
@@ -9,35 +9,19 @@
package org.restlet.resource;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.logging.Level;
-
-import org.restlet.Client;
-import org.restlet.Context;
-import org.restlet.Request;
-import org.restlet.Response;
-import org.restlet.Restlet;
-import org.restlet.Uniform;
-import org.restlet.data.ChallengeResponse;
-import org.restlet.data.ChallengeScheme;
-import org.restlet.data.ClientInfo;
-import org.restlet.data.Conditions;
-import org.restlet.data.Cookie;
-import org.restlet.data.MediaType;
-import org.restlet.data.Metadata;
-import org.restlet.data.Method;
-import org.restlet.data.Parameter;
-import org.restlet.data.Protocol;
-import org.restlet.data.Range;
-import org.restlet.data.Reference;
+import org.restlet.*;
import org.restlet.data.Status;
+import org.restlet.data.*;
import org.restlet.representation.Representation;
import org.restlet.representation.StringRepresentation;
import org.restlet.representation.Variant;
import org.restlet.util.Series;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.logging.Level;
+
/**
* Client-side resource. Acts like a proxy of a target resource.
* This class changes the semantics of the {@link Resource#getRequest()} and
@@ -107,7 +91,7 @@ public static T create(String uri, Class extends T> resourceInterface) {
private volatile boolean followingRedirects;
/**
- * Indicates if maximum number of redirections that can be automatically
+ * Indicates the maximum number of redirections that can be automatically
* followed for a single call.
*/
private volatile int maxRedirects;
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/Delete.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/Delete.java
index 1ebd163093..63870f41cc 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/Delete.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/Delete.java
@@ -9,15 +9,11 @@
package org.restlet.resource;
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
import org.restlet.engine.connector.Method;
import org.restlet.service.MetadataService;
+import java.lang.annotation.*;
+
/**
* Annotation for methods that remove representations. Its semantics is
* equivalent to an HTTP DELETE method.
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/Directory.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/Directory.java
index c20bf31d3d..5eceaa9e1e 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/Directory.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/Directory.java
@@ -9,10 +9,6 @@
package org.restlet.resource;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.List;
-
import org.restlet.Context;
import org.restlet.Request;
import org.restlet.Response;
@@ -25,6 +21,10 @@
import org.restlet.representation.Representation;
import org.restlet.representation.Variant;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
+
/**
* Finder mapping a directory of local resources. Those resources have
* representations accessed by the file system, the class loaders or other URI
@@ -67,7 +67,7 @@ public class Directory extends Finder {
private volatile Comparator comparator;
/**
- * Indicates if the sub-directories are deeply accessible (true by default).
+ * Indicates if the subdirectories are deeply accessible (true by default).
*/
private volatile boolean deeplyAccessible;
@@ -182,9 +182,9 @@ public Representation getIndexRepresentation(Variant variant, ReferenceList inde
/**
* Returns the variant representations of a directory index. This method can be
- * subclassed in order to provide alternative representations.
+ * subclassed to provide alternative representations.
*
- * By default it returns a simple HTML document and a textual URI list as
+ * By default, it returns a simple HTML document and a textual URI list as
* variants. Note that a new instance of the list is created for each call.
*
* @param indexContent The list of references contained in the directory index.
@@ -213,9 +213,9 @@ public void handle(Request request, Response response) {
}
/**
- * Indicates if the sub-directories are deeply accessible (true by default).
+ * Indicates if the subdirectories are deeply accessible (true by default).
*
- * @return True if the sub-directories are deeply accessible.
+ * @return True if the subdirectories are deeply accessible.
*/
public boolean isDeeplyAccessible() {
return this.deeplyAccessible;
@@ -243,7 +243,7 @@ public boolean isModifiable() {
}
/**
- * Indicates if the best content is automatically negotiated. Default value is
+ * Indicates if the best content is automatically negotiated. The default value is
* true.
*
* @return True if the best content is automatically negotiated.
@@ -262,9 +262,9 @@ public void setComparator(Comparator comparator) {
}
/**
- * Indicates if the sub-directories are deeply accessible (true by default).
+ * Indicates if the subdirectories are deeply accessible (true by default).
*
- * @param deeplyAccessible True if the sub-directories are deeply accessible.
+ * @param deeplyAccessible True if the subdirectories are deeply accessible.
*/
public void setDeeplyAccessible(boolean deeplyAccessible) {
this.deeplyAccessible = deeplyAccessible;
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/Finder.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/Finder.java
index acdeb7580e..d7ddf56715 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/Finder.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/Finder.java
@@ -9,16 +9,16 @@
package org.restlet.resource;
-import java.lang.reflect.Constructor;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
import org.restlet.Context;
import org.restlet.Request;
import org.restlet.Response;
import org.restlet.Restlet;
import org.restlet.data.Status;
+import java.lang.reflect.Constructor;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
/**
* Restlet that can find the target server resource that will effectively handle
* incoming calls. By default, based on a given {@link ServerResource} subclass
@@ -185,11 +185,11 @@ public void handle(Request request, Response response) {
ServerResource targetResource = find(request, response);
if (targetResource == null) {
- // If the current status is a success but we couldn't
+ // If the current status is a success, but we couldn't
// find the target resource for the request's URI,
// then we set the response status to 404 (Not Found).
if (getLogger().isLoggable(Level.WARNING)) {
- getLogger().warning("No target resource was defined for this finder: " + toString());
+ getLogger().warning("No target resource was defined for this finder: " + this);
}
response.setStatus(Status.CLIENT_ERROR_NOT_FOUND);
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/Get.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/Get.java
index 6e1ff3b082..df77fdceaa 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/Get.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/Get.java
@@ -9,15 +9,11 @@
package org.restlet.resource;
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
import org.restlet.engine.connector.Method;
import org.restlet.service.MetadataService;
+import java.lang.annotation.*;
+
/**
* Annotation for methods that retrieve a resource representation. Its semantics
* is equivalent to an HTTP GET method.
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/Options.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/Options.java
index b7f256750f..01a7492790 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/Options.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/Options.java
@@ -9,15 +9,11 @@
package org.restlet.resource;
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
import org.restlet.engine.connector.Method;
import org.restlet.service.MetadataService;
+import java.lang.annotation.*;
+
/**
* Annotation for methods that describe a resource. Its semantics is equivalent
* to an HTTP OPTIONS method.
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/Patch.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/Patch.java
index 216123ee7e..6da6843e43 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/Patch.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/Patch.java
@@ -9,15 +9,11 @@
package org.restlet.resource;
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
import org.restlet.engine.connector.Method;
import org.restlet.service.MetadataService;
+import java.lang.annotation.*;
+
/**
* Annotation for methods that apply submitted representations as a patch. Its
* semantics is equivalent to an HTTP PATCH method. Note that your method must
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/Post.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/Post.java
index 936e0ee169..7bffa7b6e2 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/Post.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/Post.java
@@ -9,15 +9,11 @@
package org.restlet.resource;
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
import org.restlet.engine.connector.Method;
import org.restlet.service.MetadataService;
+import java.lang.annotation.*;
+
/**
* Annotation for methods that accept submitted representations. Its semantics
* is equivalent to an HTTP POST method. Note that your method must have one
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/Put.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/Put.java
index 2b7451cabc..4ad3984356 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/Put.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/Put.java
@@ -9,15 +9,11 @@
package org.restlet.resource;
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
import org.restlet.engine.connector.Method;
import org.restlet.service.MetadataService;
+import java.lang.annotation.*;
+
/**
* Annotation for methods that store submitted representations. Its semantics is
* equivalent to an HTTP PUT method. Note that your method must have one input
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/Resource.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/Resource.java
index 4c01521fea..275daaea36 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/Resource.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/Resource.java
@@ -9,38 +9,24 @@
package org.restlet.resource;
-import java.io.IOException;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
import org.restlet.Context;
import org.restlet.Request;
import org.restlet.Response;
import org.restlet.Restlet;
-import org.restlet.data.CacheDirective;
-import org.restlet.data.ChallengeRequest;
-import org.restlet.data.ChallengeResponse;
-import org.restlet.data.ClientInfo;
-import org.restlet.data.Conditions;
-import org.restlet.data.Cookie;
-import org.restlet.data.CookieSetting;
-import org.restlet.data.Dimension;
-import org.restlet.data.Form;
-import org.restlet.data.MediaType;
-import org.restlet.data.Method;
-import org.restlet.data.Protocol;
-import org.restlet.data.Range;
-import org.restlet.data.Reference;
-import org.restlet.data.ServerInfo;
import org.restlet.data.Status;
+import org.restlet.data.*;
import org.restlet.representation.Representation;
import org.restlet.representation.Variant;
import org.restlet.service.MetadataService;
import org.restlet.util.Series;
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
/**
* Base resource class exposing the uniform REST interface. Intended conceptual
* target of a hypertext reference. An uniform resource encapsulates a
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/ServerResource.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/ServerResource.java
index f7ac222d9b..a1e2270ac7 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/ServerResource.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/ServerResource.java
@@ -9,29 +9,9 @@
package org.restlet.resource;
-import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.CopyOnWriteArrayList;
-import java.util.concurrent.CopyOnWriteArraySet;
-import java.util.logging.Level;
-
-import org.restlet.Context;
-import org.restlet.Request;
-import org.restlet.Response;
-import org.restlet.Restlet;
-import org.restlet.Uniform;
-import org.restlet.data.ChallengeRequest;
-import org.restlet.data.CookieSetting;
-import org.restlet.data.Dimension;
-import org.restlet.data.Form;
-import org.restlet.data.MediaType;
-import org.restlet.data.Method;
-import org.restlet.data.Reference;
-import org.restlet.data.ServerInfo;
+import org.restlet.*;
import org.restlet.data.Status;
+import org.restlet.data.*;
import org.restlet.engine.resource.AnnotationInfo;
import org.restlet.engine.resource.AnnotationUtils;
import org.restlet.engine.resource.MethodAnnotationInfo;
@@ -45,6 +25,15 @@
import org.restlet.service.ConverterService;
import org.restlet.util.Series;
+import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.CopyOnWriteArraySet;
+import java.util.logging.Level;
+
/**
* Base class for server-side resources. It acts as a wrapper to a given call,
* including the incoming {@link Request} and the outgoing {@link Response}.
@@ -864,7 +853,7 @@ public List getVariants() {
/**
* Returns a modifiable list of exposed variants for the given method. You can
- * declare variants manually by updating the result list , by overriding this
+ * declare variants manually by updating the result list, by overriding this
* method. By default, the variants will be provided based on annotated methods.
*
* @param method The method.
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/Status.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/Status.java
index 4fb4ee2c71..4fcd3ef539 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/Status.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/resource/Status.java
@@ -9,11 +9,7 @@
package org.restlet.resource;
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
+import java.lang.annotation.*;
/**
* Annotation for {@link Throwable} that map to HTTP error statuses. Its
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/routing/Extractor.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/routing/Extractor.java
index 34cb3b35f5..0c23b7007d 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/routing/Extractor.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/routing/Extractor.java
@@ -9,9 +9,6 @@
package org.restlet.routing;
-import java.util.List;
-import java.util.concurrent.CopyOnWriteArrayList;
-
import org.restlet.Context;
import org.restlet.Request;
import org.restlet.Response;
@@ -21,6 +18,9 @@
import org.restlet.representation.Representation;
import org.restlet.util.Series;
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
+
/**
* Filter extracting attributes from a call. Multiple extractions can be
* defined, based on the query string of the resource reference, on the request
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/routing/Redirector.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/routing/Redirector.java
index 1ab4dc5df5..1fcf7257bf 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/routing/Redirector.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/routing/Redirector.java
@@ -9,14 +9,7 @@
package org.restlet.routing;
-import java.util.logging.Level;
-
-import org.restlet.Application;
-import org.restlet.Component;
-import org.restlet.Context;
-import org.restlet.Request;
-import org.restlet.Response;
-import org.restlet.Restlet;
+import org.restlet.*;
import org.restlet.data.Reference;
import org.restlet.data.Status;
import org.restlet.engine.header.HeaderConstants;
@@ -24,6 +17,8 @@
import org.restlet.representation.Representation;
import org.restlet.util.Resolver;
+import java.util.logging.Level;
+
/**
* Rewrites URIs then redirects the call or the client to a new destination.
* There are various redirection modes that you can choose from: client-side
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 347b112e32..a35b73a990 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
@@ -9,8 +9,6 @@
package org.restlet.routing;
-import java.util.logging.Level;
-
import org.restlet.Context;
import org.restlet.Request;
import org.restlet.Response;
@@ -21,6 +19,8 @@
import org.restlet.resource.ServerResource;
import org.restlet.util.RouteList;
+import java.util.logging.Level;
+
/**
* Restlet routing calls to one of the attached routes. Each route can compute
* an affinity score for each call depending on various criteria. The attach()
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/routing/Template.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/routing/Template.java
index 978255c531..dd8fc9158e 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/routing/Template.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/routing/Template.java
@@ -9,6 +9,12 @@
package org.restlet.routing;
+import org.restlet.Context;
+import org.restlet.Request;
+import org.restlet.Response;
+import org.restlet.data.Reference;
+import org.restlet.util.Resolver;
+
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -18,12 +24,6 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import org.restlet.Context;
-import org.restlet.Request;
-import org.restlet.Response;
-import org.restlet.data.Reference;
-import org.restlet.util.Resolver;
-
/**
* String template with a pluggable model. Supports both formatting and parsing.
* The template variables can be inserted using the "{name}" syntax and
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/routing/TemplateRoute.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/routing/TemplateRoute.java
index da51e33d0c..0ed7857070 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/routing/TemplateRoute.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/routing/TemplateRoute.java
@@ -9,17 +9,17 @@
package org.restlet.routing;
-import java.util.logging.Level;
-
import org.restlet.Request;
import org.restlet.Response;
import org.restlet.Restlet;
import org.restlet.data.Reference;
import org.restlet.data.Status;
+import java.util.logging.Level;
+
/**
* Filter scoring the affinity of calls with the attached Restlet. The score is
- * used by an associated Router in order to determine the most appropriate
+ * used by an associated Router to determine the most appropriate
* Restlet for a given call. The routing is based on a reference template.
*
* Concurrency note: instances of this class or its subclasses can be invoked by
@@ -49,7 +49,7 @@ public TemplateRoute(Restlet next) {
}
/**
- * Constructor. The URIs will be matched agains the template using the
+ * Constructor. The URIs will be matched against the template using the
* {@link Template#MODE_STARTS_WITH} matching mode. This can be changed by
* getting the template and calling {@link Template#setMatchingMode(int)} with
* {@link Template#MODE_EQUALS} for exact matching.
@@ -72,13 +72,13 @@ public TemplateRoute(Router router, String uriTemplate, Restlet next) {
*/
public TemplateRoute(Router router, Template template, Restlet next) {
super(router, next);
- this.matchingQuery = (router == null) ? true : router.getDefaultMatchingQuery();
+ this.matchingQuery = router == null || router.getDefaultMatchingQuery();
this.template = template;
}
/**
- * Allows filtering before its handling by the target Restlet. By default it
- * parses the template variable, adjust the base reference of the target
+ * Allows filtering before its handling by the target Restlet. By default, it
+ * parses the template variable, adjusts the base reference of the target
* resource's reference.
*
* @param request The request to filter.
@@ -98,7 +98,7 @@ protected int beforeHandle(Request request, Response response) {
}
} else if (matchedLength > 0) {
if (request.isLoggable() && getLogger().isLoggable(Level.FINER)) {
- getLogger().finer("" + matchedLength + " characters were matched");
+ getLogger().finer(matchedLength + " characters were matched");
}
// Updates the context
@@ -117,14 +117,14 @@ protected int beforeHandle(Request request, Response response) {
if (getLogger().isLoggable(Level.FINE)) {
remainingPart = request.getResourceRef().getRemainingPart(false, isMatchingQuery());
- if ((remainingPart != null) && (!"".equals(remainingPart))) {
- getLogger().fine("New base URI: \"" + request.getResourceRef().getBaseRef()
- + "\". New remaining part: \"" + remainingPart + "\"");
- } else {
- getLogger().fine("New base URI: \"" + request.getResourceRef().getBaseRef()
- + "\". No remaining part to match");
- }
- }
+ if (remainingPart == null || remainingPart.isEmpty()) {
+ getLogger().fine("New base URI: \"" + request.getResourceRef().getBaseRef()
+ + "\". No remaining part to match");
+ } else {
+ getLogger().fine("New base URI: \"" + request.getResourceRef().getBaseRef()
+ + "\". New remaining part: \"" + remainingPart + "\"");
+ }
+ }
if (getLogger().isLoggable(Level.FINER)) {
getLogger().finer("Delegating the call to the target Restlet");
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/routing/Validator.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/routing/Validator.java
index bfe5a31684..bf824d981f 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/routing/Validator.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/routing/Validator.java
@@ -9,16 +9,16 @@
package org.restlet.routing;
-import java.util.List;
-import java.util.concurrent.CopyOnWriteArrayList;
-import java.util.regex.Pattern;
-
import org.restlet.Context;
import org.restlet.Request;
import org.restlet.Response;
import org.restlet.Restlet;
import org.restlet.data.Status;
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.regex.Pattern;
+
/**
* Filter validating attributes from a call. Validation is verified based on
* regex pattern matching.
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/routing/VirtualHost.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/routing/VirtualHost.java
index a0e867e333..0587f371ff 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/routing/VirtualHost.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/routing/VirtualHost.java
@@ -9,9 +9,6 @@
package org.restlet.routing;
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-
import org.restlet.Context;
import org.restlet.Request;
import org.restlet.Response;
@@ -19,6 +16,9 @@
import org.restlet.resource.Finder;
import org.restlet.resource.ServerResource;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+
/**
* Router of calls from Server connectors to Restlets. The attached Restlets are
* typically Applications.
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/security/Authenticator.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/security/Authenticator.java
index 0e5c3dc71f..ef835aed97 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/security/Authenticator.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/security/Authenticator.java
@@ -9,8 +9,6 @@
package org.restlet.security;
-import java.util.logging.Level;
-
import org.restlet.Context;
import org.restlet.Request;
import org.restlet.Response;
@@ -18,6 +16,8 @@
import org.restlet.data.Status;
import org.restlet.routing.Filter;
+import java.util.logging.Level;
+
/**
* Filter authenticating the client sending the inbound request. Its main role
* is to inspect various credentials provided by the client and to add related
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/security/CertificateAuthenticator.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/security/CertificateAuthenticator.java
index 71ce111c2a..1c99c8c0e1 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/security/CertificateAuthenticator.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/security/CertificateAuthenticator.java
@@ -9,19 +9,18 @@
package org.restlet.security;
+import org.restlet.Context;
+import org.restlet.Request;
+import org.restlet.Response;
+import org.restlet.data.Status;
+
+import javax.security.auth.x500.X500Principal;
import java.security.Principal;
import java.security.cert.Certificate;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.List;
-import javax.security.auth.x500.X500Principal;
-
-import org.restlet.Context;
-import org.restlet.Request;
-import org.restlet.Response;
-import org.restlet.data.Status;
-
/**
* Authenticator based on the SSL client certificate. If a client certificate is
* presented, and accepted by your SSL certificate truststore, it adds the
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/security/ChallengeAuthenticator.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/security/ChallengeAuthenticator.java
index 2af0751b51..2fedc570e6 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/security/ChallengeAuthenticator.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/security/ChallengeAuthenticator.java
@@ -9,16 +9,12 @@
package org.restlet.security;
-import java.util.logging.Level;
-
import org.restlet.Context;
import org.restlet.Request;
import org.restlet.Response;
-import org.restlet.data.ChallengeRequest;
-import org.restlet.data.ChallengeResponse;
-import org.restlet.data.ChallengeScheme;
-import org.restlet.data.ClientInfo;
-import org.restlet.data.Status;
+import org.restlet.data.*;
+
+import java.util.logging.Level;
/**
* Authenticator based on a challenge scheme. This is typically used to support
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/security/Enroler.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/security/Enroler.java
index 99ebb3ce68..43ad1d9a04 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/security/Enroler.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/security/Enroler.java
@@ -9,10 +9,10 @@
package org.restlet.security;
-import java.security.Principal;
-
import org.restlet.data.ClientInfo;
+import java.security.Principal;
+
/**
* Updates an authenticated client user with assigned roles. Typically, it is
* invoked by an {@link Authenticator} after successful authentication to add
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/security/MemoryRealm.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/security/MemoryRealm.java
index cb1af3a790..10e3ef6b57 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/security/MemoryRealm.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/security/MemoryRealm.java
@@ -9,18 +9,18 @@
package org.restlet.security;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.CopyOnWriteArrayList;
-
import org.restlet.Application;
import org.restlet.Request;
import org.restlet.Response;
import org.restlet.data.ClientInfo;
import org.restlet.engine.security.RoleMapping;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.concurrent.CopyOnWriteArrayList;
+
/**
* Security realm based on a memory model. The model is composed of root groups,
* users and mapping to associated roles.
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/security/MethodAuthorizer.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/security/MethodAuthorizer.java
index 16e5099da8..b11028c77e 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/security/MethodAuthorizer.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/security/MethodAuthorizer.java
@@ -9,13 +9,13 @@
package org.restlet.security;
-import java.util.List;
-import java.util.concurrent.CopyOnWriteArrayList;
-
import org.restlet.Request;
import org.restlet.Response;
import org.restlet.data.Method;
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
+
/**
* Authorizer based on authorized methods. Note that this authorizer makes the
* difference between authenticated and anonymous users.
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/security/Realm.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/security/Realm.java
index 052d2f8430..d51a71ed3d 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/security/Realm.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/security/Realm.java
@@ -9,11 +9,11 @@
package org.restlet.security;
-import java.util.concurrent.CopyOnWriteArrayList;
-
import org.restlet.data.Parameter;
import org.restlet.util.Series;
+import java.util.concurrent.CopyOnWriteArrayList;
+
/**
* Security realm capable of providing an enroler and a verifier.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/security/Role.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/security/Role.java
index c153209253..f4b71fa2aa 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/security/Role.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/security/Role.java
@@ -9,14 +9,14 @@
package org.restlet.security;
+import org.restlet.Application;
+import org.restlet.engine.util.SystemUtils;
+
import java.security.Principal;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.CopyOnWriteArrayList;
-import org.restlet.Application;
-import org.restlet.engine.util.SystemUtils;
-
/**
* Application specific role. Common examples are "administrator", "user",
* "anonymous", "supervisor". Note that for reusability purpose, it is
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/security/RoleAuthorizer.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/security/RoleAuthorizer.java
index bba0a6d6d5..3f929e7908 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/security/RoleAuthorizer.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/security/RoleAuthorizer.java
@@ -9,12 +9,12 @@
package org.restlet.security;
-import java.util.List;
-import java.util.concurrent.CopyOnWriteArrayList;
-
import org.restlet.Request;
import org.restlet.Response;
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
+
/**
* Authorizer based on authorized and forbidden roles. Note that if no role is
* added to the "authorizedRoles" list, then only the "forbiddenRoles" list is
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/service/ConnectorService.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/service/ConnectorService.java
index e88ff634c3..58c6652e95 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/service/ConnectorService.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/service/ConnectorService.java
@@ -9,13 +9,13 @@
package org.restlet.service;
-import java.util.List;
-import java.util.concurrent.CopyOnWriteArrayList;
-
import org.restlet.Application;
import org.restlet.data.Protocol;
import org.restlet.representation.Representation;
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
+
/**
* Application service declaring client and server connectors. This is useful at
* deployment time to know which connectors an application expects to be able to
@@ -42,8 +42,8 @@ public class ConnectorService extends Service {
* Constructor.
*/
public ConnectorService() {
- this.clientProtocols = new CopyOnWriteArrayList();
- this.serverProtocols = new CopyOnWriteArrayList();
+ this.clientProtocols = new CopyOnWriteArrayList<>();
+ this.serverProtocols = new CopyOnWriteArrayList<>();
}
/**
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/service/ConnegService.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/service/ConnegService.java
index 61128ff2f6..0918778082 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/service/ConnegService.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/service/ConnegService.java
@@ -9,14 +9,14 @@
package org.restlet.service;
-import java.util.List;
-
import org.restlet.Request;
import org.restlet.engine.application.Conneg;
import org.restlet.engine.application.FlexibleConneg;
import org.restlet.engine.application.StrictConneg;
import org.restlet.representation.Variant;
+import java.util.List;
+
/**
* Application service negotiating the preferred resource variants. This service
* is leveraged by server-side and client-side content negotiation, annotated
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/service/ConverterService.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/service/ConverterService.java
index 2c976349db..12b63901b9 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/service/ConverterService.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/service/ConverterService.java
@@ -9,11 +9,6 @@
package org.restlet.service;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.logging.Level;
-
import org.restlet.Context;
import org.restlet.data.MediaType;
import org.restlet.data.Preference;
@@ -25,6 +20,11 @@
import org.restlet.representation.Variant;
import org.restlet.resource.Resource;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.logging.Level;
+
/**
* Application service converting between representation and regular Java
* objects. The conversion can work in both directions. Actual converters can be
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/service/CorsService.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/service/CorsService.java
index 462b572d91..04bad797e9 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/service/CorsService.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/service/CorsService.java
@@ -9,16 +9,16 @@
package org.restlet.service;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
-
import org.restlet.Context;
import org.restlet.data.Method;
import org.restlet.engine.application.CorsFilter;
import org.restlet.engine.util.SetUtils;
import org.restlet.routing.Filter;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
/**
* Application service that adds support of CORS. This service lets the target
* resource specifies the allowed methods.
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/service/EncoderService.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/service/EncoderService.java
index cc9c681dba..b3dd3be49d 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/service/EncoderService.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/service/EncoderService.java
@@ -9,11 +9,6 @@
package org.restlet.service;
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.List;
-import java.util.concurrent.CopyOnWriteArrayList;
-
import org.restlet.Context;
import org.restlet.data.Encoding;
import org.restlet.data.MediaType;
@@ -21,6 +16,11 @@
import org.restlet.representation.Representation;
import org.restlet.routing.Filter;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
+
/**
* Application service automatically encoding or compressing request entities.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/service/LogService.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/service/LogService.java
index 94c0f7165e..9dadbf8ac5 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/service/LogService.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/service/LogService.java
@@ -9,8 +9,6 @@
package org.restlet.service;
-import java.util.logging.Level;
-
import org.restlet.Context;
import org.restlet.Request;
import org.restlet.Response;
@@ -24,6 +22,8 @@
import org.restlet.routing.Filter;
import org.restlet.routing.Template;
+import java.util.logging.Level;
+
/**
* Service providing access logging service. The implementation is fully based
* on the standard logging mechanism introduced in JDK 1.4.
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/service/MetadataService.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/service/MetadataService.java
index d2e1b41e07..f243a05cde 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/service/MetadataService.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/service/MetadataService.java
@@ -9,17 +9,13 @@
package org.restlet.service;
+import org.restlet.data.*;
+import org.restlet.engine.application.MetadataExtension;
+
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
-import org.restlet.data.CharacterSet;
-import org.restlet.data.Encoding;
-import org.restlet.data.Language;
-import org.restlet.data.MediaType;
-import org.restlet.data.Metadata;
-import org.restlet.engine.application.MetadataExtension;
-
/**
* Application service providing access to metadata and their associated
* extension names. The list of default mappings is documented in the
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/service/RangeService.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/service/RangeService.java
index 0ab4e8f7b3..816bf2ffe4 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/service/RangeService.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/service/RangeService.java
@@ -15,7 +15,7 @@
/**
* Application service automatically exposes ranges of response entities. This
- * allows resources to not care of requested ranges and return full
+ * allows resources to not care for requested ranges and return full
* representations that will then be transparently wrapped in partial
* representations by this service, allowing the client to benefit from partial
* downloads.
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/service/StatusService.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/service/StatusService.java
index a3e2a95679..0d94b40066 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/service/StatusService.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/service/StatusService.java
@@ -9,10 +9,6 @@
package org.restlet.service;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.logging.Level;
-
import org.restlet.Application;
import org.restlet.Context;
import org.restlet.Request;
@@ -25,6 +21,10 @@
import org.restlet.resource.Resource;
import org.restlet.resource.ResourceException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.logging.Level;
+
/**
* Service to handle error statuses. If an exception is thrown within your
* application or Restlet code, it will be intercepted by this service if it is
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/service/TaskService.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/service/TaskService.java
index 14907cc711..af4ec48a94 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/service/TaskService.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/service/TaskService.java
@@ -9,22 +9,6 @@
package org.restlet.service;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-import java.util.concurrent.RejectedExecutionException;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ScheduledFuture;
-import java.util.concurrent.ThreadFactory;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-import java.util.logging.Level;
-
import org.restlet.Application;
import org.restlet.Context;
import org.restlet.Response;
@@ -32,6 +16,12 @@
import org.restlet.engine.util.ContextualRunnable;
import org.restlet.routing.VirtualHost;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.*;
+import java.util.logging.Level;
+
/**
* Application service capable of running and scheduling tasks asynchronously.
* The service instance returned will not invoke the runnable task in the
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/service/TunnelService.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/service/TunnelService.java
index 6866bb0d07..38b38d40dc 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/service/TunnelService.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/service/TunnelService.java
@@ -18,7 +18,7 @@
/**
* Application service tunneling request method or client preferences. The
- * tunneling can use query parameters, file-like extensions and specific
+ * tunneling can use query parameters, file-like extensions, and specific
* headers. This is particularly useful for browser-based applications that
* can't fully control the HTTP requests sent.
*
@@ -85,11 +85,11 @@
* {@link #isUserAgentTunnel()} method.
*
* The list of new media type preferences is loaded from a property file called
- * "accept.properties" located in the classpath in the sub directory
+ * "accept.properties" located in the classpath in the subdirectory
* "org/restlet/service". This property file is composed of blocks of
* properties. One "block" of properties starts either with the beginning of the
* properties file or with the end of the previous block. One block ends with
- * the "acceptNew" property which contains the value of the new accept header.
+ * the "acceptNew" property which contains the value of the new Accept header.
* Here is a sample block.
*
*
@@ -98,14 +98,14 @@
* acceptNew: application/xhtml+xml,text/html,text/xml;q=0.9,application/xml;q=0.9,text/plain;q=0.8,image/png,\*\/\*;q=0.5
*
*
- * Each declared property is a condition that must be filled in order to update
- * the client preferences. For example "agentName: firefox" expresses the fact
+ * Each declared property is a condition that must be filled to update
+ * the client preferences. For example, "agentName: firefox" expresses the fact
* this block concerns only "firefox" clients.
*
- * The "acceptOld" property allows to check the value of the current "Accept"
+ * The "acceptOld" property allows checking the value of the current "Accept"
* header. If it equals to the value of the "acceptOld" property or if the
* "acceptOld" property is empty, then the preferences will be updated. This can
- * be useful for AJAX clients which looks like their browser (same agentName,
+ * be useful for AJAX clients that look like their browser (same agentName,
* agentVersion, etc.) but can provide their own "Accept" header.
*
* @author Jerome Louvel
@@ -254,7 +254,7 @@ public TunnelService(boolean enabled, boolean methodTunnel, boolean preferencesT
/**
* Indicates if the request from a given client can be tunneled. The default
- * implementation always return true. This could be customize to restrict the
+ * implementation always returns true. This could be customized to restrict the
* usage of the tunnel service.
*
* @param client The client to test.
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/util/ClientList.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/util/ClientList.java
index 5e35774131..7e88b4883d 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/util/ClientList.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/util/ClientList.java
@@ -9,12 +9,12 @@
package org.restlet.util;
-import java.util.concurrent.CopyOnWriteArrayList;
-
import org.restlet.Client;
import org.restlet.Context;
import org.restlet.data.Protocol;
+import java.util.concurrent.CopyOnWriteArrayList;
+
/**
* Modifiable list of client connectors.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/util/Resolver.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/util/Resolver.java
index 6a56c63348..48002b277e 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/util/Resolver.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/util/Resolver.java
@@ -9,13 +9,13 @@
package org.restlet.util;
-import java.util.Map;
-
import org.restlet.Request;
import org.restlet.Response;
import org.restlet.engine.util.CallResolver;
import org.restlet.engine.util.MapResolver;
+import java.util.Map;
+
/**
* Resolves a name into a value. By default, the {@link #createResolver(Map)}
* static method can adapt a Java map into a resolver. Another useful method is
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 0955fc7bdc..d46f478162 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
@@ -9,16 +9,16 @@
package org.restlet.util;
-import java.util.Collections;
-import java.util.List;
-import java.util.Random;
-import java.util.concurrent.CopyOnWriteArrayList;
-
import org.restlet.Request;
import org.restlet.Response;
import org.restlet.Restlet;
import org.restlet.routing.Route;
+import java.util.Collections;
+import java.util.List;
+import java.util.Random;
+import java.util.concurrent.CopyOnWriteArrayList;
+
/**
* Modifiable list of routes with some helper methods. Note that this class
* implements the {@link List} interface using the Route class as the generic
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/util/Series.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/util/Series.java
index daf712f727..3f337826b5 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/util/Series.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/util/Series.java
@@ -9,17 +9,11 @@
package org.restlet.util;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.logging.Level;
-
import org.restlet.Context;
+import java.util.*;
+import java.util.logging.Level;
+
/**
* Modifiable list of entries with many helper methods. Note that this class
* uses the Parameter class as the template type. This allows you to use an
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/util/ServerList.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/util/ServerList.java
index 352d8c5215..1b6edad7df 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/util/ServerList.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/util/ServerList.java
@@ -9,13 +9,13 @@
package org.restlet.util;
-import java.util.concurrent.CopyOnWriteArrayList;
-
import org.restlet.Context;
import org.restlet.Restlet;
import org.restlet.Server;
import org.restlet.data.Protocol;
+import java.util.concurrent.CopyOnWriteArrayList;
+
/**
* Modifiable list of server connectors.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/util/ServiceList.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/util/ServiceList.java
index 243c9a0b57..eb6b0d2104 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/util/ServiceList.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/util/ServiceList.java
@@ -9,14 +9,14 @@
package org.restlet.util;
+import org.restlet.Context;
+import org.restlet.service.Service;
+
import java.util.Collection;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.logging.Level;
-import org.restlet.Context;
-import org.restlet.service.Service;
-
/**
* Modifiable list of services.
*
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/util/WrapperList.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/util/WrapperList.java
index ea215fbea8..6a6e86558d 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/util/WrapperList.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/util/WrapperList.java
@@ -9,12 +9,7 @@
package org.restlet.util;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.Vector;
+import java.util.*;
/**
* List wrapper. Modifiable list that delegates all methods to a wrapped list.
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/util/WrapperRepresentation.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/util/WrapperRepresentation.java
index 30ea98e923..ba704f6be8 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/util/WrapperRepresentation.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/util/WrapperRepresentation.java
@@ -9,21 +9,15 @@
package org.restlet.util;
+import org.restlet.data.*;
+import org.restlet.representation.Representation;
+
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import java.util.Date;
import java.util.List;
-import org.restlet.data.CharacterSet;
-import org.restlet.data.Disposition;
-import org.restlet.data.Encoding;
-import org.restlet.data.Language;
-import org.restlet.data.MediaType;
-import org.restlet.data.Reference;
-import org.restlet.data.Tag;
-import org.restlet.representation.Representation;
-
/**
* Representation wrapper. Useful for application developer who need to enrich
* the representation with application related properties and behavior.
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/util/WrapperRequest.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/util/WrapperRequest.java
index 6bcd10cc44..7a6b49a640 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/util/WrapperRequest.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/util/WrapperRequest.java
@@ -9,24 +9,16 @@
package org.restlet.util;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.ConcurrentMap;
-
import org.restlet.Request;
import org.restlet.Response;
import org.restlet.Uniform;
-import org.restlet.data.ChallengeResponse;
-import org.restlet.data.ClientInfo;
-import org.restlet.data.Conditions;
-import org.restlet.data.Cookie;
-import org.restlet.data.MediaType;
-import org.restlet.data.Method;
-import org.restlet.data.Protocol;
-import org.restlet.data.Range;
-import org.restlet.data.Reference;
+import org.restlet.data.*;
import org.restlet.representation.Representation;
+import java.util.List;
+import java.util.Set;
+import java.util.concurrent.ConcurrentMap;
+
/**
* Request wrapper. Useful for application developer who need to enrich the
* request with application related properties and behavior.
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/util/WrapperResponse.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/util/WrapperResponse.java
index 1c0545e38a..4fa5ad5a5a 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/util/WrapperResponse.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/util/WrapperResponse.java
@@ -9,24 +9,16 @@
package org.restlet.util;
+import org.restlet.Request;
+import org.restlet.Response;
+import org.restlet.data.*;
+import org.restlet.representation.Representation;
+
import java.util.Date;
import java.util.List;
import java.util.Set;
import java.util.concurrent.ConcurrentMap;
-import org.restlet.Request;
-import org.restlet.Response;
-import org.restlet.data.AuthenticationInfo;
-import org.restlet.data.ChallengeRequest;
-import org.restlet.data.CookieSetting;
-import org.restlet.data.Dimension;
-import org.restlet.data.MediaType;
-import org.restlet.data.Method;
-import org.restlet.data.Reference;
-import org.restlet.data.ServerInfo;
-import org.restlet.data.Status;
-import org.restlet.representation.Representation;
-
/**
* Request wrapper. Useful for application developer who need to enrich the
* request with application related properties and behavior.
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/util/WrapperRestlet.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/util/WrapperRestlet.java
index e54784246d..bf977c9541 100644
--- a/org.restlet.java/org.restlet/src/main/java/org/restlet/util/WrapperRestlet.java
+++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/util/WrapperRestlet.java
@@ -9,13 +9,13 @@
package org.restlet.util;
-import java.util.logging.Logger;
-
import org.restlet.Context;
import org.restlet.Request;
import org.restlet.Response;
import org.restlet.Restlet;
+import java.util.logging.Logger;
+
/**
* Restlet wrapper. Useful for application developer who need to wrap a Restlet
* instance.
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/ApplicationContextTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/ApplicationContextTestCase.java
similarity index 87%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/ApplicationContextTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/ApplicationContextTestCase.java
index afec92d93a..225edaea82 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/ApplicationContextTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/ApplicationContextTestCase.java
@@ -7,29 +7,26 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.engine;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
+package org.restlet;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import org.restlet.Application;
-import org.restlet.Component;
-import org.restlet.Restlet;
import org.restlet.data.MediaType;
import org.restlet.data.Protocol;
+import org.restlet.engine.Engine;
import org.restlet.representation.Representation;
import org.restlet.resource.ClientResource;
import org.restlet.resource.Get;
import org.restlet.resource.ServerResource;
import org.restlet.routing.Router;
-import org.restlet.test.RestletTestCase;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
/**
* Tests that when issuing internal calls, the application context is kept intact in the caller server resource.
*/
-public class ApplicationContextTestCase extends RestletTestCase {
+public class ApplicationContextTestCase {
public static class InternalApplication extends Application {
@@ -67,25 +64,30 @@ public String hello() {
}
}
+ private int testPort;
private Component component;
@BeforeEach
protected void setUpEach() throws Exception {
+ Engine.register();
+ Engine.clearThreadLocalVariables();
this.component = new Component();
- this.component.getServers().add(Protocol.HTTP, TEST_PORT);
+ Server server = this.component.getServers().add(Protocol.HTTP, 0);
this.component.getDefaultHost().attach("/api", new WebApiApplication());
this.component.getInternalRouter().attach("/internal", new InternalApplication());
this.component.start();
+ testPort = server.getActualPort();
}
@AfterEach
protected void tearDownEach() throws Exception {
+ Engine.clearThreadLocalVariables();
this.component.stop();
}
@Test
public void testApplicationContext() throws Exception {
- ClientResource res = new ClientResource("http://localhost:" + TEST_PORT + "/api/test");
+ ClientResource res = new ClientResource("http://localhost:" + testPort + "/api/test");
Representation rep = res.get(MediaType.TEXT_PLAIN);
// following https://github.com/restlet/restlet-framework-java/issues/1317 fix,
// should return "InternalApplication" since the current Application thread variable has not been cleared
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/regression/Bug1145TestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/Bug1145TestCase.java
similarity index 70%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/regression/Bug1145TestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/Bug1145TestCase.java
index dad16eaa5e..15fb837faf 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/regression/Bug1145TestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/Bug1145TestCase.java
@@ -7,34 +7,31 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.regression;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-import java.util.Arrays;
-import java.util.HashSet;
+package org.restlet;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import org.restlet.Client;
-import org.restlet.Component;
-import org.restlet.Request;
-import org.restlet.Response;
-import org.restlet.Restlet;
import org.restlet.data.MediaType;
import org.restlet.data.Method;
import org.restlet.data.Protocol;
import org.restlet.data.Status;
+import org.restlet.engine.Engine;
+import org.restlet.engine.connector.HttpClientHelper;
+import org.restlet.engine.connector.HttpServerHelper;
import org.restlet.representation.StringRepresentation;
-import org.restlet.test.RestletTestCase;
-public class Bug1145TestCase extends RestletTestCase {
+import java.util.HashSet;
+import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+public class Bug1145TestCase {
public static class Bug1145TestCaseRestlet extends Restlet {
@Override
public void handle(Request request, Response response) {
try {
- response.setAccessControlExposeHeaders(new HashSet<>(Arrays.asList("Modified")));
+ response.setAccessControlExposeHeaders(new HashSet<>(List.of("Modified")));
response.setEntity(new StringRepresentation("NO-NPE", MediaType.TEXT_PLAIN));
} catch (NullPointerException e) {
response.setEntity(new StringRepresentation("NPE", MediaType.TEXT_PLAIN));
@@ -42,23 +39,23 @@ public void handle(Request request, Response response) {
}
}
- private Client client;
+ private int testPort;
+ private Client client;
private Component component;
@BeforeEach
public void setUpEach() throws Exception {
+ Engine.getInstance().getRegisteredClients().add(new HttpClientHelper(null));
+ Engine.getInstance().getRegisteredServers().add(new HttpServerHelper(null));
this.client = new Client(Protocol.HTTP);
- if (this.component == null) {
- this.component = new Component();
- this.component.getServers().add(Protocol.HTTP, TEST_PORT);
- this.component.getDefaultHost().attachDefault(new Bug1145TestCaseRestlet());
- }
+ this.component = new Component();
+ Server server = this.component.getServers().add(Protocol.HTTP, 0);
+ this.component.getDefaultHost().attachDefault(new Bug1145TestCaseRestlet());
- if (!this.component.isStarted()) {
- this.component.start();
- }
+ this.component.start();
+ testPort = server.getActualPort();
}
@AfterEach
@@ -70,7 +67,7 @@ public void tearDownEach() throws Exception {
@Test
public void test0() throws Exception {
- Request request = new Request(Method.GET, "http://localhost:" + TEST_PORT);
+ Request request = new Request(Method.GET, "http://localhost:" + testPort);
Response result = client.handle(request);
assertEquals(Status.SUCCESS_OK, result.getStatus());
assertEquals("NO-NPE", result.getEntity().getText());
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/CallTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/CallTestCase.java
similarity index 98%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/CallTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/CallTestCase.java
index ab3f842262..f9426f0662 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/CallTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/CallTestCase.java
@@ -7,28 +7,26 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-import java.util.Arrays;
-import java.util.List;
+package org.restlet;
import org.junit.jupiter.api.Test;
-import org.restlet.Request;
-import org.restlet.Response;
import org.restlet.data.ClientInfo;
import org.restlet.data.Method;
import org.restlet.data.Reference;
import org.restlet.data.Status;
import org.restlet.engine.adapter.Call;
+import java.util.Arrays;
+import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
/**
* Test {@link org.restlet.engine.adapter.Call}.
*
* @author Lars Heuer (heuer[at]semagia.com)
*/
-public class CallTestCase extends RestletTestCase {
+public class CallTestCase {
/**
* Returns a connector call.
*
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/connector/RestartTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/RestartTestCase.java
similarity index 77%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/connector/RestartTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/RestartTestCase.java
index caf5a5fd83..ff601b1dd2 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/connector/RestartTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/RestartTestCase.java
@@ -7,27 +7,23 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.connector;
+package org.restlet;
import org.junit.jupiter.api.Test;
-import org.restlet.Restlet;
-import org.restlet.Server;
import org.restlet.data.Protocol;
-import org.restlet.test.RestletTestCase;
/**
* Test the ability of a connector to be restarted.
*
* @author Jerome Louvel
*/
-public class RestartTestCase extends RestletTestCase {
+public class RestartTestCase {
@Test
public void testRestart() throws Exception {
final int waitTime = 100;
- final Server connector = new Server(Protocol.HTTP, TEST_PORT,
- (Restlet) null);
+ final Server connector = new Server(Protocol.HTTP, 0, (Restlet) null);
System.out.print("Starting connector... ");
connector.start();
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/data/AuthenticationInfoTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/data/AuthenticationInfoTestCase.java
similarity index 93%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/data/AuthenticationInfoTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/data/AuthenticationInfoTestCase.java
index bc8465293a..1a2350716a 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/data/AuthenticationInfoTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/data/AuthenticationInfoTestCase.java
@@ -7,22 +7,20 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.data;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotEquals;
+package org.restlet.data;
import org.junit.jupiter.api.Test;
-import org.restlet.data.AuthenticationInfo;
import org.restlet.engine.security.AuthenticatorUtils;
-import org.restlet.test.RestletTestCase;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
/**
* Test {@link org.restlet.data.Reference}.
*
* @author Kelly McLaughlin (mclaughlin77[at]gmail.com)
*/
-public class AuthenticationInfoTestCase extends RestletTestCase {
+public class AuthenticationInfoTestCase {
/**
* Test parsing an Authorization-Info header string.
*/
@@ -31,8 +29,8 @@ public void testAuthenticationInfoHeaderParse() {
AuthenticationInfo authInfo = new AuthenticationInfo("00000002", 1,
"MDAzMTAw1", "auth", null);
String authInfoHeader = "nc=00000001, qop=auth, cnonce=\"MDAzMTAw1\", nextnonce=00000002";
- AuthenticationInfo parsedAuthInfo = AuthenticatorUtils
- .parseAuthenticationInfo(authInfoHeader);
+ AuthenticationInfo parsedAuthInfo = AuthenticatorUtils.parseAuthenticationInfo(authInfoHeader);
+
assertEquals(authInfo, parsedAuthInfo);
assertEquals(parsedAuthInfo, authInfo);
}
@@ -45,6 +43,7 @@ public void testCnonce() {
AuthenticationInfo authInfo = new AuthenticationInfo("testnonce",
1111111, "testcnonce", "auth", "FFFFFF");
assertEquals(authInfo.getClientNonce(), "testcnonce");
+
String newCnonce = "newcnonce";
authInfo.setClientNonce(newCnonce);
assertEquals(authInfo.getClientNonce(), "newcnonce");
@@ -59,6 +58,7 @@ public void testEquals() {
"testnonce", 1111111, "testcnonce", "auth", "FFFFFF");
final AuthenticationInfo authInfo2 = new AuthenticationInfo(
"testnonce", 1111111, "testcnonce", "auth", "FFFFFF");
+
assertEquals(authInfo1, authInfo2);
assertEquals(authInfo1, authInfo2);
}
@@ -71,6 +71,7 @@ public void testNextNonce() {
AuthenticationInfo authInfo = new AuthenticationInfo("testnonce",
1111111, "testcnonce", "auth", "FFFFFF");
assertEquals(authInfo.getNextServerNonce(), "testnonce");
+
String newNonce = "newnonce";
authInfo.setNextServerNonce(newNonce);
assertEquals(authInfo.getNextServerNonce(), "newnonce");
@@ -84,6 +85,7 @@ public void testNonceCount() {
AuthenticationInfo authInfo = new AuthenticationInfo("testnonce",
1111111, "testcnonce", "auth", "FFFFFF");
assertEquals(authInfo.getNonceCount(), 1111111);
+
int newNonceCount = 2222222;
authInfo.setNonceCount(newNonceCount);
assertEquals(authInfo.getNonceCount(), 2222222);
@@ -97,6 +99,7 @@ public void testQop() {
AuthenticationInfo authInfo = new AuthenticationInfo("testnonce",
1111111, "testcnonce", "auth", "FFFFFF");
assertEquals(authInfo.getQuality(), "auth");
+
String newQop = "auth-int";
authInfo.setQuality(newQop);
assertEquals(authInfo.getQuality(), "auth-int");
@@ -110,6 +113,7 @@ public void testResponseAuth() {
AuthenticationInfo authInfo = new AuthenticationInfo("testnonce",
1111111, "testcnonce", "auth", "FFFFFF");
assertEquals(authInfo.getResponseDigest(), "FFFFFF");
+
String newResponseAuth = "000000";
authInfo.setResponseDigest(newResponseAuth);
assertEquals(authInfo.getResponseDigest(), "000000");
@@ -121,6 +125,7 @@ public void testUnEquals() {
"testnonce1", 1111111, "testcnonce1", "auth", "FFFFFF");
final AuthenticationInfo authInfo2 = new AuthenticationInfo(
"testnonce2", 1111111, "testcnonce2", "auth", "FFFFFF");
+
assertNotEquals(authInfo1, authInfo2);
assertNotEquals(null, authInfo1);
assertNotEquals(null, authInfo2);
diff --git a/org.restlet.java/org.restlet/src/test/java/org/restlet/data/ClientInfoTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/data/ClientInfoTestCase.java
new file mode 100644
index 0000000000..8f81d3914f
--- /dev/null
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/data/ClientInfoTestCase.java
@@ -0,0 +1,122 @@
+/**
+ * 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.data;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+import org.restlet.Request;
+import org.restlet.representation.Variant;
+import org.restlet.service.ConnegService;
+import org.restlet.service.MetadataService;
+
+import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.restlet.data.Language.*;
+import static org.restlet.data.MediaType.*;
+
+/**
+ * Test {@link org.restlet.data.ClientInfo} for content negotiation.
+ *
+ * @author Jerome Louvel
+ */
+public class ClientInfoTestCase {
+
+ @Nested
+ class MixLanguageMediaTypeContentNegotiationTextCase {
+ private final MetadataService ms = new MetadataService();
+ private final ConnegService connegService = new ConnegService();
+ private Request request;
+
+ @BeforeEach
+ void setup() {
+ request = new Request();
+ ClientInfo ci = request.getClientInfo();
+ ci.getAcceptedLanguages().add(new Preference<>(ENGLISH_US, 1.0F));
+ ci.getAcceptedLanguages().add(new Preference<>(FRENCH_FRANCE, 0.9F));
+ ci.getAcceptedMediaTypes().add(new Preference<>(TEXT_XML, 1.0F));
+ }
+
+ @Test
+ public void shouldReturnEnUsAndTextXml() {
+ List variants = List.of(
+ new Variant(TEXT_XML, ENGLISH_US),
+ new Variant(TEXT_XML, FRENCH_FRANCE));
+ Variant pv = connegService.getPreferredVariant(variants, request, ms);
+
+ assertEquals(TEXT_XML, pv.getMediaType());
+ assertEquals(ENGLISH_US, pv.getLanguages().get(0));
+ }
+
+ @Test
+ public void shouldReturnEnAndTextXml() {
+ List variants = List.of(
+ new Variant(TEXT_XML, ENGLISH),
+ new Variant(TEXT_XML, FRENCH));
+ Variant pv = connegService.getPreferredVariant(variants, request, ms);
+
+ assertEquals(TEXT_XML, pv.getMediaType());
+ assertEquals(ENGLISH, pv.getLanguages().get(0));
+ }
+
+ // Testing quality priority over parent metadata
+ @Test
+ public void shouldReturnFrFrAndText() {
+ List variants = List.of(
+ new Variant(TEXT_PLAIN, ENGLISH),
+ new Variant(TEXT_XML, FRENCH_FRANCE));
+ Variant pv = connegService.getPreferredVariant(variants, request, ms);
+
+ assertEquals(TEXT_XML, pv.getMediaType());
+ assertEquals(FRENCH_FRANCE, pv.getLanguages().get(0));
+ }
+
+ // Testing quality priority over parent metadata
+ @Test
+ public void shouldReturnFrFrAndXml() {
+ List variants = List.of(
+ new Variant(APPLICATION_XML, ENGLISH_US),
+ new Variant(TEXT_XML, FRENCH_FRANCE));
+ Variant pv = connegService.getPreferredVariant(variants, request, ms);
+
+ assertEquals(TEXT_XML, pv.getMediaType());
+ assertEquals(FRENCH_FRANCE, pv.getLanguages().get(0));
+ }
+
+ // Leveraging parent media types
+ @Test
+ public void shouldPreferEnUsAndApplicationXml() {
+ List variants = List.of(
+ new Variant(APPLICATION_XML, ENGLISH_US),
+ new Variant(APPLICATION_XML, FRENCH_FRANCE));
+ Variant pv = connegService.getPreferredVariant(variants, request, ms);
+
+ assertEquals(APPLICATION_XML, pv.getMediaType());
+ assertEquals(ENGLISH_US, pv.getLanguages().get(0));
+ }
+ }
+
+ /**
+ * Conneg tests for IE which accepts all media types.
+ */
+ @Test
+ public void testConnegIe() {
+ ClientInfo ci = new ClientInfo();
+ Preference allMediaTypesPreference = new Preference<>(MediaType.ALL, 1.0F);
+ ci.getAcceptedMediaTypes().add(allMediaTypesPreference);
+
+ List types = List.of(TEXT_XML, MediaType.APPLICATION_JSON);
+ MediaType pmt = ci.getPreferredMediaType(types);
+
+ assertEquals(TEXT_XML, pmt);
+ }
+
+}
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/data/CookieTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/data/CookieTestCase.java
similarity index 90%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/data/CookieTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/data/CookieTestCase.java
index ee6f3d9e5b..27eeb8ed3e 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/data/CookieTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/data/CookieTestCase.java
@@ -7,21 +7,19 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.data;
+package org.restlet.data;
+
+import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
-import org.junit.jupiter.api.Test;
-import org.restlet.data.Cookie;
-import org.restlet.test.RestletTestCase;
-
/**
* Test {@link org.restlet.data.Cookie}.
*
* @author Jerome Louvel
*/
-public class CookieTestCase extends RestletTestCase {
+public class CookieTestCase {
/**
* Equality tests.
diff --git a/org.restlet.java/org.restlet/src/test/java/org/restlet/data/FileClientTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/data/FileClientTestCase.java
new file mode 100644
index 0000000000..275d81a463
--- /dev/null
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/data/FileClientTestCase.java
@@ -0,0 +1,57 @@
+/**
+ * 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.data;
+
+import org.junit.jupiter.api.Test;
+import org.restlet.engine.Engine;
+import org.restlet.representation.Representation;
+import org.restlet.representation.StringRepresentation;
+import org.restlet.resource.ClientResource;
+import org.restlet.resource.ResourceException;
+
+import java.io.File;
+import java.io.IOException;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+/**
+ * Unit test case for the File client connector.
+ *
+ * @author Jerome Louvel
+ */
+public class FileClientTestCase {
+
+ @Test
+ public void testFileClient() throws IOException {
+ Engine.register();
+ Engine.clearThreadLocalVariables();
+
+ String fileContent = "Test content\r\nLine 2\r\nLine2";
+ File temporaryfile = File.createTempFile("Restlet", ".txt." + Language.DEFAULT.getName());
+ LocalReference fileReference = LocalReference.createFileReference(temporaryfile);
+
+ ClientResource resource = new ClientResource(fileReference);
+
+ // Update the text of the temporary file
+ resource.put(new StringRepresentation(fileContent));
+ assertTrue(resource.getStatus().isSuccess());
+
+ // Get the text and compare to the original
+ resource.get();
+ assertEquals(Status.SUCCESS_OK, resource.getStatus());
+ assertEquals(fileContent, resource.getResponse().getEntityAsText());
+
+ // Delete the file
+ resource.delete();
+ assertEquals(Status.SUCCESS_NO_CONTENT, resource.getStatus());
+ Engine.clearThreadLocalVariables();
+ }
+}
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/data/FileReferenceTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/data/FileReferenceTestCase.java
similarity index 84%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/data/FileReferenceTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/data/FileReferenceTestCase.java
index 6e01b404f6..4cf3e9348f 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/data/FileReferenceTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/data/FileReferenceTestCase.java
@@ -7,22 +7,20 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.data;
+package org.restlet.data;
-import static org.junit.jupiter.api.Assertions.assertEquals;
+import org.junit.jupiter.api.Test;
import java.io.File;
-import org.junit.jupiter.api.Test;
-import org.restlet.data.LocalReference;
-import org.restlet.test.RestletTestCase;
+import static org.junit.jupiter.api.Assertions.assertEquals;
/**
* Unit test case for the File Reference parsing.
*
* @author Jerome Louvel
*/
-public class FileReferenceTestCase extends RestletTestCase {
+public class FileReferenceTestCase {
@Test
public void testCreation() {
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/data/FormTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/data/FormTestCase.java
similarity index 91%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/data/FormTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/data/FormTestCase.java
index e5d0a3fc55..24dc0a88d0 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/data/FormTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/data/FormTestCase.java
@@ -7,25 +7,22 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.data;
+package org.restlet.data;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNull;
+import org.junit.jupiter.api.Test;
+import org.restlet.engine.util.FormReader;
import java.io.IOException;
-import org.junit.jupiter.api.Test;
-import org.restlet.data.CharacterSet;
-import org.restlet.data.Form;
-import org.restlet.engine.util.FormReader;
-import org.restlet.test.RestletTestCase;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
/**
* Unit tests for the {@link Form} class.
*
* @author Jerome Louvel
*/
-public class FormTestCase extends RestletTestCase {
+public class FormTestCase {
@Test
public void testParsing() throws IOException {
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/data/LanguageTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/data/LanguageTestCase.java
similarity index 86%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/data/LanguageTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/data/LanguageTestCase.java
index e9b5cd5358..950b3cbd0e 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/data/LanguageTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/data/LanguageTestCase.java
@@ -7,21 +7,19 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.data;
+package org.restlet.data;
+
+import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertSame;
import static org.junit.jupiter.api.Assertions.fail;
-import org.junit.jupiter.api.Test;
-import org.restlet.data.Language;
-import org.restlet.test.RestletTestCase;
-
/**
* Test {@link org.restlet.data.Language}.
*
* @author Jerome Louvel
*/
-public class LanguageTestCase extends RestletTestCase {
+public class LanguageTestCase {
/**
* Testing {@link Language#valueOf(String)}
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/data/MediaTypeTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/data/MediaTypeTestCase.java
similarity index 95%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/data/MediaTypeTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/data/MediaTypeTestCase.java
index 3019e9210e..594a02b5a3 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/data/MediaTypeTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/data/MediaTypeTestCase.java
@@ -7,32 +7,19 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.data;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertNotEquals;
-import static org.junit.jupiter.api.Assertions.assertNotSame;
-import static org.junit.jupiter.api.Assertions.assertSame;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.fail;
+package org.restlet.data;
import org.junit.jupiter.api.Test;
-import org.restlet.data.Form;
-import org.restlet.data.MediaType;
-import org.restlet.data.Parameter;
-import org.restlet.test.RestletTestCase;
import org.restlet.util.Series;
+import static org.junit.jupiter.api.Assertions.*;
+
/**
* Test {@link org.restlet.data.MediaType}.
*
* @author Jerome Louvel
*/
-public class MediaTypeTestCase extends RestletTestCase {
- protected final static String DEFAULT_SCHEME = "http";
-
- protected final static String DEFAULT_SCHEMEPART = "//";
+public class MediaTypeTestCase {
/**
* Makes sure that a {@link MediaType} instance initialized on the specified
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/data/MethodTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/data/MethodTestCase.java
similarity index 54%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/data/MethodTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/data/MethodTestCase.java
index b5eb07ea27..913822cef0 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/data/MethodTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/data/MethodTestCase.java
@@ -7,18 +7,18 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.data;
-
-import static org.testng.AssertJUnit.assertSame;
+package org.restlet.data;
+import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
-import org.restlet.data.Method;
/**
* Test {@link org.restlet.data.Method}.
*
- * Note: this test purposefully does *not* extends RestletTestCase. The regression previously present in Restlet
- * (desribed in https://github.com/restlet/restlet-framework-java/issues/1130) depends on class initialization order and
+ * Note: this test purposefully does *not* extend RestletTestCase.
+ * The regression previously present in Restlet
+ * (described in https://github.com/restlet/restlet-framework-java/issues/1130)
+ * depends on class initialization order and
* vanishes when the Restlet/Engine class is initialized before the class Method.
*
* @author Andreas Wundsam
@@ -27,11 +27,11 @@ public class MethodTestCase {
/**
* validate that Method caching works, i.e., the value returned by
- * Method.valueOf("GET") is the cached constant Method.GET
+ * Method.valueOf("GET") is the cached constant Method.GET.
*/
@Test
public void testCaching() {
- assertSame("Method.valueOf('GET') should return cached constant Method.GET ", Method.GET, Method.valueOf("GET"));
+ Assertions.assertEquals(Method.GET, Method.valueOf("GET"), "Method.valueOf('GET') should return cached constant Method.GET ");
}
}
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/data/ProductTokenTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/data/ProductTokenTestCase.java
similarity index 51%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/data/ProductTokenTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/data/ProductTokenTestCase.java
index eb6ff4fe72..f452f89908 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/data/ProductTokenTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/data/ProductTokenTestCase.java
@@ -1,123 +1,72 @@
/**
* 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.test.data;
+package org.restlet.data;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNull;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+import org.restlet.engine.header.ProductReader;
+import org.restlet.engine.header.ProductWriter;
import java.util.ArrayList;
import java.util.List;
-import java.util.Map;
+import java.util.stream.Stream;
-import org.junit.jupiter.api.Test;
-import org.restlet.data.ClientInfo;
-import org.restlet.data.Product;
-import org.restlet.engine.header.ProductReader;
-import org.restlet.engine.header.ProductWriter;
-import org.restlet.test.RestletTestCase;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
/**
* Test {@link org.restlet.data.Product}.
- *
+ *
* @author Thierry Boileau
*/
-public class ProductTokenTestCase extends RestletTestCase {
-
- @Test
- public void testMainProduct() {
-
- final String userAgent1 = "Mozilla/4.0 (compatible; MSIE 6.0; America Online Browser 1.1; rev1.1; Windows NT 5.1;)";
- final String userAgent2 = "Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US; rv:1.8) Gecko/20051107 Camino/1.0b1";
- final String userAgent3 = "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:0.9.2) Gecko/20020508 Netscape6/6.1";
- final String userAgent4 = "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1) Gecko/20061024 Iceweasel/2.0 (Debian-2.0+dfsg-1)";
- final String userAgent5 = "Mozilla/5.0 (compatible; Konqueror/3.5; Linux 2.6.15-1.2054_FC5; X11; i686; en_US) KHTML/3.5.4 (like Gecko)";
- final String userAgent6 = "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)";
- final String userAgent7 = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)";
- final String userAgent8 = "Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/521.25 (KHTML, like Gecko) Safari/521.24";
- final String userAgent9 = "Opera/9.00 (Macintosh; PPC Mac OS X; U; en)";
- final String userAgent10 = "Wget/1.9";
- final String userAgent11 = "Restlet-Framework/2.2-SNAPSHOT";
+public class ProductTokenTestCase {
+ @ParameterizedTest(name = "{1} {2}")
+ @MethodSource("mainProductTestCases")
+ public void testMainProduct(final String userAgent, final String productName, final String productVersion, final String productComment) {
ClientInfo clientInfo = new ClientInfo();
- clientInfo.setAgent(userAgent1);
+ clientInfo.setAgent(userAgent);
Product product = clientInfo.getMainAgentProduct();
- assertEquals("MSIE", product.getName());
- assertEquals("6.0", product.getVersion());
-
- clientInfo = new ClientInfo();
- clientInfo.setAgent(userAgent2);
- product = clientInfo.getMainAgentProduct();
- assertEquals("Camino", product.getName());
- assertEquals("1.0b1", product.getVersion());
-
- clientInfo = new ClientInfo();
- clientInfo.setAgent(userAgent3);
- product = clientInfo.getMainAgentProduct();
- assertEquals("Netscape6", product.getName());
- assertEquals("6.1", product.getVersion());
-
- clientInfo = new ClientInfo();
- clientInfo.setAgent(userAgent4);
- product = clientInfo.getMainAgentProduct();
- assertEquals("Iceweasel", product.getName());
- assertEquals("2.0", product.getVersion());
- assertEquals("Debian-2.0+dfsg-1", product.getComment());
-
- clientInfo = new ClientInfo();
- clientInfo.setAgent(userAgent5);
- product = clientInfo.getMainAgentProduct();
- assertEquals("Konqueror", product.getName());
- assertEquals("3.5.4", product.getVersion());
-
- clientInfo = new ClientInfo();
- clientInfo.setAgent(userAgent6);
- product = clientInfo.getMainAgentProduct();
- assertEquals("MSIE", product.getName());
- assertEquals("5.5", product.getVersion());
-
- clientInfo = new ClientInfo();
- clientInfo.setAgent(userAgent7);
- product = clientInfo.getMainAgentProduct();
- assertEquals("MSIE", product.getName());
- assertEquals("6.0", product.getVersion());
-
- clientInfo = new ClientInfo();
- clientInfo.setAgent(userAgent8);
- product = clientInfo.getMainAgentProduct();
- assertEquals("Safari", product.getName());
- assertEquals("521.24", product.getVersion());
-
- clientInfo = new ClientInfo();
- clientInfo.setAgent(userAgent9);
- product = clientInfo.getMainAgentProduct();
- assertEquals("Opera", product.getName());
- assertEquals("9.00", product.getVersion());
-
- clientInfo = new ClientInfo();
- clientInfo.setAgent(userAgent10);
- product = clientInfo.getMainAgentProduct();
- assertEquals("Wget", product.getName());
- assertEquals("1.9", product.getVersion());
-
- clientInfo = new ClientInfo();
- clientInfo.setAgent(userAgent11);
- product = clientInfo.getMainAgentProduct();
- assertEquals("Restlet-Framework", product.getName());
- assertEquals("2.2-SNAPSHOT", product.getVersion());
-
- clientInfo = new ClientInfo();
- clientInfo.setAgent(userAgent7);
- final Map map = clientInfo.getAgentAttributes();
- for (String key : map.keySet()) {
- System.out.println("[" + key + "," + map.get(key) + "]");
- }
+
+ assertEquals(productName, product.getName());
+ assertEquals(productVersion, product.getVersion());
+ assertEquals(productComment, product.getComment());
+ }
+
+ private static Stream mainProductTestCases() {
+ return Stream.of(
+ Arguments.of("Mozilla/4.0 (compatible; MSIE 6.0; America Online Browser 1.1; rev1.1; Windows NT 5.1;)",
+ "MSIE", "6.0", null),
+ Arguments.of("Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US; rv:1.8) Gecko/20051107 Camino/1.0b1",
+ "Camino", "1.0b1", null),
+ Arguments.of("Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:0.9.2) Gecko/20020508 Netscape6/6.1",
+ "Netscape6", "6.1", null),
+ Arguments.of("Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1) Gecko/20061024 Iceweasel/2.0 (Debian-2.0+dfsg-1)",
+ "Iceweasel", "2.0", "Debian-2.0+dfsg-1"),
+ Arguments.of("Mozilla/5.0 (compatible; Konqueror/3.5; Linux 2.6.15-1.2054_FC5; X11; i686; en_US) KHTML/3.5.4 (like Gecko)",
+ "Konqueror", "3.5.4", "like Gecko"),
+ Arguments.of("Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)",
+ "MSIE", "5.5", null),
+ Arguments.of("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)",
+ "MSIE", "6.0", null),
+ Arguments.of("Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/521.25 (KHTML, like Gecko) Safari/521.24",
+ "Safari", "521.24", null),
+ Arguments.of("Opera/9.00 (Macintosh; PPC Mac OS X; U; en)",
+ "Opera", "9.00", null),
+ Arguments.of("Wget/1.9",
+ "Wget", "1.9", null),
+ Arguments.of("Restlet-Framework/2.2-SNAPSHOT",
+ "Restlet-Framework", "2.2-SNAPSHOT", null)
+ );
}
@Test
@@ -187,12 +136,15 @@ public void testProductTokens() {
assertEquals("Restlet-Framework", list.get(0).getName());
assertEquals("2.2-SNAPSHOT", list.get(0).getVersion());
assertNull(list.get(0).getComment());
+ }
+ @Test
+ public void testWriteThenRead() {
final List products = new ArrayList<>();
products.add(new Product("Product", "1.2", null));
products.add(new Product("Nre", "1.1m4", "This is a comment"));
- list = ProductReader.read(ProductWriter.write(products));
+ List list = ProductReader.read(ProductWriter.write(products));
assertEquals(2, list.size());
assertEquals("Product", list.get(0).getName());
assertEquals("1.2", list.get(0).getVersion());
@@ -200,7 +152,6 @@ public void testProductTokens() {
assertEquals("Nre", list.get(1).getName());
assertEquals("1.1m4", list.get(1).getVersion());
assertEquals("This is a comment", list.get(1).getComment());
-
}
}
diff --git a/org.restlet.java/org.restlet/src/test/java/org/restlet/data/RangeTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/data/RangeTestCase.java
new file mode 100644
index 0000000000..5f1b8c39d3
--- /dev/null
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/data/RangeTestCase.java
@@ -0,0 +1,334 @@
+/**
+ * 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.data;
+
+import org.junit.jupiter.api.*;
+import org.restlet.*;
+import org.restlet.engine.Engine;
+import org.restlet.engine.io.IoUtils;
+import org.restlet.engine.local.FileClientHelper;
+import org.restlet.representation.StringRepresentation;
+import org.restlet.resource.Directory;
+import org.restlet.routing.Router;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.List;
+import java.util.UUID;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+/**
+ * Test {@link org.restlet.data.Range}.
+ *
+ * @author Jerome Louvel
+ */
+public class RangeTestCase {
+
+ private static final Tag ENTITY_TAG = new Tag("TestRangeGetRestlet");
+
+ /**
+ * Internal class used for test purpose.
+ *
+ */
+ private static class TestRangeApplication extends Application {
+
+ public TestRangeApplication() {
+ super();
+ getRangeService().setEnabled(true);
+ setContext(new Context());
+ getContext().setClientDispatcher(new Client(Protocol.FILE));
+ }
+
+ @Override
+ public Restlet createInboundRoot() {
+ Router router = new Router();
+ router.attach("/testGet", new TestRangeGetRestlet());
+
+ Directory directory = new Directory(getContext(), LocalReference.createFileReference(testDirPath.toFile()));
+ directory.setModifiable(true);
+ router.attach("/testPut/", directory);
+ return router;
+ }
+ }
+
+ /**
+ * Internal class used for test purpose. It simply returns a string 10
+ * characters long.
+ *
+ */
+ private static class TestRangeGetRestlet extends Restlet {
+ @Override
+ public void handle(Request request, Response response) {
+ response.setEntity(new StringRepresentation("1234567890"));
+ response.getEntity().setTag(ENTITY_TAG);
+ }
+ }
+
+ // Create a temporary directory for the tests
+ private static Path testDirPath;
+ private static TestRangeApplication testRangeApplication;
+
+ @BeforeAll
+ static void globalSetup() throws IOException {
+ Engine.getInstance().getRegisteredClients().add(new FileClientHelper(null));
+ testDirPath = Files.createTempDirectory("rangeTestCase");
+ testRangeApplication = new TestRangeApplication();
+ }
+
+ @AfterAll
+ static void globalCleanup() {
+ IoUtils.delete(testDirPath.toFile(), true);
+ }
+
+ @Nested
+ class TestPartialGet {
+ private Request request;
+
+ @BeforeEach
+ void setUp() {
+ request = new Request(Method.GET, "/testGet");
+ }
+
+ @Test
+ void noRange() throws IOException {
+ Response response = testRangeApplication.handle(request);
+ assertEquals(Status.SUCCESS_OK, response.getStatus());
+ assertEquals("1234567890", response.getEntity().getText());
+ assertEquals(10, response.getEntity().getSize());
+ assertEquals(10, response.getEntity().getAvailableSize());
+ assertNull(response.getEntity().getRange());
+ }
+ @Test
+ public void fullRange() throws IOException {
+ request.setRanges(List.of(new Range(0, 10)));
+ Response response = testRangeApplication.handle(request);
+ assertEquals(Status.SUCCESS_PARTIAL_CONTENT, response.getStatus());
+ assertEquals("1234567890", response.getEntity().getText());
+ assertEquals(10, response.getEntity().getSize());
+ assertEquals(10, response.getEntity().getAvailableSize());
+ assertEquals(0, response.getEntity().getRange().getIndex());
+ assertEquals(10, response.getEntity().getRange().getSize());
+ }
+ @Test
+ public void rangeFirst2Bytes() throws Exception {
+ request.setRanges(List.of(new Range(Range.INDEX_FIRST, 2)));
+ Response response = testRangeApplication.handle(request);
+ assertEquals(Status.SUCCESS_PARTIAL_CONTENT, response.getStatus());
+ assertEquals("12", response.getEntity().getText());
+ assertEquals(10, response.getEntity().getSize());
+ assertEquals(2, response.getEntity().getAvailableSize());
+ assertEquals(0, response.getEntity().getRange().getIndex());
+ assertEquals(2, response.getEntity().getRange().getSize());
+ }
+
+ @Test
+ public void range2To4Bytes() throws Exception {
+ request.setRanges(List.of(new Range(2, 2)));
+ Response response = testRangeApplication.handle(request);
+ assertEquals(Status.SUCCESS_PARTIAL_CONTENT, response.getStatus());
+ assertEquals("34", response.getEntity().getText());
+ assertEquals(10, response.getEntity().getSize());
+ assertEquals(2, response.getEntity().getAvailableSize());
+ assertEquals(2, response.getEntity().getRange().getIndex());
+ assertEquals(2, response.getEntity().getRange().getSize());
+ }
+
+ @Test
+ public void range2To9Bytes() throws Exception {
+ request.setRanges(List.of(new Range(2, 7)));
+ Response response = testRangeApplication.handle(request);
+ assertEquals(Status.SUCCESS_PARTIAL_CONTENT, response.getStatus());
+ assertEquals("3456789", response.getEntity().getText());
+ assertEquals(10, response.getEntity().getSize());
+ assertEquals(7, response.getEntity().getAvailableSize());
+ assertEquals(2, response.getEntity().getRange().getIndex());
+ assertEquals(7, response.getEntity().getRange().getSize());
+ }
+ @Test
+ public void rangeLast7Bytes() throws Exception {
+ request.setRanges(List.of(new Range(Range.INDEX_LAST, 7)));
+ Response response = testRangeApplication.handle(request);
+ assertEquals(Status.SUCCESS_PARTIAL_CONTENT, response.getStatus());
+ assertEquals("4567890", response.getEntity().getText());
+ assertEquals(10, response.getEntity().getSize());
+ assertEquals(7, response.getEntity().getAvailableSize());
+ assertEquals(-1, response.getEntity().getRange().getIndex());
+ assertEquals(7, response.getEntity().getRange().getSize());
+ }
+
+ @Test
+ public void range2toMaxBytes() throws Exception {
+ request.setRanges(List.of(new Range(2, Range.SIZE_MAX)));
+ Response response = testRangeApplication.handle(request);
+ assertEquals(Status.SUCCESS_PARTIAL_CONTENT, response.getStatus());
+ assertEquals("34567890", response.getEntity().getText());
+ assertEquals(10, response.getEntity().getSize());
+ assertEquals(8, response.getEntity().getAvailableSize());
+ assertEquals(2, response.getEntity().getRange().getIndex());
+ }
+
+ @Test
+ public void range2To1000Bytes() throws Exception {
+ request.setRanges(List.of(new Range(2, 1000)));
+ Response response = testRangeApplication.handle(request);
+ assertEquals(Status.SUCCESS_PARTIAL_CONTENT, response.getStatus());
+ assertEquals("34567890", response.getEntity().getText());
+ assertEquals(10, response.getEntity().getSize());
+ assertEquals(8, response.getEntity().getAvailableSize());
+ assertEquals(2, response.getEntity().getRange().getIndex());
+ }
+ }
+
+ @Nested
+ class TestConditionalRanges {
+ private Request request;
+
+ @BeforeEach
+ void setUp() {
+ request = new Request(Method.GET, "/testGet");
+ request.setRanges(List.of(new Range(1, Range.SIZE_MAX)));
+ }
+
+ @Test
+ public void rangeShouldApply() throws Exception {
+ request.getConditions().setRangeTag(ENTITY_TAG);
+
+ Response response = testRangeApplication.handle(request);
+ assertEquals(Status.SUCCESS_PARTIAL_CONTENT, response.getStatus());
+ assertEquals("234567890", response.getEntity().getText());
+ assertEquals(10, response.getEntity().getSize());
+ assertEquals(9, response.getEntity().getAvailableSize());
+ assertEquals(1, response.getEntity().getRange().getIndex());
+ assertEquals(-1, response.getEntity().getRange().getSize());
+ }
+
+ @Test
+ public void rangeShouldNotApply() throws Exception {
+ Tag entityTag = new Tag(UUID.randomUUID().toString());
+ request.getConditions().setRangeTag(entityTag);
+ Response response = testRangeApplication.handle(request);
+ assertEquals(Status.SUCCESS_OK, response.getStatus());
+ assertEquals("1234567890", response.getEntity().getText());
+ assertNull(response.getEntity().getRange());
+ }
+ }
+
+ @Nested
+ class TestPut {
+
+ @Test
+ public void testPut() throws IOException {
+ Path testFilePath = testDirPath.resolve("essai.txt");
+
+ testFilePath.toFile().delete();
+
+ // PUT on a file that does not exist
+ Request request;
+ Response response;
+ request = new Request(Method.PUT, "/testPut/essai.txt");
+ request.setEntity(new StringRepresentation("1234567890"));
+ request.setRanges(List.of(new Range(0, 10)));
+ response = testRangeApplication.handle(request);
+
+ assertTrue(response.getStatus().isSuccess());
+ assertEquals("1234567890", Files.readString(testFilePath));
+
+ // Partial PUT on a file, the provided representation overflowed the
+ // existing file
+ request = new Request(Method.PUT, "/testPut/essai.txt");
+ request.setEntity(new StringRepresentation("0000000000"));
+ request.setRanges(List.of(new Range(1, 10)));
+ response = testRangeApplication.handle(request);
+ assertTrue(response.getStatus().isSuccess());
+ assertEquals("10000000000", Files.readString(testFilePath));
+
+ // Partial PUT on a file, simple range
+ request = new Request(Method.PUT, "/testPut/essai.txt");
+ request.setEntity(new StringRepresentation("22"));
+ request.setRanges(List.of(new Range(2, 2)));
+ response = testRangeApplication.handle(request);
+ assertTrue(response.getStatus().isSuccess());
+ assertEquals("10220000000", Files.readString(testFilePath));
+
+ // Partial PUT on a file, the provided representation will be padded
+ // at the very end of the file.
+ request = new Request(Method.PUT, "/testPut/essai.txt");
+ request.setEntity(new StringRepresentation("888"));
+ request.setRanges(List.of(new Range(8, Range.SIZE_MAX)));
+ response = testRangeApplication.handle(request);
+ assertTrue(response.getStatus().isSuccess());
+ assertEquals("10220000888", Files.readString(testFilePath));
+
+ // Partial PUT on a file, the provided representation will be padded
+ // just before the end of the file.
+ request = new Request(Method.PUT, "/testPut/essai.txt");
+ request.setEntity(new StringRepresentation("99"));
+ request.setRanges(List.of(new Range(8, Range.SIZE_MAX)));
+ response = testRangeApplication.handle(request);
+ assertTrue(response.getStatus().isSuccess());
+ assertEquals("10220000998", Files.readString(testFilePath));
+
+ request = new Request(Method.GET, "/testPut/essai.txt");
+ request.setRanges(List.of(new Range(3, Range.SIZE_MAX)));
+ response = testRangeApplication.handle(request);
+ assertEquals(Status.SUCCESS_PARTIAL_CONTENT, response.getStatus());
+ assertEquals("20000998", response.getEntity().getText());
+
+
+ // Partial PUT on a file, with a non-bytes range, not taken into account
+ request = new Request(Method.PUT, "/testPut/essai.txt");
+ request.setEntity(new StringRepresentation("1234567890"));
+ request.setRanges(List.of(new Range(8, Range.SIZE_MAX, 10, "test")));
+ response = testRangeApplication.handle(request);
+ assertTrue(response.getStatus().isSuccess());
+ assertEquals("1234567890", Files.readString(testFilePath));
+ }
+
+ @Test
+ void putNewFileWithRangeStartingFrom1Index() throws IOException {
+ Path testFilePath = testDirPath.resolve("essai2.txt");
+ testFilePath.toFile().delete();
+
+ Request request = new Request(Method.PUT, "/testPut/essai2.txt");
+ request.setEntity(new StringRepresentation("1234567890"));
+ request.setRanges(List.of(new Range(1, 10)));
+ Response response = testRangeApplication.handle(request);
+ assertTrue(response.getStatus().isSuccess());
+
+ assertTrue(Files.readString(testFilePath).endsWith("234567890"));
+ }
+
+ @Test
+ void putNewFileWithRangeWithoutSize() throws IOException {
+ Path testFilePath = testDirPath.resolve("essai3.txt");
+ testFilePath.toFile().delete();
+
+ Request request = new Request(Method.PUT, "/testPut/essai3.txt");
+ request.setEntity(new StringRepresentation("123"));
+ request.setRanges(List.of(new Range(8, Range.SIZE_MAX)));
+ Response response = testRangeApplication.handle(request);
+ assertTrue(response.getStatus().isSuccess());
+ assertTrue(Files.readString(testFilePath).endsWith("123"));
+ }
+ }
+
+
+ @Test
+ public void testMultipleRanges() {
+ Request request = new Request(Method.GET, "/testGet");
+ request.setRanges(List.of(new Range(1), new Range(2)));
+
+ Response response = testRangeApplication.handle(request);
+ assertEquals(Status.SERVER_ERROR_NOT_IMPLEMENTED, response.getStatus());
+ }
+
+}
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/data/RecipientInfoTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/data/RecipientInfoTestCase.java
similarity index 94%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/data/RecipientInfoTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/data/RecipientInfoTestCase.java
index 50e17f99b6..11e8acf2e5 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/data/RecipientInfoTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/data/RecipientInfoTestCase.java
@@ -7,28 +7,25 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.data;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNull;
-
-import java.util.ArrayList;
-import java.util.List;
+package org.restlet.data;
import org.junit.jupiter.api.Test;
-import org.restlet.data.Header;
-import org.restlet.data.RecipientInfo;
import org.restlet.engine.header.HeaderConstants;
import org.restlet.engine.header.RecipientInfoReader;
import org.restlet.engine.header.RecipientInfoWriter;
-import org.restlet.test.RestletTestCase;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
/**
* Test {@link org.restlet.data.RecipientInfo}.
*
* @author Jerome Louvel
*/
-public class RecipientInfoTestCase extends RestletTestCase {
+public class RecipientInfoTestCase {
@Test
public void testVia() {
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/data/ReferenceTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/data/ReferenceTestCase.java
similarity index 98%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/data/ReferenceTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/data/ReferenceTestCase.java
index 7aad74d23b..b99c1430b2 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/data/ReferenceTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/data/ReferenceTestCase.java
@@ -7,26 +7,18 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.data;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-import java.util.ArrayList;
-import java.util.List;
+package org.restlet.data;
import org.junit.jupiter.api.Test;
-import org.restlet.data.Form;
-import org.restlet.data.Header;
-import org.restlet.data.Protocol;
-import org.restlet.data.Reference;
import org.restlet.engine.header.HeaderConstants;
import org.restlet.engine.util.ReferenceUtils;
-import org.restlet.test.RestletTestCase;
import org.restlet.util.Series;
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.*;
+
/**
* Test {@link org.restlet.data.Reference}.
*
@@ -34,7 +26,7 @@
* @author Lars Heuer (heuer[at]semagia.com) Semagia
*/
-public class ReferenceTestCase extends RestletTestCase {
+public class ReferenceTestCase {
protected final static String DEFAULT_SCHEME = "http";
protected final static String DEFAULT_SCHEMEPART = "//";
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/connector/RiapConnectorsTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/data/RiapConnectorsTestCase.java
similarity index 52%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/connector/RiapConnectorsTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/data/RiapConnectorsTestCase.java
index 6f659f77d4..f29848cfef 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/connector/RiapConnectorsTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/data/RiapConnectorsTestCase.java
@@ -7,35 +7,50 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.connector;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.fail;
+package org.restlet.data;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import org.restlet.Application;
-import org.restlet.Component;
-import org.restlet.Request;
-import org.restlet.Response;
-import org.restlet.Restlet;
-import org.restlet.data.MediaType;
-import org.restlet.data.Protocol;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.ValueSource;
+import org.restlet.*;
+import org.restlet.engine.Engine;
import org.restlet.representation.Representation;
import org.restlet.resource.ClientResource;
import org.restlet.routing.Router;
-import org.restlet.test.RestletTestCase;
+
+import java.io.IOException;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.fail;
/**
* Unit test case for the RIAP Internal routing protocol.
*/
-public class RiapConnectorsTestCase extends RestletTestCase {
+public class RiapConnectorsTestCase {
/**
* Test the RIAP client and server connectors.
*/
- @Test
- public void testRiapConnectors() {
- Component component = new Component();
+ @ParameterizedTest
+ @ValueSource(strings = { "riap://component/app/test", "riap://component/app/redirectToInternalResource" })
+ public void testRiapConnectors(final String url) throws IOException {
+ ClientResource res = new ClientResource(url);
+ Representation rep = res.get();
+
+ assertEquals("hello, world", rep.getText());
+ }
+
+ private static Component component;
+
+ @BeforeAll
+ static void setUp() throws Exception {
+ Engine.clearThreadLocalVariables();
+ Engine.register();
+
+ component = new Component();
component.getServers().add(Protocol.RIAP);
component.getClients().add(Protocol.RIAP);
@@ -43,7 +58,7 @@ public void testRiapConnectors() {
@Override
public Restlet createInboundRoot() {
Router router = new Router(getContext());
- router.attach("/testA", new Restlet(getContext()) {
+ router.attach("/test", new Restlet(getContext()) {
@Override
public void handle(Request request, Response response) {
@@ -51,17 +66,11 @@ public void handle(Request request, Response response) {
}
});
- router.attach("/testB", new Restlet(getContext()) {
+ router.attach("/redirectToInternalResource", new Restlet(getContext()) {
public void handle(Request request, Response response) {
- ClientResource resource = new ClientResource(
- "riap://component/app/testA");
- try {
- response.setEntity(resource.get().getText(),
- MediaType.TEXT_PLAIN);
- } catch (Exception e) {
- }
+ ClientResource resource = new ClientResource("riap://component/app/test");
+ response.setEntity(resource.get());
}
-
});
return router;
}
@@ -70,21 +79,14 @@ public void handle(Request request, Response response) {
// Attach the private application
component.getInternalRouter().attach("/app", app);
- try {
- component.start();
-
- ClientResource res = new ClientResource(
- "riap://component/app/testA");
- Representation rep = res.get();
- assertEquals("hello, world", rep.getText());
-
- res = new ClientResource("riap://component/app/testB");
- rep = res.get();
- assertEquals("hello, world", rep.getText());
+ component.start();
+ }
- component.stop();
- } catch (Exception e) {
- fail(e.getMessage());
- }
+ @AfterAll
+ static void tearDown() throws Exception {
+ Engine.clearThreadLocalVariables();
+ component.stop();
+ component = null;
}
+
}
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/connector/RiapTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/data/RiapTestCase.java
similarity index 89%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/connector/RiapTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/data/RiapTestCase.java
index a78cdc3e65..70c9a7bdb7 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/connector/RiapTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/data/RiapTestCase.java
@@ -7,39 +7,28 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.connector;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertSame;
-import static org.junit.jupiter.api.Assertions.fail;
-import static org.restlet.data.LocalReference.RIAP_APPLICATION;
-import static org.restlet.data.LocalReference.createRiapReference;
-
-import java.io.Serializable;
+package org.restlet.data;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
-import org.restlet.Application;
-import org.restlet.Component;
-import org.restlet.Request;
-import org.restlet.Response;
-import org.restlet.Restlet;
-import org.restlet.data.LocalReference;
-import org.restlet.data.Method;
-import org.restlet.data.Reference;
+import org.restlet.*;
import org.restlet.representation.ObjectRepresentation;
import org.restlet.representation.Representation;
import org.restlet.representation.StringRepresentation;
import org.restlet.resource.ClientResource;
-import org.restlet.test.RestletTestCase;
+
+import java.io.Serializable;
+
+import static org.junit.jupiter.api.Assertions.*;
+import static org.restlet.data.LocalReference.RIAP_APPLICATION;
+import static org.restlet.data.LocalReference.createRiapReference;
/**
* Unit test case for the RIAP Internal routing protocol.
*
* @author Marc Portier
*/
-public class RiapTestCase extends RestletTestCase {
+public class RiapTestCase {
private static final String DEFAULT_MSG = "no-default";
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/data/StatusTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/data/StatusTestCase.java
similarity index 82%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/data/StatusTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/data/StatusTestCase.java
index a78c147bf1..6ba5009254 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/data/StatusTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/data/StatusTestCase.java
@@ -7,22 +7,18 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.data;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotEquals;
-import static org.junit.jupiter.api.Assertions.assertTrue;
+package org.restlet.data;
import org.junit.jupiter.api.Test;
-import org.restlet.data.Status;
-import org.restlet.test.RestletTestCase;
+
+import static org.junit.jupiter.api.Assertions.*;
/**
* Test {@link org.restlet.data.Status}.
*
* @author Jerome Louvel
*/
-public class StatusTestCase extends RestletTestCase {
+public class StatusTestCase {
@Test
public void testCustomDescription() {
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/data/TagTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/data/TagTestCase.java
similarity index 83%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/data/TagTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/data/TagTestCase.java
index 1e69f2b3b8..05c4a189b5 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/data/TagTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/data/TagTestCase.java
@@ -7,27 +7,22 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.data;
+package org.restlet.data;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
+import org.junit.jupiter.api.Test;
+import org.restlet.engine.header.TagReader;
import java.util.ArrayList;
import java.util.List;
-import org.junit.jupiter.api.Test;
-import org.restlet.data.Tag;
-import org.restlet.engine.header.TagReader;
-import org.restlet.test.RestletTestCase;
+import static org.junit.jupiter.api.Assertions.*;
/**
* Test {@link org.restlet.data.Tag}.
*
* @author Jerome Louvel
*/
-public class TagTestCase extends RestletTestCase {
+public class TagTestCase {
@Test
public void testSimpleTag() {
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/connector/ZipClientTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/data/ZipClientTestCase.java
similarity index 94%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/connector/ZipClientTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/data/ZipClientTestCase.java
index 8c464ed7ac..124733904f 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/connector/ZipClientTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/data/ZipClientTestCase.java
@@ -7,33 +7,29 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.connector;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.fail;
-
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Path;
+package org.restlet.data;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
-import org.restlet.data.LocalReference;
-import org.restlet.data.Reference;
-import org.restlet.data.Status;
import org.restlet.representation.EmptyRepresentation;
import org.restlet.representation.StringRepresentation;
import org.restlet.resource.ClientResource;
import org.restlet.resource.ResourceException;
-import org.restlet.test.RestletTestCase;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.fail;
/**
* Unit test case for the Zip client connector.
*
* @author Remi Dewitte
*/
-public class ZipClientTestCase extends RestletTestCase {
+public class ZipClientTestCase {
private File zipFile;
diff --git a/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/EngineTest.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/EngineTest.java
new file mode 100644
index 0000000000..fe0e1f4038
--- /dev/null
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/EngineTest.java
@@ -0,0 +1,36 @@
+/**
+ * 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.engine;
+
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Properties;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+public class EngineTest {
+
+ @Test
+ public void engineVersionShouldBeEqualToMavenProjectVersion() {
+ // When I retrieve the Maven project's version as stated in the pom file.
+ Properties properties = new Properties();
+ try (InputStream resourceAsStream = EngineTest.class.getClassLoader().getResourceAsStream("maven-version.properties")) {
+ properties.load(resourceAsStream);
+ } catch (IOException e) {
+ Assertions.fail("Can't load the properties file that contain the Maven's project version");
+ }
+
+ // Then the Maven project's version should be equal to the Engine's version.
+ assertEquals(Engine.VERSION, properties.getProperty("maven.version"));
+ }
+}
\ No newline at end of file
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/application/CorsResponseFilterTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/application/CorsResponseFilterTestCase.java
similarity index 84%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/application/CorsResponseFilterTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/engine/application/CorsResponseFilterTestCase.java
index d4d15991ef..25e3512a58 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/application/CorsResponseFilterTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/application/CorsResponseFilterTestCase.java
@@ -7,33 +7,27 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.engine.application;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.contains;
-import static org.hamcrest.Matchers.containsInAnyOrder;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-import java.util.Collection;
+package org.restlet.engine.application;
+import org.hamcrest.MatcherAssert;
+import org.hamcrest.Matchers;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.restlet.Request;
import org.restlet.Response;
import org.restlet.data.Method;
-import org.restlet.engine.application.CorsFilter;
import org.restlet.resource.Get;
import org.restlet.resource.Options;
import org.restlet.resource.ServerResource;
-import org.restlet.test.RestletTestCase;
+
+import java.util.Collection;
+
+import static org.junit.jupiter.api.Assertions.*;
/**
* @author Manuel Boillod
*/
-public class CorsResponseFilterTestCase extends RestletTestCase {
+public class CorsResponseFilterTestCase {
private CorsFilter corsFilter;
@@ -117,7 +111,7 @@ public void testOption_requestGet() {
assertEquals("*", response.getAccessControlAllowOrigin());
assertNull(response.getAccessControlAllowCredentials());
assertIsEmpty(response.getAccessControlAllowHeaders());
- assertThat(response.getAccessControlAllowMethods(), contains(Method.GET, Method.OPTIONS));
+ MatcherAssert.assertThat(response.getAccessControlAllowMethods(), Matchers.contains(Method.GET, Method.OPTIONS));
assertIsEmpty(response.getAccessControlExposeHeaders());
}
@@ -133,7 +127,7 @@ public void testOption_requestGet_skippingResource() {
assertEquals("*", response.getAccessControlAllowOrigin());
assertNull(response.getAccessControlAllowCredentials());
assertIsEmpty(response.getAccessControlAllowHeaders());
- assertThat(response.getAccessControlAllowMethods(), containsInAnyOrder(Method.GET, Method.POST, Method.PUT, Method.DELETE, Method.PATCH));
+ MatcherAssert.assertThat(response.getAccessControlAllowMethods(), Matchers.containsInAnyOrder(Method.GET, Method.POST, Method.PUT, Method.DELETE, Method.PATCH));
assertIsEmpty(response.getAccessControlExposeHeaders());
}
@@ -149,7 +143,7 @@ public void testOption_requestPost_skippingResource() {
assertEquals("*", response.getAccessControlAllowOrigin());
assertNull(response.getAccessControlAllowCredentials());
assertIsEmpty(response.getAccessControlAllowHeaders());
- assertThat(response.getAccessControlAllowMethods(), containsInAnyOrder(Method.GET, Method.POST, Method.PUT, Method.DELETE, Method.PATCH));
+ MatcherAssert.assertThat(response.getAccessControlAllowMethods(), Matchers.containsInAnyOrder(Method.GET, Method.POST, Method.PUT, Method.DELETE, Method.PATCH));
assertIsEmpty(response.getAccessControlExposeHeaders());
}
@@ -165,7 +159,7 @@ public void testOption_requestGet_withAuthenticationAllowed() {
assertEquals("localhost", response.getAccessControlAllowOrigin());
assertEquals(Boolean.TRUE, response.getAccessControlAllowCredentials());
assertIsEmpty(response.getAccessControlAllowHeaders());
- assertThat(response.getAccessControlAllowMethods(), contains(Method.GET, Method.OPTIONS));
+ MatcherAssert.assertThat(response.getAccessControlAllowMethods(), Matchers.contains(Method.GET, Method.OPTIONS));
assertIsEmpty(response.getAccessControlExposeHeaders());
}
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/representation/RangeRepresentationTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/application/RangeRepresentationTestCase.java
similarity index 88%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/representation/RangeRepresentationTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/engine/application/RangeRepresentationTestCase.java
index 2a879bfb9a..20552ee461 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/representation/RangeRepresentationTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/application/RangeRepresentationTestCase.java
@@ -7,23 +7,21 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.representation;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNull;
+package org.restlet.engine.application;
import org.junit.jupiter.api.Test;
import org.restlet.data.Range;
-import org.restlet.engine.application.RangeRepresentation;
import org.restlet.representation.StringRepresentation;
-import org.restlet.test.RestletTestCase;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
/**
* Unit test case for the {@link RangeRepresentation} class.
*
* @author Jerome Louvel
*/
-public class RangeRepresentationTestCase extends RestletTestCase {
+public class RangeRepresentationTestCase {
@Test
public void testAppendable() throws Exception {
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/TunnelFilterTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/application/TunnelFilterTestCase.java
similarity index 95%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/TunnelFilterTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/engine/application/TunnelFilterTestCase.java
index a8c58b33c5..bde324499b 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/TunnelFilterTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/application/TunnelFilterTestCase.java
@@ -7,16 +7,7 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.engine;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotSame;
-import static org.junit.jupiter.api.Assertions.fail;
-
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+package org.restlet.engine.application;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
@@ -25,24 +16,21 @@
import org.restlet.Context;
import org.restlet.Request;
import org.restlet.Response;
-import org.restlet.data.CharacterSet;
-import org.restlet.data.Encoding;
-import org.restlet.data.Header;
-import org.restlet.data.Language;
-import org.restlet.data.MediaType;
-import org.restlet.data.Metadata;
-import org.restlet.data.Method;
-import org.restlet.data.Preference;
-import org.restlet.data.Reference;
-import org.restlet.engine.application.TunnelFilter;
+import org.restlet.data.*;
import org.restlet.engine.header.HeaderConstants;
-import org.restlet.test.RestletTestCase;
import org.restlet.util.Series;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static org.junit.jupiter.api.Assertions.*;
+
/**
* Tests cases for the tunnel filter.
*/
-public class TunnelFilterTestCase extends RestletTestCase {
+public class TunnelFilterTestCase {
/** . */
private static final String EFFECTED = "http://example.org/adf.asdf/af.html";
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/ContentTypeTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/header/ContentTypeTestCase.java
similarity index 75%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/ContentTypeTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/engine/header/ContentTypeTestCase.java
index f4f2445bc3..cc06ff3476 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/ContentTypeTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/header/ContentTypeTestCase.java
@@ -7,32 +7,25 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.engine;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.fail;
+package org.restlet.engine.header;
import org.junit.jupiter.api.Test;
-import org.restlet.engine.header.ContentType;
-import org.restlet.test.RestletTestCase;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
/**
* Test {@link ContentType}
*
* @author Jerome Louvel
*/
-public class ContentTypeTestCase extends RestletTestCase {
+public class ContentTypeTestCase {
@Test
public void testParsingInvalid() {
String h1 = "application/docbook+xml; version='my version 1.0'";
- try {
- new ContentType(h1);
- fail("Shouldn't reach this point");
- } catch (IllegalArgumentException iae) {
- // OK
- }
+ assertThrows(IllegalArgumentException.class, () -> new ContentType(h1));
}
@Test
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/CookiesTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/header/CookieReaderTestCase.java
similarity index 95%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/CookiesTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/engine/header/CookieReaderTestCase.java
index dc1837c7d0..31a2c0ce7a 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/CookiesTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/header/CookieReaderTestCase.java
@@ -7,32 +7,27 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.engine;
+package org.restlet.engine.header;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertTrue;
+import org.junit.jupiter.api.Test;
+import org.restlet.data.Cookie;
+import org.restlet.data.CookieSetting;
+import org.restlet.engine.util.DateUtils;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
-import org.junit.jupiter.api.Test;
-import org.restlet.data.Cookie;
-import org.restlet.data.CookieSetting;
-import org.restlet.engine.header.CookieReader;
-import org.restlet.engine.header.CookieSettingReader;
-import org.restlet.engine.header.CookieSettingWriter;
-import org.restlet.engine.header.CookieWriter;
-import org.restlet.engine.util.DateUtils;
-import org.restlet.test.RestletTestCase;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
/**
* Unit tests for the Cookie related classes.
*
* @author Jerome Louvel
*/
-public class CookiesTestCase extends RestletTestCase {
+public class CookieReaderTestCase {
/**
* Test one cookie header.
*
diff --git a/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/header/DispositionReaderTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/header/DispositionReaderTestCase.java
new file mode 100644
index 0000000000..412852cf04
--- /dev/null
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/header/DispositionReaderTestCase.java
@@ -0,0 +1,63 @@
+/**
+ * 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.engine.header;
+
+import org.junit.jupiter.api.Test;
+import org.restlet.data.Disposition;
+
+import java.io.IOException;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
+
+/**
+ * Unit tests for the HTTP calls.
+ *
+ * @author Kevin Conaway
+ */
+public class DispositionReaderTestCase {
+
+ @Test
+ public void testParseContentDisposition() throws IOException {
+ Disposition disposition = new DispositionReader(
+ "attachment; fileName=\"file.txt\"").readValue();
+ assertEquals("file.txt",
+ disposition.getParameters().getFirstValue("fileName"));
+
+ disposition = new DispositionReader("attachment; fileName=file.txt")
+ .readValue();
+ assertEquals("file.txt",
+ disposition.getParameters().getFirstValue("fileName"));
+
+ disposition = new DispositionReader(
+ "attachment; filename=\"file with space.txt\"").readValue();
+ assertEquals("file with space.txt", disposition.getParameters()
+ .getFirstValue("filename"));
+
+ disposition = new DispositionReader("attachment; filename=\"\"")
+ .readValue();
+ assertEquals("", disposition.getParameters().getFirstValue("filename"));
+
+ disposition = new DispositionReader("attachment; filename=")
+ .readValue();
+ assertNull(disposition.getParameters().getFirstValue("filename"));
+
+ disposition = new DispositionReader("attachment; filenam").readValue();
+ assertNull(disposition.getParameters().getFirstValue("filename"));
+
+ disposition = new DispositionReader(
+ "attachment; modification-date=\"Wed, 11 Nov 09 22:11:12 GMT\"")
+ .readValue();
+ String str = disposition.getParameters().getFirstValue(
+ "modification-date");
+ assertEquals("Wed, 11 Nov 09 22:11:12 GMT", str);
+
+ }
+}
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/HttpCallTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/header/DispositionWriterTestCase.java
similarity index 53%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/HttpCallTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/engine/header/DispositionWriterTestCase.java
index bf1cc00fb5..986baf3867 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/HttpCallTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/header/DispositionWriterTestCase.java
@@ -7,29 +7,24 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.engine;
+package org.restlet.engine.header;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNull;
+import org.junit.jupiter.api.Test;
+import org.restlet.data.Disposition;
-import java.io.IOException;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Locale;
import java.util.TimeZone;
-import org.junit.jupiter.api.Test;
-import org.restlet.data.Disposition;
-import org.restlet.engine.header.DispositionReader;
-import org.restlet.engine.header.DispositionWriter;
-import org.restlet.test.RestletTestCase;
+import static org.junit.jupiter.api.Assertions.assertEquals;
/**
* Unit tests for the HTTP calls.
*
* @author Kevin Conaway
*/
-public class HttpCallTestCase extends RestletTestCase {
+public class DispositionWriterTestCase {
@Test
public void testFormatContentDisposition() {
@@ -66,43 +61,6 @@ public void testFormatContentDisposition() {
disposition.setCreationDate(c.getTime());
assertEquals("inline; creation-date=\"Wed, 11 Nov 09 10:11:12 GMT\"",
DispositionWriter.write(disposition));
-
}
- @Test
- public void testParseContentDisposition() throws IOException {
- Disposition disposition = new DispositionReader(
- "attachment; fileName=\"file.txt\"").readValue();
- assertEquals("file.txt",
- disposition.getParameters().getFirstValue("fileName"));
-
- disposition = new DispositionReader("attachment; fileName=file.txt")
- .readValue();
- assertEquals("file.txt",
- disposition.getParameters().getFirstValue("fileName"));
-
- disposition = new DispositionReader(
- "attachment; filename=\"file with space.txt\"").readValue();
- assertEquals("file with space.txt", disposition.getParameters()
- .getFirstValue("filename"));
-
- disposition = new DispositionReader("attachment; filename=\"\"")
- .readValue();
- assertEquals("", disposition.getParameters().getFirstValue("filename"));
-
- disposition = new DispositionReader("attachment; filename=")
- .readValue();
- assertNull(disposition.getParameters().getFirstValue("filename"));
-
- disposition = new DispositionReader("attachment; filenam").readValue();
- assertNull(disposition.getParameters().getFirstValue("filename"));
-
- disposition = new DispositionReader(
- "attachment; modification-date=\"Wed, 11 Nov 09 22:11:12 GMT\"")
- .readValue();
- String str = disposition.getParameters().getFirstValue(
- "modification-date");
- assertEquals("Wed, 11 Nov 09 22:11:12 GMT", str);
-
- }
}
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/HeaderTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/header/HeaderTestCase.java
similarity index 77%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/HeaderTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/engine/header/HeaderTestCase.java
index 6accd465a8..7e622ffd32 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/HeaderTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/header/HeaderTestCase.java
@@ -7,41 +7,31 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.engine;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.fail;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Base64;
-import java.util.Date;
-import java.util.List;
+package org.restlet.engine.header;
+import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.restlet.data.ClientInfo;
import org.restlet.data.Encoding;
import org.restlet.data.Header;
import org.restlet.data.MediaType;
-import org.restlet.engine.header.EncodingReader;
-import org.restlet.engine.header.HeaderConstants;
-import org.restlet.engine.header.HeaderReader;
-import org.restlet.engine.header.HeaderUtils;
-import org.restlet.engine.header.PreferenceReader;
-import org.restlet.engine.header.TokenReader;
import org.restlet.engine.util.DateUtils;
import org.restlet.representation.Representation;
-import org.restlet.test.RestletTestCase;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Base64;
+import java.util.Date;
+import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.*;
/**
* Unit tests for the header.
*
* @author Jerome Louvel
*/
-public class HeaderTestCase extends RestletTestCase {
+public class HeaderTestCase {
/**
* Test the {@link HeaderReader#addValues(java.util.Collection)} method.
*/
@@ -89,33 +79,6 @@ public void testAddValues() {
assertEquals(l.size(), 1);
}
- @Test
- public void testExtracting() {
- ArrayList headers = new ArrayList<>();
- String md5hash = "aaaaaaaaaaaaaaaa";
- // encodes to "YWFhYWFhYWFhYWFhYWFhYQ==", the "==" at the end is padding
- String encodedWithPadding = Base64.getEncoder().encodeToString(md5hash.getBytes());
- String encodedNoPadding = encodedWithPadding.substring(0, 22);
-
- Header header = new Header(HeaderConstants.HEADER_CONTENT_MD5, encodedWithPadding);
- headers.add(header);
-
- // extract Content-MD5 header with padded Base64 encoding, make sure it
- // decodes to original hash
- Representation rep = HeaderUtils.extractEntityHeaders(headers, null);
- assertEquals(rep.getDigest().getAlgorithm(),
- org.restlet.data.Digest.ALGORITHM_MD5);
- assertEquals(new String(rep.getDigest().getValue()), md5hash);
-
- // extract header with UNpadded encoding, make sure it also decodes to
- // original hash
- header.setValue(encodedNoPadding);
- rep = HeaderUtils.extractEntityHeaders(headers, null);
- assertEquals(rep.getDigest().getAlgorithm(),
- org.restlet.data.Digest.ALGORITHM_MD5);
- assertEquals(new String(rep.getDigest().getValue()), md5hash);
- }
-
@Test
public void testInvalidDate() {
final String headerValue = "-1";
@@ -229,11 +192,8 @@ public void testEmptyValue() throws IOException {
assertNotNull(result);
assertEquals("My-Header", result.getName());
assertNull(result.getValue());
- try {
- HeaderReader.readHeader("My-Header");
- fail("Not allowed");
- } catch (IOException e) {
- }
+
+ assertThrows(IOException.class, () -> HeaderReader.readHeader("My-Header"));
result = HeaderReader.readHeader("My-Header:");
assertNotNull(result);
diff --git a/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/header/HeaderUtilsTest.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/header/HeaderUtilsTestCase.java
similarity index 61%
rename from org.restlet.java/org.restlet/src/test/java/org/restlet/engine/header/HeaderUtilsTest.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/engine/header/HeaderUtilsTestCase.java
index 9a916d5db3..65bc8bc0ce 100644
--- a/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/header/HeaderUtilsTest.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/header/HeaderUtilsTestCase.java
@@ -24,18 +24,21 @@
package org.restlet.engine.header;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-
-import java.util.Collections;
-
import org.junit.jupiter.api.Test;
import org.restlet.Request;
import org.restlet.Response;
import org.restlet.data.Header;
+import org.restlet.representation.Representation;
import org.restlet.util.Series;
-public class HeaderUtilsTest {
+import java.util.ArrayList;
+import java.util.Base64;
+import java.util.Collections;
+
+import static org.junit.jupiter.api.Assertions.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+public class HeaderUtilsTestCase {
@Test
public void whenHeaderRetryAfterIsDecimalThenParsingIsStillFine() {
@@ -68,4 +71,31 @@ public void whenHeaderRetryAfterIsAlphabeticalThenParsingFailsSilently() {
// Then the response does not contain a retry_after header
assertNull(response.getRetryAfter());
}
+
+ @Test
+ public void testExtracting() {
+ ArrayList headers = new ArrayList<>();
+ String md5hash = "aaaaaaaaaaaaaaaa";
+ // encodes to "YWFhYWFhYWFhYWFhYWFhYQ==", the "==" at the end is padding
+ String encodedWithPadding = Base64.getEncoder().encodeToString(md5hash.getBytes());
+ String encodedNoPadding = encodedWithPadding.substring(0, 22);
+
+ Header header = new Header(HeaderConstants.HEADER_CONTENT_MD5, encodedWithPadding);
+ headers.add(header);
+
+ // extract Content-MD5 header with padded Base64 encoding, make sure it
+ // decodes to original hash
+ Representation rep = HeaderUtils.extractEntityHeaders(headers, null);
+ assertEquals(rep.getDigest().getAlgorithm(),
+ org.restlet.data.Digest.ALGORITHM_MD5);
+ assertEquals(new String(rep.getDigest().getValue()), md5hash);
+
+ // extract header with UNpadded encoding, make sure it also decodes to
+ // original hash
+ header.setValue(encodedNoPadding);
+ rep = HeaderUtils.extractEntityHeaders(headers, null);
+ assertEquals(rep.getDigest().getAlgorithm(),
+ org.restlet.data.Digest.ALGORITHM_MD5);
+ assertEquals(new String(rep.getDigest().getValue()), md5hash);
+ }
}
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/PreferencesTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/header/PreferenceReaderTestCase.java
similarity index 89%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/PreferencesTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/engine/header/PreferenceReaderTestCase.java
index 5f5d1e4b23..1adbb80b5b 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/PreferencesTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/header/PreferenceReaderTestCase.java
@@ -7,26 +7,23 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.engine;
+package org.restlet.engine.header;
-import static org.junit.jupiter.api.Assertions.assertEquals;
+import org.junit.jupiter.api.Test;
+import org.restlet.data.MediaType;
+import org.restlet.data.Preference;
import java.util.ArrayList;
import java.util.List;
-import org.junit.jupiter.api.Test;
-import org.restlet.data.MediaType;
-import org.restlet.data.Preference;
-import org.restlet.engine.header.PreferenceReader;
-import org.restlet.engine.header.PreferenceWriter;
-import org.restlet.test.RestletTestCase;
+import static org.junit.jupiter.api.Assertions.assertEquals;
/**
* Unit tests for the Preference related classes.
*
* @author Jerome Louvel
*/
-public class PreferencesTestCase extends RestletTestCase {
+public class PreferenceReaderTestCase {
/**
* Tests the parsing of a single preference header.
*
diff --git a/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/header/RangeReaderTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/header/RangeReaderTestCase.java
new file mode 100644
index 0000000000..6c9e8d28c6
--- /dev/null
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/header/RangeReaderTestCase.java
@@ -0,0 +1,65 @@
+/**
+ * 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.engine.header;
+
+import org.junit.jupiter.api.Test;
+import org.restlet.data.MediaType;
+import org.restlet.representation.Representation;
+import org.restlet.representation.StringRepresentation;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+/**
+ * Unit tests for the header.
+ *
+ * @author Thierry Boileau
+ */
+public class RangeReaderTestCase {
+
+ @Test
+ public void testUpdateRangeFirst9Bytes() {
+ final String contentRangeHeaderValue = "bytes 1-9/10";
+ final Representation representation = new StringRepresentation("0123456789", MediaType.TEXT_PLAIN);
+
+ RangeReader.update(contentRangeHeaderValue, representation);
+
+ assertEquals(10, representation.getSize());
+ assertEquals(9, representation.getAvailableSize());
+ assertEquals(1, representation.getRange().getIndex());
+ assertEquals(9, representation.getRange().getSize());
+ }
+
+ @Test
+ public void testUpdateRange0To100Bytes() {
+ final String contentRangeHeaderValue = "bytes 0-100/10";
+ final Representation representation = new StringRepresentation("0123456789", MediaType.TEXT_PLAIN);
+
+ RangeReader.update(contentRangeHeaderValue, representation);
+
+ assertEquals(10, representation.getSize());
+ assertEquals(10, representation.getAvailableSize());
+ assertEquals(0, representation.getRange().getIndex());
+ assertEquals(101, representation.getRange().getSize());
+ }
+
+ @Test
+ public void testUpdateRange1To9Bytes() {
+ final String contentRangeHeaderValue = "bytes 1-9/*";
+ final Representation representation = new StringRepresentation("0123456789", MediaType.TEXT_PLAIN);
+
+ RangeReader.update(contentRangeHeaderValue, representation);
+
+ assertEquals(10, representation.getSize());
+ assertEquals(9, representation.getAvailableSize());
+ assertEquals(1, representation.getRange().getIndex());
+ assertEquals(9, representation.getRange().getSize());
+ }
+
+}
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/io/IoUtilsTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/io/IoUtilsTestCase.java
similarity index 84%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/io/IoUtilsTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/engine/io/IoUtilsTestCase.java
index 9de7659e88..6e2348c8e1 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/io/IoUtilsTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/io/IoUtilsTestCase.java
@@ -7,30 +7,24 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.engine.io;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.StringWriter;
-import java.nio.charset.StandardCharsets;
+package org.restlet.engine.io;
import org.junit.jupiter.api.Test;
import org.restlet.data.CharacterSet;
import org.restlet.data.MediaType;
-import org.restlet.engine.io.IoUtils;
import org.restlet.representation.OutputRepresentation;
-import org.restlet.test.RestletTestCase;
+
+import java.io.*;
+import java.nio.charset.StandardCharsets;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
/**
* Test case for the ByteUtils class.
*
* @author Kevin Conaway
*/
-public class IoUtilsTestCase extends RestletTestCase {
+public class IoUtilsTestCase {
@Test
public void testGetStream() throws IOException {
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/io/ReaderInputStreamTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/io/ReaderInputStreamTestCase.java
similarity index 86%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/io/ReaderInputStreamTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/engine/io/ReaderInputStreamTestCase.java
index b72b7d74a7..49b0849f54 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/io/ReaderInputStreamTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/io/ReaderInputStreamTestCase.java
@@ -7,20 +7,18 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.engine.io;
+package org.restlet.engine.io;
-import static org.junit.jupiter.api.Assertions.assertEquals;
+import org.junit.jupiter.api.Test;
+import org.restlet.data.CharacterSet;
+import org.restlet.representation.InputRepresentation;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import java.io.StringReader;
-import org.junit.jupiter.api.Test;
-import org.restlet.data.CharacterSet;
-import org.restlet.engine.io.ReaderInputStream;
-import org.restlet.representation.InputRepresentation;
-import org.restlet.test.RestletTestCase;
+import static org.junit.jupiter.api.Assertions.assertEquals;
/**
* Test the conversion from {@link Reader} to {@link InputStream} and the other
@@ -28,7 +26,7 @@
*
* @author Jerome Louvel
*/
-public class ReaderInputStreamTestCase extends RestletTestCase {
+public class ReaderInputStreamTestCase {
@Test
public void testConversion() throws IOException {
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/UnclosableInputStreamTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/io/UnclosableInputStreamTestCase.java
similarity index 72%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/UnclosableInputStreamTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/engine/io/UnclosableInputStreamTestCase.java
index 777cb666b0..bedd17530d 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/UnclosableInputStreamTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/io/UnclosableInputStreamTestCase.java
@@ -7,35 +7,33 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.engine;
+package org.restlet.engine.io;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertTrue;
+import org.junit.jupiter.api.Test;
import java.io.IOException;
import java.io.InputStream;
-import org.junit.jupiter.api.Test;
-import org.restlet.engine.io.UnclosableInputStream;
-import org.restlet.test.RestletTestCase;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
/**
* Unit tests for the HTTP KeepAlive.
*
* @author Kevin Conaway
*/
-public class UnclosableInputStreamTestCase extends RestletTestCase {
+public class UnclosableInputStreamTestCase {
static class MockInputStream extends InputStream {
boolean closed = false;
@Override
- public void close() throws IOException {
+ public void close() {
this.closed = true;
}
@Override
- public int read() throws IOException {
+ public int read() {
return -1;
}
}
@@ -43,9 +41,9 @@ public int read() throws IOException {
@Test
public void testClose() throws IOException {
final MockInputStream mock = new MockInputStream();
- final InputStream keepalive = new UnclosableInputStream(mock);
+ final InputStream keepAlive = new UnclosableInputStream(mock);
- keepalive.close();
+ keepAlive.close();
assertFalse(mock.closed);
mock.close();
assertTrue(mock.closed);
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/UnclosableOutputStreamTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/io/UnclosableOutputStreamTestCase.java
similarity index 75%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/UnclosableOutputStreamTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/engine/io/UnclosableOutputStreamTestCase.java
index 0fadbcc447..3e99c03f49 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/UnclosableOutputStreamTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/io/UnclosableOutputStreamTestCase.java
@@ -7,38 +7,33 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.engine;
+package org.restlet.engine.io;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertTrue;
+import org.junit.jupiter.api.Test;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
-import org.junit.jupiter.api.Test;
-import org.restlet.engine.io.UnclosableOutputStream;
-import org.restlet.test.RestletTestCase;
+import static org.junit.jupiter.api.Assertions.*;
/**
* Unit tests for the HTTP KeepAlive.
*
* @author Kevin Conaway
*/
-public class UnclosableOutputStreamTestCase extends RestletTestCase {
+public class UnclosableOutputStreamTestCase {
static class MockOutputStream extends OutputStream {
boolean closed = false;
@Override
- public void close() throws IOException {
+ public void close() {
this.closed = true;
}
@Override
- public void write(int b) throws IOException {
-
+ public void write(int b) {
}
}
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/AnnotationUtilsTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/resource/AnnotationUtilsTestCase.java
similarity index 85%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/AnnotationUtilsTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/engine/resource/AnnotationUtilsTestCase.java
index 7ac0966093..694606446d 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/AnnotationUtilsTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/resource/AnnotationUtilsTestCase.java
@@ -7,28 +7,24 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.engine;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-import java.util.List;
+package org.restlet.engine.resource;
import org.junit.jupiter.api.Test;
import org.restlet.data.Method;
-import org.restlet.engine.resource.AnnotationInfo;
-import org.restlet.engine.resource.AnnotationUtils;
-import org.restlet.engine.resource.MethodAnnotationInfo;
import org.restlet.resource.Get;
import org.restlet.resource.Put;
-import org.restlet.test.RestletTestCase;
+
+import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
/**
* Test case for generic interfaces.
*
* @author Valdis Rigdon
*/
-public class AnnotationUtilsTestCase extends RestletTestCase {
+public class AnnotationUtilsTestCase {
public interface IChild extends IParent {
@@ -46,8 +42,7 @@ public interface IParent {
@Test
public void testGetAnnotationsWithGenericParameterType() {
- List infos = AnnotationUtils.getInstance()
- .getAnnotations(IChild.class);
+ List infos = AnnotationUtils.getInstance().getAnnotations(IChild.class);
assertEquals(4, infos.size(), "Wrong count: " + infos);
boolean found = false;
@@ -68,8 +63,7 @@ public void testGetAnnotationsWithGenericParameterType() {
@Test
public void testGetAnnotationsWithGenericReturnType() {
- List infos = AnnotationUtils.getInstance()
- .getAnnotations(IChild.class);
+ List infos = AnnotationUtils.getInstance().getAnnotations(IChild.class);
assertEquals(4, infos.size(), "Wrong count: " + infos);
boolean found = false;
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/AlphaNumericComparatorTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/util/AlphaNumericComparatorTestCase.java
similarity index 77%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/AlphaNumericComparatorTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/engine/util/AlphaNumericComparatorTestCase.java
index 6a971e42b7..f1003fd7dc 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/AlphaNumericComparatorTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/util/AlphaNumericComparatorTestCase.java
@@ -7,27 +7,25 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.engine;
+package org.restlet.engine.util;
-import static org.junit.jupiter.api.Assertions.assertEquals;
+import org.junit.jupiter.api.Test;
+import org.restlet.data.Reference;
+import org.restlet.resource.Directory;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
-import org.junit.jupiter.api.Test;
-import org.restlet.data.Reference;
-import org.restlet.engine.util.AlphaNumericComparator;
-import org.restlet.resource.Directory;
-import org.restlet.test.RestletTestCase;
+import static org.junit.jupiter.api.Assertions.assertEquals;
/**
* Test case for the alphanum algorithm used by {@link Directory}.
*
* @author Davide Angelocola
*/
-public class AlphaNumericComparatorTestCase extends RestletTestCase {
+public class AlphaNumericComparatorTestCase {
private static List refs(String... uris) {
List result = new LinkedList<>();
@@ -39,16 +37,16 @@ private static List refs(String... uris) {
return result;
}
- private static List unsorted = refs("1", "2", "3", "1.0", "1.1",
+ private static final List unsorted = refs("1", "2", "3", "1.0", "1.1",
"1.1.1", "2.0", "2.2", "2.2.2", "3.0", "3.3");
- private static List expected = refs("1", "1.0", "1.1", "1.1.1",
+ private static final List expected = refs("1", "1.0", "1.1", "1.1.1",
"2", "2.0", "2.2", "2.2.2", "3", "3.0", "3.3");
@Test
public void testBug() {
List result = new ArrayList<>(unsorted);
- Collections.sort(result, new AlphaNumericComparator());
+ result.sort(new AlphaNumericComparator());
assertEquals(expected, result);
}
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/DateTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/util/DateUtilsTestCase.java
similarity index 79%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/DateTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/engine/util/DateUtilsTestCase.java
index d2671242cc..a4966e7204 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/DateTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/util/DateUtilsTestCase.java
@@ -7,22 +7,23 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.engine;
+package org.restlet.engine.util;
-import static org.junit.jupiter.api.Assertions.assertEquals;
+import org.junit.jupiter.api.Test;
+import java.util.Calendar;
import java.util.Date;
+import java.util.GregorianCalendar;
-import org.junit.jupiter.api.Test;
-import org.restlet.engine.util.DateUtils;
-import org.restlet.test.RestletTestCase;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
/**
* Test {@link DateUtils}
*
* @author Jerome Louvel
*/
-public class DateTestCase extends RestletTestCase {
+public class DateUtilsTestCase {
private final String DATE_RFC3339_1 = "1985-04-12T23:20:50.52Z";
@@ -122,4 +123,24 @@ public void testRfc3339() {
assertEquals("1991-01-01T00:00:00Z", dateFormat4);
assertEquals("1937-01-01T11:40:27.87Z", dateFormat5);
}
+
+ @Test
+ public void unmodifiableDates() {
+ Date now = new Date();
+ Calendar yesterdayCal = new GregorianCalendar();
+ yesterdayCal.add(Calendar.DAY_OF_MONTH, -1);
+
+ Date yesterday = yesterdayCal.getTime();
+
+ assertTrue(now.after(yesterday));
+ assertTrue(now.after(DateUtils.unmodifiable(yesterday)));
+ assertTrue(DateUtils.unmodifiable(now).after(yesterday));
+ assertTrue(DateUtils.unmodifiable(now).after(
+ DateUtils.unmodifiable(yesterday)));
+
+ assertTrue(yesterday.before(DateUtils.unmodifiable(now)));
+ assertTrue(DateUtils.unmodifiable(yesterday).before(
+ DateUtils.unmodifiable(now)));
+ assertTrue(DateUtils.unmodifiable(yesterday).before(now));
+ }
}
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/HtmlEncodingTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/util/HtmlEncodingTestCase.java
similarity index 96%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/HtmlEncodingTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/engine/util/HtmlEncodingTestCase.java
index eaa93922a9..7ce91b5e1a 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/HtmlEncodingTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/engine/util/HtmlEncodingTestCase.java
@@ -7,18 +7,17 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.engine;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.params.provider.Arguments.arguments;
+package org.restlet.engine.util;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
-import org.restlet.engine.util.StringUtils;
import java.util.stream.Stream;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.params.provider.Arguments.arguments;
+
/**
* Unit tests for the HTML encoding/decoding.
*
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/representation/AppendableRepresentationTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/representation/AppendableRepresentationTestCase.java
similarity index 76%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/representation/AppendableRepresentationTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/representation/AppendableRepresentationTestCase.java
index 5c78b6879e..9eca7e2d2e 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/representation/AppendableRepresentationTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/representation/AppendableRepresentationTestCase.java
@@ -7,20 +7,18 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.representation;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
+package org.restlet.representation;
import org.junit.jupiter.api.Test;
-import org.restlet.representation.AppendableRepresentation;
-import org.restlet.test.RestletTestCase;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
/**
* Unit test case for the {@link AppendableRepresentation} class.
*
* @author Jerome Louvel
*/
-public class AppendableRepresentationTestCase extends RestletTestCase {
+public class AppendableRepresentationTestCase {
@Test
public void testAppendable() throws Exception {
diff --git a/org.restlet.java/org.restlet/src/test/java/org/restlet/representation/DigesterRepresentationTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/representation/DigesterRepresentationTestCase.java
new file mode 100644
index 0000000000..39b9825090
--- /dev/null
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/representation/DigesterRepresentationTestCase.java
@@ -0,0 +1,129 @@
+/**
+ * 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.representation;
+
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.restlet.*;
+import org.restlet.data.Method;
+import org.restlet.data.Protocol;
+import org.restlet.data.Status;
+import org.restlet.engine.Engine;
+import org.restlet.routing.Router;
+
+import java.io.IOException;
+import java.security.NoSuchAlgorithmException;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+/**
+ * Test {@link DigesterRepresentation}.
+ *
+ * @author Thierry Boileau
+ */
+public class DigesterRepresentationTestCase {
+
+ /** Component used for the tests. */
+ private Component component;
+ private int serverPort;
+
+ @BeforeEach
+ protected void setUpEach() throws Exception {
+ Engine.register();
+ component = new Component();
+ final Server server = component.getServers().add(Protocol.HTTP, 0);
+ component.getDefaultHost().attach(new TestDigestApplication());
+ component.start();
+ serverPort = server.getActualPort();
+ }
+
+ @AfterEach
+ protected void tearDownEach() throws Exception {
+ component.stop();
+ component = null;
+ }
+
+ @Test
+ public void checkDigestSentByClient() {
+ Client client = new Client(Protocol.HTTP);
+ Request request = new Request(Method.PUT, "http://localhost:" + serverPort + "/checkRequestEntity");
+ request.setEntity(getDigestedRepresentation("0123456789"));
+ Response response = client.handle(request);
+
+ assertEquals(Status.SUCCESS_OK, response.getStatus());
+ }
+
+ @Test
+ public void checkDigestSentByServer() {
+ Client client = new Client(Protocol.HTTP);
+ Request request = new Request(Method.GET, "http://localhost:" + serverPort + "/checkResponseEntity");
+ Response response = client.handle(request);
+
+ assertEquals(Status.SUCCESS_OK, response.getStatus());
+ assertTrue(checkRepresentation(response.getEntity()));
+ }
+
+ /**
+ * Internal class used for test purpose.
+ *
+ */
+ private class TestDigestApplication extends Application {
+
+ @Override
+ public Restlet createInboundRoot() {
+ Router router = new Router(getContext());
+
+ router.attach("/checkRequestEntity", new Restlet() {
+ @Override
+ public void handle(Request request, Response response) {
+ Status responseStatus = checkRepresentation(request.getEntity())
+ ? Status.SUCCESS_OK
+ : Status.CLIENT_ERROR_BAD_REQUEST;
+ response.setStatus(responseStatus);
+ }
+ });
+
+ router.attach("/checkResponseEntity", new Restlet() {
+ @Override
+ public void handle(Request request, Response response) {
+ response.setEntity(getDigestedRepresentation("9876543210"));
+ }
+ });
+ return router;
+ }
+ }
+
+ private boolean checkRepresentation(final Representation representation) {
+ try {
+ DigesterRepresentation digester = new DigesterRepresentation(representation);
+ digester.exhaust();
+
+ return digester.checkDigest();
+ } catch (NoSuchAlgorithmException | IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ private DigesterRepresentation getDigestedRepresentation(final String string) {
+ try {
+ DigesterRepresentation digester = new DigesterRepresentation(new StringRepresentation(string));
+ // Consume first
+ digester.exhaust();
+ // Set the digest
+ digester.setDigest(digester.computeDigest());
+
+ return digester;
+ } catch (IOException | NoSuchAlgorithmException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+}
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/FileRepresentationTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/representation/FileRepresentationTestCase.java
similarity index 60%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/FileRepresentationTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/representation/FileRepresentationTestCase.java
index 8f446b19ab..57d0c7809f 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/FileRepresentationTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/representation/FileRepresentationTestCase.java
@@ -7,84 +7,63 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.resource;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNull;
-
-import java.io.File;
-import java.io.FileOutputStream;
+package org.restlet.representation;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import org.restlet.Application;
-import org.restlet.Client;
-import org.restlet.Component;
-import org.restlet.Context;
-import org.restlet.Request;
-import org.restlet.Response;
-import org.restlet.Restlet;
-import org.restlet.data.Disposition;
-import org.restlet.data.MediaType;
-import org.restlet.data.Method;
-import org.restlet.data.Protocol;
-import org.restlet.data.Status;
-import org.restlet.engine.io.IoUtils;
-import org.restlet.representation.FileRepresentation;
-import org.restlet.representation.Representation;
-import org.restlet.test.RestletTestCase;
+import org.restlet.*;
+import org.restlet.data.*;
+import org.restlet.engine.Engine;
+import org.restlet.engine.connector.HttpClientHelper;
+import org.restlet.engine.connector.HttpServerHelper;
+
+import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.Path;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
/**
* Unit tests for the FileRepresentation class.
*
* @author Kevin Conaway
*/
-public class FileRepresentationTestCase extends RestletTestCase {
+public class FileRepresentationTestCase {
private Component component;
- private File file;
-
- private File testDir;
+ private Path filePath;
private String uri;
@BeforeEach
protected void setUpEach() throws Exception {
- uri = "http://localhost:" + TEST_PORT + "/";
+ Engine.getInstance().getRegisteredClients().add(new HttpClientHelper(null));
+ Engine.getInstance().getRegisteredServers().add(new HttpServerHelper(null));
component = new Component();
- component.getServers().add(Protocol.HTTP, TEST_PORT);
+ Server server = component.getServers().add(Protocol.HTTP, 0);
component.start();
+ uri = "http://localhost:" + server.getActualPort() + "/";
// Create a temporary directory for the tests
- this.testDir = new File(System.getProperty("java.io.tmpdir"),
- "FileRepresentationTestCase");
- this.testDir.mkdirs();
-
- this.file = new File(this.testDir, getClass().getName());
- FileOutputStream os = new FileOutputStream(file);
- os.write("abc".getBytes());
- os.close();
+ this.filePath = Files.createTempFile("FileRepresentationTestCase", "test.txt");
+ Files.writeString(filePath, "abc");
}
@AfterEach
protected void tearDownEach() throws Exception {
component.stop();
- IoUtils.delete(this.file);
- IoUtils.delete(this.testDir, true);
component = null;
- this.file = null;
- this.testDir = null;
}
@Test
public void testConstructors() {
final File file = new File("test.txt");
- final FileRepresentation r = new FileRepresentation(file,
- MediaType.TEXT_PLAIN);
+ final FileRepresentation r = new FileRepresentation(file, MediaType.TEXT_PLAIN);
assertEquals("test.txt", r.getDisposition().getFilename());
assertEquals(MediaType.TEXT_PLAIN, r.getMediaType());
@@ -99,8 +78,7 @@ public Restlet createInboundRoot() {
return new Restlet() {
@Override
public void handle(Request request, Response response) {
- response.setEntity(new FileRepresentation(file,
- MediaType.TEXT_PLAIN));
+ response.setEntity(new FileRepresentation(filePath.toFile(), MediaType.TEXT_PLAIN));
response.getEntity().getDisposition()
.setType(Disposition.TYPE_ATTACHMENT);
}
@@ -117,8 +95,7 @@ public void handle(Request request, Response response) {
assertEquals(Status.SUCCESS_OK, response.getStatus());
assertEquals("abc", entity.getText());
- assertEquals(getClass().getName(), entity.getDisposition()
- .getFilename());
+ assertEquals(filePath.toFile().getName(), entity.getDisposition().getFilename());
client.stop();
}
diff --git a/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AbstractAnnotatedResourceTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AbstractAnnotatedResourceTestCase.java
new file mode 100644
index 0000000000..c4b0a7725f
--- /dev/null
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AbstractAnnotatedResourceTestCase.java
@@ -0,0 +1,47 @@
+/**
+ * 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.resource;
+
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.restlet.engine.Engine;
+import org.restlet.representation.ObjectRepresentation;
+import org.restlet.resource.ClientResource;
+
+/**
+ * Test the annotated resources, client and server sides.
+ *
+ * @author Jerome Louvel
+ */
+public abstract class AbstractAnnotatedResourceTestCase {
+
+ protected ClientResource clientResource;
+
+ @BeforeEach
+ protected void setUpEach() {
+ Engine.clearThreadLocalVariables();
+ Engine.register(false);
+ Engine.getInstance().registerDefaultConverters();
+ ObjectRepresentation.VARIANT_OBJECT_BINARY_SUPPORTED = true;
+
+ this.clientResource = new ClientResource("http://local");
+ configureClientResource(this.clientResource);
+ }
+
+ abstract void configureClientResource(final ClientResource clientResource);
+
+ @AfterEach
+ protected void tearDownEach() {
+ Engine.clearThreadLocalVariables();
+ clientResource.release();
+ clientResource = null;
+ }
+
+}
diff --git a/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AbstractAnnotatedResourceWithFinderTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AbstractAnnotatedResourceWithFinderTestCase.java
new file mode 100644
index 0000000000..98d758bd64
--- /dev/null
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AbstractAnnotatedResourceWithFinderTestCase.java
@@ -0,0 +1,28 @@
+/**
+ * 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.resource;
+
+/**
+ * Test the annotated resources, client and server sides.
+ *
+ * @author Jerome Louvel
+ */
+public abstract class AbstractAnnotatedResourceWithFinderTestCase extends AbstractAnnotatedResourceTestCase {
+
+ @Override
+ protected void configureClientResource(final ClientResource clientResource) {
+ Finder finder = new Finder();
+ clientResource.setNext(finder);
+ configureFinder(finder);
+ }
+
+ abstract void configureFinder(final Finder finder);
+
+}
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AbstractGenericAnnotatedServerResource.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AbstractGenericAnnotatedServerResource.java
similarity index 87%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AbstractGenericAnnotatedServerResource.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AbstractGenericAnnotatedServerResource.java
index 3ecc1c07fa..b859f17e04 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AbstractGenericAnnotatedServerResource.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AbstractGenericAnnotatedServerResource.java
@@ -7,13 +7,12 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.resource;
+package org.restlet.resource;
import org.restlet.resource.Post;
import org.restlet.resource.ServerResource;
-public abstract class AbstractGenericAnnotatedServerResource extends
- ServerResource {
+public abstract class AbstractGenericAnnotatedServerResource extends ServerResource {
@Post
public abstract R addResponse(R representation);
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource01TestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AnnotatedResource01TestCase.java
similarity index 52%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource01TestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AnnotatedResource01TestCase.java
index 82bcae668f..b039fdc0a9 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource01TestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AnnotatedResource01TestCase.java
@@ -7,56 +7,36 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.resource;
+package org.restlet.resource;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-import java.io.IOException;
-
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.restlet.data.MediaType;
import org.restlet.data.Status;
-import org.restlet.engine.Engine;
-import org.restlet.ext.jackson.JacksonConverter;
import org.restlet.representation.ObjectRepresentation;
import org.restlet.representation.StringRepresentation;
-import org.restlet.resource.ClientResource;
-import org.restlet.resource.Finder;
-import org.restlet.resource.ResourceException;
-import org.restlet.test.RestletTestCase;
+
+import java.io.IOException;
+
+import static org.junit.jupiter.api.Assertions.*;
/**
* Test the annotated resources, client and server sides.
*
* @author Jerome Louvel
*/
-public class AnnotatedResource01TestCase extends RestletTestCase {
-
- private ClientResource clientResource;
+public class AnnotatedResource01TestCase extends AbstractAnnotatedResourceWithFinderTestCase {
private MyResource01 myResource;
- @BeforeEach
- protected void setUpEach() throws Exception {
- Engine.getInstance().getRegisteredConverters().clear();
- Engine.getInstance().getRegisteredConverters().add(new JacksonConverter());
- Engine.getInstance().registerDefaultConverters();
- Finder finder = new Finder();
- finder.setTargetClass(MyServerResource01.class);
-
- this.clientResource = new ClientResource("http://local");
- this.clientResource.setNext(finder);
+ @Override
+ protected void configureClientResource(ClientResource clientResource) {
+ super.configureClientResource(clientResource);
this.myResource = clientResource.wrap(MyResource01.class);
}
- @AfterEach
- protected void tearDownEach() throws Exception {
- clientResource = null;
- myResource = null;
+ @Override
+ void configureFinder(Finder finder) {
+ finder.setTargetClass(MyServerResource01.class);
}
@Test
@@ -71,27 +51,8 @@ public void testGet() throws IOException, ResourceException {
assertEquals("myName", myBean.getName());
assertEquals("myDescription", myBean.getDescription());
- String result = clientResource.get(MediaType.TEXT_XML).getText();
- assertEquals(
- "myDescriptionmyName",
- result);
-
- result = clientResource.get(MediaType.APPLICATION_XML).getText();
- assertEquals(
- "myDescriptionmyName",
- result);
-
- result = clientResource.get(MediaType.APPLICATION_ALL_XML).getText();
- assertEquals(
- "myDescriptionmyName",
- result);
-
- result = clientResource.get(MediaType.APPLICATION_JSON).getText();
- assertEquals("{\"description\":\"myDescription\",\"name\":\"myName\"}",
- result);
-
ObjectRepresentation.VARIANT_OBJECT_XML_SUPPORTED = true;
- result = clientResource.get(MediaType.APPLICATION_JAVA_OBJECT_XML).getText();
+ String result = clientResource.get(MediaType.APPLICATION_JAVA_OBJECT_XML).getText();
assertTrue(result
.startsWith("")
&& result.contains(" argumentsProvider() {
return Stream.of(
- arguments(MediaType.TEXT_HTML, "root"),
- arguments(MediaType.APPLICATION_JSON, "[\"root\"]"),
- arguments(MediaType.APPLICATION_XML, "")
+ Arguments.arguments(MediaType.TEXT_HTML, "root"),
+ Arguments.arguments(MediaType.APPLICATION_JSON, "[\"root\"]"),
+ Arguments.arguments(MediaType.APPLICATION_XML, "")
);
}
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource05TestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AnnotatedResource05TestCase.java
similarity index 63%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource05TestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AnnotatedResource05TestCase.java
index 28e4ad9c58..7e5cc4e9b6 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource05TestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AnnotatedResource05TestCase.java
@@ -7,44 +7,27 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.resource;
+package org.restlet.resource;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-
-import java.io.IOException;
-
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.restlet.data.MediaType;
import org.restlet.representation.Representation;
-import org.restlet.resource.ClientResource;
-import org.restlet.resource.Finder;
-import org.restlet.resource.ResourceException;
-import org.restlet.test.RestletTestCase;
+
+import java.io.IOException;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
/**
* Test the annotated resources, client and server sides.
*
* @author Jerome Louvel
*/
-public class AnnotatedResource05TestCase extends RestletTestCase {
-
- private ClientResource clientResource;
+public class AnnotatedResource05TestCase extends AbstractAnnotatedResourceWithFinderTestCase {
- @BeforeEach
- protected void setUpEach() throws Exception {
- Finder finder = new Finder();
+ @Override
+ void configureFinder(Finder finder) {
finder.setTargetClass(MyResource05.class);
-
- this.clientResource = new ClientResource("http://local");
- this.clientResource.setNext(finder);
- }
-
- @AfterEach
- protected void tearDownEach() throws Exception {
- clientResource = null;
}
@Test
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource06TestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AnnotatedResource06TestCase.java
similarity index 64%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource06TestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AnnotatedResource06TestCase.java
index da97432242..1c2052e051 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource06TestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AnnotatedResource06TestCase.java
@@ -7,44 +7,27 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.resource;
+package org.restlet.resource;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-
-import java.io.IOException;
-
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.restlet.data.MediaType;
import org.restlet.representation.Representation;
-import org.restlet.resource.ClientResource;
-import org.restlet.resource.Finder;
-import org.restlet.resource.ResourceException;
-import org.restlet.test.RestletTestCase;
+
+import java.io.IOException;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
/**
* Test the annotated resources, client and server sides.
*
* @author Jerome Louvel
*/
-public class AnnotatedResource06TestCase extends RestletTestCase {
-
- private ClientResource clientResource;
+public class AnnotatedResource06TestCase extends AbstractAnnotatedResourceWithFinderTestCase {
- @BeforeEach
- protected void setUpEach() throws Exception {
- Finder finder = new Finder();
+ @Override
+ void configureFinder(Finder finder) {
finder.setTargetClass(MyResource06.class);
-
- this.clientResource = new ClientResource("http://local");
- this.clientResource.setNext(finder);
- }
-
- @AfterEach
- protected void tearDownEach() throws Exception {
- clientResource = null;
}
@Test
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource07TestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AnnotatedResource07TestCase.java
similarity index 66%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource07TestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AnnotatedResource07TestCase.java
index c1644bde25..7bb0a87eca 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource07TestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AnnotatedResource07TestCase.java
@@ -7,45 +7,28 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.resource;
+package org.restlet.resource;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-
-import java.io.IOException;
-
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.restlet.data.MediaType;
import org.restlet.representation.Representation;
import org.restlet.representation.StringRepresentation;
-import org.restlet.resource.ClientResource;
-import org.restlet.resource.Finder;
-import org.restlet.resource.ResourceException;
-import org.restlet.test.RestletTestCase;
+
+import java.io.IOException;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
/**
* Test the annotated resources, client and server sides.
*
* @author Jerome Louvel
*/
-public class AnnotatedResource07TestCase extends RestletTestCase {
-
- private ClientResource clientResource;
+public class AnnotatedResource07TestCase extends AbstractAnnotatedResourceWithFinderTestCase {
- @BeforeEach
- protected void setUpEach() throws Exception {
- Finder finder = new Finder();
+ @Override
+ void configureFinder(Finder finder) {
finder.setTargetClass(MyResource07.class);
-
- this.clientResource = new ClientResource("http://local");
- this.clientResource.setNext(finder);
- }
-
- @AfterEach
- protected void tearDownEach() throws Exception {
- clientResource = null;
}
@Test
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource08TestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AnnotatedResource08TestCase.java
similarity index 58%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource08TestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AnnotatedResource08TestCase.java
index 5eb37e48a4..876935cdda 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource08TestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AnnotatedResource08TestCase.java
@@ -7,50 +7,32 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.resource;
+package org.restlet.resource;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.params.provider.Arguments.arguments;
-import static org.restlet.data.MediaType.*;
-
-import java.io.IOException;
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
import org.restlet.data.MediaType;
import org.restlet.representation.Representation;
import org.restlet.representation.StringRepresentation;
-import org.restlet.resource.ClientResource;
-import org.restlet.resource.Finder;
-import org.restlet.resource.ResourceException;
-import org.restlet.test.RestletTestCase;
+
+import java.io.IOException;
+import java.util.stream.Stream;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.restlet.data.MediaType.*;
/**
* Test the annotated resources, client and server sides.
*
* @author Jerome Louvel
*/
-public class AnnotatedResource08TestCase extends RestletTestCase {
+public class AnnotatedResource08TestCase extends AbstractAnnotatedResourceWithFinderTestCase {
- private ClientResource clientResource;
-
- @BeforeEach
- protected void setUpEach() throws Exception {
- Finder finder = new Finder();
+ @Override
+ void configureFinder(Finder finder) {
finder.setTargetClass(MyResource08.class);
-
- this.clientResource = new ClientResource("http://local");
- this.clientResource.setNext(finder);
- }
-
- @AfterEach
- protected void tearDownEach() throws Exception {
- clientResource = null;
}
@ParameterizedTest
@@ -65,11 +47,11 @@ public void testPost(final MediaType requestBodyMediaType, final String requestB
static Stream argumentsProvider() {
return Stream.of(
- arguments(APPLICATION_XML, "root", APPLICATION_XML, "root1"),
- arguments(APPLICATION_XML, "root", APPLICATION_JSON, "root1"),
- arguments(APPLICATION_JSON, "root", APPLICATION_XML, "root1"),
- arguments(APPLICATION_WWW_FORM, "root", APPLICATION_WWW_FORM, "root2"),
- arguments(APPLICATION_WWW_FORM, "root", TEXT_HTML, "root2")
+ Arguments.arguments(APPLICATION_XML, "root", APPLICATION_XML, "root1"),
+ Arguments.arguments(APPLICATION_XML, "root", APPLICATION_JSON, "root1"),
+ Arguments.arguments(APPLICATION_JSON, "root", APPLICATION_XML, "root1"),
+ Arguments.arguments(APPLICATION_WWW_FORM, "root", APPLICATION_WWW_FORM, "root2"),
+ Arguments.arguments(APPLICATION_WWW_FORM, "root", TEXT_HTML, "root2")
);
}
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource12TestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AnnotatedResource12TestCase.java
similarity index 55%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource12TestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AnnotatedResource12TestCase.java
index 3051f1ca80..49382079dc 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource12TestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AnnotatedResource12TestCase.java
@@ -7,45 +7,31 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.resource;
+package org.restlet.resource;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.restlet.data.Form;
-import org.restlet.resource.ClientResource;
-import org.restlet.resource.Finder;
-import org.restlet.test.RestletTestCase;
+
+import static org.junit.jupiter.api.Assertions.*;
/**
* Test the annotated resources, client and server sides.
*
* @author Jerome Louvel
*/
-public class AnnotatedResource12TestCase extends RestletTestCase {
-
- private ClientResource clientResource;
+public class AnnotatedResource12TestCase extends AbstractAnnotatedResourceWithFinderTestCase {
private MyResource12 myResource;
- @BeforeEach
- protected void setUpEach() throws Exception {
- Finder finder = new Finder();
- finder.setTargetClass(MyServerResource12.class);
-
- this.clientResource = new ClientResource("http://local");
- this.clientResource.setNext(finder);
+ @Override
+ protected void configureClientResource(ClientResource clientResource) {
+ super.configureClientResource(clientResource);
this.myResource = clientResource.wrap(MyResource12.class);
}
- @AfterEach
- protected void tearDownEach() throws Exception {
- clientResource = null;
- myResource = null;
+ @Override
+ void configureFinder(Finder finder) {
+ finder.setTargetClass(MyServerResource12.class);
}
@Test
diff --git a/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AnnotatedResource13TestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AnnotatedResource13TestCase.java
new file mode 100644
index 0000000000..39d85d1fe1
--- /dev/null
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AnnotatedResource13TestCase.java
@@ -0,0 +1,231 @@
+/**
+ * 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.resource;
+
+import org.junit.jupiter.api.Test;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
+/**
+ * Test the annotated resources, client and server sides.
+ *
+ * @author Jerome Louvel
+ */
+public class AnnotatedResource13TestCase extends AbstractAnnotatedResourceWithFinderTestCase {
+
+ private MyResource13 myResource;
+
+ @Override
+ protected void configureClientResource(ClientResource clientResource) {
+ super.configureClientResource(clientResource);
+ this.myResource = clientResource.wrap(MyResource13.class);
+ }
+
+ @Override
+ void configureFinder(Finder finder) {
+ finder.setTargetClass(MyServerResource13.class);
+ }
+
+ @Override
+ protected void tearDownEach() {
+ myResource = null;
+ }
+
+ @Test
+ public void testQuery() {
+ Contact contact = myResource.retrieve();
+ assertNotNull(contact);
+
+ LightContact lightContact = myResource.retrieveLight();
+ assertNotEquals(lightContact.getClass(), Contact.class);
+ assertNotNull(lightContact);
+
+ FullContact fullContact = myResource.retrieveFull();
+ assertNotNull(fullContact);
+ }
+
+ /**
+ * Sample server resource for modifier testing.
+ *
+ * @author Jerome Louvel
+ */
+ public static class MyServerResource13 extends ServerResource implements MyResource13 {
+
+ public LightContact retrieveLight() {
+ return new LightContact("test@domain.com", "Scott", "Tiger");
+ }
+
+ public Contact retrieve() {
+ return new Contact("test@domain.com", "Scott", "Tiger", new Date(),
+ "test@perso.fr");
+ }
+
+ public FullContact retrieveFull() {
+ return new FullContact("test@domain.com", "Scott", "Tiger", new Date(),
+ "test@perso.fr", "1 Main Street", "Restlet city, 0102",
+ "RESTland", "+123.456", "+789012");
+ }
+ }
+
+ public static class Contact extends LightContact implements Serializable {
+
+ private Date birthDate;
+
+ private String email2;
+
+ public Contact(String email, String firstName, String lastName,
+ Date birthDate, String email2) {
+ super(email, firstName, lastName);
+ this.birthDate = birthDate;
+ email = email2;
+ }
+
+ public Date getBirthDate() {
+ return birthDate;
+ }
+
+ public String getEmail2() {
+ return email2;
+ }
+
+ public void setBirthDate(Date birthDate) {
+ this.birthDate = birthDate;
+ }
+
+ public void setEmail2(String email) {
+ this.email2 = email;
+ }
+
+ }
+
+ public static class FullContact extends Contact implements Serializable {
+
+ private String address1;
+
+ private String address2;
+
+ private String address3;
+
+ public FullContact(String email, String firstName, String lastName,
+ Date birthDate, String email2, String address1, String address2,
+ String address3, String fax, String phone) {
+ super(email, firstName, lastName, birthDate, email2);
+ this.address1 = address1;
+ this.address2 = address2;
+ this.address3 = address3;
+ this.fax = fax;
+ this.phone = phone;
+ }
+
+ private String fax;
+
+ private String phone;
+
+ public String getAddress1() {
+ return address1;
+ }
+
+ public String getAddress2() {
+ return address2;
+ }
+
+ public String getAddress3() {
+ return address3;
+ }
+
+ public String getFax() {
+ return fax;
+ }
+
+ public String getPhone() {
+ return phone;
+ }
+
+ public void setAddress1(String address1) {
+ this.address1 = address1;
+ }
+
+ public void setAddress2(String address2) {
+ this.address2 = address2;
+ }
+
+ public void setAddress3(String address3) {
+ this.address3 = address3;
+ }
+
+ public void setFax(String fax) {
+ this.fax = fax;
+ }
+
+ public void setPhone(String phone) {
+ this.phone = phone;
+ }
+
+ }
+
+ public static class LightContact implements Serializable {
+
+ private String email1;
+
+ private String firstName;
+
+ private String lastName;
+
+ public LightContact(String email, String firstName, String lastName) {
+ super();
+ this.email1 = email;
+ this.firstName = firstName;
+ this.lastName = lastName;
+ }
+
+ public String getEmail1() {
+ return email1;
+ }
+
+ public String getFirstName() {
+ return firstName;
+ }
+
+ public String getLastName() {
+ return lastName;
+ }
+
+ public void setEmail1(String email) {
+ this.email1 = email;
+ }
+
+ public void setFirstName(String firstName) {
+ this.firstName = firstName;
+ }
+
+ public void setLastName(String lastName) {
+ this.lastName = lastName;
+ }
+
+ }
+
+ public interface MyResource13 {
+
+ @Get("?shallow")
+ LightContact retrieveLight();
+
+ @Get
+ Contact retrieve();
+
+ @Get("?deep")
+ FullContact retrieveFull();
+
+ }
+
+}
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource14TestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AnnotatedResource14TestCase.java
similarity index 56%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource14TestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AnnotatedResource14TestCase.java
index 997926f8fa..a8ac2f7251 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource14TestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AnnotatedResource14TestCase.java
@@ -7,58 +7,41 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.resource;
+package org.restlet.resource;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.params.provider.Arguments.arguments;
-import static org.restlet.data.MediaType.*;
-
-import java.io.IOException;
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
import org.restlet.data.MediaType;
import org.restlet.representation.Representation;
import org.restlet.representation.StringRepresentation;
-import org.restlet.resource.ClientResource;
-import org.restlet.resource.Finder;
-import org.restlet.test.RestletTestCase;
+
+import java.io.IOException;
+import java.util.stream.Stream;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.restlet.data.MediaType.*;
/**
* Test the annotated resources, client and server sides.
*
* @author Jerome Louvel
*/
-public class AnnotatedResource14TestCase extends RestletTestCase {
+public class AnnotatedResource14TestCase extends AbstractAnnotatedResourceWithFinderTestCase {
- private ClientResource clientResource;
-
- @BeforeEach
- protected void setUpEach() throws Exception {
- Finder finder = new Finder();
+ @Override
+ void configureFinder(Finder finder) {
finder.setTargetClass(MyServerResource14.class);
-
- this.clientResource = new ClientResource("http://local");
- this.clientResource.setNext(finder);
- }
-
- @AfterEach
- protected void tearDownEach() throws Exception {
- clientResource = null;
}
static Stream argumentsProvider() {
return Stream.of(
- arguments(APPLICATION_JSON, APPLICATION_JSON, "json"),
- arguments(APPLICATION_XML, APPLICATION_JSON, "xml:json"),
- arguments(APPLICATION_XML, APPLICATION_XML, "xml"),
- arguments(TEXT_PLAIN, null, "*"),
- arguments(TEXT_PLAIN, TEXT_PLAIN, "*")
+ Arguments.arguments(APPLICATION_JSON, APPLICATION_JSON, "json"),
+ Arguments.arguments(APPLICATION_XML, APPLICATION_JSON, "xml:json"),
+ Arguments.arguments(APPLICATION_XML, APPLICATION_XML, "xml"),
+ Arguments.arguments(TEXT_PLAIN, null, "*"),
+ Arguments.arguments(TEXT_PLAIN, TEXT_PLAIN, "*")
);
}
@@ -77,4 +60,32 @@ public void testQuery(final MediaType requestEntityMediaType, final MediaType re
}
assertEquals(responseEntityAsText, rep.getText());
}
+
+ /**
+ * Sample server resource for testing annotated PUT methods.
+ *
+ * @author Jerome Louvel
+ */
+ public static class MyServerResource14 extends ServerResource {
+
+ @Put
+ public Representation store1(Representation rep) {
+ return new StringRepresentation("*", MediaType.TEXT_PLAIN);
+ }
+
+ @Put("xml")
+ public Representation store2(Representation rep) {
+ return new StringRepresentation("xml", MediaType.APPLICATION_XML);
+ }
+
+ @Put("xml:json")
+ public Representation store3(Representation rep) {
+ return new StringRepresentation("xml:json", MediaType.APPLICATION_JSON);
+ }
+
+ @Put("json")
+ public Representation store4(Representation rep) {
+ return new StringRepresentation("json", MediaType.APPLICATION_JSON);
+ }
+ }
}
diff --git a/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AnnotatedResource15OkTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AnnotatedResource15OkTestCase.java
new file mode 100644
index 0000000000..412afa1932
--- /dev/null
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AnnotatedResource15OkTestCase.java
@@ -0,0 +1,38 @@
+/**
+ * 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.resource;
+
+import org.junit.jupiter.api.Test;
+import org.restlet.data.MediaType;
+import org.restlet.representation.Representation;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
+/**
+ * Test the annotated resources, client and server sides.
+ *
+ * @author Jerome Louvel
+ */
+public class AnnotatedResource15OkTestCase extends AbstractAnnotatedResourceWithFinderTestCase {
+
+ @Override
+ void configureFinder(Finder finder) {
+ finder.setTargetClass(MyServerResource15Ok.class);
+ }
+
+ @Test
+ public void shouldFailBecauseServerResourceAnnotationResidesOnGenericServerResource() {
+ MyBean myBean = new MyBean("test", "description");
+ Representation rep = clientResource.post(myBean, MediaType.APPLICATION_JAVA_OBJECT);
+ assertNotNull(rep);
+ assertEquals(MediaType.APPLICATION_JAVA_OBJECT, rep.getMediaType());
+ }
+}
diff --git a/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AnnotatedResource15TestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AnnotatedResource15TestCase.java
new file mode 100644
index 0000000000..89c97cd965
--- /dev/null
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AnnotatedResource15TestCase.java
@@ -0,0 +1,46 @@
+/**
+ * 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.resource;
+
+import org.junit.jupiter.api.Test;
+import org.restlet.data.MediaType;
+import org.restlet.data.Status;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+/**
+ * Test the annotated resources, client and server sides.
+ *
+ * @author Jerome Louvel
+ */
+public class AnnotatedResource15TestCase extends AbstractAnnotatedResourceWithFinderTestCase {
+
+ @Override
+ void configureFinder(Finder finder) {
+ finder.setTargetClass(MyServerResource15.class);
+ }
+
+ /**
+ * The Java serialization (ObjectRepresentation) works well when the target class is correctly
+ * available at runtime. The usage of annotation like @Post on a generic method leads
+ * to the DefaultConverter to handle Object class and not Serializable interface.
+ * (cf AbstractGenericAnnotatedServerResource class).
+ */
+ @Test
+ public void shouldFailBecauseServerResourceAnnotationResidesOnGenericServerResource() {
+ MyBean myBean = new MyBean("test", "description");
+ try {
+ clientResource.post(myBean, MediaType.APPLICATION_JAVA_OBJECT);
+ fail("Should fail");
+ } catch (ResourceException resourceException) {
+ assertEquals(Status.CLIENT_ERROR_UNSUPPORTED_MEDIA_TYPE, resourceException.getStatus());
+ }
+ }
+}
diff --git a/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AnnotatedResource16TestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AnnotatedResource16TestCase.java
new file mode 100644
index 0000000000..84c7bc8d47
--- /dev/null
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AnnotatedResource16TestCase.java
@@ -0,0 +1,41 @@
+/**
+ * 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.resource;
+
+import org.junit.jupiter.api.Test;
+import org.restlet.data.MediaType;
+import org.restlet.representation.ObjectRepresentation;
+import org.restlet.representation.Representation;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
+/**
+ * Test the annotated resources, client and server sides.
+ *
+ * @author Jerome Louvel
+ */
+public class AnnotatedResource16TestCase extends AbstractAnnotatedResourceWithFinderTestCase {
+
+ @Override
+ void configureFinder(Finder finder) {
+ finder.setTargetClass(MyServerResource16.class);
+ }
+
+ @Test
+ public void testQuery() {
+ final MyBean myBean = new MyBean("test", "description");
+ final Representation rep = clientResource.post(new ObjectRepresentation<>(myBean),
+ MediaType.APPLICATION_JAVA_OBJECT);
+
+ assertNotNull(rep);
+ assertEquals(MediaType.APPLICATION_JAVA_OBJECT, rep.getMediaType());
+ }
+}
diff --git a/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AnnotatedResource17TestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AnnotatedResource17TestCase.java
new file mode 100644
index 0000000000..446d7d71c6
--- /dev/null
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AnnotatedResource17TestCase.java
@@ -0,0 +1,45 @@
+/**
+ * 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.resource;
+
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+import org.restlet.data.MediaType;
+import org.restlet.representation.ObjectRepresentation;
+import org.restlet.representation.Representation;
+
+import java.io.IOException;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
+/**
+ * Test the annotated resources, client and server sides.
+ *
+ * @author Jerome Louvel
+ */
+public class AnnotatedResource17TestCase extends AbstractAnnotatedResourceWithFinderTestCase {
+
+ @Override
+ void configureFinder(Finder finder) {
+ finder.setTargetClass(MyServerResource17.class);
+ }
+
+ @Test
+ public void testQuery() throws IOException, ClassNotFoundException {
+ MyBean myBean = new MyBean("test", "description");
+ Representation rep = clientResource.post(new ObjectRepresentation<>(myBean), MediaType.APPLICATION_JAVA_OBJECT);
+ assertNotNull(rep);
+ assertEquals(MediaType.APPLICATION_JAVA_OBJECT, rep.getMediaType());
+ ObjectRepresentation jr = new ObjectRepresentation<>(rep, MyBean.class.getClassLoader());
+ assertNotNull(jr.getObject());
+ Assertions.assertEquals("test", jr.getObject().getName());
+ }
+}
diff --git a/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AnnotatedResource18TestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AnnotatedResource18TestCase.java
new file mode 100644
index 0000000000..cc71fef0bc
--- /dev/null
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AnnotatedResource18TestCase.java
@@ -0,0 +1,45 @@
+/**
+ * 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.resource;
+
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+import org.restlet.data.MediaType;
+import org.restlet.representation.ObjectRepresentation;
+import org.restlet.representation.Representation;
+
+import java.io.IOException;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
+/**
+ * Test the annotated resources, client and server sides.
+ *
+ * @author Jerome Louvel
+ */
+public class AnnotatedResource18TestCase extends AbstractAnnotatedResourceWithFinderTestCase {
+
+ @Override
+ void configureFinder(Finder finder) {
+ finder.setTargetClass(MyServerResource18.class);
+ }
+
+ @Test
+ public void testQuery() throws IOException, ClassNotFoundException {
+ MyBean myBean = new MyBean("test", "description");
+ Representation rep = clientResource.post(new ObjectRepresentation<>(myBean), MediaType.APPLICATION_JAVA_OBJECT);
+ assertNotNull(rep);
+ assertEquals(MediaType.APPLICATION_JAVA_OBJECT, rep.getMediaType());
+ ObjectRepresentation jr = new ObjectRepresentation<>(rep, MyBean.class.getClassLoader());
+ assertNotNull(jr.getObject());
+ Assertions.assertEquals("test", jr.getObject().getName());
+ }
+}
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource20TestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AnnotatedResource20TestCase.java
similarity index 63%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource20TestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AnnotatedResource20TestCase.java
index 4b36e17c76..8deadb7ed4 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource20TestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/AnnotatedResource20TestCase.java
@@ -7,60 +7,38 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.resource;
+package org.restlet.resource;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.fail;
-
-import java.io.IOException;
-
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.restlet.Application;
import org.restlet.data.MediaType;
-import org.restlet.engine.Engine;
-import org.restlet.ext.jackson.JacksonConverter;
-import org.restlet.resource.ClientResource;
-import org.restlet.resource.ResourceException;
-import org.restlet.test.RestletTestCase;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.fail;
/**
* Test the annotated resources, client and server sides.
*
* @author Jerome Louvel
*/
-public class AnnotatedResource20TestCase extends RestletTestCase {
-
- private ClientResource clientResource;
+public class AnnotatedResource20TestCase extends AbstractAnnotatedResourceTestCase {
private MyResource20 myResource;
- @BeforeEach
- protected void setUpEach() throws Exception {
- Engine.getInstance().getRegisteredConverters().clear();
- Engine.getInstance().getRegisteredConverters().add(new JacksonConverter());
- Engine.getInstance().registerDefaultConverters();
-
+ @Override
+ void configureClientResource(ClientResource clientResource) {
// Hosts resources into an Application because we need some services for
// handling content negotiation, conversion of exceptions, etc.
Application application = new Application();
application.setInboundRoot(MyServerResource20.class);
- this.clientResource = new ClientResource("http://local");
this.clientResource.accept(MediaType.APPLICATION_JSON);
this.clientResource.setNext(application);
this.myResource = clientResource.wrap(MyResource20.class);
}
- @AfterEach
- protected void tearDownEach() throws Exception {
- clientResource = null;
- myResource = null;
- }
-
@Test
- public void testGet() throws IOException {
+ public void testGet() {
try {
myResource.represent();
fail("Exception should be thrown");
@@ -72,7 +50,7 @@ public void testGet() throws IOException {
}
@Test
- public void testGetAndSerializeException() throws IOException {
+ public void testGetAndSerializeException() {
try {
myResource.representAndSerializeException();
fail("Exception should be thrown");
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/DirectoryTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/DirectoryTestCase.java
similarity index 95%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/DirectoryTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/resource/DirectoryTestCase.java
index 8101e30ff9..d553cfc4c2 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/DirectoryTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/DirectoryTestCase.java
@@ -7,63 +7,44 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.resource;
-
-import static java.io.File.createTempFile;
-import static java.lang.System.getProperty;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.restlet.data.Language.FRENCH;
-import static org.restlet.data.Language.SPANISH;
-import static org.restlet.data.LocalReference.createFileReference;
-import static org.restlet.data.Method.DELETE;
-import static org.restlet.data.Method.GET;
-import static org.restlet.data.Method.HEAD;
-import static org.restlet.data.Method.PUT;
-import static org.restlet.data.Protocol.FILE;
-import static org.restlet.data.Status.CLIENT_ERROR_BAD_REQUEST;
-import static org.restlet.data.Status.CLIENT_ERROR_FORBIDDEN;
-import static org.restlet.data.Status.CLIENT_ERROR_METHOD_NOT_ALLOWED;
-import static org.restlet.data.Status.CLIENT_ERROR_NOT_FOUND;
-import static org.restlet.data.Status.REDIRECTION_SEE_OTHER;
-import static org.restlet.data.Status.SUCCESS_CREATED;
-import static org.restlet.data.Status.SUCCESS_NO_CONTENT;
-import static org.restlet.data.Status.SUCCESS_OK;
-
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.Files;
-import java.util.Date;
+package org.restlet.resource;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
-import org.restlet.Application;
-import org.restlet.Component;
-import org.restlet.Request;
-import org.restlet.Response;
-import org.restlet.Restlet;
-import org.restlet.data.Header;
-import org.restlet.data.Language;
-import org.restlet.data.Metadata;
-import org.restlet.data.Method;
-import org.restlet.data.Reference;
+import org.restlet.*;
import org.restlet.data.Status;
+import org.restlet.data.*;
import org.restlet.engine.Engine;
+import org.restlet.engine.connector.HttpClientHelper;
+import org.restlet.engine.connector.HttpServerHelper;
import org.restlet.engine.header.HeaderConstants;
import org.restlet.engine.io.IoUtils;
+import org.restlet.engine.local.FileClientHelper;
import org.restlet.engine.util.ReferenceUtils;
import org.restlet.representation.StringRepresentation;
-import org.restlet.resource.Directory;
-import org.restlet.test.RestletTestCase;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+
+import static java.io.File.createTempFile;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.restlet.data.Language.FRENCH;
+import static org.restlet.data.Language.SPANISH;
+import static org.restlet.data.LocalReference.createFileReference;
+import static org.restlet.data.Method.*;
+import static org.restlet.data.Protocol.FILE;
+import static org.restlet.data.Status.*;
/**
* Unit tests for the Directory class.
*
* @author Thierry Boileau
*/
-public class DirectoryTestCase extends RestletTestCase {
+public class DirectoryTestCase {
String webSiteURL = "http://myapplication/";
@@ -99,13 +80,16 @@ public class DirectoryTestCase extends RestletTestCase {
public static void setUp() throws Exception {
Engine.getInstance().getRegisteredConverters().clear();
Engine.getInstance().registerDefaultConverters();
+ Engine.getInstance().getRegisteredClients().add(new HttpClientHelper(null));
+ Engine.getInstance().getRegisteredClients().add(new FileClientHelper(null));
+ Engine.getInstance().getRegisteredServers().add(new HttpServerHelper(null));
// Create a new Restlet component
clientComponent = new Component();
clientComponent.getClients().add(FILE);
// Create a temporary directory for the tests
- File testDir = new File(getProperty("java.io.tmpdir"), "DirectoryTestCase/tests1" + new Date().getTime());
+ File testDir = Files.createTempDirectory("directoryTestCase").toFile();
// Create an application
application = new MyApplication(testDir);
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/GenericAnnotatedServerResource.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/GenericAnnotatedServerResource.java
similarity index 71%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/GenericAnnotatedServerResource.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/resource/GenericAnnotatedServerResource.java
index 34fd3710e8..697ab7f5af 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/GenericAnnotatedServerResource.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/GenericAnnotatedServerResource.java
@@ -7,10 +7,9 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.resource;
+package org.restlet.resource;
-public class GenericAnnotatedServerResource extends
- AbstractGenericAnnotatedServerResource {
+public class GenericAnnotatedServerResource extends AbstractGenericAnnotatedServerResource {
public E addResponse(E representation) {
return representation;
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/GenericServerResource16.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/GenericServerResource16.java
similarity index 73%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/GenericServerResource16.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/resource/GenericServerResource16.java
index abcef4b72f..8a63c66199 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/GenericServerResource16.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/GenericServerResource16.java
@@ -7,10 +7,9 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.resource;
+package org.restlet.resource;
-public class GenericServerResource16 extends
- AbstractGenericAnnotatedServerResource {
+public class GenericServerResource16 extends AbstractGenericAnnotatedServerResource {
@Override
public E addResponse(E representation) {
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/GenericServerResource17.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/GenericServerResource17.java
similarity index 76%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/GenericServerResource17.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/resource/GenericServerResource17.java
index d50c715771..daca53d726 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/GenericServerResource17.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/GenericServerResource17.java
@@ -7,12 +7,9 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.resource;
+package org.restlet.resource;
-import org.restlet.resource.ServerResource;
-
-public class GenericServerResource17 extends ServerResource implements
- MyResource17 {
+public class GenericServerResource17 extends ServerResource implements MyResource17 {
public E add(E rep) {
return rep;
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyBean.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyBean.java
similarity index 89%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyBean.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyBean.java
index 7983d05686..37f0d481ed 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyBean.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyBean.java
@@ -7,7 +7,7 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.resource;
+package org.restlet.resource;
import java.io.Serializable;
@@ -50,11 +50,8 @@ public boolean equals(Object obj) {
} else if (!description.equals(other.description))
return false;
if (name == null) {
- if (other.name != null)
- return false;
- } else if (!name.equals(other.name))
- return false;
- return true;
+ return other.name == null;
+ } else return name.equals(other.name);
}
public String getDescription() {
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyException01.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyException01.java
similarity index 95%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyException01.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyException01.java
index 9c66e0f8c9..f9e79d5749 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyException01.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyException01.java
@@ -7,7 +7,7 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.resource;
+package org.restlet.resource;
import java.util.Date;
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyException02.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyException02.java
similarity index 96%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyException02.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyException02.java
index b78635c458..8b431b9b3b 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyException02.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyException02.java
@@ -7,7 +7,7 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.resource;
+package org.restlet.resource;
import org.restlet.resource.Status;
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource01.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyResource01.java
similarity index 73%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource01.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyResource01.java
index 77fb73e84b..6f1a74a078 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource01.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyResource01.java
@@ -7,13 +7,7 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.resource;
-
-import org.restlet.resource.Delete;
-import org.restlet.resource.Get;
-import org.restlet.resource.Options;
-import org.restlet.resource.Post;
-import org.restlet.resource.Put;
+package org.restlet.resource;
/**
* Sample annotated interface.
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource02.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyResource02.java
similarity index 95%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource02.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyResource02.java
index fb39cf1a1c..edeef7f103 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource02.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyResource02.java
@@ -7,7 +7,7 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.resource;
+package org.restlet.resource;
import org.restlet.data.MediaType;
import org.restlet.representation.Representation;
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource03.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyResource03.java
similarity index 89%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource03.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyResource03.java
index c56e968e2b..f62e953694 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource03.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyResource03.java
@@ -7,10 +7,7 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.resource;
-
-import org.restlet.resource.ResourceException;
-import org.restlet.resource.ServerResource;
+package org.restlet.resource;
/**
* Sample server resource that sets the "existing" flag to false.
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource04.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyResource04.java
similarity index 94%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource04.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyResource04.java
index 220daa3026..cadd4de7ec 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource04.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyResource04.java
@@ -7,7 +7,7 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.resource;
+package org.restlet.resource;
import org.restlet.resource.Get;
import org.restlet.resource.ServerResource;
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource05.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyResource05.java
similarity index 94%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource05.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyResource05.java
index dea67c2fc6..d87341832b 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource05.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyResource05.java
@@ -7,7 +7,7 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.resource;
+package org.restlet.resource;
import org.restlet.resource.Post;
import org.restlet.resource.ServerResource;
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource06.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyResource06.java
similarity index 95%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource06.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyResource06.java
index fd32b4b432..c777fc8f79 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource06.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyResource06.java
@@ -7,7 +7,7 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.resource;
+package org.restlet.resource;
import java.io.IOException;
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource07.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyResource07.java
similarity index 94%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource07.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyResource07.java
index 47d4e6d4b9..c927c7114b 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource07.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyResource07.java
@@ -7,7 +7,7 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.resource;
+package org.restlet.resource;
import org.restlet.resource.Post;
import org.restlet.resource.ServerResource;
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource08.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyResource08.java
similarity index 94%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource08.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyResource08.java
index ec6e2b7272..350d0d729d 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource08.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyResource08.java
@@ -7,7 +7,7 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.resource;
+package org.restlet.resource;
import org.restlet.resource.Post;
import org.restlet.resource.ServerResource;
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource12.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyResource12.java
similarity index 93%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource12.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyResource12.java
index 2bd950bc89..8d8574a1b4 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource12.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyResource12.java
@@ -7,7 +7,7 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.resource;
+package org.restlet.resource;
import org.restlet.data.Form;
import org.restlet.resource.Get;
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource17.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyResource17.java
similarity index 91%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource17.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyResource17.java
index b31a05c019..85381289bb 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource17.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyResource17.java
@@ -7,7 +7,7 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.resource;
+package org.restlet.resource;
import org.restlet.resource.Post;
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource20.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyResource20.java
similarity index 83%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource20.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyResource20.java
index 3e690b2b1a..7284564db4 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource20.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyResource20.java
@@ -7,10 +7,7 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.resource;
-
-import org.restlet.resource.Get;
-import org.restlet.resource.Put;
+package org.restlet.resource;
/**
* Sample annotated interface.
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyServerResource01.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyServerResource01.java
similarity index 72%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyServerResource01.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyServerResource01.java
index 13c3f858f4..031b099644 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyServerResource01.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyServerResource01.java
@@ -7,11 +7,7 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.resource;
-
-import org.restlet.Server;
-import org.restlet.data.Protocol;
-import org.restlet.resource.ServerResource;
+package org.restlet.resource;
/**
* Sample server resource.
@@ -20,12 +16,6 @@
*/
public class MyServerResource01 extends ServerResource implements MyResource01 {
- public static void main(String[] args) throws Exception {
- Server server = new Server(Protocol.HTTP, 8111);
- server.setNext(MyServerResource01.class);
- server.start();
- }
-
private volatile MyBean myBean = new MyBean("myName", "myDescription");
public boolean accept(MyBean bean) {
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyServerResource12.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyServerResource12.java
similarity index 88%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyServerResource12.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyServerResource12.java
index 7b1d55d7db..84e17714e9 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyServerResource12.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyServerResource12.java
@@ -7,10 +7,9 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.resource;
+package org.restlet.resource;
import org.restlet.data.Form;
-import org.restlet.resource.ServerResource;
/**
* Sample server resource.
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyServerResource15.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyServerResource15.java
similarity index 78%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyServerResource15.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyServerResource15.java
index 4e9b26d24f..236fbad80a 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyServerResource15.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyServerResource15.java
@@ -7,15 +7,14 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.resource;
+package org.restlet.resource;
/**
* Sample server resource implementing abstract generic class.
*
* @author Jerome Louvel
*/
-public class MyServerResource15 extends
- AbstractGenericAnnotatedServerResource {
+public class MyServerResource15 extends AbstractGenericAnnotatedServerResource {
@Override
public MyBean addResponse(MyBean representation) {
diff --git a/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyServerResource15Ok.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyServerResource15Ok.java
new file mode 100644
index 0000000000..e12a1ad20b
--- /dev/null
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyServerResource15Ok.java
@@ -0,0 +1,23 @@
+/**
+ * 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.resource;
+
+/**
+ * Sample server resource implementing abstract generic class.
+ *
+ * @author Thierry Boileau
+ */
+public class MyServerResource15Ok extends AbstractGenericAnnotatedServerResource {
+
+ @Post
+ public MyBean addResponse(MyBean representation) {
+ return representation;
+ }
+}
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyServerResource16.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyServerResource16.java
similarity index 92%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyServerResource16.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyServerResource16.java
index 85d7f730ea..ab2119dd8b 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyServerResource16.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyServerResource16.java
@@ -7,7 +7,7 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.resource;
+package org.restlet.resource;
/**
* Sample server resource implementing generic class.
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyServerResource17.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyServerResource17.java
similarity index 92%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyServerResource17.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyServerResource17.java
index f41c7e3eba..30972d9504 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyServerResource17.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyServerResource17.java
@@ -7,7 +7,7 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.resource;
+package org.restlet.resource;
/**
* Sample server resource implementing generic class.
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyServerResource18.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyServerResource18.java
similarity index 92%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyServerResource18.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyServerResource18.java
index 2ea0d31a8b..7ccb1286b0 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyServerResource18.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyServerResource18.java
@@ -7,7 +7,7 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.resource;
+package org.restlet.resource;
/**
* Sample server resource implementing generic class.
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyServerResource20.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyServerResource20.java
similarity index 92%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyServerResource20.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyServerResource20.java
index 927ee46a7e..4bc9c92df3 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyServerResource20.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/resource/MyServerResource20.java
@@ -7,13 +7,12 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.resource;
+package org.restlet.resource;
import java.util.Date;
import org.restlet.Server;
import org.restlet.data.Protocol;
-import org.restlet.resource.ServerResource;
/**
* Sample server resource.
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/AbstractFilterTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/routing/AbstractFilterTestCase.java
similarity index 90%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/AbstractFilterTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/routing/AbstractFilterTestCase.java
index be7e17347e..1f89fa5462 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/AbstractFilterTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/routing/AbstractFilterTestCase.java
@@ -7,24 +7,21 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test;
-
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.fail;
+package org.restlet.routing;
import org.junit.jupiter.api.Test;
import org.restlet.Request;
import org.restlet.Response;
import org.restlet.Restlet;
-import org.restlet.routing.Filter;
+
+import static org.junit.jupiter.api.Assertions.*;
/**
* Tests where every Filter should run through.
*
* @author Lars Heuer
*/
-public abstract class AbstractFilterTestCase extends RestletTestCase {
+public abstract class AbstractFilterTestCase {
/**
* Returns a Filter to be used for the tests.
*
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/routing/FilterTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/routing/FilterTestCase.java
similarity index 83%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/routing/FilterTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/routing/FilterTestCase.java
index bd6f3eb30b..da93437754 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/routing/FilterTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/routing/FilterTestCase.java
@@ -7,15 +7,11 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.routing;
+package org.restlet.routing;
import org.restlet.Request;
import org.restlet.Response;
import org.restlet.Restlet;
-import org.restlet.routing.Filter;
-import org.restlet.test.AbstractFilterTestCase;
-import org.restlet.test.MockFilter;
-import org.restlet.test.MockRestlet;
/**
* Test {@link org.restlet.routing.Filter}.
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/MockFilter.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/routing/MockFilter.java
similarity index 95%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/MockFilter.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/routing/MockFilter.java
index a24fd0ec85..45181dad08 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/MockFilter.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/routing/MockFilter.java
@@ -7,12 +7,11 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test;
+package org.restlet.routing;
import org.restlet.Context;
import org.restlet.Request;
import org.restlet.Response;
-import org.restlet.routing.Filter;
/**
* Thin layer around an AbstractFilter. Takes care about being started and
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/MockRestlet.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/routing/MockRestlet.java
similarity index 97%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/MockRestlet.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/routing/MockRestlet.java
index b3fd890ea9..48556f7917 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/MockRestlet.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/routing/MockRestlet.java
@@ -7,7 +7,7 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test;
+package org.restlet.routing;
import org.restlet.Context;
import org.restlet.Request;
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/routing/RedirectTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/routing/RedirectTestCase.java
similarity index 93%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/routing/RedirectTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/routing/RedirectTestCase.java
index c5210eca7d..4222d30e2c 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/routing/RedirectTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/routing/RedirectTestCase.java
@@ -7,29 +7,26 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.routing;
-
-import static org.junit.jupiter.api.Assertions.assertNotNull;
+package org.restlet.routing;
import org.junit.jupiter.api.Test;
-import org.restlet.Component;
-import org.restlet.Context;
-import org.restlet.Request;
-import org.restlet.Response;
-import org.restlet.Restlet;
+import org.restlet.*;
import org.restlet.data.MediaType;
import org.restlet.data.Method;
import org.restlet.data.Protocol;
import org.restlet.representation.StringRepresentation;
import org.restlet.routing.Redirector;
-import org.restlet.test.RestletTestCase;
+
+import static org.junit.jupiter.api.Assertions.assertNotNull;
/**
* Unit tests for the RedirectRestlet.
*
* @author Jerome Louvel
*/
-public class RedirectTestCase extends RestletTestCase {
+public class RedirectTestCase {
+
+ private static final int TEST_PORT = 1337;
private void testCall(Context context, Method method, String uri)
throws Exception {
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/routing/RouteListTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/routing/RouteListTestCase.java
similarity index 86%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/routing/RouteListTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/routing/RouteListTestCase.java
index 47119f213f..10514bf6ef 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/routing/RouteListTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/routing/RouteListTestCase.java
@@ -7,26 +7,21 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.routing;
-
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertSame;
-import static org.junit.jupiter.api.Assertions.assertTrue;
+package org.restlet.routing;
import org.junit.jupiter.api.Test;
import org.restlet.Request;
import org.restlet.Response;
-import org.restlet.routing.Route;
-import org.restlet.test.RestletTestCase;
import org.restlet.util.RouteList;
+import static org.junit.jupiter.api.Assertions.*;
+
/**
* Test case for RouteList class.
*
* @author Kevin Conaway
*/
-public class RouteListTestCase extends RestletTestCase {
+public class RouteListTestCase {
static class MockScoringRoute extends Route {
int score;
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/util/TemplateTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/routing/TemplateTestCase.java
similarity index 77%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/util/TemplateTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/routing/TemplateTestCase.java
index 966f037fd2..c2fc229fb9 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/util/TemplateTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/routing/TemplateTestCase.java
@@ -7,27 +7,24 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.util;
+package org.restlet.routing;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.testng.AssertJUnit.assertTrue;
+import org.junit.jupiter.api.Test;
+import org.restlet.engine.Engine;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import org.junit.jupiter.api.Test;
-import org.restlet.engine.Engine;
-import org.restlet.routing.Template;
-import org.restlet.routing.Variable;
-import org.restlet.test.RestletTestCase;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
/**
* Test case for URI templates.
*
* @author Jerome Louvel
*/
-public class TemplateTestCase extends RestletTestCase {
+public class TemplateTestCase {
@Test
public void testEncodedCharacters() {
@@ -39,8 +36,7 @@ public void testEncodedCharacters() {
Map variables1 = new HashMap<>();
int parsed1 = template.parse(targetUri, variables1);
- assertTrue("parsing of " + targetUri
- + " not successful, but it should be.", parsed1 >= 0);
+ assertTrue(parsed1 >= 0);
assertEquals(encodedToken, variables1.get("token"));
}
@@ -53,22 +49,19 @@ public void testPathMatching() {
Map variables1 = new HashMap<>();
String string1 = "http://www.mydomain.com/abc/123/456";
int parsed1 = template.parse(string1, variables1);
- assertTrue("parsing of " + string1
- + " not successful, but it should be.", parsed1 >= 0);
+ assertTrue(parsed1 >= 0);
assertEquals("123/456", variables1.get("v1"));
Map variables2 = new HashMap<>();
String string2 = "http://www.mydomain.com/abc/123/456?s=tuv";
int parsed2 = template.parse(string2, variables2);
- assertTrue("parsing of " + string2
- + " not successful, but it should be.", parsed2 >= 0);
+ assertTrue(parsed2 >= 0);
assertEquals("123/456", variables2.get("v1"));
Map variables3 = new HashMap<>();
String string3 = "http://www.mydomain.com/abc/123/456#tuv";
int parsed3 = template.parse(string3, variables3);
- assertTrue("parsing of " + string3
- + " not successful, but it should be.", parsed3 >= 0);
+ assertTrue(parsed3 >= 0);
assertEquals("123/456", variables3.get("v1"));
}
@@ -91,15 +84,13 @@ public void testWithPercentChars() {
Map variables1 = new HashMap<>();
String string1 = "abc/hff11kh";
int parsed1 = template.parse(string1, variables1);
- assertTrue("parsing of " + string1
- + " not successful, but it should be.", parsed1 >= 0);
+ assertTrue(parsed1 >= 0);
assertEquals("hff11kh", variables1.get("v1"));
Map variables2 = new HashMap<>();
String string2 = "abc/hf%20kh";
int parsed2 = template.parse(string2, variables2);
- assertTrue("parsing of " + string2
- + " not successful, but it should be.", parsed2 >= 0);
+ assertTrue(parsed2 >= 0);
assertEquals("hf%20kh", variables2.get("v1"));
}
}
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/TraceRestlet.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/routing/TraceRestlet.java
similarity index 97%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/TraceRestlet.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/routing/TraceRestlet.java
index 605f5342f1..ef380da58f 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/TraceRestlet.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/routing/TraceRestlet.java
@@ -7,7 +7,7 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test;
+package org.restlet.routing;
import org.restlet.Context;
import org.restlet.Request;
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/routing/ValidatorTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/routing/ValidatorTestCase.java
similarity index 91%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/routing/ValidatorTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/routing/ValidatorTestCase.java
index 7419b82f17..dc26ee3bb2 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/routing/ValidatorTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/routing/ValidatorTestCase.java
@@ -7,24 +7,21 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.routing;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
+package org.restlet.routing;
import org.junit.jupiter.api.Test;
import org.restlet.Request;
import org.restlet.Response;
import org.restlet.data.Status;
-import org.restlet.routing.Validator;
-import org.restlet.test.RestletTestCase;
-import org.restlet.test.TraceRestlet;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
/**
* Test {@link org.restlet.routing.Validator}.
*
* @author Jerome Louvel
*/
-public class ValidatorTestCase extends RestletTestCase {
+public class ValidatorTestCase {
@Test
public void testRequired() {
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/component/HelloWorldRestlet.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/security/HelloWorldRestlet.java
similarity index 94%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/component/HelloWorldRestlet.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/security/HelloWorldRestlet.java
index efdb1451d5..eb18476f7d 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/component/HelloWorldRestlet.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/security/HelloWorldRestlet.java
@@ -7,7 +7,7 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.component;
+package org.restlet.security;
import org.restlet.Request;
import org.restlet.Response;
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/security/HttpBasicTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/security/HttpBasicTestCase.java
similarity index 88%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/security/HttpBasicTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/security/HttpBasicTestCase.java
index 563b03c8b3..6d886907c4 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/security/HttpBasicTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/security/HttpBasicTestCase.java
@@ -7,41 +7,25 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.security;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-import java.util.Arrays;
+package org.restlet.security;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import org.restlet.Application;
-import org.restlet.Client;
-import org.restlet.Component;
-import org.restlet.Request;
-import org.restlet.Response;
-import org.restlet.Restlet;
-import org.restlet.data.ChallengeResponse;
-import org.restlet.data.ChallengeScheme;
-import org.restlet.data.MediaType;
-import org.restlet.data.Method;
-import org.restlet.data.Protocol;
-import org.restlet.data.Status;
-import org.restlet.security.ChallengeAuthenticator;
-import org.restlet.security.MapVerifier;
-import org.restlet.security.Verifier;
-import org.restlet.test.RestletTestCase;
+import org.restlet.*;
+import org.restlet.data.*;
+
+import java.util.Arrays;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
/**
- * Restlet unit tests for HTTP Basic authentication client/server. By default,
- * runs server on localhost on port {@value RestletTestCase#DEFAULT_TEST_PORT}, which can be
- * overridden by setting system property {@value RestletTestCase#PROPERTY_TEST_PORT}
+ * Restlet unit tests for HTTP Basic authentication client/server.
*
* @author Stian Soiland
* @author Jerome Louvel
*/
-public class HttpBasicTestCase extends RestletTestCase {
+public class HttpBasicTestCase {
public static class AuthenticatedRestlet extends Restlet {
@Override
@@ -58,15 +42,14 @@ public TestVerifier() {
@Override
public int verify(String identifier, char[] inputSecret) {
- // NOTE: Allocating Strings are not really secure treatment of
- // passwords
+ // NOTE: Allocating Strings are not really secure treatment of passwords
String almostSecret = new String(inputSecret);
try {
return super.verify(identifier, inputSecret);
} finally {
// Clear secret from memory as soon as possible (This is better
- // treatment, but of course useless due to our almostSecret
+ // treatment, but useless due to our almostSecret
// copy)
Arrays.fill(inputSecret, '\000');
}
@@ -243,10 +226,8 @@ public void HttpBasicWrongUser() throws Exception {
@BeforeEach
public void makeServer() throws Exception {
- int port = TEST_PORT;
this.component = new Component();
- this.component.getServers().add(Protocol.HTTP, port);
- this.uri = "http://localhost:" + port + "/";
+ final Server server = this.component.getServers().add(Protocol.HTTP, 0);
final Application application = new Application() {
@Override
@@ -265,6 +246,7 @@ public Restlet createInboundRoot() {
this.component.getDefaultHost().attach(application);
this.component.start();
+ this.uri = "http://localhost:" + server.getActualPort() + "/";
}
@AfterEach
diff --git a/org.restlet.java/org.restlet/src/test/java/org/restlet/security/MemoryRealmTest.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/security/MemoryRealmTest.java
index 78ed44e663..7800d34e49 100644
--- a/org.restlet.java/org.restlet/src/test/java/org/restlet/security/MemoryRealmTest.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/security/MemoryRealmTest.java
@@ -24,15 +24,15 @@
package org.restlet.security;
+import org.junit.jupiter.api.Test;
+
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
-import org.junit.jupiter.api.Test;
-
public class MemoryRealmTest {
@Test
- public void whenUmappingAGroupAndRoleFromAMemoryRealmThenMappingIsDropped() {
+ public void whenUnmappingAGroupAndRoleFromAMemoryRealmThenMappingIsDropped() {
// given a Memory Realm, a Group and a Role
MemoryRealm memoryRealm = new MemoryRealm();
Group group = new Group();
@@ -51,7 +51,7 @@ public void whenUmappingAGroupAndRoleFromAMemoryRealmThenMappingIsDropped() {
}
@Test
- public void whenUmappingAUserAndRoleFromAMemoryRealmThenMappingIsDropped() {
+ public void whenUnmappingAUserAndRoleFromAMemoryRealmThenMappingIsDropped() {
// given a Memory Realm, a Group and a Role
MemoryRealm memoryRealm = new MemoryRealm();
User user = new User();
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/security/RoleTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/security/RoleTestCase.java
similarity index 91%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/security/RoleTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/security/RoleTestCase.java
index d4ddb52808..222f72ca41 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/security/RoleTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/security/RoleTestCase.java
@@ -7,15 +7,13 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.security;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotEquals;
+package org.restlet.security;
import org.junit.jupiter.api.Test;
import org.restlet.Application;
-import org.restlet.security.Role;
-import org.restlet.test.RestletTestCase;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
/**
* Suite of unit tests for the {@link Role} class.
@@ -23,7 +21,7 @@
* @author Thierry Boileau
* @author Jerome Louvel
*/
-public class RoleTestCase extends RestletTestCase {
+public class RoleTestCase {
@Test
public void testRoleEquality() {
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/security/SaasApplication.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/security/SaasApplication.java
similarity index 88%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/security/SaasApplication.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/security/SaasApplication.java
index 4323037344..94468f2440 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/security/SaasApplication.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/security/SaasApplication.java
@@ -7,18 +7,14 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.security;
+package org.restlet.security;
import org.restlet.Application;
import org.restlet.Context;
import org.restlet.Restlet;
import org.restlet.data.ChallengeScheme;
import org.restlet.routing.Router;
-import org.restlet.security.Authorizer;
-import org.restlet.security.ChallengeAuthenticator;
-import org.restlet.security.Role;
-import org.restlet.security.RoleAuthorizer;
-import org.restlet.test.component.HelloWorldRestlet;
+import org.restlet.security.*;
/**
* Sample SAAS application with a Basic authenticator guarding a hello world
@@ -28,10 +24,6 @@
*/
public class SaasApplication extends Application {
- public SaasApplication() {
- this(null);
- }
-
public SaasApplication(Context context) {
super(context);
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/security/SaasComponent.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/security/SaasComponent.java
similarity index 87%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/security/SaasComponent.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/security/SaasComponent.java
index c11bbc6693..53ab1b98f2 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/security/SaasComponent.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/security/SaasComponent.java
@@ -7,15 +7,12 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.security;
+package org.restlet.security;
import org.restlet.Component;
import org.restlet.Context;
+import org.restlet.Server;
import org.restlet.data.Protocol;
-import org.restlet.security.Group;
-import org.restlet.security.MemoryRealm;
-import org.restlet.security.User;
-import org.restlet.test.RestletTestCase;
/**
* Sample SAAS component with declared organizations.
@@ -24,6 +21,10 @@
*/
public class SaasComponent extends Component {
+ private final Server server;
+
+ public int testPort;
+
public SaasComponent() {
Context context = getContext().createChildContext();
SaasApplication app = new SaasApplication(context);
@@ -68,6 +69,12 @@ public SaasComponent() {
realm.map(managers, app.getRole("admin"));
getDefaultHost().attach(app);
- getServers().add(Protocol.HTTP, RestletTestCase.TEST_PORT);
+ server = getServers().add(Protocol.HTTP, 0);
+ }
+
+ @Override
+ public synchronized void start() throws Exception {
+ super.start();
+ testPort = server.getActualPort();
}
}
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/security/SecurityTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/security/SecurityTestCase.java
similarity index 82%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/security/SecurityTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/security/SecurityTestCase.java
index 763be6db6a..21baf2661f 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/security/SecurityTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/security/SecurityTestCase.java
@@ -7,44 +7,46 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.security;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
+package org.restlet.security;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.restlet.Component;
import org.restlet.data.ChallengeResponse;
-import org.restlet.data.ChallengeScheme;
import org.restlet.data.Status;
+import org.restlet.engine.Engine;
import org.restlet.resource.ClientResource;
import org.restlet.resource.ResourceException;
-import org.restlet.test.RestletTestCase;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.restlet.data.ChallengeScheme.HTTP_BASIC;
/**
* Restlet unit tests for the security package.
*
* @author Jerome Louvel
*/
-public class SecurityTestCase extends RestletTestCase {
-
+public class SecurityTestCase {
- private final ChallengeResponse lambdaUserCR = new ChallengeResponse(
- ChallengeScheme.HTTP_BASIC, "stiger", "pwd");
- private final ChallengeResponse adminUserCR = new ChallengeResponse(
- ChallengeScheme.HTTP_BASIC, "larmstrong", "pwd");
+ private final ChallengeResponse lambdaUserCR = new ChallengeResponse(HTTP_BASIC, "stiger", "pwd");
+ private final ChallengeResponse adminUserCR = new ChallengeResponse(HTTP_BASIC, "larmstrong", "pwd");
- private Component component;
+ private SaasComponent component;
+ private int testPort;
@BeforeEach
public void startComponent() throws Exception {
+ Engine.register();
+ Engine.clearThreadLocalVariables();
this.component = new SaasComponent();
this.component.start();
+ testPort = component.testPort;
}
@AfterEach
public void stopServer() throws Exception {
+ Engine.clearThreadLocalVariables();
if (this.component.isStarted()) {
this.component.stop();
}
@@ -54,14 +56,14 @@ public void stopServer() throws Exception {
@Test
public void withoutAuthenticationHttpBasicAuthenticatorShouldReturnUnauthorizedResponse() {
- ClientResource resource = new ClientResource("http://localhost:" + TEST_PORT + "/httpBasicAuthenticator");
+ ClientResource resource = new ClientResource("http://localhost:" + testPort + "/httpBasicAuthenticator");
runClientResource(resource);
assertEquals(Status.CLIENT_ERROR_UNAUTHORIZED, resource.getStatus());
}
@Test
public void withAuthenticationHttpBasicAuthenticatorShouldReturnOkResponse() {
- ClientResource resource = new ClientResource("http://localhost:" + TEST_PORT + "/httpBasicAuthenticator");
+ ClientResource resource = new ClientResource("http://localhost:" + testPort + "/httpBasicAuthenticator");
resource.setChallengeResponse(lambdaUserCR);
runClientResource(resource);
assertEquals(Status.SUCCESS_OK, resource.getStatus());
@@ -69,21 +71,21 @@ public void withAuthenticationHttpBasicAuthenticatorShouldReturnOkResponse() {
@Test
public void withoutAuthenticationAlwaysAuthenticatorShouldReturnOkResponse() {
- ClientResource resource = new ClientResource("http://localhost:" + TEST_PORT + "/alwaysAuthenticator");
+ ClientResource resource = new ClientResource("http://localhost:" + testPort + "/alwaysAuthenticator");
runClientResource(resource);
assertEquals(Status.SUCCESS_OK, resource.getStatus());
}
@Test
public void withAuthenticationNeverAuthenticatorShouldReturnForbiddenResponse() {
- ClientResource resource = new ClientResource("http://localhost:" + TEST_PORT + "/neverAuthenticator");
+ ClientResource resource = new ClientResource("http://localhost:" + testPort + "/neverAuthenticator");
runClientResource(resource);
assertEquals(Status.CLIENT_ERROR_FORBIDDEN, resource.getStatus());
}
@Test
public void withLambdaUserAuthenticationAdminRoleAuthorizerAuthenticatorShouldReturnForbiddenResponse() {
- ClientResource resource = new ClientResource("http://localhost:" + TEST_PORT + "/adminRoleAuthorizer");
+ ClientResource resource = new ClientResource("http://localhost:" + testPort + "/adminRoleAuthorizer");
resource.setChallengeResponse(lambdaUserCR);
runClientResource(resource);
assertEquals(Status.CLIENT_ERROR_FORBIDDEN, resource.getStatus());
@@ -91,7 +93,7 @@ public void withLambdaUserAuthenticationAdminRoleAuthorizerAuthenticatorShouldRe
@Test
public void withAdminUserAuthenticationAdminRoleAuthorizerAuthenticatorShouldReturnOkResponse() {
- ClientResource resource = new ClientResource("http://localhost:" + TEST_PORT + "/adminRoleAuthorizer");
+ ClientResource resource = new ClientResource("http://localhost:" + testPort + "/adminRoleAuthorizer");
resource.setChallengeResponse(adminUserCR);
runClientResource(resource);
assertEquals(Status.SUCCESS_OK, resource.getStatus());
@@ -99,7 +101,7 @@ public void withAdminUserAuthenticationAdminRoleAuthorizerAuthenticatorShouldRet
@Test
public void withAdminUserAuthenticationAdminRoleForbiddenAuthorizerAuthenticatorShouldReturnForbiddenResponse() {
- ClientResource resource = new ClientResource("http://localhost:" + TEST_PORT + "/adminRoleForbiddenAuthorizer");
+ ClientResource resource = new ClientResource("http://localhost:" + testPort + "/adminRoleForbiddenAuthorizer");
resource.setChallengeResponse(adminUserCR);
runClientResource(resource);
assertEquals(Status.CLIENT_ERROR_FORBIDDEN, resource.getStatus());
@@ -107,7 +109,7 @@ public void withAdminUserAuthenticationAdminRoleForbiddenAuthorizerAuthenticator
@Test
public void withLambdaUserAuthenticationAdminRoleForbiddenAuthorizerAuthenticatorShouldReturnOkResponse() {
- ClientResource resource = new ClientResource("http://localhost:" + TEST_PORT + "/adminRoleForbiddenAuthorizer");
+ ClientResource resource = new ClientResource("http://localhost:" + testPort + "/adminRoleForbiddenAuthorizer");
resource.setChallengeResponse(lambdaUserCR);
runClientResource(resource);
assertEquals(Status.SUCCESS_OK, resource.getStatus());
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/package.html b/org.restlet.java/org.restlet/src/test/java/org/restlet/security/package.html
similarity index 100%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/package.html
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/security/package.html
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/service/ConnegServiceTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/service/ConnegServiceTestCase.java
similarity index 82%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/service/ConnegServiceTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/service/ConnegServiceTestCase.java
index ec1a0e0985..c5741f8048 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/service/ConnegServiceTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/service/ConnegServiceTestCase.java
@@ -7,30 +7,25 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.service;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-
-import java.util.ArrayList;
-import java.util.List;
+package org.restlet.service;
import org.junit.jupiter.api.Test;
import org.restlet.Request;
import org.restlet.data.MediaType;
import org.restlet.data.Preference;
import org.restlet.representation.Variant;
-import org.restlet.service.ConnegService;
-import org.restlet.service.MetadataService;
-import org.restlet.test.RestletTestCase;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.*;
/**
* Unit tests for the content negotiation service.
*
* @author Jerome Louvel
*/
-public class ConnegServiceTestCase extends RestletTestCase {
+public class ConnegServiceTestCase {
@Test
public void testStrict() {
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/service/MetadataServiceTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/service/MetadataServiceTestCase.java
similarity index 77%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/service/MetadataServiceTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/service/MetadataServiceTestCase.java
index 2d735aec36..8200975f35 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/service/MetadataServiceTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/service/MetadataServiceTestCase.java
@@ -7,21 +7,19 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.service;
-
-import static org.junit.jupiter.api.Assertions.assertNull;
+package org.restlet.service;
import org.junit.jupiter.api.Test;
import org.restlet.data.MediaType;
-import org.restlet.service.MetadataService;
-import org.restlet.test.RestletTestCase;
+
+import static org.junit.jupiter.api.Assertions.assertNull;
/**
* Unit tests for the metadata service.
*
* @author Jerome Louvel
*/
-public class MetadataServiceTestCase extends RestletTestCase {
+public class MetadataServiceTestCase {
@Test
public void testStrict() {
diff --git a/org.restlet.java/org.restlet/src/test/java/org/restlet/service/StatusServiceTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/service/StatusServiceTestCase.java
new file mode 100644
index 0000000000..96b79887d2
--- /dev/null
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/service/StatusServiceTestCase.java
@@ -0,0 +1,203 @@
+/**
+ * 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.service;
+
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.restlet.Application;
+import org.restlet.Request;
+import org.restlet.Response;
+import org.restlet.data.MediaType;
+import org.restlet.data.Status;
+import org.restlet.engine.Engine;
+import org.restlet.engine.application.StatusInfo;
+import org.restlet.representation.ObjectRepresentation;
+import org.restlet.representation.Representation;
+
+import java.io.IOException;
+import java.io.Serial;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+/**
+ * Unit tests for the status service.
+ *
+ * @author Jerome Louvel
+ */
+@SuppressWarnings("unchecked")
+public class StatusServiceTestCase {
+
+ StatusService statusService = new StatusService();
+
+ @BeforeEach
+ void setUp() {
+ // Restore a clean engine
+ Engine.clearThreadLocalVariables();
+ Engine.register(true);
+ ObjectRepresentation.VARIANT_OBJECT_BINARY_SUPPORTED = true;
+ Application.setCurrent(new Application());
+ }
+
+ @AfterEach
+ void cleanUp() {
+ ObjectRepresentation.VARIANT_OBJECT_BINARY_SUPPORTED = false;
+ }
+
+ @Test
+ public void shouldConvertToStatus() {
+ AnnotatedNotSerializableException statusException = new AnnotatedNotSerializableException("test message", 50);
+
+ Status status = statusService.toStatus(statusException, null, null);
+
+ assertEquals(400, status.getCode());
+ assertEquals(statusException, status.getThrowable());
+ }
+
+ @Test
+ public void exceptionShouldNotBeSerialized() throws IOException {
+ AnnotatedNotSerializableException statusException = new AnnotatedNotSerializableException("test message", 50);
+ Status status = new Status(400, statusException);
+
+ Representation representation = statusServiceToRepresentation(status);
+
+ // verify
+ assertEquals(MediaType.APPLICATION_JAVA_OBJECT, representation.getMediaType());
+
+ Status expectedStatus = Status.CLIENT_ERROR_BAD_REQUEST;
+
+ StatusInfo statusInfo = (StatusInfo) ((ObjectRepresentation>) representation).getObject();
+ assertEquals(expectedStatus.getCode(), statusInfo.getCode());
+ assertEquals(expectedStatus.getDescription(), statusInfo.getDescription());
+ assertEquals(expectedStatus.getReasonPhrase(), statusInfo.getReasonPhrase());
+ assertEquals(expectedStatus.getUri(), statusInfo.getUri());
+ }
+
+ @Test
+ public void shouldSerializeAnnotatedException() throws IOException {
+ Status status = new Status(400, AnnotatedSerializableException.withoutCause("test message", 50));
+
+ Representation representation = statusServiceToRepresentation(status);
+
+ assertEquals(MediaType.APPLICATION_JAVA_OBJECT, representation.getMediaType());
+ AnnotatedSerializableException throwable = ((ObjectRepresentation) representation).getObject();
+ assertEquals(50, throwable.value);
+ assertEquals("test message", throwable.getMessage());
+ assertNull(throwable.getCause());
+ }
+
+ @Test
+ public void shouldSerializeAnnotatedExceptionWithCause() throws IOException {
+ Status status = new Status(400, AnnotatedSerializableException.withCause("test message", 50));
+
+ Representation representation = statusServiceToRepresentation(status);
+
+ assertEquals(MediaType.APPLICATION_JAVA_OBJECT, representation.getMediaType());
+ AnnotatedSerializableException throwable = ((ObjectRepresentation) representation).getObject();
+ assertEquals(50, throwable.value);
+ assertEquals("test message", throwable.getMessage());
+ assertEquals(0, throwable.getStackTrace().length);
+ assertNotNull(throwable.getCause());
+ }
+
+ @Test
+ public void shouldSerializeAnnotatedExceptionWithStackTrace() throws IOException {
+ Status status = new Status(400, AnnotatedSerializableException.withCause("test message", 50));
+
+ Request request = new Request();
+ Response response = new Response(request);
+
+ Application application = new Application();
+ application.setDebugging(true);
+ Application.setCurrent(application);
+
+ Representation representation = statusService.toRepresentation(status, request, response);
+
+ assertEquals(MediaType.APPLICATION_JAVA_OBJECT, representation.getMediaType());
+ AnnotatedSerializableException throwable = ((ObjectRepresentation) representation).getObject();
+ assertEquals(50, throwable.value);
+ assertEquals("test message", throwable.getMessage());
+ assertEquals(1, throwable.getStackTrace().length);
+ assertNotNull(throwable.getCause());
+ }
+
+ private Representation statusServiceToRepresentation(Status status) {
+ Request request = new Request();
+ Response response = new Response(request);
+ return statusService.toRepresentation(status, request, response);
+ }
+
+ @org.restlet.resource.Status(value = 400, serialize = false)
+ private static class AnnotatedNotSerializableException extends Throwable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ private final int value;
+
+ public AnnotatedNotSerializableException(String message, int value) {
+ super(message);
+ this.value = value;
+ }
+
+ @SuppressWarnings("unused")
+ public int getValue() {
+ return value;
+ }
+ }
+
+ @org.restlet.resource.Status(value = 401)
+ private static class AnnotatedSerializableException extends Throwable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ private int value;
+
+ public static AnnotatedSerializableException withoutCause(final String message, final int value) {
+ StackTraceElement[] stackTrace = new StackTraceElement[1];
+ stackTrace[0] = new StackTraceElement("DeclaringClass", "MethodName", "FileName", 1);
+
+ AnnotatedSerializableException annotatedSerializableException = new AnnotatedSerializableException(message, value);
+ annotatedSerializableException.setStackTrace(stackTrace);
+ return annotatedSerializableException;
+ }
+
+ public static AnnotatedSerializableException withCause(final String message, final int value) {
+ StackTraceElement[] stackTrace = new StackTraceElement[1];
+ stackTrace[0] = new StackTraceElement("DeclaringClass", "MethodName", "FileName", 1);
+
+ Throwable rootCause = new IOException("File '/toto.txt' is not readable");
+ rootCause.setStackTrace(stackTrace);
+
+ AnnotatedSerializableException annotatedSerializableException = new AnnotatedSerializableException(message, value, rootCause);
+ annotatedSerializableException.setStackTrace(stackTrace);
+ return annotatedSerializableException;
+ }
+
+ @SuppressWarnings("unused")
+ public AnnotatedSerializableException() {}
+
+ public AnnotatedSerializableException(String message, int value) {
+ super(message);
+ this.value = value;
+ }
+
+ public AnnotatedSerializableException(String message, int value, Throwable cause) {
+ super(message, cause);
+ this.value = value;
+ }
+
+ public int getValue() {
+ return value;
+ }
+ }
+
+}
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/UserAgentTestResource.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/service/UserAgentTestResource.java
similarity index 94%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/UserAgentTestResource.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/service/UserAgentTestResource.java
index 0885704d62..44b9c21d16 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/UserAgentTestResource.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/service/UserAgentTestResource.java
@@ -7,7 +7,7 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.engine;
+package org.restlet.service;
import org.restlet.data.MediaType;
import org.restlet.representation.Representation;
@@ -29,11 +29,11 @@ public UserAgentTestResource() {
@Override
public Representation get(Variant variant) throws ResourceException {
final MediaType mediaType = variant.getMediaType();
+
if (mediaType.equals(MediaType.TEXT_XML)) {
return new StringRepresentation("b", mediaType);
} else if (mediaType.equals(MediaType.TEXT_HTML)) {
- return new StringRepresentation("a",
- mediaType);
+ return new StringRepresentation("a", mediaType);
}
return null;
diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/UserAgentTunnelFilterTestCase.java b/org.restlet.java/org.restlet/src/test/java/org/restlet/service/UserAgentTunnelFilterTestCase.java
similarity index 81%
rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/UserAgentTunnelFilterTestCase.java
rename to org.restlet.java/org.restlet/src/test/java/org/restlet/service/UserAgentTunnelFilterTestCase.java
index e2eee08cc8..ff3dad1a7f 100644
--- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/UserAgentTunnelFilterTestCase.java
+++ b/org.restlet.java/org.restlet/src/test/java/org/restlet/service/UserAgentTunnelFilterTestCase.java
@@ -7,9 +7,7 @@
* Restlet is a registered trademark of QlikTech International AB.
*/
-package org.restlet.test.engine;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
+package org.restlet.service;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -22,15 +20,13 @@
import org.restlet.data.Preference;
import org.restlet.data.Status;
import org.restlet.routing.Router;
-import org.restlet.test.RestletTestCase;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
/**
* Tests cases for the tunneling of preferences based on user agent.
*/
-public class UserAgentTunnelFilterTestCase extends RestletTestCase {
-
- /** . */
- private static final String URL = "http://localhost:" + TEST_PORT + "/test";
+public class UserAgentTunnelFilterTestCase {
private Application application;
@@ -43,11 +39,9 @@ private Request createRequest() {
final Request request = new Request();
request.setMethod(Method.GET);
request.getClientInfo().setAgent("msie/1.1");
- request.setResourceRef(URL);
- request.getClientInfo().getAcceptedMediaTypes()
- .add(new Preference<>(MediaType.TEXT_XML));
- request.getClientInfo().getAcceptedMediaTypes()
- .add(new Preference<>(MediaType.TEXT_HTML));
+ request.setResourceRef("/test");
+ request.getClientInfo().getAcceptedMediaTypes().add(new Preference<>(MediaType.TEXT_XML));
+ request.getClientInfo().getAcceptedMediaTypes().add(new Preference<>(MediaType.TEXT_HTML));
return request;
}
diff --git a/org.restlet.java/org.restlet/src/test/resources/maven-version.properties b/org.restlet.java/org.restlet/src/test/resources/maven-version.properties
new file mode 100644
index 0000000000..1e713b3a63
--- /dev/null
+++ b/org.restlet.java/org.restlet/src/test/resources/maven-version.properties
@@ -0,0 +1 @@
+maven.version=${project.version}
\ No newline at end of file
diff --git a/org.restlet.java/pom.xml b/org.restlet.java/pom.xml
index 3dc202a26b..662c03353d 100644
--- a/org.restlet.java/pom.xml
+++ b/org.restlet.java/pom.xml
@@ -38,7 +38,6 @@
- org.restlet.test
diff --git a/pom.xml b/pom.xml
index a9cfbaf696..05694f6ecc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -55,6 +55,7 @@
7.0.0
2.12.1
2.10.0
+ 3.0.12
2.17.0
2.4.0-b180830.0438
2.4.0-b180830.0359
@@ -63,10 +64,10 @@
20240303
5.10.2
1.2.17
+ 1.3
4.0.0
5.0.0
2.0.16
- 7.5.1
6.2.0
3.0.11.RELEASE
2.4.1