diff --git a/org.restlet.gwt/org.restlet.gwt/pom.xml b/org.restlet.gwt/org.restlet.gwt/pom.xml index 8aa6e2ae74..35b93d7685 100644 --- a/org.restlet.gwt/org.restlet.gwt/pom.xml +++ b/org.restlet.gwt/org.restlet.gwt/pom.xml @@ -25,8 +25,20 @@ gwt-dev ${lib-gwt-version} + + org.junit.jupiter + junit-jupiter-api + ${lib-junit-version} + test + + + + src/test/resources + true + + net.ltgt.gwt.maven diff --git a/org.restlet.gwt/org.restlet.gwt/src/main/java/org/restlet/client/data/ChallengeResponse.java b/org.restlet.gwt/org.restlet.gwt/src/main/java/org/restlet/client/data/ChallengeResponse.java index cdb3a81b6a..565bb7bfc8 100644 --- a/org.restlet.gwt/org.restlet.gwt/src/main/java/org/restlet/client/data/ChallengeResponse.java +++ b/org.restlet.gwt/org.restlet.gwt/src/main/java/org/restlet/client/data/ChallengeResponse.java @@ -52,16 +52,13 @@ public final class ChallengeResponse extends ChallengeMessage { private volatile String secretAlgorithm; /** The server nonce count. */ - private volatile int serverNounceCount; + private volatile int serverNonceCount; /** * The time when the response was issued, as returned by {@link System#currentTimeMillis()}. */ private volatile long timeIssued; - - - /** * Constructor with no credentials. * @@ -102,7 +99,7 @@ public ChallengeResponse(ChallengeScheme scheme) { * The client nonce value. * @param serverNonce * The server nonce. - * @param serverNounceCount + * @param serverNonceCount * The server nonce count. * @param timeIssued * The time when the response was issued, as returned by {@link System#currentTimeMillis()}. @@ -111,7 +108,7 @@ public ChallengeResponse(ChallengeScheme scheme, Series parameters, String identifier, char[] secret, String secretAlgorithm, String realm, String quality, Reference digestRef, String digestAlgorithm, String opaque, - String clientNonce, String serverNonce, int serverNounceCount, + String clientNonce, String serverNonce, int serverNonceCount, long timeIssued) { super(scheme, realm, parameters, digestAlgorithm, opaque, serverNonce); this.clientNonce = clientNonce; @@ -120,7 +117,7 @@ public ChallengeResponse(ChallengeScheme scheme, this.quality = quality; this.secret = secret; this.secretAlgorithm = secretAlgorithm; - this.serverNounceCount = serverNounceCount; + this.serverNonceCount = serverNonceCount; this.timeIssued = timeIssued; } @@ -284,13 +281,23 @@ public String getSecretAlgorithm() { /** * Returns the server nonce count. - * + * * @return The server nonce count. + * @deprecated Use {@code getServerNonceCount} instead. */ + @Deprecated public int getServerNounceCount() { - return serverNounceCount; + return getServerNonceCount(); } + /** + * Returns the server nonce count. + * + * @return The server nonce count. + */ + public int getServerNonceCount() { + return serverNonceCount; + } /** * Returns the time when the response was issued, as returned by {@link System#currentTimeMillis()}. @@ -383,14 +390,23 @@ public void setSecretAlgorithm(String secretDigestAlgorithm) { /** * Sets the server nonce count. - * - * @param serverNounceCount - * The server nonce count. + * + * @param serverNonceCount The server nonce count. + * @deprecated Use {@code setServerNonceCount} instead. */ - public void setServerNounceCount(int serverNounceCount) { - this.serverNounceCount = serverNounceCount; + @Deprecated + public void setServerNounceCount(int serverNonceCount) { + setServerNonceCount(serverNonceCount); } + /** + * Sets the server nonce count. + * + * @param serverNonceCount The server nonce count. + */ + public void setServerNonceCount(int serverNonceCount) { + this.serverNonceCount = serverNonceCount; + } /** * Sets the time when the response was issued, as returned by {@link System#currentTimeMillis()}. * diff --git a/org.restlet.gwt/org.restlet.gwt/src/main/java/org/restlet/client/data/Status.java b/org.restlet.gwt/org.restlet.gwt/src/main/java/org/restlet/client/data/Status.java index a65611c8e8..dc780460e8 100644 --- a/org.restlet.gwt/org.restlet.gwt/src/main/java/org/restlet/client/data/Status.java +++ b/org.restlet.gwt/org.restlet.gwt/src/main/java/org/restlet/client/data/Status.java @@ -21,11 +21,7 @@ public final class Status { private static final String BASE_HTTP = "http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html"; - private static final String BASE_RESTLET = "http://restlet.org/learn/javadocs/" - + Engine.MAJOR_NUMBER - + '.' - + Engine.MINOR_NUMBER - + "/gwt/api/"; + private static final String BASE_RESTLET = "https://javadoc.io/static/org.restlet.gwt/org.restlet.gwt/" + Engine.VERSION + "/"; @Deprecated private static final String BASE_WEBDAV = "http://www.webdav.org/specs/rfc2518.html"; diff --git a/org.restlet.gwt/org.restlet.gwt/src/test/java/org/restlet/client/engine/EngineTest.java b/org.restlet.gwt/org.restlet.gwt/src/test/java/org/restlet/client/engine/EngineTest.java new file mode 100644 index 0000000000..43ad23024d --- /dev/null +++ b/org.restlet.gwt/org.restlet.gwt/src/test/java/org/restlet/client/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.client.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.gwt/org.restlet.gwt/src/test/resources/maven-version.properties b/org.restlet.gwt/org.restlet.gwt/src/test/resources/maven-version.properties new file mode 100644 index 0000000000..1e713b3a63 --- /dev/null +++ b/org.restlet.gwt/org.restlet.gwt/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/org.restlet.example/pom.xml b/org.restlet.java/org.restlet.example/pom.xml index 2f57cdbe04..13157a9577 100644 --- a/org.restlet.java/org.restlet.example/pom.xml +++ b/org.restlet.java/org.restlet.example/pom.xml @@ -14,11 +14,6 @@ Example projects including those from the tutorial - - org.testng - testng - ${lib-testng-version} - org.restlet org.restlet diff --git a/org.restlet.java/org.restlet.ext.crypto/pom.xml b/org.restlet.java/org.restlet.ext.crypto/pom.xml index 796b45c106..5b951ff5a7 100644 --- a/org.restlet.java/org.restlet.ext.crypto/pom.xml +++ b/org.restlet.java/org.restlet.ext.crypto/pom.xml @@ -20,6 +20,12 @@ org.restlet ${project.version} + + org.junit.jupiter + junit-jupiter-api + ${lib-junit-version} + test + diff --git a/org.restlet.java/org.restlet.ext.crypto/src/main/java/org/restlet/ext/crypto/DigestVerifier.java b/org.restlet.java/org.restlet.ext.crypto/src/main/java/org/restlet/ext/crypto/DigestVerifier.java index 4753187ae1..2fcac96935 100644 --- a/org.restlet.java/org.restlet.ext.crypto/src/main/java/org/restlet/ext/crypto/DigestVerifier.java +++ b/org.restlet.java/org.restlet.ext.crypto/src/main/java/org/restlet/ext/crypto/DigestVerifier.java @@ -1,21 +1,21 @@ /** * Copyright 2005-2024 Qlik - * + *

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

* Restlet is a registered trademark of QlikTech International AB. */ package org.restlet.ext.crypto; -import java.util.logging.Level; - import org.restlet.Context; import org.restlet.data.Digest; import org.restlet.security.LocalVerifier; import org.restlet.security.SecretVerifier; +import java.util.logging.Level; + /** * Wrapper verifier that can verify digested secrets. If the provided secret is * a digest, then the local secret must either be a digest of the same algorithm @@ -24,7 +24,7 @@ *
* If the provided secret is a regular secret, then the local secret can be in * any digest algorithm or a regular secret. - * + * * @see Digest * @see DigestAuthenticator * @author Jerome Louvel @@ -42,7 +42,7 @@ public class DigestVerifier extends SecretVerifier { /** * Constructor. - * + * * @param algorithm * The digest algorithm of provided secrets. * @param wrappedVerifier @@ -53,7 +53,7 @@ public class DigestVerifier extends SecretVerifier { * @see Digest */ public DigestVerifier(String algorithm, T wrappedVerifier, - String wrappedAlgorithm) { + String wrappedAlgorithm) { this.algorithm = algorithm; this.wrappedAlgorithm = wrappedAlgorithm; this.wrappedVerifier = wrappedVerifier; @@ -64,7 +64,7 @@ public DigestVerifier(String algorithm, T wrappedVerifier, * default, MD5 hashes (represented as a sequence of 32 hexadecimal digits) * and SHA-1 hashes are supported. For additional algorithm, override this * method. - * + * * @param identifier * The user identifier. * @param secret @@ -81,28 +81,54 @@ protected char[] digest(String identifier, char[] secret, String algorithm) { /** * Returns the digest algorithm of provided secrets. Provided secrets are * the ones sent by clients when attempting to authenticate. - * + * * @return The digest algorithm of input secrets. */ public String getAlgorithm() { return algorithm; } + /** + * Sets the digest algorithm of provided secrets. Provided secrets are the + * ones sent by clients when attempting to authenticate. + * + * @param algorithm + * The digest algorithm of secrets provided by the user. + * @see Digest + */ + public void setAlgorithm(String algorithm) { + this.algorithm = algorithm; + } + /** * Returns the digest algorithm of secrets returned by the wrapped verifier. * The secrets from the wrapped verifier are the ones used by the verifier * to compare those sent by clients when attempting to authenticate. - * + * * @return The digest algorithm of secrets returned by the wrapped verifier. */ public String getWrappedAlgorithm() { return wrappedAlgorithm; } + /** + * Sets the digest algorithm of secrets returned by the wrapped verifier. + * The secrets from the wrapped verifier are the ones used by the verifier + * to compare those sent by clients when attempting to authenticate. + * + * @param wrappedAlgorithm + * The digest algorithm of secrets returned by the wrapped + * verifier. + * @see Digest + */ + public void setWrappedAlgorithm(String wrappedAlgorithm) { + this.wrappedAlgorithm = wrappedAlgorithm; + } + /** * Returns the wrapped secret associated to a given identifier. This method * can only be called if the wrapped verifier is a {@link LocalVerifier}. - * + * * @param identifier * The identifier to lookup. * @return The secret associated to the identifier or null. @@ -110,8 +136,7 @@ public String getWrappedAlgorithm() { public char[] getWrappedSecret(String identifier) { char[] result = null; - if (getWrappedVerifier() instanceof LocalVerifier) { - LocalVerifier localVerifier = (LocalVerifier) getWrappedVerifier(); + if (getWrappedVerifier() instanceof LocalVerifier localVerifier) { result = localVerifier.getLocalSecret(identifier); } else { Context.getCurrentLogger() @@ -127,7 +152,7 @@ public char[] getWrappedSecret(String identifier) { * identifier. If the wrapped algorithm is null it returns the digest of the * wrapped secret, otherwise the algorithms must be identical. This method * can only be called if the wrapped verifier is a {@link LocalVerifier}. - * + * * @param identifier * The identifier to lookup. * @return The secret associated to the identifier or null. @@ -150,42 +175,16 @@ public char[] getWrappedSecretDigest(String identifier) { /** * Returns the wrapped secret verifier. - * + * * @return The wrapped secret verifier. */ public T getWrappedVerifier() { return wrappedVerifier; } - /** - * Sets the digest algorithm of provided secrets. Provided secrets are the - * ones sent by clients when attempting to authenticate. - * - * @param algorithm - * The digest algorithm of secrets provided by the user. - * @see Digest - */ - public void setAlgorithm(String algorithm) { - this.algorithm = algorithm; - } - - /** - * Sets the digest algorithm of secrets returned by the wrapped verifier. - * The secrets from the wrapped verifier are the ones used by the verifier - * to compare those sent by clients when attempting to authenticate. - * - * @param wrappedAlgorithm - * The digest algorithm of secrets returned by the wrapped - * verifier. - * @see Digest - */ - public void setWrappedAlgorithm(String wrappedAlgorithm) { - this.wrappedAlgorithm = wrappedAlgorithm; - } - /** * Sets the wrapped secret verifier. - * + * * @param wrappedVerifier * The wrapped secret verifier. */ @@ -208,8 +207,8 @@ public int verify(String identifier, char[] secret) { result = getWrappedVerifier().verify(identifier, secretDigest); } else { if (getWrappedAlgorithm() == null) { - result = compare(secretDigest, - getWrappedSecretDigest(identifier)) ? RESULT_VALID + result = compare(secretDigest, getWrappedSecretDigest(identifier)) + ? RESULT_VALID : RESULT_INVALID; } else if (getAlgorithm().equals(getWrappedAlgorithm())) { result = getWrappedVerifier().verify(identifier, secretDigest); diff --git a/org.restlet.java/org.restlet.ext.crypto/src/main/java/org/restlet/ext/crypto/internal/AwsVerifier.java b/org.restlet.java/org.restlet.ext.crypto/src/main/java/org/restlet/ext/crypto/internal/AwsVerifier.java index c7be4548b4..9a598d797e 100644 --- a/org.restlet.java/org.restlet.ext.crypto/src/main/java/org/restlet/ext/crypto/internal/AwsVerifier.java +++ b/org.restlet.java/org.restlet.ext.crypto/src/main/java/org/restlet/ext/crypto/internal/AwsVerifier.java @@ -20,7 +20,7 @@ import org.restlet.util.Series; /** - * Wrapped verifier that can verify HTTP requests utilizing the Amazon S3 + * Wrapped verifier that can verify HTTP requests using the Amazon S3 * authentication scheme. Verifies the user by computing the request signature * using the local secret and comparing it to the signature provided in the * request. diff --git a/org.restlet.java/org.restlet.ext.crypto/src/main/java/org/restlet/ext/crypto/internal/HttpDigestHelper.java b/org.restlet.java/org.restlet.ext.crypto/src/main/java/org/restlet/ext/crypto/internal/HttpDigestHelper.java index 6b4d783026..f01e9e1a75 100644 --- a/org.restlet.java/org.restlet.ext.crypto/src/main/java/org/restlet/ext/crypto/internal/HttpDigestHelper.java +++ b/org.restlet.java/org.restlet.ext.crypto/src/main/java/org/restlet/ext/crypto/internal/HttpDigestHelper.java @@ -201,9 +201,9 @@ public void formatResponse(ChallengeWriter cw, ChallengeResponse challenge, } if ((challenge.getQuality() != null) - && (challenge.getServerNounceCount() > 0)) { + && (challenge.getServerNonceCount() > 0)) { cw.appendChallengeParameter("nc", - challenge.getServerNounceCountAsHex()); + challenge.getServerNonceCountAsHex()); } for (Parameter param : challenge.getParameters()) { @@ -246,22 +246,19 @@ public char[] formatResponseDigest(ChallengeResponse challengeResponse, if (a1 != null && !AuthenticatorUtils.anyNull(request.getMethod(), challengeResponse.getDigestRef())) { - String a2 = DigestUtils.toMd5(request.getMethod().toString() + ":" - + challengeResponse.getDigestRef().toString()); StringBuilder sb = new StringBuilder().append(a1).append(':') .append(challengeResponse.getServerNonce()); if (!AuthenticatorUtils.anyNull(challengeResponse.getQuality(), challengeResponse.getClientNonce(), - challengeResponse.getServerNounceCount())) { - sb.append(':') - .append(AuthenticatorUtils - .formatNonceCount(challengeResponse - .getServerNounceCount())).append(':') - .append(challengeResponse.getClientNonce()).append(':') - .append(challengeResponse.getQuality()); + challengeResponse.getServerNonceCount())) { + sb.append(':').append(AuthenticatorUtils.formatNonceCount(challengeResponse.getServerNonceCount())) + .append(':').append(challengeResponse.getClientNonce()) + .append(':').append(challengeResponse.getQuality()); } + String a2 = DigestUtils.toMd5(request.getMethod().toString() + ":" + + challengeResponse.getDigestRef().toString()); sb.append(':').append(a2); return DigestUtils.toMd5(sb.toString()).toCharArray(); @@ -355,7 +352,7 @@ public void parseResponse(ChallengeResponse challenge, Request request, } else if ("qop".equals(param.getName())) { challenge.setQuality(param.getValue()); } else if ("nc".equals(param.getName())) { - challenge.setServerNounceCount(Integer.valueOf( + challenge.setServerNonceCount(Integer.valueOf( param.getValue(), 16)); } else { challenge.getParameters().add(param); diff --git a/org.restlet.java/org.restlet.ext.crypto/src/main/java/org/restlet/ext/crypto/internal/HttpDigestVerifier.java b/org.restlet.java/org.restlet.ext.crypto/src/main/java/org/restlet/ext/crypto/internal/HttpDigestVerifier.java index 3bcb71b8d9..c9a0c82fa4 100644 --- a/org.restlet.java/org.restlet.ext.crypto/src/main/java/org/restlet/ext/crypto/internal/HttpDigestVerifier.java +++ b/org.restlet.java/org.restlet.ext.crypto/src/main/java/org/restlet/ext/crypto/internal/HttpDigestVerifier.java @@ -97,11 +97,11 @@ public int verify(Request request, Response response) { if (cr == null) { result = RESULT_MISSING; } else { - String nonce = cr.getServerNonce(); + String serverNonce = cr.getServerNonce(); String uri = (cr.getDigestRef() == null) ? null : cr.getDigestRef().toString(); String qop = cr.getQuality(); - int nc = cr.getServerNounceCount(); - String cnonce = cr.getClientNonce(); + int nc = cr.getServerNonceCount(); + String clientNonce = cr.getClientNonce(); String username = getIdentifier(request, response); String cresponse = null; char[] secret = getSecret(request, response); @@ -113,7 +113,7 @@ public int verify(Request request, Response response) { } try { - if (!HttpDigestHelper.isNonceValid(nonce, + if (!HttpDigestHelper.isNonceValid(serverNonce, getDigestAuthenticator().getServerKey(), getDigestAuthenticator().getMaxServerNonceAge())) { // Nonce expired, send challenge request with stale=true @@ -125,7 +125,7 @@ public int verify(Request request, Response response) { } if (result == RESULT_VALID) { - if (AuthenticatorUtils.anyNull(nonce, uri)) { + if (AuthenticatorUtils.anyNull(serverNonce, uri)) { result = RESULT_MISSING; } else { Reference resourceRef = request.getResourceRef(); @@ -143,22 +143,17 @@ public int verify(Request request, Response response) { if (uri.equals(requestUri)) { char[] a1 = getWrappedSecretDigest(username); if (a1 != null) { - String a2 = DigestUtils.toMd5(request.getMethod() - .toString() + ":" + requestUri); - StringBuilder expectedResponse = new StringBuilder() - .append(a1).append(':').append(nonce); - if (!AuthenticatorUtils.anyNull(qop, cnonce, nc)) { + StringBuilder expectedResponse = new StringBuilder().append(a1).append(':').append(serverNonce); + if (!AuthenticatorUtils.anyNull(qop, clientNonce, nc)) { expectedResponse - .append(':') - .append(AuthenticatorUtils - .formatNonceCount(nc)) - .append(':').append(cnonce).append(':') - .append(qop); + .append(':').append(AuthenticatorUtils.formatNonceCount(nc)) + .append(':').append(clientNonce) + .append(':').append(qop); } + String a2 = DigestUtils.toMd5(request.getMethod().toString() + ":" + requestUri); expectedResponse.append(':').append(a2); - if (!DigestUtils.toMd5(expectedResponse.toString()) - .equals(cresponse)) { + if (!DigestUtils.toMd5(expectedResponse.toString()).equals(cresponse)) { result = RESULT_INVALID; } } else { diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/crypto/CookieAuthenticatorTestCase.java b/org.restlet.java/org.restlet.ext.crypto/src/test/java/org/restlet/ext/crypto/CookieAuthenticatorTestCase.java similarity index 74% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/crypto/CookieAuthenticatorTestCase.java rename to org.restlet.java/org.restlet.ext.crypto/src/test/java/org/restlet/ext/crypto/CookieAuthenticatorTestCase.java index 5f56e84af1..356036c97a 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/crypto/CookieAuthenticatorTestCase.java +++ b/org.restlet.java/org.restlet.ext.crypto/src/test/java/org/restlet/ext/crypto/CookieAuthenticatorTestCase.java @@ -7,34 +7,27 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.ext.crypto; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.fail; -import static org.testng.AssertJUnit.assertNotNull; +package org.restlet.ext.crypto; +import org.junit.jupiter.api.Assertions; 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.*; import org.restlet.data.CookieSetting; import org.restlet.data.Form; import org.restlet.data.MediaType; import org.restlet.data.Status; -import org.restlet.ext.crypto.CookieAuthenticator; import org.restlet.resource.ClientResource; import org.restlet.resource.ResourceException; import org.restlet.security.MapVerifier; -import org.restlet.test.RestletTestCase; + +import static org.junit.jupiter.api.Assertions.*; /** * Unit test for the {@link CookieAuthenticator} class. * * @author Jerome Louvel */ -public class CookieAuthenticatorTestCase extends RestletTestCase { +public class CookieAuthenticatorTestCase { public static class CookieGuardedApplication extends Application { @@ -72,23 +65,20 @@ public void testCookieAuth1() { // 1) Attempt to connect without credentials try { cr.get(); - fail("A resource exception should have been thrown"); + Assertions.fail("A resource exception should have been thrown"); } catch (ResourceException re) { assertEquals(Status.CLIENT_ERROR_UNAUTHORIZED, re.getStatus()); } - // 2) Attempt to login with wrong credentials + // 2) Attempt to log in with wrong credentials ClientResource loginCr = cr.getChild("/login"); Form loginForm = new Form(); loginForm.add("login", "scott"); loginForm.add("password", "titi"); - try { - loginCr.post(loginForm); - fail("A resource exception should have been thrown"); - } catch (ResourceException re) { - assertEquals(Status.CLIENT_ERROR_UNAUTHORIZED, re.getStatus()); - } + ResourceException exception = assertThrows(ResourceException.class, + () -> loginCr.post(loginForm)); + assertEquals(Status.CLIENT_ERROR_UNAUTHORIZED, exception.getStatus()); // 3) Login with right credentials loginForm.set("password", "tiger"); @@ -96,9 +86,9 @@ public void testCookieAuth1() { assertEquals(Status.SUCCESS_OK, loginCr.getStatus()); CookieSetting cs = loginCr.getCookieSettings().getFirst("Credentials"); - assertNotNull("No cookie credentials found", cs); + assertNotNull(cs, "No cookie credentials found"); - // 4) Retry connect with right credentials + // 4) Retry connect with the right credentials cr.getCookies().add(cs.getName(), cs.getValue()); assertEquals("Hello, world!", cr.get(String.class)); diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/crypto/DigestVerifierTestCase.java b/org.restlet.java/org.restlet.ext.crypto/src/test/java/org/restlet/ext/crypto/DigestVerifierTestCase.java similarity index 92% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/crypto/DigestVerifierTestCase.java rename to org.restlet.java/org.restlet.ext.crypto/src/test/java/org/restlet/ext/crypto/DigestVerifierTestCase.java index c0a2cd6439..2fda07938c 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/crypto/DigestVerifierTestCase.java +++ b/org.restlet.java/org.restlet.ext.crypto/src/test/java/org/restlet/ext/crypto/DigestVerifierTestCase.java @@ -7,23 +7,21 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.ext.crypto; - -import static org.junit.jupiter.api.Assertions.assertEquals; +package org.restlet.ext.crypto; import org.junit.jupiter.api.Test; import org.restlet.data.Digest; -import org.restlet.ext.crypto.DigestVerifier; import org.restlet.security.MapVerifier; import org.restlet.security.Verifier; -import org.restlet.test.RestletTestCase; + +import static org.junit.jupiter.api.Assertions.assertEquals; /** * Restlet unit tests for the DigestVerifierTestCase class. * * @author Jerome Louvel */ -public class DigestVerifierTestCase extends RestletTestCase { +public class DigestVerifierTestCase { @Test public void test1() { diff --git a/org.restlet.java/org.restlet.ext.crypto/src/test/java/org/restlet/ext/crypto/HttpDigestTestCase.java b/org.restlet.java/org.restlet.ext.crypto/src/test/java/org/restlet/ext/crypto/HttpDigestTestCase.java new file mode 100644 index 0000000000..a60bf758a3 --- /dev/null +++ b/org.restlet.java/org.restlet.ext.crypto/src/test/java/org/restlet/ext/crypto/HttpDigestTestCase.java @@ -0,0 +1,100 @@ +/** + * Copyright 2005-2024 Qlik + * + * The contents of this file is subject to the terms of the Apache 2.0 open + * source license available at http://www.opensource.org/licenses/apache-2.0 + * + * Restlet is a registered trademark of QlikTech International AB. + */ + +package org.restlet.ext.crypto; + +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.Restlet; +import org.restlet.data.*; +import org.restlet.engine.Engine; +import org.restlet.routing.Router; +import org.restlet.security.MapVerifier; + +import static org.junit.jupiter.api.Assertions.*; +import static org.restlet.data.ChallengeScheme.HTTP_DIGEST; +import static org.restlet.engine.security.AuthenticatorUtils.formatResponse; +import static org.restlet.engine.security.AuthenticatorUtils.parseResponse; + +/** + * Restlet unit tests for HTTP DIGEST authentication client/server. + * + * @author Jerome Louvel + */ +public class HttpDigestTestCase { + + @Test + public void testDigest() { + + // Try unauthenticated request + Request request = new Request(Method.GET, "/"); + Response response = testApplication.handle(request); + assertEquals(Status.CLIENT_ERROR_UNAUTHORIZED, response.getStatus()); + + ChallengeRequest httpDigestChallengeRequest = response.getChallengeRequests() + .stream().filter(cr -> HTTP_DIGEST.equals(cr.getScheme())) + .findFirst() + .orElse(null); + assertNotNull(httpDigestChallengeRequest); + + String realm = httpDigestChallengeRequest.getRealm(); + assertEquals("TestRealm", realm); + + // String opaque = httpDigestChallengeRequest.getParameters().getFirstValue("opaque"); + // String qop = httpDigestChallengeRequest.getParameters().getFirstValue("qop"); + // assertEquals(null, opaque); + // assertEquals("auth", qop); + + // Try authenticated request + request = new Request(Method.GET, "/"); + + ChallengeResponse challengeResponseAsDefinedByClient = new ChallengeResponse(httpDigestChallengeRequest, response, + "scott", "tiger".toCharArray()); + String authHeaderAsSentByHttpClient = formatResponse(challengeResponseAsDefinedByClient, request, request.getHeaders()); + ChallengeResponse challengeResponseAsParsedByServer = parseResponse(request, authHeaderAsSentByHttpClient, request.getHeaders()); + + request.setChallengeResponse(challengeResponseAsParsedByServer); + response = testApplication.handle(request); + assertTrue(response.getStatus().isSuccess()); + } + + private Application testApplication; + + @BeforeEach + protected void setUpEach() { + Engine.clearThreadLocalVariables(); + testApplication = new MyApplication(); + } + + private static class MyApplication extends Application { + @Override + public Restlet createInboundRoot() { + Router router = new Router(getContext()); + + DigestAuthenticator authenticator = new DigestAuthenticator(getContext(),"TestRealm", "mySecretServerKey"); + MapVerifier mapVerifier = new MapVerifier(); + mapVerifier.getLocalSecrets().put("scott", "tiger".toCharArray()); + authenticator.setWrappedVerifier(mapVerifier); + + Restlet restlet = new Restlet(getContext()) { + @Override + public void handle(Request request, Response response) { + response.setEntity("hello, world", MediaType.TEXT_PLAIN); + } + }; + authenticator.setNext(restlet); + router.attach("/", authenticator); + return router; + } + } + +} diff --git a/org.restlet.java/org.restlet.ext.crypto/src/test/java/org/restlet/ext/crypto/internal/HttpAwsS3HelperTestCase.java b/org.restlet.java/org.restlet.ext.crypto/src/test/java/org/restlet/ext/crypto/internal/HttpAwsS3HelperTestCase.java new file mode 100644 index 0000000000..2ce0e0b6eb --- /dev/null +++ b/org.restlet.java/org.restlet.ext.crypto/src/test/java/org/restlet/ext/crypto/internal/HttpAwsS3HelperTestCase.java @@ -0,0 +1,58 @@ +/** + * Copyright 2005-2024 Qlik + * + * The contents of this file is subject to the terms of the Apache 2.0 open + * source license available at http://www.opensource.org/licenses/apache-2.0 + * + * Restlet is a registered trademark of QlikTech International AB. + */ + +package org.restlet.ext.crypto.internal; + +import org.junit.jupiter.api.Test; +import org.restlet.Request; +import org.restlet.data.ChallengeResponse; +import org.restlet.data.ChallengeScheme; +import org.restlet.data.Header; +import org.restlet.data.Method; +import org.restlet.engine.header.ChallengeWriter; +import org.restlet.engine.header.HeaderConstants; +import org.restlet.util.Series; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class HttpAwsS3HelperTestCase { + /** + * Test Amazon S3 authentication. + */ + @Test + public void testAwsS3() { + HttpAwsS3Helper helper = new HttpAwsS3Helper(); + + // Example Object GET + ChallengeWriter cw = new ChallengeWriter(); + ChallengeResponse challenge = new ChallengeResponse( + ChallengeScheme.HTTP_AWS_S3, "0PN5J17HBGZHT7JJ3X82", + "uV3F3YluFJax1cknvbcGwgjvx4QpvB+leU8dUj2o"); + Request request = new Request(Method.GET, + "http://johnsmith.s3.amazonaws.com/photos/puppy.jpg"); + Series

httpHeaders = new Series<>(Header.class); + httpHeaders.add(HeaderConstants.HEADER_DATE, + "Tue, 27 Mar 2007 19:36:42 +0000"); + + helper.formatResponse(cw, challenge, request, httpHeaders); + assertEquals("0PN5J17HBGZHT7JJ3X82:xXjDGYUmKxnwqr5KXNPGldn5LbA=", + cw.toString()); + + // Example Object PUT + cw = new ChallengeWriter(); + request.setMethod(Method.PUT); + httpHeaders.set(HeaderConstants.HEADER_DATE, + "Tue, 27 Mar 2007 21:15:45 +0000", true); + httpHeaders.add(HeaderConstants.HEADER_CONTENT_LENGTH, "94328"); + httpHeaders.add(HeaderConstants.HEADER_CONTENT_TYPE, "image/jpeg"); + helper.formatResponse(cw, challenge, request, httpHeaders); + assertEquals("0PN5J17HBGZHT7JJ3X82:hcicpDDvL9SsO6AkvxqmIWkmOuQ=", + cw.toString()); + } +} diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/crypto/HttpAwsS3HostNameTestCase.java b/org.restlet.java/org.restlet.ext.crypto/src/test/java/org/restlet/ext/crypto/internal/HttpAwsS3HostNameTestCase.java similarity index 90% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/crypto/HttpAwsS3HostNameTestCase.java rename to org.restlet.java/org.restlet.ext.crypto/src/test/java/org/restlet/ext/crypto/internal/HttpAwsS3HostNameTestCase.java index 71dd821e66..4eb78b3a22 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/crypto/HttpAwsS3HostNameTestCase.java +++ b/org.restlet.java/org.restlet.ext.crypto/src/test/java/org/restlet/ext/crypto/internal/HttpAwsS3HostNameTestCase.java @@ -7,16 +7,14 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.ext.crypto; - -import static org.junit.jupiter.api.Assertions.assertEquals; +package org.restlet.ext.crypto.internal; import org.junit.jupiter.api.Test; import org.restlet.data.Reference; -import org.restlet.ext.crypto.internal.AwsUtils; -import org.restlet.test.RestletTestCase; -public class HttpAwsS3HostNameTestCase extends RestletTestCase { +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class HttpAwsS3HostNameTestCase { private String checkAddress(final String host, final String path) { return AwsUtils.getCanonicalizedResourceName(new Reference() { diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/crypto/HttpAwsS3SigningTestCase.java b/org.restlet.java/org.restlet.ext.crypto/src/test/java/org/restlet/ext/crypto/internal/HttpAwsS3SigningTestCase.java similarity index 96% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/crypto/HttpAwsS3SigningTestCase.java rename to org.restlet.java/org.restlet.ext.crypto/src/test/java/org/restlet/ext/crypto/internal/HttpAwsS3SigningTestCase.java index 8291a18bd6..f712db4ea4 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/crypto/HttpAwsS3SigningTestCase.java +++ b/org.restlet.java/org.restlet.ext.crypto/src/test/java/org/restlet/ext/crypto/internal/HttpAwsS3SigningTestCase.java @@ -7,9 +7,7 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.ext.crypto; - -import static org.junit.jupiter.api.Assertions.assertEquals; +package org.restlet.ext.crypto.internal; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; @@ -18,10 +16,10 @@ import org.restlet.data.Header; import org.restlet.data.Method; import org.restlet.engine.header.HeaderConstants; -import org.restlet.ext.crypto.internal.AwsUtils; -import org.restlet.test.RestletTestCase; import org.restlet.util.Series; +import static org.junit.jupiter.api.Assertions.assertEquals; + /** * Unit test for {@link AwsUtils}. Test cases are taken from the examples * provided from */ -public class HttpAwsS3SigningTestCase extends RestletTestCase { +public class HttpAwsS3SigningTestCase { private static final String ACCESS_KEY = "uV3F3YluFJax1cknvbcGwgjvx4QpvB+leU8dUj2o"; private Request getRequest; diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/crypto/HttpAwsS3VerifierTestCase.java b/org.restlet.java/org.restlet.ext.crypto/src/test/java/org/restlet/ext/crypto/internal/HttpAwsS3VerifierTestCase.java similarity index 93% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/crypto/HttpAwsS3VerifierTestCase.java rename to org.restlet.java/org.restlet.ext.crypto/src/test/java/org/restlet/ext/crypto/internal/HttpAwsS3VerifierTestCase.java index 77126b3f51..9810e20f9a 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/crypto/HttpAwsS3VerifierTestCase.java +++ b/org.restlet.java/org.restlet.ext.crypto/src/test/java/org/restlet/ext/crypto/internal/HttpAwsS3VerifierTestCase.java @@ -7,9 +7,7 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.ext.crypto; - -import static org.junit.jupiter.api.Assertions.assertEquals; +package org.restlet.ext.crypto.internal; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; @@ -20,19 +18,18 @@ import org.restlet.data.Header; import org.restlet.data.Method; import org.restlet.engine.header.HeaderConstants; -import org.restlet.ext.crypto.internal.AwsUtils; -import org.restlet.ext.crypto.internal.AwsVerifier; import org.restlet.security.LocalVerifier; import org.restlet.security.Verifier; -import org.restlet.test.RestletTestCase; import org.restlet.util.Series; +import static org.junit.jupiter.api.Assertions.assertEquals; + /** * Unit tests for {@link AwsVerifier}. * * @author Jean-Philippe Steinmetz */ -public class HttpAwsS3VerifierTestCase extends RestletTestCase { +public class HttpAwsS3VerifierTestCase { private static final String ACCESS_ID = "0PN5J17HBGZHT7JJ3X82"; private static final String ACCESS_KEY = "uV3F3YluFJax1cknvbcGwgjvx4QpvB+leU8dUj2o"; diff --git a/org.restlet.java/org.restlet.ext.crypto/src/test/java/org/restlet/ext/crypto/internal/HttpDigestHelperTestCase.java b/org.restlet.java/org.restlet.ext.crypto/src/test/java/org/restlet/ext/crypto/internal/HttpDigestHelperTestCase.java new file mode 100644 index 0000000000..2d4e8ac240 --- /dev/null +++ b/org.restlet.java/org.restlet.ext.crypto/src/test/java/org/restlet/ext/crypto/internal/HttpDigestHelperTestCase.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.ext.crypto.internal; + +import org.junit.jupiter.api.Test; +import org.restlet.Request; +import org.restlet.data.*; +import org.restlet.engine.Engine; +import org.restlet.engine.security.AuthenticatorUtils; + +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class HttpDigestHelperTestCase { + + /** + * Tests the authentication parsing for HTTP DIGEST. + * + */ + @Test + public void testParsingDigest() { + // make sure the Digest authentication scheme is registered + Engine.getInstance().getRegisteredAuthenticators().add(new HttpDigestHelper()); + ChallengeResponse cres1 = new ChallengeResponse( + ChallengeScheme.HTTP_DIGEST, + null, + "admin", + "12345".toCharArray(), + Digest.ALGORITHM_NONE, + null, + "qop", + new Reference("/protected/asdass"), + null, + null, + "MTE3NzEwMzIwMjkwMDoxNmMzODFiYzRjNWRjMmMyOTVkMWFhNDdkMTQ4OGFlMw==", + "MTE3NzEwMzIwMjkwMDoxNmMzODFiYzRjNWRjMmMyOTVkMWFhNDdkMTQ4OGFlMw==", + 1, 0L); + + Request request = new Request(Method.GET, + "http://remote.com/protected/asdass"); + String authorization1 = AuthenticatorUtils.formatResponse(cres1, + request, null); + String authenticate1 = "Digest realm=realm, domain=\"/protected/ /alsoProtected/\", qop=auth, algorithm=MD5, nonce=\"MTE3NzEwMzIwMjg0Mjo2NzFjODQyMjAyOWRlNWQ1YjFjNmEzYzJmOWRlZmE2Mw==\""; + + ChallengeResponse cres = AuthenticatorUtils.parseResponse(null, + authorization1, null); + cres.setRawValue(null); + assertEquals(authorization1, + AuthenticatorUtils.formatResponse(cres, request, null)); + + List creq = AuthenticatorUtils.parseRequest(null, + authenticate1, null); + assertEquals(creq.size(), 1); + assertEquals(authenticate1, + AuthenticatorUtils.formatRequest(creq.get(0), null, null)); + } +} diff --git a/org.restlet.java/org.restlet.ext.freemarker/pom.xml b/org.restlet.java/org.restlet.ext.freemarker/pom.xml index 78c989a653..ace57350e3 100644 --- a/org.restlet.java/org.restlet.ext.freemarker/pom.xml +++ b/org.restlet.java/org.restlet.ext.freemarker/pom.xml @@ -25,6 +25,12 @@ org.restlet ${project.version} + + org.junit.jupiter + junit-jupiter-api + ${lib-junit-version} + test + diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/freemarker/FreeMarkerTestCase.java b/org.restlet.java/org.restlet.ext.freemarker/src/test/java/org/restlet/ext/freemarker/FreeMarkerTestCase.java similarity index 70% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/freemarker/FreeMarkerTestCase.java rename to org.restlet.java/org.restlet.ext.freemarker/src/test/java/org/restlet/ext/freemarker/FreeMarkerTestCase.java index 6edeb45ff5..c1aa98fb76 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/freemarker/FreeMarkerTestCase.java +++ b/org.restlet.java/org.restlet.ext.freemarker/src/test/java/org/restlet/ext/freemarker/FreeMarkerTestCase.java @@ -7,36 +7,32 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.ext.freemarker; +package org.restlet.ext.freemarker; -import static org.junit.jupiter.api.Assertions.assertEquals; +import freemarker.template.Configuration; +import org.junit.jupiter.api.Test; +import org.restlet.data.MediaType; +import org.restlet.engine.io.IoUtils; import java.io.File; import java.io.FileWriter; +import java.nio.file.Files; import java.util.Map; import java.util.TreeMap; -import org.junit.jupiter.api.Test; -import org.restlet.data.MediaType; -import org.restlet.engine.io.IoUtils; -import org.restlet.ext.freemarker.TemplateRepresentation; -import org.restlet.test.RestletTestCase; - -import freemarker.template.Configuration; +import static org.junit.jupiter.api.Assertions.assertEquals; /** * Unit test for the FreeMarker extension. * * @author Jerome Louvel */ -public class FreeMarkerTestCase extends RestletTestCase { +public class FreeMarkerTestCase { @Test public void testTemplate() throws Exception { // Create a temporary directory for the tests - final File testDir = new File(System.getProperty("java.io.tmpdir"), - "FreeMarkerTestCase"); - testDir.mkdir(); + final File testDir = Files.createTempDirectory("FreeMarkerTestCase").toFile(); // Create a temporary template file final File testFile = File.createTempFile("test", ".ftl", testDir); @@ -46,15 +42,12 @@ public void testTemplate() throws Exception { final Configuration fmc = new Configuration(); fmc.setDirectoryForTemplateLoading(testDir); - final Map map = new TreeMap(); - map.put("value", "myValue"); + final Map map = Map.of("value", "myValue"); - final String result = new TemplateRepresentation(testFile.getName(), - fmc, map, MediaType.TEXT_PLAIN).getText(); + final String result = new TemplateRepresentation(testFile.getName(), fmc, map, MediaType.TEXT_PLAIN).getText(); assertEquals("Value=myValue", result); // Clean-up - IoUtils.delete(testFile); IoUtils.delete(testDir, true); } diff --git a/org.restlet.java/org.restlet.ext.freemarker/src/test/java/org/restlet/ext/freemarker/TemplateFilterTestCase.java b/org.restlet.java/org.restlet.ext.freemarker/src/test/java/org/restlet/ext/freemarker/TemplateFilterTestCase.java new file mode 100644 index 0000000000..c64de2613c --- /dev/null +++ b/org.restlet.java/org.restlet.ext.freemarker/src/test/java/org/restlet/ext/freemarker/TemplateFilterTestCase.java @@ -0,0 +1,74 @@ +/** + * Copyright 2005-2024 Qlik + * + * The contents of this file is subject to the terms of the Apache 2.0 open + * source license available at http://www.opensource.org/licenses/apache-2.0 + * + * Restlet is a registered trademark of QlikTech International AB. + */ + +package org.restlet.ext.freemarker; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.restlet.*; +import org.restlet.data.LocalReference; +import org.restlet.data.Method; +import org.restlet.data.Protocol; +import org.restlet.engine.Engine; +import org.restlet.resource.Directory; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +/** + * Test case for template filters. + * + * @author Thierry Boileau + */ +public class TemplateFilterTestCase { + + @Test + public void representationShouldBeUsedAsTemplate() throws Exception { + Request request = new Request(Method.GET,"/template.txt.fmt"); + Response response = testApplication.handle(request); + assertEquals("Method=GET/Path=/template.txt.fmt", response.getEntity().getText()); + } + + @Test + public void representationShouldNotBeUsedAsTemplate() throws Exception { + Request request = new Request(Method.GET, "/notATemplate.txt"); + Response response = testApplication.handle(request); + + assertEquals("Method=${m}/Path=${rp}", response.getEntity().getText()); + } + + @BeforeAll + static void setUpTestCases() { + Engine.clearThreadLocalVariables(); + + // Create an application filtered with Velocity + testApplication = new MyFreemakerApplication(); + } + + private static Application testApplication; + + /** + * Internal class used for test purpose + * + * @author Thierry Boileau + */ + private static class MyFreemakerApplication extends Application { + + MyFreemakerApplication() { + setContext(new Context()); + getContext().setClientDispatcher(new Client(Protocol.CLAP)); + } + + @Override + public Restlet createInboundRoot() { + final Directory directory = new Directory(getContext(), LocalReference.createClapReference(TemplateFilterTestCase.class.getPackage())); + return new org.restlet.ext.freemarker.TemplateFilter(getContext(), directory); + } + } + +} diff --git a/org.restlet.java/org.restlet.ext.freemarker/src/test/resources/org/restlet/ext/freemarker/notATemplate.txt b/org.restlet.java/org.restlet.ext.freemarker/src/test/resources/org/restlet/ext/freemarker/notATemplate.txt new file mode 100644 index 0000000000..3d44cd7faa --- /dev/null +++ b/org.restlet.java/org.restlet.ext.freemarker/src/test/resources/org/restlet/ext/freemarker/notATemplate.txt @@ -0,0 +1 @@ +Method=${m}/Path=${rp} \ No newline at end of file diff --git a/org.restlet.java/org.restlet.ext.freemarker/src/test/resources/org/restlet/ext/freemarker/template.txt.fmt b/org.restlet.java/org.restlet.ext.freemarker/src/test/resources/org/restlet/ext/freemarker/template.txt.fmt new file mode 100644 index 0000000000..3d44cd7faa --- /dev/null +++ b/org.restlet.java/org.restlet.ext.freemarker/src/test/resources/org/restlet/ext/freemarker/template.txt.fmt @@ -0,0 +1 @@ +Method=${m}/Path=${rp} \ No newline at end of file diff --git a/org.restlet.java/org.restlet.ext.gson/pom.xml b/org.restlet.java/org.restlet.ext.gson/pom.xml index 796c8546a7..eb3aaa92f8 100644 --- a/org.restlet.java/org.restlet.ext.gson/pom.xml +++ b/org.restlet.java/org.restlet.ext.gson/pom.xml @@ -30,6 +30,12 @@ org.restlet ${project.version} + + org.junit.jupiter + junit-jupiter-api + ${lib-junit-version} + test + diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/gson/GsonTestCase.java b/org.restlet.java/org.restlet.ext.gson/src/test/java/org/restlet/ext/gson/GsonTestCase.java similarity index 65% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/gson/GsonTestCase.java rename to org.restlet.java/org.restlet.ext.gson/src/test/java/org/restlet/ext/gson/GsonTestCase.java index 48f588c17b..9399532611 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/gson/GsonTestCase.java +++ b/org.restlet.java/org.restlet.ext.gson/src/test/java/org/restlet/ext/gson/GsonTestCase.java @@ -1,41 +1,33 @@ /** * 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.ext.gson; +package org.restlet.ext.gson; -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.io.IOException; -import java.io.Reader; -import java.io.StringReader; -import java.util.Date; - +import com.google.gson.annotations.Since; import org.joda.time.DateTime; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.restlet.data.MediaType; -import org.restlet.ext.gson.GsonConverter; -import org.restlet.ext.gson.GsonRepresentation; import org.restlet.representation.EmptyRepresentation; -import org.restlet.representation.ReaderRepresentation; import org.restlet.representation.Representation; +import org.restlet.representation.StringRepresentation; import org.restlet.representation.Variant; -import com.google.gson.annotations.Since; +import java.io.IOException; +import java.util.Date; + +import static org.junit.jupiter.api.Assertions.*; /** * Unit test for the Gson extension. - * + * * @author Neal Mi */ public class GsonTestCase { @@ -90,19 +82,19 @@ public boolean isActive() { } } - private GsonConverter c; + private GsonConverter gsonConverter; private User user; @BeforeEach public void setUpEach() throws Exception { user = new User("hello", "secret", 1, true, new Date(), new Date()); - c = new GsonConverter(); + gsonConverter = new GsonConverter(); } @Test public final void testCreateMediaTypeT() { - Representation rep = new GsonRepresentation(user); + Representation rep = new GsonRepresentation<>(user); assertNotNull(rep); assertEquals(rep.getMediaType(), MediaType.APPLICATION_JSON); @@ -110,8 +102,8 @@ public final void testCreateMediaTypeT() { @Test public final void testCreateRepresentationClassOfT() { - Representation rep = new GsonRepresentation(user); - Representation rep1 = new GsonRepresentation(rep, User.class); + Representation rep = new GsonRepresentation<>(user); + Representation rep1 = new GsonRepresentation<>(rep, User.class); assertEquals(rep.getMediaType(), rep1.getMediaType()); assertEquals(rep.getClass(), rep1.getClass()); @@ -119,33 +111,31 @@ public final void testCreateRepresentationClassOfT() { @Test public final void testGsonRepresentationRead() throws IOException { - Reader reader = new StringReader( - "{\"loginId\":\"hello\",\"password\":\"secret\",\"rate\":1,\"active\":true,\"createAt\":\"2012-05-20T15:41:01.489+08:00\",\"lastLogin\":\"2012-05-20T15:41:01.489+08:00\"}"); - Representation source = new ReaderRepresentation(reader); - source.setMediaType(MediaType.APPLICATION_JSON); + final String userAsJsonString = "{\"loginId\":\"hello\",\"password\":\"secret\",\"rate\":1,\"active\":true,\"createAt\":\"2012-05-20T15:41:01.489+08:00\",\"lastLogin\":\"2012-05-20T15:41:01.489+08:00\"}"; + Representation source = new StringRepresentation(userAsJsonString, MediaType.APPLICATION_JSON); - GsonRepresentation gsonRep = new GsonRepresentation<>(source, - User.class); - User u = gsonRep.getObject(); + GsonRepresentation gsonRep = new GsonRepresentation<>(source, User.class); + User user = gsonRep.getObject(); - assertNotNull(u); - assertEquals("hello", u.getLoginId()); - assertEquals("secret", u.getPassword()); - assertEquals(1, u.getRate()); - assertTrue(u.isActive()); + assertNotNull(user); + assertEquals("hello", user.getLoginId()); + assertEquals("secret", user.getPassword()); + assertEquals(1, user.getRate()); + assertTrue(user.isActive()); DateTime time = new DateTime("2012-05-20T15:41:01.489+08:00"); - assertEquals(time.getMillis(), u.getCreateAt().getTime()); - - Reader reader1 = new StringReader( - "{\"loginId\":\"hello\",\"password\":\"secret\",\"rate\":1,\"active\":true,\"createAt\":\"2012-05-20T15:41:01.489+08:00\",\"lastLogin\":\"2012-05-20T15:41:01.489+08:00\"}"); - Representation source1 = new ReaderRepresentation(reader1); - - GsonRepresentation gsonRep1 = new GsonRepresentation<>( - source1, User.class); + assertEquals(time.getMillis(), user.getCreateAt().getTime()); + assertEquals(time.getMillis(), user.getLastLogin().getTime()); + GsonRepresentation gsonRep1 = new GsonRepresentation<>(source, User.class); gsonRep1.getBuilder().setVersion(1.0); + User u1 = gsonRep1.getObject(); assertNull(u1.getLastLogin()); + assertEquals("hello", u1.getLoginId()); + assertEquals("secret", u1.getPassword()); + assertEquals(1, u1.getRate()); + assertTrue(u1.isActive()); + assertEquals(time.getMillis(), u1.getCreateAt().getTime()); } @Test @@ -154,22 +144,17 @@ public final void testGsonRepresentationWrite() throws IOException { assertEquals(User.class, source.getObjectClass()); assertEquals(user, source.getObject()); - source.write(System.out); - System.out.println(); + assertTrue(source.getText().contains("lastLogin")); source.getBuilder().setVersion(1.0); - source.write(System.out); - System.out.println(); + assertFalse(source.getText().contains("lastLogin")); String text = "What's going on?"; - GsonRepresentation source1 = new GsonRepresentation<>( - text); + GsonRepresentation source1 = new GsonRepresentation<>(text); assertEquals(String.class, source1.getObjectClass()); assertEquals(text, source1.getObject()); - source1.write(System.out); - System.out.println(); - + assertEquals("\"What\\u0027s going on?\"", source1.getText()); } @Test @@ -177,10 +162,10 @@ public final void testScoreObjectVariantResource() { Variant v = new Variant(MediaType.APPLICATION_JSON); Representation source = new GsonRepresentation<>(user); - float score = c.score(user, v, null); + float score = gsonConverter.score(user, v, null); assertEquals(0.8F, score); - float score1 = c.score(source, v, null); + float score1 = gsonConverter.score(source, v, null); assertEquals(1.0F , score1); } @@ -188,12 +173,12 @@ public final void testScoreObjectVariantResource() { public final void testScoreRepresentationClassOfTResource() { Representation source = new GsonRepresentation(user); - float score = c.score(source, User.class, null); + float score = gsonConverter.score(source, User.class, null); assertEquals(1.0F, score); Representation source1 = new EmptyRepresentation(); - float score1 = c.score(source1, User.class, null); + float score1 = gsonConverter.score(source1, User.class, null); assertEquals(0.8F, score1); } @@ -202,17 +187,17 @@ public final void testToObjectRepresentationClassOfTResource() throws IOException { Representation source = new GsonRepresentation<>(user); - User u = c.toObject(source, User.class, null); + User u = gsonConverter.toObject(source, User.class, null); assertNotNull(u); assertEquals(user, u); Representation source1 = new GsonRepresentation<>(user); - User u1 = c.toObject(source1, User.class, null); + User u1 = gsonConverter.toObject(source1, User.class, null); assertNotNull(u1); assertEquals(user, u1); Representation source2 = new GsonRepresentation(null); - User u2 = c.toObject(source2, User.class, null); + User u2 = gsonConverter.toObject(source2, User.class, null); assertNull(u2); } @@ -220,12 +205,12 @@ public final void testToObjectRepresentationClassOfTResource() public final void testToRepresentationObjectVariantResource() throws IOException { Variant v = new Variant(MediaType.APPLICATION_JSON); - Representation rep = c.toRepresentation(user, v, null); + Representation rep = gsonConverter.toRepresentation(user, v, null); assertNotNull(rep); assertEquals(rep.getMediaType(), MediaType.APPLICATION_JSON); Variant v1 = new Variant(MediaType.APPLICATION_XML); - Representation rep1 = c.toRepresentation(user, v1, null); + Representation rep1 = gsonConverter.toRepresentation(user, v1, null); assertNull(rep1); } diff --git a/org.restlet.java/org.restlet.ext.guice/pom.xml b/org.restlet.java/org.restlet.ext.guice/pom.xml index 59b02a282e..f30b98676e 100644 --- a/org.restlet.java/org.restlet.ext.guice/pom.xml +++ b/org.restlet.java/org.restlet.ext.guice/pom.xml @@ -25,6 +25,12 @@ org.restlet ${project.version} + + org.junit.jupiter + junit-jupiter-api + ${lib-junit-version} + test + diff --git a/org.restlet.java/org.restlet.ext.guice/src/main/java/org/restlet/ext/guice/SelfInjectingServerResourceModule.java b/org.restlet.java/org.restlet.ext.guice/src/main/java/org/restlet/ext/guice/SelfInjectingServerResourceModule.java index 978d14ecd0..542a4d342d 100644 --- a/org.restlet.java/org.restlet.ext.guice/src/main/java/org/restlet/ext/guice/SelfInjectingServerResourceModule.java +++ b/org.restlet.java/org.restlet.ext.guice/src/main/java/org/restlet/ext/guice/SelfInjectingServerResourceModule.java @@ -34,10 +34,6 @@ protected final void configure() { @Provides MembersInjector membersInjector(final Injector injector) { - return new MembersInjector() { - public void injectMembers(Object object) { - injector.injectMembers(object); - } - }; + return injector::injectMembers; } } diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/guice/GuiceSelfInjectingServerResourceModuleTestCase.java b/org.restlet.java/org.restlet.ext.guice/src/test/java/org/restlet/ext/guice/GuiceSelfInjectingServerResourceModuleTestCase.java similarity index 75% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/guice/GuiceSelfInjectingServerResourceModuleTestCase.java rename to org.restlet.java/org.restlet.ext.guice/src/test/java/org/restlet/ext/guice/GuiceSelfInjectingServerResourceModuleTestCase.java index 3d41b2b73b..b28d6d6617 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/guice/GuiceSelfInjectingServerResourceModuleTestCase.java +++ b/org.restlet.java/org.restlet.ext.guice/src/test/java/org/restlet/ext/guice/GuiceSelfInjectingServerResourceModuleTestCase.java @@ -7,34 +7,26 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.ext.guice; - -import static org.junit.jupiter.api.Assertions.assertEquals; +package org.restlet.ext.guice; +import com.google.inject.AbstractModule; +import com.google.inject.Guice; +import com.google.inject.Provides; import jakarta.inject.Inject; import jakarta.inject.Named; - 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.Restlet; +import org.restlet.*; import org.restlet.data.MediaType; import org.restlet.data.Protocol; -import org.restlet.ext.guice.SelfInjectingServerResource; -import org.restlet.ext.guice.SelfInjectingServerResourceModule; import org.restlet.resource.ClientResource; import org.restlet.resource.Get; import org.restlet.routing.Router; -import org.restlet.test.RestletTestCase; -import com.google.inject.AbstractModule; -import com.google.inject.Guice; -import com.google.inject.Provides; +import static org.junit.jupiter.api.Assertions.assertEquals; -public class GuiceSelfInjectingServerResourceModuleTestCase extends RestletTestCase { +public class GuiceSelfInjectingServerResourceModuleTestCase { public interface HelloResource { @Get @@ -91,24 +83,23 @@ String helloMessage() { private volatile Client client; private volatile Component component; + private volatile Application application; + + private int testPort; @BeforeEach protected void setUpEach() throws Exception { - Guice.createInjector(new TestModule(), - new SelfInjectingServerResourceModule()); + Guice.createInjector(new TestModule(), new SelfInjectingServerResourceModule()); this.client = new Client(Protocol.HTTP); - if (component == null) { - component = new Component(); - component.getServers().add(Protocol.HTTP, TEST_PORT); - component.getDefaultHost().attachDefault(new TestApplication()); - } - - if (!this.component.isStarted()) { - this.component.start(); - } + application = new TestApplication(); + component = new Component(); + Server server = component.getServers().add(Protocol.HTTP, 0); + component.getDefaultHost().attachDefault(application); + this.component.start(); + testPort = server.getActualPort(); } @AfterEach @@ -120,11 +111,9 @@ public void tearDownEach() throws Exception { @Test public void testReturnsMessage() { - ClientResource client = new ClientResource("http://localhost:" - + TEST_PORT); + ClientResource client = new ClientResource("http://localhost:" + testPort); client.accept(MediaType.TEXT_PLAIN); - String msg = client.getChild("/hello", HelloResource.class) - .getMessage(); + String msg = client.getChild("/hello", HelloResource.class).getMessage(); assertEquals(HELLO_MSG, msg); } } diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/guice/GuiceWrappedFinderTestCase.java b/org.restlet.java/org.restlet.ext.guice/src/test/java/org/restlet/ext/guice/GuiceWrappedFinderTestCase.java similarity index 87% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/guice/GuiceWrappedFinderTestCase.java rename to org.restlet.java/org.restlet.ext.guice/src/test/java/org/restlet/ext/guice/GuiceWrappedFinderTestCase.java index b4ed757d0e..e1831c8d7d 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/guice/GuiceWrappedFinderTestCase.java +++ b/org.restlet.java/org.restlet.ext.guice/src/test/java/org/restlet/ext/guice/GuiceWrappedFinderTestCase.java @@ -7,36 +7,31 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.ext.guice; - -import static org.junit.jupiter.api.Assertions.assertEquals; +package org.restlet.ext.guice; +import com.google.inject.AbstractModule; +import com.google.inject.Guice; +import com.google.inject.Injector; +import com.google.inject.Provides; import jakarta.inject.Inject; import jakarta.inject.Named; - 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.Restlet; +import org.restlet.Server; import org.restlet.data.MediaType; import org.restlet.data.Protocol; -import org.restlet.ext.guice.ResourceInjectingApplication; -import org.restlet.ext.guice.SelfInjectingServerResource; -import org.restlet.ext.guice.SelfInjectingServerResourceModule; 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 com.google.inject.AbstractModule; -import com.google.inject.Guice; -import com.google.inject.Injector; -import com.google.inject.Provides; +import static org.junit.jupiter.api.Assertions.assertEquals; -public class GuiceWrappedFinderTestCase extends RestletTestCase { +public class GuiceWrappedFinderTestCase { public interface HelloResource { @Get @@ -100,11 +95,17 @@ public Restlet createInboundRoot() { } public static final class MyComponent extends Component { + private final Server server; + @Inject MyComponent(MyApp myApp) { - getServers().add(Protocol.HTTP, TEST_PORT); + server = getServers().add(Protocol.HTTP, 0); getDefaultHost().attachDefault(myApp); } + + int getActualHttpServerPort() { + return server.getActualPort(); + } } static class TestModule extends AbstractModule { @@ -128,7 +129,8 @@ String helloMessage() { private volatile Client client; - private volatile Component component; + private volatile MyComponent component; + private volatile int testPort; @BeforeEach protected void setUpEach() throws Exception { @@ -141,10 +143,8 @@ protected void setUpEach() throws Exception { component = injector.getInstance(MyComponent.class); } - if (!this.component.isStarted()) { - this.component.start(); - } - + this.component.start(); + testPort = component.getActualHttpServerPort(); } @AfterEach @@ -156,8 +156,7 @@ public void tearDownEach() throws Exception { @Test public void testHiReturnsMessage() { - ClientResource client = new ClientResource("http://localhost:" - + TEST_PORT); + ClientResource client = new ClientResource("http://localhost:" + testPort); client.accept(MediaType.TEXT_PLAIN); String msg = client.getChild("/hi", HelloResource.class).getMessage(); assertEquals(HI_MSG, msg); @@ -165,11 +164,9 @@ public void testHiReturnsMessage() { @Test public void testReturnsMessage() { - ClientResource client = new ClientResource("http://localhost:" - + TEST_PORT); + ClientResource client = new ClientResource("http://localhost:" + testPort); client.accept(MediaType.TEXT_PLAIN); - String msg = client.getChild("/hello", HelloResource.class) - .getMessage(); + String msg = client.getChild("/hello", HelloResource.class).getMessage(); assertEquals(HELLO_MSG, msg); } } diff --git a/org.restlet.java/org.restlet.ext.jackson/pom.xml b/org.restlet.java/org.restlet.ext.jackson/pom.xml index 0b4029a2a2..47bb2806a6 100644 --- a/org.restlet.java/org.restlet.ext.jackson/pom.xml +++ b/org.restlet.java/org.restlet.ext.jackson/pom.xml @@ -65,6 +65,12 @@ org.restlet ${project.version} + + org.junit.jupiter + junit-jupiter-api + ${lib-junit-version} + test + diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/jackson/Customer.java b/org.restlet.java/org.restlet.ext.jackson/src/test/java/org/restlet/ext/jackson/Customer.java similarity index 95% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/jackson/Customer.java rename to org.restlet.java/org.restlet.ext.jackson/src/test/java/org/restlet/ext/jackson/Customer.java index e34c528a54..c7d1e90011 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/jackson/Customer.java +++ b/org.restlet.java/org.restlet.ext.jackson/src/test/java/org/restlet/ext/jackson/Customer.java @@ -7,7 +7,7 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.ext.jackson; +package org.restlet.ext.jackson; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/jackson/Invoice.java b/org.restlet.java/org.restlet.ext.jackson/src/test/java/org/restlet/ext/jackson/Invoice.java similarity index 95% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/jackson/Invoice.java rename to org.restlet.java/org.restlet.ext.jackson/src/test/java/org/restlet/ext/jackson/Invoice.java index 3994773ee4..1151102489 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/jackson/Invoice.java +++ b/org.restlet.java/org.restlet.ext.jackson/src/test/java/org/restlet/ext/jackson/Invoice.java @@ -7,7 +7,7 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.ext.jackson; +package org.restlet.ext.jackson; import java.util.Date; diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/jackson/JacksonTestCase.java b/org.restlet.java/org.restlet.ext.jackson/src/test/java/org/restlet/ext/jackson/JacksonTestCase.java similarity index 58% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/jackson/JacksonTestCase.java rename to org.restlet.java/org.restlet.ext.jackson/src/test/java/org/restlet/ext/jackson/JacksonTestCase.java index 941c89f031..aea896a2a8 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/jackson/JacksonTestCase.java +++ b/org.restlet.java/org.restlet.ext.jackson/src/test/java/org/restlet/ext/jackson/JacksonTestCase.java @@ -7,27 +7,27 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.ext.jackson; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; - -import java.util.Date; +package org.restlet.ext.jackson; +import com.fasterxml.jackson.core.JsonParseException; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.restlet.data.MediaType; -import org.restlet.ext.jackson.JacksonRepresentation; import org.restlet.representation.Representation; import org.restlet.representation.StringRepresentation; import org.restlet.resource.ClientResource; -import org.restlet.test.RestletTestCase; + +import java.util.Date; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; /** * Unit test for the Jackson extension. * * @author Jerome Louvel */ -public class JacksonTestCase extends RestletTestCase { +public class JacksonTestCase { protected Customer createCustomer() { Date date = new Date(1356533333882L); @@ -63,13 +63,11 @@ protected Invoice createInvoice() { @Test public void testCsv() throws Exception { Invoice invoice = createInvoice(); - JacksonRepresentation rep = new JacksonRepresentation<>( - MediaType.TEXT_CSV, invoice); + JacksonRepresentation rep = new JacksonRepresentation<>(MediaType.TEXT_CSV, invoice); String text = rep.getText(); - assertEquals("12456,1356533333882,false\n", text); - rep = new JacksonRepresentation<>(new StringRepresentation(text, - rep.getMediaType()), Invoice.class); - verify(invoice, rep.getObject()); + Assertions.assertEquals("12456,1356533333882,false\n", text); + rep = new JacksonRepresentation<>(new StringRepresentation(text, rep.getMediaType()), Invoice.class); + assertEquals(invoice, rep.getObject()); } @Test @@ -84,7 +82,7 @@ public void testException() throws Exception { JacksonRepresentation rep = new JacksonRepresentation<>(MediaType.APPLICATION_JSON, me); rep = new JacksonRepresentation<>(new StringRepresentation(rep.getText(), rep.getMediaType()), MyException.class); - verify(me, rep.getObject()); + assertEquals(me, rep.getObject()); } @Test @@ -92,92 +90,95 @@ public void testJson() throws Exception { Customer customer = createCustomer(); JacksonRepresentation rep = new JacksonRepresentation<>(MediaType.APPLICATION_JSON, customer); String text = rep.getText(); - assertEquals( + + Assertions.assertEquals( "{\"firstName\":\"Foo\",\"lastName\":\"Bar\",\"invoices\":[{\"date\":1356533333882,\"amount\":12456,\"paid\":false},{\"date\":1356533333882,\"amount\":7890,\"paid\":true}]}", text); - rep = new JacksonRepresentation<>(new StringRepresentation( - text, rep.getMediaType()), Customer.class); - verify(customer, rep.getObject()); + rep = new JacksonRepresentation<>(new StringRepresentation(text, rep.getMediaType()), Customer.class); + assertEquals(customer, rep.getObject()); } @Test public void testSmile() throws Exception { Customer customer = createCustomer(); - JacksonRepresentation rep = new JacksonRepresentation<>( - MediaType.APPLICATION_JSON_SMILE, customer); + JacksonRepresentation rep = new JacksonRepresentation<>(MediaType.APPLICATION_JSON_SMILE, customer); rep = new JacksonRepresentation<>(rep, Customer.class); - verify(customer, rep.getObject()); + assertEquals(customer, rep.getObject()); } @Test public void testXml() throws Exception { Customer customer = createCustomer(); - JacksonRepresentation rep = new JacksonRepresentation<>( - MediaType.APPLICATION_XML, customer); + JacksonRepresentation rep = new JacksonRepresentation<>(MediaType.APPLICATION_XML, customer); String text = rep.getText(); - assertEquals( + Assertions.assertEquals( "FooBar135653333388212456false13565333338827890true", text); - rep = new JacksonRepresentation<>(new StringRepresentation( - text, rep.getMediaType()), Customer.class); - verify(customer, rep.getObject()); + + rep = new JacksonRepresentation<>(new StringRepresentation(text, rep.getMediaType()), Customer.class); + assertEquals(customer, rep.getObject()); } @Test public void testXmlBomb() { - ClientResource cr = new ClientResource( - "clap://class/org/restlet/test/ext/jackson/jacksonBomb.xml"); + ClientResource cr = new ClientResource("clap://class/org/restlet/ext/jackson/jacksonBomb.xml"); Representation xmlRep = cr.get(); xmlRep.setMediaType(MediaType.APPLICATION_XML); - boolean error = false; - try { - new JacksonRepresentation<>(xmlRep, Customer.class) - .getObject(); - } catch (Exception e) { - error = true; - } - assertTrue(error); + + Exception exception = assertThrows(JsonParseException.class, + () -> new JacksonRepresentation<>(xmlRep, Customer.class).getObject()); + String expected = """ + Undeclared general entity "lol10" + at [row,col {unknown-source}]: [14,31] + at [Source: (BufferedInputStream); line: 14, column: 32]"""; + Assertions.assertEquals(expected, exception.getMessage()); } @Test public void testYaml() throws Exception { Customer customer = createCustomer(); - JacksonRepresentation rep = new JacksonRepresentation<>( - MediaType.APPLICATION_YAML, customer); + JacksonRepresentation rep = new JacksonRepresentation<>(MediaType.APPLICATION_YAML, customer); String text = rep.getText(); - assertEquals("---\n" + "firstName: \"Foo\"\n" + "lastName: \"Bar\"\n" - + "invoices:\n" + "- date: 1356533333882\n" - + " amount: 12456\n" + " paid: false\n" - + "- date: 1356533333882\n" + " amount: 7890\n" - + " paid: true\n", text); - rep = new JacksonRepresentation<>(new StringRepresentation( - text, rep.getMediaType()), Customer.class); - verify(customer, rep.getObject()); + + Assertions.assertEquals(""" + --- + firstName: "Foo" + lastName: "Bar" + invoices: + - date: 1356533333882 + amount: 12456 + paid: false + - date: 1356533333882 + amount: 7890 + paid: true + """, text); + + rep = new JacksonRepresentation<>(new StringRepresentation(text, rep.getMediaType()), Customer.class); + assertEquals(customer, rep.getObject()); } - protected void verify(Customer customer1, Customer customer2) { - assertEquals(customer1.getFirstName(), customer2.getFirstName()); - assertEquals(customer1.getLastName(), customer2.getLastName()); - assertEquals(customer1.getInvoices().size(), customer2.getInvoices() - .size()); - assertEquals(customer1.getInvoices().get(0).getAmount(), customer2 + protected void assertEquals(Customer customer1, Customer customer2) { + Assertions.assertEquals(customer1.getFirstName(), customer2.getFirstName()); + Assertions.assertEquals(customer1.getLastName(), customer2.getLastName()); + Assertions.assertEquals(customer1.getInvoices().size(), customer2.getInvoices().size()); + Assertions.assertEquals(customer1.getInvoices().get(0).getAmount(), customer2 .getInvoices().get(0).getAmount()); - assertEquals(customer1.getInvoices().get(1).getAmount(), customer2 + Assertions.assertEquals(customer1.getInvoices().get(1).getAmount(), customer2 .getInvoices().get(1).getAmount()); - assertEquals(customer1.getInvoices().get(0).getDate(), customer2 + Assertions.assertEquals(customer1.getInvoices().get(0).getDate(), customer2 .getInvoices().get(0).getDate()); - assertEquals(customer1.getInvoices().get(1).getDate(), customer2 + Assertions.assertEquals(customer1.getInvoices().get(1).getDate(), customer2 .getInvoices().get(1).getDate()); } - protected void verify(Invoice invoice1, Invoice invoice2) { - assertEquals(invoice1.getAmount(), invoice2.getAmount()); - assertEquals(invoice1.getDate(), invoice2.getDate()); + protected void assertEquals(Invoice invoice1, Invoice invoice2) { + Assertions.assertEquals(invoice1.getAmount(), invoice2.getAmount()); + Assertions.assertEquals(invoice1.getDate(), invoice2.getDate()); } - protected void verify(MyException me1, MyException me2) { - assertEquals(me1.getErrorCode(), me2.getErrorCode()); - verify(me1.getCustomer(), me2.getCustomer()); + protected void assertEquals(MyException me1, MyException me2) { + Assertions.assertEquals(me1.getErrorCode(), me2.getErrorCode()); + assertEquals(me1.getCustomer(), me2.getCustomer()); } } diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/jackson/MyException.java b/org.restlet.java/org.restlet.ext.jackson/src/test/java/org/restlet/ext/jackson/MyException.java similarity index 97% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/jackson/MyException.java rename to org.restlet.java/org.restlet.ext.jackson/src/test/java/org/restlet/ext/jackson/MyException.java index 73054848cc..f900aa764d 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/jackson/MyException.java +++ b/org.restlet.java/org.restlet.ext.jackson/src/test/java/org/restlet/ext/jackson/MyException.java @@ -7,7 +7,7 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.ext.jackson; +package org.restlet.ext.jackson; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/jackson/jacksonBomb.xml b/org.restlet.java/org.restlet.ext.jackson/src/test/resources/org/restlet/ext/jackson/jacksonBomb.xml similarity index 100% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/jackson/jacksonBomb.xml rename to org.restlet.java/org.restlet.ext.jackson/src/test/resources/org/restlet/ext/jackson/jacksonBomb.xml diff --git a/org.restlet.java/org.restlet.ext.jaxb/pom.xml b/org.restlet.java/org.restlet.ext.jaxb/pom.xml index 37813daafe..1754d07a4d 100644 --- a/org.restlet.java/org.restlet.ext.jaxb/pom.xml +++ b/org.restlet.java/org.restlet.ext.jaxb/pom.xml @@ -25,11 +25,22 @@ jaxb-api ${lib-jaxb-api-version} + + com.sun.istack + istack-commons-runtime + ${lib-istack-version} + org.restlet org.restlet ${project.version} + + org.junit.jupiter + junit-jupiter-params + ${lib-junit-version} + test + diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/jaxb/JaxbBasicConverterTestCase.java b/org.restlet.java/org.restlet.ext.jaxb/src/test/java/org/restlet/ext/jaxb/JaxbBasicConverterTestCase.java similarity index 83% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/jaxb/JaxbBasicConverterTestCase.java rename to org.restlet.java/org.restlet.ext.jaxb/src/test/java/org/restlet/ext/jaxb/JaxbBasicConverterTestCase.java index cd74ed9e90..82c2248505 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/jaxb/JaxbBasicConverterTestCase.java +++ b/org.restlet.java/org.restlet.ext.jaxb/src/test/java/org/restlet/ext/jaxb/JaxbBasicConverterTestCase.java @@ -7,26 +7,23 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.ext.jaxb; - -import static org.junit.jupiter.api.Assertions.assertInstanceOf; - -import java.io.IOException; +package org.restlet.ext.jaxb; import org.junit.jupiter.api.Test; import org.restlet.data.MediaType; -import org.restlet.ext.jaxb.JaxbConverter; -import org.restlet.ext.jaxb.JaxbRepresentation; import org.restlet.representation.Representation; import org.restlet.representation.Variant; -import org.restlet.test.RestletTestCase; + +import java.io.IOException; + +import static org.junit.jupiter.api.Assertions.assertInstanceOf; /** * Tests basic Conversion using the JaxbConverter * * @author Sanjay Acharya */ -public class JaxbBasicConverterTestCase extends RestletTestCase { +public class JaxbBasicConverterTestCase { @Test public void testObjectionToRepresentation() { diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/jaxb/JaxbIntegrationConverterTestCase.java b/org.restlet.java/org.restlet.ext.jaxb/src/test/java/org/restlet/ext/jaxb/JaxbIntegrationConverterTestCase.java similarity index 57% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/jaxb/JaxbIntegrationConverterTestCase.java rename to org.restlet.java/org.restlet.ext.jaxb/src/test/java/org/restlet/ext/jaxb/JaxbIntegrationConverterTestCase.java index b8cc6df5a6..08bd4b6dbe 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/jaxb/JaxbIntegrationConverterTestCase.java +++ b/org.restlet.java/org.restlet.ext.jaxb/src/test/java/org/restlet/ext/jaxb/JaxbIntegrationConverterTestCase.java @@ -7,41 +7,27 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.ext.jaxb; - -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.util.ArrayList; -import java.util.Arrays; -import java.util.List; +package org.restlet.ext.jaxb; 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.Server; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; +import org.restlet.*; import org.restlet.data.MediaType; import org.restlet.data.Method; import org.restlet.data.Preference; import org.restlet.data.Protocol; import org.restlet.engine.Engine; -import org.restlet.ext.jaxb.JaxbConverter; -import org.restlet.ext.jaxb.JaxbRepresentation; -import org.restlet.resource.ClientResource; -import org.restlet.resource.Get; -import org.restlet.resource.Post; -import org.restlet.resource.Put; -import org.restlet.resource.ServerResource; +import org.restlet.resource.*; import org.restlet.routing.Router; -import org.restlet.test.RestletTestCase; + +import java.util.List; +import java.util.stream.Stream; + +import static org.junit.jupiter.api.Assertions.*; /** * Simple Integration Tests that uses the JAXB Converter to perform POST, PUT @@ -52,10 +38,7 @@ * * @author Sanjay Acharya */ -public class JaxbIntegrationConverterTestCase extends RestletTestCase { - - // TODO restore jaxb tests (currently an exception is sent: - // java.lang.NoClassDefFoundError: com/sun/istack/FinalArrayList +public class JaxbIntegrationConverterTestCase { private static final String IN_STRING = "foo"; @@ -71,7 +54,7 @@ public void setUpEach() throws Exception { Engine.getInstance().getRegisteredConverters().add(new JaxbConverter()); this.component = new Component(); final Server server = this.component.getServers().add(Protocol.HTTP, 0); - final Application application = createApplication(this.component); + final Application application = createApplication(); this.component.getDefaultHost().attach(application); this.component.start(); uri = "http://localhost:" + server.getEphemeralPort() + "/test"; @@ -86,8 +69,8 @@ public void tearDownEach() throws Exception { this.component = null; } - protected Application createApplication(Component component) { - final Application application = new Application() { + protected Application createApplication() { + return new Application() { @Override public Restlet createInboundRoot() { final Router router = new Router(getContext()); @@ -95,55 +78,38 @@ public Restlet createInboundRoot() { return router; } }; - - return application; } - /** - * Test POST, PUT and GET using the Client class - * - * @throws Exception - */ - // TODO restore test @Test - public void testIntegration() throws Exception { - Client client = new Client(new Context(), Arrays.asList(Protocol.HTTP)); - Request request = new Request(Method.POST, uri); - request.setEntity(new JaxbRepresentation<>(new Sample(IN_STRING))); + @ParameterizedTest + @MethodSource("integrationTestCases") + public void testIntegration(final Method method, final String input, final String expectedResponse) throws Exception { + Client client = new Client(Protocol.HTTP); + Request request = new Request(method, uri); + request.setEntity(new JaxbRepresentation<>(new Sample(input))); Response response = client.handle(request); JaxbRepresentation resultRepresentation = new JaxbRepresentation<>(response.getEntity(), Sample.class); Sample sample = resultRepresentation.getObject(); - assertEquals(HELLO_OUT_STRING, sample.getVal()); - - request = new Request(Method.PUT, uri); - request.setEntity(new JaxbRepresentation<>(new Sample(IN_STRING))); - - response = client.handle(request); - resultRepresentation = new JaxbRepresentation<>( - response.getEntity(), Sample.class); - sample = resultRepresentation.getObject(); - assertEquals(HELLO_OUT_STRING, sample.getVal()); - - request = new Request(Method.GET, uri); - response = client.handle(request); - resultRepresentation = new JaxbRepresentation<>( - response.getEntity(), Sample.class); - sample = resultRepresentation.getObject(); - assertEquals(IN_STRING, sample.getVal()); + assertEquals(expectedResponse, sample.getVal()); + } - client.stop(); + public static Stream integrationTestCases() { + return Stream.of( + Arguments.of(Method.POST, IN_STRING, HELLO_OUT_STRING), + Arguments.of(Method.PUT, IN_STRING, HELLO_OUT_STRING), + Arguments.of(Method.GET, null, IN_STRING) + ); } /** * Test POST, PUT and GET using the ClientResource class * */ - // TODO restore test @Test + @Test public void testWithClientResource() { ClientResource sampleResource = new ClientResource(uri); - List> m = new ArrayList<>(); - m.add(new Preference<>(MediaType.APPLICATION_XML)); + List> m = List.of(new Preference<>(MediaType.APPLICATION_XML)); sampleResource.getClientInfo().setAcceptedMediaTypes(m); Sample sample = new Sample(IN_STRING); diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/jaxb/ObjectFactory.java b/org.restlet.java/org.restlet.ext.jaxb/src/test/java/org/restlet/ext/jaxb/ObjectFactory.java similarity index 92% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/jaxb/ObjectFactory.java rename to org.restlet.java/org.restlet.ext.jaxb/src/test/java/org/restlet/ext/jaxb/ObjectFactory.java index a38082acd2..47809476aa 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/jaxb/ObjectFactory.java +++ b/org.restlet.java/org.restlet.ext.jaxb/src/test/java/org/restlet/ext/jaxb/ObjectFactory.java @@ -7,7 +7,7 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.ext.jaxb; +package org.restlet.ext.jaxb; import javax.xml.bind.annotation.XmlRegistry; diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/jaxb/Sample.java b/org.restlet.java/org.restlet.ext.jaxb/src/test/java/org/restlet/ext/jaxb/Sample.java similarity index 96% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/jaxb/Sample.java rename to org.restlet.java/org.restlet.ext.jaxb/src/test/java/org/restlet/ext/jaxb/Sample.java index 5ef97933e7..cb57eefe00 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/jaxb/Sample.java +++ b/org.restlet.java/org.restlet.ext.jaxb/src/test/java/org/restlet/ext/jaxb/Sample.java @@ -7,7 +7,7 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.ext.jaxb; +package org.restlet.ext.jaxb; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; diff --git a/org.restlet.java/org.restlet.ext.jetty/pom.xml b/org.restlet.java/org.restlet.ext.jetty/pom.xml index 0b3bae7a31..3d48e9ad02 100644 --- a/org.restlet.java/org.restlet.ext.jetty/pom.xml +++ b/org.restlet.java/org.restlet.ext.jetty/pom.xml @@ -50,6 +50,12 @@ org.restlet ${project.version} + + org.junit.jupiter + junit-jupiter-params + ${lib-junit-version} + test + diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/connector/AsyncTestCase.java b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/AsyncTestCase.java similarity index 87% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/connector/AsyncTestCase.java rename to org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/AsyncTestCase.java index d399bcac9f..2f2c6fea06 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/connector/AsyncTestCase.java +++ b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/AsyncTestCase.java @@ -7,41 +7,26 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.engine.connector; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertTrue; - -import java.util.concurrent.CountDownLatch; +package org.restlet.ext.jetty; 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.Context; -import org.restlet.Request; -import org.restlet.Response; -import org.restlet.Restlet; -import org.restlet.Server; -import org.restlet.Uniform; -import org.restlet.data.MediaType; -import org.restlet.data.Method; -import org.restlet.data.Protocol; -import org.restlet.data.Reference; -import org.restlet.data.Status; +import org.restlet.*; +import org.restlet.data.*; import org.restlet.representation.Representation; import org.restlet.representation.StringRepresentation; -import org.restlet.test.RestletTestCase; + +import java.util.concurrent.CountDownLatch; + +import static org.junit.jupiter.api.Assertions.*; /** * Unit tests for asynchronous queued Request handling. * * @author Florian Buecklers */ -public class AsyncTestCase extends RestletTestCase { +public class AsyncTestCase { private Context context; @@ -49,6 +34,8 @@ public class AsyncTestCase extends RestletTestCase { private Component originComponent; + private int testPort; + private boolean requestEntityExpected(Method method) { return method == Method.POST || method == Method.PUT; } @@ -90,8 +77,7 @@ public void handle(Request request, Response response) { rep = new StringRepresentation("Item: " + i); } - Reference ref = new Reference("http://localhost:" + TEST_PORT - + "/?item=" + i); + Reference ref = new Reference("http://localhost:" + testPort + "/?item=" + i); Request request = new Request(method, ref, rep); request.setOnResponse(responseHandler); @@ -149,8 +135,7 @@ public void handle(Request request, Response response) { originComponent.getDefaultHost().attach("", trace); // Create the server connectors - Server server = originComponent.getServers().add(Protocol.HTTP, - TEST_PORT); + Server server = originComponent.getServers().add(Protocol.HTTP, 0); server.getContext().getParameters().add("maxQueued", "-1"); // Create the client connectors @@ -162,6 +147,7 @@ public void handle(Request request, Response response) { // Now, let's start the components! originComponent.start(); clientComponent.start(); + testPort = server.getActualPort(); } @Test diff --git a/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/FormDataSetTestCase.java b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/FormDataSetTestCase.java new file mode 100644 index 0000000000..2a3e21efa1 --- /dev/null +++ b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/FormDataSetTestCase.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.ext.jetty; + +import org.junit.jupiter.api.Test; + +import java.io.IOException; + +/** + * Unit tests for the Form class. + * + * @author Jerome Louvel + */ +public class FormDataSetTestCase { + + /** + * Tests the cookies parsing. + */ + @Test + public void testParsing() throws IOException { +/* +TODO restore test of Form class + FormDataSet form = new FormDataSet(); + form.add("name", "John D. Mitchell"); + form.add("email", "john@bob.net"); + form.add("email2", "joe@bob.net"); + String query = form.encode(); + + Series newFormData = new FormReader(query, + CharacterSet.UTF_8, '&').read(); + + FormDataSet newForm = new FormDataSet(); + newForm.getEntries().addAll(newFormData); + String newQuery = newForm.encode(); + + assertEquals(query, newQuery); + */ + } + +} diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/html/MultiPartFormTestCase.java b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/MultiPartFormTestCase.java similarity index 72% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/html/MultiPartFormTestCase.java rename to org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/MultiPartFormTestCase.java index 5bdc025e10..f2f12ccba0 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/html/MultiPartFormTestCase.java +++ b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/MultiPartFormTestCase.java @@ -7,16 +7,16 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.ext.html; +package org.restlet.ext.jetty; -import org.restlet.test.RestletTestCase; +import org.junit.jupiter.api.Test; /** * Test case for the {@link FormDataSet} class in multipart mode. * * @author Jerome Louvel */ -public class MultiPartFormTestCase extends RestletTestCase { +public class MultiPartFormTestCase { /* TODO restore test about support of multi part representations. @@ -82,4 +82,38 @@ public void testWrite() throws IOException { assertEquals(expected, form.getText()); } */ + + /** + * Tests the multipart content-type. + */ + @Test + public void testContentType() { + /* +TODO restore test of Form class + FormDataSet form = null; + + form = new FormDataSet(); + form.setMultipart(true); + assertTrue(form.getMediaType().equals(MediaType.MULTIPART_FORM_DATA, + true)); + + form = new FormDataSet("test"); + assertTrue(form.isMultipart()); + assertTrue(form.getMediaType().equals(MediaType.MULTIPART_FORM_DATA, + true)); + assertEquals( + form.getMediaType().getParameters().getFirstValue("boundary"), + "test"); + form = new FormDataSet(); + + form.setMultipartBoundary("test2"); + assertTrue(form.isMultipart()); + assertTrue(form.getMediaType().equals(MediaType.MULTIPART_FORM_DATA, + true)); + assertEquals( + form.getMediaType().getParameters().getFirstValue("boundary"), + "test2"); + + */ + } } diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/connector/BaseConnectorsTestCase.java b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/BaseConnectorsTestCase.java similarity index 68% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/connector/BaseConnectorsTestCase.java rename to org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/BaseConnectorsTestCase.java index 338f2f0348..c263d83328 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/connector/BaseConnectorsTestCase.java +++ b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/BaseConnectorsTestCase.java @@ -7,7 +7,7 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.engine.connector; +package org.restlet.ext.jetty.connectors; import org.junit.jupiter.api.DynamicTest; import org.junit.jupiter.api.TestFactory; @@ -19,7 +19,6 @@ import org.restlet.engine.adapter.HttpServerHelper; import org.restlet.engine.connector.ClientHelper; import org.restlet.engine.connector.ServerHelper; -import org.restlet.test.RestletTestCase; import java.util.stream.Stream; @@ -32,24 +31,30 @@ * @author Kevin Conaway * @author Jerome Louvel */ -public abstract class BaseConnectorsTestCase extends RestletTestCase { +public abstract class BaseConnectorsTestCase { private Component component; + private int port; protected abstract void doTestUri(String uri) throws Exception; - protected abstract Application createApplication(Component component); + protected Server configureServer(final Component component) { + // server.getContext().getParameters().add("tracing", "true"); + return component.getServers().add(Protocol.HTTP, 0); + } + + protected abstract Application createApplication(); - protected String getCallUri(String host) { - return host + "/test"; + protected String getCallUri(final int port) { + return "http://localhost:" + port + "/test"; } protected Stream listTestCases() { return Stream.of( - // new ConnectorTestCase(HttpServer.INTERNAL, HttpClient.JETTY), // restore while taking care of #1444 - // new ConnectorTestCase(HttpServer.JETTY, HttpClient.INTERNAL), // restore while taking care of #1444 - // new ConnectorTestCase(HttpServer.JETTY, HttpClient.JETTY), // restore while taking care of #1444 - new ConnectorTestCase(HttpServer.INTERNAL, HttpClient.INTERNAL) + // new ConnectorTestCase(HttpServer.INTERNAL_HTTP, HttpClient.JETTY), // restore while taking care of #1444 + // new ConnectorTestCase(HttpServer.JETTY_HTTP, HttpClient.INTERNAL), // restore while taking care of #1444 + // new ConnectorTestCase(HttpServer.JETTY_HTTP, HttpClient.JETTY), // restore while taking care of #1444 + new ConnectorTestCase(HttpServer.INTERNAL_HTTP, HttpClient.INTERNAL) ); } @@ -72,17 +77,19 @@ private void runTest(final HttpServer server, final HttpClient client) throws Ex nre.registerDefaultAuthentications(); nre.registerDefaultConverters(); - String host = start(); - String uri = getCallUri(host); + start(); try { - doTestUri(uri); + doTestUri(getCallUri(port)); } finally { stop(); } } public enum HttpServer { - INTERNAL(new org.restlet.engine.connector.HttpServerHelper(null)), JETTY(new org.restlet.ext.jetty.HttpServerHelper(null)); + INTERNAL_HTTP(new org.restlet.engine.connector.HttpServerHelper(null)), + INTERNAL_HTTPS(new org.restlet.engine.connector.HttpsServerHelper(null)), + JETTY_HTTP(new org.restlet.ext.jetty.HttpServerHelper(null)), + JETTY_HTTPS(new org.restlet.ext.jetty.HttpsServerHelper(null)); final ServerHelper serverHelper; @@ -101,16 +108,14 @@ public enum HttpClient { } } - private String start() throws Exception { + private void start() throws Exception { this.component = new Component(); - Server server = this.component.getServers().add(Protocol.HTTP, 0); - // server.getContext().getParameters().add("tracing", "true"); - Application application = createApplication(this.component); + Server server = configureServer(this.component); + Application application = createApplication(); this.component.getDefaultHost().attach(application); this.component.start(); - - return "http://localhost:" + server.getEphemeralPort(); + this.port = server.getEphemeralPort(); } private void stop() throws Exception { diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/connector/ChunkedEncodingPutTestCase.java b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/ChunkedEncodingPutTestCase.java similarity index 97% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/connector/ChunkedEncodingPutTestCase.java rename to org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/ChunkedEncodingPutTestCase.java index a8dc9abdf8..618d868d49 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/connector/ChunkedEncodingPutTestCase.java +++ b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/ChunkedEncodingPutTestCase.java @@ -7,7 +7,7 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.engine.connector; +package org.restlet.ext.jetty.connectors; import org.restlet.*; import org.restlet.data.MediaType; @@ -45,7 +45,7 @@ protected void doTestUri(String uri) throws Exception { } @Override - protected Application createApplication(Component component) { + protected Application createApplication() { return new Application() { @Override public Restlet createInboundRoot() { diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/connector/ChunkedEncodingTestCase.java b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/ChunkedEncodingTestCase.java similarity index 65% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/connector/ChunkedEncodingTestCase.java rename to org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/ChunkedEncodingTestCase.java index c5aa023f35..28124fe493 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/connector/ChunkedEncodingTestCase.java +++ b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/ChunkedEncodingTestCase.java @@ -1,28 +1,24 @@ /** * 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.engine.connector; +package org.restlet.ext.jetty.connectors; import org.restlet.*; import org.restlet.data.*; import org.restlet.engine.header.HeaderConstants; -import org.restlet.ext.xml.DomRepresentation; import org.restlet.representation.Representation; import org.restlet.representation.StringRepresentation; import org.restlet.representation.Variant; import org.restlet.resource.ServerResource; import org.restlet.routing.Router; -import org.w3c.dom.Document; -import org.w3c.dom.Element; +import org.restlet.util.WrapperRepresentation; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; import java.io.IOException; import static org.junit.jupiter.api.Assertions.*; @@ -37,57 +33,7 @@ public class ChunkedEncodingTestCase extends BaseConnectorsTestCase { private static final int LOOP_NUMBER = 50; - @Override - protected void doTestUri(String uri) throws Exception { - for (int testIndex = 0; testIndex < LOOP_NUMBER; testIndex++) { - sendGet(testIndex, uri); - sendPut(testIndex, uri); - } - } - - @Override - protected Application createApplication(Component component) { - return new Application() { - @Override - public Restlet createInboundRoot() { - final Router router = new Router(getContext()); - router.attach("/test", PutTestResource.class); - return router; - } - }; - } - - - public static class PutTestResource extends ServerResource { - - public PutTestResource() { - getVariants().add(new Variant(MediaType.TEXT_XML)); - setNegotiated(false); - } - - @Override - public Representation get() { - return createTestXml(); - } - - @Override - public Representation put(Representation entity) { - assertChunkedHeader(getRequest()); - - final DomRepresentation dom = new DomRepresentation(entity); - DomRepresentation rep = null; - try { - final Document doc = dom.getDocument(); - rep = new DomRepresentation(MediaType.TEXT_XML, doc); - getResponse().setEntity(rep); - } catch (IOException ex) { - fail("Cannot send XML response", ex); - } - return rep; - } - } - - private static void assertXML(int testIndex, DomRepresentation entity) { + private static void assertXML(int testIndex, Representation entity) { try { String expected = ""; String text = entity.getText(); @@ -104,39 +50,33 @@ private static void assertChunkedHeader(Message message) { assertEquals("chunked", transferEncoding.getValue()); } - private static Document createDocument() { - try { - return DocumentBuilderFactory.newInstance().newDocumentBuilder() - .newDocument(); - } catch (ParserConfigurationException ex) { - throw new RuntimeException(ex); - } - } - private static Representation createTestXml() { - final Document doc = createDocument(); - final Element root = doc.createElement("root"); - - doc.appendChild(root); + String xmlRepresentationAsString = ""; + Representation rep = new StringRepresentation(xmlRepresentationAsString); + rep.setSize(Representation.UNKNOWN_SIZE); // force chunked encoding - for (int i = 0; i < 2; i++) { - final Element e = doc.createElement("child-" + i); - e.setAttribute("name", "name-" + i); - root.appendChild(e); - } + return rep; + } - Representation rep = null; - try { - String xmlRepresentationAsString = new DomRepresentation(MediaType.TEXT_XML, doc).getText(); - rep = new StringRepresentation(xmlRepresentationAsString); - rep.setSize(Representation.UNKNOWN_SIZE); // force chunked encoding - } catch (IOException e) { - throw new RuntimeException(e); + @Override + protected void doTestUri(String uri) throws Exception { + for (int testIndex = 0; testIndex < LOOP_NUMBER; testIndex++) { + sendGet(testIndex, uri); + sendPut(testIndex, uri); } - - return rep; } + @Override + protected Application createApplication() { + return new Application() { + @Override + public Restlet createInboundRoot() { + final Router router = new Router(getContext()); + router.attach("/test", PutTestResource.class); + return router; + } + }; + } private void sendGet(int testIndex, String uri) throws Exception { final Request request = new Request(Method.GET, uri); @@ -145,7 +85,7 @@ private void sendGet(int testIndex, String uri) throws Exception { try { assertEquals(Status.SUCCESS_OK, response.getStatus(), String.format("test #%d: response's status is wrong", testIndex)); - assertXML(testIndex, new DomRepresentation(response.getEntity())); + assertXML(testIndex, response.getEntity()); } finally { response.release(); client.stop(); @@ -160,7 +100,7 @@ private void sendPut(int testIndex, String uri) throws Exception { try { assertChunkedHeader(response); assertEquals(Status.SUCCESS_OK, response.getStatus(), String.format("test #%d: response's status is wrong", testIndex)); - assertXML(testIndex, new DomRepresentation(response.getEntity())); + assertXML(testIndex, response.getEntity()); } finally { response.release(); client.stop(); @@ -168,4 +108,24 @@ private void sendPut(int testIndex, String uri) throws Exception { } + public static class PutTestResource extends ServerResource { + + public PutTestResource() { + getVariants().add(new Variant(MediaType.TEXT_XML)); + setNegotiated(false); + } + + @Override + public Representation get() { + return createTestXml(); + } + + @Override + public Representation put(Representation entity) { + assertChunkedHeader(getRequest()); + + return new WrapperRepresentation(entity); + } + } + } diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/connector/ConnectorTestCase.java b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/ConnectorTestCase.java similarity index 92% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/connector/ConnectorTestCase.java rename to org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/ConnectorTestCase.java index 74e1d76b35..36b45ff6f0 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/connector/ConnectorTestCase.java +++ b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/ConnectorTestCase.java @@ -1,4 +1,4 @@ -package org.restlet.test.engine.connector; +package org.restlet.ext.jetty.connectors; import static java.lang.String.format; diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/connector/GetChunkedTestCase.java b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/GetChunkedTestCase.java similarity index 50% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/connector/GetChunkedTestCase.java rename to org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/GetChunkedTestCase.java index 88d134ab66..2a98395d6b 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/connector/GetChunkedTestCase.java +++ b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/GetChunkedTestCase.java @@ -7,27 +7,20 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.engine.connector; +package org.restlet.ext.jetty.connectors; -import static org.junit.jupiter.api.Assertions.assertEquals; - -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.MediaType; -import org.restlet.data.Method; -import org.restlet.data.Protocol; -import org.restlet.data.Status; -import org.restlet.ext.xml.TransformRepresentation; +import org.restlet.*; +import org.restlet.data.*; +import org.restlet.engine.header.HeaderConstants; import org.restlet.representation.Representation; import org.restlet.representation.StringRepresentation; import org.restlet.representation.Variant; import org.restlet.resource.ServerResource; import org.restlet.routing.Router; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + /** * Test that a simple get works for all the connectors. * @@ -35,6 +28,7 @@ */ public class GetChunkedTestCase extends BaseConnectorsTestCase { + private static final String text = "" + "a".repeat(1000) + ""; @Override protected void doTestUri(String uri) throws Exception { final Client client = new Client(Protocol.HTTP); @@ -43,7 +37,8 @@ protected void doTestUri(String uri) throws Exception { try { assertEquals(Status.SUCCESS_OK, response.getStatus(), response.getStatus().getDescription()); - assertEquals("Hello world", response.getEntity().getText()); + assertChunkedHeader(response); + assertEquals(text, response.getEntity().getText()); } finally { response.release(); client.stop(); @@ -51,7 +46,7 @@ protected void doTestUri(String uri) throws Exception { } @Override - protected Application createApplication(Component component) { + protected Application createApplication() { return new Application() { @Override public Restlet createInboundRoot() { @@ -70,30 +65,17 @@ public GetChunkedTestResource() { @Override public Representation get(Variant variant) { - // Get the source XML - final Representation source = new StringRepresentation( - "Hello world", - MediaType.APPLICATION_XML); - - final Representation transformSheet = getTransformSheetRepresentation(); - - // Instantiates the representation with both source and stylesheet. - final Representation representation = new TransformRepresentation( - getContext(), source, transformSheet); - // Set the right media-type - representation.setMediaType(variant.getMediaType()); - - return representation; + final Representation rep = new StringRepresentation( text, MediaType.APPLICATION_XML); + rep.setSize(Representation.UNKNOWN_SIZE); // force chunked encoding + return rep; } + } - private static Representation getTransformSheetRepresentation() { - final String xsltAsString = "" + - "" + - "" + - "" + - "" + - ""; - return new StringRepresentation(xsltAsString, MediaType.TEXT_XML); - } + private static void assertChunkedHeader(Message message) { + final Header transferEncoding = message.getHeaders() + .getFirst(HeaderConstants.HEADER_TRANSFER_ENCODING, true); + assertNotNull(transferEncoding); + assertEquals("chunked", transferEncoding.getValue()); } + } diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/connector/GetQueryParamTestCase.java b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/GetQueryParamTestCase.java similarity index 77% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/connector/GetQueryParamTestCase.java rename to org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/GetQueryParamTestCase.java index b387dae668..0f4a1b1be5 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/connector/GetQueryParamTestCase.java +++ b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/GetQueryParamTestCase.java @@ -7,20 +7,9 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.engine.connector; +package org.restlet.ext.jetty.connectors; -import static org.testng.AssertJUnit.assertEquals; - -import java.util.Map; -import java.util.SortedMap; -import java.util.TreeMap; - -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.*; import org.restlet.data.Form; import org.restlet.data.Method; import org.restlet.data.Protocol; @@ -29,6 +18,12 @@ import org.restlet.resource.ServerResource; import org.restlet.routing.Router; +import java.util.Map; +import java.util.SortedMap; +import java.util.TreeMap; + +import static org.junit.jupiter.api.Assertions.assertEquals; + /** * Test that a simple get with query parameters works for all the connectors. * @@ -36,8 +31,9 @@ */ public class GetQueryParamTestCase extends BaseConnectorsTestCase { - protected String getCallUri(String host) { - return host + "/test?q1=a&q2=b"; + @Override + protected String getCallUri(int port) { + return super.getCallUri(port) + "?q1=a&q2=b"; } @Override @@ -47,8 +43,7 @@ protected void doTestUri(String uri) throws Exception { final Response response = client.handle(request); try { - assertEquals(response.getStatus().getDescription(), Status.SUCCESS_OK, - response.getStatus()); + assertEquals(Status.SUCCESS_OK, response.getStatus(), response.getStatus().getDescription()); assertEquals("{q1=a, q2=b}", response.getEntity().getText()); } finally { client.stop(); @@ -56,7 +51,7 @@ protected void doTestUri(String uri) throws Exception { } @Override - protected Application createApplication(Component component) { + protected Application createApplication() { return new Application() { @Override public Restlet createInboundRoot() { diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/connector/GetTestCase.java b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/GetTestCase.java similarity index 93% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/connector/GetTestCase.java rename to org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/GetTestCase.java index 2ac984d8d8..6538e659f6 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/connector/GetTestCase.java +++ b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/GetTestCase.java @@ -7,13 +7,12 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.engine.connector; +package org.restlet.ext.jetty.connectors; import static org.junit.jupiter.api.Assertions.assertEquals; import org.restlet.Application; import org.restlet.Client; -import org.restlet.Component; import org.restlet.Request; import org.restlet.Response; import org.restlet.Restlet; @@ -50,7 +49,7 @@ protected void doTestUri(String uri) throws Exception { } @Override - protected Application createApplication(Component component) { + protected Application createApplication() { return new Application() { @Override public Restlet createInboundRoot() { diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/connector/PostPutTestCase.java b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/PostPutTestCase.java similarity index 94% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/connector/PostPutTestCase.java rename to org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/PostPutTestCase.java index c60a1aad60..b7b8d5544c 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/connector/PostPutTestCase.java +++ b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/PostPutTestCase.java @@ -7,14 +7,13 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.engine.connector; +package org.restlet.ext.jetty.connectors; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import org.restlet.Application; import org.restlet.Client; -import org.restlet.Component; import org.restlet.Request; import org.restlet.Response; import org.restlet.Restlet; @@ -42,7 +41,7 @@ protected void doTestUri(String uri) throws Exception { } @Override - protected Application createApplication(final Component component) { + protected Application createApplication() { return new Application() { @Override public Restlet createInboundRoot() { diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/connector/RemoteClientAddressTestCase.java b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/RemoteClientAddressTestCase.java similarity index 95% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/connector/RemoteClientAddressTestCase.java rename to org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/RemoteClientAddressTestCase.java index 2e359c1952..b7bc4fb8e6 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/connector/RemoteClientAddressTestCase.java +++ b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/RemoteClientAddressTestCase.java @@ -7,7 +7,7 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.engine.connector; +package org.restlet.ext.jetty.connectors; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -19,7 +19,6 @@ import org.restlet.Application; import org.restlet.Client; -import org.restlet.Component; import org.restlet.Request; import org.restlet.Response; import org.restlet.Restlet; @@ -55,7 +54,7 @@ protected void doTestUri(String uri) throws Exception { } @Override - protected Application createApplication(Component component) { + protected Application createApplication() { return new Application() { @Override public Restlet createInboundRoot() { diff --git a/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/SslBaseConnectorsTestCase.java b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/SslBaseConnectorsTestCase.java new file mode 100644 index 0000000000..bc23de2422 --- /dev/null +++ b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/SslBaseConnectorsTestCase.java @@ -0,0 +1,104 @@ +/** + * Copyright 2005-2024 Qlik + * + * The contents of this file is subject to the terms of the Apache 2.0 open + * source license available at http://www.opensource.org/licenses/apache-2.0 + * + * Restlet is a registered trademark of QlikTech International AB. + */ + +package org.restlet.ext.jetty.connectors; + +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; +import org.restlet.*; +import org.restlet.data.Method; +import org.restlet.data.Parameter; +import org.restlet.data.Protocol; +import org.restlet.engine.io.IoUtils; +import org.restlet.util.Series; + +import java.io.*; +import java.nio.file.Files; +import java.util.stream.Stream; + +/** + * Base test case that will call an abstract method for several client/server + * connectors configurations. (Modified for SSL support.) + * + * @author Kevin Conaway + * @author Bruno Harbulot + * @author Jerome Louvel + */ +@SuppressWarnings("unused") +public abstract class SslBaseConnectorsTestCase extends BaseConnectorsTestCase { + + protected static File testKeystoreFile; + + protected void configureSslClientParameters(Context context) { + Series parameters = context.getParameters(); + parameters.add("truststorePath", testKeystoreFile.getPath()); + parameters.add("truststorePassword", "testtest"); + } + + protected void configureSslServerParameters(Context context) { + Series parameters = context.getParameters(); + parameters.add("keystorePath", testKeystoreFile.getPath()); + parameters.add("keystorePassword", "testtest"); + parameters.add("keyPassword", "testtest"); + parameters.add("truststorePath", testKeystoreFile.getPath()); + parameters.add("truststorePassword", "testtest"); + // parameters.add("tracing", "true"); + } + + @Override + protected String getCallUri(final int port) { + return "https://localhost:" + port + "/test"; + } + + @BeforeAll + public static void globalSetUp() throws IOException { + testKeystoreFile = Files.createTempFile("sslBaseConnectorsTest", "dummy.jks").toFile(); + testKeystoreFile.delete(); + + InputStream resourceAsStream = SslBaseConnectorsTestCase.class.getResourceAsStream("dummy.jks"); + if (resourceAsStream != null) { + OutputStream outputStream = new FileOutputStream(testKeystoreFile); + IoUtils.copy(resourceAsStream, outputStream); + outputStream.flush(); + outputStream.close(); + } else { + throw new RuntimeException("Can't find the key store"); + } + + } + + @Override + protected Stream listTestCases() { + return Stream.of( + new ConnectorTestCase(HttpServer.INTERNAL_HTTPS, HttpClient.JETTY), + // new ConnectorTestCase(HttpServer.JETTY_HTTPS, HttpClient.INTERNAL), // restore while taking care of #1444 + // new ConnectorTestCase(HttpServer.JETTY_HTTPS, HttpClient.JETTY), // restore while taking care of #1444 + new ConnectorTestCase(HttpServer.INTERNAL_HTTPS, HttpClient.INTERNAL) + ); + } + + @Override + protected Server configureServer(final Component component) { + final Server server = component.getServers().add(Protocol.HTTPS, 0); + configureSslServerParameters(server.getContext()); + // server.getContext().getParameters().add("tracing", "true"); + return server; + } + + @AfterAll + protected static void tearDown() { + testKeystoreFile.delete(); + + // Restore a clean engine + org.restlet.engine.Engine.register(); + } + +} diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/connector/SslClientContextGetTestCase.java b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/SslClientContextGetTestCase.java similarity index 79% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/connector/SslClientContextGetTestCase.java rename to org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/SslClientContextGetTestCase.java index a30b59a8c9..244f5db8ff 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/connector/SslClientContextGetTestCase.java +++ b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/SslClientContextGetTestCase.java @@ -7,13 +7,12 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.engine.connector; +package org.restlet.ext.jetty.connectors; import static org.junit.jupiter.api.Assertions.assertEquals; import org.restlet.Application; import org.restlet.Client; -import org.restlet.Component; import org.restlet.Context; import org.restlet.Request; import org.restlet.Response; @@ -35,41 +34,27 @@ * @author Bruno Harbulot */ public class SslClientContextGetTestCase extends SslBaseConnectorsTestCase { - public static class GetTestResource extends ServerResource { - - public GetTestResource() { - getVariants().add(new Variant(MediaType.TEXT_PLAIN)); - } - - @Override - public Representation get(Variant variant) { - return new StringRepresentation("Hello world", MediaType.TEXT_PLAIN); - } - } @Override - protected void call(String uri) throws Exception { + protected void doTestUri(String uri) throws Exception { final Request request = new Request(Method.GET, uri); final Client client = new Client(Protocol.HTTPS); if (client.getContext() == null) { client.setContext(new Context()); } configureSslServerParameters(client.getContext()); - final Response r = client.handle(request); + final Response response = client.handle(request); - assertEquals( - Status.SUCCESS_OK, r.getStatus(), - r.getStatus().getDescription() - ); - assertEquals("Hello world", r.getEntity().getText()); + assertEquals(Status.SUCCESS_OK, response.getStatus(), response.getStatus().getDescription()); + assertEquals("Hello world", response.getEntity().getText()); Thread.sleep(200); client.stop(); } @Override - protected Application createApplication(Component component) { - final Application application = new Application() { + protected Application createApplication() { + return new Application() { @Override public Restlet createInboundRoot() { final Router router = new Router(getContext()); @@ -77,7 +62,18 @@ public Restlet createInboundRoot() { return router; } }; + } - return application; + public static class GetTestResource extends ServerResource { + + public GetTestResource() { + getVariants().add(new Variant(MediaType.TEXT_PLAIN)); + } + + @Override + public Representation get(Variant variant) { + return new StringRepresentation("Hello world", MediaType.TEXT_PLAIN); + } } + } diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/connector/SslGetTestCase.java b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/SslGetTestCase.java similarity index 82% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/connector/SslGetTestCase.java rename to org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/SslGetTestCase.java index d5ea65c1fc..e9140a9037 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/connector/SslGetTestCase.java +++ b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/connectors/SslGetTestCase.java @@ -7,13 +7,10 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.engine.connector; - -import static org.testng.AssertJUnit.assertEquals; +package org.restlet.ext.jetty.connectors; import org.restlet.Application; import org.restlet.Client; -import org.restlet.Component; import org.restlet.Context; import org.restlet.Request; import org.restlet.Response; @@ -28,6 +25,8 @@ import org.restlet.resource.ServerResource; import org.restlet.routing.Router; +import static org.junit.jupiter.api.Assertions.assertEquals; + /** * Test that a simple get using SSL works for all the connectors. * @@ -50,15 +49,14 @@ public Representation get(Variant variant) { } @Override - protected void call(String uri) throws Exception { + protected void doTestUri(String uri) throws Exception { final Request request = new Request(Method.GET, uri); final Client client = new Client(Protocol.HTTPS); client.setContext(new Context()); configureSslClientParameters(client.getContext()); final Response r = client.handle(request); - assertEquals(r.getStatus().getDescription(), Status.SUCCESS_OK, - r.getStatus()); + assertEquals(Status.SUCCESS_OK, r.getStatus(), r.getStatus().getDescription()); assertEquals("Hello world", r.getEntity().getText()); Thread.sleep(200); @@ -66,8 +64,8 @@ protected void call(String uri) throws Exception { } @Override - protected Application createApplication(Component component) { - final Application application = new Application() { + protected Application createApplication() { + return new Application() { @Override public Restlet createInboundRoot() { final Router router = new Router(getContext()); @@ -75,7 +73,5 @@ public Restlet createInboundRoot() { return router; } }; - - return application; } } diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AbstractAnnotatedServerResource.java b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/AbstractAnnotatedServerResource03.java similarity index 83% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AbstractAnnotatedServerResource.java rename to org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/AbstractAnnotatedServerResource03.java index d2c570a895..1aa3af184b 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AbstractAnnotatedServerResource.java +++ b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/AbstractAnnotatedServerResource03.java @@ -7,7 +7,7 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.resource; +package org.restlet.ext.jetty.resource; import org.restlet.resource.ServerResource; @@ -16,7 +16,7 @@ * * @author Thierry Boileau */ -public abstract class AbstractAnnotatedServerResource extends ServerResource +public abstract class AbstractAnnotatedServerResource03 extends ServerResource implements AnnotatedInterface03 { public String accept() { diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedInterface03.java b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/AnnotatedInterface03.java similarity index 67% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedInterface03.java rename to org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/AnnotatedInterface03.java index 52f7215c7b..b63fa79cfd 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedInterface03.java +++ b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/AnnotatedInterface03.java @@ -7,16 +7,14 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.resource; +package org.restlet.ext.jetty.resource; /** - * Annotated interface that extends {@link AnnotatedInterface01} and - * {@link AnnotatedInterface02}. + * Annotated interface that extends {@link AnnotatedInterface03_01} and + * {@link AnnotatedInterface03_02}. * * @author Thierry Boileau * */ -public interface AnnotatedInterface03 extends AnnotatedInterface01, - AnnotatedInterface02 { - +public interface AnnotatedInterface03 extends AnnotatedInterface03_01, AnnotatedInterface03_02 { } diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedInterface01.java b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/AnnotatedInterface03_01.java similarity index 84% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedInterface01.java rename to org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/AnnotatedInterface03_01.java index 5393d510cb..a6d2e57396 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedInterface01.java +++ b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/AnnotatedInterface03_01.java @@ -7,7 +7,7 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.resource; +package org.restlet.ext.jetty.resource; import org.restlet.resource.Get; @@ -17,7 +17,7 @@ * @author Thierry Boileau * */ -public interface AnnotatedInterface01 { +public interface AnnotatedInterface03_01 { @Get String asText(); diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedInterface02.java b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/AnnotatedInterface03_02.java similarity index 84% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedInterface02.java rename to org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/AnnotatedInterface03_02.java index ad7ee4b028..b9e126ad0d 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedInterface02.java +++ b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/AnnotatedInterface03_02.java @@ -7,7 +7,7 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.resource; +package org.restlet.ext.jetty.resource; import org.restlet.resource.Post; @@ -17,7 +17,7 @@ * @author Thierry Boileau * */ -public interface AnnotatedInterface02 { +public interface AnnotatedInterface03_02 { @Post String accept(); diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource09TestCase.java b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/AnnotatedResource09TestCase.java similarity index 97% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource09TestCase.java rename to org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/AnnotatedResource09TestCase.java index ce5b86d6ba..ec9c3ee9d2 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource09TestCase.java +++ b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/AnnotatedResource09TestCase.java @@ -7,7 +7,7 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.resource; +package org.restlet.ext.jetty.resource; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -34,7 +34,7 @@ * * @author Thierry Boileau */ -public class AnnotatedResource09TestCase extends InternalConnectorTestCase { +public class AnnotatedResource09TestCase extends JettyConnectorTestCase { public static final Method SI = new Method("SI", "What a method!", "http://restlet.org", true, true); diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource10TestCase.java b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/AnnotatedResource10TestCase.java similarity index 94% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource10TestCase.java rename to org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/AnnotatedResource10TestCase.java index f76b9169e2..80c3ea082d 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource10TestCase.java +++ b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/AnnotatedResource10TestCase.java @@ -7,7 +7,7 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.resource; +package org.restlet.ext.jetty.resource; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -29,7 +29,7 @@ * * @author Thierry Boileau */ -public class AnnotatedResource10TestCase extends InternalConnectorTestCase { +public class AnnotatedResource10TestCase extends JettyConnectorTestCase { protected Application createApplication(final String path) { return new Application() { diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource11TestCase.java b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/AnnotatedResource11TestCase.java similarity index 94% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource11TestCase.java rename to org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/AnnotatedResource11TestCase.java index 8df0a9ab67..7b3663a1ba 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource11TestCase.java +++ b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/AnnotatedResource11TestCase.java @@ -7,7 +7,7 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.resource; +package org.restlet.ext.jetty.resource; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -29,7 +29,7 @@ * * @author Thierry Boileau */ -public class AnnotatedResource11TestCase extends InternalConnectorTestCase { +public class AnnotatedResource11TestCase extends JettyConnectorTestCase { protected Application createApplication(final String path) { return new Application() { diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/InternalConnectorTestCase.java b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/JettyConnectorTestCase.java similarity index 76% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/InternalConnectorTestCase.java rename to org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/JettyConnectorTestCase.java index 0f842be0e1..1d013996e6 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/InternalConnectorTestCase.java +++ b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/JettyConnectorTestCase.java @@ -7,7 +7,7 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.resource; +package org.restlet.ext.jetty.resource; import java.util.logging.Level; @@ -22,7 +22,9 @@ import org.restlet.data.Method; import org.restlet.data.Protocol; import org.restlet.engine.Engine; -import org.restlet.test.RestletTestCase; +import org.restlet.ext.jetty.HttpClientHelper; +import org.restlet.ext.jetty.HttpServerHelper; +import org.restlet.representation.ObjectRepresentation; /** * All test cases relying on a client and a server should inherit from this @@ -30,7 +32,7 @@ * * @author Jerome Louvel */ -public abstract class InternalConnectorTestCase extends RestletTestCase { +public abstract class JettyConnectorTestCase { private Component c; @@ -38,7 +40,7 @@ public abstract class InternalConnectorTestCase extends RestletTestCase { private String uri; - public InternalConnectorTestCase() { + public JettyConnectorTestCase() { super(); } @@ -64,39 +66,32 @@ protected Response handle(Request request) { return getClient().handle(request); } - public void initClient() { - setUpEngine(); - setUpCommon(); - setUpClient(8888, "/test"); - } + @BeforeEach + void init() throws Exception { + Engine.clearThreadLocalVariables(); + + // Restore a clean engine + org.restlet.engine.Engine.register(false); + Engine.setLogLevel(Level.INFO); + Engine.getInstance().registerDefaultConverters(); + Engine.getInstance().getRegisteredClients().add(new HttpClientHelper(null)); + Engine.getInstance().getRegisteredServers().add(new HttpServerHelper(null)); - public void initServer() throws Exception { - setUpEngine(); - setUpCommon(); - setUpServer(8888, "/test"); + int serverPort = setUpServer(0, "/test"); + setUpClient(serverPort, "/test"); + + // Enable object serialization + ObjectRepresentation.VARIANT_OBJECT_XML_SUPPORTED = true; + ObjectRepresentation.VARIANT_OBJECT_BINARY_SUPPORTED = true; } protected void releaseResponse(Response response) { response.getEntity().release(); } - @BeforeEach - protected void setUpEach() throws Exception { - setUpCommon(); - int serverPort = setUpServer(0, "/test"); - setUpClient(serverPort, "/test"); - } - protected void setUpClient(int serverPort, String path) { this.client = new Client(Protocol.HTTP); this.uri = "http://localhost:" + serverPort + path; - this.client = new Client(Protocol.HTTP); - } - - protected void setUpCommon() { - Engine.setLogLevel(Level.INFO); - Engine.getInstance().getRegisteredConverters().clear(); - Engine.getInstance().registerDefaultConverters(); } protected int setUpServer(int suggestedPort, String path) throws Exception { diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource09.java b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/MyResource09.java similarity index 98% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource09.java rename to org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/MyResource09.java index 57267eb121..8b60e5c9aa 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource09.java +++ b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/MyResource09.java @@ -7,7 +7,7 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.resource; +package org.restlet.ext.jetty.resource; import org.restlet.data.Form; import org.restlet.resource.ServerResource; diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource10.java b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/MyResource10.java similarity index 90% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource10.java rename to org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/MyResource10.java index c1c360037e..e71b731097 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource10.java +++ b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/MyResource10.java @@ -7,7 +7,7 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.resource; +package org.restlet.ext.jetty.resource; /** * Resource that inherits annotated methods. @@ -15,6 +15,6 @@ * @author Thierry Boileau * */ -public class MyResource10 extends AbstractAnnotatedServerResource { +public class MyResource10 extends AbstractAnnotatedServerResource03 { } diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource11.java b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/MyResource11.java similarity index 92% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource11.java rename to org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/MyResource11.java index e8d4579aad..1290273e8d 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource11.java +++ b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/MyResource11.java @@ -7,7 +7,7 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.resource; +package org.restlet.ext.jetty.resource; import org.restlet.resource.Get; @@ -18,7 +18,7 @@ * @author Thierry Boileau * */ -public class MyResource11 extends AbstractAnnotatedServerResource { +public class MyResource11 extends AbstractAnnotatedServerResource03 { @Get("txt") @Override diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/SIMethod.java b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/SIMethod.java similarity index 94% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/SIMethod.java rename to org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/SIMethod.java index 9378769216..d0941d6f4a 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/SIMethod.java +++ b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/SIMethod.java @@ -7,7 +7,7 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.resource; +package org.restlet.ext.jetty.resource; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/SNIMethod.java b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/SNIMethod.java similarity index 94% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/SNIMethod.java rename to org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/SNIMethod.java index bc8bd31c28..ec41407e4a 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/SNIMethod.java +++ b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/SNIMethod.java @@ -7,7 +7,7 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.resource; +package org.restlet.ext.jetty.resource; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/USIMethod.java b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/USIMethod.java similarity index 94% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/USIMethod.java rename to org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/USIMethod.java index d48a6e559d..667de08fbb 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/USIMethod.java +++ b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/USIMethod.java @@ -7,7 +7,7 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.resource; +package org.restlet.ext.jetty.resource; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/USNIMethod.java b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/USNIMethod.java similarity index 94% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/USNIMethod.java rename to org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/USNIMethod.java index 427e22277e..c5f3e2b8af 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/USNIMethod.java +++ b/org.restlet.java/org.restlet.ext.jetty/src/test/java/org/restlet/ext/jetty/resource/USNIMethod.java @@ -7,7 +7,7 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.resource; +package org.restlet.ext.jetty.resource; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/connector/dummy.jks b/org.restlet.java/org.restlet.ext.jetty/src/test/resources/org/restlet/ext/jetty/connectors/dummy.jks similarity index 100% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/connector/dummy.jks rename to org.restlet.java/org.restlet.ext.jetty/src/test/resources/org/restlet/ext/jetty/connectors/dummy.jks diff --git a/org.restlet.java/org.restlet.ext.json/pom.xml b/org.restlet.java/org.restlet.ext.json/pom.xml index d910711dae..adbbeb1a3c 100644 --- a/org.restlet.java/org.restlet.ext.json/pom.xml +++ b/org.restlet.java/org.restlet.ext.json/pom.xml @@ -25,6 +25,12 @@ org.restlet ${project.version} + + org.junit.jupiter + junit-jupiter-api + ${lib-junit-version} + test + diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/json/JsonpFilterTestCase.java b/org.restlet.java/org.restlet.ext.json/src/test/java/org/restlet/ext/json/JsonpFilterTestCase.java similarity index 90% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/json/JsonpFilterTestCase.java rename to org.restlet.java/org.restlet.ext.json/src/test/java/org/restlet/ext/json/JsonpFilterTestCase.java index 9a95022944..3b7c19f718 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/json/JsonpFilterTestCase.java +++ b/org.restlet.java/org.restlet.ext.json/src/test/java/org/restlet/ext/json/JsonpFilterTestCase.java @@ -7,32 +7,28 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.ext.json; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertInstanceOf; -import static org.restlet.data.Status.SUCCESS_OK; +package org.restlet.ext.json; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.restlet.Request; import org.restlet.Response; import org.restlet.data.MediaType; import org.restlet.data.Method; import org.restlet.data.Reference; -import org.restlet.ext.json.JsonRepresentation; -import org.restlet.ext.json.JsonpFilter; -import org.restlet.ext.json.JsonpRepresentation; -import org.restlet.ext.xml.DomRepresentation; import org.restlet.representation.Representation; 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.assertInstanceOf; +import static org.restlet.data.Status.SUCCESS_OK; /** * Test case for the {@link JsonpFilter} class. * * @author Cyril Lakech */ -public class JsonpFilterTestCase extends RestletTestCase { +public class JsonpFilterTestCase { @Test public void testAfterHandle() { @@ -112,7 +108,7 @@ public void testAfterHandle_with_other_mediatype_should_return_entity_unchanged( ref.addQueryParameter(callback, "test"); Request request = new Request(Method.GET, ref); Response response = new Response(request); - final DomRepresentation expected = new DomRepresentation( + final StringRepresentation expected = new StringRepresentation("", MediaType.APPLICATION_XML); response.setEntity(expected); @@ -120,6 +116,6 @@ public void testAfterHandle_with_other_mediatype_should_return_entity_unchanged( Representation actual = response.getEntity(); - assertEquals(expected, actual); + Assertions.assertEquals(expected, actual); } } diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/json/JsonpRepresentationTestCase.java b/org.restlet.java/org.restlet.ext.json/src/test/java/org/restlet/ext/json/JsonpRepresentationTestCase.java similarity index 89% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/json/JsonpRepresentationTestCase.java rename to org.restlet.java/org.restlet.ext.json/src/test/java/org/restlet/ext/json/JsonpRepresentationTestCase.java index a14aa669ef..b2c966baa7 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/json/JsonpRepresentationTestCase.java +++ b/org.restlet.java/org.restlet.ext.json/src/test/java/org/restlet/ext/json/JsonpRepresentationTestCase.java @@ -7,27 +7,24 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.ext.json; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.restlet.data.Status.SUCCESS_OK; - -import java.io.ByteArrayOutputStream; +package org.restlet.ext.json; import org.junit.jupiter.api.Test; import org.restlet.data.MediaType; -import org.restlet.ext.json.JsonRepresentation; -import org.restlet.ext.json.JsonpRepresentation; import org.restlet.representation.Representation; import org.restlet.representation.StringRepresentation; -import org.restlet.test.RestletTestCase; + +import java.io.ByteArrayOutputStream; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.restlet.data.Status.SUCCESS_OK; /** * Test case for the {@link JsonpRepresentation} class. * * @author Cyril Lakech */ -public class JsonpRepresentationTestCase extends RestletTestCase { +public class JsonpRepresentationTestCase { public static final String CALLBACK = "callback"; @@ -76,8 +73,8 @@ public void testWrite() throws Exception { assertEquals(expected, out.toString()); } - // with a text representation, apostrophe are escaped and text is embedded - // between 2 apostrophe + // with a text representation, apostrophes are escaped and the text is embedded + // between 2 apostrophes @Test public void testWrite_with_text_then_apostrophe_are_escaped() throws Exception { diff --git a/org.restlet.java/org.restlet.ext.spring/pom.xml b/org.restlet.java/org.restlet.ext.spring/pom.xml index b858b502e3..6e96a82a89 100644 --- a/org.restlet.java/org.restlet.ext.spring/pom.xml +++ b/org.restlet.java/org.restlet.ext.spring/pom.xml @@ -56,6 +56,12 @@ org.restlet ${project.version} + + org.junit.jupiter + junit-jupiter-api + ${lib-junit-version} + test + diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/spring/SpringBeanFinderTestCase.java b/org.restlet.java/org.restlet.ext.spring/src/test/java/org/restlet/ext/spring/SpringBeanFinderTestCase.java similarity index 80% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/spring/SpringBeanFinderTestCase.java rename to org.restlet.java/org.restlet.ext.spring/src/test/java/org/restlet/ext/spring/SpringBeanFinderTestCase.java index 37723fb8c6..d5add8122f 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/spring/SpringBeanFinderTestCase.java +++ b/org.restlet.java/org.restlet.ext.spring/src/test/java/org/restlet/ext/spring/SpringBeanFinderTestCase.java @@ -7,21 +7,12 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.ext.spring; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.fail; -import static org.testng.AssertJUnit.assertNotNull; -import static org.testng.AssertJUnit.assertTrue; - -import java.util.Arrays; +package org.restlet.ext.spring; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.restlet.ext.spring.SpringBeanFinder; import org.restlet.resource.ServerResource; -import org.restlet.test.RestletTestCase; import org.springframework.beans.MutablePropertyValues; import org.springframework.beans.PropertyValue; import org.springframework.beans.factory.config.ConstructorArgumentValues; @@ -29,10 +20,14 @@ import org.springframework.beans.factory.support.RootBeanDefinition; import org.springframework.context.support.StaticApplicationContext; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.*; + /** * @author Rhett Sutphin */ -public class SpringBeanFinderTestCase extends RestletTestCase { +public class SpringBeanFinderTestCase { private static class AnotherResource extends ServerResource { } @@ -66,8 +61,7 @@ public void setSrc(String src) { private SpringBeanFinder finder; private MutablePropertyValues createServerResourcePropertyValues() { - return new MutablePropertyValues(Arrays.asList(new PropertyValue("src", - "spring"))); + return new MutablePropertyValues(List.of(new PropertyValue("src","spring"))); } private void registerApplicationContextBean(String beanName, Class resourceClass) { @@ -85,7 +79,7 @@ private void registerBeanFactoryBean(String beanName, Class resourceClass, Mu } @BeforeEach - protected void setUpEach() throws Exception { + protected void setUpEach() { this.beanFactory = new DefaultListableBeanFactory(); this.applicationContext = new StaticApplicationContext(); this.finder = new SpringBeanFinder(); @@ -93,7 +87,7 @@ protected void setUpEach() throws Exception { } @AfterEach - protected void tearDownEach() throws Exception { + protected void tearDownEach() { this.beanFactory = null; this.applicationContext = null; this.finder = null; @@ -176,9 +170,7 @@ public void testPrefersApplicationContextOverBeanFactoryIfTheBeanIsInBoth() { ServerResource actual = this.finder.create(); - assertNotNull("Resource not found", actual); - assertTrue("Resource not from application context: " - + actual.getClass().getName(), actual instanceof SomeResource); + assertTrue(actual instanceof SomeResource, "Resource not from application context: " + actual.getClass().getName()); } @Test @@ -189,9 +181,7 @@ public void testReturnsResourceBeanWhenExists() { final ServerResource actual = this.finder.create(); - assertNotNull("Resource not found", actual); - assertTrue("Resource not the correct type", - actual instanceof SomeResource); + assertTrue(actual instanceof SomeResource, "Resource not the correct type"); } @Test @@ -204,11 +194,8 @@ public void testReturnsServerResourceBeanForLongFormOfCreate() { final ServerResource actual = this.finder.create( SomeServerResource.class, null, null); - assertNotNull("Resource not found", actual); - assertTrue("Resource not the correct type", - actual instanceof SomeServerResource); - assertEquals("spring", - ((SomeServerResource) actual).getSrc(), "Resource not from spring context"); + assertTrue(actual instanceof SomeServerResource, "Resource not the correct type"); + assertEquals("spring", ((SomeServerResource) actual).getSrc(), "Resource not from spring context"); } @Test @@ -220,9 +207,7 @@ public void testReturnsServerResourceBeanWhenExists() { final ServerResource actual = this.finder.create(); - assertNotNull("Resource not found", actual); - assertTrue("Resource not the correct type", - actual instanceof SomeServerResource); + assertTrue(actual instanceof SomeServerResource, "Resource not the correct type"); } @Test @@ -233,8 +218,6 @@ public void testUsesApplicationContextIfPresent() { ServerResource actual = this.finder.create(); - assertNotNull("Resource not found", actual); - assertTrue("Resource not the correct type", - actual instanceof SomeResource); + assertTrue(actual instanceof SomeResource, "Resource not the correct type"); } } diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/spring/SpringBeanRouterTestCase.java b/org.restlet.java/org.restlet.ext.spring/src/test/java/org/restlet/ext/spring/SpringBeanRouterTestCase.java similarity index 95% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/spring/SpringBeanRouterTestCase.java rename to org.restlet.java/org.restlet.ext.spring/src/test/java/org/restlet/ext/spring/SpringBeanRouterTestCase.java index 3fff62390f..9cf4c174e8 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/spring/SpringBeanRouterTestCase.java +++ b/org.restlet.java/org.restlet.ext.spring/src/test/java/org/restlet/ext/spring/SpringBeanRouterTestCase.java @@ -7,17 +7,7 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.ext.spring; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertInstanceOf; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.junit.jupiter.api.Assertions.fail; - -import java.util.Collections; -import java.util.HashSet; -import java.util.Set; +package org.restlet.ext.spring; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; @@ -27,25 +17,28 @@ import org.restlet.Restlet; import org.restlet.data.ChallengeScheme; import org.restlet.data.Method; -import org.restlet.ext.spring.SpringBeanFinder; -import org.restlet.ext.spring.SpringBeanRouter; import org.restlet.resource.ServerResource; import org.restlet.routing.Filter; import org.restlet.routing.Route; import org.restlet.routing.Template; import org.restlet.routing.TemplateRoute; import org.restlet.security.ChallengeAuthenticator; -import org.restlet.test.RestletTestCase; import org.restlet.util.Resolver; import org.restlet.util.RouteList; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.support.DefaultListableBeanFactory; import org.springframework.beans.factory.support.RootBeanDefinition; +import java.util.Collections; +import java.util.HashSet; +import java.util.Set; + +import static org.junit.jupiter.api.Assertions.*; + /** * @author Rhett Sutphin */ -public class SpringBeanRouterTestCase extends RestletTestCase { +public class SpringBeanRouterTestCase { private static class TestAuthenticator extends ChallengeAuthenticator { private TestAuthenticator() throws IllegalArgumentException { diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/spring/SpringTestCase.java b/org.restlet.java/org.restlet.ext.spring/src/test/java/org/restlet/ext/spring/SpringTestCase.java similarity index 67% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/spring/SpringTestCase.java rename to org.restlet.java/org.restlet.ext.spring/src/test/java/org/restlet/ext/spring/SpringTestCase.java index ffa31b8856..a09beb31f3 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/spring/SpringTestCase.java +++ b/org.restlet.java/org.restlet.ext.spring/src/test/java/org/restlet/ext/spring/SpringTestCase.java @@ -7,47 +7,57 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.ext.spring; - -import static org.junit.jupiter.api.Assertions.assertEquals; +package org.restlet.ext.spring; +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.Server; -import org.restlet.test.RestletTestCase; +import org.restlet.engine.Engine; import org.springframework.context.support.ClassPathXmlApplicationContext; +import static org.junit.jupiter.api.Assertions.assertEquals; + /** * Unit test case for the Spring extension. * * @author Jerome Louvel */ -public class SpringTestCase extends RestletTestCase { +public class SpringTestCase { + + public static int TEST_PORT = 1337; // referenced in SpringTestCase.xml @Test public void testSpring() throws Exception { - // Load the Spring container - ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext( - "org/restlet/test/ext/spring/SpringTestCase.xml"); - // Start the Restlet component Component component = (Component) ctx.getBean("component"); component.start(); Thread.sleep(500); component.stop(); - ctx.close(); } @Test public void testSpringServerProperties() { - ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext( - "org/restlet/test/ext/spring/SpringTestCase.xml"); Server server = (Server) ctx.getBean("server"); assertEquals("value1", server.getContext().getParameters() .getFirstValue("key1")); assertEquals("value2", server.getContext().getParameters() .getFirstValue("key2")); + } + + private ClassPathXmlApplicationContext ctx; + + @BeforeEach + void setUp() { + Engine.clearThreadLocalVariables(); + ctx = new ClassPathXmlApplicationContext("org/restlet/ext/spring/SpringTestCase.xml"); + } + + @AfterEach + void cleanUp() { + Engine.clearThreadLocalVariables(); ctx.close(); } diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/spring/SpringTestCase.xml b/org.restlet.java/org.restlet.ext.spring/src/test/resources/org/restlet/ext/spring/SpringTestCase.xml similarity index 97% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/spring/SpringTestCase.xml rename to org.restlet.java/org.restlet.ext.spring/src/test/resources/org/restlet/ext/spring/SpringTestCase.xml index 2fee914559..05e9739ef5 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/spring/SpringTestCase.xml +++ b/org.restlet.java/org.restlet.ext.spring/src/test/resources/org/restlet/ext/spring/SpringTestCase.xml @@ -23,7 +23,7 @@ - diff --git a/org.restlet.java/org.restlet.ext.thymeleaf/pom.xml b/org.restlet.java/org.restlet.ext.thymeleaf/pom.xml index 005dff15eb..034ce898e2 100644 --- a/org.restlet.java/org.restlet.ext.thymeleaf/pom.xml +++ b/org.restlet.java/org.restlet.ext.thymeleaf/pom.xml @@ -25,6 +25,12 @@ org.restlet ${project.version} + + org.junit.jupiter + junit-jupiter-api + ${lib-junit-version} + test + diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/thymeleaf/ThymeleafTestCase.java b/org.restlet.java/org.restlet.ext.thymeleaf/src/test/java/org/restlet/ext/thymeleaf/ThymeleafTestCase.java similarity index 73% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/thymeleaf/ThymeleafTestCase.java rename to org.restlet.java/org.restlet.ext.thymeleaf/src/test/java/org/restlet/ext/thymeleaf/ThymeleafTestCase.java index a84c34876d..e1ab55a270 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/thymeleaf/ThymeleafTestCase.java +++ b/org.restlet.java/org.restlet.ext.thymeleaf/src/test/java/org/restlet/ext/thymeleaf/ThymeleafTestCase.java @@ -7,35 +7,32 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.ext.thymeleaf; +package org.restlet.ext.thymeleaf; -import static org.junit.jupiter.api.Assertions.assertTrue; +import org.junit.jupiter.api.Test; +import org.restlet.data.MediaType; +import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver; import java.util.Locale; import java.util.Map; -import java.util.TreeMap; -import org.junit.jupiter.api.Test; -import org.restlet.data.MediaType; -import org.restlet.ext.thymeleaf.TemplateRepresentation; -import org.restlet.test.RestletTestCase; -import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver; +import static org.junit.jupiter.api.Assertions.assertTrue; /** * Unit test for the Thymeleaf extension. * * @author Thierry Boileau */ -public class ThymeleafTestCase extends RestletTestCase { +public class ThymeleafTestCase { @Test public void testTemplate() throws Exception { ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver(); - templateResolver.setPrefix("org/restlet/test/ext/thymeleaf/"); + templateResolver.setPrefix("org/restlet/ext/thymeleaf/"); templateResolver.setSuffix(".html"); templateResolver.setCacheTTLMs(3600000L); - final Map map = new TreeMap(); - map.put("welcome", "Hello, world"); + + final Map map = Map.of("welcome", "Hello, world"); final String result = new TemplateRepresentation("test", TemplateRepresentation.createTemplateEngine(templateResolver), diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/thymeleaf/test.html b/org.restlet.java/org.restlet.ext.thymeleaf/src/test/resources/org/restlet/ext/thymeleaf/test.html similarity index 100% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/thymeleaf/test.html rename to org.restlet.java/org.restlet.ext.thymeleaf/src/test/resources/org/restlet/ext/thymeleaf/test.html diff --git a/org.restlet.java/org.restlet.ext.velocity/pom.xml b/org.restlet.java/org.restlet.ext.velocity/pom.xml index 07306c667d..c4bb4b68d4 100644 --- a/org.restlet.java/org.restlet.ext.velocity/pom.xml +++ b/org.restlet.java/org.restlet.ext.velocity/pom.xml @@ -25,6 +25,12 @@ org.restlet ${project.version} + + org.junit.jupiter + junit-jupiter-api + ${lib-junit-version} + test + diff --git a/org.restlet.java/org.restlet.ext.velocity/src/test/java/org/restlet/ext/velocity/TemplateFilterTestCase.java b/org.restlet.java/org.restlet.ext.velocity/src/test/java/org/restlet/ext/velocity/TemplateFilterTestCase.java new file mode 100644 index 0000000000..5e3ceaf047 --- /dev/null +++ b/org.restlet.java/org.restlet.ext.velocity/src/test/java/org/restlet/ext/velocity/TemplateFilterTestCase.java @@ -0,0 +1,75 @@ +/** + * Copyright 2005-2024 Qlik + * + * The contents of this file is subject to the terms of the Apache 2.0 open + * source license available at http://www.opensource.org/licenses/apache-2.0 + * + * Restlet is a registered trademark of QlikTech International AB. + */ + +package org.restlet.ext.velocity; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.restlet.*; +import org.restlet.data.LocalReference; +import org.restlet.data.Method; +import org.restlet.data.Protocol; +import org.restlet.engine.Engine; +import org.restlet.resource.Directory; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +/** + * Test case for template filters. + * + * @author Thierry Boileau + */ +public class TemplateFilterTestCase { + + @Test + public void representationShouldBeUsedAsTemplate() throws Exception { + Request request = new Request(Method.GET,"/template.txt.vm"); + Response response = testApplication.handle(request); + assertEquals("Method=GET/Path=/template.txt.vm", response.getEntity().getText()); + } + + @Test + public void representationShouldNotBeUsedAsTemplate() throws Exception { + Request request = new Request(Method.GET, "/notATemplate.txt"); + Response response = testApplication.handle(request); + + assertEquals("Method=${m}/Path=${rp}", response.getEntity().getText()); + } + + /** + * Internal class used for test purpose + * + * @author Thierry Boileau + */ + private static class MyVelocityApplication extends Application { + + MyVelocityApplication() { + setContext(new Context()); + getContext().setClientDispatcher(new Client(Protocol.CLAP)); + } + + @Override + public Restlet createInboundRoot() { + final Directory directory = new Directory(getContext(), LocalReference.createClapReference(TemplateFilterTestCase.class.getPackage())); + + // Create a Directory that manages a local directory + return new TemplateFilter(getContext(), directory); + } + } + + @BeforeAll + static void setUpTestCases() { + Engine.clearThreadLocalVariables(); + + // Create an application filtered with Velocity + testApplication = new MyVelocityApplication(); + } + + private static Application testApplication; +} diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/velocity/VelocityTestCase.java b/org.restlet.java/org.restlet.ext.velocity/src/test/java/org/restlet/ext/velocity/VelocityTestCase.java similarity index 93% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/velocity/VelocityTestCase.java rename to org.restlet.java/org.restlet.ext.velocity/src/test/java/org/restlet/ext/velocity/VelocityTestCase.java index afb72a4732..135321e816 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/velocity/VelocityTestCase.java +++ b/org.restlet.java/org.restlet.ext.velocity/src/test/java/org/restlet/ext/velocity/VelocityTestCase.java @@ -7,31 +7,29 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.ext.velocity; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -import java.io.File; -import java.io.FileWriter; -import java.util.Map; -import java.util.TreeMap; +package org.restlet.ext.velocity; import org.junit.jupiter.api.Test; import org.restlet.data.LocalReference; import org.restlet.data.MediaType; import org.restlet.data.Reference; import org.restlet.engine.io.IoUtils; -import org.restlet.ext.velocity.TemplateRepresentation; import org.restlet.representation.Representation; import org.restlet.resource.ClientResource; -import org.restlet.test.RestletTestCase; + +import java.io.File; +import java.io.FileWriter; +import java.util.Map; +import java.util.TreeMap; + +import static org.junit.jupiter.api.Assertions.assertEquals; /** * Test case for the Velocity extension. * * @author Jerome Louvel */ -public class VelocityTestCase extends RestletTestCase { +public class VelocityTestCase { @Test public void testRepresentationTemplate() throws Exception { diff --git a/org.restlet.java/org.restlet.ext.velocity/src/test/resources/org/restlet/ext/velocity/notATemplate.txt b/org.restlet.java/org.restlet.ext.velocity/src/test/resources/org/restlet/ext/velocity/notATemplate.txt new file mode 100644 index 0000000000..3d44cd7faa --- /dev/null +++ b/org.restlet.java/org.restlet.ext.velocity/src/test/resources/org/restlet/ext/velocity/notATemplate.txt @@ -0,0 +1 @@ +Method=${m}/Path=${rp} \ No newline at end of file diff --git a/org.restlet.java/org.restlet.ext.velocity/src/test/resources/org/restlet/ext/velocity/template.txt.vm b/org.restlet.java/org.restlet.ext.velocity/src/test/resources/org/restlet/ext/velocity/template.txt.vm new file mode 100644 index 0000000000..3d44cd7faa --- /dev/null +++ b/org.restlet.java/org.restlet.ext.velocity/src/test/resources/org/restlet/ext/velocity/template.txt.vm @@ -0,0 +1 @@ +Method=${m}/Path=${rp} \ No newline at end of file diff --git a/org.restlet.java/org.restlet.ext.xml/pom.xml b/org.restlet.java/org.restlet.ext.xml/pom.xml index 210e21425a..1a6fc87299 100644 --- a/org.restlet.java/org.restlet.ext.xml/pom.xml +++ b/org.restlet.java/org.restlet.ext.xml/pom.xml @@ -20,6 +20,12 @@ org.restlet ${project.version} + + org.junit.jupiter + junit-jupiter-api + ${lib-junit-version} + test + diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/xml/ResolvingTransformerTestCase.java b/org.restlet.java/org.restlet.ext.xml/src/test/java/org/restlet/ext/xml/ResolvingTransformerTestCase.java similarity index 80% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/xml/ResolvingTransformerTestCase.java rename to org.restlet.java/org.restlet.ext.xml/src/test/java/org/restlet/ext/xml/ResolvingTransformerTestCase.java index 2eceb344a2..d59e1feade 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/xml/ResolvingTransformerTestCase.java +++ b/org.restlet.java/org.restlet.ext.xml/src/test/java/org/restlet/ext/xml/ResolvingTransformerTestCase.java @@ -7,41 +7,24 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.ext.xml; +package org.restlet.ext.xml; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.fail; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.Reader; -import java.util.HashMap; -import java.util.Map; -import java.util.Random; +import org.junit.jupiter.api.Test; +import org.restlet.*; +import org.restlet.data.*; +import org.restlet.representation.Representation; +import org.restlet.representation.StringRepresentation; import javax.xml.transform.Source; import javax.xml.transform.TransformerException; import javax.xml.transform.URIResolver; import javax.xml.transform.stream.StreamSource; +import java.io.*; +import java.util.HashMap; +import java.util.Map; +import java.util.Random; -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.MediaType; -import org.restlet.data.Method; -import org.restlet.data.Protocol; -import org.restlet.data.Reference; -import org.restlet.ext.xml.TransformRepresentation; -import org.restlet.representation.Representation; -import org.restlet.representation.StringRepresentation; -import org.restlet.test.RestletTestCase; +import static org.junit.jupiter.api.Assertions.*; /** * ResolvingTransformerTestCase tests the resolving aspects of the @@ -50,15 +33,15 @@ * * @author Marc Portier */ -public class ResolvingTransformerTestCase extends RestletTestCase { +public class ResolvingTransformerTestCase { - class AssertResolvingHelper { + static class AssertResolvingHelper { - String baseUri; + final String baseUri; - URIResolver resolver; + final URIResolver resolver; - AssertResolvingHelper(String baseUri, URIResolver resolver) { + AssertResolvingHelper(final String baseUri, final URIResolver resolver) { this.baseUri = baseUri; this.resolver = resolver; } @@ -68,41 +51,37 @@ class AssertResolvingHelper { */ void assertResolving(String message, String testUri, String testData) throws TransformerException, IOException { - - Source resolvedSource = this.resolver - .resolve(testUri, this.baseUri); - assertNotNull(resolvedSource, "resolved source for " + testUri + " should not be null"); StringBuilder data = new StringBuilder(); - if (resolvedSource instanceof StreamSource) { - StreamSource streamSource = (StreamSource) resolvedSource; - Reader dataReader = (streamSource).getReader(); + Source resolvedSource = this.resolver.resolve(testUri, this.baseUri); + assertNotNull(resolvedSource, "resolved source for " + testUri + " should not be null"); + + if (resolvedSource instanceof StreamSource streamSource) { + Reader dataReader = streamSource.getReader(); if (dataReader == null) { InputStream in = (streamSource.getInputStream()); - assertNotNull(in, "no reader or inputstream available"); + assertNotNull(in, "no reader or inputStream available"); dataReader = new InputStreamReader(in); } assertNotNull(dataReader, "no reader to data in source."); char[] buf = new char[1024]; - int len = 0; - + int len; while ((len = dataReader.read(buf)) != -1) { data.append(buf, 0, len); } dataReader.close(); } else { - // TODO support other source implementations (namely sax-source - // impls) + // TODO support other source implementations (namely sax-source implementations) fail("test implementation currently doesn't handle other source (e.g. sax) implementations"); } assertEquals(testData, data.toString(), message); } } - class SimpleUriMapApplication extends Application { + static class SimpleUriMapApplication extends Application { private final Map uriMap = new HashMap<>(); public SimpleUriMapApplication() { @@ -119,8 +98,7 @@ public Restlet createInboundRoot() { return new Restlet() { @Override public void handle(Request request, Response response) { - String remainder = request.getResourceRef() - .getRemainingPart(); + String remainder = request.getResourceRef().getRemainingPart(); Representation answer = SimpleUriMapApplication.this.uriMap .get(remainder); @@ -146,8 +124,7 @@ public void handle(Request request, Response response) { MY_BASEPATH = MY_PATH.substring(0, lastPos); } - // testing purely the resolver, no active transforming context (ie xslt - // engine) in this test + // testing purely the resolver, no active transforming context (i.e., xslt engine) in this test @Test public void testResolving() throws Exception { Component comp = new Component(); @@ -156,7 +133,7 @@ public void testResolving() throws Exception { Representation xml = new StringRepresentation( "", MediaType.TEXT_XML); - // create an xsl template representation + // create a xsl template representation Representation xslt = new StringRepresentation( "" + "" @@ -169,8 +146,7 @@ public void testResolving() throws Exception { // create a test-stream representation to be returned when the correct // code is presented String testCode = "rnd." + (new Random()).nextInt(); - String testData = "\"The resolver is doing OK\", said the testclass " - + MY_NAME + "."; + String testData = "\"The resolver is doing OK\", said the testclass " + MY_NAME + "."; Representation testRep = new StringRepresentation(testData); SimpleUriMapApplication testApp = new SimpleUriMapApplication(); @@ -181,25 +157,22 @@ public void testResolving() throws Exception { URIResolver uriResolver = transRep.getUriResolver(); assertNotNull(uriResolver, "no resolver present!"); + String baseUri = testBase + "/dummy"; - AssertResolvingHelper test = new AssertResolvingHelper(baseUri, - uriResolver); + AssertResolvingHelper test = new AssertResolvingHelper(baseUri, uriResolver); String absoluteUri = testBase + "/" + testCode; - test.assertResolving("error in absolute resolving.", absoluteUri, - testData); + test.assertResolving("error in absolute resolving.", absoluteUri, testData); String relUri = testCode; test.assertResolving("error in relative resolving.", relUri, testData); String relLocalUri = "./" + testCode; - test.assertResolving("error in relative resolving to ./", relLocalUri, - testData); + test.assertResolving("error in relative resolving to ./", relLocalUri, testData); String relParentUri = "../testApp/" + testCode; - test.assertResolving("error in relative resolving to ../", - relParentUri, testData); + test.assertResolving("error in relative resolving to ../", relParentUri, testData); } // functional test in the actual xslt engine context @@ -220,21 +193,19 @@ public void testTransform() throws Exception { // * output should show all converted lines as read from the various // external documents - String thirdDocData = "" + ("rnd." + (new Random()).nextInt()) - + ""; + String thirdDocData = "" + ("rnd." + (new Random()).nextInt()) + ""; // Note below doesn't work,: // final String xsl2xmlLink = "riap://application/3rd.xml"; // cause: the application-context one refers to with above is the one // that is creating the xslt sheet // (and the associated uri-resolver) Since that isn't an actual - // application-context so it doesn't support + // application-context, so it doesn't support // the riap-authority 'application' // This does work though: String xsl2xmlLink = "./3rd.xml"; // and "/three/3rd.xml" would // too... - Representation xml3 = new StringRepresentation("" - + thirdDocData, MediaType.TEXT_XML); + Representation xml3 = new StringRepresentation("" + thirdDocData, MediaType.TEXT_XML); Representation xslt3 = new StringRepresentation( "" + "" @@ -253,8 +224,7 @@ public void testTransform() throws Exception { Representation xmlIn = new StringRepresentation( "drie"); // xslOne - Reference xsltOneRef = new LocalReference("clap://thread/" - + MY_BASEPATH + "/xslt/one/1st.xsl"); + Reference xsltOneRef = new LocalReference("clap://thread/" + MY_BASEPATH + "/xslt/one/1st.xsl"); Representation xsltOne = comp.getContext().getClientDispatcher() .handle(new Request(Method.GET, xsltOneRef)).getEntity(); TransformRepresentation tr = new TransformRepresentation( diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/xml/TransformRepresentationTestCase.java b/org.restlet.java/org.restlet.ext.xml/src/test/java/org/restlet/ext/xml/TransformRepresentationTestCase.java similarity index 93% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/xml/TransformRepresentationTestCase.java rename to org.restlet.java/org.restlet.ext.xml/src/test/java/org/restlet/ext/xml/TransformRepresentationTestCase.java index 8fad2e3b66..95c0883610 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/xml/TransformRepresentationTestCase.java +++ b/org.restlet.java/org.restlet.ext.xml/src/test/java/org/restlet/ext/xml/TransformRepresentationTestCase.java @@ -7,23 +7,21 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.ext.xml; - -import static org.junit.jupiter.api.Assertions.assertEquals; +package org.restlet.ext.xml; import org.junit.jupiter.api.Test; import org.restlet.data.MediaType; -import org.restlet.ext.xml.TransformRepresentation; import org.restlet.representation.Representation; import org.restlet.representation.StringRepresentation; -import org.restlet.test.RestletTestCase; + +import static org.junit.jupiter.api.Assertions.assertEquals; /** * Test case for the {@link TransformRepresentation} class. * * @author Jerome Louvel */ -public class TransformRepresentationTestCase extends RestletTestCase { +public class TransformRepresentationTestCase { final String output1 = "cust123"; diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/xml/TransformerTestCase.java b/org.restlet.java/org.restlet.ext.xml/src/test/java/org/restlet/ext/xml/TransformerTestCase.java similarity index 78% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/xml/TransformerTestCase.java rename to org.restlet.java/org.restlet.ext.xml/src/test/java/org/restlet/ext/xml/TransformerTestCase.java index 820aac7071..7463e0ae7b 100644 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/xml/TransformerTestCase.java +++ b/org.restlet.java/org.restlet.ext.xml/src/test/java/org/restlet/ext/xml/TransformerTestCase.java @@ -7,44 +7,38 @@ * Restlet is a registered trademark of QlikTech International AB. */ -package org.restlet.test.ext.xml; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.fail; - -import java.io.ByteArrayOutputStream; +package org.restlet.ext.xml; import org.junit.jupiter.api.Test; import org.restlet.Component; import org.restlet.data.MediaType; -import org.restlet.ext.xml.TransformRepresentation; -import org.restlet.ext.xml.Transformer; import org.restlet.representation.Representation; import org.restlet.representation.StringRepresentation; -import org.restlet.test.RestletTestCase; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.fail; /** * Test case for the Transformer class. * * @author Jerome Louvel */ -public class TransformerTestCase extends RestletTestCase { - - class FailureTracker { - boolean allOk = true; +public class TransformerTestCase { + static class FailureTracker { final StringBuffer trackedMessages = new StringBuffer(); void report() { - if (!this.allOk) { - fail("TRACKER REPORT: \n" + this.trackedMessages.toString()); + if (!trackedMessages.isEmpty()) { + fail("TRACKER REPORT: \n" + this.trackedMessages); } } void trackFailure(String message) { - System.err.println(message); - this.trackedMessages.append(message + "\n"); - this.allOk = false; + this.trackedMessages.append(message).append("\n"); } void trackFailure(String message, int index, Throwable e) { @@ -90,16 +84,12 @@ public void parallelTestTransform() { @Override public void run() { - try { - final ByteArrayOutputStream out = new ByteArrayOutputStream(); + try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { tr.write(out); final String result = out.toString(); assertEquals(TransformerTestCase.this.output, result); - out.close(); - - } catch (Throwable e) { - tracker.trackFailure( - "Exception during write in thread ", index, e); + } catch (IOException e) { + tracker.trackFailure("Exception during write in thread ", index, e); } } }; @@ -114,8 +104,7 @@ public void run() { @Test public void testTransform() throws Exception { - final Transformer transformer = new Transformer( - Transformer.MODE_REQUEST, this.xslt); + final Transformer transformer = new Transformer(Transformer.MODE_REQUEST, this.xslt); final String result = transformer.transform(this.source).getText(); assertEquals(this.output, result); diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/xml/xslt/one/1st.xml b/org.restlet.java/org.restlet.ext.xml/src/test/resources/org/restlet/ext/xml/xslt/one/1st.xml similarity index 100% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/xml/xslt/one/1st.xml rename to org.restlet.java/org.restlet.ext.xml/src/test/resources/org/restlet/ext/xml/xslt/one/1st.xml diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/xml/xslt/one/1st.xsl b/org.restlet.java/org.restlet.ext.xml/src/test/resources/org/restlet/ext/xml/xslt/one/1st.xsl similarity index 100% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/xml/xslt/one/1st.xsl rename to org.restlet.java/org.restlet.ext.xml/src/test/resources/org/restlet/ext/xml/xslt/one/1st.xsl diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/xml/xslt/two/2nd.xml b/org.restlet.java/org.restlet.ext.xml/src/test/resources/org/restlet/ext/xml/xslt/two/2nd.xml similarity index 100% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/xml/xslt/two/2nd.xml rename to org.restlet.java/org.restlet.ext.xml/src/test/resources/org/restlet/ext/xml/xslt/two/2nd.xml diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/xml/xslt/two/2nd.xsl b/org.restlet.java/org.restlet.ext.xml/src/test/resources/org/restlet/ext/xml/xslt/two/2nd.xsl similarity index 100% rename from org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/xml/xslt/two/2nd.xsl rename to org.restlet.java/org.restlet.ext.xml/src/test/resources/org/restlet/ext/xml/xslt/two/2nd.xsl diff --git a/org.restlet.java/org.restlet.test/pom.xml b/org.restlet.java/org.restlet.test/pom.xml deleted file mode 100644 index fa5bd62e6b..0000000000 --- a/org.restlet.java/org.restlet.test/pom.xml +++ /dev/null @@ -1,153 +0,0 @@ - - - 4.0.0 - - org.restlet - org.restlet.parent - 2.6-SNAPSHOT - ../../pom.xml - - - org.restlet.test - Restlet Framework - Unit Tests - All Restlet unit tests. - - ${basedir}/src/main/java - - - - - org.hamcrest - hamcrest-all - 1.3 - - - org.restlet - org.restlet - ${project.version} - - - org.restlet - org.restlet.ext.crypto - ${project.version} - - - org.restlet - org.restlet.ext.freemarker - ${project.version} - - - org.restlet - org.restlet.ext.gson - ${project.version} - - - org.restlet - org.restlet.ext.guice - ${project.version} - - - org.restlet - org.restlet.ext.jackson - ${project.version} - - - org.restlet - org.restlet.ext.jaxb - ${project.version} - - - org.restlet - org.restlet.ext.jetty - ${project.version} - - - org.restlet - org.restlet.ext.json - ${project.version} - - - org.restlet - org.restlet.ext.spring - ${project.version} - - - org.restlet - org.restlet.ext.thymeleaf - ${project.version} - - - org.restlet - org.restlet.ext.velocity - ${project.version} - - - org.restlet - org.restlet.ext.xml - ${project.version} - - - com.fasterxml.jackson.core - jackson-core - ${lib-jackson-version} - - - com.fasterxml.jackson.core - jackson-annotations - ${lib-jackson-version} - - - com.fasterxml.jackson.core - jackson-databind - ${lib-jackson-version} - - - com.fasterxml.jackson.dataformat - jackson-dataformat-csv - ${lib-jackson-version} - - - com.fasterxml.jackson.dataformat - jackson-dataformat-smile - ${lib-jackson-version} - - - com.fasterxml.jackson.dataformat - jackson-dataformat-xml - ${lib-jackson-version} - - - com.fasterxml.jackson.dataformat - jackson-dataformat-yaml - ${lib-jackson-version} - - - com.fasterxml.jackson.module - jackson-module-jaxb-annotations - ${lib-jackson-version} - - - com.fasterxml.jackson.module - jackson-module-jsonSchema - ${lib-jackson-version} - - - org.junit.jupiter - junit-jupiter-api - ${lib-junit-version} - - - org.junit.jupiter - junit-jupiter-params - ${lib-junit-version} - compile - - - org.testng - testng - ${lib-testng-version} - - - diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/HeaderTestCase.java b/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/HeaderTestCase.java deleted file mode 100644 index 60e016f789..0000000000 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/HeaderTestCase.java +++ /dev/null @@ -1,117 +0,0 @@ -/** - * Copyright 2005-2024 Qlik - * - * The contents of this file is subject to the terms of the Apache 2.0 open - * source license available at http://www.opensource.org/licenses/apache-2.0 - * - * Restlet is a registered trademark of QlikTech International AB. - */ - -package org.restlet.test; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNull; - -import java.util.Collections; - -import org.eclipse.jetty.client.ContentResponse; -import org.eclipse.jetty.client.HttpClient; -import org.eclipse.jetty.http.HttpMethod; -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.Header; -import org.restlet.data.MediaType; -import org.restlet.data.Method; -import org.restlet.data.Protocol; -import org.restlet.data.Status; - -public class HeaderTestCase extends RestletTestCase { - - /** - * Restlet that returns as a new Representation the list of values of - * "testHeader" header. - */ - public static class TestHeaderRestlet extends Restlet { - @Override - public void handle(Request request, Response response) { - StringBuilder stb = new StringBuilder(); - - for (Header header : request.getHeaders()) { - if (TEST_HEADER.equalsIgnoreCase(header.getName())) { - stb.append(header.getValue()); - stb.append('\n'); - } - } - - response.setEntity(stb.toString(), MediaType.TEXT_PLAIN); - } - } - - /** - * Name of a test header field - */ - private static final String TEST_HEADER = "testHeader"; - - private Client client; - - private Component component; - - /** - * Handle a new request built according to the parameters and return the - * response object. - * - * @param additionalHeaders The list of header used to build the request. - * @return The response of the request. - */ - private Response getWithParams(Header... additionalHeaders) { - Request request = new Request(Method.GET, "http://localhost:" + TEST_PORT); - Collections.addAll(request.getHeaders(), additionalHeaders); - return client.handle(request); - } - - @BeforeEach - void setUpEach() throws Exception { - this.client = new Client(Protocol.HTTP); - component = new Component(); - component.getServers().add(Protocol.HTTP, TEST_PORT); - component.getDefaultHost().attachDefault(new TestHeaderRestlet()); - component.start(); - } - - @AfterEach - void tearDownEach() throws Exception { - this.client.stop(); - this.component.stop(); - this.component = null; - } - - /** Test with no test header */ - @Test - public void test0() throws Exception { - Response response = getWithParams(); - assertEquals(Status.SUCCESS_OK, response.getStatus()); - assertNull(response.getEntity().getText()); - } - - /** Test with one test header */ - @Test - public void test1() throws Exception { - Response response = getWithParams(new Header(TEST_HEADER, "a")); - assertEquals(Status.SUCCESS_OK, response.getStatus()); - assertEquals("a\n", response.getEntity().getText()); - } - - /** Test with two test headers */ - @Test - public void test2() throws Exception { - Response response = getWithParams(new Header(TEST_HEADER, "a"), new Header(TEST_HEADER, "b")); - assertEquals(Status.SUCCESS_OK, response.getStatus()); - assertEquals("a\nb\n", response.getEntity().getText()); - } -} diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/RestletTestCase.java b/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/RestletTestCase.java deleted file mode 100644 index 4ca2cbf2e6..0000000000 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/RestletTestCase.java +++ /dev/null @@ -1,78 +0,0 @@ -/** - * Copyright 2005-2024 Qlik - * - * The contents of this file is subject to the terms of the Apache 2.0 open - * source license available at http://www.opensource.org/licenses/apache-2.0 - * - * Restlet is a registered trademark of QlikTech International AB. - */ - -package org.restlet.test; - -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeAll; -import org.restlet.engine.Engine; -import org.restlet.representation.ObjectRepresentation; - -/** - * Marker class. All Restlet tests should be derived from this class. - * - * @author Lars Heuer (heuer[at]semagia.com) - * @author Jerome Louvel - */ -public abstract class RestletTestCase { - - protected static final int DEFAULT_TEST_PORT = 1337; - - protected static final String PROPERTY_TEST_PORT = "org.restlet.test.port"; - - public static int TEST_PORT = getTestPort(); - - protected static int getTestPort() { - if (System.getProperties().containsKey(PROPERTY_TEST_PORT)) { - return Integer.parseInt(System.getProperty(PROPERTY_TEST_PORT)); - } - - return DEFAULT_TEST_PORT; - } - - @BeforeAll - static void setUp() { - setUpEngine(); - } - - /** - * Clears thread local variables then sets-up the Restlet engine with - * internal HTTP server and Jetty HTTP client connectors by default. - */ - public static void setUpEngine() { - Engine.clearThreadLocalVariables(); - - // Restore a clean engine - org.restlet.engine.Engine.register(); - - // Prefer the internal connectors - Engine.getInstance().getRegisteredServers().add(0, - new org.restlet.engine.connector.HttpServerHelper(null)); - - // FIXME turn on the internal connector. - Engine.getInstance().getRegisteredClients().add(0, - new org.restlet.ext.jetty.HttpClientHelper(null)); - - // Enable object serialization - ObjectRepresentation.VARIANT_OBJECT_XML_SUPPORTED = true; - ObjectRepresentation.VARIANT_OBJECT_BINARY_SUPPORTED = true; - } - - @AfterAll - static void tearDown() { - tearDownEngine(); - } - - /** - * Clears thread local variables. - */ - static void tearDownEngine() { - Engine.clearThreadLocalVariables(); - } -} diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/TemplateFilterTestCase.java b/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/TemplateFilterTestCase.java deleted file mode 100644 index 9b2fd75f7c..0000000000 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/TemplateFilterTestCase.java +++ /dev/null @@ -1,214 +0,0 @@ -/** - * Copyright 2005-2024 Qlik - * - * The contents of this file is subject to the terms of the Apache 2.0 open - * source license available at http://www.opensource.org/licenses/apache-2.0 - * - * Restlet is a registered trademark of QlikTech International AB. - */ - -package org.restlet.test; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; - -import java.io.File; -import java.io.FileWriter; - -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.LocalReference; -import org.restlet.data.Method; -import org.restlet.data.Protocol; -import org.restlet.engine.io.IoUtils; -import org.restlet.resource.Directory; - -/** - * Test case for template filters. - * - * @author Thierry Boileau - */ -public class TemplateFilterTestCase extends RestletTestCase { - - /** - * Internal class used for test purpose - * - * @author Thierry Boileau - */ - private static class MyFreemakerApplication extends Application { - Directory directory; - - File testDirectory; - - /** - * Constructor. - * - * @param testDirectory - * The test directory. - */ - public MyFreemakerApplication(File testDirectory) { - setTestDirectory(testDirectory); - } - - @Override - public Restlet createInboundRoot() { - // Create a Directory that manages a local directory - this.directory = new Directory(getContext(), - LocalReference.createFileReference(getTestDirectory())); - this.directory.setNegotiatingContent(true); - return new org.restlet.ext.freemarker.TemplateFilter(getContext(), - this.directory); - } - - public File getTestDirectory() { - return this.testDirectory; - } - - public void setTestDirectory(File testDirectory) { - this.testDirectory = testDirectory; - } - } - - /** - * Internal class used for test purpose - * - * @author Thierry Boileau - */ - private static class MyVelocityApplication extends Application { - Directory directory; - - File testDirectory; - - /** - * Constructor. - */ - public MyVelocityApplication(File testDirectory) { - setTestDirectory(testDirectory); - } - - @Override - public Restlet createInboundRoot() { - // Create a Directory that manages a local directory - this.directory = new Directory(getContext(), - LocalReference.createFileReference(getTestDirectory())); - this.directory.setNegotiatingContent(true); - return new org.restlet.ext.velocity.TemplateFilter(getContext(), - this.directory); - } - - public File getTestDirectory() { - return this.testDirectory; - } - - public void setTestDirectory(File testDirectory) { - this.testDirectory = testDirectory; - } - } - - File testDir; - - @Test - public void testTemplateFilter() throws Exception { - // Create a temporary directory for the tests - this.testDir = new File(System.getProperty("java.io.tmpdir"), - "TemplateFilterTestCase"); - IoUtils.delete(this.testDir, true); - this.testDir.mkdir(); - - // Create temporary template files - // Will be templated - File testFileFm1 = new File(this.testDir, "testFm1.txt.fmt"); - FileWriter fw = new FileWriter(testFileFm1); - fw.write("Method=${m}/Authority=${ra}"); - fw.close(); - - // Will not be templated - File testFileFm2 = new File(this.testDir, "testFm2.txt"); - fw = new FileWriter(testFileFm2); - fw.write("Method=${m}/Authority=${ra}"); - fw.close(); - - // Will be templated - File testFileVl1 = new File(this.testDir, "testVl1.txt.vm"); - fw = new FileWriter(testFileVl1); - fw.write("Method=${m}/Path=${rp}"); - fw.close(); - - // Will not be templated - File testFileVl2 = new File(this.testDir, "testVl2.txt"); - fw = new FileWriter(testFileVl2); - fw.write("Method=${m}/Path=${rp}"); - fw.close(); - - // Create a new component - Component component = new Component(); - component.getServers().add(Protocol.HTTP, TEST_PORT); - component.getClients().add(Protocol.FILE); - - // Create an application filtered with FreeMarker - MyFreemakerApplication freemarkerApplication = new MyFreemakerApplication( - this.testDir); - // Create an application filtered with Velocity - MyVelocityApplication velocityApplication = new MyVelocityApplication( - this.testDir); - - // Attach the applications to the component and start it - component.getDefaultHost().attach("/freemarker", - freemarkerApplication); - component.getDefaultHost().attach("/velocity", velocityApplication); - - // Now, let's start the component! - component.start(); - - // Allow extensions tunneling - freemarkerApplication.getTunnelService().setExtensionsTunnel(true); - velocityApplication.getTunnelService().setExtensionsTunnel(true); - Client client = new Client(Protocol.HTTP); - Response response = client.handle(new Request(Method.GET, - "http://localhost:" + TEST_PORT + "/freemarker/" - + testFileFm1.getName())); - - if (response.isEntityAvailable()) { - assertEquals("Method=GET/Authority=localhost:" + TEST_PORT, - response.getEntity().getText()); - } - - response = client.handle(new Request(Method.GET, - "http://localhost:" + TEST_PORT + "/freemarker/" - + testFileFm2.getName())); - assertTrue(response.getStatus().isSuccess()); - - if (response.isEntityAvailable()) { - assertEquals("Method=${m}/Authority=${ra}", response - .getEntity().getText()); - } - - response = client.handle(new Request(Method.GET, - "http://localhost:" + TEST_PORT + "/velocity/" - + testFileVl1.getName())); - - if (response.isEntityAvailable()) { - assertEquals("Method=GET/Path=/velocity/testVl1", response - .getEntity().getText()); - } - - response = client.handle(new Request(Method.GET, - "http://localhost:" + TEST_PORT + "/velocity/" - + testFileVl2.getName())); - assertTrue(response.getStatus().isSuccess()); - - if (response.isEntityAvailable()) { - assertEquals("Method=${m}/Path=${rp}", response.getEntity() - .getText()); - } - - // Now, let's stop the component! - component.stop(); - client.stop(); - } -} diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/bench/HelloServerResource.java b/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/bench/HelloServerResource.java deleted file mode 100644 index d6b635c997..0000000000 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/bench/HelloServerResource.java +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Copyright 2005-2024 Qlik - * - * The contents of this file is subject to the terms of the Apache 2.0 open - * source license available at http://www.opensource.org/licenses/apache-2.0 - * - * Restlet is a registered trademark of QlikTech International AB. - */ - -package org.restlet.test.bench; - -import org.restlet.resource.Get; -import org.restlet.resource.ServerResource; - -public class HelloServerResource extends ServerResource { - - @Get - public String represent() { - return "hello, world!"; - } - -} diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/bench/RestletClient.java b/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/bench/RestletClient.java deleted file mode 100644 index 2990125ecf..0000000000 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/bench/RestletClient.java +++ /dev/null @@ -1,49 +0,0 @@ -/** - * Copyright 2005-2024 Qlik - * - * The contents of this file is subject to the terms of the Apache 2.0 open - * source license available at http://www.opensource.org/licenses/apache-2.0 - * - * Restlet is a registered trademark of QlikTech International AB. - */ - -package org.restlet.test.bench; - -import java.io.IOException; -import java.util.logging.Level; - -import org.restlet.Client; -import org.restlet.engine.Edition; -import org.restlet.engine.Engine; -import org.restlet.engine.connector.ConnectorHelper; -import org.restlet.resource.ClientResource; -import org.restlet.resource.ResourceException; - -public class RestletClient { - - /** - * @param args - * @throws IOException - * @throws ResourceException - */ - public static void main(String[] args) throws ResourceException, - IOException { - ConnectorHelper helper; - helper = new org.restlet.engine.connector.HttpClientHelper(null); - Engine.getInstance().getRegisteredClients().add(0, helper); - - // helper = new org.restlet.ext.httpclient.HttpClientHelper(null); - helper = new org.restlet.ext.jetty.HttpClientHelper(null); - // helper = new org.restlet.ext.nio.HttpsClientHelper(null); - Engine.getInstance().getRegisteredClients().add(0, helper); - - if (Edition.JSE.isCurrentEdition()) { - Engine.setLogLevel(Level.FINE); - } - - for (int i = 0; i < 1; i++) { - ClientResource cr = new ClientResource("https://github.com/restlet/restlet-framework-java"); - cr.get().write(System.out); - } - } -} diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/bench/TestGetClient.java b/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/bench/TestGetClient.java deleted file mode 100644 index b5ce978484..0000000000 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/bench/TestGetClient.java +++ /dev/null @@ -1,56 +0,0 @@ -/** - * Copyright 2005-2024 Qlik - * - * The contents of this file is subject to the terms of the Apache 2.0 open - * source license available at http://www.opensource.org/licenses/apache-2.0 - * - * Restlet is a registered trademark of QlikTech International AB. - */ - -package org.restlet.test.bench; - -import java.io.IOException; -import java.util.logging.Level; - -import org.restlet.Client; -import org.restlet.engine.Edition; -import org.restlet.engine.Engine; -import org.restlet.engine.connector.ConnectorHelper; -import org.restlet.representation.Representation; -import org.restlet.resource.ClientResource; -import org.restlet.resource.ResourceException; - -public class TestGetClient { - - public static void main(String[] args) throws IOException { - ConnectorHelper helper; - helper = new org.restlet.engine.connector.HttpClientHelper(null); - Engine.getInstance().getRegisteredClients().add(0, helper); - if (Edition.JSE.isCurrentEdition()) { - Engine.setLogLevel(Level.FINE); - } - long startTime = System.currentTimeMillis(); - ClientResource resource = new ClientResource("http://localhost:8554/"); - - try { - Representation entity = resource.get(); - System.out.println("Status: " + resource.getStatus()); - - long expectedSize = entity.getSize(); - long receivedSize = entity.exhaust(); - - System.out.println("Size expected: " + expectedSize); - System.out.println("Size consumed: " + receivedSize); - - if ((expectedSize != -1) && (expectedSize != receivedSize)) { - System.out.println("ERROR: SOME BYTES WERE LOST!"); - } - } catch (ResourceException e) { - System.out.println("Status: " + resource.getStatus()); - } - - long endTime = System.currentTimeMillis(); - System.out.println("Duration: " + (endTime - startTime) + " ms"); - } - -} diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/bench/TestGetServer.java b/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/bench/TestGetServer.java deleted file mode 100644 index 71cec618dc..0000000000 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/bench/TestGetServer.java +++ /dev/null @@ -1,49 +0,0 @@ -/** - * Copyright 2005-2024 Qlik - * - * The contents of this file is subject to the terms of the Apache 2.0 open - * source license available at http://www.opensource.org/licenses/apache-2.0 - * - * Restlet is a registered trademark of QlikTech International AB. - */ - -package org.restlet.test.bench; - -import java.util.logging.Level; - -import org.restlet.Context; -import org.restlet.Request; -import org.restlet.Response; -import org.restlet.Restlet; -import org.restlet.Server; -import org.restlet.data.MediaType; -import org.restlet.data.Protocol; -import org.restlet.engine.Edition; -import org.restlet.engine.Engine; -import org.restlet.engine.connector.ConnectorHelper; -import org.restlet.representation.FileRepresentation; - -public class TestGetServer { - - public static void main(String[] args) throws Exception { - ConnectorHelper helper; - helper = new org.restlet.engine.connector.HttpServerHelper(null); - Engine.getInstance().getRegisteredServers().add(0, helper); - if (Edition.JSE.isCurrentEdition()) { - Engine.setLogLevel(Level.FINE); - } - - Server server = new Server(new Context(), Protocol.HTTP, 8554, - new Restlet() { - @Override - public void handle(Request request, Response response) { - FileRepresentation fr = new FileRepresentation( - "file:///c:/RHDSetup.log", MediaType.TEXT_PLAIN); - System.out.println("Size sent: " + fr.getSize()); - response.setEntity(fr); - } - }); - - server.start(); - } -} diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/bench/TestPostChunkedClient.java b/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/bench/TestPostChunkedClient.java deleted file mode 100644 index 3099535eec..0000000000 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/bench/TestPostChunkedClient.java +++ /dev/null @@ -1,43 +0,0 @@ -/** - * Copyright 2005-2024 Qlik - * - * The contents of this file is subject to the terms of the Apache 2.0 open - * source license available at http://www.opensource.org/licenses/apache-2.0 - * - * Restlet is a registered trademark of QlikTech International AB. - */ - -package org.restlet.test.bench; - -import java.io.IOException; - -import org.restlet.data.MediaType; -import org.restlet.representation.FileRepresentation; -import org.restlet.representation.InputRepresentation; -import org.restlet.resource.ClientResource; -import org.restlet.resource.ResourceException; - -public class TestPostChunkedClient { - - public static void main(String[] args) throws IOException { - long startTime = System.currentTimeMillis(); - - ClientResource resource = new ClientResource("http://localhost:8554/"); - FileRepresentation fr = new FileRepresentation("file:///c:/test.mpg", - MediaType.VIDEO_MPEG); - System.out.println("Size sent: " + fr.getSize()); - InputRepresentation ir = new InputRepresentation(fr.getStream(), - fr.getMediaType()); - - try { - resource.post(ir); - } catch (ResourceException e) { - // Nothing - } - - System.out.println("Status: " + resource.getStatus()); - long endTime = System.currentTimeMillis(); - System.out.println("Duration: " + (endTime - startTime) + " ms"); - } - -} diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/bench/TestPostClient.java b/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/bench/TestPostClient.java deleted file mode 100644 index c604224720..0000000000 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/bench/TestPostClient.java +++ /dev/null @@ -1,39 +0,0 @@ -/** - * Copyright 2005-2024 Qlik - * - * The contents of this file is subject to the terms of the Apache 2.0 open - * source license available at http://www.opensource.org/licenses/apache-2.0 - * - * Restlet is a registered trademark of QlikTech International AB. - */ - -package org.restlet.test.bench; - -import org.restlet.data.MediaType; -import org.restlet.representation.FileRepresentation; -import org.restlet.resource.ClientResource; -import org.restlet.resource.ResourceException; - -public class TestPostClient { - - public static void main(String[] args) { - long startTime = System.currentTimeMillis(); - - ClientResource resource = new ClientResource("http://localhost:8554/"); - - FileRepresentation fr = new FileRepresentation("file:///c:/test.mpg", - MediaType.VIDEO_MPEG); - System.out.println("Size sent: " + fr.getSize()); - - try { - resource.post(fr); - } catch (ResourceException e) { - // Nothing - } - - System.out.println("Status: " + resource.getStatus()); - long endTime = System.currentTimeMillis(); - System.out.println("Duration: " + (endTime - startTime) + " ms"); - } - -} diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/bench/TestPostServer.java b/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/bench/TestPostServer.java deleted file mode 100644 index 56c3c1c0cf..0000000000 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/bench/TestPostServer.java +++ /dev/null @@ -1,48 +0,0 @@ -/** - * Copyright 2005-2024 Qlik - * - * The contents of this file is subject to the terms of the Apache 2.0 open - * source license available at http://www.opensource.org/licenses/apache-2.0 - * - * Restlet is a registered trademark of QlikTech International AB. - */ - -package org.restlet.test.bench; - -import org.restlet.Request; -import org.restlet.Response; -import org.restlet.Restlet; -import org.restlet.Server; -import org.restlet.data.Protocol; - -public class TestPostServer { - - public static void main(String[] args) throws Exception { - - Server server = new Server(Protocol.HTTP, 8554, new Restlet() { - int count = 0; - - @Override - public void handle(Request request, Response response) { - try { - System.out.println("Request received (" + (++count) + ")"); - long expectedSize = request.getEntity().getSize(); - long receivedSize = request.getEntity().exhaust(); - - System.out.println("Size expected: " + expectedSize); - System.out.println("Size consumed: " + receivedSize); - - if ((expectedSize != -1) && (expectedSize != receivedSize)) { - System.out.println("ERROR: SOME BYTES WERE LOST!"); - } - System.out - .println("--------------------------------------"); - } catch (Exception e) { - e.printStackTrace(); - } - } - }); - - server.start(); - } -} diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/bench/log.properties b/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/bench/log.properties deleted file mode 100644 index a4ecb4c451..0000000000 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/bench/log.properties +++ /dev/null @@ -1,73 +0,0 @@ - -# ========================== -# Restlet logging properties -# ========================== - -# ------------------ -# General properties -# ------------------ - -# This defines a whitespace separated list of class names for handler classes to load and register as handlers on -# the root Logger (the Logger named ""). Each class name must be for a Handler class which has a default constructor. -# Note that these Handlers may be created lazily, when they are first used. -handlers=java.util.logging.FileHandler java.util.logging.ConsoleHandler - -# ------------------ -# Loggers properties -# ------------------ - -.level=FINEST -org.mortbay.level=WARNING -org.restlet.level=ALL - -# ------------------------- -# ConsoleHandler properties -# ------------------------- - -# Specifies the default level for the Handler (defaults to Level.INFO). -java.util.logging.ConsoleHandler.level=ALL - -# Specifies the name of a Filter class to use (defaults to no Filter). -# java.util.logging.ConsoleHandler.filter= - -# Specifies the name of a Formatter class to use (defaults to java.util.logging.SimpleFormatter). -# java.util.logging.ConsoleHandler.formatter= - -# The name of the character set encoding to use (defaults to the default platform encoding). -# java.util.logging.ConsoleHandler.encoding= - -# ---------------------- -# FileHandler properties -# ---------------------- - -# Specifies the default level for the Handler (defaults to Level.ALL). -java.util.logging.FileHandler.level=ALL - -# Specifies the name of a Filter class to use (defaults to no Filter). -# java.util.logging.FileHandler.filter= - -# Specifies the name of a Formatter class to use (defaults to java.util.logging.XMLFormatter) -java.util.logging.FileHandler.formatter=org.restlet.engine.log.SimplestFormatter - -# The name of the character set encoding to use (defaults to the default platform encoding). -# java.util.logging.FileHandler.encoding= - -# Specifies an approximate maximum amount to write (in bytes) to any one file. -# If this is zero, then there is no limit. (Defaults to no limit). -# java.util.logging.FileHandler.limit=1000000 - -# Specifies how many output files to cycle through (defaults to 1). -java.util.logging.FileHandler.count=2 - -# Specifies a pattern for generating the output file name. (Defaults to "%h/java%u.log"). -# A pattern consists of a string that includes the following special components that will be replaced at runtime: -# "/" the local pathname separator -# "%t" the system temporary directory -# "%h" the value of the "user.home" system property -# "%g" the generation number to distinguish rotated logs -# "%u" a unique number to resolve conflicts -# "%%" translates to a single percent sign "%" -java.util.logging.FileHandler.pattern=NioServer.DebugLog-%u-%g.log - -# Specifies whether the FileHandler should append onto any existing files (defaults to false). -# java.util.logging.FileHandler.append= diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/component/HelloWorldApplication.java b/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/component/HelloWorldApplication.java deleted file mode 100644 index 7250d8010f..0000000000 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/component/HelloWorldApplication.java +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Copyright 2005-2024 Qlik - * - * The contents of this file is subject to the terms of the Apache 2.0 open - * source license available at http://www.opensource.org/licenses/apache-2.0 - * - * Restlet is a registered trademark of QlikTech International AB. - */ - -package org.restlet.test.component; - -import org.restlet.Application; -import org.restlet.Restlet; - -public class HelloWorldApplication extends Application { - - @Override - public synchronized Restlet createInboundRoot() { - return new HelloWorldRestlet(); - } -} diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/connector/FileClientTestCase.java b/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/connector/FileClientTestCase.java deleted file mode 100644 index 55314d2aa1..0000000000 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/connector/FileClientTestCase.java +++ /dev/null @@ -1,63 +0,0 @@ -/** - * Copyright 2005-2024 Qlik - * - * The contents of this file is subject to the terms of the Apache 2.0 open - * source license available at http://www.opensource.org/licenses/apache-2.0 - * - * Restlet is a registered trademark of QlikTech International AB. - */ - -package org.restlet.test.connector; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; - -import java.io.File; -import java.io.IOException; - -import org.junit.jupiter.api.Test; -import org.restlet.data.Language; -import org.restlet.data.LocalReference; -import org.restlet.data.Status; -import org.restlet.representation.StringRepresentation; -import org.restlet.resource.ClientResource; -import org.restlet.resource.ResourceException; -import org.restlet.test.RestletTestCase; - -/** - * Unit test case for the File client connector. - * - * @author Jerome Louvel - */ -public class FileClientTestCase extends RestletTestCase { - - @Test - public void testFileClient() throws IOException { - String text = "Test content\r\nLine 2\r\nLine2"; - LocalReference fr = LocalReference - .createFileReference(File.createTempFile("Restlet", ".txt." - + Language.DEFAULT.getName())); - ClientResource resource = new ClientResource(fr); - - try { - // Update the text of the temporary file - resource.put(new StringRepresentation(text)); - } catch (ResourceException e) { - } - assertTrue(resource.getStatus().isSuccess()); - - try { - // Get the text and compare to the original - resource.get(); - } catch (ResourceException e) { - } - assertEquals(Status.SUCCESS_OK, resource.getStatus()); - - try { - // Delete the file - resource.delete(); - } catch (ResourceException e) { - } - assertEquals(Status.SUCCESS_NO_CONTENT, resource.getStatus()); - } -} diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/data/ClientInfoTestCase.java b/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/data/ClientInfoTestCase.java deleted file mode 100644 index f51347107a..0000000000 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/data/ClientInfoTestCase.java +++ /dev/null @@ -1,114 +0,0 @@ -/** - * Copyright 2005-2024 Qlik - * - * The contents of this file is subject to the terms of the Apache 2.0 open - * source license available at http://www.opensource.org/licenses/apache-2.0 - * - * Restlet is a registered trademark of QlikTech International AB. - */ - -package org.restlet.test.data; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -import java.util.ArrayList; -import java.util.List; - -import org.junit.jupiter.api.Test; -import org.restlet.Request; -import org.restlet.data.ClientInfo; -import org.restlet.data.Language; -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; - -/** - * Test {@link org.restlet.data.ClientInfo} for content negotiation. - * - * @author Jerome Louvel - */ -public class ClientInfoTestCase extends RestletTestCase { - - /** - * Conneg tests. - */ - @Test - public void testConneg() { - MetadataService ms = new MetadataService(); - ConnegService connegService = new ConnegService(); - Request request = new Request(); - ClientInfo ci = request.getClientInfo(); - ci.getAcceptedLanguages().add( - new Preference<>(Language.ENGLISH_US, 1.0F)); - ci.getAcceptedLanguages().add( - new Preference<>(Language.FRENCH_FRANCE, 0.9F)); - ci.getAcceptedMediaTypes().add( - new Preference<>(MediaType.TEXT_XML, 1.0F)); - - List variants = new ArrayList<>(); - variants.add(new Variant(MediaType.TEXT_XML, Language.ENGLISH_US)); - variants.add(new Variant(MediaType.TEXT_XML, Language.FRENCH_FRANCE)); - Variant pv = connegService.getPreferredVariant(variants, request, ms); - - assertEquals(MediaType.TEXT_XML, pv.getMediaType()); - assertEquals(Language.ENGLISH_US, pv.getLanguages().get(0)); - - // Leveraging parent languages - variants.clear(); - variants.add(new Variant(MediaType.TEXT_XML, Language.ENGLISH)); - variants.add(new Variant(MediaType.TEXT_XML, Language.FRENCH)); - pv = connegService.getPreferredVariant(variants, request, ms); - - assertEquals(MediaType.TEXT_XML, pv.getMediaType()); - assertEquals(Language.ENGLISH, pv.getLanguages().get(0)); - - // Testing quality priority over parent metadata - variants.clear(); - variants.add(new Variant(MediaType.TEXT_PLAIN, Language.ENGLISH)); - variants.add(new Variant(MediaType.TEXT_XML, Language.FRENCH_FRANCE)); - pv = connegService.getPreferredVariant(variants, request, ms); - - assertEquals(MediaType.TEXT_XML, pv.getMediaType()); - assertEquals(Language.FRENCH_FRANCE, pv.getLanguages().get(0)); - - // Testing quality priority over parent metadata - variants.clear(); - variants.add(new Variant(MediaType.APPLICATION_XML, Language.ENGLISH_US)); - variants.add(new Variant(MediaType.TEXT_XML, Language.FRENCH_FRANCE)); - pv = connegService.getPreferredVariant(variants, request, ms); - - assertEquals(MediaType.TEXT_XML, pv.getMediaType()); - assertEquals(Language.FRENCH_FRANCE, pv.getLanguages().get(0)); - - // Leveraging parent media types - variants.clear(); - variants.add(new Variant(MediaType.APPLICATION_XML, Language.ENGLISH_US)); - variants.add(new Variant(MediaType.APPLICATION_XML, - Language.FRENCH_FRANCE)); - pv = connegService.getPreferredVariant(variants, request, ms); - - assertEquals(MediaType.APPLICATION_XML, pv.getMediaType()); - assertEquals(Language.ENGLISH_US, pv.getLanguages().get(0)); - - } - - /** - * Conneg tests for IE which accepts all media types. - */ - @Test - public void testConnegIO() { - ClientInfo ci = new ClientInfo(); - ci.getAcceptedMediaTypes().add( - new Preference<>(MediaType.ALL, 1.0F)); - - List types = new ArrayList<>(); - types.add(MediaType.TEXT_XML); - types.add(MediaType.APPLICATION_JSON); - MediaType pmt = ci.getPreferredMediaType(types); - - assertEquals(MediaType.TEXT_XML, pmt); - } -} diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/data/RangeTestCase.java b/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/data/RangeTestCase.java deleted file mode 100644 index b0072bcd42..0000000000 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/data/RangeTestCase.java +++ /dev/null @@ -1,457 +0,0 @@ -/** - * Copyright 2005-2024 Qlik - * - * The contents of this file is subject to the terms of the Apache 2.0 open - * source license available at http://www.opensource.org/licenses/apache-2.0 - * - * Restlet is a registered trademark of QlikTech International AB. - */ - -package org.restlet.test.data; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; - -import java.io.File; -import java.util.Arrays; -import java.util.List; - -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.Form; -import org.restlet.data.LocalReference; -import org.restlet.data.MediaType; -import org.restlet.data.Method; -import org.restlet.data.Parameter; -import org.restlet.data.Protocol; -import org.restlet.data.Range; -import org.restlet.data.Status; -import org.restlet.data.Tag; -import org.restlet.engine.io.IoUtils; -import org.restlet.engine.util.SystemUtils; -import org.restlet.representation.StringRepresentation; -import org.restlet.resource.Directory; -import org.restlet.routing.Router; -import org.restlet.test.RestletTestCase; - -/** - * Test {@link org.restlet.data.Range}. - * - * @author Jerome Louvel - */ -public class RangeTestCase extends RestletTestCase { - - /** - * Internal class used for test purpose. - * - */ - private static class TestRangeApplication extends Application { - - public TestRangeApplication() { - super(); - getRangeService().setEnabled(true); - } - - @Override - public Restlet createInboundRoot() { - Router router = new Router(); - router.attach("/test", new TestRangeRestlet()); - router.attach("/testGet", new TestRangeGetRestlet()); - Directory directory = new Directory(getContext(), - LocalReference.createFileReference(testDir)); - 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(new Tag("TestRangeGetRestlet")); - } - } - - /** - * Internal class used for test purpose. It tests the list of ranges sent by - * the request and compares it with the values sent into the query. - * - */ - private static class TestRangeRestlet extends Restlet { - - @Override - public void handle(Request request, Response response) { - Form form = request.getResourceRef().getQueryAsForm(); - List ranges = request.getRanges(); - boolean match = false; - - for (Parameter parameter : form) { - long index = 0; - long length = 0; - String value = parameter.getValue(); - if (value.startsWith("-")) { - index = Range.INDEX_LAST; - length = Long.parseLong(value.substring(1)); - } else if (value.endsWith("-")) { - index = Long.parseLong(value.substring(0, - value.length() - 1)); - length = Range.SIZE_MAX; - } else { - String[] tab = value.split("-"); - if (tab.length == 2) { - index = Long.parseLong(tab[0]); - length = Long.parseLong(tab[1]) - index; - } - } - - boolean found = false; - for (Range range : ranges) { - found = (index == range.getIndex()) - && (length == range.getSize()); - if (found) { - break; - } - } - if (!found) { - break; - } - match = true; - } - if (match) { - response.setStatus(Status.SUCCESS_OK); - response.setEntity(str1000, MediaType.TEXT_PLAIN); - } else { - response.setStatus(Status.CLIENT_ERROR_BAD_REQUEST); - } - } - } - - // Create a temporary directory for the tests - private static final File testDir = new File(System.getProperty("java.io.tmpdir"), "rangeTestCase"); - - // Sample string. - private static final String str1000; - - static { - char[] tab = new char[1000]; - Arrays.fill(tab, '1'); - str1000 = new String(tab); - } - - /** Component used for the tests. */ - private Component component; - - @BeforeEach - protected void setUpEach() throws Exception { - component = new Component(); - component.getServers().add(Protocol.HTTP, TEST_PORT); - component.getClients().add(Protocol.FILE); - component.getDefaultHost().attach(new TestRangeApplication()); - component.start(); - } - - @AfterEach - protected void tearDownEach() throws Exception { - component.stop(); - component = null; - } - - /** - * Tests partial Get requests. - * - * @throws Exception - */ - @Test - public void testGet() throws Exception { - Client client = new Client(Protocol.HTTP); - - // Test partial Get. - Request request = new Request(Method.GET, "http://localhost:" + TEST_PORT + "/testGet"); - Response response; - - response = client.handle(request); - assertEquals(Status.SUCCESS_OK, response.getStatus()); - assertEquals("1234567890", response.getEntity().getText()); - assertEquals(10, response.getEntity().getSize()); - assertEquals(10, response.getEntity().getAvailableSize()); - - request = new Request(Method.GET, "http://localhost:" + TEST_PORT + "/testGet"); - request.setRanges(Arrays.asList(new Range(0, 10))); - response = client.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()); - - request.setRanges(Arrays.asList(new Range(Range.INDEX_FIRST, 2))); - response = client.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()); - - request.setRanges(Arrays.asList(new Range(2, 2))); - response = client.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()); - - request.setRanges(Arrays.asList(new Range(2, 7))); - response = client.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()); - - request.setRanges(Arrays.asList(new Range(Range.INDEX_LAST, 7))); - response = client.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(3, response.getEntity().getRange().getIndex()); - assertEquals(7, response.getEntity().getRange().getSize()); - - request.setRanges(Arrays.asList(new Range(2, Range.SIZE_MAX))); - response = client.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()); - assertEquals(8, response.getEntity().getRange().getSize()); - - request.setRanges(Arrays.asList(new Range(2, 1000))); - response = client.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()); - assertEquals(8, response.getEntity().getRange().getSize()); - - client.stop(); - } - - /** - * Tests conditional ranges requests. - * - * @throws Exception - */ - @Test - public void testConditionalRanges() throws Exception { - Client client = new Client(Protocol.HTTP); - - // Test partial Get. - Request request = new Request(Method.GET, "http://localhost:" + TEST_PORT + "/testGet"); - Response response = client.handle(request); - Tag entityTag = response.getEntity().getTag(); - - request.setRanges(Arrays.asList(new Range(1, Range.SIZE_MAX))); - request.getConditions().setRangeTag(entityTag); - response = client.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(9, response.getEntity().getRange().getSize()); - - entityTag = new Tag(entityTag.getName() + "-test"); - request.setRanges(Arrays.asList(new Range(1, Range.SIZE_MAX))); - request.getConditions().setRangeTag(entityTag); - response = client.handle(request); - assertEquals(Status.SUCCESS_OK, response.getStatus()); - assertEquals("1234567890", response.getEntity().getText()); - client.stop(); - } - - /** - * Tests partial Put requests. - * - * @throws Exception - */ - @Test - public void testPut() throws Exception { - if (!SystemUtils.isWindows()) { - Request request; - Response response; - - IoUtils.delete(testDir, true); - Client client = new Client(new Context(), Protocol.HTTP); - client.getContext().getParameters().add("tracing", "true"); - - // PUT on a file that does not exist - request = new Request(Method.PUT, "http://localhost:" + TEST_PORT + "/testPut/essai.txt"); - request.setEntity(new StringRepresentation("1234567890")); - request.setRanges(Arrays.asList(new Range(0, 10))); - response = client.handle(request); - assertTrue(response.getStatus().isSuccess()); - response = client.handle(new Request(Method.GET, request.getResourceRef())); - assertEquals(Status.SUCCESS_OK, response.getStatus()); - assertEquals("1234567890", response.getEntity().getText()); - - // Partial PUT on a file, the provided representation overflowed the - // existing file - request = new Request(Method.PUT, "http://localhost:" + TEST_PORT + "/testPut/essai.txt"); - request.setEntity(new StringRepresentation("0000000000")); - request.setRanges(Arrays.asList(new Range(1, 10))); - response = client.handle(request); - assertTrue(response.getStatus().isSuccess()); - response = client.handle(new Request(Method.GET, request.getResourceRef())); - assertEquals(Status.SUCCESS_OK, response.getStatus()); - assertEquals("10000000000", response.getEntity().getText()); - - // Partial PUT on a file that does not exists, the provided range - // does not start at the 0 index. - request = new Request(Method.PUT, "http://localhost:" + TEST_PORT + "/testPut/essai2.txt"); - request.setEntity(new StringRepresentation("0000000000")); - request.setRanges(Arrays.asList(new Range(1, 10))); - response = client.handle(request); - assertTrue(response.getStatus().isSuccess()); - request.setMethod(Method.GET); - response = client.handle(request); - assertEquals(Status.SUCCESS_PARTIAL_CONTENT, response.getStatus()); - assertEquals("0000000000", response.getEntity().getText()); - - // Partial PUT on a file, simple range - request = new Request(Method.PUT, "http://localhost:" + TEST_PORT + "/testPut/essai.txt"); - request.setEntity(new StringRepresentation("22")); - request.setRanges(Arrays.asList(new Range(2, 2))); - response = client.handle(request); - assertTrue(response.getStatus().isSuccess()); - response = client.handle(new Request(Method.GET, request.getResourceRef())); - assertEquals(Status.SUCCESS_OK, response.getStatus()); - assertEquals("10220000000", response.getEntity().getText()); - - // Partial PUT on a file, the provided representation will be padded - // at the very end of the file. - request = new Request(Method.PUT, "http://localhost:" + TEST_PORT + "/testPut/essai.txt"); - request.setEntity(new StringRepresentation("888")); - request.setRanges(Arrays.asList(new Range(8, Range.SIZE_MAX))); - response = client.handle(request); - assertTrue(response.getStatus().isSuccess()); - response = client.handle(new Request(Method.GET, request.getResourceRef())); - assertEquals(Status.SUCCESS_OK, response.getStatus()); - assertEquals("10220000888", response.getEntity().getText()); - - // Partial PUT on a file that does not exist, the range does not - // specify the range size. - request = new Request(Method.PUT, "http://localhost:" + TEST_PORT + "/testPut/essai3.txt"); - request.setEntity(new StringRepresentation("888")); - request.setRanges(Arrays.asList(new Range(8, Range.SIZE_MAX))); - response = client.handle(request); - assertTrue(response.getStatus().isSuccess()); - request.setMethod(Method.GET); - response = client.handle(request); - assertEquals(Status.SUCCESS_PARTIAL_CONTENT, response.getStatus()); - assertEquals("888", response.getEntity().getText()); - - // Partial PUT on a file, the provided representation will be padded - // just before the end of the file. - request = new Request(Method.PUT, "http://localhost:" + TEST_PORT + "/testPut/essai.txt"); - request.setEntity(new StringRepresentation("99")); - request.setRanges(Arrays.asList(new Range(8, Range.SIZE_MAX))); - response = client.handle(request); - assertTrue(response.getStatus().isSuccess()); - response = client.handle(new Request(Method.GET, request.getResourceRef())); - assertEquals(Status.SUCCESS_OK, response.getStatus()); - assertEquals("10220000998", response.getEntity().getText()); - - request = new Request(Method.GET, "http://localhost:" + TEST_PORT + "/testPut/essai.txt"); - request.setRanges(Arrays.asList(new Range(3, Range.SIZE_MAX))); - response = client.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, "http://localhost:" + TEST_PORT + "/testPut/essai.txt"); - request.setEntity(new StringRepresentation("1234567890")); - request.setRanges(Arrays.asList(new Range(8, Range.SIZE_MAX, 10, "test"))); - response = client.handle(request); - assertTrue(response.getStatus().isSuccess()); - response = client.handle(new Request(Method.GET, request.getResourceRef())); - assertEquals(Status.SUCCESS_OK, response.getStatus()); - assertEquals("1234567890", response.getEntity().getText()); - - IoUtils.delete(testDir, true); - client.stop(); - } - } - - /** - * Tests ranges. - * - * @throws Exception - */ - @Test - public void testRanges() throws Exception { - Client client = new Client(Protocol.HTTP); - Request request; - Response response; - - // Test "range" header. - request = new Request(Method.GET, "http://localhost:" + TEST_PORT - + "/test?range=0-500"); - request.setRanges(Arrays.asList(new Range(0, 500))); - response = client.handle(request); - assertTrue(response.getStatus().isSuccess()); - response.getEntity().exhaust(); - - request = new Request(Method.GET, "http://localhost:" + TEST_PORT - + "/test?range=-500"); - request.setRanges(Arrays.asList(new Range(Range.INDEX_LAST, 500))); - response = client.handle(request); - assertTrue(response.getStatus().isSuccess()); - response.getEntity().exhaust(); - - request = new Request(Method.GET, "http://localhost:" + TEST_PORT - + "/test?range=500-"); - request.setRanges(Arrays.asList(new Range(500, Range.SIZE_MAX))); - response = client.handle(request); - assertTrue(response.getStatus().isSuccess()); - response.getEntity().exhaust(); - - request = new Request(Method.GET, "http://localhost:" + TEST_PORT - + "/test?range=500-1000"); - request.setRanges(Arrays.asList(new Range(500, 500))); - - response = client.handle(request); - assertTrue(response.getStatus().isSuccess()); - response.getEntity().exhaust(); - - // Multiple ranges are not supported yet. - // request = new Request(Method.GET, "http://localhost:" + TEST_PORT - // + "/test?range=500-1000&range=500-"); - // request.setRanges(Arrays.asList(new Range(500, 500), new Range(500, - // Range.SIZE_MAX))); - // assertTrue(client.handle(request).getStatus().isSuccess()); - - // client.stop(); - - } -} diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/AuthenticationTestCase.java b/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/AuthenticationTestCase.java deleted file mode 100644 index 0b15bd3bd7..0000000000 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/AuthenticationTestCase.java +++ /dev/null @@ -1,160 +0,0 @@ -/** - * Copyright 2005-2024 Qlik - * - * The contents of this file is subject to the terms of the Apache 2.0 open - * source license available at http://www.opensource.org/licenses/apache-2.0 - * - * Restlet is a registered trademark of QlikTech International AB. - */ - -package org.restlet.test.engine; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -import java.util.List; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.restlet.Request; -import org.restlet.data.ChallengeRequest; -import org.restlet.data.ChallengeResponse; -import org.restlet.data.ChallengeScheme; -import org.restlet.data.Digest; -import org.restlet.data.Header; -import org.restlet.data.Method; -import org.restlet.data.Reference; -import org.restlet.engine.Engine; -import org.restlet.engine.header.ChallengeWriter; -import org.restlet.engine.header.HeaderConstants; -import org.restlet.engine.security.AuthenticatorUtils; -import org.restlet.ext.crypto.internal.HttpAwsS3Helper; -import org.restlet.ext.crypto.internal.HttpDigestHelper; -import org.restlet.test.RestletTestCase; -import org.restlet.util.Series; - -/** - * Unit tests for the SecurityData related classes. - * - * @author Jerome Louvel - */ -public class AuthenticationTestCase extends RestletTestCase { - - @BeforeEach - protected void setUpEach() throws Exception { - org.restlet.engine.Engine.clear(); - } - - /** - * Test Amazon S3 authentication. - */ - @Test - public void testAwsS3() { - HttpAwsS3Helper helper = new HttpAwsS3Helper(); - - // Example Object GET - ChallengeWriter cw = new ChallengeWriter(); - ChallengeResponse challenge = new ChallengeResponse( - ChallengeScheme.HTTP_AWS_S3, "0PN5J17HBGZHT7JJ3X82", - "uV3F3YluFJax1cknvbcGwgjvx4QpvB+leU8dUj2o"); - Request request = new Request(Method.GET, - "http://johnsmith.s3.amazonaws.com/photos/puppy.jpg"); - Series

httpHeaders = new Series<>(Header.class); - httpHeaders.add(HeaderConstants.HEADER_DATE, - "Tue, 27 Mar 2007 19:36:42 +0000"); - - helper.formatResponse(cw, challenge, request, httpHeaders); - assertEquals("0PN5J17HBGZHT7JJ3X82:xXjDGYUmKxnwqr5KXNPGldn5LbA=", - cw.toString()); - - // Example Object PUT - cw = new ChallengeWriter(); - request.setMethod(Method.PUT); - httpHeaders.set(HeaderConstants.HEADER_DATE, - "Tue, 27 Mar 2007 21:15:45 +0000", true); - httpHeaders.add(HeaderConstants.HEADER_CONTENT_LENGTH, "94328"); - httpHeaders.add(HeaderConstants.HEADER_CONTENT_TYPE, "image/jpeg"); - helper.formatResponse(cw, challenge, request, httpHeaders); - assertEquals("0PN5J17HBGZHT7JJ3X82:hcicpDDvL9SsO6AkvxqmIWkmOuQ=", - cw.toString()); - } - - /** - * Tests the authentication parsing for HTTP BASIC. - * - */ - @Test - public void testParsingBasic() { - String authenticate1 = "Basic realm=\"Restlet tutorial\""; - String authorization1 = "Basic c2NvdHQ6dGlnZXI="; - - assertEquals(authorization1, AuthenticatorUtils.formatResponse( - AuthenticatorUtils.parseResponse(null, authorization1, null), - null, null)); - List creq = AuthenticatorUtils.parseRequest(null, - authenticate1, null); - assertEquals(creq.size(), 1); - assertEquals(authenticate1, - AuthenticatorUtils.formatRequest(creq.get(0), null, null)); - } - - /** - * Tests the authentication parsing for HTTP DIGEST. - * - */ - @Test - public void testParsingDigest() { - // make sure the Digest authentication scheme is registered - Engine.getInstance().getRegisteredAuthenticators().add(new HttpDigestHelper()); - ChallengeResponse cres1 = new ChallengeResponse( - ChallengeScheme.HTTP_DIGEST, - null, - "admin", - "12345".toCharArray(), - Digest.ALGORITHM_NONE, - null, - "qop", - new Reference("/protected/asdass"), - null, - null, - "MTE3NzEwMzIwMjkwMDoxNmMzODFiYzRjNWRjMmMyOTVkMWFhNDdkMTQ4OGFlMw==", - "MTE3NzEwMzIwMjkwMDoxNmMzODFiYzRjNWRjMmMyOTVkMWFhNDdkMTQ4OGFlMw==", - 1, 0L); - - Request request = new Request(Method.GET, - "http://remote.com/protected/asdass"); - String authorization1 = AuthenticatorUtils.formatResponse(cres1, - request, null); - String authenticate1 = "Digest realm=realm, domain=\"/protected/ /alsoProtected/\", qop=auth, algorithm=MD5, nonce=\"MTE3NzEwMzIwMjg0Mjo2NzFjODQyMjAyOWRlNWQ1YjFjNmEzYzJmOWRlZmE2Mw==\""; - - ChallengeResponse cres = AuthenticatorUtils.parseResponse(null, - authorization1, null); - cres.setRawValue(null); - assertEquals(authorization1, - AuthenticatorUtils.formatResponse(cres, request, null)); - - List creq = AuthenticatorUtils.parseRequest(null, - authenticate1, null); - assertEquals(creq.size(), 1); - assertEquals(authenticate1, - AuthenticatorUtils.formatRequest(creq.get(0), null, null)); - } - - /** - * Tests the authentication parsing for HTTP DIGEST. - */ - @Test - public void testParsingMultiValuedAuthenticate() { - String authenticate0 = "Basic realm=\"Restlet tutorial\""; - String authenticate1 = "Digest realm=realm, domain=\"/protected/ /alsoProtected/\", qop=auth, algorithm=MD5, nonce=\"MTE3NzEwMzIwMjg0Mjo2NzFjODQyMjAyOWRlNWQ1YjFjNmEzYzJmOWRlZmE2Mw==\""; - String authenticate = authenticate0 + "," + authenticate1; - - List creq = AuthenticatorUtils.parseRequest(null, - authenticate, null); - assertEquals(creq.size(), 2); - assertEquals(authenticate0, - AuthenticatorUtils.formatRequest(creq.get(0), null, null)); - assertEquals(authenticate1, - AuthenticatorUtils.formatRequest(creq.get(1), null, null)); - - } -} diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/ImmutableDateTestCase.java b/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/ImmutableDateTestCase.java deleted file mode 100644 index cc677fe5b7..0000000000 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/ImmutableDateTestCase.java +++ /dev/null @@ -1,49 +0,0 @@ -/** - * Copyright 2005-2024 Qlik - * - * The contents of this file is subject to the terms of the Apache 2.0 open - * source license available at http://www.opensource.org/licenses/apache-2.0 - * - * Restlet is a registered trademark of QlikTech International AB. - */ - -package org.restlet.test.engine; - -import static org.junit.jupiter.api.Assertions.assertTrue; - -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; - -/** - * Test {@link org.restlet.engine.util.DateUtils}. - * - * @author Thierry Boileau - */ -public class ImmutableDateTestCase extends RestletTestCase { - - @Test - public void test() { - 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/connector/SslBaseConnectorsTestCase.java b/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/connector/SslBaseConnectorsTestCase.java deleted file mode 100644 index 6dc35963c4..0000000000 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/engine/connector/SslBaseConnectorsTestCase.java +++ /dev/null @@ -1,189 +0,0 @@ -/** - * Copyright 2005-2024 Qlik - * - * The contents of this file is subject to the terms of the Apache 2.0 open - * source license available at http://www.opensource.org/licenses/apache-2.0 - * - * Restlet is a registered trademark of QlikTech International AB. - */ - -package org.restlet.test.engine.connector; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.OutputStream; - -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.Server; -import org.restlet.data.Method; -import org.restlet.data.Parameter; -import org.restlet.data.Protocol; -import org.restlet.engine.Engine; -import org.restlet.engine.connector.ConnectorHelper; -import org.restlet.engine.io.IoUtils; -import org.restlet.engine.local.ClapClientHelper; -import org.restlet.test.RestletTestCase; -import org.restlet.util.Series; - -/** - * Base test case that will call an abstract method for several client/server - * connectors configurations. (Modified for SSL support.) - * - * @author Kevin Conaway - * @author Bruno Harbulot - * @author Jerome Louvel - */ -@SuppressWarnings("unused") -public abstract class SslBaseConnectorsTestCase extends RestletTestCase { - - private Component component; - - private final boolean enabledClientApache = true; - - private final boolean enabledClientInternal = true; - - private final boolean enabledClientJetty = false; - - private final boolean enabledServerInternal = true; - - private final boolean enabledServerJetty = false; - - private final File testDir = new File(System.getProperty("java.io.tmpdir"), - "SslBaseConnectorsTestCase"); - - protected final File testKeystoreFile = new File(testDir, "dummy.jks"); - - protected abstract void call(String uri) throws Exception; - - protected void configureSslClientParameters(Context context) { - Series parameters = context.getParameters(); - parameters.add("truststorePath", testKeystoreFile.getPath()); - parameters.add("truststorePassword", "testtest"); - } - - protected void configureSslServerParameters(Context context) { - Series parameters = context.getParameters(); - parameters.add("keystorePath", testKeystoreFile.getPath()); - parameters.add("keystorePassword", "testtest"); - parameters.add("keyPassword", "testtest"); - parameters.add("truststorePath", testKeystoreFile.getPath()); - parameters.add("truststorePassword", "testtest"); - // parameters.add("tracing", "true"); - } - - protected abstract Application createApplication(Component component); - - // Helper methods - private void runTest(ConnectorHelper server, - ConnectorHelper client) throws Exception { - Engine engine = Engine.register(false); - engine.getRegisteredClients().add(new ClapClientHelper(null)); - engine.getRegisteredServers().add(server); - engine.getRegisteredClients().add(client); - String uri = start(); - - try { - call(uri); - } finally { - stop(); - } - } - - @BeforeEach - public void setUpEach() throws Exception { - try { - if (!testKeystoreFile.exists()) { - // Prepare a temporary directory for the tests - IoUtils.delete(this.testDir, true); - this.testDir.mkdir(); - // Copy the keystore into the test directory - Response response = new Client(Protocol.CLAP) - .handle(new Request(Method.GET, - "clap://class/org/restlet/test/engine/connector/dummy.jks")); - - if (response.getEntity() != null) { - OutputStream outputStream = new FileOutputStream( - testKeystoreFile); - response.getEntity().write(outputStream); - outputStream.flush(); - outputStream.close(); - } else { - throw new Exception( - "Unable to find the dummy.jks file in the classpath."); - } - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - protected String start() throws Exception { - this.component = new Component(); - - final Server server = this.component.getServers() - .add(Protocol.HTTPS, 0); - configureSslServerParameters(server.getContext()); - final Application application = createApplication(this.component); - - this.component.getDefaultHost().attach(application); - this.component.start(); - - return "https://localhost:" + server.getEphemeralPort() + "/test"; - } - - protected void stop() throws Exception { - if ((this.component != null) && this.component.isStarted()) { - this.component.stop(); - } - this.component = null; - } - - @AfterEach - protected void tearDownEach() throws Exception { - IoUtils.delete(this.testKeystoreFile); - IoUtils.delete(this.testDir, true); - - // Restore a clean engine - org.restlet.engine.Engine.register(); - } - - @Test - public void testSslInternalAndInternal() throws Exception { - if (this.enabledServerInternal && this.enabledClientInternal) { - runTest(new org.restlet.engine.connector.HttpsServerHelper(null), - new org.restlet.engine.connector.HttpClientHelper(null)); - } - } - - @Test - public void testSslInternalAndJetty() throws Exception { - if (this.enabledServerInternal && this.enabledClientJetty) { - runTest(new org.restlet.engine.connector.HttpsServerHelper(null), - new org.restlet.ext.jetty.HttpClientHelper(null)); - } - } - - @Test - public void testSslJettyAndInternal() throws Exception { - if (this.enabledServerJetty && this.enabledClientInternal) { - runTest(new org.restlet.ext.jetty.HttpsServerHelper(null), - new org.restlet.engine.connector.HttpClientHelper(null)); - } - } - - @Test - public void testSslJettyAndJetty() throws Exception { - if (this.enabledServerJetty && this.enabledClientJetty) { - runTest(new org.restlet.ext.jetty.HttpsServerHelper(null), - new org.restlet.ext.jetty.HttpClientHelper(null)); - } - } -} diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/crypto/HttpDigestTestCase.java b/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/crypto/HttpDigestTestCase.java deleted file mode 100644 index 45536917bd..0000000000 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/crypto/HttpDigestTestCase.java +++ /dev/null @@ -1,125 +0,0 @@ -/** - * Copyright 2005-2024 Qlik - * - * The contents of this file is subject to the terms of the Apache 2.0 open - * source license available at http://www.opensource.org/licenses/apache-2.0 - * - * Restlet is a registered trademark of QlikTech International AB. - */ - -package org.restlet.test.ext.crypto; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; - -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.Request; -import org.restlet.Response; -import org.restlet.Restlet; -import org.restlet.Server; -import org.restlet.data.ChallengeRequest; -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.ext.crypto.DigestAuthenticator; -import org.restlet.resource.ClientResource; -import org.restlet.resource.ResourceException; -import org.restlet.routing.Router; -import org.restlet.security.MapVerifier; -import org.restlet.test.RestletTestCase; - -/** - * Restlet unit tests for HTTP DIGEST authentication client/server. - * - * @author Jerome Louvel - */ -public class HttpDigestTestCase extends RestletTestCase { - - private Component component; - - private int port; - - private static class MyApplication extends Application { - @Override - public Restlet createInboundRoot() { - Router router = new Router(getContext()); - - DigestAuthenticator da = new DigestAuthenticator(getContext(), - "TestRealm", "mySecretServerKey"); - MapVerifier mapVerifier = new MapVerifier(); - mapVerifier.getLocalSecrets().put("scott", "tiger".toCharArray()); - da.setWrappedVerifier(mapVerifier); - - Restlet restlet = new Restlet(getContext()) { - @Override - public void handle(Request request, Response response) { - response.setEntity("hello, world", MediaType.TEXT_PLAIN); - } - }; - da.setNext(restlet); - router.attach("/", da); - return router; - } - } - - @BeforeEach - protected void setUpEach() throws Exception { - component = new Component(); - Server server = component.getServers().add(Protocol.HTTP, 0); - Application application = new MyApplication(); - component.getDefaultHost().attach(application); - component.start(); - port = server.getEphemeralPort(); - } - - @AfterEach - protected void tearDownEach() throws Exception { - component.stop(); - component = null; - } - - @Test - public void testDigest() throws Exception { - ClientResource cr = new ClientResource("http://localhost:" + port + "/"); - - // Try unauthenticated request - try { - cr.get(); - } catch (ResourceException re) { - assertEquals(Status.CLIENT_ERROR_UNAUTHORIZED, cr.getStatus()); - - ChallengeRequest c1 = null; - for (ChallengeRequest challengeRequest : cr.getChallengeRequests()) { - if (ChallengeScheme.HTTP_DIGEST.equals(challengeRequest - .getScheme())) { - c1 = challengeRequest; - break; - } - } - assertEquals(ChallengeScheme.HTTP_DIGEST, c1.getScheme()); - - String realm = c1.getRealm(); - assertEquals("TestRealm", realm); - - // String opaque = c1.getParameters().getFirstValue("opaque"); - // String qop = c1.getParameters().getFirstValue("qop"); - // assertEquals(null, opaque); - // assertEquals("auth", qop); - - // Try authenticated request - cr.getRequest().setMethod(Method.GET); - ChallengeResponse c2 = new ChallengeResponse(c1, cr.getResponse(), - "scott", "tiger".toCharArray()); - cr.setChallengeResponse(c2); - cr.get(); - assertTrue(cr.getStatus().isSuccess()); - } - } -} diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/html/FormTestCase.java b/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/html/FormTestCase.java deleted file mode 100644 index 9491b0f169..0000000000 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/ext/html/FormTestCase.java +++ /dev/null @@ -1,81 +0,0 @@ -/** - * Copyright 2005-2024 Qlik - *

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

- * Restlet is a registered trademark of QlikTech International AB. - */ - -package org.restlet.test.ext.html; - -import java.io.IOException; - -import org.junit.jupiter.api.Test; -import org.restlet.test.RestletTestCase; - -/** - * Unit tests for the Form class. - * - * @author Jerome Louvel - */ -public class FormTestCase extends RestletTestCase { - - /** - * Tests the cookies parsing. - */ - @Test - public void testParsing() throws IOException { -/* -TODO restore test of Form class - FormDataSet form = new FormDataSet(); - form.add("name", "John D. Mitchell"); - form.add("email", "john@bob.net"); - form.add("email2", "joe@bob.net"); - String query = form.encode(); - - Series newFormData = new FormReader(query, - CharacterSet.UTF_8, '&').read(); - - FormDataSet newForm = new FormDataSet(); - newForm.getEntries().addAll(newFormData); - String newQuery = newForm.encode(); - - assertEquals(query, newQuery); - */ - } - - /** - * Tests the multipart content-type. - */ - @Test - public void testContentType() { - /* -TODO restore test of Form class - FormDataSet form = null; - - form = new FormDataSet(); - form.setMultipart(true); - assertTrue(form.getMediaType().equals(MediaType.MULTIPART_FORM_DATA, - true)); - - form = new FormDataSet("test"); - assertTrue(form.isMultipart()); - assertTrue(form.getMediaType().equals(MediaType.MULTIPART_FORM_DATA, - true)); - assertEquals( - form.getMediaType().getParameters().getFirstValue("boundary"), - "test"); - form = new FormDataSet(); - - form.setMultipartBoundary("test2"); - assertTrue(form.isMultipart()); - assertTrue(form.getMediaType().equals(MediaType.MULTIPART_FORM_DATA, - true)); - assertEquals( - form.getMediaType().getParameters().getFirstValue("boundary"), - "test2"); - - */ - } -} diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/representation/DigesterRepresentationTestCase.java b/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/representation/DigesterRepresentationTestCase.java deleted file mode 100644 index b96b1b372e..0000000000 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/representation/DigesterRepresentationTestCase.java +++ /dev/null @@ -1,131 +0,0 @@ -/** - * Copyright 2005-2024 Qlik - * - * The contents of this file is subject to the terms of the Apache 2.0 open - * source license available at http://www.opensource.org/licenses/apache-2.0 - * - * Restlet is a registered trademark of QlikTech International AB. - */ - -package org.restlet.test.representation; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.junit.jupiter.api.Assertions.fail; - -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.Method; -import org.restlet.data.Protocol; -import org.restlet.data.Status; -import org.restlet.representation.DigesterRepresentation; -import org.restlet.representation.Representation; -import org.restlet.representation.StringRepresentation; -import org.restlet.test.RestletTestCase; - -/** - * Test {@link org.restlet.engine.util.DateUtils}. - * - * @author Thierry Boileau - */ -public class DigesterRepresentationTestCase extends RestletTestCase { - - /** Component used for the tests. */ - private Component component; - - /** - * Internal class used for test purpose. - * - */ - private static class TestDigestApplication extends Application { - - @Override - public Restlet createInboundRoot() { - Restlet restlet = new Restlet() { - @Override - public void handle(Request request, Response response) { - Representation rep = request.getEntity(); - try { - // Such representation computes the digest while - // consuming the wrapped representation. - DigesterRepresentation digester = new DigesterRepresentation( - rep); - digester.exhaust(); - - if (digester.checkDigest()) { - response.setStatus(Status.SUCCESS_OK); - StringRepresentation f = new StringRepresentation( - "9876543210"); - digester = new DigesterRepresentation(f); - // Consume first - digester.exhaust(); - // Set the digest - digester.setDigest(digester.computeDigest()); - response.setEntity(digester); - } else { - response.setStatus(Status.CLIENT_ERROR_BAD_REQUEST); - } - } catch (Exception e1) { - } - } - - }; - return restlet; - } - } - - @BeforeEach - protected void setUpEach() throws Exception { - component = new Component(); - component.getServers().add(Protocol.HTTP, TEST_PORT); - component.getDefaultHost().attach(new TestDigestApplication()); - component.start(); - } - - @AfterEach - protected void tearDownEach() throws Exception { - component.stop(); - component = null; - } - - /** - * Tests partial Get requests. - * - */ - @Test - public void testGet() { - Client client = new Client(Protocol.HTTP); - - // Test partial Get. - Request request = new Request(Method.PUT, "http://localhost:" - + TEST_PORT + "/"); - StringRepresentation rep = new StringRepresentation("0123456789"); - try { - DigesterRepresentation digester = new DigesterRepresentation(rep); - // Such representation computes the digest while - // consuming the wrapped representation. - digester.exhaust(); - // Set the digest with the computed one - digester.setDigest(digester.computeDigest()); - request.setEntity(digester); - - Response response = client.handle(request); - - assertEquals(Status.SUCCESS_OK, response.getStatus()); - digester = new DigesterRepresentation(response.getEntity()); - digester.exhaust(); - assertTrue(digester.checkDigest()); - - client.stop(); - } catch (Exception e) { - fail(e.getMessage()); - } - } -} diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/Anno09Client.java b/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/Anno09Client.java deleted file mode 100644 index c1e272b6f0..0000000000 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/Anno09Client.java +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Copyright 2005-2024 Qlik - * - * The contents of this file is subject to the terms of the Apache 2.0 open - * source license available at http://www.opensource.org/licenses/apache-2.0 - * - * Restlet is a registered trademark of QlikTech International AB. - */ - -package org.restlet.test.resource; - -public class Anno09Client { - - /** - * @param args - * @throws Exception - */ - public static void main(String[] args) throws Exception { - - AnnotatedResource09TestCase anno9 = new AnnotatedResource09TestCase(); - anno9.initClient(); - anno9.testCustomMethod(AnnotatedResource09TestCase.SI); - - } - -} diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/Anno09Server.java b/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/Anno09Server.java deleted file mode 100644 index 4aa69d42ec..0000000000 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/Anno09Server.java +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Copyright 2005-2024 Qlik - * - * The contents of this file is subject to the terms of the Apache 2.0 open - * source license available at http://www.opensource.org/licenses/apache-2.0 - * - * Restlet is a registered trademark of QlikTech International AB. - */ - -package org.restlet.test.resource; - -public class Anno09Server { - - /** - * @param args - * @throws Exception - */ - public static void main(String[] args) throws Exception { - InternalConnectorTestCase anno9 = new AnnotatedResource09TestCase(); - anno9.initServer(); - } - -} diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource13TestCase.java b/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource13TestCase.java deleted file mode 100644 index ab9c56aa3d..0000000000 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource13TestCase.java +++ /dev/null @@ -1,62 +0,0 @@ -/** - * Copyright 2005-2024 Qlik - * - * The contents of this file is subject to the terms of the Apache 2.0 open - * source license available at http://www.opensource.org/licenses/apache-2.0 - * - * Restlet is a registered trademark of QlikTech International AB. - */ - -package org.restlet.test.resource; - -import static org.junit.jupiter.api.Assertions.assertNotEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; - -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.restlet.resource.ClientResource; -import org.restlet.resource.Finder; -import org.restlet.test.RestletTestCase; - -/** - * Test the annotated resources, client and server sides. - * - * @author Jerome Louvel - */ -public class AnnotatedResource13TestCase extends RestletTestCase { - - private ClientResource clientResource; - - private MyResource13 myResource; - - @BeforeEach - protected void setUpEach() throws Exception { - Finder finder = new Finder(); - finder.setTargetClass(MyServerResource13.class); - - this.clientResource = new ClientResource("http://local"); - this.clientResource.setNext(finder); - this.myResource = clientResource.wrap(MyResource13.class); - } - - @AfterEach - protected void tearDownEach() throws Exception { - clientResource = null; - 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); - } - -} diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource15TestCase.java b/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource15TestCase.java deleted file mode 100644 index 457cd2b8f9..0000000000 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource15TestCase.java +++ /dev/null @@ -1,57 +0,0 @@ -/** - * Copyright 2005-2024 Qlik - * - * The contents of this file is subject to the terms of the Apache 2.0 open - * source license available at http://www.opensource.org/licenses/apache-2.0 - * - * Restlet is a registered trademark of QlikTech International AB. - */ - -package org.restlet.test.resource; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; - -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.ext.jackson.JacksonRepresentation; -import org.restlet.representation.Representation; -import org.restlet.resource.ClientResource; -import org.restlet.resource.Finder; -import org.restlet.test.RestletTestCase; - -/** - * Test the annotated resources, client and server sides. - * - * @author Jerome Louvel - */ -public class AnnotatedResource15TestCase extends RestletTestCase { - - private ClientResource clientResource; - - @BeforeEach - protected void setUpEach() throws Exception { - Finder finder = new Finder(); - finder.setTargetClass(MyServerResource15.class); - - this.clientResource = new ClientResource("http://local"); - this.clientResource.setNext(finder); - } - - @AfterEach - protected void tearDownEach() throws Exception { - clientResource.release(); - clientResource = null; - } - - @Test - public void testQuery() { - MyBean myBean = new MyBean("test", "description"); - Representation rep = clientResource.post(new JacksonRepresentation<>(myBean), - MediaType.APPLICATION_JSON); - assertNotNull(rep); - assertEquals(MediaType.APPLICATION_JSON, rep.getMediaType()); - } -} diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource16TestCase.java b/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource16TestCase.java deleted file mode 100644 index a9cfc03758..0000000000 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource16TestCase.java +++ /dev/null @@ -1,60 +0,0 @@ -/** - * Copyright 2005-2024 Qlik - * - * The contents of this file is subject to the terms of the Apache 2.0 open - * source license available at http://www.opensource.org/licenses/apache-2.0 - * - * Restlet is a registered trademark of QlikTech International AB. - */ - -package org.restlet.test.resource; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; - -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.engine.Engine; -import org.restlet.ext.jackson.JacksonConverter; -import org.restlet.ext.jackson.JacksonRepresentation; -import org.restlet.representation.Representation; -import org.restlet.resource.ClientResource; -import org.restlet.resource.Finder; -import org.restlet.test.RestletTestCase; - -/** - * Test the annotated resources, client and server sides. - * - * @author Jerome Louvel - */ -public class AnnotatedResource16TestCase extends RestletTestCase { - - private ClientResource clientResource; - - @BeforeEach - protected void setUpEach() throws Exception { - Engine.getInstance().getRegisteredConverters().add(new JacksonConverter()); - Finder finder = new Finder(); - finder.setTargetClass(MyServerResource16.class); - - this.clientResource = new ClientResource("http://local"); - this.clientResource.setNext(finder); - } - - @AfterEach - protected void tearDownEach() throws Exception { - clientResource = null; - } - - @Test - public void testQuery() { - final MyBean myBean = new MyBean("test", "description"); - final Representation rep = clientResource.post(new JacksonRepresentation(myBean), - MediaType.APPLICATION_JSON); - - assertNotNull(rep); - assertEquals(MediaType.APPLICATION_JSON, rep.getMediaType()); - } -} diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource17TestCase.java b/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource17TestCase.java deleted file mode 100644 index 29c90f76cc..0000000000 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource17TestCase.java +++ /dev/null @@ -1,60 +0,0 @@ -/** - * Copyright 2005-2024 Qlik - * - * The contents of this file is subject to the terms of the Apache 2.0 open - * source license available at http://www.opensource.org/licenses/apache-2.0 - * - * Restlet is a registered trademark of QlikTech International AB. - */ - -package org.restlet.test.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.ext.jackson.JacksonRepresentation; -import org.restlet.representation.Representation; -import org.restlet.resource.ClientResource; -import org.restlet.resource.Finder; -import org.restlet.test.RestletTestCase; - -/** - * Test the annotated resources, client and server sides. - * - * @author Jerome Louvel - */ -public class AnnotatedResource17TestCase extends RestletTestCase { - - private ClientResource clientResource; - - @BeforeEach - protected void setUpEach() throws Exception { - Finder finder = new Finder(); - finder.setTargetClass(MyServerResource17.class); - - this.clientResource = new ClientResource("http://local"); - this.clientResource.setNext(finder); - } - - @AfterEach - protected void tearDownEach() throws Exception { - clientResource = null; - } - - @Test - public void testQuery() throws IOException { - MyBean myBean = new MyBean("test", "description"); - Representation rep = clientResource.post(new JacksonRepresentation<>(myBean), MediaType.APPLICATION_JSON); - assertNotNull(rep); - assertEquals(MediaType.APPLICATION_JSON, rep.getMediaType()); - JacksonRepresentation jr = new JacksonRepresentation<>(rep, MyBean.class); - assertNotNull(jr.getObject()); - assertEquals("test", jr.getObject().getName()); - } -} diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource18TestCase.java b/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource18TestCase.java deleted file mode 100644 index d273d13130..0000000000 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/AnnotatedResource18TestCase.java +++ /dev/null @@ -1,60 +0,0 @@ -/** - * Copyright 2005-2024 Qlik - * - * The contents of this file is subject to the terms of the Apache 2.0 open - * source license available at http://www.opensource.org/licenses/apache-2.0 - * - * Restlet is a registered trademark of QlikTech International AB. - */ - -package org.restlet.test.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.ext.jackson.JacksonRepresentation; -import org.restlet.representation.Representation; -import org.restlet.resource.ClientResource; -import org.restlet.resource.Finder; -import org.restlet.test.RestletTestCase; - -/** - * Test the annotated resources, client and server sides. - * - * @author Jerome Louvel - */ -public class AnnotatedResource18TestCase extends RestletTestCase { - - private ClientResource clientResource; - - @BeforeEach - protected void setUpEach() throws Exception { - Finder finder = new Finder(); - finder.setTargetClass(MyServerResource18.class); - - this.clientResource = new ClientResource("http://local"); - this.clientResource.setNext(finder); - } - - @AfterEach - protected void tearDownEach() throws Exception { - clientResource = null; - } - - @Test - public void testQuery() throws IOException { - MyBean myBean = new MyBean("test", "description"); - Representation rep = clientResource.post(new JacksonRepresentation<>(myBean), MediaType.APPLICATION_JSON); - assertNotNull(rep); - assertEquals(MediaType.APPLICATION_JSON, rep.getMediaType()); - JacksonRepresentation jr = new JacksonRepresentation<>(rep, MyBean.class); - assertNotNull(jr.getObject()); - assertEquals("test", jr.getObject().getName()); - } -} diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/Contact.java b/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/Contact.java deleted file mode 100644 index 5fa7f21efe..0000000000 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/Contact.java +++ /dev/null @@ -1,43 +0,0 @@ -/** - * Copyright 2005-2024 Qlik - * - * The contents of this file is subject to the terms of the Apache 2.0 open - * source license available at http://www.opensource.org/licenses/apache-2.0 - * - * Restlet is a registered trademark of QlikTech International AB. - */ - -package org.restlet.test.resource; - -import java.util.Date; - -public class Contact extends LightContact { - - 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; - } - -} diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/FullContact.java b/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/FullContact.java deleted file mode 100644 index 1b8c2dd4e9..0000000000 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/FullContact.java +++ /dev/null @@ -1,77 +0,0 @@ -/** - * Copyright 2005-2024 Qlik - * - * The contents of this file is subject to the terms of the Apache 2.0 open - * source license available at http://www.opensource.org/licenses/apache-2.0 - * - * Restlet is a registered trademark of QlikTech International AB. - */ - -package org.restlet.test.resource; - -import java.util.Date; - -public class FullContact extends Contact { - - 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; - } - -} diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/LightContact.java b/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/LightContact.java deleted file mode 100644 index 191caaf2e6..0000000000 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/LightContact.java +++ /dev/null @@ -1,51 +0,0 @@ -/** - * Copyright 2005-2024 Qlik - * - * The contents of this file is subject to the terms of the Apache 2.0 open - * source license available at http://www.opensource.org/licenses/apache-2.0 - * - * Restlet is a registered trademark of QlikTech International AB. - */ - -package org.restlet.test.resource; - -public class LightContact { - - 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; - } - -} diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource13.java b/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource13.java deleted file mode 100644 index d4bbee2c43..0000000000 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyResource13.java +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Copyright 2005-2024 Qlik - * - * The contents of this file is subject to the terms of the Apache 2.0 open - * source license available at http://www.opensource.org/licenses/apache-2.0 - * - * Restlet is a registered trademark of QlikTech International AB. - */ - -package org.restlet.test.resource; - -import org.restlet.resource.Get; - -/** - * Annotated interface that declares a single "Get" method. - * - * @author Thierry Boileau - * - */ -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/MyServerResource13.java b/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyServerResource13.java deleted file mode 100644 index ae7b141882..0000000000 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyServerResource13.java +++ /dev/null @@ -1,38 +0,0 @@ -/** - * Copyright 2005-2024 Qlik - * - * The contents of this file is subject to the terms of the Apache 2.0 open - * source license available at http://www.opensource.org/licenses/apache-2.0 - * - * Restlet is a registered trademark of QlikTech International AB. - */ - -package org.restlet.test.resource; - -import java.util.Date; - -import org.restlet.resource.ServerResource; - -/** - * Sample server resource for modifier testing. - * - * @author Jerome Louvel - */ -public 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"); - } - -} diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyServerResource14.java b/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyServerResource14.java deleted file mode 100644 index ba028e8135..0000000000 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/resource/MyServerResource14.java +++ /dev/null @@ -1,44 +0,0 @@ -/** - * Copyright 2005-2024 Qlik - * - * The contents of this file is subject to the terms of the Apache 2.0 open - * source license available at http://www.opensource.org/licenses/apache-2.0 - * - * Restlet is a registered trademark of QlikTech International AB. - */ - -package org.restlet.test.resource; - -import org.restlet.data.MediaType; -import org.restlet.representation.Representation; -import org.restlet.representation.StringRepresentation; -import org.restlet.resource.Put; -import org.restlet.resource.ServerResource; - -/** - * Sample server resource for testing annotated PUT methods. - * - * @author Jerome Louvel - */ -public 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.test/src/main/java/org/restlet/test/service/StatusServiceTestCase.java b/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/service/StatusServiceTestCase.java deleted file mode 100644 index b5da47ee60..0000000000 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/service/StatusServiceTestCase.java +++ /dev/null @@ -1,272 +0,0 @@ -/** - * Copyright 2005-2024 Qlik - * - * The contents of this file is subject to the terms of the Apache 2.0 open - * source license available at http://www.opensource.org/licenses/apache-2.0 - * - * Restlet is a registered trademark of QlikTech International AB. - */ - -package org.restlet.test.service; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; - -import java.io.IOException; -import java.util.HashMap; - -import org.junit.jupiter.api.BeforeAll; -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.ext.jackson.JacksonConverter; -import org.restlet.ext.jackson.JacksonRepresentation; -import org.restlet.representation.Representation; -import org.restlet.service.StatusService; - -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; - -/** - * Unit tests for the status service. - * - * @author Jerome Louvel - */ -public class StatusServiceTestCase { - - @BeforeAll - static void setUp() throws Exception { - Application application = new Application(); - Application.setCurrent(application); - - Engine.clearThreadLocalVariables(); - - // Restore a clean engine - org.restlet.engine.Engine.register(false); - - // Prefer the internal connectors - Engine.getInstance().getRegisteredConverters() - .add(0, new JacksonConverter()); - } - - @Test - public void testAnnotation() { - StatusService ss = new StatusService(); - Status status = ss.toStatus(new Status400Exception("test message", 50), - null, null); - assertEquals(400, status.getCode()); - } - - @Test - public void testStatusSerialization() throws IOException { - StatusService ss = new StatusService(); - - Status status = new Status(400, new Status400Exception("test message", - 50)); - - Request request = new Request(); - Representation representation = ss.toRepresentation(status, request, - new Response(request)); - - // verify - Status expectedStatus = Status.CLIENT_ERROR_BAD_REQUEST; - assertEquals(MediaType.APPLICATION_JSON, representation.getMediaType()); - - @SuppressWarnings("unchecked") - HashMap map = (HashMap) new JacksonRepresentation<>( - representation, HashMap.class).getObject(); - assertEquals(expectedStatus.getCode(), map.get("code")); - assertEquals(expectedStatus.getDescription(), map.get("description")); - assertEquals(expectedStatus.getReasonPhrase(), map.get("reasonPhrase")); - assertEquals(expectedStatus.getUri(), map.get("uri")); - } - - @Test - public void testSerializedException() throws IOException { - Throwable exception = new Status401SerializableException( - "test message", 50); - Status status = new Status(400, exception); - - StatusService ss = new StatusService(); - - Request request = new Request(); - Representation representation = ss.toRepresentation(status, request, - new Response(request)); - - // verify - - assertEquals(MediaType.APPLICATION_JSON, representation.getMediaType()); - Status401SerializableException e = new JacksonRepresentation<>( - representation, Status401SerializableException.class) - .getObject(); - assertEquals(exception.getStackTrace().length, e.getStackTrace().length); - assertEquals(50, e.getValue()); - // TODO cf issue #993 - // assertEquals("test message", e.getMessage()); - // assertEquals("test message", e.getLocalizedMessage()); - assertEquals(0, ((Throwable[]) e.getSuppressed()).length); - } - - @Test - public void testSerializedExceptionWithCause() throws IOException { - - Throwable rootCause = new IOException( - "File '/toto.txt' is not readable"); - Throwable exception = new Status401SerializableException( - "test message", 50, rootCause); - Status status = new Status(400, exception); - - StatusService ss = new StatusService(); - - Request request = new Request(); - Representation representation = ss.toRepresentation(status, request, - new Response(request)); - - // verify - assertEquals(MediaType.APPLICATION_JSON, representation.getMediaType()); - Status401SerializableException e = new JacksonRepresentation<>( - representation, Status401SerializableException.class) - .getObject(); - assertEquals(exception.getStackTrace().length, e.getStackTrace().length); - assertEquals(50, e.getValue()); - // TODO cf issue #993 - // assertEquals("test message", e.getMessage()); - // assertEquals("test message", e.getLocalizedMessage()); - assertEquals(0, e.getSuppressed().length); - assertNotNull(e.getCause()); - } - - @Test - public void testSerializedBusinessException() throws IOException { - Throwable exception = new Status402SerializableBusinessException( - "test message", 50); - Status status = new Status(400, exception); - - StatusService ss = new StatusService(); - - Request request = new Request(); - Representation representation = ss.toRepresentation(status, request, - new Response(request)); - - // verify - assertEquals(MediaType.APPLICATION_JSON, representation.getMediaType()); - Status402SerializableBusinessException e = new JacksonRepresentation<>( - representation, Status402SerializableBusinessException.class) - .getObject(); - assertEquals(50, e.getValue()); - } - - @Test - public void testSerializedBusinessExceptionWithCause() throws IOException { - - Throwable rootCause = new IOException( - "File '/toto.txt' is not readable"); - Throwable exception = new Status402SerializableBusinessException( - "test message", 50, rootCause); - Status status = new Status(400, exception); - - StatusService ss = new StatusService(); - - Request request = new Request(); - Representation representation = ss.toRepresentation(status, request, - new Response(request)); - - // verify - assertEquals(MediaType.APPLICATION_JSON, representation.getMediaType()); - Status402SerializableBusinessException e = new JacksonRepresentation<>( - representation, Status402SerializableBusinessException.class) - .getObject(); - assertEquals(50, e.getValue()); - } - - @org.restlet.resource.Status(value = 400, serialize = false) - private static class Status400Exception extends Throwable { - - private static final long serialVersionUID = 1L; - - private final int value; - - public Status400Exception(String message, int value) { - super(message); - this.value = value; - } - - @SuppressWarnings("unused") - public int getValue() { - return value; - } - } - - @org.restlet.resource.Status(value = 401, serialize = true) - // TODO cf issue #993 - @JsonIgnoreProperties({ "localizedMessage", "message" }) - private static class Status401SerializableException extends Throwable { - - private static final long serialVersionUID = 1L; - - private int value; - - @SuppressWarnings("unused") - public Status401SerializableException() { - } - - public Status401SerializableException(String message, int value) { - super(message); - this.value = value; - } - - public Status401SerializableException(String message, int value, - Throwable cause) { - super(message, cause); - this.value = value; - } - - public int getValue() { - return value; - } - } - - @SuppressWarnings("serial") - @JsonIgnoreProperties({ "cause", "localizedMessage", "message", - "stackTrace", "suppressed" }) - private static class StatusBusinessException extends Throwable { - private StatusBusinessException(String message) { - super(message); - } - - private StatusBusinessException(String message, Throwable cause) { - super(message, cause); - } - } - - @org.restlet.resource.Status(value = 402) - private static class Status402SerializableBusinessException extends - StatusBusinessException { - - private static final long serialVersionUID = 1L; - - private int value; - - public Status402SerializableBusinessException() { - super(null); - } - - public Status402SerializableBusinessException(String message, int value) { - super(message); - this.value = value; - } - - public Status402SerializableBusinessException(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/xslt/one/1st.xml b/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/xslt/one/1st.xml deleted file mode 100644 index b7184947c2..0000000000 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/xslt/one/1st.xml +++ /dev/null @@ -1,2 +0,0 @@ - -1st diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/xslt/one/1st.xsl b/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/xslt/one/1st.xsl deleted file mode 100644 index 125b4ba450..0000000000 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/xslt/one/1st.xsl +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/xslt/two/2nd.xml b/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/xslt/two/2nd.xml deleted file mode 100644 index 349d3906ec..0000000000 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/xslt/two/2nd.xml +++ /dev/null @@ -1,2 +0,0 @@ - -2nd diff --git a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/xslt/two/2nd.xsl b/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/xslt/two/2nd.xsl deleted file mode 100644 index 6d95e727ef..0000000000 --- a/org.restlet.java/org.restlet.test/src/main/java/org/restlet/test/xslt/two/2nd.xsl +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/org.restlet.java/org.restlet.test/tomcat/webapps/ROOT/WEB-INF/web.xml b/org.restlet.java/org.restlet.test/tomcat/webapps/ROOT/WEB-INF/web.xml deleted file mode 100644 index 144e62b274..0000000000 --- a/org.restlet.java/org.restlet.test/tomcat/webapps/ROOT/WEB-INF/web.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - adapter - org.restlet.ext.gwt.GwtShellServletWrapper - - org.restlet.application - org.restlet.test.gwt.server.TestApplication - - - module - org.restlet.test.gwt.TestClient - - - - - adapter - /* - - - diff --git a/org.restlet.java/org.restlet/pom.xml b/org.restlet.java/org.restlet/pom.xml index 0739e74a8f..f87f6e05b3 100644 --- a/org.restlet.java/org.restlet/pom.xml +++ b/org.restlet.java/org.restlet/pom.xml @@ -24,12 +24,24 @@ org.junit.jupiter - junit-jupiter-api + junit-jupiter-params ${lib-junit-version} test + + org.hamcrest + hamcrest-all + ${lib-hamcrest-version} + test + + + + src/test/resources + true + + maven-javadoc-plugin diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/Application.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/Application.java index 72fdbf9f6e..929568ebe0 100644 --- a/org.restlet.java/org.restlet/src/main/java/org/restlet/Application.java +++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/Application.java @@ -9,11 +9,6 @@ package org.restlet; -import java.util.List; -import java.util.concurrent.CopyOnWriteArrayList; -import java.util.logging.Filter; -import java.util.logging.Level; - import org.restlet.engine.Engine; import org.restlet.engine.application.ApplicationHelper; import org.restlet.engine.resource.AnnotationUtils; @@ -21,17 +16,14 @@ import org.restlet.routing.Router; import org.restlet.routing.VirtualHost; import org.restlet.security.Role; -import org.restlet.service.ConnectorService; -import org.restlet.service.ConnegService; -import org.restlet.service.ConverterService; -import org.restlet.service.DecoderService; -import org.restlet.service.EncoderService; -import org.restlet.service.MetadataService; -import org.restlet.service.RangeService; -import org.restlet.service.StatusService; -import org.restlet.service.TunnelService; +import org.restlet.service.*; import org.restlet.util.ServiceList; +import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; +import java.util.logging.Filter; +import java.util.logging.Level; + /** * Restlet managing a coherent set of resources and services. Applications are * guaranteed to receive calls with their base reference set relatively to the @@ -74,7 +66,7 @@ public class Application extends Restlet { * each time a call enters an application. * * Warning: this method should only be used under duress. You should by default - * prefer obtaining the current application using methods such as + * prefer getting the current application using methods such as * {@link org.restlet.resource.Resource#getApplication()} * * @return The current context. @@ -84,7 +76,7 @@ public static Application getCurrent() { } /** - * Sets the context to associated with the current thread. + * Sets the context associated with the current thread. * * @param application The thread's context. */ @@ -112,7 +104,7 @@ public static void setCurrent(Application application) { /** * Constructor. Note this constructor is convenient because you don't have to - * provide a context like for {@link #Application(Context)}. Therefore the + * provide a context like for {@link #Application(Context)}. Therefore, the * context will initially be null. It's only when you attach the application to * a virtual host via one of its attach*() methods that a proper context will be * set. diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/Client.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/Client.java index d35120a78f..83de7f2605 100644 --- a/org.restlet.java/org.restlet/src/main/java/org/restlet/Client.java +++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/Client.java @@ -9,14 +9,14 @@ package org.restlet; -import java.util.Arrays; -import java.util.List; - import org.restlet.data.Protocol; import org.restlet.data.Status; import org.restlet.engine.Engine; import org.restlet.engine.RestletHelper; +import java.util.Arrays; +import java.util.List; + /** * Connector acting as a generic client. It internally uses one of the available * connector helpers registered with the Restlet engine.
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/Component.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/Component.java index 4ac5628a52..b068b83841 100644 --- a/org.restlet.java/org.restlet/src/main/java/org/restlet/Component.java +++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/Component.java @@ -9,9 +9,6 @@ package org.restlet; -import java.util.List; -import java.util.concurrent.CopyOnWriteArrayList; - import org.restlet.engine.Engine; import org.restlet.engine.component.ComponentHelper; import org.restlet.engine.component.InternalRouter; @@ -25,6 +22,9 @@ import org.restlet.util.ServerList; import org.restlet.util.ServiceList; +import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; + /** * Restlet managing a set of {@link Connector}s, {@link VirtualHost}s, * {@link Service}s and {@link Application}s. Applications are expected to be diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/Connector.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/Connector.java index af1495323e..a74598d402 100644 --- a/org.restlet.java/org.restlet/src/main/java/org/restlet/Connector.java +++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/Connector.java @@ -9,11 +9,11 @@ package org.restlet; +import org.restlet.data.Protocol; + import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; -import org.restlet.data.Protocol; - /** * Restlet enabling communication between Components. "A connector is an * abstract mechanism that mediates communication, coordination, or cooperation diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/Context.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/Context.java index b3f8ee1f81..497647e0e6 100644 --- a/org.restlet.java/org.restlet/src/main/java/org/restlet/Context.java +++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/Context.java @@ -9,6 +9,10 @@ package org.restlet; +import org.restlet.data.Parameter; +import org.restlet.engine.Engine; +import org.restlet.util.Series; + import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; @@ -16,10 +20,6 @@ import java.util.concurrent.ScheduledExecutorService; import java.util.logging.Logger; -import org.restlet.data.Parameter; -import org.restlet.engine.Engine; -import org.restlet.util.Series; - /** * Contextual data and services provided to a set of Restlets. The context is * the means by which a Restlet may access the software environment within the diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/Message.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/Message.java index 3a5b076cd4..a201d6377d 100644 --- a/org.restlet.java/org.restlet/src/main/java/org/restlet/Message.java +++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/Message.java @@ -9,8 +9,11 @@ package org.restlet; -import static org.restlet.engine.header.HeaderConstants.ATTRIBUTE_HEADERS; -import static org.restlet.representation.Representation.UNKNOWN_SIZE; +import org.restlet.data.*; +import org.restlet.representation.Representation; +import org.restlet.representation.StringRepresentation; +import org.restlet.resource.ClientResource; +import org.restlet.util.Series; import java.io.IOException; import java.util.Date; @@ -20,15 +23,8 @@ import java.util.concurrent.ConcurrentMap; import java.util.concurrent.CopyOnWriteArrayList; -import org.restlet.data.CacheDirective; -import org.restlet.data.Header; -import org.restlet.data.MediaType; -import org.restlet.data.RecipientInfo; -import org.restlet.data.Warning; -import org.restlet.representation.Representation; -import org.restlet.representation.StringRepresentation; -import org.restlet.resource.ClientResource; -import org.restlet.util.Series; +import static org.restlet.engine.header.HeaderConstants.ATTRIBUTE_HEADERS; +import static org.restlet.representation.Representation.UNKNOWN_SIZE; /** * Generic message exchanged between components. diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/Request.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/Request.java index 09d072b7cf..94ef8b48dc 100644 --- a/org.restlet.java/org.restlet/src/main/java/org/restlet/Request.java +++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/Request.java @@ -9,31 +9,16 @@ package org.restlet; +import org.restlet.data.*; +import org.restlet.representation.Representation; +import org.restlet.util.Series; + import java.util.List; import java.util.Map.Entry; import java.util.Set; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CopyOnWriteArraySet; -import org.restlet.data.CacheDirective; -import org.restlet.data.ChallengeResponse; -import org.restlet.data.CharacterSet; -import org.restlet.data.ClientInfo; -import org.restlet.data.Conditions; -import org.restlet.data.Cookie; -import org.restlet.data.Encoding; -import org.restlet.data.Language; -import org.restlet.data.MediaType; -import org.restlet.data.Method; -import org.restlet.data.Preference; -import org.restlet.data.Protocol; -import org.restlet.data.Range; -import org.restlet.data.Reference; -import org.restlet.data.Tag; -import org.restlet.data.Warning; -import org.restlet.representation.Representation; -import org.restlet.util.Series; - /** * Generic request sent by client connectors. It is then received by server * connectors and processed by {@link Restlet}s. This request can also be diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/Response.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/Response.java index 5f5bec072d..7d85e33162 100644 --- a/org.restlet.java/org.restlet/src/main/java/org/restlet/Response.java +++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/Response.java @@ -9,6 +9,9 @@ package org.restlet; +import org.restlet.data.*; +import org.restlet.util.Series; + import java.io.IOException; import java.util.Date; import java.util.List; @@ -16,16 +19,6 @@ import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CopyOnWriteArraySet; -import org.restlet.data.AuthenticationInfo; -import org.restlet.data.ChallengeRequest; -import org.restlet.data.CookieSetting; -import org.restlet.data.Dimension; -import org.restlet.data.Method; -import org.restlet.data.Reference; -import org.restlet.data.ServerInfo; -import org.restlet.data.Status; -import org.restlet.util.Series; - /** * Generic response sent by server connectors. It is then received by client * connectors. Responses are uniform across all types of connectors, protocols diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/Restlet.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/Restlet.java index fb1c2ddf0a..f8241b1819 100644 --- a/org.restlet.java/org.restlet/src/main/java/org/restlet/Restlet.java +++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/Restlet.java @@ -9,12 +9,12 @@ package org.restlet; -import java.util.logging.Level; -import java.util.logging.Logger; - import org.restlet.data.Status; import org.restlet.engine.Engine; +import java.util.logging.Level; +import java.util.logging.Logger; + /** * Uniform class that provides a context and life cycle support. It has many * subclasses that focus on specific ways to process calls. The context property diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/Server.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/Server.java index 804a81c530..bafdbfade4 100644 --- a/org.restlet.java/org.restlet/src/main/java/org/restlet/Server.java +++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/Server.java @@ -9,14 +9,14 @@ package org.restlet; -import java.util.Arrays; -import java.util.List; - import org.restlet.data.Protocol; import org.restlet.engine.Engine; import org.restlet.engine.RestletHelper; import org.restlet.resource.ServerResource; +import java.util.Arrays; +import java.util.List; + /** * Connector acting as a generic server. It internally uses one of the available * connector helpers registered with the Restlet engine.
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/data/CacheDirective.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/data/CacheDirective.java index fd4b6cbb1c..030f61120f 100644 --- a/org.restlet.java/org.restlet/src/main/java/org/restlet/data/CacheDirective.java +++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/data/CacheDirective.java @@ -9,13 +9,13 @@ package org.restlet.data; -import java.util.List; -import java.util.Objects; - import org.restlet.engine.header.HeaderConstants; import org.restlet.engine.util.SystemUtils; import org.restlet.util.NamedValue; +import java.util.List; +import java.util.Objects; + /** * Directive for caching mechanisms along the call chain. This overrides the * default behavior of those caches and proxies.
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/data/ChallengeMessage.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/data/ChallengeMessage.java index e1f3016e32..517d908b11 100644 --- a/org.restlet.java/org.restlet/src/main/java/org/restlet/data/ChallengeMessage.java +++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/data/ChallengeMessage.java @@ -9,11 +9,11 @@ package org.restlet.data; -import java.util.Objects; - import org.restlet.engine.util.SystemUtils; import org.restlet.util.Series; +import java.util.Objects; + /** * Base authentication challenge message exchanged between an origin server and * a client. diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/data/ChallengeRequest.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/data/ChallengeRequest.java index 5e746deaa0..67bdb48738 100644 --- a/org.restlet.java/org.restlet/src/main/java/org/restlet/data/ChallengeRequest.java +++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/data/ChallengeRequest.java @@ -9,13 +9,13 @@ package org.restlet.data; +import org.restlet.engine.util.SystemUtils; + import java.util.Collection; import java.util.List; import java.util.Objects; import java.util.concurrent.CopyOnWriteArrayList; -import org.restlet.engine.util.SystemUtils; - /** * Authentication challenge sent by an origin server to a client. Upon reception * of this request, the client should send a new request with the proper diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/data/ChallengeResponse.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/data/ChallengeResponse.java index a6fc9e785b..2253236709 100644 --- a/org.restlet.java/org.restlet/src/main/java/org/restlet/data/ChallengeResponse.java +++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/data/ChallengeResponse.java @@ -9,13 +9,14 @@ package org.restlet.data; -import java.util.Objects; - import org.restlet.Request; import org.restlet.Response; import org.restlet.engine.util.SystemUtils; import org.restlet.util.Series; +import java.util.Arrays; +import java.util.Objects; + /** * Authentication response sent by client to an origin server. This is typically * following a {@link ChallengeRequest} sent by the origin server to the @@ -54,7 +55,7 @@ public final class ChallengeResponse extends ChallengeMessage { private volatile String secretAlgorithm; /** The server nonce count. */ - private volatile int serverNounceCount; + private volatile int serverNonceCount; /** * The time when the response was issued, as returned by @@ -63,8 +64,8 @@ public final class ChallengeResponse extends ChallengeMessage { private volatile long timeIssued; /** - * Constructor. It leverages the latest server response and challenge request in - * order to compute the credentials. + * Constructor. It leverages the latest server response and challenge request + * to compute the credentials. * * @param challengeRequest The challenge request sent by the origin server. * @param response The latest server response. @@ -98,8 +99,8 @@ public ChallengeResponse(ChallengeRequest challengeRequest, Response response, S } /** - * Constructor. It leverages the latest server response and challenge request in - * order to compute the credentials. + * Constructor. It leverages the latest server response and challenge request + * to compute the credentials. * * @param challengeRequest The challenge request sent by the origin server. * @param response The latest server response. @@ -139,13 +140,13 @@ public ChallengeResponse(ChallengeScheme scheme) { * the client unchanged. * @param clientNonce The client nonce value. * @param serverNonce The server nonce. - * @param serverNounceCount The server nonce count. + * @param serverNonceCount The server nonce count. * @param timeIssued The time when the response was issued, as returned * by {@link System#currentTimeMillis()}. */ public ChallengeResponse(ChallengeScheme scheme, Series parameters, String identifier, char[] secret, String secretAlgorithm, String realm, String quality, Reference digestRef, String digestAlgorithm, - String opaque, String clientNonce, String serverNonce, int serverNounceCount, long timeIssued) { + String opaque, String clientNonce, String serverNonce, int serverNonceCount, long timeIssued) { super(scheme, realm, parameters, digestAlgorithm, opaque, serverNonce); this.clientNonce = clientNonce; this.digestRef = digestRef; @@ -153,7 +154,7 @@ public ChallengeResponse(ChallengeScheme scheme, Series parameters, S this.quality = quality; this.secret = secret; this.secretAlgorithm = secretAlgorithm; - this.serverNounceCount = serverNounceCount; + this.serverNonceCount = serverNonceCount; this.timeIssued = timeIssued; } @@ -211,31 +212,17 @@ public boolean equals(Object obj) { } // if obj isn't a challenge request or is null don't evaluate further - if (!(obj instanceof ChallengeResponse)) { + if (!(obj instanceof ChallengeResponse that)) { return false; } - ChallengeResponse that = (ChallengeResponse) obj; - - if (!Objects.equals(getRawValue(), that.getRawValue()) || !Objects.equals(getIdentifier(), that.getIdentifier()) + if (!Objects.equals(getRawValue(), that.getRawValue()) + || !Objects.equals(getIdentifier(), that.getIdentifier()) || !Objects.equals(getScheme(), that.getScheme())) { return false; } - if ((getSecret() == null) || (that.getSecret() == null)) { - // check if both are null - return (getSecret() == that.getSecret()); - } - - if (getSecret().length != that.getSecret().length) { - return false; - } - - boolean equals = true; - for (int i = 0; equals && (i < getSecret().length); i++) { - equals = (getSecret()[i] == that.getSecret()[i]); - } - return equals; + return Arrays.equals(getSecret(), that.getSecret()); } /** @@ -272,11 +259,7 @@ public String getIdentifier() { * @return The principal associated to the identifier property. */ public java.security.Principal getPrincipal() { - return new java.security.Principal() { - public String getName() { - return getIdentifier(); - }; - }; + return this::getIdentifier; } /** @@ -313,18 +296,40 @@ public String getSecretAlgorithm() { * Returns the server nonce count. * * @return The server nonce count. + * @deprecated Use {@code getServerNonceCount} instead. */ + @Deprecated public int getServerNounceCount() { - return serverNounceCount; + return getServerNonceCount(); } /** - * Returns the server nonce count as an hexadecimal string of eight characters. - * - * @return The server nonce count as an hexadecimal string. + * Returns the server nonce count. + * + * @return The server nonce count. + */ + public int getServerNonceCount() { + return serverNonceCount; + } + + /** + * Returns the server nonce count as a hexadecimal string of eight characters. + * + * @return The server nonce count as a hexadecimal string. + * @deprecated Use {@code getServerNonceCountAsHex} instead. */ + @Deprecated public String getServerNounceCountAsHex() { - return org.restlet.engine.security.AuthenticatorUtils.formatNonceCount(getServerNounceCount()); + return getServerNonceCountAsHex(); + } + + /** + * Returns the server nonce count as a hexadecimal string of eight characters. + * + * @return The server nonce count as a hexadecimal string. + */ + public String getServerNonceCountAsHex() { + return org.restlet.engine.security.AuthenticatorUtils.formatNonceCount(getServerNonceCount()); } /** @@ -412,10 +417,21 @@ public void setSecretAlgorithm(String secretDigestAlgorithm) { /** * Sets the server nonce count. * - * @param serverNounceCount The server nonce count. + * @param serverNonceCount The server nonce count. + * @deprecated Use {@code setServerNonceCount} instead. + */ + @Deprecated + public void setServerNounceCount(int serverNonceCount) { + setServerNonceCount(serverNonceCount); + } + + /** + * Sets the server nonce count. + * + * @param serverNonceCount The server nonce count. */ - public void setServerNounceCount(int serverNounceCount) { - this.serverNounceCount = serverNounceCount; + public void setServerNonceCount(int serverNonceCount) { + this.serverNonceCount = serverNonceCount; } /** diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/data/ClientInfo.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/data/ClientInfo.java index 473c4c5f20..a5782a4d07 100644 --- a/org.restlet.java/org.restlet/src/main/java/org/restlet/data/ClientInfo.java +++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/data/ClientInfo.java @@ -9,6 +9,10 @@ package org.restlet.data; +import org.restlet.Context; +import org.restlet.engine.Engine; +import org.restlet.engine.io.IoUtils; + import java.io.IOException; import java.io.InputStreamReader; import java.util.List; @@ -16,10 +20,6 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CopyOnWriteArrayList; -import org.restlet.Context; -import org.restlet.engine.Engine; -import org.restlet.engine.io.IoUtils; - /** * Client specific data related to a call. When extracted from a request, most * of these data are directly taken from the underlying headers. There are some diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Conditions.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Conditions.java index 69f87184ea..690ffb7c89 100644 --- a/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Conditions.java +++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Conditions.java @@ -9,14 +9,14 @@ package org.restlet.data; +import org.restlet.engine.util.DateUtils; +import org.restlet.representation.RepresentationInfo; + import java.util.ArrayList; import java.util.Date; import java.util.Iterator; import java.util.List; -import org.restlet.engine.util.DateUtils; -import org.restlet.representation.RepresentationInfo; - /** * Set of conditions applying to a request. This is equivalent to the HTTP * conditional headers. diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Cookie.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Cookie.java index 0822c63018..faee8882dd 100644 --- a/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Cookie.java +++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Cookie.java @@ -9,12 +9,12 @@ package org.restlet.data; -import java.util.Objects; - import org.restlet.Request; import org.restlet.engine.util.SystemUtils; import org.restlet.util.NamedValue; +import java.util.Objects; + /** * Cookie provided by a client. To get the list of all cookies sent by a client, * you can use the {@link Request#getCookies()} method.
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/data/CookieSetting.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/data/CookieSetting.java index 1156bdd7aa..54d2ef7667 100644 --- a/org.restlet.java/org.restlet/src/main/java/org/restlet/data/CookieSetting.java +++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/data/CookieSetting.java @@ -9,11 +9,11 @@ package org.restlet.data; -import java.util.Objects; - import org.restlet.Response; import org.restlet.engine.util.SystemUtils; +import java.util.Objects; + /** * Cookie setting provided by a server. This allows a server side application to * add, modify or remove a cookie on the client.
diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Digest.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Digest.java index 919713afc4..a67645ccab 100644 --- a/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Digest.java +++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Digest.java @@ -9,11 +9,11 @@ package org.restlet.data; -import java.util.Arrays; - import org.restlet.engine.util.SystemUtils; import org.restlet.representation.Representation; +import java.util.Arrays; + /** * Describes a digest value and the digest algorithm used. Digests can have * several use cases such as ensuring the integrity of representations exchanges diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Disposition.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Disposition.java index 6f8c63e762..97254c4e13 100644 --- a/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Disposition.java +++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Disposition.java @@ -9,11 +9,11 @@ package org.restlet.data; -import java.util.Date; - import org.restlet.engine.util.DateUtils; import org.restlet.util.Series; +import java.util.Date; + /** * Describes the presentation of a single entity especially in the case of * multipart documents. This is an equivalent of the HTTP "Content-Disposition" diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Expectation.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Expectation.java index cc900e52f7..1f3f037500 100644 --- a/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Expectation.java +++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Expectation.java @@ -9,14 +9,14 @@ package org.restlet.data; -import java.util.List; -import java.util.Objects; -import java.util.concurrent.CopyOnWriteArrayList; - import org.restlet.engine.header.HeaderConstants; import org.restlet.engine.util.SystemUtils; import org.restlet.util.NamedValue; +import java.util.List; +import java.util.Objects; +import java.util.concurrent.CopyOnWriteArrayList; + /** * Particular server behavior that is required by a client. Note that when used * with HTTP connectors, this class maps to the "Expect" header. diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Form.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Form.java index 228d54d4c7..34ea1aebf5 100644 --- a/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Form.java +++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Form.java @@ -9,14 +9,14 @@ package org.restlet.data; -import java.io.IOException; -import java.util.List; - import org.restlet.engine.util.FormUtils; import org.restlet.representation.Representation; import org.restlet.representation.StringRepresentation; import org.restlet.util.Series; +import java.io.IOException; +import java.util.List; + /** * Form which is a specialized modifiable list of parameters. * diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Header.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Header.java index 1dca128e75..eb402016ca 100644 --- a/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Header.java +++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Header.java @@ -9,11 +9,11 @@ package org.restlet.data; -import java.util.Objects; - import org.restlet.engine.util.SystemUtils; import org.restlet.util.NamedValue; +import java.util.Objects; + /** * Represents an HTTP header. * diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/data/MediaType.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/data/MediaType.java index 4337f36225..60fa7dbcf3 100644 --- a/org.restlet.java/org.restlet/src/main/java/org/restlet/data/MediaType.java +++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/data/MediaType.java @@ -9,17 +9,17 @@ package org.restlet.data; -import java.io.IOException; -import java.util.HashMap; -import java.util.Map; -import java.util.logging.Level; - import org.restlet.Context; import org.restlet.engine.header.HeaderWriter; import org.restlet.engine.util.StringUtils; import org.restlet.engine.util.SystemUtils; import org.restlet.util.Series; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; +import java.util.logging.Level; + /** * Metadata used to specify the format of representations. The * {@link #getName()} method returns a full String representation of the media diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Method.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Method.java index 06fd2b8ef7..6a7d4e2dc1 100644 --- a/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Method.java +++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Method.java @@ -9,14 +9,14 @@ package org.restlet.data; +import org.restlet.engine.Engine; + import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; -import org.restlet.engine.Engine; - /** * Method to execute when handling a call. * diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Parameter.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Parameter.java index f8b45b811f..dcf616e011 100644 --- a/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Parameter.java +++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Parameter.java @@ -9,12 +9,12 @@ package org.restlet.data; -import java.io.IOException; -import java.util.Objects; - import org.restlet.engine.util.SystemUtils; import org.restlet.util.NamedValue; +import java.io.IOException; +import java.util.Objects; + /** * Multi-usage parameter. Note that the name and value properties are thread * safe, stored in volatile members. diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Range.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Range.java index 56ed6abecb..fbd34e7a7d 100644 --- a/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Range.java +++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Range.java @@ -75,7 +75,7 @@ public static boolean isBytesRange(Range range) { /** * Default constructor defining a range starting on the first byte and with a - * maximum size, i.e. covering the whole entity. + * maximum size, i.e., covering the whole entity. */ public Range() { this(INDEX_FIRST, SIZE_MAX); diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Reference.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Reference.java index d1d0132c28..03eb3b3582 100644 --- a/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Reference.java +++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Reference.java @@ -9,13 +9,13 @@ package org.restlet.data; +import org.restlet.Context; + import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List; import java.util.logging.Level; -import org.restlet.Context; - /** * Reference to a Uniform Resource Identifier (URI). Contrary to the * java.net.URI class, this interface represents mutable references. It strictly diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/data/ReferenceList.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/data/ReferenceList.java index 2aed0f7db9..7dac8b6a60 100644 --- a/org.restlet.java/org.restlet/src/main/java/org/restlet/data/ReferenceList.java +++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/data/ReferenceList.java @@ -9,16 +9,16 @@ package org.restlet.data; -import java.io.BufferedReader; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - import org.restlet.engine.io.IoUtils; import org.restlet.representation.Representation; import org.restlet.representation.StringRepresentation; import org.restlet.util.WrapperList; +import java.io.BufferedReader; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + /** * List of URI references. * diff --git a/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Status.java b/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Status.java index 67460100c0..7b90f6e2d7 100644 --- a/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Status.java +++ b/org.restlet.java/org.restlet/src/main/java/org/restlet/data/Status.java @@ -21,8 +21,7 @@ public final class Status { private static final String BASE_HTTP = "http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html"; - private static final String BASE_RESTLET = "https://javadocs.restlet.talend.com/" + Engine.MAJOR_NUMBER + '.' - + Engine.MINOR_NUMBER + "/api/"; + private static final String BASE_RESTLET = "https://javadoc.io/static/org.restlet/org.restlet/" + Engine.VERSION + "/"; /** * The request could not be understood by the server due to malformed syntax. @@ -508,7 +507,7 @@ public final class Status { public static final Status SUCCESS_PARTIAL_CONTENT = new Status(206); /** - * The server has fulfilled the request and the user agent SHOULD reset the + * The server has fulfilled the request, and the user agent SHOULD reset the * document view which caused the request to be sent. * * @see
>(); - this.registeredProtocols = new CopyOnWriteArrayList(); + this.registeredClients = new CopyOnWriteArrayList<>(); + this.registeredProtocols = new CopyOnWriteArrayList<>(); - this.registeredServers = new CopyOnWriteArrayList>(); - this.registeredAuthenticators = new CopyOnWriteArrayList(); - this.registeredConverters = new CopyOnWriteArrayList(); + 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 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