diff --git a/documentation/jetty-documentation/src/main/asciidoc/old_docs/security/spnego-support.adoc b/documentation/jetty-documentation/src/main/asciidoc/old_docs/security/spnego-support.adoc index 9f3814d06c82..2efb7aee7971 100644 --- a/documentation/jetty-documentation/src/main/asciidoc/old_docs/security/spnego-support.adoc +++ b/documentation/jetty-documentation/src/main/asciidoc/old_docs/security/spnego-support.adoc @@ -70,11 +70,11 @@ embedded, via the `jetty.xml` or in a context file for the webapp. This is what the configuration within a context XML file would look like: -[source, xml, subs="{sub-order}"] +[source,xml,subs="{sub-order}"] ---- - + Test Realm diff --git a/documentation/jetty-documentation/src/main/asciidoc/operations-guide/jaas/chapter.adoc b/documentation/jetty-documentation/src/main/asciidoc/operations-guide/jaas/chapter.adoc index d22f6f666519..4ffcbae19912 100644 --- a/documentation/jetty-documentation/src/main/asciidoc/operations-guide/jaas/chapter.adoc +++ b/documentation/jetty-documentation/src/main/asciidoc/operations-guide/jaas/chapter.adoc @@ -56,7 +56,7 @@ See more about the contents of this file in the xref:og-jaas-loginconf[Configuri [[og-jaas-webapp]] ===== Configure the webapp for JAAS -The `` in `web.xml` will be used to identify the `org.eclipse.jetty.jaas.JAASLoginService` declaration that integrates JAAS with Jetty. +The `` in `web.xml` will be used to identify the `org.eclipse.jetty.security.jaas.JAASLoginService` declaration that integrates JAAS with Jetty. For example, this `web.xml` contains a realm called `Test JAAS Realm`: @@ -71,14 +71,14 @@ For example, this `web.xml` contains a realm called `Test JAAS Realm`: ---- -<1> The name of the realm, which must be _identical_ to the name of an `org.eclipse.jetty.jaas.JAASLoginService` declaration. +<1> The name of the realm, which must be _identical_ to the name of an `org.eclipse.jetty.security.jaas.JAASLoginService` declaration. -We now need to declare an `org.eclipse.jetty.jaas.JAASLoginService` that references the realm name of `Test JAAS Realm`. +We now need to declare an `org.eclipse.jetty.security.jaas.JAASLoginService` that references the realm name of `Test JAAS Realm`. Here's an example of a suitable XML snippet: [source,xml,subs=verbatim] ---- - + Test JAAS Realm xyz @@ -86,9 +86,9 @@ Here's an example of a suitable XML snippet: <1> The name is the _same_ as that declared in the `` in `web.xml`. <2> The name that identifies a set of `javax.security.auth.spi.LoginModule` configurations that comprise the xref:og-jaas-loginconf[JAAS config file] identified in the `jetty.jaas.login.conf` property of the xref:og-jaas-module[`jaas` module]. -The `org.eclipse.jetty.jaas.JAASLoginService` can be declared in a couple of different places, pick whichever suits your purposes best: +The `org.eclipse.jetty.security.jaas.JAASLoginService` can be declared in a couple of different places, pick whichever suits your purposes best: -* If you have more than one webapp that you would like to use the same security infrastructure, then you can declare your `org.eclipse.jetty.jaas.JAASLoginService` as a bean that is added to the `org.eclipse.jetty.server.Server`. +* If you have more than one webapp that you would like to use the same security infrastructure, then you can declare your `org.eclipse.jetty.security.jaas.JAASLoginService` as a bean that is added to the `org.eclipse.jetty.server.Server`. The file in which you declare this needs to be on Jetty's execution path. The recommended procedure is to create a file in your `$jetty.base/etc` directory and then ensure it is on the classpath either by adding it to the Jetty xref:og-start-jar[start command line], or more conveniently to a xref:custom-modules[custom module]. + @@ -101,7 +101,7 @@ Here's an example of this type of XML file: - + Test JAAS Realm xyz @@ -110,7 +110,7 @@ Here's an example of this type of XML file: ---- -* Alternatively, if you want to use JAAS with a specific webapp only, you declare your `org.eclipse.jetty.jaas.JAASLoginService` in a context XLM file specific to that webapp: +* Alternatively, if you want to use JAAS with a specific webapp only, you declare your `org.eclipse.jetty.security.jaas.JAASLoginService` in a context XLM file specific to that webapp: + [source,xml] ---- @@ -120,7 +120,7 @@ Here's an example of this type of XML file: - + Test JAAS Realm xyz @@ -145,7 +145,7 @@ xyz { <1> com.other.OtherLoginModule optional; <3> }; ---- -<1> The name of the configuration _exactly_ as specified in your `org.eclipse.jetty.jaas.JAASLoginService` declaration. +<1> The name of the configuration _exactly_ as specified in your `org.eclipse.jetty.security.jaas.JAASLoginService` declaration. <2> The first `LoginModule` declaration, containing the classname of the `LoginModule` and its configuration properties. <3> A second `LoginModule` declaration. You can provide as many `LoginModule` alternatives as you like, with a minimum of one. @@ -154,10 +154,10 @@ Refer to the link:https://docs.oracle.com/javase/7/docs/api/javax/security/auth/ [[og-jaas-loginmodules]] ==== Provided LoginModules -* link:{javadoc-url}/org/eclipse/jetty/jaas/spi/JDBCLoginModule.html[`org.eclipse.jetty.jaas.spi.JDBCLoginModule`] -* link:{javadoc-url}/org/eclipse/jetty/jaas/spi/PropertyFileLoginModule.html[`org.eclipse.jetty.jaas.spi.PropertyFileLoginModule`] -* link:{javadoc-url}/org/eclipse/jetty/jaas/spi/DataSourceLoginModule.html[`org.eclipse.jetty.jaas.spi.DataSourceLoginModule`] -* link:{javadoc-url}/org/eclipse/jetty/jaas/spi/LdapLoginModule.html[`org.eclipse.jetty.jaas.ldap.LdapLoginModule`] +* link:{javadoc-url}/org/eclipse/jetty/security/jaas/spi/JDBCLoginModule.html[`org.eclipse.jetty.security.jaas.spi.JDBCLoginModule`] +* link:{javadoc-url}/org/eclipse/jetty/security/jaas/spi/PropertyFileLoginModule.html[`org.eclipse.jetty.security.jaas.spi.PropertyFileLoginModule`] +* link:{javadoc-url}/org/eclipse/jetty/security/jaas/spi/DataSourceLoginModule.html[`org.eclipse.jetty.security.jaas.spi.DataSourceLoginModule`] +* link:{javadoc-url}/org/eclipse/jetty/security/jaas/spi/LdapLoginModule.html[`org.eclipse.jetty.security.jaas.ldap.LdapLoginModule`] [NOTE] ==== @@ -167,7 +167,7 @@ The class link:{javadoc-url}/org/eclipse/jetty/util/security/Password.html[`org. ===== JDBCLoginModule -The `org.eclipse.jetty.jaas.spi.JDBCLoginModule` stores user passwords and roles in a database accessed via JDBC calls. +The `org.eclipse.jetty.security.jaas.spi.JDBCLoginModule` stores user passwords and roles in a database accessed via JDBC calls. You can configure the JDBC connection information, as well as the names of the table and columns storing the username and credential, and the names of the table and columns storing the roles. Here is an example xref:og-jaas-loginconf[login module configuration file] entry for it using an HSQLDB driver: @@ -175,7 +175,7 @@ Here is an example xref:og-jaas-loginconf[login module configuration file] entry [source,subs=verbatim] ---- jdbc { <1> - org.eclipse.jetty.jaas.spi.JDBCLoginModule required <2><3> + org.eclipse.jetty.security.jaas.spi.JDBCLoginModule required <2><3> dbUrl="jdbc:hsqldb:." <4> dbUserName="sa" <5> dbDriver="org.hsqldb.jdbcDriver" <6> @@ -216,7 +216,7 @@ Note that passwords can be stored in the database in plain text or encoded forma ===== DataSourceLoginModule -Similar to the `org.eclipse.jetty.jaas.spi.JDBCLoginModule`, but using a `javax.sql.DataSource` to connect to the database instead of a JDBC driver. +Similar to the `org.eclipse.jetty.security.jaas.spi.JDBCLoginModule`, but using a `javax.sql.DataSource` to connect to the database instead of a JDBC driver. The `javax.sql.DataSource` is obtained at runtime by performing a JNDI lookup on `java:comp/env/${dnJNDIName}`. A sample login module configuration for this `LoginModule`: @@ -224,7 +224,7 @@ A sample login module configuration for this `LoginModule`: [source,subs=verbatim] ---- ds { <1> - org.eclipse.jetty.jaas.spi.DataSourceLoginModule required <2><3> + org.eclipse.jetty.security.jaas.spi.DataSourceLoginModule required <2><3> dbJNDIName="ds" <4> userTable="myusers" <5> userField="myuser" <6> @@ -252,7 +252,7 @@ With this login module implementation, the authentication and role information i [source,subs=verbatim] ---- props { <1> - org.eclipse.jetty.jaas.spi.PropertyFileLoginModule required <2><3> + org.eclipse.jetty.security.jaas.spi.PropertyFileLoginModule required <2><3> file="/somewhere/somefile.props"; <4> }; ---- @@ -281,7 +281,7 @@ The contents of the file are fully read in and cached in memory the first time a ===== LdapLoginModule -The `org.eclipse.jetty.jaas.spi.LdapLoginModule` uses LDAP to access authentication and authorization information stored in a directory. +The `org.eclipse.jetty.security.jaas.spi.LdapLoginModule` uses LDAP to access authentication and authorization information stored in a directory. The LDAP connection information and structure of the authentication/authorization data can be configured. Here's an example: @@ -289,7 +289,7 @@ Here's an example: [source,subs=verbatim] ---- example { <1> - org.eclipse.jetty.jaas.spi.LdapLoginModule required <2><3> + org.eclipse.jetty.security.jaas.spi.LdapLoginModule required <2><3> contextFactory="com.sun.jndi.ldap.LdapCtxFactory" <4> hostname="ldap.example.com" <5> port="389" <6> diff --git a/inceptionDates.csv b/inceptionDates.csv deleted file mode 100644 index 5c3d1ef87b6b..000000000000 --- a/inceptionDates.csv +++ /dev/null @@ -1,4864 +0,0 @@ -jetty-ee8/jetty-ee8-maven-plugin/src/it/jetty-start-mojo-multi-module-single-war-it/common/src/main/java/mca/common/CommonService.java, 2012-11-02 -jetty-ee8/jetty-ee8-maven-plugin/src/it/jetty-start-mojo-multi-module-single-war-it/module/module-impl/src/main/java/mca/module/ModuleImpl.java, 2009-03-24 -jetty-ee8/jetty-ee8-maven-plugin/src/it/jetty-start-mojo-multi-module-single-war-it/module/module-api/src/main/java/mca/module/ModuleApi.java, 2012-11-02 -jetty-ee8/jetty-ee8-maven-plugin/src/it/jetty-start-mojo-multi-module-single-war-it/webapp-war/src/main/java/mca/webapp/WebAppServletListener.java, 2011-12-14 -jetty-ee8/jetty-ee8-maven-plugin/src/it/jetty-start-war-distro-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_run_mojo_it/HelloServlet.java, 2011-12-14 -jetty-ee8/jetty-ee8-maven-plugin/src/it/jetty-start-war-distro-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_run_mojo_it/PingServlet.java, 2011-12-14 -jetty-ee8/jetty-ee8-maven-plugin/src/it/jetty-cdi-start-forked/src/main/java/test/Greeter.java, 2011-12-14 -jetty-ee8/jetty-ee8-maven-plugin/src/it/jetty-start-war-forked-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_run_war_exploded_mojo_it/HelloServlet.java, 2011-12-14 -jetty-ee8/jetty-ee8-maven-plugin/src/it/jetty-start-war-forked-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_run_war_exploded_mojo_it/PingServlet.java, 2011-12-14 -jetty-ee8/jetty-ee8-maven-plugin/src/it/jetty-start-distro-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_start_distro_mojo_it/HelloServlet.java, 2011-12-14 -jetty-ee8/jetty-ee8-maven-plugin/src/it/jetty-start-distro-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_start_distro_mojo_it/PingServlet.java, 2011-12-14 -jetty-ee8/jetty-ee8-maven-plugin/src/it/jetty-start-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_start_mojo_it/HelloServlet.java, 2011-12-14 -jetty-ee8/jetty-ee8-maven-plugin/src/it/jetty-start-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_start_mojo_it/Counter.java, 2009-03-24 -jetty-ee8/jetty-ee8-maven-plugin/src/it/jetty-start-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_start_mojo_it/PingServlet.java, 2011-12-14 -jetty-ee8/jetty-ee8-maven-plugin/src/it/jetty-start-forked-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_start_forked/HelloServlet.java, 2011-12-14 -jetty-ee8/jetty-ee8-maven-plugin/src/it/jetty-start-forked-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_start_forked/Counter.java, 2009-03-24 -jetty-ee8/jetty-ee8-maven-plugin/src/it/jetty-start-forked-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_start_forked/PingServlet.java, 2011-12-14 -jetty-ee8/jetty-ee8-maven-plugin/src/it/jetty-effective-web-xml-it/webapp-war/src/main/java/WebAppServletListener.java, 2022-11-21 -jetty-ee8/jetty-ee8-maven-plugin/src/it/jetty-effective-web-xml-it/resources/src/main/java/Placeholder.java, 2022-11-21 -jetty-ee8/jetty-ee8-maven-plugin/src/it/jetty-run-mojo-jar-scan-it/MyWebApp/src/main/java/jettyissue/NormalClass.java, 2012-11-02 -jetty-ee8/jetty-ee8-maven-plugin/src/it/jetty-run-mojo-jar-scan-it/MyLibrary/src/main/java/jettyissue/MyAnnotation.java, 2012-11-02 -jetty-ee8/jetty-ee8-maven-plugin/src/it/jetty-run-mojo-jar-scan-it/MyLibrary/src/main/java/jettyissue/MyServletContainerInitializer.java, 2012-07-10 -jetty-ee8/jetty-ee8-maven-plugin/src/it/jetty-start-gwt-it/beer-shared/src/main/java/org/olamy/GreetingResponse.java, 2011-03-29 -jetty-ee8/jetty-ee8-maven-plugin/src/it/jetty-start-gwt-it/beer-shared/src/main/java/org/olamy/FieldVerifier.java, 2018-05-05 -jetty-ee8/jetty-ee8-maven-plugin/src/it/jetty-start-gwt-it/beer-shared/src/main/java/org/olamy/GreetingServiceAsync.java, 2009-03-24 -jetty-ee8/jetty-ee8-maven-plugin/src/it/jetty-start-gwt-it/beer-shared/src/main/java/org/olamy/GreetingService.java, 2009-03-24 -jetty-ee8/jetty-ee8-maven-plugin/src/it/jetty-start-gwt-it/beer-server/src/main/java/org/olamy/GreetingServiceImpl.java, 2012-07-27 -jetty-ee8/jetty-ee8-maven-plugin/src/it/jetty-start-gwt-it/beer-client/src/main/java/org/olamy/App.java, 2018-05-05 -jetty-ee8/jetty-ee8-maven-plugin/src/it/jetty-maven-plugin-provided-module-dep/web/src/main/java/test/ClassLoadingTestingServletContextListener.java, 2009-03-24 -jetty-ee8/jetty-ee8-maven-plugin/src/it/jetty-maven-plugin-provided-module-dep/api/src/main/java/test/Api.java, 2012-11-02 -jetty-ee9/jetty-ee9-ant/src/test/java/org/eclipse/jetty/ee9/ant/AntBuild.java, 2012-11-15 -jetty-ee9/jetty-ee9-ant/src/test/java/org/eclipse/jetty/ee9/ant/JettyAntTaskTest.java, 2012-10-26 -jetty-ee9/jetty-ee9-ant/src/main/java/org/eclipse/jetty/ee9/ant/types/FileMatchingConfiguration.java, 2012-08-21 -jetty-ee9/jetty-ee9-ant/src/main/java/org/eclipse/jetty/ee9/ant/types/Attributes.java, 2012-07-09 -jetty-ee9/jetty-ee9-ant/src/main/java/org/eclipse/jetty/ee9/ant/types/Connectors.java, 2012-08-21 -jetty-ee9/jetty-ee9-ant/src/main/java/org/eclipse/jetty/ee9/ant/types/SystemProperties.java, 2012-08-21 -jetty-ee9/jetty-ee9-ant/src/main/java/org/eclipse/jetty/ee9/ant/types/ContextHandlers.java, 2012-06-27 -jetty-ee9/jetty-ee9-ant/src/main/java/org/eclipse/jetty/ee9/ant/types/package-info.java, 2012-11-02 -jetty-ee9/jetty-ee9-ant/src/main/java/org/eclipse/jetty/ee9/ant/types/Connector.java, 2011-09-12 -jetty-ee9/jetty-ee9-ant/src/main/java/org/eclipse/jetty/ee9/ant/types/Attribute.java, 2011-09-12 -jetty-ee9/jetty-ee9-ant/src/main/java/org/eclipse/jetty/ee9/ant/types/LoginServices.java, 2009-03-24 -jetty-ee9/jetty-ee9-ant/src/main/java/org/eclipse/jetty/ee9/ant/AntMetaInfConfiguration.java, 2016-05-02 -jetty-ee9/jetty-ee9-ant/src/main/java/org/eclipse/jetty/ee9/ant/JettyRunTask.java, 2012-08-21 -jetty-ee9/jetty-ee9-ant/src/main/java/org/eclipse/jetty/ee9/ant/AntWebXmlConfiguration.java, 2012-08-21 -jetty-ee9/jetty-ee9-ant/src/main/java/org/eclipse/jetty/ee9/ant/JettyStopTask.java, 2012-12-07 -jetty-ee9/jetty-ee9-ant/src/main/java/org/eclipse/jetty/ee9/ant/AntWebInfConfiguration.java, 2012-08-21 -jetty-ee9/jetty-ee9-ant/src/main/java/org/eclipse/jetty/ee9/ant/package-info.java, 2012-11-02 -jetty-ee9/jetty-ee9-ant/src/main/java/org/eclipse/jetty/ee9/ant/ServerProxyImpl.java, 2012-08-21 -jetty-ee9/jetty-ee9-ant/src/main/java/org/eclipse/jetty/ee9/ant/utils/TaskLog.java, 2012-07-06 -jetty-ee9/jetty-ee9-ant/src/main/java/org/eclipse/jetty/ee9/ant/utils/ServerProxy.java, 2012-05-08 -jetty-ee9/jetty-ee9-ant/src/main/java/org/eclipse/jetty/ee9/ant/utils/package-info.java, 2012-11-02 -jetty-ee9/jetty-ee9-ant/src/main/java/org/eclipse/jetty/ee9/ant/AntWebAppContext.java, 2012-12-07 -jetty-ee9/jetty-ee9-webapp/src/test/java/org/acme/webapp/ClassInJarA.java, 2009-12-10 -jetty-ee9/jetty-ee9-webapp/src/test/java/org/acme/webapp/TestAnnotation.java, 2009-03-24 -jetty-ee9/jetty-ee9-webapp/src/test/java/org/eclipse/jetty/ee9/webapp/WebInfConfigurationTest.java, 2017-11-15 -jetty-ee9/jetty-ee9-webapp/src/test/java/org/eclipse/jetty/ee9/webapp/OrderingTest.java, 2010-07-16 -jetty-ee9/jetty-ee9-webapp/src/test/java/org/eclipse/jetty/ee9/webapp/MetaInfConfigurationTest.java, 2017-04-13 -jetty-ee9/jetty-ee9-webapp/src/test/java/org/eclipse/jetty/ee9/webapp/TestMetaData.java, 2020-03-09 -jetty-ee9/jetty-ee9-webapp/src/test/java/org/eclipse/jetty/ee9/webapp/WebAppContextTest.java, 2010-04-22 -jetty-ee9/jetty-ee9-webapp/src/test/java/org/eclipse/jetty/ee9/webapp/ClassMatcherTest.java, 2015-06-18 -jetty-ee9/jetty-ee9-webapp/src/test/java/org/eclipse/jetty/ee9/webapp/WebAppDefaultServletTest.java, 2021-05-13 -jetty-ee9/jetty-ee9-webapp/src/test/java/org/eclipse/jetty/ee9/webapp/TempDirTest.java, 2021-04-30 -jetty-ee9/jetty-ee9-webapp/src/test/java/org/eclipse/jetty/ee9/webapp/WebAppClassLoaderUrlStreamTest.java, 2017-04-04 -jetty-ee9/jetty-ee9-webapp/src/test/java/org/eclipse/jetty/ee9/webapp/ConfigurationsTest.java, 2016-05-02 -jetty-ee9/jetty-ee9-webapp/src/test/java/org/eclipse/jetty/ee9/webapp/HugeResourceTest.java, 2019-07-18 -jetty-ee9/jetty-ee9-webapp/src/test/java/org/eclipse/jetty/ee9/webapp/ForcedServletTest.java, 2021-05-16 -jetty-ee9/jetty-ee9-webapp/src/test/java/org/eclipse/jetty/ee9/webapp/WebDescriptorTest.java, 2022-08-01 -jetty-ee9/jetty-ee9-webapp/src/test/java/org/eclipse/jetty/ee9/webapp/StandardDescriptorProcessorTest.java, 2010-01-26 -jetty-ee9/jetty-ee9-webapp/src/test/java/org/eclipse/jetty/ee9/webapp/URLStreamHandlerUtil.java, 2017-04-04 -jetty-ee9/jetty-ee9-webapp/src/test/java/org/eclipse/jetty/ee9/webapp/WebAppClassLoaderTest.java, 2009-12-10 -jetty-ee9/jetty-ee9-webapp/src/main/java/module-info.java, 2022-05-03 -jetty-ee9/jetty-ee9-webapp/src/main/java/org/eclipse/jetty/ee9/webapp/OverrideDescriptor.java, 2009-03-24 -jetty-ee9/jetty-ee9-webapp/src/main/java/org/eclipse/jetty/ee9/webapp/JndiConfiguration.java, 2009-03-24 -jetty-ee9/jetty-ee9-webapp/src/main/java/org/eclipse/jetty/ee9/webapp/JspConfiguration.java, 2016-05-02 -jetty-ee9/jetty-ee9-webapp/src/main/java/org/eclipse/jetty/ee9/webapp/WebAppContext.java, 2003-06-30 -jetty-ee9/jetty-ee9-webapp/src/main/java/org/eclipse/jetty/ee9/webapp/MetaData.java, 2010-07-16 -jetty-ee9/jetty-ee9-webapp/src/main/java/org/eclipse/jetty/ee9/webapp/RelativeOrdering.java, 2015-06-25 -jetty-ee9/jetty-ee9-webapp/src/main/java/org/eclipse/jetty/ee9/webapp/DescriptorProcessor.java, 2009-03-24 -jetty-ee9/jetty-ee9-webapp/src/main/java/org/eclipse/jetty/ee9/webapp/AbstractConfiguration.java, 2010-07-26 -jetty-ee9/jetty-ee9-webapp/src/main/java/org/eclipse/jetty/ee9/webapp/Descriptor.java, 2010-07-16 -jetty-ee9/jetty-ee9-webapp/src/main/java/org/eclipse/jetty/ee9/webapp/MetaInfConfiguration.java, 2009-05-19 -jetty-ee9/jetty-ee9-webapp/src/main/java/org/eclipse/jetty/ee9/webapp/Origin.java, 2011-03-25 -jetty-ee9/jetty-ee9-webapp/src/main/java/org/eclipse/jetty/ee9/webapp/JettyWebXmlConfiguration.java, 2005-11-27 -jetty-ee9/jetty-ee9-webapp/src/main/java/org/eclipse/jetty/ee9/webapp/WebXmlConfiguration.java, 2005-11-27 -jetty-ee9/jetty-ee9-webapp/src/main/java/org/eclipse/jetty/ee9/webapp/Ordering.java, 2010-07-16 -jetty-ee9/jetty-ee9-webapp/src/main/java/org/eclipse/jetty/ee9/webapp/FragmentDescriptor.java, 2010-07-16 -jetty-ee9/jetty-ee9-webapp/src/main/java/org/eclipse/jetty/ee9/webapp/Configuration.java, 2006-02-19 -jetty-ee9/jetty-ee9-webapp/src/main/java/org/eclipse/jetty/ee9/webapp/DecoratingListener.java, 2019-08-08 -jetty-ee9/jetty-ee9-webapp/src/main/java/org/eclipse/jetty/ee9/webapp/WebAppClassLoader.java, 2005-11-27 -jetty-ee9/jetty-ee9-webapp/src/main/java/org/eclipse/jetty/ee9/webapp/ClassMatcher.java, 2010-04-13 -jetty-ee9/jetty-ee9-webapp/src/main/java/org/eclipse/jetty/ee9/webapp/DefaultsDescriptor.java, 2009-03-24 -jetty-ee9/jetty-ee9-webapp/src/main/java/org/eclipse/jetty/ee9/webapp/ServletsConfiguration.java, 2009-03-24 -jetty-ee9/jetty-ee9-webapp/src/main/java/org/eclipse/jetty/ee9/webapp/JaasConfiguration.java, 2009-03-24 -jetty-ee9/jetty-ee9-webapp/src/main/java/org/eclipse/jetty/ee9/webapp/FragmentConfiguration.java, 2009-05-19 -jetty-ee9/jetty-ee9-webapp/src/main/java/org/eclipse/jetty/ee9/webapp/DiscoveredAnnotation.java, 2010-07-16 -jetty-ee9/jetty-ee9-webapp/src/main/java/org/eclipse/jetty/ee9/webapp/WebInfConfiguration.java, 2006-02-23 -jetty-ee9/jetty-ee9-webapp/src/main/java/org/eclipse/jetty/ee9/webapp/package-info.java, 2011-03-25 -jetty-ee9/jetty-ee9-webapp/src/main/java/org/eclipse/jetty/ee9/webapp/IterativeDescriptorProcessor.java, 2010-07-16 -jetty-ee9/jetty-ee9-webapp/src/main/java/org/eclipse/jetty/ee9/webapp/JmxConfiguration.java, 2010-07-26 -jetty-ee9/jetty-ee9-webapp/src/main/java/org/eclipse/jetty/ee9/webapp/WebAppConfiguration.java, 2010-07-26 -jetty-ee9/jetty-ee9-webapp/src/main/java/org/eclipse/jetty/ee9/webapp/Configurations.java, 2016-05-02 -jetty-ee9/jetty-ee9-webapp/src/main/java/org/eclipse/jetty/ee9/webapp/JaspiConfiguration.java, 2009-03-24 -jetty-ee9/jetty-ee9-webapp/src/main/java/org/eclipse/jetty/ee9/webapp/StandardDescriptorProcessor.java, 2010-07-16 -jetty-ee9/jetty-ee9-webapp/src/main/java/org/eclipse/jetty/ee9/webapp/AbsoluteOrdering.java, 2015-06-25 -jetty-ee9/jetty-ee9-webapp/src/main/java/org/eclipse/jetty/ee9/webapp/WebDescriptor.java, 2010-07-16 -jetty-ee9/jetty-ee9-webapp/src/main/java/org/eclipse/jetty/ee9/webapp/CachingWebAppClassLoader.java, 2015-10-26 -jetty-ee9/jetty-ee9-servlets/src/test/java/org/eclipse/jetty/ee9/servlets/CrossOriginFilterTest.java, 2011-10-19 -jetty-ee9/jetty-ee9-servlets/src/test/java/org/eclipse/jetty/ee9/servlets/DoSFilterJMXTest.java, 2013-02-27 -jetty-ee9/jetty-ee9-servlets/src/test/java/org/eclipse/jetty/ee9/servlets/HeaderFilterTest.java, 2017-06-13 -jetty-ee9/jetty-ee9-servlets/src/test/java/org/eclipse/jetty/ee9/servlets/AbstractFileContentServlet.java, 2014-11-13 -jetty-ee9/jetty-ee9-servlets/src/test/java/org/eclipse/jetty/ee9/servlets/GzipContentLengthTest.java, 2011-08-11 -jetty-ee9/jetty-ee9-servlets/src/test/java/org/eclipse/jetty/ee9/servlets/BlockingServletStreamTypeLengthWrite.java, 2011-08-11 -jetty-ee9/jetty-ee9-servlets/src/test/java/org/eclipse/jetty/ee9/servlets/AsyncTimeoutCompleteWrite.java, 2015-03-26 -jetty-ee9/jetty-ee9-servlets/src/test/java/org/eclipse/jetty/ee9/servlets/BlockingServletLengthStreamTypeWrite.java, 2011-08-11 -jetty-ee9/jetty-ee9-servlets/src/test/java/org/eclipse/jetty/ee9/servlets/QoSFilterTest.java, 2009-03-24 -jetty-ee9/jetty-ee9-servlets/src/test/java/org/eclipse/jetty/ee9/servlets/NoOpOutputStream.java, 2011-08-11 -jetty-ee9/jetty-ee9-servlets/src/test/java/org/eclipse/jetty/ee9/servlets/BlockingServletTypeStreamLengthWrite.java, 2011-08-11 -jetty-ee9/jetty-ee9-servlets/src/test/java/org/eclipse/jetty/ee9/servlets/PassThruInputStream.java, 2016-01-04 -jetty-ee9/jetty-ee9-servlets/src/test/java/org/eclipse/jetty/ee9/servlets/EventSourceServletTest.java, 2013-01-31 -jetty-ee9/jetty-ee9-servlets/src/test/java/org/eclipse/jetty/ee9/servlets/BlockingServletLengthTypeStreamWrite.java, 2011-08-11 -jetty-ee9/jetty-ee9-servlets/src/test/java/org/eclipse/jetty/ee9/servlets/BlockingServletStreamLengthTypeWrite.java, 2011-08-11 -jetty-ee9/jetty-ee9-servlets/src/test/java/org/eclipse/jetty/ee9/servlets/DoSFilterTest.java, 2009-05-26 -jetty-ee9/jetty-ee9-servlets/src/test/java/org/eclipse/jetty/ee9/servlets/GzipHandlerNoReCompressTest.java, 2020-04-14 -jetty-ee9/jetty-ee9-servlets/src/test/java/org/eclipse/jetty/ee9/servlets/AsyncManipFilter.java, 2016-01-04 -jetty-ee9/jetty-ee9-servlets/src/test/java/org/eclipse/jetty/ee9/servlets/GzipDefaultServletDeferredContentTypeTest.java, 2020-04-14 -jetty-ee9/jetty-ee9-servlets/src/test/java/org/eclipse/jetty/ee9/servlets/HttpOutputWriteFileContentServlet.java, 2011-08-11 -jetty-ee9/jetty-ee9-servlets/src/test/java/org/eclipse/jetty/ee9/servlets/CloseableDoSFilterTest.java, 2009-05-26 -jetty-ee9/jetty-ee9-servlets/src/test/java/org/eclipse/jetty/ee9/servlets/AsyncScheduledDispatchWrite.java, 2016-01-04 -jetty-ee9/jetty-ee9-servlets/src/test/java/org/eclipse/jetty/ee9/servlets/ThreadStarvationTest.java, 2015-10-07 -jetty-ee9/jetty-ee9-servlets/src/test/java/org/eclipse/jetty/ee9/servlets/BlockingServletTypeLengthStreamWrite.java, 2011-08-11 -jetty-ee9/jetty-ee9-servlets/src/test/java/org/eclipse/jetty/ee9/servlets/TestMinGzipSizeServlet.java, 2011-12-08 -jetty-ee9/jetty-ee9-servlets/src/test/java/org/eclipse/jetty/ee9/servlets/BlockingServletStreamLengthTypeWriteWithFlush.java, 2011-08-11 -jetty-ee9/jetty-ee9-servlets/src/test/java/org/eclipse/jetty/ee9/servlets/IncludeExcludeBasedFilterTest.java, 2017-06-13 -jetty-ee9/jetty-ee9-servlets/src/test/java/org/eclipse/jetty/ee9/servlets/AsyncTimeoutDispatchWrite.java, 2016-01-04 -jetty-ee9/jetty-ee9-servlets/src/test/java/org/eclipse/jetty/ee9/servlets/GzipDefaultServletTest.java, 2020-04-14 -jetty-ee9/jetty-ee9-servlets/src/test/java/org/eclipse/jetty/ee9/servlets/AbstractDoSFilterTest.java, 2009-05-26 -jetty-ee9/jetty-ee9-servlets/src/test/java/org/eclipse/jetty/ee9/servlets/GzipHandlerTest.java, 2020-04-14 -jetty-ee9/jetty-ee9-servlets/src/test/java/org/eclipse/jetty/ee9/servlets/TestStaticMimeTypeServlet.java, 2011-08-12 -jetty-ee9/jetty-ee9-servlets/src/test/java/org/eclipse/jetty/ee9/servlets/AbstractGzipTest.java, 2020-04-14 -jetty-ee9/jetty-ee9-servlets/src/main/java/module-info.java, 2013-07-12 -jetty-ee9/jetty-ee9-servlets/src/main/java/org/eclipse/jetty/ee9/servlets/EventSourceServlet.java, 2013-01-31 -jetty-ee9/jetty-ee9-servlets/src/main/java/org/eclipse/jetty/ee9/servlets/HeaderFilter.java, 2017-06-13 -jetty-ee9/jetty-ee9-servlets/src/main/java/org/eclipse/jetty/ee9/servlets/QoSFilter.java, 2009-03-24 -jetty-ee9/jetty-ee9-servlets/src/main/java/org/eclipse/jetty/ee9/servlets/CGI.java, 2009-03-24 -jetty-ee9/jetty-ee9-servlets/src/main/java/org/eclipse/jetty/ee9/servlets/CrossOriginFilter.java, 2009-07-29 -jetty-ee9/jetty-ee9-servlets/src/main/java/org/eclipse/jetty/ee9/servlets/CloseableDoSFilter.java, 2009-05-26 -jetty-ee9/jetty-ee9-servlets/src/main/java/org/eclipse/jetty/ee9/servlets/IncludeExcludeBasedFilter.java, 2017-06-13 -jetty-ee9/jetty-ee9-servlets/src/main/java/org/eclipse/jetty/ee9/servlets/PushCacheFilter.java, 2014-08-08 -jetty-ee9/jetty-ee9-servlets/src/main/java/org/eclipse/jetty/ee9/servlets/package-info.java, 2012-11-02 -jetty-ee9/jetty-ee9-servlets/src/main/java/org/eclipse/jetty/ee9/servlets/DoSFilter.java, 2009-05-26 -jetty-ee9/jetty-ee9-servlets/src/main/java/org/eclipse/jetty/ee9/servlets/PushSessionCacheFilter.java, 2014-12-05 -jetty-ee9/jetty-ee9-servlets/src/main/java/org/eclipse/jetty/ee9/servlets/EventSource.java, 2013-01-31 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-mock-resources/src/main/java/org/example/MockUserTransaction.java, 2012-11-02 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-mock-resources/src/main/java/org/example/MockDataSource.java, 2012-11-02 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-mock-resources/src/main/java/org/example/MockTransport.java, 2012-08-09 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-simple-webapp/src/main/java/org/eclipse/jetty/ee9/demo/simple/HelloWorldServlet.java, 2011-12-14 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-proxy-webapp/src/test/java/org/eclipse/jetty/ee9/demos/ProxyWebAppTest.java, 2020-09-28 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jsp-webapp/src/main/java/org/example/TagListener.java, 2009-03-24 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jsp-webapp/src/main/java/org/example/Date2Tag.java, 2010-04-20 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jsp-webapp/src/main/java/org/example/Counter.java, 2009-03-24 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jsp-webapp/src/main/java/org/example/DateTag.java, 2010-04-20 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-async-rest/jetty-ee9-demo-async-rest-jar/src/main/java/org/eclipse/jetty/ee9/demos/AbstractRestServlet.java, 2011-07-07 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-async-rest/jetty-ee9-demo-async-rest-jar/src/main/java/org/eclipse/jetty/ee9/demos/AsyncRestServlet.java, 2011-07-07 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-async-rest/jetty-ee9-demo-async-rest-jar/src/main/java/org/eclipse/jetty/ee9/demos/SerialRestServlet.java, 2011-07-07 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-async-rest/jetty-ee9-demo-async-rest-server/src/test/java/org/eclipse/jetty/ee9/demos/AsyncRestServer.java, 2011-07-07 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-spec/jetty-ee9-demo-web-fragment/src/main/java/org/example/fragment/FragmentServlet.java, 2009-03-24 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-spec/jetty-ee9-demo-container-initializer/src/main/java/org/example/initializer/FooInitializer.java, 2012-11-02 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-spec/jetty-ee9-demo-container-initializer/src/main/java/org/example/initializer/Foo.java, 2012-11-02 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-spec/jetty-ee9-demo-spec-webapp/src/main/java/org/example/test/RoleAnnotationTest.java, 2012-11-02 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-spec/jetty-ee9-demo-spec-webapp/src/main/java/org/example/test/Bar.java, 2012-11-02 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-spec/jetty-ee9-demo-spec-webapp/src/main/java/org/example/test/SecuredServlet.java, 2012-11-02 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-spec/jetty-ee9-demo-spec-webapp/src/main/java/org/example/test/AsyncListenerServlet.java, 2013-05-06 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-spec/jetty-ee9-demo-spec-webapp/src/main/java/org/example/test/AnnotationTest.java, 2012-11-02 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-spec/jetty-ee9-demo-spec-webapp/src/main/java/org/example/test/AnnotatedListener.java, 2012-11-02 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-spec/jetty-ee9-demo-spec-webapp/src/main/java/org/example/test/ClassLoaderServlet.java, 2019-03-26 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-spec/jetty-ee9-demo-spec-webapp/src/main/java/org/example/test/TestListener.java, 2012-11-02 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-spec/jetty-ee9-demo-spec-webapp/src/main/java/org/example/test/MultiPartTest.java, 2012-11-02 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jetty-webapp/src/test/java/org/eclipse/jetty/ee9/DispatchServletTest.java, 2009-04-21 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jetty-webapp/src/test/java/org/eclipse/jetty/ee9/ChatServletTest.java, 2013-06-13 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jetty-webapp/src/main/java/org/example/Dump.java, 2009-03-24 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jetty-webapp/src/main/java/org/example/SecureModeServlet.java, 2009-08-24 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jetty-webapp/src/main/java/org/example/HelloWorld.java, 2009-03-24 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jetty-webapp/src/main/java/org/example/TestFilter.java, 2009-03-24 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jetty-webapp/src/main/java/org/example/SessionDump.java, 2009-03-24 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jetty-webapp/src/main/java/org/example/CookieDump.java, 2009-03-24 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jetty-webapp/src/main/java/org/example/AddListServletRequestListener.java, 2012-07-12 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jetty-webapp/src/main/java/org/example/RewriteServlet.java, 2009-10-07 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jetty-webapp/src/main/java/org/example/WebSocketChatServlet.java, 2009-11-23 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jetty-webapp/src/main/java/org/example/TestServlet.java, 2011-12-14 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jetty-webapp/src/main/java/org/example/LoginServlet.java, 2012-10-12 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jetty-webapp/src/main/java/org/example/DispatchServlet.java, 2009-03-24 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jetty-webapp/src/main/java/org/example/ChatServlet.java, 2009-03-24 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jetty-webapp/src/main/java/org/example/RegTest.java, 2012-09-29 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jetty-webapp/src/main/java/org/example/JakartaWebSocketChat.java, 2020-09-25 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jetty-webapp/src/main/java/org/example/TestListener.java, 2009-03-24 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jndi-webapp/src/main/java/org/example/JNDITest.java, 2012-11-02 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/test/java/org/eclipse/jetty/ee9/demos/OneServletContextTest.java, 2019-09-04 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/test/java/org/eclipse/jetty/ee9/demos/OneWebAppWithJspTest.java, 2019-09-04 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/test/java/org/eclipse/jetty/ee9/demos/OneServletContextJmxStatsTest.java, 2019-09-04 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/test/java/org/eclipse/jetty/ee9/demos/OneServletContextWithSessionTest.java, 2019-09-04 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/test/java/org/eclipse/jetty/ee9/demos/SecuredHelloHandlerTest.java, 2019-09-04 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/test/java/org/eclipse/jetty/ee9/demos/WebSocketServerTest.java, 2019-09-09 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/test/java/org/eclipse/jetty/ee9/demos/FileServerTest.java, 2019-09-04 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/test/java/org/eclipse/jetty/ee9/demos/FastFileServerTest.java, 2019-09-04 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/test/java/org/eclipse/jetty/ee9/demos/MinimalServletsTest.java, 2019-09-04 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/test/java/org/eclipse/jetty/ee9/demos/RewriteServerTest.java, 2019-09-04 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/test/java/org/eclipse/jetty/ee9/demos/ManyHandlersTest.java, 2019-08-30 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/test/java/org/eclipse/jetty/ee9/demos/ManyConnectorsTest.java, 2019-09-04 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/test/java/org/eclipse/jetty/ee9/demos/LikeJettyXmlTest.java, 2019-09-04 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/test/java/org/eclipse/jetty/ee9/demos/OneContextTest.java, 2019-09-04 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/test/java/org/eclipse/jetty/ee9/demos/SimplestServerTest.java, 2019-09-04 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/test/java/org/eclipse/jetty/ee9/demos/FileServerXmlTest.java, 2019-09-04 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/test/java/org/eclipse/jetty/ee9/demos/AbstractEmbeddedTest.java, 2019-02-11 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/test/java/org/eclipse/jetty/ee9/demos/SplitFileServerTest.java, 2019-09-04 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/test/java/org/eclipse/jetty/ee9/demos/ServerUtil.java, 2019-09-04 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/test/java/org/eclipse/jetty/ee9/demos/OneWebAppTest.java, 2019-09-04 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/test/java/org/eclipse/jetty/ee9/demos/ServerWithAnnotationsTest.java, 2019-09-04 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/test/java/org/eclipse/jetty/ee9/demos/ExampleServerXmlTest.java, 2019-09-04 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/test/java/org/eclipse/jetty/ee9/demos/ManyContextsTest.java, 2019-09-04 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/test/java/org/eclipse/jetty/ee9/demos/ServerWithJMXTest.java, 2019-09-04 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/test/java/org/eclipse/jetty/ee9/demos/JarServerTest.java, 2019-09-04 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/test/java/org/eclipse/jetty/ee9/demos/OneHandlerTest.java, 2019-09-04 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/test/java/org/eclipse/jetty/ee9/demos/OneConnectorTest.java, 2019-09-04 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/test/java/org/eclipse/jetty/ee9/demos/ExampleServerTest.java, 2019-08-30 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/test/java/org/eclipse/jetty/ee9/demos/ManyServletContextsTest.java, 2019-09-04 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/test/java/org/eclipse/jetty/ee9/demos/ProxyServerTest.java, 2019-09-04 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/test/java/org/eclipse/jetty/ee9/demos/ServerWithJNDITest.java, 2019-09-04 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/WebSocketServer.java, 2009-03-30 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/LikeJettyXml.java, 2009-03-30 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/SplitFileServer.java, 2009-03-30 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/OneWebApp.java, 2009-03-24 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/ServerWithJNDI.java, 2013-06-07 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/HelloWorld.java, 2009-07-27 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/OneServletContext.java, 2009-03-30 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/OneContext.java, 2009-03-30 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/OneHandler.java, 2009-03-30 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/HelloHandler.java, 2009-07-27 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/ManyHandlers.java, 2009-03-30 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/AsyncEchoServlet.java, 2015-02-05 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/HelloServlet.java, 2009-03-24 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/ServerWithJMX.java, 2009-03-30 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/DumpServlet.java, 2009-03-24 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/FileServer.java, 2009-03-30 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/ServerWithAnnotations.java, 2013-06-07 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/Http2Server.java, 2013-02-22 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/ExampleServer.java, 2009-03-30 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/ProxyServer.java, 2012-07-20 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/FastFileServer.java, 2013-05-16 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/ManyServletContexts.java, 2009-03-30 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/SimplestServer.java, 2009-03-24 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/HelloSessionServlet.java, 2009-03-24 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/MinimalServlets.java, 2009-03-24 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/OneServletContextWithSession.java, 2009-03-30 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/FileServerXml.java, 2009-08-05 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/JarServer.java, 2009-03-30 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/OneWebAppWithJsp.java, 2009-03-24 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/ManyContexts.java, 2009-03-30 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/OneConnector.java, 2009-03-30 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/SecuredHelloHandler.java, 2009-09-28 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/ExampleUtil.java, 2019-09-10 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/ExampleServerXml.java, 2009-03-30 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/JettyDemos.java, 2019-06-18 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/OneServletContextJmxStats.java, 2009-03-30 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/ManyConnectors.java, 2009-03-30 -jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/RewriteServer.java, 2009-03-30 -jetty-ee9/jetty-ee9-osgi/jetty-ee9-osgi-boot-jsp/src/main/java/org/eclipse/jetty/ee9/osgi/boot/jsp/FragmentActivator.java, 2009-03-24 -jetty-ee9/jetty-ee9-osgi/jetty-ee9-osgi-boot-jsp/src/main/java/org/eclipse/jetty/ee9/osgi/boot/jsp/TLDServerClasspathContributor.java, 2022-12-22 -jetty-ee9/jetty-ee9-osgi/test-jetty-ee9-osgi-webapp-resources/src/main/java/com/acme/HelloWorld.java, 2005-11-27 -jetty-ee9/jetty-ee9-osgi/test-jetty-ee9-osgi/src/test/java/org/eclipse/jetty/ee9/osgi/test/TestOSGiUtil.java, 2013-02-21 -jetty-ee9/jetty-ee9-osgi/test-jetty-ee9-osgi/src/test/java/org/eclipse/jetty/ee9/osgi/test/TestJettyOSGiBootWithJsp.java, 2012-10-06 -jetty-ee9/jetty-ee9-osgi/test-jetty-ee9-osgi/src/test/java/org/eclipse/jetty/ee9/osgi/test/TestJettyOSGiClasspathResources.java, 2012-10-06 -jetty-ee9/jetty-ee9-osgi/test-jetty-ee9-osgi/src/test/java/org/eclipse/jetty/ee9/osgi/test/TestJettyOSGiBootWithWebSocket.java, 2012-10-06 -jetty-ee9/jetty-ee9-osgi/test-jetty-ee9-osgi/src/test/java/org/eclipse/jetty/ee9/osgi/test/TestJettyOSGiAnnotationParser.java, 2020-07-07 -jetty-ee9/jetty-ee9-osgi/test-jetty-ee9-osgi/src/test/java/org/eclipse/jetty/ee9/osgi/test/SimpleJakartaWebSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-osgi/test-jetty-ee9-osgi/src/test/java/org/eclipse/jetty/ee9/osgi/test/TestJettyOSGiBootWithAnnotations.java, 2012-10-06 -jetty-ee9/jetty-ee9-osgi/test-jetty-ee9-osgi/src/test/java/org/eclipse/jetty/ee9/osgi/test/TestJettyOSGiBootHTTP2JDK9.java, 2012-10-06 -jetty-ee9/jetty-ee9-osgi/test-jetty-ee9-osgi/src/test/java/org/eclipse/jetty/ee9/osgi/test/SomeCustomBean.java, 2009-03-24 -jetty-ee9/jetty-ee9-osgi/test-jetty-ee9-osgi/src/test/java/org/eclipse/jetty/ee9/osgi/test/TestJettyOSGiBootHTTP2Conscrypt.java, 2012-10-06 -jetty-ee9/jetty-ee9-osgi/test-jetty-ee9-osgi/src/test/java/org/eclipse/jetty/ee9/osgi/test/SimpleEchoSocket.java, 2012-06-27 -jetty-ee9/jetty-ee9-osgi/test-jetty-ee9-osgi/src/test/java/org/eclipse/jetty/ee9/osgi/test/TestJettyOSGiBootWithJakartaWebSocket.java, 2012-10-06 -jetty-ee9/jetty-ee9-osgi/test-jetty-ee9-osgi/src/test/resources/module-info.java, 2012-11-02 -jetty-ee9/jetty-ee9-osgi/test-jetty-ee9-osgi-server/src/main/java/com/acme/osgi/Activator.java, 2009-11-09 -jetty-ee9/jetty-ee9-osgi/jetty-ee9-osgi-boot/src/main/java/org/eclipse/jetty/ee9/osgi/annotations/AnnotationParser.java, 2011-07-07 -jetty-ee9/jetty-ee9-osgi/jetty-ee9-osgi-boot/src/main/java/org/eclipse/jetty/ee9/osgi/annotations/AnnotationConfiguration.java, 2011-07-07 -jetty-ee9/jetty-ee9-osgi/jetty-ee9-osgi-boot/src/main/java/org/eclipse/jetty/ee9/osgi/boot/PackageAdminServiceTracker.java, 2009-11-09 -jetty-ee9/jetty-ee9-osgi/jetty-ee9-osgi-boot/src/main/java/org/eclipse/jetty/ee9/osgi/boot/EE9Activator.java, 2022-12-22 -jetty-ee9/jetty-ee9-osgi/jetty-ee9-osgi-boot/src/main/java/org/eclipse/jetty/ee9/osgi/boot/OSGiMetaInfConfiguration.java, 2012-05-14 -jetty-ee9/jetty-ee9-osgi/jetty-ee9-osgi-boot/src/main/java/org/eclipse/jetty/ee9/osgi/boot/OSGiWebappClassLoader.java, 2009-12-11 -jetty-ee9/jetty-ee9-runner/src/test/java/org/eclipse/jetty/ee9/maven/jettyrunner/it/IntegrationTestJettyRunner.java, 2021-04-27 -jetty-ee9/jetty-ee9-runner/src/main/java/org/eclipse/jetty/ee9/runner/package-info.java, 2012-11-02 -jetty-ee9/jetty-ee9-runner/src/main/java/org/eclipse/jetty/ee9/runner/Runner.java, 2012-08-29 -jetty-ee9/jetty-ee9-jaas/src/test/java/org/eclipse/jetty/ee9/jaas/spi/PropertyFileLoginModuleTest.java, 2019-07-01 -jetty-ee9/jetty-ee9-jaas/src/test/java/org/eclipse/jetty/ee9/jaas/TestLoginModule.java, 2018-05-01 -jetty-ee9/jetty-ee9-jaas/src/test/java/org/eclipse/jetty/ee9/jaas/JAASLdapLoginServiceTest.java, 2018-08-30 -jetty-ee9/jetty-ee9-jaas/src/test/java/org/eclipse/jetty/ee9/jaas/JAASLoginServiceTest.java, 2018-04-17 -jetty-ee9/jetty-ee9-jaas/src/main/java/module-info.java, 2009-03-24 -jetty-ee9/jetty-ee9-jaas/src/main/java/org/eclipse/jetty/ee9/jaas/JAASLoginService.java, 2009-03-24 -jetty-ee9/jetty-ee9-jaas/src/main/java/org/eclipse/jetty/ee9/jaas/JAASUserPrincipal.java, 2003-04-30 -jetty-ee9/jetty-ee9-jaas/src/main/java/org/eclipse/jetty/ee9/jaas/spi/AbstractLoginModule.java, 2009-03-24 -jetty-ee9/jetty-ee9-jaas/src/main/java/org/eclipse/jetty/ee9/jaas/spi/AbstractDatabaseLoginModule.java, 2009-03-24 -jetty-ee9/jetty-ee9-jaas/src/main/java/org/eclipse/jetty/ee9/jaas/spi/PropertyFileLoginModule.java, 2009-03-24 -jetty-ee9/jetty-ee9-jaas/src/main/java/org/eclipse/jetty/ee9/jaas/spi/package-info.java, 2012-11-02 -jetty-ee9/jetty-ee9-jaas/src/main/java/org/eclipse/jetty/ee9/jaas/spi/DataSourceLoginModule.java, 2009-03-24 -jetty-ee9/jetty-ee9-jaas/src/main/java/org/eclipse/jetty/ee9/jaas/spi/JDBCLoginModule.java, 2003-04-30 -jetty-ee9/jetty-ee9-jaas/src/main/java/org/eclipse/jetty/ee9/jaas/spi/LdapLoginModule.java, 2009-03-24 -jetty-ee9/jetty-ee9-jaas/src/main/java/org/eclipse/jetty/ee9/jaas/PropertyUserStoreManager.java, 2020-11-11 -jetty-ee9/jetty-ee9-jaas/src/main/java/org/eclipse/jetty/ee9/jaas/JAASRole.java, 2003-04-30 -jetty-ee9/jetty-ee9-jaas/src/main/java/org/eclipse/jetty/ee9/jaas/package-info.java, 2012-11-02 -jetty-ee9/jetty-ee9-jaas/src/main/java/org/eclipse/jetty/ee9/jaas/JAASPrincipal.java, 2003-04-30 -jetty-ee9/jetty-ee9-jaas/src/main/java/org/eclipse/jetty/ee9/jaas/callback/ServletRequestCallback.java, 2009-03-24 -jetty-ee9/jetty-ee9-jaas/src/main/java/org/eclipse/jetty/ee9/jaas/callback/AbstractCallbackHandler.java, 2003-04-30 -jetty-ee9/jetty-ee9-jaas/src/main/java/org/eclipse/jetty/ee9/jaas/callback/package-info.java, 2012-11-02 -jetty-ee9/jetty-ee9-jaas/src/main/java/org/eclipse/jetty/ee9/jaas/callback/ObjectCallback.java, 2003-04-30 -jetty-ee9/jetty-ee9-jaas/src/main/java/org/eclipse/jetty/ee9/jaas/callback/DefaultCallbackHandler.java, 2003-04-30 -jetty-ee9/jetty-ee9-jaas/src/main/java/org/eclipse/jetty/ee9/jaas/callback/RequestParameterCallback.java, 2004-06-23 -jetty-ee9/jetty-ee9-quickstart/src/test/java/org/eclipse/jetty/ee9/quickstart/FooServlet.java, 2011-12-14 -jetty-ee9/jetty-ee9-quickstart/src/test/java/org/eclipse/jetty/ee9/quickstart/TestQuickStart.java, 2017-04-12 -jetty-ee9/jetty-ee9-quickstart/src/test/java/org/eclipse/jetty/ee9/quickstart/FooContextListener.java, 2009-03-24 -jetty-ee9/jetty-ee9-quickstart/src/test/java/org/eclipse/jetty/ee9/quickstart/FooFilter.java, 2009-03-24 -jetty-ee9/jetty-ee9-quickstart/src/main/java/module-info.java, 2009-03-24 -jetty-ee9/jetty-ee9-quickstart/src/main/java/org/eclipse/jetty/ee9/quickstart/QuickStartGeneratorConfiguration.java, 2014-07-09 -jetty-ee9/jetty-ee9-quickstart/src/main/java/org/eclipse/jetty/ee9/quickstart/QuickStartDescriptorProcessor.java, 2014-03-17 -jetty-ee9/jetty-ee9-quickstart/src/main/java/org/eclipse/jetty/ee9/quickstart/PreconfigureQuickStartWar.java, 2014-03-17 -jetty-ee9/jetty-ee9-quickstart/src/main/java/org/eclipse/jetty/ee9/quickstart/QuickStartConfiguration.java, 2014-03-17 -jetty-ee9/jetty-ee9-quickstart/src/main/java/org/eclipse/jetty/ee9/quickstart/ExtraXmlDescriptorProcessor.java, 2014-03-17 -jetty-ee9/jetty-ee9-jndi/src/main/java/module-info.java, 2009-03-24 -jetty-ee9/jetty-ee9-jndi/src/main/java/org/eclipse/jetty/ee9/jndi/factories/MailSessionReference.java, 2009-03-24 -jetty-ee9/jetty-ee9-jndi/src/main/java/org/eclipse/jetty/ee9/jndi/factories/package-info.java, 2012-11-02 -jetty-ee9/jetty-ee9-security/src/test/java/org/eclipse/jetty/ee9/security/ConstraintTest.java, 2007-04-19 -jetty-ee9/jetty-ee9-security/src/test/java/org/eclipse/jetty/ee9/security/PropertyUserStoreTest.java, 2010-10-12 -jetty-ee9/jetty-ee9-security/src/test/java/org/eclipse/jetty/ee9/security/TestLoginService.java, 2015-11-26 -jetty-ee9/jetty-ee9-security/src/test/java/org/eclipse/jetty/ee9/security/DataConstraintsTest.java, 2012-01-17 -jetty-ee9/jetty-ee9-security/src/test/java/org/eclipse/jetty/ee9/security/HashLoginServiceTest.java, 2019-05-07 -jetty-ee9/jetty-ee9-security/src/test/java/org/eclipse/jetty/ee9/security/DefaultIdentityServiceTest.java, 2021-08-25 -jetty-ee9/jetty-ee9-security/src/test/java/org/eclipse/jetty/ee9/security/UnauthenticatedTest.java, 2021-08-20 -jetty-ee9/jetty-ee9-security/src/test/java/org/eclipse/jetty/ee9/security/UserStoreTest.java, 2017-04-20 -jetty-ee9/jetty-ee9-security/src/test/java/org/eclipse/jetty/ee9/security/SpecExampleConstraintTest.java, 2012-09-28 -jetty-ee9/jetty-ee9-security/src/test/java/org/eclipse/jetty/ee9/security/ClientCertAuthenticatorTest.java, 2021-02-10 -jetty-ee9/jetty-ee9-security/src/test/java/org/eclipse/jetty/ee9/security/AliasedConstraintTest.java, 2014-06-26 -jetty-ee9/jetty-ee9-security/src/test/java/org/eclipse/jetty/ee9/security/authentication/SpnegoAuthenticatorTest.java, 2017-08-01 -jetty-ee9/jetty-ee9-security/src/main/java/module-info.java, 2009-03-24 -jetty-ee9/jetty-ee9-security/src/main/java/org/eclipse/jetty/ee9/security/DefaultUserIdentity.java, 2009-03-24 -jetty-ee9/jetty-ee9-security/src/main/java/org/eclipse/jetty/ee9/security/ConstraintSecurityHandler.java, 2009-03-24 -jetty-ee9/jetty-ee9-security/src/main/java/org/eclipse/jetty/ee9/security/SpnegoUserIdentity.java, 2010-12-17 -jetty-ee9/jetty-ee9-security/src/main/java/org/eclipse/jetty/ee9/security/DefaultIdentityService.java, 2009-03-24 -jetty-ee9/jetty-ee9-security/src/main/java/org/eclipse/jetty/ee9/security/UserPrincipal.java, 2020-11-17 -jetty-ee9/jetty-ee9-security/src/main/java/org/eclipse/jetty/ee9/security/RolePrincipal.java, 2011-03-29 -jetty-ee9/jetty-ee9-security/src/main/java/org/eclipse/jetty/ee9/security/UserStore.java, 2017-04-20 -jetty-ee9/jetty-ee9-security/src/main/java/org/eclipse/jetty/ee9/security/SecurityHandler.java, 2000-08-20 -jetty-ee9/jetty-ee9-security/src/main/java/org/eclipse/jetty/ee9/security/SpnegoUserPrincipal.java, 2010-12-17 -jetty-ee9/jetty-ee9-security/src/main/java/org/eclipse/jetty/ee9/security/ServerAuthException.java, 2009-03-24 -jetty-ee9/jetty-ee9-security/src/main/java/org/eclipse/jetty/ee9/security/DefaultAuthenticatorFactory.java, 2009-03-24 -jetty-ee9/jetty-ee9-security/src/main/java/org/eclipse/jetty/ee9/security/UserDataConstraint.java, 2009-03-24 -jetty-ee9/jetty-ee9-security/src/main/java/org/eclipse/jetty/ee9/security/Authenticator.java, 2002-06-05 -jetty-ee9/jetty-ee9-security/src/main/java/org/eclipse/jetty/ee9/security/UserAuthentication.java, 2009-03-24 -jetty-ee9/jetty-ee9-security/src/main/java/org/eclipse/jetty/ee9/security/WrappedAuthConfiguration.java, 2021-08-18 -jetty-ee9/jetty-ee9-security/src/main/java/org/eclipse/jetty/ee9/security/LoginService.java, 2009-03-24 -jetty-ee9/jetty-ee9-security/src/main/java/org/eclipse/jetty/ee9/security/ConstraintMapping.java, 2005-11-27 -jetty-ee9/jetty-ee9-security/src/main/java/org/eclipse/jetty/ee9/security/ConstraintAware.java, 2009-03-24 -jetty-ee9/jetty-ee9-security/src/main/java/org/eclipse/jetty/ee9/security/AbstractLoginService.java, 2015-11-26 -jetty-ee9/jetty-ee9-security/src/main/java/org/eclipse/jetty/ee9/security/LoggedOutAuthentication.java, 2019-03-20 -jetty-ee9/jetty-ee9-security/src/main/java/org/eclipse/jetty/ee9/security/package-info.java, 2012-11-02 -jetty-ee9/jetty-ee9-security/src/main/java/org/eclipse/jetty/ee9/security/EmptyLoginService.java, 2011-08-11 -jetty-ee9/jetty-ee9-security/src/main/java/org/eclipse/jetty/ee9/security/JDBCLoginService.java, 2009-03-24 -jetty-ee9/jetty-ee9-security/src/main/java/org/eclipse/jetty/ee9/security/PropertyUserStore.java, 2009-03-24 -jetty-ee9/jetty-ee9-security/src/main/java/org/eclipse/jetty/ee9/security/HashLoginService.java, 2009-03-24 -jetty-ee9/jetty-ee9-security/src/main/java/org/eclipse/jetty/ee9/security/IdentityService.java, 2009-03-24 -jetty-ee9/jetty-ee9-security/src/main/java/org/eclipse/jetty/ee9/security/RoleRunAsToken.java, 2009-03-24 -jetty-ee9/jetty-ee9-security/src/main/java/org/eclipse/jetty/ee9/security/RoleInfo.java, 2009-03-24 -jetty-ee9/jetty-ee9-security/src/main/java/org/eclipse/jetty/ee9/security/ConfigurableSpnegoLoginService.java, 2018-09-14 -jetty-ee9/jetty-ee9-security/src/main/java/org/eclipse/jetty/ee9/security/AbstractUserAuthentication.java, 2013-04-19 -jetty-ee9/jetty-ee9-security/src/main/java/org/eclipse/jetty/ee9/security/authentication/ConfigurableSpnegoAuthenticator.java, 2018-09-14 -jetty-ee9/jetty-ee9-security/src/main/java/org/eclipse/jetty/ee9/security/authentication/BasicAuthenticator.java, 2009-03-24 -jetty-ee9/jetty-ee9-security/src/main/java/org/eclipse/jetty/ee9/security/authentication/AuthorizationService.java, 2018-09-14 -jetty-ee9/jetty-ee9-security/src/main/java/org/eclipse/jetty/ee9/security/authentication/ClientCertAuthenticator.java, 2009-03-24 -jetty-ee9/jetty-ee9-security/src/main/java/org/eclipse/jetty/ee9/security/authentication/DigestAuthenticator.java, 2009-03-24 -jetty-ee9/jetty-ee9-security/src/main/java/org/eclipse/jetty/ee9/security/authentication/LoginCallback.java, 2009-03-24 -jetty-ee9/jetty-ee9-security/src/main/java/org/eclipse/jetty/ee9/security/authentication/SessionAuthentication.java, 2009-08-03 -jetty-ee9/jetty-ee9-security/src/main/java/org/eclipse/jetty/ee9/security/authentication/LoginAuthenticator.java, 2009-03-24 -jetty-ee9/jetty-ee9-security/src/main/java/org/eclipse/jetty/ee9/security/authentication/DeferredAuthentication.java, 2009-04-17 -jetty-ee9/jetty-ee9-security/src/main/java/org/eclipse/jetty/ee9/security/authentication/SslClientCertAuthenticator.java, 2021-02-10 -jetty-ee9/jetty-ee9-security/src/main/java/org/eclipse/jetty/ee9/security/authentication/FormAuthenticator.java, 2009-03-24 -jetty-ee9/jetty-ee9-security/src/main/java/org/eclipse/jetty/ee9/security/authentication/package-info.java, 2012-11-02 -jetty-ee9/jetty-ee9-security/src/main/java/org/eclipse/jetty/ee9/security/authentication/LoginCallbackImpl.java, 2009-03-24 -jetty-ee9/jetty-ee9-security/src/main/java/org/eclipse/jetty/ee9/security/RunAsToken.java, 2009-03-24 -jetty-ee9/jetty-ee9-glassfish-jstl/src/test/java/org/eclipse/jetty/ee9/jstl/JspConfig.java, 2015-06-29 -jetty-ee9/jetty-ee9-glassfish-jstl/src/test/java/org/eclipse/jetty/ee9/jstl/JstlTest.java, 2015-06-29 -jetty-ee9/jetty-ee9-glassfish-jstl/src/test/java/org/eclipse/jetty/ee9/jstl/JspIncludeTest.java, 2015-06-29 -jetty-ee9/jetty-ee9-annotations/src/test/java/org/acme/ClassOne.java, 2009-03-24 -jetty-ee9/jetty-ee9-annotations/src/test/java/org/eclipse/jetty/ee9/annotations/TestAnnotationParser.java, 2009-07-22 -jetty-ee9/jetty-ee9-annotations/src/test/java/org/eclipse/jetty/ee9/annotations/TestSecurityAnnotationConversions.java, 2011-07-07 -jetty-ee9/jetty-ee9-annotations/src/test/java/org/eclipse/jetty/ee9/annotations/ClassA.java, 2009-03-24 -jetty-ee9/jetty-ee9-annotations/src/test/java/org/eclipse/jetty/ee9/annotations/TestRunAsAnnotation.java, 2020-04-06 -jetty-ee9/jetty-ee9-annotations/src/test/java/org/eclipse/jetty/ee9/annotations/ServletC.java, 2009-03-24 -jetty-ee9/jetty-ee9-annotations/src/test/java/org/eclipse/jetty/ee9/annotations/ServletE.java, 2009-03-24 -jetty-ee9/jetty-ee9-annotations/src/test/java/org/eclipse/jetty/ee9/annotations/ListenerC.java, 2009-03-24 -jetty-ee9/jetty-ee9-annotations/src/test/java/org/eclipse/jetty/ee9/annotations/Sample.java, 2009-03-24 -jetty-ee9/jetty-ee9-annotations/src/test/java/org/eclipse/jetty/ee9/annotations/TestAnnotationConfiguration.java, 2010-07-16 -jetty-ee9/jetty-ee9-annotations/src/test/java/org/eclipse/jetty/ee9/annotations/ClassB.java, 2009-03-24 -jetty-ee9/jetty-ee9-annotations/src/test/java/org/eclipse/jetty/ee9/annotations/InterfaceD.java, 2009-03-24 -jetty-ee9/jetty-ee9-annotations/src/test/java/org/eclipse/jetty/ee9/annotations/Multi.java, 2009-07-22 -jetty-ee9/jetty-ee9-annotations/src/test/java/org/eclipse/jetty/ee9/annotations/resources/TestResourceAnnotations.java, 2009-03-24 -jetty-ee9/jetty-ee9-annotations/src/test/java/org/eclipse/jetty/ee9/annotations/resources/ResourceA.java, 2009-03-24 -jetty-ee9/jetty-ee9-annotations/src/test/java/org/eclipse/jetty/ee9/annotations/resources/ResourceB.java, 2009-03-24 -jetty-ee9/jetty-ee9-annotations/src/test/java/org/eclipse/jetty/ee9/annotations/TestAnnotationDecorator.java, 2020-03-09 -jetty-ee9/jetty-ee9-annotations/src/test/java/org/eclipse/jetty/ee9/annotations/TestAnnotationIntrospector.java, 2020-03-09 -jetty-ee9/jetty-ee9-annotations/src/test/java/org/eclipse/jetty/ee9/annotations/ServletD.java, 2009-07-22 -jetty-ee9/jetty-ee9-annotations/src/test/java/org/eclipse/jetty/ee9/annotations/TestDiscoveredServletContainerInitializerHolder.java, 2021-02-19 -jetty-ee9/jetty-ee9-annotations/src/test/java/org/eclipse/jetty/ee9/annotations/TestServletAnnotations.java, 2009-07-22 -jetty-ee9/jetty-ee9-annotations/src/test/java/org/eclipse/jetty/ee9/annotations/FilterC.java, 2009-03-24 -jetty-ee9/jetty-ee9-annotations/src/main/java/module-info.java, 2012-07-10 -jetty-ee9/jetty-ee9-annotations/src/main/java/org/eclipse/jetty/ee9/annotations/AnnotationDecorator.java, 2010-07-16 -jetty-ee9/jetty-ee9-annotations/src/main/java/org/eclipse/jetty/ee9/annotations/ContainerInitializerAnnotationHandler.java, 2011-07-07 -jetty-ee9/jetty-ee9-annotations/src/main/java/org/eclipse/jetty/ee9/annotations/WebFilterAnnotation.java, 2011-07-07 -jetty-ee9/jetty-ee9-annotations/src/main/java/org/eclipse/jetty/ee9/annotations/WebServletAnnotationHandler.java, 2011-07-07 -jetty-ee9/jetty-ee9-annotations/src/main/java/org/eclipse/jetty/ee9/annotations/AbstractDiscoverableAnnotationHandler.java, 2009-03-24 -jetty-ee9/jetty-ee9-annotations/src/main/java/org/eclipse/jetty/ee9/annotations/WebListenerAnnotationHandler.java, 2011-07-07 -jetty-ee9/jetty-ee9-annotations/src/main/java/org/eclipse/jetty/ee9/annotations/MultiPartConfigAnnotationHandler.java, 2011-07-07 -jetty-ee9/jetty-ee9-annotations/src/main/java/org/eclipse/jetty/ee9/annotations/ClassInheritanceHandler.java, 2009-07-22 -jetty-ee9/jetty-ee9-annotations/src/main/java/org/eclipse/jetty/ee9/annotations/WebServletAnnotation.java, 2011-07-07 -jetty-ee9/jetty-ee9-annotations/src/main/java/org/eclipse/jetty/ee9/annotations/ResourceAnnotationHandler.java, 2009-07-22 -jetty-ee9/jetty-ee9-annotations/src/main/java/org/eclipse/jetty/ee9/annotations/WebListenerAnnotation.java, 2011-07-07 -jetty-ee9/jetty-ee9-annotations/src/main/java/org/eclipse/jetty/ee9/annotations/ServletSecurityAnnotationHandler.java, 2011-07-07 -jetty-ee9/jetty-ee9-annotations/src/main/java/org/eclipse/jetty/ee9/annotations/ResourcesAnnotationHandler.java, 2009-07-22 -jetty-ee9/jetty-ee9-annotations/src/main/java/org/eclipse/jetty/ee9/annotations/WebFilterAnnotationHandler.java, 2011-07-07 -jetty-ee9/jetty-ee9-annotations/src/main/java/org/eclipse/jetty/ee9/annotations/AnnotationParser.java, 2009-07-22 -jetty-ee9/jetty-ee9-annotations/src/main/java/org/eclipse/jetty/ee9/annotations/DeclareRolesAnnotationHandler.java, 2009-07-22 -jetty-ee9/jetty-ee9-annotations/src/main/java/org/eclipse/jetty/ee9/annotations/package-info.java, 2009-03-24 -jetty-ee9/jetty-ee9-annotations/src/main/java/org/eclipse/jetty/ee9/annotations/PostConstructAnnotationHandler.java, 2009-07-22 -jetty-ee9/jetty-ee9-annotations/src/main/java/org/eclipse/jetty/ee9/annotations/AnnotationIntrospector.java, 2010-07-16 -jetty-ee9/jetty-ee9-annotations/src/main/java/org/eclipse/jetty/ee9/annotations/AnnotationConfiguration.java, 2009-03-24 -jetty-ee9/jetty-ee9-annotations/src/main/java/org/eclipse/jetty/ee9/annotations/RunAsAnnotationHandler.java, 2009-07-22 -jetty-ee9/jetty-ee9-annotations/src/main/java/org/eclipse/jetty/ee9/annotations/PreDestroyAnnotationHandler.java, 2009-07-22 -jetty-ee9/jetty-ee9-plus/src/test/java/org/eclipse/jetty/ee9/plus/jndi/NamingEntryUtilTest.java, 2009-03-24 -jetty-ee9/jetty-ee9-plus/src/test/java/org/eclipse/jetty/ee9/plus/jndi/TestNamingEntryUtil.java, 2009-03-24 -jetty-ee9/jetty-ee9-plus/src/test/java/org/eclipse/jetty/ee9/plus/jndi/TestNamingEntries.java, 2009-03-24 -jetty-ee9/jetty-ee9-plus/src/test/java/org/eclipse/jetty/ee9/plus/webapp/PlusDescriptorProcessorTest.java, 2011-07-07 -jetty-ee9/jetty-ee9-plus/src/test/java/org/eclipse/jetty/ee9/plus/annotation/LifeCycleCallbackCollectionTest.java, 2019-07-01 -jetty-ee9/jetty-ee9-plus/src/main/java/module-info.java, 2018-11-22 -jetty-ee9/jetty-ee9-plus/src/main/java/org/eclipse/jetty/ee9/plus/jndi/EnvEntry.java, 2009-03-24 -jetty-ee9/jetty-ee9-plus/src/main/java/org/eclipse/jetty/ee9/plus/jndi/Link.java, 2009-03-24 -jetty-ee9/jetty-ee9-plus/src/main/java/org/eclipse/jetty/ee9/plus/jndi/NamingEntryUtil.java, 2009-03-24 -jetty-ee9/jetty-ee9-plus/src/main/java/org/eclipse/jetty/ee9/plus/jndi/NamingEntry.java, 2009-03-24 -jetty-ee9/jetty-ee9-plus/src/main/java/org/eclipse/jetty/ee9/plus/jndi/NamingDump.java, 2019-06-18 -jetty-ee9/jetty-ee9-plus/src/main/java/org/eclipse/jetty/ee9/plus/jndi/Resource.java, 2009-03-24 -jetty-ee9/jetty-ee9-plus/src/main/java/org/eclipse/jetty/ee9/plus/jndi/package-info.java, 2012-11-02 -jetty-ee9/jetty-ee9-plus/src/main/java/org/eclipse/jetty/ee9/plus/jndi/Transaction.java, 2009-03-24 -jetty-ee9/jetty-ee9-plus/src/main/java/org/eclipse/jetty/ee9/plus/security/DataSourceLoginService.java, 2009-03-24 -jetty-ee9/jetty-ee9-plus/src/main/java/org/eclipse/jetty/ee9/plus/security/package-info.java, 2012-11-02 -jetty-ee9/jetty-ee9-plus/src/main/java/org/eclipse/jetty/ee9/plus/webapp/EnvConfiguration.java, 2006-03-14 -jetty-ee9/jetty-ee9-plus/src/main/java/org/eclipse/jetty/ee9/plus/webapp/package-info.java, 2009-03-24 -jetty-ee9/jetty-ee9-plus/src/main/java/org/eclipse/jetty/ee9/plus/webapp/PlusConfiguration.java, 2009-03-24 -jetty-ee9/jetty-ee9-plus/src/main/java/org/eclipse/jetty/ee9/plus/webapp/PlusDecorator.java, 2010-07-16 -jetty-ee9/jetty-ee9-plus/src/main/java/org/eclipse/jetty/ee9/plus/webapp/PlusDescriptorProcessor.java, 2010-07-16 -jetty-ee9/jetty-ee9-plus/src/main/java/org/eclipse/jetty/ee9/plus/annotation/PostConstructCallback.java, 2006-12-29 -jetty-ee9/jetty-ee9-plus/src/main/java/org/eclipse/jetty/ee9/plus/annotation/RunAs.java, 2006-11-12 -jetty-ee9/jetty-ee9-plus/src/main/java/org/eclipse/jetty/ee9/plus/annotation/InjectionCollection.java, 2006-12-29 -jetty-ee9/jetty-ee9-plus/src/main/java/org/eclipse/jetty/ee9/plus/annotation/RunAsCollection.java, 2007-02-14 -jetty-ee9/jetty-ee9-plus/src/main/java/org/eclipse/jetty/ee9/plus/annotation/Injection.java, 2006-12-29 -jetty-ee9/jetty-ee9-plus/src/main/java/org/eclipse/jetty/ee9/plus/annotation/PreDestroyCallback.java, 2006-12-29 -jetty-ee9/jetty-ee9-plus/src/main/java/org/eclipse/jetty/ee9/plus/annotation/LifeCycleCallback.java, 2006-12-29 -jetty-ee9/jetty-ee9-plus/src/main/java/org/eclipse/jetty/ee9/plus/annotation/package-info.java, 2012-11-02 -jetty-ee9/jetty-ee9-plus/src/main/java/org/eclipse/jetty/ee9/plus/annotation/LifeCycleCallbackCollection.java, 2006-12-29 -jetty-ee9/jetty-ee9-maven-plugin/src/test/java/org/eclipse/jetty/ee9/maven/plugin/TestJettyStopMojo.java, 2022-02-21 -jetty-ee9/jetty-ee9-maven-plugin/src/test/java/org/eclipse/jetty/ee9/maven/plugin/TestSelectiveJarResource.java, 2019-10-02 -jetty-ee9/jetty-ee9-maven-plugin/src/test/java/org/eclipse/jetty/ee9/maven/plugin/MockShutdownMonitor.java, 2022-02-21 -jetty-ee9/jetty-ee9-maven-plugin/src/test/java/org/eclipse/jetty/ee9/maven/plugin/TestJettyEmbedder.java, 2019-09-25 -jetty-ee9/jetty-ee9-maven-plugin/src/test/java/org/eclipse/jetty/ee9/maven/plugin/TestWebAppPropertyConverter.java, 2019-09-30 -jetty-ee9/jetty-ee9-maven-plugin/src/test/java/org/eclipse/jetty/ee9/maven/plugin/it/IntegrationTestGetContent.java, 2018-06-05 -jetty-ee9/jetty-ee9-maven-plugin/src/test/java/org/eclipse/jetty/ee9/maven/plugin/MockShutdownMonitorRunnable.java, 2022-02-21 -jetty-ee9/jetty-ee9-maven-plugin/src/test/java/org/eclipse/jetty/ee9/maven/plugin/TestQuickStartGenerator.java, 2019-09-30 -jetty-ee9/jetty-ee9-maven-plugin/src/test/java/org/eclipse/jetty/ee9/maven/plugin/TestForkedChild.java, 2019-10-24 -jetty-ee9/jetty-ee9-maven-plugin/src/it/jetty-start-mojo-multi-module-single-war-it/common/src/main/java/mca/common/CommonService.java, 2012-11-02 -jetty-ee9/jetty-ee9-maven-plugin/src/it/jetty-start-mojo-multi-module-single-war-it/module/module-impl/src/main/java/mca/module/ModuleImpl.java, 2009-03-24 -jetty-ee9/jetty-ee9-maven-plugin/src/it/jetty-start-mojo-multi-module-single-war-it/module/module-api/src/main/java/mca/module/ModuleApi.java, 2012-11-02 -jetty-ee9/jetty-ee9-maven-plugin/src/it/jetty-start-mojo-multi-module-single-war-it/webapp-war/src/main/java/mca/webapp/WebAppServletListener.java, 2011-12-14 -jetty-ee9/jetty-ee9-maven-plugin/src/it/jetty-start-war-distro-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_run_mojo_it/HelloServlet.java, 2011-12-14 -jetty-ee9/jetty-ee9-maven-plugin/src/it/jetty-start-war-distro-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_run_mojo_it/PingServlet.java, 2011-12-14 -jetty-ee9/jetty-ee9-maven-plugin/src/it/jetty-cdi-start-forked/src/main/java/test/Greeter.java, 2011-12-14 -jetty-ee9/jetty-ee9-maven-plugin/src/it/jetty-start-war-forked-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_run_war_exploded_mojo_it/HelloServlet.java, 2011-12-14 -jetty-ee9/jetty-ee9-maven-plugin/src/it/jetty-start-war-forked-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_run_war_exploded_mojo_it/PingServlet.java, 2011-12-14 -jetty-ee9/jetty-ee9-maven-plugin/src/it/jetty-start-distro-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_start_distro_mojo_it/HelloServlet.java, 2011-12-14 -jetty-ee9/jetty-ee9-maven-plugin/src/it/jetty-start-distro-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_start_distro_mojo_it/PingServlet.java, 2011-12-14 -jetty-ee9/jetty-ee9-maven-plugin/src/it/jetty-start-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_start_mojo_it/HelloServlet.java, 2011-12-14 -jetty-ee9/jetty-ee9-maven-plugin/src/it/jetty-start-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_start_mojo_it/Counter.java, 2009-03-24 -jetty-ee9/jetty-ee9-maven-plugin/src/it/jetty-start-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_start_mojo_it/PingServlet.java, 2011-12-14 -jetty-ee9/jetty-ee9-maven-plugin/src/it/jetty-start-forked-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_start_forked/HelloServlet.java, 2011-12-14 -jetty-ee9/jetty-ee9-maven-plugin/src/it/jetty-start-forked-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_start_forked/Counter.java, 2009-03-24 -jetty-ee9/jetty-ee9-maven-plugin/src/it/jetty-start-forked-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_start_forked/PingServlet.java, 2011-12-14 -jetty-ee9/jetty-ee9-maven-plugin/src/it/jetty-effective-web-xml-it/webapp-war/src/main/java/WebAppServletListener.java, 2022-11-21 -jetty-ee9/jetty-ee9-maven-plugin/src/it/jetty-effective-web-xml-it/resources/src/main/java/Placeholder.java, 2022-11-21 -jetty-ee9/jetty-ee9-maven-plugin/src/it/jetty-run-mojo-jar-scan-it/MyWebApp/src/main/java/jettyissue/NormalClass.java, 2012-11-02 -jetty-ee9/jetty-ee9-maven-plugin/src/it/jetty-run-mojo-jar-scan-it/MyLibrary/src/main/java/jettyissue/MyAnnotation.java, 2012-11-02 -jetty-ee9/jetty-ee9-maven-plugin/src/it/jetty-run-mojo-jar-scan-it/MyLibrary/src/main/java/jettyissue/MyServletContainerInitializer.java, 2012-07-10 -jetty-ee9/jetty-ee9-maven-plugin/src/it/jetty-start-gwt-it/beer-shared/src/main/java/org/olamy/GreetingResponse.java, 2011-03-29 -jetty-ee9/jetty-ee9-maven-plugin/src/it/jetty-start-gwt-it/beer-shared/src/main/java/org/olamy/FieldVerifier.java, 2018-05-05 -jetty-ee9/jetty-ee9-maven-plugin/src/it/jetty-start-gwt-it/beer-shared/src/main/java/org/olamy/GreetingServiceAsync.java, 2009-03-24 -jetty-ee9/jetty-ee9-maven-plugin/src/it/jetty-start-gwt-it/beer-shared/src/main/java/org/olamy/GreetingService.java, 2009-03-24 -jetty-ee9/jetty-ee9-maven-plugin/src/it/jetty-start-gwt-it/beer-server/src/main/java/org/olamy/GreetingServiceImpl.java, 2012-07-27 -jetty-ee9/jetty-ee9-maven-plugin/src/it/jetty-start-gwt-it/beer-client/src/main/java/org/olamy/App.java, 2018-05-05 -jetty-ee9/jetty-ee9-maven-plugin/src/it/jetty-maven-plugin-provided-module-dep/web/src/main/java/test/ClassLoadingTestingServletContextListener.java, 2009-03-24 -jetty-ee9/jetty-ee9-maven-plugin/src/it/jetty-maven-plugin-provided-module-dep/api/src/main/java/test/Api.java, 2012-11-02 -jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/WarPluginInfo.java, 2012-11-19 -jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/QuickStartGenerator.java, 2019-09-17 -jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/ScanTargetPattern.java, 2012-08-28 -jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/AbstractForker.java, 2019-05-15 -jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/ServerSupport.java, 2012-08-28 -jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/Overlay.java, 2011-09-12 -jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/WebAppPropertyConverter.java, 2017-08-10 -jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/JettyHomeForker.java, 2019-05-15 -jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/JettyStartWarMojo.java, 2019-09-17 -jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/SelectiveJarResource.java, 2012-11-19 -jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/PluginLog.java, 2012-07-09 -jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/OverlayConfig.java, 2012-11-19 -jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/JettyRunWarMojo.java, 2019-07-11 -jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/ServerConnectorListener.java, 2017-10-05 -jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/JettyRunMojo.java, 2019-05-15 -jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/JettyEffectiveWebXml.java, 2011-03-29 -jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/ServerListener.java, 2017-08-15 -jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/ScanPattern.java, 2012-07-09 -jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/JettyStopMojo.java, 2012-08-28 -jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/JettyEmbedder.java, 2019-05-15 -jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/JettyForker.java, 2019-05-15 -jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/JettyStartMojo.java, 2019-07-11 -jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/package-info.java, 2009-03-24 -jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/utils/MavenProjectHelper.java, 2019-05-30 -jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/OverlayManager.java, 2019-10-02 -jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/MavenQuickStartConfiguration.java, 2014-07-09 -jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/MavenWebInfConfiguration.java, 2012-08-28 -jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/AbstractUnassembledWebAppMojo.java, 2019-11-06 -jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/AbstractWebAppMojo.java, 2019-05-15 -jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/MavenServerConnector.java, 2012-07-09 -jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/MavenMetaInfConfiguration.java, 2016-05-02 -jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/MavenWebAppContext.java, 2012-08-28 -jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/ConsoleReader.java, 2019-07-13 -jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/JettyForkedChild.java, 2019-05-15 -jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/DefaultServletRangesTest.java, 2012-08-27 -jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/GzipHandlerIsHandledTest.java, 2022-07-13 -jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/DispatcherForwardTest.java, 2014-05-09 -jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/ServletWrapperTest.java, 2019-10-01 -jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/ListenerHolderTest.java, 2020-03-09 -jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/AsyncServletLongPollTest.java, 2013-06-05 -jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/AsyncListenerTest.java, 2015-08-10 -jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/ServletContextHandlerTest.java, 2011-05-11 -jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/ServletHolderTest.java, 2015-12-14 -jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/AsyncContextDispatchWithQueryStrings.java, 2011-03-16 -jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/ServletLifeCycleTest.java, 2019-09-13 -jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/InitServletTest.java, 2019-11-25 -jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/FormTest.java, 2019-07-23 -jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/EncodedURITest.java, 2016-09-08 -jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/SSLAsyncIOServletTest.java, 2014-04-16 -jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/ServletHandlerTest.java, 2013-01-14 -jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/PostServletTest.java, 2016-04-26 -jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/ErrorPageTest.java, 2013-03-11 -jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/ServletUpgradeTest.java, 2021-01-28 -jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/AsyncServletTest.java, 2013-03-08 -jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/DispatcherTest.java, 2008-07-10 -jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/GzipHandlerCommitTest.java, 2020-05-01 -jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/ComponentWrapTest.java, 2020-09-15 -jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/ServletContextResourcesTest.java, 2016-06-22 -jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/RegexServletTest.java, 2022-03-22 -jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/ComplianceViolations2616Test.java, 2016-03-22 -jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/ServletContainerInitializerHolderTest.java, 2021-02-19 -jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/IncludedServletTest.java, 2016-04-26 -jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/StaticFromJarServerTest.java, 2022-08-09 -jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/CharacterEncodingTest.java, 2022-12-13 -jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/CustomRequestLogTest.java, 2018-11-22 -jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/ResponseHeadersTest.java, 2012-06-25 -jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/CacheControlHeaderTest.java, 2021-02-18 -jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/RequestURITest.java, 2014-03-19 -jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/RequestHeadersTest.java, 2013-03-19 -jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/AsyncContextListenersTest.java, 2013-08-21 -jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/InvokerTest.java, 2008-08-21 -jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/MultiPartServletTest.java, 2019-05-29 -jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/DefaultServletTest.java, 2009-04-21 -jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/GzipHandlerBreakEvenSizeTest.java, 2019-10-14 -jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/AsyncServletIOTest.java, 2013-05-24 -jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/FilterHolderTest.java, 2016-11-02 -jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/AsyncContextTest.java, 2012-02-14 -jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/ServletRequestLogTest.java, 2014-10-10 -jetty-ee9/jetty-ee9-servlet/src/main/java/module-info.java, 2012-09-13 -jetty-ee9/jetty-ee9-servlet/src/main/java/org/eclipse/jetty/ee9/servlet/FilterHolder.java, 2001-11-07 -jetty-ee9/jetty-ee9-servlet/src/main/java/org/eclipse/jetty/ee9/servlet/jmx/HolderMBean.java, 2003-02-15 -jetty-ee9/jetty-ee9-servlet/src/main/java/org/eclipse/jetty/ee9/servlet/jmx/package-info.java, 2012-11-02 -jetty-ee9/jetty-ee9-servlet/src/main/java/org/eclipse/jetty/ee9/servlet/jmx/FilterMappingMBean.java, 2009-06-11 -jetty-ee9/jetty-ee9-servlet/src/main/java/org/eclipse/jetty/ee9/servlet/jmx/ServletMappingMBean.java, 2009-06-11 -jetty-ee9/jetty-ee9-servlet/src/main/java/org/eclipse/jetty/ee9/servlet/ServletMapping.java, 2005-11-27 -jetty-ee9/jetty-ee9-servlet/src/main/java/org/eclipse/jetty/ee9/servlet/Invoker.java, 2002-07-17 -jetty-ee9/jetty-ee9-servlet/src/main/java/org/eclipse/jetty/ee9/servlet/Source.java, 2016-07-08 -jetty-ee9/jetty-ee9-servlet/src/main/java/org/eclipse/jetty/ee9/servlet/FilterMapping.java, 2005-11-27 -jetty-ee9/jetty-ee9-servlet/src/main/java/org/eclipse/jetty/ee9/servlet/NoJspServlet.java, 2005-11-27 -jetty-ee9/jetty-ee9-servlet/src/main/java/org/eclipse/jetty/ee9/servlet/ListenerHolder.java, 2013-12-12 -jetty-ee9/jetty-ee9-servlet/src/main/java/org/eclipse/jetty/ee9/servlet/listener/ELContextCleaner.java, 2011-07-29 -jetty-ee9/jetty-ee9-servlet/src/main/java/org/eclipse/jetty/ee9/servlet/listener/IntrospectorCleaner.java, 2009-03-24 -jetty-ee9/jetty-ee9-servlet/src/main/java/org/eclipse/jetty/ee9/servlet/listener/ContainerInitializer.java, 2019-05-28 -jetty-ee9/jetty-ee9-servlet/src/main/java/org/eclipse/jetty/ee9/servlet/listener/package-info.java, 2012-11-02 -jetty-ee9/jetty-ee9-servlet/src/main/java/org/eclipse/jetty/ee9/servlet/ServletContainerInitializerHolder.java, 2021-02-19 -jetty-ee9/jetty-ee9-servlet/src/main/java/org/eclipse/jetty/ee9/servlet/ErrorPageErrorHandler.java, 2006-09-07 -jetty-ee9/jetty-ee9-servlet/src/main/java/org/eclipse/jetty/ee9/servlet/ServletTester.java, 2012-07-13 -jetty-ee9/jetty-ee9-servlet/src/main/java/org/eclipse/jetty/ee9/servlet/DecoratingListener.java, 2019-08-08 -jetty-ee9/jetty-ee9-servlet/src/main/java/org/eclipse/jetty/ee9/servlet/DefaultServlet.java, 2005-11-27 -jetty-ee9/jetty-ee9-servlet/src/main/java/org/eclipse/jetty/ee9/servlet/Holder.java, 2001-11-07 -jetty-ee9/jetty-ee9-servlet/src/main/java/org/eclipse/jetty/ee9/servlet/ServletHandler.java, 2006-12-29 -jetty-ee9/jetty-ee9-servlet/src/main/java/org/eclipse/jetty/ee9/servlet/package-info.java, 2012-11-02 -jetty-ee9/jetty-ee9-servlet/src/main/java/org/eclipse/jetty/ee9/servlet/BaseHolder.java, 2013-12-12 -jetty-ee9/jetty-ee9-servlet/src/main/java/org/eclipse/jetty/ee9/servlet/JspPropertyGroupServlet.java, 2013-02-25 -jetty-ee9/jetty-ee9-servlet/src/main/java/org/eclipse/jetty/ee9/servlet/ServletContextHandler.java, 2009-03-24 -jetty-ee9/jetty-ee9-servlet/src/main/java/org/eclipse/jetty/ee9/servlet/ServletHolder.java, 2000-06-14 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-api/src/main/java/module-info.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee9/websocket/api/WebSocketPartialListener.java, 2015-05-06 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee9/websocket/api/WebSocketBehavior.java, 2012-06-20 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee9/websocket/api/WebSocketAdapter.java, 2012-06-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee9/websocket/api/WebSocketContainer.java, 2019-02-21 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee9/websocket/api/annotations/OnWebSocketMessage.java, 2012-06-26 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee9/websocket/api/annotations/OnWebSocketConnect.java, 2012-06-26 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee9/websocket/api/annotations/WebSocket.java, 2012-06-26 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee9/websocket/api/annotations/OnWebSocketFrame.java, 2012-06-26 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee9/websocket/api/annotations/package-info.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee9/websocket/api/annotations/OnWebSocketError.java, 2012-06-26 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee9/websocket/api/annotations/OnWebSocketClose.java, 2012-06-26 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee9/websocket/api/ExtensionConfig.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee9/websocket/api/WriteCallback.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee9/websocket/api/Frame.java, 2012-11-05 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee9/websocket/api/WebSocketSessionListener.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee9/websocket/api/UpgradeRequest.java, 2012-06-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee9/websocket/api/WebSocketFrameListener.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee9/websocket/api/RemoteEndpoint.java, 2012-11-28 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee9/websocket/api/CloseStatus.java, 2012-05-08 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee9/websocket/api/WebSocketPingPongListener.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee9/websocket/api/WebSocketListener.java, 2012-06-26 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee9/websocket/api/UpgradeResponse.java, 2012-06-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee9/websocket/api/BatchMode.java, 2012-07-12 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee9/websocket/api/WebSocketPolicy.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee9/websocket/api/package-info.java, 2012-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee9/websocket/api/util/WSURI.java, 2013-06-10 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee9/websocket/api/util/package-info.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee9/websocket/api/util/WebSocketConstants.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee9/websocket/api/WebSocketConnectionListener.java, 2012-06-26 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee9/websocket/api/SuspendToken.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee9/websocket/api/StatusCode.java, 2012-06-21 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee9/websocket/api/exceptions/InvalidWebSocketException.java, 2012-06-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee9/websocket/api/exceptions/MessageTooLargeException.java, 2012-07-06 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee9/websocket/api/exceptions/CloseException.java, 2012-06-20 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee9/websocket/api/exceptions/BadPayloadException.java, 2012-07-12 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee9/websocket/api/exceptions/WebSocketException.java, 2012-06-12 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee9/websocket/api/exceptions/ProtocolException.java, 2012-06-29 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee9/websocket/api/exceptions/package-info.java, 2012-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee9/websocket/api/exceptions/UpgradeException.java, 2012-06-12 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee9/websocket/api/exceptions/WebSocketTimeoutException.java, 2012-06-12 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee9/websocket/api/exceptions/PolicyViolationException.java, 2012-06-20 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee9/websocket/api/Session.java, 2012-11-28 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-client/src/test/java/examples/SecureWebSocketContainerExample.java, 2019-08-22 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-client/src/test/java/examples/SecureClientContainerExample.java, 2019-08-22 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-client/src/test/java/examples/EchoEndpoint.java, 2012-06-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-client/src/test/java/examples/OriginServerConfigurator.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-client/src/main/java/module-info.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-client/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/client/JakartaWebSocketClientContainerProvider.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-client/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/client/internal/AnnotatedClientEndpointConfig.java, 2022-01-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-client/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/client/internal/JakartaClientUpgradeRequest.java, 2022-01-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-client/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/client/internal/EmptyConfigurator.java, 2022-01-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-client/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/client/internal/BasicClientEndpointConfig.java, 2022-01-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-client/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/client/internal/JsrUpgradeListener.java, 2021-01-21 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-client/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/client/internal/JakartaWebSocketClientContainer.java, 2022-01-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-client/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/client/internal/JakartaWebSocketClientFrameHandlerFactory.java, 2022-01-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-client/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/client/JakartaWebSocketShutdownContainer.java, 2022-01-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-servlet/src/main/java/module-info.java, 2013-07-12 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-servlet/src/main/java/org/eclipse/jetty/ee9/websocket/servlet/WebSocketUpgradeFilter.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-common/src/test/java/org/eclipse/jetty/ee9/websocket/common/JettyWebSocketFrameHandlerTest.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-common/src/test/java/org/eclipse/jetty/ee9/websocket/common/MessageInputStreamTest.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-common/src/test/java/org/eclipse/jetty/ee9/websocket/common/EventQueue.java, 2012-06-12 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-common/src/test/java/org/eclipse/jetty/ee9/websocket/common/MessageOutputStreamTest.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-common/src/test/java/org/eclipse/jetty/ee9/websocket/common/EndPoints.java, 2020-03-22 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-common/src/test/java/org/eclipse/jetty/ee9/websocket/common/LocalEndpointMetadataTest.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-common/src/test/java/org/eclipse/jetty/ee9/websocket/common/OutgoingMessageCapture.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-common/src/test/java/org/eclipse/jetty/ee9/websocket/common/DummyContainer.java, 2019-02-21 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-common/src/test/java/org/eclipse/jetty/ee9/websocket/common/endpoints/adapters/ListenerEchoSocket.java, 2012-06-28 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-common/src/test/java/org/eclipse/jetty/ee9/websocket/common/endpoints/adapters/AdapterEchoSocket.java, 2012-06-25 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-common/src/test/java/org/eclipse/jetty/ee9/websocket/common/endpoints/adapters/AnnotatedEchoSocket.java, 2012-06-28 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-common/src/test/java/org/eclipse/jetty/ee9/websocket/common/invoke/NameParamIdentifier.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-common/src/test/java/org/eclipse/jetty/ee9/websocket/common/invoke/InvokerUtilsTest.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-common/src/main/java/module-info.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-common/src/main/java/org/eclipse/jetty/ee9/websocket/common/JettyWebSocketFrameHandlerFactory.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-common/src/main/java/org/eclipse/jetty/ee9/websocket/common/JettyWebSocketRemoteEndpoint.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-common/src/main/java/org/eclipse/jetty/ee9/websocket/common/JettyWebSocketFrameHandler.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-common/src/main/java/org/eclipse/jetty/ee9/websocket/common/JettyWebSocketFrame.java, 2015-05-06 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-common/src/main/java/org/eclipse/jetty/ee9/websocket/common/ExtensionConfigParser.java, 2019-03-13 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-common/src/main/java/org/eclipse/jetty/ee9/websocket/common/JettyWebSocketFrameHandlerMetadata.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-common/src/main/java/org/eclipse/jetty/ee9/websocket/common/package-info.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-common/src/main/java/org/eclipse/jetty/ee9/websocket/common/WebSocketSession.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-common/src/main/java/org/eclipse/jetty/ee9/websocket/common/JettyExtensionConfig.java, 2019-03-13 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-common/src/main/java/org/eclipse/jetty/ee9/websocket/common/SessionTracker.java, 2017-04-14 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-server/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/server/browser/JsrBrowserConfigurator.java, 2013-08-01 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-server/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/server/browser/JsrBrowserDebugTool.java, 2013-09-12 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-server/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/server/browser/JsrBrowserSocket.java, 2012-10-04 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-server/src/main/java/module-info.java, 2018-11-22 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-server/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/server/internal/AnnotatedServerEndpointConfig.java, 2013-07-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-server/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/server/internal/PathParamIdentifier.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-server/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/server/internal/JakartaServerUpgradeRequest.java, 2012-06-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-server/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/server/internal/JakartaWebSocketServerContainer.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-server/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/server/internal/PathParamServerEndpointConfig.java, 2012-08-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-server/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/server/internal/JsrHandshakeRequest.java, 2013-04-23 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-server/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/server/internal/BasicServerEndpointConfig.java, 2012-06-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-server/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/server/internal/JsrHandshakeResponse.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-server/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/server/internal/JakartaWebSocketServerFrameHandlerFactory.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-server/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/server/internal/JakartaWebSocketCreator.java, 2013-04-23 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-server/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/server/config/JakartaWebSocketConfiguration.java, 2016-05-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-server/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/server/config/ContainerDefaultConfigurator.java, 2013-04-23 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-server/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/server/config/JakartaWebSocketServletContainerInitializer.java, 2013-09-23 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/JakartaWebSocketFrameHandlerOnMessageBinaryTest.java, 2020-02-18 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/JakartaWebSocketFrameHandlerOnMessageBinaryStreamTest.java, 2020-03-12 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/JakartaWebSocketFrameHandlerOnMessageTextStreamTest.java, 2020-03-12 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/JakartaWebSocketFrameHandlerBadSignaturesTest.java, 2020-02-18 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/AbstractJakartaWebSocketFrameHandlerTest.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/handlers/ByteBufferWholeHandler.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/handlers/LongMessageHandler.java, 2012-05-08 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/handlers/StringWholeHandler.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/handlers/ExtendedMessageHandler.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/handlers/BaseMessageHandler.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/handlers/StringPartialHandler.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/handlers/ReaderWholeHandler.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/handlers/ByteArrayWholeHandler.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/handlers/ComboMessageHandler.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/handlers/ByteArrayPartialHandler.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/handlers/ByteBufferPartialHandler.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/handlers/InputStreamWholeHandler.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/JakartaWebSocketFrameHandlerOnCloseTest.java, 2020-03-12 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/JakartaWebSocketFrameHandlerOnOpenTest.java, 2020-03-12 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/AbstractSessionTest.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/JakartaWebSocketFrameHandlerOnMessageTextTest.java, 2020-02-18 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/messages/DecodedTextStreamMessageSinkTest.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/messages/InputStreamMessageSinkTest.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/messages/DecodedBinaryMessageSinkTest.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/messages/DecodedBinaryStreamMessageSinkTest.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/messages/MessageWriterTest.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/messages/ReaderMessageSinkTest.java, 2017-05-05 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/messages/AbstractMessageSinkTest.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/messages/DecodedTextMessageSinkTest.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/JakartaWebSocketFrameHandlerOnErrorTest.java, 2020-03-12 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/coders/tests/FruitDecoder.java, 2009-12-04 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/coders/tests/FruitTextEncoder.java, 2012-08-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/coders/tests/Fruit.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/coders/tests/BadDualDecoder.java, 2013-02-20 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/coders/tests/ExtDecoder.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/coders/tests/BadDualEncoder.java, 2012-08-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/coders/tests/FruitBinaryEncoder.java, 2012-07-05 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/sockets/TrackingSocket.java, 2012-06-25 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/Defaults.java, 2012-05-08 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/util/NameParamIdentifier.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/util/InvokerUtilsStaticParamsTest.java, 2020-02-18 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/util/ReflectUtilsTest.java, 2013-06-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/util/InvokerUtilsTest.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/DummyContainer.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/DummyFrameHandlerFactory.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/endpoints/AbstractStringEndpoint.java, 2012-06-25 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/endpoints/DummyEndpoint.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/common/endpoints/EchoStringEndpoint.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/module-info.java, 2012-09-13 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/PathParamProvider.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/JakartaWebSocketPongMessage.java, 2012-05-08 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/JakartaWebSocketRemoteEndpoint.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/JakartaWebSocketContainer.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/JakartaWebSocketAsyncRemote.java, 2013-02-12 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/JakartaWebSocketFrameHandlerFactory.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/JakartaWebSocketBasicRemote.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/RegisteredMessageHandler.java, 2012-06-12 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/UpgradeRequest.java, 2012-06-12 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/EndpointConfigWrapper.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/JakartaWebSocketSession.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/decoders/LongDecoder.java, 2012-06-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/decoders/ByteDecoder.java, 2012-06-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/decoders/DoubleDecoder.java, 2012-06-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/decoders/ByteArrayDecoder.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/decoders/ReaderDecoder.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/decoders/ByteBufferDecoder.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/decoders/AvailableDecoders.java, 2016-05-06 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/decoders/IntegerDecoder.java, 2012-06-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/decoders/ShortDecoder.java, 2012-06-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/decoders/StringDecoder.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/decoders/CharacterDecoder.java, 2012-06-25 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/decoders/RegisteredDecoder.java, 2021-01-21 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/decoders/InputStreamDecoder.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/decoders/FloatDecoder.java, 2012-06-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/decoders/BooleanDecoder.java, 2012-08-09 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/decoders/AbstractDecoder.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/ServerEndpointConfigWrapper.java, 2013-04-04 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/JakartaWebSocketFrameHandlerMetadata.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/JakartaWebSocketSessionListener.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/messages/AbstractDecodedMessageSink.java, 2021-01-21 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/messages/DecodedBinaryMessageSink.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/messages/DecodedTextStreamMessageSink.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/messages/DecodedBinaryStreamMessageSink.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/messages/DecodedTextMessageSink.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/ClientEndpointConfigWrapper.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/UpgradeRequestAdapter.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/JakartaWebSocketExtension.java, 2013-02-12 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/JakartaWebSocketMessageMetadata.java, 2021-01-21 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/InitException.java, 2012-06-12 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/PutListenerMap.java, 2019-12-17 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/ConfiguredEndpoint.java, 2012-08-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/SendHandlerCallback.java, 2012-08-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/JakartaWebSocketFrameHandler.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/SessionTracker.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/encoders/CharacterEncoder.java, 2012-05-08 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/encoders/ByteEncoder.java, 2012-05-08 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/encoders/ShortEncoder.java, 2012-08-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/encoders/RegisteredEncoder.java, 2022-01-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/encoders/FloatEncoder.java, 2012-08-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/encoders/ByteBufferEncoder.java, 2012-08-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/encoders/StringEncoder.java, 2012-08-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/encoders/AvailableEncoders.java, 2016-05-06 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/encoders/BooleanEncoder.java, 2012-08-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/encoders/EncodeFailedFuture.java, 2013-07-09 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/encoders/DoubleEncoder.java, 2012-08-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/encoders/ByteArrayEncoder.java, 2012-08-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/encoders/LongEncoder.java, 2012-05-08 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/encoders/IntegerEncoder.java, 2012-08-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/encoders/AbstractEncoder.java, 2012-08-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/common/JakartaWebSocketExtensionConfig.java, 2012-06-25 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-client/src/test/java/org/eclipse/jetty/ee9/websocket/client/WebSocketClientBadUriTest.java, 2012-08-17 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-client/src/test/java/org/eclipse/jetty/ee9/websocket/client/HttpClientInitTest.java, 2017-05-18 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-client/src/test/java/org/eclipse/jetty/ee9/websocket/client/WebSocketClientInitTest.java, 2016-11-28 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-client/src/test/java/examples/ClientDemo.java, 2012-07-03 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-client/src/test/java/examples/SimpleEchoClient.java, 2013-05-08 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-client/src/test/java/examples/SimpleEchoSocket.java, 2012-06-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-client/src/main/java/module-info.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-client/src/main/java/org/eclipse/jetty/ee9/websocket/client/JettyUpgradeListener.java, 2012-06-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-client/src/main/java/org/eclipse/jetty/ee9/websocket/client/WebSocketClient.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-client/src/main/java/org/eclipse/jetty/ee9/websocket/client/impl/DelegatedJettyClientUpgradeResponse.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-client/src/main/java/org/eclipse/jetty/ee9/websocket/client/impl/DelegatedJettyClientUpgradeRequest.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-client/src/main/java/org/eclipse/jetty/ee9/websocket/client/impl/JettyClientUpgradeRequest.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-client/src/main/java/org/eclipse/jetty/ee9/websocket/client/package-info.java, 2012-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-client/src/main/java/org/eclipse/jetty/ee9/websocket/client/config/JettyWebSocketClientConfiguration.java, 2016-05-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-client/src/main/java/org/eclipse/jetty/ee9/websocket/client/ClientUpgradeRequest.java, 2012-06-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/ParamsEndpoint.java, 2012-06-28 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/JettyWebSocketFilterTest.java, 2019-01-18 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/WebSocketStatsTest.java, 2019-02-26 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/ConnectMessageEndpoint.java, 2012-06-28 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/MaxOutgoingFramesTest.java, 2020-10-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/WebSocketOverHTTP2Test.java, 2019-08-14 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/LargeDeflateTest.java, 2022-01-19 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/SingleOnMessageTest.java, 2020-12-10 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/JettyWebSocketServletTest.java, 2019-01-18 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/CloseInOnOpenTest.java, 2019-01-18 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/proxy/WebSocketProxyTest.java, 2020-11-26 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/proxy/WebSocketProxy.java, 2020-11-26 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/AnnoMaxMessageEndpoint.java, 2012-06-28 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/JettyWebSocketRestartTest.java, 2021-01-08 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/SimpleStatusServlet.java, 2011-12-14 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/JettyWebSocketExtensionConfigTest.java, 2019-01-18 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/EchoSocket.java, 2012-06-28 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/server/SlowServerTest.java, 2019-01-29 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/server/PartialListenerTest.java, 2019-07-16 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/server/ServerCloseTest.java, 2019-01-29 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/server/CloseInOnCloseEndpointNewThread.java, 2012-06-28 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/server/FastFailEndpoint.java, 2012-06-28 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/server/FastCloseEndpoint.java, 2012-06-28 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/server/SlowServerEndpoint.java, 2019-01-29 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/server/FrameAnnotationTest.java, 2019-07-17 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/server/ServerCloseCreator.java, 2019-01-29 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/server/AbstractCloseEndpoint.java, 2019-01-29 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/server/ContainerEndpoint.java, 2019-01-29 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/server/FrameListenerTest.java, 2019-07-17 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/server/ServerConfigTest.java, 2019-05-16 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/server/CloseInOnCloseEndpoint.java, 2012-06-28 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/SuspendResumeTest.java, 2019-03-29 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/JettyOnCloseTest.java, 2020-01-29 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/GracefulCloseTest.java, 2020-06-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/client/ClientCloseTest.java, 2019-01-29 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/client/InvalidUpgradeServlet.java, 2019-12-20 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/client/ClientConnectTest.java, 2019-05-28 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/client/SlowClientTest.java, 2019-01-29 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/client/BadNetworkTest.java, 2019-01-29 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/client/ClientSessionsTest.java, 2019-01-29 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/client/WebSocketClientTest.java, 2019-05-28 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/client/ConnectFutureTest.java, 2020-07-23 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/client/ClientWriteThread.java, 2012-09-04 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/client/ClientConfigTest.java, 2019-05-13 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/client/ClientOpenSessionTracker.java, 2019-01-29 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/client/ClientTimeoutTest.java, 2020-07-08 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/JettyWebSocketWebApp.java, 2020-11-18 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/ConnectionHeaderTest.java, 2021-08-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/UpgradeRequestResponseTest.java, 2021-01-04 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/EchoCreator.java, 2012-05-08 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/JettyWebSocketNegotiationTest.java, 2019-01-18 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/JettyWebSocketServletAttributeTest.java, 2019-01-18 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/GetAuthHeaderEndpoint.java, 2012-06-28 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/examples/MyAuthedCreator.java, 2019-01-23 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/examples/MyBinaryEchoSocket.java, 2012-06-28 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/examples/MyEchoSocket.java, 2012-06-28 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/examples/MyAuthedServlet.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/examples/MyAdvancedEchoServlet.java, 2011-12-14 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/examples/MyAdvancedEchoCreator.java, 2019-01-23 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/examples/MyEchoServlet.java, 2011-12-14 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/CloseTrackingEndpoint.java, 2019-01-29 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/ErrorCloseTest.java, 2020-02-18 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/ConcurrentConnectTest.java, 2019-04-16 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/util/WSURITest.java, 2013-06-10 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/util/FutureWriteCallback.java, 2019-06-20 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/listeners/WebSocketListenerTest.java, 2020-04-14 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/listeners/AbstractAnnotatedListener.java, 2012-06-28 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/listeners/BinaryListeners.java, 2020-04-14 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/listeners/TextListeners.java, 2020-04-14 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/listeners/AbstractListener.java, 2012-08-20 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/PermessageDeflateBufferTest.java, 2021-03-17 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/autobahn/JettyAutobahnClient.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/autobahn/JettyAutobahnServer.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/autobahn/JettyAutobahnSocket.java, 2012-06-28 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/JettyClientClassLoaderTest.java, 2021-02-22 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/WebSocketServletExamplesTest.java, 2019-01-23 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/EventSocket.java, 2019-03-11 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/ProgrammaticWebSocketUpgradeTest.java, 2021-01-08 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/AnnotatedPartialListenerTest.java, 2021-06-11 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/extensions/ExtensionConfigTest.java, 2012-11-06 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/WebSocketStopTest.java, 2019-07-03 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee9/websocket/tests/WebAppTester.java, 2021-05-19 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-server/src/test/java/org/eclipse/jetty/ee9/websocket/server/browser/BrowserDebugTool.java, 2019-01-14 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-server/src/test/java/org/eclipse/jetty/ee9/websocket/server/browser/BrowserSocket.java, 2012-10-04 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-server/src/main/java/module-info.java, 2012-07-10 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-server/src/main/java/org/eclipse/jetty/ee9/websocket/server/JettyServerUpgradeRequest.java, 2019-03-13 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-server/src/main/java/org/eclipse/jetty/ee9/websocket/server/JettyWebSocketServlet.java, 2019-03-28 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-server/src/main/java/org/eclipse/jetty/ee9/websocket/server/internal/JettyServerFrameHandlerFactory.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-server/src/main/java/org/eclipse/jetty/ee9/websocket/server/internal/DelegatedServerUpgradeResponse.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-server/src/main/java/org/eclipse/jetty/ee9/websocket/server/internal/DelegatedServerUpgradeRequest.java, 2019-03-13 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-server/src/main/java/org/eclipse/jetty/ee9/websocket/server/JettyServerUpgradeResponse.java, 2019-03-13 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-server/src/main/java/org/eclipse/jetty/ee9/websocket/server/JettyWebSocketCreator.java, 2019-03-13 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-server/src/main/java/org/eclipse/jetty/ee9/websocket/server/JettyWebSocketServletFactory.java, 2019-03-28 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-server/src/main/java/org/eclipse/jetty/ee9/websocket/server/JettyWebSocketServerContainer.java, 2019-02-21 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-server/src/main/java/org/eclipse/jetty/ee9/websocket/server/config/JettyWebSocketServletContainerInitializer.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jetty-server/src/main/java/org/eclipse/jetty/ee9/websocket/server/config/JettyWebSocketConfiguration.java, 2016-05-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/JakartaClientShutdownWithServerWebAppTest.java, 2022-01-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/CloseInOnOpenTest.java, 2022-01-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/JsrEchoTest.java, 2017-05-03 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/PongContextListener.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/LargeAnnotatedTest.java, 2013-04-15 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/ReaderEchoTest.java, 2017-05-03 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/EndpointViaConfigTest.java, 2013-04-15 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/ServerDecoderTest.java, 2020-01-13 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/JakartaWebSocketFrameHandlerOnMessageTextStreamTest.java, 2020-03-12 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/MemoryUsageTest.java, 2014-02-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/DeploymentTest.java, 2021-01-21 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/PingPongTest.java, 2017-05-10 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/BasicEchoSocketContextListener.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/BasicEchoEndpointContextListener.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/PongSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/BasicEchoEndpointConfigContextListener.java, 2013-04-23 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/PartialEchoTest.java, 2017-05-03 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/StreamTest.java, 2014-03-06 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/DeploymentExceptionTest.java, 2016-08-18 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/JsrBatchModeTest.java, 2014-02-14 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/ContainerProviderServerTest.java, 2020-01-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/IdleTimeoutTest.java, 2017-05-04 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/TextStreamTest.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/LargeContainerTest.java, 2013-04-15 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/SessionTest.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/IdleTimeoutContextListener.java, 2013-04-23 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/PrimitivesBinaryEchoTest.java, 2017-05-03 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/AbstractJakartaWebSocketServerFrameHandlerTest.java, 2017-05-08 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/LargeEchoContextListener.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/examples/GetHttpSessionSocket.java, 2021-01-21 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/examples/WebSocketServerExamplesTest.java, 2021-01-21 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/examples/GetHttpSessionConfigurator.java, 2021-01-21 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/examples/StreamingEchoSocket.java, 2021-01-21 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/examples/MyAuthedSocket.java, 2021-01-21 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/examples/MyAuthedConfigurator.java, 2021-01-21 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/PrimitivesTextEchoTest.java, 2017-05-03 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/AnnotatedServerEndpointTest.java, 2013-12-12 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/StatelessTextMessageStringSocket.java, 2012-07-09 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/BasicEchoSocket.java, 2012-07-09 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/binary/ByteBufferSocket.java, 2013-07-10 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/BasicErrorThrowableSessionSocket.java, 2012-07-09 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/BasicErrorThrowableSocket.java, 2012-07-09 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/InvalidOpenIntSocket.java, 2012-05-08 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/BasicErrorSessionSocket.java, 2012-07-09 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/BasicCloseReasonSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/IdleTimeoutOnOpenSocket.java, 2012-07-09 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/BasicBinaryMessageByteBufferSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/BasicCloseReasonSessionSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/BasicOpenSocket.java, 2012-07-09 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/TrackingSocket.java, 2012-06-25 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/InvalidErrorErrorSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/pong/PongMessageEndpoint.java, 2012-07-09 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/BasicCloseSocket.java, 2012-07-09 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/BasicOpenSessionSocket.java, 2012-07-09 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/BasicErrorSessionThrowableSocket.java, 2012-07-09 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/InvalidCloseIntSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/echo/BasicEchoSocket.java, 2012-07-09 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/echo/BasicEchoEndpoint.java, 2012-07-09 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/echo/EchoReturnTextSocket.java, 2012-07-09 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/echo/EchoStatelessBasicTextSocket.java, 2012-06-25 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/echo/LargeEchoDefaultSocket.java, 2012-07-09 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/echo/EchoBasicTextSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/echo/LargeEchoConfiguredSocket.java, 2012-07-09 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/echo/EchoAsyncTextSocket.java, 2012-07-09 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/echo/EchoReturnEndpoint.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/echo/EchoStatelessAsyncTextSocket.java, 2012-07-09 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/InvalidOpenCloseReasonSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/BasicCloseSessionReasonSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/BasicPongMessageSocket.java, 2012-07-09 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/streaming/ReaderSocket.java, 2013-07-10 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/streaming/ReaderParamSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/streaming/InputStreamSocket.java, 2013-07-10 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/streaming/StringReturnReaderParamSocket.java, 2013-07-10 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/partial/PartialTextSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/partial/PartialTextSessionSocket.java, 2013-07-10 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/partial/PartialTrackingSocket.java, 2012-07-09 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/BasicTextMessageStringSocket.java, 2012-07-09 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/BasicOpenCloseSessionSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/InvalidOpenSessionIntSocket.java, 2012-05-08 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/primitives/BooleanTextParamSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/primitives/BooleanTextSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/primitives/IntTextSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/primitives/LongObjectTextSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/primitives/IntegerObjectTextSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/primitives/FloatTextSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/primitives/ByteTextSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/primitives/ShortObjectTextSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/primitives/IntParamTextSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/primitives/BooleanObjectTextSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/primitives/FloatObjectTextSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/primitives/DoubleTextSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/primitives/BooleanObjectTextParamSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/primitives/IntegerObjectParamTextSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/primitives/LongTextSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/primitives/DoubleObjectTextSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/primitives/CharacterObjectTextSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/primitives/ShortTextSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/primitives/ByteObjectTextSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/primitives/CharTextSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/DateTextSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/ConfiguredEchoSocket.java, 2013-12-12 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/idletimeout/OnOpenIdleTimeoutSocket.java, 2012-07-09 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/idletimeout/OnOpenIdleTimeoutEndpoint.java, 2012-07-09 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/ByteBufferSocket.java, 2013-07-10 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/BasicOpenCloseSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/IdleTimeoutOnOpenEndpoint.java, 2012-07-09 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/BasicErrorSocket.java, 2012-07-09 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/sockets/InvalidErrorIntSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/BinaryStreamTest.java, 2017-05-03 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/configs/EchoSocketConfigurator.java, 2013-08-01 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/AltFilterTest.java, 2013-04-15 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/WebSocketServerContainerExecutorTest.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/OnMessageReturnTest.java, 2013-04-15 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/BasicEchoSocketConfigContextListener.java, 2013-04-23 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/UriTemplateParameterTest.java, 2017-05-03 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/AddEndpointTest.java, 2020-06-13 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/JettyServerEndpointConfiguratorTest.java, 2013-04-23 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/SessionTrackingTest.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/ConfiguratorTest.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/WebAppClassLoaderTest.java, 2020-01-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/server/InputStreamEchoTest.java, 2017-05-03 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/SyntheticOnMessageTest.java, 2021-01-21 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/GracefulCloseTest.java, 2021-01-21 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/client/SessionAddMessageHandlerTest.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/client/DecoderReaderManySmallTest.java, 2017-04-26 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/client/DelayedStartClientTest.java, 2017-05-09 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/client/JsrClientTrackingSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/client/AnnotatedEchoTest.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/client/misbehaving/EndpointRuntimeOnOpen.java, 2012-06-25 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/client/misbehaving/MisbehavingClassTest.java, 2012-06-29 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/client/misbehaving/AnnotatedRuntimeOnOpen.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/client/EndpointEchoTest.java, 2012-06-29 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/client/JsrClientEchoTrackingSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/client/WriteTimeoutTest.java, 2012-06-29 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/client/AbstractClientSessionTest.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/client/samples/IntSocket.java, 2012-06-25 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/client/samples/CloseSessionReasonSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/client/samples/CloseSessionSocket.java, 2012-07-09 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/client/samples/CloseReasonSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/client/samples/CloseEndpointConfigSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/client/samples/CloseSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/client/samples/CloseReasonSessionSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/client/CookiesTest.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/client/AnnotatedClientEndpointTest.java, 2013-12-12 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/client/OnCloseTest.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/client/AnnotatedEchoClient.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/client/MessageReceivingTest.java, 2016-03-22 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/client/ConfiguratorTest.java, 2012-06-29 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/handlers/LongMessageHandler.java, 2012-05-08 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/handlers/ExtendedMessageHandler.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/handlers/AbstractHandler.java, 2021-01-21 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/handlers/BaseMessageHandler.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/handlers/AbstractAnnotatedHandler.java, 2021-01-21 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/handlers/BinaryHandlers.java, 2021-01-21 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/handlers/ComboMessageHandler.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/handlers/MessageHandlerTest.java, 2021-01-21 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/handlers/TextHandlers.java, 2021-01-21 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/UpgradeRequestResponseTest.java, 2021-01-21 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/JakartaClientShutdownWithServerEmbeddedTest.java, 2022-01-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/quotes/QuotesEncoderTest.java, 2017-04-26 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/quotes/QuotesSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/quotes/QuotesDecoderTextStreamTest.java, 2017-05-05 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/quotes/Quotes.java, 2012-07-09 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/quotes/QuotesDecoderTest.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/quotes/QuotesEncoder.java, 2012-08-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/quotes/QuotesDecoder.java, 2017-04-26 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/quotes/QuotesUtil.java, 2017-05-05 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/SingleMessageHandlerTest.java, 2022-01-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/coders/DecoderListTest.java, 2021-01-21 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/coders/ValidDualDecoder.java, 2012-06-25 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/coders/AvailableEncodersTest.java, 2016-05-06 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/coders/FruitDecoder.java, 2009-12-04 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/coders/FruitTextEncoder.java, 2012-08-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/coders/LongDecoderTest.java, 2019-06-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/coders/TimeEncoder.java, 2012-08-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/coders/DecoderTextStreamTest.java, 2017-05-05 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/coders/DateEncoder.java, 2012-08-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/coders/EncoderTextTest.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/coders/Quotes.java, 2012-07-09 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/coders/ValidDualEncoder.java, 2012-08-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/coders/DateTimeEncoder.java, 2012-08-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/coders/TimeDecoder.java, 2012-06-25 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/coders/EncoderLifeCycleTest.java, 2021-01-21 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/coders/CoderEventTracking.java, 2017-05-05 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/coders/DecoderTextTest.java, 2013-02-19 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/coders/Fruit.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/coders/BadDualDecoder.java, 2013-02-20 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/coders/AvailableDecodersTest.java, 2016-05-06 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/coders/DateDecoder.java, 2012-06-25 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/coders/FloatDecoderTest.java, 2019-06-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/coders/ExtDecoder.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/coders/QuotesEncoder.java, 2012-08-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/coders/BadDualEncoder.java, 2012-08-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/coders/QuotesDecoder.java, 2017-04-26 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/coders/DateTimeDecoder.java, 2012-06-25 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/coders/FruitBinaryEncoder.java, 2012-07-05 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/coders/QuotesUtil.java, 2017-05-05 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/coders/ShortDecoderTest.java, 2019-06-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/coders/IntegerDecoderTest.java, 2013-02-19 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/PathParamTest.java, 2019-08-28 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/RestartContextTest.java, 2019-06-06 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/JakartaWebSocketRestartTest.java, 2022-01-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/JakartaClientClassLoaderTest.java, 2022-01-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/autobahn/JakartaAutobahnClient.java, 2022-05-03 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/autobahn/JakartaAutobahnSocket.java, 2022-05-03 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/autobahn/JakartaAutobahnServer.java, 2022-05-03 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/JettySpecificConfigTest.java, 2019-08-28 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/pathparam/IntegerClassSocket.java, 2022-05-03 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/pathparam/StringClassSocket.java, 2022-05-03 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/pathparam/IntegerTypeSocket.java, 2022-05-03 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/pathparam/ShortTypeSocket.java, 2022-05-03 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/pathparam/CharacterTypeSocket.java, 2022-05-03 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/pathparam/DoubleTypeSocket.java, 2022-05-03 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/pathparam/LongTypeSocket.java, 2022-05-03 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/pathparam/ByteClassSocket.java, 2022-05-03 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/pathparam/FloatClassSocket.java, 2022-05-03 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/pathparam/BooleanClassSocket.java, 2022-05-03 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/pathparam/ShortClassSocket.java, 2022-05-03 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/pathparam/CharacterClassSocket.java, 2022-05-03 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/pathparam/ByteTypeSocket.java, 2022-05-03 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/pathparam/FloatTypeSocket.java, 2022-05-03 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/pathparam/BooleanTypeSocket.java, 2022-05-03 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/pathparam/LongClassSocket.java, 2022-05-03 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/pathparam/DoubleClassSocket.java, 2022-05-03 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/ProgrammaticWebSocketUpgradeTest.java, 2022-01-27 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/ServerConfigTest.java, 2020-01-28 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/JakartaOnCloseTest.java, 2020-01-29 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/com/acme/websocket/PongContextListener.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/com/acme/websocket/BasicEchoEndpoint.java, 2012-07-09 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/com/acme/websocket/LargeEchoDefaultSocket.java, 2012-07-09 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/com/acme/websocket/PongSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/com/acme/websocket/IdleTimeoutOnOpenSocket.java, 2012-07-09 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/com/acme/websocket/BasicEchoEndpointConfigContextListener.java, 2013-04-23 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/com/acme/websocket/IdleTimeoutContextListener.java, 2013-04-23 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/com/acme/websocket/PongMessageEndpoint.java, 2012-07-09 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/com/acme/websocket/LargeEchoContextListener.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/com/acme/websocket/IdleTimeoutOnOpenEndpoint.java, 2012-07-09 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/test/java/com/acme/websocket/OnOpenIdleTimeoutEndpoint.java, 2012-07-09 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/CoreServer.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/FunctionMethod.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/BadFrame.java, 2012-08-09 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/WSEndpointTracker.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/RawFrameBuilder.java, 2013-08-20 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/BiConsumerServiceServlet.java, 2011-12-14 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/EchoSocket.java, 2021-01-21 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/WSServer.java, 2013-04-15 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/CompletableFutureMethodHandle.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/SessionMatchers.java, 2012-07-09 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/framehandlers/FrameHandlerTracker.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/framehandlers/WholeMessageEcho.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/framehandlers/StaticText.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/framehandlers/FrameEcho.java, 2013-07-12 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/Timeouts.java, 2012-05-08 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/UnitGenerator.java, 2017-05-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/LocalFuzzer.java, 2017-05-03 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/WSURI.java, 2013-06-10 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/LocalServer.java, 2012-06-29 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/NetworkFuzzer.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/matchers/IsMessageHandlerTypeRegistered.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/matchers/IsMessageHandlerType.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/DummyEndpoint.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/Fuzzer.java, 2018-11-02 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/ParserCapture.java, 2011-08-26 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/UpgradeUtils.java, 2017-05-03 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/MessageType.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/Sha1Sum.java, 2015-12-07 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/EventSocket.java, 2019-03-11 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/WSEventTracker.java, 2009-03-24 -jetty-ee9/jetty-ee9-websocket/jetty-ee9-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee9/websocket/jakarta/tests/DataUtils.java, 2017-05-03 -jetty-ee9/jetty-ee9-jspc-maven-plugin/src/main/java/org/eclipse/jetty/ee9/jspc/plugin/package-info.java, 2012-11-02 -jetty-ee9/jetty-ee9-jspc-maven-plugin/src/main/java/org/eclipse/jetty/ee9/jspc/plugin/JspcMojo.java, 2012-08-29 -jetty-ee9/jetty-ee9-openid/src/test/java/org/eclipse/jetty/ee9/security/openid/JwtEncoder.java, 2019-11-20 -jetty-ee9/jetty-ee9-openid/src/test/java/org/eclipse/jetty/ee9/security/openid/JwtDecoderTest.java, 2019-11-20 -jetty-ee9/jetty-ee9-openid/src/test/java/org/eclipse/jetty/ee9/security/openid/OpenIdCredentialsTest.java, 2021-08-16 -jetty-ee9/jetty-ee9-openid/src/test/java/org/eclipse/jetty/ee9/security/openid/OpenIdProvider.java, 2019-09-11 -jetty-ee9/jetty-ee9-openid/src/test/java/org/eclipse/jetty/ee9/security/openid/OpenIdAuthenticationTest.java, 2019-08-29 -jetty-ee9/jetty-ee9-openid/src/test/java/org/eclipse/jetty/ee9/security/openid/OpenIdReamNameTest.java, 2021-11-10 -jetty-ee9/jetty-ee9-openid/src/main/java/module-info.java, 2013-07-12 -jetty-ee9/jetty-ee9-openid/src/main/java/org/eclipse/jetty/ee9/security/openid/OpenIdConfiguration.java, 2019-08-29 -jetty-ee9/jetty-ee9-openid/src/main/java/org/eclipse/jetty/ee9/security/openid/OpenIdAuthenticator.java, 2009-03-24 -jetty-ee9/jetty-ee9-openid/src/main/java/org/eclipse/jetty/ee9/security/openid/JwtDecoder.java, 2019-11-20 -jetty-ee9/jetty-ee9-openid/src/main/java/org/eclipse/jetty/ee9/security/openid/OpenIdUserPrincipal.java, 2011-03-29 -jetty-ee9/jetty-ee9-openid/src/main/java/org/eclipse/jetty/ee9/security/openid/OpenIdAuthenticatorFactory.java, 2019-08-29 -jetty-ee9/jetty-ee9-openid/src/main/java/org/eclipse/jetty/ee9/security/openid/OpenIdAuthConfiguration.java, 2021-10-26 -jetty-ee9/jetty-ee9-openid/src/main/java/org/eclipse/jetty/ee9/security/openid/OpenIdUserIdentity.java, 2010-12-17 -jetty-ee9/jetty-ee9-openid/src/main/java/org/eclipse/jetty/ee9/security/openid/OpenIdLoginService.java, 2019-08-29 -jetty-ee9/jetty-ee9-openid/src/main/java/org/eclipse/jetty/ee9/security/openid/OpenIdCredentials.java, 2019-08-29 -jetty-ee9/jetty-ee9-cdi/src/main/java/module-info.java, 2009-03-24 -jetty-ee9/jetty-ee9-cdi/src/main/java/org/eclipse/jetty/ee9/cdi/CdiDecoratingListener.java, 2009-03-24 -jetty-ee9/jetty-ee9-cdi/src/main/java/org/eclipse/jetty/ee9/cdi/CdiConfiguration.java, 2020-12-10 -jetty-ee9/jetty-ee9-cdi/src/main/java/org/eclipse/jetty/ee9/cdi/CdiSpiDecorator.java, 2019-08-08 -jetty-ee9/jetty-ee9-cdi/src/main/java/org/eclipse/jetty/ee9/cdi/CdiServletContainerInitializer.java, 2019-08-08 -jetty-ee9/jetty-ee9-nested/src/test/java/org/eclipse/jetty/ee9/nested/BlockingTest.java, 2021-02-02 -jetty-ee9/jetty-ee9-nested/src/test/java/org/eclipse/jetty/ee9/nested/HttpManyWaysToAsyncCommitTest.java, 2012-08-16 -jetty-ee9/jetty-ee9-nested/src/test/java/org/eclipse/jetty/ee9/nested/HttpWriterTest.java, 2009-10-07 -jetty-ee9/jetty-ee9-nested/src/test/java/org/eclipse/jetty/ee9/nested/MockConnector.java, 2022-05-03 -jetty-ee9/jetty-ee9-nested/src/test/java/org/eclipse/jetty/ee9/nested/ErrorHandlerTest.java, 2016-07-18 -jetty-ee9/jetty-ee9-nested/src/test/java/org/eclipse/jetty/ee9/nested/AbstractHandlerContainerTest.java, 2022-05-25 -jetty-ee9/jetty-ee9-nested/src/test/java/org/eclipse/jetty/ee9/nested/ResponseTest.java, 2009-03-24 -jetty-ee9/jetty-ee9-nested/src/test/java/org/eclipse/jetty/ee9/nested/AbstractHttpTest.java, 2012-08-17 -jetty-ee9/jetty-ee9-nested/src/test/java/org/eclipse/jetty/ee9/nested/HttpOutputTest.java, 2013-07-11 -jetty-ee9/jetty-ee9-nested/src/test/java/org/eclipse/jetty/ee9/nested/AsyncContentProducerTest.java, 2020-03-20 -jetty-ee9/jetty-ee9-nested/src/test/java/org/eclipse/jetty/ee9/nested/SessionHandlerTest.java, 2022-05-03 -jetty-ee9/jetty-ee9-nested/src/test/java/org/eclipse/jetty/ee9/nested/SuspendHandler.java, 2012-01-05 -jetty-ee9/jetty-ee9-nested/src/test/java/org/eclipse/jetty/ee9/nested/ServletWriterTest.java, 2019-10-15 -jetty-ee9/jetty-ee9-nested/src/test/java/org/eclipse/jetty/ee9/nested/CookiesTest.java, 2017-07-19 -jetty-ee9/jetty-ee9-nested/src/test/java/org/eclipse/jetty/ee9/nested/ContextHandlerTest.java, 2022-05-03 -jetty-ee9/jetty-ee9-nested/src/test/java/org/eclipse/jetty/ee9/nested/BlockingContentProducerTest.java, 2020-03-20 -jetty-ee9/jetty-ee9-nested/src/test/java/org/eclipse/jetty/ee9/nested/ServerConnectorAsyncContextTest.java, 2011-11-17 -jetty-ee9/jetty-ee9-nested/src/test/java/org/eclipse/jetty/ee9/nested/DumpHandler.java, 2009-03-24 -jetty-ee9/jetty-ee9-nested/src/test/java/org/eclipse/jetty/ee9/nested/AsyncCompletionTest.java, 2019-08-26 -jetty-ee9/jetty-ee9-nested/src/test/java/org/eclipse/jetty/ee9/nested/LocalAsyncContextTest.java, 2009-03-24 -jetty-ee9/jetty-ee9-nested/src/test/java/org/eclipse/jetty/ee9/nested/MockConnectionMetaData.java, 2022-05-03 -jetty-ee9/jetty-ee9-nested/src/test/java/org/eclipse/jetty/ee9/nested/HttpManyWaysToCommitTest.java, 2012-08-16 -jetty-ee9/jetty-ee9-nested/src/test/java/org/eclipse/jetty/ee9/nested/RequestTest.java, 2009-03-24 -jetty-ee9/jetty-ee9-nested/src/test/java/org/eclipse/jetty/ee9/nested/HttpServerTestFixture.java, 2022-05-03 -jetty-ee9/jetty-ee9-nested/src/test/java/org/eclipse/jetty/ee9/nested/ScopedHandlerTest.java, 2009-05-12 -jetty-ee9/jetty-ee9-nested/src/test/java/org/eclipse/jetty/ee9/nested/ServletRequestWrapperTest.java, 2019-08-08 -jetty-ee9/jetty-ee9-nested/src/test/java/org/eclipse/jetty/ee9/nested/AsyncRequestReadTest.java, 2009-09-12 -jetty-ee9/jetty-ee9-nested/src/main/java/module-info.java, 2009-03-24 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/ResponseWriter.java, 2015-04-29 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/resource/HttpContentRangeWriter.java, 2019-07-26 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/resource/InputStreamRangeWriter.java, 2019-07-26 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/resource/RangeWriter.java, 2011-08-11 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/resource/ByteBufferRangeWriter.java, 2013-04-04 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/resource/SeekableByteChannelRangeWriter.java, 2019-07-26 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/jmx/ContextHandlerMBean.java, 2009-03-24 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/jmx/AbstractHandlerMBean.java, 2009-06-30 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/jmx/package-info.java, 2012-11-02 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/MultiPartFormInputStream.java, 2011-07-07 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/BufferedResponseHandler.java, 2016-07-28 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/AbstractHandler.java, 2009-03-24 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/ServletRequestHttpWrapper.java, 2010-09-03 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/AsyncContextEvent.java, 2013-04-22 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/ResourceService.java, 2009-03-24 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/ServletResponseHttpWrapper.java, 2010-09-03 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/DebugHandler.java, 2009-07-28 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/HttpWriter.java, 2009-03-24 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/ContentProducer.java, 2020-03-20 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/HttpChannelListeners.java, 2019-08-27 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/HandlerContainer.java, 2009-03-24 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/Cookies.java, 2017-07-19 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/InetAccessHandler.java, 2016-09-01 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/ServletAttributes.java, 2012-06-25 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/HttpOutput.java, 2009-03-24 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/HandlerWrapper.java, 2009-03-24 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/ResourceHandler.java, 2009-03-24 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/InetAccessSet.java, 2020-02-27 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/AbstractHandlerContainer.java, 2009-03-24 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/FileBufferedResponseHandler.java, 2021-04-19 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/QuietServletException.java, 2009-03-24 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/BlockingContentProducer.java, 2020-03-20 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/SessionHandler.java, 2022-05-03 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/Authentication.java, 2009-04-17 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/ManagedAttributeListener.java, 2015-06-19 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/ScopedHandler.java, 2009-05-12 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/HotSwapHandler.java, 2009-03-24 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/ServletPathMapping.java, 2020-05-20 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/AsyncDelayHandler.java, 2014-10-23 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/ThreadLimitHandler.java, 2016-09-08 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/HttpInput.java, 2009-03-24 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/Utf8HttpWriter.java, 2012-08-20 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/Request.java, 2009-03-24 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/AsyncAttributes.java, 2020-05-12 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/InclusiveByteRange.java, 2009-03-24 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/package-info.java, 2012-11-02 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/Handler.java, 2009-03-24 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/MultiPartParser.java, 2018-03-08 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/AsyncContentProducer.java, 2020-03-20 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/DebugListener.java, 2015-09-11 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/ContextHandler.java, 2009-03-24 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/Iso88591HttpWriter.java, 2012-08-20 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/Dispatcher.java, 2009-03-24 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/HttpChannelState.java, 2009-03-24 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/PushBuilderImpl.java, 2015-03-11 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/ErrorHandler.java, 2009-03-24 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/IdleTimeoutHandler.java, 2013-11-08 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/HandlerCollection.java, 2009-03-24 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/HttpChannel.java, 2009-03-24 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/HandlerList.java, 2009-03-24 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/AsyncContextState.java, 2013-04-22 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/Response.java, 2009-03-24 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/UserIdentity.java, 2009-03-24 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/EncodingHttpWriter.java, 2012-08-20 -jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/SecuredRedirectHandler.java, 2014-09-30 -jetty-ee9/jetty-ee9-proxy/src/test/java/org/eclipse/jetty/ee9/proxy/EmptyServerHandler.java, 2012-09-05 -jetty-ee9/jetty-ee9-proxy/src/test/java/org/eclipse/jetty/ee9/proxy/ReverseProxyTest.java, 2015-02-10 -jetty-ee9/jetty-ee9-proxy/src/test/java/org/eclipse/jetty/ee9/proxy/ConnectHandlerTest.java, 2012-11-06 -jetty-ee9/jetty-ee9-proxy/src/test/java/org/eclipse/jetty/ee9/proxy/ProxyServletTest.java, 2012-01-20 -jetty-ee9/jetty-ee9-proxy/src/test/java/org/eclipse/jetty/ee9/proxy/ProxyServletLoadTest.java, 2015-03-05 -jetty-ee9/jetty-ee9-proxy/src/test/java/org/eclipse/jetty/ee9/proxy/BalancerServletTest.java, 2012-11-06 -jetty-ee9/jetty-ee9-proxy/src/test/java/org/eclipse/jetty/ee9/proxy/EchoHttpServlet.java, 2011-12-14 -jetty-ee9/jetty-ee9-proxy/src/test/java/org/eclipse/jetty/ee9/proxy/AsyncMiddleManServletTest.java, 2015-01-15 -jetty-ee9/jetty-ee9-proxy/src/test/java/org/eclipse/jetty/ee9/proxy/ClientAuthProxyTest.java, 2021-02-15 -jetty-ee9/jetty-ee9-proxy/src/test/java/org/eclipse/jetty/ee9/proxy/AbstractConnectHandlerTest.java, 2012-11-06 -jetty-ee9/jetty-ee9-proxy/src/test/java/org/eclipse/jetty/ee9/proxy/ProxyServletFailureTest.java, 2014-04-30 -jetty-ee9/jetty-ee9-proxy/src/test/java/org/eclipse/jetty/ee9/proxy/ConnectHandlerSSLTest.java, 2012-11-06 -jetty-ee9/jetty-ee9-proxy/src/test/java/org/eclipse/jetty/ee9/proxy/ProxyServer.java, 2012-07-20 -jetty-ee9/jetty-ee9-proxy/src/test/java/org/eclipse/jetty/ee9/proxy/EmptyHttpServlet.java, 2011-12-14 -jetty-ee9/jetty-ee9-proxy/src/test/java/org/eclipse/jetty/ee9/proxy/ForwardProxyServerTest.java, 2016-03-10 -jetty-ee9/jetty-ee9-proxy/src/test/java/org/eclipse/jetty/ee9/proxy/CachingProxyServlet.java, 2018-09-04 -jetty-ee9/jetty-ee9-proxy/src/test/java/org/eclipse/jetty/ee9/proxy/ForwardProxyTLSServerTest.java, 2013-06-08 -jetty-ee9/jetty-ee9-proxy/src/main/java/module-info.java, 2013-07-12 -jetty-ee9/jetty-ee9-proxy/src/main/java/org/eclipse/jetty/ee9/proxy/AsyncMiddleManServlet.java, 2015-01-15 -jetty-ee9/jetty-ee9-proxy/src/main/java/org/eclipse/jetty/ee9/proxy/AfterContentTransformer.java, 2015-04-09 -jetty-ee9/jetty-ee9-proxy/src/main/java/org/eclipse/jetty/ee9/proxy/AsyncProxyServlet.java, 2014-04-01 -jetty-ee9/jetty-ee9-proxy/src/main/java/org/eclipse/jetty/ee9/proxy/BalancerServlet.java, 2012-11-06 -jetty-ee9/jetty-ee9-proxy/src/main/java/org/eclipse/jetty/ee9/proxy/package-info.java, 2012-11-02 -jetty-ee9/jetty-ee9-proxy/src/main/java/org/eclipse/jetty/ee9/proxy/AbstractProxyServlet.java, 2015-01-15 -jetty-ee9/jetty-ee9-proxy/src/main/java/org/eclipse/jetty/ee9/proxy/ProxyServlet.java, 2009-03-24 -jetty-ee9/jetty-ee9-jaspi/src/test/java/org/eclipse/jetty/ee9/security/jaspi/DefaultAuthConfigFactoryTest.java, 2021-08-18 -jetty-ee9/jetty-ee9-jaspi/src/test/java/org/eclipse/jetty/ee9/security/jaspi/JaspiTest.java, 2014-12-12 -jetty-ee9/jetty-ee9-jaspi/src/test/java/org/eclipse/jetty/ee9/security/jaspi/HttpHeaderAuthModule.java, 2014-12-12 -jetty-ee9/jetty-ee9-jaspi/src/main/java/module-info.java, 2009-03-24 -jetty-ee9/jetty-ee9-jaspi/src/main/java/org/eclipse/jetty/ee9/security/jaspi/JaspiMessageInfo.java, 2009-03-24 -jetty-ee9/jetty-ee9-jaspi/src/main/java/org/eclipse/jetty/ee9/security/jaspi/modules/BaseAuthModule.java, 2009-03-24 -jetty-ee9/jetty-ee9-jaspi/src/main/java/org/eclipse/jetty/ee9/security/jaspi/modules/package-info.java, 2012-11-02 -jetty-ee9/jetty-ee9-jaspi/src/main/java/org/eclipse/jetty/ee9/security/jaspi/modules/BasicAuthenticationAuthModule.java, 2019-08-27 -jetty-ee9/jetty-ee9-jaspi/src/main/java/org/eclipse/jetty/ee9/security/jaspi/SimpleAuthConfig.java, 2009-03-24 -jetty-ee9/jetty-ee9-jaspi/src/main/java/org/eclipse/jetty/ee9/security/jaspi/ServletCallbackHandler.java, 2009-03-24 -jetty-ee9/jetty-ee9-jaspi/src/main/java/org/eclipse/jetty/ee9/security/jaspi/JaspiAuthenticatorFactory.java, 2009-03-24 -jetty-ee9/jetty-ee9-jaspi/src/main/java/org/eclipse/jetty/ee9/security/jaspi/package-info.java, 2012-11-02 -jetty-ee9/jetty-ee9-jaspi/src/main/java/org/eclipse/jetty/ee9/security/jaspi/DefaultAuthConfigFactory.java, 2021-08-18 -jetty-ee9/jetty-ee9-jaspi/src/main/java/org/eclipse/jetty/ee9/security/jaspi/callback/CredentialValidationCallback.java, 2009-03-24 -jetty-ee9/jetty-ee9-jaspi/src/main/java/org/eclipse/jetty/ee9/security/jaspi/callback/package-info.java, 2012-11-02 -jetty-ee9/jetty-ee9-jaspi/src/main/java/org/eclipse/jetty/ee9/security/jaspi/provider/SimpleServerAuthContext.java, 2021-08-18 -jetty-ee9/jetty-ee9-jaspi/src/main/java/org/eclipse/jetty/ee9/security/jaspi/provider/SimpleAuthConfig.java, 2009-03-24 -jetty-ee9/jetty-ee9-jaspi/src/main/java/org/eclipse/jetty/ee9/security/jaspi/provider/JaspiAuthConfigProvider.java, 2021-08-18 -jetty-ee9/jetty-ee9-jaspi/src/main/java/org/eclipse/jetty/ee9/security/jaspi/JaspiAuthenticator.java, 2009-03-24 -jetty-ee9/jetty-ee9-apache-jsp/src/test/java/org/eclipse/jetty/ee9/jsp/TestJspFileNameToClass.java, 2017-01-19 -jetty-ee9/jetty-ee9-apache-jsp/src/test/java/org/eclipse/jetty/ee9/jsp/TestJettyJspServlet.java, 2016-10-26 -jetty-ee9/jetty-ee9-apache-jsp/src/test/java/org/eclipse/jetty/ee9/jsp/TestJettyTldPreScanned.java, 2017-10-10 -jetty-ee9/jetty-ee9-apache-jsp/src/main/java/module-info.java, 2012-07-10 -jetty-ee9/jetty-ee9-apache-jsp/src/main/java/org/eclipse/jetty/ee9/apache/jsp/JettyTldPreScanned.java, 2017-10-10 -jetty-ee9/jetty-ee9-apache-jsp/src/main/java/org/eclipse/jetty/ee9/apache/jsp/JettyJasperInitializer.java, 2014-03-14 -jetty-ee9/jetty-ee9-apache-jsp/src/main/java/org/eclipse/jetty/ee9/apache/jsp/JuliLog.java, 2014-03-14 -jetty-ee9/jetty-ee9-apache-jsp/src/main/java/org/eclipse/jetty/ee9/jsp/JettyJspServlet.java, 2014-11-26 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-websocket-client-webapp/src/main/java/org/eclipse/jetty/ee9/tests/webapp/websocket/WebSocketClientServlet.java, 2020-09-29 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-websocket-client-webapp/src/main/java/org/eclipse/jetty/ee9/tests/webapp/websocket/EchoEndpoint.java, 2012-07-09 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-quickstart/src/test/java/org/eclipse/jetty/ee9/quickstart/QuickStartTest.java, 2014-08-27 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-quickstart/src/test/java/org/eclipse/jetty/ee9/quickstart/Quickstart.java, 2014-03-17 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-quickstart/src/test/java/org/eclipse/jetty/ee9/quickstart/PreconfigureStandardTestWar.java, 2014-03-17 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-quickstart/src/test/java/org/eclipse/jetty/ee9/quickstart/QuickStartStandardTestWar.java, 2012-05-08 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-quickstart/src/test/java/org/eclipse/jetty/ee9/quickstart/QuickStartSpecWar.java, 2012-08-31 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-quickstart/src/test/java/org/eclipse/jetty/ee9/quickstart/QuickStartJNDIWar.java, 2009-03-24 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-quickstart/src/test/java/org/eclipse/jetty/ee9/quickstart/PreconfigureJNDIWar.java, 2013-07-10 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-quickstart/src/test/java/org/eclipse/jetty/ee9/quickstart/PreconfigureSpecWar.java, 2014-03-17 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-badinit-webapp/src/main/java/org/eclipse/jetty/ee10/test/BadServletInit.java, 2011-12-14 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-cdi-common-webapp/src/main/java/org/eclipse/jetty/test/ManifestServerID.java, 2019-06-05 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-cdi-common-webapp/src/main/java/org/eclipse/jetty/test/OldGreetings.java, 2019-06-05 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-cdi-common-webapp/src/main/java/org/eclipse/jetty/test/GreetingsServlet.java, 2011-12-14 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-cdi-common-webapp/src/main/java/org/eclipse/jetty/test/ServerIDFilter.java, 2009-03-24 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-cdi-common-webapp/src/main/java/org/eclipse/jetty/test/Greetings.java, 2012-11-02 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-cdi-common-webapp/src/main/java/org/eclipse/jetty/test/FriendlyGreetings.java, 2012-07-09 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-cdi-common-webapp/src/main/java/org/eclipse/jetty/test/MyContextListener.java, 2009-03-24 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-cdi-common-webapp/src/main/java/org/eclipse/jetty/test/InfoServlet.java, 2011-12-14 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-cdi-common-webapp/src/main/java/org/eclipse/jetty/test/ServerID.java, 2012-11-02 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-openid-webapp/src/main/java/org/eclipse/jetty/test/openid/ErrorPage.java, 2011-12-14 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-openid-webapp/src/main/java/org/eclipse/jetty/test/openid/AdminPage.java, 2011-12-14 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-openid-webapp/src/main/java/org/eclipse/jetty/test/openid/HomePage.java, 2022-02-08 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-openid-webapp/src/main/java/org/eclipse/jetty/test/openid/LogoutPage.java, 2011-12-14 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-openid-webapp/src/main/java/org/eclipse/jetty/test/openid/LoginPage.java, 2011-12-14 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-felix-webapp/src/main/java/org/eclipse/jetty/demo/InfoServlet.java, 2011-12-14 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-felix-webapp/src/main/java/org/eclipse/jetty/demo/AppListener.java, 2019-06-12 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-bad-websocket-webapp/src/main/java/org/eclipse/jetty/ee9/tests/webapp/websocket/bad/StringSequence.java, 2011-08-11 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-bad-websocket-webapp/src/main/java/org/eclipse/jetty/ee9/tests/webapp/websocket/bad/BadOnOpenServerEndpoint.java, 2012-07-09 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-bad-websocket-webapp/src/main/java/org/eclipse/jetty/ee9/tests/webapp/websocket/bad/BadOnCloseServerEndpoint.java, 2012-07-09 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-websocket-webapp/src/main/java/org/eclipse/jetty/ee9/tests/webapp/websocket/StringSequence.java, 2011-08-11 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-websocket-webapp/src/main/java/org/eclipse/jetty/ee9/tests/webapp/websocket/EchoEndpoint.java, 2009-03-24 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-websocket-webapp/src/main/java/org/eclipse/jetty/ee9/tests/webapp/websocket/StringSequenceDecoder.java, 2009-03-24 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-client-transports/src/test/java/org/eclipse/jetty/ee9/test/client/transport/InformationalResponseTest.java, 2022-06-29 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-client-transports/src/test/java/org/eclipse/jetty/ee9/test/client/transport/HttpTrailersTest.java, 2017-04-03 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-client-transports/src/test/java/org/eclipse/jetty/ee9/test/client/transport/VirtualThreadsTest.java, 2022-08-18 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-client-transports/src/test/java/org/eclipse/jetty/ee9/test/client/transport/RequestReaderTest.java, 2021-05-19 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-client-transports/src/test/java/org/eclipse/jetty/ee9/test/client/transport/PushCacheFilterTest.java, 2022-11-21 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-client-transports/src/test/java/org/eclipse/jetty/ee9/test/client/transport/AsyncIOServletTest.java, 2013-08-12 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-client-transports/src/test/java/org/eclipse/jetty/ee9/test/client/transport/BlockedIOTest.java, 2021-02-03 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-client-transports/src/test/java/org/eclipse/jetty/ee9/test/client/transport/HttpClientContinueTest.java, 2012-10-10 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-client-transports/src/test/java/org/eclipse/jetty/ee9/test/client/transport/ServerTimeoutsTest.java, 2016-08-31 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-client-transports/src/test/java/org/eclipse/jetty/ee9/test/client/transport/AbstractTest.java, 2022-08-17 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-websocket-client-provided-webapp/src/main/java/org/eclipse/jetty/ee9/tests/webapp/websocket/WebSocketClientServlet.java, 2020-09-29 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-websocket-client-provided-webapp/src/main/java/org/eclipse/jetty/ee9/tests/webapp/websocket/EchoEndpoint.java, 2012-07-09 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-loginservice/src/test/java/org/eclipse/jetty/ee9/loginservice/DatabaseLoginServiceTestServer.java, 2014-07-17 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-loginservice/src/test/java/org/eclipse/jetty/ee9/loginservice/JdbcLoginServiceTest.java, 2010-05-29 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-loginservice/src/test/java/org/eclipse/jetty/ee9/loginservice/DataSourceLoginServiceTest.java, 2014-07-17 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-hazelcast/src/test/java/org/eclipse/jetty/ee9/session/hazelcast/HazelcastClusteredInvalidationSessionTest.java, 2010-01-26 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-hazelcast/src/test/java/org/eclipse/jetty/ee9/session/hazelcast/client/ClientOrphanedSessionTest.java, 2017-05-29 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-hazelcast/src/test/java/org/eclipse/jetty/ee9/session/hazelcast/client/HazelcastSessionDataStoreTest.java, 2018-03-28 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-hazelcast/src/test/java/org/eclipse/jetty/ee9/session/hazelcast/client/ClientSessionScavengingTest.java, 2012-10-26 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-hazelcast/src/test/java/org/eclipse/jetty/ee9/session/hazelcast/HazelcastSessionDataStoreTest.java, 2018-03-28 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-hazelcast/src/test/java/org/eclipse/jetty/ee9/session/hazelcast/ClusteredSessionScavengingTest.java, 2010-01-26 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-hazelcast/src/test/java/org/eclipse/jetty/ee9/session/hazelcast/HazelcastTestHelper.java, 2018-03-28 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-hazelcast/src/test/java/org/eclipse/jetty/ee9/session/hazelcast/ClusteredOrphanedSessionTest.java, 2010-01-26 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-jdbc/src/test/java/org/eclipse/jetty/ee9/session/jdbc/ClusteredSessionMigrationTest.java, 2010-01-26 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-jdbc/src/test/java/org/eclipse/jetty/ee9/session/jdbc/JDBCSessionDataStoreTest.java, 2018-03-28 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-jdbc/src/test/java/org/eclipse/jetty/ee9/session/jdbc/ClusteredSessionScavengingTest.java, 2010-01-26 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-jdbc/src/test/java/org/eclipse/jetty/ee9/session/jdbc/SessionTableSchemaTest.java, 2017-06-06 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-jdbc/src/test/java/org/eclipse/jetty/ee9/session/jdbc/ReloadedSessionMissingClassTest.java, 2013-03-08 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-jdbc/src/test/java/org/eclipse/jetty/ee9/session/jdbc/ClusteredInvalidationSessionTest.java, 2010-01-26 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-jdbc/src/test/java/org/eclipse/jetty/ee9/session/jdbc/ClusteredOrphanedSessionTest.java, 2010-01-26 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-jdbc/src/test/java/org/eclipse/jetty/ee9/session/jdbc/WebAppObjectInSessionTest.java, 2010-01-26 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-mongodb/src/test/java/org/eclipse/jetty/ee9/session/nosql/mongodb/MongoTestHelper.java, 2017-01-13 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-mongodb/src/test/java/org/eclipse/jetty/ee9/session/nosql/mongodb/ClusteredInvalidateSessionTest.java, 2010-01-26 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-mongodb/src/test/java/org/eclipse/jetty/ee9/session/nosql/mongodb/MongoSessionDataStoreTest.java, 2018-03-28 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-mongodb/src/test/java/org/eclipse/jetty/ee9/session/nosql/mongodb/ClusteredSessionScavengingTest.java, 2010-01-26 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-mongodb/src/test/java/org/eclipse/jetty/ee9/session/nosql/mongodb/ClusteredOrphanedSessionTest.java, 2010-01-26 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-mongodb/src/test/java/org/eclipse/jetty/ee9/session/nosql/mongodb/AttributeNameTest.java, 2014-10-01 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-file/src/test/java/org/eclipse/jetty/ee9/session/file/ClusteredOrphanedSessionTest.java, 2010-01-26 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-common/src/test/java/org/eclipse/jetty/ee9/session/IdleSessionTest.java, 2012-10-26 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-common/src/test/java/org/eclipse/jetty/ee9/session/ReentrantRequestSessionTest.java, 2010-01-26 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-common/src/test/java/org/eclipse/jetty/ee9/session/ModifyMaxInactiveIntervalTest.java, 2010-01-26 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-common/src/test/java/org/eclipse/jetty/ee9/session/DeleteUnloadableSessionTest.java, 2016-06-01 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-common/src/test/java/org/eclipse/jetty/ee9/session/RemoveSessionTest.java, 2010-01-26 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-common/src/test/java/org/eclipse/jetty/ee9/session/SessionRenewTest.java, 2012-10-26 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-common/src/test/java/org/eclipse/jetty/ee9/session/RequestScopedSessionSaveTest.java, 2022-01-14 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-common/src/test/java/org/eclipse/jetty/ee9/session/CreationTest.java, 2017-01-13 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-common/src/test/java/org/eclipse/jetty/ee9/session/RequestDispatchedSessionTest.java, 2019-10-14 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-common/src/test/java/org/eclipse/jetty/ee9/session/NonClusteredSessionScavengingTest.java, 2010-01-26 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-common/src/test/java/org/eclipse/jetty/ee9/session/RedirectSessionTest.java, 2016-07-28 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-common/src/test/java/org/eclipse/jetty/ee9/session/ClientCrossContextSessionTest.java, 2010-01-26 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-common/src/test/java/org/eclipse/jetty/ee9/session/SessionInvalidateCreateScavengeTest.java, 2012-05-02 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-common/src/test/java/org/eclipse/jetty/ee9/session/SameContextForwardedSessionTest.java, 2015-04-23 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-common/src/test/java/org/eclipse/jetty/ee9/session/DuplicateCookieTest.java, 2019-10-16 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-common/src/test/java/org/eclipse/jetty/ee9/session/SessionInvalidationTest.java, 2010-01-26 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-common/src/test/java/org/eclipse/jetty/ee9/session/ConcurrencyTest.java, 2010-01-26 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-common/src/test/java/org/eclipse/jetty/ee9/session/AsyncTest.java, 2018-12-18 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-common/src/main/java/org/eclipse/jetty/ee9/session/AbstractSessionTestBase.java, 2009-03-24 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-common/src/main/java/org/eclipse/jetty/ee9/session/AbstractClusteredSessionScavengingTest.java, 2010-01-26 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-common/src/main/java/org/eclipse/jetty/ee9/session/AbstractClusteredOrphanedSessionTest.java, 2010-01-26 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-common/src/main/java/org/eclipse/jetty/ee9/session/TestHttpSessionListener.java, 2018-03-28 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-common/src/main/java/org/eclipse/jetty/ee9/session/WebAppObjectInSessionServlet.java, 2010-01-26 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-common/src/main/java/org/eclipse/jetty/ee9/session/AbstractClusteredInvalidationSessionTest.java, 2010-01-26 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-common/src/main/java/org/eclipse/jetty/ee9/session/TestSessionDataStore.java, 2015-08-27 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-common/src/main/java/org/eclipse/jetty/ee9/session/FooInvocationHandler.java, 2010-01-26 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-common/src/main/java/org/eclipse/jetty/ee9/session/Foo.java, 2009-03-24 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-common/src/main/java/org/eclipse/jetty/ee9/session/TestSessionDataStoreFactory.java, 2010-01-26 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-common/src/main/java/org/eclipse/jetty/ee9/session/SessionTestSupport.java, 2010-01-26 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-common/src/main/java/org/eclipse/jetty/ee9/session/AbstractWebAppObjectInSessionTest.java, 2010-01-26 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-common/src/main/java/org/eclipse/jetty/ee9/session/TestFoo.java, 2011-03-29 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-memcached/src/test/java/org/eclipse/jetty/ee9/session/memcached/CachingSessionDataStoreTest.java, 2010-01-26 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-memcached/src/test/java/org/eclipse/jetty/ee9/session/memcached/MemcachedTestHelper.java, 2016-06-17 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-infinispan/src/test/java/org/eclipse/jetty/ee9/session/infinispan/InfinispanSessionDataStoreTest.java, 2018-03-28 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-infinispan/src/test/java/org/eclipse/jetty/ee9/session/infinispan/SerializedInfinispanSessionDataStoreTest.java, 2018-03-28 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-infinispan/src/test/java/org/eclipse/jetty/ee9/session/infinispan/LoggingUtil.java, 2010-01-26 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-infinispan/src/test/java/org/eclipse/jetty/ee9/session/infinispan/ClusteredSerializedSessionScavengingTest.java, 2012-10-26 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-infinispan/src/test/java/org/eclipse/jetty/ee9/session/infinispan/ClusteredSessionScavengingTest.java, 2012-10-26 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-infinispan/src/test/java/org/eclipse/jetty/ee9/session/infinispan/InfinispanTestSupport.java, 2015-04-02 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-infinispan/src/test/java/org/eclipse/jetty/ee9/session/infinispan/InfinispanFileSessionDataStoreTest.java, 2009-03-24 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-infinispan/src/test/java/org/eclipse/jetty/ee9/session/infinispan/ClusteredOrphanedSessionTest.java, 2012-10-26 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-infinispan/src/test/java/org/eclipse/jetty/ee9/session/infinispan/remote/RemoteClusteredInvalidationSessionTest.java, 2015-04-02 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-infinispan/src/test/java/org/eclipse/jetty/ee9/session/infinispan/remote/RemoteInfinispanTestSupport.java, 2015-04-02 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-infinispan/src/test/java/org/eclipse/jetty/ee9/session/infinispan/remote/RemoteClusteredSessionScavengingTest.java, 2012-10-26 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-infinispan/src/test/java/org/eclipse/jetty/ee9/session/infinispan/remote/RemoteInfinispanSessionDataStoreTest.java, 2018-03-28 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-gcloud/src/test/java/org/eclipse/jetty/ee9/session/gcloud/InvalidationSessionTest.java, 2015-04-02 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-gcloud/src/test/java/org/eclipse/jetty/ee9/session/gcloud/GCloudSessionTestSupport.java, 2015-09-18 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-gcloud/src/test/java/org/eclipse/jetty/ee9/session/gcloud/GCloudSessionDataStoreTest.java, 2018-03-28 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-gcloud/src/test/java/org/eclipse/jetty/ee9/session/gcloud/ClusteredSessionScavengingTest.java, 2010-01-26 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-sessions/jetty-ee9-test-sessions-gcloud/src/test/java/org/eclipse/jetty/ee9/session/gcloud/ClusteredOrphanedSessionTest.java, 2010-01-26 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-jndi/src/test/java/org/eclipse/jetty/ee9/jndi/factories/TestMailSessionReference.java, 2009-03-24 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-integration/src/test/java/org/eclipse/jetty/ee9/test/rfcs/RFC2616BaseTest.java, 2009-07-08 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-integration/src/test/java/org/eclipse/jetty/ee9/test/rfcs/RFC2616NIOHttpTest.java, 2009-07-08 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-integration/src/test/java/org/eclipse/jetty/ee9/test/rfcs/RFC2616NIOHttpsTest.java, 2009-07-08 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-integration/src/test/java/org/eclipse/jetty/ee9/test/DefaultHandlerTest.java, 2009-07-08 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-integration/src/test/java/org/eclipse/jetty/ee9/test/RecoverFailedSelectorTest.java, 2020-04-27 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-integration/src/test/java/org/eclipse/jetty/ee9/test/AllowedResourceAliasCheckerTest.java, 2021-12-07 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-integration/src/test/java/org/eclipse/jetty/ee9/test/GzipWithSendErrorTest.java, 2020-11-18 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-integration/src/test/java/org/eclipse/jetty/ee9/test/HttpInputIntegrationTest.java, 2015-02-25 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-integration/src/test/java/org/eclipse/jetty/ee9/test/DeploymentErrorTest.java, 2018-01-08 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-integration/src/test/java/org/eclipse/jetty/ee9/test/AliasCheckerSymlinkTest.java, 2021-09-21 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-integration/src/test/java/org/eclipse/jetty/ee9/test/DigestPostTest.java, 2010-03-16 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-integration/src/test/java/org/eclipse/jetty/ee9/test/FailedSelectorTest.java, 2019-08-30 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-integration/src/test/java/org/eclipse/jetty/ee9/test/AnnotatedAsyncListenerTest.java, 2019-06-07 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-integration/src/test/java/org/eclipse/jetty/ee9/test/HttpInputInterceptorTest.java, 2021-04-15 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-integration/src/test/java/org/eclipse/jetty/ee9/test/support/StringUtil.java, 2009-07-08 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-integration/src/test/java/org/eclipse/jetty/ee9/test/support/rawhttp/HttpResponseTesterTest.java, 2009-07-08 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-integration/src/test/java/org/eclipse/jetty/ee9/test/support/rawhttp/HttpTesting.java, 2009-07-08 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-integration/src/test/java/org/eclipse/jetty/ee9/test/support/rawhttp/HttpSocketImpl.java, 2009-03-24 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-integration/src/test/java/org/eclipse/jetty/ee9/test/support/rawhttp/HttpRequestTesterTest.java, 2009-07-08 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-integration/src/test/java/org/eclipse/jetty/ee9/test/support/rawhttp/HttpSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-integration/src/test/java/org/eclipse/jetty/ee9/test/support/rawhttp/HttpsSocketImpl.java, 2009-07-08 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-integration/src/test/java/org/eclipse/jetty/ee9/test/support/XmlBasedJettyServer.java, 2009-07-08 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-integration/src/test/java/org/eclipse/jetty/ee9/test/KeyStoreScannerTest.java, 2020-07-10 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-integration/src/test/java/org/eclipse/jetty/ee9/test/websocket/JettySimpleEchoSocket.java, 2012-06-27 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-integration/src/test/java/org/eclipse/jetty/ee9/test/websocket/JettyWebSocketTest.java, 2019-03-21 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-integration/src/test/java/org/eclipse/jetty/ee9/test/websocket/JakartaWebSocketTest.java, 2019-03-21 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-integration/src/test/java/org/eclipse/jetty/ee9/test/websocket/JakartaSimpleEchoSocket.java, 2009-03-24 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-integration/src/test/java/org/eclipse/jetty/ee9/test/DeploymentErrorInitializer.java, 2012-07-10 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-webapp-rfc2616/src/main/java/org/eclipse/jetty/tests/webapp/HttpMethodsServlet.java, 2009-07-08 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-http2-webapp/src/test/java/org/eclipse/jetty/test/webapp/HTTP2FromWebAppIT.java, 2017-09-30 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-http2-webapp/src/main/java/org/eclipse/jetty/test/webapp/HTTP2Servlet.java, 2011-12-14 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-http2-webapp/src/main/java/org/eclipse/jetty/test/webapp/HTTP1Servlet.java, 2017-09-30 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-jmx/jetty-ee9-jmx-webapp-it/src/test/java/org/eclipse/jetty/ee9/test/jmx/JmxIT.java, 2015-01-16 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-jmx/jetty-ee9-jmx-webapp/src/main/java/org/eclipse/jetty/ee9/test/jmx/MyContainerInitializer.java, 2009-03-24 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-jmx/jetty-ee9-jmx-webapp/src/main/java/org/eclipse/jetty/ee9/test/jmx/Echoer.java, 2012-08-03 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-jmx/jetty-ee9-jmx-webapp/src/main/java/org/eclipse/jetty/ee9/test/jmx/jmx/PingerMBean.java, 2012-07-23 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-jmx/jetty-ee9-jmx-webapp/src/main/java/org/eclipse/jetty/ee9/test/jmx/jmx/EchoerMBean.java, 2012-08-03 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-jmx/jetty-ee9-jmx-webapp/src/main/java/org/eclipse/jetty/ee9/test/jmx/CommonComponent.java, 2012-07-23 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-jmx/jetty-ee9-jmx-webapp/src/main/java/org/eclipse/jetty/ee9/test/jmx/PingServlet.java, 2009-03-24 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-jmx/jetty-ee9-jmx-webapp/src/main/java/org/eclipse/jetty/ee9/test/jmx/Pinger.java, 2009-03-24 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-cdi/src/test/java/org/eclipse/jetty/ee9/cdi/tests/GreetingsServlet.java, 2011-12-14 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-cdi/src/test/java/org/eclipse/jetty/ee9/cdi/tests/EmbeddedWeldTest.java, 2020-09-07 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-cdi/src/test/java/org/eclipse/jetty/ee9/cdi/tests/MyFilter.java, 2009-03-24 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-cdi/src/test/java/org/eclipse/jetty/ee9/cdi/tests/Greetings.java, 2012-11-02 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-cdi/src/test/java/org/eclipse/jetty/ee9/cdi/tests/FriendlyGreetings.java, 2012-07-09 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-cdi/src/test/java/org/eclipse/jetty/ee9/cdi/tests/MyContextListener.java, 2009-03-24 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-cdi/src/test/java/org/eclipse/jetty/ee9/cdi/tests/websocket/JettyWebSocketCdiTest.java, 2021-03-31 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-cdi/src/test/java/org/eclipse/jetty/ee9/cdi/tests/websocket/JavaxWebSocketCdiTest.java, 2021-03-31 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-cdi/src/test/java/org/eclipse/jetty/ee9/cdi/tests/websocket/LogFactory.java, 2021-03-31 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-simple-session-webapp/src/main/java/org/eclipse/jetty/test/session/SessionTest.java, 2011-12-14 -jetty-ee9/jetty-ee9-tests/jetty-ee9-test-simple-session-webapp/src/main/java/org/eclipse/jetty/test/session/Chocolate.java, 2009-03-24 -documentation/jetty-documentation/src/main/java/org/eclipse/jetty/docs/programming/server/http/HTTPServerDocs.java, 2020-04-08 -documentation/jetty-documentation/src/main/java/org/eclipse/jetty/docs/programming/server/session/SessionDocs.java, 2020-09-14 -documentation/jetty-documentation/src/main/java/org/eclipse/jetty/docs/programming/server/HandlerDocs.java, 2022-07-08 -documentation/jetty-documentation/src/main/java/org/eclipse/jetty/docs/programming/server/http2/HTTP2ServerDocs.java, 2020-04-13 -documentation/jetty-documentation/src/main/java/org/eclipse/jetty/docs/programming/server/ServerDocs.java, 2020-09-08 -documentation/jetty-documentation/src/main/java/org/eclipse/jetty/docs/programming/server/websocket/WebSocketServerDocs.java, 2021-09-15 -documentation/jetty-documentation/src/main/java/org/eclipse/jetty/docs/programming/server/http3/HTTP3ServerDocs.java, 2020-04-13 -documentation/jetty-documentation/src/main/java/org/eclipse/jetty/docs/programming/SelectorManagerDocs.java, 2019-08-07 -documentation/jetty-documentation/src/main/java/org/eclipse/jetty/docs/programming/client/ClientConnectorDocs.java, 2019-07-31 -documentation/jetty-documentation/src/main/java/org/eclipse/jetty/docs/programming/client/http/HTTPClientDocs.java, 2020-03-31 -documentation/jetty-documentation/src/main/java/org/eclipse/jetty/docs/programming/client/http2/HTTP2ClientDocs.java, 2020-04-06 -documentation/jetty-documentation/src/main/java/org/eclipse/jetty/docs/programming/client/websocket/WebSocketClientDocs.java, 2021-04-20 -documentation/jetty-documentation/src/main/java/org/eclipse/jetty/docs/programming/client/http3/HTTP3ClientDocs.java, 2020-04-06 -documentation/jetty-documentation/src/main/java/org/eclipse/jetty/docs/programming/WebSocketDocs.java, 2021-04-20 -documentation/jetty-documentation/src/main/java/org/eclipse/jetty/docs/programming/ComponentDocs.java, 2020-04-20 -documentation/jetty-documentation/src/main/java/org/eclipse/jetty/docs/programming/HTTP2Docs.java, 2020-04-13 -documentation/jetty-documentation/src/main/java/org/eclipse/jetty/docs/programming/JMXDocs.java, 2020-05-03 -documentation/jetty-asciidoctor-extensions/src/main/java/org/eclipse/jetty/docs/JettyIncludeExtension.java, 2021-01-25 -documentation/jetty-asciidoctor-extensions/src/main/java/org/eclipse/jetty/docs/JavadocIncludeExtension.java, 2022-01-12 -jetty-integrations/jetty-infinispan/jetty-infinispan-remote-query/src/main/java/org/eclipse/jetty/session/infinispan/RemoteQueryManager.java, 2019-04-18 -jetty-integrations/jetty-infinispan/jetty-infinispan-remote-query/src/main/java/org/eclipse/jetty/session/infinispan/RemoteQueryManagerFactory.java, 2009-06-11 -jetty-integrations/jetty-infinispan/jetty-infinispan-common/src/main/java/org/eclipse/jetty/session/infinispan/SessionDataMarshaller.java, 2018-11-06 -jetty-integrations/jetty-infinispan/jetty-infinispan-common/src/main/java/org/eclipse/jetty/session/infinispan/NullQueryManagerFactory.java, 2012-08-27 -jetty-integrations/jetty-infinispan/jetty-infinispan-common/src/main/java/org/eclipse/jetty/session/infinispan/QueryManager.java, 2009-03-24 -jetty-integrations/jetty-infinispan/jetty-infinispan-common/src/main/java/org/eclipse/jetty/session/infinispan/InfinispanSerializationContextInitializer.java, 2021-09-21 -jetty-integrations/jetty-infinispan/jetty-infinispan-common/src/main/java/org/eclipse/jetty/session/infinispan/InfinispanKeyBuilder.java, 2009-03-24 -jetty-integrations/jetty-infinispan/jetty-infinispan-common/src/main/java/org/eclipse/jetty/session/infinispan/QueryManagerFactory.java, 2009-03-24 -jetty-integrations/jetty-infinispan/jetty-infinispan-common/src/main/java/org/eclipse/jetty/session/infinispan/BoundDelegatingInputStream.java, 2020-03-23 -jetty-integrations/jetty-infinispan/jetty-infinispan-common/src/main/java/org/eclipse/jetty/session/infinispan/InfinispanSessionLegacyConverter.java, 2018-11-06 -jetty-integrations/jetty-infinispan/jetty-infinispan-common/src/main/java/org/eclipse/jetty/session/infinispan/InfinispanSessionData.java, 2018-11-06 -jetty-integrations/jetty-infinispan/jetty-infinispan-common/src/main/java/org/eclipse/jetty/session/infinispan/InfinispanSessionDataStoreFactory.java, 2016-04-15 -jetty-integrations/jetty-infinispan/jetty-infinispan-common/src/main/java/org/eclipse/jetty/session/infinispan/InfinispanSessionDataStore.java, 2015-11-13 -jetty-integrations/jetty-infinispan/jetty-infinispan-embedded-query/src/main/java/org/eclipse/jetty/session/infinispan/EmbeddedQueryManager.java, 2019-04-18 -jetty-integrations/jetty-infinispan/jetty-infinispan-embedded-query/src/main/java/org/eclipse/jetty/session/infinispan/EmbeddedQueryManagerFactory.java, 2019-04-18 -jetty-integrations/jetty-hazelcast/src/main/java/module-info.java, 2013-07-12 -jetty-integrations/jetty-hazelcast/src/main/java/org/eclipse/jetty/hazelcast/session/HazelcastSessionDataStoreFactory.java, 2017-05-29 -jetty-integrations/jetty-hazelcast/src/main/java/org/eclipse/jetty/hazelcast/session/HazelcastSessionDataStore.java, 2017-05-29 -jetty-integrations/jetty-hazelcast/src/main/java/org/eclipse/jetty/hazelcast/session/SessionDataSerializer.java, 2018-11-06 -jetty-integrations/jetty-gcloud/jetty-gcloud-session-manager/src/main/java/org/eclipse/jetty/gcloud/session/GCloudSessionDataStoreFactory.java, 2016-04-15 -jetty-integrations/jetty-gcloud/jetty-gcloud-session-manager/src/main/java/org/eclipse/jetty/gcloud/session/GCloudSessionDataStore.java, 2015-12-11 -jetty-integrations/jetty-memcached/jetty-memcached-sessions/src/main/java/module-info.java, 2013-07-12 -jetty-integrations/jetty-memcached/jetty-memcached-sessions/src/main/java/org/eclipse/jetty/memcached/session/MemcachedSessionDataMap.java, 2016-05-27 -jetty-integrations/jetty-memcached/jetty-memcached-sessions/src/main/java/org/eclipse/jetty/memcached/session/MemcachedSessionDataMapFactory.java, 2016-05-27 -jetty-integrations/jetty-nosql/src/main/java/module-info.java, 2013-07-12 -jetty-integrations/jetty-nosql/src/main/java/org/eclipse/jetty/nosql/NoSqlSessionDataStore.java, 2015-11-20 -jetty-integrations/jetty-nosql/src/main/java/org/eclipse/jetty/nosql/mongodb/MongoSessionDataStore.java, 2015-11-20 -jetty-integrations/jetty-nosql/src/main/java/org/eclipse/jetty/nosql/mongodb/MongoUtils.java, 2018-03-28 -jetty-integrations/jetty-nosql/src/main/java/org/eclipse/jetty/nosql/mongodb/package-info.java, 2012-11-02 -jetty-integrations/jetty-nosql/src/main/java/org/eclipse/jetty/nosql/mongodb/MongoSessionDataStoreFactory.java, 2016-04-15 -jetty-integrations/jetty-nosql/src/main/java/org/eclipse/jetty/nosql/package-info.java, 2012-11-02 -jetty-core/jetty-quic/jetty-quic-client/src/test/java/org/eclipse/jetty/quic/client/End2EndClientTest.java, 2021-03-31 -jetty-core/jetty-quic/jetty-quic-client/src/main/java/module-info.java, 2009-03-24 -jetty-core/jetty-quic/jetty-quic-client/src/main/java/org/eclipse/jetty/quic/client/ClientProtocolSession.java, 2021-09-11 -jetty-core/jetty-quic/jetty-quic-client/src/main/java/org/eclipse/jetty/quic/client/ClientQuicSession.java, 2021-03-23 -jetty-core/jetty-quic/jetty-quic-client/src/main/java/org/eclipse/jetty/quic/client/ClientQuicConnection.java, 2021-03-23 -jetty-core/jetty-quic/jetty-quic-client/src/main/java/org/eclipse/jetty/quic/client/QuicClientConnectorConfigurator.java, 2021-03-31 -jetty-core/jetty-quic/jetty-quic-server/src/test/java/org/eclipse/jetty/quic/server/ServerQuicConnectorTest.java, 2021-03-12 -jetty-core/jetty-quic/jetty-quic-server/src/main/java/module-info.java, 2009-03-24 -jetty-core/jetty-quic/jetty-quic-server/src/main/java/org/eclipse/jetty/quic/server/internal/SimpleTokenValidator.java, 2021-03-23 -jetty-core/jetty-quic/jetty-quic-server/src/main/java/org/eclipse/jetty/quic/server/internal/SimpleTokenMinter.java, 2021-03-23 -jetty-core/jetty-quic/jetty-quic-server/src/main/java/org/eclipse/jetty/quic/server/ServerQuicSession.java, 2021-03-23 -jetty-core/jetty-quic/jetty-quic-server/src/main/java/org/eclipse/jetty/quic/server/ServerQuicConnection.java, 2021-03-23 -jetty-core/jetty-quic/jetty-quic-server/src/main/java/org/eclipse/jetty/quic/server/QuicServerConnector.java, 2021-03-12 -jetty-core/jetty-quic/jetty-quic-server/src/main/java/org/eclipse/jetty/quic/server/ServerProtocolSession.java, 2021-09-11 -jetty-core/jetty-quic/jetty-quic-common/src/main/java/module-info.java, 2009-03-24 -jetty-core/jetty-quic/jetty-quic-common/src/main/java/org/eclipse/jetty/quic/common/StreamType.java, 2021-09-12 -jetty-core/jetty-quic/jetty-quic-common/src/main/java/org/eclipse/jetty/quic/common/QuicSessionContainer.java, 2021-10-12 -jetty-core/jetty-quic/jetty-quic-common/src/main/java/org/eclipse/jetty/quic/common/QuicConnection.java, 2021-03-12 -jetty-core/jetty-quic/jetty-quic-common/src/main/java/org/eclipse/jetty/quic/common/CloseInfo.java, 2009-03-24 -jetty-core/jetty-quic/jetty-quic-common/src/main/java/org/eclipse/jetty/quic/common/ProtocolSession.java, 2021-09-09 -jetty-core/jetty-quic/jetty-quic-common/src/main/java/org/eclipse/jetty/quic/common/QuicErrorCode.java, 2021-10-13 -jetty-core/jetty-quic/jetty-quic-common/src/main/java/org/eclipse/jetty/quic/common/QuicConfiguration.java, 2021-10-15 -jetty-core/jetty-quic/jetty-quic-common/src/main/java/org/eclipse/jetty/quic/common/QuicSession.java, 2021-03-16 -jetty-core/jetty-quic/jetty-quic-common/src/main/java/org/eclipse/jetty/quic/common/package-info.java, 2021-03-31 -jetty-core/jetty-quic/jetty-quic-common/src/main/java/org/eclipse/jetty/quic/common/QuicStreamEndPoint.java, 2021-03-16 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-foreign-incubator/src/test/java/org/eclipse/jetty/quic/quiche/foreign/incubator/LowLevelQuicheTest.java, 2021-09-20 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-foreign-incubator/src/main/java/module-info.java, 2009-03-24 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-foreign-incubator/src/main/java/org/eclipse/jetty/quic/quiche/foreign/incubator/macos/sockaddr_macos.java, 2021-11-08 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-foreign-incubator/src/main/java/org/eclipse/jetty/quic/quiche/foreign/incubator/windows/sockaddr_windows.java, 2021-11-08 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-foreign-incubator/src/main/java/org/eclipse/jetty/quic/quiche/foreign/incubator/NativeHelper.java, 2021-11-08 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-foreign-incubator/src/main/java/org/eclipse/jetty/quic/quiche/foreign/incubator/quiche_path_stats.java, 2022-10-18 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-foreign-incubator/src/main/java/org/eclipse/jetty/quic/quiche/foreign/incubator/quiche_send_info.java, 2021-11-08 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-foreign-incubator/src/main/java/org/eclipse/jetty/quic/quiche/foreign/incubator/ForeignIncubatorQuicheConnection.java, 2021-11-08 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-foreign-incubator/src/main/java/org/eclipse/jetty/quic/quiche/foreign/incubator/linux/sockaddr_linux.java, 2021-11-08 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-foreign-incubator/src/main/java/org/eclipse/jetty/quic/quiche/foreign/incubator/ForeignIncubatorQuicheBinding.java, 2021-11-08 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-foreign-incubator/src/main/java/org/eclipse/jetty/quic/quiche/foreign/incubator/quiche_stats.java, 2021-11-08 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-foreign-incubator/src/main/java/org/eclipse/jetty/quic/quiche/foreign/incubator/quiche_h.java, 2021-11-08 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-foreign-incubator/src/main/java/org/eclipse/jetty/quic/quiche/foreign/incubator/quiche_recv_info.java, 2021-11-08 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-foreign-incubator/src/main/java/org/eclipse/jetty/quic/quiche/foreign/incubator/sockaddr.java, 2021-11-08 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-jna/src/test/java/org/eclipse/jetty/quic/quiche/jna/LowLevelQuicheTest.java, 2021-09-20 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-jna/src/main/java/module-info.java, 2009-03-24 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-jna/src/main/java/org/eclipse/jetty/quic/quiche/jna/macos/netinet_macos.java, 2021-09-10 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-jna/src/main/java/org/eclipse/jetty/quic/quiche/jna/bool_pointer.java, 2009-03-24 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-jna/src/main/java/org/eclipse/jetty/quic/quiche/jna/ssize_t.java, 2009-03-24 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-jna/src/main/java/org/eclipse/jetty/quic/quiche/jna/windows/netinet_windows.java, 2021-09-10 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-jna/src/main/java/org/eclipse/jetty/quic/quiche/jna/size_t_pointer.java, 2021-03-15 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-jna/src/main/java/org/eclipse/jetty/quic/quiche/jna/SizedStructure.java, 2009-03-24 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-jna/src/main/java/org/eclipse/jetty/quic/quiche/jna/LibQuiche.java, 2021-03-15 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-jna/src/main/java/org/eclipse/jetty/quic/quiche/jna/uint16_t.java, 2009-03-24 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-jna/src/main/java/org/eclipse/jetty/quic/quiche/jna/uint32_t_pointer.java, 2011-09-12 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-jna/src/main/java/org/eclipse/jetty/quic/quiche/jna/uint64_t_pointer.java, 2011-09-12 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-jna/src/main/java/org/eclipse/jetty/quic/quiche/jna/timespec.java, 2009-03-24 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-jna/src/main/java/org/eclipse/jetty/quic/quiche/jna/linux/netinet_linux.java, 2021-09-10 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-jna/src/main/java/org/eclipse/jetty/quic/quiche/jna/size_t.java, 2009-03-24 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-jna/src/main/java/org/eclipse/jetty/quic/quiche/jna/char_pointer.java, 2009-03-24 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-jna/src/main/java/org/eclipse/jetty/quic/quiche/jna/JnaQuicheConnection.java, 2021-03-15 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-jna/src/main/java/org/eclipse/jetty/quic/quiche/jna/sockaddr_storage.java, 2009-03-24 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-jna/src/main/java/org/eclipse/jetty/quic/quiche/jna/uint8_t.java, 2009-03-24 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-jna/src/main/java/org/eclipse/jetty/quic/quiche/jna/JnaQuicheBinding.java, 2021-11-08 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-jna/src/main/java/org/eclipse/jetty/quic/quiche/jna/uint8_t_pointer.java, 2011-09-12 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-jna/src/main/java/org/eclipse/jetty/quic/quiche/jna/uint64_t.java, 2009-03-24 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-jna/src/main/java/org/eclipse/jetty/quic/quiche/jna/uint32_t.java, 2009-03-24 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-jna/src/main/java/org/eclipse/jetty/quic/quiche/jna/sockaddr.java, 2021-09-13 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-common/src/main/java/module-info.java, 2009-03-24 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-common/src/main/java/org/eclipse/jetty/quic/quiche/Quiche.java, 2009-03-24 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-common/src/main/java/org/eclipse/jetty/quic/quiche/QuicheBinding.java, 2021-11-08 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-common/src/main/java/org/eclipse/jetty/quic/quiche/QuicheConfig.java, 2021-03-15 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-common/src/main/java/org/eclipse/jetty/quic/quiche/QuicheConnection.java, 2021-11-08 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-common/src/main/java/org/eclipse/jetty/quic/quiche/SSLKeyPair.java, 2021-03-15 -jetty-core/jetty-quic/jetty-quic-quiche/jetty-quic-quiche-common/src/main/java/org/eclipse/jetty/quic/quiche/QuicheConnectionId.java, 2021-03-15 -jetty-core/jetty-io/src/test/java/org/eclipse/jetty/io/CyclicTimeoutTest.java, 2018-01-10 -jetty-core/jetty-io/src/test/java/org/eclipse/jetty/io/SocketChannelEndPointOpenCloseTest.java, 2011-10-18 -jetty-core/jetty-io/src/test/java/org/eclipse/jetty/io/IdleTimeoutTest.java, 2013-01-11 -jetty-core/jetty-io/src/test/java/org/eclipse/jetty/io/SocketChannelEndPointInterestsTest.java, 2012-07-30 -jetty-core/jetty-io/src/test/java/org/eclipse/jetty/io/ByteBufferAccumulatorTest.java, 2020-11-17 -jetty-core/jetty-io/src/test/java/org/eclipse/jetty/io/ContentTest.java, 2022-12-01 -jetty-core/jetty-io/src/test/java/org/eclipse/jetty/io/ArrayByteBufferPoolTest.java, 2021-05-28 -jetty-core/jetty-io/src/test/java/org/eclipse/jetty/io/NIOTest.java, 2011-11-28 -jetty-core/jetty-io/src/test/java/org/eclipse/jetty/io/AsyncContentTest.java, 2022-05-30 -jetty-core/jetty-io/src/test/java/org/eclipse/jetty/io/ByteArrayEndPointTest.java, 2012-05-03 -jetty-core/jetty-io/src/test/java/org/eclipse/jetty/io/WriteFlusherTest.java, 2012-07-31 -jetty-core/jetty-io/src/test/java/org/eclipse/jetty/io/ContentSourceTransformerTest.java, 2022-05-30 -jetty-core/jetty-io/src/test/java/org/eclipse/jetty/io/SocketChannelEndPointTest.java, 2011-10-18 -jetty-core/jetty-io/src/test/java/org/eclipse/jetty/io/SelectorManagerTest.java, 2012-10-05 -jetty-core/jetty-io/src/test/java/org/eclipse/jetty/io/CyclicTimeoutsTest.java, 2021-06-03 -jetty-core/jetty-io/src/test/java/org/eclipse/jetty/io/IOTest.java, 2005-11-27 -jetty-core/jetty-io/src/test/java/org/eclipse/jetty/io/SslConnectionTest.java, 2012-06-04 -jetty-core/jetty-io/src/test/java/org/eclipse/jetty/io/ContentSourceTest.java, 2022-05-30 -jetty-core/jetty-io/src/main/java/module-info.java, 2009-03-24 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/AbstractConnection.java, 2011-02-28 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/jmx/ConnectionStatisticsMBean.java, 2021-06-03 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/NetworkTrafficSocketChannelEndPoint.java, 2011-02-10 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/WriteFlusher.java, 2012-05-10 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/internal/ContentSourceConsumer.java, 2022-05-30 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/internal/ContentSourceString.java, 2022-05-30 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/internal/ContentSourceByteBuffer.java, 2022-05-30 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/internal/NonRetainableByteBuffer.java, 2009-03-24 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/internal/ContentCopier.java, 2022-05-30 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/internal/ByteBufferChunk.java, 2022-05-30 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/Connection.java, 2002-06-14 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/ByteArrayEndPoint.java, 2005-11-27 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/IdleTimeout.java, 2012-11-09 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/DatagramChannelEndPoint.java, 2021-12-01 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/NegotiatingClientConnection.java, 2012-07-27 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/ByteBufferAccumulator.java, 2020-11-05 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/EndPoint.java, 2005-11-27 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/SelectableChannelEndPoint.java, 2015-11-06 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/FillInterest.java, 2012-05-10 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/RuntimeIOException.java, 2009-03-24 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/SelectorManager.java, 2006-11-05 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/NegotiatingClientConnectionFactory.java, 2009-03-24 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/ManagedSelector.java, 2014-12-17 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/Content.java, 2022-05-30 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/IncludeExcludeConnectionStatistics.java, 2020-08-14 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/NetworkTrafficListener.java, 2009-03-24 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/Retainable.java, 2022-07-25 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/content/OutputStreamContentSource.java, 2022-05-30 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/content/InputStreamContentSource.java, 2022-05-30 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/content/AsyncContent.java, 2022-05-30 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/content/ContentSinkSubscriber.java, 2022-05-30 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/content/PathContentSource.java, 2022-05-30 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/content/ChunksContentSource.java, 2022-05-30 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/content/ContentSourceTransformer.java, 2022-05-30 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/content/ByteBufferContentSource.java, 2022-05-30 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/content/ContentSourcePublisher.java, 2022-05-30 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/content/ContentSinkOutputStream.java, 2022-05-30 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/content/ContentSourceInputStream.java, 2022-05-30 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/QuietException.java, 2012-08-24 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/AbstractRetainableByteBuffer.java, 2023-01-27 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/SocketChannelEndPoint.java, 2015-11-06 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/CyclicTimeouts.java, 2021-05-16 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/AbstractEndPoint.java, 2012-05-02 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/ByteBufferCallbackAccumulator.java, 2021-08-18 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/package-info.java, 2012-11-02 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/ArrayByteBufferPool.java, 2021-05-28 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/ConnectionStatistics.java, 2016-09-14 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/CyclicTimeout.java, 2018-01-10 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/ClientConnectionFactory.java, 2013-10-04 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/ByteBufferInputStream.java, 2022-07-15 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/ByteBufferPool.java, 2021-05-28 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/ByteBufferOutputStream.java, 2012-08-09 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/ClientConnector.java, 2019-01-17 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/WriterOutputStream.java, 2002-02-12 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/RetainableByteBuffer.java, 2018-11-02 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/ssl/SslConnection.java, 2012-05-11 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/ssl/ALPNProcessor.java, 2012-06-12 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/ssl/SslClientConnectionFactory.java, 2013-10-04 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/ssl/package-info.java, 2012-11-02 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/ssl/SslHandshakeListener.java, 2016-05-24 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/ByteBufferOutputStream2.java, 2020-11-05 -jetty-core/jetty-io/src/main/java/org/eclipse/jetty/io/EofException.java, 2009-03-24 -jetty-core/jetty-jndi/src/test/java/org/eclipse/jetty/jndi/java/TestJNDI.java, 2003-06-30 -jetty-core/jetty-jndi/src/test/java/org/eclipse/jetty/jndi/java/TestLocalJNDI.java, 2009-03-24 -jetty-core/jetty-jndi/src/main/java/module-info.java, 2009-03-24 -jetty-core/jetty-jndi/src/main/java/org/eclipse/jetty/jndi/InitialContextFactory.java, 2003-07-01 -jetty-core/jetty-jndi/src/main/java/org/eclipse/jetty/jndi/DataSourceCloser.java, 2010-12-21 -jetty-core/jetty-jndi/src/main/java/org/eclipse/jetty/jndi/NameEnumeration.java, 2011-09-13 -jetty-core/jetty-jndi/src/main/java/org/eclipse/jetty/jndi/java/javaRootURLContext.java, 2003-06-30 -jetty-core/jetty-jndi/src/main/java/org/eclipse/jetty/jndi/java/javaURLContextFactory.java, 2003-06-30 -jetty-core/jetty-jndi/src/main/java/org/eclipse/jetty/jndi/java/javaNameParser.java, 2003-06-30 -jetty-core/jetty-jndi/src/main/java/org/eclipse/jetty/jndi/java/package-info.java, 2012-11-02 -jetty-core/jetty-jndi/src/main/java/org/eclipse/jetty/jndi/ContextFactory.java, 2003-06-30 -jetty-core/jetty-jndi/src/main/java/org/eclipse/jetty/jndi/NamingContext.java, 2003-06-30 -jetty-core/jetty-jndi/src/main/java/org/eclipse/jetty/jndi/package-info.java, 2012-11-02 -jetty-core/jetty-jndi/src/main/java/org/eclipse/jetty/jndi/BindingEnumeration.java, 2011-09-13 -jetty-core/jetty-jndi/src/main/java/org/eclipse/jetty/jndi/local/localContextRoot.java, 2009-03-24 -jetty-core/jetty-jndi/src/main/java/org/eclipse/jetty/jndi/local/package-info.java, 2012-11-02 -jetty-core/jetty-jndi/src/main/java/org/eclipse/jetty/jndi/NamingUtil.java, 2009-03-24 -jetty-core/jetty-xml/src/test/java/org/eclipse/jetty/xml/AnnotatedTestConfiguration.java, 2012-08-10 -jetty-core/jetty-xml/src/test/java/org/eclipse/jetty/xml/XmlParserTest.java, 2011-02-17 -jetty-core/jetty-xml/src/test/java/org/eclipse/jetty/xml/ConstructorArgTestClass.java, 2012-05-30 -jetty-core/jetty-xml/src/test/java/org/eclipse/jetty/xml/CatalogTest.java, 2022-08-09 -jetty-core/jetty-xml/src/test/java/org/eclipse/jetty/xml/ExampleConfiguration.java, 2009-03-24 -jetty-core/jetty-xml/src/test/java/org/eclipse/jetty/xml/XmlAppendableTest.java, 2014-02-13 -jetty-core/jetty-xml/src/test/java/org/eclipse/jetty/xml/XmlConfigurationTest.java, 2006-05-22 -jetty-core/jetty-xml/src/test/java/org/eclipse/jetty/xml/DefaultTestConfiguration.java, 2012-08-10 -jetty-core/jetty-xml/src/main/java/module-info.java, 2009-03-24 -jetty-core/jetty-xml/src/main/java/org/eclipse/jetty/xml/ConfigurationProcessor.java, 2011-02-17 -jetty-core/jetty-xml/src/main/java/org/eclipse/jetty/xml/EnvironmentBuilder.java, 2022-05-03 -jetty-core/jetty-xml/src/main/java/org/eclipse/jetty/xml/XmlConfiguration.java, 2000-08-09 -jetty-core/jetty-xml/src/main/java/org/eclipse/jetty/xml/XmlParser.java, 2000-07-28 -jetty-core/jetty-xml/src/main/java/org/eclipse/jetty/xml/BaseClassCatalog.java, 2022-08-09 -jetty-core/jetty-xml/src/main/java/org/eclipse/jetty/xml/XmlAppendable.java, 2014-02-13 -jetty-core/jetty-xml/src/main/java/org/eclipse/jetty/xml/ConfigurationProcessorFactory.java, 2009-03-24 -jetty-core/jetty-xml/src/main/java/org/eclipse/jetty/xml/package-info.java, 2012-11-02 -jetty-core/jetty-alpn/jetty-alpn-client/src/main/java/module-info.java, 2009-03-24 -jetty-core/jetty-alpn/jetty-alpn-client/src/main/java/org/eclipse/jetty/alpn/client/ALPNClientConnection.java, 2012-07-27 -jetty-core/jetty-alpn/jetty-alpn-client/src/main/java/org/eclipse/jetty/alpn/client/ALPNClientConnectionFactory.java, 2013-10-04 -jetty-core/jetty-alpn/jetty-alpn-java-server/src/test/java/org/eclipse/jetty/alpn/java/server/JDK9HTTP2Server.java, 2017-01-12 -jetty-core/jetty-alpn/jetty-alpn-java-server/src/test/java/org/eclipse/jetty/alpn/java/server/JDK9ALPNTest.java, 2017-01-13 -jetty-core/jetty-alpn/jetty-alpn-java-server/src/main/java/module-info.java, 2009-03-30 -jetty-core/jetty-alpn/jetty-alpn-java-server/src/main/java/org/eclipse/jetty/alpn/java/server/JDK9ServerALPNProcessor.java, 2010-01-26 -jetty-core/jetty-alpn/jetty-alpn-java-client/src/test/java/org/eclipse/jetty/alpn/java/client/JDK9HTTP2ClientTest.java, 2019-04-15 -jetty-core/jetty-alpn/jetty-alpn-java-client/src/main/java/module-info.java, 2009-03-30 -jetty-core/jetty-alpn/jetty-alpn-java-client/src/main/java/org/eclipse/jetty/alpn/java/client/JDK9ClientALPNProcessor.java, 2012-06-27 -jetty-core/jetty-alpn/jetty-alpn-conscrypt-server/src/test/java/org/eclipse/jetty/alpn/conscrypt/server/ConscryptHTTP2ServerTest.java, 2019-03-05 -jetty-core/jetty-alpn/jetty-alpn-conscrypt-server/src/main/java/module-info.java, 2009-03-24 -jetty-core/jetty-alpn/jetty-alpn-conscrypt-server/src/main/java/org/eclipse/jetty/alpn/conscrypt/server/ConscryptServerALPNProcessor.java, 2017-09-21 -jetty-core/jetty-alpn/jetty-alpn-conscrypt-client/src/test/java/org/eclipse/jetty/alpn/java/client/ConscryptHTTP2ClientTest.java, 2019-04-15 -jetty-core/jetty-alpn/jetty-alpn-conscrypt-client/src/main/java/module-info.java, 2009-03-24 -jetty-core/jetty-alpn/jetty-alpn-conscrypt-client/src/main/java/org/eclipse/jetty/alpn/conscrypt/client/ConscryptClientALPNProcessor.java, 2017-09-21 -jetty-core/jetty-alpn/jetty-alpn-server/src/main/java/module-info.java, 2009-03-24 -jetty-core/jetty-alpn/jetty-alpn-server/src/main/java/org/eclipse/jetty/alpn/server/ALPNServerConnection.java, 2014-03-18 -jetty-core/jetty-alpn/jetty-alpn-server/src/main/java/org/eclipse/jetty/alpn/server/ALPNServerConnectionFactory.java, 2014-03-18 -jetty-core/jetty-session/src/test/java/org/eclipse/jetty/session/FileSessionDataStoreTest.java, 2013-03-28 -jetty-core/jetty-session/src/test/java/org/eclipse/jetty/session/HouseKeeperTest.java, 2020-08-05 -jetty-core/jetty-session/src/test/java/org/eclipse/jetty/session/SimpleSessionHandlerTest.java, 2022-05-03 -jetty-core/jetty-session/src/test/java/org/eclipse/jetty/session/DefaultSessionCacheTest.java, 2022-05-03 -jetty-core/jetty-session/src/test/java/org/eclipse/jetty/session/TestableSessionConsumer.java, 2010-01-26 -jetty-core/jetty-session/src/test/java/org/eclipse/jetty/session/TestableSessionDataStore.java, 2015-08-27 -jetty-core/jetty-session/src/test/java/org/eclipse/jetty/session/NullSessionCacheTest.java, 2018-05-03 -jetty-core/jetty-session/src/test/java/org/eclipse/jetty/session/SessionListenerTest.java, 2022-05-03 -jetty-core/jetty-session/src/test/java/org/eclipse/jetty/session/AbstractSessionManagerTest.java, 2022-05-03 -jetty-core/jetty-session/src/test/java/org/eclipse/jetty/session/FileTestHelper.java, 2010-01-26 -jetty-core/jetty-session/src/test/java/org/eclipse/jetty/session/AbstractSessionCacheTest.java, 2019-09-11 -jetty-core/jetty-session/src/test/java/org/eclipse/jetty/session/TestableSessionManager.java, 2022-05-03 -jetty-core/jetty-session/src/test/java/org/eclipse/jetty/session/DirtyAttributeTest.java, 2022-05-03 -jetty-core/jetty-session/src/test/java/org/eclipse/jetty/session/JdbcTestHelper.java, 2010-01-26 -jetty-core/jetty-session/src/test/java/org/eclipse/jetty/session/SimpleSessionHandler.java, 2022-05-03 -jetty-core/jetty-session/src/test/java/org/eclipse/jetty/session/FileSessionsTest.java, 2017-03-22 -jetty-core/jetty-session/src/test/java/org/eclipse/jetty/session/TestableRequest.java, 2022-05-03 -jetty-core/jetty-session/src/test/java/org/eclipse/jetty/session/AbstractSessionDataStoreTest.java, 2018-03-28 -jetty-core/jetty-session/src/test/java/org/eclipse/jetty/session/DefaultSessionIdManagerTest.java, 2022-05-03 -jetty-core/jetty-session/src/test/resources/ProxyableFactory.java, 2009-03-24 -jetty-core/jetty-session/src/test/resources/Proxyable.java, 2012-11-02 -jetty-core/jetty-session/src/test/resources/Foo.java, 2009-03-24 -jetty-core/jetty-session/src/test/resources/ProxyableInvocationHandler.java, 2010-01-26 -jetty-core/jetty-session/src/main/java/module-info.java, 2013-07-12 -jetty-core/jetty-session/src/main/java/org/eclipse/jetty/session/JDBCSessionDataStore.java, 2015-08-27 -jetty-core/jetty-session/src/main/java/org/eclipse/jetty/session/SessionDataMapFactory.java, 2009-03-24 -jetty-core/jetty-session/src/main/java/org/eclipse/jetty/session/DefaultSessionCacheFactory.java, 2016-04-15 -jetty-core/jetty-session/src/main/java/org/eclipse/jetty/session/DefaultSessionCache.java, 2015-08-27 -jetty-core/jetty-session/src/main/java/org/eclipse/jetty/session/AbstractSessionDataStoreFactory.java, 2012-07-09 -jetty-core/jetty-session/src/main/java/org/eclipse/jetty/session/SessionDataStoreFactory.java, 2009-03-24 -jetty-core/jetty-session/src/main/java/org/eclipse/jetty/session/NullSessionCache.java, 2016-05-27 -jetty-core/jetty-session/src/main/java/org/eclipse/jetty/session/FileSessionDataStoreFactory.java, 2016-04-15 -jetty-core/jetty-session/src/main/java/org/eclipse/jetty/session/SessionConfig.java, 2022-05-03 -jetty-core/jetty-session/src/main/java/org/eclipse/jetty/session/SessionManager.java, 2022-05-03 -jetty-core/jetty-session/src/main/java/org/eclipse/jetty/session/NullSessionCacheFactory.java, 2016-04-15 -jetty-core/jetty-session/src/main/java/org/eclipse/jetty/session/UnwriteableSessionDataException.java, 2012-07-09 -jetty-core/jetty-session/src/main/java/org/eclipse/jetty/session/SessionDataStore.java, 2012-07-09 -jetty-core/jetty-session/src/main/java/org/eclipse/jetty/session/AbstractSessionManager.java, 2022-05-03 -jetty-core/jetty-session/src/main/java/org/eclipse/jetty/session/SessionDataMap.java, 2012-07-09 -jetty-core/jetty-session/src/main/java/org/eclipse/jetty/session/DatabaseAdaptor.java, 2015-10-09 -jetty-core/jetty-session/src/main/java/org/eclipse/jetty/session/DefaultSessionIdManager.java, 2009-03-24 -jetty-core/jetty-session/src/main/java/org/eclipse/jetty/session/AbstractSessionCache.java, 2015-08-27 -jetty-core/jetty-session/src/main/java/org/eclipse/jetty/session/HouseKeeper.java, 2015-10-09 -jetty-core/jetty-session/src/main/java/org/eclipse/jetty/session/SessionCacheFactory.java, 2009-03-24 -jetty-core/jetty-session/src/main/java/org/eclipse/jetty/session/AbstractSessionCacheFactory.java, 2016-04-15 -jetty-core/jetty-session/src/main/java/org/eclipse/jetty/session/SessionInactivityTimer.java, 2022-05-03 -jetty-core/jetty-session/src/main/java/org/eclipse/jetty/session/CachingSessionDataStoreFactory.java, 2010-01-26 -jetty-core/jetty-session/src/main/java/org/eclipse/jetty/session/package-info.java, 2009-03-24 -jetty-core/jetty-session/src/main/java/org/eclipse/jetty/session/SessionContext.java, 2015-09-04 -jetty-core/jetty-session/src/main/java/org/eclipse/jetty/session/SessionCache.java, 2012-07-09 -jetty-core/jetty-session/src/main/java/org/eclipse/jetty/session/NullSessionDataStore.java, 2015-08-27 -jetty-core/jetty-session/src/main/java/org/eclipse/jetty/session/JDBCSessionDataStoreFactory.java, 2016-04-15 -jetty-core/jetty-session/src/main/java/org/eclipse/jetty/session/FileSessionDataStore.java, 2015-09-11 -jetty-core/jetty-session/src/main/java/org/eclipse/jetty/session/CachingSessionDataStore.java, 2016-04-25 -jetty-core/jetty-session/src/main/java/org/eclipse/jetty/session/NullSessionDataStoreFactory.java, 2010-01-26 -jetty-core/jetty-session/src/main/java/org/eclipse/jetty/session/AbstractSessionDataStore.java, 2015-08-27 -jetty-core/jetty-session/src/main/java/org/eclipse/jetty/session/ManagedSession.java, 2011-07-07 -jetty-core/jetty-session/src/main/java/org/eclipse/jetty/session/SessionIdManager.java, 2009-03-24 -jetty-core/jetty-session/src/main/java/org/eclipse/jetty/session/UnreadableSessionDataException.java, 2012-07-09 -jetty-core/jetty-session/src/main/java/org/eclipse/jetty/session/SessionData.java, 2015-08-27 -jetty-core/jetty-ee/src/main/java/module-info.java, 2009-03-24 -jetty-core/jetty-ee/src/main/java/org/eclipse/jetty/ee/Deployable.java, 2022-06-30 -jetty-core/jetty-keystore/src/test/java/org/eclipse/jetty/test/keystore/KeystoreGeneratorTest.java, 2022-12-20 -jetty-core/jetty-keystore/src/main/java/org/eclipse/jetty/keystore/KeystoreGenerator.java, 2021-01-06 -jetty-core/jetty-tests/jetty-test-client-transports/src/test/java/org/eclipse/jetty/test/client/transport/EmptyServerHandler.java, 2012-09-05 -jetty-core/jetty-tests/jetty-test-client-transports/src/test/java/org/eclipse/jetty/test/client/transport/HttpClientIdleTimeoutTest.java, 2015-02-09 -jetty-core/jetty-tests/jetty-test-client-transports/src/test/java/org/eclipse/jetty/test/client/transport/HttpClientTest.java, 2015-02-05 -jetty-core/jetty-tests/jetty-test-client-transports/src/test/java/org/eclipse/jetty/test/client/transport/HttpClientConnectTimeoutTest.java, 2015-02-09 -jetty-core/jetty-tests/jetty-test-client-transports/src/test/java/org/eclipse/jetty/test/client/transport/HttpClientLoadTest.java, 2012-09-17 -jetty-core/jetty-tests/jetty-test-client-transports/src/test/java/org/eclipse/jetty/test/client/transport/ForwardProxyWithDynamicTransportTest.java, 2019-08-13 -jetty-core/jetty-tests/jetty-test-client-transports/src/test/java/org/eclipse/jetty/test/client/transport/ConnectionStatisticsTest.java, 2016-09-14 -jetty-core/jetty-tests/jetty-test-client-transports/src/test/java/org/eclipse/jetty/test/client/transport/TrailersTest.java, 2022-09-16 -jetty-core/jetty-tests/jetty-test-client-transports/src/test/java/org/eclipse/jetty/test/client/transport/RoundRobinConnectionPoolTest.java, 2018-03-21 -jetty-core/jetty-tests/jetty-test-client-transports/src/test/java/org/eclipse/jetty/test/client/transport/HttpClientStreamTest.java, 2012-09-08 -jetty-core/jetty-tests/jetty-test-client-transports/src/test/java/org/eclipse/jetty/test/client/transport/HttpInterimResponseTest.java, 2022-09-26 -jetty-core/jetty-tests/jetty-test-client-transports/src/test/java/org/eclipse/jetty/test/client/transport/HttpClientTransportDynamicTest.java, 2019-01-17 -jetty-core/jetty-tests/jetty-test-client-transports/src/test/java/org/eclipse/jetty/test/client/transport/HttpClientTimeoutTest.java, 2012-10-24 -jetty-core/jetty-tests/jetty-test-client-transports/src/test/java/org/eclipse/jetty/test/client/transport/VirtualThreadsTest.java, 2022-08-17 -jetty-core/jetty-tests/jetty-test-client-transports/src/test/java/org/eclipse/jetty/test/client/transport/HttpChannelAssociationTest.java, 2015-12-18 -jetty-core/jetty-tests/jetty-test-client-transports/src/test/java/org/eclipse/jetty/test/client/transport/HttpClientDemandTest.java, 2019-09-19 -jetty-core/jetty-tests/jetty-test-client-transports/src/test/java/org/eclipse/jetty/test/client/transport/AsyncRequestContentTest.java, 2015-09-25 -jetty-core/jetty-tests/jetty-test-client-transports/src/test/java/org/eclipse/jetty/test/client/transport/ServerTimeoutsTest.java, 2009-03-24 -jetty-core/jetty-tests/jetty-test-client-transports/src/test/java/org/eclipse/jetty/test/client/transport/AbstractTest.java, 2022-08-17 -jetty-core/jetty-slf4j-impl/src/test/java/org/eclipse/jetty/logging/Slf4jEffort.java, 2020-02-24 -jetty-core/jetty-slf4j-impl/src/test/java/org/eclipse/jetty/logging/StdErrAppenderTest.java, 2020-02-24 -jetty-core/jetty-slf4j-impl/src/test/java/org/eclipse/jetty/logging/JMXTest.java, 2020-05-03 -jetty-core/jetty-slf4j-impl/src/test/java/org/eclipse/jetty/logging/JettyLoggerTest.java, 2020-02-24 -jetty-core/jetty-slf4j-impl/src/test/java/org/eclipse/jetty/logging/CapturedStream.java, 2011-10-27 -jetty-core/jetty-slf4j-impl/src/test/java/org/eclipse/jetty/logging/JettyLoggerConfigurationTest.java, 2020-02-24 -jetty-core/jetty-slf4j-impl/src/main/java/module-info.java, 2009-03-24 -jetty-core/jetty-slf4j-impl/src/main/java/org/eclipse/jetty/logging/Timestamp.java, 2020-02-24 -jetty-core/jetty-slf4j-impl/src/main/java/org/eclipse/jetty/logging/JettyLoggingServiceProvider.java, 2020-02-24 -jetty-core/jetty-slf4j-impl/src/main/java/org/eclipse/jetty/logging/StdErrAppender.java, 2020-02-24 -jetty-core/jetty-slf4j-impl/src/main/java/org/eclipse/jetty/logging/JettyLogger.java, 2020-02-24 -jetty-core/jetty-slf4j-impl/src/main/java/org/eclipse/jetty/logging/JettyLoggerConfiguration.java, 2020-02-24 -jetty-core/jetty-slf4j-impl/src/main/java/org/eclipse/jetty/logging/StacklessLogging.java, 2020-02-24 -jetty-core/jetty-slf4j-impl/src/main/java/org/eclipse/jetty/logging/JettyLoggerFactory.java, 2020-02-24 -jetty-core/jetty-slf4j-impl/src/main/java/org/eclipse/jetty/logging/JettyLevel.java, 2020-05-08 -jetty-core/jetty-slf4j-impl/src/main/java/org/eclipse/jetty/logging/JettyAppender.java, 2009-03-24 -jetty-core/jetty-demos/jetty-demo-handler/src/main/java/org/eclipse/jetty/demo/HelloHandler.java, 2012-09-05 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/BarebonesTest.java, 2021-11-15 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/BarebonesAddToStartdTest.java, 2021-11-15 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/EmptyCreateStartdTest.java, 2021-11-15 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/EmptyAddToStartTest.java, 2021-11-15 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/BarebonesAlreadyEnabledTest.java, 2021-11-15 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/TransientIniTemplateTest.java, 2021-11-15 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/BarebonesAddUnknownTest.java, 2021-11-15 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/BasehomeWithfilesTest.java, 2021-11-15 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/PropertyOverrideTest.java, 2021-11-17 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/BasicTest.java, 2021-11-15 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/AbstractUseCase.java, 2021-11-15 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/OrderedTest.java, 2021-11-15 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/DatabaseTest.java, 2021-11-15 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/AlternatesTest.java, 2021-11-15 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/LoopTest.java, 2021-11-15 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/Files0Test.java, 2021-11-15 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/EnvironmentsTest.java, 2021-11-15 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/EmptyAddToStartCreateStartdTest.java, 2021-11-15 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/AgentPropertiesTest.java, 2021-11-15 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/ParameterizedTest.java, 2021-11-15 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/VersionedModulesTest.java, 2021-11-15 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/BasicPropertiesTest.java, 2021-11-15 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/BarebonesAddToStartTest.java, 2021-11-15 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/usecases/DynamicDependTest.java, 2021-11-15 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/JarVersionTest.java, 2010-01-26 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/BaseHomeTest.java, 2013-08-17 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/fileinits/MavenMetadataTest.java, 2020-09-18 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/fileinits/MavenLocalRepoFileInitializerTest.java, 2014-11-13 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/UtilsTest.java, 2019-05-07 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/CommandLineBuilderTest.java, 2012-01-30 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/ModuleGraphWriterTest.java, 2013-08-21 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/PathMatchersAbsoluteTest.java, 2014-04-29 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/VersionTest.java, 2009-07-23 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/StartMatchers.java, 2014-11-20 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/FileArgTest.java, 2014-06-03 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/PropertyPassingTest.java, 2013-06-12 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/ModulesTest.java, 2013-08-21 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/FSTest.java, 2010-01-26 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/PropertyDump.java, 2012-06-28 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/TestEnv.java, 2010-01-26 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/util/CorrectMavenCentralRefs.java, 2014-11-14 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/util/RebuildTestResources.java, 2014-11-03 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/MainTest.java, 2011-12-30 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/PathFinderTest.java, 2014-03-26 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/PropsTest.java, 2013-12-26 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/ModuleTest.java, 2013-08-21 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/config/ConfigSourcesTest.java, 2014-04-10 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/IncludeJettyDirTest.java, 2014-04-09 -jetty-core/jetty-start/src/test/java/org/eclipse/jetty/start/PathMatchersSearchRootTest.java, 2014-04-29 -jetty-core/jetty-start/src/main/java/org/eclipse/jetty/start/BaseBuilder.java, 2014-11-17 -jetty-core/jetty-start/src/main/java/org/eclipse/jetty/start/FileArg.java, 2012-06-27 -jetty-core/jetty-start/src/main/java/org/eclipse/jetty/start/Utils.java, 2014-11-13 -jetty-core/jetty-start/src/main/java/org/eclipse/jetty/start/StartIni.java, 2013-08-17 -jetty-core/jetty-start/src/main/java/org/eclipse/jetty/start/Version.java, 2002-08-27 -jetty-core/jetty-start/src/main/java/org/eclipse/jetty/start/Modules.java, 2013-08-21 -jetty-core/jetty-start/src/main/java/org/eclipse/jetty/start/Classpath.java, 2002-08-23 -jetty-core/jetty-start/src/main/java/org/eclipse/jetty/start/CommandLineBuilder.java, 2012-01-30 -jetty-core/jetty-start/src/main/java/org/eclipse/jetty/start/PathFinder.java, 2014-03-26 -jetty-core/jetty-start/src/main/java/org/eclipse/jetty/start/FS.java, 2013-08-17 -jetty-core/jetty-start/src/main/java/org/eclipse/jetty/start/JarVersion.java, 2009-07-23 -jetty-core/jetty-start/src/main/java/org/eclipse/jetty/start/fileinits/BaseHomeFileInitializer.java, 2009-03-24 -jetty-core/jetty-start/src/main/java/org/eclipse/jetty/start/fileinits/UriFileInitializer.java, 2014-11-13 -jetty-core/jetty-start/src/main/java/org/eclipse/jetty/start/fileinits/TestFileInitializer.java, 2009-03-24 -jetty-core/jetty-start/src/main/java/org/eclipse/jetty/start/fileinits/MavenMetadata.java, 2020-09-18 -jetty-core/jetty-start/src/main/java/org/eclipse/jetty/start/fileinits/LocalFileInitializer.java, 2016-10-20 -jetty-core/jetty-start/src/main/java/org/eclipse/jetty/start/fileinits/MavenLocalRepoFileInitializer.java, 2014-11-13 -jetty-core/jetty-start/src/main/java/org/eclipse/jetty/start/ModuleGraphWriter.java, 2013-08-30 -jetty-core/jetty-start/src/main/java/org/eclipse/jetty/start/NaturalSort.java, 2013-08-17 -jetty-core/jetty-start/src/main/java/org/eclipse/jetty/start/PathMatchers.java, 2014-03-26 -jetty-core/jetty-start/src/main/java/org/eclipse/jetty/start/RawArgs.java, 2014-06-04 -jetty-core/jetty-start/src/main/java/org/eclipse/jetty/start/TextFile.java, 2013-08-17 -jetty-core/jetty-start/src/main/java/org/eclipse/jetty/start/StartLog.java, 2013-08-22 -jetty-core/jetty-start/src/main/java/org/eclipse/jetty/start/builders/StartDirBuilder.java, 2014-11-17 -jetty-core/jetty-start/src/main/java/org/eclipse/jetty/start/builders/StartIniBuilder.java, 2014-11-17 -jetty-core/jetty-start/src/main/java/org/eclipse/jetty/start/Licensing.java, 2014-11-17 -jetty-core/jetty-start/src/main/java/org/eclipse/jetty/start/Module.java, 2013-08-21 -jetty-core/jetty-start/src/main/java/org/eclipse/jetty/start/package-info.java, 2012-11-02 -jetty-core/jetty-start/src/main/java/org/eclipse/jetty/start/PropsException.java, 2012-06-12 -jetty-core/jetty-start/src/main/java/org/eclipse/jetty/start/Main.java, 2002-08-23 -jetty-core/jetty-start/src/main/java/org/eclipse/jetty/start/config/CommandLineConfigSource.java, 2014-04-10 -jetty-core/jetty-start/src/main/java/org/eclipse/jetty/start/config/ConfigSources.java, 2014-04-10 -jetty-core/jetty-start/src/main/java/org/eclipse/jetty/start/config/DirConfigSource.java, 2014-04-09 -jetty-core/jetty-start/src/main/java/org/eclipse/jetty/start/config/ConfigSource.java, 2011-08-26 -jetty-core/jetty-start/src/main/java/org/eclipse/jetty/start/config/JettyHomeConfigSource.java, 2009-03-24 -jetty-core/jetty-start/src/main/java/org/eclipse/jetty/start/config/JettyBaseConfigSource.java, 2009-03-24 -jetty-core/jetty-start/src/main/java/org/eclipse/jetty/start/StartArgs.java, 2013-08-22 -jetty-core/jetty-start/src/main/java/org/eclipse/jetty/start/FileInitializer.java, 2009-03-24 -jetty-core/jetty-start/src/main/java/org/eclipse/jetty/start/UsageException.java, 2012-06-12 -jetty-core/jetty-start/src/main/java/org/eclipse/jetty/start/BaseHome.java, 2013-08-17 -jetty-core/jetty-start/src/main/java/org/eclipse/jetty/start/Environment.java, 2022-05-03 -jetty-core/jetty-start/src/main/java/org/eclipse/jetty/start/Props.java, 2013-12-26 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/HttpResponseAbortTest.java, 2012-09-13 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientFailureTest.java, 2015-02-15 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/EmptyServerHandler.java, 2012-09-05 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientChunkedContentTest.java, 2015-04-23 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/HttpRequestAbortTest.java, 2012-09-13 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/LivelockTest.java, 2017-10-28 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/HttpCookieTest.java, 2012-09-06 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/jmx/HttpClientJMXTest.java, 2017-12-12 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientProxyTest.java, 2012-11-06 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/InsufficientThreadsDetectionTest.java, 2017-10-02 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/ValidatingConnectionPoolTest.java, 2015-09-01 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientRedirectTest.java, 2012-09-04 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientIdleTimeoutTest.java, 2019-12-17 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/ServerConnectionCloseTest.java, 2015-09-21 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientTest.java, 2012-07-18 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientExplicitConnectionTest.java, 2012-09-17 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientTLSTest.java, 2016-03-07 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/HttpConnectionLifecycleTest.java, 2012-09-05 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientGZIPTest.java, 2014-07-21 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/ConnectionPoolMaxUsageTest.java, 2022-08-13 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/http/HttpReceiverOverHTTPTest.java, 2014-04-07 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/http/HttpSenderOverHTTPTest.java, 2014-04-07 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientAuthenticationTest.java, 2012-09-10 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/HostnameVerificationTest.java, 2013-01-17 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/ExternalSiteTest.java, 2012-10-30 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/ConnectionPoolHelper.java, 2011-02-16 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientUploadDuringServerShutdownTest.java, 2015-03-05 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/ClientConnectionCloseTest.java, 2015-09-23 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/ContentResponseTest.java, 2014-05-14 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/HttpAuthenticationStoreTest.java, 2016-03-05 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/HttpResponseConcurrentAbortTest.java, 2012-09-13 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientCustomProxyTest.java, 2013-10-04 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/util/InputStreamContentTest.java, 2020-02-19 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/util/MultiPartRequestContentTest.java, 2015-10-27 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/util/SPNEGOAuthenticationTest.java, 2018-09-14 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/util/TypedContentProviderTest.java, 2014-05-14 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/util/AsyncRequestContentTest.java, 2020-02-19 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/ConnectionPoolTest.java, 2017-10-16 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/TLSServerConnectionCloseTest.java, 2015-09-21 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/NetworkTrafficListenerTest.java, 2020-04-07 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientProxyProtocolTest.java, 2019-12-17 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/Socks4ProxyTest.java, 2014-09-16 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/AbstractHttpClientServerTest.java, 2012-09-04 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientSynchronizationTest.java, 2012-10-25 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientAsyncContentTest.java, 2014-04-19 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/ProxyConfigurationTest.java, 2013-10-17 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientCorrelationDataTest.java, 2019-07-26 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/ssl/NeedWantClientAuthTest.java, 2017-04-05 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/ssl/SslBytesTest.java, 2011-11-24 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/ssl/SslConnectionTest.java, 2017-01-10 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientURITest.java, 2013-05-05 -jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/DuplexHttpDestinationTest.java, 2020-12-10 -jetty-core/jetty-client/src/main/java/module-info.java, 2009-03-24 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/Socks4Proxy.java, 2013-10-04 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/RequestListeners.java, 2023-02-13 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/ContinueProtocolHandler.java, 2012-10-10 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/ValidatingConnectionPool.java, 2015-09-01 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/BufferingResponseListener.java, 2012-09-04 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/PathRequestContent.java, 2012-09-04 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/UpgradeProtocolHandler.java, 2019-12-09 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/ProtocolHandlers.java, 2015-03-31 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/jmx/HttpClientMBean.java, 2012-08-03 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/ProxyConfiguration.java, 2013-10-04 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/internal/HttpContentResponse.java, 2012-09-04 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/internal/TunnelRequest.java, 2009-03-24 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/internal/HttpAuthenticationStore.java, 2012-09-10 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/internal/NotifyingRequestListeners.java, 2023-02-13 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/RedirectProtocolHandler.java, 2012-09-09 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/WWWAuthenticationProtocolHandler.java, 2013-03-27 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/AbstractConnectionPool.java, 2015-10-30 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/Connection.java, 2009-06-11 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/HttpResponseException.java, 2012-09-04 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/AbstractHttpClientTransport.java, 2013-07-12 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/InputStreamResponseListener.java, 2012-09-17 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/HttpRequestException.java, 2011-02-16 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/BytesRequestContent.java, 2020-02-19 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/Origin.java, 2009-06-11 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/FormRequestContent.java, 2014-05-14 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/Authentication.java, 2012-06-25 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/HttpProxy.java, 2013-10-04 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/HttpClient.java, 2012-09-04 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/Destination.java, 2023-01-11 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/LeakTrackingConnectionPool.java, 2014-01-07 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/ByteBufferRequestContent.java, 2020-02-19 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/AuthenticationProtocolHandler.java, 2012-09-10 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/StringRequestContent.java, 2012-05-08 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/AuthenticationStore.java, 2009-06-11 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/FutureResponseListener.java, 2012-03-14 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/ContentResponse.java, 2012-09-04 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/MultiPartRequestContent.java, 2015-10-27 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/AbstractConnectorHttpClientTransport.java, 2013-07-12 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/HttpRedirector.java, 2013-09-04 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/Request.java, 2012-07-16 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/BasicAuthentication.java, 2012-09-10 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/MultiplexConnectionPool.java, 2015-10-30 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/Result.java, 2012-09-08 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/ProxyProtocolClientConnectionFactory.java, 2019-12-17 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/ProcessingProtocolHandler.java, 2022-09-26 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/transport/SendFailure.java, 2011-02-16 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/transport/internal/ProtocolHttpUpgrader.java, 2019-12-09 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/transport/internal/HttpReceiverOverHTTP.java, 2013-07-12 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/transport/internal/HttpSenderOverHTTP.java, 2013-07-12 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/transport/internal/HttpConnectionOverHTTP.java, 2013-07-12 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/transport/internal/HttpChannelOverHTTP.java, 2013-07-12 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/transport/ResponseListeners.java, 2012-09-10 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/transport/HttpReceiver.java, 2012-09-04 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/transport/HttpExchange.java, 2012-09-04 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/transport/HttpClientConnectionFactory.java, 2012-07-27 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/transport/HttpClientTransportOverHTTP.java, 2013-07-12 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/transport/HttpResponse.java, 2009-06-11 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/transport/HttpDestination.java, 2012-09-04 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/transport/HttpClientTransportDynamic.java, 2019-01-17 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/transport/HttpRequest.java, 2012-09-04 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/transport/IConnection.java, 2013-07-12 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/transport/HttpConversation.java, 2012-09-04 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/transport/HttpSender.java, 2012-09-04 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/transport/HttpChannel.java, 2013-07-12 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/transport/HttpConnection.java, 2012-09-04 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/OutputStreamRequestContent.java, 2020-02-19 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/ProtocolHandler.java, 2011-02-16 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/ProxyAuthenticationProtocolHandler.java, 2013-03-27 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/EarlyHintsProtocolHandler.java, 2022-09-26 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/RoundRobinConnectionPool.java, 2017-10-16 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/DigestAuthentication.java, 2012-09-12 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/DuplexConnectionPool.java, 2013-07-12 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/ConnectionPool.java, 2013-07-12 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/GZIPContentDecoder.java, 2012-09-18 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/ContentDecoder.java, 2012-09-18 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/Response.java, 2012-07-16 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/SPNEGOAuthentication.java, 2018-09-14 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/InputStreamRequestContent.java, 2020-02-19 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/AsyncRequestContent.java, 2020-02-19 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/HttpUpgrader.java, 2011-02-16 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/HttpClientTransport.java, 2011-02-16 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/AbstractAuthentication.java, 2016-03-05 -jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/RandomConnectionPool.java, 2012-07-23 -jetty-core/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/DeploymentManagerTest.java, 2009-12-04 -jetty-core/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/MockAppProvider.java, 2009-03-24 -jetty-core/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/test/XmlConfiguredJetty.java, 2009-12-04 -jetty-core/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/JmxServiceConnection.java, 2015-07-23 -jetty-core/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/AppLifeCyclePathCollector.java, 2009-12-04 -jetty-core/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/DeploymentManagerLifeCycleRouteTest.java, 2009-12-04 -jetty-core/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/AppLifeCycleTest.java, 2009-12-04 -jetty-core/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/providers/ContextProviderRuntimeUpdatesTest.java, 2009-12-04 -jetty-core/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/providers/ContextProviderStartupTest.java, 2009-12-04 -jetty-core/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/graph/GraphTest.java, 2009-12-08 -jetty-core/jetty-deploy/src/main/java/module-info.java, 2009-03-24 -jetty-core/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/DeploymentManager.java, 2009-12-04 -jetty-core/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/jmx/package-info.java, 2012-11-02 -jetty-core/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/jmx/DeploymentManagerMBean.java, 2011-01-06 -jetty-core/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/App.java, 2009-12-04 -jetty-core/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/bindings/StandardStarter.java, 2009-12-04 -jetty-core/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/bindings/StandardStopper.java, 2009-03-24 -jetty-core/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/bindings/StandardUndeployer.java, 2009-12-04 -jetty-core/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/bindings/OrderedGroupBinding.java, 2011-05-20 -jetty-core/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/bindings/StandardDeployer.java, 2009-12-04 -jetty-core/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/bindings/package-info.java, 2012-11-02 -jetty-core/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/bindings/DebugBinding.java, 2009-03-24 -jetty-core/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/package-info.java, 2012-11-02 -jetty-core/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/AppLifeCycle.java, 2009-12-04 -jetty-core/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/providers/ScanningAppProvider.java, 2009-12-31 -jetty-core/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/providers/package-info.java, 2012-11-02 -jetty-core/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/providers/ContextProvider.java, 2009-12-30 -jetty-core/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/AppProvider.java, 2009-03-24 -jetty-core/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/graph/Graph.java, 2009-12-04 -jetty-core/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/graph/Edge.java, 2009-12-04 -jetty-core/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/graph/Route.java, 2009-12-08 -jetty-core/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/graph/Node.java, 2009-12-04 -jetty-core/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/graph/GraphOutputDot.java, 2009-12-07 -jetty-core/jetty-deploy/src/main/java/org/eclipse/jetty/deploy/graph/package-info.java, 2012-11-02 -jetty-core/jetty-util-ajax/src/test/java/org/eclipse/jetty/util/ajax/Baz.java, 2020-01-14 -jetty-core/jetty-util-ajax/src/test/java/org/eclipse/jetty/util/ajax/JSONPojoConvertorTest.java, 2009-01-13 -jetty-core/jetty-util-ajax/src/test/java/org/eclipse/jetty/util/ajax/Bar.java, 2020-01-14 -jetty-core/jetty-util-ajax/src/test/java/org/eclipse/jetty/util/ajax/JSONCollectionConvertorTest.java, 2013-07-26 -jetty-core/jetty-util-ajax/src/test/java/org/eclipse/jetty/util/ajax/JSONPojoConvertorFactoryTest.java, 2009-01-13 -jetty-core/jetty-util-ajax/src/test/java/org/eclipse/jetty/util/ajax/Color.java, 2012-11-02 -jetty-core/jetty-util-ajax/src/test/java/org/eclipse/jetty/util/ajax/Foo.java, 2020-01-14 -jetty-core/jetty-util-ajax/src/test/java/org/eclipse/jetty/util/ajax/AsyncJSONTest.java, 2020-05-20 -jetty-core/jetty-util-ajax/src/test/java/org/eclipse/jetty/util/ajax/JSONTest.java, 2007-04-11 -jetty-core/jetty-util-ajax/src/main/java/module-info.java, 2009-03-24 -jetty-core/jetty-util-ajax/src/main/java/org/eclipse/jetty/util/ajax/JSON.java, 2007-01-27 -jetty-core/jetty-util-ajax/src/main/java/org/eclipse/jetty/util/ajax/JSONEnumConvertor.java, 2007-12-21 -jetty-core/jetty-util-ajax/src/main/java/org/eclipse/jetty/util/ajax/JSONCollectionConvertor.java, 2009-03-24 -jetty-core/jetty-util-ajax/src/main/java/org/eclipse/jetty/util/ajax/JSONDateConvertor.java, 2007-12-21 -jetty-core/jetty-util-ajax/src/main/java/org/eclipse/jetty/util/ajax/JSONObjectConvertor.java, 2007-12-03 -jetty-core/jetty-util-ajax/src/main/java/org/eclipse/jetty/util/ajax/package-info.java, 2012-11-02 -jetty-core/jetty-util-ajax/src/main/java/org/eclipse/jetty/util/ajax/AsyncJSON.java, 2020-05-20 -jetty-core/jetty-util-ajax/src/main/java/org/eclipse/jetty/util/ajax/JSONPojoConvertorFactory.java, 2009-08-11 -jetty-core/jetty-util-ajax/src/main/java/org/eclipse/jetty/util/ajax/JSONPojoConvertor.java, 2009-01-13 -jetty-core/jetty-http3/jetty-http3-tests/src/test/java/org/eclipse/jetty/http3/tests/GoAwayTest.java, 2021-10-07 -jetty-core/jetty-http3/jetty-http3-tests/src/test/java/org/eclipse/jetty/http3/tests/HttpClientTransportOverHTTP3Test.java, 2021-10-19 -jetty-core/jetty-http3/jetty-http3-tests/src/test/java/org/eclipse/jetty/http3/tests/ClientServerTest.java, 2021-09-11 -jetty-core/jetty-http3/jetty-http3-tests/src/test/java/org/eclipse/jetty/http3/tests/UnexpectedFrameTest.java, 2021-09-28 -jetty-core/jetty-http3/jetty-http3-tests/src/test/java/org/eclipse/jetty/http3/tests/ExternalServerTest.java, 2021-09-29 -jetty-core/jetty-http3/jetty-http3-tests/src/test/java/org/eclipse/jetty/http3/tests/AbstractClientServerTest.java, 2021-09-21 -jetty-core/jetty-http3/jetty-http3-tests/src/test/java/org/eclipse/jetty/http3/tests/StreamIdleTimeoutTest.java, 2021-10-01 -jetty-core/jetty-http3/jetty-http3-tests/src/test/java/org/eclipse/jetty/http3/tests/DataDemandTest.java, 2021-09-21 -jetty-core/jetty-http3/jetty-http3-tests/src/test/java/org/eclipse/jetty/http3/tests/HandlerClientServerTest.java, 2021-10-12 -jetty-core/jetty-http3/jetty-http3-qpack/src/test/java/org/eclipse/jetty/http3/qpack/TestEncoderHandler.java, 2021-02-18 -jetty-core/jetty-http3/jetty-http3-qpack/src/test/java/org/eclipse/jetty/http3/qpack/InstructionGeneratorTest.java, 2021-02-13 -jetty-core/jetty-http3/jetty-http3-qpack/src/test/java/org/eclipse/jetty/http3/qpack/PreEncodedFieldTest.java, 2021-05-31 -jetty-core/jetty-http3/jetty-http3-qpack/src/test/java/org/eclipse/jetty/http3/qpack/DecoderInstructionParserTest.java, 2021-02-10 -jetty-core/jetty-http3/jetty-http3-qpack/src/test/java/org/eclipse/jetty/http3/qpack/EvictionTest.java, 2021-03-09 -jetty-core/jetty-http3/jetty-http3-qpack/src/test/java/org/eclipse/jetty/http3/qpack/TestDecoderHandler.java, 2021-02-18 -jetty-core/jetty-http3/jetty-http3-qpack/src/test/java/org/eclipse/jetty/http3/qpack/DecoderParserDebugHandler.java, 2021-03-10 -jetty-core/jetty-http3/jetty-http3-qpack/src/test/java/org/eclipse/jetty/http3/qpack/QpackTestUtil.java, 2021-03-09 -jetty-core/jetty-http3/jetty-http3-qpack/src/test/java/org/eclipse/jetty/http3/qpack/EncoderParserDebugHandler.java, 2021-03-10 -jetty-core/jetty-http3/jetty-http3-qpack/src/test/java/org/eclipse/jetty/http3/qpack/EncodeDecodeTest.java, 2021-03-03 -jetty-core/jetty-http3/jetty-http3-qpack/src/test/java/org/eclipse/jetty/http3/qpack/SectionAcknowledgmentTest.java, 2022-08-11 -jetty-core/jetty-http3/jetty-http3-qpack/src/test/java/org/eclipse/jetty/http3/qpack/HuffmanTest.java, 2014-06-02 -jetty-core/jetty-http3/jetty-http3-qpack/src/test/java/org/eclipse/jetty/http3/qpack/NBitIntegerParserTest.java, 2021-02-10 -jetty-core/jetty-http3/jetty-http3-qpack/src/test/java/org/eclipse/jetty/http3/qpack/BlockedStreamsTest.java, 2022-08-11 -jetty-core/jetty-http3/jetty-http3-qpack/src/test/java/org/eclipse/jetty/http3/qpack/EncoderInstructionParserTest.java, 2021-02-11 -jetty-core/jetty-http3/jetty-http3-qpack/src/test/java/org/eclipse/jetty/http3/qpack/NBitIntegerTest.java, 2014-06-02 -jetty-core/jetty-http3/jetty-http3-qpack/src/main/java/module-info.java, 2009-03-24 -jetty-core/jetty-http3/jetty-http3-qpack/src/main/java/org/eclipse/jetty/http3/qpack/QpackException.java, 2012-06-25 -jetty-core/jetty-http3/jetty-http3-qpack/src/main/java/org/eclipse/jetty/http3/qpack/QpackFieldPreEncoder.java, 2014-08-06 -jetty-core/jetty-http3/jetty-http3-qpack/src/main/java/org/eclipse/jetty/http3/qpack/internal/metadata/Http3Fields.java, 2021-05-04 -jetty-core/jetty-http3/jetty-http3-qpack/src/main/java/org/eclipse/jetty/http3/qpack/internal/metadata/AuthorityHttpField.java, 2014-06-09 -jetty-core/jetty-http3/jetty-http3-qpack/src/main/java/org/eclipse/jetty/http3/qpack/internal/metadata/StaticTableHttpField.java, 2009-03-24 -jetty-core/jetty-http3/jetty-http3-qpack/src/main/java/org/eclipse/jetty/http3/qpack/internal/metadata/MetaDataBuilder.java, 2014-06-09 -jetty-core/jetty-http3/jetty-http3-qpack/src/main/java/org/eclipse/jetty/http3/qpack/internal/QpackContext.java, 2014-06-08 -jetty-core/jetty-http3/jetty-http3-qpack/src/main/java/org/eclipse/jetty/http3/qpack/internal/parser/DecoderInstructionParser.java, 2021-02-10 -jetty-core/jetty-http3/jetty-http3-qpack/src/main/java/org/eclipse/jetty/http3/qpack/internal/parser/EncodedFieldSection.java, 2021-02-18 -jetty-core/jetty-http3/jetty-http3-qpack/src/main/java/org/eclipse/jetty/http3/qpack/internal/parser/EncoderInstructionParser.java, 2021-02-10 -jetty-core/jetty-http3/jetty-http3-qpack/src/main/java/org/eclipse/jetty/http3/qpack/internal/table/StaticTable.java, 2021-02-05 -jetty-core/jetty-http3/jetty-http3-qpack/src/main/java/org/eclipse/jetty/http3/qpack/internal/table/DynamicTable.java, 2021-02-05 -jetty-core/jetty-http3/jetty-http3-qpack/src/main/java/org/eclipse/jetty/http3/qpack/internal/table/Entry.java, 2021-02-05 -jetty-core/jetty-http3/jetty-http3-qpack/src/main/java/org/eclipse/jetty/http3/qpack/internal/instruction/SetCapacityInstruction.java, 2021-02-13 -jetty-core/jetty-http3/jetty-http3-qpack/src/main/java/org/eclipse/jetty/http3/qpack/internal/instruction/InsertCountIncrementInstruction.java, 2021-02-13 -jetty-core/jetty-http3/jetty-http3-qpack/src/main/java/org/eclipse/jetty/http3/qpack/internal/instruction/StreamCancellationInstruction.java, 2021-02-13 -jetty-core/jetty-http3/jetty-http3-qpack/src/main/java/org/eclipse/jetty/http3/qpack/internal/instruction/IndexedNameEntryInstruction.java, 2021-02-13 -jetty-core/jetty-http3/jetty-http3-qpack/src/main/java/org/eclipse/jetty/http3/qpack/internal/instruction/LiteralNameEntryInstruction.java, 2021-02-13 -jetty-core/jetty-http3/jetty-http3-qpack/src/main/java/org/eclipse/jetty/http3/qpack/internal/instruction/AbstractInstruction.java, 2012-08-03 -jetty-core/jetty-http3/jetty-http3-qpack/src/main/java/org/eclipse/jetty/http3/qpack/internal/instruction/SectionAcknowledgmentInstruction.java, 2021-02-13 -jetty-core/jetty-http3/jetty-http3-qpack/src/main/java/org/eclipse/jetty/http3/qpack/internal/instruction/DuplicateInstruction.java, 2021-02-13 -jetty-core/jetty-http3/jetty-http3-qpack/src/main/java/org/eclipse/jetty/http3/qpack/internal/StreamInfo.java, 2021-03-04 -jetty-core/jetty-http3/jetty-http3-qpack/src/main/java/org/eclipse/jetty/http3/qpack/internal/util/NBitIntegerEncoder.java, 2014-06-02 -jetty-core/jetty-http3/jetty-http3-qpack/src/main/java/org/eclipse/jetty/http3/qpack/internal/util/HuffmanEncoder.java, 2014-06-02 -jetty-core/jetty-http3/jetty-http3-qpack/src/main/java/org/eclipse/jetty/http3/qpack/internal/util/EncodingException.java, 2009-03-24 -jetty-core/jetty-http3/jetty-http3-qpack/src/main/java/org/eclipse/jetty/http3/qpack/internal/util/NBitIntegerParser.java, 2021-02-10 -jetty-core/jetty-http3/jetty-http3-qpack/src/main/java/org/eclipse/jetty/http3/qpack/internal/util/NBitStringParser.java, 2021-02-11 -jetty-core/jetty-http3/jetty-http3-qpack/src/main/java/org/eclipse/jetty/http3/qpack/internal/util/HuffmanDecoder.java, 2021-03-10 -jetty-core/jetty-http3/jetty-http3-qpack/src/main/java/org/eclipse/jetty/http3/qpack/internal/EncodableEntry.java, 2021-02-24 -jetty-core/jetty-http3/jetty-http3-qpack/src/main/java/org/eclipse/jetty/http3/qpack/QpackDecoder.java, 2009-03-24 -jetty-core/jetty-http3/jetty-http3-qpack/src/main/java/org/eclipse/jetty/http3/qpack/QpackEncoder.java, 2009-03-24 -jetty-core/jetty-http3/jetty-http3-qpack/src/main/java/org/eclipse/jetty/http3/qpack/Instruction.java, 2021-02-13 -jetty-core/jetty-http3/jetty-http3-server/src/main/java/module-info.java, 2009-03-24 -jetty-core/jetty-http3/jetty-http3-server/src/main/java/org/eclipse/jetty/http3/server/HTTP3ServerConnectionFactory.java, 2021-09-09 -jetty-core/jetty-http3/jetty-http3-server/src/main/java/org/eclipse/jetty/http3/server/internal/HTTP3StreamServer.java, 2021-11-29 -jetty-core/jetty-http3/jetty-http3-server/src/main/java/org/eclipse/jetty/http3/server/internal/ServerHTTP3StreamConnection.java, 2021-09-21 -jetty-core/jetty-http3/jetty-http3-server/src/main/java/org/eclipse/jetty/http3/server/internal/HttpStreamOverHTTP3.java, 2022-05-03 -jetty-core/jetty-http3/jetty-http3-server/src/main/java/org/eclipse/jetty/http3/server/internal/ServerHTTP3Session.java, 2021-09-12 -jetty-core/jetty-http3/jetty-http3-server/src/main/java/org/eclipse/jetty/http3/server/internal/HTTP3SessionServer.java, 2011-09-12 -jetty-core/jetty-http3/jetty-http3-server/src/main/java/org/eclipse/jetty/http3/server/RawHTTP3ServerConnectionFactory.java, 2011-09-12 -jetty-core/jetty-http3/jetty-http3-server/src/main/java/org/eclipse/jetty/http3/server/AbstractHTTP3ServerConnectionFactory.java, 2021-09-09 -jetty-core/jetty-http3/jetty-http3-server/src/main/java/org/eclipse/jetty/http3/server/HTTP3ServerConnector.java, 2021-10-15 -jetty-core/jetty-http3/jetty-http3-client-transport/src/main/java/module-info.java, 2013-07-12 -jetty-core/jetty-http3/jetty-http3-client-transport/src/main/java/org/eclipse/jetty/http3/client/transport/internal/HttpReceiverOverHTTP3.java, 2021-10-19 -jetty-core/jetty-http3/jetty-http3-client-transport/src/main/java/org/eclipse/jetty/http3/client/transport/internal/HttpConnectionOverHTTP3.java, 2021-10-15 -jetty-core/jetty-http3/jetty-http3-client-transport/src/main/java/org/eclipse/jetty/http3/client/transport/internal/HttpChannelOverHTTP3.java, 2021-10-12 -jetty-core/jetty-http3/jetty-http3-client-transport/src/main/java/org/eclipse/jetty/http3/client/transport/internal/HttpSenderOverHTTP3.java, 2015-02-05 -jetty-core/jetty-http3/jetty-http3-client-transport/src/main/java/org/eclipse/jetty/http3/client/transport/internal/SessionClientListener.java, 2021-10-19 -jetty-core/jetty-http3/jetty-http3-client-transport/src/main/java/org/eclipse/jetty/http3/client/transport/HttpClientTransportOverHTTP3.java, 2021-10-15 -jetty-core/jetty-http3/jetty-http3-client-transport/src/main/java/org/eclipse/jetty/http3/client/transport/ClientConnectionFactoryOverHTTP3.java, 2021-10-15 -jetty-core/jetty-http3/jetty-http3-common/src/test/java/org/eclipse/jetty/http3/internal/HeadersGenerateParseTest.java, 2021-09-14 -jetty-core/jetty-http3/jetty-http3-common/src/test/java/org/eclipse/jetty/http3/internal/DataGenerateParseTest.java, 2021-09-11 -jetty-core/jetty-http3/jetty-http3-common/src/test/java/org/eclipse/jetty/http3/internal/SettingsGenerateParseTest.java, 2021-09-11 -jetty-core/jetty-http3/jetty-http3-common/src/test/java/org/eclipse/jetty/http3/internal/GoAwayGenerateParseTest.java, 2021-09-11 -jetty-core/jetty-http3/jetty-http3-common/src/test/java/org/eclipse/jetty/http3/VarLenIntTest.java, 2021-09-09 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/module-info.java, 2009-03-24 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/frames/SettingsFrame.java, 2009-03-24 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/frames/HeadersFrame.java, 2009-03-24 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/frames/Frame.java, 2009-03-24 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/frames/GoAwayFrame.java, 2009-03-24 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/frames/DataFrame.java, 2009-03-24 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/frames/FrameType.java, 2009-03-24 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/HTTP3ErrorCode.java, 2021-09-09 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/internal/ControlStreamConnection.java, 2017-04-01 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/internal/VarLenInt.java, 2021-09-09 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/InstructionHandler.java, 2017-04-01 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/MessageFlusher.java, 2021-09-12 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/parser/ControlParser.java, 2021-09-09 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/parser/UnknownBodyParser.java, 2009-03-24 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/parser/PushPromiseBodyParser.java, 2009-03-24 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/parser/GoAwayBodyParser.java, 2009-03-24 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/parser/ParserListener.java, 2009-03-24 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/parser/MessageParser.java, 2021-09-09 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/parser/HeadersBodyParser.java, 2021-09-09 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/parser/SettingsBodyParser.java, 2009-03-24 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/parser/DataBodyParser.java, 2021-09-09 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/parser/BodyParser.java, 2021-09-09 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/parser/CancelPushBodyParser.java, 2009-03-24 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/parser/HeaderParser.java, 2021-09-09 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/parser/MaxPushIdBodyParser.java, 2009-03-24 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/EncoderStreamConnection.java, 2017-04-01 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/generator/ControlGenerator.java, 2021-09-11 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/generator/CancelPushGenerator.java, 2012-05-08 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/generator/HeadersGenerator.java, 2012-05-08 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/generator/DataGenerator.java, 2012-05-08 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/generator/SettingsGenerator.java, 2021-09-11 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/generator/MaxPushIdGenerator.java, 2012-05-08 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/generator/MessageGenerator.java, 2021-09-11 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/generator/GoAwayGenerator.java, 2012-05-08 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/generator/FrameGenerator.java, 2021-02-13 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/generator/PushPromiseGenerator.java, 2012-05-08 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/HTTP3StreamConnection.java, 2021-09-21 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/HTTP3Stream.java, 2009-03-24 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/DecoderStreamConnection.java, 2017-04-01 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/ControlFlusher.java, 2021-09-11 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/InstructionStreamConnection.java, 2017-04-01 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/InstructionFlusher.java, 2021-09-12 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/api/Stream.java, 2012-11-02 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/api/Session.java, 2012-11-02 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/HTTP3Session.java, 2013-07-12 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/UnidirectionalStreamConnection.java, 2021-09-12 -jetty-core/jetty-http3/jetty-http3-common/src/main/java/org/eclipse/jetty/http3/HTTP3Configuration.java, 2021-10-13 -jetty-core/jetty-http3/jetty-http3-client/src/main/java/module-info.java, 2013-07-12 -jetty-core/jetty-http3/jetty-http3-client/src/main/java/org/eclipse/jetty/http3/client/HTTP3Client.java, 2021-09-11 -jetty-core/jetty-http3/jetty-http3-client/src/main/java/org/eclipse/jetty/http3/client/ClientHTTP3Session.java, 2021-09-12 -jetty-core/jetty-http3/jetty-http3-client/src/main/java/org/eclipse/jetty/http3/client/internal/ClientHTTP3StreamConnection.java, 2021-09-21 -jetty-core/jetty-http3/jetty-http3-client/src/main/java/org/eclipse/jetty/http3/client/HTTP3ClientConnectionFactory.java, 2021-09-11 -jetty-core/jetty-http3/jetty-http3-client/src/main/java/org/eclipse/jetty/http3/client/HTTP3SessionClient.java, 2021-09-12 -jetty-core/jetty-http3/jetty-http3-client/src/main/java/org/eclipse/jetty/http3/client/HTTP3StreamClient.java, 2021-11-29 -jetty-core/jetty-osgi/src/main/java/org/eclipse/jetty/osgi/OSGiServerConstants.java, 2010-06-23 -jetty-core/jetty-osgi/src/main/java/org/eclipse/jetty/osgi/JettyBootstrapActivator.java, 2010-06-23 -jetty-core/jetty-osgi/src/main/java/org/eclipse/jetty/osgi/ContextFactory.java, 2009-03-24 -jetty-core/jetty-osgi/src/main/java/org/eclipse/jetty/osgi/AbstractContextProvider.java, 2022-12-22 -jetty-core/jetty-osgi/src/main/java/org/eclipse/jetty/osgi/BundleProvider.java, 2009-03-24 -jetty-core/jetty-osgi/src/main/java/org/eclipse/jetty/osgi/LibExtClassLoaderHelper.java, 2009-11-02 -jetty-core/jetty-osgi/src/main/java/org/eclipse/jetty/osgi/util/DefaultFileLocatorHelper.java, 2009-11-02 -jetty-core/jetty-osgi/src/main/java/org/eclipse/jetty/osgi/util/BundleClassLoaderHelperFactory.java, 2012-05-14 -jetty-core/jetty-osgi/src/main/java/org/eclipse/jetty/osgi/util/ServerClasspathContributor.java, 2009-03-24 -jetty-core/jetty-osgi/src/main/java/org/eclipse/jetty/osgi/util/BundleFileLocatorHelperFactory.java, 2012-05-14 -jetty-core/jetty-osgi/src/main/java/org/eclipse/jetty/osgi/util/FakeURLClassLoader.java, 2009-11-02 -jetty-core/jetty-osgi/src/main/java/org/eclipse/jetty/osgi/util/ServerConnectorListener.java, 2017-10-05 -jetty-core/jetty-osgi/src/main/java/org/eclipse/jetty/osgi/util/BundleFileLocatorHelper.java, 2009-11-02 -jetty-core/jetty-osgi/src/main/java/org/eclipse/jetty/osgi/util/DefaultBundleClassLoaderHelper.java, 2009-11-02 -jetty-core/jetty-osgi/src/main/java/org/eclipse/jetty/osgi/util/Util.java, 2013-05-24 -jetty-core/jetty-osgi/src/main/java/org/eclipse/jetty/osgi/util/BundleClassLoaderHelper.java, 2009-11-02 -jetty-core/jetty-osgi/src/main/java/org/eclipse/jetty/osgi/util/OSGiClassLoader.java, 2012-05-16 -jetty-core/jetty-osgi/src/main/java/org/eclipse/jetty/osgi/util/EventSender.java, 2012-06-06 -jetty-core/jetty-osgi/src/main/java/org/eclipse/jetty/osgi/BundleWebAppProvider.java, 2012-05-14 -jetty-core/jetty-osgi/src/main/java/org/eclipse/jetty/osgi/OSGiUndeployer.java, 2009-03-24 -jetty-core/jetty-osgi/src/main/java/org/eclipse/jetty/osgi/OSGiDeployer.java, 2012-06-06 -jetty-core/jetty-osgi/src/main/java/org/eclipse/jetty/osgi/OSGiApp.java, 2022-12-22 -jetty-core/jetty-osgi/src/main/java/org/eclipse/jetty/osgi/OSGiWebappConstants.java, 2009-11-09 -jetty-core/jetty-osgi/src/main/java/org/eclipse/jetty/osgi/BundleContextProvider.java, 2012-05-14 -jetty-core/jetty-osgi/src/main/java/org/eclipse/jetty/osgi/JettyServerFactory.java, 2022-12-22 -jetty-core/jetty-fcgi/jetty-fcgi-client/src/test/java/org/eclipse/jetty/fcgi/parser/ClientParserTest.java, 2013-09-03 -jetty-core/jetty-fcgi/jetty-fcgi-client/src/test/java/org/eclipse/jetty/fcgi/generator/ClientGeneratorTest.java, 2013-08-31 -jetty-core/jetty-fcgi/jetty-fcgi-client/src/main/java/module-info.java, 2009-03-24 -jetty-core/jetty-fcgi/jetty-fcgi-client/src/main/java/org/eclipse/jetty/fcgi/parser/ResponseContentParser.java, 2013-09-03 -jetty-core/jetty-fcgi/jetty-fcgi-client/src/main/java/org/eclipse/jetty/fcgi/parser/ServerParser.java, 2013-08-31 -jetty-core/jetty-fcgi/jetty-fcgi-client/src/main/java/org/eclipse/jetty/fcgi/parser/Parser.java, 2013-08-31 -jetty-core/jetty-fcgi/jetty-fcgi-client/src/main/java/org/eclipse/jetty/fcgi/parser/ContentParser.java, 2013-08-31 -jetty-core/jetty-fcgi/jetty-fcgi-client/src/main/java/org/eclipse/jetty/fcgi/parser/ClientParser.java, 2013-08-31 -jetty-core/jetty-fcgi/jetty-fcgi-client/src/main/java/org/eclipse/jetty/fcgi/parser/BeginRequestContentParser.java, 2013-08-31 -jetty-core/jetty-fcgi/jetty-fcgi-client/src/main/java/org/eclipse/jetty/fcgi/parser/StreamContentParser.java, 2013-09-02 -jetty-core/jetty-fcgi/jetty-fcgi-client/src/main/java/org/eclipse/jetty/fcgi/parser/EndRequestContentParser.java, 2013-08-31 -jetty-core/jetty-fcgi/jetty-fcgi-client/src/main/java/org/eclipse/jetty/fcgi/parser/ParamsContentParser.java, 2013-08-31 -jetty-core/jetty-fcgi/jetty-fcgi-client/src/main/java/org/eclipse/jetty/fcgi/parser/HeaderParser.java, 2013-08-31 -jetty-core/jetty-fcgi/jetty-fcgi-client/src/main/java/org/eclipse/jetty/fcgi/generator/Flusher.java, 2013-09-08 -jetty-core/jetty-fcgi/jetty-fcgi-client/src/main/java/org/eclipse/jetty/fcgi/generator/ServerGenerator.java, 2013-09-03 -jetty-core/jetty-fcgi/jetty-fcgi-client/src/main/java/org/eclipse/jetty/fcgi/generator/Generator.java, 2013-08-31 -jetty-core/jetty-fcgi/jetty-fcgi-client/src/main/java/org/eclipse/jetty/fcgi/generator/ClientGenerator.java, 2013-08-31 -jetty-core/jetty-fcgi/jetty-fcgi-client/src/main/java/org/eclipse/jetty/fcgi/client/transport/internal/HttpReceiverOverFCGI.java, 2013-08-31 -jetty-core/jetty-fcgi/jetty-fcgi-client/src/main/java/org/eclipse/jetty/fcgi/client/transport/internal/HttpSenderOverFCGI.java, 2013-09-06 -jetty-core/jetty-fcgi/jetty-fcgi-client/src/main/java/org/eclipse/jetty/fcgi/client/transport/internal/HttpConnectionOverFCGI.java, 2013-09-06 -jetty-core/jetty-fcgi/jetty-fcgi-client/src/main/java/org/eclipse/jetty/fcgi/client/transport/internal/HttpChannelOverFCGI.java, 2013-09-08 -jetty-core/jetty-fcgi/jetty-fcgi-client/src/main/java/org/eclipse/jetty/fcgi/client/transport/HttpClientTransportOverFCGI.java, 2013-09-06 -jetty-core/jetty-fcgi/jetty-fcgi-client/src/main/java/org/eclipse/jetty/fcgi/FCGI.java, 2013-08-31 -jetty-core/jetty-fcgi/jetty-fcgi-proxy/src/test/java/org/eclipse/jetty/fcgi/proxy/FastCGIProxyHandlerTest.java, 2014-05-06 -jetty-core/jetty-fcgi/jetty-fcgi-proxy/src/main/java/module-info.java, 2013-07-12 -jetty-core/jetty-fcgi/jetty-fcgi-proxy/src/main/java/org/eclipse/jetty/fcgi/proxy/FastCGIProxyHandler.java, 2022-10-18 -jetty-core/jetty-fcgi/jetty-fcgi-server/src/test/java/org/eclipse/jetty/fcgi/server/ExternalFastCGIServerTest.java, 2013-10-18 -jetty-core/jetty-fcgi/jetty-fcgi-server/src/test/java/org/eclipse/jetty/fcgi/server/HttpClientTest.java, 2013-09-06 -jetty-core/jetty-fcgi/jetty-fcgi-server/src/test/java/org/eclipse/jetty/fcgi/server/AbstractHttpClientServerTest.java, 2013-09-06 -jetty-core/jetty-fcgi/jetty-fcgi-server/src/main/java/module-info.java, 2013-07-12 -jetty-core/jetty-fcgi/jetty-fcgi-server/src/main/java/org/eclipse/jetty/fcgi/server/internal/HttpStreamOverFCGI.java, 2022-05-03 -jetty-core/jetty-fcgi/jetty-fcgi-server/src/main/java/org/eclipse/jetty/fcgi/server/internal/ServerFCGIConnection.java, 2013-08-31 -jetty-core/jetty-fcgi/jetty-fcgi-server/src/main/java/org/eclipse/jetty/fcgi/server/ServerFCGIConnectionFactory.java, 2013-08-31 -jetty-core/jetty-unixdomain-server/src/test/java/org/eclipse/jetty/unixdomain/server/UnixDomainTest.java, 2021-08-05 -jetty-core/jetty-unixdomain-server/src/main/java/module-info.java, 2013-07-12 -jetty-core/jetty-unixdomain-server/src/main/java/org/eclipse/jetty/unixdomain/server/UnixDomainServerConnector.java, 2021-08-05 -jetty-core/jetty-websocket/jetty-websocket-core-server/src/main/java/module-info.java, 2009-03-24 -jetty-core/jetty-websocket/jetty-websocket-core-server/src/main/java/org/eclipse/jetty/websocket/core/server/WebSocketMappings.java, 2018-12-22 -jetty-core/jetty-websocket/jetty-websocket-core-server/src/main/java/org/eclipse/jetty/websocket/core/server/internal/ServerUpgradeResponseImpl.java, 2012-06-27 -jetty-core/jetty-websocket/jetty-websocket-core-server/src/main/java/org/eclipse/jetty/websocket/core/server/internal/ServerUpgradeRequestImpl.java, 2012-06-27 -jetty-core/jetty-websocket/jetty-websocket-core-server/src/main/java/org/eclipse/jetty/websocket/core/server/internal/WebSocketHttpFieldsWrapper.java, 2022-05-03 -jetty-core/jetty-websocket/jetty-websocket-core-server/src/main/java/org/eclipse/jetty/websocket/core/server/internal/RFC6455Negotiation.java, 2019-11-14 -jetty-core/jetty-websocket/jetty-websocket-core-server/src/main/java/org/eclipse/jetty/websocket/core/server/internal/HandshakerSelector.java, 2019-08-14 -jetty-core/jetty-websocket/jetty-websocket-core-server/src/main/java/org/eclipse/jetty/websocket/core/server/internal/HttpFieldsWrapper.java, 2022-05-03 -jetty-core/jetty-websocket/jetty-websocket-core-server/src/main/java/org/eclipse/jetty/websocket/core/server/internal/RFC8441Negotiation.java, 2009-03-24 -jetty-core/jetty-websocket/jetty-websocket-core-server/src/main/java/org/eclipse/jetty/websocket/core/server/internal/WebSocketNegotiation.java, 2023-01-31 -jetty-core/jetty-websocket/jetty-websocket-core-server/src/main/java/org/eclipse/jetty/websocket/core/server/internal/RFC6455Handshaker.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-server/src/main/java/org/eclipse/jetty/websocket/core/server/internal/CreatorNegotiator.java, 2020-12-02 -jetty-core/jetty-websocket/jetty-websocket-core-server/src/main/java/org/eclipse/jetty/websocket/core/server/internal/RFC8441Handshaker.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-server/src/main/java/org/eclipse/jetty/websocket/core/server/internal/AbstractHandshaker.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-server/src/main/java/org/eclipse/jetty/websocket/core/server/FrameHandlerFactory.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-server/src/main/java/org/eclipse/jetty/websocket/core/server/WebSocketServerComponents.java, 2020-05-12 -jetty-core/jetty-websocket/jetty-websocket-core-server/src/main/java/org/eclipse/jetty/websocket/core/server/WebSocketNegotiator.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-server/src/main/java/org/eclipse/jetty/websocket/core/server/ServerUpgradeResponse.java, 2012-06-27 -jetty-core/jetty-websocket/jetty-websocket-core-server/src/main/java/org/eclipse/jetty/websocket/core/server/WebSocketUpgradeHandler.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-server/src/main/java/org/eclipse/jetty/websocket/core/server/Handshaker.java, 2013-08-31 -jetty-core/jetty-websocket/jetty-websocket-core-server/src/main/java/org/eclipse/jetty/websocket/core/server/ServerUpgradeRequest.java, 2012-06-27 -jetty-core/jetty-websocket/jetty-websocket-core-server/src/main/java/org/eclipse/jetty/websocket/core/server/WebSocketCreator.java, 2012-06-27 -jetty-core/jetty-websocket/jetty-websocket-core-client/src/main/java/module-info.java, 2009-03-24 -jetty-core/jetty-websocket/jetty-websocket-core-client/src/main/java/org/eclipse/jetty/websocket/core/client/internal/HttpUpgraderOverHTTP.java, 2019-08-14 -jetty-core/jetty-websocket/jetty-websocket-core-client/src/main/java/org/eclipse/jetty/websocket/core/client/internal/HttpClientProvider.java, 2017-05-18 -jetty-core/jetty-websocket/jetty-websocket-core-client/src/main/java/org/eclipse/jetty/websocket/core/client/internal/XmlHttpClientProvider.java, 2012-06-27 -jetty-core/jetty-websocket/jetty-websocket-core-client/src/main/java/org/eclipse/jetty/websocket/core/client/internal/HttpUpgraderOverHTTP2.java, 2012-06-27 -jetty-core/jetty-websocket/jetty-websocket-core-client/src/main/java/org/eclipse/jetty/websocket/core/client/WebSocketCoreClient.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-client/src/main/java/org/eclipse/jetty/websocket/core/client/UpgradeListener.java, 2012-06-27 -jetty-core/jetty-websocket/jetty-websocket-core-client/src/main/java/org/eclipse/jetty/websocket/core/client/CoreClientUpgradeRequest.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/ParserReservedBitTest.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/ParserBadCloseStatusCodesTest.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/WebSocketServer.java, 2019-02-28 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/DemandTest.java, 2021-11-09 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/FrameBufferTest.java, 2019-11-29 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/FlushTest.java, 2020-01-29 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/internal/MockEndpoint.java, 2019-02-21 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/internal/FrameFlusherTest.java, 2019-02-21 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/UpgradeWithLeftOverHttpBytesTest.java, 2020-08-31 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/CloseStatusTest.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/RawFrameBuilder.java, 2013-08-20 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/proxy/WebSocketProxyTest.java, 2019-01-31 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/proxy/WebSocketProxy.java, 2019-02-13 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/server/WebSocketServerTest.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/WebSocketFrameTest.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/AutoFragmentTest.java, 2019-10-22 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/WebSocketUpgradeHandlerTest.java, 2020-12-02 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/client/WebSocketClientServerTest.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/ParsePayloadLengthTest.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/DemandingIncomingFramesCapture.java, 2012-07-12 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/TestFrameHandler.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/WebSocketServerComponentsTest.java, 2021-03-26 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/WebSocketNegotiationTest.java, 2019-03-21 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/Timeouts.java, 2012-05-08 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/GeneratorFrameFlagsTest.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/EchoFrameHandler.java, 2012-07-12 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/WebSocketOpenTest.java, 2019-01-24 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/IncomingFramesCapture.java, 2012-06-18 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/GeneratorParserRoundTripTest.java, 2012-06-21 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/TestWebSocketNegotiator.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/ParserTest.java, 2012-06-18 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/ParserCapture.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/util/MessageReaderTest.java, 2020-02-17 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/util/PartialStringMessageSinkTest.java, 2020-02-20 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/util/MessageWriterTest.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/util/StringMessageSinkTest.java, 2020-02-20 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/GeneratorTest.java, 2012-07-18 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/WebSocketTester.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/OpCodeTest.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/WebSocketEchoTest.java, 2021-08-30 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/SynchronousFrameHandler.java, 2019-01-29 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/OutgoingFramesCapture.java, 2012-07-23 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/WebSocketCloseTest.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/autobahn/CoreAutobahnClient.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/autobahn/CoreAutobahnServer.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/autobahn/AutobahnTests.java, 2020-09-21 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/autobahn/AutobahnFrameHandler.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/AcceptHashTest.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/ParserGoodCloseStatusCodesTest.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/MessageHandlerTest.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/TestAsyncFrameHandler.java, 2019-06-11 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/ParserBadOpCodesTest.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/TestMessageHandler.java, 2019-06-26 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/chat/ChatWebSocketServer.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/chat/ChatWebSocketClient.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/OutgoingNetworkBytesCapture.java, 2012-10-04 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/extensions/ValidationExtensionTest.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/extensions/ExtensionConfigTest.java, 2012-11-06 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/extensions/ExtensionStackTest.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/extensions/PermessageDeflateDemandTest.java, 2022-01-19 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/extensions/FragmentExtensionTest.java, 2012-07-23 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/extensions/PerMessageDeflateExtensionTest.java, 2012-07-23 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/extensions/PerMessageDeflaterBufferSizeTest.java, 2019-11-19 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/extensions/IdentityExtensionTest.java, 2012-07-23 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/extensions/AbstractExtensionTest.java, 2012-07-10 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/extensions/ExtensionTool.java, 2013-12-09 -jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/CapturedHexPayloads.java, 2012-07-12 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/module-info.java, 2018-11-22 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/OutgoingFrames.java, 2012-07-12 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/FrameHandler.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/internal/DemandChain.java, 2009-03-24 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/internal/FrameSequence.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/internal/WebSocketConnection.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/internal/Parser.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/internal/WebSocketCoreSession.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/internal/DemandingFlusher.java, 2022-01-19 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/internal/WebSocketSessionState.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/internal/NullAppendable.java, 2012-06-25 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/internal/TransformingFlusher.java, 2019-11-19 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/internal/ExtensionStack.java, 2012-11-12 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/internal/Generator.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/internal/WebSocketCore.java, 2012-06-12 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/internal/FrameFlusher.java, 2013-11-21 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/internal/PerMessageDeflateExtension.java, 2019-11-19 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/internal/FragmentExtension.java, 2012-11-05 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/internal/ValidationExtension.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/internal/MessageHandler.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/internal/FrameEntry.java, 2009-03-24 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/internal/messages/PartialByteArrayMessageSink.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/internal/messages/DispatchedMessageSink.java, 2017-05-09 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/internal/messages/PartialStringMessageSink.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/internal/messages/MessageInputStream.java, 2012-08-07 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/internal/messages/InputStreamMessageSink.java, 2016-02-12 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/internal/messages/MessageSink.java, 2009-03-24 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/internal/messages/StringMessageSink.java, 2016-02-12 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/internal/messages/ByteBufferMessageSink.java, 2016-02-12 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/internal/messages/AbstractMessageSink.java, 2012-08-27 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/internal/messages/ReaderMessageSink.java, 2016-02-12 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/internal/messages/MessageReader.java, 2012-07-05 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/internal/messages/MessageOutputStream.java, 2012-07-05 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/internal/messages/ByteArrayMessageSink.java, 2016-02-12 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/internal/messages/PartialByteBufferMessageSink.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/internal/messages/MessageWriter.java, 2012-07-05 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/internal/util/ReflectUtils.java, 2013-06-27 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/internal/util/TextUtils.java, 2013-07-12 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/internal/util/InvokerUtils.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/internal/util/FrameValidation.java, 2021-02-08 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/internal/IdentityExtension.java, 2011-05-02 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/internal/Negotiated.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/internal/FrameCaptureExtension.java, 2014-05-16 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/internal/FragmentingFlusher.java, 2019-11-26 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/ExtensionConfig.java, 2009-03-24 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/WebSocketComponents.java, 2019-01-22 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/OpCode.java, 2012-06-18 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/Frame.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/CoreSession.java, 2019-12-30 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/CloseStatus.java, 2018-11-02 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/Configuration.java, 2019-12-30 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/IncomingFrames.java, 2012-07-12 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/exception/DuplicateAnnotationException.java, 2016-02-12 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/exception/InvalidWebSocketException.java, 2012-06-27 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/exception/MessageTooLargeException.java, 2012-07-06 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/exception/CloseException.java, 2012-06-20 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/exception/BadPayloadException.java, 2012-07-12 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/exception/WebSocketException.java, 2012-06-12 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/exception/ProtocolException.java, 2012-06-29 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/exception/InvalidSignatureException.java, 2012-09-26 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/exception/UpgradeException.java, 2012-06-12 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/exception/WebSocketWriteTimeoutException.java, 2019-04-23 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/exception/WebSocketTimeoutException.java, 2012-06-12 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/Extension.java, 2012-11-05 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/WebSocketExtensionRegistry.java, 2012-05-08 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/AbstractExtension.java, 2011-05-02 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/Behavior.java, 2012-06-20 -jetty-core/jetty-websocket/jetty-websocket-core-common/src/main/java/org/eclipse/jetty/websocket/core/WebSocketConstants.java, 2018-11-02 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/UptimeTest.java, 2012-11-02 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/IntrospectionUtilTest.java, 2019-05-24 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/BlockingTest.java, 2022-05-03 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/SharedBlockingCallbackTest.java, 2012-10-25 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/resource/AttributeNormalizerToCanonicalUriTest.java, 2018-05-03 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/resource/ResourceFactoryTest.java, 2022-11-11 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/resource/MemoryResourceTest.java, 2009-03-24 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/resource/UrlResourceFactoryTest.java, 2022-11-14 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/resource/PathResourceTest.java, 2009-03-24 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/resource/AlternateFileSystemResourceTest.java, 2023-01-13 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/resource/ResourceAliasTest.java, 2013-06-03 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/resource/MountedPathResourceTest.java, 2014-06-25 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/resource/ResourceTest.java, 2009-03-24 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/resource/AttributeNormalizerTest.java, 2016-01-13 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/resource/CombinedResourceTest.java, 2009-03-24 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/resource/FileSystemResourceTest.java, 2014-06-25 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/URIUtilTest.java, 2009-03-24 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/LoaderTest.java, 2009-03-24 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/test10/ExampleClass.java, 2012-11-02 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/Utf8LineParserTest.java, 2012-08-15 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/UrlEncodedUtf8Test.java, 2014-04-10 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/MultiReleaseJarFileTest.java, 2017-09-20 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/DateCacheTest.java, 2005-11-27 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/ExceptionUtilTest.java, 2022-07-27 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/IteratingCallbackTest.java, 2013-11-21 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/RolloverFileOutputStreamTest.java, 2017-02-27 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/security/PasswordTest.java, 2009-03-24 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/security/CredentialTest.java, 2015-11-26 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/FieldsTest.java, 2022-05-03 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/HostPortTest.java, 2016-08-31 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/StringUtilTest.java, 2005-11-27 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/LeakDetectorTest.java, 2014-01-07 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/LazyListTest.java, 2005-11-27 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/Utf8AppendableTest.java, 2017-10-19 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/QuotedStringTokenizerTest.java, 2005-11-27 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/URIUtilNormalizePathTest.java, 2017-04-19 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/TypeUtilTest.java, 2012-11-11 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/SearchPatternTest.java, 2012-11-02 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/RegexSetTest.java, 2015-07-17 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/CharsetStringBuilderTest.java, 2022-05-03 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/statistic/CounterStatisticTest.java, 2015-09-24 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/statistic/RateStatisticTest.java, 2018-06-19 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/statistic/SampleStatisticTest.java, 2010-02-15 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/ScannerTest.java, 2011-04-01 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/thread/QueuedThreadPoolTest.java, 2009-03-24 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/thread/AutoLockTest.java, 2015-02-19 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/thread/ReservedThreadExecutorTest.java, 2017-06-21 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/thread/SchedulerTest.java, 2012-08-31 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/thread/ExecutorThreadPoolTest.java, 2012-08-31 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/thread/SerializedInvokerTest.java, 2022-05-03 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/thread/AdaptiveExecutionStrategyTest.java, 2018-04-25 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/thread/SweeperTest.java, 2015-03-20 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/thread/ThreadFactoryTest.java, 2019-10-02 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/thread/SerializedExecutorTest.java, 2019-03-20 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/thread/AbstractThreadPoolTest.java, 2018-08-24 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/thread/ThreadClassLoaderScopeTest.java, 2015-03-10 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/thread/strategy/ExecutionStrategyTest.java, 2017-04-01 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/thread/strategy/ExecuteProduceConsumeTest.java, 2015-02-18 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/ArrayUtilTest.java, 2019-05-24 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/URLEncodedTest.java, 2005-11-27 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/IndexTest.java, 2020-11-23 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/JavaVersionTest.java, 2018-01-04 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/ProcessorUtilsTest.java, 2012-11-02 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/TestIntrospectionUtil.java, 2006-12-29 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/ConcurrentPoolTest.java, 2020-06-10 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/component/DumpableTest.java, 2010-01-26 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/component/LifeCycleListenerTest.java, 2009-03-24 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/component/ContainerLifeCycleTest.java, 2012-09-21 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/component/LifeCycleListenerNestedTest.java, 2015-02-19 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/component/ContainerLifeCycleListenerTest.java, 2015-02-19 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/component/ClassLoaderDumpTest.java, 2017-03-23 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/BlockingArrayQueueTest.java, 2009-03-24 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/FileIDTest.java, 2022-07-29 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/IncludeExcludeTest.java, 2015-07-17 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/MultiMapTest.java, 2011-08-05 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/TopologicalSortTest.java, 2015-06-24 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/InetAddressSetTest.java, 2016-09-01 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/BufferUtilTest.java, 2009-03-24 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/AtomicBiIntegerTest.java, 2018-03-07 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/AttributesTest.java, 2022-05-03 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/TrieTest.java, 2012-12-07 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/IncludeExcludeSetTest.java, 2016-09-01 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/ssl/SslContextFactoryTest.java, 2011-10-19 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/ssl/X509Test.java, 2017-05-15 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/ssl/X509CertificateAdapter.java, 2017-05-15 -jetty-core/jetty-util/src/test/java/org/eclipse/jetty/util/FutureCallbackTest.java, 2012-05-09 -jetty-core/jetty-util/src/main/java/module-info.java, 2018-11-22 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/compression/DeflaterPool.java, 2019-04-02 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/compression/CompressionPool.java, 2019-06-12 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/compression/InflaterPool.java, 2019-04-02 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/LazyList.java, 2001-09-17 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/SearchPattern.java, 2018-03-06 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/ServiceLoaderSpliterator.java, 2020-03-13 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/Promise.java, 2012-05-08 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/FutureCallback.java, 2012-05-09 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/ArrayUtil.java, 2012-08-06 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/Jetty.java, 2009-06-11 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/resource/ResourceFactoryInternals.java, 2022-08-03 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/resource/ResourceFactory.java, 2009-03-24 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/resource/PathResourceFactory.java, 2012-11-02 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/resource/MountedPathResourceFactory.java, 2012-11-02 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/resource/GraalIssue5720PathResource.java, 2023-01-09 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/resource/CombinedResource.java, 2009-03-24 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/resource/Resource.java, 2009-03-24 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/resource/FileSystemPool.java, 2022-07-12 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/resource/URLResourceFactory.java, 2022-11-14 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/resource/ResourceUriPatternPredicate.java, 2022-08-10 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/resource/AttributeNormalizer.java, 2016-01-13 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/resource/package-info.java, 2012-11-02 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/resource/Resources.java, 2022-10-19 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/resource/ResourceCollators.java, 2019-04-03 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/resource/GraalIssue5720PathResourceFactory.java, 2012-11-02 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/resource/MountedPathResource.java, 2022-07-12 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/resource/PathResource.java, 2014-06-25 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/resource/MemoryResource.java, 2022-08-12 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/resource/PathCollators.java, 2019-04-03 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/TypeUtil.java, 2002-06-05 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/HostMap.java, 2010-06-16 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/MultiMap.java, 1999-10-11 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/FuturePromise.java, 2012-05-09 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/NanoTime.java, 2022-09-06 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/TreeTrie.java, 2013-01-10 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/BufferUtil.java, 2009-03-24 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/Uptime.java, 2014-09-10 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/Atomics.java, 2012-06-08 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/ConcurrentPool.java, 2023-01-30 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/AbstractTrie.java, 2013-03-28 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/MultiPartOutputStream.java, 2005-11-27 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/DecoratedObjectFactory.java, 2014-11-11 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/StringUtil.java, 1995-12-01 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/Loader.java, 2002-03-06 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/security/UnixCrypt.java, 2009-03-24 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/security/Credential.java, 2009-03-24 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/security/CertificateUtils.java, 2011-03-12 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/security/CertificateValidator.java, 2011-02-08 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/security/Password.java, 2009-03-24 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/security/package-info.java, 2012-11-02 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/security/Constraint.java, 2009-03-24 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/security/CredentialProvider.java, 2009-03-24 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/SharedBlockingCallback.java, 2012-10-25 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/Scanner.java, 2006-10-06 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/IncludeExclude.java, 2015-07-17 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/LeakDetector.java, 2014-01-07 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/Attachable.java, 2012-11-02 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/ByteArrayOutputStream2.java, 2001-08-13 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/IteratingNestedCallback.java, 2013-05-13 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/AttributesMap.java, 2005-11-27 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/Index.java, 2020-11-23 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/ClassLoadingObjectInputStream.java, 2013-03-28 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/AtomicBiInteger.java, 2018-03-07 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/InetAddressSet.java, 2016-09-01 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/ByteArrayISO8859Writer.java, 2001-08-13 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/IteratingCallback.java, 2013-05-13 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/Fields.java, 2012-05-05 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/StaticException.java, 2022-06-13 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/CountingCallback.java, 2015-02-05 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/HostPort.java, 2016-08-31 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/BlockingArrayQueue.java, 2009-03-24 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/AsciiLowerCaseSet.java, 2009-03-24 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/LockedPool.java, 2023-01-30 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/MultiPartWriter.java, 2005-11-27 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/IntrospectionUtil.java, 2006-12-29 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/statistic/CounterStatistic.java, 2010-02-03 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/statistic/RateCounter.java, 2020-12-10 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/statistic/RateStatistic.java, 2018-06-19 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/statistic/package-info.java, 2009-03-24 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/statistic/SampleStatistic.java, 2010-02-15 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/Attributes.java, 2000-06-14 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/UrlEncoded.java, 1995-12-01 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/thread/AutoLock.java, 2009-03-24 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/thread/ExecutionStrategy.java, 2014-07-30 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/thread/ThreadPool.java, 2009-03-24 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/thread/ScheduledExecutorScheduler.java, 2013-01-09 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/thread/ShutdownThread.java, 2009-12-10 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/thread/ThreadPoolBudget.java, 2017-09-28 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/thread/QueuedThreadPool.java, 2009-03-24 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/thread/Scheduler.java, 2012-08-31 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/thread/ExecutorThreadPool.java, 2009-03-24 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/thread/ReservedThreadExecutor.java, 2017-06-21 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/thread/SerializedInvoker.java, 2022-05-03 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/thread/MonitoredQueuedThreadPool.java, 2018-03-07 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/thread/Invocable.java, 2016-06-03 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/thread/TryExecutor.java, 2018-02-08 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/thread/package-info.java, 2012-11-02 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/thread/Sweeper.java, 2015-03-20 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/thread/ThreadClassLoaderScope.java, 2012-06-25 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/thread/strategy/EatWhatYouKill.java, 2017-04-01 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/thread/strategy/ExecuteProduceConsume.java, 2015-02-18 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/thread/strategy/ProduceConsume.java, 2012-06-25 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/thread/strategy/AdaptiveExecutionStrategy.java, 2021-06-16 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/thread/strategy/ProduceExecuteConsume.java, 2015-02-18 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/thread/TimerScheduler.java, 2012-08-31 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/thread/PrivilegedThreadFactory.java, 2021-02-01 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/thread/SerializedExecutor.java, 2019-03-20 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/IO.java, 1995-12-01 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/QuotedStringTokenizer.java, 1999-09-29 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/MemoryUtils.java, 2013-03-07 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/Utf8LineParser.java, 2012-08-15 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/Utf8StringBuilder.java, 2009-03-24 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/UriPatternPredicate.java, 2022-08-10 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/Callback.java, 2012-05-08 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/VirtualThreads.java, 2022-08-10 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/MultiReleaseJarFile.java, 2017-09-19 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/component/HaltLifeCycleListener.java, 2012-11-02 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/component/LifeCycle.java, 2009-03-24 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/component/FileDestroyable.java, 2011-01-06 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/component/Dumpable.java, 2010-12-21 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/component/AbstractLifeCycle.java, 2009-03-24 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/component/FileNoticeLifeCycleListener.java, 2013-03-14 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/component/Graceful.java, 2012-08-24 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/component/package-info.java, 2012-11-02 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/component/ContainerLifeCycle.java, 2010-12-21 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/component/Destroyable.java, 2010-12-21 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/component/DumpableCollection.java, 2009-03-24 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/component/ClassLoaderDump.java, 2012-09-21 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/component/Container.java, 2009-03-24 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/component/StopLifeCycle.java, 2009-03-24 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/component/AttributeContainerMap.java, 2019-06-18 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/component/Environment.java, 2009-03-24 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/TopologicalSort.java, 2015-06-24 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/DateCache.java, 1999-03-03 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/IncludeExcludeSet.java, 2015-07-17 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/ArrayTernaryTrie.java, 2013-01-14 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/SocketAddressResolver.java, 2013-02-14 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/package-info.java, 2012-11-02 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/Utf8Appendable.java, 2011-05-09 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/EmptyTrie.java, 2020-11-23 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/annotation/ManagedOperation.java, 2009-07-22 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/annotation/ManagedAttribute.java, 2012-07-20 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/annotation/Name.java, 2009-07-22 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/annotation/package-info.java, 2012-11-02 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/annotation/ManagedObject.java, 2012-07-23 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/MathUtils.java, 2011-09-12 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/CharsetStringBuilder.java, 2022-05-03 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/ManifestUtils.java, 2012-06-25 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/ConstantThrowable.java, 2011-09-12 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/FileID.java, 2022-07-29 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/InetAddressPattern.java, 2016-09-01 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/ClassVisibilityChecker.java, 2019-04-29 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/DeprecationWarning.java, 2015-12-01 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/JavaVersion.java, 2017-01-12 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/ExceptionUtil.java, 2022-07-27 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/preventers/AppContextLeakPreventer.java, 2009-03-24 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/preventers/DriverManagerLeakPreventer.java, 2009-03-24 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/preventers/AWTLeakPreventer.java, 2012-08-09 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/preventers/package-info.java, 2012-11-02 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/preventers/AbstractLeakPreventer.java, 2012-08-09 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/ProcessorUtils.java, 2012-06-25 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/RolloverFileOutputStream.java, 2002-01-17 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/RegexSet.java, 2015-07-17 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/Blocker.java, 2022-05-03 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/Decorator.java, 2012-11-02 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/ssl/SniX509ExtendedKeyManager.java, 2015-04-02 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/ssl/AliasedX509ExtendedKeyManager.java, 2011-02-16 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/ssl/X509.java, 2015-08-27 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/ssl/KeyStoreScanner.java, 2020-07-10 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/ssl/package-info.java, 2012-11-02 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/ssl/SslContextFactory.java, 2011-02-16 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/ssl/SslSelectionDump.java, 2016-11-22 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/URIUtil.java, 2005-11-27 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/ArrayTrie.java, 2012-12-07 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/Pool.java, 2020-06-10 -jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/Utf8StringBuffer.java, 2006-03-09 -jetty-core/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/TerminatingPatternRuleTest.java, 2015-07-22 -jetty-core/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/RedirectPatternRuleTest.java, 2009-03-24 -jetty-core/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/PatternRuleTest.java, 2009-03-24 -jetty-core/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/RewritePatternRuleTest.java, 2009-03-24 -jetty-core/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/RegexRuleTest.java, 2009-03-24 -jetty-core/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/CompactPathRuleTest.java, 2022-12-20 -jetty-core/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/ForwardedSchemeHeaderRuleTest.java, 2009-03-24 -jetty-core/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/RewriteHandlerTest.java, 2009-03-24 -jetty-core/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/HeaderRegexRuleTest.java, 2014-12-04 -jetty-core/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/VirtualHostRuleContainerTest.java, 2009-03-24 -jetty-core/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/RedirectRegexRuleTest.java, 2009-07-08 -jetty-core/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/TerminatingRegexRuleTest.java, 2015-07-22 -jetty-core/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/ResponsePatternRuleTest.java, 2009-03-24 -jetty-core/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/CookiePatternRuleTest.java, 2009-03-24 -jetty-core/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/HeaderPatternRuleTest.java, 2009-03-24 -jetty-core/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/RewriteRegexRuleTest.java, 2009-03-24 -jetty-core/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/AbstractRuleTest.java, 2022-05-03 -jetty-core/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/ForceRequestHeaderValueRuleTest.java, 2021-02-16 -jetty-core/jetty-rewrite/src/test/java/org/eclipse/jetty/rewrite/handler/InvalidURIRuleTest.java, 2022-05-03 -jetty-core/jetty-rewrite/src/main/java/module-info.java, 2013-07-12 -jetty-core/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/TerminatingPatternRule.java, 2009-03-24 -jetty-core/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/VirtualHostRuleContainer.java, 2009-03-24 -jetty-core/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RewriteHandler.java, 2009-03-24 -jetty-core/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/PatternRule.java, 2009-03-24 -jetty-core/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/ForwardedSchemeHeaderRule.java, 2009-03-24 -jetty-core/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/ForceRequestHeaderValueRule.java, 2009-03-24 -jetty-core/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/HeaderRule.java, 2009-03-24 -jetty-core/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RegexRule.java, 2009-03-24 -jetty-core/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/InvalidURIRule.java, 2022-05-03 -jetty-core/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RewritePatternRule.java, 2009-03-24 -jetty-core/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/CookiePatternRule.java, 2009-03-24 -jetty-core/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/Rule.java, 2009-03-24 -jetty-core/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/ResponsePatternRule.java, 2009-03-24 -jetty-core/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/package-info.java, 2012-11-02 -jetty-core/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/HeaderRegexRule.java, 2009-03-24 -jetty-core/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RedirectPatternRule.java, 2009-03-24 -jetty-core/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RewriteRegexRule.java, 2009-03-24 -jetty-core/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RuleContainer.java, 2009-03-24 -jetty-core/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/CompactPathRule.java, 2009-03-24 -jetty-core/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/TerminatingRegexRule.java, 2011-12-14 -jetty-core/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/HeaderPatternRule.java, 2009-03-24 -jetty-core/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RedirectRegexRule.java, 2009-03-24 -jetty-core/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/RewriteCustomizer.java, 2012-06-25 -jetty-core/jetty-jmx/src/test/java/org/eclipse/jetty/jmx/PojoTest.java, 2016-03-10 -jetty-core/jetty-jmx/src/test/java/org/eclipse/jetty/jmx/MBeanContainerTest.java, 2016-03-10 -jetty-core/jetty-jmx/src/test/java/org/eclipse/jetty/jmx/ObjectMBeanUtilTest.java, 2016-03-10 -jetty-core/jetty-jmx/src/test/java/org/eclipse/jetty/jmx/ConnectorServerTest.java, 2009-06-11 -jetty-core/jetty-jmx/src/test/java/org/eclipse/jetty/jmx/ObjectMBeanTest.java, 2009-03-24 -jetty-core/jetty-jmx/src/test/java/org/eclipse/jetty/jmx/MBeanContainerLifeCycleTest.java, 2016-03-10 -jetty-core/jetty-jmx/src/test/java/com/acme/Derived.java, 2005-11-27 -jetty-core/jetty-jmx/src/test/java/com/acme/DerivedManaged.java, 2016-03-10 -jetty-core/jetty-jmx/src/test/java/com/acme/jmx/ManagedMBean.java, 2012-07-23 -jetty-core/jetty-jmx/src/test/java/com/acme/jmx/DerivedMBean.java, 2012-07-23 -jetty-core/jetty-jmx/src/test/java/com/acme/Managed.java, 2012-08-03 -jetty-core/jetty-jmx/src/test/java/com/acme/SuperManaged.java, 2009-03-24 -jetty-core/jetty-jmx/src/test/java/com/acme/DerivedExtended.java, 2012-07-23 -jetty-core/jetty-jmx/src/test/java/com/acme/Base.java, 2000-09-13 -jetty-core/jetty-jmx/src/test/java/com/acme/Signature.java, 2005-11-27 -jetty-core/jetty-jmx/src/main/java/module-info.java, 2009-03-24 -jetty-core/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MBeanContainer.java, 2009-03-24 -jetty-core/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/MetaData.java, 2018-09-20 -jetty-core/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/ConnectorServer.java, 2009-12-10 -jetty-core/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/package-info.java, 2012-11-02 -jetty-core/jetty-jmx/src/main/java/org/eclipse/jetty/jmx/ObjectMBean.java, 2009-03-24 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/ConnectionOpenCloseTest.java, 2012-09-19 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/HttpConfigurationAuthorityOverrideTest.java, 2022-01-06 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/RequestLogTest.java, 2021-12-28 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/HostHeaderCustomizerTest.java, 2013-06-10 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/HttpCookieTest.java, 2019-05-16 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/LocalConnectorTest.java, 2012-05-23 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/InsufficientThreadsDetectionTest.java, 2016-10-20 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/MockConnector.java, 2013-07-05 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/ProxyConnectionTest.java, 2014-11-13 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/ProxyProtocolTest.java, 2016-11-25 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/SlowClientWithPipelinedRequestTest.java, 2012-02-24 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/AbstractHttpTest.java, 2012-08-17 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/ConnectorCloseTestBase.java, 2011-07-06 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/MockHttpStream.java, 2022-05-03 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/ServerConnectorAcceptTest.java, 2021-05-20 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/ServerConnectorTest.java, 2014-07-15 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/HttpConnectionTest.java, 2009-03-24 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/CookieCacheTest.java, 2022-05-24 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/OptionalSslConnectionTest.java, 2019-01-31 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/ConnectorTimeoutTest.java, 2010-07-13 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/jmh/HandlerBenchmark.java, 2022-05-03 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/MultiPartByteRangesTest.java, 2022-08-05 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/NotAcceptingTest.java, 2017-08-12 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/HttpChannelTest.java, 2022-05-03 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/StopTest.java, 2013-10-24 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/ProxyCustomizerTest.java, 2020-05-07 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/ServerConnectorTimeoutTest.java, 2009-03-24 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/ExtendedServerTest.java, 2013-11-07 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/HalfCloseTest.java, 2013-11-04 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/ShutdownMonitorTest.java, 2013-03-18 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/DelayedServerTest.java, 2019-11-13 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/CustomRequestLogTest.java, 2018-11-06 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/ServerConnectorHttpServerTest.java, 2009-03-24 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/MockConnectionMetaData.java, 2022-05-03 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/ThreadStarvationTest.java, 2015-07-01 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/ServerConnectorCloseTest.java, 2009-03-24 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/HandlerTest.java, 2016-02-03 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/DefaultHandlerTest.java, 2018-06-21 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ContextHandlerGetResourceTest.java, 2013-08-23 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ThreadLimitHandlerTest.java, 2016-09-08 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/BufferedResponseHandlerTest.java, 2016-07-28 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/HelloHandler.java, 2022-05-03 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/gzip/GzipHandlerTest.java, 2011-06-20 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/TryPathsHandlerTest.java, 2022-10-18 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/DelayedHandlerTest.java, 2022-05-03 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ShutdownHandlerTest.java, 2011-09-30 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/FileBufferedResponseHandlerTest.java, 2021-04-19 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ResourceHandlerByteRangesTest.java, 2022-08-05 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/SecuredRedirectHandlerCodeTest.java, 2022-01-27 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/AllowAllVerifier.java, 2012-11-02 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/AllowSymLinkAliasCheckerTest.java, 2016-07-07 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/MultiPartFormDataHandlerTest.java, 2022-08-04 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/InetAccessHandlerTest.java, 2019-04-18 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/NcsaRequestLogTest.java, 2014-10-31 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/SecuredRedirectHandlerTest.java, 2014-09-30 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ContextHandlerTest.java, 2009-03-24 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ResourceHandlerTest.java, 2011-09-28 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/DumpHandler.java, 2009-03-24 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/PathMappingsHandlerTest.java, 2022-10-25 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ContextHandlerDeepTest.java, 2022-10-20 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/EchoHandler.java, 2022-05-03 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/StatisticsHandlerTest.java, 2009-03-24 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/DebugHandlerTest.java, 2015-09-30 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/MovedContextHandlerTest.java, 2022-11-03 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ContextHandlerCollectionTest.java, 2009-03-24 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/LargeHeaderTest.java, 2020-06-03 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/RequestTest.java, 2009-03-24 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/ResourceListingTest.java, 2022-09-27 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/LatencyRecordingHandlerTest.java, 2023-01-19 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/GracefulHandlerTest.java, 2023-01-23 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/ErrorHandlerTest.java, 2016-07-18 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/HttpServerTestFixture.java, 2010-07-13 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/HttpServerTestBase.java, 2009-03-24 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/ForwardedRequestCustomizerTest.java, 2016-08-11 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/CustomResourcesMonitorTest.java, 2018-08-23 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/HttpChannelEventTest.java, 2017-09-08 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/DetectorConnectionTest.java, 2020-01-23 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/PartialRFC2616Test.java, 2009-03-24 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SslUploadTest.java, 2009-09-12 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/ServerConnectorSslServerTest.java, 2010-07-14 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SSLSelectChannelConnectorLoadTest.java, 2010-10-01 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SlowClientsTest.java, 2017-03-06 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/ServerConnectorSslTimeoutTest.java, 2010-07-14 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SslContextFactoryReloadTest.java, 2016-09-30 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SSLCloseTest.java, 2011-09-27 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SSLEngineTest.java, 2009-03-24 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SniSslConnectionFactoryTest.java, 2015-04-02 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SslConnectionFactoryTest.java, 2015-04-02 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SSLReadEOFAfterResponseTest.java, 2018-11-20 -jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/LowResourcesMonitorTest.java, 2013-02-18 -jetty-core/jetty-server/src/main/java/module-info.java, 2012-09-13 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/HostHeaderCustomizer.java, 2013-06-10 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/Context.java, 2022-05-03 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/SecureRequestCustomizer.java, 2010-03-03 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/AbstractNetworkConnector.java, 2012-07-24 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/AbstractConnectionFactory.java, 2012-09-10 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/jmx/AbstractHandlerMBean.java, 2009-06-30 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/jmx/package-info.java, 2012-11-02 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/jmx/AbstractConnectorMBean.java, 2012-09-21 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/jmx/ServerMBean.java, 2009-03-24 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/RequestLogWriter.java, 2009-03-24 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/AcceptRateLimit.java, 2018-06-19 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/ResourceService.java, 2009-03-24 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/internal/ResponseHttpFields.java, 2022-05-03 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/internal/MultiPartParser.java, 2018-03-08 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/internal/HttpChannelState.java, 2009-03-24 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/internal/HttpConnection.java, 2009-03-24 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannelListeners.java, 2019-08-27 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/HandlerContainer.java, 2009-03-24 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/ConnectionMetaData.java, 2022-05-03 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/AllowedResourceAliasChecker.java, 2021-09-21 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/DetectorConnectionFactory.java, 2020-01-23 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/HttpConfiguration.java, 2012-09-10 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/NegotiatingServerConnectionFactory.java, 2014-03-18 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/SocketCustomizationListener.java, 2015-04-30 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/ServerConnector.java, 2009-03-24 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/HttpCookieUtils.java, 2023-02-07 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/ProxyConnectionFactory.java, 2014-11-13 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/NetworkTrafficServerConnector.java, 2011-02-10 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/Components.java, 2022-05-03 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/SymlinkAllowedResourceAliasChecker.java, 2021-09-21 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/AbstractConnector.java, 2009-03-24 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/ConnectionFactory.java, 2012-08-02 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/ConnectionLimit.java, 2017-09-05 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/FormFields.java, 2022-05-03 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/Slf4jRequestLogWriter.java, 2018-11-19 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java, 2009-03-24 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/SslConnectionFactory.java, 2012-09-10 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/TunnelSupport.java, 2009-03-24 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/package-info.java, 2012-11-02 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/LowResourceMonitor.java, 2013-02-18 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/CustomRequestLog.java, 2009-03-24 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/HomeBaseWarning.java, 2014-10-29 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/Handler.java, 2009-03-24 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/ForwardedRequestCustomizer.java, 2012-09-10 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/ResourceListing.java, 2022-08-02 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/DelayedHandler.java, 2022-05-03 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/GracefulHandler.java, 2023-01-23 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ReHandlingErrorHandler.java, 2022-10-24 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/jmx/ContextHandlerMBean.java, 2009-03-24 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/jmx/AbstractHandlerMBean.java, 2009-06-30 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/jmx/package-info.java, 2012-11-02 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/BufferedResponseHandler.java, 2016-07-28 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/AbstractHandler.java, 2009-03-24 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/DebugHandler.java, 2009-07-28 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ConnectHandler.java, 2012-07-20 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/gzip/HeaderWrappingRequest.java, 2012-11-02 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/gzip/GzipHandler.java, 2009-03-24 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/gzip/GzipFactory.java, 2012-11-02 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/gzip/package-info.java, 2012-11-02 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/gzip/GzipResponseAndCallback.java, 2013-12-06 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/gzip/GzipRequest.java, 2022-05-03 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/PathMappingsHandler.java, 2022-10-25 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/InetAccessHandler.java, 2016-09-01 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ResourceHandler.java, 2009-03-24 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ShutdownHandler.java, 2011-09-30 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/InetAccessSet.java, 2020-02-27 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/AbstractLatencyRecordingHandler.java, 2023-01-19 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/AbstractHandlerContainer.java, 2009-03-24 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/FileBufferedResponseHandler.java, 2021-04-19 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ManagedAttributeListener.java, 2015-06-19 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextRequest.java, 2022-05-03 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/TryPathsHandler.java, 2022-10-18 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/HotSwapHandler.java, 2009-03-24 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/MovedContextHandler.java, 2009-03-24 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ThreadLimitHandler.java, 2016-09-08 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/DefaultHandler.java, 2009-03-24 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ProxiedRequestHandler.java, 2022-05-03 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandlerCollection.java, 2009-03-24 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/package-info.java, 2012-11-02 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextResponse.java, 2022-05-03 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandler.java, 2009-03-24 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ErrorHandler.java, 2022-05-03 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/IdleTimeoutHandler.java, 2013-11-08 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/StatisticsHandler.java, 2009-03-24 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/SecuredRedirectHandler.java, 2014-09-30 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/Connector.java, 2009-03-24 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/ClassLoaderDump.java, 2012-09-21 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/RequestLog.java, 2009-03-24 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/NetworkConnector.java, 2012-08-03 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/HttpConnectionFactory.java, 2012-08-03 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/AliasCheck.java, 2022-08-11 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannel.java, 2009-03-24 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/Response.java, 2009-03-24 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/AsyncRequestLogWriter.java, 2013-03-18 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/ProxyCustomizer.java, 2020-05-07 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/ShutdownMonitor.java, 2012-12-04 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/Server.java, 1995-12-01 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/NegotiatingServerConnection.java, 2012-07-27 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/LocalConnector.java, 2012-05-14 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/OptionalSslConnectionFactory.java, 2019-01-31 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/Session.java, 2023-02-02 -jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/HttpStream.java, 2022-05-03 -jetty-core/jetty-http-spi/src/test/java/org/eclipse/jetty/http/spi/LoggingUtil.java, 2010-01-26 -jetty-core/jetty-http-spi/src/test/java/org/eclipse/jetty/http/spi/SPIServerTest.java, 2017-11-15 -jetty-core/jetty-http-spi/src/test/java/org/eclipse/jetty/http/spi/TestSPIServer.java, 2011-12-22 -jetty-core/jetty-http-spi/src/test/java/org/eclipse/jetty/http/spi/util/PrintTask.java, 2009-03-24 -jetty-core/jetty-http-spi/src/test/java/org/eclipse/jetty/http/spi/util/SpiConstants.java, 2016-05-04 -jetty-core/jetty-http-spi/src/test/java/org/eclipse/jetty/http/spi/util/Pool.java, 2011-09-12 -jetty-core/jetty-http-spi/src/main/java/module-info.java, 2013-07-12 -jetty-core/jetty-http-spi/src/main/java/org/eclipse/jetty/http/spi/JettyHttpsExchange.java, 2011-12-12 -jetty-core/jetty-http-spi/src/main/java/org/eclipse/jetty/http/spi/JettyExchange.java, 2009-03-24 -jetty-core/jetty-http-spi/src/main/java/org/eclipse/jetty/http/spi/JettyHttpServerProvider.java, 2011-10-07 -jetty-core/jetty-http-spi/src/main/java/org/eclipse/jetty/http/spi/JettyHttpContext.java, 2011-10-07 -jetty-core/jetty-http-spi/src/main/java/org/eclipse/jetty/http/spi/JettyHttpServer.java, 2011-10-07 -jetty-core/jetty-http-spi/src/main/java/org/eclipse/jetty/http/spi/HttpSpiContextHandler.java, 2011-10-07 -jetty-core/jetty-http-spi/src/main/java/org/eclipse/jetty/http/spi/JettyHttpExchange.java, 2011-10-07 -jetty-core/jetty-http-spi/src/main/java/org/eclipse/jetty/http/spi/JettyHttpExchangeDelegate.java, 2011-10-07 -jetty-core/jetty-http-spi/src/main/java/org/eclipse/jetty/http/spi/DelegatingThreadPool.java, 2013-07-26 -jetty-core/jetty-proxy/src/test/java/org/eclipse/jetty/proxy/ReverseProxyTest.java, 2022-08-19 -jetty-core/jetty-proxy/src/test/java/org/eclipse/jetty/proxy/InterimResponseProxyTest.java, 2022-09-26 -jetty-core/jetty-proxy/src/test/java/org/eclipse/jetty/proxy/ForwardProxyWithDynamicTransportTest.java, 2019-08-13 -jetty-core/jetty-proxy/src/test/java/org/eclipse/jetty/proxy/AbstractProxyTest.java, 2022-08-19 -jetty-core/jetty-proxy/src/main/java/module-info.java, 2013-07-12 -jetty-core/jetty-proxy/src/main/java/org/eclipse/jetty/proxy/ProxyHandler.java, 2022-08-19 -jetty-core/jetty-http-tools/src/test/java/org/eclipse/jetty/http/tools/matchers/HttpFieldsMatchersTest.java, 2018-09-04 -jetty-core/jetty-http-tools/src/main/java/org/eclipse/jetty/http/tools/matchers/HttpFieldsHeaderValue.java, 2018-09-04 -jetty-core/jetty-http-tools/src/main/java/org/eclipse/jetty/http/tools/matchers/HttpFieldsContainsHeaderValue.java, 2018-09-04 -jetty-core/jetty-http-tools/src/main/java/org/eclipse/jetty/http/tools/matchers/HttpFieldsMatchers.java, 2018-09-04 -jetty-core/jetty-http-tools/src/main/java/org/eclipse/jetty/http/tools/matchers/HttpFieldsContainsHeaderKey.java, 2018-09-04 -jetty-core/jetty-http2/jetty-http2-hpack/src/test/java/org/eclipse/jetty/http2/hpack/HpackContextTest.java, 2014-06-08 -jetty-core/jetty-http2/jetty-http2-hpack/src/test/java/org/eclipse/jetty/http2/hpack/HpackDecoderTest.java, 2014-06-09 -jetty-core/jetty-http2/jetty-http2-hpack/src/test/java/org/eclipse/jetty/http2/hpack/HuffmanTest.java, 2014-06-02 -jetty-core/jetty-http2/jetty-http2-hpack/src/test/java/org/eclipse/jetty/http2/hpack/HpackTest.java, 2012-05-08 -jetty-core/jetty-http2/jetty-http2-hpack/src/test/java/org/eclipse/jetty/http2/hpack/HpackEncoderTest.java, 2014-06-08 -jetty-core/jetty-http2/jetty-http2-hpack/src/test/java/org/eclipse/jetty/http2/hpack/HpackPerfTest.java, 2014-07-16 -jetty-core/jetty-http2/jetty-http2-hpack/src/test/java/org/eclipse/jetty/http2/hpack/NBitIntegerTest.java, 2014-06-02 -jetty-core/jetty-http2/jetty-http2-hpack/src/main/java/module-info.java, 2009-03-24 -jetty-core/jetty-http2/jetty-http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/internal/AuthorityHttpField.java, 2014-06-09 -jetty-core/jetty-http2/jetty-http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/internal/StaticTableHttpField.java, 2009-03-24 -jetty-core/jetty-http2/jetty-http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/internal/MetaDataBuilder.java, 2014-06-09 -jetty-core/jetty-http2/jetty-http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/internal/Huffman.java, 2014-06-02 -jetty-core/jetty-http2/jetty-http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/internal/NBitInteger.java, 2014-06-02 -jetty-core/jetty-http2/jetty-http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackDecoder.java, 2009-03-24 -jetty-core/jetty-http2/jetty-http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackEncoder.java, 2009-03-24 -jetty-core/jetty-http2/jetty-http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackFieldPreEncoder.java, 2014-08-06 -jetty-core/jetty-http2/jetty-http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackContext.java, 2014-06-08 -jetty-core/jetty-http2/jetty-http2-hpack/src/main/java/org/eclipse/jetty/http2/hpack/HpackException.java, 2012-06-25 -jetty-core/jetty-http2/jetty-http2-client/src/main/java/module-info.java, 2013-07-12 -jetty-core/jetty-http2/jetty-http2-client/src/main/java/org/eclipse/jetty/http2/client/internal/HTTP2ClientSession.java, 2014-06-11 -jetty-core/jetty-http2/jetty-http2-client/src/main/java/org/eclipse/jetty/http2/client/HTTP2Client.java, 2014-06-11 -jetty-core/jetty-http2/jetty-http2-client/src/main/java/org/eclipse/jetty/http2/client/HTTP2ClientConnectionFactory.java, 2014-08-01 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/MultiplexedConnectionPoolTest.java, 2020-12-11 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/BufferingFlowControlStrategyTest.java, 2015-02-06 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/ConnectTunnelTest.java, 2019-08-13 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/ReverseProxyTest.java, 2022-10-07 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/RawHTTP2ProxyTest.java, 2016-12-08 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/GoAwayTest.java, 2020-11-10 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/PriorKnowledgeHTTP2OverTLSTest.java, 2016-03-18 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/BlockedWritesWithSmallThreadPoolTest.java, 2021-08-26 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/FlowControlStrategyTest.java, 2012-03-22 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/ProxyProtocolTest.java, 2015-08-11 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/ConnectTimeoutTest.java, 2015-02-09 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/SmallThreadPoolLoadTest.java, 2016-05-10 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/MaxConcurrentStreamsTest.java, 2015-12-11 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/PushedResourcesTest.java, 2017-03-05 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/TrailersTest.java, 2016-12-08 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/StreamResetTest.java, 2014-06-24 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/IdleTimeoutTest.java, 2014-06-18 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/ConcurrentStreamCreationTest.java, 2020-04-23 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/GracefulShutdownTest.java, 2022-11-07 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/AbstractServerTest.java, 2014-06-12 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/StreamCountTest.java, 2014-08-05 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/CloseTest.java, 2014-08-20 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/PingTest.java, 2014-06-13 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/PriorityTest.java, 2015-09-14 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/AsyncIOTest.java, 2015-04-15 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/AsyncServletTest.java, 2016-08-12 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/MaxPushedStreamsTest.java, 2018-07-18 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/StreamCloseTest.java, 2015-02-06 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/HttpClientTransportOverHTTP2Test.java, 2015-09-29 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/HTTP2Test.java, 2014-06-11 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/HTTP2CServer.java, 2015-02-13 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/RequestTrailersTest.java, 2019-06-12 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/HTTP2ServerTest.java, 2014-06-10 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/FlowControlWindowsTest.java, 2018-05-18 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/ContentLengthTest.java, 2020-04-13 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/HTTP2CServerTest.java, 2015-02-13 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/PrefaceTest.java, 2015-09-20 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/SessionFailureTest.java, 2015-02-13 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/H2SpecServer.java, 2009-03-30 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/ResponseTrailerTest.java, 2019-07-11 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/DataDemandTest.java, 2019-08-23 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/SimpleFlowControlStrategyTest.java, 2015-02-06 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/FlowControlStalledTest.java, 2015-12-23 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/BadURITest.java, 2022-12-20 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/InterleavingTest.java, 2016-02-29 -jetty-core/jetty-http2/jetty-http2-tests/src/test/java/org/eclipse/jetty/http2/tests/AbstractTest.java, 2014-06-12 -jetty-core/jetty-http2/jetty-http2-server/src/main/java/module-info.java, 2013-07-12 -jetty-core/jetty-http2/jetty-http2-server/src/main/java/org/eclipse/jetty/http2/server/internal/HttpStreamOverHTTP2.java, 2022-05-03 -jetty-core/jetty-http2/jetty-http2-server/src/main/java/org/eclipse/jetty/http2/server/internal/ServerHTTP2StreamEndPoint.java, 2019-08-13 -jetty-core/jetty-http2/jetty-http2-server/src/main/java/org/eclipse/jetty/http2/server/internal/HTTP2ServerConnection.java, 2012-05-08 -jetty-core/jetty-http2/jetty-http2-server/src/main/java/org/eclipse/jetty/http2/server/internal/HTTP2ServerSession.java, 2014-06-09 -jetty-core/jetty-http2/jetty-http2-server/src/main/java/org/eclipse/jetty/http2/server/HTTP2ServerConnectionFactory.java, 2014-06-09 -jetty-core/jetty-http2/jetty-http2-server/src/main/java/org/eclipse/jetty/http2/server/HTTP2CServerConnectionFactory.java, 2012-05-08 -jetty-core/jetty-http2/jetty-http2-server/src/main/java/org/eclipse/jetty/http2/server/AbstractHTTP2ServerConnectionFactory.java, 2014-06-12 -jetty-core/jetty-http2/jetty-http2-server/src/main/java/org/eclipse/jetty/http2/server/RawHTTP2ServerConnectionFactory.java, 2012-05-08 -jetty-core/jetty-http2/jetty-http2-client-transport/src/main/java/module-info.java, 2009-03-24 -jetty-core/jetty-http2/jetty-http2-client-transport/src/main/java/org/eclipse/jetty/http2/client/transport/internal/HTTPSessionListenerPromise.java, 2019-01-17 -jetty-core/jetty-http2/jetty-http2-client-transport/src/main/java/org/eclipse/jetty/http2/client/transport/internal/HttpChannelOverHTTP2.java, 2013-07-12 -jetty-core/jetty-http2/jetty-http2-client-transport/src/main/java/org/eclipse/jetty/http2/client/transport/internal/HttpSenderOverHTTP2.java, 2015-02-05 -jetty-core/jetty-http2/jetty-http2-client-transport/src/main/java/org/eclipse/jetty/http2/client/transport/internal/ClientHTTP2StreamEndPoint.java, 2013-07-12 -jetty-core/jetty-http2/jetty-http2-client-transport/src/main/java/org/eclipse/jetty/http2/client/transport/internal/HttpConnectionOverHTTP2.java, 2013-07-12 -jetty-core/jetty-http2/jetty-http2-client-transport/src/main/java/org/eclipse/jetty/http2/client/transport/internal/HttpReceiverOverHTTP2.java, 2015-02-05 -jetty-core/jetty-http2/jetty-http2-client-transport/src/main/java/org/eclipse/jetty/http2/client/transport/HttpClientTransportOverHTTP2.java, 2013-07-12 -jetty-core/jetty-http2/jetty-http2-client-transport/src/main/java/org/eclipse/jetty/http2/client/transport/ClientConnectionFactoryOverHTTP2.java, 2019-01-17 -jetty-core/jetty-http2/jetty-http2-common/src/test/java/org/eclipse/jetty/http2/frames/MaxFrameSizeParseTest.java, 2018-07-03 -jetty-core/jetty-http2/jetty-http2-common/src/test/java/org/eclipse/jetty/http2/frames/HeadersGenerateParseTest.java, 2009-03-24 -jetty-core/jetty-http2/jetty-http2-common/src/test/java/org/eclipse/jetty/http2/frames/DataGenerateParseTest.java, 2014-06-05 -jetty-core/jetty-http2/jetty-http2-common/src/test/java/org/eclipse/jetty/http2/frames/WindowUpdateGenerateParseTest.java, 2014-06-05 -jetty-core/jetty-http2/jetty-http2-common/src/test/java/org/eclipse/jetty/http2/frames/UnknownParseTest.java, 2018-07-03 -jetty-core/jetty-http2/jetty-http2-common/src/test/java/org/eclipse/jetty/http2/frames/PushPromiseGenerateParseTest.java, 2014-06-16 -jetty-core/jetty-http2/jetty-http2-common/src/test/java/org/eclipse/jetty/http2/frames/ResetGenerateParseTest.java, 2014-06-05 -jetty-core/jetty-http2/jetty-http2-common/src/test/java/org/eclipse/jetty/http2/frames/PingGenerateParseTest.java, 2014-06-05 -jetty-core/jetty-http2/jetty-http2-common/src/test/java/org/eclipse/jetty/http2/frames/SettingsGenerateParseTest.java, 2014-06-06 -jetty-core/jetty-http2/jetty-http2-common/src/test/java/org/eclipse/jetty/http2/frames/HeadersTooLargeParseTest.java, 2022-01-19 -jetty-core/jetty-http2/jetty-http2-common/src/test/java/org/eclipse/jetty/http2/frames/ContinuationParseTest.java, 2009-03-24 -jetty-core/jetty-http2/jetty-http2-common/src/test/java/org/eclipse/jetty/http2/frames/FrameFloodTest.java, 2019-08-17 -jetty-core/jetty-http2/jetty-http2-common/src/test/java/org/eclipse/jetty/http2/frames/GoAwayGenerateParseTest.java, 2014-06-05 -jetty-core/jetty-http2/jetty-http2-common/src/test/java/org/eclipse/jetty/http2/frames/PriorityGenerateParseTest.java, 2014-06-05 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/module-info.java, 2009-03-24 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/frames/DisconnectFrame.java, 2009-03-24 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/frames/SettingsFrame.java, 2009-03-24 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/frames/HeadersFrame.java, 2009-03-24 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/frames/PingFrame.java, 2009-03-24 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/frames/WindowUpdateFrame.java, 2009-03-24 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/frames/Frame.java, 2009-03-24 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/frames/ContinuationFrame.java, 2009-03-24 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/frames/FailureFrame.java, 2009-03-24 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/frames/GoAwayFrame.java, 2009-03-24 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/frames/PushPromiseFrame.java, 2009-03-24 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/frames/DataFrame.java, 2012-05-08 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/frames/StreamFrame.java, 2009-03-24 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/frames/FrameType.java, 2009-03-24 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/frames/UnknownFrame.java, 2009-03-24 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/frames/PriorityFrame.java, 2012-05-08 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/frames/ResetFrame.java, 2009-03-24 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/frames/PrefaceFrame.java, 2009-03-24 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/CloseState.java, 2009-03-24 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/FlowControlStrategy.java, 2012-05-08 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Session.java, 2014-06-09 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/internal/Flags.java, 2009-03-24 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/internal/HTTP2Flusher.java, 2014-08-06 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/parser/UnknownBodyParser.java, 2012-06-20 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/parser/WindowUpdateBodyParser.java, 2014-06-05 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/parser/ServerParser.java, 2014-06-10 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/parser/PushPromiseBodyParser.java, 2014-06-06 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/parser/PriorityBodyParser.java, 2012-05-08 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/parser/GoAwayBodyParser.java, 2014-06-05 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/parser/Parser.java, 2014-06-05 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/parser/PrefaceParser.java, 2014-06-10 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/parser/HeadersBodyParser.java, 2014-06-06 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/parser/ResetBodyParser.java, 2014-06-05 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/parser/SettingsBodyParser.java, 2014-06-06 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/parser/HeaderBlockFragments.java, 2015-07-08 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/parser/DataBodyParser.java, 2014-06-05 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/parser/HeaderBlockParser.java, 2014-06-09 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/parser/ContinuationBodyParser.java, 2012-08-24 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/parser/PingBodyParser.java, 2012-05-08 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/parser/BodyParser.java, 2012-05-08 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/parser/HeaderParser.java, 2012-05-08 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/generator/ResetGenerator.java, 2014-06-10 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/generator/PingGenerator.java, 2014-06-10 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/generator/Generator.java, 2014-06-05 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/generator/HeaderGenerator.java, 2009-03-24 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/generator/PriorityGenerator.java, 2014-06-10 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/generator/HeadersGenerator.java, 2014-06-10 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/generator/DataGenerator.java, 2014-06-10 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/generator/SettingsGenerator.java, 2014-06-10 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/generator/NoOpGenerator.java, 2012-05-08 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/generator/WindowUpdateGenerator.java, 2014-06-10 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/generator/GoAwayGenerator.java, 2014-06-10 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/generator/PrefaceGenerator.java, 2012-05-08 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/generator/FrameGenerator.java, 2014-06-10 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/generator/PushPromiseGenerator.java, 2014-06-16 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/AbstractFlowControlStrategy.java, 2012-08-27 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Connection.java, 2014-06-09 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/BufferingFlowControlStrategy.java, 2015-02-06 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/SimpleFlowControlStrategy.java, 2015-02-06 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/RateControl.java, 2009-03-24 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/ErrorCode.java, 2012-05-08 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2StreamEndPoint.java, 2019-08-13 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/WindowRateControl.java, 2019-08-17 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/api/server/ServerSessionListener.java, 2012-07-09 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/api/Stream.java, 2011-03-31 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/api/Session.java, 2014-06-09 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Cipher.java, 2014-12-04 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Stream.java, 2011-08-11 -jetty-core/jetty-http2/jetty-http2-common/src/main/java/org/eclipse/jetty/http2/HTTP2Channel.java, 2019-08-13 -jetty-core/jetty-http/src/test/java/org/eclipse/jetty/http/CookieCutterTest.java, 2017-05-12 -jetty-core/jetty-http/src/test/java/org/eclipse/jetty/http/QuotedCSVTest.java, 2016-03-30 -jetty-core/jetty-http/src/test/java/org/eclipse/jetty/http/DateParserTest.java, 2010-01-26 -jetty-core/jetty-http/src/test/java/org/eclipse/jetty/http/EtagUtilsTest.java, 2022-09-21 -jetty-core/jetty-http/src/test/java/org/eclipse/jetty/http/HttpGeneratorClientTest.java, 2009-03-24 -jetty-core/jetty-http/src/test/java/org/eclipse/jetty/http/SyntaxTest.java, 2017-03-16 -jetty-core/jetty-http/src/test/java/org/eclipse/jetty/http/GZIPContentDecoderTest.java, 2012-09-18 -jetty-core/jetty-http/src/test/java/org/eclipse/jetty/http/MultiPartCaptureTest.java, 2018-03-21 -jetty-core/jetty-http/src/test/java/org/eclipse/jetty/http/HttpTesterTest.java, 2016-05-30 -jetty-core/jetty-http/src/test/java/org/eclipse/jetty/http/HttpFieldsTest.java, 2009-03-24 -jetty-core/jetty-http/src/test/java/org/eclipse/jetty/http/CookieCutterLenientTest.java, 2017-05-12 -jetty-core/jetty-http/src/test/java/org/eclipse/jetty/http/HttpParserTest.java, 2009-03-24 -jetty-core/jetty-http/src/test/java/org/eclipse/jetty/http/HttpCookieStoreTest.java, 2023-02-07 -jetty-core/jetty-http/src/test/java/org/eclipse/jetty/http/QuotedQualityCSVTest.java, 2016-03-30 -jetty-core/jetty-http/src/test/java/org/eclipse/jetty/http/HttpGeneratorServerHTTPTest.java, 2014-01-28 -jetty-core/jetty-http/src/test/java/org/eclipse/jetty/http/HttpFieldTest.java, 2014-06-17 -jetty-core/jetty-http/src/test/java/org/eclipse/jetty/http/MultiPartFormDataTest.java, 2022-08-04 -jetty-core/jetty-http/src/test/java/org/eclipse/jetty/http/HttpURITest.java, 2011-08-25 -jetty-core/jetty-http/src/test/java/org/eclipse/jetty/http/HttpStatusCodeTest.java, 2009-03-24 -jetty-core/jetty-http/src/test/java/org/eclipse/jetty/http/HttpGeneratorServerTest.java, 2009-03-24 -jetty-core/jetty-http/src/test/java/org/eclipse/jetty/http/MimeTypesTest.java, 2011-08-12 -jetty-core/jetty-http/src/test/java/org/eclipse/jetty/http/ByteRangeTest.java, 2009-07-08 -jetty-core/jetty-http/src/test/java/org/eclipse/jetty/http/HttpSchemeTest.java, 2019-05-16 -jetty-core/jetty-http/src/test/java/org/eclipse/jetty/http/MultiPartTest.java, 2022-08-04 -jetty-core/jetty-http/src/test/java/org/eclipse/jetty/http/pathmap/UriTemplatePathSpecTest.java, 2013-04-09 -jetty-core/jetty-http/src/test/java/org/eclipse/jetty/http/pathmap/ServletPathSpecMatchListTest.java, 2015-12-14 -jetty-core/jetty-http/src/test/java/org/eclipse/jetty/http/pathmap/ServletPathSpecOrderTest.java, 2015-12-14 -jetty-core/jetty-http/src/test/java/org/eclipse/jetty/http/pathmap/RegexPathSpecTest.java, 2009-03-24 -jetty-core/jetty-http/src/test/java/org/eclipse/jetty/http/pathmap/PathMappingsTest.java, 2015-12-14 -jetty-core/jetty-http/src/test/java/org/eclipse/jetty/http/pathmap/WebSocketUriMappingTest.java, 2020-04-16 -jetty-core/jetty-http/src/test/java/org/eclipse/jetty/http/pathmap/UriTemplatePathSpecBadSpecsTest.java, 2013-04-09 -jetty-core/jetty-http/src/test/java/org/eclipse/jetty/http/pathmap/PathSpecAssert.java, 2013-02-19 -jetty-core/jetty-http/src/test/java/org/eclipse/jetty/http/pathmap/ServletPathSpecTest.java, 2013-04-09 -jetty-core/jetty-http/src/main/java/module-info.java, 2009-03-24 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/HttpCookie.java, 2009-03-24 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/DateGenerator.java, 2013-10-17 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/HttpField.java, 2012-12-07 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/BadMessageException.java, 2012-05-08 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/CookieCache.java, 2017-07-19 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/MultiPartByteRanges.java, 2022-08-05 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/CompressedContentFormat.java, 2009-03-24 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/MetaData.java, 2014-06-09 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/HttpFields.java, 1999-09-29 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/ComplianceViolation.java, 2012-05-08 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/Trailers.java, 2009-03-24 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/HttpParser.java, 2009-03-24 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/Syntax.java, 2017-03-16 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/HttpHeader.java, 1995-12-01 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/Http11FieldPreEncoder.java, 2012-11-02 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/DateParser.java, 2013-10-17 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/Http1FieldPreEncoder.java, 2014-08-06 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/EtagUtils.java, 2022-09-21 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/QuotedQualityCSV.java, 2016-03-30 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/UriCompliance.java, 2021-03-02 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/content/ResourceHttpContentFactory.java, 2015-09-17 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/content/HttpContent.java, 2009-03-24 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/content/FileMappingHttpContentFactory.java, 2022-10-11 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/content/PreCompressedHttpContent.java, 2015-09-17 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/content/ValidatingCachingHttpContentFactory.java, 2022-10-17 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/content/VirtualHttpContentFactory.java, 2022-12-13 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/content/CachingHttpContentFactory.java, 2022-05-03 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/content/PreCompressedHttpContentFactory.java, 2022-10-13 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/content/ResourceHttpContent.java, 2014-11-06 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/MultiPart.java, 2022-08-04 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/HttpTokens.java, 2009-03-24 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/HostPortHttpField.java, 2014-06-09 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/MimeTypes.java, 2009-03-24 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/Http10FieldPreEncoder.java, 2012-11-02 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/package-info.java, 2012-11-02 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/HttpScheme.java, 2009-03-24 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/HttpFieldPreEncoder.java, 2009-03-24 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/QuotedCSVParser.java, 2016-03-30 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/HttpHeaderValue.java, 2009-03-24 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/HttpMethod.java, 2009-03-24 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/HttpCompliance.java, 2012-11-02 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/CookieCutter.java, 2009-03-24 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/PreEncodedHttpField.java, 2014-08-06 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/HttpGenerator.java, 2009-03-24 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/HttpVersion.java, 2009-03-24 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/ByteRange.java, 2009-03-24 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/HttpCookieStore.java, 2023-02-07 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/HttpURI.java, 2009-03-24 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/CookieCompliance.java, 2012-11-02 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/GZIPContentDecoder.java, 2016-10-05 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/HttpStatus.java, 2009-03-24 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/pathmap/PathSpecSet.java, 2015-12-14 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/pathmap/AbstractPathSpec.java, 2009-12-04 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/pathmap/MatchedResource.java, 2022-06-09 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/pathmap/PathMappings.java, 2013-04-09 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/pathmap/UriTemplatePathSpec.java, 2009-03-24 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/pathmap/PathSpec.java, 2013-04-09 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/pathmap/MatchedPath.java, 2022-06-09 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/pathmap/PathSpecGroup.java, 2013-04-09 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/pathmap/RegexPathSpec.java, 2013-04-09 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/pathmap/ServletPathSpec.java, 2013-04-09 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/pathmap/MappedResource.java, 2011-09-12 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/MultiPartFormData.java, 2022-08-04 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/QuotedCSV.java, 2016-03-30 -jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/HttpTester.java, 2012-07-13 -jetty-ee10/jetty-ee10-glassfish-jstl/src/test/java/org/eclipse/jetty/ee10/jstl/JspConfig.java, 2015-06-29 -jetty-ee10/jetty-ee10-glassfish-jstl/src/test/java/org/eclipse/jetty/ee10/jstl/JstlTest.java, 2015-06-29 -jetty-ee10/jetty-ee10-glassfish-jstl/src/test/java/org/eclipse/jetty/ee10/jstl/JspIncludeTest.java, 2015-06-29 -jetty-ee10/jetty-ee10-maven-plugin/src/test/java/org/eclipse/jetty/ee10/maven/plugin/TestJettyStopMojo.java, 2022-02-21 -jetty-ee10/jetty-ee10-maven-plugin/src/test/java/org/eclipse/jetty/ee10/maven/plugin/TestSelectiveJarResource.java, 2019-10-02 -jetty-ee10/jetty-ee10-maven-plugin/src/test/java/org/eclipse/jetty/ee10/maven/plugin/MockShutdownMonitor.java, 2022-02-21 -jetty-ee10/jetty-ee10-maven-plugin/src/test/java/org/eclipse/jetty/ee10/maven/plugin/TestJettyEmbedder.java, 2019-09-25 -jetty-ee10/jetty-ee10-maven-plugin/src/test/java/org/eclipse/jetty/ee10/maven/plugin/TestWebAppPropertyConverter.java, 2019-09-30 -jetty-ee10/jetty-ee10-maven-plugin/src/test/java/org/eclipse/jetty/ee10/maven/plugin/it/IntegrationTestGetContent.java, 2018-06-05 -jetty-ee10/jetty-ee10-maven-plugin/src/test/java/org/eclipse/jetty/ee10/maven/plugin/MockShutdownMonitorRunnable.java, 2022-02-21 -jetty-ee10/jetty-ee10-maven-plugin/src/test/java/org/eclipse/jetty/ee10/maven/plugin/TestQuickStartGenerator.java, 2019-09-30 -jetty-ee10/jetty-ee10-maven-plugin/src/test/java/org/eclipse/jetty/ee10/maven/plugin/TestForkedChild.java, 2019-10-24 -jetty-ee10/jetty-ee10-maven-plugin/src/it/jetty-start-mojo-multi-module-single-war-it/common/src/main/java/mca/common/CommonService.java, 2012-11-02 -jetty-ee10/jetty-ee10-maven-plugin/src/it/jetty-start-mojo-multi-module-single-war-it/module/module-impl/src/main/java/mca/module/ModuleImpl.java, 2009-03-24 -jetty-ee10/jetty-ee10-maven-plugin/src/it/jetty-start-mojo-multi-module-single-war-it/module/module-api/src/main/java/mca/module/ModuleApi.java, 2012-11-02 -jetty-ee10/jetty-ee10-maven-plugin/src/it/jetty-start-mojo-multi-module-single-war-it/webapp-war/src/main/java/mca/webapp/WebAppServletListener.java, 2011-12-14 -jetty-ee10/jetty-ee10-maven-plugin/src/it/jetty-start-war-distro-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_run_mojo_it/HelloServlet.java, 2011-12-14 -jetty-ee10/jetty-ee10-maven-plugin/src/it/jetty-start-war-distro-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_run_mojo_it/PingServlet.java, 2011-12-14 -jetty-ee10/jetty-ee10-maven-plugin/src/it/jetty-cdi-start-forked/src/main/java/test/Greeter.java, 2011-12-14 -jetty-ee10/jetty-ee10-maven-plugin/src/it/jetty-start-war-forked-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_run_war_exploded_mojo_it/HelloServlet.java, 2011-12-14 -jetty-ee10/jetty-ee10-maven-plugin/src/it/jetty-start-war-forked-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_run_war_exploded_mojo_it/PingServlet.java, 2011-12-14 -jetty-ee10/jetty-ee10-maven-plugin/src/it/jetty-start-distro-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_start_distro_mojo_it/HelloServlet.java, 2011-12-14 -jetty-ee10/jetty-ee10-maven-plugin/src/it/jetty-start-distro-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_start_distro_mojo_it/PingServlet.java, 2011-12-14 -jetty-ee10/jetty-ee10-maven-plugin/src/it/jetty-start-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_start_mojo_it/HelloServlet.java, 2011-12-14 -jetty-ee10/jetty-ee10-maven-plugin/src/it/jetty-start-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_start_mojo_it/Counter.java, 2009-03-24 -jetty-ee10/jetty-ee10-maven-plugin/src/it/jetty-start-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_start_mojo_it/PingServlet.java, 2011-12-14 -jetty-ee10/jetty-ee10-maven-plugin/src/it/jetty-start-forked-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_start_forked/HelloServlet.java, 2011-12-14 -jetty-ee10/jetty-ee10-maven-plugin/src/it/jetty-start-forked-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_start_forked/Counter.java, 2009-03-24 -jetty-ee10/jetty-ee10-maven-plugin/src/it/jetty-start-forked-mojo-it/jetty-simple-base/src/main/java/org/eclipse/jetty/its/jetty_start_forked/PingServlet.java, 2011-12-14 -jetty-ee10/jetty-ee10-maven-plugin/src/it/jetty-effective-web-xml-it/webapp-war/src/main/java/WebAppServletListener.java, 2022-11-21 -jetty-ee10/jetty-ee10-maven-plugin/src/it/jetty-effective-web-xml-it/resources/src/main/java/Placeholder.java, 2022-11-21 -jetty-ee10/jetty-ee10-maven-plugin/src/it/jetty-run-mojo-jar-scan-it/MyWebApp/src/main/java/jettyissue/NormalClass.java, 2012-11-02 -jetty-ee10/jetty-ee10-maven-plugin/src/it/jetty-run-mojo-jar-scan-it/MyLibrary/src/main/java/jettyissue/MyAnnotation.java, 2012-11-02 -jetty-ee10/jetty-ee10-maven-plugin/src/it/jetty-run-mojo-jar-scan-it/MyLibrary/src/main/java/jettyissue/MyServletContainerInitializer.java, 2012-07-10 -jetty-ee10/jetty-ee10-maven-plugin/src/it/jetty-start-gwt-it/beer-shared/src/main/java/org/olamy/GreetingResponse.java, 2011-03-29 -jetty-ee10/jetty-ee10-maven-plugin/src/it/jetty-start-gwt-it/beer-shared/src/main/java/org/olamy/FieldVerifier.java, 2018-05-05 -jetty-ee10/jetty-ee10-maven-plugin/src/it/jetty-start-gwt-it/beer-shared/src/main/java/org/olamy/GreetingServiceAsync.java, 2009-03-24 -jetty-ee10/jetty-ee10-maven-plugin/src/it/jetty-start-gwt-it/beer-shared/src/main/java/org/olamy/GreetingService.java, 2009-03-24 -jetty-ee10/jetty-ee10-maven-plugin/src/it/jetty-start-gwt-it/beer-server/src/main/java/org/olamy/GreetingServiceImpl.java, 2012-07-27 -jetty-ee10/jetty-ee10-maven-plugin/src/it/jetty-start-gwt-it/beer-client/src/main/java/org/olamy/App.java, 2018-05-05 -jetty-ee10/jetty-ee10-maven-plugin/src/it/jetty-maven-plugin-provided-module-dep/web/src/main/java/test/ClassLoadingTestingServletContextListener.java, 2009-03-24 -jetty-ee10/jetty-ee10-maven-plugin/src/it/jetty-maven-plugin-provided-module-dep/api/src/main/java/test/Api.java, 2012-11-02 -jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/WarPluginInfo.java, 2012-11-19 -jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/QuickStartGenerator.java, 2019-09-17 -jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/ScanTargetPattern.java, 2012-08-28 -jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/AbstractForker.java, 2019-05-15 -jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/ServerSupport.java, 2012-08-28 -jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/Overlay.java, 2011-09-12 -jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/WebAppPropertyConverter.java, 2017-08-10 -jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/JettyHomeForker.java, 2019-05-15 -jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/JettyStartWarMojo.java, 2019-09-17 -jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/SelectiveJarResource.java, 2012-11-19 -jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/PluginLog.java, 2012-07-09 -jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/OverlayConfig.java, 2012-11-19 -jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/JettyRunWarMojo.java, 2019-07-11 -jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/ServerConnectorListener.java, 2017-10-05 -jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/JettyRunMojo.java, 2019-05-15 -jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/JettyEffectiveWebXml.java, 2011-03-29 -jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/ServerListener.java, 2017-08-15 -jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/ScanPattern.java, 2012-07-09 -jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/JettyStopMojo.java, 2012-08-28 -jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/JettyEmbedder.java, 2019-05-15 -jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/JettyForker.java, 2019-05-15 -jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/JettyStartMojo.java, 2019-07-11 -jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/package-info.java, 2009-03-24 -jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/utils/MavenProjectHelper.java, 2019-05-30 -jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/OverlayManager.java, 2019-10-02 -jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/MavenQuickStartConfiguration.java, 2014-07-09 -jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/MavenWebInfConfiguration.java, 2012-08-28 -jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/AbstractUnassembledWebAppMojo.java, 2019-11-06 -jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/AbstractWebAppMojo.java, 2019-05-15 -jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/MavenServerConnector.java, 2012-07-09 -jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/MavenMetaInfConfiguration.java, 2016-05-02 -jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/MavenWebAppContext.java, 2012-08-28 -jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/ConsoleReader.java, 2019-07-13 -jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/JettyForkedChild.java, 2019-05-15 -jetty-ee10/jetty-ee10-cdi/src/main/java/module-info.java, 2009-03-24 -jetty-ee10/jetty-ee10-cdi/src/main/java/org/eclipse/jetty/ee10/cdi/CdiDecoratingListener.java, 2009-03-24 -jetty-ee10/jetty-ee10-cdi/src/main/java/org/eclipse/jetty/ee10/cdi/CdiConfiguration.java, 2020-12-10 -jetty-ee10/jetty-ee10-cdi/src/main/java/org/eclipse/jetty/ee10/cdi/CdiSpiDecorator.java, 2019-08-08 -jetty-ee10/jetty-ee10-cdi/src/main/java/org/eclipse/jetty/ee10/cdi/CdiServletContainerInitializer.java, 2019-08-08 -jetty-ee10/jetty-ee10-osgi/test-jetty-ee10-osgi-server/src/main/java/com/acme/osgi/Activator.java, 2009-11-09 -jetty-ee10/jetty-ee10-osgi/jetty-ee10-osgi-boot/src/main/java/org/eclipse/jetty/ee10/osgi/annotations/AnnotationParser.java, 2011-07-07 -jetty-ee10/jetty-ee10-osgi/jetty-ee10-osgi-boot/src/main/java/org/eclipse/jetty/ee10/osgi/annotations/AnnotationConfiguration.java, 2011-07-07 -jetty-ee10/jetty-ee10-osgi/jetty-ee10-osgi-boot/src/main/java/org/eclipse/jetty/ee10/osgi/boot/PackageAdminServiceTracker.java, 2009-11-09 -jetty-ee10/jetty-ee10-osgi/jetty-ee10-osgi-boot/src/main/java/org/eclipse/jetty/ee10/osgi/boot/EE10Activator.java, 2022-12-22 -jetty-ee10/jetty-ee10-osgi/jetty-ee10-osgi-boot/src/main/java/org/eclipse/jetty/ee10/osgi/boot/OSGiMetaInfConfiguration.java, 2012-05-14 -jetty-ee10/jetty-ee10-osgi/jetty-ee10-osgi-boot/src/main/java/org/eclipse/jetty/ee10/osgi/boot/OSGiWebappClassLoader.java, 2009-12-11 -jetty-ee10/jetty-ee10-osgi/test-jetty-ee10-osgi-webapp-resources/src/main/java/com/acme/HelloWorld.java, 2005-11-27 -jetty-ee10/jetty-ee10-osgi/test-jetty-ee10-osgi/src/test/java/org/eclipse/jetty/ee10/osgi/test/TestOSGiUtil.java, 2013-02-21 -jetty-ee10/jetty-ee10-osgi/test-jetty-ee10-osgi/src/test/java/org/eclipse/jetty/ee10/osgi/test/TestJettyOSGiBootWithJsp.java, 2012-10-06 -jetty-ee10/jetty-ee10-osgi/test-jetty-ee10-osgi/src/test/java/org/eclipse/jetty/ee10/osgi/test/TestJettyOSGiClasspathResources.java, 2012-10-06 -jetty-ee10/jetty-ee10-osgi/test-jetty-ee10-osgi/src/test/java/org/eclipse/jetty/ee10/osgi/test/TestJettyOSGiBootWithWebSocket.java, 2012-10-06 -jetty-ee10/jetty-ee10-osgi/test-jetty-ee10-osgi/src/test/java/org/eclipse/jetty/ee10/osgi/test/TestJettyOSGiAnnotationParser.java, 2020-07-07 -jetty-ee10/jetty-ee10-osgi/test-jetty-ee10-osgi/src/test/java/org/eclipse/jetty/ee10/osgi/test/SimpleJakartaWebSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-osgi/test-jetty-ee10-osgi/src/test/java/org/eclipse/jetty/ee10/osgi/test/TestJettyOSGiBootWithAnnotations.java, 2012-10-06 -jetty-ee10/jetty-ee10-osgi/test-jetty-ee10-osgi/src/test/java/org/eclipse/jetty/ee10/osgi/test/TestJettyOSGiBootHTTP2JDK9.java, 2012-10-06 -jetty-ee10/jetty-ee10-osgi/test-jetty-ee10-osgi/src/test/java/org/eclipse/jetty/ee10/osgi/test/SomeCustomBean.java, 2009-03-24 -jetty-ee10/jetty-ee10-osgi/test-jetty-ee10-osgi/src/test/java/org/eclipse/jetty/ee10/osgi/test/TestJettyOSGiBootHTTP2Conscrypt.java, 2012-10-06 -jetty-ee10/jetty-ee10-osgi/test-jetty-ee10-osgi/src/test/java/org/eclipse/jetty/ee10/osgi/test/SimpleEchoSocket.java, 2012-06-27 -jetty-ee10/jetty-ee10-osgi/test-jetty-ee10-osgi/src/test/java/org/eclipse/jetty/ee10/osgi/test/TestJettyOSGiBootWithJakartaWebSocket.java, 2012-10-06 -jetty-ee10/jetty-ee10-osgi/test-jetty-ee10-osgi/src/test/resources/module-info.java, 2012-11-02 -jetty-ee10/jetty-ee10-osgi/jetty-ee10-osgi-boot-jsp/src/main/java/org/eclipse/jetty/ee10/osgi/boot/jsp/FragmentActivator.java, 2009-03-24 -jetty-ee10/jetty-ee10-osgi/jetty-ee10-osgi-boot-jsp/src/main/java/org/eclipse/jetty/ee10/osgi/boot/jsp/TLDServerClasspathContributor.java, 2022-12-22 -jetty-ee10/jetty-ee10-osgi/jetty-ee10-osgi-boot-warurl/src/main/java/org/eclipse/jetty/ee10/osgi/boot/warurl/internal/WarURLConnection.java, 2009-11-09 -jetty-ee10/jetty-ee10-osgi/jetty-ee10-osgi-boot-warurl/src/main/java/org/eclipse/jetty/ee10/osgi/boot/warurl/internal/WarBundleManifestGenerator.java, 2009-11-09 -jetty-ee10/jetty-ee10-osgi/jetty-ee10-osgi-boot-warurl/src/main/java/org/eclipse/jetty/ee10/osgi/boot/warurl/WarUrlStreamHandler.java, 2009-11-09 -jetty-ee10/jetty-ee10-osgi/jetty-ee10-osgi-boot-warurl/src/main/java/org/eclipse/jetty/ee10/osgi/boot/warurl/WarUrlActivator.java, 2009-11-09 -jetty-ee10/jetty-ee10-runner/src/test/java/org/eclipse/jetty/ee10/maven/jettyrunner/it/IntegrationTestJettyRunner.java, 2021-04-27 -jetty-ee10/jetty-ee10-runner/src/main/java/org/eclipse/jetty/ee10/runner/package-info.java, 2012-11-02 -jetty-ee10/jetty-ee10-runner/src/main/java/org/eclipse/jetty/ee10/runner/Runner.java, 2012-08-29 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-spec/jetty-ee10-demo-container-initializer/src/main/java/org/example/initializer/FooInitializer.java, 2012-11-02 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-spec/jetty-ee10-demo-container-initializer/src/main/java/org/example/initializer/Foo.java, 2012-11-02 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-spec/jetty-ee10-demo-spec-webapp/src/main/java/org/example/test/RoleAnnotationTest.java, 2012-11-02 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-spec/jetty-ee10-demo-spec-webapp/src/main/java/org/example/test/Bar.java, 2012-11-02 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-spec/jetty-ee10-demo-spec-webapp/src/main/java/org/example/test/SecuredServlet.java, 2012-11-02 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-spec/jetty-ee10-demo-spec-webapp/src/main/java/org/example/test/AsyncListenerServlet.java, 2013-05-06 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-spec/jetty-ee10-demo-spec-webapp/src/main/java/org/example/test/AnnotationTest.java, 2012-11-02 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-spec/jetty-ee10-demo-spec-webapp/src/main/java/org/example/test/AnnotatedListener.java, 2012-11-02 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-spec/jetty-ee10-demo-spec-webapp/src/main/java/org/example/test/ClassLoaderServlet.java, 2019-03-26 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-spec/jetty-ee10-demo-spec-webapp/src/main/java/org/example/test/TestListener.java, 2012-11-02 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-spec/jetty-ee10-demo-spec-webapp/src/main/java/org/example/test/MultiPartTest.java, 2012-11-02 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-spec/jetty-ee10-demo-web-fragment/src/main/java/org/example/fragment/FragmentServlet.java, 2009-03-24 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-async-rest/jetty-ee10-demo-async-rest-server/src/main/java/org/eclipse/jetty/ee10/demos/AsyncRestServer.java, 2011-07-07 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-async-rest/jetty-ee10-demo-async-rest-jar/src/main/java/org/eclipse/jetty/ee10/demos/AbstractRestServlet.java, 2011-07-07 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-async-rest/jetty-ee10-demo-async-rest-jar/src/main/java/org/eclipse/jetty/ee10/demos/AsyncRestServlet.java, 2011-07-07 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-async-rest/jetty-ee10-demo-async-rest-jar/src/main/java/org/eclipse/jetty/ee10/demos/SerialRestServlet.java, 2011-07-07 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-jsp-webapp/src/main/java/org/example/TagListener.java, 2009-03-24 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-jsp-webapp/src/main/java/org/example/Date2Tag.java, 2010-04-20 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-jsp-webapp/src/main/java/org/example/Counter.java, 2009-03-24 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-jsp-webapp/src/main/java/org/example/DateTag.java, 2010-04-20 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/test/java/org/eclipse/jetty/ee10/demos/OneServletContextTest.java, 2019-09-04 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/test/java/org/eclipse/jetty/ee10/demos/OneWebAppWithJspTest.java, 2019-09-04 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/test/java/org/eclipse/jetty/ee10/demos/OneServletContextJmxStatsTest.java, 2019-09-04 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/test/java/org/eclipse/jetty/ee10/demos/OneServletContextWithSessionTest.java, 2019-09-04 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/test/java/org/eclipse/jetty/ee10/demos/SecuredHelloHandlerTest.java, 2019-09-04 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/test/java/org/eclipse/jetty/ee10/demos/WebSocketServerTest.java, 2019-09-09 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/test/java/org/eclipse/jetty/ee10/demos/FileServerTest.java, 2019-09-04 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/test/java/org/eclipse/jetty/ee10/demos/FastFileServerTest.java, 2019-09-04 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/test/java/org/eclipse/jetty/ee10/demos/MinimalServletsTest.java, 2019-09-04 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/test/java/org/eclipse/jetty/ee10/demos/RewriteServerTest.java, 2019-09-04 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/test/java/org/eclipse/jetty/ee10/demos/ManyHandlersTest.java, 2019-08-30 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/test/java/org/eclipse/jetty/ee10/demos/ManyConnectorsTest.java, 2019-09-04 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/test/java/org/eclipse/jetty/ee10/demos/LikeJettyXmlTest.java, 2019-09-04 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/test/java/org/eclipse/jetty/ee10/demos/OneContextTest.java, 2019-09-04 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/test/java/org/eclipse/jetty/ee10/demos/SimplestServerTest.java, 2019-09-04 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/test/java/org/eclipse/jetty/ee10/demos/FileServerXmlTest.java, 2019-09-04 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/test/java/org/eclipse/jetty/ee10/demos/AbstractEmbeddedTest.java, 2019-02-11 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/test/java/org/eclipse/jetty/ee10/demos/SplitFileServerTest.java, 2019-09-04 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/test/java/org/eclipse/jetty/ee10/demos/ServerUtil.java, 2019-09-04 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/test/java/org/eclipse/jetty/ee10/demos/OneWebAppTest.java, 2019-09-04 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/test/java/org/eclipse/jetty/ee10/demos/ServerWithAnnotationsTest.java, 2019-09-04 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/test/java/org/eclipse/jetty/ee10/demos/ExampleServerXmlTest.java, 2019-09-04 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/test/java/org/eclipse/jetty/ee10/demos/ManyContextsTest.java, 2019-09-04 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/test/java/org/eclipse/jetty/ee10/demos/ServerWithJMXTest.java, 2019-09-04 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/test/java/org/eclipse/jetty/ee10/demos/JarServerTest.java, 2019-09-04 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/test/java/org/eclipse/jetty/ee10/demos/OneHandlerTest.java, 2019-09-04 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/test/java/org/eclipse/jetty/ee10/demos/OneConnectorTest.java, 2019-09-04 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/test/java/org/eclipse/jetty/ee10/demos/ExampleServerTest.java, 2019-08-30 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/test/java/org/eclipse/jetty/ee10/demos/ManyServletContextsTest.java, 2019-09-04 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/test/java/org/eclipse/jetty/ee10/demos/ProxyServerTest.java, 2019-09-04 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/test/java/org/eclipse/jetty/ee10/demos/ServerWithJNDITest.java, 2019-09-04 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/WebSocketServer.java, 2009-03-30 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/LikeJettyXml.java, 2022-05-03 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/SplitFileServer.java, 2009-03-30 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/OneWebApp.java, 2009-03-24 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/ServerWithJNDI.java, 2013-06-07 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/HelloWorld.java, 2009-07-27 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/OneServletContext.java, 2009-03-30 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/OneContext.java, 2009-03-30 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/OneHandler.java, 2009-03-30 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/HelloHandler.java, 2022-05-03 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/ManyHandlers.java, 2022-05-03 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/AsyncEchoServlet.java, 2015-02-05 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/HelloServlet.java, 2009-03-24 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/ServerWithJMX.java, 2009-03-30 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/DumpServlet.java, 2009-03-24 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/FileServer.java, 2009-03-30 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/ServerWithAnnotations.java, 2013-06-07 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/Http2Server.java, 2013-02-22 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/ExampleServer.java, 2009-03-30 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/ProxyServer.java, 2012-07-20 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/FastFileServer.java, 2013-05-16 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/ManyServletContexts.java, 2009-03-30 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/SimplestServer.java, 2009-03-24 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/HelloSessionServlet.java, 2009-03-24 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/MinimalServlets.java, 2009-03-24 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/OneServletContextWithSession.java, 2009-03-30 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/FileServerXml.java, 2009-08-05 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/JarServer.java, 2009-03-30 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/OneWebAppWithJsp.java, 2009-03-24 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/ManyContexts.java, 2009-03-30 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/OneConnector.java, 2009-03-30 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/SecuredHelloHandler.java, 2009-09-28 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/ExampleUtil.java, 2019-09-10 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/ExampleServerXml.java, 2009-03-30 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/JettyDemos.java, 2019-06-18 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/OneServletContextJmxStats.java, 2009-03-30 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/ManyConnectors.java, 2009-03-30 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/RewriteServer.java, 2009-03-30 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-proxy-webapp/src/test/java/org/eclipse/jetty/ee10/demos/ProxyWebAppTest.java, 2020-09-28 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-jndi-webapp/src/main/java/org/example/JNDITest.java, 2012-11-02 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-simple-webapp/src/main/java/org/eclipse/jetty/ee10/demo/simple/HelloWorldServlet.java, 2011-12-14 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-jetty-webapp/src/test/java/org/eclipse/jetty/ee10/DispatchServletTest.java, 2009-04-21 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-jetty-webapp/src/test/java/org/eclipse/jetty/ee10/ChatServletTest.java, 2013-06-13 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-jetty-webapp/src/test/java/org/eclipse/jetty/ee10/TestServer.java, 2009-03-30 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-jetty-webapp/src/main/java/org/example/Dump.java, 2009-03-24 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-jetty-webapp/src/main/java/org/example/SecureModeServlet.java, 2009-08-24 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-jetty-webapp/src/main/java/org/example/HelloWorld.java, 2009-03-24 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-jetty-webapp/src/main/java/org/example/TestFilter.java, 2009-03-24 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-jetty-webapp/src/main/java/org/example/SessionDump.java, 2009-03-24 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-jetty-webapp/src/main/java/org/example/CookieDump.java, 2009-03-24 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-jetty-webapp/src/main/java/org/example/AddListServletRequestListener.java, 2012-07-12 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-jetty-webapp/src/main/java/org/example/RewriteServlet.java, 2009-10-07 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-jetty-webapp/src/main/java/org/example/WebSocketChatServlet.java, 2009-11-23 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-jetty-webapp/src/main/java/org/example/TestServlet.java, 2011-12-14 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-jetty-webapp/src/main/java/org/example/LoginServlet.java, 2012-10-12 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-jetty-webapp/src/main/java/org/example/DispatchServlet.java, 2009-03-24 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-jetty-webapp/src/main/java/org/example/ChatServlet.java, 2009-03-24 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-jetty-webapp/src/main/java/org/example/RegTest.java, 2012-09-29 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-jetty-webapp/src/main/java/org/example/JakartaWebSocketChat.java, 2020-09-25 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-jetty-webapp/src/main/java/org/example/TestListener.java, 2009-03-24 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-mock-resources/src/main/java/org/example/MockUserTransaction.java, 2012-11-02 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-mock-resources/src/main/java/org/example/MockDataSource.java, 2012-11-02 -jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-mock-resources/src/main/java/org/example/MockTransport.java, 2012-08-09 -jetty-ee10/jetty-ee10-jspc-maven-plugin/src/main/java/org/eclipse/jetty/ee10/jspc/plugin/package-info.java, 2012-11-02 -jetty-ee10/jetty-ee10-jspc-maven-plugin/src/main/java/org/eclipse/jetty/ee10/jspc/plugin/JspcMojo.java, 2012-08-29 -jetty-ee10/jetty-ee10-ant/src/test/java/org/eclipse/jetty/ee10/ant/AntBuild.java, 2012-11-15 -jetty-ee10/jetty-ee10-ant/src/test/java/org/eclipse/jetty/ee10/ant/JettyAntTaskTest.java, 2012-10-26 -jetty-ee10/jetty-ee10-ant/src/main/java/org/eclipse/jetty/ee10/ant/types/FileMatchingConfiguration.java, 2012-08-21 -jetty-ee10/jetty-ee10-ant/src/main/java/org/eclipse/jetty/ee10/ant/types/Attributes.java, 2012-07-09 -jetty-ee10/jetty-ee10-ant/src/main/java/org/eclipse/jetty/ee10/ant/types/Connectors.java, 2012-08-21 -jetty-ee10/jetty-ee10-ant/src/main/java/org/eclipse/jetty/ee10/ant/types/SystemProperties.java, 2012-08-21 -jetty-ee10/jetty-ee10-ant/src/main/java/org/eclipse/jetty/ee10/ant/types/ContextHandlers.java, 2012-06-27 -jetty-ee10/jetty-ee10-ant/src/main/java/org/eclipse/jetty/ee10/ant/types/package-info.java, 2012-11-02 -jetty-ee10/jetty-ee10-ant/src/main/java/org/eclipse/jetty/ee10/ant/types/Connector.java, 2011-09-12 -jetty-ee10/jetty-ee10-ant/src/main/java/org/eclipse/jetty/ee10/ant/types/Attribute.java, 2011-09-12 -jetty-ee10/jetty-ee10-ant/src/main/java/org/eclipse/jetty/ee10/ant/types/LoginServices.java, 2009-03-24 -jetty-ee10/jetty-ee10-ant/src/main/java/org/eclipse/jetty/ee10/ant/AntMetaInfConfiguration.java, 2016-05-02 -jetty-ee10/jetty-ee10-ant/src/main/java/org/eclipse/jetty/ee10/ant/JettyRunTask.java, 2012-08-21 -jetty-ee10/jetty-ee10-ant/src/main/java/org/eclipse/jetty/ee10/ant/AntWebXmlConfiguration.java, 2012-08-21 -jetty-ee10/jetty-ee10-ant/src/main/java/org/eclipse/jetty/ee10/ant/JettyStopTask.java, 2012-12-07 -jetty-ee10/jetty-ee10-ant/src/main/java/org/eclipse/jetty/ee10/ant/AntWebInfConfiguration.java, 2012-08-21 -jetty-ee10/jetty-ee10-ant/src/main/java/org/eclipse/jetty/ee10/ant/package-info.java, 2012-11-02 -jetty-ee10/jetty-ee10-ant/src/main/java/org/eclipse/jetty/ee10/ant/ServerProxyImpl.java, 2012-08-21 -jetty-ee10/jetty-ee10-ant/src/main/java/org/eclipse/jetty/ee10/ant/utils/TaskLog.java, 2012-07-06 -jetty-ee10/jetty-ee10-ant/src/main/java/org/eclipse/jetty/ee10/ant/utils/ServerProxy.java, 2012-05-08 -jetty-ee10/jetty-ee10-ant/src/main/java/org/eclipse/jetty/ee10/ant/utils/package-info.java, 2012-11-02 -jetty-ee10/jetty-ee10-ant/src/main/java/org/eclipse/jetty/ee10/ant/AntWebAppContext.java, 2012-12-07 -jetty-ee10/jetty-ee10-proxy/src/test/java/org/eclipse/jetty/ee10/proxy/EmptyServerHandler.java, 2009-03-24 -jetty-ee10/jetty-ee10-proxy/src/test/java/org/eclipse/jetty/ee10/proxy/ReverseProxyTest.java, 2015-02-10 -jetty-ee10/jetty-ee10-proxy/src/test/java/org/eclipse/jetty/ee10/proxy/ConnectHandlerTest.java, 2012-11-06 -jetty-ee10/jetty-ee10-proxy/src/test/java/org/eclipse/jetty/ee10/proxy/ProxyServletTest.java, 2012-01-20 -jetty-ee10/jetty-ee10-proxy/src/test/java/org/eclipse/jetty/ee10/proxy/ProxyServletLoadTest.java, 2015-03-05 -jetty-ee10/jetty-ee10-proxy/src/test/java/org/eclipse/jetty/ee10/proxy/BalancerServletTest.java, 2012-11-06 -jetty-ee10/jetty-ee10-proxy/src/test/java/org/eclipse/jetty/ee10/proxy/EchoHttpServlet.java, 2011-12-14 -jetty-ee10/jetty-ee10-proxy/src/test/java/org/eclipse/jetty/ee10/proxy/AsyncMiddleManServletTest.java, 2015-01-15 -jetty-ee10/jetty-ee10-proxy/src/test/java/org/eclipse/jetty/ee10/proxy/ClientAuthProxyTest.java, 2021-02-15 -jetty-ee10/jetty-ee10-proxy/src/test/java/org/eclipse/jetty/ee10/proxy/AbstractConnectHandlerTest.java, 2012-11-06 -jetty-ee10/jetty-ee10-proxy/src/test/java/org/eclipse/jetty/ee10/proxy/ProxyServletFailureTest.java, 2014-04-30 -jetty-ee10/jetty-ee10-proxy/src/test/java/org/eclipse/jetty/ee10/proxy/ConnectHandlerSSLTest.java, 2012-11-06 -jetty-ee10/jetty-ee10-proxy/src/test/java/org/eclipse/jetty/ee10/proxy/ProxyServer.java, 2012-07-20 -jetty-ee10/jetty-ee10-proxy/src/test/java/org/eclipse/jetty/ee10/proxy/EmptyHttpServlet.java, 2011-12-14 -jetty-ee10/jetty-ee10-proxy/src/test/java/org/eclipse/jetty/ee10/proxy/ForwardProxyServerTest.java, 2016-03-10 -jetty-ee10/jetty-ee10-proxy/src/test/java/org/eclipse/jetty/ee10/proxy/CachingProxyServlet.java, 2018-09-04 -jetty-ee10/jetty-ee10-proxy/src/test/java/org/eclipse/jetty/ee10/proxy/ForwardProxyTLSServerTest.java, 2013-06-08 -jetty-ee10/jetty-ee10-proxy/src/main/java/module-info.java, 2013-07-12 -jetty-ee10/jetty-ee10-proxy/src/main/java/org/eclipse/jetty/ee10/proxy/AsyncMiddleManServlet.java, 2015-01-15 -jetty-ee10/jetty-ee10-proxy/src/main/java/org/eclipse/jetty/ee10/proxy/AfterContentTransformer.java, 2015-04-09 -jetty-ee10/jetty-ee10-proxy/src/main/java/org/eclipse/jetty/ee10/proxy/AsyncProxyServlet.java, 2014-04-01 -jetty-ee10/jetty-ee10-proxy/src/main/java/org/eclipse/jetty/ee10/proxy/BalancerServlet.java, 2012-11-06 -jetty-ee10/jetty-ee10-proxy/src/main/java/org/eclipse/jetty/ee10/proxy/package-info.java, 2012-11-02 -jetty-ee10/jetty-ee10-proxy/src/main/java/org/eclipse/jetty/ee10/proxy/AbstractProxyServlet.java, 2015-01-15 -jetty-ee10/jetty-ee10-proxy/src/main/java/org/eclipse/jetty/ee10/proxy/ProxyServlet.java, 2009-03-24 -jetty-ee10/jetty-ee10-webapp/src/test/java/org/acme/webapp/ClassInJarA.java, 2009-12-10 -jetty-ee10/jetty-ee10-webapp/src/test/java/org/acme/webapp/TestAnnotation.java, 2009-03-24 -jetty-ee10/jetty-ee10-webapp/src/test/java/org/eclipse/jetty/ee10/webapp/WebInfConfigurationTest.java, 2017-11-15 -jetty-ee10/jetty-ee10-webapp/src/test/java/org/eclipse/jetty/ee10/webapp/WebAppDefaultServletCacheTest.java, 2022-12-22 -jetty-ee10/jetty-ee10-webapp/src/test/java/org/eclipse/jetty/ee10/webapp/OrderingTest.java, 2010-07-16 -jetty-ee10/jetty-ee10-webapp/src/test/java/org/eclipse/jetty/ee10/webapp/MetaInfConfigurationTest.java, 2017-04-13 -jetty-ee10/jetty-ee10-webapp/src/test/java/org/eclipse/jetty/ee10/webapp/TestMetaData.java, 2020-03-09 -jetty-ee10/jetty-ee10-webapp/src/test/java/org/eclipse/jetty/ee10/webapp/WebAppContextTest.java, 2010-04-22 -jetty-ee10/jetty-ee10-webapp/src/test/java/org/eclipse/jetty/ee10/webapp/ClassMatcherTest.java, 2015-06-18 -jetty-ee10/jetty-ee10-webapp/src/test/java/org/eclipse/jetty/ee10/webapp/WebAppDefaultServletTest.java, 2021-05-13 -jetty-ee10/jetty-ee10-webapp/src/test/java/org/eclipse/jetty/ee10/webapp/TempDirTest.java, 2021-04-30 -jetty-ee10/jetty-ee10-webapp/src/test/java/org/eclipse/jetty/ee10/webapp/WebAppClassLoaderUrlStreamTest.java, 2017-04-04 -jetty-ee10/jetty-ee10-webapp/src/test/java/org/eclipse/jetty/ee10/webapp/ConfigurationsTest.java, 2016-05-02 -jetty-ee10/jetty-ee10-webapp/src/test/java/org/eclipse/jetty/ee10/webapp/HugeResourceTest.java, 2019-07-18 -jetty-ee10/jetty-ee10-webapp/src/test/java/org/eclipse/jetty/ee10/webapp/ForcedServletTest.java, 2021-05-16 -jetty-ee10/jetty-ee10-webapp/src/test/java/org/eclipse/jetty/ee10/webapp/WebDescriptorTest.java, 2022-08-01 -jetty-ee10/jetty-ee10-webapp/src/test/java/org/eclipse/jetty/ee10/webapp/StandardDescriptorProcessorTest.java, 2010-01-26 -jetty-ee10/jetty-ee10-webapp/src/test/java/org/eclipse/jetty/ee10/webapp/URLStreamHandlerUtil.java, 2017-04-04 -jetty-ee10/jetty-ee10-webapp/src/test/java/org/eclipse/jetty/ee10/webapp/WebAppClassLoaderTest.java, 2009-12-10 -jetty-ee10/jetty-ee10-webapp/src/main/java/module-info.java, 2022-05-03 -jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/OverrideDescriptor.java, 2009-03-24 -jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/JndiConfiguration.java, 2009-03-24 -jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/JspConfiguration.java, 2016-05-02 -jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/WebAppContext.java, 2003-06-30 -jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/MetaData.java, 2010-07-16 -jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/RelativeOrdering.java, 2015-06-25 -jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/DescriptorProcessor.java, 2009-03-24 -jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/AbstractConfiguration.java, 2010-07-26 -jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/Descriptor.java, 2010-07-16 -jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/MetaInfConfiguration.java, 2009-05-19 -jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/Origin.java, 2011-03-25 -jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/JettyWebXmlConfiguration.java, 2005-11-27 -jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/WebXmlConfiguration.java, 2005-11-27 -jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/Ordering.java, 2010-07-16 -jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/FragmentDescriptor.java, 2010-07-16 -jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/Configuration.java, 2006-02-19 -jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/DecoratingListener.java, 2019-08-08 -jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/WebAppClassLoader.java, 2005-11-27 -jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/ClassMatcher.java, 2010-04-13 -jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/DefaultsDescriptor.java, 2009-03-24 -jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/ServletsConfiguration.java, 2009-03-24 -jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/JaasConfiguration.java, 2009-03-24 -jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/FragmentConfiguration.java, 2009-05-19 -jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/DiscoveredAnnotation.java, 2010-07-16 -jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/WebInfConfiguration.java, 2006-02-23 -jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/package-info.java, 2011-03-25 -jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/IterativeDescriptorProcessor.java, 2010-07-16 -jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/JmxConfiguration.java, 2010-07-26 -jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/WebAppConfiguration.java, 2010-07-26 -jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/Configurations.java, 2016-05-02 -jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/JaspiConfiguration.java, 2009-03-24 -jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/StandardDescriptorProcessor.java, 2010-07-16 -jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/AbsoluteOrdering.java, 2015-06-25 -jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/WebDescriptor.java, 2010-07-16 -jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/CachingWebAppClassLoader.java, 2015-10-26 -jetty-ee10/jetty-ee10-jaas/src/test/java/org/eclipse/jetty/ee10/jaas/TestServlet.java, 2022-05-03 -jetty-ee10/jetty-ee10-jaas/src/test/java/org/eclipse/jetty/ee10/jaas/spi/PropertyFileLoginModuleTest.java, 2022-05-03 -jetty-ee10/jetty-ee10-jaas/src/test/java/org/eclipse/jetty/ee10/jaas/TestLoginModule.java, 2018-05-01 -jetty-ee10/jetty-ee10-jaas/src/test/java/org/eclipse/jetty/ee10/jaas/JAASLdapLoginServiceTest.java, 2022-05-03 -jetty-ee10/jetty-ee10-jaas/src/test/java/org/eclipse/jetty/ee10/jaas/JAASLoginServiceTest.java, 2018-04-17 -jetty-ee10/jetty-ee10-jaas/src/main/java/module-info.java, 2009-03-24 -jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/JAASLoginService.java, 2009-03-24 -jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/JAASUserPrincipal.java, 2003-04-30 -jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/spi/AbstractLoginModule.java, 2009-03-24 -jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/spi/AbstractDatabaseLoginModule.java, 2009-03-24 -jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/spi/PropertyFileLoginModule.java, 2009-03-24 -jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/spi/package-info.java, 2012-11-02 -jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/spi/DataSourceLoginModule.java, 2009-03-24 -jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/spi/JDBCLoginModule.java, 2003-04-30 -jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/spi/LdapLoginModule.java, 2009-03-24 -jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/PropertyUserStoreManager.java, 2020-11-11 -jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/JAASRole.java, 2003-04-30 -jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/package-info.java, 2012-11-02 -jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/JAASPrincipal.java, 2003-04-30 -jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/callback/ServletRequestCallback.java, 2009-03-24 -jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/callback/AbstractCallbackHandler.java, 2003-04-30 -jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/callback/package-info.java, 2012-11-02 -jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/callback/ObjectCallback.java, 2003-04-30 -jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/callback/DefaultCallbackHandler.java, 2003-04-30 -jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/callback/RequestParameterCallback.java, 2004-06-23 -jetty-ee10/jetty-ee10-apache-jsp/src/test/java/org/eclipse/jetty/ee10/jsp/TestJspFileNameToClass.java, 2017-01-19 -jetty-ee10/jetty-ee10-apache-jsp/src/test/java/org/eclipse/jetty/ee10/jsp/TestJettyJspServlet.java, 2016-10-26 -jetty-ee10/jetty-ee10-apache-jsp/src/test/java/org/eclipse/jetty/ee10/jsp/TestJettyTldPreScanned.java, 2017-10-10 -jetty-ee10/jetty-ee10-apache-jsp/src/main/java/module-info.java, 2012-07-10 -jetty-ee10/jetty-ee10-apache-jsp/src/main/java/org/eclipse/jetty/ee10/apache/jsp/JettyTldPreScanned.java, 2017-10-10 -jetty-ee10/jetty-ee10-apache-jsp/src/main/java/org/eclipse/jetty/ee10/apache/jsp/JettyJasperInitializer.java, 2014-03-14 -jetty-ee10/jetty-ee10-apache-jsp/src/main/java/org/eclipse/jetty/ee10/apache/jsp/JuliLog.java, 2014-03-14 -jetty-ee10/jetty-ee10-apache-jsp/src/main/java/org/eclipse/jetty/ee10/jsp/JettyJspServlet.java, 2014-11-26 -jetty-ee10/jetty-ee10-servlets/src/test/java/org/eclipse/jetty/ee10/servlets/CrossOriginFilterTest.java, 2011-10-19 -jetty-ee10/jetty-ee10-servlets/src/test/java/org/eclipse/jetty/ee10/servlets/DoSFilterJMXTest.java, 2013-02-27 -jetty-ee10/jetty-ee10-servlets/src/test/java/org/eclipse/jetty/ee10/servlets/HeaderFilterTest.java, 2017-06-13 -jetty-ee10/jetty-ee10-servlets/src/test/java/org/eclipse/jetty/ee10/servlets/AbstractFileContentServlet.java, 2014-11-13 -jetty-ee10/jetty-ee10-servlets/src/test/java/org/eclipse/jetty/ee10/servlets/GzipContentLengthTest.java, 2011-08-11 -jetty-ee10/jetty-ee10-servlets/src/test/java/org/eclipse/jetty/ee10/servlets/BlockingServletStreamTypeLengthWrite.java, 2011-08-11 -jetty-ee10/jetty-ee10-servlets/src/test/java/org/eclipse/jetty/ee10/servlets/AsyncTimeoutCompleteWrite.java, 2015-03-26 -jetty-ee10/jetty-ee10-servlets/src/test/java/org/eclipse/jetty/ee10/servlets/BlockingServletLengthStreamTypeWrite.java, 2011-08-11 -jetty-ee10/jetty-ee10-servlets/src/test/java/org/eclipse/jetty/ee10/servlets/QoSFilterTest.java, 2009-03-24 -jetty-ee10/jetty-ee10-servlets/src/test/java/org/eclipse/jetty/ee10/servlets/NoOpOutputStream.java, 2011-08-11 -jetty-ee10/jetty-ee10-servlets/src/test/java/org/eclipse/jetty/ee10/servlets/BlockingServletTypeStreamLengthWrite.java, 2011-08-11 -jetty-ee10/jetty-ee10-servlets/src/test/java/org/eclipse/jetty/ee10/servlets/PassThruInputStream.java, 2016-01-04 -jetty-ee10/jetty-ee10-servlets/src/test/java/org/eclipse/jetty/ee10/servlets/EventSourceServletTest.java, 2013-01-31 -jetty-ee10/jetty-ee10-servlets/src/test/java/org/eclipse/jetty/ee10/servlets/BlockingServletLengthTypeStreamWrite.java, 2011-08-11 -jetty-ee10/jetty-ee10-servlets/src/test/java/org/eclipse/jetty/ee10/servlets/BlockingServletStreamLengthTypeWrite.java, 2011-08-11 -jetty-ee10/jetty-ee10-servlets/src/test/java/org/eclipse/jetty/ee10/servlets/DoSFilterTest.java, 2009-05-26 -jetty-ee10/jetty-ee10-servlets/src/test/java/org/eclipse/jetty/ee10/servlets/GzipHandlerNoReCompressTest.java, 2020-04-14 -jetty-ee10/jetty-ee10-servlets/src/test/java/org/eclipse/jetty/ee10/servlets/AsyncManipFilter.java, 2016-01-04 -jetty-ee10/jetty-ee10-servlets/src/test/java/org/eclipse/jetty/ee10/servlets/GzipDefaultServletDeferredContentTypeTest.java, 2020-04-14 -jetty-ee10/jetty-ee10-servlets/src/test/java/org/eclipse/jetty/ee10/servlets/HttpOutputWriteFileContentServlet.java, 2011-08-11 -jetty-ee10/jetty-ee10-servlets/src/test/java/org/eclipse/jetty/ee10/servlets/CloseableDoSFilterTest.java, 2009-05-26 -jetty-ee10/jetty-ee10-servlets/src/test/java/org/eclipse/jetty/ee10/servlets/AsyncScheduledDispatchWrite.java, 2016-01-04 -jetty-ee10/jetty-ee10-servlets/src/test/java/org/eclipse/jetty/ee10/servlets/ThreadStarvationTest.java, 2015-10-07 -jetty-ee10/jetty-ee10-servlets/src/test/java/org/eclipse/jetty/ee10/servlets/BlockingServletTypeLengthStreamWrite.java, 2011-08-11 -jetty-ee10/jetty-ee10-servlets/src/test/java/org/eclipse/jetty/ee10/servlets/TestMinGzipSizeServlet.java, 2011-12-08 -jetty-ee10/jetty-ee10-servlets/src/test/java/org/eclipse/jetty/ee10/servlets/BlockingServletStreamLengthTypeWriteWithFlush.java, 2011-08-11 -jetty-ee10/jetty-ee10-servlets/src/test/java/org/eclipse/jetty/ee10/servlets/IncludeExcludeBasedFilterTest.java, 2017-06-13 -jetty-ee10/jetty-ee10-servlets/src/test/java/org/eclipse/jetty/ee10/servlets/AsyncTimeoutDispatchWrite.java, 2016-01-04 -jetty-ee10/jetty-ee10-servlets/src/test/java/org/eclipse/jetty/ee10/servlets/AbstractDoSFilterTest.java, 2009-05-26 -jetty-ee10/jetty-ee10-servlets/src/test/java/org/eclipse/jetty/ee10/servlets/GzipHandlerTest.java, 2020-04-14 -jetty-ee10/jetty-ee10-servlets/src/test/java/org/eclipse/jetty/ee10/servlets/TestStaticMimeTypeServlet.java, 2011-08-12 -jetty-ee10/jetty-ee10-servlets/src/test/java/org/eclipse/jetty/ee10/servlets/AbstractGzipTest.java, 2020-04-14 -jetty-ee10/jetty-ee10-servlets/src/main/java/module-info.java, 2013-07-12 -jetty-ee10/jetty-ee10-servlets/src/main/java/org/eclipse/jetty/ee10/servlets/EventSourceServlet.java, 2013-01-31 -jetty-ee10/jetty-ee10-servlets/src/main/java/org/eclipse/jetty/ee10/servlets/HeaderFilter.java, 2017-06-13 -jetty-ee10/jetty-ee10-servlets/src/main/java/org/eclipse/jetty/ee10/servlets/QoSFilter.java, 2009-03-24 -jetty-ee10/jetty-ee10-servlets/src/main/java/org/eclipse/jetty/ee10/servlets/CGI.java, 2009-03-24 -jetty-ee10/jetty-ee10-servlets/src/main/java/org/eclipse/jetty/ee10/servlets/CrossOriginFilter.java, 2009-07-29 -jetty-ee10/jetty-ee10-servlets/src/main/java/org/eclipse/jetty/ee10/servlets/CloseableDoSFilter.java, 2009-05-26 -jetty-ee10/jetty-ee10-servlets/src/main/java/org/eclipse/jetty/ee10/servlets/IncludeExcludeBasedFilter.java, 2017-06-13 -jetty-ee10/jetty-ee10-servlets/src/main/java/org/eclipse/jetty/ee10/servlets/PushCacheFilter.java, 2014-08-08 -jetty-ee10/jetty-ee10-servlets/src/main/java/org/eclipse/jetty/ee10/servlets/package-info.java, 2012-11-02 -jetty-ee10/jetty-ee10-servlets/src/main/java/org/eclipse/jetty/ee10/servlets/DoSFilter.java, 2009-05-26 -jetty-ee10/jetty-ee10-servlets/src/main/java/org/eclipse/jetty/ee10/servlets/PushSessionCacheFilter.java, 2014-12-05 -jetty-ee10/jetty-ee10-servlets/src/main/java/org/eclipse/jetty/ee10/servlets/EventSource.java, 2013-01-31 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-servlet/src/main/java/module-info.java, 2013-07-12 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-servlet/src/main/java/org/eclipse/jetty/ee10/websocket/servlet/WebSocketUpgradeFilter.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-client/src/test/java/org/eclipse/jetty/ee10/websocket/client/WebSocketClientBadUriTest.java, 2012-08-17 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-client/src/test/java/org/eclipse/jetty/ee10/websocket/client/HttpClientInitTest.java, 2017-05-18 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-client/src/test/java/org/eclipse/jetty/ee10/websocket/client/WebSocketClientInitTest.java, 2016-11-28 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-client/src/test/java/examples/ClientDemo.java, 2012-07-03 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-client/src/test/java/examples/SimpleEchoClient.java, 2013-05-08 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-client/src/test/java/examples/SimpleEchoSocket.java, 2012-06-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-client/src/main/java/module-info.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-client/src/main/java/org/eclipse/jetty/ee10/websocket/client/JettyUpgradeListener.java, 2012-06-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-client/src/main/java/org/eclipse/jetty/ee10/websocket/client/WebSocketClient.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-client/src/main/java/org/eclipse/jetty/ee10/websocket/client/impl/DelegatedJettyClientUpgradeResponse.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-client/src/main/java/org/eclipse/jetty/ee10/websocket/client/impl/DelegatedJettyClientUpgradeRequest.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-client/src/main/java/org/eclipse/jetty/ee10/websocket/client/impl/JettyClientUpgradeRequest.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-client/src/main/java/org/eclipse/jetty/ee10/websocket/client/package-info.java, 2012-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-client/src/main/java/org/eclipse/jetty/ee10/websocket/client/config/JettyWebSocketClientConfiguration.java, 2016-05-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-client/src/main/java/org/eclipse/jetty/ee10/websocket/client/ClientUpgradeRequest.java, 2012-06-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/JakartaClientShutdownWithServerWebAppTest.java, 2022-01-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/CloseInOnOpenTest.java, 2022-01-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/JsrEchoTest.java, 2017-05-03 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/PongContextListener.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/LargeAnnotatedTest.java, 2013-04-15 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/ReaderEchoTest.java, 2017-05-03 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/EndpointViaConfigTest.java, 2013-04-15 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/ServerDecoderTest.java, 2020-01-13 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/JakartaWebSocketFrameHandlerOnMessageTextStreamTest.java, 2020-03-12 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/MemoryUsageTest.java, 2014-02-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/DeploymentTest.java, 2021-01-21 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/PingPongTest.java, 2017-05-10 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/BasicEchoSocketContextListener.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/BasicEchoEndpointContextListener.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/PongSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/BasicEchoEndpointConfigContextListener.java, 2013-04-23 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/PartialEchoTest.java, 2017-05-03 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/StreamTest.java, 2014-03-06 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/DeploymentExceptionTest.java, 2016-08-18 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/JsrBatchModeTest.java, 2014-02-14 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/ContainerProviderServerTest.java, 2020-01-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/IdleTimeoutTest.java, 2017-05-04 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/TextStreamTest.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/LargeContainerTest.java, 2013-04-15 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/SessionTest.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/IdleTimeoutContextListener.java, 2013-04-23 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/PrimitivesBinaryEchoTest.java, 2017-05-03 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/AbstractJakartaWebSocketServerFrameHandlerTest.java, 2017-05-08 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/LargeEchoContextListener.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/examples/GetHttpSessionSocket.java, 2021-01-21 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/examples/WebSocketServerExamplesTest.java, 2021-01-21 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/examples/GetHttpSessionConfigurator.java, 2021-01-21 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/examples/StreamingEchoSocket.java, 2021-01-21 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/examples/MyAuthedSocket.java, 2021-01-21 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/examples/MyAuthedConfigurator.java, 2021-01-21 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/PrimitivesTextEchoTest.java, 2017-05-03 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/AnnotatedServerEndpointTest.java, 2013-12-12 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/StatelessTextMessageStringSocket.java, 2012-07-09 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/BasicEchoSocket.java, 2012-07-09 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/binary/ByteBufferSocket.java, 2013-07-10 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/BasicErrorThrowableSessionSocket.java, 2012-07-09 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/BasicErrorThrowableSocket.java, 2012-07-09 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/InvalidOpenIntSocket.java, 2012-05-08 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/BasicErrorSessionSocket.java, 2012-07-09 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/BasicCloseReasonSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/IdleTimeoutOnOpenSocket.java, 2012-07-09 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/BasicBinaryMessageByteBufferSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/BasicCloseReasonSessionSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/BasicOpenSocket.java, 2012-07-09 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/TrackingSocket.java, 2012-06-25 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/InvalidErrorErrorSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/pong/PongMessageEndpoint.java, 2012-07-09 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/BasicCloseSocket.java, 2012-07-09 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/BasicOpenSessionSocket.java, 2012-07-09 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/BasicErrorSessionThrowableSocket.java, 2012-07-09 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/InvalidCloseIntSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/echo/BasicEchoSocket.java, 2012-07-09 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/echo/BasicEchoEndpoint.java, 2012-07-09 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/echo/EchoReturnTextSocket.java, 2012-07-09 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/echo/EchoStatelessBasicTextSocket.java, 2012-06-25 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/echo/LargeEchoDefaultSocket.java, 2012-07-09 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/echo/EchoBasicTextSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/echo/LargeEchoConfiguredSocket.java, 2012-07-09 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/echo/EchoAsyncTextSocket.java, 2012-07-09 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/echo/EchoReturnEndpoint.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/echo/EchoStatelessAsyncTextSocket.java, 2012-07-09 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/InvalidOpenCloseReasonSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/BasicCloseSessionReasonSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/BasicPongMessageSocket.java, 2012-07-09 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/streaming/ReaderSocket.java, 2013-07-10 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/streaming/ReaderParamSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/streaming/InputStreamSocket.java, 2013-07-10 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/streaming/StringReturnReaderParamSocket.java, 2013-07-10 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/partial/PartialTextSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/partial/PartialTextSessionSocket.java, 2013-07-10 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/partial/PartialTrackingSocket.java, 2012-07-09 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/BasicTextMessageStringSocket.java, 2012-07-09 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/BasicOpenCloseSessionSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/InvalidOpenSessionIntSocket.java, 2012-05-08 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/primitives/BooleanTextParamSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/primitives/BooleanTextSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/primitives/IntTextSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/primitives/LongObjectTextSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/primitives/IntegerObjectTextSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/primitives/FloatTextSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/primitives/ByteTextSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/primitives/ShortObjectTextSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/primitives/IntParamTextSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/primitives/BooleanObjectTextSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/primitives/FloatObjectTextSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/primitives/DoubleTextSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/primitives/BooleanObjectTextParamSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/primitives/IntegerObjectParamTextSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/primitives/LongTextSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/primitives/DoubleObjectTextSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/primitives/CharacterObjectTextSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/primitives/ShortTextSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/primitives/ByteObjectTextSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/primitives/CharTextSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/DateTextSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/ConfiguredEchoSocket.java, 2013-12-12 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/idletimeout/OnOpenIdleTimeoutSocket.java, 2012-07-09 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/idletimeout/OnOpenIdleTimeoutEndpoint.java, 2012-07-09 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/ByteBufferSocket.java, 2013-07-10 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/BasicOpenCloseSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/IdleTimeoutOnOpenEndpoint.java, 2012-07-09 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/BasicErrorSocket.java, 2012-07-09 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/sockets/InvalidErrorIntSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/BinaryStreamTest.java, 2017-05-03 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/configs/EchoSocketConfigurator.java, 2013-08-01 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/AltFilterTest.java, 2013-04-15 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/WebSocketServerContainerExecutorTest.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/OnMessageReturnTest.java, 2013-04-15 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/BasicEchoSocketConfigContextListener.java, 2013-04-23 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/UriTemplateParameterTest.java, 2017-05-03 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/AddEndpointTest.java, 2020-06-13 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/JettyServerEndpointConfiguratorTest.java, 2013-04-23 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/SessionTrackingTest.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/ConfiguratorTest.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/WebAppClassLoaderTest.java, 2020-01-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/InputStreamEchoTest.java, 2017-05-03 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/SyntheticOnMessageTest.java, 2021-01-21 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/GracefulCloseTest.java, 2021-01-21 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/client/SessionAddMessageHandlerTest.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/client/DecoderReaderManySmallTest.java, 2017-04-26 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/client/DelayedStartClientTest.java, 2017-05-09 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/client/JsrClientTrackingSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/client/AnnotatedEchoTest.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/client/misbehaving/EndpointRuntimeOnOpen.java, 2012-06-25 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/client/misbehaving/MisbehavingClassTest.java, 2012-06-29 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/client/misbehaving/AnnotatedRuntimeOnOpen.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/client/EndpointEchoTest.java, 2012-06-29 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/client/JsrClientEchoTrackingSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/client/WriteTimeoutTest.java, 2012-06-29 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/client/AbstractClientSessionTest.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/client/samples/IntSocket.java, 2012-06-25 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/client/samples/CloseSessionReasonSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/client/samples/CloseSessionSocket.java, 2012-07-09 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/client/samples/CloseReasonSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/client/samples/CloseEndpointConfigSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/client/samples/CloseSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/client/samples/CloseReasonSessionSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/client/CookiesTest.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/client/AnnotatedClientEndpointTest.java, 2013-12-12 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/client/OnCloseTest.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/client/AnnotatedEchoClient.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/client/MessageReceivingTest.java, 2016-03-22 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/client/ConfiguratorTest.java, 2012-06-29 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/handlers/LongMessageHandler.java, 2012-05-08 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/handlers/ExtendedMessageHandler.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/handlers/AbstractHandler.java, 2021-01-21 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/handlers/BaseMessageHandler.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/handlers/AbstractAnnotatedHandler.java, 2021-01-21 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/handlers/BinaryHandlers.java, 2021-01-21 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/handlers/ComboMessageHandler.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/handlers/MessageHandlerTest.java, 2021-01-21 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/handlers/TextHandlers.java, 2021-01-21 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/UpgradeRequestResponseTest.java, 2021-01-21 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/JakartaClientShutdownWithServerEmbeddedTest.java, 2022-01-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/quotes/QuotesEncoderTest.java, 2017-04-26 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/quotes/QuotesSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/quotes/QuotesDecoderTextStreamTest.java, 2017-05-05 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/quotes/Quotes.java, 2012-07-09 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/quotes/QuotesDecoderTest.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/quotes/QuotesEncoder.java, 2012-08-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/quotes/QuotesDecoder.java, 2017-04-26 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/quotes/QuotesUtil.java, 2017-05-05 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/SingleMessageHandlerTest.java, 2022-01-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/coders/DecoderListTest.java, 2021-01-21 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/coders/ValidDualDecoder.java, 2012-06-25 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/coders/AvailableEncodersTest.java, 2016-05-06 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/coders/FruitDecoder.java, 2009-12-04 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/coders/FruitTextEncoder.java, 2012-08-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/coders/LongDecoderTest.java, 2019-06-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/coders/TimeEncoder.java, 2012-08-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/coders/DecoderTextStreamTest.java, 2017-05-05 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/coders/DateEncoder.java, 2012-08-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/coders/EncoderTextTest.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/coders/Quotes.java, 2012-07-09 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/coders/ValidDualEncoder.java, 2012-08-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/coders/DateTimeEncoder.java, 2012-08-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/coders/TimeDecoder.java, 2012-06-25 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/coders/EncoderLifeCycleTest.java, 2021-01-21 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/coders/CoderEventTracking.java, 2017-05-05 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/coders/DecoderTextTest.java, 2013-02-19 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/coders/Fruit.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/coders/BadDualDecoder.java, 2013-02-20 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/coders/AvailableDecodersTest.java, 2016-05-06 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/coders/DateDecoder.java, 2012-06-25 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/coders/FloatDecoderTest.java, 2019-06-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/coders/ExtDecoder.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/coders/QuotesEncoder.java, 2012-08-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/coders/BadDualEncoder.java, 2012-08-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/coders/QuotesDecoder.java, 2017-04-26 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/coders/DateTimeDecoder.java, 2012-06-25 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/coders/FruitBinaryEncoder.java, 2012-07-05 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/coders/QuotesUtil.java, 2017-05-05 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/coders/ShortDecoderTest.java, 2019-06-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/coders/IntegerDecoderTest.java, 2013-02-19 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/PathParamTest.java, 2019-08-28 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/RestartContextTest.java, 2019-06-06 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/JakartaWebSocketRestartTest.java, 2022-01-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/JakartaClientClassLoaderTest.java, 2022-01-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/autobahn/JakartaAutobahnClient.java, 2022-05-03 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/autobahn/JakartaAutobahnSocket.java, 2022-05-03 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/autobahn/JakartaAutobahnServer.java, 2022-05-03 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/JettySpecificConfigTest.java, 2019-08-28 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/pathparam/IntegerClassSocket.java, 2022-05-03 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/pathparam/StringClassSocket.java, 2022-05-03 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/pathparam/IntegerTypeSocket.java, 2022-05-03 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/pathparam/ShortTypeSocket.java, 2022-05-03 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/pathparam/CharacterTypeSocket.java, 2022-05-03 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/pathparam/DoubleTypeSocket.java, 2022-05-03 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/pathparam/LongTypeSocket.java, 2022-05-03 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/pathparam/ByteClassSocket.java, 2022-05-03 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/pathparam/FloatClassSocket.java, 2022-05-03 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/pathparam/BooleanClassSocket.java, 2022-05-03 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/pathparam/ShortClassSocket.java, 2022-05-03 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/pathparam/CharacterClassSocket.java, 2022-05-03 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/pathparam/ByteTypeSocket.java, 2022-05-03 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/pathparam/FloatTypeSocket.java, 2022-05-03 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/pathparam/BooleanTypeSocket.java, 2022-05-03 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/pathparam/LongClassSocket.java, 2022-05-03 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/pathparam/DoubleClassSocket.java, 2022-05-03 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/ProgrammaticWebSocketUpgradeTest.java, 2022-01-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/ServerConfigTest.java, 2020-01-28 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/JakartaOnCloseTest.java, 2020-01-29 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/com/acme/websocket/PongContextListener.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/com/acme/websocket/BasicEchoEndpoint.java, 2012-07-09 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/com/acme/websocket/LargeEchoDefaultSocket.java, 2012-07-09 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/com/acme/websocket/PongSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/com/acme/websocket/IdleTimeoutOnOpenSocket.java, 2012-07-09 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/com/acme/websocket/BasicEchoEndpointConfigContextListener.java, 2013-04-23 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/com/acme/websocket/IdleTimeoutContextListener.java, 2013-04-23 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/com/acme/websocket/PongMessageEndpoint.java, 2012-07-09 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/com/acme/websocket/LargeEchoContextListener.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/com/acme/websocket/IdleTimeoutOnOpenEndpoint.java, 2012-07-09 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/com/acme/websocket/OnOpenIdleTimeoutEndpoint.java, 2012-07-09 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/CoreServer.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/FunctionMethod.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/BadFrame.java, 2012-08-09 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/WSEndpointTracker.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/RawFrameBuilder.java, 2013-08-20 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/BiConsumerServiceServlet.java, 2011-12-14 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/EchoSocket.java, 2021-01-21 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/WSServer.java, 2013-04-15 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/CompletableFutureMethodHandle.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/SessionMatchers.java, 2012-07-09 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/framehandlers/FrameHandlerTracker.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/framehandlers/WholeMessageEcho.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/framehandlers/StaticText.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/framehandlers/FrameEcho.java, 2013-07-12 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/Timeouts.java, 2012-05-08 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/UnitGenerator.java, 2017-05-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/LocalFuzzer.java, 2017-05-03 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/WSURI.java, 2013-06-10 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/LocalServer.java, 2012-06-29 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/NetworkFuzzer.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/matchers/IsMessageHandlerTypeRegistered.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/matchers/IsMessageHandlerType.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/DummyEndpoint.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/Fuzzer.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/ParserCapture.java, 2011-08-26 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/UpgradeUtils.java, 2017-05-03 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/MessageType.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/Sha1Sum.java, 2015-12-07 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/EventSocket.java, 2019-03-11 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/WSEventTracker.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/DataUtils.java, 2017-05-03 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-common/src/test/java/org/eclipse/jetty/ee10/websocket/common/JettyWebSocketFrameHandlerTest.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-common/src/test/java/org/eclipse/jetty/ee10/websocket/common/MessageInputStreamTest.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-common/src/test/java/org/eclipse/jetty/ee10/websocket/common/EventQueue.java, 2012-06-12 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-common/src/test/java/org/eclipse/jetty/ee10/websocket/common/MessageOutputStreamTest.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-common/src/test/java/org/eclipse/jetty/ee10/websocket/common/EndPoints.java, 2020-03-22 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-common/src/test/java/org/eclipse/jetty/ee10/websocket/common/LocalEndpointMetadataTest.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-common/src/test/java/org/eclipse/jetty/ee10/websocket/common/OutgoingMessageCapture.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-common/src/test/java/org/eclipse/jetty/ee10/websocket/common/DummyContainer.java, 2019-02-21 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-common/src/test/java/org/eclipse/jetty/ee10/websocket/common/endpoints/adapters/ListenerEchoSocket.java, 2012-06-28 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-common/src/test/java/org/eclipse/jetty/ee10/websocket/common/endpoints/adapters/AdapterEchoSocket.java, 2012-06-25 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-common/src/test/java/org/eclipse/jetty/ee10/websocket/common/endpoints/adapters/AnnotatedEchoSocket.java, 2012-06-28 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-common/src/test/java/org/eclipse/jetty/ee10/websocket/common/invoke/NameParamIdentifier.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-common/src/test/java/org/eclipse/jetty/ee10/websocket/common/invoke/InvokerUtilsTest.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-common/src/main/java/module-info.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-common/src/main/java/org/eclipse/jetty/ee10/websocket/common/JettyWebSocketFrameHandlerFactory.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-common/src/main/java/org/eclipse/jetty/ee10/websocket/common/JettyWebSocketRemoteEndpoint.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-common/src/main/java/org/eclipse/jetty/ee10/websocket/common/JettyWebSocketFrameHandler.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-common/src/main/java/org/eclipse/jetty/ee10/websocket/common/JettyWebSocketFrame.java, 2015-05-06 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-common/src/main/java/org/eclipse/jetty/ee10/websocket/common/ExtensionConfigParser.java, 2019-03-13 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-common/src/main/java/org/eclipse/jetty/ee10/websocket/common/JettyWebSocketFrameHandlerMetadata.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-common/src/main/java/org/eclipse/jetty/ee10/websocket/common/package-info.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-common/src/main/java/org/eclipse/jetty/ee10/websocket/common/WebSocketSession.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-common/src/main/java/org/eclipse/jetty/ee10/websocket/common/JettyExtensionConfig.java, 2019-03-13 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-common/src/main/java/org/eclipse/jetty/ee10/websocket/common/SessionTracker.java, 2017-04-14 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/JakartaWebSocketFrameHandlerOnMessageBinaryTest.java, 2020-02-18 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/JakartaWebSocketFrameHandlerOnMessageBinaryStreamTest.java, 2020-03-12 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/JakartaWebSocketFrameHandlerOnMessageTextStreamTest.java, 2020-03-12 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/JakartaWebSocketFrameHandlerBadSignaturesTest.java, 2020-02-18 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/AbstractJakartaWebSocketFrameHandlerTest.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/handlers/ByteBufferWholeHandler.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/handlers/LongMessageHandler.java, 2012-05-08 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/handlers/StringWholeHandler.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/handlers/ExtendedMessageHandler.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/handlers/BaseMessageHandler.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/handlers/StringPartialHandler.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/handlers/ReaderWholeHandler.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/handlers/ByteArrayWholeHandler.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/handlers/ComboMessageHandler.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/handlers/ByteArrayPartialHandler.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/handlers/ByteBufferPartialHandler.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/handlers/InputStreamWholeHandler.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/JakartaWebSocketFrameHandlerOnCloseTest.java, 2020-03-12 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/JakartaWebSocketFrameHandlerOnOpenTest.java, 2020-03-12 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/AbstractSessionTest.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/JakartaWebSocketFrameHandlerOnMessageTextTest.java, 2020-02-18 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/messages/DecodedTextStreamMessageSinkTest.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/messages/InputStreamMessageSinkTest.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/messages/DecodedBinaryMessageSinkTest.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/messages/DecodedBinaryStreamMessageSinkTest.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/messages/MessageWriterTest.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/messages/ReaderMessageSinkTest.java, 2017-05-05 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/messages/AbstractMessageSinkTest.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/messages/DecodedTextMessageSinkTest.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/JakartaWebSocketFrameHandlerOnErrorTest.java, 2020-03-12 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/coders/tests/FruitDecoder.java, 2009-12-04 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/coders/tests/FruitTextEncoder.java, 2012-08-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/coders/tests/Fruit.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/coders/tests/BadDualDecoder.java, 2013-02-20 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/coders/tests/ExtDecoder.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/coders/tests/BadDualEncoder.java, 2012-08-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/coders/tests/FruitBinaryEncoder.java, 2012-07-05 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/sockets/TrackingSocket.java, 2012-06-25 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/Defaults.java, 2012-05-08 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/util/NameParamIdentifier.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/util/InvokerUtilsStaticParamsTest.java, 2020-02-18 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/util/ReflectUtilsTest.java, 2013-06-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/util/InvokerUtilsTest.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/DummyContainer.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/DummyFrameHandlerFactory.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/endpoints/AbstractStringEndpoint.java, 2012-06-25 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/endpoints/DummyEndpoint.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/common/endpoints/EchoStringEndpoint.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/module-info.java, 2012-09-13 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/PathParamProvider.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/JakartaWebSocketPongMessage.java, 2012-05-08 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/JakartaWebSocketRemoteEndpoint.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/JakartaWebSocketContainer.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/JakartaWebSocketAsyncRemote.java, 2013-02-12 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/JakartaWebSocketFrameHandlerFactory.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/JakartaWebSocketBasicRemote.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/RegisteredMessageHandler.java, 2012-06-12 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/UpgradeRequest.java, 2012-06-12 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/EndpointConfigWrapper.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/JakartaWebSocketSession.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/decoders/LongDecoder.java, 2012-06-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/decoders/ByteDecoder.java, 2012-06-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/decoders/DoubleDecoder.java, 2012-06-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/decoders/ByteArrayDecoder.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/decoders/ReaderDecoder.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/decoders/ByteBufferDecoder.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/decoders/AvailableDecoders.java, 2016-05-06 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/decoders/IntegerDecoder.java, 2012-06-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/decoders/ShortDecoder.java, 2012-06-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/decoders/StringDecoder.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/decoders/CharacterDecoder.java, 2012-06-25 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/decoders/RegisteredDecoder.java, 2021-01-21 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/decoders/InputStreamDecoder.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/decoders/FloatDecoder.java, 2012-06-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/decoders/BooleanDecoder.java, 2012-08-09 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/decoders/AbstractDecoder.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/ServerEndpointConfigWrapper.java, 2013-04-04 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/JakartaWebSocketFrameHandlerMetadata.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/JakartaWebSocketSessionListener.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/messages/AbstractDecodedMessageSink.java, 2021-01-21 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/messages/DecodedBinaryMessageSink.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/messages/DecodedTextStreamMessageSink.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/messages/DecodedBinaryStreamMessageSink.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/messages/DecodedTextMessageSink.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/ClientEndpointConfigWrapper.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/UpgradeRequestAdapter.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/JakartaWebSocketExtension.java, 2013-02-12 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/JakartaWebSocketMessageMetadata.java, 2021-01-21 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/InitException.java, 2012-06-12 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/PutListenerMap.java, 2019-12-17 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/ConfiguredEndpoint.java, 2012-08-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/SendHandlerCallback.java, 2012-08-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/JakartaWebSocketFrameHandler.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/SessionTracker.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/encoders/CharacterEncoder.java, 2012-05-08 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/encoders/ByteEncoder.java, 2012-05-08 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/encoders/ShortEncoder.java, 2012-08-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/encoders/RegisteredEncoder.java, 2022-01-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/encoders/FloatEncoder.java, 2012-08-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/encoders/ByteBufferEncoder.java, 2012-08-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/encoders/StringEncoder.java, 2012-08-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/encoders/AvailableEncoders.java, 2016-05-06 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/encoders/BooleanEncoder.java, 2012-08-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/encoders/EncodeFailedFuture.java, 2013-07-09 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/encoders/DoubleEncoder.java, 2012-08-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/encoders/ByteArrayEncoder.java, 2012-08-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/encoders/LongEncoder.java, 2012-05-08 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/encoders/IntegerEncoder.java, 2012-08-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/encoders/AbstractEncoder.java, 2012-08-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-common/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/common/JakartaWebSocketExtensionConfig.java, 2012-06-25 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/ParamsEndpoint.java, 2012-06-28 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/JettyWebSocketFilterTest.java, 2019-01-18 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/WebSocketStatsTest.java, 2019-02-26 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/ConnectMessageEndpoint.java, 2012-06-28 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/MaxOutgoingFramesTest.java, 2020-10-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/WebSocketOverHTTP2Test.java, 2019-08-14 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/LargeDeflateTest.java, 2022-01-19 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/SingleOnMessageTest.java, 2020-12-10 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/JettyWebSocketServletTest.java, 2019-01-18 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/CloseInOnOpenTest.java, 2019-01-18 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/proxy/WebSocketProxyTest.java, 2020-11-26 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/proxy/WebSocketProxy.java, 2020-11-26 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/SimpleEchoTest.java, 2019-01-18 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/AnnoMaxMessageEndpoint.java, 2012-06-28 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/JettyWebSocketRestartTest.java, 2021-01-08 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/SimpleStatusServlet.java, 2011-12-14 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/JettyWebSocketExtensionConfigTest.java, 2019-01-18 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/EchoSocket.java, 2012-06-28 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/server/SlowServerTest.java, 2019-01-29 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/server/PartialListenerTest.java, 2019-07-16 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/server/ServerCloseTest.java, 2019-01-29 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/server/CloseInOnCloseEndpointNewThread.java, 2012-06-28 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/server/FastFailEndpoint.java, 2012-06-28 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/server/FastCloseEndpoint.java, 2012-06-28 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/server/SlowServerEndpoint.java, 2019-01-29 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/server/FrameAnnotationTest.java, 2019-07-17 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/server/ServerCloseCreator.java, 2019-01-29 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/server/AbstractCloseEndpoint.java, 2019-01-29 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/server/ContainerEndpoint.java, 2019-01-29 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/server/FrameListenerTest.java, 2019-07-17 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/server/ServerConfigTest.java, 2019-05-16 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/server/CloseInOnCloseEndpoint.java, 2012-06-28 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/SuspendResumeTest.java, 2019-03-29 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/JettyOnCloseTest.java, 2020-01-29 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/GracefulCloseTest.java, 2020-06-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/client/ClientCloseTest.java, 2019-01-29 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/client/InvalidUpgradeServlet.java, 2019-12-20 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/client/ClientConnectTest.java, 2019-05-28 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/client/SlowClientTest.java, 2019-01-29 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/client/BadNetworkTest.java, 2019-01-29 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/client/ClientSessionsTest.java, 2019-01-29 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/client/WebSocketClientTest.java, 2019-05-28 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/client/ConnectFutureTest.java, 2020-07-23 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/client/ClientWriteThread.java, 2012-09-04 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/client/ClientConfigTest.java, 2019-05-13 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/client/ClientOpenSessionTracker.java, 2019-01-29 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/client/ClientTimeoutTest.java, 2020-07-08 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/JettyWebSocketWebApp.java, 2020-11-18 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/ConnectionHeaderTest.java, 2021-08-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/UpgradeRequestResponseTest.java, 2021-01-04 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/EchoCreator.java, 2012-05-08 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/JettyWebSocketNegotiationTest.java, 2019-01-18 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/JettyWebSocketServletAttributeTest.java, 2019-01-18 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/GetAuthHeaderEndpoint.java, 2012-06-28 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/examples/MyAuthedCreator.java, 2019-01-23 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/examples/MyBinaryEchoSocket.java, 2012-06-28 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/examples/MyEchoSocket.java, 2012-06-28 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/examples/MyAuthedServlet.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/examples/MyAdvancedEchoServlet.java, 2011-12-14 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/examples/MyAdvancedEchoCreator.java, 2019-01-23 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/examples/MyEchoServlet.java, 2011-12-14 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/CloseTrackingEndpoint.java, 2019-01-29 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/ErrorCloseTest.java, 2020-02-18 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/ConcurrentConnectTest.java, 2019-04-16 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/util/WSURITest.java, 2013-06-10 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/util/FutureWriteCallback.java, 2019-06-20 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/listeners/WebSocketListenerTest.java, 2020-04-14 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/listeners/AbstractAnnotatedListener.java, 2012-06-28 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/listeners/BinaryListeners.java, 2020-04-14 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/listeners/TextListeners.java, 2020-04-14 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/listeners/AbstractListener.java, 2012-08-20 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/PermessageDeflateBufferTest.java, 2021-03-17 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/autobahn/JettyAutobahnClient.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/autobahn/JettyAutobahnServer.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/autobahn/JettyAutobahnSocket.java, 2012-06-28 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/JettyClientClassLoaderTest.java, 2021-02-22 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/WebSocketServletExamplesTest.java, 2019-01-23 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/EventSocket.java, 2019-03-11 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/ProgrammaticWebSocketUpgradeTest.java, 2021-01-08 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/AnnotatedPartialListenerTest.java, 2021-06-11 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/extensions/ExtensionConfigTest.java, 2012-11-06 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/WebSocketStopTest.java, 2019-07-03 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/WebAppTester.java, 2021-05-19 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-api/src/main/java/module-info.java, 2009-03-30 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee10/websocket/api/WebSocketPartialListener.java, 2015-05-06 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee10/websocket/api/WebSocketBehavior.java, 2012-06-20 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee10/websocket/api/WebSocketAdapter.java, 2012-06-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee10/websocket/api/WebSocketContainer.java, 2019-02-21 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee10/websocket/api/annotations/OnWebSocketMessage.java, 2012-06-26 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee10/websocket/api/annotations/OnWebSocketConnect.java, 2012-06-26 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee10/websocket/api/annotations/WebSocket.java, 2012-06-26 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee10/websocket/api/annotations/OnWebSocketFrame.java, 2012-06-26 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee10/websocket/api/annotations/package-info.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee10/websocket/api/annotations/OnWebSocketError.java, 2012-06-26 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee10/websocket/api/annotations/OnWebSocketClose.java, 2012-06-26 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee10/websocket/api/ExtensionConfig.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee10/websocket/api/WriteCallback.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee10/websocket/api/Frame.java, 2012-11-05 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee10/websocket/api/WebSocketSessionListener.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee10/websocket/api/UpgradeRequest.java, 2012-06-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee10/websocket/api/WebSocketFrameListener.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee10/websocket/api/RemoteEndpoint.java, 2012-11-28 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee10/websocket/api/CloseStatus.java, 2012-05-08 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee10/websocket/api/WebSocketPingPongListener.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee10/websocket/api/WebSocketListener.java, 2012-06-26 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee10/websocket/api/UpgradeResponse.java, 2012-06-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee10/websocket/api/BatchMode.java, 2012-07-12 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee10/websocket/api/WebSocketPolicy.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee10/websocket/api/package-info.java, 2012-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee10/websocket/api/util/WSURI.java, 2013-06-10 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee10/websocket/api/util/package-info.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee10/websocket/api/util/WebSocketConstants.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee10/websocket/api/WebSocketConnectionListener.java, 2012-06-26 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee10/websocket/api/SuspendToken.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee10/websocket/api/StatusCode.java, 2012-06-21 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee10/websocket/api/exceptions/InvalidWebSocketException.java, 2012-06-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee10/websocket/api/exceptions/MessageTooLargeException.java, 2012-07-06 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee10/websocket/api/exceptions/CloseException.java, 2012-06-20 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee10/websocket/api/exceptions/BadPayloadException.java, 2012-07-12 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee10/websocket/api/exceptions/WebSocketException.java, 2012-06-12 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee10/websocket/api/exceptions/ProtocolException.java, 2012-06-29 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee10/websocket/api/exceptions/package-info.java, 2012-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee10/websocket/api/exceptions/UpgradeException.java, 2012-06-12 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee10/websocket/api/exceptions/WebSocketTimeoutException.java, 2012-06-12 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee10/websocket/api/exceptions/PolicyViolationException.java, 2012-06-20 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-api/src/main/java/org/eclipse/jetty/ee10/websocket/api/Session.java, 2012-11-28 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-client/src/test/java/examples/SecureWebSocketContainerExample.java, 2019-08-22 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-client/src/test/java/examples/SecureClientContainerExample.java, 2019-08-22 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-client/src/test/java/examples/EchoEndpoint.java, 2012-06-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-client/src/test/java/examples/OriginServerConfigurator.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-client/src/main/java/module-info.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-client/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/client/JakartaWebSocketClientContainerProvider.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-client/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/client/internal/AnnotatedClientEndpointConfig.java, 2022-01-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-client/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/client/internal/JakartaClientUpgradeRequest.java, 2022-01-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-client/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/client/internal/EmptyConfigurator.java, 2022-01-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-client/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/client/internal/BasicClientEndpointConfig.java, 2022-01-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-client/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/client/internal/JsrUpgradeListener.java, 2021-01-21 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-client/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/client/internal/JakartaWebSocketClientContainer.java, 2022-01-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-client/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/client/internal/JakartaWebSocketClientFrameHandlerFactory.java, 2022-01-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-client/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/client/JakartaWebSocketShutdownContainer.java, 2022-01-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-server/src/test/java/org/eclipse/jetty/ee10/websocket/server/browser/BrowserDebugTool.java, 2019-01-14 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-server/src/test/java/org/eclipse/jetty/ee10/websocket/server/browser/BrowserSocket.java, 2012-10-04 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-server/src/main/java/module-info.java, 2012-07-10 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-server/src/main/java/org/eclipse/jetty/ee10/websocket/server/JettyServerUpgradeRequest.java, 2019-03-13 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-server/src/main/java/org/eclipse/jetty/ee10/websocket/server/JettyWebSocketServlet.java, 2019-03-28 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-server/src/main/java/org/eclipse/jetty/ee10/websocket/server/internal/UpgradeHttpServletRequest.java, 2022-05-09 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-server/src/main/java/org/eclipse/jetty/ee10/websocket/server/internal/JettyServerFrameHandlerFactory.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-server/src/main/java/org/eclipse/jetty/ee10/websocket/server/internal/DelegatedServerUpgradeResponse.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-server/src/main/java/org/eclipse/jetty/ee10/websocket/server/internal/DelegatedServerUpgradeRequest.java, 2019-03-13 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-server/src/main/java/org/eclipse/jetty/ee10/websocket/server/JettyServerUpgradeResponse.java, 2019-03-13 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-server/src/main/java/org/eclipse/jetty/ee10/websocket/server/JettyWebSocketCreator.java, 2019-03-13 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-server/src/main/java/org/eclipse/jetty/ee10/websocket/server/JettyWebSocketServletFactory.java, 2019-03-28 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-server/src/main/java/org/eclipse/jetty/ee10/websocket/server/JettyWebSocketServerContainer.java, 2019-02-21 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-server/src/main/java/org/eclipse/jetty/ee10/websocket/server/config/JettyWebSocketServletContainerInitializer.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-server/src/main/java/org/eclipse/jetty/ee10/websocket/server/config/JettyWebSocketConfiguration.java, 2016-05-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-server/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/server/browser/JsrBrowserConfigurator.java, 2013-08-01 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-server/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/server/browser/JsrBrowserDebugTool.java, 2013-09-12 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-server/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/server/browser/JsrBrowserSocket.java, 2012-10-04 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-server/src/main/java/module-info.java, 2018-11-22 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-server/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/server/internal/AnnotatedServerEndpointConfig.java, 2013-07-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-server/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/server/internal/PathParamIdentifier.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-server/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/server/internal/JakartaServerUpgradeRequest.java, 2012-06-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-server/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/server/internal/JakartaWebSocketServerContainer.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-server/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/server/internal/PathParamServerEndpointConfig.java, 2012-08-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-server/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/server/internal/JsrHandshakeRequest.java, 2013-04-23 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-server/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/server/internal/BasicServerEndpointConfig.java, 2012-06-27 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-server/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/server/internal/JsrHandshakeResponse.java, 2009-03-24 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-server/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/server/internal/JakartaWebSocketServerFrameHandlerFactory.java, 2018-11-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-server/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/server/internal/JakartaWebSocketCreator.java, 2013-04-23 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-server/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/server/config/JakartaWebSocketConfiguration.java, 2016-05-02 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-server/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/server/config/ContainerDefaultConfigurator.java, 2013-04-23 -jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-server/src/main/java/org/eclipse/jetty/ee10/websocket/jakarta/server/config/JakartaWebSocketServletContainerInitializer.java, 2013-09-23 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-loginservice/src/test/java/org/eclipse/jetty/ee10/loginservice/DatabaseLoginServiceTestServer.java, 2014-07-17 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-loginservice/src/test/java/org/eclipse/jetty/ee10/loginservice/JdbcLoginServiceTest.java, 2010-05-29 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-loginservice/src/test/java/org/eclipse/jetty/ee10/loginservice/DataSourceLoginServiceTest.java, 2014-07-17 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-cdi/src/test/java/org/eclipse/jetty/ee10/cdi/tests/GreetingsServlet.java, 2011-12-14 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-cdi/src/test/java/org/eclipse/jetty/ee10/cdi/tests/EmbeddedWeldTest.java, 2020-09-07 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-cdi/src/test/java/org/eclipse/jetty/ee10/cdi/tests/MyFilter.java, 2009-03-24 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-cdi/src/test/java/org/eclipse/jetty/ee10/cdi/tests/Greetings.java, 2012-11-02 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-cdi/src/test/java/org/eclipse/jetty/ee10/cdi/tests/FriendlyGreetings.java, 2012-07-09 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-cdi/src/test/java/org/eclipse/jetty/ee10/cdi/tests/MyContextListener.java, 2009-03-24 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-cdi/src/test/java/org/eclipse/jetty/ee10/cdi/tests/websocket/JettyWebSocketCdiTest.java, 2021-03-31 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-cdi/src/test/java/org/eclipse/jetty/ee10/cdi/tests/websocket/JavaxWebSocketCdiTest.java, 2021-03-31 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-cdi/src/test/java/org/eclipse/jetty/ee10/cdi/tests/websocket/LogFactory.java, 2021-03-31 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-openid-webapp/src/main/java/org/eclipse/jetty/test/openid/ErrorPage.java, 2011-12-14 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-openid-webapp/src/main/java/org/eclipse/jetty/test/openid/AdminPage.java, 2011-12-14 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-openid-webapp/src/main/java/org/eclipse/jetty/test/openid/HomePage.java, 2022-02-08 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-openid-webapp/src/main/java/org/eclipse/jetty/test/openid/LogoutPage.java, 2011-12-14 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-openid-webapp/src/main/java/org/eclipse/jetty/test/openid/LoginPage.java, 2011-12-14 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-felix-webapp/src/main/java/org/eclipse/jetty/demo/InfoServlet.java, 2011-12-14 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-felix-webapp/src/main/java/org/eclipse/jetty/demo/AppListener.java, 2019-06-12 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-quickstart/src/test/java/org/eclipse/jetty/ee10/quickstart/QuickStartTest.java, 2014-08-27 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-quickstart/src/test/java/org/eclipse/jetty/ee10/quickstart/Quickstart.java, 2014-03-17 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-quickstart/src/test/java/org/eclipse/jetty/ee10/quickstart/PreconfigureStandardTestWar.java, 2014-03-17 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-quickstart/src/test/java/org/eclipse/jetty/ee10/quickstart/QuickStartStandardTestWar.java, 2012-05-08 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-quickstart/src/test/java/org/eclipse/jetty/ee10/quickstart/QuickStartSpecWar.java, 2012-08-31 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-quickstart/src/test/java/org/eclipse/jetty/ee10/quickstart/QuickStartJNDIWar.java, 2009-03-24 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-quickstart/src/test/java/org/eclipse/jetty/ee10/quickstart/PreconfigureJNDIWar.java, 2013-07-10 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-quickstart/src/test/java/org/eclipse/jetty/ee10/quickstart/PreconfigureSpecWar.java, 2014-03-17 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-memcached/src/test/java/org/eclipse/jetty/ee10/session/memcached/CachingSessionDataStoreTest.java, 2010-01-26 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-memcached/src/test/java/org/eclipse/jetty/ee10/session/memcached/MemcachedTestHelper.java, 2016-06-17 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-mongodb/src/test/java/org/eclipse/jetty/ee10/session/nosql/mongodb/MongoTestHelper.java, 2017-01-13 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-mongodb/src/test/java/org/eclipse/jetty/ee10/session/nosql/mongodb/ClusteredInvalidateSessionTest.java, 2010-01-26 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-mongodb/src/test/java/org/eclipse/jetty/ee10/session/nosql/mongodb/MongoSessionDataStoreTest.java, 2018-03-28 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-mongodb/src/test/java/org/eclipse/jetty/ee10/session/nosql/mongodb/ClusteredSessionScavengingTest.java, 2010-01-26 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-mongodb/src/test/java/org/eclipse/jetty/ee10/session/nosql/mongodb/ClusteredOrphanedSessionTest.java, 2010-01-26 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-mongodb/src/test/java/org/eclipse/jetty/ee10/session/nosql/mongodb/AttributeNameTest.java, 2014-10-01 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-file/src/test/java/org/eclipse/jetty/ee10/session/file/ClusteredOrphanedSessionTest.java, 2010-01-26 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-gcloud/src/test/java/org/eclipse/jetty/ee10/session/gcloud/InvalidationSessionTest.java, 2015-04-02 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-gcloud/src/test/java/org/eclipse/jetty/ee10/session/gcloud/GCloudSessionTestSupport.java, 2015-09-18 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-gcloud/src/test/java/org/eclipse/jetty/ee10/session/gcloud/GCloudSessionDataStoreTest.java, 2018-03-28 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-gcloud/src/test/java/org/eclipse/jetty/ee10/session/gcloud/ClusteredSessionScavengingTest.java, 2010-01-26 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-gcloud/src/test/java/org/eclipse/jetty/ee10/session/gcloud/ClusteredOrphanedSessionTest.java, 2010-01-26 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-common/src/test/java/org/eclipse/jetty/ee10/session/IdleSessionTest.java, 2012-10-26 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-common/src/test/java/org/eclipse/jetty/ee10/session/ReentrantRequestSessionTest.java, 2010-01-26 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-common/src/test/java/org/eclipse/jetty/ee10/session/ModifyMaxInactiveIntervalTest.java, 2010-01-26 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-common/src/test/java/org/eclipse/jetty/ee10/session/DeleteUnloadableSessionTest.java, 2016-06-01 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-common/src/test/java/org/eclipse/jetty/ee10/session/RemoveSessionTest.java, 2010-01-26 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-common/src/test/java/org/eclipse/jetty/ee10/session/SessionRenewTest.java, 2012-10-26 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-common/src/test/java/org/eclipse/jetty/ee10/session/RequestScopedSessionSaveTest.java, 2022-01-14 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-common/src/test/java/org/eclipse/jetty/ee10/session/CreationTest.java, 2017-01-13 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-common/src/test/java/org/eclipse/jetty/ee10/session/RequestDispatchedSessionTest.java, 2019-10-14 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-common/src/test/java/org/eclipse/jetty/ee10/session/NonClusteredSessionScavengingTest.java, 2010-01-26 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-common/src/test/java/org/eclipse/jetty/ee10/session/RedirectSessionTest.java, 2016-07-28 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-common/src/test/java/org/eclipse/jetty/ee10/session/ClientCrossContextSessionTest.java, 2010-01-26 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-common/src/test/java/org/eclipse/jetty/ee10/session/SessionInvalidateCreateScavengeTest.java, 2012-05-02 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-common/src/test/java/org/eclipse/jetty/ee10/session/SameContextForwardedSessionTest.java, 2015-04-23 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-common/src/test/java/org/eclipse/jetty/ee10/session/DuplicateCookieTest.java, 2019-10-16 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-common/src/test/java/org/eclipse/jetty/ee10/session/SessionInvalidationTest.java, 2010-01-26 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-common/src/test/java/org/eclipse/jetty/ee10/session/ConcurrencyTest.java, 2010-01-26 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-common/src/test/java/org/eclipse/jetty/ee10/session/AsyncTest.java, 2018-12-18 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-common/src/main/java/org/eclipse/jetty/ee10/session/AbstractSessionTestBase.java, 2009-03-24 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-common/src/main/java/org/eclipse/jetty/ee10/session/AbstractClusteredSessionScavengingTest.java, 2010-01-26 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-common/src/main/java/org/eclipse/jetty/ee10/session/AbstractClusteredOrphanedSessionTest.java, 2010-01-26 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-common/src/main/java/org/eclipse/jetty/ee10/session/TestHttpSessionListener.java, 2018-03-28 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-common/src/main/java/org/eclipse/jetty/ee10/session/WebAppObjectInSessionServlet.java, 2010-01-26 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-common/src/main/java/org/eclipse/jetty/ee10/session/AbstractClusteredInvalidationSessionTest.java, 2010-01-26 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-common/src/main/java/org/eclipse/jetty/ee10/session/TestSessionDataStore.java, 2015-08-27 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-common/src/main/java/org/eclipse/jetty/ee10/session/FooInvocationHandler.java, 2010-01-26 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-common/src/main/java/org/eclipse/jetty/ee10/session/Foo.java, 2009-03-24 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-common/src/main/java/org/eclipse/jetty/ee10/session/TestSessionDataStoreFactory.java, 2010-01-26 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-common/src/main/java/org/eclipse/jetty/ee10/session/SessionTestSupport.java, 2010-01-26 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-common/src/main/java/org/eclipse/jetty/ee10/session/AbstractWebAppObjectInSessionTest.java, 2010-01-26 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-common/src/main/java/org/eclipse/jetty/ee10/session/TestFoo.java, 2011-03-29 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-hazelcast/src/test/java/org/eclipse/jetty/ee10/session/hazelcast/HazelcastClusteredInvalidationSessionTest.java, 2010-01-26 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-hazelcast/src/test/java/org/eclipse/jetty/ee10/session/hazelcast/client/ClientOrphanedSessionTest.java, 2017-05-29 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-hazelcast/src/test/java/org/eclipse/jetty/ee10/session/hazelcast/client/HazelcastSessionDataStoreTest.java, 2018-03-28 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-hazelcast/src/test/java/org/eclipse/jetty/ee10/session/hazelcast/client/ClientSessionScavengingTest.java, 2012-10-26 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-hazelcast/src/test/java/org/eclipse/jetty/ee10/session/hazelcast/HazelcastSessionDataStoreTest.java, 2018-03-28 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-hazelcast/src/test/java/org/eclipse/jetty/ee10/session/hazelcast/ClusteredSessionScavengingTest.java, 2010-01-26 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-hazelcast/src/test/java/org/eclipse/jetty/ee10/session/hazelcast/HazelcastTestHelper.java, 2018-03-28 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-hazelcast/src/test/java/org/eclipse/jetty/ee10/session/hazelcast/ClusteredOrphanedSessionTest.java, 2010-01-26 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-infinispan/src/test/java/org/eclipse/jetty/ee10/session/infinispan/InfinispanSessionDataStoreTest.java, 2018-03-28 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-infinispan/src/test/java/org/eclipse/jetty/ee10/session/infinispan/SerializedInfinispanSessionDataStoreTest.java, 2018-03-28 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-infinispan/src/test/java/org/eclipse/jetty/ee10/session/infinispan/LoggingUtil.java, 2010-01-26 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-infinispan/src/test/java/org/eclipse/jetty/ee10/session/infinispan/ClusteredSerializedSessionScavengingTest.java, 2012-10-26 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-infinispan/src/test/java/org/eclipse/jetty/ee10/session/infinispan/ClusteredSessionScavengingTest.java, 2012-10-26 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-infinispan/src/test/java/org/eclipse/jetty/ee10/session/infinispan/InfinispanTestSupport.java, 2015-04-02 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-infinispan/src/test/java/org/eclipse/jetty/ee10/session/infinispan/InfinispanFileSessionDataStoreTest.java, 2009-03-24 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-infinispan/src/test/java/org/eclipse/jetty/ee10/session/infinispan/ClusteredOrphanedSessionTest.java, 2012-10-26 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-infinispan/src/test/java/org/eclipse/jetty/ee10/session/infinispan/remote/RemoteClusteredInvalidationSessionTest.java, 2015-04-02 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-infinispan/src/test/java/org/eclipse/jetty/ee10/session/infinispan/remote/RemoteInfinispanTestSupport.java, 2015-04-02 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-infinispan/src/test/java/org/eclipse/jetty/ee10/session/infinispan/remote/RemoteClusteredSessionScavengingTest.java, 2012-10-26 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-infinispan/src/test/java/org/eclipse/jetty/ee10/session/infinispan/remote/RemoteInfinispanSessionDataStoreTest.java, 2018-03-28 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-jdbc/src/test/java/org/eclipse/jetty/ee10/session/jdbc/ClusteredSessionMigrationTest.java, 2010-01-26 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-jdbc/src/test/java/org/eclipse/jetty/ee10/session/jdbc/JDBCSessionDataStoreTest.java, 2018-03-28 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-jdbc/src/test/java/org/eclipse/jetty/ee10/session/jdbc/ClusteredSessionScavengingTest.java, 2010-01-26 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-jdbc/src/test/java/org/eclipse/jetty/ee10/session/jdbc/SessionTableSchemaTest.java, 2017-06-06 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-jdbc/src/test/java/org/eclipse/jetty/ee10/session/jdbc/ReloadedSessionMissingClassTest.java, 2013-03-08 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-jdbc/src/test/java/org/eclipse/jetty/ee10/session/jdbc/ClusteredInvalidationSessionTest.java, 2010-01-26 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-jdbc/src/test/java/org/eclipse/jetty/ee10/session/jdbc/ClusteredOrphanedSessionTest.java, 2010-01-26 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-sessions/jetty-ee10-test-sessions-jdbc/src/test/java/org/eclipse/jetty/ee10/session/jdbc/WebAppObjectInSessionTest.java, 2010-01-26 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-bad-websocket-webapp/src/main/java/org/eclipse/jetty/ee10/tests/webapp/websocket/bad/StringSequence.java, 2011-08-11 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-bad-websocket-webapp/src/main/java/org/eclipse/jetty/ee10/tests/webapp/websocket/bad/BadOnOpenServerEndpoint.java, 2012-07-09 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-bad-websocket-webapp/src/main/java/org/eclipse/jetty/ee10/tests/webapp/websocket/bad/BadOnCloseServerEndpoint.java, 2012-07-09 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-cdi-common-webapp/src/main/java/org/eclipse/jetty/test/ManifestServerID.java, 2019-06-05 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-cdi-common-webapp/src/main/java/org/eclipse/jetty/test/OldGreetings.java, 2019-06-05 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-cdi-common-webapp/src/main/java/org/eclipse/jetty/test/GreetingsServlet.java, 2011-12-14 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-cdi-common-webapp/src/main/java/org/eclipse/jetty/test/ServerIDFilter.java, 2009-03-24 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-cdi-common-webapp/src/main/java/org/eclipse/jetty/test/Greetings.java, 2012-11-02 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-cdi-common-webapp/src/main/java/org/eclipse/jetty/test/FriendlyGreetings.java, 2012-07-09 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-cdi-common-webapp/src/main/java/org/eclipse/jetty/test/MyContextListener.java, 2009-03-24 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-cdi-common-webapp/src/main/java/org/eclipse/jetty/test/InfoServlet.java, 2011-12-14 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-cdi-common-webapp/src/main/java/org/eclipse/jetty/test/ServerID.java, 2012-11-02 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-jndi/src/test/java/org/eclipse/jetty/ee10/jndi/factories/TestMailSessionReference.java, 2009-03-24 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-http2-webapp/src/test/java/org/eclipse/jetty/test/webapp/HTTP2FromWebAppIT.java, 2017-09-30 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-http2-webapp/src/main/java/org/eclipse/jetty/test/webapp/HTTP2Servlet.java, 2011-12-14 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-http2-webapp/src/main/java/org/eclipse/jetty/test/webapp/HTTP1Servlet.java, 2017-09-30 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-client-transports/src/test/java/org/eclipse/jetty/ee10/test/client/transport/InformationalResponseTest.java, 2022-06-29 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-client-transports/src/test/java/org/eclipse/jetty/ee10/test/client/transport/HttpTrailersTest.java, 2017-04-03 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-client-transports/src/test/java/org/eclipse/jetty/ee10/test/client/transport/VirtualThreadsTest.java, 2022-08-18 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-client-transports/src/test/java/org/eclipse/jetty/ee10/test/client/transport/RequestReaderTest.java, 2021-05-19 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-client-transports/src/test/java/org/eclipse/jetty/ee10/test/client/transport/PushCacheFilterTest.java, 2022-11-21 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-client-transports/src/test/java/org/eclipse/jetty/ee10/test/client/transport/AsyncIOServletTest.java, 2013-08-12 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-client-transports/src/test/java/org/eclipse/jetty/ee10/test/client/transport/BlockedIOTest.java, 2021-02-03 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-client-transports/src/test/java/org/eclipse/jetty/ee10/test/client/transport/HttpClientContinueTest.java, 2012-10-10 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-client-transports/src/test/java/org/eclipse/jetty/ee10/test/client/transport/ServerTimeoutsTest.java, 2016-08-31 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-client-transports/src/test/java/org/eclipse/jetty/ee10/test/client/transport/AbstractTest.java, 2015-02-05 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-badinit-webapp/src/main/java/org/eclipse/jetty/ee10/test/BadServletInit.java, 2011-12-14 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-simple-session-webapp/src/main/java/org/eclipse/jetty/test/session/SessionTest.java, 2011-12-14 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-simple-session-webapp/src/main/java/org/eclipse/jetty/test/session/Chocolate.java, 2009-03-24 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-websocket-webapp/src/main/java/org/eclipse/jetty/ee10/tests/webapp/websocket/StringSequence.java, 2011-08-11 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-websocket-webapp/src/main/java/org/eclipse/jetty/ee10/tests/webapp/websocket/EchoEndpoint.java, 2009-03-24 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-websocket-webapp/src/main/java/org/eclipse/jetty/ee10/tests/webapp/websocket/StringSequenceDecoder.java, 2009-03-24 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-jmx/jetty-ee10-jmx-webapp/src/main/java/org/eclipse/jetty/ee10/test/jmx/MyContainerInitializer.java, 2009-03-24 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-jmx/jetty-ee10-jmx-webapp/src/main/java/org/eclipse/jetty/ee10/test/jmx/Echoer.java, 2012-08-03 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-jmx/jetty-ee10-jmx-webapp/src/main/java/org/eclipse/jetty/ee10/test/jmx/jmx/PingerMBean.java, 2012-07-23 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-jmx/jetty-ee10-jmx-webapp/src/main/java/org/eclipse/jetty/ee10/test/jmx/jmx/EchoerMBean.java, 2012-08-03 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-jmx/jetty-ee10-jmx-webapp/src/main/java/org/eclipse/jetty/ee10/test/jmx/CommonComponent.java, 2012-07-23 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-jmx/jetty-ee10-jmx-webapp/src/main/java/org/eclipse/jetty/ee10/test/jmx/PingServlet.java, 2009-03-24 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-jmx/jetty-ee10-jmx-webapp/src/main/java/org/eclipse/jetty/ee10/test/jmx/Pinger.java, 2009-03-24 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-jmx/jetty-ee10-jmx-webapp-it/src/test/java/org/eclipse/jetty/ee10/test/jmx/JmxIT.java, 2015-01-16 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-integration/src/test/java/org/eclipse/jetty/ee10/test/rfcs/RFC2616BaseTest.java, 2009-07-08 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-integration/src/test/java/org/eclipse/jetty/ee10/test/rfcs/RFC2616NIOHttpTest.java, 2009-07-08 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-integration/src/test/java/org/eclipse/jetty/ee10/test/rfcs/RFC2616NIOHttpsTest.java, 2009-07-08 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-integration/src/test/java/org/eclipse/jetty/ee10/test/DefaultHandlerTest.java, 2009-07-08 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-integration/src/test/java/org/eclipse/jetty/ee10/test/RecoverFailedSelectorTest.java, 2020-04-27 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-integration/src/test/java/org/eclipse/jetty/ee10/test/AllowedResourceAliasCheckerTest.java, 2021-12-07 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-integration/src/test/java/org/eclipse/jetty/ee10/test/GzipWithSendErrorTest.java, 2020-11-18 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-integration/src/test/java/org/eclipse/jetty/ee10/test/HttpInputIntegrationTest.java, 2015-02-25 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-integration/src/test/java/org/eclipse/jetty/ee10/test/DeploymentErrorTest.java, 2018-01-08 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-integration/src/test/java/org/eclipse/jetty/ee10/test/jsp/JspAndDefaultWithoutAliasesTest.java, 2012-12-27 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-integration/src/test/java/org/eclipse/jetty/ee10/test/jsp/JspAndDefaultWithAliasesTest.java, 2012-12-27 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-integration/src/test/java/org/eclipse/jetty/ee10/test/jsp/FakeJspServlet.java, 2009-03-24 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-integration/src/test/java/org/eclipse/jetty/ee10/test/AliasCheckerSymlinkTest.java, 2021-09-21 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-integration/src/test/java/org/eclipse/jetty/ee10/test/DigestPostTest.java, 2010-03-16 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-integration/src/test/java/org/eclipse/jetty/ee10/test/CustomRequestLogTest.java, 2018-11-06 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-integration/src/test/java/org/eclipse/jetty/ee10/test/FailedSelectorTest.java, 2019-08-30 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-integration/src/test/java/org/eclipse/jetty/ee10/test/AnnotatedAsyncListenerTest.java, 2019-06-07 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-integration/src/test/java/org/eclipse/jetty/ee10/test/HttpInputInterceptorTest.java, 2021-04-15 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-integration/src/test/java/org/eclipse/jetty/ee10/test/support/StringUtil.java, 2009-07-08 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-integration/src/test/java/org/eclipse/jetty/ee10/test/support/rawhttp/HttpResponseTesterTest.java, 2009-07-08 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-integration/src/test/java/org/eclipse/jetty/ee10/test/support/rawhttp/HttpTesting.java, 2009-07-08 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-integration/src/test/java/org/eclipse/jetty/ee10/test/support/rawhttp/HttpSocketImpl.java, 2009-03-24 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-integration/src/test/java/org/eclipse/jetty/ee10/test/support/rawhttp/HttpRequestTesterTest.java, 2009-07-08 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-integration/src/test/java/org/eclipse/jetty/ee10/test/support/rawhttp/HttpSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-integration/src/test/java/org/eclipse/jetty/ee10/test/support/rawhttp/HttpsSocketImpl.java, 2009-07-08 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-integration/src/test/java/org/eclipse/jetty/ee10/test/support/XmlBasedJettyServer.java, 2009-07-08 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-integration/src/test/java/org/eclipse/jetty/ee10/test/KeyStoreScannerTest.java, 2020-07-10 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-integration/src/test/java/org/eclipse/jetty/ee10/test/websocket/JettySimpleEchoSocket.java, 2012-06-27 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-integration/src/test/java/org/eclipse/jetty/ee10/test/websocket/JettyWebSocketTest.java, 2019-03-21 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-integration/src/test/java/org/eclipse/jetty/ee10/test/websocket/JakartaWebSocketTest.java, 2019-03-21 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-integration/src/test/java/org/eclipse/jetty/ee10/test/websocket/JakartaSimpleEchoSocket.java, 2009-03-24 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-integration/src/test/java/org/eclipse/jetty/ee10/test/DeploymentErrorInitializer.java, 2012-07-10 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-websocket-client-webapp/src/main/java/org/eclipse/jetty/ee10/tests/webapp/websocket/WebSocketClientServlet.java, 2020-09-29 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-websocket-client-webapp/src/main/java/org/eclipse/jetty/ee10/tests/webapp/websocket/EchoEndpoint.java, 2012-07-09 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-webapp-rfc2616/src/main/java/org/eclipse/jetty/tests/webapp/HttpMethodsServlet.java, 2009-07-08 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-websocket-client-provided-webapp/src/main/java/org/eclipse/jetty/ee10/tests/webapp/websocket/WebSocketClientServlet.java, 2020-09-29 -jetty-ee10/jetty-ee10-tests/jetty-ee10-test-websocket-client-provided-webapp/src/main/java/org/eclipse/jetty/ee10/tests/webapp/websocket/EchoEndpoint.java, 2012-07-09 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/DefaultServletRangesTest.java, 2012-08-27 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/DispatcherForwardTest.java, 2014-05-09 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/ServletWrapperTest.java, 2019-10-01 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/ListenerHolderTest.java, 2020-03-09 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/AsyncServletLongPollTest.java, 2013-06-05 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/AsyncListenerTest.java, 2015-08-10 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/ServletContextHandlerTest.java, 2011-05-11 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/ServletHolderTest.java, 2015-12-14 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/AsyncContextDispatchWithQueryStrings.java, 2011-03-16 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/ServletLifeCycleTest.java, 2019-09-13 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/ConstraintTest.java, 2009-03-24 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/PropertyUserStoreTest.java, 2010-10-12 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/TestLoginService.java, 2015-11-26 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/DataConstraintsTest.java, 2012-01-17 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/HashLoginServiceTest.java, 2019-05-07 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/SessionAuthenticationTest.java, 2022-05-03 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/DefaultIdentityServiceTest.java, 2021-08-25 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/UnauthenticatedTest.java, 2021-08-20 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/UserStoreTest.java, 2017-04-20 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/SpecExampleConstraintTest.java, 2012-09-28 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/ClientCertAuthenticatorTest.java, 2021-02-10 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/AliasedConstraintTest.java, 2014-06-26 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/authentication/SpnegoAuthenticatorTest.java, 2017-08-01 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/InitServletTest.java, 2019-11-25 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/FormTest.java, 2019-07-23 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/SessionHandlerTest.java, 2022-05-03 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/EncodedURITest.java, 2016-09-08 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/SSLAsyncIOServletTest.java, 2014-04-16 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/ServletHandlerTest.java, 2013-01-14 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/PostServletTest.java, 2016-04-26 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/ErrorPageTest.java, 2013-03-11 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/ServletUpgradeTest.java, 2021-01-28 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/AsyncServletTest.java, 2013-03-08 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/DispatcherTest.java, 2008-07-10 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/GzipHandlerCommitTest.java, 2020-05-01 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/ComponentWrapTest.java, 2020-09-15 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/ServletContextResourcesTest.java, 2016-06-22 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/RegexServletTest.java, 2022-03-22 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/ComplianceViolations2616Test.java, 2016-03-22 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/ServletContainerInitializerHolderTest.java, 2021-02-19 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/IncludedServletTest.java, 2016-04-26 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/CharacterEncodingTest.java, 2022-12-13 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/CustomRequestLogTest.java, 2022-10-12 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/ResponseHeadersTest.java, 2012-06-25 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/CacheControlHeaderTest.java, 2021-02-18 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/RequestTest.java, 2022-09-13 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/RequestURITest.java, 2014-03-19 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/RequestHeadersTest.java, 2013-03-19 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/AsyncContextListenersTest.java, 2013-08-21 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/InvokerTest.java, 2008-08-21 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/MultiPartServletTest.java, 2019-05-29 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/DefaultServletTest.java, 2009-04-21 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/GzipHandlerBreakEvenSizeTest.java, 2019-10-14 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/AsyncServletIOTest.java, 2013-05-24 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/FilterHolderTest.java, 2016-11-02 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/AsyncContextTest.java, 2012-02-14 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/GzipHandlerTest.java, 2011-06-20 -jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/ServletRequestLogTest.java, 2014-10-10 -jetty-ee10/jetty-ee10-servlet/src/test/resources/Foo.java, 2009-03-24 -jetty-ee10/jetty-ee10-servlet/src/main/java/module-info.java, 2012-09-13 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/FilterHolder.java, 2001-11-07 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/jmx/HolderMBean.java, 2003-02-15 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/jmx/package-info.java, 2012-11-02 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/jmx/FilterMappingMBean.java, 2009-06-11 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/jmx/ServletMappingMBean.java, 2009-06-11 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletMapping.java, 2005-11-27 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletRequestHttpWrapper.java, 2010-09-03 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/AsyncContextEvent.java, 2013-04-22 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletRequestState.java, 2009-03-24 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletResponseHttpWrapper.java, 2010-09-03 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/DefaultUserIdentity.java, 2009-03-24 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/ConstraintSecurityHandler.java, 2009-03-24 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/SpnegoUserIdentity.java, 2010-12-17 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/DefaultIdentityService.java, 2009-03-24 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/UserPrincipal.java, 2020-11-17 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/RolePrincipal.java, 2011-03-29 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/UserStore.java, 2017-04-20 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/SecurityHandler.java, 2009-03-24 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/SpnegoUserPrincipal.java, 2010-12-17 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/ServerAuthException.java, 2009-03-24 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/DefaultAuthenticatorFactory.java, 2009-03-24 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/UserDataConstraint.java, 2009-03-24 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/Authentication.java, 2009-04-17 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/Authenticator.java, 2009-03-24 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/UserAuthentication.java, 2009-03-24 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/WrappedAuthConfiguration.java, 2021-08-18 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/LoginService.java, 2009-03-24 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/ConstraintMapping.java, 2009-03-24 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/ConstraintAware.java, 2009-03-24 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/AbstractLoginService.java, 2015-11-26 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/LoggedOutAuthentication.java, 2019-03-20 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/package-info.java, 2009-03-24 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/EmptyLoginService.java, 2011-08-11 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/JDBCLoginService.java, 2009-03-24 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/PropertyUserStore.java, 2009-03-24 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/HashLoginService.java, 2009-03-24 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/IdentityService.java, 2009-03-24 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/RoleRunAsToken.java, 2009-03-24 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/RoleInfo.java, 2009-03-24 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/ConfigurableSpnegoLoginService.java, 2018-09-14 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/AbstractUserAuthentication.java, 2013-04-19 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/authentication/ConfigurableSpnegoAuthenticator.java, 2018-09-14 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/authentication/BasicAuthenticator.java, 2022-05-03 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/authentication/AuthorizationService.java, 2018-09-14 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/authentication/ClientCertAuthenticator.java, 2009-03-24 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/authentication/DigestAuthenticator.java, 2009-03-24 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/authentication/LoginCallback.java, 2009-03-24 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/authentication/SessionAuthentication.java, 2009-08-03 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/authentication/LoginAuthenticator.java, 2009-03-24 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/authentication/DeferredAuthentication.java, 2022-05-03 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/authentication/SslClientCertAuthenticator.java, 2021-02-10 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/authentication/FormAuthenticator.java, 2009-03-24 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/authentication/package-info.java, 2012-11-02 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/authentication/LoginCallbackImpl.java, 2009-03-24 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/UserIdentity.java, 2009-03-24 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/RunAsToken.java, 2009-03-24 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ContentProducer.java, 2020-03-20 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletApiRequest.java, 2023-01-23 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/Invoker.java, 2002-07-17 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletContextResponse.java, 2022-05-03 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/Source.java, 2016-07-08 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletApiResponse.java, 2023-01-23 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/HttpOutput.java, 2009-03-24 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/FilterMapping.java, 2005-11-27 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/NoJspServlet.java, 2005-11-27 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ListenerHolder.java, 2013-12-12 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/QuietServletException.java, 2009-03-24 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/BlockingContentProducer.java, 2020-03-20 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletContextRequest.java, 2022-05-03 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/SessionHandler.java, 2022-05-03 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/listener/IntrospectorCleaner.java, 2009-03-24 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/listener/ContainerInitializer.java, 2019-05-28 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/listener/package-info.java, 2012-11-02 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletContainerInitializerHolder.java, 2021-02-19 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ErrorPageErrorHandler.java, 2006-09-07 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ManagedAttributeListener.java, 2015-06-19 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletTester.java, 2012-07-13 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/DecoratingListener.java, 2019-08-08 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/DefaultServlet.java, 2005-11-27 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletPathMapping.java, 2020-05-20 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/HttpInput.java, 2009-03-24 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/Holder.java, 2001-11-07 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletMultiPartFormData.java, 2022-08-04 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletHandler.java, 2006-12-29 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/package-info.java, 2012-11-02 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/BaseHolder.java, 2013-12-12 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/util/ServletOutputStreamWrapper.java, 2022-05-03 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/AsyncContentProducer.java, 2020-03-20 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/DebugListener.java, 2015-09-11 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/JspPropertyGroupServlet.java, 2013-02-25 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletContextHandler.java, 2022-05-03 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/Dispatcher.java, 2022-05-03 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/PushBuilderImpl.java, 2022-11-21 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ErrorHandler.java, 2009-03-24 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletHolder.java, 2000-06-14 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/AsyncContextState.java, 2013-04-22 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletChannel.java, 2022-05-03 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/writer/ResponseWriter.java, 2015-04-29 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/writer/HttpWriter.java, 2009-03-24 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/writer/Utf8HttpWriter.java, 2012-08-20 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/writer/Iso88591HttpWriter.java, 2012-08-20 -jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/writer/EncodingHttpWriter.java, 2012-08-20 -jetty-ee10/jetty-ee10-annotations/src/test/java/org/acme/ClassOne.java, 2009-03-24 -jetty-ee10/jetty-ee10-annotations/src/test/java/org/eclipse/jetty/ee10/annotations/TestAnnotationParser.java, 2009-07-22 -jetty-ee10/jetty-ee10-annotations/src/test/java/org/eclipse/jetty/ee10/annotations/TestSecurityAnnotationConversions.java, 2011-07-07 -jetty-ee10/jetty-ee10-annotations/src/test/java/org/eclipse/jetty/ee10/annotations/ClassA.java, 2009-03-24 -jetty-ee10/jetty-ee10-annotations/src/test/java/org/eclipse/jetty/ee10/annotations/TestRunAsAnnotation.java, 2020-04-06 -jetty-ee10/jetty-ee10-annotations/src/test/java/org/eclipse/jetty/ee10/annotations/ServletC.java, 2009-03-24 -jetty-ee10/jetty-ee10-annotations/src/test/java/org/eclipse/jetty/ee10/annotations/ServletE.java, 2009-03-24 -jetty-ee10/jetty-ee10-annotations/src/test/java/org/eclipse/jetty/ee10/annotations/ListenerC.java, 2009-03-24 -jetty-ee10/jetty-ee10-annotations/src/test/java/org/eclipse/jetty/ee10/annotations/Sample.java, 2009-03-24 -jetty-ee10/jetty-ee10-annotations/src/test/java/org/eclipse/jetty/ee10/annotations/TestAnnotationConfiguration.java, 2010-07-16 -jetty-ee10/jetty-ee10-annotations/src/test/java/org/eclipse/jetty/ee10/annotations/ClassB.java, 2009-03-24 -jetty-ee10/jetty-ee10-annotations/src/test/java/org/eclipse/jetty/ee10/annotations/InterfaceD.java, 2009-03-24 -jetty-ee10/jetty-ee10-annotations/src/test/java/org/eclipse/jetty/ee10/annotations/Multi.java, 2009-07-22 -jetty-ee10/jetty-ee10-annotations/src/test/java/org/eclipse/jetty/ee10/annotations/resources/TestResourceAnnotations.java, 2009-03-24 -jetty-ee10/jetty-ee10-annotations/src/test/java/org/eclipse/jetty/ee10/annotations/resources/ResourceA.java, 2009-03-24 -jetty-ee10/jetty-ee10-annotations/src/test/java/org/eclipse/jetty/ee10/annotations/resources/ResourceB.java, 2009-03-24 -jetty-ee10/jetty-ee10-annotations/src/test/java/org/eclipse/jetty/ee10/annotations/TestAnnotationDecorator.java, 2020-03-09 -jetty-ee10/jetty-ee10-annotations/src/test/java/org/eclipse/jetty/ee10/annotations/TestAnnotationIntrospector.java, 2020-03-09 -jetty-ee10/jetty-ee10-annotations/src/test/java/org/eclipse/jetty/ee10/annotations/ServletD.java, 2009-07-22 -jetty-ee10/jetty-ee10-annotations/src/test/java/org/eclipse/jetty/ee10/annotations/TestDiscoveredServletContainerInitializerHolder.java, 2021-02-19 -jetty-ee10/jetty-ee10-annotations/src/test/java/org/eclipse/jetty/ee10/annotations/TestServletAnnotations.java, 2009-07-22 -jetty-ee10/jetty-ee10-annotations/src/test/java/org/eclipse/jetty/ee10/annotations/FilterC.java, 2009-03-24 -jetty-ee10/jetty-ee10-annotations/src/main/java/module-info.java, 2012-07-10 -jetty-ee10/jetty-ee10-annotations/src/main/java/org/eclipse/jetty/ee10/annotations/AnnotationDecorator.java, 2010-07-16 -jetty-ee10/jetty-ee10-annotations/src/main/java/org/eclipse/jetty/ee10/annotations/ContainerInitializerAnnotationHandler.java, 2011-07-07 -jetty-ee10/jetty-ee10-annotations/src/main/java/org/eclipse/jetty/ee10/annotations/WebFilterAnnotation.java, 2011-07-07 -jetty-ee10/jetty-ee10-annotations/src/main/java/org/eclipse/jetty/ee10/annotations/WebServletAnnotationHandler.java, 2011-07-07 -jetty-ee10/jetty-ee10-annotations/src/main/java/org/eclipse/jetty/ee10/annotations/AbstractDiscoverableAnnotationHandler.java, 2009-03-24 -jetty-ee10/jetty-ee10-annotations/src/main/java/org/eclipse/jetty/ee10/annotations/WebListenerAnnotationHandler.java, 2011-07-07 -jetty-ee10/jetty-ee10-annotations/src/main/java/org/eclipse/jetty/ee10/annotations/MultiPartConfigAnnotationHandler.java, 2011-07-07 -jetty-ee10/jetty-ee10-annotations/src/main/java/org/eclipse/jetty/ee10/annotations/ClassInheritanceHandler.java, 2009-07-22 -jetty-ee10/jetty-ee10-annotations/src/main/java/org/eclipse/jetty/ee10/annotations/WebServletAnnotation.java, 2011-07-07 -jetty-ee10/jetty-ee10-annotations/src/main/java/org/eclipse/jetty/ee10/annotations/ResourceAnnotationHandler.java, 2009-07-22 -jetty-ee10/jetty-ee10-annotations/src/main/java/org/eclipse/jetty/ee10/annotations/WebListenerAnnotation.java, 2011-07-07 -jetty-ee10/jetty-ee10-annotations/src/main/java/org/eclipse/jetty/ee10/annotations/ServletSecurityAnnotationHandler.java, 2011-07-07 -jetty-ee10/jetty-ee10-annotations/src/main/java/org/eclipse/jetty/ee10/annotations/ResourcesAnnotationHandler.java, 2009-07-22 -jetty-ee10/jetty-ee10-annotations/src/main/java/org/eclipse/jetty/ee10/annotations/WebFilterAnnotationHandler.java, 2011-07-07 -jetty-ee10/jetty-ee10-annotations/src/main/java/org/eclipse/jetty/ee10/annotations/AnnotationParser.java, 2009-07-22 -jetty-ee10/jetty-ee10-annotations/src/main/java/org/eclipse/jetty/ee10/annotations/DeclareRolesAnnotationHandler.java, 2009-07-22 -jetty-ee10/jetty-ee10-annotations/src/main/java/org/eclipse/jetty/ee10/annotations/package-info.java, 2009-03-24 -jetty-ee10/jetty-ee10-annotations/src/main/java/org/eclipse/jetty/ee10/annotations/PostConstructAnnotationHandler.java, 2009-07-22 -jetty-ee10/jetty-ee10-annotations/src/main/java/org/eclipse/jetty/ee10/annotations/AnnotationIntrospector.java, 2010-07-16 -jetty-ee10/jetty-ee10-annotations/src/main/java/org/eclipse/jetty/ee10/annotations/AnnotationConfiguration.java, 2009-03-24 -jetty-ee10/jetty-ee10-annotations/src/main/java/org/eclipse/jetty/ee10/annotations/RunAsAnnotationHandler.java, 2009-07-22 -jetty-ee10/jetty-ee10-annotations/src/main/java/org/eclipse/jetty/ee10/annotations/PreDestroyAnnotationHandler.java, 2009-07-22 -jetty-ee10/jetty-ee10-jndi/src/main/java/module-info.java, 2009-03-24 -jetty-ee10/jetty-ee10-jndi/src/main/java/org/eclipse/jetty/ee10/jndi/factories/MailSessionReference.java, 2009-03-24 -jetty-ee10/jetty-ee10-jndi/src/main/java/org/eclipse/jetty/ee10/jndi/factories/package-info.java, 2012-11-02 -jetty-ee10/jetty-ee10-openid/src/test/java/org/eclipse/jetty/ee10/security/openid/JwtEncoder.java, 2019-11-20 -jetty-ee10/jetty-ee10-openid/src/test/java/org/eclipse/jetty/ee10/security/openid/JwtDecoderTest.java, 2019-11-20 -jetty-ee10/jetty-ee10-openid/src/test/java/org/eclipse/jetty/ee10/security/openid/OpenIdCredentialsTest.java, 2021-08-16 -jetty-ee10/jetty-ee10-openid/src/test/java/org/eclipse/jetty/ee10/security/openid/OpenIdProvider.java, 2019-09-11 -jetty-ee10/jetty-ee10-openid/src/test/java/org/eclipse/jetty/ee10/security/openid/OpenIdAuthenticationTest.java, 2019-08-29 -jetty-ee10/jetty-ee10-openid/src/test/java/org/eclipse/jetty/ee10/security/openid/OpenIdReamNameTest.java, 2021-11-10 -jetty-ee10/jetty-ee10-openid/src/main/java/module-info.java, 2013-07-12 -jetty-ee10/jetty-ee10-openid/src/main/java/org/eclipse/jetty/ee10/security/openid/OpenIdConfiguration.java, 2019-08-29 -jetty-ee10/jetty-ee10-openid/src/main/java/org/eclipse/jetty/ee10/security/openid/OpenIdAuthenticator.java, 2009-03-24 -jetty-ee10/jetty-ee10-openid/src/main/java/org/eclipse/jetty/ee10/security/openid/JwtDecoder.java, 2019-11-20 -jetty-ee10/jetty-ee10-openid/src/main/java/org/eclipse/jetty/ee10/security/openid/OpenIdUserPrincipal.java, 2011-03-29 -jetty-ee10/jetty-ee10-openid/src/main/java/org/eclipse/jetty/ee10/security/openid/OpenIdAuthenticatorFactory.java, 2019-08-29 -jetty-ee10/jetty-ee10-openid/src/main/java/org/eclipse/jetty/ee10/security/openid/OpenIdAuthConfiguration.java, 2021-10-26 -jetty-ee10/jetty-ee10-openid/src/main/java/org/eclipse/jetty/ee10/security/openid/OpenIdUserIdentity.java, 2010-12-17 -jetty-ee10/jetty-ee10-openid/src/main/java/org/eclipse/jetty/ee10/security/openid/OpenIdLoginService.java, 2019-08-29 -jetty-ee10/jetty-ee10-openid/src/main/java/org/eclipse/jetty/ee10/security/openid/OpenIdCredentials.java, 2019-08-29 -jetty-ee10/jetty-ee10-jaspi/src/test/java/org/eclipse/jetty/ee10/security/jaspi/DefaultAuthConfigFactoryTest.java, 2021-08-18 -jetty-ee10/jetty-ee10-jaspi/src/test/java/org/eclipse/jetty/ee10/security/jaspi/JaspiTest.java, 2014-12-12 -jetty-ee10/jetty-ee10-jaspi/src/test/java/org/eclipse/jetty/ee10/security/jaspi/HttpHeaderAuthModule.java, 2014-12-12 -jetty-ee10/jetty-ee10-jaspi/src/main/java/module-info.java, 2009-03-24 -jetty-ee10/jetty-ee10-jaspi/src/main/java/org/eclipse/jetty/ee10/security/jaspi/JaspiMessageInfo.java, 2009-03-24 -jetty-ee10/jetty-ee10-jaspi/src/main/java/org/eclipse/jetty/ee10/security/jaspi/modules/BaseAuthModule.java, 2009-03-24 -jetty-ee10/jetty-ee10-jaspi/src/main/java/org/eclipse/jetty/ee10/security/jaspi/modules/package-info.java, 2012-11-02 -jetty-ee10/jetty-ee10-jaspi/src/main/java/org/eclipse/jetty/ee10/security/jaspi/modules/BasicAuthenticationAuthModule.java, 2019-08-27 -jetty-ee10/jetty-ee10-jaspi/src/main/java/org/eclipse/jetty/ee10/security/jaspi/SimpleAuthConfig.java, 2009-03-24 -jetty-ee10/jetty-ee10-jaspi/src/main/java/org/eclipse/jetty/ee10/security/jaspi/ServletCallbackHandler.java, 2009-03-24 -jetty-ee10/jetty-ee10-jaspi/src/main/java/org/eclipse/jetty/ee10/security/jaspi/JaspiAuthenticatorFactory.java, 2009-03-24 -jetty-ee10/jetty-ee10-jaspi/src/main/java/org/eclipse/jetty/ee10/security/jaspi/package-info.java, 2012-11-02 -jetty-ee10/jetty-ee10-jaspi/src/main/java/org/eclipse/jetty/ee10/security/jaspi/DefaultAuthConfigFactory.java, 2021-08-18 -jetty-ee10/jetty-ee10-jaspi/src/main/java/org/eclipse/jetty/ee10/security/jaspi/callback/CredentialValidationCallback.java, 2009-03-24 -jetty-ee10/jetty-ee10-jaspi/src/main/java/org/eclipse/jetty/ee10/security/jaspi/callback/package-info.java, 2012-11-02 -jetty-ee10/jetty-ee10-jaspi/src/main/java/org/eclipse/jetty/ee10/security/jaspi/provider/SimpleServerAuthContext.java, 2021-08-18 -jetty-ee10/jetty-ee10-jaspi/src/main/java/org/eclipse/jetty/ee10/security/jaspi/provider/SimpleAuthConfig.java, 2009-03-24 -jetty-ee10/jetty-ee10-jaspi/src/main/java/org/eclipse/jetty/ee10/security/jaspi/provider/JaspiAuthConfigProvider.java, 2021-08-18 -jetty-ee10/jetty-ee10-jaspi/src/main/java/org/eclipse/jetty/ee10/security/jaspi/JaspiAuthenticator.java, 2009-03-24 -jetty-ee10/jetty-ee10-examples/src/test/java/org/acme/MyServlet.java, 2011-12-14 -jetty-ee10/jetty-ee10-examples/src/test/java/org/eclipse/jetty/examples/Jetty12Example.java, 2022-05-03 -jetty-ee10/jetty-ee10-plus/src/test/java/org/eclipse/jetty/ee10/plus/jndi/NamingEntryUtilTest.java, 2009-03-24 -jetty-ee10/jetty-ee10-plus/src/test/java/org/eclipse/jetty/ee10/plus/jndi/TestNamingEntryUtil.java, 2009-03-24 -jetty-ee10/jetty-ee10-plus/src/test/java/org/eclipse/jetty/ee10/plus/jndi/TestNamingEntries.java, 2009-03-24 -jetty-ee10/jetty-ee10-plus/src/test/java/org/eclipse/jetty/ee10/plus/webapp/PlusDescriptorProcessorTest.java, 2011-07-07 -jetty-ee10/jetty-ee10-plus/src/test/java/org/eclipse/jetty/ee10/plus/annotation/LifeCycleCallbackCollectionTest.java, 2019-07-01 -jetty-ee10/jetty-ee10-plus/src/main/java/module-info.java, 2018-11-22 -jetty-ee10/jetty-ee10-plus/src/main/java/org/eclipse/jetty/ee10/plus/jndi/EnvEntry.java, 2009-03-24 -jetty-ee10/jetty-ee10-plus/src/main/java/org/eclipse/jetty/ee10/plus/jndi/Link.java, 2009-03-24 -jetty-ee10/jetty-ee10-plus/src/main/java/org/eclipse/jetty/ee10/plus/jndi/NamingEntryUtil.java, 2009-03-24 -jetty-ee10/jetty-ee10-plus/src/main/java/org/eclipse/jetty/ee10/plus/jndi/NamingEntry.java, 2009-03-24 -jetty-ee10/jetty-ee10-plus/src/main/java/org/eclipse/jetty/ee10/plus/jndi/NamingDump.java, 2019-06-18 -jetty-ee10/jetty-ee10-plus/src/main/java/org/eclipse/jetty/ee10/plus/jndi/Resource.java, 2009-03-24 -jetty-ee10/jetty-ee10-plus/src/main/java/org/eclipse/jetty/ee10/plus/jndi/package-info.java, 2012-11-02 -jetty-ee10/jetty-ee10-plus/src/main/java/org/eclipse/jetty/ee10/plus/jndi/Transaction.java, 2009-03-24 -jetty-ee10/jetty-ee10-plus/src/main/java/org/eclipse/jetty/ee10/plus/security/DataSourceLoginService.java, 2009-03-24 -jetty-ee10/jetty-ee10-plus/src/main/java/org/eclipse/jetty/ee10/plus/security/package-info.java, 2012-11-02 -jetty-ee10/jetty-ee10-plus/src/main/java/org/eclipse/jetty/ee10/plus/webapp/EnvConfiguration.java, 2006-03-14 -jetty-ee10/jetty-ee10-plus/src/main/java/org/eclipse/jetty/ee10/plus/webapp/package-info.java, 2009-03-24 -jetty-ee10/jetty-ee10-plus/src/main/java/org/eclipse/jetty/ee10/plus/webapp/PlusConfiguration.java, 2009-03-24 -jetty-ee10/jetty-ee10-plus/src/main/java/org/eclipse/jetty/ee10/plus/webapp/PlusDecorator.java, 2010-07-16 -jetty-ee10/jetty-ee10-plus/src/main/java/org/eclipse/jetty/ee10/plus/webapp/PlusDescriptorProcessor.java, 2010-07-16 -jetty-ee10/jetty-ee10-plus/src/main/java/org/eclipse/jetty/ee10/plus/annotation/PostConstructCallback.java, 2006-12-29 -jetty-ee10/jetty-ee10-plus/src/main/java/org/eclipse/jetty/ee10/plus/annotation/RunAs.java, 2006-11-12 -jetty-ee10/jetty-ee10-plus/src/main/java/org/eclipse/jetty/ee10/plus/annotation/InjectionCollection.java, 2006-12-29 -jetty-ee10/jetty-ee10-plus/src/main/java/org/eclipse/jetty/ee10/plus/annotation/RunAsCollection.java, 2007-02-14 -jetty-ee10/jetty-ee10-plus/src/main/java/org/eclipse/jetty/ee10/plus/annotation/Injection.java, 2006-12-29 -jetty-ee10/jetty-ee10-plus/src/main/java/org/eclipse/jetty/ee10/plus/annotation/PreDestroyCallback.java, 2006-12-29 -jetty-ee10/jetty-ee10-plus/src/main/java/org/eclipse/jetty/ee10/plus/annotation/LifeCycleCallback.java, 2006-12-29 -jetty-ee10/jetty-ee10-plus/src/main/java/org/eclipse/jetty/ee10/plus/annotation/package-info.java, 2012-11-02 -jetty-ee10/jetty-ee10-plus/src/main/java/org/eclipse/jetty/ee10/plus/annotation/LifeCycleCallbackCollection.java, 2006-12-29 -jetty-ee10/jetty-ee10-quickstart/src/test/java/org/eclipse/jetty/ee10/quickstart/FooServlet.java, 2011-12-14 -jetty-ee10/jetty-ee10-quickstart/src/test/java/org/eclipse/jetty/ee10/quickstart/TestQuickStart.java, 2017-04-12 -jetty-ee10/jetty-ee10-quickstart/src/test/java/org/eclipse/jetty/ee10/quickstart/FooContextListener.java, 2009-03-24 -jetty-ee10/jetty-ee10-quickstart/src/test/java/org/eclipse/jetty/ee10/quickstart/FooFilter.java, 2009-03-24 -jetty-ee10/jetty-ee10-quickstart/src/main/java/module-info.java, 2009-03-24 -jetty-ee10/jetty-ee10-quickstart/src/main/java/org/eclipse/jetty/ee10/quickstart/QuickStartGeneratorConfiguration.java, 2014-07-09 -jetty-ee10/jetty-ee10-quickstart/src/main/java/org/eclipse/jetty/ee10/quickstart/QuickStartDescriptorProcessor.java, 2014-03-17 -jetty-ee10/jetty-ee10-quickstart/src/main/java/org/eclipse/jetty/ee10/quickstart/PreconfigureQuickStartWar.java, 2014-03-17 -jetty-ee10/jetty-ee10-quickstart/src/main/java/org/eclipse/jetty/ee10/quickstart/QuickStartConfiguration.java, 2014-03-17 -jetty-ee10/jetty-ee10-quickstart/src/main/java/org/eclipse/jetty/ee10/quickstart/ExtraXmlDescriptorProcessor.java, 2014-03-17 -tests/test-integration/src/test/java/org/eclipse/jetty/test/AliasCheckerMultipleResourceBasesTest.java, 2022-08-11 -tests/test-integration/src/test/java/org/eclipse/jetty/test/AliasCheckerSymlinkTest.java, 2021-09-21 -tests/test-jpms/test-jpms-websocket-core/src/test/java/WebSocketCoreJPMSTest.java, 2021-08-30 -tests/test-jpms/test-jpms-websocket-core/src/main/java/module-info.java, 2021-08-30 -tests/jetty-home-tester/src/main/java/org/eclipse/jetty/tests/hometester/JettyHomeTester.java, 2018-09-24 -tests/jetty-jmh/src/main/java/org/eclipse/jetty/server/jmh/DeflaterPoolBenchmark.java, 2018-08-21 -tests/jetty-jmh/src/main/java/org/eclipse/jetty/server/jmh/ListVsMapBenchmark.java, 2019-06-24 -tests/jetty-jmh/src/main/java/org/eclipse/jetty/client/jmh/ConnectionPoolsBenchmark.java, 2020-07-31 -tests/jetty-jmh/src/main/java/org/eclipse/jetty/http/jmh/HttpMethodBenchmark.java, 2020-11-11 -tests/jetty-jmh/src/main/java/org/eclipse/jetty/io/jmh/ByteBufferBenchmark.java, 2018-11-05 -tests/jetty-jmh/src/main/java/org/eclipse/jetty/requestlog/jmh/RequestLogBenchmark.java, 2018-11-01 -tests/jetty-jmh/src/main/java/org/eclipse/jetty/util/StringReplaceBenchmark.java, 2018-08-21 -tests/jetty-jmh/src/main/java/org/eclipse/jetty/util/StringIsEmptyBenchmark.java, 2019-05-23 -tests/jetty-jmh/src/main/java/org/eclipse/jetty/util/jmh/DateCacheNoTick.java, 2009-03-24 -tests/jetty-jmh/src/main/java/org/eclipse/jetty/util/jmh/DateCacheSimpleDateFormatBenchmark.java, 2018-03-06 -tests/jetty-jmh/src/main/java/org/eclipse/jetty/util/jmh/DateCacheBenchmark.java, 2018-03-06 -tests/jetty-jmh/src/main/java/org/eclipse/jetty/util/jmh/DateCacheSimpleDateFormat.java, 2009-03-24 -tests/jetty-jmh/src/main/java/org/eclipse/jetty/util/jmh/DateCacheNoTickBenchmark.java, 2018-03-06 -tests/jetty-jmh/src/main/java/org/eclipse/jetty/util/StreamVsIteratorBenchmark.java, 2018-08-21 -tests/jetty-jmh/src/main/java/org/eclipse/jetty/util/thread/jmh/ThreadPoolBenchmark.java, 2018-03-06 -tests/jetty-jmh/src/main/java/org/eclipse/jetty/util/thread/jmh/ReservedThreadPoolBenchmark.java, 2018-03-06 -tests/jetty-jmh/src/main/java/org/eclipse/jetty/util/thread/strategy/jmh/AdaptiveExecutionStrategyBenchmark.java, 2018-02-27 -tests/jetty-jmh/src/main/java/org/eclipse/jetty/util/thread/strategy/jmh/TestConnection.java, 2018-02-27 -tests/jetty-jmh/src/main/java/org/eclipse/jetty/util/thread/strategy/jmh/TestServer.java, 2018-02-27 -tests/jetty-jmh/src/main/java/org/eclipse/jetty/util/PoolStrategyBenchmark.java, 2020-09-16 -tests/jetty-jmh/src/main/java/org/eclipse/jetty/util/TrieBenchmark.java, 2021-01-05 -tests/jetty-jmh/src/main/java/org/eclipse/jetty/logging/jmh/IndentBenchmark.java, 2018-03-06 -tests/test-distribution/test-ee10-distribution/src/test/java/org/eclipse/jetty/ee10/tests/distribution/OpenIdTests.java, 2022-07-08 -tests/test-distribution/test-ee10-distribution/src/test/java/org/eclipse/jetty/ee10/tests/distribution/openid/JwtEncoder.java, 2019-11-20 -tests/test-distribution/test-ee10-distribution/src/test/java/org/eclipse/jetty/ee10/tests/distribution/openid/OpenIdProvider.java, 2019-09-11 -tests/test-distribution/test-ee9-distribution/src/test/java/org/eclipse/jetty/ee9/tests/distribution/OpenIdTests.java, 2022-07-08 -tests/test-distribution/test-ee9-distribution/src/test/java/org/eclipse/jetty/ee9/tests/distribution/openid/JwtEncoder.java, 2019-11-20 -tests/test-distribution/test-ee9-distribution/src/test/java/org/eclipse/jetty/ee9/tests/distribution/openid/OpenIdProvider.java, 2019-09-11 -tests/test-distribution/test-distribution-common/src/test/java/org/eclipse/jetty/tests/distribution/BadAppTests.java, 2019-05-03 -tests/test-distribution/test-distribution-common/src/test/java/org/eclipse/jetty/tests/distribution/CDITests.java, 2019-06-05 -tests/test-distribution/test-distribution-common/src/test/java/org/eclipse/jetty/tests/distribution/StatsTests.java, 2020-11-16 -tests/test-distribution/test-distribution-common/src/test/java/org/eclipse/jetty/tests/distribution/session/JDBCSessionDistributionTests.java, 2021-08-06 -tests/test-distribution/test-distribution-common/src/test/java/org/eclipse/jetty/tests/distribution/session/InfinispanSessionDistributionTests.java, 2021-08-06 -tests/test-distribution/test-distribution-common/src/test/java/org/eclipse/jetty/tests/distribution/session/FileSessionDistributionTests.java, 2011-08-11 -tests/test-distribution/test-distribution-common/src/test/java/org/eclipse/jetty/tests/distribution/session/HazelcastSessionDistributionTests.java, 2021-07-20 -tests/test-distribution/test-distribution-common/src/test/java/org/eclipse/jetty/tests/distribution/session/FileSessionWithMemcacheDistributionTests.java, 2021-08-06 -tests/test-distribution/test-distribution-common/src/test/java/org/eclipse/jetty/tests/distribution/session/MongodbSessionDistributionTests.java, 2021-08-06 -tests/test-distribution/test-distribution-common/src/test/java/org/eclipse/jetty/tests/distribution/session/AbstractSessionDistributionTests.java, 2021-08-06 -tests/test-distribution/test-distribution-common/src/test/java/org/eclipse/jetty/tests/distribution/session/GCloudSessionDistributionTests.java, 2021-08-06 -tests/test-distribution/test-distribution-common/src/test/java/org/eclipse/jetty/tests/distribution/ModulesTest.java, 2023-01-10 -tests/test-distribution/test-distribution-common/src/test/java/org/eclipse/jetty/tests/distribution/OsgiAppTests.java, 2019-06-12 -tests/test-distribution/test-distribution-common/src/test/java/org/eclipse/jetty/tests/distribution/GzipModuleTests.java, 2021-07-27 -tests/test-distribution/test-distribution-common/src/test/java/org/eclipse/jetty/tests/distribution/DistributionTests.java, 2019-02-11 -tests/test-distribution/test-distribution-common/src/test/java/org/eclipse/jetty/tests/distribution/DynamicListenerTests.java, 2019-06-12 -tests/test-distribution/test-distribution-common/src/test/java/org/eclipse/jetty/tests/distribution/LoggingOptionsTests.java, 2021-06-23 -tests/test-distribution/test-distribution-common/src/test/java/org/eclipse/jetty/tests/distribution/DemoModulesTests.java, 2020-09-21 -tests/test-distribution/test-distribution-common/src/test/java/org/eclipse/jetty/tests/distribution/AbstractJettyHomeTest.java, 2019-02-11 diff --git a/javadoc/pom.xml b/javadoc/pom.xml index d64e1f1a7a25..d82d9ea1d0ed 100644 --- a/javadoc/pom.xml +++ b/javadoc/pom.xml @@ -267,16 +267,11 @@ jetty-http3-server provided - - + org.eclipse.jetty.memcached jetty-memcached-sessions diff --git a/jetty-core/jetty-client/pom.xml b/jetty-core/jetty-client/pom.xml index 7ee4de48f0b6..a7a22380ca30 100644 --- a/jetty-core/jetty-client/pom.xml +++ b/jetty-core/jetty-client/pom.xml @@ -117,6 +117,16 @@ jetty-server test + + org.eclipse.jetty + jetty-security + test + + + org.eclipse.jetty + jetty-session + test + org.awaitility awaitility diff --git a/jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/RequestListeners.java b/jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/RequestListeners.java index ec5188d47cab..192c4bac85d1 100644 --- a/jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/RequestListeners.java +++ b/jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/RequestListeners.java @@ -15,6 +15,7 @@ import java.io.IOException; import java.nio.ByteBuffer; +import java.util.function.BiFunction; import org.eclipse.jetty.util.component.Dumpable; import org.slf4j.Logger; @@ -35,25 +36,58 @@ public class RequestListeners implements Dumpable private Request.SuccessListener successListener; private Request.FailureListener failureListener; - public void addListener(Request.Listener listener) + public boolean addListener(Request.Listener listener) { - addQueuedListener(listener); - addBeginListener(listener); - addHeadersListener(listener); - addCommitListener(listener); - addContentListener(listener); - addSuccessListener(listener); - addFailureListener(listener); + // Use binary OR to avoid short-circuit. + return addQueuedListener(listener) | + addBeginListener(listener) | + addHeadersListener(listener) | + addCommitListener(listener) | + addContentListener(listener) | + addSuccessListener(listener) | + addFailureListener(listener); } - public void addQueuedListener(Request.QueuedListener listener) + public boolean removeListener(Request.Listener listener) { + // Use binary OR to avoid short-circuit. + return removeQueuedListener(listener) | + removeBeginListener(listener) | + removeHeadersListener(listener) | + removeCommitListener(listener) | + removeContentListener(listener) | + removeSuccessListener(listener) | + removeFailureListener(listener); + } + + public boolean addQueuedListener(Request.QueuedListener listener) + { + if (listener == null) + return false; Request.QueuedListener existing = queuedListener; - queuedListener = existing == null ? listener : request -> + queuedListener = existing == null ? listener : new QueuedListenerLink(existing, listener); + return true; + } + + public boolean removeQueuedListener(Request.QueuedListener listener) + { + if (listener == null) + return false; + if (queuedListener == listener) + { + queuedListener = null; + return true; + } + if (queuedListener instanceof QueuedListenerLink link) { - notifyQueued(existing, request); - notifyQueued(listener, request); - }; + Request.QueuedListener remaining = link.remove(listener); + if (remaining != null) + { + queuedListener = remaining; + return true; + } + } + return false; } protected static void notifyQueued(Request.QueuedListener listener, Request request) @@ -69,14 +103,34 @@ protected static void notifyQueued(Request.QueuedListener listener, Request requ } } - public void addBeginListener(Request.BeginListener listener) + public boolean addBeginListener(Request.BeginListener listener) { + if (listener == null) + return false; Request.BeginListener existing = beginListener; - beginListener = existing == null ? listener : request -> + beginListener = existing == null ? listener : new BeginListenerLink(existing, listener); + return true; + } + + public boolean removeBeginListener(Request.BeginListener listener) + { + if (listener == null) + return false; + if (beginListener == listener) { - notifyBegin(existing, request); - notifyBegin(listener, request); - }; + beginListener = null; + return true; + } + if (beginListener instanceof BeginListenerLink link) + { + Request.BeginListener remaining = link.remove(listener); + if (remaining != null) + { + beginListener = remaining; + return true; + } + } + return false; } protected static void notifyBegin(Request.BeginListener listener, Request request) @@ -92,14 +146,34 @@ protected static void notifyBegin(Request.BeginListener listener, Request reques } } - public void addHeadersListener(Request.HeadersListener listener) + public boolean addHeadersListener(Request.HeadersListener listener) { + if (listener == null) + return false; Request.HeadersListener existing = headersListener; - headersListener = existing == null ? listener : request -> + headersListener = existing == null ? listener : new HeadersListenerLink(existing, listener); + return true; + } + + public boolean removeHeadersListener(Request.HeadersListener listener) + { + if (listener == null) + return false; + if (headersListener == listener) { - notifyHeaders(existing, request); - notifyHeaders(listener, request); - }; + headersListener = null; + return true; + } + if (headersListener instanceof HeadersListenerLink link) + { + Request.HeadersListener remaining = link.remove(listener); + if (remaining != null) + { + headersListener = remaining; + return true; + } + } + return false; } protected static void notifyHeaders(Request.HeadersListener listener, Request request) @@ -115,14 +189,34 @@ protected static void notifyHeaders(Request.HeadersListener listener, Request re } } - public void addCommitListener(Request.CommitListener listener) + public boolean addCommitListener(Request.CommitListener listener) { + if (listener == null) + return false; Request.CommitListener existing = commitListener; - commitListener = existing == null ? listener : request -> + commitListener = existing == null ? listener : new CommitListenerLink(existing, listener); + return true; + } + + public boolean removeCommitListener(Request.CommitListener listener) + { + if (listener == null) + return false; + if (commitListener == listener) + { + commitListener = null; + return true; + } + if (commitListener instanceof CommitListenerLink link) { - notifyCommit(existing, request); - notifyCommit(listener, request); - }; + Request.CommitListener remaining = link.remove(listener); + if (remaining != null) + { + commitListener = remaining; + return true; + } + } + return false; } protected static void notifyCommit(Request.CommitListener listener, Request request) @@ -138,14 +232,34 @@ protected static void notifyCommit(Request.CommitListener listener, Request requ } } - public void addContentListener(Request.ContentListener listener) + public boolean addContentListener(Request.ContentListener listener) { + if (listener == null) + return false; Request.ContentListener existing = contentListener; - contentListener = existing == null ? listener : (request, byteBuffer) -> + contentListener = existing == null ? listener : new ContentListenerLink(existing, listener); + return true; + } + + public boolean removeContentListener(Request.ContentListener listener) + { + if (listener == null) + return false; + if (contentListener == listener) { - notifyContent(existing, request, byteBuffer); - notifyContent(listener, request, byteBuffer); - }; + contentListener = null; + return true; + } + if (contentListener instanceof ContentListenerLink link) + { + Request.ContentListener remaining = link.remove(listener); + if (remaining != null) + { + contentListener = remaining; + return true; + } + } + return false; } protected static void notifyContent(Request.ContentListener listener, Request request, ByteBuffer byteBuffer) @@ -166,14 +280,34 @@ protected static void notifyContent(Request.ContentListener listener, Request re } } - public void addSuccessListener(Request.SuccessListener listener) + public boolean addSuccessListener(Request.SuccessListener listener) { + if (listener == null) + return false; Request.SuccessListener existing = successListener; - successListener = existing == null ? listener : request -> + successListener = existing == null ? listener : new SuccessListenerLink(existing, listener); + return true; + } + + public boolean removeSuccessListener(Request.SuccessListener listener) + { + if (listener == null) + return false; + if (successListener == listener) + { + successListener = null; + return true; + } + if (successListener instanceof SuccessListenerLink link) { - notifySuccess(existing, request); - notifySuccess(listener, request); - }; + Request.SuccessListener remaining = link.remove(listener); + if (remaining != null) + { + successListener = remaining; + return true; + } + } + return false; } protected static void notifySuccess(Request.SuccessListener listener, Request request) @@ -189,14 +323,34 @@ protected static void notifySuccess(Request.SuccessListener listener, Request re } } - public void addFailureListener(Request.FailureListener listener) + public boolean addFailureListener(Request.FailureListener listener) { + if (listener == null) + return false; Request.FailureListener existing = failureListener; - failureListener = existing == null ? listener : (request, failure) -> + failureListener = existing == null ? listener : new FailureListenerLink(existing, listener); + return true; + } + + public boolean removeFailureListener(Request.FailureListener listener) + { + if (listener == null) + return false; + if (failureListener == listener) { - notifyFailure(existing, request, failure); - notifyFailure(listener, request, failure); - }; + failureListener = null; + return true; + } + if (failureListener instanceof FailureListenerLink link) + { + Request.FailureListener remaining = link.remove(listener); + if (remaining != null) + { + failureListener = remaining; + return true; + } + } + return false; } protected static void notifyFailure(Request.FailureListener listener, Request request, Throwable failure) @@ -280,4 +434,165 @@ public String toString() return name + " = " + listener; } } + + private static class Link> + { + private final Class type; + private final BiFunction ctor; + protected final T prev; + protected final T next; + + protected Link(Class type, BiFunction ctor, T prev, T next) + { + this.type = type; + this.ctor = ctor; + this.prev = prev; + this.next = next; + } + + @SuppressWarnings("unchecked") + protected T remove(T listener) + { + // The add methods build a fold-left structure: + // f = Link3(Link2(Link1(listener1, listener2), listener3), listener4) + // f.remove(listener1) yields: fa = Link3a(Link2a(listener2, listener3), listener4) + // f.remove(listener4) yields: fa = Link2(Link1(listener1, listener2), listener3) + + // First check next, to optimize the case where listeners + // are removed in reverse order (we would not allocate). + // If there is a match on next, return the other component. + if (next == listener) + return prev; + + // If it is a link, delegate the removal to it. + if (type.isInstance(prev)) + { + T remaining = type.cast(prev).remove(listener); + // The prev link was modified by the removal, + // rebuild this link with the modification. + if (remaining != null) + return (T)ctor.apply(remaining, next); + // Not found. + return null; + } + + // If there is a match on prev, return the other component. + if (prev == listener) + return next; + + // Not found. + return null; + } + + @Override + public String toString() + { + return "%s@%x(%s,%s)".formatted(getClass().getSimpleName(), hashCode(), prev, next); + } + } + + private static class QueuedListenerLink extends Link implements Request.QueuedListener + { + private QueuedListenerLink(Request.QueuedListener prev, Request.QueuedListener next) + { + super(QueuedListenerLink.class, QueuedListenerLink::new, prev, next); + } + + @Override + public void onQueued(Request request) + { + notifyQueued(prev, request); + notifyQueued(next, request); + } + } + + private static class BeginListenerLink extends Link implements Request.BeginListener + { + private BeginListenerLink(Request.BeginListener prev, Request.BeginListener next) + { + super(BeginListenerLink.class, BeginListenerLink::new, prev, next); + } + + @Override + public void onBegin(Request request) + { + notifyBegin(prev, request); + notifyBegin(next, request); + } + } + + private static class HeadersListenerLink extends Link implements Request.HeadersListener + { + private HeadersListenerLink(Request.HeadersListener prev, Request.HeadersListener next) + { + super(HeadersListenerLink.class, HeadersListenerLink::new, prev, next); + } + + @Override + public void onHeaders(Request request) + { + notifyHeaders(prev, request); + notifyHeaders(next, request); + } + } + + private static class CommitListenerLink extends Link implements Request.CommitListener + { + private CommitListenerLink(Request.CommitListener prev, Request.CommitListener next) + { + super(CommitListenerLink.class, CommitListenerLink::new, prev, next); + } + + @Override + public void onCommit(Request request) + { + notifyCommit(prev, request); + notifyCommit(next, request); + } + } + + private static class ContentListenerLink extends Link implements Request.ContentListener + { + private ContentListenerLink(Request.ContentListener prev, Request.ContentListener next) + { + super(ContentListenerLink.class, ContentListenerLink::new, prev, next); + } + + @Override + public void onContent(Request request, ByteBuffer content) + { + notifyContent(prev, request, content); + notifyContent(next, request, content); + } + } + + private static class SuccessListenerLink extends Link implements Request.SuccessListener + { + private SuccessListenerLink(Request.SuccessListener prev, Request.SuccessListener next) + { + super(SuccessListenerLink.class, SuccessListenerLink::new, prev, next); + } + + @Override + public void onSuccess(Request request) + { + notifySuccess(prev, request); + notifySuccess(next, request); + } + } + + private static class FailureListenerLink extends Link implements Request.FailureListener + { + private FailureListenerLink(Request.FailureListener prev, Request.FailureListener next) + { + super(FailureListenerLink.class, FailureListenerLink::new, prev, next); + } + + @Override + public void onFailure(Request request, Throwable failure) + { + notifyFailure(prev, request, failure); + notifyFailure(next, request, failure); + } + } } diff --git a/jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/SPNEGOAuthentication.java b/jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/SPNEGOAuthentication.java index 0506b04ba082..1e7f2c68d17f 100644 --- a/jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/SPNEGOAuthentication.java +++ b/jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/SPNEGOAuthentication.java @@ -16,11 +16,11 @@ import java.io.IOException; import java.net.URI; import java.nio.file.Path; -import java.security.PrivilegedAction; import java.util.Arrays; import java.util.Base64; import java.util.HashMap; import java.util.Map; +import java.util.concurrent.Callable; import javax.security.auth.Subject; import javax.security.auth.callback.Callback; import javax.security.auth.callback.CallbackHandler; @@ -32,6 +32,7 @@ import org.eclipse.jetty.http.HttpHeader; import org.eclipse.jetty.util.Attributes; +import org.eclipse.jetty.util.security.SecurityUtils; import org.ietf.jgss.GSSContext; import org.ietf.jgss.GSSException; import org.ietf.jgss.GSSManager; @@ -205,7 +206,7 @@ public Result authenticate(Request request, ContentResponse response, HeaderInfo String b64Input = headerInfo.getBase64(); byte[] input = b64Input == null ? new byte[0] : Base64.getDecoder().decode(b64Input); - byte[] output = Subject.doAs(spnegoContext.subject, initGSSContext(spnegoContext, request.getHost(), input)); + byte[] output = SecurityUtils.doAs(spnegoContext.subject, initGSSContext(spnegoContext, request.getHost(), input)); String b64Output = output == null ? null : new String(Base64.getEncoder().encode(output)); // The result cannot be used for subsequent requests, @@ -239,7 +240,7 @@ private SPNEGOContext login() } } - private PrivilegedAction initGSSContext(SPNEGOContext spnegoContext, String host, byte[] bytes) + private Callable initGSSContext(SPNEGOContext spnegoContext, String host, byte[] bytes) { return () -> { diff --git a/jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/transport/HttpRequest.java b/jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/transport/HttpRequest.java index c2d88c302818..814f68802228 100644 --- a/jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/transport/HttpRequest.java +++ b/jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/transport/HttpRequest.java @@ -273,7 +273,7 @@ private Request param(String name, String value, boolean fromQuery) @Override public Fields getParams() { - return new Fields(params, true); + return params.asImmutable(); } @Override diff --git a/jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/transport/HttpSender.java b/jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/transport/HttpSender.java index efdf2fa3e2b1..533d44c32320 100644 --- a/jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/transport/HttpSender.java +++ b/jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/transport/HttpSender.java @@ -540,11 +540,13 @@ public void succeeded() } } + boolean last = chunk.isLast(); chunk.release(); + chunk = null; if (proceed) { - if (chunk.isLast()) + if (last) { success = true; complete = true; @@ -568,7 +570,10 @@ else if (expect100) public void failed(Throwable x) { if (chunk != null) + { chunk.release(); + chunk = null; + } HttpRequest request = exchange.getRequest(); Content.Source content = request.getBody(); diff --git a/jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/transport/ResponseListeners.java b/jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/transport/ResponseListeners.java index c1cfade98333..a32150dadd2b 100644 --- a/jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/transport/ResponseListeners.java +++ b/jetty-core/jetty-client/src/main/java/org/eclipse/jetty/client/transport/ResponseListeners.java @@ -71,14 +71,17 @@ public ResponseListeners(ResponseListeners that) completeListener = that.completeListener; } - public void addBeginListener(Response.BeginListener listener) + public boolean addBeginListener(Response.BeginListener listener) { + if (listener == null) + return false; Response.BeginListener existing = beginListener; beginListener = existing == null ? listener : response -> { notifyBegin(existing, response); notifyBegin(listener, response); }; + return true; } public void notifyBegin(Response response) @@ -99,8 +102,10 @@ private static void notifyBegin(Response.BeginListener listener, Response respon } } - public void addHeaderListener(Response.HeaderListener listener) + public boolean addHeaderListener(Response.HeaderListener listener) { + if (listener == null) + return false; Response.HeaderListener existing = headerListener; headerListener = existing == null ? listener : (response, field) -> { @@ -108,6 +113,7 @@ public void addHeaderListener(Response.HeaderListener listener) boolean r2 = notifyHeader(listener, response, field); return r1 && r2; }; + return true; } public boolean notifyHeader(Response response, HttpField field) @@ -130,14 +136,17 @@ private static boolean notifyHeader(Response.HeaderListener listener, Response r } } - public void addHeadersListener(Response.HeadersListener listener) + public boolean addHeadersListener(Response.HeadersListener listener) { + if (listener == null) + return false; Response.HeadersListener existing = headersListener; headersListener = existing == null ? listener : response -> { notifyHeaders(existing, response); notifyHeaders(listener, response); }; + return true; } public void notifyHeaders(Response response) @@ -158,8 +167,10 @@ private static void notifyHeaders(Response.HeadersListener listener, Response re } } - public void addContentSourceListener(Response.ContentSourceListener listener) + public boolean addContentSourceListener(Response.ContentSourceListener listener) { + if (listener == null) + return false; Response.ContentSourceListener existing = contentSourceListener; if (existing == null) { @@ -179,6 +190,7 @@ public void addContentSourceListener(Response.ContentSourceListener listener) contentSourceListener = demultiplexer; } } + return true; } public boolean hasContentSourceListeners() @@ -234,14 +246,17 @@ private static void notifyContentSource(Response.ContentSourceListener listener, } } - public void addSuccessListener(Response.SuccessListener listener) + public boolean addSuccessListener(Response.SuccessListener listener) { + if (listener == null) + return false; Response.SuccessListener existing = successListener; successListener = existing == null ? listener : response -> { notifySuccess(existing, response); notifySuccess(listener, response); }; + return true; } public void notifySuccess(Response response) @@ -262,14 +277,17 @@ private static void notifySuccess(Response.SuccessListener listener, Response re } } - public void addFailureListener(Response.FailureListener listener) + public boolean addFailureListener(Response.FailureListener listener) { + if (listener == null) + return false; Response.FailureListener existing = failureListener; failureListener = existing == null ? listener : (response, failure) -> { notifyFailure(existing, response, failure); notifyFailure(listener, response, failure); }; + return true; } public void notifyFailure(Response response, Throwable failure) @@ -290,13 +308,15 @@ private static void notifyFailure(Response.FailureListener listener, Response re } } - public void addCompleteListener(Response.CompleteListener listener) + public boolean addCompleteListener(Response.CompleteListener listener) { - addCompleteListener(listener, true); + return addCompleteListener(listener, true); } - private void addCompleteListener(Response.CompleteListener listener, boolean includeOtherEvents) + private boolean addCompleteListener(Response.CompleteListener listener, boolean includeOtherEvents) { + if (listener == null) + return false; if (includeOtherEvents) { if (listener instanceof Response.BeginListener l) @@ -318,6 +338,7 @@ private void addCompleteListener(Response.CompleteListener listener, boolean inc notifyComplete(existing, result); notifyComplete(listener, result); }; + return true; } public void notifyComplete(Result result) @@ -338,26 +359,28 @@ private static void notifyComplete(Response.CompleteListener listener, Result re } } - public void addListener(Response.Listener listener) + public boolean addListener(Response.Listener listener) { - addBeginListener(listener); - addHeaderListener(listener); - addHeadersListener(listener); - addContentSourceListener(listener); - addSuccessListener(listener); - addFailureListener(listener); - addCompleteListener(listener, false); + // Use binary OR to avoid short-circuit. + return addBeginListener(listener) | + addHeaderListener(listener) | + addHeadersListener(listener) | + addContentSourceListener(listener) | + addSuccessListener(listener) | + addFailureListener(listener) | + addCompleteListener(listener, false); } - public void addResponseListeners(ResponseListeners listeners) + public boolean addResponseListeners(ResponseListeners listeners) { - addBeginListener(listeners.beginListener); - addHeaderListener(listeners.headerListener); - addHeadersListener(listeners.headersListener); - addContentSourceListener(listeners.contentSourceListener); - addSuccessListener(listeners.successListener); - addFailureListener(listeners.failureListener); - addCompleteListener(listeners.completeListener, false); + // Use binary OR to avoid short-circuit. + return addBeginListener(listeners.beginListener) | + addHeaderListener(listeners.headerListener) | + addHeadersListener(listeners.headersListener) | + addContentSourceListener(listeners.contentSourceListener) | + addSuccessListener(listeners.successListener) | + addFailureListener(listeners.failureListener) | + addCompleteListener(listeners.completeListener, false); } private void emitEvents(Response response) diff --git a/jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientAuthenticationTest.java b/jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientAuthenticationTest.java index 4c400b086f75..2a355c0908a7 100644 --- a/jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientAuthenticationTest.java +++ b/jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientAuthenticationTest.java @@ -13,21 +13,51 @@ package org.eclipse.jetty.client; -import org.junit.jupiter.api.Disabled; +import java.net.URI; +import java.nio.ByteBuffer; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; +import java.nio.file.Path; +import java.util.List; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicReference; +import java.util.function.IntFunction; + +import org.eclipse.jetty.http.HttpHeader; +import org.eclipse.jetty.http.HttpStatus; +import org.eclipse.jetty.http.HttpURI; +import org.eclipse.jetty.io.Content; +import org.eclipse.jetty.security.Authenticator; +import org.eclipse.jetty.security.Constraint; +import org.eclipse.jetty.security.HashLoginService; +import org.eclipse.jetty.security.LoginService; +import org.eclipse.jetty.security.SecurityHandler; +import org.eclipse.jetty.security.authentication.BasicAuthenticator; +import org.eclipse.jetty.security.authentication.DigestAuthenticator; +import org.eclipse.jetty.server.Handler; +import org.eclipse.jetty.server.Server; +import org.eclipse.jetty.toolchain.test.MavenTestingUtils; +import org.eclipse.jetty.util.Attributes; +import org.eclipse.jetty.util.BufferUtil; +import org.eclipse.jetty.util.Callback; +import org.eclipse.jetty.util.resource.ResourceFactory; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ArgumentsSource; -import static org.junit.jupiter.api.Assertions.fail; +import static org.eclipse.jetty.client.Authentication.ANY_REALM; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.equalToIgnoringCase; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; -// TODO -@Disabled public class HttpClientAuthenticationTest extends AbstractHttpClientServerTest { - @Test - public void testNeedToUpdateThisTest() - { - fail("This test needs to be updated to use Core version of Basic Auth (when available)"); - } - /* private String realm = "TestRealm"; public void startBasic(Scenario scenario, Handler handler) throws Exception @@ -51,23 +81,16 @@ public void startDigest(Scenario scenario, Handler handler) throws Exception private void start(Scenario scenario, Authenticator authenticator, Handler handler) throws Exception { server = new Server(); - File realmFile = MavenTestingUtils.getTestResourceFile("realm.properties"); - LoginService loginService = new HashLoginService(realm, realmFile.getAbsolutePath()); + Path realmFile = MavenTestingUtils.getTestResourcePath("realm.properties"); + LoginService loginService = new HashLoginService(realm, ResourceFactory.root().newResource(realmFile)); server.addBean(loginService); - ConstraintSecurityHandler securityHandler = new ConstraintSecurityHandler(); + SecurityHandler.PathMapped securityHandler = new SecurityHandler.PathMapped(); + Constraint constraint = new Constraint.Builder().authorization(Constraint.Authorization.ANY_USER).build(); + securityHandler.put("/secure", constraint); - Constraint constraint = new Constraint(); - constraint.setAuthenticate(true); - constraint.setRoles(new String[]{"**"}); //allow any authenticated user - ConstraintMapping mapping = new ConstraintMapping(); - mapping.setPathSpec("/secure"); - mapping.setConstraint(constraint); - - securityHandler.addConstraintMapping(mapping); securityHandler.setAuthenticator(authenticator); securityHandler.setLoginService(loginService); - securityHandler.setHandler(handler); start(scenario, securityHandler); } @@ -133,7 +156,7 @@ private void testAuthentication(Scenario scenario, Authentication authentication AuthenticationStore authenticationStore = client.getAuthenticationStore(); AtomicReference requests = new AtomicReference<>(new CountDownLatch(1)); - Request.Listener.Adapter requestListener = new Request.Listener.Adapter() + Request.Listener requestListener = new Request.Listener() { @Override public void onSuccess(Request request) @@ -141,7 +164,7 @@ public void onSuccess(Request request) requests.get().countDown(); } }; - client.getRequestListeners().add(requestListener); + client.getRequestListeners().addListener(requestListener); // Request without Authentication causes a 401 Request request = client.newRequest("localhost", connector.getLocalPort()).scheme(scenario.getScheme()).path("/secure"); @@ -149,12 +172,12 @@ public void onSuccess(Request request) assertNotNull(response); assertEquals(401, response.getStatus()); assertTrue(requests.get().await(5, TimeUnit.SECONDS)); - client.getRequestListeners().remove(requestListener); + client.getRequestListeners().removeListener(requestListener); authenticationStore.addAuthentication(authentication); requests.set(new CountDownLatch(2)); - requestListener = new Request.Listener.Adapter() + requestListener = new Request.Listener() { @Override public void onSuccess(Request request) @@ -162,7 +185,7 @@ public void onSuccess(Request request) requests.get().countDown(); } }; - client.getRequestListeners().add(requestListener); + client.getRequestListeners().addListener(requestListener); // Request with authentication causes a 401 (no previous successful authentication) + 200 request = client.newRequest("localhost", connector.getLocalPort()).scheme(scenario.getScheme()).path("/secure"); @@ -170,10 +193,10 @@ public void onSuccess(Request request) assertNotNull(response); assertEquals(200, response.getStatus()); assertTrue(requests.get().await(5, TimeUnit.SECONDS)); - client.getRequestListeners().remove(requestListener); + client.getRequestListeners().removeListener(requestListener); requests.set(new CountDownLatch(1)); - requestListener = new Request.Listener.Adapter() + requestListener = new Request.Listener() { @Override public void onSuccess(Request request) @@ -181,7 +204,7 @@ public void onSuccess(Request request) requests.get().countDown(); } }; - client.getRequestListeners().add(requestListener); + client.getRequestListeners().addListener(requestListener); // Further requests do not trigger 401 because there is a previous successful authentication // Remove existing header to be sure it's added by the implementation @@ -190,26 +213,31 @@ public void onSuccess(Request request) assertNotNull(response); assertEquals(200, response.getStatus()); assertTrue(requests.get().await(5, TimeUnit.SECONDS)); - client.getRequestListeners().remove(requestListener); + client.getRequestListeners().removeListener(requestListener); } @ParameterizedTest @ArgumentsSource(ScenarioProvider.class) public void testBasicAuthenticationThenRedirect(Scenario scenario) throws Exception { - startBasic(scenario, new EmptyServerHandler() + startBasic(scenario, new Handler.Abstract() { private final AtomicInteger requests = new AtomicInteger(); @Override - protected void service(String target, org.eclipse.jetty.server.Request jettyRequest, HttpServletRequest request, HttpServletResponse response) throws IOException + public boolean handle(org.eclipse.jetty.server.Request request, org.eclipse.jetty.server.Response response, Callback callback) { int r = requests.incrementAndGet(); if (r == 1) { - String path = request.getRequestURI() + "/" + r; - response.sendRedirect(URIUtil.newURI(scenario.getScheme(), request.getServerName(), request.getServerPort(), path, null)); + String location = request.getHttpURI().asString() + "/" + r; + org.eclipse.jetty.server.Response.sendRedirect(request, response, callback, location); } + else + { + callback.succeeded(); + } + return true; } }); @@ -217,7 +245,7 @@ protected void service(String target, org.eclipse.jetty.server.Request jettyRequ client.getAuthenticationStore().addAuthentication(new BasicAuthentication(uri, realm, "basic", "basic")); CountDownLatch requests = new CountDownLatch(3); - Request.Listener.Adapter requestListener = new Request.Listener.Adapter() + Request.Listener requestListener = new Request.Listener() { @Override public void onSuccess(Request request) @@ -225,7 +253,7 @@ public void onSuccess(Request request) requests.countDown(); } }; - client.getRequestListeners().add(requestListener); + client.getRequestListeners().addListener(requestListener); ContentResponse response = client.newRequest("localhost", connector.getLocalPort()) .scheme(scenario.getScheme()) @@ -235,20 +263,28 @@ public void onSuccess(Request request) assertNotNull(response); assertEquals(200, response.getStatus()); assertTrue(requests.await(5, TimeUnit.SECONDS)); - client.getRequestListeners().remove(requestListener); + client.getRequestListeners().removeListener(requestListener); } @ParameterizedTest @ArgumentsSource(ScenarioProvider.class) public void testRedirectThenBasicAuthentication(Scenario scenario) throws Exception { - startBasic(scenario, new EmptyServerHandler() + startBasic(scenario, new Handler.Abstract() { @Override - protected void service(String target, org.eclipse.jetty.server.Request jettyRequest, HttpServletRequest request, HttpServletResponse response) throws IOException + public boolean handle(org.eclipse.jetty.server.Request request, org.eclipse.jetty.server.Response response, Callback callback) { - if (request.getRequestURI().endsWith("/redirect")) - response.sendRedirect(URIUtil.newURI(scenario.getScheme(), request.getServerName(), request.getServerPort(), "/secure", null)); + if (org.eclipse.jetty.server.Request.getPathInContext(request).endsWith("/redirect")) + { + String location = HttpURI.build(request.getHttpURI()).path("/secure").asString(); + org.eclipse.jetty.server.Response.sendRedirect(request, response, callback, location); + } + else + { + callback.succeeded(); + } + return true; } }); @@ -256,7 +292,7 @@ protected void service(String target, org.eclipse.jetty.server.Request jettyRequ client.getAuthenticationStore().addAuthentication(new BasicAuthentication(uri, realm, "basic", "basic")); CountDownLatch requests = new CountDownLatch(3); - Request.Listener.Adapter requestListener = new Request.Listener.Adapter() + Request.Listener requestListener = new Request.Listener() { @Override public void onSuccess(Request request) @@ -264,7 +300,7 @@ public void onSuccess(Request request) requests.countDown(); } }; - client.getRequestListeners().add(requestListener); + client.getRequestListeners().addListener(requestListener); ContentResponse response = client.newRequest("localhost", connector.getLocalPort()) .scheme(scenario.getScheme()) @@ -274,7 +310,7 @@ public void onSuccess(Request request) assertNotNull(response); assertEquals(200, response.getStatus()); assertTrue(requests.await(5, TimeUnit.SECONDS)); - client.getRequestListeners().remove(requestListener); + client.getRequestListeners().removeListener(requestListener); } @ParameterizedTest @@ -284,7 +320,7 @@ public void testBasicAuthenticationWithAuthenticationRemoved(Scenario scenario) startBasic(scenario, new EmptyServerHandler()); AtomicReference requests = new AtomicReference<>(new CountDownLatch(2)); - Request.Listener.Adapter requestListener = new Request.Listener.Adapter() + Request.Listener requestListener = new Request.Listener() { @Override public void onSuccess(Request request) @@ -292,7 +328,7 @@ public void onSuccess(Request request) requests.get().countDown(); } }; - client.getRequestListeners().add(requestListener); + client.getRequestListeners().addListener(requestListener); AuthenticationStore authenticationStore = client.getAuthenticationStore(); URI uri = URI.create(scenario.getScheme() + "://localhost:" + connector.getLocalPort()); @@ -397,7 +433,7 @@ public void testPreemptedAuthentication(Scenario scenario) throws Exception authenticationStore.addAuthenticationResult(new BasicAuthentication.BasicResult(uri, "basic", "basic")); AtomicInteger requests = new AtomicInteger(); - client.getRequestListeners().add(new Request.Listener.Adapter() + client.getRequestListeners().addListener(new Request.Listener() { @Override public void onSuccess(Request request) @@ -429,14 +465,7 @@ public void testNonReproducibleContent(Scenario scenario) throws Exception CountDownLatch resultLatch = new CountDownLatch(1); byte[] data = new byte[]{'h', 'e', 'l', 'l', 'o'}; - AsyncRequestContent content = new AsyncRequestContent(ByteBuffer.wrap(data)) - { - @Override - public boolean isReproducible() - { - return false; - } - }; + AsyncRequestContent content = new AsyncRequestContent(ByteBuffer.wrap(data)); Request request = client.newRequest(uri) .path("/secure") .body(content); @@ -455,12 +484,13 @@ public boolean isReproducible() @ArgumentsSource(ScenarioProvider.class) public void testRequestFailsAfterResponse(Scenario scenario) throws Exception { - startBasic(scenario, new EmptyServerHandler() + startBasic(scenario, new Handler.Abstract() { @Override - protected void service(String target, org.eclipse.jetty.server.Request jettyRequest, HttpServletRequest request, HttpServletResponse response) throws IOException + public boolean handle(org.eclipse.jetty.server.Request request, org.eclipse.jetty.server.Response response, Callback callback) { - IO.readBytes(jettyRequest.getInputStream()); + Content.Source.consumeAll(request, callback); + return true; } }); @@ -469,10 +499,10 @@ protected void service(String target, org.eclipse.jetty.server.Request jettyRequ client.getProtocolHandlers().put(new WWWAuthenticationProtocolHandler(client) { @Override - public Listener getResponseListener() + public Response.Listener getResponseListener() { Response.Listener listener = super.getResponseListener(); - return new Listener.Adapter() + return new Response.Listener() { @Override public void onSuccess(Response response) @@ -500,11 +530,17 @@ public void onComplete(Result result) { switch (index) { - case 0: + case 0 -> + { return ByteBuffer.wrap(new byte[]{'h', 'e', 'l', 'l', 'o'}); - case 1: + } + case 1 -> + { return ByteBuffer.wrap(new byte[]{'w', 'o', 'r', 'l', 'd'}); - case 2: + } + case 2 -> + { + // Only fail the first exchange of the conversation. if (fail.compareAndSet(true, false)) { // Wait for the 401 response to arrive @@ -522,9 +558,8 @@ public void onComplete(Result result) { return null; } - - default: - throw new IllegalStateException(); + } + default -> throw new IllegalStateException(); } }); CountDownLatch resultLatch = new CountDownLatch(1); @@ -547,21 +582,23 @@ public void onComplete(Result result) public void testInfiniteAuthentication(Scenario scenario) throws Exception { String authType = "Authenticate"; - start(scenario, new EmptyServerHandler() + start(scenario, new Handler.Abstract() { @Override - protected void service(String target, org.eclipse.jetty.server.Request jettyRequest, HttpServletRequest request, HttpServletResponse response) + public boolean handle(org.eclipse.jetty.server.Request request, org.eclipse.jetty.server.Response response, Callback callback) { // Always reply with a 401 to see if the client // can handle an infinite authentication loop. response.setStatus(HttpStatus.UNAUTHORIZED_401); response.getHeaders().put(HttpHeader.WWW_AUTHENTICATE, authType); + callback.succeeded(); + return true; } }); AuthenticationStore authenticationStore = client.getAuthenticationStore(); URI uri = URI.create(scenario.getScheme() + "://localhost:" + connector.getLocalPort()); - authenticationStore.addAuthentication(new AbstractAuthentication(uri, Authentication.ANY_REALM) + authenticationStore.addAuthentication(new AbstractAuthentication(uri, ANY_REALM) { @Override public String getType() @@ -600,7 +637,7 @@ public void testTestHeaderInfoParsing() { AuthenticationProtocolHandler aph = new WWWAuthenticationProtocolHandler(client); - HeaderInfo headerInfo = aph.getHeaderInfo("Digest realm=\"thermostat\", qop=\"auth\", nonce=\"1523430383\"").get(0); + Authentication.HeaderInfo headerInfo = aph.getHeaderInfo("Digest realm=\"thermostat\", qop=\"auth\", nonce=\"1523430383\"").get(0); assertTrue(headerInfo.getType().equalsIgnoreCase("Digest")); assertEquals("auth", headerInfo.getParameter("qop")); assertEquals("thermostat", headerInfo.getParameter("realm")); @@ -625,10 +662,12 @@ public void testTestHeaderInfoParsing() assertEquals("1523430383", headerInfo.getParameter("nonce")); // test multiple authentications - List headerInfoList = aph.getHeaderInfo("Digest qop=\"auth\", realm=\"thermostat\", nonce=\"1523430383\", " + - "Digest realm=\"thermostat2\", qop=\"auth2\", nonce=\"4522530354\", " + - "Digest qop=\"auth3\", nonce=\"9523570528\", realm=\"thermostat3\", " + - "Digest qop=\"auth4\", nonce=\"3526435321\""); + List headerInfoList = aph.getHeaderInfo(""" + Digest qop="auth", realm="thermostat", nonce="1523430383",\ + Digest realm="thermostat2", qop="auth2", nonce="4522530354",\ + Digest qop="auth3", nonce="9523570528", realm="thermostat3",\ + Digest qop="auth4", nonce="3526435321"\ + """); assertTrue(headerInfoList.get(0).getType().equalsIgnoreCase("Digest")); assertEquals("auth", headerInfoList.get(0).getParameter("qop")); @@ -650,7 +689,7 @@ public void testTestHeaderInfoParsing() assertNull(headerInfoList.get(3).getParameter("realm")); assertEquals("3526435321", headerInfoList.get(3).getParameter("nonce")); - List headerInfos = aph.getHeaderInfo("Newauth realm=\"apps\", type=1, title=\"Login to \\\"apps\\\"\", Basic realm=\"simple\""); + List headerInfos = aph.getHeaderInfo("Newauth realm=\"apps\", type=1, title=\"Login to \\\"apps\\\"\", Basic realm=\"simple\""); assertTrue(headerInfos.get(0).getType().equalsIgnoreCase("Newauth")); assertEquals("apps", headerInfos.get(0).getParameter("realm")); assertEquals("1", headerInfos.get(0).getParameter("type")); @@ -666,11 +705,11 @@ public void testTestHeaderInfoParsingUnusualCases() { AuthenticationProtocolHandler aph = new WWWAuthenticationProtocolHandler(client); - HeaderInfo headerInfo = aph.getHeaderInfo("Scheme").get(0); + Authentication.HeaderInfo headerInfo = aph.getHeaderInfo("Scheme").get(0); assertTrue(headerInfo.getType().equalsIgnoreCase("Scheme")); assertNull(headerInfo.getParameter("realm")); - List headerInfos = aph.getHeaderInfo("Scheme1 , Scheme2 , Scheme3"); + List headerInfos = aph.getHeaderInfo("Scheme1 , Scheme2 , Scheme3"); assertEquals(3, headerInfos.size()); assertTrue(headerInfos.get(0).getType().equalsIgnoreCase("Scheme1")); assertTrue(headerInfos.get(1).getType().equalsIgnoreCase("Scheme2")); @@ -725,7 +764,7 @@ public void testTestHeaderInfoParsingUnusualCases() public void testEqualsInParam() { AuthenticationProtocolHandler aph = new WWWAuthenticationProtocolHandler(client); - HeaderInfo headerInfo; + Authentication.HeaderInfo headerInfo; headerInfo = aph.getHeaderInfo("Digest realm=\"=the=rmo=stat=\", qop=\"=a=u=t=h=\", nonce=\"=1523430383=\"").get(0); assertTrue(headerInfo.getType().equalsIgnoreCase("Digest")); @@ -734,7 +773,7 @@ public void testEqualsInParam() assertEquals("=1523430383=", headerInfo.getParameter("nonce")); // test multiple authentications - List headerInfoList = aph.getHeaderInfo("Digest qop=\"=au=th=\", realm=\"=ther=mostat=\", nonce=\"=152343=0383=\", " + + List headerInfoList = aph.getHeaderInfo("Digest qop=\"=au=th=\", realm=\"=ther=mostat=\", nonce=\"=152343=0383=\", " + "Digest realm=\"=thermostat2\", qop=\"=auth2\", nonce=\"=4522530354\", " + "Digest qop=\"auth3=\", nonce=\"9523570528=\", realm=\"thermostat3=\", "); @@ -758,63 +797,58 @@ public void testEqualsInParam() public void testSingleChallengeLooksLikeMultipleChallenges() { AuthenticationProtocolHandler aph = new WWWAuthenticationProtocolHandler(client); - List headerInfoList = aph.getHeaderInfo("Digest param=\",f \""); + List headerInfoList = aph.getHeaderInfo("Digest param=\",f \""); assertEquals(1, headerInfoList.size()); headerInfoList = aph.getHeaderInfo("Digest realm=\"thermostat\", qop=\",Digest realm=hello\", nonce=\"1523430383=\""); assertEquals(1, headerInfoList.size()); - HeaderInfo headerInfo = headerInfoList.get(0); + Authentication.HeaderInfo headerInfo = headerInfoList.get(0); assertTrue(headerInfo.getType().equalsIgnoreCase("Digest")); assertEquals(",Digest realm=hello", headerInfo.getParameter("qop")); assertEquals("thermostat", headerInfo.getParameter("realm")); assertEquals(headerInfo.getParameter("nonce"), "1523430383="); } - private static class GeneratingRequestContent extends AbstractRequestContent + private static class GeneratingRequestContent implements Request.Content { private final IntFunction generator; + private int index; private GeneratingRequestContent(IntFunction generator) { - super("application/octet-stream"); this.generator = generator; } @Override - public boolean isReproducible() + public boolean rewind() { + index = 0; return true; } @Override - protected Subscription newSubscription(Consumer consumer, boolean emitInitialContent) + public Content.Chunk read() { - return new SubscriptionImpl(consumer, emitInitialContent); + ByteBuffer buffer = generator.apply(index++); + boolean last = false; + if (buffer == null) + { + buffer = BufferUtil.EMPTY_BUFFER; + last = true; + } + return Content.Chunk.from(buffer, last); } - private class SubscriptionImpl extends AbstractSubscription + @Override + public void demand(Runnable demandCallback) { - private int index; - - public SubscriptionImpl(Consumer consumer, boolean emitInitialContent) - { - super(consumer, emitInitialContent); - } + demandCallback.run(); + } - @Override - protected boolean produceContent(Producer producer) - { - ByteBuffer buffer = generator.apply(index++); - boolean last = false; - if (buffer == null) - { - buffer = BufferUtil.EMPTY_BUFFER; - last = true; - } - return producer.produce(buffer, last, Callback.NOOP); - } + @Override + public void fail(Throwable failure) + { } } - */ } diff --git a/jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/NetworkTrafficListenerTest.java b/jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/NetworkTrafficListenerTest.java index 49ca046caa14..7daf294d1812 100644 --- a/jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/NetworkTrafficListenerTest.java +++ b/jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/NetworkTrafficListenerTest.java @@ -385,7 +385,7 @@ public void incoming(Socket socket, ByteBuffer bytes) ContentResponse response = client.newRequest("localhost", connector.getLocalPort()) .body(new FormRequestContent(fields)) .send(); - assertEquals(HttpStatus.FOUND_302, response.getStatus()); + assertEquals(HttpStatus.MOVED_TEMPORARILY_302, response.getStatus()); assertTrue(clientOutgoingLatch.await(1, TimeUnit.SECONDS)); assertTrue(serverIncomingLatch.await(1, TimeUnit.SECONDS)); diff --git a/jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/RequestListenersTest.java b/jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/RequestListenersTest.java new file mode 100644 index 000000000000..16d782335c89 --- /dev/null +++ b/jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/RequestListenersTest.java @@ -0,0 +1,112 @@ +// +// ======================================================================== +// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. +// +// This program and the accompanying materials are made available under the +// terms of the Eclipse Public License v. 2.0 which is available at +// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 +// which is available at https://www.apache.org/licenses/LICENSE-2.0. +// +// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 +// ======================================================================== +// + +package org.eclipse.jetty.client; + +import java.util.ArrayList; +import java.util.List; + +import org.hamcrest.Matchers; +import org.junit.jupiter.api.Test; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class RequestListenersTest +{ + @Test + public void testAddRemove() + { + RequestListeners listeners = new RequestListeners(); + + List events = new ArrayList<>(); + Request.Listener listener1 = new Request.Listener() + { + @Override + public void onQueued(Request request) + { + events.add("queued1"); + } + }; + listeners.addListener(listener1); + Request.Listener listener2 = new Request.Listener() + { + @Override + public void onQueued(Request request) + { + events.add("queued2"); + } + }; + listeners.addListener(listener2); + Request.Listener listener3 = new Request.Listener() + { + @Override + public void onQueued(Request request) + { + events.add("queued3"); + } + }; + listeners.addListener(listener3); + Request.Listener listener4 = new Request.Listener() + { + @Override + public void onQueued(Request request) + { + events.add("queued4"); + } + }; + listeners.addListener(listener4); + + listeners.getQueuedListener().onQueued(null); + assertEquals(4, events.size()); + assertThat(events, Matchers.contains("queued1", "queued2", "queued3", "queued4")); + events.clear(); + + boolean removed = listeners.removeListener(listener2); + assertTrue(removed); + + listeners.getQueuedListener().onQueued(null); + assertEquals(3, events.size()); + assertThat(events, Matchers.contains("queued1", "queued3", "queued4")); + events.clear(); + + removed = listeners.removeListener(null); + assertFalse(removed); + + removed = listeners.removeListener(new Request.Listener() {}); + assertFalse(removed); + + removed = listeners.removeListener(listener3); + assertTrue(removed); + + listeners.getQueuedListener().onQueued(null); + assertEquals(2, events.size()); + assertThat(events, Matchers.contains("queued1", "queued4")); + events.clear(); + + removed = listeners.removeListener(listener4); + assertTrue(removed); + + listeners.getQueuedListener().onQueued(null); + assertEquals(1, events.size()); + assertThat(events, Matchers.contains("queued1")); + events.clear(); + + removed = listeners.removeListener(listener1); + assertTrue(removed); + assertNull(listeners.getQueuedListener()); + } +} diff --git a/jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/util/SPNEGOAuthenticationTest.java b/jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/util/SPNEGOAuthenticationTest.java index 59bd07a66519..9bc891006888 100644 --- a/jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/util/SPNEGOAuthenticationTest.java +++ b/jetty-core/jetty-client/src/test/java/org/eclipse/jetty/client/util/SPNEGOAuthenticationTest.java @@ -13,23 +13,52 @@ package org.eclipse.jetty.client.util; +import java.io.ByteArrayInputStream; +import java.net.URI; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.time.Duration; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.stream.Collectors; + +import org.apache.kerby.kerberos.kerb.server.SimpleKdcServer; import org.eclipse.jetty.client.AbstractHttpClientServerTest; -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Test; +import org.eclipse.jetty.client.Authentication; +import org.eclipse.jetty.client.AuthenticationStore; +import org.eclipse.jetty.client.ContentResponse; +import org.eclipse.jetty.client.EmptyServerHandler; +import org.eclipse.jetty.client.InputStreamRequestContent; +import org.eclipse.jetty.client.Request; +import org.eclipse.jetty.client.Response; +import org.eclipse.jetty.client.SPNEGOAuthentication; +import org.eclipse.jetty.io.Content; +import org.eclipse.jetty.security.Constraint; +import org.eclipse.jetty.security.HashLoginService; +import org.eclipse.jetty.security.SPNEGOLoginService; +import org.eclipse.jetty.security.SecurityHandler; +import org.eclipse.jetty.security.authentication.SPNEGOAuthenticator; +import org.eclipse.jetty.server.Handler; +import org.eclipse.jetty.server.Server; +import org.eclipse.jetty.session.SessionHandler; +import org.eclipse.jetty.toolchain.test.MavenTestingUtils; +import org.eclipse.jetty.util.Callback; +import org.eclipse.jetty.util.IO; +import org.eclipse.jetty.util.resource.ResourceFactory; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ArgumentsSource; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; -import static org.junit.jupiter.api.Assertions.fail; - -// TODO -@Disabled public class SPNEGOAuthenticationTest extends AbstractHttpClientServerTest { - @Test - public void testNeedToUpdateThisTest() - { - fail("This test needs to be updated to use Core version of SPNEGO (when available)"); - } - - /* private static final Logger LOG = LoggerFactory.getLogger(SPNEGOAuthenticationTest.class); static @@ -43,17 +72,17 @@ public void testNeedToUpdateThisTest() } } - private Path testDirPath = MavenTestingUtils.getTargetTestingPath(SPNEGOAuthenticationTest.class.getSimpleName()); - private String clientName = "spnego_client"; - private String clientPassword = "spnego_client_pwd"; - private String serviceName = "srvc"; - private String serviceHost = "localhost"; - private String realm = "jetty.org"; - private Path realmPropsPath = MavenTestingUtils.getTestResourcePath("realm.properties"); - private Path serviceKeyTabPath = testDirPath.resolve("service.keytab"); - private Path clientKeyTabPath = testDirPath.resolve("client.keytab"); + private final Path testDirPath = MavenTestingUtils.getTargetTestingPath(SPNEGOAuthenticationTest.class.getSimpleName()); + private final String clientName = "spnego_client"; + private final String clientPassword = "spnego_client_pwd"; + private final String serviceName = "srvc"; + private final String serviceHost = "localhost"; + private final String realm = "jetty.org"; + private final Path realmPropsPath = MavenTestingUtils.getTestResourcePath("realm.properties"); + private final Path serviceKeyTabPath = testDirPath.resolve("service.keytab"); + private final Path clientKeyTabPath = testDirPath.resolve("client.keytab"); private SimpleKdcServer kdc; - private ConfigurableSpnegoAuthenticator authenticator; + private SPNEGOAuthenticator authenticator; @BeforeEach public void prepare() throws Exception @@ -94,26 +123,19 @@ public void dispose() throws Exception private void startSPNEGO(Scenario scenario, Handler handler) throws Exception { server = new Server(); - server.setSessionIdManager(new DefaultSessionIdManager(server)); - HashLoginService authorizationService = new HashLoginService(realm, realmPropsPath.toString()); - ConfigurableSpnegoLoginService loginService = new ConfigurableSpnegoLoginService(realm, AuthorizationService.from(authorizationService, "")); - loginService.addBean(authorizationService); - loginService.setKeyTabPath(serviceKeyTabPath); - loginService.setServiceName(serviceName); - loginService.setHostName(serviceHost); - server.addBean(loginService); - - ConstraintSecurityHandler securityHandler = new ConstraintSecurityHandler(); - Constraint constraint = new Constraint(); - constraint.setAuthenticate(true); - constraint.setRoles(new String[]{"**"}); //allow any authenticated user - ConstraintMapping mapping = new ConstraintMapping(); - mapping.setPathSpec("/secure"); - mapping.setConstraint(constraint); - securityHandler.addConstraintMapping(mapping); - authenticator = new ConfigurableSpnegoAuthenticator(); + HashLoginService hashLoginService = new HashLoginService(realm, ResourceFactory.of(server).newResource(realmPropsPath)); + SPNEGOLoginService spnegoLoginService = new SPNEGOLoginService(realm, hashLoginService); + spnegoLoginService.setKeyTabPath(serviceKeyTabPath); + spnegoLoginService.setServiceName(serviceName); + spnegoLoginService.setHostName(serviceHost); + + SecurityHandler.PathMapped securityHandler = new SecurityHandler.PathMapped(); + Constraint constraint = new Constraint.Builder().authorization(Constraint.Authorization.ANY_USER).build(); + securityHandler.put("/secure", constraint); + + authenticator = new SPNEGOAuthenticator(); securityHandler.setAuthenticator(authenticator); - securityHandler.setLoginService(loginService); + securityHandler.setLoginService(spnegoLoginService); securityHandler.setHandler(handler); SessionHandler sessionHandler = new SessionHandler(); @@ -169,7 +191,7 @@ private void testSPNEGOAuthentication(Scenario scenario, boolean useKeyTab) thro assertNull(authnResult); AtomicInteger requests = new AtomicInteger(); - client.getRequestListeners().add(new Request.Listener.Adapter() + client.getRequestListeners().addListener(new Request.Listener() { @Override public void onSuccess(Request request) @@ -191,12 +213,13 @@ public void onSuccess(Request request) @ArgumentsSource(ScenarioProvider.class) public void testAuthenticationExpiration(Scenario scenario) throws Exception { - startSPNEGO(scenario, new EmptyServerHandler() + startSPNEGO(scenario, new Handler.Abstract() { @Override - protected void service(String target, org.eclipse.jetty.server.Request jettyRequest, HttpServletRequest request, HttpServletResponse response) throws IOException + public boolean handle(org.eclipse.jetty.server.Request request, org.eclipse.jetty.server.Response response, Callback callback) throws Exception { - IO.readBytes(request.getInputStream()); + Content.Source.consumeAll(request, callback); + return true; } }); long timeout = 1000; @@ -213,7 +236,7 @@ protected void service(String target, org.eclipse.jetty.server.Request jettyRequ authenticationStore.addAuthentication(authentication); AtomicInteger requests = new AtomicInteger(); - client.getRequestListeners().add(new Request.Listener.Adapter() + client.getRequestListeners().addListener(new Request.Listener() { @Override public void onSuccess(Request request) @@ -256,5 +279,4 @@ public void onSuccess(Request request) // Authentication expired, but POSTs are allowed. assertEquals(1, requests.get()); } - */ } diff --git a/jetty-core/jetty-ee/pom.xml b/jetty-core/jetty-ee/pom.xml index 1b57a02231f8..be7471ef83f2 100644 --- a/jetty-core/jetty-ee/pom.xml +++ b/jetty-core/jetty-ee/pom.xml @@ -33,6 +33,10 @@ org.eclipse.jetty jetty-io + + org.eclipse.jetty + jetty-security + org.eclipse.jetty jetty-jmx diff --git a/jetty-core/jetty-ee/src/main/java/module-info.java b/jetty-core/jetty-ee/src/main/java/module-info.java index 55903c1eb463..603376945d79 100644 --- a/jetty-core/jetty-ee/src/main/java/module-info.java +++ b/jetty-core/jetty-ee/src/main/java/module-info.java @@ -16,9 +16,11 @@ requires org.slf4j; requires transitive org.eclipse.jetty.io; + requires transitive org.eclipse.jetty.security; // Only required if using JMX. requires static org.eclipse.jetty.jmx; exports org.eclipse.jetty.ee; + exports org.eclipse.jetty.ee.security; } diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/ConstraintAware.java b/jetty-core/jetty-ee/src/main/java/org/eclipse/jetty/ee/security/ConstraintAware.java similarity index 94% rename from jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/ConstraintAware.java rename to jetty-core/jetty-ee/src/main/java/org/eclipse/jetty/ee/security/ConstraintAware.java index 6f5f3a4576a2..bbece95c1980 100644 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/ConstraintAware.java +++ b/jetty-core/jetty-ee/src/main/java/org/eclipse/jetty/ee/security/ConstraintAware.java @@ -11,7 +11,7 @@ // ======================================================================== // -package org.eclipse.jetty.ee10.servlet.security; +package org.eclipse.jetty.ee.security; import java.util.List; import java.util.Set; @@ -20,7 +20,7 @@ public interface ConstraintAware { List getConstraintMappings(); - Set getRoles(); + Set getKnownRoles(); /** * Set Constraint Mappings and roles. @@ -45,7 +45,7 @@ public interface ConstraintAware * * @param role the role */ - void addRole(String role); + void addKnownRole(String role); /** * See Servlet Spec 31, sec 13.8.4, pg 145 diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/ConstraintMapping.java b/jetty-core/jetty-ee/src/main/java/org/eclipse/jetty/ee/security/ConstraintMapping.java similarity index 80% rename from jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/ConstraintMapping.java rename to jetty-core/jetty-ee/src/main/java/org/eclipse/jetty/ee/security/ConstraintMapping.java index 5e2c7ce77128..b29b8c7ac7f0 100644 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/ConstraintMapping.java +++ b/jetty-core/jetty-ee/src/main/java/org/eclipse/jetty/ee/security/ConstraintMapping.java @@ -11,17 +11,17 @@ // ======================================================================== // -package org.eclipse.jetty.ee10.servlet.security; +package org.eclipse.jetty.ee.security; -import org.eclipse.jetty.util.security.Constraint; +import java.util.Arrays; + +import org.eclipse.jetty.security.Constraint; public class ConstraintMapping { String _method; String[] _methodOmissions; - String _pathSpec; - Constraint _constraint; /** @@ -84,4 +84,16 @@ public String[] getMethodOmissions() { return _methodOmissions; } + + @Override + public String toString() + { + return "%s@%x{%s,%s %s -> %s}".formatted( + getClass().getSimpleName(), + hashCode(), + _method, + _methodOmissions == null ? null : Arrays.asList(_methodOmissions), + _pathSpec, + _constraint); + } } diff --git a/jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/HttpURI.java b/jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/HttpURI.java index 7511282ad36d..b8fdb177a51b 100644 --- a/jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/HttpURI.java +++ b/jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/HttpURI.java @@ -13,6 +13,8 @@ package org.eclipse.jetty.http; +import java.io.Serial; +import java.io.Serializable; import java.net.URI; import java.net.URISyntaxException; import java.util.Collection; @@ -266,8 +268,11 @@ default URI toURI() } } - class Immutable implements HttpURI + class Immutable implements HttpURI, Serializable { + @Serial + private static final long serialVersionUID = 2245620284548399386L; + private final String _scheme; private final String _user; private final String _host; diff --git a/jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/pathmap/AbstractPathSpec.java b/jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/pathmap/AbstractPathSpec.java index 4a310124f1e1..6eca00aa5629 100644 --- a/jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/pathmap/AbstractPathSpec.java +++ b/jetty-core/jetty-http/src/main/java/org/eclipse/jetty/http/pathmap/AbstractPathSpec.java @@ -61,6 +61,6 @@ public final int hashCode() @Override public String toString() { - return String.format("%s@%s{%s}", getClass().getSimpleName(), Integer.toHexString(hashCode()), getDeclaration()); + return String.format("%s@%s{%s,%s}", getClass().getSimpleName(), Integer.toHexString(hashCode()), getGroup(), getDeclaration()); } } diff --git a/jetty-core/jetty-http/src/test/java/org/eclipse/jetty/http/HttpParserTest.java b/jetty-core/jetty-http/src/test/java/org/eclipse/jetty/http/HttpParserTest.java index c75df3599b24..fed4e628d42a 100644 --- a/jetty-core/jetty-http/src/test/java/org/eclipse/jetty/http/HttpParserTest.java +++ b/jetty-core/jetty-http/src/test/java/org/eclipse/jetty/http/HttpParserTest.java @@ -233,6 +233,21 @@ public void testLineParse4(String eoln) assertEquals(-1, _headers); } + @ParameterizedTest + @ValueSource(strings = {"\r\n", "\n"}) + public void testLineParse5(String eoln) + { + ByteBuffer buffer = BufferUtil.toBuffer("GET /ctx/testLoginPage;jsessionid=123456789;other HTTP/1.0" + eoln + eoln, StandardCharsets.UTF_8); + + HttpParser.RequestHandler handler = new Handler(); + HttpParser parser = new HttpParser(handler); + parseAll(parser, buffer); + assertEquals("GET", _methodOrVersion); + assertEquals("/ctx/testLoginPage;jsessionid=123456789;other", _uriOrStatus); + assertEquals("HTTP/1.0", _versionOrReason); + assertEquals(-1, _headers); + } + @ParameterizedTest @ValueSource(strings = {"\r\n", "\n"}) public void testLongURLParse(String eoln) diff --git a/jetty-core/jetty-http/src/test/java/org/eclipse/jetty/http/pathmap/PathMappingsTest.java b/jetty-core/jetty-http/src/test/java/org/eclipse/jetty/http/pathmap/PathMappingsTest.java index 55676bd15db9..702863561f0a 100644 --- a/jetty-core/jetty-http/src/test/java/org/eclipse/jetty/http/pathmap/PathMappingsTest.java +++ b/jetty-core/jetty-http/src/test/java/org/eclipse/jetty/http/pathmap/PathMappingsTest.java @@ -24,6 +24,7 @@ import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.contains; import static org.hamcrest.Matchers.containsInAnyOrder; import static org.hamcrest.Matchers.instanceOf; import static org.hamcrest.Matchers.notNullValue; @@ -594,4 +595,25 @@ public void testAsMap() )); } + @Test + public void testMappingsOrder() + { + PathMappings p = new PathMappings<>(); + p.put("/foo/*", "foo"); + p.put("*.txt", "txt"); + p.put("/foo/bar/bob/*", "foobarbob"); + p.put("*.thing.txt", "thingtxt"); + p.put("/", "default"); + p.put("/foo/bar/*", "foobar"); + + assertThat(p.getMatches("/foo/bar/bob/some.thing.txt").stream().map(MappedResource::getResource).toList(), + contains( + "foobarbob", + "foobar", + "foo", + "thingtxt", + "txt", + "default" + )); + } } diff --git a/jetty-ee10/jetty-ee10-openid/pom.xml b/jetty-core/jetty-openid/pom.xml similarity index 83% rename from jetty-ee10/jetty-ee10-openid/pom.xml rename to jetty-core/jetty-openid/pom.xml index 0f8d611bbab5..57d444db8761 100644 --- a/jetty-ee10/jetty-ee10-openid/pom.xml +++ b/jetty-core/jetty-openid/pom.xml @@ -1,14 +1,14 @@ - org.eclipse.jetty.ee10 - jetty-ee10 + org.eclipse.jetty + jetty-core 12.0.0-SNAPSHOT 4.0.0 - jetty-ee10-openid + jetty-openid EE10 :: OpenID - Jetty OpenID Connect infrastructure + Jetty OpenID Connect Infrastructure ${project.groupId}.openid @@ -45,11 +45,11 @@ org.eclipse.jetty - jetty-client + jetty-security - org.eclipse.jetty.ee10 - jetty-ee10-servlet + org.eclipse.jetty + jetty-client org.eclipse.jetty @@ -59,6 +59,11 @@ org.slf4j slf4j-api + + org.eclipse.jetty + jetty-session + test + org.eclipse.jetty jetty-slf4j-impl diff --git a/jetty-ee10/jetty-ee10-openid/src/main/config/etc/jetty-ee10-openid.xml b/jetty-core/jetty-openid/src/main/config/etc/jetty-openid.xml similarity index 89% rename from jetty-ee10/jetty-ee10-openid/src/main/config/etc/jetty-ee10-openid.xml rename to jetty-core/jetty-openid/src/main/config/etc/jetty-openid.xml index b61b799e28a1..c681bf26e1c9 100644 --- a/jetty-ee10/jetty-ee10-openid/src/main/config/etc/jetty-ee10-openid.xml +++ b/jetty-core/jetty-openid/src/main/config/etc/jetty-openid.xml @@ -27,13 +27,13 @@ - + - + diff --git a/jetty-ee10/jetty-ee10-openid/src/main/config/modules/ee10-openid.mod b/jetty-core/jetty-openid/src/main/config/modules/openid.mod similarity index 80% rename from jetty-ee10/jetty-ee10-openid/src/main/config/modules/ee10-openid.mod rename to jetty-core/jetty-openid/src/main/config/modules/openid.mod index aa1a511c3d58..c61875abeea8 100644 --- a/jetty-ee10/jetty-ee10-openid/src/main/config/modules/ee10-openid.mod +++ b/jetty-core/jetty-openid/src/main/config/modules/openid.mod @@ -3,23 +3,20 @@ [description] Adds OpenId Connect authentication to the server. -[environment] -ee10 - [depend] -ee10-security +security client [lib] lib/jetty-util-ajax-${jetty.version}.jar -lib/jetty-ee10-openid-${jetty.version}.jar +lib/jetty-openid-${jetty.version}.jar [files] -basehome:modules/openid/jetty-ee10-openid-baseloginservice.xml|etc/jetty-ee10-openid-baseloginservice.xml +basehome:modules/openid/jetty-openid-baseloginservice.xml|etc/jetty-openid-baseloginservice.xml [xml] -etc/jetty-ee10-openid-baseloginservice.xml -etc/jetty-ee10-openid.xml +etc/jetty-openid-baseloginservice.xml +etc/jetty-openid.xml [ini-template] ## The OpenID Identity Provider's issuer ID (the entire URL *before* ".well-known/openid-configuration") @@ -47,7 +44,7 @@ etc/jetty-ee10-openid.xml # jetty.openid.sslContextFactory.trustAll=false ## What authentication method to use with the Token Endpoint (client_secret_post, client_secret_basic). -# jetty.openid.authMethod=client_secret_post +# jetty.openid.authenticationMethod=client_secret_post ## Whether the user should be logged out after the idToken expires. # jetty.openid.logoutWhenIdTokenIsExpired=false \ No newline at end of file diff --git a/jetty-ee10/jetty-ee10-openid/src/main/config/modules/openid/jetty-ee10-openid-baseloginservice.xml b/jetty-core/jetty-openid/src/main/config/modules/openid/jetty-openid-baseloginservice.xml similarity index 81% rename from jetty-ee10/jetty-ee10-openid/src/main/config/modules/openid/jetty-ee10-openid-baseloginservice.xml rename to jetty-core/jetty-openid/src/main/config/modules/openid/jetty-openid-baseloginservice.xml index ed6e703732f4..ab7be92e0caa 100644 --- a/jetty-ee10/jetty-ee10-openid/src/main/config/modules/openid/jetty-ee10-openid-baseloginservice.xml +++ b/jetty-core/jetty-openid/src/main/config/modules/openid/jetty-openid-baseloginservice.xml @@ -2,7 +2,7 @@ - - org.apache.maven.plugins - maven-source-plugin - - - org.apache.maven.plugins - maven-surefire-plugin - - false - false - --add-opens java.base/sun.security.x509=ALL-UNNAMED --add-opens java.base/sun.security.util=ALL-UNNAMED - - - - - - - - org.eclipse.jetty.ee10 - jetty-ee10-servlet - - - org.slf4j - slf4j-api - - - org.eclipse.jetty - jetty-slf4j-impl - test - - - org.eclipse.jetty.toolchain - jetty-test-helper - test - - - org.apache.directory.server - apacheds-test-framework - ${apacheds.version} - test - - - junit - junit - - - - org.apache.directory.shared - shared-ldap-schema - - - org.apache.directory.api - api-ldap-schema-data - - - - - org.apache.directory.server - apacheds-server-integ - ${apacheds.version} - test - - - - org.apache.directory.shared - shared-ldap-schema - - - org.apache.directory.api - api-ldap-schema-data - - - - - org.apache.directory.server - apacheds-core-integ - ${apacheds.version} - test - - - - org.apache.directory.shared - shared-ldap-schema - - - org.apache.directory.api - api-ldap-schema-data - - - - - org.apache.directory.api - api-ldap-schema-data - ${apache.directory.api.version} - test - - - org.apache.directory.api - api-ldap-model - ${apache.directory.api.version} - - - org.apache.directory.api - api-util - ${apache.directory.api.version} - - - org.apache.directory.api - api-asn1-api - ${apache.directory.api.version} - - - org.apache.mina - mina-core - ${mina.core.version} - - - - org.junit.vintage - junit-vintage-engine - ${junit.version} - test - - - diff --git a/jetty-ee10/jetty-ee10-jaas/src/main/config/etc/jetty-ee10-jaas.xml b/jetty-ee10/jetty-ee10-jaas/src/main/config/etc/jetty-ee10-jaas.xml deleted file mode 100644 index 881b23292a05..000000000000 --- a/jetty-ee10/jetty-ee10-jaas/src/main/config/etc/jetty-ee10-jaas.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - java.security.auth.login.config - - - - - - - - - diff --git a/jetty-ee10/jetty-ee10-jaas/src/main/config/modules/ee10-jaas.mod b/jetty-ee10/jetty-ee10-jaas/src/main/config/modules/ee10-jaas.mod deleted file mode 100644 index ecf068661b1a..000000000000 --- a/jetty-ee10/jetty-ee10-jaas/src/main/config/modules/ee10-jaas.mod +++ /dev/null @@ -1,21 +0,0 @@ -# DO NOT EDIT - See: https://www.eclipse.org/jetty/documentation/current/startup-modules.html - -[description] -Enables JAAS for deployed web applications. - -[environment] -ee10 - -[depend] -server - -[lib] -lib/jetty-ee10-jaas-${jetty.version}.jar - -[xml] -etc/jetty-ee10-jaas.xml - -[ini-template] -## The file location (relative to $jetty.base) for the -## JAAS "java.security.auth.login.config" system property -# jetty.jaas.login.conf=etc/login.conf diff --git a/jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/JAASLoginService.java b/jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/JAASLoginService.java deleted file mode 100644 index 622b3568455c..000000000000 --- a/jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/JAASLoginService.java +++ /dev/null @@ -1,309 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.jaas; - -import java.io.IOException; -import java.security.Principal; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; -import javax.security.auth.Subject; -import javax.security.auth.callback.Callback; -import javax.security.auth.callback.CallbackHandler; -import javax.security.auth.callback.NameCallback; -import javax.security.auth.callback.UnsupportedCallbackException; -import javax.security.auth.login.Configuration; -import javax.security.auth.login.FailedLoginException; -import javax.security.auth.login.LoginContext; -import javax.security.auth.login.LoginException; - -import jakarta.servlet.ServletRequest; -import org.eclipse.jetty.ee10.jaas.callback.DefaultCallbackHandler; -import org.eclipse.jetty.ee10.servlet.ServletContextRequest; -import org.eclipse.jetty.ee10.servlet.security.DefaultIdentityService; -import org.eclipse.jetty.ee10.servlet.security.IdentityService; -import org.eclipse.jetty.ee10.servlet.security.LoginService; -import org.eclipse.jetty.ee10.servlet.security.UserIdentity; -import org.eclipse.jetty.util.ArrayUtil; -import org.eclipse.jetty.util.Loader; -import org.eclipse.jetty.util.component.ContainerLifeCycle; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * JAASLoginService - * - * - * Implementation of jetty's LoginService that works with JAAS for - * authorization and authentication. - */ -public class JAASLoginService extends ContainerLifeCycle implements LoginService -{ - private static final Logger LOG = LoggerFactory.getLogger(JAASLoginService.class); - - public static final String DEFAULT_ROLE_CLASS_NAME = "org.eclipse.jetty.ee10.jaas.JAASRole"; - public static final String[] DEFAULT_ROLE_CLASS_NAMES = {DEFAULT_ROLE_CLASS_NAME}; - public static final ThreadLocal INSTANCE = new ThreadLocal<>(); - - protected String[] _roleClassNames = DEFAULT_ROLE_CLASS_NAMES; - protected String _callbackHandlerClass; - protected String _realmName; - protected String _loginModuleName; - protected JAASUserPrincipal _defaultUser = new JAASUserPrincipal(null, null, null); - protected IdentityService _identityService; - protected Configuration _configuration; - - public JAASLoginService() - { - } - - /** - * @param name the name of the realm - */ - public JAASLoginService(String name) - { - this(); - _realmName = name; - _loginModuleName = name; - } - - /** - * Get the name of the realm. - * - * @return name or null if not set. - */ - @Override - public String getName() - { - return _realmName; - } - - /** - * Set the name of the realm - * - * @param name a String value - */ - public void setName(String name) - { - _realmName = name; - } - - /** - * @return the configuration - */ - public Configuration getConfiguration() - { - return _configuration; - } - - /** - * @param configuration the configuration to set - */ - public void setConfiguration(Configuration configuration) - { - _configuration = configuration; - } - - /** - * Get the identityService. - * - * @return the identityService - */ - @Override - public IdentityService getIdentityService() - { - return _identityService; - } - - /** - * Set the identityService. - * - * @param identityService the identityService to set - */ - @Override - public void setIdentityService(IdentityService identityService) - { - _identityService = identityService; - } - - /** - * Set the name to use to index into the config - * file of LoginModules. - * - * @param name a String value - */ - public void setLoginModuleName(String name) - { - _loginModuleName = name; - } - - public void setCallbackHandlerClass(String classname) - { - _callbackHandlerClass = classname; - } - - public void setRoleClassNames(String[] classnames) - { - if (classnames == null || classnames.length == 0) - { - _roleClassNames = DEFAULT_ROLE_CLASS_NAMES; - return; - } - - _roleClassNames = ArrayUtil.addToArray(classnames, DEFAULT_ROLE_CLASS_NAME, String.class); - } - - public String[] getRoleClassNames() - { - return _roleClassNames; - } - - @Override - protected void doStart() throws Exception - { - if (_identityService == null) - _identityService = new DefaultIdentityService(); - addBean(new PropertyUserStoreManager()); - super.doStart(); - } - - @Override - public UserIdentity login(final String username, final Object credentials, final ServletRequest request) - { - try - { - CallbackHandler callbackHandler = null; - if (_callbackHandlerClass == null) - callbackHandler = new DefaultCallbackHandler(); - else - { - Class clazz = Loader.loadClass(_callbackHandlerClass); - callbackHandler = (CallbackHandler)clazz.getDeclaredConstructor().newInstance(); - } - - if (callbackHandler instanceof DefaultCallbackHandler) - { - DefaultCallbackHandler dch = (DefaultCallbackHandler)callbackHandler; - dch.setRequest(ServletContextRequest.getServletContextRequest(request)); - dch.setCredential(credentials); - dch.setUserName(username); - } - - //set up the login context - Subject subject = new Subject(); - INSTANCE.set(this); - LoginContext loginContext = - (_configuration == null ? new LoginContext(_loginModuleName, subject, callbackHandler) - : new LoginContext(_loginModuleName, subject, callbackHandler, _configuration)); - - loginContext.login(); - - //login success - JAASUserPrincipal userPrincipal = new JAASUserPrincipal(getUserName(callbackHandler), subject, loginContext); - subject.getPrincipals().add(userPrincipal); - - return _identityService.newUserIdentity(subject, userPrincipal, getGroups(subject)); - } - catch (FailedLoginException e) - { - if (LOG.isDebugEnabled()) - LOG.debug("Login failed", e); - } - catch (Exception e) - { - if (LOG.isDebugEnabled()) - LOG.debug("Login error", e); - } - finally - { - INSTANCE.remove(); - } - - return null; - } - - @Override - public boolean validate(UserIdentity user) - { - // TODO optionally check user is still valid - return true; - } - - private String getUserName(CallbackHandler callbackHandler) throws IOException, UnsupportedCallbackException - { - NameCallback nameCallback = new NameCallback("foo"); - callbackHandler.handle(new Callback[]{nameCallback}); - return nameCallback.getName(); - } - - @Override - public void logout(UserIdentity user) - { - Set userPrincipals = user.getSubject().getPrincipals(JAASUserPrincipal.class); - LoginContext loginContext = userPrincipals.iterator().next().getLoginContext(); - try - { - loginContext.logout(); - } - catch (LoginException e) - { - LOG.warn("Failed to logout {}", user, e); - } - } - - /** - * Get all of the groups for the user. - * - * @param subject the Subject representing the user - * @return all the names of groups that the user is in, or 0 length array if none - */ - protected String[] getGroups(Subject subject) - { - Collection groups = new LinkedHashSet<>(); - for (Principal principal : subject.getPrincipals()) - { - if (isRoleClass(principal.getClass(), Arrays.asList(getRoleClassNames()))) - groups.add(principal.getName()); - } - - return groups.toArray(new String[groups.size()]); - } - - /** - * Check whether the class, its superclasses or any interfaces they implement - * is one of the classes that represents a role. - * - * @param clazz the class to check - * @param roleClassNames the list of classnames that represent roles - * @return true if the class is a role class - */ - private static boolean isRoleClass(Class clazz, List roleClassNames) - { - Class c = clazz; - - //add the class, its interfaces and superclasses to the list to test - List classnames = new ArrayList<>(); - while (c != null) - { - classnames.add(c.getName()); - Arrays.stream(c.getInterfaces()).map(Class::getName).forEach(classnames::add); - c = c.getSuperclass(); - } - - return roleClassNames.stream().anyMatch(classnames::contains); - } -} diff --git a/jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/JAASRole.java b/jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/JAASRole.java deleted file mode 100644 index 49090b77480c..000000000000 --- a/jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/JAASRole.java +++ /dev/null @@ -1,33 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.jaas; - -public class JAASRole extends JAASPrincipal -{ - private static final long serialVersionUID = 3465114254970134526L; - - public JAASRole(String name) - { - super(name); - } - - @Override - public boolean equals(Object o) - { - if (!(o instanceof JAASRole)) - return false; - - return getName().equals(((JAASRole)o).getName()); - } -} diff --git a/jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/JAASUserPrincipal.java b/jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/JAASUserPrincipal.java deleted file mode 100644 index 15514f0bf8cd..000000000000 --- a/jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/JAASUserPrincipal.java +++ /dev/null @@ -1,68 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.jaas; - -import java.security.Principal; -import javax.security.auth.Subject; -import javax.security.auth.login.LoginContext; - -/** - * JAASUserPrincipal - *

- * Implements the JAAS version of the - * org.eclipse.jetty.security.UserPrincipal interface. - */ -public class JAASUserPrincipal implements Principal -{ - private final String _name; - private final Subject _subject; - private final LoginContext _loginContext; - - public JAASUserPrincipal(String name, Subject subject, LoginContext loginContext) - { - this._name = name; - this._subject = subject; - this._loginContext = loginContext; - } - - /** - * Get the name identifying the user - */ - @Override - public String getName() - { - return _name; - } - - /** - * Provide access to the Subject - * - * @return subject - */ - public Subject getSubject() - { - return this._subject; - } - - LoginContext getLoginContext() - { - return this._loginContext; - } - - @Override - public String toString() - { - return getName(); - } -} diff --git a/jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/PropertyUserStoreManager.java b/jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/PropertyUserStoreManager.java deleted file mode 100644 index 40b92b64bbac..000000000000 --- a/jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/PropertyUserStoreManager.java +++ /dev/null @@ -1,94 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.jaas; - -import java.util.HashMap; -import java.util.Map; -import java.util.Objects; - -import org.eclipse.jetty.ee10.servlet.security.PropertyUserStore; -import org.eclipse.jetty.util.component.AbstractLifeCycle; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * PropertyUserStoreManager - * - * Maintains a map of PropertyUserStores, keyed off the location of the property file containing - * the authentication and authorization information. - * - * This class is used to enable the PropertyUserStores to be cached and shared. This is essential - * for the PropertyFileLoginModules, whose lifecycle is controlled by the JAAS api and instantiated - * afresh whenever a user needs to be authenticated. Without this class, every PropertyFileLoginModule - * instantiation would re-read and reload in all the user information just to authenticate a single user. - */ -public class PropertyUserStoreManager extends AbstractLifeCycle -{ - private static final Logger LOG = LoggerFactory.getLogger(PropertyUserStoreManager.class); - /** - * Map of user authentication and authorization information loaded in from a property file. - * The map is keyed off the location of the file. - */ - private Map _propertyUserStores; - - public PropertyUserStore getPropertyUserStore(String file) - { - synchronized (this) - { - if (_propertyUserStores == null) - return null; - - return _propertyUserStores.get(file); - } - } - - public PropertyUserStore addPropertyUserStore(String file, PropertyUserStore store) - { - synchronized (this) - { - Objects.requireNonNull(_propertyUserStores); - PropertyUserStore existing = _propertyUserStores.get(file); - if (existing != null) - return existing; - - _propertyUserStores.put(file, store); - return store; - } - } - - @Override - protected void doStart() throws Exception - { - _propertyUserStores = new HashMap<>(); - super.doStart(); - } - - @Override - protected void doStop() throws Exception - { - for (Map.Entry entry : _propertyUserStores.entrySet()) - { - try - { - entry.getValue().stop(); - } - catch (Exception e) - { - LOG.warn("Error stopping PropertyUserStore at {}", entry.getKey(), e); - } - } - _propertyUserStores = null; - super.doStop(); - } -} diff --git a/jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/callback/AbstractCallbackHandler.java b/jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/callback/AbstractCallbackHandler.java deleted file mode 100644 index b6c8a1fbedf8..000000000000 --- a/jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/callback/AbstractCallbackHandler.java +++ /dev/null @@ -1,51 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.jaas.callback; - -import java.io.IOException; -import javax.security.auth.callback.Callback; -import javax.security.auth.callback.CallbackHandler; -import javax.security.auth.callback.UnsupportedCallbackException; - -public abstract class AbstractCallbackHandler implements CallbackHandler -{ - protected String _userName; - protected Object _credential; - - public void setUserName(String userName) - { - _userName = userName; - } - - public String getUserName() - { - return _userName; - } - - public void setCredential(Object credential) - { - _credential = credential; - } - - public Object getCredential() - { - return _credential; - } - - @Override - public void handle(Callback[] callbacks) - throws IOException, UnsupportedCallbackException - { - } -} diff --git a/jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/callback/ServletRequestCallback.java b/jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/callback/ServletRequestCallback.java deleted file mode 100644 index aa72b23355d9..000000000000 --- a/jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/callback/ServletRequestCallback.java +++ /dev/null @@ -1,38 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.jaas.callback; - -import javax.security.auth.callback.Callback; - -import jakarta.servlet.ServletRequest; - -/** - * ServletRequestCallback - * - * Provides access to the request associated with the authentication. - */ -public class ServletRequestCallback implements Callback -{ - protected ServletRequest _request; - - public void setRequest(ServletRequest request) - { - _request = request; - } - - public ServletRequest getRequest() - { - return _request; - } -} diff --git a/jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/callback/package-info.java b/jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/callback/package-info.java deleted file mode 100644 index cd9fef04323f..000000000000 --- a/jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/callback/package-info.java +++ /dev/null @@ -1,18 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -/** - * Jetty Jaas : Jaas Callbacks - */ -package org.eclipse.jetty.ee10.jaas.callback; - diff --git a/jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/spi/AbstractDatabaseLoginModule.java b/jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/spi/AbstractDatabaseLoginModule.java deleted file mode 100644 index cfb595bb59a0..000000000000 --- a/jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/spi/AbstractDatabaseLoginModule.java +++ /dev/null @@ -1,158 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.jaas.spi; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import javax.security.auth.Subject; -import javax.security.auth.callback.CallbackHandler; - -import org.eclipse.jetty.ee10.servlet.security.UserPrincipal; -import org.eclipse.jetty.util.security.Credential; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * AbstractDatabaseLoginModule - * - *

- * Abstract base class for LoginModules that interact with a - * database to retrieve authentication and authorization information. - * Used by the JDBCLoginModule and DataSourceLoginModule. - *

- */ -public abstract class AbstractDatabaseLoginModule extends AbstractLoginModule -{ - private static final Logger LOG = LoggerFactory.getLogger(AbstractDatabaseLoginModule.class); - - private String userQuery; - private String rolesQuery; - private String dbUserTable; - private String dbUserTableUserField; - private String dbUserTableCredentialField; - private String dbUserRoleTable; - private String dbUserRoleTableUserField; - private String dbUserRoleTableRoleField; - - /** - * @return a java.sql.Connection from the database - * @throws Exception if unable to get the connection - */ - public abstract Connection getConnection() throws Exception; - - public class JDBCUser extends JAASUser - { - public JDBCUser(UserPrincipal user) - { - super(user); - } - - @Override - public List doFetchRoles() - throws Exception - { - return getRoles(getUserName()); - } - } - - /** - * Load info from database - * - * @param userName user info to load - * @throws Exception if unable to get the user info - */ - @Override - public JAASUser getUser(String userName) - throws Exception - { - try (Connection connection = getConnection()) - { - - //query for credential - String dbCredential = null; - try (PreparedStatement statement = connection.prepareStatement(userQuery)) - { - statement.setString(1, userName); - try (ResultSet results = statement.executeQuery()) - { - if (results.next()) - { - dbCredential = results.getString(1); - } - } - } - - if (dbCredential == null) - return null; - - return new JDBCUser(new UserPrincipal(userName, Credential.getCredential(dbCredential))); - } - } - - public List getRoles(String userName) - throws Exception - { - List roles = new ArrayList(); - - try (Connection connection = getConnection()) - { - //query for role names - - try (PreparedStatement statement = connection.prepareStatement(rolesQuery)) - { - statement.setString(1, userName); - try (ResultSet results = statement.executeQuery()) - { - while (results.next()) - { - String roleName = results.getString(1); - roles.add(roleName); - } - } - } - } - - return roles; - } - - @Override - public void initialize(Subject subject, - CallbackHandler callbackHandler, - Map sharedState, - Map options) - { - super.initialize(subject, callbackHandler, sharedState, options); - - //get the user credential query out of the options - dbUserTable = (String)options.get("userTable"); - dbUserTableUserField = (String)options.get("userField"); - dbUserTableCredentialField = (String)options.get("credentialField"); - - userQuery = "select " + dbUserTableCredentialField + " from " + dbUserTable + " where " + dbUserTableUserField + "=?"; - - //get the user roles query out of the options - dbUserRoleTable = (String)options.get("userRoleTable"); - dbUserRoleTableUserField = (String)options.get("userRoleUserField"); - dbUserRoleTableRoleField = (String)options.get("userRoleRoleField"); - - rolesQuery = "select " + dbUserRoleTableRoleField + " from " + dbUserRoleTable + " where " + dbUserRoleTableUserField + "=?"; - - if (LOG.isDebugEnabled()) - LOG.debug("userQuery = {} rolesQuery = {}", userQuery, rolesQuery); - } -} diff --git a/jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/spi/AbstractLoginModule.java b/jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/spi/AbstractLoginModule.java deleted file mode 100644 index 1c4fc2d890d1..000000000000 --- a/jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/spi/AbstractLoginModule.java +++ /dev/null @@ -1,291 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.jaas.spi; - -import java.io.IOException; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; -import javax.security.auth.Subject; -import javax.security.auth.callback.Callback; -import javax.security.auth.callback.CallbackHandler; -import javax.security.auth.callback.NameCallback; -import javax.security.auth.callback.PasswordCallback; -import javax.security.auth.callback.UnsupportedCallbackException; -import javax.security.auth.login.FailedLoginException; -import javax.security.auth.login.LoginException; -import javax.security.auth.spi.LoginModule; - -import org.eclipse.jetty.ee10.jaas.JAASRole; -import org.eclipse.jetty.ee10.jaas.callback.ObjectCallback; -import org.eclipse.jetty.ee10.servlet.security.UserPrincipal; - -/** - * AbstractLoginModule - * - * Abstract base class for all LoginModules. Subclasses should - * just need to implement getUserInfo method. - */ -public abstract class AbstractLoginModule implements LoginModule -{ - private CallbackHandler callbackHandler; - - private boolean authState = false; - private boolean commitState = false; - private JAASUser currentUser; - private Subject subject; - - public abstract static class JAASUser - { - private final UserPrincipal _user; - private List _roles; - - public JAASUser(UserPrincipal u) - { - _user = u; - } - - public String getUserName() - { - return _user.getName(); - } - - /** - * @param subject The subject - */ - public void setJAASInfo(Subject subject) - { - if (_user == null) - return; - - _user.configureSubject(subject); - if (_roles != null) - subject.getPrincipals().addAll(_roles); - } - - /** - * @param subject The subject - */ - public void unsetJAASInfo(Subject subject) - { - if (_user == null) - return; - _user.deconfigureSubject(subject); - if (_roles != null) - subject.getPrincipals().removeAll(_roles); - } - - public boolean checkCredential(Object suppliedCredential) - { - return _user.authenticate(suppliedCredential); - } - - public void fetchRoles() throws Exception - { - List rolenames = doFetchRoles(); - if (rolenames != null) - _roles = rolenames.stream().map(JAASRole::new).collect(Collectors.toList()); - } - - public abstract List doFetchRoles() throws Exception; - } - - public abstract JAASUser getUser(String username) throws Exception; - - public Subject getSubject() - { - return this.subject; - } - - public void setSubject(Subject s) - { - this.subject = s; - } - - public JAASUser getCurrentUser() - { - return this.currentUser; - } - - public void setCurrentUser(JAASUser u) - { - this.currentUser = u; - } - - public CallbackHandler getCallbackHandler() - { - return this.callbackHandler; - } - - public void setCallbackHandler(CallbackHandler h) - { - this.callbackHandler = h; - } - - public boolean isAuthenticated() - { - return this.authState; - } - - public boolean isCommitted() - { - return this.commitState; - } - - public void setAuthenticated(boolean authState) - { - this.authState = authState; - } - - public void setCommitted(boolean commitState) - { - this.commitState = commitState; - } - - @Override - public boolean abort() throws LoginException - { - this.currentUser = null; - return (isAuthenticated() && isCommitted()); - } - - /** - * @return true if committed, false if not (likely not authenticated) - * @throws LoginException if unable to commit - * @see javax.security.auth.spi.LoginModule#commit() - */ - @Override - public boolean commit() throws LoginException - { - if (!isAuthenticated()) - { - currentUser = null; - setCommitted(false); - return false; - } - - setCommitted(true); - currentUser.setJAASInfo(subject); - return true; - } - - public Callback[] configureCallbacks() - { - Callback[] callbacks = new Callback[3]; - callbacks[0] = new NameCallback("Enter user name"); - callbacks[1] = new ObjectCallback(); - callbacks[2] = new PasswordCallback("Enter password", false); //only used if framework does not support the ObjectCallback - return callbacks; - } - - public boolean isIgnored() - { - return false; - } - - /** - * @return true if is authenticated, false otherwise - * @throws LoginException if unable to login - * @see javax.security.auth.spi.LoginModule#login() - */ - @Override - public boolean login() throws LoginException - { - try - { - if (isIgnored()) - return false; - - if (callbackHandler == null) - throw new LoginException("No callback handler"); - - Callback[] callbacks = configureCallbacks(); - callbackHandler.handle(callbacks); - - String webUserName = ((NameCallback)callbacks[0]).getName(); - Object webCredential = null; - - webCredential = ((ObjectCallback)callbacks[1]).getObject(); //first check if ObjectCallback has the credential - if (webCredential == null) - webCredential = ((PasswordCallback)callbacks[2]).getPassword(); //use standard PasswordCallback - - if ((webUserName == null) || (webCredential == null)) - { - setAuthenticated(false); - throw new FailedLoginException(); - } - - JAASUser user = getUser(webUserName); - - if (user == null) - { - setAuthenticated(false); - throw new FailedLoginException(); - } - - currentUser = user; - setAuthenticated(currentUser.checkCredential(webCredential)); - - if (isAuthenticated()) - { - currentUser.fetchRoles(); - return true; - } - else - throw new FailedLoginException(); - } - catch (IOException e) - { - throw new LoginException(e.toString()); - } - catch (UnsupportedCallbackException e) - { - throw new LoginException(e.toString()); - } - catch (Exception e) - { - if (e instanceof LoginException) - throw (LoginException)e; - throw new LoginException(e.toString()); - } - } - - /** - * @return true always - * @throws LoginException if unable to logout - * @see javax.security.auth.spi.LoginModule#logout() - */ - @Override - public boolean logout() throws LoginException - { - this.currentUser.unsetJAASInfo(this.subject); - this.currentUser = null; - return true; - } - - /** - * @param subject the subject - * @param callbackHandler the callback handler - * @param sharedState the shared state map - * @param options the option map - * @see javax.security.auth.spi.LoginModule#initialize(javax.security.auth.Subject, javax.security.auth.callback.CallbackHandler, java.util.Map, java.util.Map) - */ - @Override - public void initialize(Subject subject, CallbackHandler callbackHandler, - Map sharedState, Map options) - { - this.callbackHandler = callbackHandler; - this.subject = subject; - } -} diff --git a/jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/spi/DataSourceLoginModule.java b/jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/spi/DataSourceLoginModule.java deleted file mode 100644 index 0f44f56c5de4..000000000000 --- a/jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/spi/DataSourceLoginModule.java +++ /dev/null @@ -1,83 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.jaas.spi; - -import java.sql.Connection; -import java.util.Map; -import javax.naming.InitialContext; -import javax.naming.NamingException; -import javax.security.auth.Subject; -import javax.security.auth.callback.CallbackHandler; -import javax.sql.DataSource; - -/** - * DataSourceLoginModule - * - * A LoginModule that uses a DataSource to retrieve user authentication - * and authorisation information. - * - * @see JDBCLoginModule - */ -public class DataSourceLoginModule extends AbstractDatabaseLoginModule -{ - - private String dbJNDIName; - private DataSource dataSource; - - /** - * Init LoginModule. - *

- * Called once by JAAS after new instance created. - * - * @param subject the subject - * @param callbackHandler the callback handler - * @param sharedState the shared state map - * @param options the option map - */ - @Override - public void initialize(Subject subject, - CallbackHandler callbackHandler, - Map sharedState, - Map options) - { - try - { - super.initialize(subject, callbackHandler, sharedState, options); - - //get the datasource jndi name - dbJNDIName = (String)options.get("dbJNDIName"); - - InitialContext ic = new InitialContext(); - dataSource = (DataSource)ic.lookup("java:comp/env/" + dbJNDIName); - } - catch (NamingException e) - { - throw new IllegalStateException(e.toString()); - } - } - - /** - * Get a connection from the DataSource - * - * @return the connection for the datasource - * @throws Exception if unable to get the connection - * @see AbstractDatabaseLoginModule#getConnection() - */ - @Override - public Connection getConnection() - throws Exception - { - return dataSource.getConnection(); - } -} diff --git a/jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/spi/LdapLoginModule.java b/jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/spi/LdapLoginModule.java deleted file mode 100644 index a5e6948bed23..000000000000 --- a/jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/spi/LdapLoginModule.java +++ /dev/null @@ -1,756 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.jaas.spi; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Base64; -import java.util.Hashtable; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.Properties; -import javax.naming.AuthenticationException; -import javax.naming.Context; -import javax.naming.NamingEnumeration; -import javax.naming.NamingException; -import javax.naming.directory.Attribute; -import javax.naming.directory.Attributes; -import javax.naming.directory.DirContext; -import javax.naming.directory.InitialDirContext; -import javax.naming.directory.SearchControls; -import javax.naming.directory.SearchResult; -import javax.security.auth.Subject; -import javax.security.auth.callback.Callback; -import javax.security.auth.callback.CallbackHandler; -import javax.security.auth.callback.NameCallback; -import javax.security.auth.callback.UnsupportedCallbackException; -import javax.security.auth.login.FailedLoginException; -import javax.security.auth.login.LoginException; - -import org.eclipse.jetty.ee10.jaas.callback.ObjectCallback; -import org.eclipse.jetty.ee10.servlet.security.UserPrincipal; -import org.eclipse.jetty.util.TypeUtil; -import org.eclipse.jetty.util.security.Credential; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * A LdapLoginModule for use with JAAS setups - *

- * The jvm should be started with the following parameter: - *

- * -Djava.security.auth.login.config=etc/ldap-loginModule.conf
- * 
- * and an example of the ldap-loginModule.conf would be: - *
- * ldaploginmodule {
- *    org.eclipse.jetty.server.server.plus.jaas.spi.LdapLoginModule required
- *    debug="true"
- *    useLdaps="false"
- *    contextFactory="com.sun.jndi.ldap.LdapCtxFactory"
- *    hostname="ldap.example.com"
- *    port="389"
- *    bindDn="cn=Directory Manager"
- *    bindPassword="directory"
- *    authenticationMethod="simple"
- *    forceBindingLogin="false"
- *    userBaseDn="ou=people,dc=alcatel"
- *    userRdnAttribute="uid"
- *    userIdAttribute="uid"
- *    userPasswordAttribute="userPassword"
- *    userObjectClass="inetOrgPerson"
- *    roleBaseDn="ou=groups,dc=example,dc=com"
- *    roleNameAttribute="cn"
- *    roleMemberAttribute="uniqueMember"
- *    roleObjectClass="groupOfUniqueNames";
- *    };
- * 
- */ -public class LdapLoginModule extends AbstractLoginModule -{ - private static final Logger LOG = LoggerFactory.getLogger(LdapLoginModule.class); - - /** - * hostname of the ldap server - */ - private String _hostname; - - /** - * port of the ldap server - */ - private int _port; - - /** - * Context.SECURITY_AUTHENTICATION - */ - private String _authenticationMethod; - - /** - * Context.INITIAL_CONTEXT_FACTORY - */ - private String _contextFactory; - - /** - * root DN used to connect to - */ - private String _bindDn; - - /** - * password used to connect to the root ldap context - */ - private String _bindPassword; - - /** - * object class of a user - */ - private String _userObjectClass = "inetOrgPerson"; - - /** - * attribute that the principal is located - */ - private String _userRdnAttribute = "uid"; - - /** - * attribute that the principal is located - */ - private String _userIdAttribute = "cn"; - - /** - * name of the attribute that a users password is stored under - *

- * NOTE: not always accessible, see force binding login - */ - private String _userPasswordAttribute = "userPassword"; - - /** - * base DN where users are to be searched from - */ - private String _userBaseDn; - - /** - * base DN where role membership is to be searched from - */ - private String _roleBaseDn; - - /** - * object class of roles - */ - private String _roleObjectClass = "groupOfUniqueNames"; - - /** - * name of the attribute that a username would be under a role class - */ - private String _roleMemberAttribute = "uniqueMember"; - - /** - * the name of the attribute that a role would be stored under - */ - private String _roleNameAttribute = "roleName"; - - private boolean _debug; - - /** - * if the getUserInfo can pull a password off of the user then - * password comparison is an option for authn, to force binding - * login checks, set this to true - */ - private boolean _forceBindingLogin = false; - - /** - * When true changes the protocol to ldaps - */ - private boolean _useLdaps = false; - - private DirContext _rootContext; - - public class LDAPUser extends JAASUser - { - Attributes attributes; - - public LDAPUser(UserPrincipal user, Attributes attributes) - { - super(user); - this.attributes = attributes; - } - - @Override - public List doFetchRoles() throws Exception - { - return getUserRoles(_rootContext, getUserName(), attributes); - } - } - - public class LDAPBindingUser extends JAASUser - { - DirContext _context; - String _userDn; - - public LDAPBindingUser(UserPrincipal user, DirContext context, String userDn) - { - super(user); - _context = context; - _userDn = userDn; - } - - @Override - public List doFetchRoles() throws Exception - { - return getUserRolesByDn(_context, _userDn); - } - } - - /** - * get the available information about the user - *

- * for this LoginModule, the credential can be null which will result in a - * binding ldap authentication scenario - *

- * roles are also an optional concept if required - * - * @param username the user name - * @return the userinfo for the username - * @throws Exception if unable to get the user info - */ - @Override - public JAASUser getUser(String username) throws Exception - { - Attributes attributes = getUserAttributes(username); - String pwdCredential = getUserCredentials(attributes); - - if (pwdCredential == null) - return null; - - pwdCredential = convertCredentialLdapToJetty(pwdCredential); - Credential credential = Credential.getCredential(pwdCredential); - return new LDAPUser(new UserPrincipal(username, credential), attributes); - } - - protected String doRFC2254Encoding(String inputString) - { - StringBuffer buf = new StringBuffer(inputString.length()); - for (int i = 0; i < inputString.length(); i++) - { - char c = inputString.charAt(i); - switch (c) - { - case '\\': - buf.append("\\5c"); - break; - case '*': - buf.append("\\2a"); - break; - case '(': - buf.append("\\28"); - break; - case ')': - buf.append("\\29"); - break; - case '\0': - buf.append("\\00"); - break; - default: - buf.append(c); - break; - } - } - return buf.toString(); - } - - /** - * attempts to get the users LDAP attributes from the users context - *

- * NOTE: this is not an user authenticated operation - * - * @return the {@link Attributes} from the user - */ - private Attributes getUserAttributes(String username) throws LoginException - { - SearchResult result = findUser(username); - Attributes attributes = result.getAttributes(); - return attributes; - } - - private String getUserCredentials(Attributes attributes) throws LoginException - { - String ldapCredential = null; - - Attribute attribute = attributes.get(_userPasswordAttribute); - if (attribute != null) - { - try - { - byte[] value = (byte[])attribute.get(); - - ldapCredential = new String(value); - } - catch (NamingException e) - { - LOG.debug("no password available under attribute: {}", _userPasswordAttribute); - } - } - - if (LOG.isDebugEnabled()) - LOG.debug("user cred is: {}", ldapCredential); - - return ldapCredential; - } - - /** - * attempts to get the users roles from the root context - *

- * NOTE: this is not an user authenticated operation - */ - private List getUserRoles(DirContext dirContext, String username, Attributes attributes) throws LoginException, NamingException - { - String rdnValue = username; - Attribute attribute = attributes.get(_userRdnAttribute); - if (attribute != null) - { - try - { - rdnValue = (String)attribute.get(); // switch to the value stored in the _userRdnAttribute if we can - } - catch (NamingException ignored) - { - } - } - - String filter = "({0}={1})"; - - Object[] filterArguments = new Object[]{ - _userRdnAttribute, - rdnValue - }; - - SearchResult searchResult = findUser(dirContext, filter, filterArguments); - - return getUserRolesByDn(dirContext, searchResult.getNameInNamespace()); - } - - private List getUserRolesByDn(DirContext dirContext, String userDn) throws NamingException - { - List roleList = new ArrayList<>(); - - if (dirContext == null || _roleBaseDn == null || _roleMemberAttribute == null || _roleObjectClass == null) - { - return roleList; - } - - SearchControls ctls = new SearchControls(); - ctls.setDerefLinkFlag(true); - ctls.setSearchScope(SearchControls.SUBTREE_SCOPE); - ctls.setReturningAttributes(new String[]{_roleNameAttribute}); - - String filter = "(&(objectClass={0})({1}={2}))"; - Object[] filterArguments = {_roleObjectClass, _roleMemberAttribute, userDn}; - NamingEnumeration results = dirContext.search(_roleBaseDn, filter, filterArguments, ctls); - - if (LOG.isDebugEnabled()) - LOG.debug("Found user roles?: {}", results.hasMoreElements()); - - while (results.hasMoreElements()) - { - SearchResult result = results.nextElement(); - - Attributes attributes = result.getAttributes(); - - if (attributes == null) - { - continue; - } - - Attribute roleAttribute = attributes.get(_roleNameAttribute); - - if (roleAttribute == null) - { - continue; - } - - NamingEnumeration roles = roleAttribute.getAll(); - while (roles.hasMore()) - { - roleList.add(roles.next().toString()); - } - } - - return roleList; - } - - /** - * since ldap uses a context bind for valid authentication checking, we override login() - *

- * if credentials are not available from the users context or if we are forcing the binding check - * then we try a binding authentication check, otherwise if we have the users encoded password then - * we can try authentication via that mechanic - * - * @return true if authenticated, false otherwise - * @throws LoginException if unable to login - */ - @Override - public boolean login() throws LoginException - { - try - { - if (getCallbackHandler() == null) - { - throw new LoginException("No callback handler"); - } - - Callback[] callbacks = configureCallbacks(); - getCallbackHandler().handle(callbacks); - - String webUserName = ((NameCallback)callbacks[0]).getName(); - Object webCredential = ((ObjectCallback)callbacks[1]).getObject(); - - if (webUserName == null || webCredential == null) - { - setAuthenticated(false); - return isAuthenticated(); - } - - boolean authed = false; - - if (_forceBindingLogin) - { - authed = bindingLogin(webUserName, webCredential); - } - else - { - // This sets read and the credential - JAASUser userInfo = getUser(webUserName); - - if (userInfo == null) - { - setAuthenticated(false); - return false; - } - - setCurrentUser(userInfo); - - if (webCredential instanceof String) - authed = credentialLogin(Credential.getCredential((String)webCredential)); - else - authed = credentialLogin(webCredential); - } - - //only fetch roles if authenticated - if (authed) - getCurrentUser().fetchRoles(); - - return authed; - } - catch (UnsupportedCallbackException e) - { - throw new LoginException("Error obtaining callback information."); - } - catch (IOException e) - { - if (_debug) - LOG.info("Login failure", e); - throw new LoginException("IO Error performing login."); - } - catch (AuthenticationException e) - { - if (_debug) - LOG.info("Login failure", e); - return false; - } - catch (LoginException e) - { - throw e; - } - catch (Exception e) - { - if (_debug) - LOG.info("Login failure", e); - throw new LoginException("Error obtaining user info"); - } - } - - /** - * password supplied authentication check - * - * @param webCredential the web credential - * @return true if authenticated - * @throws LoginException if unable to login - */ - protected boolean credentialLogin(Object webCredential) throws LoginException - { - setAuthenticated(getCurrentUser().checkCredential(webCredential)); - return isAuthenticated(); - } - - /** - * binding authentication check - * This method of authentication works only if the user branch of the DIT (ldap tree) - * has an ACI (access control instruction) that allow the access to any user or at least - * for the user that logs in. - * - * @param username the user name - * @param password the password - * @return true always - * @throws LoginException if unable to bind the login - */ - public boolean bindingLogin(String username, Object password) throws LoginException - { - SearchResult searchResult = findUser(username); - - String userDn = searchResult.getNameInNamespace(); - - LOG.info("Attempting authentication: {}", userDn); - - Hashtable environment = getEnvironment(); - - if (userDn == null || "".equals(userDn)) - { - throw new FailedLoginException("username may not be empty"); - } - environment.put(Context.SECURITY_PRINCIPAL, userDn); - // RFC 4513 section 6.3.1, protect against ldap server implementations that allow successful binding on empty passwords - if (password == null || "".equals(password)) - { - throw new FailedLoginException("password may not be empty"); - } - environment.put(Context.SECURITY_CREDENTIALS, password); - - try - { - DirContext dirContext = new InitialDirContext(environment); - setCurrentUser(new LDAPBindingUser(new UserPrincipal(username, null), dirContext, userDn)); - setAuthenticated(true); - return true; - } - catch (javax.naming.AuthenticationException e) - { - throw new FailedLoginException(e.getMessage()); - } - catch (NamingException e) - { - throw new FailedLoginException(e.getMessage()); - } - } - - private SearchResult findUser(String username) throws LoginException - { - String filter = "(&(objectClass={0})({1}={2}))"; - - if (LOG.isDebugEnabled()) - LOG.debug("Searching for user {} with filter: \'{}\' from base dn: {}", username, filter, _userBaseDn); - - Object[] filterArguments = new Object[]{ - _userObjectClass, - _userIdAttribute, - username - }; - - return findUser(_rootContext, filter, filterArguments); - } - - private SearchResult findUser(DirContext dirContext, String filter, Object[] filterArguments) throws LoginException - { - SearchControls ctls = new SearchControls(); - ctls.setDerefLinkFlag(true); - ctls.setSearchScope(SearchControls.SUBTREE_SCOPE); - - NamingEnumeration results; - try - { - results = _rootContext.search(_userBaseDn, filter, filterArguments, ctls); - } - catch (NamingException ex) - { - throw new FailedLoginException(ex.getMessage()); - } - - if (LOG.isDebugEnabled()) - LOG.debug("Found user?: {}", results.hasMoreElements()); - - if (!results.hasMoreElements()) - throw new FailedLoginException("User not found."); - - SearchResult searchResult = (SearchResult)results.nextElement(); - if (results.hasMoreElements()) - throw new FailedLoginException("Search result contains ambiguous entries"); - - return searchResult; - } - - /** - * Init LoginModule. - *

- * Called once by JAAS after new instance is created. - * - * @param subject the subect - * @param callbackHandler the callback handler - * @param sharedState the shared state map - * @param options the option map - */ - @Override - public void initialize(Subject subject, - CallbackHandler callbackHandler, - Map sharedState, - Map options) - { - super.initialize(subject, callbackHandler, sharedState, options); - - _hostname = (String)options.get("hostname"); - _port = Integer.parseInt((String)options.get("port")); - _contextFactory = (String)options.get("contextFactory"); - _bindDn = (String)options.get("bindDn"); - _bindPassword = (String)options.get("bindPassword"); - _authenticationMethod = (String)options.get("authenticationMethod"); - - _userBaseDn = (String)options.get("userBaseDn"); - - _roleBaseDn = (String)options.get("roleBaseDn"); - - if (options.containsKey("forceBindingLogin")) - { - _forceBindingLogin = Boolean.parseBoolean((String)options.get("forceBindingLogin")); - } - - if (options.containsKey("useLdaps")) - { - _useLdaps = Boolean.parseBoolean((String)options.get("useLdaps")); - } - - _userObjectClass = getOption(options, "userObjectClass", _userObjectClass); - _userRdnAttribute = getOption(options, "userRdnAttribute", _userRdnAttribute); - _userIdAttribute = getOption(options, "userIdAttribute", _userIdAttribute); - _userPasswordAttribute = getOption(options, "userPasswordAttribute", _userPasswordAttribute); - _roleObjectClass = getOption(options, "roleObjectClass", _roleObjectClass); - _roleMemberAttribute = getOption(options, "roleMemberAttribute", _roleMemberAttribute); - _roleNameAttribute = getOption(options, "roleNameAttribute", _roleNameAttribute); - _debug = Boolean.parseBoolean(String.valueOf(getOption(options, "debug", Boolean.toString(_debug)))); - - try - { - _rootContext = new InitialDirContext(getEnvironment()); - } - catch (NamingException ex) - { - throw new IllegalStateException("Unable to establish root context", ex); - } - } - - @Override - public boolean commit() throws LoginException - { - try - { - _rootContext.close(); - } - catch (NamingException e) - { - throw new LoginException("error closing root context: " + e.getMessage()); - } - - return super.commit(); - } - - @Override - public boolean abort() throws LoginException - { - try - { - _rootContext.close(); - } - catch (NamingException e) - { - throw new LoginException("error closing root context: " + e.getMessage()); - } - - return super.abort(); - } - - private String getOption(Map options, String key, String defaultValue) - { - Object value = options.get(key); - - if (value == null) - { - return defaultValue; - } - - return (String)value; - } - - /** - * get the context for connection - * - * @return the environment details for the context - */ - public Hashtable getEnvironment() - { - Properties env = new Properties(); - - env.put(Context.INITIAL_CONTEXT_FACTORY, _contextFactory); - - if (_hostname != null) - { - env.put(Context.PROVIDER_URL, (_useLdaps ? "ldaps://" : "ldap://") + _hostname + (_port == 0 ? "" : ":" + _port) + "/"); - } - - if (_authenticationMethod != null) - { - env.put(Context.SECURITY_AUTHENTICATION, _authenticationMethod); - } - - if (_bindDn != null) - { - env.put(Context.SECURITY_PRINCIPAL, _bindDn); - } - - if (_bindPassword != null) - { - env.put(Context.SECURITY_CREDENTIALS, _bindPassword); - } - - return env; - } - - public static String convertCredentialLdapToJetty(String encryptedPassword) - { - if (encryptedPassword == null) - { - return null; - } - - if (encryptedPassword.toUpperCase(Locale.ENGLISH).startsWith("{MD5}")) - { - String src = encryptedPassword.substring("{MD5}".length(), encryptedPassword.length()); - return "MD5:" + base64ToHex(src); - } - - if (encryptedPassword.toUpperCase(Locale.ENGLISH).startsWith("{CRYPT}")) - { - return "CRYPT:" + encryptedPassword.substring("{CRYPT}".length(), encryptedPassword.length()); - } - - return encryptedPassword; - } - - private static String base64ToHex(String src) - { - byte[] bytes = Base64.getDecoder().decode(src); - return TypeUtil.toString(bytes, 16); - } - - private static String hexToBase64(String src) - { - byte[] bytes = TypeUtil.fromHexString(src); - return Base64.getEncoder().encodeToString(bytes); - } -} diff --git a/jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/spi/PropertyFileLoginModule.java b/jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/spi/PropertyFileLoginModule.java deleted file mode 100644 index 671246790f6d..000000000000 --- a/jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/spi/PropertyFileLoginModule.java +++ /dev/null @@ -1,143 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.jaas.spi; - -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; -import javax.security.auth.Subject; -import javax.security.auth.callback.CallbackHandler; - -import org.eclipse.jetty.ee10.jaas.JAASLoginService; -import org.eclipse.jetty.ee10.jaas.PropertyUserStoreManager; -import org.eclipse.jetty.ee10.servlet.security.PropertyUserStore; -import org.eclipse.jetty.ee10.servlet.security.RolePrincipal; -import org.eclipse.jetty.ee10.servlet.security.UserPrincipal; -import org.eclipse.jetty.util.resource.Resource; -import org.eclipse.jetty.util.resource.ResourceFactory; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * PropertyFileLoginModule - */ -public class PropertyFileLoginModule extends AbstractLoginModule -{ - public static final String DEFAULT_FILENAME = "realm.properties"; - private static final Logger LOG = LoggerFactory.getLogger(PropertyFileLoginModule.class); - - private PropertyUserStore _store; - - /** - * Use a PropertyUserStore to read the authentication and authorizaton information contained in - * the file named by the option "file". - * - * @param subject the subject - * @param callbackHandler the callback handler - * @param sharedState the shared state map - * @param options the options map - * @see javax.security.auth.spi.LoginModule#initialize(javax.security.auth.Subject, javax.security.auth.callback.CallbackHandler, java.util.Map, - * java.util.Map) - */ - @Override - public void initialize(Subject subject, CallbackHandler callbackHandler, Map sharedState, Map options) - { - super.initialize(subject, callbackHandler, sharedState, options); - setupPropertyUserStore(options); - } - - /** - * Get an existing, or create a new PropertyUserStore to read the - * authentication and authorization information from the file named by - * the option "file". - * - * @param options configuration options - */ - private void setupPropertyUserStore(Map options) - { - String filename = (String)options.get("file"); - filename = (filename == null ? DEFAULT_FILENAME : filename); - - PropertyUserStoreManager mgr = JAASLoginService.INSTANCE.get().getBean(PropertyUserStoreManager.class); - if (mgr == null) - throw new IllegalStateException("No PropertyUserStoreManager"); - - _store = mgr.getPropertyUserStore(filename); - if (_store == null) - { - int refreshInterval = 0; - String tmp = (String)options.get("refreshInterval"); - if (tmp != null) - { - try - { - refreshInterval = Integer.parseInt(tmp); - } - catch (NumberFormatException e) - { - LOG.warn("'refreshInterval' is not an integer"); - } - } - else - { - tmp = (String)options.get("hotReload"); - if (tmp != null) - { - LOG.warn("Use 'refreshInterval' boolean property instead of 'hotReload'"); - refreshInterval = Boolean.parseBoolean(tmp) ? 1 : 0; - } - } - PropertyUserStore newStore = new PropertyUserStore(); - ResourceFactory resourceFactory = ResourceFactory.of(newStore); - Resource config = resourceFactory.newResource(filename); - newStore.setConfig(config); - newStore.setRefreshInterval(refreshInterval); - _store = mgr.addPropertyUserStore(filename, newStore); - try - { - _store.start(); - } - catch (Exception e) - { - LOG.warn("Exception starting propertyUserStore {} ", config, e); - } - } - } - - /** - * @param userName the user name - * @throws Exception if unable to get the user information - */ - @Override - public JAASUser getUser(String userName) throws Exception - { - if (LOG.isDebugEnabled()) - LOG.debug("Checking PropertyUserStore {} for {}", _store.getConfig(), userName); - UserPrincipal up = _store.getUserPrincipal(userName); - if (up == null) - return null; - - List rps = _store.getRolePrincipals(userName); - List roles = rps == null ? Collections.emptyList() : rps.stream().map(RolePrincipal::getName).collect(Collectors.toList()); - return new JAASUser(up) - { - @Override - public List doFetchRoles() - { - return roles; - } - }; - } -} diff --git a/jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/spi/package-info.java b/jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/spi/package-info.java deleted file mode 100644 index 15455f144b70..000000000000 --- a/jetty-ee10/jetty-ee10-jaas/src/main/java/org/eclipse/jetty/ee10/jaas/spi/package-info.java +++ /dev/null @@ -1,18 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -/** - * Jetty Jaas : Various Jaas Implementations for Jetty - */ -package org.eclipse.jetty.ee10.jaas.spi; - diff --git a/jetty-ee10/jetty-ee10-jaas/src/test/java/org/eclipse/jetty/ee10/jaas/TestServlet.java b/jetty-ee10/jetty-ee10-jaas/src/test/java/org/eclipse/jetty/ee10/jaas/TestServlet.java deleted file mode 100644 index 7bdaaf0b004f..000000000000 --- a/jetty-ee10/jetty-ee10-jaas/src/test/java/org/eclipse/jetty/ee10/jaas/TestServlet.java +++ /dev/null @@ -1,91 +0,0 @@ - -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.jaas; - -import java.io.IOException; -import java.util.List; - -import jakarta.servlet.ServletException; -import jakarta.servlet.http.HttpServlet; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; - -public class TestServlet extends HttpServlet -{ - private List _hasRoles; - private List _hasntRoles; - - public TestServlet(List hasRoles, List hasntRoles) - { - _hasRoles = hasRoles; - _hasntRoles = hasntRoles; - } - - @Override - protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException - { - if (_hasRoles == null && _hasntRoles == null) - { - try - { - req.authenticate(resp); - } - catch (ServletException e) - { - //TODO: a ServletException should only be thrown here if the response has - //not been set, but currently it seems that the ServletException is thrown - //anyway by ServletContextRequest.ServletApiRequest.authenticate. - } - } - else - { - testHasRoles(req, resp); - testHasntRoles(req, resp); - - resp.setStatus(200); - resp.setContentType("text/plain"); - resp.getWriter().println("All OK"); - resp.getWriter().println("requestURI=" + req.getRequestURI()); - } - } - - private void testHasRoles(HttpServletRequest req, HttpServletResponse resp) throws ServletException - { - if (_hasRoles != null) - { - for (String role : _hasRoles) - { - //TODO: the response may already have been committed, because eg the - //BasicAuthenticator may have decided the authentication is invalid. - //Thus throwing ServletException here causes a problem because the HttpChannelState - //tries to set the response. - if (!req.isUserInRole(role)) - throw new ServletException("! in role " + role); - } - } - } - - private void testHasntRoles(HttpServletRequest req, HttpServletResponse resp) throws ServletException - { - if (_hasntRoles != null) - { - for (String role : _hasntRoles) - { - if (req.isUserInRole(role)) - throw new ServletException("in role " + role); - } - } - } -} \ No newline at end of file diff --git a/jetty-ee10/jetty-ee10-jaas/src/test/resources/jetty-logging.properties b/jetty-ee10/jetty-ee10-jaas/src/test/resources/jetty-logging.properties deleted file mode 100644 index f0773d90fa57..000000000000 --- a/jetty-ee10/jetty-ee10-jaas/src/test/resources/jetty-logging.properties +++ /dev/null @@ -1,3 +0,0 @@ -# Jetty Logging using jetty-slf4j-impl -org.eclipse.jetty.LEVEL=INFO -org.apache.directory.LEVEL=ERROR \ No newline at end of file diff --git a/jetty-ee10/jetty-ee10-jaspi/src/main/java/module-info.java b/jetty-ee10/jetty-ee10-jaspi/src/main/java/module-info.java index e67ae7b5968b..1fdc748ab933 100644 --- a/jetty-ee10/jetty-ee10-jaspi/src/main/java/module-info.java +++ b/jetty-ee10/jetty-ee10-jaspi/src/main/java/module-info.java @@ -24,6 +24,6 @@ exports org.eclipse.jetty.ee10.security.jaspi.modules; exports org.eclipse.jetty.ee10.security.jaspi.provider; - provides org.eclipse.jetty.ee10.servlet.security.Authenticator.Factory with + provides org.eclipse.jetty.security.Authenticator.Factory with org.eclipse.jetty.ee10.security.jaspi.JaspiAuthenticatorFactory; } diff --git a/jetty-ee10/jetty-ee10-jaspi/src/main/java/org/eclipse/jetty/ee10/security/jaspi/JaspiAuthenticator.java b/jetty-ee10/jetty-ee10-jaspi/src/main/java/org/eclipse/jetty/ee10/security/jaspi/JaspiAuthenticator.java index 20756ba532e7..6990fca111c5 100644 --- a/jetty-ee10/jetty-ee10-jaspi/src/main/java/org/eclipse/jetty/ee10/security/jaspi/JaspiAuthenticator.java +++ b/jetty-ee10/jetty-ee10-jaspi/src/main/java/org/eclipse/jetty/ee10/security/jaspi/JaspiAuthenticator.java @@ -32,18 +32,15 @@ import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpSession; import org.eclipse.jetty.ee10.servlet.ServletContextRequest; -import org.eclipse.jetty.ee10.servlet.security.Authentication; -import org.eclipse.jetty.ee10.servlet.security.Authentication.User; -import org.eclipse.jetty.ee10.servlet.security.EmptyLoginService; -import org.eclipse.jetty.ee10.servlet.security.IdentityService; -import org.eclipse.jetty.ee10.servlet.security.LoginService; -import org.eclipse.jetty.ee10.servlet.security.ServerAuthException; -import org.eclipse.jetty.ee10.servlet.security.UserAuthentication; -import org.eclipse.jetty.ee10.servlet.security.UserIdentity; -import org.eclipse.jetty.ee10.servlet.security.WrappedAuthConfiguration; -import org.eclipse.jetty.ee10.servlet.security.authentication.DeferredAuthentication; -import org.eclipse.jetty.ee10.servlet.security.authentication.LoginAuthenticator; -import org.eclipse.jetty.ee10.servlet.security.authentication.SessionAuthentication; +import org.eclipse.jetty.security.AuthenticationState; +import org.eclipse.jetty.security.EmptyLoginService; +import org.eclipse.jetty.security.IdentityService; +import org.eclipse.jetty.security.LoginService; +import org.eclipse.jetty.security.ServerAuthException; +import org.eclipse.jetty.security.UserIdentity; +import org.eclipse.jetty.security.UserPrincipal; +import org.eclipse.jetty.security.authentication.LoginAuthenticator; +import org.eclipse.jetty.security.authentication.SessionAuthentication; import org.eclipse.jetty.server.Request; import org.eclipse.jetty.server.Response; import org.eclipse.jetty.util.Callback; @@ -89,13 +86,13 @@ public JaspiAuthenticator(ServerAuthConfig authConfig, Map authProperties, Servl } @Override - public void setConfiguration(AuthConfiguration configuration) + public void setConfiguration(Configuration configuration) { LoginService loginService = configuration.getLoginService(); if (loginService == null) { // Add an empty login service so we can use JASPI without tying into Jetty auth mechanisms. - configuration = new JaspiAuthConfiguration(configuration); + configuration = new JaspiAuthenticatorConfiguration(configuration); loginService = configuration.getLoginService(); } @@ -107,9 +104,9 @@ public void setConfiguration(AuthConfiguration configuration) _identityService = configuration.getIdentityService(); _callbackHandler = new ServletCallbackHandler(loginService); _authProperties = new HashMap(); - for (String key : configuration.getInitParameterNames()) + for (String key : configuration.getParameterNames()) { - _authProperties.put(key, configuration.getInitParameter(key)); + _authProperties.put(key, configuration.getParameter(key)); } } } @@ -132,45 +129,38 @@ private ServerAuthConfig getAuthConfig() throws AuthException } @Override - public String getAuthMethod() + public String getAuthenticationType() { return "JASPI"; } @Override - public UserIdentity login(String username, Object password, Request request) + public UserIdentity login(String username, Object password, Request request, Response response) { - ServletContextRequest servletContextRequest = Request.as(request, ServletContextRequest.class); - - UserIdentity user = _loginService.login(username, password, servletContextRequest == null ? null : servletContextRequest.getServletApiRequest()); + UserIdentity user = _loginService.login(username, password, request, request::getSession); if (user != null) { - renewSession((HttpServletRequest)request, null); + renewSession(request, response); HttpSession session = ((HttpServletRequest)request).getSession(true); if (session != null) { - SessionAuthentication sessionAuth = new SessionAuthentication(getAuthMethod(), user, password); - session.setAttribute(SessionAuthentication.__J_AUTHENTICATED, sessionAuth); + SessionAuthentication sessionAuth = new SessionAuthentication(getAuthenticationType(), user, password); + session.setAttribute(SessionAuthentication.AUTHENTICATED_ATTRIBUTE, sessionAuth); } } return user; } @Override - public Authentication validateRequest(Request request, Response response, Callback callback, boolean mandatory) throws ServerAuthException + public AuthenticationState validateRequest(Request request, Response response, Callback callback) throws ServerAuthException { - JaspiMessageInfo info = new JaspiMessageInfo(request, response, callback, mandatory); + JaspiMessageInfo info = new JaspiMessageInfo(request, response, callback); request.setAttribute("org.eclipse.jetty.ee10.security.jaspi.info", info); - Authentication a = validateRequest(info); - - //if its not mandatory to authenticate, and the authenticator returned UNAUTHENTICATED, we treat it as authentication deferred - if (_allowLazyAuthentication && !info.isAuthMandatory() && a == Authentication.UNAUTHENTICATED) - a = new DeferredAuthentication(this); - return a; + return validateRequest(info); } - public Authentication validateRequest(JaspiMessageInfo messageInfo) throws ServerAuthException + public AuthenticationState validateRequest(JaspiMessageInfo messageInfo) throws ServerAuthException { try { @@ -185,9 +175,9 @@ public Authentication validateRequest(JaspiMessageInfo messageInfo) throws Serve AuthStatus authStatus = authContext.validateRequest(messageInfo, clientSubject, _serviceSubject); if (authStatus == AuthStatus.SEND_CONTINUE) - return Authentication.SEND_CONTINUE; + return AuthenticationState.CHALLENGE; if (authStatus == AuthStatus.SEND_FAILURE) - return Authentication.SEND_FAILURE; + return AuthenticationState.SEND_FAILURE; if (authStatus == AuthStatus.SUCCESS) { @@ -202,7 +192,7 @@ public Authentication validateRequest(JaspiMessageInfo messageInfo) throws Serve CallerPrincipalCallback principalCallback = _callbackHandler.getThreadCallerPrincipalCallback(); if (principalCallback == null) { - return Authentication.UNAUTHENTICATED; + return null; } Principal principal = principalCallback.getPrincipal(); if (principal == null) @@ -221,7 +211,7 @@ public Authentication validateRequest(JaspiMessageInfo messageInfo) throws Serve } if (principal == null) { - return Authentication.UNAUTHENTICATED; + principal = new UserPrincipal(principalName, null); } } GroupPrincipalCallback groupPrincipalCallback = _callbackHandler.getThreadGroupPrincipalCallback(); @@ -230,21 +220,21 @@ public Authentication validateRequest(JaspiMessageInfo messageInfo) throws Serve } HttpSession session = ((HttpServletRequest)messageInfo.getRequestMessage()).getSession(false); - Authentication cached = (session == null ? null : (SessionAuthentication)session.getAttribute(SessionAuthentication.__J_AUTHENTICATED)); + AuthenticationState cached = (session == null ? null : (SessionAuthentication)session.getAttribute(SessionAuthentication.AUTHENTICATED_ATTRIBUTE)); if (cached != null) return cached; - return new UserAuthentication(getAuthMethod(), userIdentity); + return new UserAuthenticationSucceeded(getAuthenticationType(), userIdentity); } if (authStatus == AuthStatus.SEND_SUCCESS) { // we are processing a message in a secureResponse dialog. - return Authentication.SEND_SUCCESS; + return AuthenticationState.SEND_SUCCESS; } if (authStatus == AuthStatus.FAILURE) { Response.writeError(messageInfo.getBaseRequest(), messageInfo.getBaseResponse(), messageInfo.getCallback(), HttpServletResponse.SC_FORBIDDEN); - return Authentication.SEND_FAILURE; + return AuthenticationState.SEND_FAILURE; } // should not happen throw new IllegalStateException("No AuthStatus returned"); @@ -255,17 +245,17 @@ public Authentication validateRequest(JaspiMessageInfo messageInfo) throws Serve } } - @Override - public boolean secureResponse(Request request, Response response, Callback callback, boolean mandatory, User validatedUser) throws ServerAuthException + // TODO This is not longer supported by core security + public boolean secureResponse(Request request, Response response, Callback callback, boolean mandatory, AuthenticationState.Succeeded validatedSucceeded) throws ServerAuthException { ServletContextRequest servletContextRequest = Request.as(request, ServletContextRequest.class); JaspiMessageInfo info = (JaspiMessageInfo)servletContextRequest.getServletApiRequest().getAttribute("org.eclipse.jetty.ee10.security.jaspi.info"); if (info == null) throw new NullPointerException("MessageInfo from request missing: " + request); - return secureResponse(info, validatedUser); + return secureResponse(info, validatedSucceeded); } - public boolean secureResponse(JaspiMessageInfo messageInfo, Authentication validatedUser) throws ServerAuthException + public boolean secureResponse(JaspiMessageInfo messageInfo, AuthenticationState validatedUser) throws ServerAuthException { try { @@ -275,8 +265,8 @@ public boolean secureResponse(JaspiMessageInfo messageInfo, Authentication valid String authContextId = authConfig.getAuthContextID(messageInfo); ServerAuthContext authContext = authConfig.getAuthContext(authContextId, _serviceSubject, _authProperties); - // TODO - // authContext.cleanSubject(messageInfo,validatedUser.getUserIdentity().getSubject()); + if (validatedUser instanceof AuthenticationState.Succeeded userAuthenticated) + authContext.cleanSubject(messageInfo, userAuthenticated.getUserIdentity().getSubject()); AuthStatus status = authContext.secureResponse(messageInfo, _serviceSubject); return (AuthStatus.SEND_SUCCESS.equals(status)); } @@ -286,11 +276,11 @@ public boolean secureResponse(JaspiMessageInfo messageInfo, Authentication valid } } - private static class JaspiAuthConfiguration extends WrappedAuthConfiguration + private static class JaspiAuthenticatorConfiguration extends Configuration.Wrapper { private final LoginService loginService = new EmptyLoginService(); - public JaspiAuthConfiguration(AuthConfiguration configuration) + public JaspiAuthenticatorConfiguration(Configuration configuration) { super(configuration); } diff --git a/jetty-ee10/jetty-ee10-jaspi/src/main/java/org/eclipse/jetty/ee10/security/jaspi/JaspiAuthenticatorFactory.java b/jetty-ee10/jetty-ee10-jaspi/src/main/java/org/eclipse/jetty/ee10/security/jaspi/JaspiAuthenticatorFactory.java index 86934e2d5760..653f8486a923 100644 --- a/jetty-ee10/jetty-ee10-jaspi/src/main/java/org/eclipse/jetty/ee10/security/jaspi/JaspiAuthenticatorFactory.java +++ b/jetty-ee10/jetty-ee10-jaspi/src/main/java/org/eclipse/jetty/ee10/security/jaspi/JaspiAuthenticatorFactory.java @@ -19,16 +19,11 @@ import javax.security.auth.Subject; import jakarta.security.auth.message.config.AuthConfigFactory; -import jakarta.servlet.ServletContext; -import org.eclipse.jetty.ee10.servlet.security.Authenticator; -import org.eclipse.jetty.ee10.servlet.security.Authenticator.AuthConfiguration; -import org.eclipse.jetty.ee10.servlet.security.DefaultAuthenticatorFactory; -import org.eclipse.jetty.ee10.servlet.security.IdentityService; -import org.eclipse.jetty.ee10.servlet.security.LoginService; +import org.eclipse.jetty.security.Authenticator; +import org.eclipse.jetty.security.DefaultAuthenticatorFactory; +import org.eclipse.jetty.server.Context; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.util.StringUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** * Jakarta Authentication (JASPI) Authenticator Factory. @@ -47,7 +42,6 @@ */ public class JaspiAuthenticatorFactory extends DefaultAuthenticatorFactory { - private static final Logger LOG = LoggerFactory.getLogger(JaspiAuthenticatorFactory.class); public static final String MESSAGE_LAYER = "HttpServlet"; private Subject _serviceSubject; @@ -86,7 +80,7 @@ public void setServerName(String serverName) } @Override - public Authenticator getAuthenticator(Server server, ServletContext context, AuthConfiguration configuration, IdentityService identityService, LoginService loginService) + public Authenticator getAuthenticator(Server server, Context context, Authenticator.Configuration configuration) { AuthConfigFactory factory = AuthConfigFactory.getFactory(); if (factory == null) @@ -127,20 +121,20 @@ protected Subject findServiceSubject(Server server) * then use the virtualServerName of the context. * If this is also null, then use the name of the a principal in the service subject. * If none are found, return "server". - * @param context - * + * @param context the context * @param server the server to find the name of * @return the server name from the service Subject (or default value if not * found in subject or principals) */ - protected String findServerName(ServletContext context, Server server) + protected String findServerName(Context context, Server server) { if (_serverName != null) return _serverName; - - String virtualServerName = context.getVirtualServerName(); - if (virtualServerName != null) - return virtualServerName; + + List virtualHosts = context.getVirtualHosts(); + + if (virtualHosts != null && !virtualHosts.isEmpty()) + return virtualHosts.get(0); Subject subject = findServiceSubject(server); if (subject != null) diff --git a/jetty-ee10/jetty-ee10-jaspi/src/main/java/org/eclipse/jetty/ee10/security/jaspi/JaspiMessageInfo.java b/jetty-ee10/jetty-ee10-jaspi/src/main/java/org/eclipse/jetty/ee10/security/jaspi/JaspiMessageInfo.java index e7a9ae4cf1af..d3f4f50d9236 100644 --- a/jetty-ee10/jetty-ee10-jaspi/src/main/java/org/eclipse/jetty/ee10/security/jaspi/JaspiMessageInfo.java +++ b/jetty-ee10/jetty-ee10-jaspi/src/main/java/org/eclipse/jetty/ee10/security/jaspi/JaspiMessageInfo.java @@ -32,20 +32,19 @@ */ public class JaspiMessageInfo implements MessageInfo { - public static final String MANDATORY_KEY = "jakarta.security.auth.message.MessagePolicy.isMandatory"; - public static final String AUTH_METHOD_KEY = "jakarta.servlet.http.authType"; + public static final String AUTHENTICATION_TYPE_KEY = "jakarta.servlet.http.authType"; + private final Callback _callback; private Request _request; private Response _response; - private Callback _callback; private final MIMap _map; - public JaspiMessageInfo(Request request, Response response, Callback callback, boolean isAuthMandatory) + public JaspiMessageInfo(Request request, Response response, Callback callback) { _request = request; _response = response; _callback = callback; //JASPI 3.8.1 - _map = new MIMap(isAuthMandatory); + _map = new MIMap(); } public Callback getCallback() @@ -101,58 +100,40 @@ public void setResponseMessage(Object response) _response = ServletContextResponse.getServletContextResponse((ServletResponse)response); } - public String getAuthMethod() - { - return _map.getAuthMethod(); - } - - public boolean isAuthMandatory() - { - return _map.isAuthMandatory(); - } - //TODO this has bugs in the view implementations. Changing them will not affect the hardcoded values. private static class MIMap implements Map { - private final boolean isMandatory; - private String authMethod; + private String authenticationType; private Map delegate; - private MIMap(boolean mandatory) + private MIMap() { - isMandatory = mandatory; } @Override public int size() { - return (isMandatory ? 1 : 0) + - (authMethod == null ? 0 : 1) + - (delegate == null ? 0 : delegate.size()); + return delegate.size(); } @Override public boolean isEmpty() { - return !isMandatory && authMethod == null && (delegate == null || delegate.isEmpty()); + return delegate == null || delegate.isEmpty(); } @Override public boolean containsKey(Object key) { - if (MANDATORY_KEY.equals(key)) - return isMandatory; - if (AUTH_METHOD_KEY.equals(key)) - return authMethod != null; + if (AUTHENTICATION_TYPE_KEY.equals(key)) + return authenticationType != null; return delegate != null && delegate.containsKey(key); } @Override public boolean containsValue(Object value) { - if (isMandatory && "true".equals(value)) - return true; - if (authMethod == value || (authMethod != null && authMethod.equals(value))) + if (authenticationType == value || (authenticationType != null && authenticationType.equals(value))) return true; return delegate != null && delegate.containsValue(value); } @@ -160,10 +141,8 @@ public boolean containsValue(Object value) @Override public Object get(Object key) { - if (MANDATORY_KEY.equals(key)) - return isMandatory ? "true" : null; - if (AUTH_METHOD_KEY.equals(key)) - return authMethod; + if (AUTHENTICATION_TYPE_KEY.equals(key)) + return authenticationType; if (delegate == null) return null; return delegate.get(key); @@ -172,17 +151,13 @@ public Object get(Object key) @Override public Object put(Object key, Object value) { - if (MANDATORY_KEY.equals(key)) + if (AUTHENTICATION_TYPE_KEY.equals(key)) { - throw new IllegalArgumentException("Mandatory not mutable"); - } - if (AUTH_METHOD_KEY.equals(key)) - { - String authMethod = this.authMethod; - this.authMethod = (String)value; + String authenticationType = this.authenticationType; + this.authenticationType = (String)value; if (delegate != null) - delegate.put(AUTH_METHOD_KEY, value); - return authMethod; + delegate.put(AUTHENTICATION_TYPE_KEY, value); + return authenticationType; } return getDelegate(true).put(key, value); @@ -191,17 +166,13 @@ public Object put(Object key, Object value) @Override public Object remove(Object key) { - if (MANDATORY_KEY.equals(key)) - { - throw new IllegalArgumentException("Mandatory not mutable"); - } - if (AUTH_METHOD_KEY.equals(key)) + if (AUTHENTICATION_TYPE_KEY.equals(key)) { - String authMethod = this.authMethod; - this.authMethod = null; + String authenticationType = this.authenticationType; + this.authenticationType = null; if (delegate != null) - delegate.remove(AUTH_METHOD_KEY); - return authMethod; + delegate.remove(AUTHENTICATION_TYPE_KEY); + return authenticationType; } if (delegate == null) return null; @@ -224,7 +195,7 @@ public void putAll(Map map) @Override public void clear() { - authMethod = null; + authenticationType = null; delegate = null; } @@ -253,22 +224,15 @@ private Map getDelegate(boolean create) if (create) { delegate = new HashMap(); - if (isMandatory) - delegate.put(MANDATORY_KEY, "true"); - if (authMethod != null) - delegate.put(AUTH_METHOD_KEY, authMethod); + if (authenticationType != null) + delegate.put(AUTHENTICATION_TYPE_KEY, authenticationType); } return delegate; } - boolean isAuthMandatory() - { - return isMandatory; - } - - String getAuthMethod() + String getAuthenticationType() { - return authMethod; + return authenticationType; } } } diff --git a/jetty-ee10/jetty-ee10-jaspi/src/main/java/org/eclipse/jetty/ee10/security/jaspi/ServletCallbackHandler.java b/jetty-ee10/jetty-ee10-jaspi/src/main/java/org/eclipse/jetty/ee10/security/jaspi/ServletCallbackHandler.java index 6733ac648e1d..85e43668fecd 100644 --- a/jetty-ee10/jetty-ee10-jaspi/src/main/java/org/eclipse/jetty/ee10/security/jaspi/ServletCallbackHandler.java +++ b/jetty-ee10/jetty-ee10-jaspi/src/main/java/org/eclipse/jetty/ee10/security/jaspi/ServletCallbackHandler.java @@ -27,10 +27,10 @@ import jakarta.security.auth.message.callback.SecretKeyCallback; import jakarta.security.auth.message.callback.TrustStoreCallback; import org.eclipse.jetty.ee10.security.jaspi.callback.CredentialValidationCallback; -import org.eclipse.jetty.ee10.servlet.security.LoginService; -import org.eclipse.jetty.ee10.servlet.security.UserIdentity; import org.eclipse.jetty.ee10.servlet.security.authentication.LoginCallback; import org.eclipse.jetty.ee10.servlet.security.authentication.LoginCallbackImpl; +import org.eclipse.jetty.security.LoginService; +import org.eclipse.jetty.security.UserIdentity; /** * This {@link CallbackHandler} will bridge {@link Callback}s to handle to the given to the Jetty {@link LoginService}. @@ -60,13 +60,12 @@ else if (callback instanceof GroupPrincipalCallback) { _groupPrincipals.set((GroupPrincipalCallback)callback); } - else if (callback instanceof PasswordValidationCallback) + else if (callback instanceof PasswordValidationCallback passwordValidationCallback) { - PasswordValidationCallback passwordValidationCallback = (PasswordValidationCallback)callback; @SuppressWarnings("unused") Subject subject = passwordValidationCallback.getSubject(); - UserIdentity user = _loginService.login(passwordValidationCallback.getUsername(), passwordValidationCallback.getPassword(), null); + UserIdentity user = _loginService.login(passwordValidationCallback.getUsername(), passwordValidationCallback.getPassword(), null, null); if (user != null) { @@ -75,15 +74,14 @@ else if (callback instanceof PasswordValidationCallback) passwordValidationCallback.getSubject().getPrivateCredentials().add(user); } } - else if (callback instanceof CredentialValidationCallback) + else if (callback instanceof CredentialValidationCallback credentialValidationCallback) { - CredentialValidationCallback credentialValidationCallback = (CredentialValidationCallback)callback; Subject subject = credentialValidationCallback.getSubject(); LoginCallback loginCallback = new LoginCallbackImpl(subject, credentialValidationCallback.getUsername(), credentialValidationCallback.getCredential()); - UserIdentity user = _loginService.login(credentialValidationCallback.getUsername(), credentialValidationCallback.getCredential(), null); + UserIdentity user = _loginService.login(credentialValidationCallback.getUsername(), credentialValidationCallback.getCredential(), null, null); if (user != null) { diff --git a/jetty-ee10/jetty-ee10-jaspi/src/main/java/org/eclipse/jetty/ee10/security/jaspi/modules/BaseAuthModule.java b/jetty-ee10/jetty-ee10-jaspi/src/main/java/org/eclipse/jetty/ee10/security/jaspi/modules/BaseAuthModule.java index 63b879071219..28f1fd2bac6d 100644 --- a/jetty-ee10/jetty-ee10-jaspi/src/main/java/org/eclipse/jetty/ee10/security/jaspi/modules/BaseAuthModule.java +++ b/jetty-ee10/jetty-ee10-jaspi/src/main/java/org/eclipse/jetty/ee10/security/jaspi/modules/BaseAuthModule.java @@ -96,29 +96,17 @@ public AuthStatus secureResponse(MessageInfo messageInfo, Subject serviceSubject return AuthStatus.SEND_SUCCESS; } - /** - * @param messageInfo message info to examine for mandatory flag - * @return whether authentication is mandatory or optional - */ - protected boolean isMandatory(MessageInfo messageInfo) - { - String mandatory = (String)messageInfo.getMap().get(JaspiMessageInfo.MANDATORY_KEY); - if (mandatory == null) - return false; - return Boolean.parseBoolean(mandatory); - } - - protected boolean login(Subject clientSubject, String credentials, String authMethod, MessageInfo messageInfo) throws IOException, UnsupportedCallbackException + protected boolean login(Subject clientSubject, String credentials, String authenticationType, MessageInfo messageInfo) throws IOException, UnsupportedCallbackException { credentials = credentials.substring(credentials.indexOf(' ') + 1); credentials = new String(Base64.getDecoder().decode(credentials), StandardCharsets.ISO_8859_1); int i = credentials.indexOf(':'); String userName = credentials.substring(0, i); String password = credentials.substring(i + 1); - return login(clientSubject, userName, new Password(password), authMethod, messageInfo); + return login(clientSubject, userName, new Password(password), authenticationType, messageInfo); } - protected boolean login(Subject clientSubject, String username, Credential credential, String authMethod, MessageInfo messageInfo) throws IOException, UnsupportedCallbackException + protected boolean login(Subject clientSubject, String username, Credential credential, String authenticationType, MessageInfo messageInfo) throws IOException, UnsupportedCallbackException { CredentialValidationCallback credValidationCallback = new CredentialValidationCallback(clientSubject, username, credential); callbackHandler.handle(new Callback[]{credValidationCallback}); @@ -132,7 +120,7 @@ protected boolean login(Subject clientSubject, String username, Credential crede GroupPrincipalCallback groupPrincipalCallback = new GroupPrincipalCallback(clientSubject, loginCallback.getRoles()); callbackHandler.handle(new Callback[]{callerPrincipalCallback, groupPrincipalCallback}); } - messageInfo.getMap().put(JaspiMessageInfo.AUTH_METHOD_KEY, authMethod); + messageInfo.getMap().put(JaspiMessageInfo.AUTHENTICATION_TYPE_KEY, authenticationType); } return credValidationCallback.getResult(); } diff --git a/jetty-ee10/jetty-ee10-jaspi/src/main/java/org/eclipse/jetty/ee10/security/jaspi/modules/BasicAuthenticationAuthModule.java b/jetty-ee10/jetty-ee10-jaspi/src/main/java/org/eclipse/jetty/ee10/security/jaspi/modules/BasicAuthenticationAuthModule.java index 9d4d8b4ed3d0..140fdc3205fe 100644 --- a/jetty-ee10/jetty-ee10-jaspi/src/main/java/org/eclipse/jetty/ee10/security/jaspi/modules/BasicAuthenticationAuthModule.java +++ b/jetty-ee10/jetty-ee10-jaspi/src/main/java/org/eclipse/jetty/ee10/security/jaspi/modules/BasicAuthenticationAuthModule.java @@ -27,9 +27,9 @@ import jakarta.servlet.http.HttpServletResponse; import org.eclipse.jetty.ee10.security.jaspi.JaspiMessageInfo; import org.eclipse.jetty.http.HttpHeader; +import org.eclipse.jetty.security.Authenticator; import org.eclipse.jetty.server.Request; import org.eclipse.jetty.server.Response; -import org.eclipse.jetty.util.security.Constraint; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -79,17 +79,13 @@ public AuthStatus validateRequest(MessageInfo messageInfo, Subject clientSubject { if (LOG.isDebugEnabled()) LOG.debug("Credentials: {}", credentials); - if (login(clientSubject, credentials, Constraint.__BASIC_AUTH, messageInfo)) + if (login(clientSubject, credentials, Authenticator.BASIC_AUTH, messageInfo)) { return AuthStatus.SUCCESS; } } - if (!isMandatory(messageInfo)) - { - return AuthStatus.SUCCESS; - } - response.getHeaders().put(HttpHeader.WWW_AUTHENTICATE.asString(), "basic realm=\"" + _realmName + '"'); + response.getHeaders().put(HttpHeader.WWW_AUTHENTICATE.asString(), "Basic realm=\"" + _realmName + '"'); Response.writeError(request, response, jaspiMessageInfo.getCallback(), HttpServletResponse.SC_UNAUTHORIZED); return AuthStatus.SEND_CONTINUE; } diff --git a/jetty-ee10/jetty-ee10-jaspi/src/main/resources/META-INF/services/org.eclipse.jetty.security.Authenticator$Factory b/jetty-ee10/jetty-ee10-jaspi/src/main/resources/META-INF/services/org.eclipse.jetty.security.Authenticator$Factory index 03cf3bbc1a29..d6a150decfbe 100644 --- a/jetty-ee10/jetty-ee10-jaspi/src/main/resources/META-INF/services/org.eclipse.jetty.security.Authenticator$Factory +++ b/jetty-ee10/jetty-ee10-jaspi/src/main/resources/META-INF/services/org.eclipse.jetty.security.Authenticator$Factory @@ -1 +1 @@ -org.eclipse.jetty.security.jaspi.JaspiAuthenticatorFactory +org.eclipse.jetty.ee10.security.jaspi.JaspiAuthenticatorFactory diff --git a/jetty-ee10/jetty-ee10-jaspi/src/test/java/org/eclipse/jetty/ee10/security/jaspi/HttpHeaderAuthModule.java b/jetty-ee10/jetty-ee10-jaspi/src/test/java/org/eclipse/jetty/ee10/security/jaspi/HttpHeaderAuthModule.java index 4818a40a8560..ad81eeff917b 100644 --- a/jetty-ee10/jetty-ee10-jaspi/src/test/java/org/eclipse/jetty/ee10/security/jaspi/HttpHeaderAuthModule.java +++ b/jetty-ee10/jetty-ee10-jaspi/src/test/java/org/eclipse/jetty/ee10/security/jaspi/HttpHeaderAuthModule.java @@ -89,7 +89,6 @@ public AuthStatus secureResponse(final MessageInfo paramMessageInfo, final Subje @Override public AuthStatus validateRequest(final MessageInfo messageInfo, final Subject client, final Subject serviceSubject) throws AuthException { - // Take the request from the messageInfo structure. final HttpServletRequest req = (HttpServletRequest)messageInfo.getRequestMessage(); try diff --git a/jetty-ee10/jetty-ee10-jaspi/src/test/java/org/eclipse/jetty/ee10/security/jaspi/JaspiTest.java b/jetty-ee10/jetty-ee10-jaspi/src/test/java/org/eclipse/jetty/ee10/security/jaspi/JaspiTest.java index 928e65e17b8f..3541fa5e5ee3 100644 --- a/jetty-ee10/jetty-ee10-jaspi/src/test/java/org/eclipse/jetty/ee10/security/jaspi/JaspiTest.java +++ b/jetty-ee10/jetty-ee10-jaspi/src/test/java/org/eclipse/jetty/ee10/security/jaspi/JaspiTest.java @@ -22,20 +22,19 @@ import java.util.stream.Collectors; import jakarta.security.auth.message.config.AuthConfigFactory; -import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; +import org.eclipse.jetty.ee.security.ConstraintMapping; import org.eclipse.jetty.ee10.servlet.ServletContextHandler; -import org.eclipse.jetty.ee10.servlet.security.AbstractLoginService; -import org.eclipse.jetty.ee10.servlet.security.ConstraintMapping; import org.eclipse.jetty.ee10.servlet.security.ConstraintSecurityHandler; -import org.eclipse.jetty.ee10.servlet.security.RolePrincipal; -import org.eclipse.jetty.ee10.servlet.security.UserPrincipal; +import org.eclipse.jetty.security.AbstractLoginService; +import org.eclipse.jetty.security.Constraint; +import org.eclipse.jetty.security.RolePrincipal; +import org.eclipse.jetty.security.UserPrincipal; import org.eclipse.jetty.server.LocalConnector; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.handler.ContextHandlerCollection; -import org.eclipse.jetty.util.security.Constraint; import org.eclipse.jetty.util.security.Credential; import org.eclipse.jetty.util.security.Password; import org.hamcrest.Matchers; @@ -138,10 +137,11 @@ public void before() throws Exception ConstraintSecurityHandler security = new ConstraintSecurityHandler(); context.setHandler(security); security.setAuthenticatorFactory(jaspiAuthFactory); - // security.setAuthenticator(new BasicAuthenticator()); - Constraint constraint = new Constraint("All", "users"); - constraint.setAuthenticate(true); + Constraint constraint = new Constraint.Builder() + .name("All") + .roles("users") + .build(); ConstraintMapping mapping = new ConstraintMapping(); mapping.setPathSpec("/jaspi/*"); mapping.setConstraint(constraint); @@ -177,7 +177,7 @@ public void testConstraintNoAuth() throws Exception { String response = _connector.getResponse("GET /ctx/jaspi/test HTTP/1.0\n\n"); assertThat(response, startsWith("HTTP/1.1 401 Unauthorized")); - assertThat(response, Matchers.containsString("WWW-Authenticate: basic realm=\"TestRealm\"")); + assertThat(response, Matchers.containsString("WWW-Authenticate: Basic realm=\"TestRealm\"")); } @Test @@ -186,7 +186,7 @@ public void testConstraintWrongAuth() throws Exception String response = _connector.getResponse("GET /ctx/jaspi/test HTTP/1.0\n" + "Authorization: Basic " + Base64.getEncoder().encodeToString("user:wrong".getBytes(ISO_8859_1)) + "\n\n"); assertThat(response, startsWith("HTTP/1.1 401 Unauthorized")); - assertThat(response, Matchers.containsString("WWW-Authenticate: basic realm=\"TestRealm\"")); + assertThat(response, Matchers.containsString("WWW-Authenticate: Basic realm=\"TestRealm\"")); } @Test @@ -200,21 +200,25 @@ public void testConstraintAuth() throws Exception @Test public void testOtherNoAuth() throws Exception { - String response = _connector.getResponse("GET /other/test HTTP/1.0\n\n"); + String response = _connector.getResponse("GET /other/jaspi/test HTTP/1.0\n\n"); assertThat(response, startsWith("HTTP/1.1 403 Forbidden")); } @Test public void testOtherAuth() throws Exception { - String response = _connector.getResponse("GET /other/test HTTP/1.0\n" + "X-Forwarded-User: user\n\n"); + String response = _connector.getResponse(""" + GET /other/jaspi/test HTTP/1.0 + X-Forwarded-User: user + + """); assertThat(response, startsWith("HTTP/1.1 200 OK")); } - public class TestServlet extends HttpServlet + public static class TestServlet extends HttpServlet { @Override - protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException + protected void service(HttpServletRequest req, HttpServletResponse resp) throws IOException { resp.setStatus(200); resp.setContentType("text/plain"); diff --git a/jetty-ee10/jetty-ee10-maven-plugin/pom.xml b/jetty-ee10/jetty-ee10-maven-plugin/pom.xml index a6bf4d643b89..9aa8bfc217b4 100644 --- a/jetty-ee10/jetty-ee10-maven-plugin/pom.xml +++ b/jetty-ee10/jetty-ee10-maven-plugin/pom.xml @@ -195,8 +195,8 @@ true - org.eclipse.jetty.ee10 - jetty-ee10-jaas + org.eclipse.jetty + jetty-security true diff --git a/jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/AbstractWebAppMojo.java b/jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/AbstractWebAppMojo.java index 6657b38fdc0b..7f44a2bafdae 100644 --- a/jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/AbstractWebAppMojo.java +++ b/jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/AbstractWebAppMojo.java @@ -49,7 +49,7 @@ import org.codehaus.plexus.util.StringUtils; import org.eclipse.aether.RepositorySystem; import org.eclipse.jetty.ee10.maven.plugin.utils.MavenProjectHelper; -import org.eclipse.jetty.ee10.servlet.security.LoginService; +import org.eclipse.jetty.security.LoginService; import org.eclipse.jetty.server.RequestLog; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.handler.ContextHandler; diff --git a/jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/JettyEmbedder.java b/jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/JettyEmbedder.java index afc3028d7be0..c0af81f1abcc 100644 --- a/jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/JettyEmbedder.java +++ b/jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/JettyEmbedder.java @@ -23,7 +23,7 @@ import org.eclipse.jetty.ee10.quickstart.QuickStartConfiguration; import org.eclipse.jetty.ee10.quickstart.QuickStartConfiguration.Mode; -import org.eclipse.jetty.ee10.servlet.security.LoginService; +import org.eclipse.jetty.security.LoginService; import org.eclipse.jetty.server.RequestLog; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.ShutdownMonitor; diff --git a/jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/ServerSupport.java b/jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/ServerSupport.java index ba6dab859e82..d8833acb6c55 100644 --- a/jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/ServerSupport.java +++ b/jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/ServerSupport.java @@ -19,9 +19,9 @@ import java.util.List; import java.util.Map; -import org.eclipse.jetty.ee10.servlet.security.LoginService; import org.eclipse.jetty.ee10.webapp.Configurations; import org.eclipse.jetty.ee10.webapp.WebAppContext; +import org.eclipse.jetty.security.LoginService; import org.eclipse.jetty.server.Connector; import org.eclipse.jetty.server.RequestLog; import org.eclipse.jetty.server.Server; diff --git a/jetty-ee10/jetty-ee10-openid/src/main/java/org/eclipse/jetty/ee10/security/openid/JwtDecoder.java b/jetty-ee10/jetty-ee10-openid/src/main/java/org/eclipse/jetty/ee10/security/openid/JwtDecoder.java deleted file mode 100644 index 0f86bfc60e4e..000000000000 --- a/jetty-ee10/jetty-ee10-openid/src/main/java/org/eclipse/jetty/ee10/security/openid/JwtDecoder.java +++ /dev/null @@ -1,101 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.security.openid; - -import java.nio.charset.StandardCharsets; -import java.util.Arrays; -import java.util.Base64; -import java.util.Map; - -import org.eclipse.jetty.util.ajax.JSON; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Used to decode the ID Token from the base64 encrypted JSON Web Token (JWT). - */ -public class JwtDecoder -{ - private static final Logger LOG = LoggerFactory.getLogger(JwtDecoder.class); - - /** - * Decodes a JSON Web Token (JWT) into a Map of claims. - * - * @param jwt the JWT to decode. - * @return the map of claims encoded in the JWT. - */ - @SuppressWarnings("unchecked") - public static Map decode(String jwt) - { - if (LOG.isDebugEnabled()) - LOG.debug("decode {}", jwt); - - String[] sections = jwt.split("\\."); - if (sections.length != 3) - throw new IllegalArgumentException("JWT does not contain 3 sections"); - - Base64.Decoder decoder = Base64.getUrlDecoder(); - String jwtHeaderString = new String(decoder.decode(padJWTSection(sections[0])), StandardCharsets.UTF_8); - String jwtClaimString = new String(decoder.decode(padJWTSection(sections[1])), StandardCharsets.UTF_8); - String jwtSignature = sections[2]; - - JSON json = new JSON(); - - Object parsedJwtHeader = json.fromJSON(jwtHeaderString); - if (!(parsedJwtHeader instanceof Map)) - throw new IllegalStateException("Invalid JWT header"); - Map jwtHeader = (Map)parsedJwtHeader; - if (LOG.isDebugEnabled()) - LOG.debug("JWT Header: {}", jwtHeader); - - /* If the ID Token is received via direct communication between the Client - and the Token Endpoint (which it is in this flow), the TLS server validation - MAY be used to validate the issuer in place of checking the token signature. */ - if (LOG.isDebugEnabled()) - LOG.debug("JWT signature not validated {}", jwtSignature); - - Object parsedClaims = json.fromJSON(jwtClaimString); - if (!(parsedClaims instanceof Map)) - throw new IllegalStateException("Could not decode JSON for JWT claims."); - return (Map)parsedClaims; - } - - static byte[] padJWTSection(String unpaddedEncodedJwtSection) - { - // If already padded just use what we are given. - if (unpaddedEncodedJwtSection.endsWith("=")) - return unpaddedEncodedJwtSection.getBytes(); - - int length = unpaddedEncodedJwtSection.length(); - int remainder = length % 4; - - // A valid base-64-encoded string will have a remainder of 0, 2 or 3. Never 1! - if (remainder == 1) - throw new IllegalArgumentException("Not a valid Base64-encoded string"); - - byte[] paddedEncodedJwtSection; - if (remainder > 0) - { - int paddingNeeded = (4 - remainder) % 4; - paddedEncodedJwtSection = Arrays.copyOf(unpaddedEncodedJwtSection.getBytes(), length + paddingNeeded); - Arrays.fill(paddedEncodedJwtSection, length, paddedEncodedJwtSection.length, (byte)'='); - } - else - { - paddedEncodedJwtSection = unpaddedEncodedJwtSection.getBytes(); - } - - return paddedEncodedJwtSection; - } -} diff --git a/jetty-ee10/jetty-ee10-openid/src/main/java/org/eclipse/jetty/ee10/security/openid/OpenIdConfiguration.java b/jetty-ee10/jetty-ee10-openid/src/main/java/org/eclipse/jetty/ee10/security/openid/OpenIdConfiguration.java deleted file mode 100644 index e5648187de03..000000000000 --- a/jetty-ee10/jetty-ee10-openid/src/main/java/org/eclipse/jetty/ee10/security/openid/OpenIdConfiguration.java +++ /dev/null @@ -1,302 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.security.openid; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.stream.Collectors; - -import org.eclipse.jetty.client.HttpClient; -import org.eclipse.jetty.client.transport.HttpClientTransportOverHTTP; -import org.eclipse.jetty.io.ClientConnector; -import org.eclipse.jetty.util.ajax.JSON; -import org.eclipse.jetty.util.annotation.Name; -import org.eclipse.jetty.util.component.ContainerLifeCycle; -import org.eclipse.jetty.util.ssl.SslContextFactory; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Holds the configuration for an OpenID Connect service. - * - * This uses the OpenID Provider URL with the path {@link #CONFIG_PATH} to discover - * the required information about the OIDC service. - */ -public class OpenIdConfiguration extends ContainerLifeCycle -{ - private static final Logger LOG = LoggerFactory.getLogger(OpenIdConfiguration.class); - private static final String CONFIG_PATH = "/.well-known/openid-configuration"; - private static final String AUTHORIZATION_ENDPOINT = "authorization_endpoint"; - private static final String TOKEN_ENDPOINT = "token_endpoint"; - private static final String END_SESSION_ENDPOINT = "end_session_endpoint"; - private static final String ISSUER = "issuer"; - - private final HttpClient httpClient; - private final String issuer; - private final String clientId; - private final String clientSecret; - private final List scopes = new ArrayList<>(); - private final String authMethod; - private String authEndpoint; - private String tokenEndpoint; - private String endSessionEndpoint; - private boolean authenticateNewUsers = false; - private boolean logoutWhenIdTokenIsExpired = false; - - /** - * Create an OpenID configuration for a specific OIDC provider. - * @param provider The URL of the OpenID provider. - * @param clientId OAuth 2.0 Client Identifier valid at the Authorization Server. - * @param clientSecret The client secret known only by the Client and the Authorization Server. - */ - public OpenIdConfiguration(String provider, String clientId, String clientSecret) - { - this(provider, null, null, clientId, clientSecret, null); - } - - /** - * Create an OpenID configuration for a specific OIDC provider. - * @param issuer The URL of the OpenID provider. - * @param authorizationEndpoint the URL of the OpenID provider's authorization endpoint if configured. - * @param tokenEndpoint the URL of the OpenID provider's token endpoint if configured. - * @param clientId OAuth 2.0 Client Identifier valid at the Authorization Server. - * @param clientSecret The client secret known only by the Client and the Authorization Server. - * @param httpClient The {@link HttpClient} instance to use. - */ - public OpenIdConfiguration(String issuer, String authorizationEndpoint, String tokenEndpoint, - String clientId, String clientSecret, HttpClient httpClient) - { - this(issuer, authorizationEndpoint, tokenEndpoint, clientId, clientSecret, "client_secret_post", httpClient); - } - - /** - * Create an OpenID configuration for a specific OIDC provider. - * @param issuer The URL of the OpenID provider. - * @param authorizationEndpoint the URL of the OpenID provider's authorization endpoint if configured. - * @param tokenEndpoint the URL of the OpenID provider's token endpoint if configured. - * @param clientId OAuth 2.0 Client Identifier valid at the Authorization Server. - * @param clientSecret The client secret known only by the Client and the Authorization Server. - * @param authMethod Authentication method to use with the Token Endpoint. - * @param httpClient The {@link HttpClient} instance to use. - */ - public OpenIdConfiguration(@Name("issuer") String issuer, - @Name("authorizationEndpoint") String authorizationEndpoint, - @Name("tokenEndpoint") String tokenEndpoint, - @Name("clientId") String clientId, - @Name("clientSecret") String clientSecret, - @Name("authMethod") String authMethod, - @Name("httpClient") HttpClient httpClient) - { - this(issuer, authorizationEndpoint, tokenEndpoint, null, clientId, clientSecret, authMethod, httpClient); - } - - /** - * Create an OpenID configuration for a specific OIDC provider. - * @param issuer The URL of the OpenID provider. - * @param authorizationEndpoint the URL of the OpenID provider's authorization endpoint if configured. - * @param tokenEndpoint the URL of the OpenID provider's token endpoint if configured. - * @param endSessionEndpoint the URL of the OpdnID provider's end session endpoint if configured. - * @param clientId OAuth 2.0 Client Identifier valid at the Authorization Server. - * @param clientSecret The client secret known only by the Client and the Authorization Server. - * @param authMethod Authentication method to use with the Token Endpoint. - * @param httpClient The {@link HttpClient} instance to use. - */ - public OpenIdConfiguration(@Name("issuer") String issuer, - @Name("authorizationEndpoint") String authorizationEndpoint, - @Name("tokenEndpoint") String tokenEndpoint, - @Name("endSessionEndpoint") String endSessionEndpoint, - @Name("clientId") String clientId, - @Name("clientSecret") String clientSecret, - @Name("authMethod") String authMethod, - @Name("httpClient") HttpClient httpClient) - { - this.issuer = issuer; - this.clientId = clientId; - this.clientSecret = clientSecret; - this.authEndpoint = authorizationEndpoint; - this.endSessionEndpoint = endSessionEndpoint; - this.tokenEndpoint = tokenEndpoint; - this.httpClient = httpClient != null ? httpClient : newHttpClient(); - this.authMethod = authMethod == null ? "client_secret_post" : authMethod; - - if (this.issuer == null) - throw new IllegalArgumentException("Issuer was not configured"); - - addBean(this.httpClient); - } - - @Override - protected void doStart() throws Exception - { - super.doStart(); - - if (authEndpoint == null || tokenEndpoint == null) - { - Map discoveryDocument = fetchOpenIdConnectMetadata(); - processMetadata(discoveryDocument); - } - } - - /** - * Process the OpenID Connect metadata discovered by {@link #fetchOpenIdConnectMetadata()}. - * By default, only the {@link #AUTHORIZATION_ENDPOINT} and {@link #TOKEN_ENDPOINT} claims are extracted. - * @see OpenID Connect Discovery 1.0 - * @throws IllegalStateException if a required field is not present in the metadata. - */ - protected void processMetadata(Map discoveryDocument) - { - authEndpoint = (String)discoveryDocument.get(AUTHORIZATION_ENDPOINT); - if (authEndpoint == null) - throw new IllegalStateException(AUTHORIZATION_ENDPOINT); - - tokenEndpoint = (String)discoveryDocument.get(TOKEN_ENDPOINT); - if (tokenEndpoint == null) - throw new IllegalStateException(TOKEN_ENDPOINT); - - // End session endpoint is optional. - if (endSessionEndpoint == null) - endSessionEndpoint = (String)discoveryDocument.get(END_SESSION_ENDPOINT); - - // We are lenient and not throw here as some major OIDC providers do not conform to this. - if (!Objects.equals(discoveryDocument.get(ISSUER), issuer)) - LOG.warn("The issuer in the metadata is not correct."); - } - - /** - * Obtain the JSON metadata from OpenID Connect Discovery Configuration Endpoint. - * @return a set of Claims about the OpenID Provider's configuration in JSON format. - * @throws IllegalStateException if metadata could not be fetched from the OP. - */ - protected Map fetchOpenIdConnectMetadata() - { - String provider = issuer; - if (provider.endsWith("/")) - provider = provider.substring(0, provider.length() - 1); - - try - { - Map result; - String responseBody = httpClient.GET(provider + CONFIG_PATH).getContentAsString(); - Object parsedResult = new JSON().fromJSON(responseBody); - - if (parsedResult instanceof Map) - { - Map rawResult = (Map)parsedResult; - result = rawResult.entrySet().stream() - .filter(entry -> entry.getValue() != null) - .collect(Collectors.toMap(it -> it.getKey().toString(), Map.Entry::getValue)); - if (LOG.isDebugEnabled()) - LOG.debug("discovery document {}", result); - return result; - } - else - { - LOG.warn("OpenID provider did not return a proper JSON object response. Result was '{}'", responseBody); - throw new IllegalStateException("Could not parse OpenID provider's malformed response"); - } - } - catch (Exception e) - { - throw new IllegalStateException("invalid identity provider " + provider, e); - } - } - - public HttpClient getHttpClient() - { - return httpClient; - } - - public String getAuthEndpoint() - { - return authEndpoint; - } - - public String getClientId() - { - return clientId; - } - - public String getClientSecret() - { - return clientSecret; - } - - public String getIssuer() - { - return issuer; - } - - public String getTokenEndpoint() - { - return tokenEndpoint; - } - - public String getEndSessionEndpoint() - { - return endSessionEndpoint; - } - - public String getAuthMethod() - { - return authMethod; - } - - public void addScopes(String... scopes) - { - if (scopes != null) - Collections.addAll(this.scopes, scopes); - } - - public List getScopes() - { - return scopes; - } - - public boolean isAuthenticateNewUsers() - { - return authenticateNewUsers; - } - - public void setAuthenticateNewUsers(boolean authenticateNewUsers) - { - this.authenticateNewUsers = authenticateNewUsers; - } - - public boolean isLogoutWhenIdTokenIsExpired() - { - return logoutWhenIdTokenIsExpired; - } - - public void setLogoutWhenIdTokenIsExpired(boolean logoutWhenIdTokenIsExpired) - { - this.logoutWhenIdTokenIsExpired = logoutWhenIdTokenIsExpired; - } - - private static HttpClient newHttpClient() - { - ClientConnector connector = new ClientConnector(); - connector.setSslContextFactory(new SslContextFactory.Client(false)); - return new HttpClient(new HttpClientTransportOverHTTP(connector)); - } - - @Override - public String toString() - { - return String.format("%s@%x{iss=%s, clientId=%s, authEndpoint=%s, authMethod=%s, tokenEndpoint=%s, scopes=%s, authNewUsers=%s}", - getClass().getSimpleName(), hashCode(), issuer, clientId, authEndpoint, authMethod, tokenEndpoint, scopes, authenticateNewUsers); - } -} diff --git a/jetty-ee10/jetty-ee10-openid/src/main/java/org/eclipse/jetty/ee10/security/openid/OpenIdLoginService.java b/jetty-ee10/jetty-ee10-openid/src/main/java/org/eclipse/jetty/ee10/security/openid/OpenIdLoginService.java deleted file mode 100644 index 2d829345e6fa..000000000000 --- a/jetty-ee10/jetty-ee10-openid/src/main/java/org/eclipse/jetty/ee10/security/openid/OpenIdLoginService.java +++ /dev/null @@ -1,168 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.security.openid; - -import java.util.Objects; -import javax.security.auth.Subject; - -import jakarta.servlet.ServletRequest; -import org.eclipse.jetty.ee10.servlet.security.IdentityService; -import org.eclipse.jetty.ee10.servlet.security.LoginService; -import org.eclipse.jetty.ee10.servlet.security.UserIdentity; -import org.eclipse.jetty.util.component.ContainerLifeCycle; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * The implementation of {@link LoginService} required to use OpenID Connect. - * - *

- * Can contain an optional wrapped {@link LoginService} which is used to store role information about users. - *

- */ -public class OpenIdLoginService extends ContainerLifeCycle implements LoginService -{ - private static final Logger LOG = LoggerFactory.getLogger(OpenIdLoginService.class); - - private final OpenIdConfiguration configuration; - private final LoginService loginService; - private IdentityService identityService; - private boolean authenticateNewUsers; - - public OpenIdLoginService(OpenIdConfiguration configuration) - { - this(configuration, null); - } - - /** - * Use a wrapped {@link LoginService} to store information about user roles. - * Users in the wrapped loginService must be stored with their username as - * the value of the sub (subject) Claim, and a credentials value of the empty string. - * @param configuration the OpenID configuration to use. - * @param loginService the wrapped LoginService to defer to for user roles. - */ - public OpenIdLoginService(OpenIdConfiguration configuration, LoginService loginService) - { - this.configuration = Objects.requireNonNull(configuration); - this.loginService = loginService; - addBean(this.configuration); - addBean(this.loginService); - - setAuthenticateNewUsers(configuration.isAuthenticateNewUsers()); - } - - @Override - public String getName() - { - return configuration.getIssuer(); - } - - public OpenIdConfiguration getConfiguration() - { - return configuration; - } - - @Override - public UserIdentity login(String identifier, Object credentials, ServletRequest req) - { - if (LOG.isDebugEnabled()) - LOG.debug("login({}, {}, {})", identifier, credentials, req); - - OpenIdCredentials openIdCredentials = (OpenIdCredentials)credentials; - try - { - openIdCredentials.redeemAuthCode(configuration); - } - catch (Throwable e) - { - LOG.warn("Unable to redeem auth code", e); - return null; - } - - OpenIdUserPrincipal userPrincipal = new OpenIdUserPrincipal(openIdCredentials); - Subject subject = new Subject(); - subject.getPrincipals().add(userPrincipal); - subject.getPrivateCredentials().add(credentials); - subject.setReadOnly(); - - IdentityService identityService = getIdentityService(); - if (loginService != null) - { - UserIdentity userIdentity = loginService.login(openIdCredentials.getUserId(), "", req); - if (userIdentity == null) - { - if (isAuthenticateNewUsers()) - return identityService.newUserIdentity(subject, userPrincipal, new String[0]); - return null; - } - return new OpenIdUserIdentity(subject, userPrincipal, userIdentity); - } - - return identityService.newUserIdentity(subject, userPrincipal, new String[0]); - } - - public boolean isAuthenticateNewUsers() - { - return authenticateNewUsers; - } - - /** - * This setting is only meaningful if a wrapped {@link LoginService} has been set. - *

- * If set to true, any users not found by the wrapped {@link LoginService} will still - * be authenticated but with no roles, if set to false users will not be - * authenticated unless they are discovered by the wrapped {@link LoginService}. - *

- * @param authenticateNewUsers whether to authenticate users not found by a wrapping LoginService - */ - public void setAuthenticateNewUsers(boolean authenticateNewUsers) - { - this.authenticateNewUsers = authenticateNewUsers; - } - - @Override - public boolean validate(UserIdentity user) - { - if (!(user.getUserPrincipal() instanceof OpenIdUserPrincipal userPrincipal)) - return false; - if (configuration.isLogoutWhenIdTokenIsExpired() && userPrincipal.getCredentials().isExpired()) - return false; - return loginService == null || loginService.validate(user); - } - - @Override - public IdentityService getIdentityService() - { - return loginService == null ? identityService : loginService.getIdentityService(); - } - - @Override - public void setIdentityService(IdentityService service) - { - if (isRunning()) - throw new IllegalStateException("Running"); - - if (loginService != null) - loginService.setIdentityService(service); - else - identityService = service; - } - - @Override - public void logout(UserIdentity user) - { - if (loginService != null) - loginService.logout(user); - } -} diff --git a/jetty-ee10/jetty-ee10-openid/src/main/java/org/eclipse/jetty/ee10/security/openid/OpenIdUserIdentity.java b/jetty-ee10/jetty-ee10-openid/src/main/java/org/eclipse/jetty/ee10/security/openid/OpenIdUserIdentity.java deleted file mode 100644 index d5538263eeb2..000000000000 --- a/jetty-ee10/jetty-ee10-openid/src/main/java/org/eclipse/jetty/ee10/security/openid/OpenIdUserIdentity.java +++ /dev/null @@ -1,51 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.security.openid; - -import java.security.Principal; -import javax.security.auth.Subject; - -import org.eclipse.jetty.ee10.servlet.security.UserIdentity; - -public class OpenIdUserIdentity implements UserIdentity -{ - private final Subject subject; - private final Principal userPrincipal; - private final UserIdentity userIdentity; - - public OpenIdUserIdentity(Subject subject, Principal userPrincipal, UserIdentity userIdentity) - { - this.subject = subject; - this.userPrincipal = userPrincipal; - this.userIdentity = userIdentity; - } - - @Override - public Subject getSubject() - { - return subject; - } - - @Override - public Principal getUserPrincipal() - { - return userPrincipal; - } - - @Override - public boolean isUserInRole(String role) - { - return userIdentity != null && userIdentity.isUserInRole(role); - } -} diff --git a/jetty-ee10/jetty-ee10-openid/src/main/java/org/eclipse/jetty/ee10/security/openid/OpenIdUserPrincipal.java b/jetty-ee10/jetty-ee10-openid/src/main/java/org/eclipse/jetty/ee10/security/openid/OpenIdUserPrincipal.java deleted file mode 100644 index f5598de1c6cb..000000000000 --- a/jetty-ee10/jetty-ee10-openid/src/main/java/org/eclipse/jetty/ee10/security/openid/OpenIdUserPrincipal.java +++ /dev/null @@ -1,45 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.security.openid; - -import java.io.Serializable; -import java.security.Principal; - -public class OpenIdUserPrincipal implements Principal, Serializable -{ - private static final long serialVersionUID = 1521094652756670469L; - private final OpenIdCredentials _credentials; - - public OpenIdUserPrincipal(OpenIdCredentials credentials) - { - _credentials = credentials; - } - - public OpenIdCredentials getCredentials() - { - return _credentials; - } - - @Override - public String getName() - { - return _credentials.getUserId(); - } - - @Override - public String toString() - { - return _credentials.getUserId(); - } -} diff --git a/jetty-ee10/jetty-ee10-openid/src/main/resources/META-INF/services/org.eclipse.jetty.ee10.servlet.security.Authenticator$Factory b/jetty-ee10/jetty-ee10-openid/src/main/resources/META-INF/services/org.eclipse.jetty.ee10.servlet.security.Authenticator$Factory deleted file mode 100644 index da9c63a7ec01..000000000000 --- a/jetty-ee10/jetty-ee10-openid/src/main/resources/META-INF/services/org.eclipse.jetty.ee10.servlet.security.Authenticator$Factory +++ /dev/null @@ -1 +0,0 @@ -org.eclipse.jetty.ee10.security.openid.OpenIdAuthenticatorFactory diff --git a/jetty-ee10/jetty-ee10-openid/src/test/java/org/eclipse/jetty/ee10/security/openid/JwtDecoderTest.java b/jetty-ee10/jetty-ee10-openid/src/test/java/org/eclipse/jetty/ee10/security/openid/JwtDecoderTest.java deleted file mode 100644 index 7a99cbf02cf3..000000000000 --- a/jetty-ee10/jetty-ee10-openid/src/test/java/org/eclipse/jetty/ee10/security/openid/JwtDecoderTest.java +++ /dev/null @@ -1,117 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.security.openid; - -import java.util.Map; -import java.util.stream.Stream; - -import org.junit.jupiter.api.Test; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.Arguments; -import org.junit.jupiter.params.provider.MethodSource; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.junit.jupiter.api.Assertions.assertThrows; - -public class JwtDecoderTest -{ - public static Stream paddingExamples() - { - return Stream.of( - Arguments.of("XXXX", "XXXX"), - Arguments.of("XXX", "XXX="), - Arguments.of("XX", "XX=="), - Arguments.of("XXX=", "XXX="), - Arguments.of("X-X", "X-X="), - Arguments.of("@#", "@#=="), - Arguments.of("X=", "X="), - Arguments.of("XX=", "XX="), - Arguments.of("XX==", "XX=="), - Arguments.of("XXX=", "XXX="), - Arguments.of("", "") - ); - } - - public static Stream badPaddingExamples() - { - return Stream.of( - Arguments.of("X"), - Arguments.of("XXXXX") - ); - } - - @ParameterizedTest - @MethodSource("paddingExamples") - public void testPaddingBase64(String input, String expected) - { - byte[] actual = JwtDecoder.padJWTSection(input); - assertThat(actual, is(expected.getBytes())); - } - - @ParameterizedTest - @MethodSource("badPaddingExamples") - public void testPaddingInvalidBase64(String input) - { - IllegalArgumentException error = assertThrows(IllegalArgumentException.class, - () -> JwtDecoder.padJWTSection(input)); - - assertThat(error.getMessage(), is("Not a valid Base64-encoded string")); - } - - @Test - public void testEncodeDecode() - { - String issuer = "example.com"; - String subject = "1234"; - String clientId = "1234.client.id"; - String name = "Bob"; - long expiry = 123; - - // Create a fake ID Token. - String claims = JwtEncoder.createIdToken(issuer, clientId, subject, name, expiry); - String idToken = JwtEncoder.encode(claims); - - // Decode the ID Token and verify the claims are the same. - Map decodedClaims = JwtDecoder.decode(idToken); - assertThat(decodedClaims.get("iss"), is(issuer)); - assertThat(decodedClaims.get("sub"), is(subject)); - assertThat(decodedClaims.get("aud"), is(clientId)); - assertThat(decodedClaims.get("name"), is(name)); - assertThat(decodedClaims.get("exp"), is(expiry)); - } - - @Test - public void testDecodeMissingPadding() - { - // Example given in Issue #4128 which requires the re-adding the B64 padding to decode. - String jwt = "eyJraWQiOiIxNTU1OTM0ODQ3IiwieDV0IjoiOWdCOW9zRldSRHRSMkhtNGNmVnJnWTBGcmZRIiwiYWxnIjoiUlMyNTYifQ" + - ".eyJhdF9oYXNoIjoiQTA0NUoxcE5YRk1nYzlXN2wxSk1fUSIsImRlbGVnYXRpb25faWQiOiJjZTBhNjRlNS0xYWY3LTQ2MzEtOGUz" + - "NC1mNDE5N2JkYzVjZTAiLCJhY3IiOiJ1cm46c2U6Y3VyaXR5OmF1dGhlbnRpY2F0aW9uOmh0bWwtZm9ybTpodG1sLXByaW1hcnkiL" + - "CJzX2hhc2giOiIwc1FtRG9YY3FwcnM4NWUzdy0wbHdBIiwiYXpwIjoiNzZiZTc5Y2ItM2E1Ni00ZTE3LTg3NzYtNDI1Nzc5MjRjYz" + - "c2IiwiYXV0aF90aW1lIjoxNTY5NjU4MDk1LCJleHAiOjE1Njk2NjE5OTUsIm5iZiI6MTU2OTY1ODM5NSwianRpIjoiZjJkNWI2YzE" + - "tNTIxYi00Y2Y5LThlNWEtOTg5NGJhNmE0MzkyIiwiaXNzIjoiaHR0cHM6Ly9ub3JkaWNhcGlzLmN1cml0eS5pby9-IiwiYXVkIjoi" + - "NzZiZTc5Y2ItM2E1Ni00ZTE3LTg3NzYtNDI1Nzc5MjRjYzc2Iiwic3ViIjoibmlrb3MiLCJpYXQiOjE1Njk2NTgzOTUsInB1cnBvc" + - "2UiOiJpZCJ9.Wd458zNmXggpkDN6vbS3-aiajh4-VbkmcStLYUqahYJUp9p-AUI_RZttWvwh3UDMG9rWww_ya8KFK_SkPfKooEaSN" + - "OjOhw0ox4d-9lgti3J49eRyO20RViXvRHyLVtcjv5IaqvMXgwW60Thubv19OION7DstyArffcxNNSpiqDq6wjd0T2DJ3gSXXlJHLT" + - "Wrry3svqu1j_GCbHc04XYGicxsusKgc3n22dh4I6p4trdo0Gu5Un0bZ8Yov7IzWItqTgm9X5r9gZlAOLcAuK1WTwkzAwZJ24HgvxK" + - "muYfV_4ZCg_VPN2Op8YPuRAQOgUERpeTv1RDFTOG9GKZIMBVR0A"; - - // Decode the ID Token and verify the claims are the correct. - Map decodedClaims = JwtDecoder.decode(jwt); - assertThat(decodedClaims.get("sub"), is("nikos")); - assertThat(decodedClaims.get("aud"), is("76be79cb-3a56-4e17-8776-42577924cc76")); - assertThat(decodedClaims.get("exp"), is(1569661995L)); - } -} diff --git a/jetty-ee10/jetty-ee10-openid/src/test/java/org/eclipse/jetty/ee10/security/openid/OpenIdCredentialsTest.java b/jetty-ee10/jetty-ee10-openid/src/test/java/org/eclipse/jetty/ee10/security/openid/OpenIdCredentialsTest.java deleted file mode 100644 index c7188e2a8412..000000000000 --- a/jetty-ee10/jetty-ee10-openid/src/test/java/org/eclipse/jetty/ee10/security/openid/OpenIdCredentialsTest.java +++ /dev/null @@ -1,40 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.security.openid; - -import java.util.HashMap; -import java.util.Map; - -import org.eclipse.jetty.client.HttpClient; -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; - -public class OpenIdCredentialsTest -{ - @Test - public void testSingleAudienceValueInArray() throws Exception - { - String issuer = "myIssuer123"; - String clientId = "myClientId456"; - OpenIdConfiguration configuration = new OpenIdConfiguration(issuer, "", "", clientId, "", new HttpClient()); - - Map claims = new HashMap<>(); - claims.put("iss", issuer); - claims.put("aud", new String[]{clientId}); - claims.put("exp", System.currentTimeMillis() + 5000); - - assertDoesNotThrow(() -> new OpenIdCredentials(claims).redeemAuthCode(configuration)); - } -} diff --git a/jetty-ee10/jetty-ee10-openid/src/test/java/org/eclipse/jetty/ee10/security/openid/OpenIdReamNameTest.java b/jetty-ee10/jetty-ee10-openid/src/test/java/org/eclipse/jetty/ee10/security/openid/OpenIdReamNameTest.java deleted file mode 100644 index 289288d22922..000000000000 --- a/jetty-ee10/jetty-ee10-openid/src/test/java/org/eclipse/jetty/ee10/security/openid/OpenIdReamNameTest.java +++ /dev/null @@ -1,184 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.security.openid; - -import org.eclipse.jetty.ee10.servlet.ServletContextHandler; -import org.eclipse.jetty.ee10.servlet.security.Authenticator; -import org.eclipse.jetty.ee10.servlet.security.ConstraintSecurityHandler; -import org.eclipse.jetty.ee10.servlet.security.LoginService; -import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.server.handler.ContextHandlerCollection; -import org.eclipse.jetty.util.security.Constraint; -import org.hamcrest.Matchers; -import org.junit.jupiter.api.Test; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.greaterThanOrEqualTo; -import static org.hamcrest.Matchers.instanceOf; -import static org.junit.jupiter.api.Assertions.assertThrows; - -public class OpenIdReamNameTest -{ - private final Server server = new Server(); - - public static ServletContextHandler configureOpenIdContext(String realmName) - { - ConstraintSecurityHandler securityHandler = new ConstraintSecurityHandler(); - assertThat(securityHandler.getKnownAuthenticatorFactories().size(), greaterThanOrEqualTo(2)); - securityHandler.setAuthMethod(Constraint.__OPENID_AUTH); - securityHandler.setRealmName(realmName); - ServletContextHandler context = new ServletContextHandler(); - context.setContextPath("/" + realmName); - context.setSecurityHandler(securityHandler); - return context; - } - - @Test - public void testSingleConfiguration() throws Exception - { - // Add some OpenID configurations. - OpenIdConfiguration config1 = new OpenIdConfiguration("provider1", - "", "", "", "", null); - server.addBean(config1); - - // Configure two webapps to select configs based on realm name. - ServletContextHandler context1 = configureOpenIdContext("This doesn't matter if only 1 OpenIdConfiguration"); - ContextHandlerCollection contextHandlerCollection = new ContextHandlerCollection(); - contextHandlerCollection.addHandler(context1); - server.setHandler(contextHandlerCollection); - - try - { - server.start(); - - // The OpenIdConfiguration from context1 matches to config1. - Authenticator authenticator = context1.getSecurityHandler().getAuthenticator(); - assertThat(authenticator, instanceOf(OpenIdAuthenticator.class)); - LoginService loginService = ((OpenIdAuthenticator)authenticator).getLoginService(); - assertThat(loginService, instanceOf(OpenIdLoginService.class)); - assertThat(((OpenIdLoginService)loginService).getConfiguration(), Matchers.is(config1)); - } - finally - { - server.stop(); - } - } - - @Test - public void testSingleConfigurationNoRealmName() throws Exception - { - // Add some OpenID configurations. - OpenIdConfiguration config1 = new OpenIdConfiguration("provider1", - "", "", "", "", null); - server.addBean(config1); - - // Configure two webapps to select configs based on realm name. - ServletContextHandler context1 = configureOpenIdContext(null); - ContextHandlerCollection contextHandlerCollection = new ContextHandlerCollection(); - contextHandlerCollection.addHandler(context1); - server.setHandler(contextHandlerCollection); - - try - { - server.start(); - - // The OpenIdConfiguration from context1 matches to config1. - Authenticator authenticator = context1.getSecurityHandler().getAuthenticator(); - assertThat(authenticator, instanceOf(OpenIdAuthenticator.class)); - LoginService loginService = ((OpenIdAuthenticator)authenticator).getLoginService(); - assertThat(loginService, instanceOf(OpenIdLoginService.class)); - assertThat(((OpenIdLoginService)loginService).getConfiguration(), Matchers.is(config1)); - } - finally - { - server.stop(); - } - } - - @Test - public void testMultipleConfiguration() throws Exception - { - // Add some OpenID configurations. - OpenIdConfiguration config1 = new OpenIdConfiguration("provider1", - "", "", "", "", null); - OpenIdConfiguration config2 = new OpenIdConfiguration("provider2", - "", "", "", "", null); - server.addBean(config1); - server.addBean(config2); - - // Configure two webapps to select configs based on realm name. - ServletContextHandler context1 = configureOpenIdContext(config1.getIssuer()); - ServletContextHandler context2 = configureOpenIdContext(config2.getIssuer()); - ContextHandlerCollection contextHandlerCollection = new ContextHandlerCollection(); - contextHandlerCollection.addHandler(context1); - contextHandlerCollection.addHandler(context2); - server.setHandler(contextHandlerCollection); - - try - { - server.start(); - - // The OpenIdConfiguration from context1 matches to config1. - Authenticator authenticator = context1.getSecurityHandler().getAuthenticator(); - assertThat(authenticator, instanceOf(OpenIdAuthenticator.class)); - LoginService loginService = ((OpenIdAuthenticator)authenticator).getLoginService(); - assertThat(loginService, instanceOf(OpenIdLoginService.class)); - assertThat(((OpenIdLoginService)loginService).getConfiguration(), Matchers.is(config1)); - - // The OpenIdConfiguration from context2 matches to config2. - authenticator = context2.getSecurityHandler().getAuthenticator(); - assertThat(authenticator, instanceOf(OpenIdAuthenticator.class)); - loginService = ((OpenIdAuthenticator)authenticator).getLoginService(); - assertThat(loginService, instanceOf(OpenIdLoginService.class)); - assertThat(((OpenIdLoginService)loginService).getConfiguration(), Matchers.is(config2)); - } - finally - { - server.stop(); - } - } - - @Test - public void testMultipleConfigurationNoMatch() throws Exception - { - // Add some OpenID configurations. - OpenIdConfiguration config1 = new OpenIdConfiguration("provider1", - "", "", "", "", null); - OpenIdConfiguration config2 = new OpenIdConfiguration("provider2", - "", "", "", "", null); - server.addBean(config1); - server.addBean(config2); - - // Configure two webapps to select configs based on realm name. - ServletContextHandler context1 = configureOpenIdContext("provider3"); - ContextHandlerCollection contextHandlerCollection = new ContextHandlerCollection(); - contextHandlerCollection.addHandler(context1); - server.setHandler(contextHandlerCollection); - - // Multiple OpenIdConfigurations were available and didn't match one based on realm name. - assertThrows(IllegalStateException.class, server::start); - } - - @Test - public void testNoConfiguration() throws Exception - { - ServletContextHandler context1 = configureOpenIdContext(null); - ContextHandlerCollection contextHandlerCollection = new ContextHandlerCollection(); - contextHandlerCollection.addHandler(context1); - server.setHandler(contextHandlerCollection); - - // If no OpenIdConfigurations are present it is bad configuration. - assertThrows(IllegalStateException.class, server::start); - } -} diff --git a/jetty-ee10/jetty-ee10-osgi/test-jetty-ee10-osgi/src/test/config/etc/jetty-testrealm.xml b/jetty-ee10/jetty-ee10-osgi/test-jetty-ee10-osgi/src/test/config/etc/jetty-testrealm.xml index 2bcb43402e47..2ce036e69ec8 100644 --- a/jetty-ee10/jetty-ee10-osgi/test-jetty-ee10-osgi/src/test/config/etc/jetty-testrealm.xml +++ b/jetty-ee10/jetty-ee10-osgi/test-jetty-ee10-osgi/src/test/config/etc/jetty-testrealm.xml @@ -17,7 +17,7 @@ - + Test Realm false diff --git a/jetty-ee10/jetty-ee10-osgi/test-jetty-ee10-osgi/src/test/java/org/eclipse/jetty/ee10/osgi/test/TestOSGiUtil.java b/jetty-ee10/jetty-ee10-osgi/test-jetty-ee10-osgi/src/test/java/org/eclipse/jetty/ee10/osgi/test/TestOSGiUtil.java index 4d4d13b2c4a9..9e48c46c49a5 100644 --- a/jetty-ee10/jetty-ee10-osgi/test-jetty-ee10-osgi/src/test/java/org/eclipse/jetty/ee10/osgi/test/TestOSGiUtil.java +++ b/jetty-ee10/jetty-ee10-osgi/test-jetty-ee10-osgi/src/test/java/org/eclipse/jetty/ee10/osgi/test/TestOSGiUtil.java @@ -201,6 +201,7 @@ public static void coreJettyDependencies(List
- org.eclipse.jetty.ee10 - jetty-ee10-jaas + org.eclipse.jetty + jetty-security org.eclipse.jetty.ee10.websocket diff --git a/jetty-ee10/jetty-ee10-runner/src/main/java/org/eclipse/jetty/ee10/runner/Runner.java b/jetty-ee10/jetty-ee10-runner/src/main/java/org/eclipse/jetty/ee10/runner/Runner.java index 6c5cd0698812..c7646f80b707 100644 --- a/jetty-ee10/jetty-ee10-runner/src/main/java/org/eclipse/jetty/ee10/runner/Runner.java +++ b/jetty-ee10/jetty-ee10-runner/src/main/java/org/eclipse/jetty/ee10/runner/Runner.java @@ -28,17 +28,18 @@ import java.util.Locale; import java.util.Objects; +import org.eclipse.jetty.ee.security.ConstraintMapping; import org.eclipse.jetty.ee10.plus.webapp.EnvConfiguration; import org.eclipse.jetty.ee10.plus.webapp.PlusConfiguration; import org.eclipse.jetty.ee10.servlet.ServletContextHandler; import org.eclipse.jetty.ee10.servlet.SessionHandler; -import org.eclipse.jetty.ee10.servlet.security.ConstraintMapping; import org.eclipse.jetty.ee10.servlet.security.ConstraintSecurityHandler; -import org.eclipse.jetty.ee10.servlet.security.HashLoginService; -import org.eclipse.jetty.ee10.servlet.security.authentication.BasicAuthenticator; import org.eclipse.jetty.ee10.webapp.MetaInfConfiguration; import org.eclipse.jetty.ee10.webapp.WebAppContext; import org.eclipse.jetty.io.ConnectionStatistics; +import org.eclipse.jetty.security.Constraint; +import org.eclipse.jetty.security.HashLoginService; +import org.eclipse.jetty.security.authentication.BasicAuthenticator; import org.eclipse.jetty.server.Connector; import org.eclipse.jetty.server.CustomRequestLog; import org.eclipse.jetty.server.Handler; @@ -55,7 +56,6 @@ import org.eclipse.jetty.util.resource.Resource; import org.eclipse.jetty.util.resource.ResourceFactory; import org.eclipse.jetty.util.resource.Resources; -import org.eclipse.jetty.util.security.Constraint; import org.eclipse.jetty.xml.XmlConfiguration; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -365,10 +365,10 @@ else if ("STOP.PORT".equals(sysProps[0])) ResourceFactory resourceFactory = ResourceFactory.of(statsContext); Resource statsResource = resourceFactory.newResource(_statsPropFile); final HashLoginService loginService = new HashLoginService("StatsRealm", statsResource); - Constraint constraint = new Constraint(); - constraint.setName("Admin Only"); - constraint.setRoles(new String[]{"admin"}); - constraint.setAuthenticate(true); + Constraint constraint = new Constraint.Builder() + .name("Admin Only") + .roles("admin") + .build(); ConstraintMapping cm = new ConstraintMapping(); cm.setConstraint(constraint); diff --git a/jetty-ee10/jetty-ee10-servlet/pom.xml b/jetty-ee10/jetty-ee10-servlet/pom.xml index ea73ea5a49e8..dc16e75c3c1c 100644 --- a/jetty-ee10/jetty-ee10-servlet/pom.xml +++ b/jetty-ee10/jetty-ee10-servlet/pom.xml @@ -42,10 +42,18 @@ org.eclipse.jetty jetty-server + + org.eclipse.jetty + jetty-ee + org.eclipse.jetty jetty-session + + org.eclipse.jetty + jetty-security + org.slf4j slf4j-api diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/config/modules/ee10-openid.mod b/jetty-ee10/jetty-ee10-servlet/src/main/config/modules/ee10-openid.mod new file mode 100644 index 000000000000..a2115183e55a --- /dev/null +++ b/jetty-ee10/jetty-ee10-servlet/src/main/config/modules/ee10-openid.mod @@ -0,0 +1,10 @@ +# DO NOT EDIT - See: https://www.eclipse.org/jetty/documentation/current/startup-modules.html + +[description] +Adds openid security for EE10. + +[environment] +ee10 + +[depend] +openid diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/config/modules/ee10-security.mod b/jetty-ee10/jetty-ee10-servlet/src/main/config/modules/ee10-security.mod index 943ad4be4d7f..cedc90016111 100644 --- a/jetty-ee10/jetty-ee10-servlet/src/main/config/modules/ee10-security.mod +++ b/jetty-ee10/jetty-ee10-servlet/src/main/config/modules/ee10-security.mod @@ -8,6 +8,7 @@ ee10 [depend] server +security ee10-servlet [lib] diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/module-info.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/module-info.java index 4fe6d74eb5fd..d729ac24ee00 100644 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/module-info.java +++ b/jetty-ee10/jetty-ee10-servlet/src/main/java/module-info.java @@ -11,14 +11,16 @@ // ======================================================================== // -import org.eclipse.jetty.ee10.servlet.security.Authenticator; +import org.eclipse.jetty.security.Authenticator; module org.eclipse.jetty.ee10.servlet { requires org.slf4j; requires transitive jakarta.servlet; + requires transitive org.eclipse.jetty.ee; requires transitive org.eclipse.jetty.server; + requires transitive org.eclipse.jetty.security; requires transitive org.eclipse.jetty.session; // Only required if using IntrospectorCleaner. @@ -40,6 +42,7 @@ exports org.eclipse.jetty.ee10.servlet.util; exports org.eclipse.jetty.ee10.servlet.writer; + exports org.eclipse.jetty.ee10.servlet.jmx to org.eclipse.jetty.jmx; diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/AsyncContextState.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/AsyncContextState.java index eb4fee0055c0..0271a05675f7 100644 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/AsyncContextState.java +++ b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/AsyncContextState.java @@ -116,7 +116,7 @@ public boolean hasOriginalRequestAndResponse() ServletRequest servletRequest = getRequest(); ServletResponse servletResponse = getResponse(); ServletChannel servletChannel = _state.getServletChannel(); - HttpServletRequest originalHttpServletRequest = servletChannel.getServletContextRequest().getHttpServletRequest(); + HttpServletRequest originalHttpServletRequest = servletChannel.getServletContextRequest().getServletApiRequest(); HttpServletResponse originalHttpServletResponse = servletChannel.getResponse().getHttpServletResponse(); return (servletRequest == originalHttpServletRequest && servletResponse == originalHttpServletResponse); } diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/DebugListener.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/DebugListener.java index ee7075a46bdc..20d93f2e031f 100644 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/DebugListener.java +++ b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/DebugListener.java @@ -296,7 +296,7 @@ public void enterScope(ServletContextHandler.ServletScopedContext context, Servl log("> ctx=%s", cname); else { - String rname = findRequestName(request.getHttpServletRequest()); + String rname = findRequestName(request.getServletApiRequest()); if (_renameThread) { @@ -316,7 +316,7 @@ public void exitScope(ServletContextHandler.ServletScopedContext context, Servle log("< ctx=%s", cname); else { - String rname = findRequestName(request.getHttpServletRequest()); + String rname = findRequestName(request.getServletApiRequest()); log("< ctx=%s r=%s", cname, rname); if (_renameThread) diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/DefaultServlet.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/DefaultServlet.java index 25b3d27d6f7f..86127afa9d43 100644 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/DefaultServlet.java +++ b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/DefaultServlet.java @@ -1083,8 +1083,7 @@ protected void redirectWelcome(Request request, Response response, Callback call welcomeTarget = URIUtil.addPaths(servletPath, welcomeTarget); servletResponse.setContentLength(0); - servletResponse.sendRedirect(welcomeTarget); - callback.succeeded(); + Response.sendRedirect(request, response, callback, welcomeTarget); } @Override diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ErrorHandler.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ErrorHandler.java index af82e37aa9b1..051660071bb3 100644 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ErrorHandler.java +++ b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ErrorHandler.java @@ -97,7 +97,7 @@ public boolean handle(Request request, Response response, Callback callback) thr // Look for an error page dispatcher // This logic really should be in ErrorPageErrorHandler, but some implementations extend ErrorHandler // and implement ErrorPageMapper directly, so we do this here in the base class. - String errorPage = (this instanceof ErrorPageMapper) ? ((ErrorPageMapper)this).getErrorPage(servletContextRequest.getHttpServletRequest()) : null; + String errorPage = (this instanceof ErrorPageMapper) ? ((ErrorPageMapper)this).getErrorPage(servletContextRequest.getServletApiRequest()) : null; ServletContextHandler.ServletScopedContext context = servletContextRequest.getErrorContext(); Dispatcher errorDispatcher = (errorPage != null && context != null) ? (Dispatcher)context.getServletContext().getRequestDispatcher(errorPage) : null; @@ -106,7 +106,7 @@ public boolean handle(Request request, Response response, Callback callback) thr { try { - errorDispatcher.error(servletContextRequest.getHttpServletRequest(), servletContextRequest.getHttpServletResponse()); + errorDispatcher.error(servletContextRequest.getServletApiRequest(), servletContextRequest.getHttpServletResponse()); callback.succeeded(); return true; } @@ -124,7 +124,7 @@ public boolean handle(Request request, Response response, Callback callback) thr String message = (String)request.getAttribute(Dispatcher.ERROR_MESSAGE); if (message == null) message = HttpStatus.getMessage(response.getStatus()); - generateAcceptableResponse(servletContextRequest, servletContextRequest.getHttpServletRequest(), servletContextRequest.getHttpServletResponse(), response.getStatus(), message); + generateAcceptableResponse(servletContextRequest, servletContextRequest.getServletApiRequest(), servletContextRequest.getHttpServletResponse(), response.getStatus(), message); callback.succeeded(); return true; } diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletApiRequest.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletApiRequest.java index af5b77796f13..773cf203f0ec 100644 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletApiRequest.java +++ b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletApiRequest.java @@ -55,8 +55,6 @@ import jakarta.servlet.http.HttpUpgradeHandler; import jakarta.servlet.http.Part; import jakarta.servlet.http.PushBuilder; -import org.eclipse.jetty.ee10.servlet.security.Authentication; -import org.eclipse.jetty.ee10.servlet.security.UserIdentity; import org.eclipse.jetty.http.BadMessageException; import org.eclipse.jetty.http.CookieCompliance; import org.eclipse.jetty.http.HttpCookie; @@ -69,7 +67,10 @@ import org.eclipse.jetty.http.HttpURI; import org.eclipse.jetty.http.HttpVersion; import org.eclipse.jetty.http.MimeTypes; +import org.eclipse.jetty.io.QuietException; import org.eclipse.jetty.io.RuntimeIOException; +import org.eclipse.jetty.security.AuthenticationState; +import org.eclipse.jetty.security.UserIdentity; import org.eclipse.jetty.server.ConnectionMetaData; import org.eclipse.jetty.server.FormFields; import org.eclipse.jetty.server.HttpCookieUtils; @@ -107,7 +108,6 @@ public class ServletApiRequest implements HttpServletRequest private Fields _contentParameters; private Fields _parameters; private Fields _queryParameters; - private Authentication _authentication; private String _method; private ServletMultiPartFormData.Parts _parts; private boolean _asyncSupported = true; @@ -129,14 +129,24 @@ public Fields getContentParams() return _contentParameters; } - public void setAuthentication(Authentication authentication) + public AuthenticationState getAuthentication() { - _authentication = authentication; + return AuthenticationState.getAuthenticationState(getServletContextRequest()); } - public Authentication getAuthentication() + private AuthenticationState getUndeferredAuthentication() { - return _authentication; + AuthenticationState authenticationState = getAuthentication(); + if (authenticationState instanceof AuthenticationState.Deferred deferred) + { + AuthenticationState undeferred = deferred.authenticate(getServletContextRequest()); + if (undeferred != null && undeferred != authenticationState) + { + authenticationState = undeferred; + AuthenticationState.setAuthenticationState(getServletContextRequest(), authenticationState); + } + } + return authenticationState; } @Override @@ -215,11 +225,9 @@ public boolean isSecure() @Override public String getAuthType() { - if (_authentication instanceof Authentication.Deferred) - setAuthentication(((Authentication.Deferred)_authentication).authenticate(_request)); - - if (_authentication instanceof Authentication.User) - return ((Authentication.User)_authentication).getAuthMethod(); + AuthenticationState authenticationState = getUndeferredAuthentication(); + if (authenticationState instanceof AuthenticationState.Succeeded succeededAuthentication) + return succeededAuthentication.getAuthenticationType(); return null; } @@ -319,23 +327,21 @@ public boolean isUserInRole(String role) { //obtain any substituted role name from the destination servlet String linkedRole = _request._mappedServlet.getServletHolder().getUserRoleLink(role); - if (_authentication instanceof Authentication.Deferred) - setAuthentication(((Authentication.Deferred)_authentication).authenticate(_request)); + AuthenticationState authenticationState = getUndeferredAuthentication(); - if (_authentication instanceof Authentication.User) - return ((Authentication.User)_authentication).isUserInRole(linkedRole); + if (authenticationState instanceof AuthenticationState.Succeeded succeededAuthentication) + return succeededAuthentication.isUserInRole(linkedRole); return false; } @Override public Principal getUserPrincipal() { - if (_authentication instanceof Authentication.Deferred) - setAuthentication(((Authentication.Deferred)_authentication).authenticate(_request)); + AuthenticationState authenticationState = getUndeferredAuthentication(); - if (_authentication instanceof Authentication.User) + if (authenticationState instanceof AuthenticationState.Succeeded succeededAuthentication) { - UserIdentity user = ((Authentication.User)_authentication).getUserIdentity(); + UserIdentity user = succeededAuthentication.getUserIdentity(); return user.getUserPrincipal(); } @@ -374,7 +380,7 @@ public HttpSession getSession(boolean create) Session session = _request.getSession(create); if (session == null) return null; - if (session.isNew() && getAuthentication() instanceof Authentication.User) + if (session.isNew() && getAuthentication() instanceof AuthenticationState.Succeeded) session.setAttribute(ManagedSession.SESSION_CREATED_SECURE, Boolean.TRUE); return session.getApi(); } @@ -432,18 +438,14 @@ public boolean authenticate(HttpServletResponse response) throws IOException, Se return true; //do the authentication - if (_authentication instanceof Authentication.Deferred) - { - setAuthentication(((Authentication.Deferred)_authentication) - .authenticate(_request, _request.getResponse(), getServletContextRequest().getServletChannel().getCallback())); - } + AuthenticationState authenticationState = getUndeferredAuthentication(); //if the authentication did not succeed - if (_authentication instanceof Authentication.Deferred) + if (authenticationState instanceof AuthenticationState.Deferred) response.sendError(HttpStatus.UNAUTHORIZED_401); //if the authentication is incomplete, return false - if (!(_authentication instanceof Authentication.ResponseSent)) + if (!(authenticationState instanceof AuthenticationState.ResponseSent)) return false; //TODO: this should only be returned IFF the authenticator has NOT set the response, @@ -455,25 +457,25 @@ public boolean authenticate(HttpServletResponse response) throws IOException, Se @Override public void login(String username, String password) throws ServletException { - if (_authentication instanceof Authentication.LoginAuthentication) + try { - Authentication auth = ((Authentication.LoginAuthentication)_authentication).login(username, password, _request); - if (auth == null) - throw new Authentication.Failed("Authentication failed for username '" + username + "'"); - else - _authentication = auth; + AuthenticationState.Succeeded succeededAuthentication = AuthenticationState.login( + username, password, getServletContextRequest(), getServletContextRequest().getResponse()); + + if (succeededAuthentication == null) + throw new QuietException.Exception("Authentication failed for username '" + username + "'"); } - else + catch (Throwable t) { - throw new Authentication.Failed("Authenticated failed for username '" + username + "'. Already authenticated as " + _authentication); + throw new ServletException(t.getMessage(), t); } } @Override public void logout() throws ServletException { - if (_authentication instanceof Authentication.LogoutAuthentication) - _authentication = ((Authentication.LogoutAuthentication)_authentication).logout(_request); + if (!AuthenticationState.logout(getServletContextRequest(), getServletContextRequest().getResponse())) + throw new ServletException("logout failed"); } @Override @@ -646,23 +648,16 @@ public Object getAttribute(String name) if (_async != null) { // This switch works by allowing the attribute to get underneath any dispatch wrapper. - switch (name) + return switch (name) { - case AsyncContext.ASYNC_REQUEST_URI: - return getRequestURI(); - case AsyncContext.ASYNC_CONTEXT_PATH: - return getContextPath(); - case AsyncContext.ASYNC_SERVLET_PATH: - return getServletPath(); - case AsyncContext.ASYNC_PATH_INFO: - return getPathInfo(); - case AsyncContext.ASYNC_QUERY_STRING: - return getQueryString(); - case AsyncContext.ASYNC_MAPPING: - return getHttpServletMapping(); - default: - break; - } + case AsyncContext.ASYNC_REQUEST_URI -> getRequestURI(); + case AsyncContext.ASYNC_CONTEXT_PATH -> getContextPath(); + case AsyncContext.ASYNC_SERVLET_PATH -> getServletPath(); + case AsyncContext.ASYNC_PATH_INFO -> getPathInfo(); + case AsyncContext.ASYNC_QUERY_STRING -> getQueryString(); + case AsyncContext.ASYNC_MAPPING -> getHttpServletMapping(); + default -> _request.getAttribute(name); + }; } return _request.getAttribute(name); @@ -826,8 +821,9 @@ else if (ServletContextRequest.isNoParams(_contentParameters) || _contentParamet _parameters = _queryParameters; else if (_parameters == null) { - _parameters = new Fields(_queryParameters, false); - _contentParameters.forEach(_parameters::add); + _parameters = new Fields(true); + _parameters.addAll(_queryParameters); + _parameters.addAll(_contentParameters); } // protect against calls to recycled requests (which is illegal, but @@ -886,6 +882,19 @@ else if (MimeTypes.Type.MULTIPART_FORM_DATA.is(baseType) && throw new RuntimeIOException(msg, e); } } + else + { + try + { + _contentParameters = FormFields.get(getServletContextRequest()).get(); + } + catch (IllegalStateException | IllegalArgumentException | ExecutionException | + InterruptedException e) + { + LOG.warn(e.toString()); + throw new BadMessageException("Unable to parse form content", e); + } + } } if (_contentParameters == null || _contentParameters.isEmpty()) diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletApiResponse.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletApiResponse.java index 07e6c11062de..224e50cbe020 100644 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletApiResponse.java +++ b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletApiResponse.java @@ -26,9 +26,7 @@ import jakarta.servlet.ServletOutputStream; import jakarta.servlet.http.Cookie; -import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; -import jakarta.servlet.http.HttpSession; import org.eclipse.jetty.ee10.servlet.writer.EncodingHttpWriter; import org.eclipse.jetty.ee10.servlet.writer.Iso88591HttpWriter; import org.eclipse.jetty.ee10.servlet.writer.ResponseWriter; @@ -37,21 +35,16 @@ import org.eclipse.jetty.http.HttpFields; import org.eclipse.jetty.http.HttpGenerator; import org.eclipse.jetty.http.HttpHeader; -import org.eclipse.jetty.http.HttpScheme; import org.eclipse.jetty.http.HttpStatus; -import org.eclipse.jetty.http.HttpURI; import org.eclipse.jetty.http.HttpVersion; import org.eclipse.jetty.http.MimeTypes; import org.eclipse.jetty.io.RuntimeIOException; -import org.eclipse.jetty.server.Request; import org.eclipse.jetty.server.Response; -import org.eclipse.jetty.server.Session; import org.eclipse.jetty.session.ManagedSession; import org.eclipse.jetty.session.SessionManager; import org.eclipse.jetty.util.Blocker; import org.eclipse.jetty.util.FutureCallback; import org.eclipse.jetty.util.StringUtil; -import org.eclipse.jetty.util.URIUtil; /** * The Jetty low level implementation of the ee10 {@link HttpServletResponse} object. @@ -108,99 +101,7 @@ public String encodeURL(String url) SessionManager sessionManager = _response.getServletContextRequest().getServletChannel().getContextHandler().getSessionHandler(); if (sessionManager == null) return url; - - ServletContextRequest request = _response.getServletContextRequest(); - HttpServletRequest httpServletRequest = request.getHttpServletRequest(); - - HttpURI uri = null; - if (sessionManager.isCheckingRemoteSessionIdEncoding() && URIUtil.hasScheme(url)) - { - uri = HttpURI.from(url); - String path = uri.getPath(); - path = (path == null ? "" : path); - int port = uri.getPort(); - if (port < 0) - port = HttpScheme.getDefaultPort(uri.getScheme()); - - // Is it the same server? - if (!Request.getServerName(request).equalsIgnoreCase(uri.getHost())) - return url; - if (Request.getServerPort(request) != port) - return url; - if (request.getContext() != null && !path.startsWith(request.getContext().getContextPath())) - return url; - } - - String sessionURLPrefix = sessionManager.getSessionIdPathParameterNamePrefix(); - if (sessionURLPrefix == null) - return url; - - if (url == null) - return null; - - // should not encode if cookies in evidence - if ((sessionManager.isUsingCookies() && httpServletRequest.isRequestedSessionIdFromCookie()) || !sessionManager.isUsingURLs()) - { - int prefix = url.indexOf(sessionURLPrefix); - if (prefix != -1) - { - int suffix = url.indexOf("?", prefix); - if (suffix < 0) - suffix = url.indexOf("#", prefix); - - if (suffix <= prefix) - return url.substring(0, prefix); - return url.substring(0, prefix) + url.substring(suffix); - } - return url; - } - - // get session; - HttpSession session = httpServletRequest.getSession(false); - - // no session - if (session == null || !(session instanceof Session.API)) - return url; - - // invalid session - Session.API api = (Session.API)session; - - if (!api.getSession().isValid()) - return url; - - String id = api.getSession().getExtendedId(); - - if (uri == null) - uri = HttpURI.from(url); - - // Already encoded - int prefix = url.indexOf(sessionURLPrefix); - if (prefix != -1) - { - int suffix = url.indexOf("?", prefix); - if (suffix < 0) - suffix = url.indexOf("#", prefix); - - if (suffix <= prefix) - return url.substring(0, prefix + sessionURLPrefix.length()) + id; - return url.substring(0, prefix + sessionURLPrefix.length()) + id + - url.substring(suffix); - } - - // edit the session - int suffix = url.indexOf('?'); - if (suffix < 0) - suffix = url.indexOf('#'); - if (suffix < 0) - { - return url + - ((HttpScheme.HTTPS.is(uri.getScheme()) || HttpScheme.HTTP.is(uri.getScheme())) && uri.getPath() == null ? "/" : "") + //if no path, insert the root path - sessionURLPrefix + id; - } - - return url.substring(0, suffix) + - ((HttpScheme.HTTPS.is(uri.getScheme()) || HttpScheme.HTTP.is(uri.getScheme())) && uri.getPath() == null ? "/" : "") + //if no path so insert the root path - sessionURLPrefix + id + url.substring(suffix); + return sessionManager.encodeURI(_response.getServletContextRequest(), url, getResponse().getServletContextRequest().getServletApiRequest().isRequestedSessionIdFromCookie()); } @Override diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletChannel.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletChannel.java index 0ca08507cb27..8ae4528407c4 100644 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletChannel.java +++ b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletChannel.java @@ -29,7 +29,6 @@ import jakarta.servlet.RequestDispatcher; import org.eclipse.jetty.ee10.servlet.ServletRequestState.Action; -import org.eclipse.jetty.ee10.servlet.security.Authentication; import org.eclipse.jetty.http.BadMessageException; import org.eclipse.jetty.http.HttpFields; import org.eclipse.jetty.http.HttpHeader; @@ -39,6 +38,7 @@ import org.eclipse.jetty.io.Connection; import org.eclipse.jetty.io.EndPoint; import org.eclipse.jetty.io.QuietException; +import org.eclipse.jetty.security.AuthenticationState; import org.eclipse.jetty.server.Connector; import org.eclipse.jetty.server.CustomRequestLog; import org.eclipse.jetty.server.HttpConfiguration; @@ -422,7 +422,7 @@ public boolean handle() ServletHandler servletHandler = _context.getServletContextHandler().getServletHandler(); ServletHandler.MappedServlet mappedServlet = _servletContextRequest._mappedServlet; - mappedServlet.handle(servletHandler, Request.getPathInContext(_servletContextRequest), _servletContextRequest.getHttpServletRequest(), _servletContextRequest.getHttpServletResponse()); + mappedServlet.handle(servletHandler, Request.getPathInContext(_servletContextRequest), _servletContextRequest.getServletApiRequest(), _servletContextRequest.getHttpServletResponse()); }); break; @@ -653,7 +653,7 @@ private void dispatch(Dispatchable dispatchable) throws Exception try { _servletContextRequest.getResponse().getHttpOutput().reopen(); - _context.getServletContextHandler().requestInitialized(_servletContextRequest, _servletContextRequest.getHttpServletRequest()); + _context.getServletContextHandler().requestInitialized(_servletContextRequest, _servletContextRequest.getServletApiRequest()); getHttpOutput().reopen(); _combinedListener.onBeforeDispatch(_servletContextRequest); dispatchable.dispatch(); @@ -666,7 +666,7 @@ private void dispatch(Dispatchable dispatchable) throws Exception finally { _combinedListener.onAfterDispatch(_servletContextRequest); - _context.getServletContextHandler().requestDestroyed(_servletContextRequest, _servletContextRequest.getHttpServletRequest()); + _context.getServletContextHandler().requestDestroyed(_servletContextRequest, _servletContextRequest.getServletApiRequest()); } } @@ -688,20 +688,20 @@ protected void handleException(Throwable failure) if (quiet != null || !getServer().isRunning()) { if (LOG.isDebugEnabled()) - LOG.debug(_servletContextRequest.getHttpServletRequest().getRequestURI(), failure); + LOG.debug(_servletContextRequest.getServletApiRequest().getRequestURI(), failure); } else if (noStack != null) { // No stack trace unless there is debug turned on if (LOG.isDebugEnabled()) - LOG.warn("handleException {}", _servletContextRequest.getHttpServletRequest().getRequestURI(), failure); + LOG.warn("handleException {}", _servletContextRequest.getServletApiRequest().getRequestURI(), failure); else - LOG.warn("handleException {} {}", _servletContextRequest.getHttpServletRequest().getRequestURI(), noStack.toString()); + LOG.warn("handleException {} {}", _servletContextRequest.getServletApiRequest().getRequestURI(), noStack.toString()); } else { ServletContextRequest request = _servletContextRequest; - LOG.warn(request == null ? "unknown request" : request.getHttpServletRequest().getRequestURI(), failure); + LOG.warn(request == null ? "unknown request" : request.getServletApiRequest().getRequestURI(), failure); } if (isCommitted()) @@ -818,9 +818,9 @@ public void onCompleted() if (getServer().getRequestLog() != null) { - Authentication authentication = apiRequest.getAuthentication(); - if (authentication instanceof Authentication.User userAuthentication) - _servletContextRequest.setAttribute(CustomRequestLog.USER_NAME, userAuthentication.getUserIdentity().getUserPrincipal().getName()); + AuthenticationState authenticationState = apiRequest.getAuthentication(); + if (authenticationState instanceof AuthenticationState.Succeeded succeededAuthentication) + _servletContextRequest.setAttribute(CustomRequestLog.USER_NAME, succeededAuthentication.getUserIdentity().getUserPrincipal().getName()); String realPath = apiRequest.getServletContext().getRealPath(Request.getPathInContext(_servletContextRequest)); _servletContextRequest.setAttribute(CustomRequestLog.REAL_PATH, realPath); diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletContextHandler.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletContextHandler.java index 7fabefc9131a..acd3a871dbbf 100644 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletContextHandler.java +++ b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletContextHandler.java @@ -67,12 +67,12 @@ import jakarta.servlet.http.HttpSessionBindingListener; import jakarta.servlet.http.HttpSessionIdListener; import jakarta.servlet.http.HttpSessionListener; -import org.eclipse.jetty.ee10.servlet.security.ConstraintAware; -import org.eclipse.jetty.ee10.servlet.security.ConstraintMapping; +import org.eclipse.jetty.ee.security.ConstraintAware; +import org.eclipse.jetty.ee.security.ConstraintMapping; import org.eclipse.jetty.ee10.servlet.security.ConstraintSecurityHandler; -import org.eclipse.jetty.ee10.servlet.security.SecurityHandler; import org.eclipse.jetty.http.HttpURI; import org.eclipse.jetty.http.pathmap.MatchedResource; +import org.eclipse.jetty.security.SecurityHandler; import org.eclipse.jetty.server.Context; import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.Request; @@ -91,7 +91,9 @@ import org.eclipse.jetty.util.URIUtil; import org.eclipse.jetty.util.annotation.ManagedAttribute; import org.eclipse.jetty.util.annotation.ManagedObject; +import org.eclipse.jetty.util.component.ClassLoaderDump; import org.eclipse.jetty.util.component.ContainerLifeCycle; +import org.eclipse.jetty.util.component.Dumpable; import org.eclipse.jetty.util.component.DumpableCollection; import org.eclipse.jetty.util.component.Environment; import org.eclipse.jetty.util.component.Graceful; @@ -276,6 +278,8 @@ public ServletContextHandler(Container parent, String contextPath, SessionHandle _securityHandler = securityHandler; _servletHandler = servletHandler; + setErrorHandler(errorHandler); + _objFactory = new DecoratedObjectFactory(); addBean(_objFactory, true); @@ -304,9 +308,10 @@ public InvocationType getInvocationType() @Override public void dump(Appendable out, String indent) throws IOException { - // TODO almost certainly this is wrong - super.dump(out, indent); dumpObjects(out, indent, + new ClassLoaderDump(getClassLoader()), + Dumpable.named("context " + this, getContext()), + Dumpable.named("handler attributes " + this, getContext().getPersistentAttributes()), new DumpableCollection("initparams " + this, getInitParams().entrySet())); } @@ -726,8 +731,7 @@ public String getLocaleEncoding(String locale) { if (_localeEncodingMap == null) return null; - String encoding = _localeEncodingMap.get(locale); - return encoding; + return _localeEncodingMap.get(locale); } /** @@ -837,30 +841,10 @@ public Set getResourcePaths(String path) return Collections.emptySet(); } - private String normalizeHostname(String host) - { - if (host == null) - return null; - int connectorIndex = host.indexOf('@'); - String connector = null; - if (connectorIndex > 0) - { - host = host.substring(0, connectorIndex); - connector = host.substring(connectorIndex); - } - - if (host.endsWith(".")) - host = host.substring(0, host.length() - 1); - if (connector != null) - host += connector; - - return host; - } - /** * Listener for all threads entering context scope, including async IO callbacks */ - public static interface ServletContextScopeListener extends EventListener + public interface ServletContextScopeListener extends EventListener { /** * @param context The context being entered @@ -1194,7 +1178,7 @@ protected ContextResponse wrapResponse(ContextRequest request, Response response protected boolean handleByContextHandler(String pathInContext, ContextRequest request, Response response, Callback callback) { ServletContextRequest scopedRequest = Request.as(request, ServletContextRequest.class); - DispatcherType dispatch = scopedRequest.getHttpServletRequest().getDispatcherType(); + DispatcherType dispatch = scopedRequest.getServletApiRequest().getDispatcherType(); if (dispatch == DispatcherType.REQUEST && isProtectedTarget(scopedRequest.getDecodedPathInContext())) { Response.writeError(request, response, callback, HttpServletResponse.SC_NOT_FOUND, null); @@ -1320,7 +1304,7 @@ protected void startContext() throws Exception _startListeners = true; String managedAttributes = _initParams.get(MANAGED_ATTRIBUTES); if (managedAttributes != null) - addEventListener(new ManagedAttributeListener((ServletContextHandler)this, StringUtil.csvSplit(managedAttributes))); + addEventListener(new ManagedAttributeListener(this, StringUtil.csvSplit(managedAttributes))); super.doStart(); @@ -1545,7 +1529,7 @@ protected void addRoles(String... roleNames) if (_securityHandler != null && _securityHandler instanceof ConstraintAware) { HashSet union = new HashSet<>(); - Set existing = ((ConstraintAware)_securityHandler).getRoles(); + Set existing = ((ConstraintAware)_securityHandler).getKnownRoles(); if (existing != null) union.addAll(existing); union.addAll(Arrays.asList(roleNames)); @@ -1845,7 +1829,7 @@ public String getIsXml() } @Override - public java.util.Collection getIncludePreludes() + public java.util.Collection getIncludePreludes() { return new ArrayList<>(_includePreludes); //must be a copy } @@ -1857,7 +1841,7 @@ public void addIncludePrelude(String prelude) } @Override - public java.util.Collection getIncludeCodas() + public java.util.Collection getIncludeCodas() { return new ArrayList<>(_includeCodas); //must be a copy } @@ -1969,7 +1953,7 @@ public JspConfig() } @Override - public java.util.Collection getTaglibs() + public java.util.Collection getTaglibs() { return new ArrayList<>(_taglibs); } @@ -1980,7 +1964,7 @@ public void addTaglibDescriptor(TaglibDescriptor d) } @Override - public java.util.Collection getJspPropertyGroups() + public java.util.Collection getJspPropertyGroups() { return new ArrayList<>(_jspPropertyGroups); } @@ -2382,8 +2366,7 @@ public T createInstance(Class clazz) throws ServletException { try { - T result = getContext().decorate(clazz.getDeclaredConstructor().newInstance()); - return result; + return getContext().decorate(clazz.getDeclaredConstructor().newInstance()); } catch (Exception e) { @@ -3032,7 +3015,7 @@ public String getContextPath() @Override public String toString() { - return "ServletContext@" + ServletContextHandler.this.toString(); + return "ServletContext@" + ServletContextHandler.this; } public void checkListener(Class listener) throws IllegalStateException @@ -3119,7 +3102,7 @@ public void addServletContainerInitializerHolders(ServletContainerInitializerHol addBean(holder, true); } - public java.util.Collection getServletContainerInitializerHolders() + public java.util.Collection getServletContainerInitializerHolders() { return getContainedBeans(ServletContainerInitializerHolder.class); } @@ -3145,17 +3128,4 @@ protected void doStop() throws Exception super.doStop(); } } - - private static class Caller extends SecurityManager - { - public ClassLoader getCallerClassLoader(int depth) - { - if (depth < 0) - return null; - Class[] classContext = getClassContext(); - if (classContext.length <= depth) - return null; - return classContext[depth].getClassLoader(); - } - } } diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletContextRequest.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletContextRequest.java index 1acce35e0019..519064b8cd0e 100644 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletContextRequest.java +++ b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletContextRequest.java @@ -15,6 +15,7 @@ import java.nio.charset.Charset; import java.util.ArrayList; +import java.util.Collections; import java.util.EventListener; import java.util.HashSet; import java.util.List; @@ -24,7 +25,6 @@ import jakarta.servlet.ServletRequest; import jakarta.servlet.ServletRequestAttributeListener; import jakarta.servlet.ServletRequestWrapper; -import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import org.eclipse.jetty.http.HttpCookie; import org.eclipse.jetty.http.HttpFields; @@ -51,8 +51,8 @@ public class ServletContextRequest extends ContextRequest static final int INPUT_STREAM = 1; static final int INPUT_READER = 2; - static final Fields NO_PARAMS = new Fields(new Fields(), true); - static final Fields BAD_PARAMS = new Fields(new Fields(), true); + static final Fields NO_PARAMS = new Fields(Collections.emptyMap()); + static final Fields BAD_PARAMS = new Fields(Collections.emptyMap()); public static ServletContextRequest getServletContextRequest(ServletRequest request) { @@ -75,7 +75,7 @@ public static ServletContextRequest getServletContextRequest(ServletRequest requ } private final List _requestAttributeListeners = new ArrayList<>(); - private final ServletApiRequest _httpServletRequest; + private final ServletApiRequest _servletApiRequest; private final ServletContextResponse _response; final ServletHandler.MappedServlet _mappedServlet; private final HttpInput _httpInput; @@ -100,7 +100,7 @@ protected ServletContextRequest( { super(servletContextApi.getContext(), request); _servletChannel = servletChannel; - _httpServletRequest = newServletApiRequest(); + _servletApiRequest = newServletApiRequest(); _mappedServlet = matchedResource.getResource(); _httpInput = _servletChannel.getHttpInput(); _decodedPathInContext = decodedPathInContext; @@ -260,14 +260,9 @@ ServletChannel getServletChannel() return _servletChannel; } - public HttpServletRequest getHttpServletRequest() - { - return _httpServletRequest; - } - public ServletApiRequest getServletApiRequest() { - return _httpServletRequest; + return _servletApiRequest; } public HttpServletResponse getHttpServletResponse() diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletContextResponse.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletContextResponse.java index e0e2e203c38c..00cb6e294d76 100644 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletContextResponse.java +++ b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletContextResponse.java @@ -48,11 +48,9 @@ protected enum OutputType NONE, STREAM, WRITER } - private final Response _response; private final HttpOutput _httpOutput; private final ServletChannel _servletChannel; private final ServletApiResponse _httpServletResponse; - private final ServletContextRequest _request; private String _characterEncoding; private String _contentType; private MimeTypes.Type _mimeType; @@ -81,9 +79,7 @@ public static ServletContextResponse getServletContextResponse(ServletResponse r public ServletContextResponse(ServletChannel servletChannel, ServletContextRequest request, Response response) { - super(servletChannel.getContext(), response.getRequest(), response); - _request = request; - _response = response; + super(servletChannel.getContext(), request, response); _httpOutput = new HttpOutput(response, servletChannel); _servletChannel = servletChannel; _httpServletResponse = newServletApiResponse(); @@ -166,7 +162,7 @@ protected OutputType getOutputType() protected ServletContextRequest getServletContextRequest() { - return _request; + return (ServletContextRequest)getRequest(); } protected ServletApiResponse newServletApiResponse() @@ -312,23 +308,22 @@ public void reset() { switch (cb) { - case CLOSE: - headers.put(HttpHeader.CONNECTION, HttpHeaderValue.CLOSE.toString()); - break; - case KEEP_ALIVE: - if (HttpVersion.HTTP_1_0.is(_request.getConnectionMetaData().getProtocol())) + case CLOSE -> headers.put(HttpHeader.CONNECTION, HttpHeaderValue.CLOSE.toString()); + case KEEP_ALIVE -> + { + if (HttpVersion.HTTP_1_0.is(getRequest().getConnectionMetaData().getProtocol())) headers.put(HttpHeader.CONNECTION, HttpHeaderValue.KEEP_ALIVE.toString()); - break; - case TE: - headers.put(HttpHeader.CONNECTION, HttpHeaderValue.TE.toString()); - break; - default: + } + case TE -> headers.put(HttpHeader.CONNECTION, HttpHeaderValue.TE.toString()); + default -> + { + } } } } // recreate session cookies - HttpSession session = _request.getHttpServletRequest().getSession(false); + HttpSession session = getServletContextRequest().getServletApiRequest().getSession(false); if (session != null && session.isNew()) { SessionHandler sh = _servletChannel.getContextHandler().getSessionHandler(); @@ -337,9 +332,9 @@ public void reset() ManagedSession managedSession = SessionHandler.ServletSessionApi.getSession(session); if (managedSession != null) { - HttpCookie c = sh.getSessionCookie(managedSession, _request.isSecure()); + HttpCookie c = sh.getSessionCookie(managedSession, getRequest().isSecure()); if (c != null) - Response.addCookie(_response, c); + Response.addCookie(getWrapped(), c); } else { @@ -368,25 +363,16 @@ public void resetContent() switch (field.getHeader()) { - case CONTENT_TYPE: - case CONTENT_LENGTH: - case CONTENT_ENCODING: - case CONTENT_LANGUAGE: - case CONTENT_RANGE: - case CONTENT_MD5: - case CONTENT_LOCATION: - case TRANSFER_ENCODING: - case CACHE_CONTROL: - case LAST_MODIFIED: - case EXPIRES: - case VARY: - i.remove(); - continue; - case ETAG: + case CONTENT_TYPE, CONTENT_LENGTH, CONTENT_ENCODING, CONTENT_LANGUAGE, CONTENT_RANGE, CONTENT_MD5, + CONTENT_LOCATION, TRANSFER_ENCODING, CACHE_CONTROL, LAST_MODIFIED, EXPIRES, VARY -> i.remove(); + case ETAG -> + { if (getStatus() != HttpStatus.NOT_MODIFIED_304) i.remove(); - continue; - default: + } + default -> + { + } } } } @@ -418,7 +404,7 @@ public String getCharacterEncoding(boolean setContentType) return _mimeType.getCharsetString(); // Try charset assumed from content type (assumed charsets are not added to content type header). - MimeTypes mimeTypes = _request.getContext().getMimeTypes(); + MimeTypes mimeTypes = getRequest().getContext().getMimeTypes(); encoding = mimeTypes.getCharsetAssumedFromContentType(_contentType); if (encoding != null) return encoding; @@ -486,12 +472,12 @@ protected void setCharacterEncoding(String encoding, EncodingFrom from) { _mimeType = _mimeType.getBaseType(); _contentType = _mimeType.asString(); - _response.getHeaders().put(_mimeType.getContentTypeField()); + getWrapped().getHeaders().put(_mimeType.getContentTypeField()); } else if (_contentType != null) { _contentType = MimeTypes.getContentTypeWithoutCharset(_contentType); - _response.getHeaders().put(HttpHeader.CONTENT_TYPE, _contentType); + getWrapped().getHeaders().put(HttpHeader.CONTENT_TYPE, _contentType); } } } @@ -504,14 +490,14 @@ else if (_contentType != null) _contentType = _mimeType.getBaseType().asString() + ";charset=" + _characterEncoding; _mimeType = MimeTypes.CACHE.get(_contentType); if (_mimeType == null || HttpGenerator.__STRICT) - _response.getHeaders().put(HttpHeader.CONTENT_TYPE, _contentType); + getWrapped().getHeaders().put(HttpHeader.CONTENT_TYPE, _contentType); else - _response.getHeaders().put(_mimeType.getContentTypeField()); + getWrapped().getHeaders().put(_mimeType.getContentTypeField()); } else if (_contentType != null) { _contentType = MimeTypes.getContentTypeWithoutCharset(_contentType) + ";charset=" + _characterEncoding; - _response.getHeaders().put(HttpHeader.CONTENT_TYPE, _contentType); + getWrapped().getHeaders().put(HttpHeader.CONTENT_TYPE, _contentType); } } } diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletHandler.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletHandler.java index 6d1abc14dfc1..7b06a9df8953 100644 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletHandler.java +++ b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletHandler.java @@ -43,14 +43,14 @@ import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; -import org.eclipse.jetty.ee10.servlet.security.IdentityService; -import org.eclipse.jetty.ee10.servlet.security.SecurityHandler; import org.eclipse.jetty.http.pathmap.MappedResource; import org.eclipse.jetty.http.pathmap.MatchedPath; import org.eclipse.jetty.http.pathmap.MatchedResource; import org.eclipse.jetty.http.pathmap.PathMappings; import org.eclipse.jetty.http.pathmap.PathSpec; import org.eclipse.jetty.http.pathmap.ServletPathSpec; +import org.eclipse.jetty.security.IdentityService; +import org.eclipse.jetty.security.SecurityHandler; import org.eclipse.jetty.server.Context; import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.Request; diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletHolder.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletHolder.java index 41962f99f3e8..a3079dc50cc3 100644 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletHolder.java +++ b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletHolder.java @@ -42,8 +42,9 @@ import jakarta.servlet.ServletSecurityElement; import jakarta.servlet.UnavailableException; import jakarta.servlet.http.HttpServletResponse; -import org.eclipse.jetty.ee10.servlet.security.IdentityService; -import org.eclipse.jetty.ee10.servlet.security.RunAsToken; +import org.eclipse.jetty.security.AuthenticationState; +import org.eclipse.jetty.security.IdentityService; +import org.eclipse.jetty.security.UserIdentity; import org.eclipse.jetty.server.handler.ContextHandler; import org.eclipse.jetty.util.Loader; import org.eclipse.jetty.util.NanoTime; @@ -605,7 +606,7 @@ private void initServlet() IdentityService identityService = getServletHandler().getIdentityService(); if (identityService != null) { - RunAsToken runAsToken = identityService.newRunAsToken(_runAsRole); + IdentityService.RunAsToken runAsToken = identityService.newRunAsToken(_runAsRole); servlet = new RunAs(servlet, identityService, runAsToken); } } @@ -1312,9 +1313,9 @@ public String toString() private static class RunAs extends Wrapper { final IdentityService _identityService; - final RunAsToken _runAsToken; + final IdentityService.RunAsToken _runAsToken; - public RunAs(Servlet servlet, IdentityService identityService, RunAsToken runAsToken) + public RunAs(Servlet servlet, IdentityService identityService, IdentityService.RunAsToken runAsToken) { super(servlet); _identityService = identityService; @@ -1324,43 +1325,31 @@ public RunAs(Servlet servlet, IdentityService identityService, RunAsToken runAsT @Override public void init(ServletConfig config) throws ServletException { - Object oldRunAs = _identityService.setRunAs(_identityService.getSystemUserIdentity(), _runAsToken); - try + try (IdentityService.Association ignored = _identityService.associate(_identityService.getSystemUserIdentity(), _runAsToken)) { getWrapped().init(config); } - finally - { - _identityService.unsetRunAs(oldRunAs); - } } @Override - public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException + public void service(ServletRequest request, ServletResponse res) throws ServletException, IOException { - Object oldRunAs = _identityService.setRunAs(_identityService.getSystemUserIdentity(), _runAsToken); - try + ServletContextRequest servletContextRequest = ServletContextRequest.getServletContextRequest(request); + AuthenticationState authenticationState = AuthenticationState.getAuthenticationState(servletContextRequest); + UserIdentity userIdentity = (authenticationState instanceof AuthenticationState.Succeeded user) ? user.getUserIdentity() : _identityService.getSystemUserIdentity(); + try (IdentityService.Association ignored = _identityService.associate(userIdentity, _runAsToken)) { - getWrapped().service(req, res); - } - finally - { - _identityService.unsetRunAs(oldRunAs); + getWrapped().service(request, res); } } @Override public void destroy() { - Object oldRunAs = _identityService.setRunAs(_identityService.getSystemUserIdentity(), _runAsToken); - try + try (IdentityService.Association ignored = _identityService.associate(_identityService.getSystemUserIdentity(), _runAsToken)) { getWrapped().destroy(); } - finally - { - _identityService.unsetRunAs(oldRunAs); - } } } diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletRequestState.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletRequestState.java index d61767c3a626..bb251ad9c40f 100644 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletRequestState.java +++ b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletRequestState.java @@ -867,7 +867,7 @@ public void sendError(int code, String message) // - after both unhandle and complete for async ServletContextRequest servletContextRequest = _servletChannel.getServletContextRequest(); - HttpServletRequest httpServletRequest = servletContextRequest.getHttpServletRequest(); + HttpServletRequest httpServletRequest = servletContextRequest.getServletApiRequest(); final Request request = _servletChannel.getServletContextRequest(); final Response response = _servletChannel.getResponse(); diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/SessionHandler.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/SessionHandler.java index 5652e7304992..cdb3c751e2fd 100644 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/SessionHandler.java +++ b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/SessionHandler.java @@ -58,8 +58,6 @@ public class SessionHandler extends AbstractSessionManager implements Handler.Si final List _sessionIdListeners = new CopyOnWriteArrayList<>(); private final SessionCookieConfig _cookieConfig = new CookieConfig(); - private ServletContextHandler.ServletScopedContext _servletContextHandlerContext; - private Server _server; private Handler _handler; @@ -259,7 +257,7 @@ public void setSecure(boolean secure) private void checkState() { - if (_servletContextHandlerContext != null && _servletContextHandlerContext.getServletContextHandler().isAvailable()) + if (isStarted()) throw new IllegalStateException("CookieConfig cannot be set after ServletContext is started"); } } @@ -387,8 +385,7 @@ public SessionHandler() @Override public ManagedSession getManagedSession(Request request) { - ServletApiRequest apiRequest = Request.get(request, ServletContextRequest.class, ServletContextRequest::getServletApiRequest); - return apiRequest == null ? null : apiRequest.getServletContextRequest().getManagedSession(); + return Request.as(request, ServletContextRequest.class).getManagedSession(); } /** @@ -440,9 +437,6 @@ public boolean removeEventListener(EventListener listener) public void doStart() throws Exception { super.doStart(); - if (!(getContext() instanceof ServletContextHandler.ServletScopedContext)) - throw new IllegalStateException("!ServlerContextHandler.Context"); - _servletContextHandlerContext = (ServletContextHandler.ServletScopedContext)getContext(); configureCookies(); } diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/AbstractUserAuthentication.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/AbstractUserAuthentication.java deleted file mode 100644 index 273d2ed4b6b1..000000000000 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/AbstractUserAuthentication.java +++ /dev/null @@ -1,104 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.servlet.security; - -import java.io.Serializable; -import java.util.Set; - -import jakarta.servlet.ServletRequest; -import org.eclipse.jetty.ee10.servlet.security.Authentication.User; -import org.eclipse.jetty.ee10.servlet.security.authentication.LoginAuthenticator; -import org.eclipse.jetty.server.Request; - -/** - * AbstractUserAuthentication - * - * - * Base class for representing an authenticated user. - */ -public abstract class AbstractUserAuthentication implements User, Serializable -{ - private static final long serialVersionUID = -6290411814232723403L; - protected String _method; - protected transient UserIdentity _userIdentity; - - public AbstractUserAuthentication(String method, UserIdentity userIdentity) - { - _method = method; - _userIdentity = userIdentity; - } - - @Override - public String getAuthMethod() - { - return _method; - } - - @Override - public UserIdentity getUserIdentity() - { - return _userIdentity; - } - - @Override - public boolean isUserInRole(String role) - { - //Servlet Spec 3.1 pg 125 if testing special role ** - if ("**".equals(role.trim())) - { - //if ** is NOT a declared role name, the we return true - //as the user is authenticated. If ** HAS been declared as a - //role name, then we have to check if the user has that role - if (!declaredRolesContains("**")) - return true; - else - return _userIdentity.isUserInRole(role); - } - - return _userIdentity.isUserInRole(role); - } - - public boolean declaredRolesContains(String roleName) - { - SecurityHandler security = SecurityHandler.getCurrentSecurityHandler(); - if (security == null) - return false; - - if (security instanceof ConstraintAware) - { - Set declaredRoles = ((ConstraintAware)security).getRoles(); - return (declaredRoles != null) && declaredRoles.contains(roleName); - } - - return false; - } - - @Override - public Authentication logout(Request request) - { - SecurityHandler security = SecurityHandler.getCurrentSecurityHandler(); - if (security != null) - { - security.logout(this); - Authenticator authenticator = security.getAuthenticator(); - if (authenticator instanceof LoginAuthenticator) - { - ((LoginAuthenticator)authenticator).logout(request); - return new LoggedOutAuthentication((LoginAuthenticator)authenticator); - } - } - - return Authentication.UNAUTHENTICATED; - } -} diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/Authentication.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/Authentication.java deleted file mode 100644 index 0da1f4f5b32d..000000000000 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/Authentication.java +++ /dev/null @@ -1,218 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.servlet.security; - -import org.eclipse.jetty.ee10.servlet.QuietServletException; -import org.eclipse.jetty.server.Request; -import org.eclipse.jetty.server.Response; -import org.eclipse.jetty.util.Callback; - -/** - * The Authentication state of a request. - *

- * The Authentication state can be one of several sub-types that - * reflects where the request is in the many different authentication - * cycles. Authentication might not yet be checked or it might be checked - * and failed, checked and deferred or succeeded. - */ -public interface Authentication -{ - - public static class Failed extends QuietServletException - { - public Failed(String message) - { - super(message); - } - } - - /** - * A successful Authentication with User information. - */ - public interface User extends LogoutAuthentication - { - String getAuthMethod(); - - UserIdentity getUserIdentity(); - - boolean isUserInRole(String role); - } - - /** - * An authentication that is capable of performing a programmatic login - * operation. - */ - public interface LoginAuthentication extends Authentication - { - - /** - * Login with the LOGIN authenticator - * - * @param username the username - * @param password the password - * @param request the request - * @return The new Authentication state - */ - Authentication login(String username, Object password, Request request); - } - - /** - * An authentication that is capable of performing a programmatic - * logout operation. - */ - public interface LogoutAuthentication extends Authentication - { - - /** - * Remove any user information that may be present in the request - * such that a call to getUserPrincipal/getRemoteUser will return null. - * - * @param request the request - * @return NoAuthentication if we successfully logged out - */ - Authentication logout(Request request); - } - - /** - * A deferred authentication with methods to progress - * the authentication process. - */ - public interface Deferred extends LoginAuthentication, LogoutAuthentication - { - - /** - * Authenticate if possible without sending a challenge. - * This is used to check credentials that have been sent for - * non-mandatory authentication. - * - * @param request the request - * @return The new Authentication state. - */ - Authentication authenticate(Request request); - - /** - * Authenticate and possibly send a challenge. - * This is used to initiate authentication for previously - * non-mandatory authentication. - * - * @param request the request - * @param response the response - * @return The new Authentication state. - */ - Authentication authenticate(Request request, Response response, Callback callback); - } - - /** - * Authentication Response sent state. - * Responses are sent by authenticators either to issue an - * authentication challenge or on successful authentication in - * order to redirect the user to the original URL. - */ - public interface ResponseSent extends Authentication - { - } - - /** - * An Authentication Challenge has been sent. - */ - public interface Challenge extends ResponseSent - { - } - - /** - * An Authentication Failure has been sent. - */ - public interface Failure extends ResponseSent - { - } - - public interface SendSuccess extends ResponseSent - { - } - - /** - * After a logout, the authentication reverts to a state - * where it is possible to programmatically log in again. - */ - public interface NonAuthenticated extends LoginAuthentication - { - } - - /** - * Unauthenticated state. - *

- * This convenience instance is for non mandatory authentication where credentials - * have been presented and checked, but failed authentication. - */ - public static final Authentication UNAUTHENTICATED = - new Authentication() - { - @Override - public String toString() - { - return "UNAUTHENTICATED"; - } - }; - - /** - * Authentication not checked - *

- * This convenience instance us for non mandatory authentication when no - * credentials are present to be checked. - */ - public static final Authentication NOT_CHECKED = new Authentication() - { - @Override - public String toString() - { - return "NOT CHECKED"; - } - }; - - /** - * Authentication challenge sent. - *

- * This convenience instance is for when an authentication challenge has been sent. - */ - public static final Authentication SEND_CONTINUE = new Authentication.Challenge() - { - @Override - public String toString() - { - return "CHALLENGE"; - } - }; - - /** - * Authentication failure sent. - *

- * This convenience instance is for when an authentication failure has been sent. - */ - public static final Authentication SEND_FAILURE = new Authentication.Failure() - { - @Override - public String toString() - { - return "FAILURE"; - } - }; - public static final Authentication SEND_SUCCESS = new SendSuccess() - { - @Override - public String toString() - { - return "SEND_SUCCESS"; - } - }; -} diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/Authenticator.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/Authenticator.java deleted file mode 100644 index 0f8cf052a184..000000000000 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/Authenticator.java +++ /dev/null @@ -1,131 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.servlet.security; - -import java.util.Set; - -import jakarta.servlet.ServletContext; -import org.eclipse.jetty.ee10.servlet.security.Authentication.User; -import org.eclipse.jetty.server.Request; -import org.eclipse.jetty.server.Response; -import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.util.Callback; - -/** - * Authenticator Interface - *

- * An Authenticator is responsible for checking requests and sending - * response challenges in order to authenticate a request. - * Various types of {@link Authentication} are returned in order to - * signal the next step in authentication. - * - * @version $Rev: 4793 $ $Date: 2009-03-19 00:00:01 +0100 (Thu, 19 Mar 2009) $ - */ -public interface Authenticator -{ - - /** - * Configure the Authenticator - * - * @param configuration the configuration - */ - void setConfiguration(AuthConfiguration configuration); - - /** - * @return The name of the authentication method - */ - String getAuthMethod(); - - /** - * Called prior to validateRequest. The authenticator can - * manipulate the request to update it with information that - * can be inspected prior to validateRequest being called. - * The primary purpose of this method is to satisfy the Servlet - * Spec 3.1 section 13.6.3 on handling Form authentication - * where the http method of the original request causing authentication - * is not the same as the http method resulting from the redirect - * after authentication. - * @param request the request to prepare for authentication - */ - void prepareRequest(Request request); - - /** - * Validate a request - * - * @param request The request - * @param response The response - * @param callback the callback to use for writing a response - * @param mandatory True if authentication is mandatory. - * @return An Authentication. If Authentication is successful, this will be a {@link Authentication.User}. If a response has - * been sent by the Authenticator (which can be done for both successful and unsuccessful authentications), then the result will - * implement {@link Authentication.ResponseSent}. If Authentication is not mandatory, then a - * {@link Authentication.Deferred} may be returned. - * @throws ServerAuthException if unable to validate request - */ - Authentication validateRequest(Request request, Response response, Callback callback, boolean mandatory) throws ServerAuthException; - - /** - * is response secure - * - * @param request the request - * @param response the response - * @param callback the callback to write a response - * @param mandatory if security is mandatory - * @param validatedUser the user that was validated - * @return true if response is secure - * @throws ServerAuthException if unable to test response - */ - boolean secureResponse(Request request, Response response, Callback callback, boolean mandatory, User validatedUser) throws ServerAuthException; - - /** - * Authenticator Configuration - */ - interface AuthConfiguration - { - String getAuthMethod(); - - String getRealmName(); - - /** - * Get a SecurityHandler init parameter - * - * @param param parameter name - * @return Parameter value or null - * @see SecurityHandler#getInitParameter(String) - */ - String getInitParameter(String param); - - /** - * Get a SecurityHandler init parameter names - * - * @return Set of parameter names - * @see SecurityHandler#getInitParameterNames() - */ - Set getInitParameterNames(); - - LoginService getLoginService(); - - IdentityService getIdentityService(); - - boolean isSessionRenewedOnAuthentication(); - } - - /** - * Authenticator Factory - */ - interface Factory - { - Authenticator getAuthenticator(Server server, ServletContext context, AuthConfiguration configuration, IdentityService identityService, LoginService loginService); - } -} diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/ConstraintSecurityHandler.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/ConstraintSecurityHandler.java index c4479f9d1c35..46eb93175fbd 100644 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/ConstraintSecurityHandler.java +++ b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/ConstraintSecurityHandler.java @@ -21,36 +21,31 @@ import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Map.Entry; import java.util.Set; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CopyOnWriteArraySet; +import java.util.stream.Collectors; +import java.util.stream.Stream; import jakarta.servlet.HttpConstraintElement; import jakarta.servlet.HttpMethodConstraintElement; import jakarta.servlet.ServletSecurityElement; import jakarta.servlet.annotation.ServletSecurity.EmptyRoleSemantic; import jakarta.servlet.annotation.ServletSecurity.TransportGuarantee; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; -import org.eclipse.jetty.ee10.servlet.ServletApiRequest; +import org.eclipse.jetty.ee.security.ConstraintAware; +import org.eclipse.jetty.ee.security.ConstraintMapping; import org.eclipse.jetty.ee10.servlet.ServletContextHandler; -import org.eclipse.jetty.ee10.servlet.ServletContextRequest; -import org.eclipse.jetty.http.HttpHeader; -import org.eclipse.jetty.http.HttpStatus; import org.eclipse.jetty.http.pathmap.MappedResource; import org.eclipse.jetty.http.pathmap.MatchedResource; import org.eclipse.jetty.http.pathmap.PathMappings; import org.eclipse.jetty.http.pathmap.PathSpec; -import org.eclipse.jetty.server.HttpConfiguration; +import org.eclipse.jetty.security.Constraint; +import org.eclipse.jetty.security.Constraint.Transport; +import org.eclipse.jetty.security.SecurityHandler; import org.eclipse.jetty.server.Request; -import org.eclipse.jetty.server.Response; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.handler.ContextHandler; -import org.eclipse.jetty.util.Callback; -import org.eclipse.jetty.util.URIUtil; import org.eclipse.jetty.util.component.DumpableCollection; -import org.eclipse.jetty.util.security.Constraint; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -67,46 +62,47 @@ public class ConstraintSecurityHandler extends SecurityHandler implements Constr private static final String OMISSION_SUFFIX = ".omission"; private static final String ALL_METHODS = "*"; + + public static final String ANY_KNOWN_ROLE = "*"; + public static final String ANY_ROLE = "**"; + private final List _constraintMappings = new CopyOnWriteArrayList<>(); private final List _durableConstraintMappings = new CopyOnWriteArrayList<>(); private final Set _roles = new CopyOnWriteArraySet<>(); - private final PathMappings> _constraintRoles = new PathMappings<>(); + private final PathMappings> _constraintsByPathAndMethod = new PathMappings<>(); private boolean _denyUncoveredMethods = false; - public static Constraint createConstraint() + @Override + protected Constraint getConstraint(String pathInContext, Request request) { - return new Constraint(); - } + MatchedResource> resource = _constraintsByPathAndMethod.getMatched(pathInContext); + if (resource == null) + return null; - public static Constraint createConstraint(Constraint constraint) - { - try - { - return (Constraint)constraint.clone(); - } - catch (CloneNotSupportedException e) + Map mappings = resource.getResource(); + if (mappings == null) + return null; + + String httpMethod = request.getMethod(); + Constraint constraint = mappings.get(httpMethod); + if (constraint == null) { - throw new IllegalStateException(e); + //No specific http-method names matched + //Get info for constraint that matches all methods if it exists + constraint = mappings.get(ALL_METHODS); + + //Get info for constraints that name method omissions where target method name is not omitted + //(ie matches because target method is not omitted, hence considered covered by the constraint) + for (Map.Entry entry : mappings.entrySet()) + { + if (entry.getKey() != null && entry.getKey().endsWith(OMISSION_SUFFIX) && !entry.getKey().contains(httpMethod)) + constraint = combineServletConstraints(constraint, entry.getValue()); + } + + if (constraint == null && isDenyUncoveredHttpMethods()) + constraint = Constraint.FORBIDDEN; } - } - /** - * Create a security constraint - * - * @param name the name of the constraint - * @param authenticate true to authenticate - * @param roles list of roles - * @param dataConstraint the data constraint - * @return the constraint - */ - public static Constraint createConstraint(String name, boolean authenticate, String[] roles, int dataConstraint) - { - Constraint constraint = createConstraint(); - if (name != null) - constraint.setName(name); - constraint.setAuthenticate(authenticate); - constraint.setRoles(roles); - constraint.setDataConstraint(dataConstraint); return constraint; } @@ -133,50 +129,35 @@ public static Constraint createConstraint(String name, HttpConstraintElement ele */ public static Constraint createConstraint(String name, String[] rolesAllowed, EmptyRoleSemantic permitOrDeny, TransportGuarantee transport) { - Constraint constraint = createConstraint(); + Constraint.Builder constraint = new Constraint.Builder(); if (rolesAllowed == null || rolesAllowed.length == 0) { if (permitOrDeny.equals(EmptyRoleSemantic.DENY)) { //Equivalent to with no roles - constraint.setName(name + "-Deny"); - constraint.setAuthenticate(true); + constraint.name(name + "-Deny"); + constraint.authorization(Constraint.Authorization.FORBIDDEN); } else { //Equivalent to no - constraint.setName(name + "-Permit"); - constraint.setAuthenticate(false); + constraint.name(name + "-Permit"); + constraint.authorization(Constraint.Authorization.ALLOWED); } } else { //Equivalent to with list of s - constraint.setAuthenticate(true); - constraint.setRoles(rolesAllowed); - constraint.setName(name + "-RolesAllowed"); + constraint.authorization(Constraint.Authorization.SPECIFIC_ROLE); + constraint.roles(rolesAllowed); + constraint.name(name + "-RolesAllowed"); } //Equivalent to //CONFIDENTIAL - constraint.setDataConstraint((transport.equals(TransportGuarantee.CONFIDENTIAL) ? Constraint.DC_CONFIDENTIAL : Constraint.DC_NONE)); - return constraint; - } - - public static List getConstraintMappingsForPath(String pathSpec, List constraintMappings) - { - if (pathSpec == null || "".equals(pathSpec.trim()) || constraintMappings == null || constraintMappings.size() == 0) - return Collections.emptyList(); + constraint.transport(TransportGuarantee.CONFIDENTIAL.equals(transport) ? Transport.SECURE : Transport.ANY); - List mappings = new ArrayList<>(); - for (ConstraintMapping mapping : constraintMappings) - { - if (pathSpec.equals(mapping.getPathSpec())) - { - mappings.add(mapping); - } - } - return mappings; + return constraint.build(); } /** @@ -271,14 +252,14 @@ public List getConstraintMappings() } @Override - public Set getRoles() + public Set getKnownRoles() { return _roles; } /** * Process the constraints following the combining rules in Servlet 3.0 EA - * spec section 13.7.1 Note that much of the logic is in the RoleInfo class. + * spec section 13.7.1 Note that much of the logic is in the Constraint class. * * @param constraintMappings The constraintMappings to set, from which the set of known roles * is determined. @@ -290,7 +271,7 @@ public void setConstraintMappings(List constraintMappings) /** * Process the constraints following the combining rules in Servlet 3.0 EA - * spec section 13.7.1 Note that much of the logic is in the RoleInfo class. + * spec section 13.7.1 Note that much of the logic is in the Constraint class. * * @param constraintMappings The constraintMappings to set as array, from which the set of known roles * is determined. Needed to retain API compatibility for 7.x @@ -302,7 +283,7 @@ public void setConstraintMappings(ConstraintMapping[] constraintMappings) /** * Process the constraints following the combining rules in Servlet 3.0 EA - * spec section 13.7.1 Note that much of the logic is in the RoleInfo class. + * spec section 13.7.1 Note that much of the logic is in the Constraint class. * * @param constraintMappings The constraintMappings to set. * @param roles The known roles (or null to determine them from the mappings) @@ -325,7 +306,7 @@ public void setConstraintMappings(List constraintMappings, Se roles = new HashSet<>(); for (ConstraintMapping cm : constraintMappings) { - String[] cmr = cm.getConstraint().getRoles(); + Set cmr = cm.getConstraint().getRoles(); if (cmr != null) { for (String r : cmr) @@ -339,9 +320,7 @@ public void setConstraintMappings(List constraintMappings, Se setRoles(roles); if (isStarted()) - { - _constraintMappings.stream().forEach(m -> processConstraintMapping(m)); - } + _constraintMappings.forEach(this::processConstraintMapping); } /** @@ -373,7 +352,7 @@ public void addConstraintMapping(ConstraintMapping mapping) { if ("*".equals(role) || "**".equals(role)) continue; - addRole(role); + addKnownRole(role); } } @@ -382,28 +361,15 @@ public void addConstraintMapping(ConstraintMapping mapping) } @Override - public void addRole(String role) + public void addKnownRole(String role) { - //add to list of declared roles - boolean modified = _roles.add(role); - if (isStarted() && modified) - { - // Add the new role to currently defined any role role infos - for (MappedResource> map : _constraintRoles) - { - for (RoleInfo info : map.getResource().values()) - { - if (info.isAnyRole()) - info.addRole(role); - } - } - } + _roles.add(role); } @Override protected void doStart() throws Exception { - _constraintRoles.reset(); + _constraintsByPathAndMethod.reset(); _constraintMappings.forEach(this::processConstraintMapping); //Servlet Spec 3.1 pg 147 sec 13.8.4.2 log paths for which there are uncovered http methods @@ -416,11 +382,79 @@ protected void doStart() throws Exception protected void doStop() throws Exception { super.doStop(); - _constraintRoles.reset(); + _constraintsByPathAndMethod.reset(); _constraintMappings.clear(); _constraintMappings.addAll(_durableConstraintMappings); } + /** + *

Combine constrains as per the servlet specification. + * This is NOT equivalent to {@link Constraint#combine(Constraint, Constraint)}, which implements + * a more secure combination.

+ * @param constraintA A constraint + * @param constraintB B constraint + * @return The combination as per the servlet specification. + */ + protected Constraint combineServletConstraints(Constraint constraintA, Constraint constraintB) + { + // This method is not identical to Constraint.combine. + // Instead, it implements the bizarre section 13.8.1 of Servlet 6.0 specification + + if (constraintA == null) + return constraintB == null ? Constraint.ALLOWED_ANY_TRANSPORT : constraintB; + if (constraintB == null) + return constraintA; + + // Don't blame me for the following code. Blame Servlet specification + Constraint.Authorization authorizationA = constraintA.getAuthorization(); + if (authorizationA == Constraint.Authorization.INHERIT) + authorizationA = Constraint.Authorization.ALLOWED; + + Set roles = null; + Constraint.Authorization authorizationB = constraintB.getAuthorization(); + Constraint.Authorization authorization = authorizationB == null ? authorizationA : switch (authorizationB) + { + // Forbidden takes precedence + case FORBIDDEN -> Constraint.Authorization.FORBIDDEN; + + // A constraint with no authorization takes precedence over any roles constraints, but not FORBIDDEN + case ALLOWED -> authorizationA == Constraint.Authorization.FORBIDDEN + ? Constraint.Authorization.FORBIDDEN + : Constraint.Authorization.ALLOWED; + + // The "**" role, which is any role (known or otherwise), has precedence over everything but FORBIDDEN and NONE + case ANY_USER -> (authorizationA == Constraint.Authorization.FORBIDDEN || authorizationA == Constraint.Authorization.ALLOWED) + ? authorizationA + : Constraint.Authorization.ANY_USER; + + // The "*" role, which is any known role, only has precedence over SPECIFIC roles + case KNOWN_ROLE -> (authorizationA == Constraint.Authorization.KNOWN_ROLE || authorizationA == Constraint.Authorization.SPECIFIC_ROLE) + ? Constraint.Authorization.KNOWN_ROLE + : authorizationA; + + // Specific roles only combine with other specific roles, otherwise one of the above cases apply + case SPECIFIC_ROLE -> + { + if (authorizationA == Constraint.Authorization.SPECIFIC_ROLE) + roles = Stream.concat(constraintA.getRoles().stream(), constraintB.getRoles().stream()).collect(Collectors.toSet()); + yield authorizationA; + } + + case INHERIT -> authorizationA; + }; + + Transport transportA = constraintA.getTransport(); + Transport transportB = constraintB.getTransport(); + Transport transport = Transport.SECURE.equals(transportA) && Transport.SECURE.equals(transportB) + ? Transport.SECURE : Transport.ANY; + + return Constraint.from( + constraintA.getName() + "|" + constraintB.getName(), + transport, + authorization, + roles); + } + /** * Create and combine the constraint with the existing processed * constraints. @@ -429,14 +463,14 @@ protected void doStop() throws Exception */ protected void processConstraintMapping(ConstraintMapping mapping) { - Map mappings = _constraintRoles.get(PathSpec.from(mapping.getPathSpec())); + Map mappings = _constraintsByPathAndMethod.get(PathSpec.from(mapping.getPathSpec())); if (mappings == null) { mappings = new HashMap<>(); - _constraintRoles.put(mapping.getPathSpec(), mappings); + _constraintsByPathAndMethod.put(mapping.getPathSpec(), mappings); } - RoleInfo allMethodsRoleInfo = mappings.get(ALL_METHODS); - if (allMethodsRoleInfo != null && allMethodsRoleInfo.isForbidden()) + Constraint allMethodsConstraint = mappings.get(ALL_METHODS); + if (allMethodsConstraint != null && allMethodsConstraint.getAuthorization() == Constraint.Authorization.FORBIDDEN) return; if (mapping.getMethodOmissions() != null && mapping.getMethodOmissions().length > 0) @@ -448,29 +482,23 @@ protected void processConstraintMapping(ConstraintMapping mapping) String httpMethod = mapping.getMethod(); if (httpMethod == null) httpMethod = ALL_METHODS; - RoleInfo roleInfo = mappings.get(httpMethod); - if (roleInfo == null) - { - roleInfo = new RoleInfo(); - mappings.put(httpMethod, roleInfo); - if (allMethodsRoleInfo != null) - { - roleInfo.combine(allMethodsRoleInfo); - } - } - if (roleInfo.isForbidden()) + Constraint constraint = mappings.get(httpMethod); + if (constraint == null) + constraint = allMethodsConstraint; + if (constraint != null && constraint.getAuthorization() == Constraint.Authorization.FORBIDDEN) return; - //add in info from the constraint - configureRoleInfo(roleInfo, mapping); + // add in info from the constraint + constraint = combineServletConstraints(constraint, mapping.getConstraint()); - if (roleInfo.isForbidden()) + if (constraint.getAuthorization() == Constraint.Authorization.FORBIDDEN && httpMethod.equals(ALL_METHODS)) { - if (httpMethod.equals(ALL_METHODS)) - { - mappings.clear(); - mappings.put(ALL_METHODS, roleInfo); - } + mappings.clear(); + mappings.put(ALL_METHODS, constraint); + } + else + { + mappings.put(httpMethod, constraint); } } @@ -478,7 +506,7 @@ protected void processConstraintMapping(ConstraintMapping mapping) * Constraints that name method omissions are dealt with differently. * We create an entry in the mappings with key "<method>.omission". This entry * is only ever combined with other omissions for the same method to produce a - * consolidated RoleInfo. Then, when we wish to find the relevant constraints for + * consolidated Constraint. Then, when we wish to find the relevant constraints for * a given Request (in prepareConstraintInfo()), we consult 3 types of entries in * the mappings: an entry that names the method of the Request specifically, an * entry that names constraints that apply to all methods, entries of the form @@ -487,7 +515,7 @@ protected void processConstraintMapping(ConstraintMapping mapping) * @param mapping the constraint mapping * @param mappings the mappings of roles */ - protected void processConstraintMappingWithMethodOmissions(ConstraintMapping mapping, Map mappings) + protected void processConstraintMappingWithMethodOmissions(ConstraintMapping mapping, Map mappings) { String[] omissions = mapping.getMethodOmissions(); StringBuilder sb = new StringBuilder(); @@ -498,233 +526,7 @@ protected void processConstraintMappingWithMethodOmissions(ConstraintMapping map sb.append(omissions[i]); } sb.append(OMISSION_SUFFIX); - RoleInfo ri = new RoleInfo(); - mappings.put(sb.toString(), ri); - configureRoleInfo(ri, mapping); - } - - /** - * Initialize or update the RoleInfo from the constraint - * - * @param ri the role info - * @param mapping the constraint mapping - */ - protected void configureRoleInfo(RoleInfo ri, ConstraintMapping mapping) - { - Constraint constraint = mapping.getConstraint(); - boolean forbidden = constraint.isForbidden(); - ri.setForbidden(forbidden); - - //set up the data constraint (NOTE: must be done after setForbidden, as it nulls out the data constraint - //which we need in order to do combining of omissions in prepareConstraintInfo - UserDataConstraint userDataConstraint = UserDataConstraint.get(mapping.getConstraint().getDataConstraint()); - ri.setUserDataConstraint(userDataConstraint); - - //if forbidden, no point setting up roles - if (!ri.isForbidden()) - { - //add in the roles - boolean checked = mapping.getConstraint().getAuthenticate(); - ri.setChecked(checked); - - if (ri.isChecked()) - { - if (mapping.getConstraint().isAnyRole()) - { - // * means matches any defined role - for (String role : _roles) - { - ri.addRole(role); - } - ri.setAnyRole(true); - } - else if (mapping.getConstraint().isAnyAuth()) - { - //being authenticated is sufficient, not necessary to check roles - ri.setAnyAuth(true); - } - else - { - //user must be in one of the named roles - String[] newRoles = mapping.getConstraint().getRoles(); - for (String role : newRoles) - { - //check role has been defined - if (!_roles.contains(role)) - throw new IllegalArgumentException("Attempt to use undeclared role: " + role + ", known roles: " + _roles); - ri.addRole(role); - } - } - } - } - } - - /** - * Find constraints that apply to the given path. - * In order to do this, we consult 3 different types of information stored in the mappings for each path - each mapping - * represents a merged set of user data constraints, roles etc -: - *
    - *
  1. A mapping of an exact method name
  2. - *
  3. A mapping with key * that matches every method name
  4. - *
  5. Mappings with keys of the form "<method>.<method>.<method>.omission" that indicates it will match every method name EXCEPT those given
  6. - *
- * - * @see SecurityHandler#prepareConstraintInfo(String, HttpServletRequest) - */ - @Override - protected RoleInfo prepareConstraintInfo(String pathInContext, HttpServletRequest request) - { - MatchedResource> resource = _constraintRoles.getMatched(pathInContext); - if (resource == null) - return null; - - Map mappings = resource.getResource(); - if (mappings == null) - return null; - - String httpMethod = request.getMethod(); - RoleInfo roleInfo = mappings.get(httpMethod); - if (roleInfo == null) - { - //No specific http-method names matched - List applicableConstraints = new ArrayList<>(); - - //Get info for constraint that matches all methods if it exists - RoleInfo all = mappings.get(ALL_METHODS); - if (all != null) - applicableConstraints.add(all); - - //Get info for constraints that name method omissions where target method name is not omitted - //(ie matches because target method is not omitted, hence considered covered by the constraint) - for (Entry entry : mappings.entrySet()) - { - if (entry.getKey() != null && entry.getKey().endsWith(OMISSION_SUFFIX) && !entry.getKey().contains(httpMethod)) - applicableConstraints.add(entry.getValue()); - } - - if (applicableConstraints.size() == 0 && isDenyUncoveredHttpMethods()) - { - roleInfo = new RoleInfo(); - roleInfo.setForbidden(true); - } - else if (applicableConstraints.size() == 1) - roleInfo = applicableConstraints.get(0); - else - { - roleInfo = new RoleInfo(); - roleInfo.setUserDataConstraint(UserDataConstraint.None); - - for (RoleInfo r : applicableConstraints) - { - roleInfo.combine(r); - } - } - } - - return roleInfo; - } - - /** - * Return true if ok to proceed, false otherwise. - */ - @Override - protected boolean checkUserDataPermissions(String pathInContext, Request request, Response response, Callback callback, RoleInfo roleInfo) throws IOException - { - if (roleInfo == null) - return true; - - if (roleInfo.isForbidden()) - { - Response.writeError(request, response, callback, HttpServletResponse.SC_FORBIDDEN); - return false; - } - - UserDataConstraint dataConstraint = roleInfo.getUserDataConstraint(); - if (dataConstraint == null || dataConstraint == UserDataConstraint.None) - return true; - - HttpConfiguration httpConfig = request.getConnectionMetaData().getHttpConfiguration(); - - if (dataConstraint == UserDataConstraint.Confidential || dataConstraint == UserDataConstraint.Integral) - { - if (request.isSecure()) - return true; - - if (httpConfig.getSecurePort() > 0) - { - //Redirect to secure port - String scheme = httpConfig.getSecureScheme(); - int port = httpConfig.getSecurePort(); - - String url = URIUtil.newURI(scheme, Request.getServerName(request), port, request.getHttpURI().getPath(), request.getHttpURI().getQuery()); - response.getHeaders().putLongField(HttpHeader.CONTENT_LENGTH, 0); - - Response.sendRedirect(request, response, callback, HttpStatus.MOVED_TEMPORARILY_302, url, true); - } - else - Response.writeError(request, response, callback, HttpStatus.FORBIDDEN_403, "!Secure"); - return false; - } - else - { - throw new IllegalArgumentException("Invalid dataConstraint value: " + dataConstraint); - } - } - - @Override - protected boolean isAuthMandatory(Request request, Response response, Object constraintInfo) - { - return constraintInfo != null && ((RoleInfo)constraintInfo).isChecked(); - } - - @Override - protected boolean checkWebResourcePermissions(String pathInContext, Request request, Response response, Object constraintInfo, UserIdentity userIdentity) - throws IOException - { - ServletContextRequest screquest = Request.as(request, ServletContextRequest.class); - ServletApiRequest sarequest = (screquest == null ? null : screquest.getServletApiRequest()); - - if (constraintInfo == null) - { - return true; - } - RoleInfo roleInfo = (RoleInfo)constraintInfo; - - if (!roleInfo.isChecked()) - { - return true; - } - - //handle ** role constraint - if (roleInfo.isAnyAuth() && sarequest.getUserPrincipal() != null) - { - return true; - } - - //check if user is any of the allowed roles - boolean isUserInRole = false; - for (String role : roleInfo.getRoles()) - { - if (userIdentity.isUserInRole(role)) - { - isUserInRole = true; - break; - } - } - - //handle * role constraint - if (roleInfo.isAnyRole() && sarequest.getUserPrincipal() != null && isUserInRole) - { - return true; - } - - //normal role check - if (isUserInRole) - { - return true; - } - - return false; + mappings.put(sb.toString(), mapping.getConstraint()); } @Override @@ -769,7 +571,7 @@ public boolean checkPathsWithUncoveredHttpMethods() * information and log any methods that are not protected and the * urls at which they are not protected * - * @return list of paths for which there are uncovered methods + * @return Set of paths for which there are uncovered methods */ public Set getPathsWithUncoveredHttpMethods() { @@ -779,10 +581,10 @@ public Set getPathsWithUncoveredHttpMethods() Set uncoveredPaths = new HashSet<>(); - for (MappedResource> resource : _constraintRoles) + for (MappedResource> resource : _constraintsByPathAndMethod) { String path = resource.getPathSpec().getDeclaration(); - Map methodMappings = resource.getResource(); + Map methodMappings = resource.getResource(); //Each key is either: // : an exact method name // : * which means that the constraint applies to every method @@ -790,7 +592,7 @@ public Set getPathsWithUncoveredHttpMethods() if (methodMappings.get(ALL_METHODS) != null) continue; //can't be any uncovered methods for this url path - boolean hasOmissions = omissionsExist(path, methodMappings); + boolean hasOmissions = omissionsExist(methodMappings); for (String method : methodMappings.keySet()) { @@ -819,21 +621,19 @@ public Set getPathsWithUncoveredHttpMethods() * Check if any http method omissions exist in the list of method * to auth info mappings. * - * @param path the path * @param methodMappings the method mappings * @return true if omission exist */ - protected boolean omissionsExist(String path, Map methodMappings) + protected boolean omissionsExist(Map methodMappings) { if (methodMappings == null) return false; - boolean hasOmissions = false; for (String m : methodMappings.keySet()) { if (m.endsWith(OMISSION_SUFFIX)) - hasOmissions = true; + return true; } - return hasOmissions; + return false; } /** @@ -841,7 +641,7 @@ protected boolean omissionsExist(String path, Map methodMappin * split out the individual method names. * * @param omission the method - * @return the list of strings + * @return the set of strings */ protected Set getOmittedMethods(String omission) { @@ -849,12 +649,7 @@ protected Set getOmittedMethods(String omission) return Collections.emptySet(); String[] strings = omission.split("\\."); - Set methods = new HashSet<>(); - for (int i = 0; i < strings.length - 1; i++) - { - methods.add(strings[i]); - } - return methods; + return new HashSet<>(Arrays.asList(strings).subList(0, strings.length - 1)); } /** @@ -873,6 +668,6 @@ private boolean isInDurableState() ServletContextHandler contextHandler = ServletContextHandler.getCurrentServletContextHandler(); Server server = getServer(); - return (contextHandler == null && server == null) || (contextHandler != null && !contextHandler.isRunning()) || (contextHandler == null && server != null && !server.isRunning()); + return contextHandler == null && server == null || contextHandler != null && !contextHandler.isRunning() || contextHandler == null && !server.isRunning(); } } diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/DefaultAuthenticatorFactory.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/DefaultAuthenticatorFactory.java deleted file mode 100644 index ad3277039d54..000000000000 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/DefaultAuthenticatorFactory.java +++ /dev/null @@ -1,109 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.servlet.security; - -import java.util.Collection; - -import jakarta.servlet.ServletContext; -import org.eclipse.jetty.ee10.servlet.security.Authenticator.AuthConfiguration; -import org.eclipse.jetty.ee10.servlet.security.authentication.BasicAuthenticator; -import org.eclipse.jetty.ee10.servlet.security.authentication.ConfigurableSpnegoAuthenticator; -import org.eclipse.jetty.ee10.servlet.security.authentication.DeferredAuthentication; -import org.eclipse.jetty.ee10.servlet.security.authentication.DigestAuthenticator; -import org.eclipse.jetty.ee10.servlet.security.authentication.FormAuthenticator; -import org.eclipse.jetty.ee10.servlet.security.authentication.LoginAuthenticator; -import org.eclipse.jetty.ee10.servlet.security.authentication.SessionAuthentication; -import org.eclipse.jetty.ee10.servlet.security.authentication.SslClientCertAuthenticator; -import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.util.security.Constraint; -import org.eclipse.jetty.util.ssl.SslContextFactory; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * The Default Authenticator Factory. - * Uses the {@link AuthConfiguration#getAuthMethod()} to select an {@link Authenticator} from:
    - *
  • {@link BasicAuthenticator}
  • - *
  • {@link DigestAuthenticator}
  • - *
  • {@link FormAuthenticator}
  • - *
  • {@link SslClientCertAuthenticator}
  • - *
- * All authenticators derived from {@link LoginAuthenticator} are - * wrapped with a {@link DeferredAuthentication} - * instance, which is used if authentication is not mandatory. - * - * The Authentications from the {@link FormAuthenticator} are always wrapped in a - * {@link SessionAuthentication} - *

- * If a {@link LoginService} has not been set on this factory, then - * the service is selected by searching the {@link Server#getBeans(Class)} results for - * a service that matches the realm name, else the first LoginService found is used. - */ -public class DefaultAuthenticatorFactory implements Authenticator.Factory -{ - private static final Logger LOG = LoggerFactory.getLogger(DefaultAuthenticatorFactory.class); - - private LoginService _loginService; - - @Override - public Authenticator getAuthenticator(Server server, ServletContext context, AuthConfiguration configuration, IdentityService identityService, LoginService loginService) - { - String auth = configuration.getAuthMethod(); - Authenticator authenticator = null; - - if (Constraint.__BASIC_AUTH.equalsIgnoreCase(auth)) - authenticator = new BasicAuthenticator(); - else if (Constraint.__DIGEST_AUTH.equalsIgnoreCase(auth)) - authenticator = new DigestAuthenticator(); - else if (Constraint.__FORM_AUTH.equalsIgnoreCase(auth)) - authenticator = new FormAuthenticator(); - else if (Constraint.__SPNEGO_AUTH.equalsIgnoreCase(auth)) - authenticator = new ConfigurableSpnegoAuthenticator(); - else if (Constraint.__NEGOTIATE_AUTH.equalsIgnoreCase(auth)) // see Bug #377076 - authenticator = new ConfigurableSpnegoAuthenticator(Constraint.__NEGOTIATE_AUTH); - if (Constraint.__CERT_AUTH.equalsIgnoreCase(auth) || Constraint.__CERT_AUTH2.equalsIgnoreCase(auth)) - { - Collection sslContextFactories = server.getBeans(SslContextFactory.Server.class); - if (sslContextFactories.size() != 1) - { - if (sslContextFactories.size() > 1) - LOG.info("Multiple SslContextFactory.Server instances discovered. Directly configure a SslClientCertAuthenticator to use one."); - else - LOG.info("No SslContextFactory.Server instances discovered. Directly configure a SslClientCertAuthenticator to use one."); - } - else - { - authenticator = new SslClientCertAuthenticator(sslContextFactories.iterator().next()); - } - } - - return authenticator; - } - - /** - * @return the loginService - */ - public LoginService getLoginService() - { - return _loginService; - } - - /** - * @param loginService the loginService to set - */ - public void setLoginService(LoginService loginService) - { - _loginService = loginService; - } -} diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/DefaultIdentityService.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/DefaultIdentityService.java deleted file mode 100644 index 5490bb554cf6..000000000000 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/DefaultIdentityService.java +++ /dev/null @@ -1,74 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.servlet.security; - -import java.security.Principal; -import javax.security.auth.Subject; - -/** - * Default Identity Service implementation. - * This service handles only role reference maps passed in an - * associated {@link UserIdentity}. If there are roles - * refs present, then associate will wrap the UserIdentity with one - * that uses the role references in the - * {@link UserIdentity#isUserInRole(String)} - * implementation. All other operations are effectively noops. - * TODO associate on demand and write callbacks? - */ -public class DefaultIdentityService implements IdentityService -{ - /** - * If there are roles refs present in the scope, then wrap the UserIdentity - * with one that uses the role references in the {@link UserIdentity#isUserInRole(String)} - */ - @Override - public Object associate(UserIdentity user) - { - return null; - } - - @Override - public void disassociate(Object previous) - { - } - - @Override - public Object setRunAs(UserIdentity user, RunAsToken token) - { - return token; - } - - @Override - public void unsetRunAs(Object lastToken) - { - } - - @Override - public RunAsToken newRunAsToken(String runAsName) - { - return new RoleRunAsToken(runAsName); - } - - @Override - public UserIdentity getSystemUserIdentity() - { - return null; - } - - @Override - public UserIdentity newUserIdentity(final Subject subject, final Principal userPrincipal, final String[] roles) - { - return new DefaultUserIdentity(subject, userPrincipal, roles); - } -} diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/HashLoginService.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/HashLoginService.java deleted file mode 100644 index 5763dd831bff..000000000000 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/HashLoginService.java +++ /dev/null @@ -1,187 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.servlet.security; - -import java.util.List; - -import org.eclipse.jetty.util.resource.Resource; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * An implementation of a LoginService that stores users and roles in-memory in HashMaps. - * The source of the users and roles information is a properties file formatted like so: - *

- *  username: password [,rolename ...]
- * 
- * - * Passwords may be clear text, obfuscated or checksummed. The class com.eclipse.Util.Password should be used to generate obfuscated passwords or password - * checksums. - *

- * If DIGEST Authentication is used, the password must be in a recoverable format, either plain text or OBF:. - */ -public class HashLoginService extends AbstractLoginService -{ - private static final Logger LOG = LoggerFactory.getLogger(HashLoginService.class); - - private Resource _config; - private int refreshInterval; // default is not to reload - private UserStore _userStore; - private boolean _userStoreAutoCreate = false; - - public HashLoginService() - { - } - - public HashLoginService(String name) - { - setName(name); - } - - public HashLoginService(String name, Resource config) - { - setName(name); - setConfig(config); - } - - public Resource getConfig() - { - return _config; - } - - /** - * Load users from properties file. - *

- * The property file maps usernames to password specs followed by an optional comma separated list of role names. - *

- * - * @param config uri or url or path to realm properties file - */ - public void setConfig(Resource config) - { - _config = config; - } - - /** - * Is hot reload enabled on this user store - * - * @return true if hot reload was enabled before startup - * @deprecated use {@link #getRefreshInterval()} - */ - @Deprecated - public boolean isHotReload() - { - return refreshInterval > 0; - } - - /** - * Enable Hot Reload of the Property File - * - * @param enable true to enable 1s refresh interval, false to disable - * @deprecated use {@link #setRefreshInterval(int)} - */ - @Deprecated - public void setHotReload(boolean enable) - { - setRefreshInterval(enable ? 1 : 0); - } - - /** - * @return the scan interval in seconds for reloading the property file. - */ - public int getRefreshInterval() - { - return refreshInterval; - } - - /** - * @param refreshIntervalSeconds Set the scan interval in seconds for reloading the property file. - */ - public void setRefreshInterval(int refreshIntervalSeconds) - { - if (isRunning()) - throw new IllegalStateException("Cannot set while user store is running"); - this.refreshInterval = refreshIntervalSeconds; - } - - /** - * Configure the {@link UserStore} implementation to use. - * If none, for backward compat if none the {@link PropertyUserStore} will be used - * - * @param userStore the {@link UserStore} implementation to use - */ - public void setUserStore(UserStore userStore) - { - updateBean(_userStore, userStore); - _userStore = userStore; - } - - @Override - protected List loadRoleInfo(UserPrincipal user) - { - return _userStore.getRolePrincipals(user.getName()); - } - - @Override - protected UserPrincipal loadUserInfo(String userName) - { - return _userStore.getUserPrincipal(userName); - } - - @Override - protected void doStart() throws Exception - { - super.doStart(); - if (_userStore == null) - { - if (LOG.isDebugEnabled()) - LOG.debug("doStart: Starting new PropertyUserStore. PropertiesFile: {} refresh: {}s", _config, refreshInterval); - PropertyUserStore propertyUserStore = new PropertyUserStore(); - propertyUserStore.setRefreshInterval(refreshInterval); - propertyUserStore.setConfig(_config); - setUserStore(propertyUserStore); - _userStoreAutoCreate = true; - } - } - - /** - * To facilitate testing. - * - * @return the UserStore - */ - UserStore getUserStore() - { - return _userStore; - } - - /** - * - * @return true if a UserStore has been created from a config, false if a UserStore was provided. - */ - boolean isUserStoreAutoCreate() - { - return _userStoreAutoCreate; - } - - @Override - protected void doStop() throws Exception - { - super.doStop(); - if (_userStoreAutoCreate) - { - setUserStore(null); - _userStoreAutoCreate = false; - } - } -} diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/JDBCLoginService.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/JDBCLoginService.java deleted file mode 100644 index a482511619e9..000000000000 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/JDBCLoginService.java +++ /dev/null @@ -1,260 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.servlet.security; - -import java.io.InputStream; -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; -import java.util.Properties; -import java.util.stream.Collectors; - -import org.eclipse.jetty.util.Loader; -import org.eclipse.jetty.util.resource.ResourceFactory; -import org.eclipse.jetty.util.security.Credential; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * JDBC as a source of user authentication and authorization information. - * Uses one database connection that is lazily initialized. Reconnect on failures. - */ -public class JDBCLoginService extends AbstractLoginService -{ - private static final Logger LOG = LoggerFactory.getLogger(JDBCLoginService.class); - - protected String _config; - protected String _jdbcDriver; - protected String _url; - protected String _userName; - protected String _password; - protected String _userTableKey; - protected String _userTablePasswordField; - protected String _roleTableRoleField; - protected String _userSql; - protected String _roleSql; - protected Connection _con; - - /** - * JDBCUserPrincipal - * - * A UserPrincipal with extra jdbc key info. - */ - public class JDBCUserPrincipal extends UserPrincipal - { - final int _userKey; - - public JDBCUserPrincipal(String name, Credential credential, int key) - { - super(name, credential); - _userKey = key; - } - - public int getUserKey() - { - return _userKey; - } - } - - public JDBCLoginService() - { - } - - public JDBCLoginService(String name) - { - setName(name); - } - - public JDBCLoginService(String name, String config) - { - setName(name); - setConfig(config); - } - - public JDBCLoginService(String name, IdentityService identityService, String config) - { - setName(name); - setIdentityService(identityService); - setConfig(config); - } - - @Override - protected void doStart() throws Exception - { - Properties properties = new Properties(); - try (ResourceFactory.Closeable resourceFactory = ResourceFactory.closeable(); - InputStream in = resourceFactory.newResource(_config).newInputStream()) - { - properties.load(in); - } - _jdbcDriver = properties.getProperty("jdbcdriver"); - _url = properties.getProperty("url"); - _userName = properties.getProperty("username"); - _password = properties.getProperty("password"); - _userTableKey = properties.getProperty("usertablekey"); - _userTablePasswordField = properties.getProperty("usertablepasswordfield"); - _roleTableRoleField = properties.getProperty("roletablerolefield"); - - final String userTable = properties.getProperty("usertable"); - final String userTableUserField = properties.getProperty("usertableuserfield"); - final String roleTable = properties.getProperty("roletable"); - final String roleTableKey = properties.getProperty("roletablekey"); - final String userRoleTable = properties.getProperty("userroletable"); - final String userRoleTableUserKey = properties.getProperty("userroletableuserkey"); - final String userRoleTableRoleKey = properties.getProperty("userroletablerolekey"); - - if (_jdbcDriver == null || _jdbcDriver.equals("") || - _url == null || _url.equals("") || - _userName == null || _userName.equals("") || - _password == null) - { - LOG.warn("UserRealm {} has not been properly configured", getName()); - } - - _userSql = "select " + _userTableKey + "," + _userTablePasswordField + " from " + userTable + " where " + userTableUserField + " = ?"; - _roleSql = "select r." + _roleTableRoleField + - " from " + roleTable + " r, " + userRoleTable + - " u where u." + userRoleTableUserKey + " = ?" + - " and r." + roleTableKey + " = u." + userRoleTableRoleKey; - - Loader.loadClass(_jdbcDriver).getDeclaredConstructor().newInstance(); - super.doStart(); - } - - public String getConfig() - { - return _config; - } - - /** - * Load JDBC connection configuration from properties file. - * - * @param config Filename or url of user properties file. - */ - public void setConfig(String config) - { - if (isRunning()) - throw new IllegalStateException("Running"); - _config = config; - } - - /** - * Connect to database with parameters setup by loadConfig() - */ - public Connection connectDatabase() - throws SQLException - { - return DriverManager.getConnection(_url, _userName, _password); - } - - @Override - public UserPrincipal loadUserInfo(String username) - { - try - { - if (null == _con) - _con = connectDatabase(); - - try (PreparedStatement stat1 = _con.prepareStatement(_userSql)) - { - stat1.setObject(1, username); - try (ResultSet rs1 = stat1.executeQuery()) - { - if (rs1.next()) - { - int key = rs1.getInt(_userTableKey); - String credentials = rs1.getString(_userTablePasswordField); - - return new JDBCUserPrincipal(username, Credential.getCredential(credentials), key); - } - } - } - } - catch (SQLException e) - { - LOG.warn("LoginService {} could not load user {}", getName(), username, e); - closeConnection(); - } - - return null; - } - - @Override - public List loadRoleInfo(UserPrincipal user) - { - if (user == null) - return null; - - JDBCUserPrincipal jdbcUser = (JDBCUserPrincipal)user; - - try - { - if (null == _con) - _con = connectDatabase(); - - List roles = new ArrayList(); - - try (PreparedStatement stat2 = _con.prepareStatement(_roleSql)) - { - stat2.setInt(1, jdbcUser.getUserKey()); - try (ResultSet rs2 = stat2.executeQuery()) - { - while (rs2.next()) - roles.add(rs2.getString(_roleTableRoleField)); - - return roles.stream().map(RolePrincipal::new).collect(Collectors.toList()); - } - } - } - catch (SQLException e) - { - LOG.warn("LoginService {} could not load roles for user {}", getName(), user.getName(), e); - closeConnection(); - } - - return null; - } - - @Override - protected void doStop() throws Exception - { - closeConnection(); - super.doStop(); - } - - /** - * Close an existing connection - */ - private void closeConnection() - { - if (_con != null) - { - if (LOG.isDebugEnabled()) - LOG.debug("Closing db connection for JDBCLoginService"); - try - { - _con.close(); - } - catch (Exception e) - { - LOG.trace("IGNORED", e); - } - } - _con = null; - } -} diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/LoggedOutAuthentication.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/LoggedOutAuthentication.java deleted file mode 100644 index 65e6c1f12840..000000000000 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/LoggedOutAuthentication.java +++ /dev/null @@ -1,51 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.servlet.security; - -import org.eclipse.jetty.ee10.servlet.security.authentication.LoginAuthenticator; -import org.eclipse.jetty.server.Request; - -/** - * LoggedOutAuthentication - * - * An Authentication indicating that a user has been previously, but is not currently logged in, - * but may be capable of logging in after a call to Request.login(String,String) - */ -public class LoggedOutAuthentication implements Authentication.NonAuthenticated -{ - private LoginAuthenticator _authenticator; - - public LoggedOutAuthentication(LoginAuthenticator authenticator) - { - _authenticator = authenticator; - } - - @Override - public Authentication login(String username, Object password, Request request) - { - if (username == null) - return null; - - UserIdentity identity = _authenticator.login(username, password, request); - if (identity != null) - { - IdentityService identityService = _authenticator.getLoginService().getIdentityService(); - UserAuthentication authentication = new UserAuthentication("API", identity); - if (identityService != null) - identityService.associate(identity); - return authentication; - } - return null; - } -} diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/PropertyUserStore.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/PropertyUserStore.java deleted file mode 100644 index 3df9dd192cd7..000000000000 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/PropertyUserStore.java +++ /dev/null @@ -1,316 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.servlet.security; - -import java.io.IOException; -import java.io.InputStream; -import java.nio.file.Path; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Properties; -import java.util.Set; - -import org.eclipse.jetty.util.Scanner; -import org.eclipse.jetty.util.StringUtil; -import org.eclipse.jetty.util.resource.Resource; -import org.eclipse.jetty.util.resource.Resources; -import org.eclipse.jetty.util.security.Credential; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - *

This class monitors a property file of the format mentioned below - * and notifies registered listeners of the changes to the the given file.

- * - *
- *  username: password [,rolename ...]
- * 
- * - *

Passwords may be clear text, obfuscated or checksummed. - * The class {@link org.eclipse.jetty.util.security.Password} should be used - * to generate obfuscated passwords or password checksums.

- * - *

If DIGEST Authentication is used, the password must be in a recoverable - * format, either plain text or obfuscated.

- */ -public class PropertyUserStore extends UserStore implements Scanner.DiscreteListener -{ - private static final Logger LOG = LoggerFactory.getLogger(PropertyUserStore.class); - - protected Resource _configResource; - protected Scanner _scanner; - protected int _refreshInterval = 0; - protected boolean _firstLoad = true; // true if first load, false from that point on - protected List _listeners; - - /** - * Get the config (as a string) - * - * @return the config path as a string - */ - public Resource getConfig() - { - return _configResource; - } - - /** - * Set the Config Path from a String reference to a file - * - * @param config the config file - * TODO: reintroduce setConfig(String) and internal ResourceFactory usage - */ - public void setConfig(Resource config) - { - _configResource = config; - } - - /** - * @return the resource associated with the configured properties file, creating it if necessary - * @deprecated - */ - @Deprecated(forRemoval = true) - public Resource getConfigResource() - { - return getConfig(); - } - - /** - * Is hot reload enabled on this user store - * - * @return true if hot reload was enabled before startup - * @deprecated use {@link #getRefreshInterval()} - */ - @Deprecated - public boolean isHotReload() - { - return getRefreshInterval() > 0; - } - - /** - * Enable Hot Reload of the Property File - * - * @param enable true to enable to a 1 second scan, false to disable - * @deprecated use {@link #setRefreshInterval(int)} - */ - @Deprecated - public void setHotReload(boolean enable) - { - setRefreshInterval(enable ? 1 : 0); - } - - /** - * Enable Hot Reload of the Property File - * - * @param scanSeconds the period in seconds to scan for property file changes, or 0 for no scanning - */ - public void setRefreshInterval(int scanSeconds) - { - if (isRunning()) - { - throw new IllegalStateException("Cannot set scan period while user store is running"); - } - this._refreshInterval = scanSeconds; - } - - /** - * @return the period in seconds to scan for property file changes, or 0 for no scanning - */ - public int getRefreshInterval() - { - return _refreshInterval; - } - - @Override - public String toString() - { - return String.format("%s[cfg=%s]", super.toString(), _configResource); - } - - /** - * Load the user data from the property file. - * @throws IOException If the users cannot be loaded - */ - protected void loadUsers() throws IOException - { - Resource config = getConfig(); - - if (config == null) - throw new IllegalStateException("No config path set"); - - if (LOG.isDebugEnabled()) - LOG.debug("Loading {} from {}", this, config); - - if (Resources.missing(config)) - throw new IllegalStateException("Config does not exist: " + config); - - Properties properties = new Properties(); - try (InputStream inputStream = config.newInputStream()) - { - if (inputStream == null) - throw new IllegalStateException("Config does have properties: " + config); - properties.load(inputStream); - } - - Set known = new HashSet<>(); - - for (Map.Entry entry : properties.entrySet()) - { - String username = ((String)entry.getKey()).trim(); - String credentials = ((String)entry.getValue()).trim(); - String roles = null; - int c = credentials.indexOf(','); - if (c >= 0) - { - roles = credentials.substring(c + 1).trim(); - credentials = credentials.substring(0, c).trim(); - } - - if (username.length() > 0) - { - String[] roleArray = IdentityService.NO_ROLES; - if (roles != null && roles.length() > 0) - roleArray = StringUtil.csvSplit(roles); - known.add(username); - Credential credential = Credential.getCredential(credentials); - addUser(username, credential, roleArray); - notifyUpdate(username, credential, roleArray); - } - } - - List currentlyKnownUsers = new ArrayList<>(_users.keySet()); - // if its not the initial load then we want to process removed users - if (!_firstLoad) - { - for (String user : currentlyKnownUsers) - { - if (!known.contains(user)) - { - removeUser(user); - notifyRemove(user); - } - } - } - - // set initial load to false as there should be no more initial loads - _firstLoad = false; - - if (LOG.isDebugEnabled()) - LOG.debug("Loaded {} from {}", this, config); - } - - /** - * Depending on the value of the refresh interval, this method will either start - * up a scanner thread that will monitor the properties file for changes after - * it has initially loaded it. Otherwise the users will be loaded and there will - * be no active monitoring thread so changes will not be detected. - */ - @Override - protected void doStart() throws Exception - { - Resource config = getConfig(); - if (getRefreshInterval() > 0 && (config != null)) - { - _scanner = new Scanner(null, false); - _scanner.addFile(config.getPath()); - _scanner.setScanInterval(_refreshInterval); - _scanner.setReportExistingFilesOnStartup(false); - _scanner.addListener(this); - addBean(_scanner); - } - - loadUsers(); - super.doStart(); - } - - @Override - public void pathChanged(Path path) throws Exception - { - loadUsers(); - } - - @Override - public void pathAdded(Path path) throws Exception - { - loadUsers(); - } - - @Override - public void pathRemoved(Path path) throws Exception - { - loadUsers(); - } - - @Override - protected void doStop() throws Exception - { - super.doStop(); - removeBean(_scanner); - _scanner = null; - } - - /** - * Notifies the registered listeners of potential updates to a user - * - * @param username the user that was updated - * @param credential the updated credentials - * @param roleArray the updated roles - */ - private void notifyUpdate(String username, Credential credential, String[] roleArray) - { - if (_listeners != null) - { - for (UserListener listener : _listeners) - { - listener.update(username, credential, roleArray); - } - } - } - - /** - * Notifies the registered listeners that a user has been removed. - * - * @param username the user that was removed - */ - private void notifyRemove(String username) - { - if (_listeners != null) - { - for (UserListener listener : _listeners) - { - listener.remove(username); - } - } - } - - /** - * Registers a listener to be notified of the contents of the property file - * - * @param listener the user listener - */ - public void registerUserListener(UserListener listener) - { - if (_listeners == null) - _listeners = new ArrayList<>(); - _listeners.add(listener); - } - - public interface UserListener - { - void update(String username, Credential credential, String[] roleArray); - - void remove(String username); - } -} diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/RoleInfo.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/RoleInfo.java deleted file mode 100644 index 0e9ce7843321..000000000000 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/RoleInfo.java +++ /dev/null @@ -1,162 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.servlet.security; - -import java.util.Set; -import java.util.concurrent.CopyOnWriteArraySet; - -/** - * RoleInfo - * - * Badly named class that holds the role and user data constraint info for a - * path/http method combination, extracted and combined from security - * constraints. - * - * @version $Rev: 4793 $ $Date: 2009-03-19 00:00:01 +0100 (Thu, 19 Mar 2009) $ - */ -public class RoleInfo -{ - private boolean _isAnyAuth; - private boolean _isAnyRole; - private boolean _checked; - private boolean _forbidden; - private UserDataConstraint _userDataConstraint; - - /** - * List of permitted roles - */ - private final Set _roles = new CopyOnWriteArraySet<>(); - - public RoleInfo() - { - } - - public boolean isChecked() - { - return _checked; - } - - public void setChecked(boolean checked) - { - this._checked = checked; - if (!checked) - { - _forbidden = false; - _roles.clear(); - _isAnyRole = false; - _isAnyAuth = false; - } - } - - public boolean isForbidden() - { - return _forbidden; - } - - public void setForbidden(boolean forbidden) - { - this._forbidden = forbidden; - if (forbidden) - { - _checked = true; - _userDataConstraint = null; - _isAnyRole = false; - _isAnyAuth = false; - _roles.clear(); - } - } - - public boolean isAnyRole() - { - return _isAnyRole; - } - - public void setAnyRole(boolean anyRole) - { - this._isAnyRole = anyRole; - if (anyRole) - _checked = true; - } - - public boolean isAnyAuth() - { - return _isAnyAuth; - } - - public void setAnyAuth(boolean anyAuth) - { - this._isAnyAuth = anyAuth; - if (anyAuth) - _checked = true; - } - - public UserDataConstraint getUserDataConstraint() - { - return _userDataConstraint; - } - - public void setUserDataConstraint(UserDataConstraint userDataConstraint) - { - if (userDataConstraint == null) - throw new NullPointerException("Null UserDataConstraint"); - if (this._userDataConstraint == null) - { - - this._userDataConstraint = userDataConstraint; - } - else - { - this._userDataConstraint = this._userDataConstraint.combine(userDataConstraint); - } - } - - public Set getRoles() - { - return _roles; - } - - public void addRole(String role) - { - _roles.add(role); - } - - public void combine(RoleInfo other) - { - if (other._forbidden) - setForbidden(true); - else if (other._checked) - { - setChecked(true); - if (other._isAnyAuth) - setAnyAuth(true); - if (other._isAnyRole) - setAnyRole(true); - - _roles.addAll(other._roles); - } - setUserDataConstraint(other._userDataConstraint); - } - - @Override - public String toString() - { - return String.format("RoleInfo@%x{%s%s%s%s,%s}", - hashCode(), - (_forbidden ? "Forbidden," : ""), - (_checked ? "Checked," : ""), - (_isAnyAuth ? "AnyAuth," : ""), - (_isAnyRole ? "*" : _roles), - _userDataConstraint); - } -} diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/RolePrincipal.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/RolePrincipal.java deleted file mode 100644 index ef827ffd96d0..000000000000 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/RolePrincipal.java +++ /dev/null @@ -1,47 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.servlet.security; - -import java.io.Serializable; -import java.security.Principal; -import javax.security.auth.Subject; - -/** - * RolePrincipal - * - * Represents a role. This class can be added to a Subject to represent a role that the - * Subject has. - * - */ -public class RolePrincipal implements Principal, Serializable -{ - private static final long serialVersionUID = 2998397924051854402L; - private final String _roleName; - - public RolePrincipal(String name) - { - _roleName = name; - } - - @Override - public String getName() - { - return _roleName; - } - - public void configureForSubject(Subject subject) - { - subject.getPrincipals().add(this); - } -} diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/RunAsToken.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/RunAsToken.java deleted file mode 100644 index e26c499cb5da..000000000000 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/RunAsToken.java +++ /dev/null @@ -1,23 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.servlet.security; - -/** - * marker interface for run-as-role tokens - * - * @version $Rev: 4701 $ $Date: 2009-03-03 13:01:26 +0100 (Tue, 03 Mar 2009) $ - */ -public interface RunAsToken -{ -} diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/SecurityHandler.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/SecurityHandler.java deleted file mode 100644 index ef78680ebdfd..000000000000 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/SecurityHandler.java +++ /dev/null @@ -1,679 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.servlet.security; - -import java.io.IOException; -import java.security.Principal; -import java.util.ArrayList; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.ServiceLoader; -import java.util.Set; - -import jakarta.servlet.ServletContext; -import jakarta.servlet.ServletRequest; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; -import org.eclipse.jetty.ee10.servlet.ServletApiRequest; -import org.eclipse.jetty.ee10.servlet.ServletContextHandler; -import org.eclipse.jetty.ee10.servlet.ServletContextRequest; -import org.eclipse.jetty.ee10.servlet.security.authentication.DeferredAuthentication; -import org.eclipse.jetty.server.Handler; -import org.eclipse.jetty.server.Request; -import org.eclipse.jetty.server.Response; -import org.eclipse.jetty.util.Callback; -import org.eclipse.jetty.util.TypeUtil; -import org.eclipse.jetty.util.component.DumpableCollection; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Abstract SecurityHandler. - *

- * Select and apply an {@link Authenticator} to a request. - *

- * The Authenticator may either be directly set on the handler - * or will be create during {@link #start()} with a call to - * either the default or set AuthenticatorFactory. - *

- * SecurityHandler has a set of initparameters that are used by the - * Authentication.Configuration. At startup, any context init parameters - * that start with "org.eclipse.jetty.security." that do not have - * values in the SecurityHandler init parameters, are copied. - */ -public abstract class SecurityHandler extends Handler.Wrapper implements Authenticator.AuthConfiguration -{ - private static final Logger LOG = LoggerFactory.getLogger(SecurityHandler.class); - private static final List __knownAuthenticatorFactories = new ArrayList<>(); - - private boolean _checkWelcomeFiles = false; - private Authenticator _authenticator; - private Authenticator.Factory _authenticatorFactory; - private String _realmName; - private String _authMethod; - private final Map _initParameters = new HashMap<>(); - private LoginService _loginService; - private IdentityService _identityService; - private boolean _renewSession = true; - - static - { - TypeUtil.serviceStream(ServiceLoader.load(Authenticator.Factory.class)) - .forEach(__knownAuthenticatorFactories::add); - __knownAuthenticatorFactories.add(new DefaultAuthenticatorFactory()); - } - - protected SecurityHandler() - { - addBean(new DumpableCollection("knownAuthenticatorFactories", __knownAuthenticatorFactories)); - } - - /** - * Get the identityService. - * - * @return the identityService - */ - @Override - public IdentityService getIdentityService() - { - return _identityService; - } - - /** - * Set the identityService. - * - * @param identityService the identityService to set - */ - public void setIdentityService(IdentityService identityService) - { - if (isStarted()) - throw new IllegalStateException("Started"); - updateBean(_identityService, identityService); - _identityService = identityService; - } - - /** - * Get the loginService. - * - * @return the loginService - */ - @Override - public LoginService getLoginService() - { - return _loginService; - } - - /** - * Set the loginService. - * - * @param loginService the loginService to set - */ - public void setLoginService(LoginService loginService) - { - if (isStarted()) - throw new IllegalStateException("Started"); - updateBean(_loginService, loginService); - _loginService = loginService; - } - - public Authenticator getAuthenticator() - { - return _authenticator; - } - - /** - * Set the authenticator. - * - * @param authenticator the authenticator - * @throws IllegalStateException if the SecurityHandler is running - */ - public void setAuthenticator(Authenticator authenticator) - { - if (isStarted()) - throw new IllegalStateException("Started"); - updateBean(_authenticator, authenticator); - _authenticator = authenticator; - if (_authenticator != null) - _authMethod = _authenticator.getAuthMethod(); - } - - /** - * @return the authenticatorFactory - */ - public Authenticator.Factory getAuthenticatorFactory() - { - return _authenticatorFactory; - } - - /** - * @param authenticatorFactory the authenticatorFactory to set - * @throws IllegalStateException if the SecurityHandler is running - */ - public void setAuthenticatorFactory(Authenticator.Factory authenticatorFactory) - { - if (isRunning()) - throw new IllegalStateException("running"); - updateBean(_authenticatorFactory, authenticatorFactory); - _authenticatorFactory = authenticatorFactory; - } - - /** - * @return the list of discovered authenticatorFactories - */ - public List getKnownAuthenticatorFactories() - { - return __knownAuthenticatorFactories; - } - - /** - * @return the realmName - */ - @Override - public String getRealmName() - { - return _realmName; - } - - /** - * @param realmName the realmName to set - * @throws IllegalStateException if the SecurityHandler is running - */ - public void setRealmName(String realmName) - { - if (isRunning()) - throw new IllegalStateException("running"); - _realmName = realmName; - } - - /** - * @return the authMethod - */ - @Override - public String getAuthMethod() - { - return _authMethod; - } - - /** - * @param authMethod the authMethod to set - * @throws IllegalStateException if the SecurityHandler is running - */ - public void setAuthMethod(String authMethod) - { - if (isRunning()) - throw new IllegalStateException("running"); - _authMethod = authMethod; - } - - /** - * @return True if forwards to welcome files are authenticated - */ - public boolean isCheckWelcomeFiles() - { - return _checkWelcomeFiles; - } - - /** - * @param authenticateWelcomeFiles True if forwards to welcome files are - * authenticated - * @throws IllegalStateException if the SecurityHandler is running - */ - public void setCheckWelcomeFiles(boolean authenticateWelcomeFiles) - { - if (isRunning()) - throw new IllegalStateException("running"); - _checkWelcomeFiles = authenticateWelcomeFiles; - } - - @Override - public String getInitParameter(String key) - { - return _initParameters.get(key); - } - - @Override - public Set getInitParameterNames() - { - return _initParameters.keySet(); - } - - /** - * Set an initialization parameter. - * - * @param key the init key - * @param value the init value - * @return previous value - * @throws IllegalStateException if the SecurityHandler is started - */ - public String setInitParameter(String key, String value) - { - if (isStarted()) - throw new IllegalStateException("started"); - return _initParameters.put(key, value); - } - - protected LoginService findLoginService() throws Exception - { - java.util.Collection list = getServer().getBeans(LoginService.class); - LoginService service = null; - String realm = getRealmName(); - if (realm != null) - { - for (LoginService s : list) - { - if (s.getName() != null && s.getName().equals(realm)) - { - service = s; - break; - } - } - } - else if (list.size() == 1) - service = list.iterator().next(); - - return service; - } - - protected IdentityService findIdentityService() - { - return getServer().getBean(IdentityService.class); - } - - @Override - protected void doStart() - throws Exception - { - // copy security init parameters - ServletContext context = ServletContextHandler.getCurrentServletContext(); - if (context != null) - { - Enumeration names = context.getInitParameterNames(); - while (names != null && names.hasMoreElements()) - { - String name = names.nextElement(); - if (name.startsWith("org.eclipse.jetty.security.") && - getInitParameter(name) == null) - setInitParameter(name, context.getInitParameter(name)); - } - } - - // complicated resolution of login and identity service to handle - // many different ways these can be constructed and injected. - - if (_loginService == null) - { - setLoginService(findLoginService()); - if (_loginService != null) - unmanage(_loginService); - } - - if (_identityService == null) - { - if (_loginService != null) - setIdentityService(_loginService.getIdentityService()); - - if (_identityService == null) - setIdentityService(findIdentityService()); - - if (_identityService == null) - { - setIdentityService(new DefaultIdentityService()); - manage(_identityService); - } - else - unmanage(_identityService); - } - - if (_loginService != null) - { - if (_loginService.getIdentityService() == null) - _loginService.setIdentityService(_identityService); - else if (_loginService.getIdentityService() != _identityService) - throw new IllegalStateException("LoginService has different IdentityService to " + this); - } - - if (_authenticator == null) - { - // If someone has set an authenticator factory only use that, otherwise try the list of discovered factories. - if (_authenticatorFactory != null) - { - Authenticator authenticator = _authenticatorFactory.getAuthenticator(getServer(), context, - this, _identityService, _loginService); - - if (authenticator != null) - { - if (LOG.isDebugEnabled()) - LOG.debug("Created authenticator {} with {}", authenticator, _authenticatorFactory); - - setAuthenticator(authenticator); - } - } - else - { - for (Authenticator.Factory factory : getKnownAuthenticatorFactories()) - { - Authenticator authenticator = factory.getAuthenticator(getServer(), context, - this, _identityService, _loginService); - - if (authenticator != null) - { - if (LOG.isDebugEnabled()) - LOG.debug("Created authenticator {} with {}", authenticator, factory); - - setAuthenticator(authenticator); - break; - } - } - } - } - - if (_authenticator != null) - _authenticator.setConfiguration(this); - else if (_realmName != null) - { - LOG.warn("No Authenticator for {}", this); - throw new IllegalStateException("No Authenticator"); - } - - super.doStart(); - } - - @Override - protected void doStop() throws Exception - { - //if we discovered the services (rather than had them explicitly configured), remove them. - if (!isManaged(_identityService)) - { - removeBean(_identityService); - _identityService = null; - } - - if (!isManaged(_loginService)) - { - removeBean(_loginService); - _loginService = null; - } - - super.doStop(); - } - - protected boolean checkSecurity(ServletRequest request) - { - switch (request.getDispatcherType()) - { - case REQUEST: - case ASYNC: - return true; - case FORWARD: - if (isCheckWelcomeFiles() && request.getAttribute("org.eclipse.jetty.server.welcome") != null) - { - request.removeAttribute("org.eclipse.jetty.server.welcome"); - return true; - } - return false; - default: - return false; - } - } - - @Override - public boolean isSessionRenewedOnAuthentication() - { - return _renewSession; - } - - /** - * Set renew the session on Authentication. - *

- * If set to true, then on authentication, the session associated with a reqeuest is invalidated and replaced with a new session. - * - * @param renew true to renew the authentication on session - * @see Authenticator.AuthConfiguration#isSessionRenewedOnAuthentication() - */ - public void setSessionRenewedOnAuthentication(boolean renew) - { - _renewSession = renew; - } - - @Override - public boolean handle(Request request, Response response, Callback callback) throws Exception - { - Handler next = getHandler(); - if (next == null) - return false; - - ServletContextRequest servletContextRequest = Request.as(request, ServletContextRequest.class); - if (servletContextRequest == null) - return false; - ServletApiRequest servletApiRequest = servletContextRequest.getServletApiRequest(); - Authenticator authenticator = _authenticator; - - if (!checkSecurity(servletApiRequest)) - { - //don't need to do any security work, let other handlers do the processing - return next.handle(request, response, callback); - } - - //See Servlet Spec 3.1 sec 13.6.3 - if (authenticator != null) - authenticator.prepareRequest(request); - - RoleInfo roleInfo = prepareConstraintInfo(servletContextRequest.getDecodedPathInContext(), servletApiRequest); - - // Check data constraints - if (!checkUserDataPermissions(servletContextRequest.getDecodedPathInContext(), servletContextRequest, response, callback, roleInfo)) - return true; - - // is Auth mandatory? - boolean isAuthMandatory = - isAuthMandatory(request, response, roleInfo); - - if (isAuthMandatory && authenticator == null) - { - LOG.warn("No authenticator for: {}", roleInfo); - Response.writeError(request, response, callback, HttpServletResponse.SC_FORBIDDEN); - return true; - } - - // check authentication - Object previousIdentity = null; - try - { - Authentication authentication = servletApiRequest.getAuthentication(); - if (authentication == null || authentication == Authentication.NOT_CHECKED) - authentication = authenticator == null ? Authentication.UNAUTHENTICATED : authenticator.validateRequest(request, response, callback, isAuthMandatory); - - if (authentication instanceof Authentication.ResponseSent) - return true; - - if (authentication instanceof Authentication.User userAuth) - { - servletApiRequest.setAuthentication(authentication); - if (_identityService != null) - previousIdentity = _identityService.associate(userAuth.getUserIdentity()); - - if (isAuthMandatory) - { - boolean authorized = checkWebResourcePermissions(Request.getPathInContext(request), request, response, roleInfo, userAuth.getUserIdentity()); - if (!authorized) - { - Response.writeError(request, response, callback, HttpServletResponse.SC_FORBIDDEN, "!role"); - return true; - } - } - - //process the request by other handlers - boolean processed = next.handle(request, response, callback); - // TODO this looks wrong - if (processed && authenticator != null) - authenticator.secureResponse(request, response, callback, isAuthMandatory, userAuth); - return processed; - } - - if (authentication instanceof Authentication.Deferred) - { - DeferredAuthentication deferred = (DeferredAuthentication)authentication; - servletApiRequest.setAuthentication(authentication); - - boolean processed = false; - try - { - //process the request by other handlers - processed = next.handle(request, response, callback); - } - finally - { - previousIdentity = deferred.getPreviousAssociation(); - } - - if (processed && authenticator != null) - { - Authentication auth = servletApiRequest.getAuthentication(); - if (auth instanceof Authentication.User userAuth) - authenticator.secureResponse(request, response, callback, isAuthMandatory, userAuth); - else - authenticator.secureResponse(request, response, callback, isAuthMandatory, null); - } - return processed; - } - - if (isAuthMandatory) - { - Response.writeError(request, response, callback, HttpServletResponse.SC_UNAUTHORIZED, "unauthenticated"); - return true; - } - - servletApiRequest.setAuthentication(authentication); - if (_identityService != null) - previousIdentity = _identityService.associate(null); - - //process the request by other handlers - boolean processed = next.handle(request, response, callback); - - if (processed && authenticator != null) - authenticator.secureResponse(request, response, callback, isAuthMandatory, null); - return processed; - } - catch (ServerAuthException e) - { - // jaspi 3.8.3 send HTTP 500 internal server error, with message from AuthException - Response.writeError(request, response, callback, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage()); - return true; - } - finally - { - if (_identityService != null) - _identityService.disassociate(previousIdentity); - } - } - - public static SecurityHandler getCurrentSecurityHandler() - { - ServletContextHandler contextHandler = ServletContextHandler.getCurrentServletContextHandler(); - if (contextHandler == null) - return null; - - return contextHandler.getDescendant(SecurityHandler.class); - } - - public void logout(Authentication.User user) - { - LOG.debug("logout {}", user); - if (user == null) - return; - - LoginService loginService = getLoginService(); - if (loginService != null) - { - loginService.logout(user.getUserIdentity()); - } - - IdentityService identityService = getIdentityService(); - if (identityService != null) - { - // TODO recover previous from threadlocal (or similar) - Object previous = null; - identityService.disassociate(previous); - } - } - - protected abstract RoleInfo prepareConstraintInfo(String pathInContext, HttpServletRequest request); - - protected abstract boolean checkUserDataPermissions(String pathInContext, Request request, Response response, Callback callback, RoleInfo constraintInfo) throws IOException; - - protected abstract boolean isAuthMandatory(Request baseRequest, Response baseResponse, Object constraintInfo); - - protected abstract boolean checkWebResourcePermissions(String pathInContext, Request request, Response response, Object constraintInfo, - UserIdentity userIdentity) throws IOException; - - public class NotChecked implements Principal - { - @Override - public String getName() - { - return null; - } - - @Override - public String toString() - { - return "NOT CHECKED"; - } - - public SecurityHandler getSecurityHandler() - { - return SecurityHandler.this; - } - } - - public static final Principal __NO_USER = new Principal() - { - @Override - public String getName() - { - return null; - } - - @Override - public String toString() - { - return "No User"; - } - }; - - /** - * Nobody user. The Nobody UserPrincipal is used to indicate a partial state - * of authentication. A request with a Nobody UserPrincipal will be allowed - * past all authentication constraints - but will not be considered an - * authenticated request. It can be used by Authenticators such as - * FormAuthenticator to allow access to logon and error pages within an - * authenticated URI tree. - */ - public static final Principal __NOBODY = new Principal() - { - @Override - public String getName() - { - return "Nobody"; - } - - @Override - public String toString() - { - return getName(); - } - }; -} diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/SpnegoUserPrincipal.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/SpnegoUserPrincipal.java deleted file mode 100644 index 314d4907211e..000000000000 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/SpnegoUserPrincipal.java +++ /dev/null @@ -1,56 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.servlet.security; - -import java.security.Principal; -import java.util.Base64; - -public class SpnegoUserPrincipal implements Principal -{ - private final String _name; - private byte[] _token; - private String _encodedToken; - - public SpnegoUserPrincipal(String name, String encodedToken) - { - _name = name; - _encodedToken = encodedToken; - } - - public SpnegoUserPrincipal(String name, byte[] token) - { - _name = name; - _token = token; - } - - @Override - public String getName() - { - return _name; - } - - public byte[] getToken() - { - if (_token == null) - _token = Base64.getDecoder().decode(_encodedToken); - return _token; - } - - public String getEncodedToken() - { - if (_encodedToken == null) - _encodedToken = new String(Base64.getEncoder().encode(_token)); - return _encodedToken; - } -} diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/UserAuthentication.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/UserAuthentication.java deleted file mode 100644 index 85aa0763cfa6..000000000000 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/UserAuthentication.java +++ /dev/null @@ -1,32 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.servlet.security; - -/** - * @version $Rev: 4793 $ $Date: 2009-03-19 00:00:01 +0100 (Thu, 19 Mar 2009) $ - */ -public class UserAuthentication extends AbstractUserAuthentication -{ - - public UserAuthentication(String method, UserIdentity userIdentity) - { - super(method, userIdentity); - } - - @Override - public String toString() - { - return "{User," + getAuthMethod() + "," + _userIdentity + "}"; - } -} diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/UserDataConstraint.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/UserDataConstraint.java deleted file mode 100644 index eefd4c8d2999..000000000000 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/UserDataConstraint.java +++ /dev/null @@ -1,38 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.servlet.security; - -/** - * @version $Rev: 4466 $ $Date: 2009-02-10 23:42:54 +0100 (Tue, 10 Feb 2009) $ - */ -public enum UserDataConstraint -{ - None, Integral, Confidential; - - public static UserDataConstraint get(int dataConstraint) - { - if (dataConstraint < -1 || dataConstraint > 2) - throw new IllegalArgumentException("Expected -1, 0, 1, or 2, not: " + dataConstraint); - if (dataConstraint == -1) - return None; - return values()[dataConstraint]; - } - - public UserDataConstraint combine(UserDataConstraint other) - { - if (this.compareTo(other) < 0) - return this; - return other; - } -} diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/UserPrincipal.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/UserPrincipal.java deleted file mode 100644 index e777cb8b8f1f..000000000000 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/UserPrincipal.java +++ /dev/null @@ -1,87 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.servlet.security; - -import java.io.Serializable; -import java.security.Principal; -import javax.security.auth.Subject; - -import org.eclipse.jetty.util.security.Credential; - -/** - * UserPrincipal - * - * Represents a user with a credential. - * Instances of this class can be added to a Subject to - * present the user, while the credentials can be added - * directly to the Subject. - */ -public class UserPrincipal implements Principal, Serializable -{ - private static final long serialVersionUID = -6226920753748399662L; - private final String _name; - protected final Credential _credential; - - public UserPrincipal(String name, Credential credential) - { - _name = name; - _credential = credential; - } - - public boolean authenticate(Object credentials) - { - return _credential != null && _credential.check(credentials); - } - - public boolean authenticate(Credential c) - { - return (_credential != null && c != null && _credential.equals(c)); - } - - public boolean authenticate(UserPrincipal u) - { - return (u != null && authenticate(u._credential)); - } - - public void configureSubject(Subject subject) - { - if (subject == null) - return; - - subject.getPrincipals().add(this); - if (_credential != null) - subject.getPrivateCredentials().add(_credential); - } - - public void deconfigureSubject(Subject subject) - { - if (subject == null) - return; - subject.getPrincipals().remove(this); - if (_credential != null) - subject.getPrivateCredentials().remove(_credential); - } - - @Override - public String getName() - { - return _name; - } - - @Override - public String toString() - { - return _name; - } -} diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/UserStore.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/UserStore.java deleted file mode 100644 index 0f30ed893611..000000000000 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/UserStore.java +++ /dev/null @@ -1,87 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.servlet.security; - -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import java.util.stream.Collectors; - -import org.eclipse.jetty.util.component.ContainerLifeCycle; -import org.eclipse.jetty.util.security.Credential; - -/** - * Store of user authentication and authorization information. - * - */ -public class UserStore extends ContainerLifeCycle -{ - protected final Map _users = new ConcurrentHashMap<>(); - - protected class User - { - protected UserPrincipal _userPrincipal; - protected List _rolePrincipals = Collections.emptyList(); - - protected User(String username, Credential credential, String[] roles) - { - _userPrincipal = new UserPrincipal(username, credential); - - _rolePrincipals = Collections.emptyList(); - - if (roles != null) - _rolePrincipals = Arrays.stream(roles).map(RolePrincipal::new).collect(Collectors.toList()); - } - - protected UserPrincipal getUserPrincipal() - { - return _userPrincipal; - } - - protected List getRolePrincipals() - { - return _rolePrincipals; - } - } - - public void addUser(String username, Credential credential, String[] roles) - { - _users.put(username, new User(username, credential, roles)); - } - - public void removeUser(String username) - { - _users.remove(username); - } - - public UserPrincipal getUserPrincipal(String username) - { - User user = _users.get(username); - return (user == null ? null : user.getUserPrincipal()); - } - - public List getRolePrincipals(String username) - { - User user = _users.get(username); - return (user == null ? null : user.getRolePrincipals()); - } - - @Override - public String toString() - { - return String.format("%s@%x[users.count=%d]", getClass().getSimpleName(), hashCode(), _users.size()); - } -} diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/WrappedAuthConfiguration.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/WrappedAuthConfiguration.java deleted file mode 100644 index 37e8a45dd469..000000000000 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/WrappedAuthConfiguration.java +++ /dev/null @@ -1,74 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.servlet.security; - -import java.util.Set; - -import org.eclipse.jetty.ee10.servlet.security.Authenticator.AuthConfiguration; - -/** - * A wrapper for {@link AuthConfiguration}. This allows you create a new AuthConfiguration which can - * override a method to change a value from an another instance of AuthConfiguration. - */ -public class WrappedAuthConfiguration implements AuthConfiguration -{ - private final AuthConfiguration _configuration; - - public WrappedAuthConfiguration(AuthConfiguration configuration) - { - _configuration = configuration; - } - - @Override - public String getAuthMethod() - { - return _configuration.getAuthMethod(); - } - - @Override - public String getRealmName() - { - return _configuration.getRealmName(); - } - - @Override - public String getInitParameter(String param) - { - return _configuration.getInitParameter(param); - } - - @Override - public Set getInitParameterNames() - { - return _configuration.getInitParameterNames(); - } - - @Override - public LoginService getLoginService() - { - return _configuration.getLoginService(); - } - - @Override - public IdentityService getIdentityService() - { - return _configuration.getIdentityService(); - } - - @Override - public boolean isSessionRenewedOnAuthentication() - { - return _configuration.isSessionRenewedOnAuthentication(); - } -} diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/authentication/AuthorizationService.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/authentication/AuthorizationService.java deleted file mode 100644 index c45043b0f13c..000000000000 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/authentication/AuthorizationService.java +++ /dev/null @@ -1,43 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.servlet.security.authentication; - -import jakarta.servlet.http.HttpServletRequest; -import org.eclipse.jetty.ee10.servlet.security.LoginService; -import org.eclipse.jetty.ee10.servlet.security.UserIdentity; - -/** - *

A service to query for user roles.

- */ -@FunctionalInterface -public interface AuthorizationService -{ - /** - * @param request the current HTTP request - * @param name the user name - * @return a {@link UserIdentity} to query for roles of the given user - */ - UserIdentity getUserIdentity(HttpServletRequest request, String name); - - /** - *

Wraps a {@link LoginService} as an AuthorizationService

- * - * @param loginService the {@link LoginService} to wrap - * @return an AuthorizationService that delegates the query for roles to the given {@link LoginService} - */ - public static AuthorizationService from(LoginService loginService, Object credentials) - { - return (request, name) -> loginService.login(name, credentials, request); - } -} diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/authentication/FormAuthenticator.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/authentication/FormAuthenticator.java deleted file mode 100644 index fa2abeed3898..000000000000 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/authentication/FormAuthenticator.java +++ /dev/null @@ -1,513 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.servlet.security.authentication; - -import jakarta.servlet.http.HttpServletResponse; -import jakarta.servlet.http.HttpSession; -import org.eclipse.jetty.ee10.servlet.ServletApiRequest; -import org.eclipse.jetty.ee10.servlet.ServletContextRequest; -import org.eclipse.jetty.ee10.servlet.security.Authentication; -import org.eclipse.jetty.ee10.servlet.security.Authentication.User; -import org.eclipse.jetty.ee10.servlet.security.ServerAuthException; -import org.eclipse.jetty.ee10.servlet.security.UserAuthentication; -import org.eclipse.jetty.ee10.servlet.security.UserIdentity; -import org.eclipse.jetty.http.HttpHeader; -import org.eclipse.jetty.http.HttpMethod; -import org.eclipse.jetty.http.HttpStatus; -import org.eclipse.jetty.http.HttpURI; -import org.eclipse.jetty.http.MimeTypes; -import org.eclipse.jetty.server.Request; -import org.eclipse.jetty.server.Response; -import org.eclipse.jetty.util.Callback; -import org.eclipse.jetty.util.Fields; -import org.eclipse.jetty.util.StringUtil; -import org.eclipse.jetty.util.URIUtil; -import org.eclipse.jetty.util.security.Constraint; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * FORM Authenticator. - * - *

This authenticator implements form authentication will use dispatchers to - * the login page if the {@link #__FORM_DISPATCH} init parameter is set to true. - * Otherwise it will redirect.

- * - *

The form authenticator redirects unauthenticated requests to a log page - * which should use a form to gather username/password from the user and send them - * to the /j_security_check URI within the context. FormAuthentication uses - * {@link SessionAuthentication} to wrap Authentication results so that they - * are associated with the session.

- */ -public class FormAuthenticator extends LoginAuthenticator -{ - private static final Logger LOG = LoggerFactory.getLogger(FormAuthenticator.class); - - public static final String __FORM_LOGIN_PAGE = "org.eclipse.jetty.security.form_login_page"; - public static final String __FORM_ERROR_PAGE = "org.eclipse.jetty.security.form_error_page"; - public static final String __FORM_DISPATCH = "org.eclipse.jetty.security.dispatch"; - public static final String __J_URI = "org.eclipse.jetty.security.form_URI"; - public static final String __J_POST = "org.eclipse.jetty.security.form_POST"; - public static final String __J_METHOD = "org.eclipse.jetty.security.form_METHOD"; - public static final String __J_SECURITY_CHECK = "/j_security_check"; - public static final String __J_USERNAME = "j_username"; - public static final String __J_PASSWORD = "j_password"; - - private String _formErrorPage; - private String _formErrorPath; - private String _formLoginPage; - private String _formLoginPath; - private boolean _dispatch; - private boolean _alwaysSaveUri; - - public FormAuthenticator() - { - } - - public FormAuthenticator(String login, String error, boolean dispatch) - { - this(); - if (login != null) - setLoginPage(login); - if (error != null) - setErrorPage(error); - _dispatch = dispatch; - } - - /** - * If true, uris that cause a redirect to a login page will always - * be remembered. If false, only the first uri that leads to a login - * page redirect is remembered. - * See https://bugs.eclipse.org/bugs/show_bug.cgi?id=379909 - * - * @param alwaysSave true to always save the uri - */ - public void setAlwaysSaveUri(boolean alwaysSave) - { - _alwaysSaveUri = alwaysSave; - } - - public boolean getAlwaysSaveUri() - { - return _alwaysSaveUri; - } - - @Override - public void setConfiguration(AuthConfiguration configuration) - { - super.setConfiguration(configuration); - String login = configuration.getInitParameter(FormAuthenticator.__FORM_LOGIN_PAGE); - if (login != null) - setLoginPage(login); - String error = configuration.getInitParameter(FormAuthenticator.__FORM_ERROR_PAGE); - if (error != null) - setErrorPage(error); - String dispatch = configuration.getInitParameter(FormAuthenticator.__FORM_DISPATCH); - _dispatch = dispatch == null ? _dispatch : Boolean.parseBoolean(dispatch); - } - - @Override - public String getAuthMethod() - { - return Constraint.__FORM_AUTH; - } - - private void setLoginPage(String path) - { - if (!path.startsWith("/")) - { - LOG.warn("form-login-page must start with /"); - path = "/" + path; - } - _formLoginPage = path; - _formLoginPath = path; - if (_formLoginPath.indexOf('?') > 0) - _formLoginPath = _formLoginPath.substring(0, _formLoginPath.indexOf('?')); - } - - private void setErrorPage(String path) - { - if (path == null || path.trim().length() == 0) - { - _formErrorPath = null; - _formErrorPage = null; - } - else - { - if (!path.startsWith("/")) - { - LOG.warn("form-error-page must start with /"); - path = "/" + path; - } - _formErrorPage = path; - _formErrorPath = path; - - if (_formErrorPath.indexOf('?') > 0) - _formErrorPath = _formErrorPath.substring(0, _formErrorPath.indexOf('?')); - } - } - - @Override - public UserIdentity login(String username, Object password, Request request) - { - ServletContextRequest servletContextRequest = Request.as(request, ServletContextRequest.class); - UserIdentity user = super.login(username, password, request); - if (user != null) - { - HttpSession session = servletContextRequest.getServletApiRequest().getSession(true); - Authentication cached = new SessionAuthentication(getAuthMethod(), user, password); - session.setAttribute(SessionAuthentication.__J_AUTHENTICATED, cached); - } - return user; - } - - @Override - public void logout(Request request) - { - super.logout(request); - ServletContextRequest servletContextRequest = Request.as(request, ServletContextRequest.class); - HttpSession session = servletContextRequest.getServletApiRequest().getSession(false); - - if (session == null) - return; - - //clean up session - session.removeAttribute(SessionAuthentication.__J_AUTHENTICATED); - } - - @Override - public void prepareRequest(Request request) - { - //if this is a request resulting from a redirect after auth is complete - //(ie its from a redirect to the original request uri) then due to - //browser handling of 302 redirects, the method may not be the same as - //that of the original request. Replace the method and original post - //params (if it was a post). - // - //See Servlet Spec 3.1 sec 13.6.3 - ServletContextRequest servletContextRequest = Request.as(request, ServletContextRequest.class); - HttpSession session = servletContextRequest.getServletApiRequest().getSession(false); - if (session == null || session.getAttribute(SessionAuthentication.__J_AUTHENTICATED) == null) - return; //not authenticated yet - - HttpURI juri = (HttpURI)session.getAttribute(__J_URI); - if (juri == null) - return; //no original uri saved - - String method = (String)session.getAttribute(__J_METHOD); - if (method == null || method.length() == 0) - return; //didn't save original request method - - if (!juri.equals(request.getHttpURI())) - return; //this request is not for the same url as the original - - //restore the original request's method on this request - if (LOG.isDebugEnabled()) - LOG.debug("Restoring original method {} for {} with method {}", method, juri, request.getMethod()); - - servletContextRequest.getServletApiRequest().setMethod(method); - } - - @Override - public Authentication validateRequest(Request req, Response res, Callback callback, boolean mandatory) throws ServerAuthException - { - ServletContextRequest servletContextRequest = Request.as(req, ServletContextRequest.class); - ServletApiRequest servletApiRequest = servletContextRequest.getServletApiRequest(); - - String pathInContext = servletContextRequest.getDecodedPathInContext(); - boolean jSecurityCheck = isJSecurityCheck(pathInContext); - mandatory |= jSecurityCheck; - if (!mandatory) - return new DeferredAuthentication(this); - - if (isLoginOrErrorPage(pathInContext) && !DeferredAuthentication.isDeferred(res)) - return new DeferredAuthentication(this); - - // Handle a request for authentication. - if (jSecurityCheck) - { - final String username = servletApiRequest.getParameter(__J_USERNAME); - final String password = servletApiRequest.getParameter(__J_PASSWORD); - - UserIdentity user = login(username, password, req); - LOG.debug("jsecuritycheck {} {}", username, user); - HttpSession session = servletApiRequest.getSession(false); - if (user != null) - { - // Redirect to original request - String nuri; - FormAuthentication formAuth; - synchronized (session) - { - HttpURI savedURI = (HttpURI)session.getAttribute(__J_URI); - if (savedURI == null) - { - nuri = servletApiRequest.getContextPath(); - if (nuri.length() == 0) - nuri = "/"; - } - else - nuri = savedURI.asString(); - formAuth = new FormAuthentication(getAuthMethod(), user); - } - LOG.debug("authenticated {}->{}", formAuth, nuri); - - res.getHeaders().putLongField(HttpHeader.CONTENT_LENGTH, 0); - //TODO yuck - should use Response the whole way - Response.sendRedirect(req, res, callback, HttpStatus.FOUND_302, servletContextRequest.getHttpServletResponse().encodeRedirectURL(nuri), true); - return formAuth; - } - - // not authenticated - if (LOG.isDebugEnabled()) - LOG.debug("Form authentication FAILED for {}", StringUtil.printable(username)); - if (_formErrorPage == null) - { - LOG.debug("auth failed {}->403", username); - Response.writeError(req, res, callback, HttpServletResponse.SC_FORBIDDEN); - } - //TODO need to reinstate forward - /* else if (_dispatch) - { - LOG.debug("auth failed {}=={}", username, _formErrorPage); - RequestDispatcher dispatcher = servletApiRequest.getRequestDispatcher(_formErrorPage); - res.setHeader(HttpHeader.CACHE_CONTROL.asString(), HttpHeaderValue.NO_CACHE.asString()); - res.getHeaders().addDateField(HttpHeader.EXPIRES.asString(), 1); - dispatcher.forward(new FormRequest(req), new FormResponse(res)); - }*/ - else - { - LOG.debug("auth failed {}->{}", username, _formErrorPage); - Response.sendRedirect(req, res, callback, HttpStatus.FOUND_302, servletContextRequest.getHttpServletResponse().encodeRedirectURL(URIUtil.addPaths(req.getContext().getContextPath(), _formErrorPage)), true); - } - - return Authentication.SEND_FAILURE; - } - - // Look for cached authentication - HttpSession session = servletApiRequest.getSession(false); - Authentication authentication = session == null ? null : (Authentication)session.getAttribute(SessionAuthentication.__J_AUTHENTICATED); - if (authentication != null) - { - // Has authentication been revoked? - if (authentication instanceof Authentication.User && - _loginService != null && - !_loginService.validate(((Authentication.User)authentication).getUserIdentity())) - { - LOG.debug("auth revoked {}", authentication); - session.removeAttribute(SessionAuthentication.__J_AUTHENTICATED); - } - else - { - synchronized (session) - { - HttpURI jUri = (HttpURI)session.getAttribute(__J_URI); - if (jUri != null) - { - //check if the request is for the same url as the original and restore - //params if it was a post - LOG.debug("auth retry {}->{}", authentication, jUri); - - if (jUri.equals(req.getHttpURI())) - { - Fields jPost = (Fields)session.getAttribute(__J_POST); - if (jPost != null) - { - LOG.debug("auth rePOST {}->{}", authentication, jUri); - servletApiRequest.setContentParameters(jPost); - } - session.removeAttribute(__J_URI); - session.removeAttribute(__J_METHOD); - session.removeAttribute(__J_POST); - } - } - } - LOG.debug("auth {}", authentication); - return authentication; - } - } - - // if we can't send challenge - if (DeferredAuthentication.isDeferred(res)) - { - LOG.debug("auth deferred {}", session == null ? null : session.getId()); - return Authentication.UNAUTHENTICATED; - } - - // remember the current URI - session = (session != null ? session : servletApiRequest.getSession(true)); - synchronized (session) - { - // But only if it is not set already, or we save every uri that leads to a login form redirect - if (session.getAttribute(__J_URI) == null || _alwaysSaveUri) - { - session.setAttribute(__J_URI, req.getHttpURI()); - session.setAttribute(__J_METHOD, req.getMethod()); - - if (MimeTypes.Type.FORM_ENCODED.is(servletApiRequest.getContentType()) && HttpMethod.POST.is(req.getMethod())) - { - session.setAttribute(__J_POST, servletApiRequest.getContentParameters()); - } - } - } - - // send the the challenge - //TODO reinstate use of dispatch - /* if (_dispatch) - { - LOG.debug("challenge {}=={}", session.getId(), _formLoginPage); - RequestDispatcher dispatcher = servletApiRequest.getRequestDispatcher(_formLoginPage); - res.setHeader(HttpHeader.CACHE_CONTROL.asString(), HttpHeaderValue.NO_CACHE.asString()); - res.setDateHeader(HttpHeader.EXPIRES.asString(), 1); - dispatcher.forward(new FormRequest(req), new FormResponse(res)); - } - else - {*/ - LOG.debug("challenge {}->{}", session.getId(), _formLoginPage); - Response.sendRedirect(req, res, callback, HttpStatus.FOUND_302, servletContextRequest.getHttpServletResponse().encodeRedirectURL(URIUtil.addPaths(req.getContext().getContextPath(), _formLoginPage)), true); - //} - return Authentication.SEND_CONTINUE; - } - - public boolean isJSecurityCheck(String uri) - { - int jsc = uri.indexOf(__J_SECURITY_CHECK); - - if (jsc < 0) - return false; - int e = jsc + __J_SECURITY_CHECK.length(); - if (e == uri.length()) - return true; - char c = uri.charAt(e); - return c == ';' || c == '#' || c == '/' || c == '?'; - } - - public boolean isLoginOrErrorPage(String pathInContext) - { - return pathInContext != null && (pathInContext.equals(_formErrorPath) || pathInContext.equals(_formLoginPath)); - } - - @Override - public boolean secureResponse(Request req, Response res, Callback callback, boolean mandatory, User validatedUser) throws ServerAuthException - { - return true; - } - - //TODO reinstate use of forward dispatch - /* - protected static class FormRequest extends HttpServletRequestWrapper - { - public FormRequest(HttpServletRequest request) - { - super(request); - } - - @Override - public long getDateHeader(String name) - { - if (name.toLowerCase(Locale.ENGLISH).startsWith("if-")) - return -1; - return super.getDateHeader(name); - } - - @Override - public String getHeader(String name) - { - if (name.toLowerCase(Locale.ENGLISH).startsWith("if-")) - return null; - return super.getHeader(name); - } - - @Override - public Enumeration getHeaderNames() - { - return Collections.enumeration(Collections.list(super.getHeaderNames())); - } - - @Override - public Enumeration getHeaders(String name) - { - if (name.toLowerCase(Locale.ENGLISH).startsWith("if-")) - return Collections.enumeration(Collections.emptyList()); - return super.getHeaders(name); - } - } - - protected static class FormResponse extends HttpServletResponseWrapper - { - public FormResponse(HttpServletResponse response) - { - super(response); - } - - @Override - public void addDateHeader(String name, long date) - { - if (notIgnored(name)) - super.addDateHeader(name, date); - } - - @Override - public void addHeader(String name, String value) - { - if (notIgnored(name)) - super.addHeader(name, value); - } - - @Override - public void setDateHeader(String name, long date) - { - if (notIgnored(name)) - super.setDateHeader(name, date); - } - - @Override - public void setHeader(String name, String value) - { - if (notIgnored(name)) - super.setHeader(name, value); - } - - private boolean notIgnored(String name) - { - if (HttpHeader.CACHE_CONTROL.is(name) || - HttpHeader.PRAGMA.is(name) || - HttpHeader.ETAG.is(name) || - HttpHeader.EXPIRES.is(name) || - HttpHeader.LAST_MODIFIED.is(name) || - HttpHeader.AGE.is(name)) - return false; - return true; - } - }*/ - - /** - * This Authentication represents a just completed Form authentication. - * Subsequent requests from the same user are authenticated by the presence - * of a {@link SessionAuthentication} instance in their session. - */ - public static class FormAuthentication extends UserAuthentication implements Authentication.ResponseSent - { - public FormAuthentication(String method, UserIdentity userIdentity) - { - super(method, userIdentity); - } - - @Override - public String toString() - { - return "Form" + super.toString(); - } - } -} diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/authentication/LoginAuthenticator.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/authentication/LoginAuthenticator.java deleted file mode 100644 index f4ef0198a7cb..000000000000 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/authentication/LoginAuthenticator.java +++ /dev/null @@ -1,140 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.servlet.security.authentication; - -import jakarta.servlet.ServletRequest; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.servlet.http.HttpSession; -import org.eclipse.jetty.ee10.servlet.ServletApiRequest; -import org.eclipse.jetty.ee10.servlet.ServletApiResponse; -import org.eclipse.jetty.ee10.servlet.ServletContextRequest; -import org.eclipse.jetty.ee10.servlet.security.Authenticator; -import org.eclipse.jetty.ee10.servlet.security.IdentityService; -import org.eclipse.jetty.ee10.servlet.security.LoginService; -import org.eclipse.jetty.ee10.servlet.security.UserIdentity; -import org.eclipse.jetty.server.Request; -import org.eclipse.jetty.server.Response; -import org.eclipse.jetty.server.Session; -import org.eclipse.jetty.session.ManagedSession; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public abstract class LoginAuthenticator implements Authenticator -{ - private static final Logger LOG = LoggerFactory.getLogger(LoginAuthenticator.class); - - protected LoginService _loginService; - protected IdentityService _identityService; - private boolean _renewSession; - - protected LoginAuthenticator() - { - } - - @Override - public void prepareRequest(Request request) - { - //empty implementation as the default - } - - /** - * If the UserIdentity is not null after this method calls {@link LoginService#login(String, Object, ServletRequest)}, it - * is assumed that the user is fully authenticated and we need to change the session id to prevent - * session fixation vulnerability. If the UserIdentity is not necessarily fully - * authenticated, then subclasses must override this method and - * determine when the UserIdentity IS fully authenticated and renew the session id. - * - * @param username the username of the client to be authenticated - * @param password the user's credential - * @param request the inbound request that needs authentication - */ - public UserIdentity login(String username, Object password, Request request) - { - //TODO do we need to operate on a Response passed in, rather than the Response obtained from the Request - ServletContextRequest servletContextRequest = Request.as(request, ServletContextRequest.class); - ServletApiRequest servletApiRequest = servletContextRequest.getServletApiRequest(); - ServletApiResponse servletApiResponse = servletContextRequest.getResponse().getServletApiResponse(); - UserIdentity user = _loginService.login(username, password, servletApiRequest); - if (user != null) - { - renewSession(servletApiRequest, servletApiResponse); - return user; - } - return null; - } - - public void logout(Request request) - { - ServletContextRequest servletContextRequest = Request.as(request, ServletContextRequest.class); - ServletApiRequest servletApiRequest = servletContextRequest.getServletApiRequest(); - HttpSession session = servletApiRequest.getSession(false); - if (session == null) - return; - - session.removeAttribute(ManagedSession.SESSION_CREATED_SECURE); - } - - @Override - public void setConfiguration(AuthConfiguration configuration) - { - _loginService = configuration.getLoginService(); - if (_loginService == null) - throw new IllegalStateException("No LoginService for " + this + " in " + configuration); - _identityService = configuration.getIdentityService(); - if (_identityService == null) - throw new IllegalStateException("No IdentityService for " + this + " in " + configuration); - _renewSession = configuration.isSessionRenewedOnAuthentication(); - } - - public LoginService getLoginService() - { - return _loginService; - } - - /** - * Change the session id. - * The session is changed to a new instance with a new ID if and only if:
    - *
  • A session exists. - *
  • The {@link Authenticator.AuthConfiguration#isSessionRenewedOnAuthentication()} returns true. - *
  • The session ID has been given to unauthenticated responses - *
- * - * @param httpRequest the request - * @param httpResponse the response - * @return The new session. - */ - protected HttpSession renewSession(HttpServletRequest httpRequest, HttpServletResponse httpResponse) - { - HttpSession httpSession = httpRequest.getSession(false); - Session session = Session.getSession(httpSession); - if (_renewSession && session != null) - { - synchronized (session) - { - //if we should renew sessions, and there is an existing session that may have been seen by non-authenticated users - //(indicated by SESSION_SECURED not being set on the session) then we should change id - if (session.getAttribute(ManagedSession.SESSION_CREATED_SECURE) != Boolean.TRUE) - { - session.setAttribute(ManagedSession.SESSION_CREATED_SECURE, Boolean.TRUE); - ServletContextRequest servletContextRequest = ServletContextRequest.getServletContextRequest(httpRequest); - Response response = servletContextRequest.getResponse().getWrapped(); - session.renewId(servletContextRequest, response); - return httpSession; - } - } - } - return httpSession; - } -} diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/authentication/LoginCallback.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/authentication/LoginCallback.java index db48ffa9e94f..087500c1244c 100644 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/authentication/LoginCallback.java +++ b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/authentication/LoginCallback.java @@ -24,23 +24,23 @@ */ public interface LoginCallback { - public Subject getSubject(); + Subject getSubject(); - public String getUserName(); + String getUserName(); - public Object getCredential(); + Object getCredential(); - public boolean isSuccess(); + boolean isSuccess(); - public void setSuccess(boolean success); + void setSuccess(boolean success); - public Principal getUserPrincipal(); + Principal getUserPrincipal(); - public void setUserPrincipal(Principal userPrincipal); + void setUserPrincipal(Principal userPrincipal); - public String[] getRoles(); + String[] getRoles(); - public void setRoles(String[] roles); + void setRoles(String[] roles); - public void clearPassword(); + void clearPassword(); } diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/authentication/LoginCallbackImpl.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/authentication/LoginCallbackImpl.java index 7377c19aaab6..c2b6f716f46d 100644 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/authentication/LoginCallbackImpl.java +++ b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/authentication/LoginCallbackImpl.java @@ -16,8 +16,6 @@ import java.security.Principal; import javax.security.auth.Subject; -import org.eclipse.jetty.ee10.servlet.security.IdentityService; - /** * This is similar to the jaspi PasswordValidationCallback but includes user * principal and group info as well. @@ -37,7 +35,7 @@ public class LoginCallbackImpl implements LoginCallback private Principal userPrincipal; - private String[] roles = IdentityService.NO_ROLES; + private String[] roles = new String[0]; //TODO could use Credential instance instead of Object if Basic/Form create a Password object public LoginCallbackImpl(Subject subject, String userName, Object credential) diff --git a/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/CustomRequestLogTest.java b/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/CustomRequestLogTest.java index 80b4566f45bb..d28966d752f1 100644 --- a/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/CustomRequestLogTest.java +++ b/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/CustomRequestLogTest.java @@ -24,12 +24,13 @@ import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; -import org.eclipse.jetty.ee10.servlet.security.ConstraintMapping; +import org.eclipse.jetty.ee.security.ConstraintMapping; import org.eclipse.jetty.ee10.servlet.security.ConstraintSecurityHandler; -import org.eclipse.jetty.ee10.servlet.security.HashLoginService; -import org.eclipse.jetty.ee10.servlet.security.UserStore; -import org.eclipse.jetty.ee10.servlet.security.authentication.BasicAuthenticator; import org.eclipse.jetty.http.HttpHeader; +import org.eclipse.jetty.security.Constraint; +import org.eclipse.jetty.security.HashLoginService; +import org.eclipse.jetty.security.UserStore; +import org.eclipse.jetty.security.authentication.BasicAuthenticator; import org.eclipse.jetty.server.CustomRequestLog; import org.eclipse.jetty.server.LocalConnector; import org.eclipse.jetty.server.RequestLog; @@ -38,7 +39,6 @@ import org.eclipse.jetty.toolchain.test.jupiter.WorkDirExtension; import org.eclipse.jetty.util.BlockingArrayQueue; import org.eclipse.jetty.util.component.LifeCycle; -import org.eclipse.jetty.util.security.Constraint; import org.eclipse.jetty.util.security.Credential; import org.hamcrest.Matchers; import org.junit.jupiter.api.AfterEach; @@ -81,10 +81,9 @@ private void start(String formatString, HttpServlet servlet) throws Exception loginService.setUserStore(userStore); loginService.setName("realm"); - Constraint constraint = new Constraint(); - constraint.setName("auth"); - constraint.setAuthenticate(true); - constraint.setRoles(new String[]{"**"}); + Constraint constraint = new Constraint.Builder() + .name("auth") + .authorization(Constraint.Authorization.ANY_USER).build(); ConstraintMapping mapping = new ConstraintMapping(); mapping.setPathSpec("/secure/*"); diff --git a/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/ServletContextHandlerTest.java b/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/ServletContextHandlerTest.java index cea87ec3430e..7841e96e99ac 100644 --- a/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/ServletContextHandlerTest.java +++ b/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/ServletContextHandlerTest.java @@ -64,14 +64,13 @@ import jakarta.servlet.http.HttpSessionIdListener; import jakarta.servlet.http.HttpSessionListener; import org.eclipse.jetty.ee10.servlet.security.ConstraintSecurityHandler; -import org.eclipse.jetty.ee10.servlet.security.RoleInfo; -import org.eclipse.jetty.ee10.servlet.security.SecurityHandler; -import org.eclipse.jetty.ee10.servlet.security.UserIdentity; import org.eclipse.jetty.http.HttpCookie; import org.eclipse.jetty.http.HttpHeader; import org.eclipse.jetty.http.HttpTester; import org.eclipse.jetty.http.pathmap.MatchedResource; import org.eclipse.jetty.logging.StacklessLogging; +import org.eclipse.jetty.security.Constraint; +import org.eclipse.jetty.security.SecurityHandler; import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.LocalConnector; import org.eclipse.jetty.server.Request; @@ -1524,7 +1523,7 @@ public void testDeclareRoles() throws Exception context.setContextPath("/"); _server.setHandler(context); _server.start(); - assertThat(((ConstraintSecurityHandler)context.getSecurityHandler()).getRoles(), containsInAnyOrder("tom", "dick", "harry")); + assertThat(((ConstraintSecurityHandler)context.getSecurityHandler()).getKnownRoles(), containsInAnyOrder("tom", "dick", "harry")); } @Test @@ -1800,30 +1799,10 @@ public void testSetSecurityHandler() SecurityHandler myHandler = new SecurityHandler() { @Override - protected RoleInfo prepareConstraintInfo(String pathInContext, HttpServletRequest request) + protected Constraint getConstraint(String pathInContext, Request request) { return null; } - - @Override - protected boolean checkUserDataPermissions(String pathInContext, Request request, Response response, - Callback callback, RoleInfo constraintInfo) - { - return false; - } - - @Override - protected boolean isAuthMandatory(Request baseRequest, Response baseResponse, Object constraintInfo) - { - return false; - } - - @Override - protected boolean checkWebResourcePermissions(String pathInContext, Request request, Response response, - Object constraintInfo, UserIdentity userIdentity) - { - return false; - } }; //check the linking order diff --git a/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/AliasedConstraintTest.java b/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/AliasedConstraintTest.java deleted file mode 100644 index 9e0fe8d1f002..000000000000 --- a/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/AliasedConstraintTest.java +++ /dev/null @@ -1,162 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.servlet.security; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.stream.Stream; - -import org.eclipse.jetty.ee10.servlet.ServletContextHandler; -import org.eclipse.jetty.ee10.servlet.SessionHandler; -import org.eclipse.jetty.http.HttpStatus; -import org.eclipse.jetty.server.Connector; -import org.eclipse.jetty.server.LocalConnector; -import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.server.handler.ResourceHandler; -import org.eclipse.jetty.toolchain.test.MavenTestingUtils; -import org.eclipse.jetty.util.security.Constraint; -import org.eclipse.jetty.util.security.Password; -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.Arguments; -import org.junit.jupiter.params.provider.MethodSource; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.containsString; -import static org.hamcrest.Matchers.startsWith; -import static org.junit.jupiter.api.Assertions.fail; - -/** - * Some requests for static data that is served by ResourceHandler, but some is secured. - *

- * This is mainly here to test security bypass techniques using aliased names that should be caught. - */ -public class AliasedConstraintTest -{ - private static final String TEST_REALM = "TestRealm"; - private static Server server; - private static LocalConnector connector; - private static ConstraintSecurityHandler security; - - @BeforeAll - public static void startServer() throws Exception - { - server = new Server(); - connector = new LocalConnector(server); - server.setConnectors(new Connector[]{connector}); - - ServletContextHandler context = new ServletContextHandler(); - context.setSessionHandler(new SessionHandler()); - TestLoginService loginService = new TestLoginService(TEST_REALM); - - loginService.putUser("user0", new Password("password"), new String[]{}); - loginService.putUser("user", new Password("password"), new String[]{"user"}); - loginService.putUser("user2", new Password("password"), new String[]{"user"}); - loginService.putUser("admin", new Password("password"), new String[]{"user", "administrator"}); - loginService.putUser("user3", new Password("password"), new String[]{"foo"}); - - context.setContextPath("/ctx"); - context.setBaseResourceAsPath(MavenTestingUtils.getTestResourcePathDir("docroot")); - - server.setHandler(context); - - server.addBean(loginService); - - security = new ConstraintSecurityHandler(); - context.setSecurityHandler(security); - - //TODO this MUST be replaced by a Servlet instead of a handler!!!! - ResourceHandler handler = new ResourceHandler(); - security.setHandler(handler); - - List constraints = new ArrayList<>(); - - Constraint constraint0 = new Constraint(); - constraint0.setAuthenticate(true); - constraint0.setName("forbid"); - ConstraintMapping mapping0 = new ConstraintMapping(); - mapping0.setPathSpec("/forbid/*"); - mapping0.setConstraint(constraint0); - constraints.add(mapping0); - - Set knownRoles = new HashSet<>(); - knownRoles.add("user"); - knownRoles.add("administrator"); - - security.setConstraintMappings(constraints, knownRoles); - server.start(); - } - - @AfterAll - public static void stopServer() throws Exception - { - server.stop(); - } - - public static Stream data() - { - List data = new ArrayList<>(); - - final String OPENCONTENT = "this is open content"; - - data.add(new Object[]{"/ctx/all/index.txt", HttpStatus.OK_200, OPENCONTENT}); - data.add(new Object[]{"/ctx/ALL/index.txt", HttpStatus.NOT_FOUND_404, null}); - data.add(new Object[]{"/ctx/ALL/Fred/../index.txt", HttpStatus.NOT_FOUND_404, null}); - data.add(new Object[]{"/ctx/../bar/../ctx/all/index.txt", HttpStatus.OK_200, OPENCONTENT}); - data.add(new Object[]{"/ctx/forbid/index.txt", HttpStatus.FORBIDDEN_403, null}); - data.add(new Object[]{"/ctx/all/../forbid/index.txt", HttpStatus.FORBIDDEN_403, null}); - data.add(new Object[]{"/ctx/FoRbId/index.txt", HttpStatus.NOT_FOUND_404, null}); - - return data.stream().map(Arguments::of); - } - - @Disabled - @ParameterizedTest - @MethodSource("data") - public void testAccess(String uri, int expectedStatusCode, String expectedContent) throws Exception - { - StringBuilder request = new StringBuilder(); - request.append("GET ").append(uri).append(" HTTP/1.1\r\n"); - request.append("Host: localhost\r\n"); - request.append("Connection: close\r\n"); - request.append("\r\n"); - - String response = connector.getResponse(request.toString()); - - switch (expectedStatusCode) - { - case 200: - assertThat(response, startsWith("HTTP/1.1 200 OK")); - break; - case 403: - assertThat(response, startsWith("HTTP/1.1 403 Forbidden")); - break; - case 404: - assertThat(response, startsWith("HTTP/1.1 404 Not Found")); - break; - default: - fail("Write a handler for response status code: " + expectedStatusCode); - break; - } - - if (expectedContent != null) - { - assertThat(response, containsString("this is open content")); - } - } -} diff --git a/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/ClientCertAuthenticatorTest.java b/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/ClientCertAuthenticatorTest.java deleted file mode 100644 index 46f22772e35a..000000000000 --- a/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/ClientCertAuthenticatorTest.java +++ /dev/null @@ -1,195 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.servlet.security; - -import java.io.IOException; -import java.net.HttpURLConnection; -import java.net.InetSocketAddress; -import java.net.ServerSocket; -import java.net.URI; -import java.net.URL; -import javax.net.ssl.HostnameVerifier; -import javax.net.ssl.HttpsURLConnection; -import javax.net.ssl.SSLSocketFactory; - -import jakarta.servlet.ServletException; -import jakarta.servlet.http.HttpServlet; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; -import org.eclipse.jetty.ee10.servlet.ServletContextHandler; -import org.eclipse.jetty.server.Connector; -import org.eclipse.jetty.server.HttpConfiguration; -import org.eclipse.jetty.server.HttpConnectionFactory; -import org.eclipse.jetty.server.SecureRequestCustomizer; -import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.server.ServerConnector; -import org.eclipse.jetty.server.SslConnectionFactory; -import org.eclipse.jetty.toolchain.test.MavenPaths; -import org.eclipse.jetty.util.IO; -import org.eclipse.jetty.util.resource.FileSystemPool; -import org.eclipse.jetty.util.resource.ResourceFactory; -import org.eclipse.jetty.util.security.Constraint; -import org.eclipse.jetty.util.ssl.SslContextFactory; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.containsString; -import static org.hamcrest.Matchers.empty; -import static org.hamcrest.Matchers.is; - -public class ClientCertAuthenticatorTest -{ - private static final String MESSAGE = "Yep CLIENT-CERT works"; - - private Server server; - private URI serverHttpsUri; - private URI serverHttpUri; - private HostnameVerifier origVerifier; - private SSLSocketFactory origSsf; - - @BeforeEach - public void setup() throws Exception - { - assertThat(FileSystemPool.INSTANCE.mounts(), empty()); - origSsf = HttpsURLConnection.getDefaultSSLSocketFactory(); - origVerifier = HttpsURLConnection.getDefaultHostnameVerifier(); - - server = new Server(); - - int port = freePort(); - int securePort = freePort(); - SslContextFactory.Server sslContextFactory = createServerSslContextFactory("cacerts.jks", "changeit"); - // Setup HTTP Configuration - HttpConfiguration httpConf = new HttpConfiguration(); - httpConf.setSecurePort(securePort); - httpConf.setSecureScheme("https"); - - ServerConnector httpConnector = new ServerConnector(server, new HttpConnectionFactory(httpConf)); - httpConnector.setName("unsecured"); - httpConnector.setPort(port); - - // Setup HTTPS Configuration - HttpConfiguration httpsConf = new HttpConfiguration(httpConf); - SecureRequestCustomizer secureRequestCustomizer = new SecureRequestCustomizer(); - secureRequestCustomizer.setSniRequired(false); - secureRequestCustomizer.setSniHostCheck(false); - httpsConf.addCustomizer(secureRequestCustomizer); - - ServerConnector httpsConnector = new ServerConnector(server, new SslConnectionFactory(sslContextFactory, "http/1.1"), new HttpConnectionFactory(httpsConf)); - httpsConnector.setName("secured"); - httpsConnector.setPort(securePort); - - server.setConnectors(new Connector[]{httpConnector, httpsConnector}); - - ConstraintSecurityHandler constraintSecurityHandler = new ConstraintSecurityHandler(); - constraintSecurityHandler.setAuthMethod(Constraint.__CERT_AUTH2); - ConstraintMapping constraintMapping = new ConstraintMapping(); - Constraint constraint = new Constraint(); - constraint.setName(Constraint.__CERT_AUTH2); - constraint.setRoles(new String[]{"Administrator"}); - constraint.setAuthenticate(true); - constraintMapping.setConstraint(constraint); - constraintMapping.setMethod("GET"); - constraintMapping.setPathSpec("/"); - constraintSecurityHandler.addConstraintMapping(constraintMapping); - - HashLoginService loginService = new HashLoginService(); - constraintSecurityHandler.setLoginService(loginService); - - ServletContextHandler servletContextHandler = new ServletContextHandler(); - ResourceFactory resourceFactory = ResourceFactory.of(servletContextHandler); - loginService.setConfig(resourceFactory.newResource("src/test/resources/realm.properties")); - - servletContextHandler.setSecurityHandler(constraintSecurityHandler); - servletContextHandler.addServlet(FooServlet.class, "/"); - server.setHandler(servletContextHandler); - server.addBean(sslContextFactory); - server.start(); - - String host = httpConnector.getHost(); - if (host == null) - host = "localhost"; - serverHttpsUri = new URI(String.format("https://%s:%d/", host, httpsConnector.getLocalPort())); - serverHttpUri = new URI(String.format("http://%s:%d/", host, httpConnector.getLocalPort())); - } - - @AfterEach - public void stopServer() throws Exception - { - if (origVerifier != null) - HttpsURLConnection.setDefaultHostnameVerifier(origVerifier); - if (origSsf != null) - HttpsURLConnection.setDefaultSSLSocketFactory(origSsf); - server.stop(); - assertThat(FileSystemPool.INSTANCE.mounts(), empty()); - } - - private SslContextFactory.Server createServerSslContextFactory(String trustStorePath, String trustStorePassword) - { - SslContextFactory.Server cf = new SslContextFactory.Server(); - cf.setNeedClientAuth(true); - cf.setTrustStorePassword(trustStorePassword); - cf.setTrustStoreResource(ResourceFactory.root().newResource(MavenPaths.findTestResourceFile(trustStorePath))); - cf.setKeyStoreResource(ResourceFactory.root().newResource(MavenPaths.findTestResourceFile("clientcert.jks"))); - cf.setKeyStorePassword("changeit"); - cf.setSniRequired(false); - cf.setWantClientAuth(true); - return cf; - } - - @Test - public void testAuthenticationWithClientCertificateSucceeds() throws Exception - { - HttpsURLConnection.setDefaultHostnameVerifier((s, sslSession) -> true); - SslContextFactory.Server cf = createServerSslContextFactory("cacerts.jks", "changeit"); - cf.start(); - HttpsURLConnection.setDefaultSSLSocketFactory(cf.getSslContext().getSocketFactory()); - URL url = serverHttpsUri.resolve("/").toURL(); - HttpURLConnection connection = (HttpURLConnection)url.openConnection(); - assertThat("response code", connection.getResponseCode(), is(200)); - String response = IO.toString(connection.getInputStream()); - assertThat("response message", response, containsString(MESSAGE)); - } - - @Test - public void testAuthenticationWithoutClientCertificateFails() throws Exception - { - URL url = serverHttpUri.resolve("/").toURL(); - HttpURLConnection connection = (HttpURLConnection)url.openConnection(); - assertThat("response code", connection.getResponseCode(), is(403)); - } - - private int freePort() throws IOException - { - try (ServerSocket server = new ServerSocket()) - { - server.setReuseAddress(true); - server.bind(new InetSocketAddress("localhost", 0)); - return server.getLocalPort(); - } - } - - public static class FooServlet extends HttpServlet - { - @Override - protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException - { - res.setContentType("text/plain; charset=utf-8"); - res.setStatus(HttpServletResponse.SC_OK); - res.getWriter().println(MESSAGE); - } - } -} diff --git a/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/ConstraintTest.java b/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/ConstraintTest.java index 860a4bfb7484..eb93b3862054 100644 --- a/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/ConstraintTest.java +++ b/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/ConstraintTest.java @@ -38,16 +38,18 @@ import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; +import org.eclipse.jetty.ee.security.ConstraintMapping; import org.eclipse.jetty.ee10.servlet.ServletContextHandler; import org.eclipse.jetty.ee10.servlet.ServletHandler; import org.eclipse.jetty.ee10.servlet.ServletHolder; import org.eclipse.jetty.ee10.servlet.SessionHandler; -import org.eclipse.jetty.ee10.servlet.security.authentication.BasicAuthenticator; -import org.eclipse.jetty.ee10.servlet.security.authentication.DigestAuthenticator; -import org.eclipse.jetty.ee10.servlet.security.authentication.FormAuthenticator; import org.eclipse.jetty.http.HttpHeader; import org.eclipse.jetty.http.HttpStatus; import org.eclipse.jetty.http.HttpTester; +import org.eclipse.jetty.security.Constraint; +import org.eclipse.jetty.security.authentication.BasicAuthenticator; +import org.eclipse.jetty.security.authentication.DigestAuthenticator; +import org.eclipse.jetty.security.authentication.FormAuthenticator; import org.eclipse.jetty.server.Connector; import org.eclipse.jetty.server.HttpConfiguration; import org.eclipse.jetty.server.HttpConnectionFactory; @@ -55,11 +57,11 @@ import org.eclipse.jetty.server.Server; import org.eclipse.jetty.util.StringUtil; import org.eclipse.jetty.util.TypeUtil; -import org.eclipse.jetty.util.security.Constraint; import org.eclipse.jetty.util.security.Password; import org.hamcrest.Matchers; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; @@ -69,6 +71,7 @@ import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.contains; import static org.hamcrest.Matchers.containsString; +import static org.hamcrest.Matchers.greaterThan; import static org.hamcrest.Matchers.in; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.not; @@ -77,6 +80,9 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNotSame; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertSame; import static org.junit.jupiter.api.Assertions.assertTrue; public class ConstraintTest @@ -84,17 +90,12 @@ public class ConstraintTest private static final String TEST_REALM = "TestRealm"; private Server _server; private LocalConnector _connector; - private ServletContextHandler _contextHandler; private ConstraintSecurityHandler _security; private HttpConfiguration _config; - private Constraint _forbidConstraint; - private Constraint _authAnyRoleConstraint; - private Constraint _authAdminConstraint; - private Constraint _relaxConstraint; - private Constraint _loginPageConstraint; - private Constraint _noAuthConstraint; - private Constraint _confidentialDataConstraint; - private Constraint _anyUserAuthConstraint; + private ServletContextHandler _servletContextHandler; + private Constraint.Builder _forbidConstraint; + private Constraint.Builder _relaxConstraint; + private Constraint.Builder _noAuthConstraint; @BeforeEach public void setupServer() @@ -104,27 +105,31 @@ public void setupServer() _config = _connector.getConnectionFactory(HttpConnectionFactory.class).getHttpConfiguration(); _server.setConnectors(new Connector[]{_connector}); - _contextHandler = new ServletContextHandler(); + _servletContextHandler = new ServletContextHandler(ServletContextHandler.SESSIONS | ServletContextHandler.SECURITY); + _servletContextHandler.setContextPath("/ctx"); + _server.setHandler(_servletContextHandler); - TestLoginService loginService = new TestLoginService(TEST_REALM); + SessionHandler sessionHandler = _servletContextHandler.getSessionHandler(); + _servletContextHandler.setHandler(sessionHandler); + TestLoginService loginService = new TestLoginService(TEST_REALM); loginService.putUser("user0", new Password("password"), new String[]{}); loginService.putUser("user", new Password("password"), new String[]{"user"}); loginService.putUser("user2", new Password("password"), new String[]{"user"}); loginService.putUser("admin", new Password("password"), new String[]{"user", "administrator"}); loginService.putUser("user3", new Password("password"), new String[]{"foo"}); - - _contextHandler.setContextPath("/ctx"); - _server.setHandler(_contextHandler); - + loginService.putUser("user4", new Password("password"), new String[]{"A", "B", "C", "D"}); _server.addBean(loginService); - _security = new ConstraintSecurityHandler(); - _contextHandler.setSessionHandler(new SessionHandler()); - _contextHandler.setSecurityHandler(_security); - _contextHandler.getServletHandler().addServletWithMapping(RequestServlet.class, "/"); - + _security = (ConstraintSecurityHandler)_servletContextHandler.getSecurityHandler(); _security.setConstraintMappings(getConstraintMappings(), getKnownRoles()); + sessionHandler.setHandler(_security); + + ServletHandler servletHandler = _servletContextHandler.getServletHandler(); + _security.setHandler(servletHandler); + + TestServlet testServlet = new TestServlet(); + servletHandler.addServletWithMapping(new ServletHolder("test", testServlet), "/"); } @AfterEach @@ -144,87 +149,241 @@ public Set getKnownRoles() private List getConstraintMappings() { - _forbidConstraint = new Constraint(); - _forbidConstraint.setAuthenticate(true); - _forbidConstraint.setName("forbid"); + _forbidConstraint = new Constraint.Builder(); + _forbidConstraint.authorization(Constraint.Authorization.FORBIDDEN); + _forbidConstraint.name("forbid"); ConstraintMapping mapping0 = new ConstraintMapping(); mapping0.setPathSpec("/forbid/*"); - mapping0.setConstraint(_forbidConstraint); + mapping0.setConstraint(_forbidConstraint.build()); - _authAnyRoleConstraint = new Constraint(); - _authAnyRoleConstraint.setAuthenticate(true); - _authAnyRoleConstraint.setName("auth"); - _authAnyRoleConstraint.setRoles(new String[]{Constraint.ANY_ROLE}); + Constraint.Builder authAnyRoleConstraint = new Constraint.Builder(); + authAnyRoleConstraint.authorization(Constraint.Authorization.KNOWN_ROLE); + authAnyRoleConstraint.name("auth"); ConstraintMapping mapping1 = new ConstraintMapping(); mapping1.setPathSpec("/auth/*"); - mapping1.setConstraint(_authAnyRoleConstraint); + mapping1.setConstraint(authAnyRoleConstraint.build()); - _authAdminConstraint = new Constraint(); - _authAdminConstraint.setAuthenticate(true); - _authAdminConstraint.setName("admin"); - _authAdminConstraint.setRoles(new String[]{"administrator"}); + Constraint.Builder authAdminConstraint = new Constraint.Builder(); + authAdminConstraint.name("admin"); + authAdminConstraint.roles("administrator"); ConstraintMapping mapping2 = new ConstraintMapping(); mapping2.setPathSpec("/admin/*"); - mapping2.setConstraint(_authAdminConstraint); + mapping2.setConstraint(authAdminConstraint.build()); mapping2.setMethod("GET"); ConstraintMapping mapping2o = new ConstraintMapping(); mapping2o.setPathSpec("/admin/*"); - mapping2o.setConstraint(_forbidConstraint); + mapping2o.setConstraint(_forbidConstraint.build()); mapping2o.setMethodOmissions(new String[]{"GET"}); - _relaxConstraint = new Constraint(); - _relaxConstraint.setAuthenticate(false); - _relaxConstraint.setName("relax"); + _relaxConstraint = new Constraint.Builder(); + _relaxConstraint.authorization(Constraint.Authorization.ALLOWED); + _relaxConstraint.name("relax"); ConstraintMapping mapping3 = new ConstraintMapping(); mapping3.setPathSpec("/admin/relax/*"); - mapping3.setConstraint(_relaxConstraint); + mapping3.setConstraint(_relaxConstraint.build()); - _loginPageConstraint = new Constraint(); - _loginPageConstraint.setAuthenticate(true); - _loginPageConstraint.setName("loginpage"); - _loginPageConstraint.setRoles(new String[]{"administrator"}); + Constraint.Builder loginPageConstraint = new Constraint.Builder(); + loginPageConstraint.name("loginpage"); + loginPageConstraint.roles("administrator"); ConstraintMapping mapping4 = new ConstraintMapping(); mapping4.setPathSpec("/testLoginPage"); - mapping4.setConstraint(_loginPageConstraint); + mapping4.setConstraint(loginPageConstraint.build()); - _noAuthConstraint = new Constraint(); - _noAuthConstraint.setAuthenticate(false); - _noAuthConstraint.setName("allow forbidden"); + _noAuthConstraint = new Constraint.Builder(); + _noAuthConstraint.authorization(Constraint.Authorization.ALLOWED); + _noAuthConstraint.name("allow forbidden"); ConstraintMapping mapping5 = new ConstraintMapping(); mapping5.setPathSpec("/forbid/post"); - mapping5.setConstraint(_noAuthConstraint); + mapping5.setConstraint(_noAuthConstraint.build()); mapping5.setMethod("POST"); ConstraintMapping mapping5o = new ConstraintMapping(); mapping5o.setPathSpec("/forbid/post"); - mapping5o.setConstraint(_forbidConstraint); + mapping5o.setConstraint(_forbidConstraint.build()); mapping5o.setMethodOmissions(new String[]{"POST"}); - _confidentialDataConstraint = new Constraint(); - _confidentialDataConstraint.setAuthenticate(false); - _confidentialDataConstraint.setName("data constraint"); - _confidentialDataConstraint.setDataConstraint(Constraint.DC_CONFIDENTIAL); + Constraint.Builder confidentialDataConstraint = new Constraint.Builder(); + confidentialDataConstraint.authorization(Constraint.Authorization.ALLOWED); + confidentialDataConstraint.name("data constraint"); + confidentialDataConstraint.transport(Constraint.Transport.SECURE); ConstraintMapping mapping6 = new ConstraintMapping(); mapping6.setPathSpec("/data/*"); - mapping6.setConstraint(_confidentialDataConstraint); - - _anyUserAuthConstraint = new Constraint(); - _anyUserAuthConstraint.setAuthenticate(true); - _anyUserAuthConstraint.setName("** constraint"); - _anyUserAuthConstraint.setRoles(new String[]{ - Constraint.ANY_AUTH, "user" - }); //the "user" role is superfluous once ** has been defined + mapping6.setConstraint(confidentialDataConstraint.build()); + + Constraint.Builder anyUserAuthConstraint = new Constraint.Builder(); + anyUserAuthConstraint.authorization(Constraint.Authorization.ANY_USER); + anyUserAuthConstraint.name("** constraint"); ConstraintMapping mapping7 = new ConstraintMapping(); mapping7.setPathSpec("/starstar/*"); - mapping7.setConstraint(_anyUserAuthConstraint); + mapping7.setConstraint(anyUserAuthConstraint.build()); return Arrays.asList(mapping0, mapping1, mapping2, mapping2o, mapping3, mapping4, mapping5, mapping5o, mapping6, mapping7); } + @Test + public void testCombiningConstraints() throws Exception + { + String getString = "GET /ctx/test/info HTTP/1.0"; + String requestString = getString + "\r\n\r\n"; + String forbiddenString = "HTTP/1.1 403 Forbidden"; + + _security.setAuthenticator(new BasicAuthenticator()); + + //an auth-constraint with role * + Constraint.Builder authAnyRoleConstraint = new Constraint.Builder(); + authAnyRoleConstraint.authorization(Constraint.Authorization.KNOWN_ROLE); + authAnyRoleConstraint.name("anyAuth"); + ConstraintMapping starMapping = new ConstraintMapping(); + starMapping.setPathSpec("/test/*"); + starMapping.setConstraint(authAnyRoleConstraint.build()); + + //an auth-constraint with role ** + Constraint.Builder authAnyAuthConstraint = new Constraint.Builder(); + authAnyAuthConstraint.authorization(Constraint.Authorization.ANY_USER); + authAnyAuthConstraint.name("** constraint"); + ConstraintMapping starStarMapping = new ConstraintMapping(); + starStarMapping.setPathSpec("/test/*"); + starStarMapping.setConstraint(authAnyAuthConstraint.build()); + + //a relax constraint, ie no auth-constraint + Constraint.Builder relaxConstraint = new Constraint.Builder(); + relaxConstraint.authorization(Constraint.Authorization.ALLOWED); + relaxConstraint.name("relax"); + ConstraintMapping relaxMapping = new ConstraintMapping(); + relaxMapping.setPathSpec("/test/*"); + relaxMapping.setConstraint(relaxConstraint.build()); + + //a forbidden constraint + Constraint.Builder forbidConstraint = new Constraint.Builder(); + forbidConstraint.authorization(Constraint.Authorization.FORBIDDEN); + forbidConstraint.name("forbid"); + ConstraintMapping forbidMapping = new ConstraintMapping(); + forbidMapping.setPathSpec("/test/*"); + forbidMapping.setConstraint(forbidConstraint.build()); + + //an auth-constraint with roles A, B + Constraint.Builder rolesConstraint = new Constraint.Builder(); + rolesConstraint.name("admin"); + rolesConstraint.roles("A", "B"); + ConstraintMapping rolesABMapping = new ConstraintMapping(); + rolesABMapping.setPathSpec("/test/*"); + rolesABMapping.setConstraint(rolesConstraint.build()); + + //an auth-constraint with roles C, C + Constraint.Builder roles2Constraint = new Constraint.Builder(); + roles2Constraint.name("admin"); + roles2Constraint.roles("C", "D"); + ConstraintMapping rolesCDMapping = new ConstraintMapping(); + rolesCDMapping.setPathSpec("/test/*"); + rolesCDMapping.setConstraint(roles2Constraint.build()); + + //test combining forbidden with relax + List combinableConstraints = Arrays.asList(forbidMapping, relaxMapping); + _security.setConstraintMappings(combinableConstraints); + _server.start(); + String response; + response = _connector.getResponse(requestString); + assertThat(response, startsWith(forbiddenString)); + + //test combining forbidden with * + _server.stop(); + combinableConstraints = Arrays.asList(forbidMapping, starMapping); + _security.setConstraintMappings(combinableConstraints); + _server.start(); + response = _connector.getResponse(requestString); + assertThat(response, startsWith(forbiddenString)); + + //test combining forbidden with ** + _server.stop(); + combinableConstraints = Arrays.asList(forbidMapping, starStarMapping); + _security.setConstraintMappings(combinableConstraints); + _server.start(); + response = _connector.getResponse(requestString); + assertThat(response, startsWith(forbiddenString)); + + //test combining forbidden with roles + _server.stop(); + combinableConstraints = Arrays.asList(forbidMapping, rolesABMapping); + _security.setConstraintMappings(combinableConstraints); + _server.start(); + response = _connector.getResponse(requestString); + assertThat(response, startsWith(forbiddenString)); + + //test combining * with relax + _server.stop(); + combinableConstraints = Arrays.asList(starMapping, relaxMapping); + _security.setConstraintMappings(combinableConstraints); + _server.start(); + response = _connector.getResponse(requestString); + assertThat(response, startsWith("HTTP/1.1 200 OK")); + + //test combining * with ** + _server.stop(); + combinableConstraints = Arrays.asList(starMapping, starStarMapping); + _security.setConstraintMappings(combinableConstraints); + _server.start(); + response = _connector.getResponse(requestString); + assertThat(response, startsWith("HTTP/1.1 401 Unauthorized")); + response = _connector.getResponse(getString + "\r\n" + + "Authorization: Basic " + authBase64("user4:password") + "\r\n" + + "\r\n"); + assertThat(response, startsWith("HTTP/1.1 200 OK")); + + //test combining * with roles + _server.stop(); + combinableConstraints = Arrays.asList(starMapping, rolesABMapping); + _security.setConstraintMappings(combinableConstraints); + _server.start(); + response = _connector.getResponse(requestString); + assertThat(response, startsWith("HTTP/1.1 401 Unauthorized")); + response = _connector.getResponse(getString + "\r\n" + + "Authorization: Basic " + authBase64("user4:password") + "\r\n" + + "\r\n"); + assertThat(response, startsWith("HTTP/1.1 200 OK")); + + //test combining ** with relax + _server.stop(); + combinableConstraints = Arrays.asList(starStarMapping, relaxMapping); + _security.setConstraintMappings(combinableConstraints); + _server.start(); + response = _connector.getResponse(requestString); + assertThat(response, startsWith("HTTP/1.1 200 OK")); + + //test combining ** with roles + _server.stop(); + combinableConstraints = Arrays.asList(starStarMapping, rolesABMapping); + _security.setConstraintMappings(combinableConstraints); + _server.start(); + response = _connector.getResponse(requestString); + assertThat(response, startsWith("HTTP/1.1 401 Unauthorized")); + response = _connector.getResponse(getString + "\r\n" + + "Authorization: Basic " + authBase64("user4:password") + "\r\n" + + "\r\n"); + assertThat(response, startsWith("HTTP/1.1 200 OK")); + + //test combining roles with roles + _server.stop(); + combinableConstraints = Arrays.asList(rolesCDMapping, rolesABMapping); + _security.setConstraintMappings(combinableConstraints); + _server.start(); + response = _connector.getResponse(requestString); + assertThat(response, startsWith("HTTP/1.1 401 Unauthorized")); + response = _connector.getResponse(getString + "\r\n" + + "Authorization: Basic " + authBase64("user4:password") + "\r\n" + + "\r\n"); + assertThat(response, startsWith("HTTP/1.1 200 OK")); + + //test combining relax with roles + _server.stop(); + combinableConstraints = Arrays.asList(rolesABMapping, relaxMapping); + _security.setConstraintMappings(combinableConstraints); + _server.start(); + response = _connector.getResponse(requestString); + assertThat(response, startsWith("HTTP/1.1 200 OK")); + } + /** * Test that constraint mappings added before the context starts are * retained, but those that are added after the context starts are not. - * - * @throws Exception */ @Test public void testDurableConstraints() throws Exception @@ -252,10 +411,10 @@ public void testDurableConstraints() throws Exception //Add a non-durable constraint ConstraintMapping mapping = new ConstraintMapping(); mapping.setPathSpec("/xxxx/*"); - Constraint constraint = new Constraint(); - constraint.setAuthenticate(false); - constraint.setName("transient"); - mapping.setConstraint(constraint); + Constraint.Builder constraint = new Constraint.Builder(); + constraint.authorization(Constraint.Authorization.ALLOWED); + constraint.name("transient"); + mapping.setConstraint(constraint.build()); _security.addConstraintMapping(mapping); @@ -295,11 +454,9 @@ public void testDurableConstraints() throws Exception /** * Equivalent of Servlet Spec 3.1 pg 132, sec 13.4.1.1, Example 13-1 * @ServletSecurity - * - * @throws Exception if test fails */ @Test - public void testSecurityElementExample131() throws Exception + public void testSecurityElementExample131() { ServletSecurityElement element = new ServletSecurityElement(); List mappings = ConstraintSecurityHandler.createConstraintsWithMappingsForPath("foo", "/foo/*", element); @@ -309,153 +466,152 @@ public void testSecurityElementExample131() throws Exception /** * Equivalent of Servlet Spec 3.1 pg 132, sec 13.4.1.1, Example 13-2 * @ServletSecurity(@HttpConstraint(transportGuarantee = TransportGuarantee.CONFIDENTIAL)) - * - * @throws Exception if test fails */ @Test - public void testSecurityElementExample132() throws Exception + public void testSecurityElementExample132() { HttpConstraintElement httpConstraintElement = new HttpConstraintElement(TransportGuarantee.CONFIDENTIAL); ServletSecurityElement element = new ServletSecurityElement(httpConstraintElement); List mappings = ConstraintSecurityHandler.createConstraintsWithMappingsForPath("foo", "/foo/*", element); - assertTrue(!mappings.isEmpty()); + assertFalse(mappings.isEmpty()); assertEquals(1, mappings.size()); ConstraintMapping mapping = mappings.get(0); - assertEquals(2, mapping.getConstraint().getDataConstraint()); + assertThat(mapping.getConstraint().getTransport(), is(Constraint.Transport.SECURE)); } /** * Equivalent of Servlet Spec 3.1 pg 132, sec 13.4.1.1, Example 13-3 * - * @throws Exception if test fails - * @ServletSecurity(@HttpConstraint(EmptyRoleSemantic.DENY)) + *

+     * @ServletSecurity(@HttpConstraint(EmptyRoleSemantic.DENY))
+     * 
*/ @Test - public void testSecurityElementExample133() throws Exception + public void testSecurityElementExample133() { HttpConstraintElement httpConstraintElement = new HttpConstraintElement(EmptyRoleSemantic.DENY); ServletSecurityElement element = new ServletSecurityElement(httpConstraintElement); List mappings = ConstraintSecurityHandler.createConstraintsWithMappingsForPath("foo", "/foo/*", element); - assertTrue(!mappings.isEmpty()); + assertFalse(mappings.isEmpty()); assertEquals(1, mappings.size()); ConstraintMapping mapping = mappings.get(0); - assertTrue(mapping.getConstraint().isForbidden()); + Constraint constraint = mapping.getConstraint(); + assertSame(constraint.getAuthorization(), Constraint.Authorization.FORBIDDEN); } /** * Equivalent of Servlet Spec 3.1 pg 132, sec 13.4.1.1, Example 13-4 - * - * @throws Exception if test fails - * @ServletSecurity(@HttpConstraint(rolesAllowed = "R1")) + *
+     * @ServletSecurity(@HttpConstraint(rolesAllowed = "R1"))
+     * 
*/ @Test - public void testSecurityElementExample134() throws Exception + public void testSecurityElementExample134() { HttpConstraintElement httpConstraintElement = new HttpConstraintElement(TransportGuarantee.NONE, "R1"); ServletSecurityElement element = new ServletSecurityElement(httpConstraintElement); List mappings = ConstraintSecurityHandler.createConstraintsWithMappingsForPath("foo", "/foo/*", element); - assertTrue(!mappings.isEmpty()); + assertFalse(mappings.isEmpty()); assertEquals(1, mappings.size()); ConstraintMapping mapping = mappings.get(0); - assertTrue(mapping.getConstraint().getAuthenticate()); - assertTrue(mapping.getConstraint().getRoles() != null); - assertEquals(1, mapping.getConstraint().getRoles().length); - assertEquals("R1", mapping.getConstraint().getRoles()[0]); - assertEquals(0, mapping.getConstraint().getDataConstraint()); + assertNotSame(mapping.getConstraint().getAuthorization(), Constraint.Authorization.ALLOWED); + assertNotNull(mapping.getConstraint().getRoles()); + assertEquals("R1", mapping.getConstraint().getRoles().stream().findFirst().orElse(null)); + assertThat(mapping.getConstraint().getTransport(), not(is(Constraint.Transport.SECURE))); } /** * Equivalent of Servlet Spec 3.1 pg 132, sec 13.4.1.1, Example 13-5 - * - * @throws Exception if test fails - * @ServletSecurity((httpMethodConstraints = { - * @HttpMethodConstraint(value = "GET", rolesAllowed = "R1"), - * @HttpMethodConstraint(value = "POST", rolesAllowed = "R1", + *
+     * @ServletSecurity((httpMethodConstraints = {
+     * @HttpMethodConstraint(value = "GET", rolesAllowed = "R1"),
+     * @HttpMethodConstraint(value = "POST", rolesAllowed = "R1",
      * transportGuarantee = TransportGuarantee.CONFIDENTIAL)})
+     * 
*/ @Test - public void testSecurityElementExample135() throws Exception + public void testSecurityElementExample135() { - List methodElements = new ArrayList(); + List methodElements = new ArrayList<>(); methodElements.add(new HttpMethodConstraintElement("GET", new HttpConstraintElement(TransportGuarantee.NONE, "R1"))); methodElements.add(new HttpMethodConstraintElement("POST", new HttpConstraintElement(TransportGuarantee.CONFIDENTIAL, "R1"))); ServletSecurityElement element = new ServletSecurityElement(methodElements); List mappings = ConstraintSecurityHandler.createConstraintsWithMappingsForPath("foo", "/foo/*", element); - assertTrue(!mappings.isEmpty()); + assertFalse(mappings.isEmpty()); assertEquals(2, mappings.size()); assertEquals("GET", mappings.get(0).getMethod()); - assertEquals("R1", mappings.get(0).getConstraint().getRoles()[0]); - assertTrue(mappings.get(0).getMethodOmissions() == null); - assertEquals(0, mappings.get(0).getConstraint().getDataConstraint()); + assertEquals("R1", mappings.get(0).getConstraint().getRoles().stream().findFirst().orElse(null)); + assertNull(mappings.get(0).getMethodOmissions()); + assertThat(mappings.get(0).getConstraint().getTransport(), not(is(Constraint.Transport.SECURE))); assertEquals("POST", mappings.get(1).getMethod()); - assertEquals("R1", mappings.get(1).getConstraint().getRoles()[0]); - assertEquals(2, mappings.get(1).getConstraint().getDataConstraint()); - assertTrue(mappings.get(1).getMethodOmissions() == null); + assertEquals("R1", mappings.get(1).getConstraint().getRoles().stream().findFirst().orElse(null)); + assertThat(mappings.get(1).getConstraint().getTransport(), is(Constraint.Transport.SECURE)); + assertNull(mappings.get(1).getMethodOmissions()); } /** * Equivalent of Servlet Spec 3.1 pg 132, sec 13.4.1.1, Example 13-6 - * - * @throws Exception if test fails - * @ServletSecurity(value = @HttpConstraint(rolesAllowed = "R1"), httpMethodConstraints = @HttpMethodConstraint("GET")) + *
+     * @ServletSecurity(value = @HttpConstraint(rolesAllowed = "R1"), httpMethodConstraints = @HttpMethodConstraint("GET"))
+     * 
*/ @Test - public void testSecurityElementExample136() throws Exception + public void testSecurityElementExample136() { - List methodElements = new ArrayList(); + List methodElements = new ArrayList<>(); methodElements.add(new HttpMethodConstraintElement("GET")); ServletSecurityElement element = new ServletSecurityElement(new HttpConstraintElement(TransportGuarantee.NONE, "R1"), methodElements); List mappings = ConstraintSecurityHandler.createConstraintsWithMappingsForPath("foo", "/foo/*", element); - assertTrue(!mappings.isEmpty()); + assertFalse(mappings.isEmpty()); assertEquals(2, mappings.size()); - assertTrue(mappings.get(0).getMethodOmissions() != null); + assertNotNull(mappings.get(0).getMethodOmissions()); assertEquals("GET", mappings.get(0).getMethodOmissions()[0]); - assertTrue(mappings.get(0).getConstraint().getAuthenticate()); - assertEquals("R1", mappings.get(0).getConstraint().getRoles()[0]); + assertNotSame(mappings.get(0).getConstraint().getAuthorization(), Constraint.Authorization.ALLOWED); + assertEquals("R1", mappings.get(0).getConstraint().getRoles().stream().findFirst().orElse(null)); assertEquals("GET", mappings.get(1).getMethod()); - assertTrue(mappings.get(1).getMethodOmissions() == null); - assertEquals(0, mappings.get(1).getConstraint().getDataConstraint()); - assertFalse(mappings.get(1).getConstraint().getAuthenticate()); + assertNull(mappings.get(1).getMethodOmissions()); + assertThat(mappings.get(1).getConstraint().getTransport(), not(is(Constraint.Transport.SECURE))); + assertThat(mappings.get(1).getConstraint().getAuthorization(), is(Constraint.Authorization.ALLOWED)); } /** * Equivalent of Servlet Spec 3.1 pg 132, sec 13.4.1.1, Example 13-7 - * - * @throws Exception if test fails - * @ServletSecurity(value = @HttpConstraint(rolesAllowed = "R1"), + *
+     * @ServletSecurity(value = @HttpConstraint(rolesAllowed = "R1"),
      * httpMethodConstraints = @HttpMethodConstraint(value="TRACE",
      * emptyRoleSemantic = EmptyRoleSemantic.DENY))
+     * 
*/ @Test - public void testSecurityElementExample137() throws Exception + public void testSecurityElementExample137() { - List methodElements = new ArrayList(); + List methodElements = new ArrayList<>(); methodElements.add(new HttpMethodConstraintElement("TRACE", new HttpConstraintElement(EmptyRoleSemantic.DENY))); ServletSecurityElement element = new ServletSecurityElement(new HttpConstraintElement(TransportGuarantee.NONE, "R1"), methodElements); List mappings = ConstraintSecurityHandler.createConstraintsWithMappingsForPath("foo", "/foo/*", element); - assertTrue(!mappings.isEmpty()); + assertFalse(mappings.isEmpty()); assertEquals(2, mappings.size()); - assertTrue(mappings.get(0).getMethodOmissions() != null); + assertNotNull(mappings.get(0).getMethodOmissions()); assertEquals("TRACE", mappings.get(0).getMethodOmissions()[0]); - assertTrue(mappings.get(0).getConstraint().getAuthenticate()); - assertEquals("R1", mappings.get(0).getConstraint().getRoles()[0]); + assertNotSame(mappings.get(0).getConstraint().getAuthorization(), Constraint.Authorization.ALLOWED); + assertEquals("R1", mappings.get(0).getConstraint().getRoles().stream().findFirst().orElse(null)); assertEquals("TRACE", mappings.get(1).getMethod()); - assertTrue(mappings.get(1).getMethodOmissions() == null); - assertEquals(0, mappings.get(1).getConstraint().getDataConstraint()); - assertTrue(mappings.get(1).getConstraint().isForbidden()); + assertNull(mappings.get(1).getMethodOmissions()); + assertThat(mappings.get(1).getConstraint().getTransport(), not(is(Constraint.Transport.SECURE))); + Constraint constraint = mappings.get(1).getConstraint(); + assertSame(constraint.getAuthorization(), Constraint.Authorization.FORBIDDEN); } @Test public void testUncoveredHttpMethodDetection() throws Exception { //Test no methods named - Constraint constraint1 = new Constraint(); - constraint1.setAuthenticate(true); - constraint1.setName("** constraint"); - constraint1.setRoles(new String[]{Constraint.ANY_AUTH, "user"}); //No methods named, no uncovered methods + Constraint.Builder constraint1 = new Constraint.Builder(); + constraint1.authorization(Constraint.Authorization.ANY_USER); + constraint1.name("** constraint"); ConstraintMapping mapping1 = new ConstraintMapping(); mapping1.setPathSpec("/starstar/*"); - mapping1.setConstraint(constraint1); + mapping1.setConstraint(constraint1.build()); _security.setConstraintMappings(Collections.singletonList(mapping1)); _security.setAuthenticator(new BasicAuthenticator()); @@ -465,14 +621,14 @@ public void testUncoveredHttpMethodDetection() throws Exception assertTrue(uncoveredPaths.isEmpty()); //no uncovered methods //Test only an explicitly named method, no omissions to cover other methods - Constraint constraint2 = new Constraint(); - constraint2.setAuthenticate(true); - constraint2.setName("user constraint"); - constraint2.setRoles(new String[]{"user"}); + Constraint.Builder constraint2 = new Constraint.Builder(); + constraint2.authorization(Constraint.Authorization.SPECIFIC_ROLE); + constraint2.name("user constraint"); + constraint2.roles("user"); ConstraintMapping mapping2 = new ConstraintMapping(); mapping2.setPathSpec("/user/*"); mapping2.setMethod("GET"); - mapping2.setConstraint(constraint2); + mapping2.setConstraint(constraint2.build()); _security.addConstraintMapping(mapping2); uncoveredPaths = _security.getPathsWithUncoveredHttpMethods(); @@ -481,13 +637,13 @@ public void testUncoveredHttpMethodDetection() throws Exception assertThat("/user/*", is(in(uncoveredPaths))); //Test an explicitly named method with an http-method-omission to cover all other methods - Constraint constraint2a = new Constraint(); - constraint2a.setAuthenticate(true); - constraint2a.setName("forbid constraint"); + Constraint.Builder constraint2a = new Constraint.Builder(); + constraint2a.authorization(Constraint.Authorization.FORBIDDEN); + constraint2a.name("forbid constraint"); ConstraintMapping mapping2a = new ConstraintMapping(); mapping2a.setPathSpec("/user/*"); mapping2a.setMethodOmissions(new String[]{"GET"}); - mapping2a.setConstraint(constraint2a); + mapping2a.setConstraint(constraint2a.build()); _security.addConstraintMapping(mapping2a); uncoveredPaths = _security.getPathsWithUncoveredHttpMethods(); @@ -495,13 +651,13 @@ public void testUncoveredHttpMethodDetection() throws Exception assertEquals(0, uncoveredPaths.size()); //Test an http-method-omission only - Constraint constraint3 = new Constraint(); - constraint3.setAuthenticate(true); - constraint3.setName("omit constraint"); + Constraint.Builder constraint3 = new Constraint.Builder(); + constraint3.authorization(Constraint.Authorization.FORBIDDEN); + constraint3.name("omit constraint"); ConstraintMapping mapping3 = new ConstraintMapping(); mapping3.setPathSpec("/omit/*"); mapping3.setMethodOmissions(new String[]{"GET", "POST"}); - mapping3.setConstraint(constraint3); + mapping3.setConstraint(constraint3.build()); _security.addConstraintMapping(mapping3); uncoveredPaths = _security.getPathsWithUncoveredHttpMethods(); @@ -539,23 +695,24 @@ public static Stream basicScenarios() (response) -> { String authHeader = response.get(HttpHeader.WWW_AUTHENTICATE); - assertThat(response.toString(), authHeader, containsString("basic realm=\"TestRealm\"")); + assertThat(response.toString(), authHeader, containsString("Basic realm=\"TestRealm\"")); } ) )); scenarios.add(Arguments.of( new Scenario( - "POST /ctx/auth/info HTTP/1.1\r\n" + - "Host: test\r\n" + - "Content-Length: 10\r\n" + - "\r\n" + - "0123456789", + """ + POST /ctx/auth/info HTTP/1.1\r + Host: test\r + Content-Length: 10\r + \r + 0123456789""", HttpStatus.UNAUTHORIZED_401, (response) -> { String authHeader = response.get(HttpHeader.WWW_AUTHENTICATE); - assertThat(response.toString(), authHeader, containsString("basic realm=\"TestRealm\"")); + assertThat(response.toString(), authHeader, containsString("Basic realm=\"TestRealm\"")); assertThat(response.get(HttpHeader.CONNECTION), nullValue()); } ) @@ -563,16 +720,17 @@ public static Stream basicScenarios() scenarios.add(Arguments.of( new Scenario( - "POST /ctx/auth/info HTTP/1.1\r\n" + - "Host: test\r\n" + - "Content-Length: 10\r\n" + - "\r\n" + - "012345", + """ + POST /ctx/auth/info HTTP/1.1\r + Host: test\r + Content-Length: 10\r + \r + 012345""", HttpStatus.UNAUTHORIZED_401, (response) -> { String authHeader = response.get(HttpHeader.WWW_AUTHENTICATE); - assertThat(response.toString(), authHeader, containsString("basic realm=\"TestRealm\"")); + assertThat(response.toString(), authHeader, containsString("Basic realm=\"TestRealm\"")); assertThat(response.get(HttpHeader.CONNECTION), is("close")); } ) @@ -587,7 +745,7 @@ public static Stream basicScenarios() (response) -> { String authHeader = response.get(HttpHeader.WWW_AUTHENTICATE); - assertThat(response.toString(), authHeader, containsString("basic realm=\"TestRealm\"")); + assertThat(response.toString(), authHeader, containsString("Basic realm=\"TestRealm\"")); } ) )); @@ -620,7 +778,7 @@ public static Stream basicScenarios() (response) -> { String authHeader = response.get(HttpHeader.WWW_AUTHENTICATE); - assertThat(response.toString(), authHeader, containsString("basic realm=\"TestRealm\"")); + assertThat(response.toString(), authHeader, containsString("Basic realm=\"TestRealm\"")); } ) )); @@ -634,7 +792,7 @@ public static Stream basicScenarios() (response) -> { String authHeader = response.get(HttpHeader.WWW_AUTHENTICATE); - assertThat(response.toString(), authHeader, containsString("basic realm=\"TestRealm\"")); + assertThat(response.toString(), authHeader, containsString("Basic realm=\"TestRealm\"")); } ) )); @@ -644,11 +802,7 @@ public static Stream basicScenarios() "GET /ctx/admin/info HTTP/1.0\r\n" + "Authorization: Basic " + authBase64("user:password") + "\r\n" + "\r\n", - HttpStatus.FORBIDDEN_403, - (response) -> - { - assertThat(response.getContent(), containsString("!role")); - } + HttpStatus.FORBIDDEN_403, response -> assertThat(response.getContent(), containsString("!authorized")) ) )); @@ -713,35 +867,35 @@ public void testBasic(Scenario scenario) throws Exception { List list = new ArrayList<>(getConstraintMappings()); - Constraint constraint6 = new Constraint(); - constraint6.setAuthenticate(true); - constraint6.setName("omit HEAD and GET"); - constraint6.setRoles(new String[]{"user"}); + Constraint.Builder constraint6 = new Constraint.Builder(); + constraint6.authorization(Constraint.Authorization.SPECIFIC_ROLE); + constraint6.name("omit HEAD and GET"); + constraint6.roles("user"); ConstraintMapping mapping6 = new ConstraintMapping(); mapping6.setPathSpec("/omit/*"); - mapping6.setConstraint(constraint6); + mapping6.setConstraint(constraint6.build()); mapping6.setMethodOmissions(new String[]{ "GET", "HEAD" }); //requests for every method except GET and HEAD must be in role "user" list.add(mapping6); - Constraint constraint7 = new Constraint(); - constraint7.setAuthenticate(true); - constraint7.setName("non-omitted GET"); - constraint7.setRoles(new String[]{"administrator"}); + Constraint.Builder constraint7 = new Constraint.Builder(); + constraint7.authorization(Constraint.Authorization.SPECIFIC_ROLE); + constraint7.name("non-omitted GET"); + constraint7.roles("administrator"); ConstraintMapping mapping7 = new ConstraintMapping(); mapping7.setPathSpec("/omit/*"); - mapping7.setConstraint(constraint7); + mapping7.setConstraint(constraint7.build()); mapping7.setMethod("GET"); //requests for GET must be in role "admin" list.add(mapping7); - Constraint constraint8 = new Constraint(); - constraint8.setAuthenticate(true); - constraint8.setName("non specific"); - constraint8.setRoles(new String[]{"foo"}); + Constraint.Builder constraint8 = new Constraint.Builder(); + constraint8.authorization(Constraint.Authorization.SPECIFIC_ROLE); + constraint8.name("non specific"); + constraint8.roles("foo"); ConstraintMapping mapping8 = new ConstraintMapping(); mapping8.setPathSpec("/omit/*"); - mapping8.setConstraint(constraint8); //requests for all methods must be in role "foo" + mapping8.setConstraint(constraint8.build()); //requests for all methods must be in role "foo" list.add(mapping8); Set knownRoles = new HashSet<>(); @@ -767,14 +921,12 @@ public void testBasic(Scenario scenario) throws Exception } } - private static String CNONCE = "1234567890"; - - private String digest(String nonce, String username, String password, String uri, String nc) throws Exception + private String digest(String nonce, String password, String nc) throws Exception { MessageDigest md = MessageDigest.getInstance("MD5"); byte[] ha1; // calc A1 digest - md.update(username.getBytes(ISO_8859_1)); + md.update("user".getBytes(ISO_8859_1)); md.update((byte)':'); md.update("TestRealm".getBytes(ISO_8859_1)); md.update((byte)':'); @@ -784,7 +936,7 @@ private String digest(String nonce, String username, String password, String uri md.reset(); md.update("GET".getBytes(ISO_8859_1)); md.update((byte)':'); - md.update(uri.getBytes(ISO_8859_1)); + md.update("/ctx/auth/info".getBytes(ISO_8859_1)); byte[] ha2 = md.digest(); // calc digest @@ -800,7 +952,8 @@ private String digest(String nonce, String username, String password, String uri md.update((byte)':'); md.update(nc.getBytes(ISO_8859_1)); md.update((byte)':'); - md.update(CNONCE.getBytes(ISO_8859_1)); + String cnonce = "1234567890"; + md.update(cnonce.getBytes(ISO_8859_1)); md.update((byte)':'); md.update("auth".getBytes(ISO_8859_1)); md.update((byte)':'); @@ -835,7 +988,7 @@ public void testDigest() throws Exception String nonce = matcher.group(1); //wrong password - String digest = digest(nonce, "user", "WRONG", "/ctx/auth/info", "1"); + String digest = digest(nonce, "WRONG", "1"); response = _connector.getResponse("GET /ctx/auth/info HTTP/1.0\r\n" + "Authorization: Digest username=\"user\", qop=auth, cnonce=\"1234567890\", uri=\"/ctx/auth/info\", realm=\"TestRealm\", " + "nc=1, " + @@ -845,7 +998,7 @@ public void testDigest() throws Exception assertThat(response, startsWith("HTTP/1.1 401 Unauthorized")); // right password - digest = digest(nonce, "user", "password", "/ctx/auth/info", "2"); + digest = digest(nonce, "password", "2"); response = _connector.getResponse("GET /ctx/auth/info HTTP/1.0\r\n" + "Authorization: Digest username=\"user\", qop=auth, cnonce=\"1234567890\", uri=\"/ctx/auth/info\", realm=\"TestRealm\", " + "nc=2, " + @@ -855,7 +1008,7 @@ public void testDigest() throws Exception assertThat(response, startsWith("HTTP/1.1 200 OK")); // once only - digest = digest(nonce, "user", "password", "/ctx/auth/info", "2"); + digest = digest(nonce, "password", "2"); response = _connector.getResponse("GET /ctx/auth/info HTTP/1.0\r\n" + "Authorization: Digest username=\"user\", qop=auth, cnonce=\"1234567890\", uri=\"/ctx/auth/info\", realm=\"TestRealm\", " + "nc=2, " + @@ -865,7 +1018,7 @@ public void testDigest() throws Exception assertThat(response, startsWith("HTTP/1.1 401 Unauthorized")); // increasing - digest = digest(nonce, "user", "password", "/ctx/auth/info", "4"); + digest = digest(nonce, "password", "4"); response = _connector.getResponse("GET /ctx/auth/info HTTP/1.0\r\n" + "Authorization: Digest username=\"user\", qop=auth, cnonce=\"1234567890\", uri=\"/ctx/auth/info\", realm=\"TestRealm\", " + "nc=4, " + @@ -875,7 +1028,7 @@ public void testDigest() throws Exception assertThat(response, startsWith("HTTP/1.1 200 OK")); // out of order - digest = digest(nonce, "user", "password", "/ctx/auth/info", "3"); + digest = digest(nonce, "password", "3"); response = _connector.getResponse("GET /ctx/auth/info HTTP/1.0\r\n" + "Authorization: Digest username=\"user\", qop=auth, cnonce=\"1234567890\", uri=\"/ctx/auth/info\", realm=\"TestRealm\", " + "nc=3, " + @@ -885,7 +1038,7 @@ public void testDigest() throws Exception assertThat(response, startsWith("HTTP/1.1 200 OK")); // stale - digest = digest(nonce, "user", "password", "/ctx/auth/info", "5"); + digest = digest(nonce, "password", "5"); response = _connector.getResponse("GET /ctx/auth/info HTTP/1.0\r\n" + "Authorization: Digest username=\"user\", qop=auth, cnonce=\"1234567890\", uri=\"/ctx/auth/info\", realm=\"TestRealm\", " + "nc=5, " + @@ -897,27 +1050,27 @@ public void testDigest() throws Exception } @Test + @Disabled("Dispatch unsupported") public void testFormDispatch() throws Exception { - //TODO uncomment when security supports dispatch - /* _security.setAuthenticator(new FormAuthenticator("/testLoginPage", "/testErrorPage", true)); + _security.setAuthenticator(new FormAuthenticator("/testLoginPage", "/testErrorPage", true)); _server.start(); - + String response; - + response = _connector.getResponse("GET /ctx/noauth/info HTTP/1.0\r\n\r\n"); assertThat(response, startsWith("HTTP/1.1 200 OK")); - + response = _connector.getResponse("GET /ctx/forbid/info HTTP/1.0\r\n\r\n"); assertThat(response, startsWith("HTTP/1.1 403 Forbidden")); - + response = _connector.getResponse("GET /ctx/auth/info HTTP/1.0\r\n\r\n"); assertThat(response, containsString("Cache-Control: no-cache")); assertThat(response, containsString("Expires")); assertThat(response, containsString("URI=/ctx/testLoginPage")); - + String session = response.substring(response.indexOf("JSESSIONID=") + 11, response.indexOf("; Path=/ctx")); - + response = _connector.getResponse("POST /ctx/j_security_check HTTP/1.0\r\n" + "Cookie: JSESSIONID=" + session + "\r\n" + "Content-Type: application/x-www-form-urlencoded\r\n" + @@ -925,7 +1078,7 @@ public void testFormDispatch() throws Exception "\r\n" + "j_username=user&j_password=wrong\r\n"); assertThat(response, containsString("testErrorPage")); - + response = _connector.getResponse("POST /ctx/j_security_check HTTP/1.0\r\n" + "Cookie: JSESSIONID=" + session + "\r\n" + "Content-Type: application/x-www-form-urlencoded\r\n" + @@ -937,17 +1090,17 @@ public void testFormDispatch() throws Exception assertThat(response, containsString("Location")); assertThat(response, containsString("/ctx/auth/info")); session = response.substring(response.indexOf("JSESSIONID=") + 11, response.indexOf("; Path=/ctx")); - + response = _connector.getResponse("GET /ctx/auth/info HTTP/1.0\r\n" + "Cookie: JSESSIONID=" + session + "\r\n" + "\r\n"); assertThat(response, startsWith("HTTP/1.1 200 OK")); - + response = _connector.getResponse("GET /ctx/admin/info HTTP/1.0\r\n" + "Cookie: JSESSIONID=" + session + "\r\n" + "\r\n"); assertThat(response, startsWith("HTTP/1.1 403")); - assertThat(response, containsString("!role"));*/ + assertThat(response, containsString("!authorized")); } @Test @@ -1005,13 +1158,12 @@ public void testFormRedirect() throws Exception "Cookie: JSESSIONID=" + session + "\r\n" + "\r\n"); assertThat(response, startsWith("HTTP/1.1 200 OK")); - assertThat(response, not(containsString("JSESSIONID=" + session))); response = _connector.getResponse("GET /ctx/admin/info HTTP/1.0\r\n" + "Cookie: JSESSIONID=" + session + "\r\n" + "\r\n"); assertThat(response, startsWith("HTTP/1.1 403")); - assertThat(response, containsString("!role")); + assertThat(response, containsString("!authorized")); assertThat(response, not(containsString("JSESSIONID=" + session))); } @@ -1029,11 +1181,13 @@ public void testFormPostRedirect() throws Exception response = _connector.getResponse("GET /ctx/forbid/info HTTP/1.0\r\n\r\n"); assertThat(response, startsWith("HTTP/1.1 403 Forbidden")); - response = _connector.getResponse("POST /ctx/auth/info HTTP/1.0\r\n" + - "Content-Type: application/x-www-form-urlencoded\r\n" + - "Content-Length: 27\r\n" + - "\r\n" + - "test_parameter=test_value\r\n"); + response = _connector.getResponse(""" + POST /ctx/auth/info HTTP/1.0\r + Content-Type: application/x-www-form-urlencoded\r + Content-Length: 27\r + \r + test_parameter=test_value\r + """); assertThat(response, containsString(" 302 Found")); assertThat(response, containsString("/ctx/testLoginPage")); String session = response.substring(response.indexOf("JSESSIONID=") + 11, response.indexOf("; Path=/ctx")); @@ -1082,7 +1236,7 @@ public void testFormPostRedirect() throws Exception "Cookie: JSESSIONID=" + session + "\r\n" + "\r\n"); assertThat(response, startsWith("HTTP/1.1 403")); - assertThat(response, containsString("!role")); + assertThat(response, containsString("!authorized")); } @Test @@ -1091,24 +1245,28 @@ public void testNonFormPostRedirectHttp10() throws Exception _security.setAuthenticator(new FormAuthenticator("/testLoginPage", "/testErrorPage", false)); _server.start(); - String response = _connector.getResponse("POST /ctx/auth/info HTTP/1.0\r\n" + - "Content-Type: text/plain\r\n" + - "Connection: keep-alive\r\n" + - "Content-Length: 10\r\n" + - "\r\n" + - "0123456789\r\n"); + String response = _connector.getResponse(""" + POST /ctx/auth/info HTTP/1.0\r + Content-Type: text/plain\r + Connection: keep-alive\r + Content-Length: 10\r + \r + 0123456789\r + """); assertThat(response, containsString(" 302 Found")); assertThat(response, containsString("/ctx/testLoginPage")); assertThat(response, not(containsString("Connection: close"))); assertThat(response, containsString("Connection: keep-alive")); - response = _connector.getResponse("POST /ctx/auth/info HTTP/1.0\r\n" + - "Host: localhost\r\n" + - "Content-Type: text/plain\r\n" + - "Connection: keep-alive\r\n" + - "Content-Length: 10\r\n" + - "\r\n" + - "012345\r\n"); + response = _connector.getResponse(""" + POST /ctx/auth/info HTTP/1.0\r + Host: localhost\r + Content-Type: text/plain\r + Connection: keep-alive\r + Content-Length: 10000\r + \r + 012345\r + """); assertThat(response, containsString(" 302 Found")); assertThat(response, containsString("/ctx/testLoginPage")); assertThat(response, not(containsString("Connection: keep-alive"))); @@ -1120,23 +1278,27 @@ public void testNonFormPostRedirectHttp11() throws Exception _security.setAuthenticator(new FormAuthenticator("/testLoginPage", "/testErrorPage", false)); _server.start(); - String response = _connector.getResponse("POST /ctx/auth/info HTTP/1.1\r\n" + - "Host: localhost\r\n" + - "Content-Type: text/plain\r\n" + - "Content-Length: 10\r\n" + - "\r\n" + - "0123456789\r\n"); - assertThat(response, containsString(" 302 Found")); + String response = _connector.getResponse(""" + POST /ctx/auth/info HTTP/1.1\r + Host: test\r + Content-Type: text/plain\r + Content-Length: 10\r + \r + 0123456789\r + """); + assertThat(response, containsString(" 303 See Other")); assertThat(response, containsString("/ctx/testLoginPage")); assertThat(response, not(containsString("Connection: close"))); - response = _connector.getResponse("POST /ctx/auth/info HTTP/1.1\r\n" + - "Host: localhost\r\n" + - "Content-Type: text/plain\r\n" + - "Content-Length: 10\r\n" + - "\r\n" + - "012345\r\n"); - assertThat(response, containsString(" 302 Found")); + response = _connector.getResponse(""" + POST /ctx/auth/info HTTP/1.1\r + Host: test\r + Content-Type: text/plain\r + Content-Length: 10\r + \r + 012345\r + """); + assertThat(response, containsString(" 303 See Other")); assertThat(response, containsString("/ctx/testLoginPage")); assertThat(response, containsString("Connection: close")); } @@ -1159,6 +1321,7 @@ public void testFormNoCookies() throws Exception assertThat(response, containsString(" 302 Found")); assertThat(response, containsString("/ctx/testLoginPage")); int jsession = response.indexOf(";jsessionid="); + assertThat(jsession, greaterThan(0)); String session = response.substring(jsession + 12, response.indexOf("\r\n", jsession)); response = _connector.getResponse("GET /ctx/testLoginPage;jsessionid=" + session + ";other HTTP/1.0\r\n" + @@ -1190,7 +1353,7 @@ public void testFormNoCookies() throws Exception response = _connector.getResponse("GET /ctx/admin/info;jsessionid=" + session + ";other HTTP/1.0\r\n" + "\r\n"); assertThat(response, startsWith("HTTP/1.1 403")); - assertThat(response, containsString("!role")); + assertThat(response, containsString("!authorized")); } /** @@ -1199,9 +1362,6 @@ public void testFormNoCookies() throws Exception @Test public void testFormProgrammaticLoginLogout() throws Exception { - //remove any previous servlet mappings - _contextHandler.setServletHandler(new ServletHandler()); - //Test programmatic login/logout within same request: // login - perform programmatic login that should succeed, next request should be also logged in // loginfail - perform programmatic login that should fail, next request should not be logged in @@ -1209,14 +1369,8 @@ public void testFormProgrammaticLoginLogout() throws Exception // loginlogin - perform successful login then try another that should fail, next request should be logged in // loginlogout - perform successful login then logout, next request should not be logged in // loginlogoutlogin - perform successful login then logout then login successfully again, next request should be logged in - ServletHolder programmaticHolder = new ServletHolder(); - programmaticHolder.setServlet(new ProgrammaticLoginRequestServlet()); - _contextHandler.getServletHandler().addServletWithMapping(programmaticHolder, "/prog/*"); - - ServletHolder requestHolder = new ServletHolder(); - requestHolder.setServlet(new RequestServlet()); - _contextHandler.getServletHandler().addServletWithMapping(requestHolder, "/"); - + + _servletContextHandler.getServletHandler().getServlet("test").setServlet(new ProgrammaticLoginServlet()); _security.setAuthenticator(new FormAuthenticator("/testLoginPage", "/testErrorPage", false)); _server.start(); @@ -1393,13 +1547,13 @@ public void testStrictBasic() throws Exception response = _connector.getResponse("GET /ctx/auth/info HTTP/1.0\r\n\r\n"); assertThat(response, startsWith("HTTP/1.1 401 Unauthorized")); - assertThat(response, containsString("WWW-Authenticate: basic realm=\"TestRealm\"")); + assertThat(response, containsString("WWW-Authenticate: Basic realm=\"TestRealm\"")); response = _connector.getResponse("GET /ctx/auth/info HTTP/1.0\r\n" + "Authorization: Basic " + authBase64("user:wrong") + "\r\n" + "\r\n"); assertThat(response, startsWith("HTTP/1.1 401 Unauthorized")); - assertThat(response, containsString("WWW-Authenticate: basic realm=\"TestRealm\"")); + assertThat(response, containsString("WWW-Authenticate: Basic realm=\"TestRealm\"")); response = _connector.getResponse("GET /ctx/auth/info HTTP/1.0\r\n" + "Authorization: Basic " + authBase64("user3:password") + "\r\n" + @@ -1414,20 +1568,20 @@ public void testStrictBasic() throws Exception // test admin response = _connector.getResponse("GET /ctx/admin/info HTTP/1.0\r\n\r\n"); assertThat(response, startsWith("HTTP/1.1 401 Unauthorized")); - assertThat(response, containsString("WWW-Authenticate: basic realm=\"TestRealm\"")); + assertThat(response, containsString("WWW-Authenticate: Basic realm=\"TestRealm\"")); response = _connector.getResponse("GET /ctx/admin/info HTTP/1.0\r\n" + "Authorization: Basic " + authBase64("admin:wrong") + "\r\n" + "\r\n"); assertThat(response, startsWith("HTTP/1.1 401 Unauthorized")); - assertThat(response, containsString("WWW-Authenticate: basic realm=\"TestRealm\"")); + assertThat(response, containsString("WWW-Authenticate: Basic realm=\"TestRealm\"")); response = _connector.getResponse("GET /ctx/admin/info HTTP/1.0\r\n" + "Authorization: Basic " + authBase64("user:password") + "\r\n" + "\r\n"); assertThat(response, startsWith("HTTP/1.1 403 ")); - assertThat(response, containsString("!role")); + assertThat(response, containsString("!authorized")); response = _connector.getResponse("GET /ctx/admin/info HTTP/1.0\r\n" + "Authorization: Basic " + authBase64("admin:password") + "\r\n" + @@ -1439,30 +1593,30 @@ public void testStrictBasic() throws Exception } @Test + @Disabled("Dispatch unsupported") public void testStrictFormDispatch() throws Exception { - //TODO uncomment when security supports dispatch - /* _security.setAuthenticator(new FormAuthenticator("/testLoginPage", "/testErrorPage", true)); + _security.setAuthenticator(new FormAuthenticator("/testLoginPage", "/testErrorPage", true)); _server.start(); - + String response; - + response = _connector.getResponse("GET /ctx/noauth/info HTTP/1.0\r\n\r\n"); assertThat(response, startsWith("HTTP/1.1 200 OK")); - + response = _connector.getResponse("GET /ctx/forbid/info HTTP/1.0\r\n\r\n"); assertThat(response, startsWith("HTTP/1.1 403 Forbidden")); - + response = _connector.getResponse("GET /ctx/auth/info HTTP/1.0\r\n\r\n"); // assertThat(response,containsString(" 302 Found")); // assertThat(response,containsString("/ctx/testLoginPage")); assertThat(response, containsString("Cache-Control: no-cache")); assertThat(response, containsString("Expires")); assertThat(response, containsString("URI=/ctx/testLoginPage")); - + String session = response.substring(response.indexOf("JSESSIONID=") + 11, response.indexOf("; Path=/ctx")); - + response = _connector.getResponse("POST /ctx/j_security_check HTTP/1.0\r\n" + "Cookie: JSESSIONID=" + session + "\r\n" + "Content-Type: application/x-www-form-urlencoded\r\n" + @@ -1471,7 +1625,7 @@ public void testStrictFormDispatch() "j_username=user&j_password=wrong\r\n"); // assertThat(response,containsString("Location")); assertThat(response, containsString("testErrorPage")); - + response = _connector.getResponse("POST /ctx/j_security_check HTTP/1.0\r\n" + "Cookie: JSESSIONID=" + session + "\r\n" + "Content-Type: application/x-www-form-urlencoded\r\n" + @@ -1482,25 +1636,25 @@ public void testStrictFormDispatch() assertThat(response, containsString("Location")); assertThat(response, containsString("/ctx/auth/info")); session = response.substring(response.indexOf("JSESSIONID=") + 11, response.indexOf("; Path=/ctx")); - + response = _connector.getResponse("GET /ctx/auth/info HTTP/1.0\r\n" + "Cookie: JSESSIONID=" + session + "\r\n" + "\r\n"); assertThat(response, startsWith("HTTP/1.1 403")); - assertThat(response, containsString("!role")); - + assertThat(response, containsString("!authorized")); + response = _connector.getResponse("GET /ctx/admin/info HTTP/1.0\r\n" + "Cookie: JSESSIONID=" + session + "\r\n" + "\r\n"); assertThat(response, startsWith("HTTP/1.1 403")); - assertThat(response, containsString("!role")); - + assertThat(response, containsString("!authorized")); + // log in again as user2 response = _connector.getResponse("GET /ctx/auth/info HTTP/1.0\r\n\r\n"); - // assertThat(response,startsWith("HTTP/1.1 302 ")); - // assertThat(response,containsString("testLoginPage")); +// assertThat(response,startsWith("HTTP/1.1 302 ")); +// assertThat(response,containsString("testLoginPage")); session = response.substring(response.indexOf("JSESSIONID=") + 11, response.indexOf("; Path=/ctx")); - + response = _connector.getResponse("POST /ctx/j_security_check HTTP/1.0\r\n" + "Cookie: JSESSIONID=" + session + "\r\n" + "Content-Type: application/x-www-form-urlencoded\r\n" + @@ -1511,24 +1665,24 @@ public void testStrictFormDispatch() assertThat(response, containsString("Location")); assertThat(response, containsString("/ctx/auth/info")); session = response.substring(response.indexOf("JSESSIONID=") + 11, response.indexOf("; Path=/ctx")); - + response = _connector.getResponse("GET /ctx/auth/info HTTP/1.0\r\n" + "Cookie: JSESSIONID=" + session + "\r\n" + "\r\n"); assertThat(response, startsWith("HTTP/1.1 200 OK")); - + response = _connector.getResponse("GET /ctx/admin/info HTTP/1.0\r\n" + "Cookie: JSESSIONID=" + session + "\r\n" + "\r\n"); assertThat(response, startsWith("HTTP/1.1 403")); - assertThat(response, containsString("!role")); - + assertThat(response, containsString("!authorized")); + // log in again as admin response = _connector.getResponse("GET /ctx/auth/info HTTP/1.0\r\n\r\n"); - // assertThat(response,startsWith("HTTP/1.1 302 ")); - // assertThat(response,containsString("testLoginPage")); +// assertThat(response,startsWith("HTTP/1.1 302 ")); +// assertThat(response,containsString("testLoginPage")); session = response.substring(response.indexOf("JSESSIONID=") + 11, response.indexOf("; Path=/ctx")); - + response = _connector.getResponse("POST /ctx/j_security_check HTTP/1.0\r\n" + "Cookie: JSESSIONID=" + session + "\r\n" + "Content-Type: application/x-www-form-urlencoded\r\n" + @@ -1539,16 +1693,16 @@ public void testStrictFormDispatch() assertThat(response, containsString("Location")); assertThat(response, containsString("/ctx/auth/info")); session = response.substring(response.indexOf("JSESSIONID=") + 11, response.indexOf("; Path=/ctx")); - + response = _connector.getResponse("GET /ctx/auth/info HTTP/1.0\r\n" + "Cookie: JSESSIONID=" + session + "\r\n" + "\r\n"); assertThat(response, startsWith("HTTP/1.1 200 OK")); - + response = _connector.getResponse("GET /ctx/admin/info HTTP/1.0\r\n" + "Cookie: JSESSIONID=" + session + "\r\n" + "\r\n"); - assertThat(response, startsWith("HTTP/1.1 200 OK"));*/ + assertThat(response, startsWith("HTTP/1.1 200 OK")); } @Test @@ -1594,13 +1748,13 @@ public void testStrictFormRedirect() throws Exception "Cookie: JSESSIONID=" + session + "\r\n" + "\r\n"); assertThat(response, startsWith("HTTP/1.1 403")); - assertThat(response, containsString("!role")); + assertThat(response, containsString("!authorized")); response = _connector.getResponse("GET /ctx/admin/info HTTP/1.0\r\n" + "Cookie: JSESSIONID=" + session + "\r\n" + "\r\n"); assertThat(response, startsWith("HTTP/1.1 403")); - assertThat(response, containsString("!role")); + assertThat(response, containsString("!authorized")); // log in again as user2 response = _connector.getResponse("GET /ctx/auth/info HTTP/1.0\r\n\r\n"); @@ -1629,7 +1783,7 @@ public void testStrictFormRedirect() throws Exception "Cookie: JSESSIONID=" + session + "\r\n" + "\r\n"); assertThat(response, startsWith("HTTP/1.1 403")); - assertThat(response, containsString("!role")); + assertThat(response, containsString("!authorized")); //log in as user3, who doesn't have a valid role, but we are checking a constraint //of ** which just means they have to be authenticated @@ -1727,37 +1881,19 @@ public void testDataRedirection() throws Exception } @Test - public void testRoleRef() throws Exception + public void testRoleLink() throws Exception { - //remove previously set servlet - _contextHandler.setServletHandler(new ServletHandler()); - ServletHolder roleCheckHolder = new ServletHolder(); - roleCheckHolder.setServlet(new RoleCheckServlet()); - - _contextHandler.addServlet(roleCheckHolder, "/"); _security.setAuthenticator(new BasicAuthenticator()); - + ServletHolder holder = _servletContextHandler.getServletHandler().getServlet("test"); + holder.setUserRoleLink("untranslated", "user"); _server.start(); - String rawResponse; - rawResponse = _connector.getResponse("GET /ctx/noauth/info HTTP/1.0\r\n\r\n", 100000, TimeUnit.MILLISECONDS); - HttpTester.Response response = HttpTester.parseResponse(rawResponse); - assertThat(response.toString(), response.getStatus(), is(HttpStatus.OK_200)); - - rawResponse = _connector.getResponse("GET /ctx/auth/info HTTP/1.0\r\n" + + String rawResponse = _connector.getResponse("GET /ctx/auth/info HTTP/1.0\r\n" + "Authorization: Basic " + authBase64("user2:password") + "\r\n" + "\r\n", 100000, TimeUnit.MILLISECONDS); - response = HttpTester.parseResponse(rawResponse); - assertThat(response.toString(), response.getStatus(), is(HttpStatus.INTERNAL_SERVER_ERROR_500)); - //TODO do we need to insert the role link? - _server.stop(); - roleCheckHolder.setUserRoleLink("untranslated", "user"); - _server.start(); - rawResponse = _connector.getResponse("GET /ctx/auth/info HTTP/1.0\r\n" + - "Authorization: Basic " + authBase64("user2:password") + "\r\n" + - "\r\n", 100000, TimeUnit.MILLISECONDS); - response = HttpTester.parseResponse(rawResponse); + HttpTester.Response response = HttpTester.parseResponse(rawResponse); assertThat(response.toString(), response.getStatus(), is(HttpStatus.OK_200)); + assertThat(response.getContent(), containsString("Is in untranslated role")); } @Test @@ -1768,8 +1904,10 @@ public void testDeferredBasic() throws Exception String response; - response = _connector.getResponse("GET /ctx/noauth/info HTTP/1.0\r\n" + - "\r\n"); + response = _connector.getResponse(""" + GET /ctx/noauth/info HTTP/1.0\r + \r + """); assertThat(response, startsWith("HTTP/1.1 200 OK")); assertThat(response, containsString("user=null")); @@ -1793,7 +1931,8 @@ public void testRelaxedMethod() throws Exception _server.start(); String response; - response = _connector.getResponse("GET /ctx/forbid/somethig HTTP/1.0\r\n\r\n"); + + response = _connector.getResponse("GET /ctx/forbid/something HTTP/1.0\r\n\r\n"); assertThat(response, startsWith("HTTP/1.1 403 ")); response = _connector.getResponse("POST /ctx/forbid/post HTTP/1.0\r\n\r\n"); @@ -1809,11 +1948,12 @@ public void testUncoveredMethod() throws Exception ConstraintMapping specificMethod = new ConstraintMapping(); specificMethod.setMethod("GET"); specificMethod.setPathSpec("/specific/method"); - specificMethod.setConstraint(_forbidConstraint); + specificMethod.setConstraint(_forbidConstraint.build()); _security.addConstraintMapping(specificMethod); _security.setAuthenticator(new BasicAuthenticator()); Logger.getAnonymousLogger().info("Uncovered method for /specific/method is expected"); _server.start(); + _security.dumpStdErr(); assertThat(_security.getPathsWithUncoveredHttpMethods(), contains("/specific/method")); @@ -1831,24 +1971,24 @@ public void testForbidTraceAndOptions() throws Exception ConstraintMapping forbidTrace = new ConstraintMapping(); forbidTrace.setMethod("TRACE"); forbidTrace.setPathSpec("/"); - forbidTrace.setConstraint(_forbidConstraint); + forbidTrace.setConstraint(_forbidConstraint.build()); ConstraintMapping allowOmitTrace = new ConstraintMapping(); allowOmitTrace.setMethodOmissions(new String[] {"TRACE"}); allowOmitTrace.setPathSpec("/"); - allowOmitTrace.setConstraint(_relaxConstraint); + allowOmitTrace.setConstraint(_relaxConstraint.build()); ConstraintMapping forbidOptions = new ConstraintMapping(); forbidOptions.setMethod("OPTIONS"); forbidOptions.setPathSpec("/"); - forbidOptions.setConstraint(_forbidConstraint); + forbidOptions.setConstraint(_forbidConstraint.build()); ConstraintMapping allowOmitOptions = new ConstraintMapping(); allowOmitOptions.setMethodOmissions(new String[] {"OPTIONS"}); allowOmitOptions.setPathSpec("/"); - allowOmitOptions.setConstraint(_relaxConstraint); + allowOmitOptions.setConstraint(_relaxConstraint.build()); ConstraintMapping someConstraint = new ConstraintMapping(); someConstraint.setPathSpec("/some/constaint/*"); - someConstraint.setConstraint(_noAuthConstraint); + someConstraint.setConstraint(_noAuthConstraint.build()); _security.setConstraintMappings(new ConstraintMapping[] {forbidTrace, allowOmitTrace, forbidOptions, allowOmitOptions, someConstraint}); @@ -1881,12 +2021,12 @@ public void testDefaultConstraint() throws Exception ConstraintMapping forbidDefault = new ConstraintMapping(); forbidDefault.setPathSpec("/"); - forbidDefault.setConstraint(_forbidConstraint); + forbidDefault.setConstraint(_forbidConstraint.build()); _security.addConstraintMapping(forbidDefault); ConstraintMapping allowRoot = new ConstraintMapping(); allowRoot.setPathSpec(""); - allowRoot.setConstraint(_relaxConstraint); + allowRoot.setConstraint(_relaxConstraint.build()); _security.addConstraintMapping(allowRoot); _server.start(); @@ -1906,7 +2046,7 @@ public void testDefaultConstraint() throws Exception response = _connector.getResponse("GET /ctx/auth/info HTTP/1.0\r\n\r\n"); assertThat(response, startsWith("HTTP/1.1 401 Unauthorized")); - assertThat(response, containsString("WWW-Authenticate: basic realm=\"TestRealm\"")); + assertThat(response, containsString("WWW-Authenticate: Basic realm=\"TestRealm\"")); response = _connector.getResponse("GET /ctx/admin/relax/info HTTP/1.0\r\n\r\n"); assertThat(response, startsWith("HTTP/1.1 200 OK")); @@ -1918,131 +2058,138 @@ private static String authBase64(String authorization) return Base64.getEncoder().encodeToString(raw); } - public static class RequestServlet extends HttpServlet + private static class TestServlet extends HttpServlet { + private final List _acceptableUsers; + private final List _acceptableRoles; + + public TestServlet() + { + this(new String[]{"user", "user4"}, new String[]{"user", "foo"}); + } + + public TestServlet(String[] users, String[] roles) + { + _acceptableUsers = Arrays.asList(users); + _acceptableRoles = Arrays.asList(roles); + } + @Override - protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException + protected void service(HttpServletRequest request, HttpServletResponse response) throws IOException { - if (req.getAuthType() == null || "user".equals(req.getRemoteUser()) || req.isUserInRole("user") || req.isUserInRole("foo")) + if (request.getAuthType() == null || isAcceptableUser(request) || isInAcceptableRole(request)) { - res.setStatus(200); - res.setContentType("text/plain; charset=UTF-8"); - String user = req.getRemoteUser(); - String result; - - if (req.getParameter("test_parameter") != null) - result = """ - URI=%s - user=%s - %s""".formatted(req.getRequestURI(), user, req.getParameter("test_parameter")); - else - result = """ - URI=%s - user=%s""".formatted(req.getRequestURI(), user); - res.getWriter().println(result); + response.setStatus(200); + response.setContentType("text/plain; charset=UTF-8"); + response.getWriter().println("URI=" + request.getRequestURI()); + String user = request.getRemoteUser(); + response.getWriter().println("user=" + user); + if (request.getParameter("test_parameter") != null) + response.getWriter().println(request.getParameter("test_parameter")); + if (request.isUserInRole("untranslated")) + response.getWriter().println("Is in untranslated role"); } else + response.sendError(500); + } + + private boolean isAcceptableUser(HttpServletRequest request) + { + String user = request.getRemoteUser(); + if (_acceptableUsers == null) + { + return true; + } + + if (user == null) + return false; + + return _acceptableUsers.contains(user); + } + + private boolean isInAcceptableRole(HttpServletRequest request) + { + if (_acceptableRoles == null) + return true; + + for (String role : _acceptableRoles) { - res.sendError(500); + if (request.isUserInRole(role)) + return true; } + + return false; } } - public class ProgrammaticLoginRequestServlet extends HttpServlet + private static class ProgrammaticLoginServlet extends HttpServlet { @Override - protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException + protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - String action = req.getParameter("action"); + String action = request.getParameter("action"); if (StringUtil.isBlank(action)) { - resp.setStatus(200); - resp.setContentType("text/plain; charset=UTF-8"); - resp.getWriter().println("user=" + req.getRemoteUser()); - return; + response.setStatus(200); + response.setContentType("text/plain; charset=UTF-8"); + response.getWriter().println("user=" + request.getRemoteUser()); } - - switch (action) + else if ("loginauth".equals(action)) { - case "loginauth" -> - { - req.login("admin", "password"); - resp.getWriter().println(""" - userPrincipal=%s - remoteUser=%s - authType=%s - auth=%s - """.formatted( - req.getUserPrincipal(), - req.getRemoteUser(), - req.getAuthType(), - req.authenticate(resp) - )); - return; - } - case "login" -> - { - req.login("admin", "password"); - } - case "loginfail" -> - { - req.login("admin", "fail"); - } - case "loginfaillogin" -> - { - try - { - req.login("admin", "fail"); - } - catch (ServletException e) - { - req.login("admin", "password"); - } - return; - } - case "loginlogin" -> - { - req.login("admin", "password"); - req.login("foo", "bar"); - } - case "loginlogout" -> - { - req.login("admin", "password"); - req.logout(); - } - case "loginlogoutlogin" -> - { - req.login("admin", "password"); - req.logout(); - req.login("user0", "password"); - } - case "constraintlogin" -> + request.login("admin", "password"); + response.getWriter().println("userPrincipal=" + request.getUserPrincipal()); + response.getWriter().println("remoteUser=" + request.getRemoteUser()); + response.getWriter().println("authType=" + request.getAuthType()); + response.getWriter().println("auth=" + request.authenticate(response)); + } + else if ("login".equals(action)) + { + request.login("admin", "password"); + } + else if ("loginfail".equals(action)) + { + request.login("admin", "fail"); + } + else if ("loginfaillogin".equals(action)) + { + try { - req.getRemoteUser(); - req.login("admin", "password"); + request.login("admin", "fail"); } - case "logout" -> req.logout(); - default -> + catch (ServletException e) { - resp.sendError(500); - return; + request.login("admin", "password"); } } - } - } - - public class RoleCheckServlet extends HttpServlet - { - @Override - protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException - { - - if (req.getAuthType() == null || - "user".equals(req.getRemoteUser()) || - req.isUserInRole("untranslated")) - resp.setStatus(200); + else if ("loginlogin".equals(action)) + { + request.login("admin", "password"); + request.login("foo", "bar"); + } + else if ("loginlogout".equals(action)) + { + request.login("admin", "password"); + request.logout(); + } + else if ("loginlogoutlogin".equals(action)) + { + request.login("admin", "password"); + request.logout(); + request.login("user0", "password"); + } + else if ("constraintlogin".equals(action)) + { + String ignored = request.getRemoteUser(); + request.login("admin", "password"); + } + else if ("logout".equals(action)) + { + request.logout(); + } else - resp.sendError(500); + { + response.sendError(500); + } } } diff --git a/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/DataConstraintsTest.java b/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/DataConstraintsTest.java deleted file mode 100644 index 5c89d3d223fa..000000000000 --- a/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/DataConstraintsTest.java +++ /dev/null @@ -1,470 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.servlet.security; - -import java.io.IOException; -import java.util.Arrays; - -import jakarta.servlet.ServletException; -import jakarta.servlet.ServletRequest; -import jakarta.servlet.http.HttpServlet; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; -import org.eclipse.jetty.ee10.servlet.ServletContextHandler; -import org.eclipse.jetty.ee10.servlet.SessionHandler; -import org.eclipse.jetty.ee10.servlet.security.authentication.BasicAuthenticator; -import org.eclipse.jetty.http.HttpMethod; -import org.eclipse.jetty.http.HttpScheme; -import org.eclipse.jetty.http.HttpURI; -import org.eclipse.jetty.server.Connector; -import org.eclipse.jetty.server.Handler; -import org.eclipse.jetty.server.HttpConnectionFactory; -import org.eclipse.jetty.server.LocalConnector; -import org.eclipse.jetty.server.Request; -import org.eclipse.jetty.server.Response; -import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.util.Callback; -import org.eclipse.jetty.util.security.Constraint; -import org.hamcrest.Matchers; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import static org.hamcrest.MatcherAssert.assertThat; - -public class DataConstraintsTest -{ - private Server _server; - private LocalConnector _connector; - private LocalConnector _connectorS; - private SessionHandler _session; - private ConstraintSecurityHandler _security; - - @BeforeEach - public void configureServer() - { - _server = new Server(); - - HttpConnectionFactory http = new HttpConnectionFactory(); - http.getHttpConfiguration().setSecurePort(9999); - http.getHttpConfiguration().setSecureScheme("BWTP"); - _connector = new LocalConnector(_server, http); - _connector.setIdleTimeout(300000); - - HttpConnectionFactory https = new HttpConnectionFactory(); - https.getHttpConfiguration().addCustomizer((request, responseHeaders) -> - { - HttpURI.Mutable uri = HttpURI.build(request.getHttpURI()).scheme(HttpScheme.HTTPS); - return new Request.Wrapper(request) - { - @Override - public HttpURI getHttpURI() - { - return uri; - } - - @Override - public boolean isSecure() - { - return true; - } - }; - }); - - _connectorS = new LocalConnector(_server, https); - _server.setConnectors(new Connector[]{_connector, _connectorS}); - - ServletContextHandler contextHandler = new ServletContextHandler(); - _session = new SessionHandler(); - - contextHandler.setContextPath("/ctx"); - _server.setHandler(contextHandler); - contextHandler.setSessionHandler(_session); - - _security = new ConstraintSecurityHandler(); - contextHandler.setSecurityHandler(_security); - - contextHandler.getServletHandler().addServletWithMapping(TestServlet.class, "/"); - } - - @AfterEach - public void stopServer() throws Exception - { - if (_server.isRunning()) - { - _server.stop(); - _server.join(); - } - } - - @Test - public void testIntegral() throws Exception - { - Constraint constraint0 = new Constraint(); - constraint0.setAuthenticate(false); - constraint0.setName("integral"); - constraint0.setDataConstraint(Constraint.DC_INTEGRAL); - ConstraintMapping mapping0 = new ConstraintMapping(); - mapping0.setPathSpec("/integral/*"); - mapping0.setConstraint(constraint0); - - _security.setConstraintMappings(Arrays.asList(new ConstraintMapping[] - { - mapping0 - })); - - _server.start(); - - String response; - response = _connector.getResponse("GET /ctx/some/thing HTTP/1.0\r\n\r\n"); - assertThat(response, Matchers.containsString("HTTP/1.1 404 Not Found")); - - response = _connector.getResponse("GET /ctx/integral/info HTTP/1.0\r\n\r\n"); - assertThat(response, Matchers.containsString("HTTP/1.1 302 Found")); - assertThat(response, Matchers.containsString("Location: BWTP://")); - assertThat(response, Matchers.containsString(":9999")); - - response = _connectorS.getResponse("GET /ctx/integral/info HTTP/1.0\r\n\r\n"); - assertThat(response, Matchers.containsString("HTTP/1.1 404 Not Found")); - } - - @Test - public void testConfidential() throws Exception - { - Constraint constraint0 = new Constraint(); - constraint0.setAuthenticate(false); - constraint0.setName("confid"); - constraint0.setDataConstraint(Constraint.DC_CONFIDENTIAL); - ConstraintMapping mapping0 = new ConstraintMapping(); - mapping0.setPathSpec("/confid/*"); - mapping0.setConstraint(constraint0); - - _security.setConstraintMappings(Arrays.asList(new ConstraintMapping[] - { - mapping0 - })); - - _server.start(); - - String response; - response = _connector.getResponse("GET /ctx/some/thing HTTP/1.0\r\n\r\n"); - assertThat(response, Matchers.containsString("HTTP/1.1 404 Not Found")); - - response = _connector.getResponse("GET /ctx/confid/info HTTP/1.0\r\n\r\n"); - assertThat(response, Matchers.containsString("HTTP/1.1 302 Found")); - assertThat(response, Matchers.containsString("Location: BWTP://")); - assertThat(response, Matchers.containsString(":9999")); - - response = _connectorS.getResponse("GET /ctx/confid/info HTTP/1.0\r\n\r\n"); - assertThat(response, Matchers.containsString("HTTP/1.1 404 Not Found")); - } - - @Test - public void testConfidentialWithNoRolesSetAndNoMethodRestriction() throws Exception - { - Constraint constraint0 = new Constraint(); - constraint0.setName("confid"); - constraint0.setDataConstraint(Constraint.DC_CONFIDENTIAL); - ConstraintMapping mapping0 = new ConstraintMapping(); - mapping0.setPathSpec("/confid/*"); - mapping0.setConstraint(constraint0); - - _security.setConstraintMappings(Arrays.asList(new ConstraintMapping[] - { - mapping0 - })); - - _server.start(); - - String response; - - response = _connector.getResponse("GET /ctx/confid/info HTTP/1.0\r\n\r\n"); - assertThat(response, Matchers.containsString("HTTP/1.1 302 Found")); - - response = _connectorS.getResponse("GET /ctx/confid/info HTTP/1.0\r\n\r\n"); - assertThat(response, Matchers.containsString("HTTP/1.1 404 Not Found")); - } - - @Test - public void testConfidentialWithNoRolesSetAndMethodRestriction() throws Exception - { - Constraint constraint0 = new Constraint(); - constraint0.setName("confid"); - constraint0.setDataConstraint(Constraint.DC_CONFIDENTIAL); - ConstraintMapping mapping0 = new ConstraintMapping(); - mapping0.setPathSpec("/confid/*"); - mapping0.setMethod(HttpMethod.POST.asString()); - mapping0.setConstraint(constraint0); - - _security.setConstraintMappings(Arrays.asList(new ConstraintMapping[] - { - mapping0 - })); - - _server.start(); - - String response; - - response = _connector.getResponse("GET /ctx/confid/info HTTP/1.0\r\n\r\n"); - assertThat(response, Matchers.containsString("HTTP/1.1 404 Not Found")); - - response = _connectorS.getResponse("GET /ctx/confid/info HTTP/1.0\r\n\r\n"); - assertThat(response, Matchers.containsString("HTTP/1.1 404 Not Found")); - - response = _connector.getResponse("POST /ctx/confid/info HTTP/1.0\r\n\r\n"); - assertThat(response, Matchers.containsString("HTTP/1.1 302 Found")); - - response = _connectorS.getResponse("POST /ctx/confid/info HTTP/1.0\r\n\r\n"); - assertThat(response, Matchers.containsString("HTTP/1.1 404 Not Found")); - } - - @Test - public void testConfidentialWithRolesSetAndMethodRestriction() throws Exception - { - Constraint constraint0 = new Constraint(); - constraint0.setRoles(new String[]{"admin"}); - constraint0.setName("confid"); - constraint0.setDataConstraint(Constraint.DC_CONFIDENTIAL); - ConstraintMapping mapping0 = new ConstraintMapping(); - mapping0.setPathSpec("/confid/*"); - mapping0.setMethod(HttpMethod.POST.asString()); - mapping0.setConstraint(constraint0); - - _security.setConstraintMappings(Arrays.asList(new ConstraintMapping[] - { - mapping0 - })); - - _server.start(); - - String response; - - response = _connector.getResponse("GET /ctx/confid/info HTTP/1.0\r\n\r\n"); - assertThat(response, Matchers.containsString("HTTP/1.1 404 Not Found")); - - response = _connectorS.getResponse("GET /ctx/confid/info HTTP/1.0\r\n\r\n"); - assertThat(response, Matchers.containsString("HTTP/1.1 404 Not Found")); - - response = _connector.getResponse("POST /ctx/confid/info HTTP/1.0\r\n\r\n"); - assertThat(response, Matchers.containsString("HTTP/1.1 302 Found")); - - response = _connectorS.getResponse("POST /ctx/confid/info HTTP/1.0\r\n\r\n"); - assertThat(response, Matchers.containsString("HTTP/1.1 404 Not Found")); - } - - @Test - public void testConfidentialWithRolesSetAndMethodRestrictionAndAuthenticationRequired() throws Exception - { - Constraint constraint0 = new Constraint(); - constraint0.setRoles(new String[]{"admin"}); - constraint0.setAuthenticate(true); - constraint0.setName("confid"); - constraint0.setDataConstraint(Constraint.DC_CONFIDENTIAL); - ConstraintMapping mapping0 = new ConstraintMapping(); - mapping0.setPathSpec("/confid/*"); - mapping0.setMethod(HttpMethod.POST.asString()); - mapping0.setConstraint(constraint0); - - _security.setConstraintMappings(Arrays.asList(new ConstraintMapping[] - { - mapping0 - })); - DefaultIdentityService identityService = new DefaultIdentityService(); - _security.setLoginService(new CustomLoginService(identityService)); - _security.setIdentityService(identityService); - _security.setAuthenticator(new BasicAuthenticator()); - _server.start(); - - String response; - - response = _connector.getResponse("GET /ctx/confid/info HTTP/1.0\r\n\r\n"); - assertThat(response, Matchers.containsString("HTTP/1.1 404 Not Found")); - - response = _connectorS.getResponse("GET /ctx/confid/info HTTP/1.0\r\n\r\n"); - assertThat(response, Matchers.containsString("HTTP/1.1 404 Not Found")); - - response = _connector.getResponse("POST /ctx/confid/info HTTP/1.0\r\n\r\n"); - assertThat(response, Matchers.containsString("HTTP/1.1 302 Found")); - - response = _connectorS.getResponse("POST /ctx/confid/info HTTP/1.0\r\n\r\n"); - assertThat(response, Matchers.containsString("HTTP/1.1 401 Unauthorized")); - - response = _connector.getResponse("GET /ctx/confid/info HTTP/1.0\r\nAuthorization: Basic YWRtaW46cGFzc3dvcmQ=\r\n\r\n"); - assertThat(response, Matchers.containsString("HTTP/1.1 404 Not Found")); - - response = _connector.getResponse("POST /ctx/confid/info HTTP/1.0\r\nAuthorization: Basic YWRtaW46cGFzc3dvcmQ=\r\n\r\n"); - assertThat(response, Matchers.containsString("HTTP/1.1 302 Found")); - - response = _connectorS.getResponse("POST /ctx/confid/info HTTP/1.0\r\nAuthorization: Basic YWRtaW46cGFzc3dvcmQ=\r\n\r\n"); - assertThat(response, Matchers.containsString("HTTP/1.1 404 Not Found")); - } - - @Test - public void testRestrictedWithoutAuthenticator() throws Exception - { - Constraint constraint0 = new Constraint(); - constraint0.setAuthenticate(true); - constraint0.setRoles(new String[]{"admin"}); - constraint0.setName("restricted"); - ConstraintMapping mapping0 = new ConstraintMapping(); - mapping0.setPathSpec("/restricted/*"); - mapping0.setConstraint(constraint0); - - _security.setConstraintMappings(Arrays.asList(new ConstraintMapping[] - { - mapping0 - })); - _server.start(); - - String response; - - response = _connector.getResponse("GET /ctx/restricted/info HTTP/1.0\r\n\r\n"); - assertThat(response, Matchers.containsString("HTTP/1.1 403 Forbidden")); - - response = _connectorS.getResponse("GET /ctx/restricted/info HTTP/1.0\r\n\r\n"); - assertThat(response, Matchers.containsString("HTTP/1.1 403 Forbidden")); - - response = _connector.getResponse("GET /ctx/restricted/info HTTP/1.0\r\nAuthorization: Basic YWRtaW46cGFzc3dvcmQ=\r\n\r\n"); - assertThat(response, Matchers.containsString("HTTP/1.1 403 Forbidden")); - - response = _connectorS.getResponse("GET /ctx/restricted/info HTTP/1.0\r\nAuthorization: Basic YWRtaW46cGFzc3dvcmQ=\r\n\r\n"); - assertThat(response, Matchers.containsString("HTTP/1.1 403 Forbidden")); - } - - @Test - public void testRestrictedWithoutAuthenticatorAndMethod() throws Exception - { - Constraint constraint0 = new Constraint(); - constraint0.setAuthenticate(true); - constraint0.setRoles(new String[]{"admin"}); - constraint0.setName("restricted"); - ConstraintMapping mapping0 = new ConstraintMapping(); - mapping0.setPathSpec("/restricted/*"); - mapping0.setMethod("GET"); - mapping0.setConstraint(constraint0); - - _security.setConstraintMappings(Arrays.asList(new ConstraintMapping[] - { - mapping0 - })); - _server.start(); - - String response; - - response = _connector.getResponse("GET /ctx/restricted/info HTTP/1.0\r\n\r\n"); - assertThat(response, Matchers.containsString("HTTP/1.1 403 Forbidden")); - - response = _connectorS.getResponse("GET /ctx/restricted/info HTTP/1.0\r\n\r\n"); - assertThat(response, Matchers.containsString("HTTP/1.1 403 Forbidden")); - - response = _connector.getResponse("GET /ctx/restricted/info HTTP/1.0\r\nAuthorization: Basic YWRtaW46cGFzc3dvcmQ=\r\n\r\n"); - assertThat(response, Matchers.containsString("HTTP/1.1 403 Forbidden")); - - response = _connectorS.getResponse("GET /ctx/restricted/info HTTP/1.0\r\nAuthorization: Basic YWRtaW46cGFzc3dvcmQ=\r\n\r\n"); - assertThat(response, Matchers.containsString("HTTP/1.1 403 Forbidden")); - } - - @Test - public void testRestricted() throws Exception - { - Constraint constraint0 = new Constraint(); - constraint0.setAuthenticate(true); - constraint0.setRoles(new String[]{"admin"}); - constraint0.setName("restricted"); - ConstraintMapping mapping0 = new ConstraintMapping(); - mapping0.setPathSpec("/restricted/*"); - mapping0.setMethod("GET"); - mapping0.setConstraint(constraint0); - - _security.setConstraintMappings(Arrays.asList(new ConstraintMapping[] - { - mapping0 - })); - DefaultIdentityService identityService = new DefaultIdentityService(); - _security.setLoginService(new CustomLoginService(identityService)); - _security.setIdentityService(identityService); - _security.setAuthenticator(new BasicAuthenticator()); - _server.start(); - - String response; - - response = _connector.getResponse("GET /ctx/restricted/info HTTP/1.0\r\n\r\n"); - assertThat(response, Matchers.containsString("HTTP/1.1 401 Unauthorized")); - - response = _connectorS.getResponse("GET /ctx/restricted/info HTTP/1.0\r\n\r\n"); - assertThat(response, Matchers.containsString("HTTP/1.1 401 Unauthorized")); - - response = _connector.getResponse("GET /ctx/restricted/info HTTP/1.0\nAuthorization: Basic YWRtaW46cGFzc3dvcmQ=\n\n"); - assertThat(response, Matchers.containsString("HTTP/1.1 404 Not Found")); - - response = _connectorS.getResponse("GET /ctx/restricted/info HTTP/1.0\nAuthorization: Basic YWRtaW46cGFzc3dvcmQ=\n\n"); - assertThat(response, Matchers.containsString("HTTP/1.1 404 Not Found")); - } - - public static class TestServlet extends HttpServlet - { - @Override - protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException - { - resp.setContentType("text/plain; charset=UTF-8"); - resp.sendError(404); - } - } - - private class CustomLoginService implements LoginService - { - private IdentityService identityService; - - public CustomLoginService(IdentityService identityService) - { - this.identityService = identityService; - } - - @Override - public String getName() - { - return "name"; - } - - @Override - public UserIdentity login(String username, Object credentials, ServletRequest request) - { - if ("admin".equals(username) && "password".equals(credentials)) - return new DefaultUserIdentity(null, null, new String[]{"admin"}); - return null; - } - - @Override - public boolean validate(UserIdentity user) - { - return false; - } - - @Override - public IdentityService getIdentityService() - { - return identityService; - } - - @Override - public void setIdentityService(IdentityService service) - { - } - - @Override - public void logout(UserIdentity user) - { - } - } -} diff --git a/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/PropertyUserStoreTest.java b/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/PropertyUserStoreTest.java deleted file mode 100644 index 4235f20b0cfd..000000000000 --- a/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/PropertyUserStoreTest.java +++ /dev/null @@ -1,313 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.servlet.security; - -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.io.Writer; -import java.net.URI; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.StandardOpenOption; -import java.nio.file.attribute.PosixFilePermission; -import java.nio.file.attribute.PosixFilePermissions; -import java.util.ArrayList; -import java.util.EnumSet; -import java.util.List; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.jar.JarEntry; -import java.util.jar.JarOutputStream; - -import org.eclipse.jetty.toolchain.test.jupiter.WorkDir; -import org.eclipse.jetty.toolchain.test.jupiter.WorkDirExtension; -import org.eclipse.jetty.util.Callback; -import org.eclipse.jetty.util.NanoTime; -import org.eclipse.jetty.util.Scanner; -import org.eclipse.jetty.util.URIUtil; -import org.eclipse.jetty.util.resource.FileSystemPool; -import org.eclipse.jetty.util.resource.Resource; -import org.eclipse.jetty.util.resource.ResourceFactory; -import org.eclipse.jetty.util.security.Credential; -import org.hamcrest.Matcher; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.condition.OS; -import org.junit.jupiter.api.extension.ExtendWith; - -import static java.nio.charset.StandardCharsets.UTF_8; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.empty; -import static org.hamcrest.Matchers.hasItem; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.junit.jupiter.api.Assertions.assertTrue; - -@ExtendWith(WorkDirExtension.class) -public class PropertyUserStoreTest -{ - private static final class UserCount implements PropertyUserStore.UserListener - { - private final AtomicInteger userCount = new AtomicInteger(); - private final List users = new ArrayList<>(); - - private UserCount() - { - } - - @Override - public void update(String username, Credential credential, String[] roleArray) - { - if (!users.contains(username)) - { - users.add(username); - userCount.getAndIncrement(); - } - } - - @Override - public void remove(String username) - { - users.remove(username); - userCount.getAndDecrement(); - } - - public void awaitCount(int expectedCount) throws InterruptedException - { - long start = NanoTime.now(); - while (userCount.get() != expectedCount && NanoTime.secondsSince(start) < 10) - { - TimeUnit.MILLISECONDS.sleep(100); - } - - assertThatCount(is(expectedCount)); - } - - public void assertThatCount(Matcher matcher) - { - assertThat("User count", userCount.get(), matcher); - } - - public void assertThatUsers(Matcher> matcher) - { - assertThat("Users list", users, matcher); - } - } - - public WorkDir workDir; - public Path testdir; - - @BeforeEach - public void beforeEach() - { - testdir = workDir.getEmptyPathDir(); - } - - private Path initUsersText() throws Exception - { - Path users = testdir.resolve("users.txt"); - Files.deleteIfExists(users); - - writeUser(users); - return users; - } - - private URI initUsersPackedFileText() - throws Exception - { - Path users = testdir.resolve("users.txt"); - writeUser(users); - Path usersJar = testdir.resolve("users.jar"); - String entryPath = "mountain_goat/pale_ale.txt"; - try (InputStream fileInputStream = Files.newInputStream(users)) - { - try (OutputStream outputStream = Files.newOutputStream(usersJar)) - { - try (JarOutputStream jarOutputStream = new JarOutputStream(outputStream)) - { - // add fake entry - jarOutputStream.putNextEntry(new JarEntry("foo/wine")); - - JarEntry jarEntry = new JarEntry(entryPath); - jarOutputStream.putNextEntry(jarEntry); - byte[] buffer = new byte[1024]; - int bytesRead; - while ((bytesRead = fileInputStream.read(buffer)) != -1) - { - jarOutputStream.write(buffer, 0, bytesRead); - } - // add fake entry - jarOutputStream.putNextEntry(new JarEntry("foo/cheese")); - } - } - } - return URIUtil.uriJarPrefix(usersJar.toUri(), "!/" + entryPath); - } - - private void writeUser(Path usersFile) throws IOException - { - try (Writer writer = Files.newBufferedWriter(usersFile, UTF_8)) - { - writer.append("tom: tom, roleA\n"); - writer.append("dick: dick, roleB\n"); - writer.append("harry: harry, roleA, roleB\n"); - } - } - - private void addAdditionalUser(Path usersFile, String userRef) throws Exception - { - Thread.sleep(1001); - try (Writer writer = Files.newBufferedWriter(usersFile, UTF_8, StandardOpenOption.APPEND)) - { - writer.append(userRef); - } - } - - @Test - public void testPropertyUserStoreLoad() throws Exception - { - final UserCount userCount = new UserCount(); - final Path usersFile = initUsersText(); - - PropertyUserStore store = new PropertyUserStore(); - store.setConfig(ResourceFactory.root().newResource(usersFile)); - - store.registerUserListener(userCount); - - store.start(); - - assertThat("Failed to retrieve user directly from PropertyUserStore", store.getUserPrincipal("tom"), notNullValue()); - assertThat("Failed to retrieve user directly from PropertyUserStore", store.getUserPrincipal("dick"), notNullValue()); - assertThat("Failed to retrieve user directly from PropertyUserStore", store.getUserPrincipal("harry"), notNullValue()); - userCount.assertThatCount(is(3)); - userCount.awaitCount(3); - } - - @Test - public void testPropertyUserStoreFails() - { - assertThrows(IllegalStateException.class, () -> - { - PropertyUserStore store = new PropertyUserStore(); - Resource doesNotExist = ResourceFactory.root().newResource("file:///this/file/does/not/exist.txt"); - store.setConfig(doesNotExist); - store.start(); - }); - } - - @Test - public void testPropertyUserStoreLoadFromJarFile() throws Exception - { - final UserCount userCount = new UserCount(); - final URI usersFile = initUsersPackedFileText(); - - try (ResourceFactory.Closeable resourceFactory = ResourceFactory.closeable()) - { - Resource jarResource = resourceFactory.newResource(usersFile); - PropertyUserStore store = new PropertyUserStore(); - store.setConfig(jarResource); - - store.registerUserListener(userCount); - - store.start(); - - assertThat("Failed to retrieve user directly from PropertyUserStore", // - store.getUserPrincipal("tom"), notNullValue()); - assertThat("Failed to retrieve user directly from PropertyUserStore", // - store.getUserPrincipal("dick"), notNullValue()); - assertThat("Failed to retrieve user directly from PropertyUserStore", // - store.getUserPrincipal("harry"), notNullValue()); - userCount.assertThatCount(is(3)); - userCount.awaitCount(3); - } - } - - @Test - public void testPropertyUserStoreLoadUpdateUser() throws Exception - { - final UserCount userCount = new UserCount(); - final Path usersFile = initUsersText(); - final AtomicInteger loadCount = new AtomicInteger(0); - PropertyUserStore store = new PropertyUserStore() - { - @Override - protected void loadUsers() throws IOException - { - loadCount.incrementAndGet(); - super.loadUsers(); - } - }; - store.setRefreshInterval(1); - store.setConfig(ResourceFactory.root().newResource(usersFile)); - store.registerUserListener(userCount); - - store.start(); - - userCount.assertThatCount(is(3)); - assertThat(loadCount.get(), is(1)); - - addAdditionalUser(usersFile, "skip: skip, roleA\n"); - userCount.awaitCount(4); - assertThat(loadCount.get(), is(2)); - assertThat(store.getUserPrincipal("skip"), notNullValue()); - userCount.assertThatCount(is(4)); - userCount.assertThatUsers(hasItem("skip")); - - if (OS.LINUX.isCurrentOs()) - Files.createFile(testdir.toRealPath().resolve("unrelated.txt"), - PosixFilePermissions.asFileAttribute(EnumSet.noneOf(PosixFilePermission.class))); - else - Files.createFile(testdir.toRealPath().resolve("unrelated.txt")); - - Scanner scanner = store.getBean(Scanner.class); - CountDownLatch latch = new CountDownLatch(2); - scanner.scan(Callback.from(latch::countDown)); - scanner.scan(Callback.from(latch::countDown)); - assertTrue(latch.await(5, TimeUnit.SECONDS)); - assertThat(loadCount.get(), is(2)); - - userCount.assertThatCount(is(4)); - userCount.assertThatUsers(hasItem("skip")); - } - - @Test - public void testPropertyUserStoreLoadRemoveUser() throws Exception - { - final UserCount userCount = new UserCount(); - // initial user file (3) users - final Path usersFile = initUsersText(); - - // adding 4th user - addAdditionalUser(usersFile, "skip: skip, roleA\n"); - - PropertyUserStore store = new PropertyUserStore(); - store.setHotReload(true); - store.setConfig(ResourceFactory.root().newResource(usersFile)); - - store.registerUserListener(userCount); - - store.start(); - - userCount.assertThatCount(is(4)); - - // rewrite file with original 3 users - initUsersText(); - - userCount.awaitCount(3); - } -} diff --git a/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/SessionAuthenticationTest.java b/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/SessionAuthenticationTest.java deleted file mode 100644 index f05728c86879..000000000000 --- a/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/SessionAuthenticationTest.java +++ /dev/null @@ -1,85 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.servlet.security; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; - -import org.eclipse.jetty.ee10.servlet.ServletContextHandler; -import org.eclipse.jetty.ee10.servlet.security.authentication.SessionAuthentication; -import org.eclipse.jetty.util.security.Password; -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.junit.jupiter.api.Assertions.fail; - -/** - * SessionAuthenticationTest - * - */ -public class SessionAuthenticationTest -{ - /** - * Check that a SessionAuthenticator is serializable, and that - * the deserialized SessionAuthenticator contains the same authentication - * and authorization information. - */ - @Test - public void testSessionAuthenticationSerialization() - { - ServletContextHandler contextHandler = new ServletContextHandler(); - SecurityHandler securityHandler = new ConstraintSecurityHandler(); - contextHandler.setSecurityHandler(securityHandler); - TestLoginService loginService = new TestLoginService("SessionAuthTest"); - Password pwd = new Password("foo"); - loginService.putUser("foo", pwd, new String[]{"boss", "worker"}); - securityHandler.setLoginService(loginService); - securityHandler.setAuthMethod("FORM"); - UserIdentity user = loginService.login("foo", pwd, null); - assertNotNull(user); - assertNotNull(user.getUserPrincipal()); - assertEquals("foo", user.getUserPrincipal().getName()); - SessionAuthentication sessionAuth = new SessionAuthentication("FORM", user, pwd); - assertTrue(sessionAuth.isUserInRole("boss")); - contextHandler.getContext().run(new Runnable() - { - public void run() - { - try - { - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - ObjectOutputStream oos = new ObjectOutputStream(baos); - oos.writeObject(sessionAuth); - oos.close(); - ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(baos.toByteArray())); - SessionAuthentication reactivatedSessionAuth = (SessionAuthentication)ois.readObject(); - assertNotNull(reactivatedSessionAuth); - assertNotNull(reactivatedSessionAuth.getUserIdentity()); - assertNotNull(reactivatedSessionAuth.getUserIdentity().getUserPrincipal()); - assertEquals("foo", reactivatedSessionAuth.getUserIdentity().getUserPrincipal().getName()); - assertNotNull(reactivatedSessionAuth.getUserIdentity().getSubject()); - assertTrue(reactivatedSessionAuth.isUserInRole("boss")); - } - catch (Exception e) - { - fail(e); - } - } - }); - } -} diff --git a/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/SpecExampleConstraintTest.java b/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/SpecExampleConstraintTest.java index 0946fe9f6a55..ec834b02f517 100644 --- a/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/SpecExampleConstraintTest.java +++ b/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/SpecExampleConstraintTest.java @@ -23,13 +23,13 @@ import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; +import org.eclipse.jetty.ee.security.ConstraintMapping; import org.eclipse.jetty.ee10.servlet.ServletContextHandler; import org.eclipse.jetty.ee10.servlet.SessionHandler; -import org.eclipse.jetty.ee10.servlet.security.authentication.BasicAuthenticator; -import org.eclipse.jetty.server.Handler; +import org.eclipse.jetty.security.Constraint; +import org.eclipse.jetty.security.authentication.BasicAuthenticator; import org.eclipse.jetty.server.LocalConnector; import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.util.security.Constraint; import org.eclipse.jetty.util.security.Password; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; @@ -50,9 +50,7 @@ public class SpecExampleConstraintTest private static final String TEST_REALM = "TestRealm"; private Server _server; private LocalConnector _connector; - private ServletContextHandler _context; private ConstraintSecurityHandler _security; - private SessionHandler _sessions; @BeforeEach public void setupServer() @@ -61,43 +59,42 @@ public void setupServer() _connector = new LocalConnector(_server); _server.addConnector(_connector); - _context = new ServletContextHandler(); - _context.setContextPath("/ctx"); + ServletContextHandler context = new ServletContextHandler(); + context.setContextPath("/ctx"); TestLoginService loginService = new TestLoginService(TEST_REALM); - loginService.putUser("fred", new Password("password"), IdentityService.NO_ROLES); + loginService.putUser("fred", new Password("password"), new String[0]); loginService.putUser("harry", new Password("password"), new String[]{"HOMEOWNER"}); loginService.putUser("chris", new Password("password"), new String[]{"CONTRACTOR"}); loginService.putUser("steven", new Password("password"), new String[]{"SALESCLERK"}); _server.addBean(loginService); - _context.addServlet(TestServlet.class, "/"); + context.addServlet(TestServlet.class, "/"); _security = new ConstraintSecurityHandler(); - _context.setSecurityHandler(_security); - _sessions = new SessionHandler(); - _context.setSessionHandler(_sessions); + context.setSecurityHandler(_security); + SessionHandler sessions = new SessionHandler(); + context.setSessionHandler(sessions); - _server.setHandler(_context); + _server.setHandler(context); /* - precluded methods /* /acme/wholesale/* /acme/retail/* - GET - POST + GET + POST */ - Constraint constraint0 = new Constraint(); - constraint0.setAuthenticate(true); - constraint0.setName("precluded methods"); + Constraint constraint0 = new Constraint.Builder().authorization(Constraint.Authorization.FORBIDDEN) + .name("precluded methods") + .build(); ConstraintMapping mapping0 = new ConstraintMapping(); mapping0.setPathSpec("/*"); mapping0.setConstraint(constraint0); @@ -114,7 +111,6 @@ public void setupServer() mapping2.setMethodOmissions(new String[]{"GET", "POST"}); /* - wholesale @@ -127,10 +123,10 @@ public void setupServer() */ - Constraint constraint1 = new Constraint(); - constraint1.setAuthenticate(true); - constraint1.setName("wholesale"); - constraint1.setRoles(new String[]{"SALESCLERK"}); + Constraint constraint1 = new Constraint.Builder() + .name("wholesale") + .roles("SALESCLEARK") + .build(); ConstraintMapping mapping3 = new ConstraintMapping(); mapping3.setPathSpec("/acme/wholesale/*"); mapping3.setConstraint(constraint1); @@ -156,11 +152,11 @@ public void setupServer() */ - Constraint constraint2 = new Constraint(); - constraint2.setAuthenticate(true); - constraint2.setName("wholesale 2"); - constraint2.setRoles(new String[]{"CONTRACTOR"}); - constraint2.setDataConstraint(Constraint.DC_CONFIDENTIAL); + Constraint constraint2 = new Constraint.Builder() + .name("wholesale 2") + .roles("CONTRACTOR") + .transport(Constraint.Transport.SECURE) + .build(); ConstraintMapping mapping5 = new ConstraintMapping(); mapping5.setPathSpec("/acme/wholesale/*"); mapping5.setMethod("GET"); @@ -171,23 +167,23 @@ public void setupServer() mapping6.setConstraint(constraint2); /* - - -retail -/acme/retail/* -GET -POST - - -CONTRACTOR -HOMEOWNER - - -*/ - Constraint constraint4 = new Constraint(); - constraint4.setName("retail"); - constraint4.setAuthenticate(true); - constraint4.setRoles(new String[]{"CONTRACTOR", "HOMEOWNER"}); + + + retail + /acme/retail/* + GET + POST + + + CONTRACTOR + HOMEOWNER + + + */ + Constraint constraint4 = new Constraint.Builder() + .name("retail") + .roles("CONTRACTOR", "HOMEOWNER") + .build(); ConstraintMapping mapping7 = new ConstraintMapping(); mapping7.setPathSpec("/acme/retail/*"); mapping7.setMethod("GET"); @@ -197,16 +193,14 @@ public void setupServer() mapping8.setMethod("POST"); mapping8.setConstraint(constraint4); - Set knownRoles = new HashSet(); + Set knownRoles = new HashSet<>(); knownRoles.add("CONTRACTOR"); knownRoles.add("HOMEOWNER"); knownRoles.add("SALESCLERK"); - _security.setConstraintMappings(Arrays.asList(new ConstraintMapping[] - { - mapping0, mapping1, mapping2, mapping3, mapping4, mapping5, - mapping6, mapping7, mapping8 - }), knownRoles); + _security.setConstraintMappings( + Arrays.asList(mapping0, mapping1, mapping2, mapping3, mapping4, mapping5, mapping6, mapping7, mapping8), + knownRoles); } @AfterEach @@ -275,13 +269,13 @@ public void testBasic() throws Exception String response; /* - /star all methods except GET/POST forbidden - /acme/wholesale/star all methods except GET/POST forbidden - /acme/retail/star all methods except GET/POST forbidden - /acme/wholesale/star GET must be in role CONTRACTOR or SALESCLERK - /acme/wholesale/star POST must be in role CONTRACTOR and confidential transport - /acme/retail/star GET must be in role CONTRACTOR or HOMEOWNER - /acme/retail/star POST must be in role CONTRACTOR or HOMEOWNER + /* all methods except GET/POST forbidden + /acme/wholesale/* all methods except GET/POST forbidden + /acme/retail/* all methods except GET/POST forbidden + /acme/wholesale/* GET must be in role CONTRACTOR or SALESCLERK + /acme/wholesale/* POST must be in role CONTRACTOR and confidential transport + /acme/retail/* GET must be in role CONTRACTOR or HOMEOWNER + /acme/retail/* POST must be in role CONTRACTOR or HOMEOWNER */ //a user in role HOMEOWNER is forbidden HEAD request @@ -311,7 +305,6 @@ public void testBasic() throws Exception response = _connector.getResponse("GET /ctx/acme/wholesale/index.html HTTP/1.0\r\n" + "Authorization: Basic " + encodedChris + "\r\n" + "\r\n"); - assertThat(response, startsWith("HTTP/1.1 200 OK")); //a user in role CONTRACTOR can only do a post if confidential diff --git a/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/TestLoginService.java b/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/TestLoginService.java index 332853e2e27e..937d4024e969 100644 --- a/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/TestLoginService.java +++ b/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/TestLoginService.java @@ -15,6 +15,10 @@ import java.util.List; +import org.eclipse.jetty.security.AbstractLoginService; +import org.eclipse.jetty.security.RolePrincipal; +import org.eclipse.jetty.security.UserPrincipal; +import org.eclipse.jetty.security.UserStore; import org.eclipse.jetty.util.security.Credential; /** diff --git a/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/UnauthenticatedTest.java b/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/UnauthenticatedTest.java deleted file mode 100644 index 21e52b49b66f..000000000000 --- a/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/UnauthenticatedTest.java +++ /dev/null @@ -1,153 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.servlet.security; - -import java.io.IOException; -import java.util.concurrent.atomic.AtomicReference; - -import jakarta.servlet.ServletException; -import jakarta.servlet.http.HttpServlet; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; -import org.eclipse.jetty.ee10.servlet.ServletContextHandler; -import org.eclipse.jetty.ee10.servlet.ServletContextRequest; -import org.eclipse.jetty.ee10.servlet.ServletHolder; -import org.eclipse.jetty.ee10.servlet.security.authentication.DeferredAuthentication; -import org.eclipse.jetty.ee10.servlet.security.authentication.LoginAuthenticator; -import org.eclipse.jetty.server.LocalConnector; -import org.eclipse.jetty.server.Request; -import org.eclipse.jetty.server.Response; -import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.util.Callback; -import org.eclipse.jetty.util.security.Constraint; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.containsString; - -public class UnauthenticatedTest -{ - private LocalConnector connector; - private TestAuthenticator authenticator; - - @BeforeEach - public void beforeEach() throws Exception - { - Server server = new Server(); - connector = new LocalConnector(server); - server.addConnector(connector); - - ServletContextHandler context = new ServletContextHandler(); - server.setHandler(context); - - // Authenticator that always returns UNAUTHENTICATED. - authenticator = new TestAuthenticator(); - - // Add a security handler which requires paths under /requireAuth to be authenticated. - ConstraintSecurityHandler securityHandler = new ConstraintSecurityHandler(); - Constraint requireAuthentication = new Constraint(); - requireAuthentication.setRoles(new String[]{"**"}); - requireAuthentication.setAuthenticate(true); - ConstraintMapping constraintMapping = new ConstraintMapping(); - constraintMapping.setPathSpec("/requireAuth/*"); - constraintMapping.setConstraint(requireAuthentication); - securityHandler.addConstraintMapping(constraintMapping); - - securityHandler.setAuthenticator(authenticator); - - ServletHolder holder = new ServletHolder(); - holder.setServlet( - new HttpServlet() - { - @Override - protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException - { - ServletContextRequest scr = ServletContextRequest.getServletContextRequest(req); - resp.getWriter().println("authentication: " + scr.getServletApiRequest().getAuthentication()); - } - - }); - context.getServletHandler().addServletWithMapping(holder, "/"); - - context.setSecurityHandler(securityHandler); - server.start(); - } - - @Test - public void testUnauthenticated() throws Exception - { - TestAuthenticator.AUTHENTICATION.set(Authentication.UNAUTHENTICATED); - - // Request to URI which doesn't require authentication can get through even though auth is UNAUTHENTICATED. - String response = connector.getResponse("GET / HTTP/1.1\r\nHost: localhost\r\n\r\n"); - assertThat(response, containsString("HTTP/1.1 200 OK")); - assertThat(response, containsString("authentication: UNAUTHENTICATED")); - - // This URI requires just that the request is authenticated. - response = connector.getResponse("GET /requireAuth/test HTTP/1.1\r\nHost: localhost\r\n\r\n"); - assertThat(response, containsString("HTTP/1.1 401 Unauthorized")); - } - - @Test - public void testDeferredAuth() throws Exception - { - TestAuthenticator.AUTHENTICATION.set(new DeferredAuthentication(authenticator)); - - // Request to URI which doesn't require authentication can get through even though auth is UNAUTHENTICATED. - String response = connector.getResponse("GET / HTTP/1.1\r\nHost: localhost\r\n\r\n"); - assertThat(response, containsString("HTTP/1.1 200 OK")); - assertThat(response, containsString("DeferredAuthentication")); - - // This URI requires just that the request is authenticated. But DeferredAuthentication can bypass this. - response = connector.getResponse("GET /requireAuth/test HTTP/1.1\r\nHost: localhost\r\n\r\n"); - assertThat(response, containsString("HTTP/1.1 200 OK")); - assertThat(response, containsString("DeferredAuthentication")); - } - - public static class TestAuthenticator extends LoginAuthenticator - { - static AtomicReference AUTHENTICATION = new AtomicReference<>(); - - @Override - public void setConfiguration(AuthConfiguration configuration) - { - // Do nothing. - } - - @Override - public String getAuthMethod() - { - return this.getClass().getSimpleName(); - } - - @Override - public void prepareRequest(Request request) - { - // Do nothing. - } - - @Override - public Authentication validateRequest(Request request, Response response, Callback callback, boolean mandatory) throws ServerAuthException - { - return AUTHENTICATION.get(); - } - - @Override - public boolean secureResponse(Request request, Response response, Callback callback, boolean mandatory, Authentication.User validatedUser) throws ServerAuthException - { - return true; - } - } -} diff --git a/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/UserStoreTest.java b/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/UserStoreTest.java deleted file mode 100644 index 20675a8bbfb2..000000000000 --- a/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/UserStoreTest.java +++ /dev/null @@ -1,56 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.servlet.security; - -import java.util.List; - -import org.eclipse.jetty.util.security.Credential; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertNull; - -public class UserStoreTest -{ - UserStore userStore; - - @BeforeEach - public void setup() - { - userStore = new UserStore(); - } - - @Test - public void addUser() - { - userStore.addUser("foo", Credential.getCredential("beer"), new String[]{"pub"}); - assertNotNull(userStore.getUserPrincipal("foo")); - - List rps = userStore.getRolePrincipals("foo"); - assertNotNull(rps); - assertNotNull(rps.get(0)); - assertEquals("pub", rps.get(0).getName()); - } - - @Test - public void removeUser() - { - this.userStore.addUser("foo", Credential.getCredential("beer"), new String[]{"pub"}); - assertNotNull(userStore.getUserPrincipal("foo")); - userStore.removeUser("foo"); - assertNull(userStore.getUserPrincipal("foo")); - } -} diff --git a/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/authentication/SpnegoAuthenticatorTest.java b/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/authentication/SpnegoAuthenticatorTest.java deleted file mode 100644 index f266ef46ebd1..000000000000 --- a/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/security/authentication/SpnegoAuthenticatorTest.java +++ /dev/null @@ -1,83 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee10.servlet.security.authentication; - -import org.eclipse.jetty.ee10.servlet.ServletContextHandler; -import org.eclipse.jetty.ee10.servlet.security.ConstraintMapping; -import org.eclipse.jetty.ee10.servlet.security.ConstraintSecurityHandler; -import org.eclipse.jetty.ee10.servlet.security.EmptyLoginService; -import org.eclipse.jetty.server.LocalConnector; -import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.util.security.Constraint; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.containsString; - -public class SpnegoAuthenticatorTest -{ - private Server _server; - private LocalConnector _localConnector; - - @BeforeEach - public void setup() throws Exception - { - ConfigurableSpnegoAuthenticator authenticator = new ConfigurableSpnegoAuthenticator(); - _server = new Server(); - _localConnector = new LocalConnector(_server); - _server.addConnector(_localConnector); - - ServletContextHandler contextHandler = new ServletContextHandler(); - _server.setHandler(contextHandler); - ConstraintSecurityHandler securityHandler = new ConstraintSecurityHandler(); - contextHandler.setSecurityHandler(securityHandler); - securityHandler.setAuthenticator(authenticator); - securityHandler.setLoginService(new EmptyLoginService()); - Constraint adminConstraint = new Constraint(); - adminConstraint.setName(Constraint.__OPENID_AUTH); - adminConstraint.setRoles(new String[]{"admin"}); - adminConstraint.setAuthenticate(true); - ConstraintMapping adminMapping = new ConstraintMapping(); - adminMapping.setConstraint(adminConstraint); - adminMapping.setPathSpec("/*"); - securityHandler.addConstraintMapping(adminMapping); - _server.start(); - } - - @AfterEach - public void after() throws Exception - { - _server.stop(); - } - - @Test - public void testChallengeSentWithNoAuthorization() throws Exception - { - String response = _localConnector.getResponse("GET / HTTP/1.1\r\nHost:localhost\r\n\r\n"); - assertThat(response, containsString("HTTP/1.1 401 Unauthorized")); - assertThat(response, containsString("WWW-Authenticate: Negotiate")); - } - - @Test - public void testChallengeSentWithUnhandledAuthorization() throws Exception - { - // Create a bogus Authorization header. We don't care about the actual credentials. - String response = _localConnector.getResponse("GET / HTTP/1.1\r\nHost:localhost\r\nAuthorization:basic asdf\r\n\r\n"); - assertThat(response, containsString("HTTP/1.1 401 Unauthorized")); - assertThat(response, containsString("WWW-Authenticate: Negotiate")); - } -} - diff --git a/jetty-ee10/jetty-ee10-tests/jetty-ee10-test-integration/src/test/java/org/eclipse/jetty/ee10/test/DigestPostTest.java b/jetty-ee10/jetty-ee10-tests/jetty-ee10-test-integration/src/test/java/org/eclipse/jetty/ee10/test/DigestPostTest.java index f8424f328cae..150908a87ba4 100644 --- a/jetty-ee10/jetty-ee10-tests/jetty-ee10-test-integration/src/test/java/org/eclipse/jetty/ee10/test/DigestPostTest.java +++ b/jetty-ee10/jetty-ee10-tests/jetty-ee10-test-integration/src/test/java/org/eclipse/jetty/ee10/test/DigestPostTest.java @@ -37,14 +37,15 @@ import org.eclipse.jetty.client.HttpClient; import org.eclipse.jetty.client.Request; import org.eclipse.jetty.client.StringRequestContent; +import org.eclipse.jetty.ee.security.ConstraintMapping; import org.eclipse.jetty.ee10.servlet.ServletContextHandler; -import org.eclipse.jetty.ee10.servlet.security.AbstractLoginService; -import org.eclipse.jetty.ee10.servlet.security.ConstraintMapping; import org.eclipse.jetty.ee10.servlet.security.ConstraintSecurityHandler; -import org.eclipse.jetty.ee10.servlet.security.RolePrincipal; -import org.eclipse.jetty.ee10.servlet.security.UserPrincipal; -import org.eclipse.jetty.ee10.servlet.security.authentication.DigestAuthenticator; import org.eclipse.jetty.http.HttpMethod; +import org.eclipse.jetty.security.AbstractLoginService; +import org.eclipse.jetty.security.Constraint; +import org.eclipse.jetty.security.RolePrincipal; +import org.eclipse.jetty.security.UserPrincipal; +import org.eclipse.jetty.security.authentication.DigestAuthenticator; import org.eclipse.jetty.server.Connector; import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.NetworkConnector; @@ -53,7 +54,6 @@ import org.eclipse.jetty.server.handler.DefaultHandler; import org.eclipse.jetty.util.IO; import org.eclipse.jetty.util.TypeUtil; -import org.eclipse.jetty.util.security.Constraint; import org.eclipse.jetty.util.security.Credential; import org.eclipse.jetty.util.security.Password; import org.junit.jupiter.api.AfterAll; @@ -133,8 +133,10 @@ public static void setUpServer() security.setAuthenticator(new DigestAuthenticator()); security.setLoginService(realm); - Constraint constraint = new Constraint("SecureTest", "test"); - constraint.setAuthenticate(true); + Constraint constraint = new Constraint.Builder() + .name("SecureTest") + .roles("test") + .build(); ConstraintMapping mapping = new ConstraintMapping(); mapping.setConstraint(constraint); mapping.setPathSpec("/*"); diff --git a/jetty-ee10/jetty-ee10-tests/jetty-ee10-test-integration/src/test/resources/login-service.xml b/jetty-ee10/jetty-ee10-tests/jetty-ee10-test-integration/src/test/resources/login-service.xml index a499f9ab2e75..ada7ed52e537 100644 --- a/jetty-ee10/jetty-ee10-tests/jetty-ee10-test-integration/src/test/resources/login-service.xml +++ b/jetty-ee10/jetty-ee10-tests/jetty-ee10-test-integration/src/test/resources/login-service.xml @@ -18,7 +18,7 @@ - + Test Realm false diff --git a/jetty-ee10/jetty-ee10-tests/jetty-ee10-test-loginservice/src/test/java/org/eclipse/jetty/ee10/loginservice/DatabaseLoginServiceTestServer.java b/jetty-ee10/jetty-ee10-tests/jetty-ee10-test-loginservice/src/test/java/org/eclipse/jetty/ee10/loginservice/DatabaseLoginServiceTestServer.java index 4417ca7706e3..4bec3c640816 100644 --- a/jetty-ee10/jetty-ee10-tests/jetty-ee10-test-loginservice/src/test/java/org/eclipse/jetty/ee10/loginservice/DatabaseLoginServiceTestServer.java +++ b/jetty-ee10/jetty-ee10-tests/jetty-ee10-test-loginservice/src/test/java/org/eclipse/jetty/ee10/loginservice/DatabaseLoginServiceTestServer.java @@ -33,17 +33,17 @@ import jakarta.servlet.http.HttpFilter; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; +import org.eclipse.jetty.ee.security.ConstraintMapping; import org.eclipse.jetty.ee10.servlet.DefaultServlet; import org.eclipse.jetty.ee10.servlet.ServletContextHandler; import org.eclipse.jetty.ee10.servlet.ServletHolder; -import org.eclipse.jetty.ee10.servlet.security.ConstraintMapping; import org.eclipse.jetty.ee10.servlet.security.ConstraintSecurityHandler; -import org.eclipse.jetty.ee10.servlet.security.LoginService; -import org.eclipse.jetty.ee10.servlet.security.authentication.BasicAuthenticator; +import org.eclipse.jetty.security.Constraint; +import org.eclipse.jetty.security.LoginService; +import org.eclipse.jetty.security.authentication.BasicAuthenticator; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.toolchain.test.FS; import org.eclipse.jetty.util.IO; -import org.eclipse.jetty.util.security.Constraint; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testcontainers.containers.MariaDBContainer; @@ -218,10 +218,10 @@ protected void configureServer() throws Exception ConstraintSecurityHandler security = new ConstraintSecurityHandler(); - Constraint constraint = new Constraint(); - constraint.setName("auth"); - constraint.setAuthenticate(true); - constraint.setRoles(new String[]{"user", "admin"}); + Constraint constraint = new Constraint.Builder() + .name("auth") + .roles("user", "admin") + .build(); ConstraintMapping mapping = new ConstraintMapping(); mapping.setPathSpec("/*"); diff --git a/jetty-ee10/jetty-ee10-tests/jetty-ee10-test-loginservice/src/test/java/org/eclipse/jetty/ee10/loginservice/JdbcLoginServiceTest.java b/jetty-ee10/jetty-ee10-tests/jetty-ee10-test-loginservice/src/test/java/org/eclipse/jetty/ee10/loginservice/JdbcLoginServiceTest.java index de54fb69ee60..f85857e3d1bd 100644 --- a/jetty-ee10/jetty-ee10-tests/jetty-ee10-test-loginservice/src/test/java/org/eclipse/jetty/ee10/loginservice/JdbcLoginServiceTest.java +++ b/jetty-ee10/jetty-ee10-tests/jetty-ee10-test-loginservice/src/test/java/org/eclipse/jetty/ee10/loginservice/JdbcLoginServiceTest.java @@ -29,10 +29,10 @@ import org.eclipse.jetty.client.ContentResponse; import org.eclipse.jetty.client.HttpClient; import org.eclipse.jetty.client.Request; -import org.eclipse.jetty.ee10.servlet.security.JDBCLoginService; -import org.eclipse.jetty.ee10.servlet.security.LoginService; import org.eclipse.jetty.http.HttpMethod; import org.eclipse.jetty.http.HttpStatus; +import org.eclipse.jetty.security.JDBCLoginService; +import org.eclipse.jetty.security.LoginService; import org.eclipse.jetty.toolchain.test.FS; import org.eclipse.jetty.toolchain.test.MavenTestingUtils; import org.eclipse.jetty.util.IO; diff --git a/jetty-ee10/jetty-ee10-tests/jetty-ee10-test-quickstart/src/test/resources/test-spec.xml b/jetty-ee10/jetty-ee10-tests/jetty-ee10-test-quickstart/src/test/resources/test-spec.xml index 8f739591ade5..9a488f6216b7 100644 --- a/jetty-ee10/jetty-ee10-tests/jetty-ee10-test-quickstart/src/test/resources/test-spec.xml +++ b/jetty-ee10/jetty-ee10-tests/jetty-ee10-test-quickstart/src/test/resources/test-spec.xml @@ -18,7 +18,7 @@ - + Test Realm diff --git a/jetty-ee10/jetty-ee10-tests/jetty-ee10-test-quickstart/src/test/resources/test.xml b/jetty-ee10/jetty-ee10-tests/jetty-ee10-test-quickstart/src/test/resources/test.xml index adf295b072b4..dfc81a58f8ed 100644 --- a/jetty-ee10/jetty-ee10-tests/jetty-ee10-test-quickstart/src/test/resources/test.xml +++ b/jetty-ee10/jetty-ee10-tests/jetty-ee10-test-quickstart/src/test/resources/test.xml @@ -23,17 +23,16 @@ detected. - + Test Realm - + true - true true diff --git a/jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/JaasConfiguration.java b/jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/JaasConfiguration.java index c91fdfb45865..ee7c3337a761 100644 --- a/jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/JaasConfiguration.java +++ b/jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/JaasConfiguration.java @@ -20,7 +20,7 @@ /** *

JAAS Configuration

*

This configuration configures the WebAppContext server/system classes to - * be able to see the org.eclipse.jetty.jaas package. + * be able to see the org.eclipse.jetty.security.jaas package. * This class is defined in the webapp package, as it implements the {@link Configuration} interface, * which is unknown to the jaas package. *

@@ -33,6 +33,7 @@ public JaasConfiguration() { addDependencies(WebXmlConfiguration.class, MetaInfConfiguration.class, WebInfConfiguration.class, FragmentConfiguration.class); addDependents(WebAppConfiguration.class); + protectAndExpose("org.eclipse.jetty.security.jaas."); protectAndExpose("org.eclipse.jetty.ee10.jaas."); } @@ -41,7 +42,7 @@ public boolean isAvailable() { try { - return Loader.loadClass("org.eclipse.jetty.ee10.jaas.JAASLoginService") != null; + return Loader.loadClass("org.eclipse.jetty.security.jaas.JAASLoginService") != null; } catch (Throwable e) { diff --git a/jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/JndiConfiguration.java b/jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/JndiConfiguration.java index cf45a02207ad..594128605861 100644 --- a/jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/JndiConfiguration.java +++ b/jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/JndiConfiguration.java @@ -20,7 +20,7 @@ /** *

JNDI Configuration

*

This configuration configures the WebAppContext system/server classes to - * be able to see the org.eclipse.jetty.jaas package. + * be able to see the org.eclipse.jetty.jndi package. * This class is defined in the webapp package, as it implements the {@link Configuration} interface, * which is unknown to the jndi package. *

diff --git a/jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/StandardDescriptorProcessor.java b/jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/StandardDescriptorProcessor.java index b8e6da7bbdb5..40b1f64e7aa3 100644 --- a/jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/StandardDescriptorProcessor.java +++ b/jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/StandardDescriptorProcessor.java @@ -29,6 +29,8 @@ import jakarta.servlet.DispatcherType; import jakarta.servlet.MultipartConfigElement; import jakarta.servlet.SessionTrackingMode; +import org.eclipse.jetty.ee.security.ConstraintAware; +import org.eclipse.jetty.ee.security.ConstraintMapping; import org.eclipse.jetty.ee10.servlet.ErrorPageErrorHandler; import org.eclipse.jetty.ee10.servlet.FilterHolder; import org.eclipse.jetty.ee10.servlet.FilterMapping; @@ -39,14 +41,14 @@ import org.eclipse.jetty.ee10.servlet.ServletHolder; import org.eclipse.jetty.ee10.servlet.ServletMapping; import org.eclipse.jetty.ee10.servlet.Source; -import org.eclipse.jetty.ee10.servlet.security.ConstraintAware; -import org.eclipse.jetty.ee10.servlet.security.ConstraintMapping; -import org.eclipse.jetty.ee10.servlet.security.authentication.FormAuthenticator; +import org.eclipse.jetty.ee10.servlet.security.ConstraintSecurityHandler; import org.eclipse.jetty.http.pathmap.ServletPathSpec; +import org.eclipse.jetty.security.Authenticator; +import org.eclipse.jetty.security.Constraint; +import org.eclipse.jetty.security.authentication.FormAuthenticator; import org.eclipse.jetty.util.ArrayUtil; import org.eclipse.jetty.util.Loader; import org.eclipse.jetty.util.StringUtil; -import org.eclipse.jetty.util.security.Constraint; import org.eclipse.jetty.xml.XmlParser; import org.eclipse.jetty.xml.XmlParser.Node; import org.slf4j.Logger; @@ -1282,117 +1284,139 @@ public void visitJspConfig(WebAppContext context, Descriptor descriptor, XmlPars public void visitSecurityConstraint(WebAppContext context, Descriptor descriptor, XmlParser.Node node) { - if (context.getSecurityHandler() == null) + if (!(context.getSecurityHandler() instanceof ConstraintAware constraintAware)) { - LOG.warn("security-constraint declared but SecurityHandler==null"); + LOG.warn("security-constraint declared but SecurityHandler not ConstraintAware"); return; } - Constraint scBase = new Constraint(); + Constraint.Builder scBase = new Constraint.Builder(Constraint.ALLOWED_ANY_TRANSPORT); - //ServletSpec 3.0, p74 security-constraints, as minOccurs > 1, are additive - //across fragments + //ServletSpec 3.0, p74 security-constraints, as minOccurs > 1, are additive across fragments //TODO: need to remember origin of the constraints - try - { - XmlParser.Node auths = node.get("auth-constraint"); + XmlParser.Node auths = node.get("auth-constraint"); - if (auths != null) + if (auths != null) + { + // auth-constraint + Iterator iter = auths.iterator("role-name"); + List roles = new ArrayList(); + while (iter.hasNext()) { - scBase.setAuthenticate(true); - // auth-constraint - Iterator iter = auths.iterator("role-name"); - List roles = new ArrayList(); - while (iter.hasNext()) + String role = iter.next().toString(false, true); + if (StringUtil.isBlank(role)) + continue; + + switch (role) { - String role = iter.next().toString(false, true); - roles.add(role); + case ConstraintSecurityHandler.ANY_KNOWN_ROLE -> // "*" + { + if (scBase.getAuthorization() == null) + { + scBase.authorization(Constraint.Authorization.KNOWN_ROLE); + roles = null; + } + } + case ConstraintSecurityHandler.ANY_ROLE -> // "**" + { + scBase.authorization(Constraint.Authorization.ANY_USER); + roles = null; + } + default -> + { + if (roles != null) + roles.add(role); + } } - scBase.setRoles(roles.toArray(new String[roles.size()])); } - XmlParser.Node data = node.get("user-data-constraint"); - if (data != null) + if (roles != null) { - data = data.get("transport-guarantee"); - String guarantee = data.toString(false, true).toUpperCase(Locale.ENGLISH); - if (guarantee == null || guarantee.length() == 0 || "NONE".equals(guarantee)) - scBase.setDataConstraint(Constraint.DC_NONE); - else if ("INTEGRAL".equals(guarantee)) - scBase.setDataConstraint(Constraint.DC_INTEGRAL); - else if ("CONFIDENTIAL".equals(guarantee)) - scBase.setDataConstraint(Constraint.DC_CONFIDENTIAL); + if (roles.isEmpty()) + scBase.authorization(Constraint.Authorization.FORBIDDEN); else { - LOG.warn("Unknown user-data-constraint: {}", guarantee); - scBase.setDataConstraint(Constraint.DC_CONFIDENTIAL); + scBase.authorization(Constraint.Authorization.SPECIFIC_ROLE); + scBase.roles(roles.toArray(new String[0])); } } - Iterator iter = node.iterator("web-resource-collection"); - while (iter.hasNext()) - { - XmlParser.Node collection = iter.next(); - String name = collection.getString("web-resource-name", false, true); - Constraint sc = (Constraint)scBase.clone(); - sc.setName(name); + } - Iterator iter2 = collection.iterator("url-pattern"); - while (iter2.hasNext()) + XmlParser.Node data = node.get("user-data-constraint"); + if (data != null) + { + data = data.get("transport-guarantee"); + String guarantee = data.toString(false, true).toUpperCase(Locale.ENGLISH); + scBase.transport( + switch (guarantee) { - String url = iter2.next().toString(false, true); - url = ServletPathSpec.normalize(url); - //remember origin so we can process ServletRegistration.Dynamic.setServletSecurityElement() correctly - context.getMetaData().setOrigin("constraint.url." + url, descriptor); + case "INTEGRAL", "CONFIDENTIAL" -> Constraint.Transport.SECURE; + case "NONE" -> Constraint.Transport.ANY; + default -> + { + LOG.warn("Unknown user-data-constraint: {}", guarantee); + yield null; + } + }); + } + Iterator iter = node.iterator("web-resource-collection"); + while (iter.hasNext()) + { + XmlParser.Node collection = iter.next(); + scBase.name(collection.getString("web-resource-name", false, true)); + Constraint sc = scBase.build(); - Iterator methods = collection.iterator("http-method"); - Iterator ommissions = collection.iterator("http-method-omission"); + Iterator iter2 = collection.iterator("url-pattern"); + while (iter2.hasNext()) + { + String url = iter2.next().toString(false, true); + url = ServletPathSpec.normalize(url); + //remember origin so we can process ServletRegistration.Dynamic.setServletSecurityElement() correctly + context.getMetaData().setOrigin("constraint.url." + url, descriptor); - if (methods.hasNext()) - { - if (ommissions.hasNext()) - throw new IllegalStateException("web-resource-collection cannot contain both http-method and http-method-omission"); + Iterator methods = collection.iterator("http-method"); + Iterator ommissions = collection.iterator("http-method-omission"); - //configure all the http-method elements for each url - while (methods.hasNext()) - { - String method = ((XmlParser.Node)methods.next()).toString(false, true); - ConstraintMapping mapping = new ConstraintMapping(); - mapping.setMethod(method); - mapping.setPathSpec(url); - mapping.setConstraint(sc); - ((ConstraintAware)context.getSecurityHandler()).addConstraintMapping(mapping); - } - } - else if (ommissions.hasNext()) + if (methods.hasNext()) + { + if (ommissions.hasNext()) + throw new IllegalStateException("web-resource-collection cannot contain both http-method and http-method-omission"); + + //configure all the http-method elements for each url + while (methods.hasNext()) { - //configure all the http-method-omission elements for each url - // TODO use the array - while (ommissions.hasNext()) - { - String method = ((XmlParser.Node)ommissions.next()).toString(false, true); - ConstraintMapping mapping = new ConstraintMapping(); - mapping.setMethodOmissions(new String[]{method}); - mapping.setPathSpec(url); - mapping.setConstraint(sc); - ((ConstraintAware)context.getSecurityHandler()).addConstraintMapping(mapping); - } + String method = methods.next().toString(false, true); + ConstraintMapping mapping = new ConstraintMapping(); + mapping.setMethod(method); + mapping.setPathSpec(url); + mapping.setConstraint(sc); + constraintAware.addConstraintMapping(mapping); } - else + } + else if (ommissions.hasNext()) + { + //configure all the http-method-omission elements for each url + while (ommissions.hasNext()) { - //No http-methods or http-method-omissions specified, the constraint applies to all + String method = ommissions.next().toString(false, true); ConstraintMapping mapping = new ConstraintMapping(); + mapping.setMethodOmissions(new String[]{method}); mapping.setPathSpec(url); mapping.setConstraint(sc); - ((ConstraintAware)context.getSecurityHandler()).addConstraintMapping(mapping); + constraintAware.addConstraintMapping(mapping); } } + else + { + //No http-methods or http-method-omissions specified, the constraint applies to all + ConstraintMapping mapping = new ConstraintMapping(); + mapping.setPathSpec(url); + mapping.setConstraint(sc); + constraintAware.addConstraintMapping(mapping); + } } } - catch (CloneNotSupportedException e) - { - LOG.warn("Unable to clone {}", scBase, e); - } } public void visitLoginConfig(WebAppContext context, Descriptor descriptor, XmlParser.Node node) throws Exception @@ -1410,7 +1434,7 @@ public void visitLoginConfig(WebAppContext context, Descriptor descriptor, XmlPa case NotSet: { //not already set, so set it now - context.getSecurityHandler().setAuthMethod(method.toString(false, true)); + context.getSecurityHandler().setAuthenticationType(method.toString(false, true)); context.getMetaData().setOrigin("auth-method", descriptor); break; } @@ -1421,7 +1445,7 @@ public void visitLoginConfig(WebAppContext context, Descriptor descriptor, XmlPa //if it was already set by a web xml descriptor and we're parsing another web xml descriptor, then override it if (!(descriptor instanceof FragmentDescriptor)) { - context.getSecurityHandler().setAuthMethod(method.toString(false, true)); + context.getSecurityHandler().setAuthenticationType(method.toString(false, true)); context.getMetaData().setOrigin("auth-method", descriptor); } break; @@ -1429,7 +1453,7 @@ public void visitLoginConfig(WebAppContext context, Descriptor descriptor, XmlPa case WebFragment: { //it was already set by another fragment, if we're parsing a fragment, the values must match - if (!context.getSecurityHandler().getAuthMethod().equals(method.toString(false, true))) + if (!context.getSecurityHandler().getAuthenticationType().equals(method.toString(false, true))) throw new IllegalStateException("Conflicting auth-method value in " + descriptor.getURI()); break; } @@ -1473,7 +1497,7 @@ public void visitLoginConfig(WebAppContext context, Descriptor descriptor, XmlPa unknownOrigin(originRealmName); } - if (Constraint.__FORM_AUTH.equalsIgnoreCase(context.getSecurityHandler().getAuthMethod())) + if (Authenticator.FORM_AUTH.equalsIgnoreCase(context.getSecurityHandler().getAuthenticationType())) { XmlParser.Node formConfig = node.get("form-login-config"); if (formConfig != null) @@ -1494,7 +1518,7 @@ public void visitLoginConfig(WebAppContext context, Descriptor descriptor, XmlPa case NotSet: { //Never been set before, so accept it - context.getSecurityHandler().setInitParameter(FormAuthenticator.__FORM_LOGIN_PAGE, loginPageName); + context.getSecurityHandler().setParameter(FormAuthenticator.__FORM_LOGIN_PAGE, loginPageName); context.getMetaData().setOrigin("form-login-page", descriptor); break; } @@ -1505,7 +1529,7 @@ public void visitLoginConfig(WebAppContext context, Descriptor descriptor, XmlPa //a web xml descriptor previously set it, only allow another one to change it (web.xml/web-default.xml/web-override.xml) if (!(descriptor instanceof FragmentDescriptor)) { - context.getSecurityHandler().setInitParameter(FormAuthenticator.__FORM_LOGIN_PAGE, loginPageName); + context.getSecurityHandler().setParameter(FormAuthenticator.__FORM_LOGIN_PAGE, loginPageName); context.getMetaData().setOrigin("form-login-page", descriptor); } break; @@ -1513,7 +1537,7 @@ public void visitLoginConfig(WebAppContext context, Descriptor descriptor, XmlPa case WebFragment: { //a web-fragment previously set it. We must be parsing yet another web-fragment, so the values must agree - if (!context.getSecurityHandler().getInitParameter(FormAuthenticator.__FORM_LOGIN_PAGE).equals(loginPageName)) + if (!context.getSecurityHandler().getParameter(FormAuthenticator.__FORM_LOGIN_PAGE).equals(loginPageName)) throw new IllegalStateException("Conflicting form-login-page value in " + descriptor.getURI()); break; } @@ -1528,7 +1552,7 @@ public void visitLoginConfig(WebAppContext context, Descriptor descriptor, XmlPa case NotSet: { //Never been set before, so accept it - context.getSecurityHandler().setInitParameter(FormAuthenticator.__FORM_ERROR_PAGE, errorPageName); + context.getSecurityHandler().setParameter(FormAuthenticator.__FORM_ERROR_PAGE, errorPageName); context.getMetaData().setOrigin("form-error-page", descriptor); break; } @@ -1539,7 +1563,7 @@ public void visitLoginConfig(WebAppContext context, Descriptor descriptor, XmlPa //a web xml descriptor previously set it, only allow another one to change it (web.xml/web-default.xml/web-override.xml) if (!(descriptor instanceof FragmentDescriptor)) { - context.getSecurityHandler().setInitParameter(FormAuthenticator.__FORM_ERROR_PAGE, errorPageName); + context.getSecurityHandler().setParameter(FormAuthenticator.__FORM_ERROR_PAGE, errorPageName); context.getMetaData().setOrigin("form-error-page", descriptor); } break; @@ -1547,7 +1571,7 @@ public void visitLoginConfig(WebAppContext context, Descriptor descriptor, XmlPa case WebFragment: { //a web-fragment previously set it. We must be parsing yet another web-fragment, so the values must agree - if (!context.getSecurityHandler().getInitParameter(FormAuthenticator.__FORM_ERROR_PAGE).equals(errorPageName)) + if (!context.getSecurityHandler().getParameter(FormAuthenticator.__FORM_ERROR_PAGE).equals(errorPageName)) throw new IllegalStateException("Conflicting form-error-page value in " + descriptor.getURI()); break; } @@ -1573,7 +1597,7 @@ public void visitSecurityRole(WebAppContext context, Descriptor descriptor, XmlP //ServletSpec 3.0, p74 elements with multiplicity >1 are additive when merged XmlParser.Node roleNode = node.get("role-name"); String role = roleNode.toString(false, true); - ((ConstraintAware)context.getSecurityHandler()).addRole(role); + ((ConstraintAware)context.getSecurityHandler()).addKnownRole(role); context.getMetaData().setOrigin("security-role." + role, descriptor); } diff --git a/jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/WebAppContext.java b/jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/WebAppContext.java index aca0ddaaaba8..199fb30d006d 100644 --- a/jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/WebAppContext.java +++ b/jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/WebAppContext.java @@ -40,15 +40,15 @@ import jakarta.servlet.http.HttpSessionIdListener; import jakarta.servlet.http.HttpSessionListener; import org.eclipse.jetty.ee.Deployable; +import org.eclipse.jetty.ee.security.ConstraintAware; +import org.eclipse.jetty.ee.security.ConstraintMapping; import org.eclipse.jetty.ee10.servlet.ErrorHandler; import org.eclipse.jetty.ee10.servlet.ErrorPageErrorHandler; import org.eclipse.jetty.ee10.servlet.ServletContextHandler; import org.eclipse.jetty.ee10.servlet.ServletHandler; import org.eclipse.jetty.ee10.servlet.SessionHandler; -import org.eclipse.jetty.ee10.servlet.security.ConstraintAware; -import org.eclipse.jetty.ee10.servlet.security.ConstraintMapping; import org.eclipse.jetty.ee10.servlet.security.ConstraintSecurityHandler; -import org.eclipse.jetty.ee10.servlet.security.SecurityHandler; +import org.eclipse.jetty.security.SecurityHandler; import org.eclipse.jetty.server.Connector; import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.Server; @@ -1306,7 +1306,7 @@ public Set setServletSecurity(Dynamic registration, ServletSecurityEleme */ java.util.Collection pathMappings = registration.getMappings(); - if (pathMappings != null) + if (pathMappings != null && getSecurityHandler() instanceof ConstraintAware constraintAware) { ConstraintSecurityHandler.createConstraint(registration.getName(), servletSecurityElement); @@ -1322,9 +1322,9 @@ public Set setServletSecurity(Dynamic registration, ServletSecurityEleme List mappings = ConstraintSecurityHandler.createConstraintsWithMappingsForPath(registration.getName(), pathSpec, servletSecurityElement); for (ConstraintMapping m : mappings) { - ((ConstraintAware)getSecurityHandler()).addConstraintMapping(m); + constraintAware.addConstraintMapping(m); } - ((ConstraintAware)getSecurityHandler()).checkPathsWithUncoveredHttpMethods(); + constraintAware.checkPathsWithUncoveredHttpMethods(); getMetaData().setOriginAPI("constraint.url." + pathSpec); break; } @@ -1342,13 +1342,13 @@ public Set setServletSecurity(Dynamic registration, ServletSecurityEleme { //mapping established via an annotation or by previous call to this method, //replace the security constraint for this pattern - List constraintMappings = ConstraintSecurityHandler.removeConstraintMappingsForPath(pathSpec, ((ConstraintAware)getSecurityHandler()).getConstraintMappings()); + List constraintMappings = ConstraintSecurityHandler.removeConstraintMappingsForPath(pathSpec, constraintAware.getConstraintMappings()); List freshMappings = ConstraintSecurityHandler.createConstraintsWithMappingsForPath(registration.getName(), pathSpec, servletSecurityElement); constraintMappings.addAll(freshMappings); ((ConstraintSecurityHandler)getSecurityHandler()).setConstraintMappings(constraintMappings); - ((ConstraintAware)getSecurityHandler()).checkPathsWithUncoveredHttpMethods(); + constraintAware.checkPathsWithUncoveredHttpMethods(); break; } default: diff --git a/jetty-ee10/jetty-ee10-webapp/src/test/java/org/eclipse/jetty/ee10/webapp/WebAppContextTest.java b/jetty-ee10/jetty-ee10-webapp/src/test/java/org/eclipse/jetty/ee10/webapp/WebAppContextTest.java index ad868d59ff5c..89cd491827f5 100644 --- a/jetty-ee10/jetty-ee10-webapp/src/test/java/org/eclipse/jetty/ee10/webapp/WebAppContextTest.java +++ b/jetty-ee10/jetty-ee10-webapp/src/test/java/org/eclipse/jetty/ee10/webapp/WebAppContextTest.java @@ -204,6 +204,7 @@ public void testConfigurationOrder() expectedConfigurations.add("org.eclipse.jetty.ee10.webapp.WebXmlConfiguration"); expectedConfigurations.add("org.eclipse.jetty.ee10.webapp.MetaInfConfiguration"); expectedConfigurations.add("org.eclipse.jetty.ee10.webapp.FragmentConfiguration"); + expectedConfigurations.add("org.eclipse.jetty.ee10.webapp.JaasConfiguration"); expectedConfigurations.add("org.eclipse.jetty.ee10.webapp.WebAppConfiguration"); expectedConfigurations.add("org.eclipse.jetty.ee10.webapp.JettyWebXmlConfiguration"); diff --git a/jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/examples/WebSocketServerExamplesTest.java b/jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/examples/WebSocketServerExamplesTest.java index fe9cad9bbb23..697a1c466635 100644 --- a/jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/examples/WebSocketServerExamplesTest.java +++ b/jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/examples/WebSocketServerExamplesTest.java @@ -27,17 +27,17 @@ import jakarta.websocket.OnOpen; import jakarta.websocket.Session; import jakarta.websocket.WebSocketContainer; +import org.eclipse.jetty.ee.security.ConstraintMapping; import org.eclipse.jetty.ee10.servlet.ServletContextHandler; -import org.eclipse.jetty.ee10.servlet.security.ConstraintMapping; import org.eclipse.jetty.ee10.servlet.security.ConstraintSecurityHandler; -import org.eclipse.jetty.ee10.servlet.security.HashLoginService; -import org.eclipse.jetty.ee10.servlet.security.SecurityHandler; -import org.eclipse.jetty.ee10.servlet.security.UserStore; -import org.eclipse.jetty.ee10.servlet.security.authentication.BasicAuthenticator; import org.eclipse.jetty.ee10.websocket.jakarta.server.config.JakartaWebSocketServletContainerInitializer; +import org.eclipse.jetty.security.Constraint; +import org.eclipse.jetty.security.HashLoginService; +import org.eclipse.jetty.security.SecurityHandler; +import org.eclipse.jetty.security.UserStore; +import org.eclipse.jetty.security.authentication.BasicAuthenticator; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.ServerConnector; -import org.eclipse.jetty.util.security.Constraint; import org.eclipse.jetty.util.security.Credential; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; @@ -127,10 +127,10 @@ private static SecurityHandler getSecurityHandler(String username, String passwo loginService.setUserStore(userStore); loginService.setName(realm); - Constraint constraint = new Constraint(); - constraint.setName("auth"); - constraint.setAuthenticate(true); - constraint.setRoles(new String[]{"**"}); + Constraint constraint = new Constraint.Builder() + .name("auth") + .authorization(Constraint.Authorization.ANY_USER) + .build(); ConstraintMapping mapping = new ConstraintMapping(); mapping.setPathSpec("/secured/socket/*"); diff --git a/jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/WebSocketServletExamplesTest.java b/jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/WebSocketServletExamplesTest.java index 58360b78abb4..5da3a50ff327 100644 --- a/jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/WebSocketServletExamplesTest.java +++ b/jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jetty-tests/src/test/java/org/eclipse/jetty/ee10/websocket/tests/WebSocketServletExamplesTest.java @@ -19,17 +19,17 @@ import org.eclipse.jetty.client.AuthenticationStore; import org.eclipse.jetty.client.BasicAuthentication; +import org.eclipse.jetty.ee.security.ConstraintMapping; import org.eclipse.jetty.ee10.servlet.ServletContextHandler; -import org.eclipse.jetty.ee10.servlet.security.ConstraintMapping; import org.eclipse.jetty.ee10.servlet.security.ConstraintSecurityHandler; -import org.eclipse.jetty.ee10.servlet.security.HashLoginService; -import org.eclipse.jetty.ee10.servlet.security.SecurityHandler; -import org.eclipse.jetty.ee10.servlet.security.UserStore; -import org.eclipse.jetty.ee10.servlet.security.authentication.BasicAuthenticator; import org.eclipse.jetty.ee10.websocket.server.config.JettyWebSocketServletContainerInitializer; +import org.eclipse.jetty.security.Constraint; +import org.eclipse.jetty.security.HashLoginService; +import org.eclipse.jetty.security.SecurityHandler; +import org.eclipse.jetty.security.UserStore; +import org.eclipse.jetty.security.authentication.BasicAuthenticator; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.ServerConnector; -import org.eclipse.jetty.util.security.Constraint; import org.eclipse.jetty.util.security.Credential; import org.eclipse.jetty.websocket.api.Session; import org.eclipse.jetty.websocket.client.ClientUpgradeRequest; @@ -83,10 +83,10 @@ private static SecurityHandler getSecurityHandler(String username, String passwo loginService.setUserStore(userStore); loginService.setName(realm); - Constraint constraint = new Constraint(); - constraint.setName("auth"); - constraint.setAuthenticate(true); - constraint.setRoles(new String[]{"**"}); + Constraint constraint = new Constraint.Builder() + .name("auth") + .authorization(Constraint.Authorization.ANY_USER) + .build(); ConstraintMapping mapping = new ConstraintMapping(); mapping.setPathSpec("/authed/*"); diff --git a/jetty-ee10/pom.xml b/jetty-ee10/pom.xml index 09e63a2ec11b..1bacdcdbec97 100644 --- a/jetty-ee10/pom.xml +++ b/jetty-ee10/pom.xml @@ -47,12 +47,10 @@ jetty-ee10-glassfish-jstl jetty-ee10-annotations jetty-ee10-cdi - jetty-ee10-jaas jetty-ee10-jaspi jetty-ee10-jndi jetty-ee10-jspc-maven-plugin jetty-ee10-maven-plugin - jetty-ee10-openid jetty-ee10-osgi jetty-ee10-plus jetty-ee10-proxy @@ -92,8 +90,8 @@ ${project.version}
- org.eclipse.jetty.ee10 - jetty-ee10-jaas + org.eclipse.jetty + jetty-security ${project.version} @@ -117,8 +115,8 @@ ${project.version} - org.eclipse.jetty.ee10 - jetty-ee10-openid + org.eclipse.jetty + jetty-openid ${project.version} diff --git a/jetty-ee8/jetty-ee8-bom/pom.xml b/jetty-ee8/jetty-ee8-bom/pom.xml index 16d03ad0bcc6..43d44018415d 100644 --- a/jetty-ee8/jetty-ee8-bom/pom.xml +++ b/jetty-ee8/jetty-ee8-bom/pom.xml @@ -55,11 +55,6 @@ jetty-ee8-glassfish-jstl 12.0.0-SNAPSHOT - - org.eclipse.jetty.ee8 - jetty-ee8-jaas - 12.0.0-SNAPSHOT - org.eclipse.jetty.ee8 jetty-ee8-jndi diff --git a/jetty-ee8/jetty-ee8-demos/jetty-ee8-demo-jaas-webapp/pom.xml b/jetty-ee8/jetty-ee8-demos/jetty-ee8-demo-jaas-webapp/pom.xml index 05e001c041ff..c08d1651adb2 100644 --- a/jetty-ee8/jetty-ee8-demos/jetty-ee8-demo-jaas-webapp/pom.xml +++ b/jetty-ee8/jetty-ee8-demos/jetty-ee8-demo-jaas-webapp/pom.xml @@ -29,7 +29,7 @@ /test-jaas - + Test JAAS Realm ee8-xyz diff --git a/jetty-ee8/jetty-ee8-demos/jetty-ee8-demo-jaas-webapp/src/main/config/modules/demo.d/ee8-demo-jaas.xml b/jetty-ee8/jetty-ee8-demos/jetty-ee8-demo-jaas-webapp/src/main/config/modules/demo.d/ee8-demo-jaas.xml index 9879b09db6bd..9532bb9b7358 100644 --- a/jetty-ee8/jetty-ee8-demos/jetty-ee8-demo-jaas-webapp/src/main/config/modules/demo.d/ee8-demo-jaas.xml +++ b/jetty-ee8/jetty-ee8-demos/jetty-ee8-demo-jaas-webapp/src/main/config/modules/demo.d/ee8-demo-jaas.xml @@ -14,9 +14,9 @@ - + Demo JAAS Realm - ee8-xyz + demo diff --git a/jetty-ee8/jetty-ee8-demos/jetty-ee8-demo-jaas-webapp/src/main/config/modules/demo.d/ee8-demo-login.properties b/jetty-ee8/jetty-ee8-demos/jetty-ee8-demo-jaas-webapp/src/main/config/modules/demo.d/ee8-demo-login.properties deleted file mode 100644 index 61e32037316b..000000000000 --- a/jetty-ee8/jetty-ee8-demos/jetty-ee8-demo-jaas-webapp/src/main/config/modules/demo.d/ee8-demo-login.properties +++ /dev/null @@ -1 +0,0 @@ -me=me,me,roleA diff --git a/jetty-ee8/jetty-ee8-demos/jetty-ee8-demo-jaas-webapp/src/main/config/modules/ee8-demo-jaas.mod b/jetty-ee8/jetty-ee8-demos/jetty-ee8-demo-jaas-webapp/src/main/config/modules/ee8-demo-jaas.mod index 7ff08b15ec42..e5e8aff612df 100644 --- a/jetty-ee8/jetty-ee8-demos/jetty-ee8-demo-jaas-webapp/src/main/config/modules/ee8-demo-jaas.mod +++ b/jetty-ee8/jetty-ee8-demos/jetty-ee8-demo-jaas-webapp/src/main/config/modules/ee8-demo-jaas.mod @@ -1,7 +1,7 @@ # DO NOT EDIT - See: https://www.eclipse.org/jetty/documentation/current/startup-modules.html [description] -Demo Spec webapp +Demo EE8 JAAS webapp [environment] ee8 @@ -13,7 +13,7 @@ webapp [depends] demo-jaas ee8-deploy -ee8-jaas +jaas jdbc ee8-jsp ee8-annotations @@ -22,9 +22,4 @@ ext [files] basehome:modules/demo.d/ee8-demo-jaas.xml|webapps/ee8-demo-jaas.xml basehome:modules/demo.d/ee8-demo-jaas.properties|webapps/ee8-demo-jaas.properties -basehome:modules/demo.d/ee8-demo-login.properties|etc/ee8-demo-login.properties maven://org.eclipse.jetty.ee8.demos/jetty-ee8-demo-jaas-webapp/${jetty.version}/war|webapps/ee8-demo-jaas.war - -[ini] -# Enable security via jaas, and configure it -jetty.jaas.login.conf?=etc/demo-login.conf diff --git a/jetty-ee8/jetty-ee8-demos/jetty-ee8-demo-jetty-webapp/pom.xml b/jetty-ee8/jetty-ee8-demos/jetty-ee8-demo-jetty-webapp/pom.xml index 285a300e3358..0f156bb0abce 100644 --- a/jetty-ee8/jetty-ee8-demos/jetty-ee8-demo-jetty-webapp/pom.xml +++ b/jetty-ee8/jetty-ee8-demos/jetty-ee8-demo-jetty-webapp/pom.xml @@ -115,7 +115,7 @@ ${project.build.directory}/work - + Test Realm ${project.build.testOutputDirectory}/test-realm.properties diff --git a/jetty-ee8/jetty-ee8-demos/jetty-ee8-demo-jetty-webapp/src/main/assembly/embedded-jetty-web-for-webbundle.xml b/jetty-ee8/jetty-ee8-demos/jetty-ee8-demo-jetty-webapp/src/main/assembly/embedded-jetty-web-for-webbundle.xml index 3db8c129e553..6a7eaa3f6678 100644 --- a/jetty-ee8/jetty-ee8-demos/jetty-ee8-demo-jetty-webapp/src/main/assembly/embedded-jetty-web-for-webbundle.xml +++ b/jetty-ee8/jetty-ee8-demos/jetty-ee8-demo-jetty-webapp/src/main/assembly/embedded-jetty-web-for-webbundle.xml @@ -49,10 +49,10 @@ detected. - + Test Realm - /ee9-demo-realm.properties + /demo-realm.properties - - org.eclipse.jetty.ee8 - jetty-ee8-jaas - true - org.eclipse.jetty.ee8 jetty-ee8-annotations diff --git a/jetty-ee8/jetty-ee8-jaas/pom.xml b/jetty-ee8/jetty-ee8-jaas/pom.xml deleted file mode 100644 index 98ae94676792..000000000000 --- a/jetty-ee8/jetty-ee8-jaas/pom.xml +++ /dev/null @@ -1,163 +0,0 @@ - - - org.eclipse.jetty.ee8 - jetty-ee8 - 12.0.0-SNAPSHOT - - - 4.0.0 - jetty-ee8-jaas - EE8 :: JAAS - Jetty JAAS support - - - jetty-ee9-jaas - ${project.groupId}.jaas - 2.0.0.AM26 - 2.1.2 - 2.2.1 - org.eclipse.jetty.jaas.* - - - - - - - org.apache.maven.plugins - maven-source-plugin - - - org.apache.maven.plugins - maven-surefire-plugin - - false - false - --add-opens java.base/sun.security.x509=ALL-UNNAMED --add-opens java.base/sun.security.util=ALL-UNNAMED - - - - - - - - org.eclipse.jetty.ee8 - jetty-ee8-security - - - org.slf4j - slf4j-api - - - org.eclipse.jetty - jetty-slf4j-impl - test - - - org.eclipse.jetty.toolchain - jetty-test-helper - test - - - org.apache.mina - mina-core - ${apache.mina.version} - test - - - org.apache.directory.server - apacheds-test-framework - ${apacheds.version} - test - - - junit - junit - - - - org.apache.directory.shared - shared-ldap-schema - - - org.apache.directory.api - api-ldap-schema-data - - - - - org.apache.directory.server - apacheds-server-integ - ${apacheds.version} - test - - - - org.apache.directory.shared - shared-ldap-schema - - - org.apache.directory.api - api-ldap-schema-data - - - - - org.apache.directory.server - apacheds-core-integ - ${apacheds.version} - test - - - - org.apache.directory.shared - shared-ldap-schema - - - org.apache.directory.api - api-ldap-schema-data - - - - - org.apache.directory.api - api-ldap-schema-data - ${apache.directory.api.version} - test - - - org.apache.directory.api - api-ldap-model - ${apache.directory.api.version} - - - org.apache.mina - mina-core - - - - - org.apache.directory.api - api-util - ${apache.directory.api.version} - - - org.apache.directory.api - api-asn1-api - ${apache.directory.api.version} - - - - org.junit.vintage - junit-vintage-engine - ${junit.version} - test - - - - - - diff --git a/jetty-ee8/jetty-ee8-maven-plugin/pom.xml b/jetty-ee8/jetty-ee8-maven-plugin/pom.xml index d43245cf2963..f9a430aad629 100644 --- a/jetty-ee8/jetty-ee8-maven-plugin/pom.xml +++ b/jetty-ee8/jetty-ee8-maven-plugin/pom.xml @@ -189,11 +189,6 @@ jetty-ee8-quickstart true - - org.eclipse.jetty.ee8 - jetty-ee8-jaas - true - org.eclipse.jetty.ee8 jetty-ee8-plus diff --git a/jetty-ee8/jetty-ee8-openid/pom.xml b/jetty-ee8/jetty-ee8-openid/pom.xml index 7cc04b3a22bc..7940f790f400 100644 --- a/jetty-ee8/jetty-ee8-openid/pom.xml +++ b/jetty-ee8/jetty-ee8-openid/pom.xml @@ -37,6 +37,10 @@ org.eclipse.jetty jetty-server + + org.eclipse.jetty + jetty-openid + org.eclipse.jetty jetty-client diff --git a/jetty-ee8/jetty-ee8-openid/src/main/config/modules/ee8-openid.mod b/jetty-ee8/jetty-ee8-openid/src/main/config/modules/ee8-openid.mod index 8c0627fbba05..aaad1ff3cc1b 100644 --- a/jetty-ee8/jetty-ee8-openid/src/main/config/modules/ee8-openid.mod +++ b/jetty-ee8/jetty-ee8-openid/src/main/config/modules/ee8-openid.mod @@ -5,6 +5,7 @@ Adds OpenId Connect authentication to the server. [depend] ee8-security +openid client [lib] diff --git a/jetty-ee8/jetty-ee8-security/src/main/config/modules/ee8-security.mod b/jetty-ee8/jetty-ee8-security/src/main/config/modules/ee8-security.mod index 51d52c74d83c..c471df388ba6 100644 --- a/jetty-ee8/jetty-ee8-security/src/main/config/modules/ee8-security.mod +++ b/jetty-ee8/jetty-ee8-security/src/main/config/modules/ee8-security.mod @@ -8,6 +8,7 @@ ee8 [depend] server +security ee8-servlet [lib] diff --git a/jetty-ee8/pom.xml b/jetty-ee8/pom.xml index 304831cf0d48..ad3c8b45b48c 100644 --- a/jetty-ee8/pom.xml +++ b/jetty-ee8/pom.xml @@ -34,7 +34,6 @@ jetty-ee8-servlet jetty-ee8-servlets jetty-ee8-webapp - jetty-ee8-jaas jetty-ee8-plus jetty-ee8-jndi jetty-ee8-maven-plugin @@ -277,11 +276,6 @@ jetty-ee8-quickstart ${project.version} - - org.eclipse.jetty.ee8 - jetty-ee8-jaas - ${project.version} - org.eclipse.jetty.ee8 jetty-ee8-nested diff --git a/jetty-ee9/jetty-ee9-annotations/src/main/java/org/eclipse/jetty/ee9/annotations/ServletSecurityAnnotationHandler.java b/jetty-ee9/jetty-ee9-annotations/src/main/java/org/eclipse/jetty/ee9/annotations/ServletSecurityAnnotationHandler.java index 877d8d86d1b3..53af679d8aac 100644 --- a/jetty-ee9/jetty-ee9-annotations/src/main/java/org/eclipse/jetty/ee9/annotations/ServletSecurityAnnotationHandler.java +++ b/jetty-ee9/jetty-ee9-annotations/src/main/java/org/eclipse/jetty/ee9/annotations/ServletSecurityAnnotationHandler.java @@ -21,13 +21,13 @@ import jakarta.servlet.annotation.ServletSecurity.EmptyRoleSemantic; import jakarta.servlet.annotation.ServletSecurity.TransportGuarantee; import org.eclipse.jetty.ee9.annotations.AnnotationIntrospector.AbstractIntrospectableAnnotationHandler; +import org.eclipse.jetty.ee9.nested.ServletConstraint; import org.eclipse.jetty.ee9.security.ConstraintAware; import org.eclipse.jetty.ee9.security.ConstraintMapping; import org.eclipse.jetty.ee9.security.ConstraintSecurityHandler; import org.eclipse.jetty.ee9.servlet.ServletHolder; import org.eclipse.jetty.ee9.servlet.ServletMapping; import org.eclipse.jetty.ee9.webapp.WebAppContext; -import org.eclipse.jetty.util.security.Constraint; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -117,7 +117,7 @@ public void doHandle(Class clazz) * @param transport the transport guarantee * @return the constraint */ - protected Constraint makeConstraint(Class servlet, String[] rolesAllowed, EmptyRoleSemantic permitOrDeny, TransportGuarantee transport) + protected ServletConstraint makeConstraint(Class servlet, String[] rolesAllowed, EmptyRoleSemantic permitOrDeny, TransportGuarantee transport) { return ConstraintSecurityHandler.createConstraint(servlet.getName(), rolesAllowed, permitOrDeny, transport); } diff --git a/jetty-ee9/jetty-ee9-annotations/src/test/java/org/eclipse/jetty/ee9/annotations/TestSecurityAnnotationConversions.java b/jetty-ee9/jetty-ee9-annotations/src/test/java/org/eclipse/jetty/ee9/annotations/TestSecurityAnnotationConversions.java index de4ff4f10f3f..938c8a077f6c 100644 --- a/jetty-ee9/jetty-ee9-annotations/src/test/java/org/eclipse/jetty/ee9/annotations/TestSecurityAnnotationConversions.java +++ b/jetty-ee9/jetty-ee9-annotations/src/test/java/org/eclipse/jetty/ee9/annotations/TestSecurityAnnotationConversions.java @@ -22,13 +22,13 @@ import jakarta.servlet.annotation.ServletSecurity.EmptyRoleSemantic; import jakarta.servlet.annotation.ServletSecurity.TransportGuarantee; import jakarta.servlet.http.HttpServlet; +import org.eclipse.jetty.ee9.nested.ServletConstraint; import org.eclipse.jetty.ee9.security.ConstraintAware; import org.eclipse.jetty.ee9.security.ConstraintMapping; import org.eclipse.jetty.ee9.security.ConstraintSecurityHandler; import org.eclipse.jetty.ee9.servlet.ServletHolder; import org.eclipse.jetty.ee9.servlet.ServletMapping; import org.eclipse.jetty.ee9.webapp.WebAppContext; -import org.eclipse.jetty.util.security.Constraint; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -98,9 +98,9 @@ public void testDenyAllOnClass() throws Exception //set up the expected outcomes: //1 ConstraintMapping per ServletMapping pathSpec - Constraint expectedConstraint = new Constraint(); + ServletConstraint expectedConstraint = new ServletConstraint(); expectedConstraint.setAuthenticate(true); - expectedConstraint.setDataConstraint(Constraint.DC_NONE); + expectedConstraint.setDataConstraint(ServletConstraint.DC_NONE); ConstraintMapping[] expectedMappings = new ConstraintMapping[2]; @@ -155,10 +155,10 @@ public void testRolesAllowedWithTransportGuarantee() throws Exception //set up the expected outcomes:compareResults //1 ConstraintMapping per ServletMapping - Constraint expectedConstraint = new Constraint(); + ServletConstraint expectedConstraint = new ServletConstraint(); expectedConstraint.setAuthenticate(true); expectedConstraint.setRoles(new String[]{"tom", "dick", "harry"}); - expectedConstraint.setDataConstraint(Constraint.DC_CONFIDENTIAL); + expectedConstraint.setDataConstraint(ServletConstraint.DC_CONFIDENTIAL); ConstraintMapping[] expectedMappings = new ConstraintMapping[2]; expectedMappings[0] = new ConstraintMapping(); @@ -185,15 +185,15 @@ public void testMethodAnnotation() throws Exception //set up the expected outcomes: - a Constraint for the RolesAllowed on the class //with userdata constraint of DC_CONFIDENTIAL //and mappings for each of the pathSpecs - Constraint expectedConstraint1 = new Constraint(); + ServletConstraint expectedConstraint1 = new ServletConstraint(); expectedConstraint1.setAuthenticate(true); expectedConstraint1.setRoles(new String[]{"tom", "dick", "harry"}); - expectedConstraint1.setDataConstraint(Constraint.DC_CONFIDENTIAL); + expectedConstraint1.setDataConstraint(ServletConstraint.DC_CONFIDENTIAL); //a Constraint for the PermitAll on the doGet method with a userdata //constraint of DC_CONFIDENTIAL inherited from the class - Constraint expectedConstraint2 = new Constraint(); - expectedConstraint2.setDataConstraint(Constraint.DC_NONE); + ServletConstraint expectedConstraint2 = new ServletConstraint(); + expectedConstraint2.setDataConstraint(ServletConstraint.DC_NONE); ConstraintMapping[] expectedMappings = new ConstraintMapping[4]; expectedMappings[0] = new ConstraintMapping(); @@ -237,15 +237,15 @@ public void testMethodAnnotation2() throws Exception //set up the expected outcomes: - a Constraint for the RolesAllowed on the class //with userdata constraint of DC_CONFIDENTIAL //and mappings for each of the pathSpecs - Constraint expectedConstraint1 = new Constraint(); + ServletConstraint expectedConstraint1 = new ServletConstraint(); expectedConstraint1.setAuthenticate(true); expectedConstraint1.setRoles(new String[]{"tom", "dick", "harry"}); - expectedConstraint1.setDataConstraint(Constraint.DC_CONFIDENTIAL); + expectedConstraint1.setDataConstraint(ServletConstraint.DC_CONFIDENTIAL); //a Constraint for the Permit on the GET method with a userdata //constraint of DC_CONFIDENTIAL - Constraint expectedConstraint2 = new Constraint(); - expectedConstraint2.setDataConstraint(Constraint.DC_CONFIDENTIAL); + ServletConstraint expectedConstraint2 = new ServletConstraint(); + expectedConstraint2.setDataConstraint(ServletConstraint.DC_CONFIDENTIAL); ConstraintMapping[] expectedMappings = new ConstraintMapping[4]; expectedMappings[0] = new ConstraintMapping(); diff --git a/jetty-ee9/jetty-ee9-bom/pom.xml b/jetty-ee9/jetty-ee9-bom/pom.xml index cbf71db4131f..249583a43966 100644 --- a/jetty-ee9/jetty-ee9-bom/pom.xml +++ b/jetty-ee9/jetty-ee9-bom/pom.xml @@ -60,11 +60,6 @@ jetty-ee9-glassfish-jstl 12.0.0-SNAPSHOT - - org.eclipse.jetty.ee9 - jetty-ee9-jaas - 12.0.0-SNAPSHOT - org.eclipse.jetty.ee9 jetty-ee9-jaspi diff --git a/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/pom.xml b/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/pom.xml index 360bdf2e3b32..035f374e8693 100644 --- a/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/pom.xml +++ b/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/pom.xml @@ -90,10 +90,6 @@ org.eclipse.jetty.ee9 jetty-ee9-proxy - - org.eclipse.jetty.ee9 - jetty-ee9-jaas - org.eclipse.jetty.ee9 jetty-ee9-plus diff --git a/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/OneWebAppWithJsp.java b/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/OneWebAppWithJsp.java index f538e86933e9..6d07e858459d 100644 --- a/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/OneWebAppWithJsp.java +++ b/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/OneWebAppWithJsp.java @@ -17,8 +17,8 @@ import java.nio.file.Path; import org.eclipse.jetty.ee9.annotations.AnnotationConfiguration; -import org.eclipse.jetty.ee9.security.HashLoginService; import org.eclipse.jetty.ee9.webapp.WebAppContext; +import org.eclipse.jetty.security.HashLoginService; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.util.resource.Resource; diff --git a/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/SecuredHelloHandler.java b/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/SecuredHelloHandler.java index f5236afccae9..9db9af225445 100644 --- a/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/SecuredHelloHandler.java +++ b/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/SecuredHelloHandler.java @@ -14,20 +14,19 @@ package org.eclipse.jetty.ee9.demos; import java.io.FileNotFoundException; -import java.net.URL; import java.util.Collections; +import org.eclipse.jetty.ee9.nested.ServletConstraint; import org.eclipse.jetty.ee9.security.ConstraintMapping; import org.eclipse.jetty.ee9.security.ConstraintSecurityHandler; -import org.eclipse.jetty.ee9.security.HashLoginService; -import org.eclipse.jetty.ee9.security.LoginService; import org.eclipse.jetty.ee9.security.authentication.BasicAuthenticator; import org.eclipse.jetty.ee9.servlet.ServletContextHandler; import org.eclipse.jetty.ee9.servlet.ServletHolder; +import org.eclipse.jetty.security.HashLoginService; +import org.eclipse.jetty.security.LoginService; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.util.resource.Resource; import org.eclipse.jetty.util.resource.ResourceFactory; -import org.eclipse.jetty.util.security.Constraint; public class SecuredHelloHandler { @@ -70,7 +69,7 @@ public static Server createServer(int port) throws FileNotFoundException // This constraint requires authentication and in addition that an // authenticated user be a member of a given set of roles for // authorization purposes. - Constraint constraint = new Constraint(); + ServletConstraint constraint = new ServletConstraint(); constraint.setName("auth"); constraint.setAuthenticate(true); constraint.setRoles(new String[]{"user", "admin"}); diff --git a/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/ServerWithAnnotations.java b/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/ServerWithAnnotations.java index a0550bddc6d1..f8041369f3ee 100644 --- a/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/ServerWithAnnotations.java +++ b/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/ServerWithAnnotations.java @@ -14,7 +14,6 @@ package org.eclipse.jetty.ee9.demos; import java.io.FileNotFoundException; -import java.net.URL; import java.nio.file.Path; import javax.naming.NamingException; @@ -25,10 +24,9 @@ import org.eclipse.jetty.ee9.plus.jndi.Transaction; import org.eclipse.jetty.ee9.plus.webapp.EnvConfiguration; import org.eclipse.jetty.ee9.plus.webapp.PlusConfiguration; -import org.eclipse.jetty.ee9.security.HashLoginService; import org.eclipse.jetty.ee9.webapp.WebAppContext; +import org.eclipse.jetty.security.HashLoginService; import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.util.resource.ResourceFactory; /** * ServerWithAnnotations diff --git a/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jaas-webapp/pom.xml b/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jaas-webapp/pom.xml index 9f7bec16b422..c4a44804aee2 100644 --- a/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jaas-webapp/pom.xml +++ b/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jaas-webapp/pom.xml @@ -28,7 +28,7 @@ /test-jaas - + Test JAAS Realm ee9-xyz diff --git a/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jaas-webapp/src/main/config/modules/demo.d/ee9-demo-jaas.xml b/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jaas-webapp/src/main/config/modules/demo.d/ee9-demo-jaas.xml index 5f76f45841e3..4ab5f492cd0d 100644 --- a/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jaas-webapp/src/main/config/modules/demo.d/ee9-demo-jaas.xml +++ b/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jaas-webapp/src/main/config/modules/demo.d/ee9-demo-jaas.xml @@ -14,9 +14,9 @@ - + Demo JAAS Realm - ee9-xyz + demo diff --git a/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jaas-webapp/src/main/config/modules/demo.d/ee9-demo-login.properties b/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jaas-webapp/src/main/config/modules/demo.d/ee9-demo-login.properties deleted file mode 100644 index 61e32037316b..000000000000 --- a/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jaas-webapp/src/main/config/modules/demo.d/ee9-demo-login.properties +++ /dev/null @@ -1 +0,0 @@ -me=me,me,roleA diff --git a/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jaas-webapp/src/main/config/modules/ee9-demo-jaas.mod b/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jaas-webapp/src/main/config/modules/ee9-demo-jaas.mod index 9492605a4a6f..b1a8ffb985cd 100644 --- a/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jaas-webapp/src/main/config/modules/ee9-demo-jaas.mod +++ b/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jaas-webapp/src/main/config/modules/ee9-demo-jaas.mod @@ -1,7 +1,7 @@ # DO NOT EDIT - See: https://www.eclipse.org/jetty/documentation/current/startup-modules.html [description] -Demo Spec webapp +Demo EE9 JAAS webapp [environment] ee9 @@ -13,7 +13,7 @@ webapp [depends] demo-jaas ee9-deploy -ee9-jaas +jaas jdbc ee9-jsp ee9-annotations @@ -22,9 +22,4 @@ ext [files] basehome:modules/demo.d/ee9-demo-jaas.xml|webapps/ee9-demo-jaas.xml basehome:modules/demo.d/ee9-demo-jaas.properties|webapps/ee9-demo-jaas.properties -basehome:modules/demo.d/ee9-demo-login.properties|etc/ee9-demo-login.properties maven://org.eclipse.jetty.ee9.demos/jetty-ee9-demo-jaas-webapp/${jetty.version}/war|webapps/ee9-demo-jaas.war - -[ini] -# Enable security via jaas, and configure it -jetty.jaas.login.conf?=etc/demo-login.conf diff --git a/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jaas-webapp/src/main/etc/ee9-demo-login.conf b/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jaas-webapp/src/main/etc/ee9-demo-login.conf deleted file mode 100644 index 99fd28824190..000000000000 --- a/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jaas-webapp/src/main/etc/ee9-demo-login.conf +++ /dev/null @@ -1,5 +0,0 @@ -ee9-xyz { -org.eclipse.jetty.ee9.jaas.spi.PropertyFileLoginModule required -debug="true" -file="${jetty.base}/etc/ee9-demo-login.properties"; -}; diff --git a/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jetty-webapp/pom.xml b/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jetty-webapp/pom.xml index 01e1c3a0169d..5033a9f95dd3 100644 --- a/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jetty-webapp/pom.xml +++ b/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jetty-webapp/pom.xml @@ -115,7 +115,7 @@ ${project.build.directory}/work - + Test Realm src/test/resources/test-realm.properties diff --git a/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jetty-webapp/src/main/assembly/embedded-jetty-web-for-webbundle.xml b/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jetty-webapp/src/main/assembly/embedded-jetty-web-for-webbundle.xml index 3db8c129e553..6a7eaa3f6678 100644 --- a/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jetty-webapp/src/main/assembly/embedded-jetty-web-for-webbundle.xml +++ b/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-jetty-webapp/src/main/assembly/embedded-jetty-web-for-webbundle.xml @@ -49,10 +49,10 @@ detected. - + Test Realm - /ee9-demo-realm.properties + /demo-realm.properties - - org.apache.maven.plugins - maven-source-plugin - - - org.apache.maven.plugins - maven-surefire-plugin - - false - false - --add-opens java.base/sun.security.x509=ALL-UNNAMED --add-opens java.base/sun.security.util=ALL-UNNAMED - - - - - - - - org.eclipse.jetty.ee9 - jetty-ee9-security - - - - org.slf4j - slf4j-api - - - org.eclipse.jetty - jetty-slf4j-impl - test - - - org.eclipse.jetty.toolchain - jetty-test-helper - test - - - org.apache.directory.server - apacheds-test-framework - ${apacheds.version} - test - - - junit - junit - - - - org.apache.directory.shared - shared-ldap-schema - - - org.apache.directory.api - api-ldap-schema-data - - - - - org.apache.directory.server - apacheds-server-integ - ${apacheds.version} - test - - - - org.apache.directory.shared - shared-ldap-schema - - - org.apache.directory.api - api-ldap-schema-data - - - - - org.apache.directory.server - apacheds-core-integ - ${apacheds.version} - test - - - - org.apache.directory.shared - shared-ldap-schema - - - org.apache.directory.api - api-ldap-schema-data - - - - - org.apache.directory.api - api-ldap-schema-data - ${apache.directory.api.version} - test - - - org.apache.directory.api - api-ldap-model - ${apache.directory.api.version} - - - org.apache.directory.api - api-util - ${apache.directory.api.version} - - - org.apache.directory.api - api-asn1-api - ${apache.directory.api.version} - - - org.apache.mina - mina-core - ${mina.core.version} - - - - org.junit.vintage - junit-vintage-engine - ${junit.version} - test - - - diff --git a/jetty-ee9/jetty-ee9-jaas/src/main/config/etc/jetty-ee9-jaas.xml b/jetty-ee9/jetty-ee9-jaas/src/main/config/etc/jetty-ee9-jaas.xml deleted file mode 100644 index 881b23292a05..000000000000 --- a/jetty-ee9/jetty-ee9-jaas/src/main/config/etc/jetty-ee9-jaas.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - java.security.auth.login.config - - - - - - - - - diff --git a/jetty-ee9/jetty-ee9-jaas/src/main/config/modules/ee9-jaas.mod b/jetty-ee9/jetty-ee9-jaas/src/main/config/modules/ee9-jaas.mod deleted file mode 100644 index f5cf46a7b840..000000000000 --- a/jetty-ee9/jetty-ee9-jaas/src/main/config/modules/ee9-jaas.mod +++ /dev/null @@ -1,21 +0,0 @@ -# DO NOT EDIT - See: https://www.eclipse.org/jetty/documentation/current/startup-modules.html - -[description] -Enables JAAS for deployed web applications. - -[environment] -ee9 - -[depend] -server - -[lib] -lib/jetty-ee9-jaas-${jetty.version}.jar - -[xml] -etc/jetty-ee9-jaas.xml - -[ini-template] -## The file location (relative to $jetty.base) for the -## JAAS "java.security.auth.login.config" system property -# jetty.jaas.login.conf=etc/login.conf diff --git a/jetty-ee9/jetty-ee9-jaas/src/main/java/module-info.java b/jetty-ee9/jetty-ee9-jaas/src/main/java/module-info.java deleted file mode 100644 index 0ba2dee06c17..000000000000 --- a/jetty-ee9/jetty-ee9-jaas/src/main/java/module-info.java +++ /dev/null @@ -1,27 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -module org.eclipse.jetty.ee9.jaas -{ - requires org.slf4j; - requires org.eclipse.jetty.util; - - requires transitive org.eclipse.jetty.ee9.security; - - // Only required if using JDBCLoginModule. - requires static java.sql; - - exports org.eclipse.jetty.ee9.jaas; - exports org.eclipse.jetty.ee9.jaas.callback; - exports org.eclipse.jetty.ee9.jaas.spi; -} diff --git a/jetty-ee9/jetty-ee9-jaas/src/main/java/org/eclipse/jetty/ee9/jaas/JAASPrincipal.java b/jetty-ee9/jetty-ee9-jaas/src/main/java/org/eclipse/jetty/ee9/jaas/JAASPrincipal.java deleted file mode 100644 index 0bd5ae9a038d..000000000000 --- a/jetty-ee9/jetty-ee9-jaas/src/main/java/org/eclipse/jetty/ee9/jaas/JAASPrincipal.java +++ /dev/null @@ -1,63 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee9.jaas; - -import java.io.Serializable; -import java.security.Principal; - -/** - * JAASPrincipal - *

- * Impl class of Principal interface. - */ -public class JAASPrincipal implements Principal, Serializable -{ - private static final long serialVersionUID = -5538962177019315479L; - - private final String _name; - - public JAASPrincipal(String userName) - { - this._name = userName; - } - - @Override - public boolean equals(Object p) - { - if (!(p instanceof JAASPrincipal)) - return false; - - return getName().equals(((JAASPrincipal)p).getName()); - } - - @Override - public int hashCode() - { - return getName().hashCode(); - } - - @Override - public String getName() - { - return this._name; - } - - @Override - public String toString() - { - return getName(); - } -} - - diff --git a/jetty-ee9/jetty-ee9-jaas/src/main/java/org/eclipse/jetty/ee9/jaas/callback/DefaultCallbackHandler.java b/jetty-ee9/jetty-ee9-jaas/src/main/java/org/eclipse/jetty/ee9/jaas/callback/DefaultCallbackHandler.java deleted file mode 100644 index a444cab05034..000000000000 --- a/jetty-ee9/jetty-ee9-jaas/src/main/java/org/eclipse/jetty/ee9/jaas/callback/DefaultCallbackHandler.java +++ /dev/null @@ -1,74 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee9.jaas.callback; - -import java.io.IOException; -import java.util.Arrays; -import javax.security.auth.callback.Callback; -import javax.security.auth.callback.NameCallback; -import javax.security.auth.callback.PasswordCallback; -import javax.security.auth.callback.UnsupportedCallbackException; - -import jakarta.servlet.http.HttpServletRequest; - -/** - * DefaultCallbackHandler - * - * An implementation of the JAAS CallbackHandler. Users can provide - * their own implementation instead and set the name of its class on the JAASLoginService. - */ -public class DefaultCallbackHandler extends AbstractCallbackHandler -{ - private HttpServletRequest _request; - - public void setRequest(HttpServletRequest request) - { - _request = request; - } - - @Override - public void handle(Callback[] callbacks) - throws IOException, UnsupportedCallbackException - { - for (Callback callback : callbacks) - { - if (callback instanceof NameCallback) - { - ((NameCallback)callback).setName(getUserName()); - } - else if (callback instanceof ObjectCallback) - { - ((ObjectCallback)callback).setObject(getCredential()); - } - else if (callback instanceof PasswordCallback) - { - ((PasswordCallback)callback).setPassword(getCredential().toString().toCharArray()); - } - else if (callback instanceof RequestParameterCallback) - { - if (_request != null) - { - RequestParameterCallback rpc = (RequestParameterCallback)callback; - rpc.setParameterValues(Arrays.asList(_request.getParameterValues(rpc.getParameterName()))); - } - } - else if (callback instanceof ServletRequestCallback) - { - ((ServletRequestCallback)callback).setRequest(_request); - } - else - throw new UnsupportedCallbackException(callback); - } - } -} diff --git a/jetty-ee9/jetty-ee9-jaas/src/main/java/org/eclipse/jetty/ee9/jaas/callback/ObjectCallback.java b/jetty-ee9/jetty-ee9-jaas/src/main/java/org/eclipse/jetty/ee9/jaas/callback/ObjectCallback.java deleted file mode 100644 index 17a096b3ab3a..000000000000 --- a/jetty-ee9/jetty-ee9-jaas/src/main/java/org/eclipse/jetty/ee9/jaas/callback/ObjectCallback.java +++ /dev/null @@ -1,44 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee9.jaas.callback; - -import javax.security.auth.callback.Callback; - -/** - * ObjectCallback - *

- * Can be used as a LoginModule Callback to - * obtain a user's credential as an Object, rather than - * a char[], to which some credentials may not be able - * to be converted - */ -public class ObjectCallback implements Callback -{ - protected Object _object; - - public void setObject(Object o) - { - _object = o; - } - - public Object getObject() - { - return _object; - } - - public void clearObject() - { - _object = null; - } -} diff --git a/jetty-ee9/jetty-ee9-jaas/src/main/java/org/eclipse/jetty/ee9/jaas/callback/RequestParameterCallback.java b/jetty-ee9/jetty-ee9-jaas/src/main/java/org/eclipse/jetty/ee9/jaas/callback/RequestParameterCallback.java deleted file mode 100644 index 0ac9748ccf17..000000000000 --- a/jetty-ee9/jetty-ee9-jaas/src/main/java/org/eclipse/jetty/ee9/jaas/callback/RequestParameterCallback.java +++ /dev/null @@ -1,50 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee9.jaas.callback; - -import java.util.List; -import javax.security.auth.callback.Callback; - -/** - * RequestParameterCallback - *

- * Allows a JAAS callback handler to access any parameter from the j_security_check FORM. - * This means that a LoginModule can access form fields other than the j_username and j_password - * fields, and use it, for example, to authenticate a user. - */ -public class RequestParameterCallback implements Callback -{ - private String _paramName; - private List _paramValues; - - public void setParameterName(String name) - { - _paramName = name; - } - - public String getParameterName() - { - return _paramName; - } - - public void setParameterValues(List values) - { - _paramValues = values; - } - - public List getParameterValues() - { - return _paramValues; - } -} diff --git a/jetty-ee9/jetty-ee9-jaas/src/main/java/org/eclipse/jetty/ee9/jaas/package-info.java b/jetty-ee9/jetty-ee9-jaas/src/main/java/org/eclipse/jetty/ee9/jaas/package-info.java deleted file mode 100644 index 75b115223fd1..000000000000 --- a/jetty-ee9/jetty-ee9-jaas/src/main/java/org/eclipse/jetty/ee9/jaas/package-info.java +++ /dev/null @@ -1,18 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -/** - * Jetty Jaas : Support for Jaas - */ -package org.eclipse.jetty.ee9.jaas; - diff --git a/jetty-ee9/jetty-ee9-jaas/src/main/java/org/eclipse/jetty/ee9/jaas/spi/JDBCLoginModule.java b/jetty-ee9/jetty-ee9-jaas/src/main/java/org/eclipse/jetty/ee9/jaas/spi/JDBCLoginModule.java deleted file mode 100644 index 76316f5bf4a6..000000000000 --- a/jetty-ee9/jetty-ee9-jaas/src/main/java/org/eclipse/jetty/ee9/jaas/spi/JDBCLoginModule.java +++ /dev/null @@ -1,102 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee9.jaas.spi; - -import java.sql.Connection; -import java.sql.DriverManager; -import java.util.Map; -import javax.security.auth.Subject; -import javax.security.auth.callback.CallbackHandler; - -import org.eclipse.jetty.util.Loader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - *

JAAS LoginModule to retrieve user information from - * a database and authenticate the user.

- *

Notes

- *

This version uses plain old JDBC connections NOT DataSources.

- */ -public class JDBCLoginModule extends AbstractDatabaseLoginModule -{ - private static final Logger LOG = LoggerFactory.getLogger(JDBCLoginModule.class); - - private String dbDriver; - private String dbUrl; - private String dbUserName; - private String dbPassword; - - /** - * Get a connection from the DriverManager - * - * @return the connection for this datasource - * @throws Exception if unable to get the connection - */ - @Override - public Connection getConnection() - throws Exception - { - if (!((dbDriver != null) && (dbUrl != null))) - throw new IllegalStateException("Database connection information not configured"); - - if (LOG.isDebugEnabled()) - LOG.debug("Connecting using dbDriver={} dbUserName={}, dbPassword={}", dbDriver, dbUserName, dbUrl); - - return DriverManager.getConnection(dbUrl, - dbUserName, - dbPassword); - } - - /** - * Init LoginModule. - *

- * Called once by JAAS after new instance created. - * - * @param subject the subject - * @param callbackHandler the callback handler - * @param sharedState the shared state map - * @param options the options map - */ - @Override - public void initialize(Subject subject, - CallbackHandler callbackHandler, - Map sharedState, - Map options) - { - try - { - super.initialize(subject, callbackHandler, sharedState, options); - - //get the jdbc username/password, jdbc url out of the options - dbDriver = (String)options.get("dbDriver"); - dbUrl = (String)options.get("dbUrl"); - dbUserName = (String)options.get("dbUserName"); - dbPassword = (String)options.get("dbPassword"); - - if (dbUserName == null) - dbUserName = ""; - - if (dbPassword == null) - dbPassword = ""; - - if (dbDriver != null) - Loader.loadClass(dbDriver).getDeclaredConstructor().newInstance(); - } - catch (Exception e) - { - throw new IllegalStateException(e.toString()); - } - } -} diff --git a/jetty-ee9/jetty-ee9-jaas/src/test/java/org/eclipse/jetty/ee9/jaas/JAASLdapLoginServiceTest.java b/jetty-ee9/jetty-ee9-jaas/src/test/java/org/eclipse/jetty/ee9/jaas/JAASLdapLoginServiceTest.java deleted file mode 100644 index 32c574d9dd5f..000000000000 --- a/jetty-ee9/jetty-ee9-jaas/src/test/java/org/eclipse/jetty/ee9/jaas/JAASLdapLoginServiceTest.java +++ /dev/null @@ -1,217 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee9.jaas; - -import org.junit.jupiter.api.Disabled; - -/** - * JAASLdapLoginServiceTest - */ -//@RunWith(FrameworkRunner.class) -//@CreateLdapServer(transports = {@CreateTransport(protocol = "LDAP")}) -//@CreateDS(allowAnonAccess = false, partitions = { -// @CreatePartition(name = "Users Partition", suffix = "ou=people,dc=jetty,dc=org"), -// @CreatePartition(name = "Groups Partition", suffix = "ou=groups,dc=jetty,dc=org") -//}) -//@ApplyLdifs({ -// // Entry 1 -// "dn: ou=people,dc=jetty,dc=org", -// "objectClass: organizationalunit", -// "objectClass: top", -// "ou: people", -// // Entry # 2 -// "dn:uid=someone,ou=people,dc=jetty,dc=org", -// "objectClass: inetOrgPerson", -// "cn: someone", -// "sn: sn test", -// "userPassword: complicatedpassword", -// // Entry # 3 -// "dn:uid=someoneelse,ou=people,dc=jetty,dc=org", -// "objectClass: inetOrgPerson", -// "cn: someoneelse", -// "sn: sn test", -// "userPassword: verycomplicatedpassword", -// // Entry 4 -// "dn: ou=groups,dc=jetty,dc=org", -// "objectClass: organizationalunit", -// "objectClass: top", -// "ou: groups", -// // Entry 5 -// "dn: ou=subdir,ou=people,dc=jetty,dc=org", -// "objectClass: organizationalunit", -// "objectClass: top", -// "ou: subdir", -// // Entry # 6 -// "dn:uid=uniqueuser,ou=subdir,ou=people,dc=jetty,dc=org", -// "objectClass: inetOrgPerson", -// "cn: uniqueuser", -// "sn: unique user", -// "userPassword: hello123", -// // Entry # 7 -// "dn:uid=ambiguousone,ou=people,dc=jetty,dc=org", -// "objectClass: inetOrgPerson", -// "cn: ambiguous1", -// "sn: ambiguous user", -// "userPassword: foobar", -// // Entry # 8 -// "dn:uid=ambiguousone,ou=subdir,ou=people,dc=jetty,dc=org", -// "objectClass: inetOrgPerson", -// "cn: ambiguous2", -// "sn: ambiguous subdir user", -// "userPassword: barfoo", -// // Entry 9 -// "dn: cn=developers,ou=groups,dc=jetty,dc=org", -// "objectClass: groupOfUniqueNames", -// "objectClass: top", -// "ou: groups", -// "description: People who try to build good software", -// "uniquemember: uid=someone,ou=people,dc=jetty,dc=org", -// "uniquemember: uid=uniqueuser,ou=subdir,ou=people,dc=jetty,dc=org", -// "cn: developers", -// // Entry 10 -// "dn: cn=admin,ou=groups,dc=jetty,dc=org", -// "objectClass: groupOfUniqueNames", -// "objectClass: top", -// "ou: groups", -// "description: People who try to run software build by developers", -// "uniquemember: uid=someone,ou=people,dc=jetty,dc=org", -// "uniquemember: uid=someoneelse,ou=people,dc=jetty,dc=org", -// "uniquemember: uid=uniqueuser,ou=subdir,ou=people,dc=jetty,dc=org", -// "cn: admin" -//}) -@Disabled // TODO -public class JAASLdapLoginServiceTest -{ - /* TODO need to test without mock request - private static LdapServer _ldapServer; - - private JAASLoginService jaasLoginService(String name) - { - JAASLoginService ls = new JAASLoginService("foo"); - ls.setCallbackHandlerClass("org.eclipse.jetty.ee9.jaas.callback.DefaultCallbackHandler"); - ls.setIdentityService(new DefaultIdentityService()); - ls.setConfiguration(new TestConfiguration(true)); - return ls; - } - - private UserIdentity doLogin(String username, String password) throws Exception - { - JAASLoginService ls = jaasLoginService("foo"); - Request request = new Request(null, null); - return ls.login(username, password, request); - } - - public static LdapServer getLdapServer() - { - return _ldapServer; - } - - public static void setLdapServer(LdapServer ldapServer) - { - _ldapServer = ldapServer; - } - - public static class TestConfiguration extends Configuration - { - private boolean forceBindingLogin; - - public TestConfiguration(boolean forceBindingLogin) - { - this.forceBindingLogin = forceBindingLogin; - } - - @Override - public AppConfigurationEntry[] getAppConfigurationEntry(String name) - { - Map options = new HashMap<>(); - options.put("hostname", "localhost"); - options.put("port", Integer.toString(_ldapServer.getTransports()[0].getPort())); - options.put("contextFactory", "com.sun.jndi.ldap.LdapCtxFactory"); - options.put("bindDn", "uid=admin,ou=system"); - options.put("bindPassword", "secret"); - options.put("userBaseDn", "ou=people,dc=jetty,dc=org"); - options.put("roleBaseDn", "ou=groups,dc=jetty,dc=org"); - options.put("roleNameAttribute", "cn"); - options.put("forceBindingLogin", Boolean.toString(forceBindingLogin)); - AppConfigurationEntry entry = new AppConfigurationEntry(LdapLoginModule.class.getCanonicalName(), LoginModuleControlFlag.REQUIRED, options); - - return new AppConfigurationEntry[]{entry}; - } - } - - @Test - public void testLdapUserIdentity() throws Exception - { - JAASLoginService ls = new JAASLoginService("foo"); - ls.setCallbackHandlerClass("org.eclipse.jetty.ee9.jaas.callback.DefaultCallbackHandler"); - ls.setIdentityService(new DefaultIdentityService()); - ls.setConfiguration(new TestConfiguration(false)); - Request request = new Request(null, null); - UserIdentity userIdentity = ls.login("someone", "complicatedpassword", request); - assertNotNull(userIdentity); - assertTrue(userIdentity.isUserInRole("developers", null)); - assertTrue(userIdentity.isUserInRole("admin", null)); - assertFalse(userIdentity.isUserInRole("blabla", null)); - - userIdentity = ls.login("someoneelse", "verycomplicatedpassword", request); - assertNotNull(userIdentity); - assertFalse(userIdentity.isUserInRole("developers", null)); - assertTrue(userIdentity.isUserInRole("admin", null)); - assertFalse(userIdentity.isUserInRole("blabla", null)); - } - - @Test - public void testLdapUserIdentityBindingLogin() throws Exception - { - JAASLoginService ls = new JAASLoginService("foo"); - ls.setCallbackHandlerClass("org.eclipse.jetty.ee9.jaas.callback.DefaultCallbackHandler"); - ls.setIdentityService(new DefaultIdentityService()); - ls.setConfiguration(new TestConfiguration(true)); - Request request = new Request(null, null); - UserIdentity userIdentity = ls.login("someone", "complicatedpassword", request); - assertNotNull(userIdentity); - assertTrue(userIdentity.isUserInRole("developers", null)); - assertTrue(userIdentity.isUserInRole("admin", null)); - assertFalse(userIdentity.isUserInRole("blabla", null)); - - userIdentity = ls.login("someone", "wrongpassword", request); - assertNull(userIdentity); - } - - @Test - public void testLdapBindingSubdirUniqueUserName() throws Exception - { - UserIdentity userIdentity = doLogin("uniqueuser", "hello123"); - assertNotNull(userIdentity); - assertTrue(userIdentity.isUserInRole("developers", null)); - assertTrue(userIdentity.isUserInRole("admin", null)); - assertFalse(userIdentity.isUserInRole("blabla", null)); - } - - @Test - public void testLdapBindingAmbiguousUserName() throws Exception - { - UserIdentity userIdentity = doLogin("ambiguousone", "foobar"); - assertNull(userIdentity); - } - - @Test - public void testLdapBindingSubdirAmbiguousUserName() throws Exception - { - UserIdentity userIdentity = doLogin("ambiguousone", "barfoo"); - assertNull(userIdentity); - } - - */ -} diff --git a/jetty-ee9/jetty-ee9-jaas/src/test/java/org/eclipse/jetty/ee9/jaas/JAASLoginServiceTest.java b/jetty-ee9/jetty-ee9-jaas/src/test/java/org/eclipse/jetty/ee9/jaas/JAASLoginServiceTest.java deleted file mode 100644 index 3e267645858b..000000000000 --- a/jetty-ee9/jetty-ee9-jaas/src/test/java/org/eclipse/jetty/ee9/jaas/JAASLoginServiceTest.java +++ /dev/null @@ -1,161 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee9.jaas; - -import org.junit.jupiter.api.Disabled; - -/** - * JAASLoginServiceTest - */ -@Disabled // TODO -public class JAASLoginServiceTest -{ - /* TODO need to test without mock request - interface SomeRole - { - - } - - public class TestRole implements Principal, SomeRole - { - String _name; - - public TestRole(String name) - { - _name = name; - } - - public String getName() - { - return _name; - } - } - - public class AnotherTestRole extends TestRole - { - public AnotherTestRole(String name) - { - super(name); - } - } - - public class NotTestRole implements Principal - { - String _name; - - public NotTestRole(String n) - { - _name = n; - } - - public String getName() - { - return _name; - } - } - - @Test - public void testServletRequestCallback() throws Exception - { - Configuration config = new Configuration() - { - @Override - public AppConfigurationEntry[] getAppConfigurationEntry(String name) - { - return new AppConfigurationEntry[] { - new AppConfigurationEntry(TestLoginModule.class.getCanonicalName(), - LoginModuleControlFlag.REQUIRED, - Collections.emptyMap()) - }; - } - }; - - //Test with the DefaultCallbackHandler - JAASLoginService ls = new JAASLoginService("foo"); - ls.setCallbackHandlerClass("org.eclipse.jetty.ee9.jaas.callback.DefaultCallbackHandler"); - ls.setIdentityService(new DefaultIdentityService()); - ls.setConfiguration(config); - Request request = new Request(null, null); - ls.login("aaardvaark", "aaa", request); - - //Test with the fallback CallbackHandler - ls = new JAASLoginService("foo"); - ls.setIdentityService(new DefaultIdentityService()); - ls.setConfiguration(config); - ls.login("aaardvaark", "aaa", request); - } - - @Test - public void testLoginServiceRoles() throws Exception - { - JAASLoginService ls = new JAASLoginService("foo"); - - //test that we always add in the DEFAULT ROLE CLASSNAME - ls.setRoleClassNames(new String[]{"arole", "brole"}); - String[] roles = ls.getRoleClassNames(); - assertEquals(3, roles.length); - assertEquals(JAASLoginService.DEFAULT_ROLE_CLASS_NAME, roles[2]); - - ls.setRoleClassNames(new String[]{}); - assertEquals(1, ls.getRoleClassNames().length); - assertEquals(JAASLoginService.DEFAULT_ROLE_CLASS_NAME, ls.getRoleClassNames()[0]); - - ls.setRoleClassNames(null); - assertEquals(1, ls.getRoleClassNames().length); - assertEquals(JAASLoginService.DEFAULT_ROLE_CLASS_NAME, ls.getRoleClassNames()[0]); - - //test a custom role class where some of the roles are subclasses of it - ls.setRoleClassNames(new String[]{TestRole.class.getName()}); - Subject subject = new Subject(); - subject.getPrincipals().add(new NotTestRole("w")); - subject.getPrincipals().add(new TestRole("x")); - subject.getPrincipals().add(new TestRole("y")); - subject.getPrincipals().add(new AnotherTestRole("z")); - - String[] groups = ls.getGroups(subject); - assertThat(Arrays.asList(groups), containsInAnyOrder("x", "y", "z")); - - //test a custom role class - ls.setRoleClassNames(new String[]{AnotherTestRole.class.getName()}); - Subject subject2 = new Subject(); - subject2.getPrincipals().add(new NotTestRole("w")); - subject2.getPrincipals().add(new TestRole("x")); - subject2.getPrincipals().add(new TestRole("y")); - subject2.getPrincipals().add(new AnotherTestRole("z")); - String[] s2groups = ls.getGroups(subject2); - assertThat(s2groups, is(notNullValue())); - assertThat(Arrays.asList(s2groups), containsInAnyOrder("z")); - - //test a custom role class that implements an interface - ls.setRoleClassNames(new String[]{SomeRole.class.getName()}); - Subject subject3 = new Subject(); - subject3.getPrincipals().add(new NotTestRole("w")); - subject3.getPrincipals().add(new TestRole("x")); - subject3.getPrincipals().add(new TestRole("y")); - subject3.getPrincipals().add(new AnotherTestRole("z")); - String[] s3groups = ls.getGroups(subject3); - assertThat(s3groups, is(notNullValue())); - assertThat(Arrays.asList(s3groups), containsInAnyOrder("x", "y", "z")); - - //test a class that doesn't match - ls.setRoleClassNames(new String[]{NotTestRole.class.getName()}); - Subject subject4 = new Subject(); - subject4.getPrincipals().add(new TestRole("x")); - subject4.getPrincipals().add(new TestRole("y")); - subject4.getPrincipals().add(new AnotherTestRole("z")); - assertEquals(0, ls.getGroups(subject4).length); - } - - */ -} diff --git a/jetty-ee9/jetty-ee9-jaas/src/test/java/org/eclipse/jetty/ee9/jaas/TestLoginModule.java b/jetty-ee9/jetty-ee9-jaas/src/test/java/org/eclipse/jetty/ee9/jaas/TestLoginModule.java deleted file mode 100644 index ccd07efe5771..000000000000 --- a/jetty-ee9/jetty-ee9-jaas/src/test/java/org/eclipse/jetty/ee9/jaas/TestLoginModule.java +++ /dev/null @@ -1,59 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee9.jaas; - -import java.util.Collections; -import java.util.List; -import javax.security.auth.callback.Callback; -import javax.security.auth.login.LoginException; - -import org.eclipse.jetty.ee9.jaas.callback.ServletRequestCallback; -import org.eclipse.jetty.ee9.jaas.spi.AbstractLoginModule; -import org.eclipse.jetty.ee9.security.UserPrincipal; -import org.eclipse.jetty.util.ArrayUtil; -import org.eclipse.jetty.util.security.Password; - -import static org.junit.jupiter.api.Assertions.assertNotNull; - -public class TestLoginModule extends AbstractLoginModule -{ - public ServletRequestCallback _callback = new ServletRequestCallback(); - - @Override - public JAASUser getUser(String username) throws Exception - { - return new JAASUser(new UserPrincipal(username, new Password("aaa"))) - { - @Override - public List doFetchRoles() throws Exception - { - return Collections.emptyList(); - } - }; - } - - @Override - public Callback[] configureCallbacks() - { - return ArrayUtil.addToArray(super.configureCallbacks(), _callback, Callback.class); - } - - @Override - public boolean login() throws LoginException - { - boolean result = super.login(); - assertNotNull(_callback.getRequest()); - return result; - } -} diff --git a/jetty-ee9/jetty-ee9-jaas/src/test/java/org/eclipse/jetty/ee9/jaas/spi/PropertyFileLoginModuleTest.java b/jetty-ee9/jetty-ee9-jaas/src/test/java/org/eclipse/jetty/ee9/jaas/spi/PropertyFileLoginModuleTest.java deleted file mode 100644 index 2ad62a2f6fc4..000000000000 --- a/jetty-ee9/jetty-ee9-jaas/src/test/java/org/eclipse/jetty/ee9/jaas/spi/PropertyFileLoginModuleTest.java +++ /dev/null @@ -1,71 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee9.jaas.spi; - -import org.junit.jupiter.api.Disabled; - -@Disabled // TODO -public class PropertyFileLoginModuleTest -{ - /* TODO need to test without mock request - @Test - public void testPropertyFileLoginModule() throws Exception - { - //configure for PropertyFileLoginModule - File loginProperties = MavenTestingUtils.getTestResourceFile("login.properties"); - - Configuration testConfig = new Configuration() - { - @Override - public AppConfigurationEntry[] getAppConfigurationEntry(String name) - { - return new AppConfigurationEntry[]{new AppConfigurationEntry(PropertyFileLoginModule.class.getName(), - LoginModuleControlFlag.REQUIRED, - Collections.singletonMap("file", loginProperties.getAbsolutePath()))}; - } - }; - - JAASLoginService ls = new JAASLoginService("foo"); - ls.setCallbackHandlerClass("org.eclipse.jetty.ee9.jaas.callback.DefaultCallbackHandler"); - ls.setIdentityService(new DefaultIdentityService()); - ls.setConfiguration(testConfig); - ls.start(); - - //test that the manager is created when the JAASLoginService starts - PropertyUserStoreManager mgr = ls.getBean(PropertyUserStoreManager.class); - assertThat(mgr, notNullValue()); - - //test the PropertyFileLoginModule authentication and authorization - Request request = new Request(null, null); - UserIdentity uid = ls.login("fred", "pwd", request); - assertThat(uid.isUserInRole("role1", null), is(true)); - assertThat(uid.isUserInRole("role2", null), is(true)); - assertThat(uid.isUserInRole("role3", null), is(true)); - assertThat(uid.isUserInRole("role4", null), is(false)); - - //Test that the PropertyUserStore is created by the PropertyFileLoginModule - PropertyUserStore store = mgr.getPropertyUserStore(loginProperties.getAbsolutePath()); - assertThat(store, is(notNullValue())); - assertThat(store.isRunning(), is(true)); - assertThat(store.isHotReload(), is(false)); - - //test that the PropertyUserStoreManager is stopped and all PropertyUserStores stopped - ls.stop(); - assertThat(mgr.isStopped(), is(true)); - assertThat(mgr.getPropertyUserStore(loginProperties.getAbsolutePath()), is(nullValue())); - assertThat(store.isStopped(), is(true)); - } - - */ -} diff --git a/jetty-ee9/jetty-ee9-jaas/src/test/resources/jetty-logging.properties b/jetty-ee9/jetty-ee9-jaas/src/test/resources/jetty-logging.properties deleted file mode 100644 index f0773d90fa57..000000000000 --- a/jetty-ee9/jetty-ee9-jaas/src/test/resources/jetty-logging.properties +++ /dev/null @@ -1,3 +0,0 @@ -# Jetty Logging using jetty-slf4j-impl -org.eclipse.jetty.LEVEL=INFO -org.apache.directory.LEVEL=ERROR \ No newline at end of file diff --git a/jetty-ee9/jetty-ee9-jaas/src/test/resources/login.properties b/jetty-ee9/jetty-ee9-jaas/src/test/resources/login.properties deleted file mode 100644 index 22a4bedc7b7b..000000000000 --- a/jetty-ee9/jetty-ee9-jaas/src/test/resources/login.properties +++ /dev/null @@ -1 +0,0 @@ -fred=pwd,role1,role2,role3 \ No newline at end of file diff --git a/jetty-ee9/jetty-ee9-jaspi/src/main/java/org/eclipse/jetty/ee9/security/jaspi/JaspiAuthenticator.java b/jetty-ee9/jetty-ee9-jaspi/src/main/java/org/eclipse/jetty/ee9/security/jaspi/JaspiAuthenticator.java index cd2944b24936..7a9f61709eea 100644 --- a/jetty-ee9/jetty-ee9-jaspi/src/main/java/org/eclipse/jetty/ee9/security/jaspi/JaspiAuthenticator.java +++ b/jetty-ee9/jetty-ee9-jaspi/src/main/java/org/eclipse/jetty/ee9/security/jaspi/JaspiAuthenticator.java @@ -35,16 +35,18 @@ import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpSession; import org.eclipse.jetty.ee9.nested.Authentication; -import org.eclipse.jetty.ee9.nested.UserIdentity; -import org.eclipse.jetty.ee9.security.EmptyLoginService; -import org.eclipse.jetty.ee9.security.IdentityService; -import org.eclipse.jetty.ee9.security.LoginService; +import org.eclipse.jetty.ee9.nested.Request; +import org.eclipse.jetty.ee9.nested.SessionHandler; import org.eclipse.jetty.ee9.security.ServerAuthException; import org.eclipse.jetty.ee9.security.UserAuthentication; import org.eclipse.jetty.ee9.security.WrappedAuthConfiguration; import org.eclipse.jetty.ee9.security.authentication.DeferredAuthentication; import org.eclipse.jetty.ee9.security.authentication.LoginAuthenticator; import org.eclipse.jetty.ee9.security.authentication.SessionAuthentication; +import org.eclipse.jetty.security.EmptyLoginService; +import org.eclipse.jetty.security.IdentityService; +import org.eclipse.jetty.security.LoginService; +import org.eclipse.jetty.security.UserIdentity; import static org.eclipse.jetty.ee9.security.jaspi.JaspiAuthenticatorFactory.MESSAGE_LAYER; @@ -138,7 +140,10 @@ public String getAuthMethod() @Override public UserIdentity login(String username, Object password, ServletRequest request) { - UserIdentity user = _loginService.login(username, password, request); + Request baseRequest = Request.getBaseRequest(request); + if (baseRequest == null) + return null; + UserIdentity user = _loginService.login(username, password, baseRequest.getCoreRequest(), SessionHandler.ServletSessionApi.getOrCreateSession(request)); if (user != null) { renewSession((HttpServletRequest)request, null); diff --git a/jetty-ee9/jetty-ee9-jaspi/src/main/java/org/eclipse/jetty/ee9/security/jaspi/JaspiAuthenticatorFactory.java b/jetty-ee9/jetty-ee9-jaspi/src/main/java/org/eclipse/jetty/ee9/security/jaspi/JaspiAuthenticatorFactory.java index b3eb3d935c48..f2cf58f95e19 100644 --- a/jetty-ee9/jetty-ee9-jaspi/src/main/java/org/eclipse/jetty/ee9/security/jaspi/JaspiAuthenticatorFactory.java +++ b/jetty-ee9/jetty-ee9-jaspi/src/main/java/org/eclipse/jetty/ee9/security/jaspi/JaspiAuthenticatorFactory.java @@ -23,8 +23,8 @@ import org.eclipse.jetty.ee9.security.Authenticator; import org.eclipse.jetty.ee9.security.Authenticator.AuthConfiguration; import org.eclipse.jetty.ee9.security.DefaultAuthenticatorFactory; -import org.eclipse.jetty.ee9.security.IdentityService; -import org.eclipse.jetty.ee9.security.LoginService; +import org.eclipse.jetty.security.IdentityService; +import org.eclipse.jetty.security.LoginService; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.util.StringUtil; import org.slf4j.Logger; diff --git a/jetty-ee9/jetty-ee9-jaspi/src/main/java/org/eclipse/jetty/ee9/security/jaspi/ServletCallbackHandler.java b/jetty-ee9/jetty-ee9-jaspi/src/main/java/org/eclipse/jetty/ee9/security/jaspi/ServletCallbackHandler.java index 60c870b7809c..79fa7b73e64b 100644 --- a/jetty-ee9/jetty-ee9-jaspi/src/main/java/org/eclipse/jetty/ee9/security/jaspi/ServletCallbackHandler.java +++ b/jetty-ee9/jetty-ee9-jaspi/src/main/java/org/eclipse/jetty/ee9/security/jaspi/ServletCallbackHandler.java @@ -26,11 +26,11 @@ import jakarta.security.auth.message.callback.PrivateKeyCallback; import jakarta.security.auth.message.callback.SecretKeyCallback; import jakarta.security.auth.message.callback.TrustStoreCallback; -import org.eclipse.jetty.ee9.nested.UserIdentity; -import org.eclipse.jetty.ee9.security.LoginService; import org.eclipse.jetty.ee9.security.authentication.LoginCallback; import org.eclipse.jetty.ee9.security.authentication.LoginCallbackImpl; import org.eclipse.jetty.ee9.security.jaspi.callback.CredentialValidationCallback; +import org.eclipse.jetty.security.LoginService; +import org.eclipse.jetty.security.UserIdentity; /** * This {@link CallbackHandler} will bridge {@link Callback}s to handle to the given to the Jetty {@link LoginService}. @@ -60,13 +60,12 @@ else if (callback instanceof GroupPrincipalCallback) { _groupPrincipals.set((GroupPrincipalCallback)callback); } - else if (callback instanceof PasswordValidationCallback) + else if (callback instanceof PasswordValidationCallback passwordValidationCallback) { - PasswordValidationCallback passwordValidationCallback = (PasswordValidationCallback)callback; @SuppressWarnings("unused") Subject subject = passwordValidationCallback.getSubject(); - UserIdentity user = _loginService.login(passwordValidationCallback.getUsername(), passwordValidationCallback.getPassword(), null); + UserIdentity user = _loginService.login(passwordValidationCallback.getUsername(), passwordValidationCallback.getPassword(), null, null); if (user != null) { @@ -75,15 +74,14 @@ else if (callback instanceof PasswordValidationCallback) passwordValidationCallback.getSubject().getPrivateCredentials().add(user); } } - else if (callback instanceof CredentialValidationCallback) + else if (callback instanceof CredentialValidationCallback credentialValidationCallback) { - CredentialValidationCallback credentialValidationCallback = (CredentialValidationCallback)callback; Subject subject = credentialValidationCallback.getSubject(); LoginCallback loginCallback = new LoginCallbackImpl(subject, credentialValidationCallback.getUsername(), credentialValidationCallback.getCredential()); - UserIdentity user = _loginService.login(credentialValidationCallback.getUsername(), credentialValidationCallback.getCredential(), null); + UserIdentity user = _loginService.login(credentialValidationCallback.getUsername(), credentialValidationCallback.getCredential(), null, null); if (user != null) { diff --git a/jetty-ee9/jetty-ee9-jaspi/src/main/java/org/eclipse/jetty/ee9/security/jaspi/modules/BasicAuthenticationAuthModule.java b/jetty-ee9/jetty-ee9-jaspi/src/main/java/org/eclipse/jetty/ee9/security/jaspi/modules/BasicAuthenticationAuthModule.java index 4286b4df654e..396dcf88e418 100644 --- a/jetty-ee9/jetty-ee9-jaspi/src/main/java/org/eclipse/jetty/ee9/security/jaspi/modules/BasicAuthenticationAuthModule.java +++ b/jetty-ee9/jetty-ee9-jaspi/src/main/java/org/eclipse/jetty/ee9/security/jaspi/modules/BasicAuthenticationAuthModule.java @@ -26,8 +26,8 @@ import jakarta.security.auth.message.module.ServerAuthModule; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; +import org.eclipse.jetty.ee9.security.Authenticator; import org.eclipse.jetty.http.HttpHeader; -import org.eclipse.jetty.util.security.Constraint; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -72,7 +72,7 @@ public AuthStatus validateRequest(MessageInfo messageInfo, Subject clientSubject { if (LOG.isDebugEnabled()) LOG.debug("Credentials: {}", credentials); - if (login(clientSubject, credentials, Constraint.__BASIC_AUTH, messageInfo)) + if (login(clientSubject, credentials, Authenticator.BASIC_AUTH, messageInfo)) { return AuthStatus.SUCCESS; } @@ -82,7 +82,7 @@ public AuthStatus validateRequest(MessageInfo messageInfo, Subject clientSubject { return AuthStatus.SUCCESS; } - response.setHeader(HttpHeader.WWW_AUTHENTICATE.asString(), "basic realm=\"" + realmName + '"'); + response.setHeader(HttpHeader.WWW_AUTHENTICATE.asString(), "Basic realm=\"" + realmName + '"'); response.sendError(HttpServletResponse.SC_UNAUTHORIZED); return AuthStatus.SEND_CONTINUE; } diff --git a/jetty-ee9/jetty-ee9-jaspi/src/test/java/org/eclipse/jetty/ee9/security/jaspi/JaspiTest.java b/jetty-ee9/jetty-ee9-jaspi/src/test/java/org/eclipse/jetty/ee9/security/jaspi/JaspiTest.java index e852a8fb5bf4..6147db74978f 100644 --- a/jetty-ee9/jetty-ee9-jaspi/src/test/java/org/eclipse/jetty/ee9/security/jaspi/JaspiTest.java +++ b/jetty-ee9/jetty-ee9-jaspi/src/test/java/org/eclipse/jetty/ee9/security/jaspi/JaspiTest.java @@ -28,15 +28,15 @@ import org.eclipse.jetty.ee9.nested.AbstractHandler; import org.eclipse.jetty.ee9.nested.ContextHandler; import org.eclipse.jetty.ee9.nested.Request; -import org.eclipse.jetty.ee9.security.AbstractLoginService; +import org.eclipse.jetty.ee9.nested.ServletConstraint; import org.eclipse.jetty.ee9.security.ConstraintMapping; import org.eclipse.jetty.ee9.security.ConstraintSecurityHandler; -import org.eclipse.jetty.ee9.security.RolePrincipal; -import org.eclipse.jetty.ee9.security.UserPrincipal; +import org.eclipse.jetty.security.AbstractLoginService; +import org.eclipse.jetty.security.RolePrincipal; +import org.eclipse.jetty.security.UserPrincipal; import org.eclipse.jetty.server.LocalConnector; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.handler.ContextHandlerCollection; -import org.eclipse.jetty.util.security.Constraint; import org.eclipse.jetty.util.security.Credential; import org.eclipse.jetty.util.security.Password; import org.hamcrest.Matchers; @@ -77,13 +77,13 @@ public void putUser(String username, Credential credential, String[] roles) } @Override - protected List loadRoleInfo(UserPrincipal user) + protected List loadRoleInfo(org.eclipse.jetty.security.UserPrincipal user) { return _roles.get(user.getName()); } @Override - protected UserPrincipal loadUserInfo(String username) + protected org.eclipse.jetty.security.UserPrincipal loadUserInfo(String username) { return _users.get(username); } @@ -140,7 +140,7 @@ public void before() throws Exception security.setAuthenticatorFactory(jaspiAuthFactory); // security.setAuthenticator(new BasicAuthenticator()); - Constraint constraint = new Constraint("All", "users"); + ServletConstraint constraint = new ServletConstraint("All", "users"); constraint.setAuthenticate(true); ConstraintMapping mapping = new ConstraintMapping(); mapping.setPathSpec("/jaspi/*"); @@ -180,7 +180,7 @@ public void testConstraintNoAuth() throws Exception { String response = _connector.getResponse("GET /ctx/jaspi/test HTTP/1.0\n\n"); assertThat(response, startsWith("HTTP/1.1 401 Unauthorized")); - assertThat(response, Matchers.containsString("WWW-Authenticate: basic realm=\"TestRealm\"")); + assertThat(response, Matchers.containsString("WWW-Authenticate: Basic realm=\"TestRealm\"")); } @Test @@ -189,7 +189,7 @@ public void testConstraintWrongAuth() throws Exception String response = _connector.getResponse("GET /ctx/jaspi/test HTTP/1.0\n" + "Authorization: Basic " + Base64.getEncoder().encodeToString("user:wrong".getBytes(ISO_8859_1)) + "\n\n"); assertThat(response, startsWith("HTTP/1.1 401 Unauthorized")); - assertThat(response, Matchers.containsString("WWW-Authenticate: basic realm=\"TestRealm\"")); + assertThat(response, Matchers.containsString("WWW-Authenticate: Basic realm=\"TestRealm\"")); } @Test diff --git a/jetty-ee9/jetty-ee9-maven-plugin/pom.xml b/jetty-ee9/jetty-ee9-maven-plugin/pom.xml index 52d214dac4ab..b39d8893ec99 100644 --- a/jetty-ee9/jetty-ee9-maven-plugin/pom.xml +++ b/jetty-ee9/jetty-ee9-maven-plugin/pom.xml @@ -195,11 +195,6 @@ jetty-ee9-quickstart true - - org.eclipse.jetty.ee9 - jetty-ee9-jaas - true - org.eclipse.jetty.ee9 jetty-ee9-plus diff --git a/jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/AbstractWebAppMojo.java b/jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/AbstractWebAppMojo.java index bee5ea7a3b34..50a63aa961e3 100644 --- a/jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/AbstractWebAppMojo.java +++ b/jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/AbstractWebAppMojo.java @@ -48,7 +48,7 @@ import org.codehaus.plexus.util.StringUtils; import org.eclipse.aether.RepositorySystem; import org.eclipse.jetty.ee9.maven.plugin.utils.MavenProjectHelper; -import org.eclipse.jetty.ee9.security.LoginService; +import org.eclipse.jetty.security.LoginService; import org.eclipse.jetty.server.RequestLog; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.handler.ContextHandler; diff --git a/jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/JettyEmbedder.java b/jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/JettyEmbedder.java index 3650c77ce492..17e56da04084 100644 --- a/jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/JettyEmbedder.java +++ b/jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/JettyEmbedder.java @@ -23,7 +23,7 @@ import org.eclipse.jetty.ee9.quickstart.QuickStartConfiguration; import org.eclipse.jetty.ee9.quickstart.QuickStartConfiguration.Mode; -import org.eclipse.jetty.ee9.security.LoginService; +import org.eclipse.jetty.security.LoginService; import org.eclipse.jetty.server.RequestLog; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.ShutdownMonitor; diff --git a/jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/ServerSupport.java b/jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/ServerSupport.java index c144c1b3378a..ded99115ec7c 100644 --- a/jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/ServerSupport.java +++ b/jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/ServerSupport.java @@ -19,9 +19,9 @@ import java.util.List; import java.util.Map; -import org.eclipse.jetty.ee9.security.LoginService; import org.eclipse.jetty.ee9.webapp.Configurations; import org.eclipse.jetty.ee9.webapp.WebAppContext; +import org.eclipse.jetty.security.LoginService; import org.eclipse.jetty.server.Connector; import org.eclipse.jetty.server.RequestLog; import org.eclipse.jetty.server.Server; diff --git a/jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/Authentication.java b/jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/Authentication.java index ca22c549e5ed..a4fa8da52a5e 100644 --- a/jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/Authentication.java +++ b/jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/Authentication.java @@ -17,6 +17,7 @@ import jakarta.servlet.ServletResponse; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; +import org.eclipse.jetty.security.UserIdentity; /** * The Authentication state of a request. @@ -46,7 +47,7 @@ public interface User extends LogoutAuthentication UserIdentity getUserIdentity(); - boolean isUserInRole(UserIdentity.Scope scope, String role); + boolean isUserInRole(UserIdentityScope scope, String role); } /** diff --git a/jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/Request.java b/jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/Request.java index 1904b8878b51..c9e99553099d 100644 --- a/jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/Request.java +++ b/jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/Request.java @@ -78,6 +78,7 @@ import org.eclipse.jetty.http.MimeTypes; import org.eclipse.jetty.io.Connection; import org.eclipse.jetty.io.RuntimeIOException; +import org.eclipse.jetty.security.UserIdentity; import org.eclipse.jetty.server.HttpCookieUtils; import org.eclipse.jetty.server.HttpCookieUtils.SetCookieHttpField; import org.eclipse.jetty.server.Server; @@ -182,7 +183,7 @@ public static Request getBaseRequest(ServletRequest request) private MultiMap _contentParameters; private MultiMap _parameters; private Charset _queryEncoding; - private UserIdentity.Scope _scope; + private UserIdentityScope _scope; private long _timeStamp; private MultiPartFormInputStream _multiParts; //if the request is a multi-part mime private AsyncContextState _async; @@ -504,7 +505,7 @@ public void extractFormParameters(MultiMap params) if (_input.isAsync()) throw new IllegalStateException("Cannot extract parameters with async IO"); - UrlEncoded.decodeTo(in, params, getCharacterEncoding(), maxFormContentSize, maxFormKeys); + UrlEncoded.decodeTo(in, params, UrlEncoded.decodeCharset(getCharacterEncoding()), maxFormContentSize, maxFormKeys); } catch (IOException e) { @@ -1385,7 +1386,7 @@ public UserIdentity getResolvedUserIdentity() return null; } - public UserIdentity.Scope getUserIdentityScope() + public UserIdentityScope getUserIdentityScope() { return _scope; } @@ -1820,7 +1821,7 @@ public void setTimeStamp(long ts) _timeStamp = ts; } - public void setUserIdentityScope(UserIdentity.Scope scope) + public void setUserIdentityScope(UserIdentityScope scope) { _scope = scope; } diff --git a/jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/security/Constraint.java b/jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/ServletConstraint.java similarity index 65% rename from jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/security/Constraint.java rename to jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/ServletConstraint.java index 5c977e890c2f..7bddbc4a9d33 100644 --- a/jetty-core/jetty-util/src/main/java/org/eclipse/jetty/util/security/Constraint.java +++ b/jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/ServletConstraint.java @@ -11,7 +11,7 @@ // ======================================================================== // -package org.eclipse.jetty.util.security; +package org.eclipse.jetty.ee9.nested; import java.io.Serializable; import java.util.Arrays; @@ -21,56 +21,22 @@ * * Describe an auth and/or data constraint. */ -public class Constraint implements Cloneable, Serializable +public class ServletConstraint implements Cloneable, Serializable { - - public static final String __BASIC_AUTH = "BASIC"; - - public static final String __FORM_AUTH = "FORM"; - - public static final String __DIGEST_AUTH = "DIGEST"; - - public static final String __CERT_AUTH = "CLIENT_CERT"; - - public static final String __CERT_AUTH2 = "CLIENT-CERT"; - - public static final String __SPNEGO_AUTH = "SPNEGO"; - - public static final String __NEGOTIATE_AUTH = "NEGOTIATE"; - public static final String __OPENID_AUTH = "OPENID"; - - public static boolean validateMethod(String method) - { - if (method == null) - return false; - method = method.trim(); - return (method.equals(__FORM_AUTH) || - method.equals(__BASIC_AUTH) || - method.equals(__DIGEST_AUTH) || - method.equals(__CERT_AUTH) || - method.equals(__CERT_AUTH2) || - method.equals(__SPNEGO_AUTH) || - method.equals(__NEGOTIATE_AUTH) || - method.equals(__OPENID_AUTH)); - } - - public static final int DC_UNSET = -1; public static final int DC_NONE = 0; public static final int DC_INTEGRAL = 1; public static final int DC_CONFIDENTIAL = 2; - public static final int DC_FORBIDDEN = 3; public static final String NONE = "NONE"; public static final String ANY_ROLE = "*"; - public static final String ANY_AUTH = "**"; //Servlet Spec 3.1 pg 140 private String _name; private String[] _roles; - private int _dataConstraint = DC_UNSET; + private int _dataConstraint = -1; private boolean _anyRole = false; @@ -81,7 +47,7 @@ public static boolean validateMethod(String method) /** * Constructor. */ - public Constraint() + public ServletConstraint() { } @@ -91,7 +57,7 @@ public Constraint() * @param name the name * @param role the role */ - public Constraint(String name, String role) + public ServletConstraint(String name, String role) { setName(name); setRoles(new String[]{role}); @@ -157,23 +123,6 @@ public String[] getRoles() return _roles; } - /** - * @param role the role - * @return True if the constraint contains the role. - */ - public boolean hasRole(String role) - { - if (_anyRole) - return true; - if (_roles != null) - for (int i = _roles.length; i-- > 0; ) - { - if (role.equals(_roles[i])) - return true; - } - return false; - } - /** * @param authenticate True if users must be authenticated */ @@ -218,19 +167,11 @@ public int getDataConstraint() return _dataConstraint; } - /** - * @return True if a data constraint has been set. - */ - public boolean hasDataConstraint() - { - return _dataConstraint >= DC_NONE; - } - @Override public String toString() { return "SC{" + _name + "," + (_anyRole ? "*" : (_roles == null ? "-" : Arrays.asList(_roles).toString())) + - "," + (_dataConstraint == DC_UNSET ? "DC_UNSET}" : (_dataConstraint == DC_NONE ? "NONE}" : (_dataConstraint == DC_INTEGRAL ? "INTEGRAL}" : "CONFIDENTIAL}"))); + "," + (_dataConstraint == -1 ? "UNSET}" : (_dataConstraint == DC_NONE ? "NONE}" : (_dataConstraint == DC_INTEGRAL ? "INTEGRAL}" : "CONFIDENTIAL}"))); } } diff --git a/jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/SessionHandler.java b/jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/SessionHandler.java index 98f0bc9a1bb1..6e3be111eef4 100644 --- a/jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/SessionHandler.java +++ b/jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/SessionHandler.java @@ -21,10 +21,12 @@ import java.util.List; import java.util.Set; import java.util.concurrent.CopyOnWriteArrayList; +import java.util.function.Function; import jakarta.servlet.DispatcherType; import jakarta.servlet.ServletContext; import jakarta.servlet.ServletException; +import jakarta.servlet.ServletRequest; import jakarta.servlet.SessionCookieConfig; import jakarta.servlet.SessionTrackingMode; import jakarta.servlet.http.HttpServletRequest; @@ -693,6 +695,20 @@ public void onSessionPassivation(Session session) public class ServletSessionApi implements HttpSession, Session.API { + public static Function getOrCreateSession(ServletRequest servletRequest) + { + return createSession -> + { + if (servletRequest instanceof HttpServletRequest request) + { + HttpSession session = request.getSession(createSession); + if (session instanceof SessionHandler.ServletSessionApi sessionApi) + return sessionApi.getSession(); + } + return null; + }; + } + private final ManagedSession _session; private ServletSessionApi(ManagedSession session) diff --git a/jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/UserIdentity.java b/jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/UserIdentity.java deleted file mode 100644 index a5441e1ff5ac..000000000000 --- a/jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/UserIdentity.java +++ /dev/null @@ -1,112 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee9.nested; - -import java.security.Principal; -import java.util.Map; -import javax.security.auth.Subject; - -/** - * User object that encapsulates user identity and operations such as run-as-role actions, - * checking isUserInRole and getUserPrincipal. - *

- * Implementations of UserIdentity should be immutable so that they may be - * cached by Authenticators and LoginServices. - */ -public interface UserIdentity -{ - - /** - * @return The user subject - */ - Subject getSubject(); - - /** - * @return The user principal - */ - Principal getUserPrincipal(); - - /** - * Check if the user is in a role. - * This call is used to satisfy authorization calls from - * container code which will be using translated role names. - * - * @param role A role name. - * @param scope the scope - * @return True if the user can act in that role. - */ - boolean isUserInRole(String role, Scope scope); - - /** - * A UserIdentity Scope. - * A scope is the environment in which a User Identity is to - * be interpreted. Typically it is set by the target servlet of - * a request. - */ - interface Scope - { - - /** - * @return The context handler that the identity is being considered within - */ - ContextHandler getContextHandler(); - - /** - * @return The context path that the identity is being considered within - */ - String getContextPath(); - - /** - * @return The name of the identity context. Typically this is the servlet name. - */ - String getName(); - - /** - * @return A map of role reference names that converts from names used by application code - * to names used by the context deployment. - */ - Map getRoleRefMap(); - } - - public interface UnauthenticatedUserIdentity extends UserIdentity - { - } - - public static final UserIdentity UNAUTHENTICATED_IDENTITY = new UnauthenticatedUserIdentity() - { - @Override - public Subject getSubject() - { - return null; - } - - @Override - public Principal getUserPrincipal() - { - return null; - } - - @Override - public boolean isUserInRole(String role, Scope scope) - { - return false; - } - - @Override - public String toString() - { - return "UNAUTHENTICATED"; - } - }; -} diff --git a/jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/UserIdentityScope.java b/jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/UserIdentityScope.java new file mode 100644 index 000000000000..1a64e386d393 --- /dev/null +++ b/jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/UserIdentityScope.java @@ -0,0 +1,65 @@ +// +// ======================================================================== +// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. +// +// This program and the accompanying materials are made available under the +// terms of the Eclipse Public License v. 2.0 which is available at +// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 +// which is available at https://www.apache.org/licenses/LICENSE-2.0. +// +// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 +// ======================================================================== +// + +package org.eclipse.jetty.ee9.nested; + +import java.util.Map; + +/** + * User object that encapsulates user identity and operations such as run-as-role actions, + * checking isUserInRole and getUserPrincipal. + *

+ * Implementations of UserIdentityScope should be immutable so that they may be + * cached by Authenticators and LoginServices. + */ +public interface UserIdentityScope +{ + /** + * @return The context handler that the identity is being considered within + */ + ContextHandler getContextHandler(); + + /** + * @return The context path that the identity is being considered within + */ + String getContextPath(); + + /** + * @return The name of the identity context. Typically this is the servlet name. + */ + String getName(); + + /** + * @return A map of role reference names that converts from names used by application code + * to names used by the context deployment. + */ + Map getRoleRefMap(); + + static String deRefRole(UserIdentityScope scope, String role) + { + if (scope == null) + return role; + + Map roleRefMap = scope.getRoleRefMap(); + if (roleRefMap == null || roleRefMap.isEmpty()) + return role; + + String ref = roleRefMap.get(role); + while (ref != null) + { + role = ref; + ref = roleRefMap.get(role); + } + return role; + } +} diff --git a/jetty-ee9/jetty-ee9-openid/pom.xml b/jetty-ee9/jetty-ee9-openid/pom.xml index 582e54193f7c..006fc9bef8f3 100644 --- a/jetty-ee9/jetty-ee9-openid/pom.xml +++ b/jetty-ee9/jetty-ee9-openid/pom.xml @@ -36,6 +36,14 @@ org.eclipse.jetty jetty-server + + org.eclipse.jetty + jetty-security + + + org.eclipse.jetty + jetty-openid + org.eclipse.jetty jetty-client diff --git a/jetty-ee9/jetty-ee9-openid/src/main/config/etc/jetty-ee9-openid.xml b/jetty-ee9/jetty-ee9-openid/src/main/config/etc/jetty-ee9-openid.xml index ad9bcd66a8fc..8aa00c86ab85 100644 --- a/jetty-ee9/jetty-ee9-openid/src/main/config/etc/jetty-ee9-openid.xml +++ b/jetty-ee9/jetty-ee9-openid/src/main/config/etc/jetty-ee9-openid.xml @@ -27,7 +27,7 @@ - + diff --git a/jetty-ee9/jetty-ee9-openid/src/main/config/modules/ee9-openid.mod b/jetty-ee9/jetty-ee9-openid/src/main/config/modules/ee9-openid.mod index 3fd81a956ab8..7a12a8c31c52 100644 --- a/jetty-ee9/jetty-ee9-openid/src/main/config/modules/ee9-openid.mod +++ b/jetty-ee9/jetty-ee9-openid/src/main/config/modules/ee9-openid.mod @@ -8,6 +8,7 @@ ee9 [depend] ee9-security +openid client [lib] diff --git a/jetty-ee9/jetty-ee9-openid/src/main/java/module-info.java b/jetty-ee9/jetty-ee9-openid/src/main/java/module-info.java index a54ee4a5ef88..77625f5b4674 100644 --- a/jetty-ee9/jetty-ee9-openid/src/main/java/module-info.java +++ b/jetty-ee9/jetty-ee9-openid/src/main/java/module-info.java @@ -14,13 +14,14 @@ import org.eclipse.jetty.ee9.security.Authenticator; import org.eclipse.jetty.ee9.security.openid.OpenIdAuthenticatorFactory; -module org.eclipse.jetty.security.openid +module org.eclipse.jetty.ee9.security.openid { requires org.eclipse.jetty.util.ajax; - requires transitive org.eclipse.jetty.client; requires transitive org.eclipse.jetty.ee9.nested; requires transitive org.eclipse.jetty.ee9.security; + requires transitive org.eclipse.jetty.security.openid; + requires transitive org.eclipse.jetty.security; exports org.eclipse.jetty.ee9.security.openid; diff --git a/jetty-ee9/jetty-ee9-openid/src/main/java/org/eclipse/jetty/ee9/security/openid/OpenIdAuthConfiguration.java b/jetty-ee9/jetty-ee9-openid/src/main/java/org/eclipse/jetty/ee9/security/openid/OpenIdAuthConfiguration.java index 78d47c6b2de5..f5f59a97bb9c 100644 --- a/jetty-ee9/jetty-ee9-openid/src/main/java/org/eclipse/jetty/ee9/security/openid/OpenIdAuthConfiguration.java +++ b/jetty-ee9/jetty-ee9-openid/src/main/java/org/eclipse/jetty/ee9/security/openid/OpenIdAuthConfiguration.java @@ -14,8 +14,10 @@ package org.eclipse.jetty.ee9.security.openid; import org.eclipse.jetty.ee9.security.Authenticator; -import org.eclipse.jetty.ee9.security.LoginService; import org.eclipse.jetty.ee9.security.WrappedAuthConfiguration; +import org.eclipse.jetty.security.LoginService; +import org.eclipse.jetty.security.openid.OpenIdConfiguration; +import org.eclipse.jetty.security.openid.OpenIdLoginService; /** *

This class is used to wrap the {@link Authenticator.AuthConfiguration} given to the {@link OpenIdAuthenticator}.

diff --git a/jetty-ee9/jetty-ee9-openid/src/main/java/org/eclipse/jetty/ee9/security/openid/OpenIdAuthenticator.java b/jetty-ee9/jetty-ee9-openid/src/main/java/org/eclipse/jetty/ee9/security/openid/OpenIdAuthenticator.java index 835f090afcbf..1037b24d008d 100644 --- a/jetty-ee9/jetty-ee9-openid/src/main/java/org/eclipse/jetty/ee9/security/openid/OpenIdAuthenticator.java +++ b/jetty-ee9/jetty-ee9-openid/src/main/java/org/eclipse/jetty/ee9/security/openid/OpenIdAuthenticator.java @@ -30,8 +30,6 @@ import org.eclipse.jetty.ee9.nested.Authentication; import org.eclipse.jetty.ee9.nested.Request; import org.eclipse.jetty.ee9.nested.Response; -import org.eclipse.jetty.ee9.nested.UserIdentity; -import org.eclipse.jetty.ee9.security.LoginService; import org.eclipse.jetty.ee9.security.ServerAuthException; import org.eclipse.jetty.ee9.security.UserAuthentication; import org.eclipse.jetty.ee9.security.authentication.DeferredAuthentication; @@ -39,10 +37,15 @@ import org.eclipse.jetty.ee9.security.authentication.SessionAuthentication; import org.eclipse.jetty.http.HttpMethod; import org.eclipse.jetty.http.MimeTypes; +import org.eclipse.jetty.security.Authenticator; +import org.eclipse.jetty.security.LoginService; +import org.eclipse.jetty.security.UserIdentity; +import org.eclipse.jetty.security.openid.OpenIdConfiguration; +import org.eclipse.jetty.security.openid.OpenIdCredentials; +import org.eclipse.jetty.security.openid.OpenIdLoginService; import org.eclipse.jetty.util.MultiMap; import org.eclipse.jetty.util.URIUtil; import org.eclipse.jetty.util.UrlEncoded; -import org.eclipse.jetty.util.security.Constraint; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -147,7 +150,7 @@ public void setConfiguration(AuthConfiguration authConfig) @Override public String getAuthMethod() { - return Constraint.__OPENID_AUTH; + return Authenticator.OPENID_AUTH; } @Deprecated diff --git a/jetty-ee9/jetty-ee9-openid/src/main/java/org/eclipse/jetty/ee9/security/openid/OpenIdAuthenticatorFactory.java b/jetty-ee9/jetty-ee9-openid/src/main/java/org/eclipse/jetty/ee9/security/openid/OpenIdAuthenticatorFactory.java index 89b72cc4dbb4..189c96d05b61 100644 --- a/jetty-ee9/jetty-ee9-openid/src/main/java/org/eclipse/jetty/ee9/security/openid/OpenIdAuthenticatorFactory.java +++ b/jetty-ee9/jetty-ee9-openid/src/main/java/org/eclipse/jetty/ee9/security/openid/OpenIdAuthenticatorFactory.java @@ -17,10 +17,11 @@ import jakarta.servlet.ServletContext; import org.eclipse.jetty.ee9.security.Authenticator; -import org.eclipse.jetty.ee9.security.IdentityService; -import org.eclipse.jetty.ee9.security.LoginService; +import org.eclipse.jetty.security.IdentityService; +import org.eclipse.jetty.security.LoginService; +import org.eclipse.jetty.security.openid.OpenIdConfiguration; +import org.eclipse.jetty.security.openid.OpenIdLoginService; import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.util.security.Constraint; public class OpenIdAuthenticatorFactory implements Authenticator.Factory { @@ -28,7 +29,7 @@ public class OpenIdAuthenticatorFactory implements Authenticator.Factory public Authenticator getAuthenticator(Server server, ServletContext context, Authenticator.AuthConfiguration configuration, IdentityService identityService, LoginService loginService) { String auth = configuration.getAuthMethod(); - if (Constraint.__OPENID_AUTH.equalsIgnoreCase(auth)) + if (Authenticator.OPENID_AUTH.equalsIgnoreCase(auth)) { // If we have an OpenIdLoginService we can extract the configuration. if (loginService instanceof OpenIdLoginService) diff --git a/jetty-ee9/jetty-ee9-openid/src/main/java/org/eclipse/jetty/ee9/security/openid/OpenIdCredentials.java b/jetty-ee9/jetty-ee9-openid/src/main/java/org/eclipse/jetty/ee9/security/openid/OpenIdCredentials.java deleted file mode 100644 index fe4df2e2afc0..000000000000 --- a/jetty-ee9/jetty-ee9-openid/src/main/java/org/eclipse/jetty/ee9/security/openid/OpenIdCredentials.java +++ /dev/null @@ -1,226 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee9.security.openid; - -import java.io.Serializable; -import java.net.URI; -import java.time.Instant; -import java.util.Arrays; -import java.util.List; -import java.util.Map; -import java.util.concurrent.TimeUnit; - -import org.eclipse.jetty.client.Authentication; -import org.eclipse.jetty.client.BasicAuthentication; -import org.eclipse.jetty.client.ContentResponse; -import org.eclipse.jetty.client.FormRequestContent; -import org.eclipse.jetty.client.Request; -import org.eclipse.jetty.util.Fields; -import org.eclipse.jetty.util.ajax.JSON; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - *

The credentials of an user to be authenticated with OpenID Connect. This will contain - * the OpenID ID Token and the OAuth 2.0 Access Token.

- * - *

- * This is constructed with an authorization code from the authentication request. This authorization code - * is then exchanged using {@link #redeemAuthCode(OpenIdConfiguration)} for a response containing the ID Token and Access Token. - * The response is then validated against the {@link OpenIdConfiguration}. - *

- */ -public class OpenIdCredentials implements Serializable -{ - private static final Logger LOG = LoggerFactory.getLogger(OpenIdCredentials.class); - private static final long serialVersionUID = 4766053233370044796L; - - private final String redirectUri; - private String authCode; - private Map response; - private Map claims; - private boolean verified = false; - - public OpenIdCredentials(Map claims) - { - this.redirectUri = null; - this.authCode = null; - this.claims = claims; - } - - public OpenIdCredentials(String authCode, String redirectUri) - { - this.authCode = authCode; - this.redirectUri = redirectUri; - } - - public String getUserId() - { - return (String)claims.get("sub"); - } - - public Map getClaims() - { - return claims; - } - - public Map getResponse() - { - return response; - } - - public void redeemAuthCode(OpenIdConfiguration configuration) throws Exception - { - if (LOG.isDebugEnabled()) - LOG.debug("redeemAuthCode() {}", this); - - if (authCode != null) - { - try - { - response = claimAuthCode(configuration); - if (LOG.isDebugEnabled()) - LOG.debug("response: {}", response); - - String idToken = (String)response.get("id_token"); - if (idToken == null) - throw new AuthenticationException("no id_token"); - - String accessToken = (String)response.get("access_token"); - if (accessToken == null) - throw new AuthenticationException("no access_token"); - - String tokenType = (String)response.get("token_type"); - if (!"Bearer".equalsIgnoreCase(tokenType)) - throw new AuthenticationException("invalid token_type"); - - claims = JwtDecoder.decode(idToken); - if (LOG.isDebugEnabled()) - LOG.debug("claims {}", claims); - } - finally - { - // reset authCode as it can only be used once - authCode = null; - } - } - - if (!verified) - { - validateClaims(configuration); - verified = true; - } - } - - private void validateClaims(OpenIdConfiguration configuration) throws Exception - { - // Issuer Identifier for the OpenID Provider MUST exactly match the value of the iss (issuer) Claim. - if (!configuration.getIssuer().equals(claims.get("iss"))) - throw new AuthenticationException("Issuer Identifier MUST exactly match the iss Claim"); - - // The aud (audience) Claim MUST contain the client_id value. - validateAudience(configuration); - - // If an azp (authorized party) Claim is present, verify that its client_id is the Claim Value. - Object azp = claims.get("azp"); - if (azp != null && !configuration.getClientId().equals(azp)) - throw new AuthenticationException("Authorized party claim value should be the client_id"); - - // Check that the ID token has not expired by checking the exp claim. - if (isExpired()) - throw new AuthenticationException("ID Token has expired"); - } - - public boolean isExpired() - { - return checkExpiry(claims); - } - - public static boolean checkExpiry(Map claims) - { - if (claims == null) - return true; - - // Check that the ID token has not expired by checking the exp claim. - return Instant.ofEpochSecond((Long)claims.get("exp")).isBefore(Instant.now()); - } - - private void validateAudience(OpenIdConfiguration configuration) throws AuthenticationException - { - Object aud = claims.get("aud"); - String clientId = configuration.getClientId(); - boolean isString = aud instanceof String; - boolean isList = aud instanceof Object[]; - boolean isValidType = isString || isList; - - if (isString && !clientId.equals(aud)) - throw new AuthenticationException("Audience Claim MUST contain the client_id value"); - else if (isList) - { - List list = Arrays.asList((Object[])aud); - if (!list.contains(clientId)) - throw new AuthenticationException("Audience Claim MUST contain the client_id value"); - - if (list.size() > 1 && claims.get("azp") == null) - throw new AuthenticationException("A multi-audience ID token needs to contain an azp claim"); - } - else if (!isValidType) - throw new AuthenticationException("Audience claim was not valid"); - } - - @SuppressWarnings("unchecked") - private Map claimAuthCode(OpenIdConfiguration configuration) throws Exception - { - Fields fields = new Fields(); - fields.add("code", authCode); - fields.add("redirect_uri", redirectUri); - fields.add("grant_type", "authorization_code"); - - Request request = configuration.getHttpClient().POST(configuration.getTokenEndpoint()); - switch (configuration.getAuthMethod()) - { - case "client_secret_basic": - URI uri = URI.create(configuration.getTokenEndpoint()); - Authentication.Result authentication = new BasicAuthentication.BasicResult(uri, configuration.getClientId(), configuration.getClientSecret()); - authentication.apply(request); - break; - case "client_secret_post": - fields.add("client_id", configuration.getClientId()); - fields.add("client_secret", configuration.getClientSecret()); - break; - default: - throw new IllegalStateException(configuration.getAuthMethod()); - } - - FormRequestContent formContent = new FormRequestContent(fields); - request = request.body(formContent).timeout(10, TimeUnit.SECONDS); - ContentResponse response = request.send(); - String responseBody = response.getContentAsString(); - if (LOG.isDebugEnabled()) - LOG.debug("Authentication response: {}", responseBody); - - Object parsedResponse = new JSON().fromJSON(responseBody); - if (!(parsedResponse instanceof Map)) - throw new AuthenticationException("Malformed response from OpenID Provider"); - return (Map)parsedResponse; - } - - public static class AuthenticationException extends Exception - { - public AuthenticationException(String message) - { - super(message); - } - } -} diff --git a/jetty-ee9/jetty-ee9-openid/src/main/java/org/eclipse/jetty/ee9/security/openid/OpenIdUserIdentity.java b/jetty-ee9/jetty-ee9-openid/src/main/java/org/eclipse/jetty/ee9/security/openid/OpenIdUserIdentity.java deleted file mode 100644 index e1088a4eb99a..000000000000 --- a/jetty-ee9/jetty-ee9-openid/src/main/java/org/eclipse/jetty/ee9/security/openid/OpenIdUserIdentity.java +++ /dev/null @@ -1,51 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.ee9.security.openid; - -import java.security.Principal; -import javax.security.auth.Subject; - -import org.eclipse.jetty.ee9.nested.UserIdentity; - -public class OpenIdUserIdentity implements UserIdentity -{ - private final Subject subject; - private final Principal userPrincipal; - private final UserIdentity userIdentity; - - public OpenIdUserIdentity(Subject subject, Principal userPrincipal, UserIdentity userIdentity) - { - this.subject = subject; - this.userPrincipal = userPrincipal; - this.userIdentity = userIdentity; - } - - @Override - public Subject getSubject() - { - return subject; - } - - @Override - public Principal getUserPrincipal() - { - return userPrincipal; - } - - @Override - public boolean isUserInRole(String role, Scope scope) - { - return userIdentity != null && userIdentity.isUserInRole(role, scope); - } -} diff --git a/jetty-ee9/jetty-ee9-openid/src/test/java/org/eclipse/jetty/ee9/security/openid/OpenIdAuthenticationTest.java b/jetty-ee9/jetty-ee9-openid/src/test/java/org/eclipse/jetty/ee9/security/openid/OpenIdAuthenticationTest.java index 88667cc1cbb9..dfa5d06537b4 100644 --- a/jetty-ee9/jetty-ee9-openid/src/test/java/org/eclipse/jetty/ee9/security/openid/OpenIdAuthenticationTest.java +++ b/jetty-ee9/jetty-ee9-openid/src/test/java/org/eclipse/jetty/ee9/security/openid/OpenIdAuthenticationTest.java @@ -27,22 +27,24 @@ import jakarta.servlet.http.HttpServletResponse; import org.eclipse.jetty.client.ContentResponse; import org.eclipse.jetty.client.HttpClient; -import org.eclipse.jetty.ee9.nested.UserIdentity; -import org.eclipse.jetty.ee9.security.AbstractLoginService; +import org.eclipse.jetty.ee9.nested.ServletConstraint; +import org.eclipse.jetty.ee9.security.Authenticator; import org.eclipse.jetty.ee9.security.ConstraintMapping; import org.eclipse.jetty.ee9.security.ConstraintSecurityHandler; -import org.eclipse.jetty.ee9.security.LoginService; -import org.eclipse.jetty.ee9.security.RolePrincipal; -import org.eclipse.jetty.ee9.security.UserPrincipal; import org.eclipse.jetty.ee9.servlet.ServletContextHandler; import org.eclipse.jetty.http.HttpHeader; import org.eclipse.jetty.http.HttpStatus; +import org.eclipse.jetty.security.AbstractLoginService; +import org.eclipse.jetty.security.LoginService; +import org.eclipse.jetty.security.RolePrincipal; +import org.eclipse.jetty.security.UserIdentity; +import org.eclipse.jetty.security.UserPrincipal; +import org.eclipse.jetty.security.openid.OpenIdConfiguration; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.ServerConnector; import org.eclipse.jetty.session.FileSessionDataStoreFactory; import org.eclipse.jetty.toolchain.test.MavenTestingUtils; import org.eclipse.jetty.util.IO; -import org.eclipse.jetty.util.security.Constraint; import org.eclipse.jetty.util.security.Password; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; @@ -87,13 +89,13 @@ public void setup(LoginService loginService, Consumer confi context.addServlet(ErrorPage.class, "/error"); // configure security constraints - Constraint constraint = new Constraint(); - constraint.setName(Constraint.__OPENID_AUTH); + ServletConstraint constraint = new ServletConstraint(); + constraint.setName(Authenticator.OPENID_AUTH); constraint.setRoles(new String[]{"**"}); constraint.setAuthenticate(true); - Constraint adminConstraint = new Constraint(); - adminConstraint.setName(Constraint.__OPENID_AUTH); + ServletConstraint adminConstraint = new ServletConstraint(); + adminConstraint.setName(Authenticator.OPENID_AUTH); adminConstraint.setRoles(new String[]{"admin"}); adminConstraint.setAuthenticate(true); @@ -112,7 +114,7 @@ public void setup(LoginService loginService, Consumer confi ConstraintSecurityHandler securityHandler = new ConstraintSecurityHandler(); assertThat(securityHandler.getKnownAuthenticatorFactories().size(), greaterThanOrEqualTo(2)); - securityHandler.setAuthMethod(Constraint.__OPENID_AUTH); + securityHandler.setAuthMethod(Authenticator.OPENID_AUTH); securityHandler.setRealmName(openIdProvider.getProvider()); securityHandler.setLoginService(loginService); securityHandler.addConstraintMapping(profileMapping); diff --git a/jetty-ee9/jetty-ee9-openid/src/test/java/org/eclipse/jetty/ee9/security/openid/OpenIdProvider.java b/jetty-ee9/jetty-ee9-openid/src/test/java/org/eclipse/jetty/ee9/security/openid/OpenIdProvider.java index 34afdcafd01d..21f1ff6b7cb8 100644 --- a/jetty-ee9/jetty-ee9-openid/src/test/java/org/eclipse/jetty/ee9/security/openid/OpenIdProvider.java +++ b/jetty-ee9/jetty-ee9-openid/src/test/java/org/eclipse/jetty/ee9/security/openid/OpenIdProvider.java @@ -32,6 +32,7 @@ import jakarta.servlet.http.HttpServletResponse; import org.eclipse.jetty.ee9.servlet.ServletContextHandler; import org.eclipse.jetty.ee9.servlet.ServletHolder; +import org.eclipse.jetty.security.openid.OpenIdConfiguration; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.ServerConnector; import org.eclipse.jetty.util.component.ContainerLifeCycle; diff --git a/jetty-ee9/jetty-ee9-osgi/test-jetty-ee9-osgi/src/test/config/etc/jetty-testrealm.xml b/jetty-ee9/jetty-ee9-osgi/test-jetty-ee9-osgi/src/test/config/etc/jetty-testrealm.xml index c5c21b3b3267..2ce036e69ec8 100644 --- a/jetty-ee9/jetty-ee9-osgi/test-jetty-ee9-osgi/src/test/config/etc/jetty-testrealm.xml +++ b/jetty-ee9/jetty-ee9-osgi/test-jetty-ee9-osgi/src/test/config/etc/jetty-testrealm.xml @@ -17,7 +17,7 @@ - + Test Realm false diff --git a/jetty-ee9/jetty-ee9-osgi/test-jetty-ee9-osgi/src/test/java/org/eclipse/jetty/ee9/osgi/test/TestOSGiUtil.java b/jetty-ee9/jetty-ee9-osgi/test-jetty-ee9-osgi/src/test/java/org/eclipse/jetty/ee9/osgi/test/TestOSGiUtil.java index 11be54dde9c7..489b0fc9af7b 100644 --- a/jetty-ee9/jetty-ee9-osgi/test-jetty-ee9-osgi/src/test/java/org/eclipse/jetty/ee9/osgi/test/TestOSGiUtil.java +++ b/jetty-ee9/jetty-ee9-osgi/test-jetty-ee9-osgi/src/test/java/org/eclipse/jetty/ee9/osgi/test/TestOSGiUtil.java @@ -200,6 +200,7 @@ public static void coreJettyDependencies(List