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(