diff --git a/pom.xml b/pom.xml index cbbdb21f6..31a5f0887 100644 --- a/pom.xml +++ b/pom.xml @@ -27,7 +27,7 @@ SOFTWARE. com.jcabi parent - 0.66.0 + 0.68.0 org.takes takes @@ -130,27 +130,27 @@ SOFTWARE. provided - javax.json - javax.json-api - 1.1.4 + jakarta.json + jakarta.json-api + 2.1.3 provided - javax.servlet - javax.servlet-api - 4.0.1 + jakarta.servlet + jakarta.servlet-api + 6.1.0 provided - javax.xml.bind - jaxb-api - 2.3.1 + jakarta.xml.bind + jakarta.xml.bind-api + 4.0.2 provided com.jcabi jcabi-http - 1.20.1 + 2.0.0 true @@ -210,13 +210,19 @@ SOFTWARE. org.glassfish.grizzly grizzly-http-servlet-server - 2.4.4 + 4.0.2 test + + + org.glassfish.grizzly + grizzly-npn-api + + - org.glassfish - javax.json - 1.1.4 + org.eclipse.parsson + jakarta.json + 1.1.6 test @@ -244,16 +250,24 @@ SOFTWARE. test - javax.ws.rs - jsr311-api - 1.1.1 + jakarta.ws.rs + jakarta.ws.rs-api + 3.1.0 test - com.sun.jersey + org.glassfish.jersey.core jersey-client - 1.19.4 + 3.1.5 test + true + + + org.glassfish.jersey.core + jersey-server + 3.1.5 + test + true net.sf.saxon @@ -278,6 +292,12 @@ SOFTWARE. slf4j-reload4j 2.0.13 test + + + ch.qos.reload4j + reload4j + + commons-lang @@ -535,9 +555,9 @@ SOFTWARE. - javax.xml.bind - jaxb-api - 2.4.0-b180830.0359 + jakarta.xml.bind + jakarta.xml.bind-api + 4.0.2 com.sun.xml.bind diff --git a/src/it/file-manager/pom.xml b/src/it/file-manager/pom.xml index caedbeb1a..b1d9b388f 100644 --- a/src/it/file-manager/pom.xml +++ b/src/it/file-manager/pom.xml @@ -27,7 +27,7 @@ SOFTWARE. com.jcabi parent - 0.66.0 + 0.68.0 org.takes.test file-manager @@ -68,7 +68,7 @@ SOFTWARE. com.jcabi jcabi-http - 1.20.1 + 2.0.0 test @@ -90,16 +90,17 @@ SOFTWARE. runtime - javax.ws.rs - jsr311-api - 1.1.1 + jakarta.ws.rs + jakarta.ws.rs-api + 3.1.0 test - com.sun.jersey + org.glassfish.jersey.core jersey-client - 1.19.4 test + 3.1.5 + true net.sourceforge.saxon diff --git a/src/main/java/org/takes/facets/auth/PsBasic.java b/src/main/java/org/takes/facets/auth/PsBasic.java index 886fccdc9..30d642b17 100644 --- a/src/main/java/org/takes/facets/auth/PsBasic.java +++ b/src/main/java/org/takes/facets/auth/PsBasic.java @@ -23,6 +23,7 @@ */ package org.takes.facets.auth; +import jakarta.xml.bind.DatatypeConverter; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; @@ -33,7 +34,6 @@ import java.util.Map; import java.util.logging.Level; import java.util.regex.Pattern; -import javax.xml.bind.DatatypeConverter; import lombok.EqualsAndHashCode; import org.cactoos.text.IoCheckedText; import org.cactoos.text.TextOf; diff --git a/src/main/java/org/takes/facets/auth/PsToken.java b/src/main/java/org/takes/facets/auth/PsToken.java index 7bf492d47..d49ef5f60 100644 --- a/src/main/java/org/takes/facets/auth/PsToken.java +++ b/src/main/java/org/takes/facets/auth/PsToken.java @@ -23,15 +23,15 @@ */ package org.takes.facets.auth; +import jakarta.json.Json; +import jakarta.json.JsonObject; +import jakarta.json.JsonReader; import java.io.IOException; import java.io.StringReader; import java.nio.ByteBuffer; import java.nio.charset.Charset; import java.util.Arrays; import java.util.Base64; -import javax.json.Json; -import javax.json.JsonObject; -import javax.json.JsonReader; import lombok.EqualsAndHashCode; import org.cactoos.iterable.Mapped; import org.cactoos.scalar.Constant; diff --git a/src/main/java/org/takes/facets/auth/Token.java b/src/main/java/org/takes/facets/auth/Token.java index af75c044d..a670f8973 100644 --- a/src/main/java/org/takes/facets/auth/Token.java +++ b/src/main/java/org/takes/facets/auth/Token.java @@ -23,12 +23,12 @@ */ package org.takes.facets.auth; +import jakarta.json.Json; +import jakarta.json.JsonObject; import java.nio.charset.Charset; import java.util.Base64; import java.util.Calendar; import java.util.TimeZone; -import javax.json.Json; -import javax.json.JsonObject; /** * JSON Token. diff --git a/src/main/java/org/takes/facets/auth/codecs/CcSalted.java b/src/main/java/org/takes/facets/auth/codecs/CcSalted.java index 2f90dd6b8..a4d20a7b1 100644 --- a/src/main/java/org/takes/facets/auth/codecs/CcSalted.java +++ b/src/main/java/org/takes/facets/auth/codecs/CcSalted.java @@ -23,7 +23,6 @@ */ package org.takes.facets.auth.codecs; -import com.jcabi.aspects.Tv; import java.io.IOException; import java.security.SecureRandom; import java.util.Random; @@ -45,6 +44,11 @@ public final class CcSalted implements Codec { */ private static final Random RND = new SecureRandom(); + /** + * Maximum reandom size. + */ + private static final int RND_MAX_SIZE = 10; + /** * Original codec. */ @@ -75,7 +79,7 @@ public Identity decode(final byte[] bytes) throws IOException { */ @SuppressWarnings("PMD.AvoidArrayLoops") private static byte[] salt(final byte[] text) { - final byte size = (byte) CcSalted.RND.nextInt(Tv.TEN); + final byte size = (byte) CcSalted.RND.nextInt(CcSalted.RND_MAX_SIZE); final byte[] output = new byte[text.length + (int) size + 2]; output[0] = size; byte sum = (byte) 0; diff --git a/src/main/java/org/takes/facets/auth/social/PsGithub.java b/src/main/java/org/takes/facets/auth/social/PsGithub.java index 7bc687dfb..c8b35bf54 100644 --- a/src/main/java/org/takes/facets/auth/social/PsGithub.java +++ b/src/main/java/org/takes/facets/auth/social/PsGithub.java @@ -27,12 +27,12 @@ import com.jcabi.http.response.JsonResponse; import com.jcabi.http.response.RestResponse; import com.jcabi.http.response.XmlResponse; +import jakarta.json.JsonObject; import java.io.IOException; import java.net.HttpURLConnection; import java.util.HashMap; import java.util.Iterator; import java.util.Map; -import javax.json.JsonObject; import lombok.EqualsAndHashCode; import org.takes.HttpException; import org.takes.Request; diff --git a/src/main/java/org/takes/facets/auth/social/PsGoogle.java b/src/main/java/org/takes/facets/auth/social/PsGoogle.java index fb160d77e..ec7017438 100644 --- a/src/main/java/org/takes/facets/auth/social/PsGoogle.java +++ b/src/main/java/org/takes/facets/auth/social/PsGoogle.java @@ -26,12 +26,12 @@ import com.jcabi.http.request.JdkRequest; import com.jcabi.http.response.JsonResponse; import com.jcabi.http.response.RestResponse; +import jakarta.json.JsonObject; import java.io.IOException; import java.net.HttpURLConnection; import java.util.HashMap; import java.util.Iterator; import java.util.Map; -import javax.json.JsonObject; import lombok.EqualsAndHashCode; import org.takes.HttpException; import org.takes.Request; diff --git a/src/main/java/org/takes/facets/auth/social/PsLinkedin.java b/src/main/java/org/takes/facets/auth/social/PsLinkedin.java index a6afcced1..e099ba9da 100644 --- a/src/main/java/org/takes/facets/auth/social/PsLinkedin.java +++ b/src/main/java/org/takes/facets/auth/social/PsLinkedin.java @@ -27,12 +27,12 @@ import com.jcabi.http.request.JdkRequest; import com.jcabi.http.response.JsonResponse; import com.jcabi.http.response.RestResponse; +import jakarta.json.JsonObject; import java.io.IOException; import java.net.HttpURLConnection; import java.util.HashMap; import java.util.Iterator; import java.util.Map; -import javax.json.JsonObject; import lombok.EqualsAndHashCode; import org.takes.HttpException; import org.takes.Request; diff --git a/src/main/java/org/takes/facets/auth/social/PsTwitter.java b/src/main/java/org/takes/facets/auth/social/PsTwitter.java index 6244c1623..d30cd576a 100644 --- a/src/main/java/org/takes/facets/auth/social/PsTwitter.java +++ b/src/main/java/org/takes/facets/auth/social/PsTwitter.java @@ -26,13 +26,13 @@ import com.jcabi.http.request.JdkRequest; import com.jcabi.http.response.JsonResponse; import com.jcabi.http.response.RestResponse; +import jakarta.json.JsonObject; +import jakarta.xml.bind.DatatypeConverter; import java.io.IOException; import java.net.HttpURLConnection; import java.net.URI; import java.util.HashMap; import java.util.Map; -import javax.json.JsonObject; -import javax.xml.bind.DatatypeConverter; import lombok.EqualsAndHashCode; import org.cactoos.bytes.BytesOf; import org.cactoos.bytes.UncheckedBytes; diff --git a/src/main/java/org/takes/rs/RsJson.java b/src/main/java/org/takes/rs/RsJson.java index e109b473c..52f27755e 100644 --- a/src/main/java/org/takes/rs/RsJson.java +++ b/src/main/java/org/takes/rs/RsJson.java @@ -23,12 +23,12 @@ */ package org.takes.rs; +import jakarta.json.Json; +import jakarta.json.JsonStructure; +import jakarta.json.JsonWriter; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.net.HttpURLConnection; -import javax.json.Json; -import javax.json.JsonStructure; -import javax.json.JsonWriter; import lombok.EqualsAndHashCode; import lombok.ToString; import org.takes.Response; diff --git a/src/main/java/org/takes/rs/RsPrettyJson.java b/src/main/java/org/takes/rs/RsPrettyJson.java index deecab4a4..89996f828 100644 --- a/src/main/java/org/takes/rs/RsPrettyJson.java +++ b/src/main/java/org/takes/rs/RsPrettyJson.java @@ -23,18 +23,18 @@ */ package org.takes.rs; +import jakarta.json.Json; +import jakarta.json.JsonException; +import jakarta.json.JsonObject; +import jakarta.json.JsonReader; +import jakarta.json.JsonWriter; +import jakarta.json.stream.JsonGenerator; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Collections; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; -import javax.json.Json; -import javax.json.JsonException; -import javax.json.JsonObject; -import javax.json.JsonReader; -import javax.json.JsonWriter; -import javax.json.stream.JsonGenerator; import lombok.EqualsAndHashCode; import lombok.ToString; import org.takes.Response; diff --git a/src/main/java/org/takes/servlet/HttpServletRequestFake.java b/src/main/java/org/takes/servlet/HttpServletRequestFake.java index a3b864af0..1988aab45 100644 --- a/src/main/java/org/takes/servlet/HttpServletRequestFake.java +++ b/src/main/java/org/takes/servlet/HttpServletRequestFake.java @@ -23,6 +23,20 @@ */ package org.takes.servlet; +import jakarta.servlet.AsyncContext; +import jakarta.servlet.DispatcherType; +import jakarta.servlet.RequestDispatcher; +import jakarta.servlet.ServletConnection; +import jakarta.servlet.ServletContext; +import jakarta.servlet.ServletInputStream; +import jakarta.servlet.ServletRequest; +import jakarta.servlet.ServletResponse; +import jakarta.servlet.http.Cookie; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpSession; +import jakarta.servlet.http.HttpUpgradeHandler; +import jakarta.servlet.http.Part; import java.io.BufferedReader; import java.io.IOException; import java.net.URI; @@ -35,19 +49,6 @@ import java.util.Locale; import java.util.Map; import java.util.NoSuchElementException; -import javax.servlet.AsyncContext; -import javax.servlet.DispatcherType; -import javax.servlet.RequestDispatcher; -import javax.servlet.ServletContext; -import javax.servlet.ServletInputStream; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.http.Cookie; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; -import javax.servlet.http.HttpUpgradeHandler; -import javax.servlet.http.Part; import org.takes.Request; import org.takes.rq.RqHeaders; import org.takes.rq.RqHref; @@ -147,6 +148,11 @@ public String getRemoteHost() { return "localhost"; } + @Override + public String getRequestId() { + return "1"; + } + @Override public String getLocalName() { return "localhost"; @@ -175,6 +181,11 @@ public String getRequestURI() { } } + @Override + public String getProtocolRequestId() { + return ""; + } + @Override public String getQueryString() { final String raw = this.getRequestURI(); @@ -190,6 +201,11 @@ public String getQueryString() { return uri.getQuery(); } + @Override + public ServletConnection getServletConnection() { + return new ServletConnectionFake(); + } + @Override public String getServerName() { final String raw = this.getRequestURI(); diff --git a/src/main/java/org/takes/servlet/HttpServletResponseFake.java b/src/main/java/org/takes/servlet/HttpServletResponseFake.java index 2c0ed8724..ee0b6d7ad 100644 --- a/src/main/java/org/takes/servlet/HttpServletResponseFake.java +++ b/src/main/java/org/takes/servlet/HttpServletResponseFake.java @@ -23,15 +23,15 @@ */ package org.takes.servlet; +import jakarta.servlet.ServletOutputStream; +import jakarta.servlet.http.Cookie; +import jakarta.servlet.http.HttpServletResponse; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.PrintWriter; import java.util.Collection; import java.util.Locale; import java.util.concurrent.atomic.AtomicReference; -import javax.servlet.ServletOutputStream; -import javax.servlet.http.Cookie; -import javax.servlet.http.HttpServletResponse; import org.cactoos.io.InputOf; import org.cactoos.io.OutputTo; import org.cactoos.io.TeeInput; @@ -230,6 +230,15 @@ public void addIntHeader(final String name, final int value) { throw new UnsupportedOperationException("#addIntHeader()"); } + @Override + public void sendRedirect( + final String location, + final int scode, + final boolean clearbuff + ) throws IOException { + throw new UnsupportedOperationException("#sendRedirect()"); + } + /** * Set the response code status and reason. * @deprecated It not should be used diff --git a/src/main/java/org/takes/servlet/ResponseOf.java b/src/main/java/org/takes/servlet/ResponseOf.java index a92d77a3c..dc51de1b2 100644 --- a/src/main/java/org/takes/servlet/ResponseOf.java +++ b/src/main/java/org/takes/servlet/ResponseOf.java @@ -23,6 +23,8 @@ */ package org.takes.servlet; +import jakarta.servlet.http.Cookie; +import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -30,8 +32,6 @@ import java.util.Iterator; import java.util.regex.Matcher; import java.util.regex.Pattern; -import javax.servlet.http.Cookie; -import javax.servlet.http.HttpServletResponse; import org.cactoos.Text; import org.cactoos.text.Lowered; import org.cactoos.text.Split; diff --git a/src/main/java/org/takes/servlet/RqFrom.java b/src/main/java/org/takes/servlet/RqFrom.java index 562486e79..cbfa03d45 100644 --- a/src/main/java/org/takes/servlet/RqFrom.java +++ b/src/main/java/org/takes/servlet/RqFrom.java @@ -23,13 +23,12 @@ */ package org.takes.servlet; -import com.jcabi.aspects.Tv; +import jakarta.servlet.http.HttpServletRequest; import java.io.IOException; import java.io.InputStream; import java.util.Collection; import java.util.Collections; import java.util.LinkedList; -import javax.servlet.http.HttpServletRequest; import org.takes.Request; /** @@ -95,6 +94,12 @@ public InputStream body() throws IOException { * @since 2.0 */ private static final class HttpHead { + + /** + * Initial buffer capacity. + */ + private static final int BUFF_SIZE = 20; + /** * Servlet request. */ @@ -110,7 +115,7 @@ private static final class HttpHead { @Override public String toString() { - final StringBuilder bld = new StringBuilder(Tv.TWENTY) + final StringBuilder bld = new StringBuilder(HttpHead.BUFF_SIZE) .append(this.req.getMethod()) .append(' '); final String uri = this.req.getRequestURI(); @@ -137,6 +142,11 @@ private static final class HttpHost { */ private static final int PORT_DEFAULT = 80; + /** + * Initial buffer capacity. + */ + private static final int BUFF_SIZE = 100; + /** * Servlet request. */ @@ -152,7 +162,7 @@ private HttpHost(final HttpServletRequest request) { @Override public String toString() { - final StringBuilder bld = new StringBuilder(Tv.HUNDRED); + final StringBuilder bld = new StringBuilder(HttpHost.BUFF_SIZE); bld.append("Host: ").append(this.req.getServerName()); final int port = this.req.getServerPort(); if (port != HttpHost.PORT_DEFAULT) { diff --git a/src/main/java/org/takes/servlet/ServletConnectionFake.java b/src/main/java/org/takes/servlet/ServletConnectionFake.java new file mode 100644 index 000000000..0e30964ab --- /dev/null +++ b/src/main/java/org/takes/servlet/ServletConnectionFake.java @@ -0,0 +1,88 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2014-2024 Yegor Bugayenko + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package org.takes.servlet; + +import jakarta.servlet.ServletConnection; + +/** + * Fake ServletConnection (for unit tests). + * + * @since 2.0 + */ +public final class ServletConnectionFake implements ServletConnection { + + /** + * Connection. + */ + private final String connection; + + /** + * Protocol. + */ + private final String protocol; + + /** + * Security flag. + */ + private final boolean secure; + + /** + * Ctor. + */ + public ServletConnectionFake() { + this("localhost", "HTTP/1.0", false); + } + + /** + * Ctor. + * @param conn Connection. + * @param proto Protocol. + * @param sec Secure flag. + */ + public ServletConnectionFake(final String conn, final String proto, final boolean sec) { + this.connection = conn; + this.protocol = proto; + this.secure = sec; + } + + @Override + public String getConnectionId() { + return this.connection; + } + + @Override + public String getProtocol() { + return this.protocol; + } + + @Override + public String getProtocolConnectionId() { + return ""; + } + + @Override + public boolean isSecure() { + return this.secure; + } +} diff --git a/src/main/java/org/takes/servlet/ServletInputStreamOf.java b/src/main/java/org/takes/servlet/ServletInputStreamOf.java index dbb52d068..bda4c632a 100644 --- a/src/main/java/org/takes/servlet/ServletInputStreamOf.java +++ b/src/main/java/org/takes/servlet/ServletInputStreamOf.java @@ -23,10 +23,10 @@ */ package org.takes.servlet; +import jakarta.servlet.ReadListener; +import jakarta.servlet.ServletInputStream; import java.io.IOException; import java.io.InputStream; -import javax.servlet.ReadListener; -import javax.servlet.ServletInputStream; /** * ServletIInputStream that decorates a {@link InputStream} to be used diff --git a/src/main/java/org/takes/servlet/ServletOutputStreamTo.java b/src/main/java/org/takes/servlet/ServletOutputStreamTo.java index 64e631ad7..02fe2c321 100644 --- a/src/main/java/org/takes/servlet/ServletOutputStreamTo.java +++ b/src/main/java/org/takes/servlet/ServletOutputStreamTo.java @@ -23,10 +23,10 @@ */ package org.takes.servlet; +import jakarta.servlet.ServletOutputStream; +import jakarta.servlet.WriteListener; import java.io.IOException; import java.io.OutputStream; -import javax.servlet.ServletOutputStream; -import javax.servlet.WriteListener; /** * ServletOutputStreamTo. diff --git a/src/main/java/org/takes/servlet/SrvTake.java b/src/main/java/org/takes/servlet/SrvTake.java index a909c0363..65522a165 100644 --- a/src/main/java/org/takes/servlet/SrvTake.java +++ b/src/main/java/org/takes/servlet/SrvTake.java @@ -23,15 +23,15 @@ */ package org.takes.servlet; +import jakarta.servlet.ServletContext; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.net.HttpURLConnection; import java.util.concurrent.atomic.AtomicReference; -import javax.servlet.ServletContext; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import org.takes.HttpException; import org.takes.Take; diff --git a/src/test/java/org/takes/facets/auth/PsAllTest.java b/src/test/java/org/takes/facets/auth/PsAllTest.java index 0966c3c59..a2fd9156b 100644 --- a/src/test/java/org/takes/facets/auth/PsAllTest.java +++ b/src/test/java/org/takes/facets/auth/PsAllTest.java @@ -23,7 +23,6 @@ */ package org.takes.facets.auth; -import com.jcabi.aspects.Tv; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -110,6 +109,7 @@ void testOneFail() throws Exception { @Test void testSuccessfullIdx() throws Exception { + final int index = 3; final Pass resulting = new PsFixed( new Identity.Simple("urn:foo:test") ); @@ -122,7 +122,7 @@ void testSuccessfullIdx() throws Exception { new PsFake(true), resulting ), - Tv.THREE + index ).enter(request).get().urn(), new IsEqual<>(resulting.enter(request).get().urn()) ); diff --git a/src/test/java/org/takes/facets/auth/PsBasicTest.java b/src/test/java/org/takes/facets/auth/PsBasicTest.java index 4d373d8db..0b2b404f4 100644 --- a/src/test/java/org/takes/facets/auth/PsBasicTest.java +++ b/src/test/java/org/takes/facets/auth/PsBasicTest.java @@ -23,8 +23,7 @@ */ package org.takes.facets.auth; -import com.jcabi.aspects.Tv; -import javax.xml.bind.DatatypeConverter; +import jakarta.xml.bind.DatatypeConverter; import org.apache.commons.lang.RandomStringUtils; import org.hamcrest.CoreMatchers; import org.hamcrest.MatcherAssert; @@ -62,6 +61,11 @@ final class PsBasicTest { */ private static final String VALID_CODE = "?valid_code=%s"; + /** + * Size for random symbol generator. + */ + private static final int TEN = 10; + @Test void handleConnectionWithValidCredential() throws Exception { final String user = "john"; @@ -74,7 +78,7 @@ void handleConnectionWithValidCredential() throws Exception { RqMethod.GET, String.format( PsBasicTest.VALID_CODE, - RandomStringUtils.randomAlphanumeric(Tv.TEN) + RandomStringUtils.randomAlphanumeric(PsBasicTest.TEN) ) ), PsBasicTest.header(user, "pass") @@ -104,7 +108,7 @@ void handleConnectionWithValidCredentialDefaultEntry() RqMethod.GET, String.format( PsBasicTest.VALID_CODE, - RandomStringUtils.randomAlphanumeric(Tv.TEN) + RandomStringUtils.randomAlphanumeric(PsBasicTest.TEN) ) ), PsBasicTest.header(user, password) @@ -130,7 +134,7 @@ void handleConnectionWithInvalidCredential() throws Exception { RqMethod.GET, String.format( "?invalid_code=%s", - RandomStringUtils.randomAlphanumeric(Tv.TEN) + RandomStringUtils.randomAlphanumeric(PsBasicTest.TEN) ) ), PsBasicTest.header("username", "wrong") @@ -162,7 +166,7 @@ void handleMultipleHeadersWithValidCredential() throws Exception { RqMethod.GET, String.format( "?multiple_code=%s", - RandomStringUtils.randomAlphanumeric(Tv.TEN) + RandomStringUtils.randomAlphanumeric(PsBasicTest.TEN) ) ), PsBasicTest.header(user, "changeit"), diff --git a/src/test/java/org/takes/facets/auth/TokenTest.java b/src/test/java/org/takes/facets/auth/TokenTest.java index 9e7eea164..2dd3f3126 100644 --- a/src/test/java/org/takes/facets/auth/TokenTest.java +++ b/src/test/java/org/takes/facets/auth/TokenTest.java @@ -23,12 +23,12 @@ */ package org.takes.facets.auth; +import jakarta.json.JsonObject; import java.io.IOException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Base64; import java.util.Locale; -import javax.json.JsonObject; import org.hamcrest.MatcherAssert; import org.hamcrest.Matchers; import org.hamcrest.core.IsEqual; diff --git a/src/test/java/org/takes/facets/auth/social/PsGithubTest.java b/src/test/java/org/takes/facets/auth/social/PsGithubTest.java index 715a9421d..0d076c788 100644 --- a/src/test/java/org/takes/facets/auth/social/PsGithubTest.java +++ b/src/test/java/org/takes/facets/auth/social/PsGithubTest.java @@ -23,8 +23,8 @@ */ package org.takes.facets.auth.social; +import jakarta.json.Json; import java.io.IOException; -import javax.json.Json; import org.hamcrest.MatcherAssert; import org.hamcrest.Matchers; import org.junit.jupiter.api.Assertions; diff --git a/src/test/java/org/takes/facets/auth/social/PsGoogleTest.java b/src/test/java/org/takes/facets/auth/social/PsGoogleTest.java index c74147966..225c9b8a9 100644 --- a/src/test/java/org/takes/facets/auth/social/PsGoogleTest.java +++ b/src/test/java/org/takes/facets/auth/social/PsGoogleTest.java @@ -23,9 +23,9 @@ */ package org.takes.facets.auth.social; +import jakarta.json.Json; import java.io.IOException; import java.net.HttpURLConnection; -import javax.json.Json; import org.hamcrest.MatcherAssert; import org.hamcrest.Matchers; import org.junit.jupiter.api.Assertions; diff --git a/src/test/java/org/takes/facets/auth/social/PsLinkedinTest.java b/src/test/java/org/takes/facets/auth/social/PsLinkedinTest.java index cdff79761..df97a4355 100644 --- a/src/test/java/org/takes/facets/auth/social/PsLinkedinTest.java +++ b/src/test/java/org/takes/facets/auth/social/PsLinkedinTest.java @@ -24,10 +24,10 @@ package org.takes.facets.auth.social; +import jakarta.json.Json; import java.io.IOException; import java.net.URI; import java.util.Arrays; -import javax.json.Json; import org.apache.commons.lang.RandomStringUtils; import org.hamcrest.CoreMatchers; import org.hamcrest.MatcherAssert; diff --git a/src/test/java/org/takes/facets/auth/social/PsTwitterTest.java b/src/test/java/org/takes/facets/auth/social/PsTwitterTest.java index 029efd8cc..34a9ff7bf 100644 --- a/src/test/java/org/takes/facets/auth/social/PsTwitterTest.java +++ b/src/test/java/org/takes/facets/auth/social/PsTwitterTest.java @@ -25,8 +25,8 @@ package org.takes.facets.auth.social; import com.jcabi.http.request.FakeRequest; +import jakarta.json.Json; import java.util.Collections; -import javax.json.Json; import org.apache.commons.lang.RandomStringUtils; import org.apache.commons.lang.math.RandomUtils; import org.hamcrest.CoreMatchers; diff --git a/src/test/java/org/takes/rs/RsJsonTest.java b/src/test/java/org/takes/rs/RsJsonTest.java index 7a0a64b67..85688b858 100644 --- a/src/test/java/org/takes/rs/RsJsonTest.java +++ b/src/test/java/org/takes/rs/RsJsonTest.java @@ -23,10 +23,10 @@ */ package org.takes.rs; +import jakarta.json.Json; +import jakarta.json.JsonArrayBuilder; +import jakarta.json.JsonStructure; import java.io.IOException; -import javax.json.Json; -import javax.json.JsonArrayBuilder; -import javax.json.JsonStructure; import org.hamcrest.MatcherAssert; import org.hamcrest.Matchers; import org.junit.jupiter.api.Test; diff --git a/src/test/java/org/takes/rs/RsPrettyJsonTest.java b/src/test/java/org/takes/rs/RsPrettyJsonTest.java index c89fdb994..81ae6800b 100644 --- a/src/test/java/org/takes/rs/RsPrettyJsonTest.java +++ b/src/test/java/org/takes/rs/RsPrettyJsonTest.java @@ -49,7 +49,7 @@ void formatsJsonBody() throws Exception { ) ).asString(), Matchers.is( - "\n{\n \"widget\": {\n \"debug\": \"on\"\n }\n}" + "{\n \"widget\": {\n \"debug\": \"on\"\n }\n}" ) ); } @@ -69,7 +69,7 @@ void reportsCorrectContentLength() throws Exception { w.write( new RsBodyPrint( new RsWithBody( - "\n{\n \"test\": {\n \"test\": \"test\"\n }\n}" + "{\n \"test\": {\n \"test\": \"test\"\n }\n}" ) ).asString() ); diff --git a/src/test/java/org/takes/servlet/HttpServletRequestFakeTest.java b/src/test/java/org/takes/servlet/HttpServletRequestFakeTest.java index 9094ca010..e404c4b67 100644 --- a/src/test/java/org/takes/servlet/HttpServletRequestFakeTest.java +++ b/src/test/java/org/takes/servlet/HttpServletRequestFakeTest.java @@ -115,4 +115,52 @@ void defaultMethodIsGet() { new IsEqual<>(RqMethod.GET) ); } + + @Test + void defaultRequestId() { + final HttpServletRequestFake req = new HttpServletRequestFake( + new RqWithHeaders( + new RqFake(), + "MyHeader: theValue", + "MyOtherHeader: aValue" + ) + ); + MatcherAssert.assertThat( + "Should be 1", + req.getRequestId(), + Matchers.equalTo("1") + ); + } + + @Test + void defaultProtocolRequestId() { + final HttpServletRequestFake req = new HttpServletRequestFake( + new RqWithHeaders( + new RqFake(), + "MyHeader: theValue", + "MyOtherHeader: aValue" + ) + ); + MatcherAssert.assertThat( + "Should be empty", + req.getProtocolRequestId(), + Matchers.equalTo("") + ); + } + + @Test + void defaultServletConnection() { + final HttpServletRequestFake req = new HttpServletRequestFake( + new RqWithHeaders( + new RqFake(), + "MyHeader: theValue", + "MyOtherHeader: aValue" + ) + ); + MatcherAssert.assertThat( + "Should be empty", + req.getServletConnection(), + Matchers.instanceOf(ServletConnectionFake.class) + ); + } } diff --git a/src/test/java/org/takes/servlet/HttpServletResponseFakeTest.java b/src/test/java/org/takes/servlet/HttpServletResponseFakeTest.java index 41d1392ba..926050e44 100644 --- a/src/test/java/org/takes/servlet/HttpServletResponseFakeTest.java +++ b/src/test/java/org/takes/servlet/HttpServletResponseFakeTest.java @@ -24,9 +24,9 @@ package org.takes.servlet; +import jakarta.servlet.http.Cookie; +import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; -import javax.servlet.http.Cookie; -import javax.servlet.http.HttpServletResponse; import org.cactoos.text.FormattedText; import org.hamcrest.MatcherAssert; import org.hamcrest.Matchers; diff --git a/src/test/java/org/takes/servlet/ResponseOfTest.java b/src/test/java/org/takes/servlet/ResponseOfTest.java index 643e7becf..d9912ffbc 100644 --- a/src/test/java/org/takes/servlet/ResponseOfTest.java +++ b/src/test/java/org/takes/servlet/ResponseOfTest.java @@ -23,7 +23,7 @@ */ package org.takes.servlet; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletResponse; import org.cactoos.text.FormattedText; import org.hamcrest.MatcherAssert; import org.hamcrest.Matchers; diff --git a/src/test/java/org/takes/servlet/ServletConnectionFakeTest.java b/src/test/java/org/takes/servlet/ServletConnectionFakeTest.java new file mode 100644 index 000000000..c65bb5953 --- /dev/null +++ b/src/test/java/org/takes/servlet/ServletConnectionFakeTest.java @@ -0,0 +1,95 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2014-2024 Yegor Bugayenko + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package org.takes.servlet; + +import org.hamcrest.MatcherAssert; +import org.hamcrest.Matchers; +import org.junit.jupiter.api.Test; + +/** + * Test case for {@link ServletConnectionFake}. + * + * @since 2.0 + */ +final class ServletConnectionFakeTest { + @Test + void connectionIdEmptyCtor() { + final ServletConnectionFake conn = new ServletConnectionFake(); + MatcherAssert.assertThat( + "Should be localhost", + conn.getConnectionId(), + Matchers.equalTo("localhost") + ); + } + + @Test + void protocolEmptyCtor() { + final ServletConnectionFake conn = new ServletConnectionFake(); + MatcherAssert.assertThat( + "Should be HTTP/1.0", + conn.getProtocol(), + Matchers.equalTo("HTTP/1.0") + ); + } + + @Test + void secureEmptyCtor() { + final ServletConnectionFake conn = new ServletConnectionFake(); + MatcherAssert.assertThat( + "Should be false", + conn.isSecure(), + Matchers.equalTo(false) + ); + } + + @Test + void connectionId() { + final ServletConnectionFake conn = new ServletConnectionFake("123", null, false); + MatcherAssert.assertThat( + "Should be 123", + conn.getConnectionId(), + Matchers.equalTo("123") + ); + } + + @Test + void protocol() { + final ServletConnectionFake conn = new ServletConnectionFake(null, "HTTP", false); + MatcherAssert.assertThat( + "Should be HTTP", + conn.getProtocol(), + Matchers.equalTo("HTTP") + ); + } + + @Test + void secure() { + final ServletConnectionFake conn = new ServletConnectionFake(null, null, true); + MatcherAssert.assertThat( + "Should be true", + conn.isSecure(), + Matchers.equalTo(true) + ); + } +} diff --git a/src/test/java/org/takes/servlet/SrvTakeTest.java b/src/test/java/org/takes/servlet/SrvTakeTest.java index e7c04fed5..503973483 100644 --- a/src/test/java/org/takes/servlet/SrvTakeTest.java +++ b/src/test/java/org/takes/servlet/SrvTakeTest.java @@ -26,8 +26,8 @@ import com.jcabi.http.request.JdkRequest; import com.jcabi.http.response.RestResponse; +import jakarta.servlet.ServletContext; import java.net.HttpURLConnection; -import javax.servlet.ServletContext; import org.cactoos.text.FormattedText; import org.cactoos.text.UncheckedText; import org.glassfish.grizzly.http.server.HttpServer; diff --git a/src/test/java/org/takes/tk/TkRetryTest.java b/src/test/java/org/takes/tk/TkRetryTest.java index 544cc3152..d7abeb62b 100644 --- a/src/test/java/org/takes/tk/TkRetryTest.java +++ b/src/test/java/org/takes/tk/TkRetryTest.java @@ -24,7 +24,6 @@ package org.takes.tk; -import com.jcabi.aspects.Tv; import java.io.IOException; import org.hamcrest.MatcherAssert; import org.hamcrest.Matchers; @@ -46,6 +45,26 @@ */ final class TkRetryTest { + /** + * Number of retry attempts. + */ + private static final int COUNT = 3; + + /** + * Time between retries. + */ + private static final int DELAY = 1000; + + /** + * Magic number. + */ + private static final int HUNDRED = 100; + + /** + * Seconds to nanoseconds conversion factor. + */ + private static final int TO_NANOS = 1_000_000; + @Test void worksWithNoException() throws Exception { final String test = "test"; @@ -63,8 +82,8 @@ void retriesOnExceptionTillCount() { Assertions.assertThrows( IOException.class, () -> { - final int count = Tv.THREE; - final int delay = Tv.THOUSAND; + final int count = TkRetryTest.COUNT; + final int delay = TkRetryTest.DELAY; final Take take = Mockito.mock(Take.class); Mockito .when(take.act(Mockito.any(Request.class))) @@ -77,7 +96,9 @@ void retriesOnExceptionTillCount() { } catch (final IOException exception) { final long spent = System.nanoTime() - start; MatcherAssert.assertThat( - Long.valueOf(count * delay - Tv.HUNDRED) * Tv.MILLION, + Long.valueOf( + count * delay - TkRetryTest.HUNDRED + ) * TkRetryTest.TO_NANOS, Matchers.lessThanOrEqualTo(spent) ); throw exception; @@ -88,8 +109,8 @@ void retriesOnExceptionTillCount() { @Test void retriesOnExceptionTillSuccess() throws Exception { - final int count = Tv.THREE; - final int delay = Tv.THOUSAND; + final int count = TkRetryTest.COUNT; + final int delay = TkRetryTest.DELAY; final String data = "data"; final Take take = Mockito.mock(Take.class); Mockito @@ -102,7 +123,7 @@ void retriesOnExceptionTillSuccess() throws Exception { ); final long spent = System.nanoTime() - start; MatcherAssert.assertThat( - Long.valueOf(delay - Tv.HUNDRED) * Tv.MILLION, + Long.valueOf(delay - TkRetryTest.HUNDRED) * TkRetryTest.TO_NANOS, Matchers.lessThanOrEqualTo(spent) ); MatcherAssert.assertThat(