diff --git a/java/ql/lib/change-notes/2024-09-24-multipart.md b/java/ql/lib/change-notes/2024-09-24-multipart.md new file mode 100644 index 000000000000..e11026980658 --- /dev/null +++ b/java/ql/lib/change-notes/2024-09-24-multipart.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Added more dataflow models of `org.apache.commons.fileupload.FileItem`, `javax/jakarta.servlet.http.Part` and `org.apache.commons.fileupload.util.Streams`. \ No newline at end of file diff --git a/java/ql/lib/ext/jakarta.servlet.http.model.yml b/java/ql/lib/ext/jakarta.servlet.http.model.yml index 5a83b1ac08d8..ba461a181de2 100644 --- a/java/ql/lib/ext/jakarta.servlet.http.model.yml +++ b/java/ql/lib/ext/jakarta.servlet.http.model.yml @@ -3,4 +3,11 @@ extensions: pack: codeql/java-all extensible: sourceModel data: - - ["jakarta.servlet.http", "HttpServletRequest", True, "getServletPath", "", "", "ReturnValue", "remote", "manual"] + - ["jakarta.servlet.http", "HttpServletRequest", True, "getServletPath", "()", "", "ReturnValue", "remote", "manual"] + - ["jakarta.servlet.http", "Part", True, "getInputStream", "()", "", "ReturnValue", "remote", "manual"] + - ["jakarta.servlet.http", "Part", True, "getName", "()", "", "ReturnValue", "remote", "manual"] + - ["jakarta.servlet.http", "Part", True, "getContentType", "()", "", "ReturnValue", "remote", "manual"] + - ["jakarta.servlet.http", "Part", True, "getHeader", "(String)", "", "ReturnValue", "remote", "manual"] + - ["jakarta.servlet.http", "Part", True, "getHeaders", "(String)", "", "ReturnValue", "remote", "manual"] + - ["jakarta.servlet.http", "Part", True, "getHeaderNames", "()", "", "ReturnValue", "remote", "manual"] + - ["jakarta.servlet.http", "Part", True, "getSubmittedFileName", "()", "", "ReturnValue", "remote", "manual"] diff --git a/java/ql/lib/ext/javax.servlet.http.model.yml b/java/ql/lib/ext/javax.servlet.http.model.yml index ec35445d199a..46b9765a1fd4 100644 --- a/java/ql/lib/ext/javax.servlet.http.model.yml +++ b/java/ql/lib/ext/javax.servlet.http.model.yml @@ -19,6 +19,14 @@ extensions: - ["javax.servlet.http", "HttpServletRequest", False, "getRequestURI", "()", "", "ReturnValue", "remote", "manual"] - ["javax.servlet.http", "HttpServletRequest", False, "getRequestURL", "()", "", "ReturnValue", "remote", "manual"] - ["javax.servlet.http", "HttpServletRequest", False, "getServletPath", "()", "", "ReturnValue", "remote", "manual"] + - ["javax.servlet.http", "Part", False, "getInputStream", "()", "", "ReturnValue", "remote", "manual"] + - ["javax.servlet.http", "Part", False, "getName", "()", "", "ReturnValue", "remote", "manual"] + - ["javax.servlet.http", "Part", False, "getContentType", "()", "", "ReturnValue", "remote", "manual"] + - ["javax.servlet.http", "Part", False, "getHeader", "(String)", "", "ReturnValue", "remote", "manual"] + - ["javax.servlet.http", "Part", False, "getSubmittedFileName", "()", "", "ReturnValue", "remote", "manual"] + - ["javax.servlet.http", "Part", False, "getHeaders", "(String)", "", "ReturnValue", "remote", "manual"] + - ["javax.servlet.http", "Part", False, "getHeaderNames", "()", "", "ReturnValue", "remote", "manual"] + - addsTo: pack: codeql/java-all diff --git a/java/ql/lib/ext/org.apache.commons.fileupload.model.yml b/java/ql/lib/ext/org.apache.commons.fileupload.model.yml new file mode 100644 index 000000000000..228abadcc3e6 --- /dev/null +++ b/java/ql/lib/ext/org.apache.commons.fileupload.model.yml @@ -0,0 +1,16 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: sourceModel + data: + - ["org.apache.commons.fileupload", "FileItem", True, "getInputStream", "()", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItem", True, "getFieldName", "()", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItem", True, "getContentType", "()", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItem", True, "getString", "()", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItem", True, "getName", "()", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItem", True, "getName", "(String)", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItem", True, "get", "()", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItemStream", True, "getContentType", "()", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItemStream", True, "getFieldName", "()", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItemStream", True, "getName", "()", "", "ReturnValue", "remote", "manual"] + - ["org.apache.commons.fileupload", "FileItemStream", True, "openStream", "()", "", "ReturnValue", "remote", "manual"] \ No newline at end of file diff --git a/java/ql/lib/ext/org.apache.commons.fileupload.util.model.yml b/java/ql/lib/ext/org.apache.commons.fileupload.util.model.yml new file mode 100644 index 000000000000..ed1e24d410d0 --- /dev/null +++ b/java/ql/lib/ext/org.apache.commons.fileupload.util.model.yml @@ -0,0 +1,9 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: summaryModel + data: + - ["org.apache.commons.fileupload.util", "Streams", True, "copy", "(InputStream,OutputStream,boolean)", "", "Argument[0]", "Argument[1]", "taint", "manual"] + - ["org.apache.commons.fileupload.util", "Streams", True, "copy", "(InputStream,OutputStream,boolean,byte[])", "", "Argument[0]", "Argument[1]", "taint", "manual"] + - ["org.apache.commons.fileupload.util", "Streams", True, "asString", "(InputStream)", "", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["org.apache.commons.fileupload.util", "Streams", True, "asString", "(InputStream,String)", "", "Argument[0]", "ReturnValue", "taint", "manual"] \ No newline at end of file diff --git a/java/ql/test/library-tests/dataflow/taintsources/FileUpload.java b/java/ql/test/library-tests/dataflow/taintsources/FileUpload.java new file mode 100644 index 000000000000..29437a4ab18c --- /dev/null +++ b/java/ql/test/library-tests/dataflow/taintsources/FileUpload.java @@ -0,0 +1,46 @@ +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.fileupload.FileItem; +import org.apache.commons.fileupload.FileItemStream; + + +public class FileUpload { + + private HttpServletRequest request; + private HttpServletResponse response; + private javax.servlet.http.Part filePart; + private FileItem fileItem; + private FileItemStream fileItemStream; + private jakarta.servlet.http.Part jakartaPart; + + private static void sink(Object o) {} + + public void test() throws Exception { + sink(filePart.getContentType()); // $ hasRemoteValueFlow + sink(filePart.getHeader("test")); // $ hasRemoteValueFlow + sink(filePart.getInputStream()); // $ hasRemoteValueFlow + sink(filePart.getHeaders("test")); // $ hasRemoteValueFlow + sink(filePart.getHeaderNames()); // $ hasRemoteValueFlow + sink(filePart.getSubmittedFileName()); // $ hasRemoteValueFlow + sink(filePart.getName()); // $ hasRemoteValueFlow + + sink(fileItem.getName()); // $ hasRemoteValueFlow + sink(fileItem.get()); // $ hasRemoteValueFlow + sink(fileItem.getString()); // $ hasRemoteValueFlow + sink(fileItem.getContentType()); // $ hasRemoteValueFlow + sink(fileItem.getName()); // $ hasRemoteValueFlow + + sink(fileItemStream.getFieldName()); // $ hasRemoteValueFlow + sink(fileItemStream.getName()); // $ hasRemoteValueFlow + sink(fileItemStream.openStream()); // $ hasRemoteValueFlow + + sink(jakartaPart.getContentType()); // $ hasRemoteValueFlow + sink(jakartaPart.getHeader("test")); // $ hasRemoteValueFlow + sink(jakartaPart.getInputStream()); // $ hasRemoteValueFlow + sink(jakartaPart.getHeaders("test")); // $ hasRemoteValueFlow + sink(jakartaPart.getHeaderNames()); // $ hasRemoteValueFlow + sink(jakartaPart.getSubmittedFileName()); // $ hasRemoteValueFlow + sink(jakartaPart.getName()); // $ hasRemoteValueFlow + + } +} \ No newline at end of file diff --git a/java/ql/test/library-tests/dataflow/taintsources/options b/java/ql/test/library-tests/dataflow/taintsources/options index c8249b05e38e..69d482d20136 100644 --- a/java/ql/test/library-tests/dataflow/taintsources/options +++ b/java/ql/test/library-tests/dataflow/taintsources/options @@ -1 +1 @@ -//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/servlet-api-2.4:${testdir}/../../../stubs/springframework-5.3.8:${testdir}/../../../stubs/google-android-9.0.0:${testdir}/../../../stubs/playframework-2.6.x:${testdir}/../../../stubs/jackson-databind-2.12:${testdir}/../../../stubs/jackson-core-2.12:${testdir}/../../../stubs/akka-2.6.x:${testdir}/../../../stubs/jwtk-jjwt-0.11.2:${testdir}/../../../stubs/jenkins:${testdir}/../../../stubs/stapler-1.263 \ No newline at end of file +//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/jakarta.servlet-api-6.0.0:${testdir}/../../../stubs/apache-commons-fileupload-1.4:${testdir}/../../../stubs/javax-servlet-2.5:${testdir}/../../../stubs/servlet-api-2.4:${testdir}/../../../stubs/springframework-5.3.8:${testdir}/../../../stubs/google-android-9.0.0:${testdir}/../../../stubs/playframework-2.6.x:${testdir}/../../../stubs/jackson-databind-2.12:${testdir}/../../../stubs/jackson-core-2.12:${testdir}/../../../stubs/akka-2.6.x:${testdir}/../../../stubs/jwtk-jjwt-0.11.2:${testdir}/../../../stubs/jenkins:${testdir}/../../../stubs/stapler-1.263 \ No newline at end of file diff --git a/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/Test.java b/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/Test.java new file mode 100644 index 000000000000..552b9fc69739 --- /dev/null +++ b/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/Test.java @@ -0,0 +1,55 @@ +package com.mycompany.app; + +import org.apache.commons.fileupload.util.Streams; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.ByteArrayOutputStream; + +// Test case generated by GenerateFlowTestCase.ql +public class Test { + + Object source() { + return null; + } + + void sink(Object o) { + } + + public void test() throws Exception { + + { + InputStream in = (InputStream)source(); + OutputStream os = new ByteArrayOutputStream(1024); + + InputStream in2 = (InputStream)source(); + OutputStream os2 = new ByteArrayOutputStream(1024); + + byte[] myArray = new byte[1024]; + + // "org.apache.commons.fileupload.util;Streams;true;copy;(InputStream,OutputStream,boolean,byte[]);;Argument[0];Argument[1];taint;manual" + long status = Streams.copy(in, os, true, myArray); + sink(os); // $ hasTaintFlow + // "org.apache.commons.fileupload.util;Streams;true;copy;(InputStream,OutputStream,boolean);;Argument[0];Argument[1];taint;manual" + long status2 = Streams.copy(in2, os2, true); + sink(os2); // $ hasTaintFlow + } + + } + public void test2() throws Exception { + + { + + InputStream in = (InputStream)source(); + // "org.apache.commons.fileupload.util;Streams;true;asString;(InputStream,String);;Argument[0];ReturnValue;taint;manual" + String result = Streams.asString(in); + sink(result); // $ hasTaintFlow + + InputStream in1 = (InputStream)source(); + // "org.apache.commons.fileupload.util;Streams;true;asString;(InputStream,String);;Argument[0];ReturnValue;taint;manual" + String result1 = Streams.asString(in1, "test"); + sink(result1); // $ hasTaintFlow + } + + } + +} \ No newline at end of file diff --git a/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/options b/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/options new file mode 100644 index 000000000000..89451545827b --- /dev/null +++ b/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/options @@ -0,0 +1 @@ +//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/apache-commons-fileupload-1.4 \ No newline at end of file diff --git a/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/test.expected b/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/test.expected new file mode 100644 index 000000000000..76324560ac67 --- /dev/null +++ b/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/test.expected @@ -0,0 +1,45 @@ +models +| 1 | Summary: org.apache.commons.fileupload.util; Streams; true; asString; (InputStream); ; Argument[0]; ReturnValue; taint; manual | +| 2 | Summary: org.apache.commons.fileupload.util; Streams; true; asString; (InputStream,String); ; Argument[0]; ReturnValue; taint; manual | +| 3 | Summary: org.apache.commons.fileupload.util; Streams; true; copy; (InputStream,OutputStream,boolean); ; Argument[0]; Argument[1]; taint; manual | +| 4 | Summary: org.apache.commons.fileupload.util; Streams; true; copy; (InputStream,OutputStream,boolean,byte[]); ; Argument[0]; Argument[1]; taint; manual | +edges +| Test.java:21:30:21:50 | (...)... : InputStream | Test.java:30:31:30:32 | in : InputStream | provenance | | +| Test.java:21:43:21:50 | source(...) : Object | Test.java:21:30:21:50 | (...)... : InputStream | provenance | | +| Test.java:24:22:24:42 | (...)... : InputStream | Test.java:33:32:33:34 | in2 : InputStream | provenance | | +| Test.java:24:35:24:42 | source(...) : Object | Test.java:24:22:24:42 | (...)... : InputStream | provenance | | +| Test.java:30:31:30:32 | in : InputStream | Test.java:30:35:30:36 | os [post update] : ByteArrayOutputStream | provenance | MaD:4 | +| Test.java:30:35:30:36 | os [post update] : ByteArrayOutputStream | Test.java:31:9:31:10 | os | provenance | | +| Test.java:33:32:33:34 | in2 : InputStream | Test.java:33:37:33:39 | os2 [post update] : ByteArrayOutputStream | provenance | MaD:3 | +| Test.java:33:37:33:39 | os2 [post update] : ByteArrayOutputStream | Test.java:34:9:34:11 | os2 | provenance | | +| Test.java:42:30:42:50 | (...)... : InputStream | Test.java:44:37:44:38 | in : InputStream | provenance | | +| Test.java:42:43:42:50 | source(...) : Object | Test.java:42:30:42:50 | (...)... : InputStream | provenance | | +| Test.java:44:20:44:39 | asString(...) : String | Test.java:45:9:45:14 | result | provenance | | +| Test.java:44:37:44:38 | in : InputStream | Test.java:44:20:44:39 | asString(...) : String | provenance | MaD:1 | +| Test.java:47:31:47:51 | (...)... : InputStream | Test.java:49:47:49:49 | in1 : InputStream | provenance | | +| Test.java:47:44:47:51 | source(...) : Object | Test.java:47:31:47:51 | (...)... : InputStream | provenance | | +| Test.java:49:30:49:58 | asString(...) : String | Test.java:50:18:50:24 | result1 | provenance | | +| Test.java:49:47:49:49 | in1 : InputStream | Test.java:49:30:49:58 | asString(...) : String | provenance | MaD:2 | +nodes +| Test.java:21:30:21:50 | (...)... : InputStream | semmle.label | (...)... : InputStream | +| Test.java:21:43:21:50 | source(...) : Object | semmle.label | source(...) : Object | +| Test.java:24:22:24:42 | (...)... : InputStream | semmle.label | (...)... : InputStream | +| Test.java:24:35:24:42 | source(...) : Object | semmle.label | source(...) : Object | +| Test.java:30:31:30:32 | in : InputStream | semmle.label | in : InputStream | +| Test.java:30:35:30:36 | os [post update] : ByteArrayOutputStream | semmle.label | os [post update] : ByteArrayOutputStream | +| Test.java:31:9:31:10 | os | semmle.label | os | +| Test.java:33:32:33:34 | in2 : InputStream | semmle.label | in2 : InputStream | +| Test.java:33:37:33:39 | os2 [post update] : ByteArrayOutputStream | semmle.label | os2 [post update] : ByteArrayOutputStream | +| Test.java:34:9:34:11 | os2 | semmle.label | os2 | +| Test.java:42:30:42:50 | (...)... : InputStream | semmle.label | (...)... : InputStream | +| Test.java:42:43:42:50 | source(...) : Object | semmle.label | source(...) : Object | +| Test.java:44:20:44:39 | asString(...) : String | semmle.label | asString(...) : String | +| Test.java:44:37:44:38 | in : InputStream | semmle.label | in : InputStream | +| Test.java:45:9:45:14 | result | semmle.label | result | +| Test.java:47:31:47:51 | (...)... : InputStream | semmle.label | (...)... : InputStream | +| Test.java:47:44:47:51 | source(...) : Object | semmle.label | source(...) : Object | +| Test.java:49:30:49:58 | asString(...) : String | semmle.label | asString(...) : String | +| Test.java:49:47:49:49 | in1 : InputStream | semmle.label | in1 : InputStream | +| Test.java:50:18:50:24 | result1 | semmle.label | result1 | +subpaths +testFailures diff --git a/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/test.ql b/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/test.ql new file mode 100644 index 000000000000..a8287d6c5f1a --- /dev/null +++ b/java/ql/test/library-tests/frameworks/apache-commons-fileupload-1.4/test.ql @@ -0,0 +1,4 @@ +import java +import TestUtilities.InlineFlowTest +import DefaultFlowTest +import TaintFlow::PathGraph diff --git a/java/ql/test/stubs/apache-commons-fileupload-1.4/org/apache/commons/fileupload/FileItemStream.java b/java/ql/test/stubs/apache-commons-fileupload-1.4/org/apache/commons/fileupload/FileItemStream.java new file mode 100644 index 000000000000..b60c53fc95cc --- /dev/null +++ b/java/ql/test/stubs/apache-commons-fileupload-1.4/org/apache/commons/fileupload/FileItemStream.java @@ -0,0 +1,14 @@ +package org.apache.commons.fileupload; + +import java.io.InputStream; +import org.apache.commons.fileupload.FileItemHeadersSupport; + + +public interface FileItemStream extends FileItemHeadersSupport +{ + InputStream openStream() throws java.io.IOException; + String getContentType(); + String getName(); + String getFieldName(); + boolean isFormField(); +} \ No newline at end of file diff --git a/java/ql/test/stubs/apache-commons-fileupload-1.4/org/apache/commons/fileupload/util/Streams.java b/java/ql/test/stubs/apache-commons-fileupload-1.4/org/apache/commons/fileupload/util/Streams.java new file mode 100644 index 000000000000..3c84ce04198b --- /dev/null +++ b/java/ql/test/stubs/apache-commons-fileupload-1.4/org/apache/commons/fileupload/util/Streams.java @@ -0,0 +1,16 @@ +// Generated automatically from org.apache.commons.fileupload.util.Streams for testing purposes + +package org.apache.commons.fileupload.util; + +import java.io.InputStream; +import java.io.OutputStream; + +public class Streams +{ + protected Streams() {} + public static String asString(InputStream p0){ return null; } + public static String asString(InputStream p0, String p1){ return null; } + public static String checkFileName(String p0){ return null; } + public static long copy(InputStream p0, OutputStream p1, boolean p2){ return 0; } + public static long copy(InputStream p0, OutputStream p1, boolean p2, byte[] p3){ return 0; } +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/AsyncContext.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/AsyncContext.java new file mode 100644 index 000000000000..2dd7f0043a1c --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/AsyncContext.java @@ -0,0 +1,31 @@ +// Generated automatically from jakarta.servlet.AsyncContext for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.AsyncListener; +import jakarta.servlet.ServletContext; +import jakarta.servlet.ServletRequest; +import jakarta.servlet.ServletResponse; + +public interface AsyncContext +{ + T createListener(java.lang.Class p0); + ServletRequest getRequest(); + ServletResponse getResponse(); + boolean hasOriginalRequestAndResponse(); + long getTimeout(); + static String ASYNC_CONTEXT_PATH = null; + static String ASYNC_MAPPING = null; + static String ASYNC_PATH_INFO = null; + static String ASYNC_QUERY_STRING = null; + static String ASYNC_REQUEST_URI = null; + static String ASYNC_SERVLET_PATH = null; + void addListener(AsyncListener p0); + void addListener(AsyncListener p0, ServletRequest p1, ServletResponse p2); + void complete(); + void dispatch(); + void dispatch(ServletContext p0, String p1); + void dispatch(String p0); + void setTimeout(long p0); + void start(Runnable p0); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/AsyncEvent.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/AsyncEvent.java new file mode 100644 index 000000000000..cf67716e25d1 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/AsyncEvent.java @@ -0,0 +1,20 @@ +// Generated automatically from jakarta.servlet.AsyncEvent for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.AsyncContext; +import jakarta.servlet.ServletRequest; +import jakarta.servlet.ServletResponse; + +public class AsyncEvent +{ + protected AsyncEvent() {} + public AsyncContext getAsyncContext(){ return null; } + public AsyncEvent(AsyncContext p0){} + public AsyncEvent(AsyncContext p0, ServletRequest p1, ServletResponse p2){} + public AsyncEvent(AsyncContext p0, ServletRequest p1, ServletResponse p2, Throwable p3){} + public AsyncEvent(AsyncContext p0, Throwable p1){} + public ServletRequest getSuppliedRequest(){ return null; } + public ServletResponse getSuppliedResponse(){ return null; } + public Throwable getThrowable(){ return null; } +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/AsyncListener.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/AsyncListener.java new file mode 100644 index 000000000000..312f16c7fe43 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/AsyncListener.java @@ -0,0 +1,14 @@ +// Generated automatically from jakarta.servlet.AsyncListener for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.AsyncEvent; +import java.util.EventListener; + +public interface AsyncListener extends EventListener +{ + void onComplete(AsyncEvent p0); + void onError(AsyncEvent p0); + void onStartAsync(AsyncEvent p0); + void onTimeout(AsyncEvent p0); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/DispatcherType.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/DispatcherType.java new file mode 100644 index 000000000000..f66519259c3c --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/DispatcherType.java @@ -0,0 +1,10 @@ +// Generated automatically from jakarta.servlet.DispatcherType for testing purposes + +package jakarta.servlet; + + +public enum DispatcherType +{ + ASYNC, ERROR, FORWARD, INCLUDE, REQUEST; + private DispatcherType() {} +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/Filter.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/Filter.java new file mode 100644 index 000000000000..60ed2c9e4b21 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/Filter.java @@ -0,0 +1,15 @@ +// Generated automatically from jakarta.servlet.Filter for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.FilterChain; +import jakarta.servlet.FilterConfig; +import jakarta.servlet.ServletRequest; +import jakarta.servlet.ServletResponse; + +public interface Filter +{ + default void destroy(){} + default void init(FilterConfig p0){} + void doFilter(ServletRequest p0, ServletResponse p1, FilterChain p2); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/FilterChain.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/FilterChain.java new file mode 100644 index 000000000000..d6943485a81c --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/FilterChain.java @@ -0,0 +1,11 @@ +// Generated automatically from jakarta.servlet.FilterChain for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.ServletRequest; +import jakarta.servlet.ServletResponse; + +public interface FilterChain +{ + void doFilter(ServletRequest p0, ServletResponse p1); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/FilterConfig.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/FilterConfig.java new file mode 100644 index 000000000000..46f0bbca10c8 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/FilterConfig.java @@ -0,0 +1,14 @@ +// Generated automatically from jakarta.servlet.FilterConfig for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.ServletContext; +import java.util.Enumeration; + +public interface FilterConfig +{ + Enumeration getInitParameterNames(); + ServletContext getServletContext(); + String getFilterName(); + String getInitParameter(String p0); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/FilterRegistration.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/FilterRegistration.java new file mode 100644 index 000000000000..e6963bbe10c2 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/FilterRegistration.java @@ -0,0 +1,19 @@ +// Generated automatically from jakarta.servlet.FilterRegistration for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.DispatcherType; +import jakarta.servlet.Registration; +import java.util.Collection; +import java.util.EnumSet; + +public interface FilterRegistration extends Registration +{ + Collection getServletNameMappings(); + Collection getUrlPatternMappings(); + static public interface Dynamic extends FilterRegistration, Registration.Dynamic + { + } + void addMappingForServletNames(EnumSet p0, boolean p1, String... p2); + void addMappingForUrlPatterns(EnumSet p0, boolean p1, String... p2); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/HttpConstraintElement.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/HttpConstraintElement.java new file mode 100644 index 000000000000..7c35c7647da4 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/HttpConstraintElement.java @@ -0,0 +1,16 @@ +// Generated automatically from jakarta.servlet.HttpConstraintElement for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.annotation.ServletSecurity; + +public class HttpConstraintElement +{ + public HttpConstraintElement(){} + public HttpConstraintElement(ServletSecurity.EmptyRoleSemantic p0){} + public HttpConstraintElement(ServletSecurity.EmptyRoleSemantic p0, ServletSecurity.TransportGuarantee p1, String... p2){} + public HttpConstraintElement(ServletSecurity.TransportGuarantee p0, String... p1){} + public ServletSecurity.EmptyRoleSemantic getEmptyRoleSemantic(){ return null; } + public ServletSecurity.TransportGuarantee getTransportGuarantee(){ return null; } + public String[] getRolesAllowed(){ return null; } +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/HttpMethodConstraintElement.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/HttpMethodConstraintElement.java new file mode 100644 index 000000000000..784e0a70c60a --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/HttpMethodConstraintElement.java @@ -0,0 +1,13 @@ +// Generated automatically from jakarta.servlet.HttpMethodConstraintElement for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.HttpConstraintElement; + +public class HttpMethodConstraintElement extends HttpConstraintElement +{ + protected HttpMethodConstraintElement() {} + public HttpMethodConstraintElement(String p0){} + public HttpMethodConstraintElement(String p0, HttpConstraintElement p1){} + public String getMethodName(){ return null; } +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/MultipartConfigElement.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/MultipartConfigElement.java new file mode 100644 index 000000000000..e92e0cd1ce89 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/MultipartConfigElement.java @@ -0,0 +1,17 @@ +// Generated automatically from jakarta.servlet.MultipartConfigElement for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.annotation.MultipartConfig; + +public class MultipartConfigElement +{ + protected MultipartConfigElement() {} + public MultipartConfigElement(MultipartConfig p0){} + public MultipartConfigElement(String p0){} + public MultipartConfigElement(String p0, long p1, long p2, int p3){} + public String getLocation(){ return null; } + public int getFileSizeThreshold(){ return 0; } + public long getMaxFileSize(){ return 0; } + public long getMaxRequestSize(){ return 0; } +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ReadListener.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ReadListener.java new file mode 100644 index 000000000000..d3bd6b6406e0 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ReadListener.java @@ -0,0 +1,12 @@ +// Generated automatically from jakarta.servlet.ReadListener for testing purposes + +package jakarta.servlet; + +import java.util.EventListener; + +public interface ReadListener extends EventListener +{ + void onAllDataRead(); + void onDataAvailable(); + void onError(Throwable p0); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/Registration.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/Registration.java new file mode 100644 index 000000000000..ed28c2fd90c4 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/Registration.java @@ -0,0 +1,20 @@ +// Generated automatically from jakarta.servlet.Registration for testing purposes + +package jakarta.servlet; + +import java.util.Map; +import java.util.Set; + +public interface Registration +{ + Map getInitParameters(); + Set setInitParameters(Map p0); + String getClassName(); + String getInitParameter(String p0); + String getName(); + boolean setInitParameter(String p0, String p1); + static public interface Dynamic extends Registration + { + void setAsyncSupported(boolean p0); + } +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/RequestDispatcher.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/RequestDispatcher.java new file mode 100644 index 000000000000..261772a868c3 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/RequestDispatcher.java @@ -0,0 +1,30 @@ +// Generated automatically from jakarta.servlet.RequestDispatcher for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.ServletRequest; +import jakarta.servlet.ServletResponse; + +public interface RequestDispatcher +{ + static String ERROR_EXCEPTION = null; + static String ERROR_EXCEPTION_TYPE = null; + static String ERROR_MESSAGE = null; + static String ERROR_REQUEST_URI = null; + static String ERROR_SERVLET_NAME = null; + static String ERROR_STATUS_CODE = null; + static String FORWARD_CONTEXT_PATH = null; + static String FORWARD_MAPPING = null; + static String FORWARD_PATH_INFO = null; + static String FORWARD_QUERY_STRING = null; + static String FORWARD_REQUEST_URI = null; + static String FORWARD_SERVLET_PATH = null; + static String INCLUDE_CONTEXT_PATH = null; + static String INCLUDE_MAPPING = null; + static String INCLUDE_PATH_INFO = null; + static String INCLUDE_QUERY_STRING = null; + static String INCLUDE_REQUEST_URI = null; + static String INCLUDE_SERVLET_PATH = null; + void forward(ServletRequest p0, ServletResponse p1); + void include(ServletRequest p0, ServletResponse p1); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/Servlet.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/Servlet.java new file mode 100644 index 000000000000..23fba12646f6 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/Servlet.java @@ -0,0 +1,16 @@ +// Generated automatically from jakarta.servlet.Servlet for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.ServletConfig; +import jakarta.servlet.ServletRequest; +import jakarta.servlet.ServletResponse; + +public interface Servlet +{ + ServletConfig getServletConfig(); + String getServletInfo(); + void destroy(); + void init(ServletConfig p0); + void service(ServletRequest p0, ServletResponse p1); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletConfig.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletConfig.java new file mode 100644 index 000000000000..1f914cdb1deb --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletConfig.java @@ -0,0 +1,14 @@ +// Generated automatically from jakarta.servlet.ServletConfig for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.ServletContext; +import java.util.Enumeration; + +public interface ServletConfig +{ + Enumeration getInitParameterNames(); + ServletContext getServletContext(); + String getInitParameter(String p0); + String getServletName(); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletConnection.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletConnection.java new file mode 100644 index 000000000000..927d47e6c428 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletConnection.java @@ -0,0 +1,12 @@ +// Generated automatically from jakarta.servlet.ServletConnection for testing purposes + +package jakarta.servlet; + + +public interface ServletConnection +{ + String getConnectionId(); + String getProtocol(); + String getProtocolConnectionId(); + boolean isSecure(); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletContext.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletContext.java new file mode 100644 index 000000000000..df05b77fd0fa --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletContext.java @@ -0,0 +1,79 @@ +// Generated automatically from jakarta.servlet.ServletContext for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.Filter; +import jakarta.servlet.FilterRegistration; +import jakarta.servlet.RequestDispatcher; +import jakarta.servlet.Servlet; +import jakarta.servlet.ServletRegistration; +import jakarta.servlet.SessionCookieConfig; +import jakarta.servlet.SessionTrackingMode; +import jakarta.servlet.descriptor.JspConfigDescriptor; +import java.io.InputStream; +import java.net.URL; +import java.util.Enumeration; +import java.util.EventListener; +import java.util.Map; +import java.util.Set; + +public interface ServletContext +{ + T createListener(java.lang.Class p0); + void addListener(T p0); + T createFilter(java.lang.Class p0); + T createServlet(java.lang.Class p0); + ClassLoader getClassLoader(); + Enumeration getAttributeNames(); + Enumeration getInitParameterNames(); + FilterRegistration getFilterRegistration(String p0); + FilterRegistration.Dynamic addFilter(String p0, Class p1); + FilterRegistration.Dynamic addFilter(String p0, Filter p1); + FilterRegistration.Dynamic addFilter(String p0, String p1); + InputStream getResourceAsStream(String p0); + JspConfigDescriptor getJspConfigDescriptor(); + Map getFilterRegistrations(); + Map getServletRegistrations(); + Object getAttribute(String p0); + RequestDispatcher getNamedDispatcher(String p0); + RequestDispatcher getRequestDispatcher(String p0); + ServletContext getContext(String p0); + ServletRegistration getServletRegistration(String p0); + ServletRegistration.Dynamic addJspFile(String p0, String p1); + ServletRegistration.Dynamic addServlet(String p0, Class p1); + ServletRegistration.Dynamic addServlet(String p0, Servlet p1); + ServletRegistration.Dynamic addServlet(String p0, String p1); + SessionCookieConfig getSessionCookieConfig(); + Set getDefaultSessionTrackingModes(); + Set getEffectiveSessionTrackingModes(); + Set getResourcePaths(String p0); + String getContextPath(); + String getInitParameter(String p0); + String getMimeType(String p0); + String getRealPath(String p0); + String getRequestCharacterEncoding(); + String getResponseCharacterEncoding(); + String getServerInfo(); + String getServletContextName(); + String getVirtualServerName(); + URL getResource(String p0); + boolean setInitParameter(String p0, String p1); + int getEffectiveMajorVersion(); + int getEffectiveMinorVersion(); + int getMajorVersion(); + int getMinorVersion(); + int getSessionTimeout(); + static String ORDERED_LIBS = null; + static String TEMPDIR = null; + void addListener(Class p0); + void addListener(String p0); + void declareRoles(String... p0); + void log(String p0); + void log(String p0, Throwable p1); + void removeAttribute(String p0); + void setAttribute(String p0, Object p1); + void setRequestCharacterEncoding(String p0); + void setResponseCharacterEncoding(String p0); + void setSessionTimeout(int p0); + void setSessionTrackingModes(Set p0); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletInputStream.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletInputStream.java new file mode 100644 index 000000000000..9db836af5899 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletInputStream.java @@ -0,0 +1,15 @@ +// Generated automatically from jakarta.servlet.ServletInputStream for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.ReadListener; +import java.io.InputStream; + +abstract public class ServletInputStream extends InputStream +{ + protected ServletInputStream(){} + public abstract boolean isFinished(); + public abstract boolean isReady(); + public abstract void setReadListener(ReadListener p0); + public int readLine(byte[] p0, int p1, int p2){ return 0; } +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletOutputStream.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletOutputStream.java new file mode 100644 index 000000000000..18cd370346f6 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletOutputStream.java @@ -0,0 +1,28 @@ +// Generated automatically from jakarta.servlet.ServletOutputStream for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.WriteListener; +import java.io.OutputStream; + +abstract public class ServletOutputStream extends OutputStream +{ + protected ServletOutputStream(){} + public abstract boolean isReady(); + public abstract void setWriteListener(WriteListener p0); + public void print(String p0){} + public void print(boolean p0){} + public void print(char p0){} + public void print(double p0){} + public void print(float p0){} + public void print(int p0){} + public void print(long p0){} + public void println(){} + public void println(String p0){} + public void println(boolean p0){} + public void println(char p0){} + public void println(double p0){} + public void println(float p0){} + public void println(int p0){} + public void println(long p0){} +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletRegistration.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletRegistration.java new file mode 100644 index 000000000000..edb9c15562cf --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletRegistration.java @@ -0,0 +1,23 @@ +// Generated automatically from jakarta.servlet.ServletRegistration for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.MultipartConfigElement; +import jakarta.servlet.Registration; +import jakarta.servlet.ServletSecurityElement; +import java.util.Collection; +import java.util.Set; + +public interface ServletRegistration extends Registration +{ + Collection getMappings(); + Set addMapping(String... p0); + String getRunAsRole(); + static public interface Dynamic extends Registration.Dynamic, ServletRegistration + { + Set setServletSecurity(ServletSecurityElement p0); + void setLoadOnStartup(int p0); + void setMultipartConfig(MultipartConfigElement p0); + void setRunAsRole(String p0); + } +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletRequest.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletRequest.java new file mode 100644 index 000000000000..f2c421a5a905 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletRequest.java @@ -0,0 +1,58 @@ +// Generated automatically from jakarta.servlet.ServletRequest for testing purposes + +package jakarta.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.ServletResponse; +import java.io.BufferedReader; +import java.util.Enumeration; +import java.util.Locale; +import java.util.Map; + +public interface ServletRequest +{ + AsyncContext getAsyncContext(); + AsyncContext startAsync(); + AsyncContext startAsync(ServletRequest p0, ServletResponse p1); + BufferedReader getReader(); + DispatcherType getDispatcherType(); + Enumeration getLocales(); + Enumeration getAttributeNames(); + Enumeration getParameterNames(); + Locale getLocale(); + Map getParameterMap(); + Object getAttribute(String p0); + RequestDispatcher getRequestDispatcher(String p0); + ServletConnection getServletConnection(); + ServletContext getServletContext(); + ServletInputStream getInputStream(); + String getCharacterEncoding(); + String getContentType(); + String getLocalAddr(); + String getLocalName(); + String getParameter(String p0); + String getProtocol(); + String getProtocolRequestId(); + String getRemoteAddr(); + String getRemoteHost(); + String getRequestId(); + String getScheme(); + String getServerName(); + String[] getParameterValues(String p0); + boolean isAsyncStarted(); + boolean isAsyncSupported(); + boolean isSecure(); + int getContentLength(); + int getLocalPort(); + int getRemotePort(); + int getServerPort(); + long getContentLengthLong(); + void removeAttribute(String p0); + void setAttribute(String p0, Object p1); + void setCharacterEncoding(String p0); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletResponse.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletResponse.java new file mode 100644 index 000000000000..05bcae9da5ab --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletResponse.java @@ -0,0 +1,27 @@ +// Generated automatically from jakarta.servlet.ServletResponse for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.ServletOutputStream; +import java.io.PrintWriter; +import java.util.Locale; + +public interface ServletResponse +{ + Locale getLocale(); + PrintWriter getWriter(); + ServletOutputStream getOutputStream(); + String getCharacterEncoding(); + String getContentType(); + boolean isCommitted(); + int getBufferSize(); + void flushBuffer(); + void reset(); + void resetBuffer(); + void setBufferSize(int p0); + void setCharacterEncoding(String p0); + void setContentLength(int p0); + void setContentLengthLong(long p0); + void setContentType(String p0); + void setLocale(Locale p0); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletSecurityElement.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletSecurityElement.java new file mode 100644 index 000000000000..c234a0d213cc --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/ServletSecurityElement.java @@ -0,0 +1,19 @@ +// Generated automatically from jakarta.servlet.ServletSecurityElement for testing purposes + +package jakarta.servlet; + +import jakarta.servlet.HttpConstraintElement; +import jakarta.servlet.HttpMethodConstraintElement; +import jakarta.servlet.annotation.ServletSecurity; +import java.util.Collection; + +public class ServletSecurityElement extends HttpConstraintElement +{ + public Collection getHttpMethodConstraints(){ return null; } + public Collection getMethodNames(){ return null; } + public ServletSecurityElement(){} + public ServletSecurityElement(Collection p0){} + public ServletSecurityElement(HttpConstraintElement p0){} + public ServletSecurityElement(HttpConstraintElement p0, Collection p1){} + public ServletSecurityElement(ServletSecurity p0){} +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/SessionCookieConfig.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/SessionCookieConfig.java new file mode 100644 index 000000000000..ed314f116335 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/SessionCookieConfig.java @@ -0,0 +1,26 @@ +// Generated automatically from jakarta.servlet.SessionCookieConfig for testing purposes + +package jakarta.servlet; + +import java.util.Map; + +public interface SessionCookieConfig +{ + Map getAttributes(); + String getAttribute(String p0); + String getComment(); + String getDomain(); + String getName(); + String getPath(); + boolean isHttpOnly(); + boolean isSecure(); + int getMaxAge(); + void setAttribute(String p0, String p1); + void setComment(String p0); + void setDomain(String p0); + void setHttpOnly(boolean p0); + void setMaxAge(int p0); + void setName(String p0); + void setPath(String p0); + void setSecure(boolean p0); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/SessionTrackingMode.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/SessionTrackingMode.java new file mode 100644 index 000000000000..cfb68be57738 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/SessionTrackingMode.java @@ -0,0 +1,10 @@ +// Generated automatically from jakarta.servlet.SessionTrackingMode for testing purposes + +package jakarta.servlet; + + +public enum SessionTrackingMode +{ + COOKIE, SSL, URL; + private SessionTrackingMode() {} +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/WriteListener.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/WriteListener.java new file mode 100644 index 000000000000..a15ca4a89e11 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/WriteListener.java @@ -0,0 +1,11 @@ +// Generated automatically from jakarta.servlet.WriteListener for testing purposes + +package jakarta.servlet; + +import java.util.EventListener; + +public interface WriteListener extends EventListener +{ + void onError(Throwable p0); + void onWritePossible(); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/annotation/HttpConstraint.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/annotation/HttpConstraint.java new file mode 100644 index 000000000000..674193af0684 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/annotation/HttpConstraint.java @@ -0,0 +1,18 @@ +// Generated automatically from jakarta.servlet.annotation.HttpConstraint for testing purposes + +package jakarta.servlet.annotation; + +import jakarta.servlet.annotation.ServletSecurity; +import java.lang.annotation.Annotation; +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +@Documented +@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) +public @interface HttpConstraint +{ + ServletSecurity.EmptyRoleSemantic value(); + ServletSecurity.TransportGuarantee transportGuarantee(); + String[] rolesAllowed(); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/annotation/HttpMethodConstraint.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/annotation/HttpMethodConstraint.java new file mode 100644 index 000000000000..4cf3c9359243 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/annotation/HttpMethodConstraint.java @@ -0,0 +1,19 @@ +// Generated automatically from jakarta.servlet.annotation.HttpMethodConstraint for testing purposes + +package jakarta.servlet.annotation; + +import jakarta.servlet.annotation.ServletSecurity; +import java.lang.annotation.Annotation; +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +@Documented +@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) +public @interface HttpMethodConstraint +{ + ServletSecurity.EmptyRoleSemantic emptyRoleSemantic(); + ServletSecurity.TransportGuarantee transportGuarantee(); + String value(); + String[] rolesAllowed(); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/annotation/MultipartConfig.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/annotation/MultipartConfig.java new file mode 100644 index 000000000000..3d9896318714 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/annotation/MultipartConfig.java @@ -0,0 +1,19 @@ +// Generated automatically from jakarta.servlet.annotation.MultipartConfig for testing purposes + +package jakarta.servlet.annotation; + +import java.lang.annotation.Annotation; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) +@Target(value={java.lang.annotation.ElementType.TYPE}) +public @interface MultipartConfig +{ + String location(); + int fileSizeThreshold(); + long maxFileSize(); + long maxRequestSize(); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/annotation/ServletSecurity.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/annotation/ServletSecurity.java new file mode 100644 index 000000000000..1819fbd07ae2 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/annotation/ServletSecurity.java @@ -0,0 +1,33 @@ +// Generated automatically from jakarta.servlet.annotation.ServletSecurity for testing purposes + +package jakarta.servlet.annotation; + +import jakarta.servlet.annotation.HttpConstraint; +import jakarta.servlet.annotation.HttpMethodConstraint; +import java.lang.annotation.Annotation; +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Documented +@Inherited +@Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) +@Target(value={java.lang.annotation.ElementType.TYPE}) +public @interface ServletSecurity +{ + HttpConstraint value(); + HttpMethodConstraint[] httpMethodConstraints(); + static public enum EmptyRoleSemantic + { + DENY, PERMIT; + private EmptyRoleSemantic() {} + } + static public enum TransportGuarantee + { + CONFIDENTIAL, NONE; + private TransportGuarantee() {} + } +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/descriptor/JspConfigDescriptor.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/descriptor/JspConfigDescriptor.java new file mode 100644 index 000000000000..eaa4ad0dc548 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/descriptor/JspConfigDescriptor.java @@ -0,0 +1,13 @@ +// Generated automatically from jakarta.servlet.descriptor.JspConfigDescriptor for testing purposes + +package jakarta.servlet.descriptor; + +import jakarta.servlet.descriptor.JspPropertyGroupDescriptor; +import jakarta.servlet.descriptor.TaglibDescriptor; +import java.util.Collection; + +public interface JspConfigDescriptor +{ + Collection getJspPropertyGroups(); + Collection getTaglibs(); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/descriptor/JspPropertyGroupDescriptor.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/descriptor/JspPropertyGroupDescriptor.java new file mode 100644 index 000000000000..f5abf48ff10b --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/descriptor/JspPropertyGroupDescriptor.java @@ -0,0 +1,22 @@ +// Generated automatically from jakarta.servlet.descriptor.JspPropertyGroupDescriptor for testing purposes + +package jakarta.servlet.descriptor; + +import java.util.Collection; + +public interface JspPropertyGroupDescriptor +{ + Collection getIncludeCodas(); + Collection getIncludePreludes(); + Collection getUrlPatterns(); + String getBuffer(); + String getDefaultContentType(); + String getDeferredSyntaxAllowedAsLiteral(); + String getElIgnored(); + String getErrorOnELNotFound(); + String getErrorOnUndeclaredNamespace(); + String getIsXml(); + String getPageEncoding(); + String getScriptingInvalid(); + String getTrimDirectiveWhitespaces(); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/descriptor/TaglibDescriptor.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/descriptor/TaglibDescriptor.java new file mode 100644 index 000000000000..ce54c9ca96d5 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/descriptor/TaglibDescriptor.java @@ -0,0 +1,10 @@ +// Generated automatically from jakarta.servlet.descriptor.TaglibDescriptor for testing purposes + +package jakarta.servlet.descriptor; + + +public interface TaglibDescriptor +{ + String getTaglibLocation(); + String getTaglibURI(); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/Cookie.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/Cookie.java new file mode 100644 index 000000000000..2ad1179a144f --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/Cookie.java @@ -0,0 +1,36 @@ +// Generated automatically from jakarta.servlet.http.Cookie for testing purposes + +package jakarta.servlet.http; + +import java.io.Serializable; +import java.util.Map; + +public class Cookie implements Cloneable, Serializable +{ + protected Cookie() {} + public Cookie(String p0, String p1){} + public Map getAttributes(){ return null; } + public Object clone(){ return null; } + public String getAttribute(String p0){ return null; } + public String getComment(){ return null; } + public String getDomain(){ return null; } + public String getName(){ return null; } + public String getPath(){ return null; } + public String getValue(){ return null; } + public String toString(){ return null; } + public boolean equals(Object p0){ return false; } + public boolean getSecure(){ return false; } + public boolean isHttpOnly(){ return false; } + public int getMaxAge(){ return 0; } + public int getVersion(){ return 0; } + public int hashCode(){ return 0; } + public void setAttribute(String p0, String p1){} + public void setComment(String p0){} + public void setDomain(String p0){} + public void setHttpOnly(boolean p0){} + public void setMaxAge(int p0){} + public void setPath(String p0){} + public void setSecure(boolean p0){} + public void setValue(String p0){} + public void setVersion(int p0){} +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpServletMapping.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpServletMapping.java new file mode 100644 index 000000000000..3b9ca6afbf2a --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpServletMapping.java @@ -0,0 +1,13 @@ +// Generated automatically from jakarta.servlet.http.HttpServletMapping for testing purposes + +package jakarta.servlet.http; + +import jakarta.servlet.http.MappingMatch; + +public interface HttpServletMapping +{ + MappingMatch getMappingMatch(); + String getMatchValue(); + String getPattern(); + String getServletName(); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpServletRequest.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpServletRequest.java new file mode 100644 index 000000000000..acaeba3253ac --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpServletRequest.java @@ -0,0 +1,59 @@ +// Generated automatically from jakarta.servlet.http.HttpServletRequest for testing purposes + +package jakarta.servlet.http; + +import jakarta.servlet.ServletRequest; +import jakarta.servlet.http.Cookie; +import jakarta.servlet.http.HttpServletMapping; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpSession; +import jakarta.servlet.http.HttpUpgradeHandler; +import jakarta.servlet.http.Part; +import jakarta.servlet.http.PushBuilder; +import java.security.Principal; +import java.util.Collection; +import java.util.Enumeration; +import java.util.Map; + +public interface HttpServletRequest extends ServletRequest +{ + T upgrade(java.lang.Class p0); + Collection getParts(); + Cookie[] getCookies(); + Enumeration getHeaderNames(); + Enumeration getHeaders(String p0); + HttpSession getSession(); + HttpSession getSession(boolean p0); + Part getPart(String p0); + Principal getUserPrincipal(); + String changeSessionId(); + String getAuthType(); + String getContextPath(); + String getHeader(String p0); + String getMethod(); + String getPathInfo(); + String getPathTranslated(); + String getQueryString(); + String getRemoteUser(); + String getRequestURI(); + String getRequestedSessionId(); + String getServletPath(); + StringBuffer getRequestURL(); + boolean authenticate(HttpServletResponse p0); + boolean isRequestedSessionIdFromCookie(); + boolean isRequestedSessionIdFromURL(); + boolean isRequestedSessionIdValid(); + boolean isUserInRole(String p0); + default HttpServletMapping getHttpServletMapping(){ return null; } + default Map getTrailerFields(){ return null; } + default PushBuilder newPushBuilder(){ return null; } + default boolean isTrailerFieldsReady(){ return false; } + int getIntHeader(String p0); + long getDateHeader(String p0); + static String BASIC_AUTH = null; + static String CLIENT_CERT_AUTH = null; + static String DIGEST_AUTH = null; + static String FORM_AUTH = null; + void login(String p0, String p1); + void logout(); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpServletResponse.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpServletResponse.java new file mode 100644 index 000000000000..92bf802235aa --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpServletResponse.java @@ -0,0 +1,74 @@ +// Generated automatically from jakarta.servlet.http.HttpServletResponse for testing purposes + +package jakarta.servlet.http; + +import jakarta.servlet.ServletResponse; +import jakarta.servlet.http.Cookie; +import java.util.Collection; +import java.util.Map; +import java.util.function.Supplier; + +public interface HttpServletResponse extends ServletResponse +{ + Collection getHeaderNames(); + Collection getHeaders(String p0); + String encodeRedirectURL(String p0); + String encodeURL(String p0); + String getHeader(String p0); + boolean containsHeader(String p0); + default Supplier> getTrailerFields(){ return null; } + default void setTrailerFields(Supplier> p0){} + int getStatus(); + static int SC_ACCEPTED = 0; + static int SC_BAD_GATEWAY = 0; + static int SC_BAD_REQUEST = 0; + static int SC_CONFLICT = 0; + static int SC_CONTINUE = 0; + static int SC_CREATED = 0; + static int SC_EXPECTATION_FAILED = 0; + static int SC_FORBIDDEN = 0; + static int SC_FOUND = 0; + static int SC_GATEWAY_TIMEOUT = 0; + static int SC_GONE = 0; + static int SC_HTTP_VERSION_NOT_SUPPORTED = 0; + static int SC_INTERNAL_SERVER_ERROR = 0; + static int SC_LENGTH_REQUIRED = 0; + static int SC_METHOD_NOT_ALLOWED = 0; + static int SC_MOVED_PERMANENTLY = 0; + static int SC_MOVED_TEMPORARILY = 0; + static int SC_MULTIPLE_CHOICES = 0; + static int SC_NON_AUTHORITATIVE_INFORMATION = 0; + static int SC_NOT_ACCEPTABLE = 0; + static int SC_NOT_FOUND = 0; + static int SC_NOT_IMPLEMENTED = 0; + static int SC_NOT_MODIFIED = 0; + static int SC_NO_CONTENT = 0; + static int SC_OK = 0; + static int SC_PARTIAL_CONTENT = 0; + static int SC_PAYMENT_REQUIRED = 0; + static int SC_PRECONDITION_FAILED = 0; + static int SC_PROXY_AUTHENTICATION_REQUIRED = 0; + static int SC_REQUESTED_RANGE_NOT_SATISFIABLE = 0; + static int SC_REQUEST_ENTITY_TOO_LARGE = 0; + static int SC_REQUEST_TIMEOUT = 0; + static int SC_REQUEST_URI_TOO_LONG = 0; + static int SC_RESET_CONTENT = 0; + static int SC_SEE_OTHER = 0; + static int SC_SERVICE_UNAVAILABLE = 0; + static int SC_SWITCHING_PROTOCOLS = 0; + static int SC_TEMPORARY_REDIRECT = 0; + static int SC_UNAUTHORIZED = 0; + static int SC_UNSUPPORTED_MEDIA_TYPE = 0; + static int SC_USE_PROXY = 0; + void addCookie(Cookie p0); + void addDateHeader(String p0, long p1); + void addHeader(String p0, String p1); + void addIntHeader(String p0, int p1); + void sendError(int p0); + void sendError(int p0, String p1); + void sendRedirect(String p0); + void setDateHeader(String p0, long p1); + void setHeader(String p0, String p1); + void setIntHeader(String p0, int p1); + void setStatus(int p0); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpSession.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpSession.java new file mode 100644 index 000000000000..0072d502ea6b --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpSession.java @@ -0,0 +1,22 @@ +// Generated automatically from jakarta.servlet.http.HttpSession for testing purposes + +package jakarta.servlet.http; + +import jakarta.servlet.ServletContext; +import java.util.Enumeration; + +public interface HttpSession +{ + Enumeration getAttributeNames(); + Object getAttribute(String p0); + ServletContext getServletContext(); + String getId(); + boolean isNew(); + int getMaxInactiveInterval(); + long getCreationTime(); + long getLastAccessedTime(); + void invalidate(); + void removeAttribute(String p0); + void setAttribute(String p0, Object p1); + void setMaxInactiveInterval(int p0); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpUpgradeHandler.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpUpgradeHandler.java new file mode 100644 index 000000000000..94f8655be0a4 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/HttpUpgradeHandler.java @@ -0,0 +1,11 @@ +// Generated automatically from jakarta.servlet.http.HttpUpgradeHandler for testing purposes + +package jakarta.servlet.http; + +import jakarta.servlet.http.WebConnection; + +public interface HttpUpgradeHandler +{ + void destroy(); + void init(WebConnection p0); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/MappingMatch.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/MappingMatch.java new file mode 100644 index 000000000000..0c5e2f93ff32 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/MappingMatch.java @@ -0,0 +1,10 @@ +// Generated automatically from jakarta.servlet.http.MappingMatch for testing purposes + +package jakarta.servlet.http; + + +public enum MappingMatch +{ + CONTEXT_ROOT, DEFAULT, EXACT, EXTENSION, PATH; + private MappingMatch() {} +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/Part.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/Part.java new file mode 100644 index 000000000000..37e83db3d079 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/Part.java @@ -0,0 +1,20 @@ +// Generated automatically from jakarta.servlet.http.Part for testing purposes + +package jakarta.servlet.http; + +import java.io.InputStream; +import java.util.Collection; + +public interface Part +{ + Collection getHeaderNames(); + Collection getHeaders(String p0); + InputStream getInputStream(); + String getContentType(); + String getHeader(String p0); + String getName(); + String getSubmittedFileName(); + long getSize(); + void delete(); + void write(String p0); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/PushBuilder.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/PushBuilder.java new file mode 100644 index 000000000000..0821bde70e89 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/PushBuilder.java @@ -0,0 +1,23 @@ +// Generated automatically from jakarta.servlet.http.PushBuilder for testing purposes + +package jakarta.servlet.http; + +import java.util.Set; + +public interface PushBuilder +{ + PushBuilder addHeader(String p0, String p1); + PushBuilder method(String p0); + PushBuilder path(String p0); + PushBuilder queryString(String p0); + PushBuilder removeHeader(String p0); + PushBuilder sessionId(String p0); + PushBuilder setHeader(String p0, String p1); + Set getHeaderNames(); + String getHeader(String p0); + String getMethod(); + String getPath(); + String getQueryString(); + String getSessionId(); + void push(); +} diff --git a/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/WebConnection.java b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/WebConnection.java new file mode 100644 index 000000000000..1a71a2c78ec6 --- /dev/null +++ b/java/ql/test/stubs/jakarta.servlet-api-6.0.0/jakarta/servlet/http/WebConnection.java @@ -0,0 +1,12 @@ +// Generated automatically from jakarta.servlet.http.WebConnection for testing purposes + +package jakarta.servlet.http; + +import jakarta.servlet.ServletInputStream; +import jakarta.servlet.ServletOutputStream; + +public interface WebConnection extends AutoCloseable +{ + ServletInputStream getInputStream(); + ServletOutputStream getOutputStream(); +}