Showing preview only (4,819K chars total). Download the full file or copy to clipboard to get everything.
Repository: piranhacloud/piranha
Branch: current
Commit: 5c473674ea66
Files: 1176
Total size: 4.3 MB
Directory structure:
gitextract_k7aup1uh/
├── .github/
│ ├── FUNDING.yml
│ ├── dependabot.yml
│ └── workflows/
│ ├── current.yml
│ ├── docs.yml
│ ├── experimental.yml
│ ├── pr.yml
│ ├── release.yml
│ ├── stale.yml
│ ├── tck-coreprofile.yml
│ └── trigger.yml
├── .gitignore
├── CODE_CONVENTIONS.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── RELEASE.md
├── SECURITY.md
├── arquillian/
│ ├── managed/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ ├── cloud/
│ │ │ │ │ └── piranha/
│ │ │ │ │ └── arquillian/
│ │ │ │ │ └── managed/
│ │ │ │ │ ├── ManagedPiranhaContainer.java
│ │ │ │ │ ├── ManagedPiranhaContainerConfiguration.java
│ │ │ │ │ └── ManagedPiranhaContainerExtension.java
│ │ │ │ └── module-info.java
│ │ │ └── resources/
│ │ │ └── META-INF/
│ │ │ └── services/
│ │ │ └── org.jboss.arquillian.core.spi.LoadableExtension
│ │ └── test/
│ │ ├── java/
│ │ │ └── cloud/
│ │ │ └── piranha/
│ │ │ └── arquillian/
│ │ │ └── managed/
│ │ │ ├── ManagedPiranhaContainerConfigurationTest.java
│ │ │ ├── ManagedPiranhaContainerExtensionTest.java
│ │ │ └── ManagedPiranhaContainerTest.java
│ │ └── webapp/
│ │ └── test/
│ │ └── WEB-INF/
│ │ └── web.xml
│ ├── pom.xml
│ └── server/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── arquillian/
│ │ │ └── server/
│ │ │ ├── PiranhaServerDeployableContainer.java
│ │ │ └── PiranhaServerLoadableExtension.java
│ │ └── module-info.java
│ └── resources/
│ └── META-INF/
│ └── services/
│ └── org.jboss.arquillian.core.spi.LoadableExtension
├── bom/
│ └── pom.xml
├── core/
│ ├── api/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── core/
│ │ │ │ └── api/
│ │ │ │ ├── AnnotationInfo.java
│ │ │ │ ├── AnnotationManager.java
│ │ │ │ ├── AsyncDispatcher.java
│ │ │ │ ├── AsyncManager.java
│ │ │ │ ├── AttributeManager.java
│ │ │ │ ├── AuthenticatedIdentity.java
│ │ │ │ ├── CurrentRequestHolder.java
│ │ │ │ ├── DispatcherManager.java
│ │ │ │ ├── ErrorPageManager.java
│ │ │ │ ├── FilterEnvironment.java
│ │ │ │ ├── FilterMapping.java
│ │ │ │ ├── FilterPriority.java
│ │ │ │ ├── HandlesTypesManager.java
│ │ │ │ ├── HttpHeader.java
│ │ │ │ ├── HttpHeaderManager.java
│ │ │ │ ├── HttpSessionManager.java
│ │ │ │ ├── JspManager.java
│ │ │ │ ├── LocaleEncodingManager.java
│ │ │ │ ├── ModuleLayerProcessor.java
│ │ │ │ ├── MultiPartManager.java
│ │ │ │ ├── ObjectInstanceManager.java
│ │ │ │ ├── Piranha.java
│ │ │ │ ├── PiranhaBuilder.java
│ │ │ │ ├── PiranhaConfiguration.java
│ │ │ │ ├── SecurityConstraint.java
│ │ │ │ ├── SecurityManager.java
│ │ │ │ ├── SecurityRoleReference.java
│ │ │ │ ├── SecurityWebResourceCollection.java
│ │ │ │ ├── ServletEnvironment.java
│ │ │ │ ├── ServletInvocation.java
│ │ │ │ ├── ServletRequestManager.java
│ │ │ │ ├── WebApplication.java
│ │ │ │ ├── WebApplicationClassLoader.java
│ │ │ │ ├── WebApplicationExtension.java
│ │ │ │ ├── WebApplicationExtensionContext.java
│ │ │ │ ├── WebApplicationInputStream.java
│ │ │ │ ├── WebApplicationManager.java
│ │ │ │ ├── WebApplicationOutputStream.java
│ │ │ │ ├── WebApplicationPrintWriter.java
│ │ │ │ ├── WebApplicationRequest.java
│ │ │ │ ├── WebApplicationRequestMapper.java
│ │ │ │ ├── WebApplicationRequestMapping.java
│ │ │ │ ├── WebApplicationResponse.java
│ │ │ │ ├── WebApplicationServer.java
│ │ │ │ ├── WebApplicationServerRequestMapper.java
│ │ │ │ └── WelcomeFileManager.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── core/
│ │ └── api/
│ │ └── AttributeManagerTest.java
│ ├── impl/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── core/
│ │ │ │ └── impl/
│ │ │ │ ├── AsyncHttpDispatchWrapper.java
│ │ │ │ ├── AsyncNonHttpDispatchWrapper.java
│ │ │ │ ├── CookieParser.java
│ │ │ │ ├── DefaultAnnotationManager.java
│ │ │ │ ├── DefaultAsyncContext.java
│ │ │ │ ├── DefaultAsyncDispatcher.java
│ │ │ │ ├── DefaultAsyncManager.java
│ │ │ │ ├── DefaultAttributeManager.java
│ │ │ │ ├── DefaultAuthenticatedIdentity.java
│ │ │ │ ├── DefaultCurrentRequestHolder.java
│ │ │ │ ├── DefaultDispatcherManager.java
│ │ │ │ ├── DefaultErrorPageManager.java
│ │ │ │ ├── DefaultFilterChain.java
│ │ │ │ ├── DefaultFilterEnvironment.java
│ │ │ │ ├── DefaultFilterMapping.java
│ │ │ │ ├── DefaultHttpHeader.java
│ │ │ │ ├── DefaultHttpHeaderManager.java
│ │ │ │ ├── DefaultHttpServletMapping.java
│ │ │ │ ├── DefaultHttpSession.java
│ │ │ │ ├── DefaultHttpSessionManager.java
│ │ │ │ ├── DefaultInvocationFinder.java
│ │ │ │ ├── DefaultJspConfigDescriptor.java
│ │ │ │ ├── DefaultJspManager.java
│ │ │ │ ├── DefaultLocaleEncodingManager.java
│ │ │ │ ├── DefaultModuleFinder.java
│ │ │ │ ├── DefaultModuleLayerProcessor.java
│ │ │ │ ├── DefaultModuleReader.java
│ │ │ │ ├── DefaultModuleReference.java
│ │ │ │ ├── DefaultMultiPartManager.java
│ │ │ │ ├── DefaultNamedRequestDispatcher.java
│ │ │ │ ├── DefaultObjectInstanceManager.java
│ │ │ │ ├── DefaultPiranha.java
│ │ │ │ ├── DefaultPiranhaBuilder.java
│ │ │ │ ├── DefaultPiranhaConfiguration.java
│ │ │ │ ├── DefaultPushBuilder.java
│ │ │ │ ├── DefaultSecurityManager.java
│ │ │ │ ├── DefaultServlet.java
│ │ │ │ ├── DefaultServletConnection.java
│ │ │ │ ├── DefaultServletEnvironment.java
│ │ │ │ ├── DefaultServletInvocation.java
│ │ │ │ ├── DefaultServletRequestDispatcher.java
│ │ │ │ ├── DefaultServletRequestManager.java
│ │ │ │ ├── DefaultTaglibDescriptor.java
│ │ │ │ ├── DefaultWebApplication.java
│ │ │ │ ├── DefaultWebApplicationBuilder.java
│ │ │ │ ├── DefaultWebApplicationClassLoader.java
│ │ │ │ ├── DefaultWebApplicationExtensionContext.java
│ │ │ │ ├── DefaultWebApplicationInputStream.java
│ │ │ │ ├── DefaultWebApplicationManager.java
│ │ │ │ ├── DefaultWebApplicationOutputStream.java
│ │ │ │ ├── DefaultWebApplicationPrintWriter.java
│ │ │ │ ├── DefaultWebApplicationRequest.java
│ │ │ │ ├── DefaultWebApplicationRequestBuilder.java
│ │ │ │ ├── DefaultWebApplicationRequestMapper.java
│ │ │ │ ├── DefaultWebApplicationRequestMapping.java
│ │ │ │ ├── DefaultWebApplicationResponse.java
│ │ │ │ ├── DefaultWebApplicationResponseBuilder.java
│ │ │ │ ├── DefaultWebConnection.java
│ │ │ │ └── WarFileExtractor.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ ├── java/
│ │ │ └── cloud/
│ │ │ └── piranha/
│ │ │ └── core/
│ │ │ └── impl/
│ │ │ ├── AsyncContextTest.java
│ │ │ ├── CookieParserTest.java
│ │ │ ├── DefaultAnnotationManagerTest.java
│ │ │ ├── DefaultErrorPageManagerTest.java
│ │ │ ├── DefaultFilterEnvironmentTest.java
│ │ │ ├── DefaultHttpHeaderManagerTest.java
│ │ │ ├── DefaultPiranhaConfigurationTest.java
│ │ │ ├── DefaultPushBuilderTest.java
│ │ │ ├── DefaultSecurityManagerTest.java
│ │ │ ├── DefaultServletEnvironmentTest.java
│ │ │ ├── DefaultWebApplicationBuilderTest.java
│ │ │ ├── DefaultWebApplicationClassLoaderTest.java
│ │ │ ├── DefaultWebApplicationExtensionContextTest.java
│ │ │ ├── DefaultWebApplicationManagerTest.java
│ │ │ ├── DefaultWebApplicationOutputStreamTest.java
│ │ │ ├── DefaultWebApplicationRequestMapperTest.java
│ │ │ ├── DefaultWebApplicationRequestMappingTest.java
│ │ │ ├── DefaultWebApplicationRequestTest.java
│ │ │ ├── DefaultWebApplicationResponseTest.java
│ │ │ ├── DefaultWebApplicationTest.java
│ │ │ ├── DefaultWebConnectionTest.java
│ │ │ ├── FilterTest.java
│ │ │ ├── HttpSessionTest.java
│ │ │ ├── ReadListenerTest.java
│ │ │ ├── RequestDispatcherTest.java
│ │ │ ├── ServletContextAttributeListenerTest.java
│ │ │ ├── ServletInputStreamTest.java
│ │ │ ├── ServletRegistrationTest.java
│ │ │ ├── ServletRequestAttributeListenerTest.java
│ │ │ ├── ServletTest.java
│ │ │ ├── TestChat1Servlet.java
│ │ │ ├── TestChat2Servlet.java
│ │ │ ├── TestEcho1Servlet.java
│ │ │ ├── TestEcho2Servlet.java
│ │ │ ├── TestHttpServerRequest.java
│ │ │ ├── TestHttpServerResponse.java
│ │ │ ├── TestIOExceptionServlet.java
│ │ │ ├── TestInclude2Servlet.java
│ │ │ ├── TestInclude3Servlet.java
│ │ │ ├── TestInclude4Servlet.java
│ │ │ ├── TestIncludeServlet.java
│ │ │ ├── TestRuntimeExceptionServlet.java
│ │ │ ├── TestSnoopServlet.java
│ │ │ ├── TestWebApplicationRequest.java
│ │ │ ├── TestWebApplicationResponse.java
│ │ │ └── WriteListenerTest.java
│ │ └── webapp/
│ │ └── resourcepaths/
│ │ ├── catalog/
│ │ │ ├── index.html
│ │ │ ├── offers/
│ │ │ │ ├── books.html
│ │ │ │ └── music.html
│ │ │ └── products.html
│ │ ├── customer/
│ │ │ └── login.jsp
│ │ └── welcome.html
│ └── pom.xml
├── debug/
│ ├── modules.sh
│ ├── pom.xml
│ └── src/
│ └── main/
│ └── java/
│ ├── cloud/
│ │ └── piranha/
│ │ └── debug/
│ │ └── Debug.java
│ └── module-info.java
├── dist/
│ ├── coreprofile/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── dist/
│ │ │ │ └── coreprofile/
│ │ │ │ └── CoreProfilePiranhaMain.java
│ │ │ └── module-info.java
│ │ └── site/
│ │ ├── markdown/
│ │ │ ├── create_a_json_rest_service.md
│ │ │ ├── create_a_rest_service.md
│ │ │ ├── debugging_a_rest_service_with_netbeans.md
│ │ │ ├── debugging_a_rest_service_with_vscode.md
│ │ │ ├── index.md
│ │ │ ├── testing_with_junit5_and_arquillian.md
│ │ │ └── using_project_crac.md
│ │ └── site.xml
│ ├── isolated/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── assembly/
│ │ │ │ └── zip.xml
│ │ │ ├── docker/
│ │ │ │ └── Dockerfile
│ │ │ ├── java/
│ │ │ │ ├── cloud/
│ │ │ │ │ └── piranha/
│ │ │ │ │ └── dist/
│ │ │ │ │ └── isolated/
│ │ │ │ │ └── IsolatedPiranha.java
│ │ │ │ └── module-info.java
│ │ │ └── zip/
│ │ │ ├── etc/
│ │ │ │ ├── keystore.jks
│ │ │ │ └── logging.properties
│ │ │ ├── tmp/
│ │ │ │ └── README
│ │ │ └── webapps/
│ │ │ └── README
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── dist/
│ │ └── isolated/
│ │ └── IsolatedPiranhaIT.java
│ ├── micro/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── docker/
│ │ │ │ └── Dockerfile
│ │ │ ├── java/
│ │ │ │ ├── cloud/
│ │ │ │ │ └── piranha/
│ │ │ │ │ └── dist/
│ │ │ │ │ └── micro/
│ │ │ │ │ ├── MicroBootstrap.java
│ │ │ │ │ └── package-info.java
│ │ │ │ └── module-info.java
│ │ │ └── javadoc/
│ │ │ └── cloud.piranha.dist.micro/
│ │ │ └── cloud/
│ │ │ └── piranha/
│ │ │ └── dist/
│ │ │ └── micro/
│ │ │ └── doc-files/
│ │ │ └── request-response.pptx
│ │ ├── site/
│ │ │ ├── markdown/
│ │ │ │ ├── create_a_hello_world_web_application.md
│ │ │ │ └── index.md
│ │ │ └── site.xml
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── dist/
│ │ └── micro/
│ │ └── MicroPiranhaIT.java
│ ├── microprofile/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── docker/
│ │ │ └── Dockerfile
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── dist/
│ │ │ └── microprofile/
│ │ │ └── MicroProfilePiranhaMain.java
│ │ └── module-info.java
│ ├── platform/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── assembly/
│ │ │ │ └── zip.xml
│ │ │ ├── docker/
│ │ │ │ └── Dockerfile
│ │ │ ├── java/
│ │ │ │ ├── cloud/
│ │ │ │ │ └── piranha/
│ │ │ │ │ └── dist/
│ │ │ │ │ └── platform/
│ │ │ │ │ ├── PlatformPiranhaMain.java
│ │ │ │ │ └── PlatformWebApplication.java
│ │ │ │ └── module-info.java
│ │ │ └── zip/
│ │ │ ├── etc/
│ │ │ │ ├── keystore.jks
│ │ │ │ ├── logging.properties
│ │ │ │ └── truststore.jks
│ │ │ ├── tmp/
│ │ │ │ └── README
│ │ │ └── webapps/
│ │ │ └── README
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── dist/
│ │ └── platform/
│ │ ├── PlatformPiranhaBuilderTest.java
│ │ └── PlatformPiranhaIT.java
│ ├── pom.xml
│ ├── server/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── assembly/
│ │ │ │ └── zip.xml
│ │ │ ├── docker/
│ │ │ │ └── Dockerfile
│ │ │ ├── java/
│ │ │ │ ├── cloud/
│ │ │ │ │ └── piranha/
│ │ │ │ │ └── dist/
│ │ │ │ │ └── server/
│ │ │ │ │ ├── ServerPiranhaMain.java
│ │ │ │ │ └── ServerWebApplication.java
│ │ │ │ └── module-info.java
│ │ │ └── zip/
│ │ │ ├── etc/
│ │ │ │ ├── keystore.jks
│ │ │ │ ├── logging.properties
│ │ │ │ └── truststore.jks
│ │ │ ├── tmp/
│ │ │ │ └── README
│ │ │ └── webapps/
│ │ │ └── README
│ │ ├── site/
│ │ │ ├── markdown/
│ │ │ │ ├── create_a_hello_world_web_application.md
│ │ │ │ └── index.md
│ │ │ └── site.xml
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── dist/
│ │ └── server/
│ │ ├── ServerPiranhaBuilderTest.java
│ │ └── ServerPiranhaIT.java
│ ├── servlet/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── docker/
│ │ │ │ └── Dockerfile
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── dist/
│ │ │ │ └── servlet/
│ │ │ │ └── ServletPiranhaMain.java
│ │ │ └── module-info.java
│ │ └── site/
│ │ ├── markdown/
│ │ │ ├── create_a_hello_world_web_application.md
│ │ │ ├── create_a_jakarta_pages_application.md
│ │ │ ├── create_a_websocket_application.md
│ │ │ ├── index.md
│ │ │ └── run_a_web_application_on_crac.md
│ │ └── site.xml
│ └── webprofile/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── docker/
│ │ │ └── Dockerfile
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── dist/
│ │ │ └── webprofile/
│ │ │ └── WebProfilePiranhaMain.java
│ │ └── module-info.java
│ └── site/
│ ├── markdown/
│ │ ├── create_a_faces_application.md
│ │ ├── create_a_hello_world_application.md
│ │ ├── create_a_jakarta_rest_service.md
│ │ ├── create_a_pages_application.md
│ │ ├── index.md
│ │ ├── testing_with_junit5_and_playwright.md
│ │ └── testing_with_our_container_image.md
│ └── site.xml
├── docker/
│ ├── coreprofile/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── docker/
│ │ │ └── Dockerfile
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── docker/
│ │ └── coreprofile/
│ │ └── CoreProfileIT.java
│ └── pom.xml
├── embedded/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── embedded/
│ │ │ │ ├── EmbeddedPiranha.java
│ │ │ │ ├── EmbeddedPiranhaBuilder.java
│ │ │ │ ├── EmbeddedRequest.java
│ │ │ │ ├── EmbeddedRequestBuilder.java
│ │ │ │ ├── EmbeddedResponse.java
│ │ │ │ ├── EmbeddedResponseBuilder.java
│ │ │ │ └── package-info.java
│ │ │ └── module-info.java
│ │ └── javadoc/
│ │ └── cloud.piranha.embedded/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── embedded/
│ │ └── doc-files/
│ │ └── request-response.pptx
│ ├── site/
│ │ ├── markdown/
│ │ │ ├── create_a_hello_world_web_application.md
│ │ │ ├── create_a_piranha_embedded_graalvm_application.md
│ │ │ ├── create_an_embedded_jlink_application.md
│ │ │ ├── index.md
│ │ │ └── running_piranha_embedded_with_spring_boot.md
│ │ └── site.xml
│ └── test/
│ └── java/
│ └── cloud/
│ └── piranha/
│ └── embedded/
│ ├── EmbeddedPiranhaBuilderTest.java
│ ├── EmbeddedPiranhaTest.java
│ ├── EmbeddedRequestBuilderTest.java
│ ├── EmbeddedRequestTest.java
│ └── EmbeddedResponseBuilderTest.java
├── extension/
│ ├── angus/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── angus/
│ │ │ └── AngusExtension.java
│ │ └── module-info.java
│ ├── annotationscan/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── annotationscan/
│ │ │ │ ├── AnnotationScanExtension.java
│ │ │ │ ├── AnnotationScanInitializer.java
│ │ │ │ └── internal/
│ │ │ │ ├── InternalAnnotationScanAnnotationInfo.java
│ │ │ │ └── InternalAnnotationScanAnnotationManager.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── extension/
│ │ └── annotationscan/
│ │ ├── AnnotationScanExtensionTest.java
│ │ ├── TestAnnotation.java
│ │ ├── TestServlet.java
│ │ ├── TestWithHandlesTypesInitializer.java
│ │ └── internal/
│ │ └── InternalAnnotationScanAnnotationManagerTest.java
│ ├── annotationscan-classfile/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── annotationscan/
│ │ │ │ └── classfile/
│ │ │ │ ├── ClassfileAnnotationScanExtension.java
│ │ │ │ ├── ClassfileAnnotationScanInitializer.java
│ │ │ │ └── internal/
│ │ │ │ ├── InternalAnnotationScanAnnotationInfo.java
│ │ │ │ └── InternalAnnotationScanAnnotationManager.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── extension/
│ │ └── annotationscan/
│ │ └── classfile/
│ │ ├── AnnotationScanExtensionTest.java
│ │ ├── TestAnnotation.java
│ │ ├── TestServlet.java
│ │ ├── TestWithHandlesTypesInitializer.java
│ │ └── internal/
│ │ └── InternalAnnotationScanAnnotationManagerTest.java
│ ├── bytesstreamhandler/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── bytesstreamhandler/
│ │ │ │ ├── BytesStreamHandlerExtension.java
│ │ │ │ ├── BytesStreamHandlerServletContextListener.java
│ │ │ │ └── BytesStreamHandlerServletRequestListener.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── extension/
│ │ └── bytesstreamhandler/
│ │ └── BytesStreamHandlerExtensionTest.java
│ ├── concurro/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── concurro/
│ │ │ └── ConcurroExtension.java
│ │ └── module-info.java
│ ├── coreprofile/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── coreprofile/
│ │ │ └── CoreProfileExtension.java
│ │ └── module-info.java
│ ├── datasource/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── datasource/
│ │ │ │ ├── DataSourceWrapper.java
│ │ │ │ ├── DefaultDatasourceExtension.java
│ │ │ │ ├── DefaultDatasourceInitializer.java
│ │ │ │ ├── TxJoiningDataSource.java
│ │ │ │ └── XADataSourceWrapper.java
│ │ │ └── module-info.java
│ │ └── site/
│ │ ├── markdown/
│ │ │ └── index.md
│ │ └── site.xml
│ ├── declared/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── declared/
│ │ │ │ ├── DeclaredExtension.java
│ │ │ │ └── internal/
│ │ │ │ └── InternalDeclaredInitializer.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── extension/
│ │ ├── declared/
│ │ │ └── DeclaredExtensionTest.java
│ │ └── handlestypes/
│ │ └── internal/
│ │ └── InternalDeclaredInitializerTest.java
│ ├── eclipselink/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── eclipselink/
│ │ │ │ ├── EclipseLinkCdiExtension.java
│ │ │ │ ├── EclipseLinkExtension.java
│ │ │ │ ├── EclipseLinkInitializer.java
│ │ │ │ ├── EntityManagerFactoryCreator.java
│ │ │ │ ├── EntityManagerProducer.java
│ │ │ │ ├── NonTxEntityManagerHolder.java
│ │ │ │ ├── PiranhaEntityManager.java
│ │ │ │ ├── TxEntityManagerHolder.java
│ │ │ │ └── wrappers/
│ │ │ │ └── EntityManagerWrapper.java
│ │ │ └── module-info.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── services/
│ │ └── jakarta.enterprise.inject.spi.Extension
│ ├── epicyro/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── epicyro/
│ │ │ │ ├── AuthenticationFilter.java
│ │ │ │ ├── AuthenticationInitializer.java
│ │ │ │ └── DoNothingServerAuthModule.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── extension/
│ │ └── epicyro/
│ │ └── AuthenticationInitializerTest.java
│ ├── exousia/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── exousia/
│ │ │ ├── AuthorizationFilter.java
│ │ │ ├── AuthorizationInitializer.java
│ │ │ ├── AuthorizationPostInitializer.java
│ │ │ ├── AuthorizationPreFilter.java
│ │ │ ├── AuthorizationPreInitializer.java
│ │ │ ├── PiranhaPrincipalMapper.java
│ │ │ └── PiranhaToExousiaConverter.java
│ │ └── module-info.java
│ ├── expressly/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── expressly/
│ │ │ └── ExpresslyExtension.java
│ │ └── module-info.java
│ ├── fileupload/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── fileupload/
│ │ │ │ ├── FileUploadExtension.java
│ │ │ │ ├── FileUploadMultiPart.java
│ │ │ │ ├── FileUploadMultiPartInitializer.java
│ │ │ │ └── FileUploadMultiPartManager.java
│ │ │ └── module-info.java
│ │ ├── site/
│ │ │ ├── markdown/
│ │ │ │ └── index.md
│ │ │ └── site.xml
│ │ └── test/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── fileupload/
│ │ │ └── tests/
│ │ │ └── FileUploadMultiPartManagerTest.java
│ │ └── module-info.java
│ ├── handlestypes/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── handlestypes/
│ │ │ │ ├── HandlesTypesExtension.java
│ │ │ │ └── internal/
│ │ │ │ ├── InternalHandlesTypesInitializer.java
│ │ │ │ └── InternalHandlesTypesManager.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── extension/
│ │ └── handlestypes/
│ │ ├── HandlesTypesExtensionTest.java
│ │ └── internal/
│ │ ├── InternalHandlesTypesInitializerTest.java
│ │ ├── InternalHandlesTypesManagerTest.java
│ │ ├── TestA.java
│ │ ├── TestB.java
│ │ ├── TestC.java
│ │ ├── TestD.java
│ │ └── TestServletContainerInitializer.java
│ ├── hazelcast/
│ │ ├── README.md
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ ├── cloud/
│ │ │ │ │ └── piranha/
│ │ │ │ │ └── extension/
│ │ │ │ │ └── hazelcast/
│ │ │ │ │ ├── HazelcastHttpSession.java
│ │ │ │ │ ├── HazelcastHttpSessionManager.java
│ │ │ │ │ └── HazelcastInitializer.java
│ │ │ │ └── module-info.java
│ │ │ └── resources/
│ │ │ └── META-INF/
│ │ │ └── services/
│ │ │ └── jakarta.servlet.ServletContainerInitializer
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── extension/
│ │ └── hazelcast/
│ │ └── HazelcastInitializerTest.java
│ ├── herring/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── herring/
│ │ │ │ ├── HerringExtension.java
│ │ │ │ ├── HerringInitialContextFactory.java
│ │ │ │ └── HerringServletRequestListener.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── extension/
│ │ └── herring/
│ │ └── HerringExtensionTest.java
│ ├── hibernate-validator/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── hibernate/
│ │ │ └── validator/
│ │ │ └── HibernateValidatorExtension.java
│ │ └── module-info.java
│ ├── jaxb/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── jaxb/
│ │ │ └── JAXBExtension.java
│ │ └── module-info.java
│ ├── jersey/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── jersey/
│ │ │ │ ├── JerseyExtension.java
│ │ │ │ ├── JerseySourceBean.java
│ │ │ │ └── JerseyTargetBean.java
│ │ │ └── module-info.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── services/
│ │ └── jakarta.enterprise.inject.spi.Extension
│ ├── jstl/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── jstl/
│ │ │ └── JSTLExtension.java
│ │ └── module-info.java
│ ├── micro/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── micro/
│ │ │ │ └── MicroExtension.java
│ │ │ └── module-info.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── services/
│ │ └── cloud.piranha.core.api.WebApplicationExtension
│ ├── microprofile/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── microprofile/
│ │ │ └── MicroProfileExtension.java
│ │ └── module-info.java
│ ├── mojarra/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── mojarra/
│ │ │ └── MojarraExtension.java
│ │ └── module-info.java
│ ├── naming-cdi/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── naming/
│ │ │ │ └── cdi/
│ │ │ │ ├── DefaultInitialContextFactory.java
│ │ │ │ ├── NamingExtension.java
│ │ │ │ └── NamingServletRequestListener.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── extension/
│ │ └── naming/
│ │ └── NamingExtensionTest.java
│ ├── omnifaces-config/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── omnifaces/
│ │ │ └── config/
│ │ │ └── ConfigExtension.java
│ │ └── module-info.java
│ ├── omnifaces-microprofile-jwt-auth/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── omnifaces/
│ │ │ └── microprofile/
│ │ │ └── jwt/
│ │ │ └── auth/
│ │ │ └── MicroProfileJWTAuthExtension.java
│ │ └── module-info.java
│ ├── omnifaces-omniservices/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── omniservices/
│ │ │ └── OmniServicesExtension.java
│ │ └── module-info.java
│ ├── omnifaces-omniutils/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── omniutils/
│ │ │ └── OmniUtilsExtension.java
│ │ └── module-info.java
│ ├── omnifish-omnibeans/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── omnibeans/
│ │ │ └── OmniBeansExtension.java
│ │ └── module-info.java
│ ├── omnifish-transact/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── transact/
│ │ │ ├── TransactExtension.java
│ │ │ ├── TransactFilter.java
│ │ │ └── TransactInitializer.java
│ │ └── module-info.java
│ ├── parsson/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── parsson/
│ │ │ └── ParssonExtension.java
│ │ └── module-info.java
│ ├── platform/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── platform/
│ │ │ └── PlatformExtension.java
│ │ └── module-info.java
│ ├── policy/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── policy/
│ │ │ │ ├── PolicyExtension.java
│ │ │ │ └── internal/
│ │ │ │ ├── InternalPolicyServletContextListener.java
│ │ │ │ ├── InternalPolicyServletRequestListener.java
│ │ │ │ └── InternalPolicyThreadLocal.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── extension/
│ │ └── policy/
│ │ └── PolicyExtensionTest.java
│ ├── pom.xml
│ ├── scinitializer/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── scinitializer/
│ │ │ │ └── ServletContainerInitializerExtension.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── extension/
│ │ └── scinitializer/
│ │ └── ServletContainerInitializerExtensionTest.java
│ ├── security-jakarta/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── security/
│ │ │ └── jakarta/
│ │ │ ├── JakartaSecurityAllInitializer.java
│ │ │ └── JakartaSecurityExtension.java
│ │ └── module-info.java
│ ├── security-servlet/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── security/
│ │ │ │ └── servlet/
│ │ │ │ ├── ServletSecurityAllInitializer.java
│ │ │ │ ├── ServletSecurityExtension.java
│ │ │ │ ├── ServletSecurityManager.java
│ │ │ │ ├── ServletSecurityManagerExtension.java
│ │ │ │ ├── ServletSecurityManagerInitializer.java
│ │ │ │ └── ServletSecurityPrincipal.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── extension/
│ │ └── security/
│ │ └── servlet/
│ │ ├── ServletSecurityManagerExtensionTest.java
│ │ ├── ServletSecurityManagerInitializerTest.java
│ │ └── ServletSecurityManagerTest.java
│ ├── servlet/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── servlet/
│ │ │ └── ServletExtension.java
│ │ └── module-info.java
│ ├── servletannotations/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── servletannotations/
│ │ │ │ ├── ServletAnnotationsExtension.java
│ │ │ │ └── ServletAnnotationsInitializer.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ ├── java/
│ │ │ └── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── servletannotations/
│ │ │ ├── ServletAnnotationsExtensionTest.java
│ │ │ ├── Test2Filter.java
│ │ │ ├── Test2Servlet.java
│ │ │ ├── Test3Filter.java
│ │ │ ├── Test3Servlet.java
│ │ │ ├── Test4Filter.java
│ │ │ ├── Test4Servlet.java
│ │ │ ├── Test5Servlet.java
│ │ │ ├── TestFilter.java
│ │ │ ├── TestListener.java
│ │ │ ├── TestServlet.java
│ │ │ └── WebServletTest.java
│ │ └── webapp/
│ │ └── webservlet/
│ │ └── WEB-INF/
│ │ └── web.xml
│ ├── soteria/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── soteria/
│ │ │ │ ├── IdentityStoreLoginHandler.java
│ │ │ │ ├── SoteriaInitializer.java
│ │ │ │ └── SoteriaPreCDIInitializer.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ ├── java/
│ │ │ └── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── soteria/
│ │ │ ├── IdentityStoreLoginHandlerTest.java
│ │ │ ├── SoteriaInitializerNoCdiTest.java
│ │ │ ├── SoteriaInitializerTest.java
│ │ │ ├── SoteriaPreCDIInitializerTest.java
│ │ │ └── TestIdentityStore.java
│ │ └── webapp/
│ │ └── WEB-INF/
│ │ └── beans.xml
│ ├── tempdir/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── tempdir/
│ │ │ │ ├── TempDirExtension.java
│ │ │ │ └── TempDirServletContainerInitializer.java
│ │ │ └── module-info.java
│ │ ├── site/
│ │ │ ├── markdown/
│ │ │ │ └── index.md
│ │ │ └── site.xml
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── extension/
│ │ └── tempdir/
│ │ ├── TempDirExtensionTest.java
│ │ └── TempDirServletContainerInitializerTest.java
│ ├── tyrus/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── tyrus/
│ │ │ │ └── TyrusExtension.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── extension/
│ │ └── tyrus/
│ │ └── TyrusExtensionTest.java
│ ├── wasp/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── wasp/
│ │ │ │ ├── WaspExtension.java
│ │ │ │ ├── WaspInitializer.java
│ │ │ │ ├── WaspJspManager.java
│ │ │ │ ├── WaspJspManagerExtension.java
│ │ │ │ ├── WaspJspManagerInitializer.java
│ │ │ │ └── WaspServlet.java
│ │ │ └── module-info.java
│ │ ├── site/
│ │ │ └── site.xml
│ │ └── test/
│ │ ├── java/
│ │ │ └── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── wasp/
│ │ │ ├── JspDescriptorTest.java
│ │ │ ├── JspWriterTest.java
│ │ │ ├── WaspExtensionTest.java
│ │ │ ├── WaspInitializerTest.java
│ │ │ └── WaspJspManagerExtensionTest.java
│ │ └── webapp/
│ │ ├── jspwriter/
│ │ │ ├── clearBuffer.jsp
│ │ │ ├── close.jsp
│ │ │ ├── close2.jsp
│ │ │ ├── close3.jsp
│ │ │ └── close4.jsp
│ │ └── waspinitializer/
│ │ └── WEB-INF/
│ │ ├── classes/
│ │ │ └── KEEPME
│ │ └── lib/
│ │ └── KEEPME
│ ├── webprofile/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── webprofile/
│ │ │ └── WebProfileExtension.java
│ │ └── module-info.java
│ ├── webxml/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── webxml/
│ │ │ │ ├── WebXmlExtension.java
│ │ │ │ ├── WebXmlInitializer.java
│ │ │ │ └── internal/
│ │ │ │ ├── WebXml.java
│ │ │ │ ├── WebXmlContextParam.java
│ │ │ │ ├── WebXmlDataSource.java
│ │ │ │ ├── WebXmlErrorPage.java
│ │ │ │ ├── WebXmlFilter.java
│ │ │ │ ├── WebXmlFilterInitParam.java
│ │ │ │ ├── WebXmlFilterMapping.java
│ │ │ │ ├── WebXmlJspConfig.java
│ │ │ │ ├── WebXmlJspConfigTaglib.java
│ │ │ │ ├── WebXmlListener.java
│ │ │ │ ├── WebXmlLoginConfig.java
│ │ │ │ ├── WebXmlManager.java
│ │ │ │ ├── WebXmlMimeMapping.java
│ │ │ │ ├── WebXmlParser.java
│ │ │ │ ├── WebXmlProcessor.java
│ │ │ │ ├── WebXmlSecurityConstraint.java
│ │ │ │ ├── WebXmlServlet.java
│ │ │ │ ├── WebXmlServletInitParam.java
│ │ │ │ ├── WebXmlServletMapping.java
│ │ │ │ ├── WebXmlServletMultipartConfig.java
│ │ │ │ ├── WebXmlServletSecurityRoleRef.java
│ │ │ │ ├── WebXmlSessionConfig.java
│ │ │ │ └── WebXmlSessionConfigCookieConfig.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ ├── java/
│ │ │ └── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── webxml/
│ │ │ ├── TestFilter.java
│ │ │ ├── TestServlet.java
│ │ │ ├── WebXmlExtensionTest.java
│ │ │ ├── WebXmlInitializerTest.java
│ │ │ └── internal/
│ │ │ ├── ContextParamTest.java
│ │ │ ├── DataSourceTest.java
│ │ │ ├── DefaultContextPathTest.java
│ │ │ ├── DenyUncoveredMethodsTest.java
│ │ │ ├── EffectiveMajorVersionTest.java
│ │ │ ├── ErrorPageTest.java
│ │ │ ├── FilterMappingTest.java
│ │ │ ├── JspConfigTest.java
│ │ │ ├── MetadataCompleteTest.java
│ │ │ ├── MimeMappingTest.java
│ │ │ ├── TestWithoutLeadingSlashServlet.java
│ │ │ ├── WebXmlManagerTest.java
│ │ │ ├── WebXmlParserTest.java
│ │ │ ├── WebXmlProcessorTest.java
│ │ │ ├── WelcomeFileTest.java
│ │ │ └── WithoutLeadingSlashTest.java
│ │ └── webxml/
│ │ ├── contextParam/
│ │ │ └── WEB-INF/
│ │ │ └── web.xml
│ │ ├── dataSource/
│ │ │ └── WEB-INF/
│ │ │ └── web.xml
│ │ ├── defaultContextPath/
│ │ │ └── WEB-INF/
│ │ │ └── web.xml
│ │ ├── denyUncoveredMethods/
│ │ │ └── WEB-INF/
│ │ │ └── web.xml
│ │ ├── effectiveMajorVersion1/
│ │ │ └── WEB-INF/
│ │ │ └── web.xml
│ │ ├── errorPage/
│ │ │ └── WEB-INF/
│ │ │ └── web.xml
│ │ ├── filterMappings/
│ │ │ └── WEB-INF/
│ │ │ └── web.xml
│ │ ├── init/
│ │ │ └── WEB-INF/
│ │ │ └── web.xml
│ │ ├── init2/
│ │ │ └── WEB-INF/
│ │ │ └── web.xml
│ │ ├── init3/
│ │ │ └── WEB-INF/
│ │ │ └── classes/
│ │ │ └── META-INF/
│ │ │ └── web-fragment.xml
│ │ ├── jspConfig/
│ │ │ └── WEB-INF/
│ │ │ └── web.xml
│ │ ├── metadataComplete/
│ │ │ └── WEB-INF/
│ │ │ └── web.xml
│ │ ├── mimeMapping/
│ │ │ └── WEB-INF/
│ │ │ └── web.xml
│ │ ├── parse/
│ │ │ └── WEB-INF/
│ │ │ └── web.xml
│ │ ├── parse2/
│ │ │ └── WEB-INF/
│ │ │ └── web.xml
│ │ ├── parse3/
│ │ │ └── WEB-INF/
│ │ │ └── web.xml
│ │ ├── parse4/
│ │ │ └── WEB-INF/
│ │ │ └── web.xml
│ │ ├── welcomeFile/
│ │ │ └── WEB-INF/
│ │ │ └── web.xml
│ │ └── withoutLeadingSlash1/
│ │ └── WEB-INF/
│ │ └── web.xml
│ ├── welcomefile/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── welcomefile/
│ │ │ │ ├── WelcomeFileExtension.java
│ │ │ │ └── internal/
│ │ │ │ └── InternalWelcomeFileManager.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ ├── java/
│ │ │ └── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── welcomefile/
│ │ │ ├── WelcomeFileExtensionTest.java
│ │ │ └── internal/
│ │ │ └── InternalWelcomeFileManagerTest.java
│ │ └── webapp/
│ │ ├── welcomefile1/
│ │ │ └── index.html
│ │ └── welcomefile2/
│ │ └── custom.html
│ ├── weld/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── weld/
│ │ │ │ ├── RealtimeHttpServletRequestWrapper.java
│ │ │ │ ├── WeldCDI.java
│ │ │ │ ├── WeldContainer.java
│ │ │ │ ├── WeldExtension.java
│ │ │ │ ├── WeldHttpServletRequest.java
│ │ │ │ ├── WeldInitListener.java
│ │ │ │ ├── WeldInitializer.java
│ │ │ │ ├── WeldObjectInstanceManager.java
│ │ │ │ ├── WeldProvider.java
│ │ │ │ └── WeldSecurityService.java
│ │ │ └── module-info.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── services/
│ │ ├── org.jboss.weld.bootstrap.api.Service
│ │ └── org.jboss.weld.environment.servlet.Container
│ └── yasson/
│ ├── pom.xml
│ └── src/
│ └── main/
│ └── java/
│ ├── cloud/
│ │ └── piranha/
│ │ └── extension/
│ │ └── yasson/
│ │ └── YassonExtension.java
│ └── module-info.java
├── feature/
│ ├── api/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── feature/
│ │ │ └── api/
│ │ │ ├── Feature.java
│ │ │ └── FeatureManager.java
│ │ └── module-info.java
│ ├── crac/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── feature/
│ │ │ │ └── crac/
│ │ │ │ └── CracFeature.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── feature/
│ │ └── crac/
│ │ └── CracFeatureTest.java
│ ├── exitonstop/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── feature/
│ │ │ │ └── exitonstop/
│ │ │ │ └── ExitOnStopFeature.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── feature/
│ │ └── exitonstop/
│ │ └── ExitOnStopFeatureTest.java
│ ├── http/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── feature/
│ │ │ │ └── http/
│ │ │ │ └── HttpFeature.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── feature/
│ │ └── http/
│ │ └── HttpFeatureTest.java
│ ├── https/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── feature/
│ │ │ │ └── https/
│ │ │ │ └── HttpsFeature.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── feature/
│ │ └── https/
│ │ └── HttpsFeatureTest.java
│ ├── impl/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── feature/
│ │ │ │ └── impl/
│ │ │ │ ├── DefaultFeature.java
│ │ │ │ └── DefaultFeatureManager.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── feature/
│ │ └── impl/
│ │ ├── DefaultFeatureManagerTest.java
│ │ └── DefaultFeatureTest.java
│ ├── isolatedwebapp/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── feature/
│ │ │ └── isolatedwebapp/
│ │ │ └── IsolatedWebAppFeature.java
│ │ └── module-info.java
│ ├── logging/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── feature/
│ │ │ │ └── logging/
│ │ │ │ ├── LoggingFeature.java
│ │ │ │ └── LoggingHandler.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── feature/
│ │ └── logging/
│ │ └── LoggingFeatureTest.java
│ ├── pid/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── feature/
│ │ │ └── pid/
│ │ │ └── PidFeature.java
│ │ └── module-info.java
│ ├── pom.xml
│ ├── trace/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── feature/
│ │ │ │ └── trace/
│ │ │ │ └── TraceFeature.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── feature/
│ │ │ └── trace/
│ │ │ └── tests/
│ │ │ └── TraceFeatureTest.java
│ │ └── module-info.java
│ ├── webapp/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── feature/
│ │ │ │ └── webapp/
│ │ │ │ └── WebAppFeature.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── feature/
│ │ └── webapp/
│ │ └── WebAppFeatureTest.java
│ └── webapps/
│ ├── pom.xml
│ └── src/
│ └── main/
│ └── java/
│ ├── cloud/
│ │ └── piranha/
│ │ └── feature/
│ │ └── webapps/
│ │ └── WebAppsFeature.java
│ └── module-info.java
├── http/
│ ├── api/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── http/
│ │ │ └── api/
│ │ │ ├── HttpServer.java
│ │ │ ├── HttpServerProcessor.java
│ │ │ ├── HttpServerProcessorEndState.java
│ │ │ ├── HttpServerRequest.java
│ │ │ ├── HttpServerResponse.java
│ │ │ └── package-info.java
│ │ └── module-info.java
│ ├── crac/
│ │ ├── Dockerfile
│ │ ├── README.md
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── http/
│ │ │ └── crac/
│ │ │ └── CracHttpServer.java
│ │ └── module-info.java
│ ├── grizzly/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── http/
│ │ │ │ └── grizzly/
│ │ │ │ ├── GrizzlyHttpServer.java
│ │ │ │ ├── GrizzlyHttpServerRequest.java
│ │ │ │ ├── GrizzlyHttpServerResponse.java
│ │ │ │ └── package-info.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── http/
│ │ └── grizzly/
│ │ ├── GrizzlyHttpServerRequestTest.java
│ │ └── GrizzlyHttpServerTest.java
│ ├── impl/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── http/
│ │ │ │ └── impl/
│ │ │ │ ├── DefaultHttpServer.java
│ │ │ │ ├── DefaultHttpServerAcceptorThread.java
│ │ │ │ ├── DefaultHttpServerProcessingThread.java
│ │ │ │ ├── DefaultHttpServerProcessor.java
│ │ │ │ ├── DefaultHttpServerRequest.java
│ │ │ │ ├── DefaultHttpServerResponse.java
│ │ │ │ ├── DefaultHttpServerThreadFactory.java
│ │ │ │ └── package-info.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── http/
│ │ └── impl/
│ │ ├── DefaultHttpServerRequestTest.java
│ │ └── DefaultHttpServerTest.java
│ ├── jdk/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── http/
│ │ │ │ └── jdk/
│ │ │ │ ├── JdkHttpHandler.java
│ │ │ │ ├── JdkHttpRequest.java
│ │ │ │ ├── JdkHttpResponse.java
│ │ │ │ ├── JdkHttpServer.java
│ │ │ │ └── package-info.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── http/
│ │ └── jdk/
│ │ └── JdkHttpServerTest.java
│ ├── netty/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── http/
│ │ │ │ └── netty/
│ │ │ │ ├── NettyHttpServer.java
│ │ │ │ ├── NettyHttpServerHandler.java
│ │ │ │ ├── NettyHttpServerInitializer.java
│ │ │ │ ├── NettyHttpServerRequest.java
│ │ │ │ ├── NettyHttpServerResponse.java
│ │ │ │ └── package-info.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── http/
│ │ └── netty/
│ │ └── NettyHttpServerTest.java
│ ├── pom.xml
│ ├── tests/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── http/
│ │ │ └── tests/
│ │ │ ├── HttpServerRequestTest.java
│ │ │ ├── HttpServerTest.java
│ │ │ └── TestHttpServerProcessor.java
│ │ └── module-info.java
│ ├── undertow/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── http/
│ │ │ │ └── undertow/
│ │ │ │ ├── UndertowHttpHandler.java
│ │ │ │ ├── UndertowHttpRequest.java
│ │ │ │ ├── UndertowHttpResponse.java
│ │ │ │ ├── UndertowHttpServer.java
│ │ │ │ └── package-info.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── http/
│ │ └── undertow/
│ │ └── UndertowHttpServerTest.java
│ ├── virtual/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── http/
│ │ │ │ └── virtual/
│ │ │ │ └── VirtualHttpServer.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── http/
│ │ └── virtual/
│ │ └── VirtualHttpServerTest.java
│ └── webapp/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── http/
│ │ │ └── webapp/
│ │ │ ├── HttpWebApplicationOutputStream.java
│ │ │ ├── HttpWebApplicationRequest.java
│ │ │ ├── HttpWebApplicationResponse.java
│ │ │ ├── HttpWebApplicationServer.java
│ │ │ └── HttpWebApplicationServerRequestMapper.java
│ │ └── module-info.java
│ └── test/
│ └── java/
│ └── cloud/
│ └── piranha/
│ └── http/
│ └── webapp/
│ ├── HttpWebApplicationRequestTest.java
│ ├── HttpWebApplicationResponseTest.java
│ ├── HttpWebApplicationServerTest.java
│ └── TestSnoopServlet.java
├── maven/
│ ├── archetypes/
│ │ └── pom.xml
│ ├── plugin/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── maven/
│ │ │ │ └── plugin/
│ │ │ │ ├── BaseMojo.java
│ │ │ │ ├── RunMojo.java
│ │ │ │ ├── StartMojo.java
│ │ │ │ └── StopMojo.java
│ │ │ └── module-info.java
│ │ └── site/
│ │ └── site.xml
│ └── pom.xml
├── micro/
│ ├── builder/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── micro/
│ │ │ └── builder/
│ │ │ ├── MicroEmbeddedPiranha.java
│ │ │ ├── MicroEmbeddedPiranhaBuilder.java
│ │ │ ├── MicroWebApplication.java
│ │ │ └── package-info.java
│ │ └── module-info.java
│ ├── core/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── micro/
│ │ │ │ └── core/
│ │ │ │ ├── CdiExtension.java
│ │ │ │ ├── DefaultAnnotationInfo.java
│ │ │ │ ├── InMemoryIdentityStore.java
│ │ │ │ ├── MicroInnerApplication.java
│ │ │ │ ├── MicroInnerDeployer.java
│ │ │ │ └── PiranhaBeanArchiveHandler.java
│ │ │ └── module-info.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── services/
│ │ ├── jakarta.enterprise.inject.spi.Extension
│ │ └── org.jboss.weld.environment.deployment.discovery.BeanArchiveHandler
│ ├── loader/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── micro/
│ │ │ └── loader/
│ │ │ ├── MicroConfiguration.java
│ │ │ ├── MicroDeployOutcome.java
│ │ │ ├── MicroInfo.java
│ │ │ ├── MicroOuterDeployer.java
│ │ │ ├── StaticStreamHandler.java
│ │ │ ├── StaticURLStreamHandlerFactory.java
│ │ │ └── package-info.java
│ │ └── module-info.java
│ └── pom.xml
├── multi/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── assembly/
│ │ │ └── zip.xml
│ │ ├── docker/
│ │ │ └── Dockerfile
│ │ ├── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── multi/
│ │ │ │ ├── MultiPiranha.java
│ │ │ │ ├── MultiPiranhaBuilder.java
│ │ │ │ ├── MultiPiranhaMain.java
│ │ │ │ └── MultiWebApplication.java
│ │ │ └── module-info.java
│ │ └── zip/
│ │ ├── etc/
│ │ │ ├── keystore.jks
│ │ │ ├── logging.properties
│ │ │ └── truststore.jks
│ │ ├── tmp/
│ │ │ └── README
│ │ └── webapps/
│ │ └── README
│ └── test/
│ └── java/
│ └── cloud/
│ └── piranha/
│ └── multi/
│ ├── MultiPiranhaBuilderTest.java
│ └── MultiPiranhaIT.java
├── pom.xml
├── resource/
│ ├── api/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── resource/
│ │ │ └── api/
│ │ │ ├── Resource.java
│ │ │ ├── ResourceManager.java
│ │ │ ├── ResourceManagerClassLoader.java
│ │ │ └── package-info.java
│ │ └── module-info.java
│ ├── impl/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ ├── cloud/
│ │ │ │ │ └── piranha/
│ │ │ │ │ └── resource/
│ │ │ │ │ └── impl/
│ │ │ │ │ ├── AliasedDirectoryResource.java
│ │ │ │ │ ├── AliasedNamedResource.java
│ │ │ │ │ ├── ByteArrayResource.java
│ │ │ │ │ ├── ByteArrayResourceStreamHandlerProvider.java
│ │ │ │ │ ├── ByteArrayResourceURLConnection.java
│ │ │ │ │ ├── ByteArrayResourceURLStreamHandler.java
│ │ │ │ │ ├── ClassResource.java
│ │ │ │ │ ├── DefaultResourceManager.java
│ │ │ │ │ ├── DefaultResourceManagerClassLoader.java
│ │ │ │ │ ├── DirectoryResource.java
│ │ │ │ │ ├── JarResource.java
│ │ │ │ │ ├── MultiReleaseResource.java
│ │ │ │ │ ├── PrefixJarResource.java
│ │ │ │ │ └── StringResource.java
│ │ │ │ └── module-info.java
│ │ │ └── resources/
│ │ │ └── META-INF/
│ │ │ └── services/
│ │ │ └── java.net.spi.URLStreamHandlerProvider
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── resource/
│ │ └── impl/
│ │ ├── AliasedDirectoryResourceTest.java
│ │ ├── AliasedNamedResourceTest.java
│ │ ├── ByteArrayResourceTest.java
│ │ ├── DefaultResourceManagerTest.java
│ │ ├── DirectoryResourceTest.java
│ │ ├── JarResourceTest.java
│ │ ├── MultiReleaseResourceTest.java
│ │ └── PrefixJarResourceTest.java
│ ├── pom.xml
│ └── shrinkwrap/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── resource/
│ │ │ └── shrinkwrap/
│ │ │ ├── ArchiveURLStreamHandler.java
│ │ │ ├── GlobalArchiveStreamHandler.java
│ │ │ ├── IsolatingResourceManagerClassLoader.java
│ │ │ ├── NodeURLStreamHandler.java
│ │ │ ├── ShrinkWrapDirectoryInputStream.java
│ │ │ ├── ShrinkWrapResource.java
│ │ │ └── StreamConnection.java
│ │ └── module-info.java
│ └── test/
│ └── java/
│ └── cloud/
│ └── piranha/
│ └── resource/
│ └── shrinkwrap/
│ ├── DefaultResourceManagerTest.java
│ └── DefaultWebApplicationClassLoaderTest.java
├── single/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── single/
│ │ │ ├── SingleMain.java
│ │ │ ├── SinglePiranha.java
│ │ │ └── SinglePiranhaBuilder.java
│ │ └── module-info.java
│ └── test/
│ └── java/
│ └── cloud/
│ └── piranha/
│ └── single/
│ ├── SinglePiranhaBuilderTest.java
│ └── SinglePiranhaTest.java
├── spring/
│ ├── pom.xml
│ └── spring-boot-starter-piranha-embedded/
│ ├── pom.xml
│ └── src/
│ └── main/
│ └── java/
│ ├── cloud/
│ │ └── piranha/
│ │ └── spring/
│ │ └── starter/
│ │ └── embedded/
│ │ ├── EmbeddedPiranhaServletWebServerFactory.java
│ │ └── EmbeddedPiranhaWebServer.java
│ └── module-info.java
├── src/
│ └── site/
│ ├── markdown/
│ │ └── index.md
│ └── site.xml
└── test/
├── common/
│ ├── pom.xml
│ └── src/
│ └── main/
│ └── java/
│ ├── cloud/
│ │ └── piranha/
│ │ └── test/
│ │ └── common/
│ │ └── PiranhaStartup.java
│ └── module-info.java
├── coreprofile/
│ ├── arquillian/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ └── arquillian/
│ │ │ ├── HelloArquillianApplication.java
│ │ │ └── HelloArquillianBean.java
│ │ └── test/
│ │ └── java/
│ │ └── helloarquillian/
│ │ └── HelloArquillianIT.java
│ ├── integration/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── test/
│ │ │ │ └── coreprofile/
│ │ │ │ └── distribution/
│ │ │ │ ├── AsyncBean.java
│ │ │ │ ├── BeanParamBean.java
│ │ │ │ ├── BeanParamInput.java
│ │ │ │ ├── ContainerRequestContextBean.java
│ │ │ │ ├── ContainerRequestContextFilter.java
│ │ │ │ ├── DependencyInjectionBean.java
│ │ │ │ ├── IntegrationApplication.java
│ │ │ │ ├── InterceptInterceptor.java
│ │ │ │ ├── InterceptedBean.java
│ │ │ │ ├── Jsonb.java
│ │ │ │ ├── ProducesBean.java
│ │ │ │ ├── RestBean.java
│ │ │ │ ├── SseBean.java
│ │ │ │ ├── SseBroadcastBean.java
│ │ │ │ └── TRACE.java
│ │ │ └── webapp/
│ │ │ └── WEB-INF/
│ │ │ └── beans.xml
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── test/
│ │ └── coreprofile/
│ │ └── distribution/
│ │ ├── AsyncIT.java
│ │ ├── BeanParamIT.java
│ │ ├── ContainerRequestContextIT.java
│ │ ├── DependencyInjectionIT.java
│ │ ├── ITBase.java
│ │ ├── InterceptorIT.java
│ │ ├── JsonBindingIT.java
│ │ ├── JsonProcessingIT.java
│ │ ├── ProducesIT.java
│ │ ├── RestIT.java
│ │ └── SseIT.java
│ ├── json/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ └── temperature/
│ │ │ ├── Temperature.java
│ │ │ ├── TemperatureApplication.java
│ │ │ └── TemperatureBean.java
│ │ └── test/
│ │ └── java/
│ │ └── temperature/
│ │ └── TemperatureIT.java
│ ├── no_servlet_class/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── test/
│ │ │ │ └── coreprofile/
│ │ │ │ └── no_servlet_class/
│ │ │ │ ├── EchoApplication.java
│ │ │ │ └── EchoBean.java
│ │ │ └── webapp/
│ │ │ └── WEB-INF/
│ │ │ └── web.xml
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── test/
│ │ └── coreprofile/
│ │ └── no_servlet_class/
│ │ └── EchoIT.java
│ ├── pom.xml
│ └── rest/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── cloud/
│ │ │ └── piranha/
│ │ │ └── test/
│ │ │ └── coreprofile/
│ │ │ └── rest/
│ │ │ ├── RestApplication.java
│ │ │ └── RestBean.java
│ │ └── webapp/
│ │ └── WEB-INF/
│ │ └── web.xml
│ └── test/
│ └── java/
│ └── cloud/
│ └── piranha/
│ └── test/
│ └── coreprofile/
│ └── rest/
│ └── RestIT.java
├── embedded/
│ ├── classloader/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── classloader/
│ │ │ └── ClassLoaderServlet.java
│ │ └── webapp/
│ │ └── META-INF/
│ │ └── context.xml
│ ├── classloader2/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── test/
│ │ └── java/
│ │ └── classloader/
│ │ └── ClassLoaderIT.java
│ ├── eclipselink/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── eclipselink/
│ │ │ │ ├── EclipseLinkBean.java
│ │ │ │ └── EclipseLinkTable.java
│ │ │ ├── resources/
│ │ │ │ └── META-INF/
│ │ │ │ └── persistence.xml
│ │ │ └── webapp/
│ │ │ ├── WEB-INF/
│ │ │ │ ├── beans.xml
│ │ │ │ ├── faces-config.xml
│ │ │ │ └── web.xml
│ │ │ └── index.xhtml
│ │ └── test/
│ │ └── java/
│ │ └── eclipselink/
│ │ └── EclipseLinkTest.java
│ ├── exousia/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── test/
│ │ └── java/
│ │ └── exousia/
│ │ ├── ExousiaTest.java
│ │ └── PublicServlet.java
│ ├── hazelcast/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── hazelcast/
│ │ │ │ └── HazelcastBean.java
│ │ │ └── webapp/
│ │ │ ├── WEB-INF/
│ │ │ │ ├── beans.xml
│ │ │ │ └── web.xml
│ │ │ └── index.xhtml
│ │ └── test/
│ │ └── java/
│ │ └── hazelcast/
│ │ └── HazelcastTest.java
│ ├── helloworld/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── helloworld/
│ │ │ │ ├── HelloWorldApplication.java
│ │ │ │ └── HelloWorldServlet.java
│ │ │ └── webapp/
│ │ │ └── WEB-INF/
│ │ │ └── web.xml
│ │ └── test/
│ │ └── java/
│ │ └── helloworld/
│ │ └── HelloWorldTest.java
│ ├── pom.xml
│ ├── soteria-basic/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── test/
│ │ ├── java/
│ │ │ └── basic/
│ │ │ ├── BasicTest.java
│ │ │ ├── DynamicInitialContextFactory.java
│ │ │ ├── ProtectedServlet.java
│ │ │ ├── PublicServlet.java
│ │ │ └── TestIdentityStore.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── beans.xml
│ ├── soteria-form/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── test/
│ │ ├── java/
│ │ │ └── form/
│ │ │ ├── DynamicInitialContextFactory.java
│ │ │ ├── ErrorPageServlet.java
│ │ │ ├── FormTest.java
│ │ │ ├── LoginPageServlet.java
│ │ │ ├── ProtectedServlet.java
│ │ │ └── TestIdentityStore.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── beans.xml
│ ├── springboot/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── test1/
│ │ │ ├── Test1Application.java
│ │ │ └── Test1Controller.java
│ │ └── resources/
│ │ └── application.properties
│ ├── springboot-virtualthreads/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ └── test/
│ │ └── custom/
│ │ └── http/
│ │ ├── Main.java
│ │ └── MyController.java
│ ├── web-fragment-in-jar/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── resources/
│ │ └── META-INF/
│ │ └── web-fragment.xml
│ ├── web-fragment-in-jar-test/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── test/
│ │ └── java/
│ │ └── webfragmentinjar/
│ │ └── WebFragmentInJar1IT.java
│ ├── web-fragment-in-jar-webapp/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── webapp/
│ │ ├── META-INF/
│ │ │ └── context.xml
│ │ └── index.html
│ └── weld/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── weld/
│ │ │ └── WeldRequestBean.java
│ │ └── webapp/
│ │ ├── WEB-INF/
│ │ │ ├── beans.xml
│ │ │ ├── faces-config.xml
│ │ │ └── web.xml
│ │ └── index.xhtml
│ └── test/
│ └── java/
│ └── weld/
│ └── WeldTest.java
├── jpms/
│ ├── pom.xml
│ └── src/
│ └── test/
│ └── java/
│ ├── jpms/
│ │ └── ModuleFinderTest.java
│ ├── package1/
│ │ ├── Library.java
│ │ ├── Service.java
│ │ ├── Servlet.java
│ │ └── Utils.java
│ ├── package2/
│ │ ├── Library.java
│ │ └── Listener.java
│ └── package3/
│ ├── DefaultService.java
│ ├── Filter.java
│ └── Library.java
├── micro/
│ ├── helloworld/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── helloworld/
│ │ │ │ └── HelloWorldServlet.java
│ │ │ └── webapp/
│ │ │ └── WEB-INF/
│ │ │ └── web.xml
│ │ └── test/
│ │ └── java/
│ │ └── helloworld/
│ │ └── HelloWorldServletIT.java
│ ├── microprofile-config/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── config/
│ │ │ │ ├── ConfigApplicationBean.java
│ │ │ │ └── ConfigServlet.java
│ │ │ └── resources/
│ │ │ └── META-INF/
│ │ │ └── microprofile-config.properties
│ │ └── test/
│ │ └── java/
│ │ └── config/
│ │ └── ConfigTest.java
│ ├── pom.xml
│ ├── protected-servlet/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── protectedservlet/
│ │ │ │ ├── ProtectedBean.java
│ │ │ │ └── ProtectedServlet.java
│ │ │ └── webapp/
│ │ │ └── WEB-INF/
│ │ │ ├── beans.xml
│ │ │ └── web.xml
│ │ └── test/
│ │ └── java/
│ │ └── protectedservlet/
│ │ └── ProtectedServletIT.java
│ └── snoop/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── snoop/
│ │ │ └── SnoopServlet.java
│ │ └── webapp/
│ │ └── WEB-INF/
│ │ ├── beans.xml
│ │ └── web.xml
│ └── test/
│ └── java/
│ └── snoop/
│ └── SnoopIT.java
├── pom.xml
├── server/
│ ├── helloworld/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── webapp/
│ │ │ └── helloworld.html
│ │ └── test/
│ │ └── java/
│ │ └── helloworld/
│ │ └── HelloWorldIT.java
│ ├── pom.xml
│ ├── programmatic/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── programmatic/
│ │ │ │ └── ProgrammaticServlet.java
│ │ │ └── webapp/
│ │ │ └── WEB-INF/
│ │ │ └── web.xml
│ │ └── test/
│ │ └── java/
│ │ └── programmatic/
│ │ └── ProgrammaticIT.java
│ ├── wasp/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── wasp/
│ │ │ │ └── HelloTldTag.java
│ │ │ └── webapp/
│ │ │ ├── WEB-INF/
│ │ │ │ ├── tags/
│ │ │ │ │ └── hellotag.tag
│ │ │ │ ├── tld/
│ │ │ │ │ ├── hellotag.tld
│ │ │ │ │ └── hellotld.tld
│ │ │ │ └── web.xml
│ │ │ ├── hellotag.jsp
│ │ │ ├── hellotag2.jsp
│ │ │ ├── hellotld.jsp
│ │ │ ├── hellotld2.jsp
│ │ │ └── index.jsp
│ │ └── test/
│ │ └── java/
│ │ └── wasp/
│ │ ├── HelloTagJspIT.java
│ │ ├── HelloTld2JspIT.java
│ │ ├── HelloTldJspIT.java
│ │ └── IndexJspIT.java
│ └── wasp2/
│ ├── pom.xml
│ └── src/
│ └── main/
│ └── resources/
│ └── META-INF/
│ ├── hellotag2.tag
│ └── hellotag2.tld
├── servlet/
│ ├── crac/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── test/
│ │ │ │ └── servlet/
│ │ │ │ └── crac/
│ │ │ │ └── CracBean.java
│ │ │ └── webapp/
│ │ │ ├── WEB-INF/
│ │ │ │ ├── beans.xml
│ │ │ │ └── web.xml
│ │ │ └── crac.xhtml
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── test/
│ │ └── servlet/
│ │ └── crac/
│ │ └── CracIT.java
│ ├── hello/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── hello/
│ │ │ │ └── HelloServlet.java
│ │ │ └── webapp/
│ │ │ ├── WEB-INF/
│ │ │ │ └── web.xml
│ │ │ ├── helloel.jsp
│ │ │ ├── hellojsp.jsp
│ │ │ └── helloworld.html
│ │ └── test/
│ │ └── java/
│ │ └── hello/
│ │ └── HelloIT.java
│ ├── helloworld/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── webapp/
│ │ │ └── helloworld.html
│ │ └── test/
│ │ └── java/
│ │ └── helloworld/
│ │ └── HelloWorldIT.java
│ ├── integration/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ └── cloud/
│ │ │ └── piranha/
│ │ │ └── test/
│ │ │ └── servlet/
│ │ │ └── integration/
│ │ │ └── IntegrationServlet.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── test/
│ │ └── servlet/
│ │ └── integration/
│ │ └── IntegrationtIT.java
│ ├── pages/
│ │ ├── README.md
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── webapp/
│ │ │ └── hello.jsp
│ │ └── test/
│ │ └── java/
│ │ └── hello/
│ │ └── HelloIT.java
│ ├── pom.xml
│ └── websocket/
│ ├── pom.xml
│ └── src/
│ └── main/
│ └── java/
│ └── chat/
│ └── ChatEndpoint.java
├── tck/
│ ├── coreprofile/
│ │ ├── annotations/
│ │ │ ├── installer/
│ │ │ │ └── pom.xml
│ │ │ ├── pom.xml
│ │ │ └── runner/
│ │ │ └── pom.xml
│ │ ├── cdi/
│ │ │ ├── installer/
│ │ │ │ └── pom.xml
│ │ │ ├── pom.xml
│ │ │ └── runner/
│ │ │ ├── core/
│ │ │ │ ├── pom.xml
│ │ │ │ └── src/
│ │ │ │ └── test/
│ │ │ │ ├── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── jboss/
│ │ │ │ │ └── weld/
│ │ │ │ │ └── tck/
│ │ │ │ │ └── piranha/
│ │ │ │ │ ├── PiranhaDeploymentExceptionTransformer.java
│ │ │ │ │ ├── PiranhaExtension.java
│ │ │ │ │ ├── WeldBeansImpl.java
│ │ │ │ │ ├── WeldContextImpl.java
│ │ │ │ │ └── WeldELImpl.java
│ │ │ │ └── resources/
│ │ │ │ ├── META-INF/
│ │ │ │ │ ├── cdi-tck.properties
│ │ │ │ │ └── services/
│ │ │ │ │ └── org.jboss.arquillian.core.spi.LoadableExtension
│ │ │ │ └── arquillian.xml
│ │ │ ├── model/
│ │ │ │ ├── pom.xml
│ │ │ │ └── src/
│ │ │ │ └── test/
│ │ │ │ └── java/
│ │ │ │ └── org/
│ │ │ │ └── glassfish/
│ │ │ │ └── tck/
│ │ │ │ └── cdi/
│ │ │ │ └── lang/
│ │ │ │ └── model/
│ │ │ │ ├── CDILangModelTCKRunner.java
│ │ │ │ └── LangModelVerifierBuildCompatibleExtension.java
│ │ │ ├── pom.xml
│ │ │ └── signature/
│ │ │ └── pom.xml
│ │ ├── coreprofile/
│ │ │ ├── installer/
│ │ │ │ └── pom.xml
│ │ │ ├── pom.xml
│ │ │ └── runner/
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ └── test/
│ │ │ ├── java/
│ │ │ │ └── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── tck/
│ │ │ │ └── core/
│ │ │ │ └── CustomJsonbSerializationITFix.java
│ │ │ └── resources/
│ │ │ ├── META-INF/
│ │ │ │ └── services/
│ │ │ │ └── org.jboss.arquillian.core.spi.LoadableExtension
│ │ │ └── arquillian.xml
│ │ ├── inject/
│ │ │ ├── installer/
│ │ │ │ └── pom.xml
│ │ │ ├── pom.xml
│ │ │ └── runner/
│ │ │ └── pom.xml
│ │ ├── jsonb/
│ │ │ ├── installer/
│ │ │ │ └── pom.xml
│ │ │ ├── pom.xml
│ │ │ └── runner/
│ │ │ └── pom.xml
│ │ ├── jsonp/
│ │ │ ├── installer/
│ │ │ │ └── pom.xml
│ │ │ ├── pom.xml
│ │ │ └── runner/
│ │ │ └── pom.xml
│ │ ├── pom.xml
│ │ └── rest/
│ │ ├── installer/
│ │ │ └── pom.xml
│ │ ├── pom.xml
│ │ └── runner/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── test/
│ │ └── resources/
│ │ └── arquillian.xml
│ └── pom.xml
└── webprofile/
├── helloworld/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── helloworld/
│ │ │ └── ApplicationBean.java
│ │ └── webapp/
│ │ ├── WEB-INF/
│ │ │ └── beans.xml
│ │ ├── helloworld.jsp
│ │ └── index.html
│ └── test/
│ └── java/
│ └── helloworld/
│ └── HelloWorldIT.java
├── integration/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── integration/
│ │ │ ├── DependencyInjectionBean.java
│ │ │ ├── ExpressionBean.java
│ │ │ ├── FacesBean.java
│ │ │ ├── IntegrationApplication.java
│ │ │ ├── IntegrationBean.java
│ │ │ ├── IntegrationServlet.java
│ │ │ ├── InterceptBean.java
│ │ │ ├── InterceptInterceptor.java
│ │ │ └── Jsonb.java
│ │ └── webapp/
│ │ ├── WEB-INF/
│ │ │ ├── beans.xml
│ │ │ └── web.xml
│ │ ├── expression.jsp
│ │ ├── faces.xhtml
│ │ ├── jstl.jsp
│ │ └── pages.jsp
│ └── test/
│ └── java/
│ └── integration/
│ └── IntegrationIT.java
└── pom.xml
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/FUNDING.yml
================================================
github: mnriem
================================================
FILE: .github/dependabot.yml
================================================
version: 2
updates:
# Enable version updates for Maven
- package-ecosystem: "maven"
directory: "/"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
# Enable version updates for GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
================================================
FILE: .github/workflows/current.yml
================================================
name: current
on:
push:
branches:
- 'current'
tags-ignore:
- 'v*'
workflow_dispatch:
jobs:
build:
if: github.repository == 'piranhacloud/piranha'
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
java: [ 21 ]
os: [ubuntu-latest, windows-latest]
steps:
- name: Checkout Sources
uses: actions/checkout@v6
- name: Setup Java ${{ matrix.java }}
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: ${{ matrix.java }}
- name: Build with Maven
run: mvn -B -ntp -T 1 install
docs:
if: github.repository == 'piranhacloud/piranha'
runs-on: ubuntu-latest
steps:
- name: Checkout Piranha
uses: actions/checkout@v6
- name: Checkout Piranha Website
uses: actions/checkout@v6
with:
repository: piranhacloud/piranha-website
token: ${{ secrets.GIT_PASSWORD }}
path: piranha-website
ref: 'gh-pages'
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: 21
- name: Build with Maven
run: |
mvn -B -DskipTests=true -DskipITs=true -DstagingDirectory=$PWD/target/staging -ntp -P '!test' -T 1 clean install site site:stage
rm -rf piranha-website/snapshot || true
mkdir -p piranha-website/snapshot || true
cp -R target/staging/* piranha-website/snapshot/
cd piranha-website
git config --global user.email "noreply@piranha.cloud"
git config --global user.name "Automated publish"
git add .
git commit -a -m "Publishing SNAPSHOT documentation" || true
git push
ghcr:
if: github.repository == 'piranhacloud/piranha'
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v6
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: 21
- name: Build with Maven
run: mvn -B -Dmaven.javadoc.skip=true -DskipTests=true -DskipITs=true -ntp -P '!test' verify
- name: Login to GHCR
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
version: v0.10.0
- run: docker buildx inspect
- name: Build Docker images
run: |
mvn -B -Dmaven.javadoc.skip=true -DskipTests=true -DskipITs=true -ntp -P '!test' install
cd docker
mvn -B -DskipTests=true -DskipITs=true -ntp deploy
- name: Build Piranha Isolated image
run: |
mvn -B -Dmaven.javadoc.skip=true -DskipTests=true -DskipITs=true -ntp -P '!test' install
cd dist/isolated
mvn -B -DskipTests=true -DskipITs=true -ntp -P docker deploy
- name: Build Piranha Micro image
run: |
mvn -B -Dmaven.javadoc.skip=true -DskipTests=true -DskipITs=true -ntp -P '!test' install
cd dist/micro
mvn -B -DskipTests=true -DskipITs=true -ntp -P docker deploy
- name: Build Piranha MicroProfile image
run: |
mvn -B -Dmaven.javadoc.skip=true -DskipTests=true -DskipITs=true -ntp -P '!test' install
cd dist/microprofile
mvn -B -DskipTests=true -DskipITs=true -ntp -P docker deploy
- name: Build Piranha Platform image
run: |
mvn -B -Dmaven.javadoc.skip=true -DskipTests=true -DskipITs=true -ntp -P '!test' install
cd dist/platform
mvn -B -DskipTests=true -DskipITs=true -ntp -P docker deploy
- name: Build Piranha Server image
run: |
mvn -B -Dmaven.javadoc.skip=true -DskipTests=true -DskipITs=true -ntp -P '!test' install
cd dist/server
mvn -B -DskipTests=true -DskipITs=true -ntp -P docker deploy
- name: Build Piranha Servlet image
run: |
mvn -B -Dmaven.javadoc.skip=true -DskipTests=true -DskipITs=true -ntp -P '!test' install
cd dist/servlet
mvn -B -DskipTests=true -DskipITs=true -ntp -P docker deploy
- name: Build Piranha Web Profile image
run: |
mvn -B -Dmaven.javadoc.skip=true -DskipTests=true -DskipITs=true -ntp -P '!test' install
cd dist/webprofile
mvn -B -DskipTests=true -DskipITs=true -ntp -P docker deploy
sonatype:
if: false # github.repository == 'piranhacloud/piranha'
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v6
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: 21
server-id: ossrh
server-username: MAVEN_USERNAME
server-password: MAVEN_PASSWORD
- name: Build with Maven
run: mvn -B -DskipTests=true -P '!test' -ntp deploy
env:
MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }}
MAVEN_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
================================================
FILE: .github/workflows/docs.yml
================================================
name: docs
on:
workflow_dispatch:
inputs:
version:
description: 'Release version'
required: true
jobs:
docs:
runs-on: ubuntu-latest
steps:
- name: Checkout Piranha
uses: actions/checkout@v6
with:
ref: v${{ github.event.inputs.version }}
- name: Checkout Piranha Website
uses: actions/checkout@v6
with:
repository: piranhacloud/piranha-website
token: ${{ secrets.GIT_PASSWORD }}
path: piranha-website
ref: 'gh-pages'
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: 21
- name: Build with Maven
run: |
mvn -B -DskipTests -DskipITs -DstagingDirectory=$PWD/target/staging -ntp -P '!test' -T 1 install site site:stage
rm -rf piranha-website/release || true
mkdir -p piranha-website/release || true
cp -R target/staging/* piranha-website/release/
cd piranha-website
git config --global user.email "noreply@piranha.cloud"
git config --global user.name "Automated publish"
git add .
git commit -a -m "Publishing ${{ github.event.inputs.version }} documentation" || true
git push
================================================
FILE: .github/workflows/experimental.yml
================================================
name: experimental
on:
schedule:
- cron: "0 0 * * 0"
workflow_dispatch:
jobs:
build:
if: github.repository == 'piranhacloud/piranha'
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
distribution: [ 'temurin' ]
java: [ '23', '24-ea', '25-ea' ]
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- name: Checkout Sources
uses: actions/checkout@v6
- name: Setup Java ${{ matrix.java }}
uses: actions/setup-java@v4
with:
distribution: ${{ matrix.distribution }}
java-version: ${{ matrix.java }}
- name: Build with Maven
run: mvn -B -ntp -T 1 install
result:
if: ${{ always() }} && github.repository == 'piranhacloud/piranha'
runs-on: ubuntu-latest
needs: build
steps:
- name: Check build results
run: |
result="${{ needs.build.result }}"
if [[ $result == "success" || $result == "skipped" ]]; then
echo "All matrix jobs were successful or skipped."
exit 0
else
echo "One or more matrix jobs failed."
exit 0
fi
================================================
FILE: .github/workflows/pr.yml
================================================
name: pr
on:
pull_request:
branches:
- '*'
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
java: [ 21 ]
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- name: Checkout Sources
uses: actions/checkout@v6
- name: Setup Java ${{ matrix.java }}
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: ${{ matrix.java }}
- name: Build with Maven
run: mvn -B -ntp -T 1 install
- name: Build Docker images
if: matrix.os == 'ubuntu-latest'
run: |
cd docker
mvn -B -ntp install
codeql:
name: codeql
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
steps:
- name: Checkout sources
uses: actions/checkout@v6
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: 'java'
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '21'
- name: Build with Maven
run: mvn -B -DskipTests=true -DskipITs=true -ntp install
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
docs:
runs-on: ubuntu-latest
steps:
- name: Checkout Piranha
uses: actions/checkout@v6
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: 21
- name: Build with Maven
run: |
mvn -B -DskipTests=true -DskipITs=true -ntp -T 1 install site
================================================
FILE: .github/workflows/release.yml
================================================
name: release
on:
push:
tags:
- v*
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v6
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: 21
server-id: ossrh
server-username: MAVEN_USERNAME
server-password: MAVEN_PASSWORD
gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }}
gpg-passphrase: MAVEN_GPG_PASSPHRASE
- name: Build with Maven
run: mvn --no-transfer-progress -B -DskipTests=true install
- name: Login to GHCR
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
version: v0.10.0
- run: docker buildx inspect
# - run: docker buildx inspect
# - name: Build Docker images
# run: |
# mvn -B -Dmaven.javadoc.skip=true -DskipTests=true -DskipITs=true -ntp -P '!test' install
# cd docker
# mvn -B -DskipTests=true -DskipITs=true -ntp -P docker docker:deploy
- name: Build Piranha Micro image
run: |
mvn -B -Dmaven.javadoc.skip=true -DskipTests=true -DskipITs=true -ntp -P '!test' install
cd dist/micro
mvn -B -DskipTests=true -DskipITs=true -ntp -P docker deploy
- name: Build Piranha Micro Profile image
run: |
mvn -B -Dmaven.javadoc.skip=true -DskipTests=true -DskipITs=true -ntp -P '!test' install
cd dist/microprofile
mvn -B -DskipTests=true -DskipITs=true -ntp -P docker deploy
- name: Build Piranha Platform image
run: |
mvn -B -Dmaven.javadoc.skip=true -DskipTests=true -DskipITs=true -ntp -P '!test' install
cd dist/platform
mvn -B -DskipTests=true -DskipITs=true -ntp -P docker deploy
- name: Build Piranha Server image
run: |
mvn -B -Dmaven.javadoc.skip=true -DskipTests=true -DskipITs=true -ntp -P '!test' install
cd dist/server
mvn -B -DskipTests=true -DskipITs=true -ntp -P docker deploy
- name: Build Piranha Servlet image
run: |
mvn -B -Dmaven.javadoc.skip=true -DskipTests=true -DskipITs=true -ntp -P '!test' install
cd dist/servlet
mvn -B -DskipTests=true -DskipITs=true -ntp -P docker deploy
- name: Build Piranha Web Profile image
run: |
mvn -B -Dmaven.javadoc.skip=true -DskipTests=true -DskipITs=true -ntp -P '!test' install
cd dist/webprofile
mvn -B -DskipTests=true -DskipITs=true -ntp -P docker deploy
- name: Build with Maven
run: |
export MAVEN_OPTS='--add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.desktop/java.awt.font=ALL-UNNAMED'
mvn -B -DstagingProgressTimeoutMinutes=10 -DskipTests=true -P 'release,!test' -ntp clean deploy
env:
MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }}
MAVEN_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
================================================
FILE: .github/workflows/stale.yml
================================================
name: stale
on:
schedule:
- cron: "0 0 * * *"
workflow_dispatch:
jobs:
stale:
if: github.repository == 'piranhacloud/piranha'
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v10
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
stale-issue-message: 'This issue is stale because it has been open 170 days with no activity. Remove stale label or comment or this will be closed in 10 days'
stale-pr-message: 'This PR is stale because it has been open 170 days with no activity. Remove stale label or comment or this will be closed in 10 days'
days-before-stale: 170
days-before-close: 10
================================================
FILE: .github/workflows/tck-coreprofile.yml
================================================
name: tck-coreprofile
on:
schedule:
- cron: "0 0 * * *"
workflow_dispatch:
inputs:
branch:
description: 'Branch / Tag'
required: true
default: 'current'
jobs:
annotations:
if: github.repository == 'piranhacloud/piranha'
runs-on: ${{ matrix.os }}
strategy:
matrix:
java: [ '21' ]
os: [ubuntu-latest]
steps:
- name: Checkout Sources
uses: actions/checkout@v6
- name: Set up Java ${{ matrix.java }}
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: ${{ matrix.java }}
- name: Run Annotations TCK
run: |
mvn -B -DskipTests=true -DskipITs=true -ntp install
cd test/tck/coreprofile/annotations
mvn -B -fae -ntp install
- name: Annotation TCK Test Summary
uses: test-summary/action@v2
with:
paths: "test/tck/coreprofile/annotations/runner/target/failsafe-reports/*IT.xml"
if: always()
cdi:
if: github.repository == 'piranhacloud/piranha'
runs-on: ${{ matrix.os }}
strategy:
matrix:
java: [ '21' ]
os: [ubuntu-latest]
steps:
- name: Checkout Sources
uses: actions/checkout@v6
- name: Set up Java ${{ matrix.java }}
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: ${{ matrix.java }}
- name: Run TCK
run: |
mvn -B -DskipTests=true -DskipITs=true -ntp install
cd test/tck/coreprofile/cdi
mvn -B -fae -ntp install
- name: Test Summary
uses: test-summary/action@v2
with:
paths: |
cdi/runner/core/target/surefire-reports/junitreports/TEST-*.xml
cdi/runner/model/target/surefire-reports/TEST-*.xml
if: always()
coreprofile:
if: github.repository == 'piranhacloud/piranha'
runs-on: ${{ matrix.os }}
strategy:
matrix:
java: [ '21' ]
os: [ubuntu-latest]
steps:
- name: Checkout Sources
uses: actions/checkout@v6
- name: Set up Java ${{ matrix.java }}
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: ${{ matrix.java }}
- name: Run TCK
run: |
mvn -B -DskipTests=true -DskipITs=true -ntp install
cd test/tck/coreprofile/coreprofile
mvn -B -fae -ntp install
- name: Test Summary
uses: test-summary/action@v2
with:
paths: "test/tck/coreprofile/coreprofile/runner/target/failsafe-reports/**/TEST-*.xml"
if: always()
inject:
if: github.repository == 'piranhacloud/piranha'
runs-on: ${{ matrix.os }}
strategy:
matrix:
java: [ '21' ]
os: [ubuntu-latest]
steps:
- name: Checkout Sources
uses: actions/checkout@v6
- name: Set up Java ${{ matrix.java }}
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: ${{ matrix.java }}
- name: Run Inject TCK
run: |
mvn -B -DskipTests=true -DskipITs=true -ntp install
cd test/tck/coreprofile/inject
mvn -B -fae -ntp install
- name: Test Summary
uses: test-summary/action@v2
with:
paths: "test/tck/coreprofile/inject/installer/target/tck/example/target/surefire-reports/TEST-*.xml"
if: always()
jsonb:
if: github.repository == 'piranhacloud/piranha'
runs-on: ${{ matrix.os }}
strategy:
matrix:
java: [ '21' ]
os: [ubuntu-latest]
steps:
- name: Checkout Sources
uses: actions/checkout@v6
- name: Set up Java ${{ matrix.java }}
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: ${{ matrix.java }}
- name: Run JSON Binding TCK
run: |
mvn -B -DskipTests=true -DskipITs=true -ntp install
cd test/tck/coreprofile/jsonb
mvn -B -fae -ntp install
- name: Test Summary
uses: test-summary/action@v2
with:
paths: "test/tck/coreprofile/jsonb/installer/target/tck/bin/target/surefire-reports/TEST-*.xml"
if: always()
jsonp:
if: github.repository == 'piranhacloud/piranha'
runs-on: ${{ matrix.os }}
strategy:
matrix:
java: [ '21' ]
os: [ubuntu-latest]
steps:
- name: Checkout Sources
uses: actions/checkout@v6
- name: Set up Java ${{ matrix.java }}
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: ${{ matrix.java }}
- name: Run TCK
run: |
mvn -B -DskipTests=true -DskipITs=true -ntp install
cd test/tck/coreprofile/jsonp
mvn -B -fae -ntp install
- name: Test Summary
uses: test-summary/action@v2
with:
paths: |
test/tck/coreprofile/jsonp/installer/target/tck/bin/tck-tests/target/surefire-reports/TEST-*.xml
test/tck/coreprofile/jsonp/installer/target/tck/bin/tck-tests-pluggability/target/surefire-reports/TEST-*.xml
if: always()
rest:
if: github.repository == 'piranhacloud/piranha'
runs-on: ${{ matrix.os }}
strategy:
matrix:
java: [ '21' ]
os: [ubuntu-latest]
steps:
- name: Checkout Sources
uses: actions/checkout@v6
- name: Set up Java ${{ matrix.java }}
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: ${{ matrix.java }}
- name: Run TCK
run: |
mvn -B -DskipTests=true -DskipITs=true -ntp install
cd test/tck/coreprofile/rest
mvn -B -fae -ntp install
- name: Test Summary
uses: test-summary/action@v2
id: test_summary
with:
paths: "test/tck/coreprofile/rest/runner/target/failsafe-reports/**/TEST-*.xml"
output: test-summary.md
if: always()
- name: Job Summary
run: |
echo "${{ steps.test_summary.outputs.passed }} out of ${{ steps.test_summary.outputs.total }} tests passed" >> $GITHUB_STEP_SUMMARY
if: always()
result:
if: github.repository == 'piranhacloud/piranha'
runs-on: ubuntu-latest
needs: [annotations, cdi, coreprofile, inject, jsonb, jsonp, rest]
steps:
- name: Check build results
run: |
result="${{ needs.build.result }}"
if [[ $result == "success" || $result == "skipped" ]]; then
echo "All TCK jobs were successful or skipped."
exit 0
else
echo "One or more TCK jobs failed."
exit 0
fi
================================================
FILE: .github/workflows/trigger.yml
================================================
name: trigger
on:
workflow_dispatch:
inputs:
branch:
description: 'Branch to release from'
required: true
default: 'current'
version:
description: 'Release version'
required: true
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v6
with:
token: ${{ secrets.GIT_PASSWORD }}
- name: Release from given branch with given version
run: |
git fetch --no-tags --prune --depth=1 origin +refs/heads/*:refs/remotes/origin/*
BRANCH=${{ github.event.inputs.branch }}
TAG=${GITHUB_REF}
VERSION=${{ github.event.inputs.version }}
echo "Releasing $VERSION from $BRANCH branch"
git checkout $BRANCH
git checkout -b release
mvn -B versions:set versions:commit -DnewVersion=$VERSION
git config --global user.email "noreply@piranha.cloud"
git config --global user.name "Automated release"
git commit -a -m "Releasing version $VERSION from $BRANCH branch"
git tag v$VERSION -f
git push origin v$VERSION -f
git checkout $BRANCH
git branch -D release
================================================
FILE: .gitignore
================================================
.classpath
.factorypath
.DS_Store
.project
.settings/
.vscode
dependency-reduced-pom.xml
nb-configuration.xml
nbactions.xml
nbproject/
target/
.idea
*.iml
*.original~
dist/server/tmp/
dist/platform/tmp/
.flattened-pom.xml
bin/
piranha.pid
================================================
FILE: CODE_CONVENTIONS.md
================================================
Eclipse/Sun code conventions with
* Spaces only
* Indentation size 4 spaces
* Maximum line width 160
* Maximum width for comments 120
* No indent of Javadoc tags
* No newline after @param tags
## Javadoc
### Parameters
```
@param a The first parameter. For an optimum result, this should be an odd
number between 0 and 100.
```
## Variable naming style
Based on the advice from Uncle Bob's Clean Code, specifically:
* No cryptic abbreviations like c, ta, rx, ct, except for the well-established i and j in loops
* No variable names like ret, rvalue, result etc for variables that are returned from methods. Instead, they should be named after what they actually return.
For example:
Bad:
```java
public Permissions getCallerPermission(....) {
Permissions rvalue;
// ton of code
return rvalue;
}
```
Good:
```java
public Permissions getCallerPermissions(....) {
Permissions callerPermissions;
// ton of code
return callerPermissions;
}
```
* No Hungarian variations for collections like usrLst, usArray, arrUsers, UserCol, etc, and no such variation for elements of the collection like el, elm, usrEl, userElem, currentUsr, curUser, userCr, etc. Omit the Hungarian and use the element type name directly and the plural of that for the collection.
For example:
Bad:
```java
for (User curUsr : colUser) {
...
}
```
Good:
```java
for (User user : users) {
...
}
```
## Conditional blocks
### Handle the short and fast error case for method parameters early instead of the happy path.
For example:
Bad:
```java
public void foo(Bar bar) {
if (bar != null) {
// lots of code here
} else {
throw new IllegalStateException("Bar should not be null");
}
}
```
Good:
```java
public void foo(Bar bar) {
if (bar == null) {
throw new IllegalStateException("Bar should not be null");
}
// lots of code here
}
```
### if/else blocks that return don't need to be if/else blocks.
For example:
Bad:
```java
if (foo == something) {
return somethingFoo;
} else if (foo == somethingElse) {
return somethingElseFoo;
}
```
Good:
```java
if (foo == something) {
return somethingFoo;
}
if (foo == somethingElse) {
return somethingElseFoo;
}
```
## Defaults
### Omit initialisation of instance variables to their default values.
For example:
Bad:
```java
public class SomeClass {
private int someNumber = 0;
private Foo someFoo = null;
private boolean isFoo = false;
}
```
Good:
```java
public class SomeClass {
private int someNumber;
private Foo someFoo;
private boolean isFoo;
}
```
### Omit using the public modifier for interface methods.
For example:
Bad:
```java
public interface MyInterface {
public void MyMethod();
}
```
Good:
```java
public interface MyInterface {
void MyMethod();
}
```
### Omit unnecessary final modifiers on local and method parameters
Bad:
```java
public void foo(final Bar bar) {
// lots of code here
}
```
Good:
```java
public void foo(Bar bar) {
// lots of code here
}
```
### Omit unnecessary usage of `this`
Bad:
```java
public Foo getFoo() {
return this.foo;
}
```
Good:
```java
public Foo getFoo() {
return foo;
}
```
### Omit unnecessary braces.
For example:
Bad
```java
return (1);
```
Good
```java
return 1;
```
================================================
FILE: CONTRIBUTING.md
================================================
# Contributing
How can I contribute to Piranha? Well it all depends on the level of
involvement you are aiming for. The following comes to mind:
1. Write blog entries with example applications
2. File issues for bugs you encounter.
3. Answer questions that people file at the issue tracker.
4. Fork the repository and issue pull requests.
Which ever level you pick we welcome you!
## Important notice
Note if you file issues, answer questions and/or issue pull requests you agree
that those contributions will be owned by Manorrock.com and that Manorrock.com
can use those contributions in any manner Manorrock.com so desires.
## Building and testing Piranha locally
### Building Piranha and running the tests
```
mvn clean install
```
If you do not want the tests to run use:
```
mvn -DskipTests clean install
```
### Running a singular test
To run a singular test pass in `-Dtest=expression`, see the `surefire` plugin
documentation for more information.
### Running our more complex tests
Our more complex tests are in the `test` profile which we do not release as part
of a release because these modules only test functionality.
You can run our more complex tests using:
```
mvn -P test clean install
```
### Run the external tests (including TCKs)
To run all the external tests use:
```
mvn -P external clean install
```
Or go into the directory of the external test you want to run and use:
```
mvn clean install
```
For the Servlet TCK if you want to run a singular test use
`-Drun.test=expression`. See the example below.
```
mvn -Drun.test=com/sun/ts/tests/servlet/spec/errorpage/URLClient.java#servletToDifferentErrorPagesTest verify
```
## Problems
Support for Java modules has a feature gap in Eclipse and as such a workaround
needs to be employed to make it work properly (June 2021).
================================================
FILE: LICENSE
================================================
Copyright (c) 2002-2021 Manorrock.com. All Rights Reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
================================================
FILE: README.md
================================================

# Piranha Project

The Piranha Project delivers you with Cloud ready containers and useful add-on /
integration modules.
## Quickstart
Download a JAR based distribution from <a href="https://repo1.maven.org/maven2/cloud/piranha/dist/">Maven Central</a>.
And run your web application using:
```
java -jar piranha-dist-XXX.jar --war-file your-webapplication.war
```
## Getting Started
To get started with Piranha please go
[here](https://piranha.cloud/release/index.html).
## How do I contribute?
See [Contributing](CONTRIBUTING.md)
## Our code of Conduct
See [Code of Conduct](CODE_OF_CONDUCT.md)
## Important notice
Note if you file issues or answer questions on the issue tracker and/or issue
pull requests you agree that those contributions will be owned by Manorrock.com
and that Manorrock.com can use those contributions in any manner Manorrock.com
so desires.
================================================
FILE: RELEASE.md
================================================
# Release process
The release process described below uses the 'current' branch. For patch
releases see the [Patch releases](#patch-releases) section below
## On the 11th of the month
1. Create release-X.Y.Z branch from current
1. Trigger the current workflow against the release-X.Y.Z branch
1. Wait for the build on the release-X.Y.Z branch to complete
1. If the build was not successful
1. Checkout the release-X.Y.Z branch
1. Apply whatever fixes are needed
1. Commit and push them to release-X.Y.Z branch
1. Redo steps #2 and #3
1. On the current branch update the POMs to point to the next SNAPSHOT version
## On the 13th of the month
1. Trigger release using release-X.Y.Z as branch to release from
1. If release build fails
1. Remove the vX.Y.Z tag
1. Checkout the release-X.Y.Z branch
1. Apply whatever fixes are needed
1. Commit and push them to release-X.Y.Z
1. Retrigger the release
1. Trigger release docs workflow
1. Create release notes
1. Set correct tag for release notes
1. Make sure “Create a discussion for this release” is checked
1. Make sure Category is set to General
1. Publish release notes
1. Wait for release bits to show up on Maven Central
1. On the piranha_cloud Twitter announce that Piranha X.Y.Z has been released and make sure to thank our contributors.
1. Apply fixes from release-X.Y.Z branch to the current branch with a corresponding issue (if any).
1. Delete the release-X.Y.Z branch
1. Close the milestone on GitHub
## Patch releases
If you are creating a patch release against a branch please follow all the
steps above skipping the release docs workflow and replace current with
the branch you are patching against where appropriate (without waiting a
day in between).
================================================
FILE: SECURITY.md
================================================
# Security Policy
## Reporting a Vulnerability
Please email info@piranha.cloud describing the issue
(preferably with a reproducer and/or a fix)
================================================
FILE: arquillian/managed/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>cloud.piranha.arquillian</groupId>
<artifactId>project</artifactId>
<version>25.4.0-SNAPSHOT</version>
</parent>
<artifactId>piranha-arquillian-managed</artifactId>
<packaging>jar</packaging>
<name>Piranha - Arquillian - Managed</name>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<useModulePath>false</useModulePath>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>me.alexpanov</groupId>
<artifactId>free-port-finder</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.jboss.arquillian.container</groupId>
<artifactId>arquillian-container-spi</artifactId>
<scope>compile</scope>
<exclusions>
<exclusion>
<groupId>org.jboss.shrinkwrap.descriptors</groupId>
<artifactId>shrinkwrap-descriptors-api-base</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.jboss.arquillian.container</groupId>
<artifactId>arquillian-container-test-spi</artifactId>
<scope>compile</scope>
<exclusions>
<exclusion>
<groupId>org.jboss.shrinkwrap.descriptors</groupId>
<artifactId>shrinkwrap-descriptors-api-base</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.jboss.arquillian.protocol</groupId>
<artifactId>arquillian-protocol-servlet-jakarta</artifactId>
<scope>compile</scope>
<exclusions>
<exclusion>
<groupId>org.jboss.shrinkwrap.descriptors</groupId>
<artifactId>shrinkwrap-descriptors-api-base</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.jboss.arquillian.testenricher</groupId>
<artifactId>arquillian-testenricher-cdi-jakarta</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.jboss.arquillian.testenricher</groupId>
<artifactId>arquillian-testenricher-ejb-jakarta</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.jboss.arquillian.testenricher</groupId>
<artifactId>arquillian-testenricher-initialcontext</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.jboss.arquillian.testenricher</groupId>
<artifactId>arquillian-testenricher-resource-jakarta</artifactId>
<scope>compile</scope>
</dependency>
<!-- test -->
<dependency>
<groupId>org.jboss.shrinkwrap</groupId>
<artifactId>shrinkwrap-impl-base</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jboss.shrinkwrap.descriptors</groupId>
<artifactId>shrinkwrap-descriptors-api-base</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<distributionManagement>
<site>
<id>default</id>
<url>file:///tmp/piranha/arquillian/managed/</url>
</site>
</distributionManagement>
</project>
================================================
FILE: arquillian/managed/src/main/java/cloud/piranha/arquillian/managed/ManagedPiranhaContainer.java
================================================
/*
* Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package cloud.piranha.arquillian.managed;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
import org.jboss.arquillian.container.spi.client.container.DeployableContainer;
import org.jboss.arquillian.container.spi.client.container.DeploymentException;
import org.jboss.arquillian.container.spi.client.protocol.ProtocolDescription;
import org.jboss.arquillian.container.spi.client.protocol.metadata.HTTPContext;
import org.jboss.arquillian.container.spi.client.protocol.metadata.ProtocolMetaData;
import org.jboss.arquillian.container.spi.client.protocol.metadata.Servlet;
import org.jboss.shrinkwrap.api.Archive;
import org.jboss.shrinkwrap.api.exporter.ZipExporter;
import static java.lang.System.Logger.Level.INFO;
import static java.lang.System.Logger.Level.WARNING;
import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
/**
* The Managed Piranha container.
*
* @author Manfred Riem (mriem@manorrock.com)
*/
public class ManagedPiranhaContainer implements DeployableContainer<ManagedPiranhaContainerConfiguration> {
/**
* Stores the logger.
*/
private static final System.Logger LOGGER = System.getLogger(ManagedPiranhaContainer.class.getName());
/**
* Stores the PID filename.
*/
private static final String PID_FILENAME = "tmp/piranha.pid";
/**
* Stores the java.io.tmpdir constant.
*/
private static final String TMP_DIR = "java.io.tmpdir";
/**
* Stores the 'Unable to create directories' message.
*/
private static final String UNABLE_TO_CREATE_DIRECTORIES = "Unable to create directories";
/**
* Stores the configuration.
*/
private ManagedPiranhaContainerConfiguration configuration;
/**
* Stores the local repository directory.
*/
private File localRepositoryDir = new File(System.getProperty("user.home"), ".m2/repository");
/**
* Stores the Piranha process.
*/
private Process process;
/**
* Default constructor.
*/
public ManagedPiranhaContainer() {
}
@Override
public Class<ManagedPiranhaContainerConfiguration> getConfigurationClass() {
return ManagedPiranhaContainerConfiguration.class;
}
@Override
public void setup(ManagedPiranhaContainerConfiguration configuration) {
this.configuration = configuration;
}
@SuppressWarnings("exports")
@Override
public ProtocolDescription getDefaultProtocol() {
return new ProtocolDescription(configuration.getProtocol());
}
@SuppressWarnings("exports")
@Override
public ProtocolMetaData deploy(Archive<?> archive) throws DeploymentException {
LOGGER.log(INFO, "Deploying " + archive.getName());
ProtocolMetaData metadata = new ProtocolMetaData();
try {
/*
* Export the Archive into a WAR file.
*/
String warFileName = toWarFilename(archive);
File runtimeDirectory = new File(System.getProperty(TMP_DIR), toAppName(warFileName));
runtimeDirectory.mkdirs();
File warFile = new File(runtimeDirectory, warFileName);
archive.as(ZipExporter.class).exportTo(warFile, true);
/*
* Copy runtime JAR into the runtime diectory.
*/
String version = determineVersionToUse();
File piranhaJarFile = getPiranhaJarFile(version);
copyPiranhaJarFile(runtimeDirectory, piranhaJarFile);
/*
* Start Piranha.
*/
startPiranha(runtimeDirectory, warFile);
} catch (IOException ioe) {
ioe.printStackTrace();
return null;
}
HTTPContext httpContext = new HTTPContext("localhost", configuration.getHttpPort());
httpContext.add(new Servlet(
"ArquillianServletRunnerEE9",
archive.getName().substring(0, archive.getName().lastIndexOf("."))));
metadata.addContext(httpContext);
return metadata;
}
@Override
public void undeploy(Archive<?> archive) throws DeploymentException {
LOGGER.log(INFO, "Undeploying " + archive.getName());
/*
* Delete the PID file.
*/
File runtimeDirectory = new File(System.getProperty(TMP_DIR), toAppName(archive));
File pidFile = new File(runtimeDirectory, PID_FILENAME);
if (pidFile.exists()) {
try {
Files.delete(pidFile.toPath());
} catch (IOException ioe) {
LOGGER.log(WARNING, "Error deleting PID file", ioe);
}
}
/*
* Wait for 5 minutes at the most.
*/
if (process != null && process.isAlive()) {
try {
LOGGER.log(INFO, "Waiting for Piranha to be shutdown");
long startTime = System.currentTimeMillis();
process.waitFor(30, TimeUnit.SECONDS);
Long finishTime = System.currentTimeMillis();
LOGGER.log(INFO, "Piranha has shutdown\n It took {0} milliseconds", finishTime - startTime);
} catch (InterruptedException ie) {
LOGGER.log(WARNING, "Piranha did not shutdown within time alloted");
LOGGER.log(WARNING, "Destroying Piranha process forcibly");
process.destroyForcibly();
}
}
/*
* Delete the WAR file.
*/
File warFile = new File(runtimeDirectory, toWarFilename(archive));
warFile.delete();
}
/**
* Creates a WAR filename for the archive.
*
* @param archive the archive.
* @return the WAR filename.
*/
private String toWarFilename(Archive<?> archive) {
String warFilename = archive.getName();
if (isEmpty(archive.getName())) {
warFilename = "ROOT.war";
}
return warFilename;
}
private String toAppName(String warFileName) {
return warFileName.substring(0, warFileName.lastIndexOf("."));
}
private String toAppName(Archive<?> archive) {
return toAppName(toWarFilename(archive));
}
/**
* Get the Piranha JAR file.
*
* @param version the version.
* @return the zip file.
* @throws IOException when an I/O error occurs.
*/
private File getPiranhaJarFile(String version) throws IOException {
URL downloadUrl = createMavenCentralArtifactUrl(
"cloud.piranha.dist",
"piranha-dist-" + configuration.getDistribution(),
version,
"jar"
);
String artifactPath = createArtifactPath(
"cloud.piranha.dist",
"piranha-dist-" + configuration.getDistribution(),
version,
"jar"
);
File zipFile = new File(localRepositoryDir, artifactPath);
if (!zipFile.exists() && !zipFile.getParentFile().mkdirs()) {
LOGGER.log(WARNING, UNABLE_TO_CREATE_DIRECTORIES);
}
try (InputStream inputStream = downloadUrl.openStream()) {
Files.copy(inputStream,
zipFile.toPath(),
REPLACE_EXISTING);
} catch (IOException fnfe) {
LOGGER.log(WARNING, "Could not download JAR file, defaulting back to local Maven repository");
}
return new File(localRepositoryDir, artifactPath);
}
/**
* Create artifact path.
*
* @param groupId the groupId.
* @param artifactId the artifactId.
* @param version the version
* @param type the type.
*/
private String createArtifactPath(String groupId, String artifactId, String version, String type) {
String artifactPathFormat = "%s/%s/%s/%s-%s.%s";
return String.format(artifactPathFormat,
convertGroupIdToPath(groupId),
artifactId,
version,
artifactId,
version,
type.toLowerCase());
}
/**
* Convert the groupId to path.
*
* @param groupId the groupId.
* @return the path.
*/
private String convertGroupIdToPath(String groupId) {
return groupId.replace('.', '/');
}
/**
* Create the Maven central artifact URL
*
* @param groupId the groupId.
* @param artifactId the artifactId.
* @param version the version
* @param type the type.
* @return the URL.
* @throws IOException when an I/O error occurs.
*/
@SuppressWarnings("deprecation")
private URL createMavenCentralArtifactUrl(String groupId, String artifactId, String version, String type) throws IOException {
return new URL("https://repo1.maven.org/maven2/" + createArtifactPath(groupId, artifactId, version, type));
}
/**
* Determine what version of Piranha to use.
*
* @return the version.
*/
private String determineVersionToUse() {
return getClass().getPackage().getImplementationVersion();
}
/**
* Kill any process currently listening on the given port.
*
* @param port the port to free up.
*/
private void killProcessOnPort(int port) {
try {
ProcessBuilder finder = new ProcessBuilder(
"sh", "-c",
"lsof -ti tcp:" + port + " -sTCP:LISTEN");
finder.redirectErrorStream(true);
Process findProcess = finder.start();
String pids = new String(findProcess.getInputStream().readAllBytes()).trim();
findProcess.waitFor(5, TimeUnit.SECONDS);
if (!pids.isEmpty()) {
for (String pid : pids.split("\\s+")) {
if (!pid.isEmpty()) {
LOGGER.log(WARNING, "Port {0} is still in use by PID {1}, killing it", port, pid);
new ProcessBuilder("kill", "-9", pid)
.start()
.waitFor(5, TimeUnit.SECONDS);
}
}
// Brief pause so the OS releases the port
Thread.sleep(200);
}
} catch (IOException | InterruptedException e) {
LOGGER.log(WARNING, "Could not clean up port {0}: {1}", port, e.getMessage());
}
}
/**
* Start Piranha.
*
* @param runtimeDirectory the runtime directory.
* @param warFile the WAR filename.
*/
private void startPiranha(File runtimeDirectory, File warFile) throws IOException, DeploymentException {
killProcessOnPort(configuration.getHttpPort());
File stalePidFile = new File(runtimeDirectory, PID_FILENAME);
if (stalePidFile.exists()) {
try {
Files.delete(stalePidFile.toPath());
} catch (IOException ioe) {
LOGGER.log(WARNING, "Could not delete stale PID file: {0}", ioe.getMessage());
}
}
List<String> commands = new ArrayList<>();
StringBuilder classpath = new StringBuilder();
commands.add("java");
String[] jvmArgs = configuration.getJvmArguments().split("\\s+");
if (jvmArgs.length > 0) {
for(int i=0; i<jvmArgs.length; i++) {
if (jvmArgs[i] != null && !jvmArgs[i].trim().equals("")) {
commands.add(jvmArgs[i]);
}
if (jvmArgs[i] != null && jvmArgs[i].trim().equals("-cp")) {
// ignore this one.
}
if (i > 0 && jvmArgs[i] != null && jvmArgs[i-1].trim().equals("-cp")) {
classpath.append(jvmArgs[i].trim()).append(File.pathSeparatorChar);
}
}
}
if (!configuration.getCallerName().isEmpty()) {
commands.add("-Dio.piranha.identitystore.callers=<callers><caller callername=\""
+ configuration.getCallerName() + "\" password=\""
+ configuration.getCallerPassword() + "\" groups=\""
+ configuration.getCallerGroups() + "\"/></callers>");
}
if (configuration.isDebug()) {
commands.add("-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=localhost:9009");
}
if (configuration.isSuspend()) {
commands.add("-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=localhost:9009");
}
if (classpath.isEmpty()) {
commands.add("-jar");
commands.add("piranha-" + configuration.getDistribution() + ".jar");
} else {
commands.add("-cp");
commands.add(classpath.toString() + "piranha-" + configuration.getDistribution() + ".jar");
if (configuration.getDistribution().equals("coreprofile")) {
commands.add("cloud.piranha.dist.coreprofile.CoreProfilePiranhaMain");
}
if (configuration.getDistribution().equals("webprofile")) {
commands.add("cloud.piranha.dist.webprofile.WebProfilePiranhaMain");
}
}
commands.add("--http-port");
commands.add(Integer.toString(configuration.getHttpPort()));
commands.add("--war-file");
commands.add(warFile.getName());
commands.add("--write-pid");
String appName = toAppName(warFile.getName());
String appURL = "http://localhost:" + Integer.toString(configuration.getHttpPort()) + "/" + appName;
File logFile = new File(runtimeDirectory, appName + ".log");
LOGGER.log(INFO,
"""
Starting Piranha
Classpath: {0}
Directory: {1}
Log: {2}
URL: {3}
""",
classpath.toString(),
runtimeDirectory,
logFile.getAbsolutePath(),
appURL);
process = new ProcessBuilder()
.directory(runtimeDirectory)
.command(commands)
.redirectErrorStream(true)
.redirectOutput(logFile)
.start();
File pidFile = new File(runtimeDirectory, PID_FILENAME);
int count = 0;
LOGGER.log(INFO, "Waiting for Piranha to be ready");
while (!pidFile.exists() && process.isAlive()) {
try {
Thread.sleep(100);
count++;
} catch (InterruptedException ie) {
}
if (configuration.isSuspend()) {
if (count % 500 == 0) {
LOGGER.log(INFO, "Still waiting (infinite, because suspend on port 9009)");
}
continue;
}
if (count % 20 == 0) {
LOGGER.log(INFO, "Still waiting... ({0} of {1})", (count / 20), (1200 / 20));
}
if (count == 1200) {
LOGGER.log(WARNING, "Warning, PID file not seen!");
break;
}
}
if (!process.isAlive()) {
LOGGER.log(WARNING, "Piranha terminated during startup.");
String msg = "Cannot start Piranha. \n";
if (process.getErrorStream() != null) {
msg += Files.readString(logFile.toPath());
}
throw new DeploymentException(msg);
}
LOGGER.log(INFO,
"\n" +
"Application is available at: " + appURL);
}
/**
* Copy the Piranha JAR file.
*
* @param runtimeDirectory the runtime directory.
* @param zipFile the zip file.
*/
private void copyPiranhaJarFile(File runtimeDirectory, File zipFile) throws IOException {
if (!runtimeDirectory.exists() && !runtimeDirectory.mkdirs()) {
System.err.println(UNABLE_TO_CREATE_DIRECTORIES);
}
Files.copy(zipFile.toPath(),
Path.of(runtimeDirectory + "/piranha-" + configuration.getDistribution() + ".jar"),
REPLACE_EXISTING);
}
/**
* Is the string null or empty.
*
* @param string the string
* @return true if it is, false otherwise.
*/
private boolean isEmpty(String string) {
return string == null || string.isEmpty();
}
}
================================================
FILE: arquillian/managed/src/main/java/cloud/piranha/arquillian/managed/ManagedPiranhaContainerConfiguration.java
================================================
/*
* Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package cloud.piranha.arquillian.managed;
import org.jboss.arquillian.container.spi.ConfigurationException;
import org.jboss.arquillian.container.spi.client.container.ContainerConfiguration;
import me.alexpanov.net.FreePortFinder;
import static java.lang.System.Logger.Level.INFO;
/**
* The managed Piranha container configuration.
*
* The following system properties can be used to configure the Piranha
* container from the command-line.
* <table>
* <caption>System properties</caption>
* <tr>
* <th>name</th>
* <th>value</th>
* <th>notes</th>
* </tr>
* <tr>
* <td>piranha.debug</td>
* <td>The boolean to start the Piranha process in debugging mode</td>
* <td>not enabled by default</td>
* </tr>
* <tr>
* <td>piranha.distribution</td>
* <td>The Piranha distribution to use</td>
* <td>coreprofile by default</td>
* </tr>
* <tr>
* <td>piranha.httpPort</td>
* <td>The integer to select the HTTP port to use for the Piranha process</td>
* <td>if not set an unused port will be automatically chosen</td>
* </tr>
* <tr>
* <td>piranha.callerName</td>
* <td>The username to seed into the in-memory identity store</td>
* <td>not set by default</td>
* </tr>
* <tr>
* <td>piranha.callerPassword</td>
* <td>The password for the caller to seed into the in-memory identity store</td>
* <td>not set by default</td>
* </tr>
* <tr>
* <td>piranha.callerGroups</td>
* <td>The comma-separated groups for the caller to seed into the in-memory identity store</td>
* <td>not set by default</td>
* </tr>
* <tr>
* <td>piranha.jvmArguments</td>
* <td>The string with JVM arguments to pass to the Piranha process</td>
* <td>no additional JVM arguments are passed by default</td>
* </tr>
* <tr>
* <td>piranha.protocol</td>
* <td>The string with the Arquillian protocol to use when talking to the
* Piranha process</td>
* <td>set to 'Servlet 6.0' by default</td>
* </tr>
* <tr>
* <td>piranha.suspend</td>
* <td>the boolean to start the Piranha process in suspend mode</td>
* <td>not enabled by default</td>
* </tr>
* </table>
*
* @author Manfred Riem (mriem@manorrock.com)
*/
public class ManagedPiranhaContainerConfiguration implements ContainerConfiguration {
/**
* Stores the logger.
*/
private static final System.Logger LOGGER = System.getLogger(ManagedPiranhaContainerConfiguration.class.getName());
/**
* Stores the caller groups.
*/
private String callerGroups = System.getProperty("piranha.callerGroups", "");
/**
* Stores the caller name.
*/
private String callerName = System.getProperty("piranha.callerName", "");
/**
* Stores the caller password.
*/
private String callerPassword = System.getProperty("piranha.callerPassword", "");
/**
* Stores the distribution to use.
*/
private String distribution = System.getProperty("piranha.distribution", "coreprofile");
/**
* Stores the debug flag.
*/
private boolean debug = Boolean.parseBoolean(System.getProperty("piranha.debug", "false"));
/**
* Stores the HTTP port.
*/
private Integer httpPort = System.getProperty("piranha.httpPort") != null ? Integer.valueOf(System.getProperty("piranha.httpPort")) : null;
/**
* Stores the JVM arguments.
*/
private String jvmArguments = System.getProperty("piranha.jvmArguments", "");
/**
* Stores the Arquillian protocol.
*/
private String protocol = System.getProperty("piranha.protocol", "Servlet 6.0");
/**
* Stores the suspend flag.
*/
private boolean suspend = Boolean.parseBoolean(System.getProperty("piranha.suspend", "false"));
/**
* Constructor.
*/
public ManagedPiranhaContainerConfiguration() {
}
/**
* Get the caller groups.
*
* @return the caller groups.
*/
public String getCallerGroups() {
return callerGroups;
}
/**
* Get the caller name.
*
* @return the caller name.
*/
public String getCallerName() {
return callerName;
}
/**
* Get the caller password.
*
* @return the caller password.
*/
public String getCallerPassword() {
return callerPassword;
}
/**
* Get the distribution.
*
* @return the distribution.
*/
public String getDistribution() {
return distribution;
}
/**
* Get the HTTP port.
*
* @return the HTTP port.
*/
public int getHttpPort() {
if (httpPort == null) {
httpPort = FreePortFinder.findFreeLocalPort();
}
return httpPort;
}
/**
* Get the JVM arguments.
*
* @return the JVM arguments.
*/
public String getJvmArguments() {
return jvmArguments;
}
/**
* Get the protocol.
*
* @return the protocol.
*/
public String getProtocol() {
return protocol;
}
/**
* Is the debug flag set.
*
* @return true if it is, false otherwise.
*/
public boolean isDebug() {
return debug;
}
/**
* Is the suspend flag set.
*
* @return the suspend flag.
*/
public boolean isSuspend() {
return suspend;
}
/**
* Set the caller groups.
*
* @param callerGroups the caller groups.
*/
public void setCallerGroups(String callerGroups) {
this.callerGroups = callerGroups;
}
/**
* Set the caller name.
*
* @param callerName the caller name.
*/
public void setCallerName(String callerName) {
this.callerName = callerName;
}
/**
* Set the caller password.
*
* @param callerPassword the caller password.
*/
public void setCallerPassword(String callerPassword) {
this.callerPassword = callerPassword;
}
/**
* Set the debug flag.
*
* @param debug the debug flag.
*/
public void setDebug(boolean debug) {
this.debug = debug;
}
/**
* Set the distribution.
*
* @param distribution the distribution.
*/
public void setDistribution(String distribution) {
this.distribution = distribution;
}
/**
* Set the HTTP port.
*
* @param httpPort the HTTP port.
*/
public void setHttpPort(int httpPort) {
this.httpPort = httpPort;
}
/**
* Set the JVM arguments.
*
* @param jvmArguments the JVM arguments.
*/
public void setJvmArguments(String jvmArguments) {
this.jvmArguments = jvmArguments;
}
/**
* Set the protocol.
*
* @param protocol the protocol.
*/
public void setProtocol(String protocol) {
this.protocol = protocol;
}
/**
* Set the suspend flag.
*
* @param suspend the suspend flag.
*/
public void setSuspend(boolean suspend) {
this.suspend = suspend;
}
@Override
public void validate() throws ConfigurationException {
LOGGER.log(INFO, """
Using HTTP Port: {0}
Using JVM arguments: {1}
Using protocol: {2}
Using debug: {3}
Using suspend: {4}
""",
getHttpPort() + "",
getJvmArguments(),
getProtocol(),
isDebug(),
isSuspend());
}
}
================================================
FILE: arquillian/managed/src/main/java/cloud/piranha/arquillian/managed/ManagedPiranhaContainerExtension.java
================================================
/*
* Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package cloud.piranha.arquillian.managed;
import org.jboss.arquillian.container.spi.client.container.DeployableContainer;
import org.jboss.arquillian.core.spi.LoadableExtension;
/**
* The Managed Piranha container extension.
*
* @author Manfred Riem (mriem@manorrock.com)
*/
public class ManagedPiranhaContainerExtension implements LoadableExtension {
/**
* Default constructor.
*/
public ManagedPiranhaContainerExtension() {
}
@SuppressWarnings("exports")
@Override
public void register(ExtensionBuilder extensionBuilder) {
extensionBuilder.service(DeployableContainer.class, ManagedPiranhaContainer.class);
}
}
================================================
FILE: arquillian/managed/src/main/java/module-info.java
================================================
/*
* Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
import cloud.piranha.arquillian.managed.ManagedPiranhaContainerExtension;
import org.jboss.arquillian.core.spi.LoadableExtension;
/**
* This module delivers the managed Piranha container support for Arquillian.
*
* @author Manfred Riem (mriem@manorrock.com)
*/
module cloud.piranha.arquillian.managed {
exports cloud.piranha.arquillian.managed;
opens cloud.piranha.arquillian.managed;
provides LoadableExtension with ManagedPiranhaContainerExtension;
requires arquillian.container.spi;
requires arquillian.core.spi;
requires free.port.finder;
requires shrinkwrap.api;
}
================================================
FILE: arquillian/managed/src/main/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension
================================================
cloud.piranha.arquillian.managed.ManagedPiranhaContainerExtension
================================================
FILE: arquillian/managed/src/test/java/cloud/piranha/arquillian/managed/ManagedPiranhaContainerConfigurationTest.java
================================================
/*
* Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package cloud.piranha.arquillian.managed;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
/**
* The JUnit tests for the ManagedPiranhaContainerConfiguration class.
*
* @author Manfred Riem (mriem@manorrock.com)
*/
class ManagedPiranhaContainerConfigurationTest {
@Test
void testGetHttpPortDefault() {
System.clearProperty("piranha.httpPort");
ManagedPiranhaContainerConfiguration configuration = new ManagedPiranhaContainerConfiguration();
int port = configuration.getHttpPort();
assertTrue(port > 0, "The port should be a positive integer");
System.clearProperty("piranha.httpPort");
}
@Test
void testGetHttpPortSet() {
System.setProperty("piranha.httpPort", "8080");
ManagedPiranhaContainerConfiguration configuration = new ManagedPiranhaContainerConfiguration();
int port = configuration.getHttpPort();
assertEquals(8080, port, "The port should be 8080");
System.clearProperty("piranha.httpPort");
}
@Test
void testGetHttpPortInvalid() {
System.setProperty("piranha.httpPort", "invalid");
assertThrows(NumberFormatException.class, () -> {
ManagedPiranhaContainerConfiguration configuration = new ManagedPiranhaContainerConfiguration();
configuration.getHttpPort();
}, "A NumberFormatException should be thrown for invalid port");
System.clearProperty("piranha.httpPort");
}
@Test
void testGetDistribution() {
ManagedPiranhaContainerConfiguration config = new ManagedPiranhaContainerConfiguration();
assertEquals("coreprofile", config.getDistribution());
}
@Test
void testSetDistribution() {
ManagedPiranhaContainerConfiguration config = new ManagedPiranhaContainerConfiguration();
config.setDistribution("webprofile");
assertEquals("webprofile", config.getDistribution());
}
@Test
void testGetHttpPort() {
ManagedPiranhaContainerConfiguration config = new ManagedPiranhaContainerConfiguration();
assertTrue(config.getHttpPort() > 0);
}
@Test
void testSetHttpPort() {
ManagedPiranhaContainerConfiguration config = new ManagedPiranhaContainerConfiguration();
config.setHttpPort(8080);
assertEquals(8080, config.getHttpPort());
}
@Test
void testGetJvmArguments() {
ManagedPiranhaContainerConfiguration config = new ManagedPiranhaContainerConfiguration();
assertEquals("", config.getJvmArguments());
}
@Test
void testSetJvmArguments() {
ManagedPiranhaContainerConfiguration config = new ManagedPiranhaContainerConfiguration();
config.setJvmArguments("-Xmx512m");
assertEquals("-Xmx512m", config.getJvmArguments());
}
@Test
void testGetProtocol() {
ManagedPiranhaContainerConfiguration config = new ManagedPiranhaContainerConfiguration();
assertEquals("Servlet 6.0", config.getProtocol());
}
@Test
void testSetProtocol() {
ManagedPiranhaContainerConfiguration config = new ManagedPiranhaContainerConfiguration();
config.setProtocol("Servlet 5.0");
assertEquals("Servlet 5.0", config.getProtocol());
}
@Test
void testIsDebug() {
ManagedPiranhaContainerConfiguration config = new ManagedPiranhaContainerConfiguration();
assertFalse(config.isDebug());
}
@Test
void testSetDebug() {
ManagedPiranhaContainerConfiguration config = new ManagedPiranhaContainerConfiguration();
config.setDebug(true);
assertTrue(config.isDebug());
}
@Test
void testIsSuspend() {
ManagedPiranhaContainerConfiguration config = new ManagedPiranhaContainerConfiguration();
assertFalse(config.isSuspend());
}
@Test
void testSetSuspend() {
ManagedPiranhaContainerConfiguration config = new ManagedPiranhaContainerConfiguration();
config.setSuspend(true);
assertTrue(config.isSuspend());
}
@Test
void testValidate() {
ManagedPiranhaContainerConfiguration config = new ManagedPiranhaContainerConfiguration();
assertDoesNotThrow(config::validate);
}
}
================================================
FILE: arquillian/managed/src/test/java/cloud/piranha/arquillian/managed/ManagedPiranhaContainerExtensionTest.java
================================================
/*
* Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package cloud.piranha.arquillian.managed;
import org.jboss.arquillian.core.spi.LoadableExtension.ExtensionBuilder;
import org.jboss.arquillian.core.spi.context.Context;
import org.junit.jupiter.api.Test;
/**
* The JUnit tests for the ManagedPiranhaContainerExtension class.
*
* @author Manfred Riem (mriem@manorrock.com)
*/
class ManagedPiranhaContainerExtensionTest {
@Test
void testRegister() {
ExtensionBuilder extensionBuilder = new ExtensionBuilder() {
@Override
public <T> ExtensionBuilder service(Class<T> service, Class<? extends T> impl) {
return this;
}
@Override
public <T> ExtensionBuilder override(Class<T> service, Class<? extends T> oldServiceImpl,
Class<? extends T> newServiceImpl) {
throw new UnsupportedOperationException("Unimplemented method 'override'");
}
@Override
public ExtensionBuilder observer(Class<?> handler) {
throw new UnsupportedOperationException("Unimplemented method 'observer'");
}
@Override
public ExtensionBuilder context(Class<? extends Context> context) {
throw new UnsupportedOperationException("Unimplemented method 'context'");
}
};
ManagedPiranhaContainerExtension extension = new ManagedPiranhaContainerExtension();
extension.register(extensionBuilder);
}
}
================================================
FILE: arquillian/managed/src/test/java/cloud/piranha/arquillian/managed/ManagedPiranhaContainerTest.java
================================================
package cloud.piranha.arquillian.managed;
import java.io.File;
import org.jboss.arquillian.container.spi.client.container.DeploymentException;
import org.jboss.arquillian.container.spi.client.protocol.ProtocolDescription;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.spec.WebArchive;
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 static org.junit.jupiter.api.Assertions.*;
/**
* The JUnit tests for the ManagedPiranhaContainer class.
*
* @author Manfred Riem (mriem@manorrock.com)
*/
class ManagedPiranhaContainerTest {
/**
* Test getContainerConfiguration method.
*/
@Test
void testGetConfigurationClass() {
ManagedPiranhaContainer container = new ManagedPiranhaContainer();
assertEquals(ManagedPiranhaContainerConfiguration.class, container.getConfigurationClass());
}
/**
* TEst getDefaulProtocol method.
*/
@Test
void testGetDefaultProtocol() {
ManagedPiranhaContainer container = new ManagedPiranhaContainer();
container.setup(new ManagedPiranhaContainerConfiguration());
ProtocolDescription protocolDescription = container.getDefaultProtocol();
assertEquals("Servlet 6.0", protocolDescription.getName());
}
}
================================================
FILE: arquillian/managed/src/test/webapp/test/WEB-INF/web.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
version="6.0">
</web-app>
================================================
FILE: arquillian/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>cloud.piranha</groupId>
<artifactId>project</artifactId>
<version>25.4.0-SNAPSHOT</version>
</parent>
<groupId>cloud.piranha.arquillian</groupId>
<artifactId>project</artifactId>
<packaging>pom</packaging>
<name>Piranha - Arquillian</name>
<description>
The Piranha Arquillian Project delivers you with Arquillian support.
</description>
<modules>
<module>managed</module>
<module>server</module>
</modules>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.jboss.shrinkwrap.resolver</groupId>
<artifactId>shrinkwrap-resolver-bom</artifactId>
<version>${shrinkwrap-resolver.version}</version>
<scope>test</scope>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.jboss.shrinkwrap.resolver</groupId>
<artifactId>shrinkwrap-resolver-depchain</artifactId>
<version>${shrinkwrap-resolver.version}</version>
<type>pom</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jboss.arquillian</groupId>
<artifactId>arquillian-bom</artifactId>
<version>${arquillian.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.jboss.arquillian.jakarta</groupId>
<artifactId>arquillian-jakarta-bom</artifactId>
<version>${arquillian-jakarta.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>cloud.piranha</groupId>
<artifactId>bom</artifactId>
<version>${project.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<distributionManagement>
<site>
<id>default</id>
<url>file:///tmp/piranha/arquillian/</url>
</site>
</distributionManagement>
</project>
================================================
FILE: arquillian/server/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>cloud.piranha.arquillian</groupId>
<artifactId>project</artifactId>
<version>25.4.0-SNAPSHOT</version>
</parent>
<artifactId>piranha-arquillian-server</artifactId>
<name>Piranha - Arquillian - Server</name>
<description>
Piranha integration for the Arquillian Project.
</description>
<dependencies>
<dependency>
<groupId>io.smallrye</groupId>
<artifactId>jandex</artifactId>
</dependency>
<dependency>
<groupId>cloud.piranha.micro</groupId>
<artifactId>piranha-micro-loader</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>cloud.piranha.resource</groupId>
<artifactId>piranha-resource-api</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>cloud.piranha.resource</groupId>
<artifactId>piranha-resource-impl</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>cloud.piranha.resource</groupId>
<artifactId>piranha-resource-shrinkwrap</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.jboss.shrinkwrap.resolver</groupId>
<artifactId>shrinkwrap-resolver-depchain</artifactId>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.jboss.arquillian.container</groupId>
<artifactId>arquillian-container-spi</artifactId>
</dependency>
<dependency>
<groupId>org.jboss.arquillian.container</groupId>
<artifactId>arquillian-container-test-spi</artifactId>
</dependency>
<dependency>
<groupId>org.jboss.arquillian.protocol</groupId>
<artifactId>arquillian-protocol-servlet-jakarta</artifactId>
</dependency>
<dependency>
<groupId>org.jboss.arquillian.testenricher</groupId>
<artifactId>arquillian-testenricher-cdi-jakarta</artifactId>
</dependency>
<dependency>
<groupId>org.jboss.arquillian.testenricher</groupId>
<artifactId>arquillian-testenricher-ejb-jakarta</artifactId>
</dependency>
<dependency>
<groupId>org.jboss.arquillian.testenricher</groupId>
<artifactId>arquillian-testenricher-resource-jakarta</artifactId>
</dependency>
<dependency>
<groupId>org.jboss.arquillian.testenricher</groupId>
<artifactId>arquillian-testenricher-initialcontext</artifactId>
</dependency>
<dependency>
<groupId>org.jboss.arquillian.junit</groupId>
<artifactId>arquillian-junit-container</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>flatten-maven-plugin</artifactId>
<configuration>
<flattenMode>ossrh</flattenMode>
</configuration>
<executions>
<execution>
<id>flatten.clean</id>
<phase>clean</phase>
<goals>
<goal>clean</goal>
</goals>
</execution>
<execution>
<id>flatten</id>
<phase>process-resources</phase>
<goals>
<goal>flatten</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<distributionManagement>
<site>
<id>default</id>
<url>file:///tmp/piranha/arquillian/server/</url>
</site>
</distributionManagement>
<profiles>
<profile>
<id>release</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
================================================
FILE: arquillian/server/src/main/java/cloud/piranha/arquillian/server/PiranhaServerDeployableContainer.java
================================================
/*
* Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package cloud.piranha.arquillian.server;
import java.lang.System.Logger;
import org.jboss.arquillian.container.spi.client.container.DeploymentException;
import org.jboss.arquillian.container.spi.client.protocol.metadata.HTTPContext;
import org.jboss.arquillian.container.spi.client.protocol.metadata.ProtocolMetaData;
import org.jboss.arquillian.container.spi.client.protocol.metadata.Servlet;
import org.jboss.shrinkwrap.api.Archive;
import cloud.piranha.arquillian.server.PiranhaServerLoadableExtension.PiranhaServerContainerConfiguration;
import cloud.piranha.micro.loader.MicroDeployOutcome;
import cloud.piranha.micro.loader.MicroOuterDeployer;
import static java.lang.System.Logger.Level.INFO;
/**
* The Piranha Micro Arquillian connector.
*
* <p>
* This connector will start up an embedded Piranha Micro runtime in an isolated class loader for every application that is
* deployed.
*
* @author Arjan Tijms
*
*/
public class PiranhaServerDeployableContainer extends PiranhaServerLoadableExtension.PiranhaServerContainerBase {
/**
* Stores the logger.
*/
private static final Logger LOGGER = System.getLogger(PiranhaServerDeployableContainer.class.getName());
/**
* Stores the configuration.
*/
private PiranhaServerContainerConfiguration configuration;
/**
* Stores the outer deployer.
*/
private MicroOuterDeployer microOuterDeployer;
/**
* Constructor.
*/
public PiranhaServerDeployableContainer() {
}
@Override
public void setup(PiranhaServerContainerConfiguration configuration) {
this.configuration = configuration;
configuration.validate();
}
@Override
public ProtocolMetaData deploy(Archive<?> archive) throws DeploymentException {
LOGGER.log(INFO, "Starting Piranha Micro");
microOuterDeployer = new MicroOuterDeployer(configuration);
MicroDeployOutcome deployOutcome = microOuterDeployer.deploy(archive);
HTTPContext httpContext = new HTTPContext("localhost", configuration.getPort());
String contextRoot = deployOutcome.getDeployedContextRoot();
if (contextRoot == null) {
contextRoot = "/";
}
for (String servletName : deployOutcome.getDeployedServlets()) {
httpContext.add(new Servlet(servletName, contextRoot));
}
ProtocolMetaData protocolMetaData = new ProtocolMetaData();
protocolMetaData.addContext(httpContext);
return protocolMetaData;
}
@Override
public void undeploy(Archive<?> archive) throws DeploymentException {
if (microOuterDeployer != null) {
LOGGER.log(INFO, "Stopping Piranha Micro");
microOuterDeployer.stop();
}
}
}
================================================
FILE: arquillian/server/src/main/java/cloud/piranha/arquillian/server/PiranhaServerLoadableExtension.java
================================================
/*
* Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package cloud.piranha.arquillian.server;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Random;
import org.jboss.arquillian.container.spi.ConfigurationException;
import org.jboss.arquillian.container.spi.client.container.ContainerConfiguration;
import org.jboss.arquillian.container.spi.client.container.DeployableContainer;
import org.jboss.arquillian.container.spi.client.protocol.ProtocolDescription;
import org.jboss.arquillian.core.spi.LoadableExtension;
import cloud.piranha.micro.loader.MicroConfiguration;
/**
* The extension sets up the Arquillian Server Connector
*
* @author Arjan Tijms
*
*/
public class PiranhaServerLoadableExtension implements LoadableExtension {
/**
* Constructor.
*/
public PiranhaServerLoadableExtension() {
}
// Defines the deployable container used; PiranhaServerDeployableContainer.class
// This is the actual "connector" that controls Piranha.
@Override
public void register(ExtensionBuilder builder) {
builder.service(DeployableContainer.class, PiranhaServerDeployableContainer.class);
}
/**
* The Piranha DeployableContainer.
*
* <pre>
* Defines the configuration class used: PiranhaServerContainerConfiguration.class
* Defines the protocol used: "Servlet 5.0"
* </pre>
*
* @author Manfred Riem (mriem@manorrock.com)
*/
public abstract static class PiranhaServerContainerBase implements DeployableContainer<PiranhaServerContainerConfiguration> {
/**
* Constructor.
*/
public PiranhaServerContainerBase() {
}
@Override
public Class<PiranhaServerContainerConfiguration> getConfigurationClass() {
return PiranhaServerContainerConfiguration.class;
}
@Override
public ProtocolDescription getDefaultProtocol() {
return new ProtocolDescription("Servlet 5.0");
}
}
/**
* The Piranha MicroConfiguration.
*
* <pre>
* Defines the configuration class to be essentially the same as MicroConfiguration.class
* </pre>
*
* @author Manfred Riem (mriem@manorrock.com)
*/
public static class PiranhaServerContainerConfiguration extends MicroConfiguration implements ContainerConfiguration {
/**
* Highest port number that we'll try
*/
private static final int MAX_PORT_NUMBER = 65535;
/**
* Lowest port number that we'll try
*/
private static final int MIN_PORT_NUMBER = 1;
/**
* Stores whether to automatically find an available port.
*/
private boolean autoPort;
/**
* Helper class for finding a free port
*/
private PortFinder portFinder = new PortFinder();
/**
* Initializes values from system properties or to default values
*/
public PiranhaServerContainerConfiguration() {
super();
this.autoPort = Boolean.valueOf(System.getProperty("piranha.autoPort", "true"));
}
/**
* Validates the configuration.
*
* <p>
* Just calls {@link #postConstruct()}
* </p>
*
* @throws ConfigurationException - never thrown
*/
@Override
public void validate() throws ConfigurationException {
postConstruct();
}
/**
* Initializes configuration after all configured values were loaded.
* Computes generated configuration, e.g. a free port for autoPort
*
* @return the PiranhaServerContainerConfiguration.
*/
@Override
public PiranhaServerContainerConfiguration postConstruct() {
if (isAutoPort()) {
setPort(portFinder.findFreePort(getPort()));
}
super.postConstruct();
return this;
}
/**
* Are we automatically assigning a port?
*
* @return whether automatically assign port
*/
public boolean isAutoPort() {
return autoPort;
}
/**
* Set whether we are automatically assigning a port.
*
* @param autoPort Whether automatically assign port
*/
public void setAutoPort(boolean autoPort) {
this.autoPort = autoPort;
}
private class PortFinder {
/**
* Find a random free local port. It's guaranteed that the returned port will be always random.
* The initialPort parameter is only used as a base for the randomization and isn't returned
* even if it's free. This is to prevent returning the same port if this method is called in parallel.
*
* @param initialPort The initial port to start searching from.
* If 0, the default port 8080 will be used.
* @return free port tha
*/
public int findFreePort(int initialPort) {
int portCandidate = 8080;
int numberOfAttempts = 100;
boolean foundFreePort = false;
final Random random = new Random();
if (initialPort > 0) {
portCandidate = initialPort;
}
do {
portCandidate += random.nextInt(100);
foundFreePort = isFreePort(portCandidate);
numberOfAttempts--;
if (portCandidate > MAX_PORT_NUMBER) {
portCandidate = portCandidate - MAX_PORT_NUMBER - 1 + MIN_PORT_NUMBER;
}
} while (!foundFreePort || numberOfAttempts <= 0);
if (foundFreePort) {
return portCandidate;
} else {
throw new RuntimeException("No free port found!");
}
}
private boolean isFreePort(int portCandidate) {
try ( Socket clientSocket = new Socket("localhost", portCandidate)) {
} catch (IOException clientEx) {
// we cannot connect, the port isn't occupied
try {
// check whether this process can bind to the port - listen to it and then close it
try (ServerSocket listeningSocket = new ServerSocket(portCandidate)) {}
return true;
} catch (IOException listenEx) {
}
}
return false;
}
}
}
}
================================================
FILE: arquillian/server/src/main/java/module-info.java
================================================
/*
* Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
import org.jboss.arquillian.core.spi.LoadableExtension;
import cloud.piranha.arquillian.server.PiranhaServerLoadableExtension;
/**
* The Piranha Arquillian Server module.
*
* @author Manfred Riem (mriem@manorrock.com)
*/
module cloud.piranha.arquillian.server {
provides LoadableExtension with PiranhaServerLoadableExtension;
requires cloud.piranha.micro.loader;
requires arquillian.container.spi;
requires arquillian.core.spi;
requires shrinkwrap.api;
requires shrinkwrap.descriptors.api.base;
}
================================================
FILE: arquillian/server/src/main/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension
================================================
cloud.piranha.arquillian.server.PiranhaServerLoadableExtension
================================================
FILE: bom/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>cloud.piranha</groupId>
<artifactId>project</artifactId>
<version>25.4.0-SNAPSHOT</version>
</parent>
<artifactId>bom</artifactId>
<packaging>pom</packaging>
<name>Piranha - BOM</name>
<properties>
<!-- dependencies -->
<jakarta.activation-api.version>2.1.3</jakarta.activation-api.version>
<jakarta.annotation-api.version>3.0.0</jakarta.annotation-api.version>
<jakarta.authentication-api.version>3.1.0</jakarta.authentication-api.version>
<jakarta.authorization-api.version>3.0.0</jakarta.authorization-api.version>
<jakarta.enterprise.concurrent-api.version>3.1.1</jakarta.enterprise.concurrent-api.version>
<jakarta.ejb-api.version>4.0.1</jakarta.ejb-api.version>
<jakarta.el-api.version>6.0.1</jakarta.el-api.version>
<jakarta.enterprise.cdi-api.version>4.1.0</jakarta.enterprise.cdi-api.version>
<jakarta.faces-api.version>4.1.2</jakarta.faces-api.version>
<jakarta.inject-api.version>2.0.1.MR</jakarta.inject-api.version>
<jakarta.interceptor-api.version>2.2.0</jakarta.interceptor-api.version>
<jakarta.jakartaee-core-api.version>11.0.0</jakarta.jakartaee-core-api.version>
<jakarta.jakartaee-web-api.version>11.0.0</jakarta.jakartaee-web-api.version>
<jakarta.json-api.version>2.1.3</jakarta.json-api.version>
<jakarta.json.bind-api.version>3.0.1</jakarta.json.bind-api.version>
<jakarta.mail-api.version>2.1.3</jakarta.mail-api.version>
<jakarta.persistence-api.version>3.2.0</jakarta.persistence-api.version>
<jakarta.security.enterprise-api.version>4.0.0</jakarta.security.enterprise-api.version>
<jakarta.servlet-api.version>6.1.0</jakarta.servlet-api.version>
<jakarta.servlet.jsp-api.version>4.0.0</jakarta.servlet.jsp-api.version>
<jakarta.servlet.jsp.jstl-api.version>3.0.2</jakarta.servlet.jsp.jstl-api.version>
<jakarta.transaction-api.version>2.0.1</jakarta.transaction-api.version>
<jakarta.validation-api.version>3.1.1</jakarta.validation-api.version>
<jakarta.websocket-api.version>2.2.0</jakarta.websocket-api.version>
<jakarta.ws.rs-api.version>4.0.0</jakarta.ws.rs-api.version>
<jakarta.xml.bind-api.version>4.0.2</jakarta.xml.bind-api.version>
<!-- other -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencyManagement>
<dependencies>
<!-- Jakarta Activation -->
<dependency>
<groupId>jakarta.activation</groupId>
<artifactId>jakarta.activation-api</artifactId>
<version>${jakarta.activation-api.version}</version>
</dependency>
<!-- Jakarta Annotation -->
<dependency>
<groupId>jakarta.annotation</groupId>
<artifactId>jakarta.annotation-api</artifactId>
<version>${jakarta.annotation-api.version}</version>
</dependency>
<!-- Jakarta Authentication -->
<dependency>
<groupId>jakarta.authentication</groupId>
<artifactId>jakarta.authentication-api</artifactId>
<version>${jakarta.authentication-api.version}</version>
</dependency>
<!-- Jakarta Authorization -->
<dependency>
<groupId>jakarta.authorization</groupId>
<artifactId>jakarta.authorization-api</artifactId>
<version>${jakarta.authorization-api.version}</version>
</dependency>
<!-- Jakarta Concurrent -->
<dependency>
<groupId>jakarta.enterprise.concurrent</groupId>
<artifactId>jakarta.enterprise.concurrent-api</artifactId>
<version>${jakarta.enterprise.concurrent-api.version}</version>
</dependency>
<!-- Jakarta Contexts and Dependency Injection -->
<dependency>
<groupId>jakarta.enterprise</groupId>
<artifactId>jakarta.enterprise.cdi-api</artifactId>
<version>${jakarta.enterprise.cdi-api.version}</version>
</dependency>
<dependency>
<groupId>jakarta.enterprise</groupId>
<artifactId>jakarta.enterprise.cdi-el-api</artifactId>
<version>${jakarta.enterprise.cdi-api.version}</version>
</dependency>
<!-- Jakarta EE Core Profile -->
<dependency>
<groupId>jakarta.platform</groupId>
<artifactId>jakarta.jakartaee-core-api</artifactId>
<version>${jakarta.jakartaee-core-api.version}</version>
</dependency>
<!-- Jakarta EE Web Profile -->
<dependency>
<groupId>jakarta.platform</groupId>
<artifactId>jakarta.jakartaee-web-api</artifactId>
<version>${jakarta.jakartaee-web-api.version}</version>
</dependency>
<!-- Jakarta Enterprise Beans -->
<dependency>
<groupId>jakarta.ejb</groupId>
<artifactId>jakarta.ejb-api</artifactId>
<version>${jakarta.ejb-api.version}</version>
</dependency>
<!-- Jakarta Expression Language -->
<dependency>
<groupId>jakarta.el</groupId>
<artifactId>jakarta.el-api</artifactId>
<version>${jakarta.el-api.version}</version>
</dependency>
<!-- Jakarta Faces -->
<dependency>
<groupId>jakarta.faces</groupId>
<artifactId>jakarta.faces-api</artifactId>
<version>${jakarta.faces-api.version}</version>
</dependency>
<!-- Jakarta Inject API -->
<dependency>
<groupId>jakarta.inject</groupId>
<artifactId>jakarta.inject-api</artifactId>
<version>${jakarta.inject-api.version}</version>
</dependency>
<!-- Jakarta Interceptors API -->
<dependency>
<groupId>jakarta.interceptor</groupId>
<artifactId>jakarta.interceptor-api</artifactId>
<version>${jakarta.interceptor-api.version}</version>
</dependency>
<!-- Jakarta JSON Binding -->
<dependency>
<groupId>jakarta.json.bind</groupId>
<artifactId>jakarta.json.bind-api</artifactId>
<version>${jakarta.json.bind-api.version}</version>
</dependency>
<!-- Jakarta JSON Processing -->
<dependency>
<groupId>jakarta.json</groupId>
<artifactId>jakarta.json-api</artifactId>
<version>${jakarta.json-api.version}</version>
</dependency>
<!-- Jakarta Mail -->
<dependency>
<groupId>jakarta.mail</groupId>
<artifactId>jakarta.mail-api</artifactId>
<version>${jakarta.mail-api.version}</version>
</dependency>
<!-- Jakarta Pages -->
<dependency>
<groupId>jakarta.servlet.jsp</groupId>
<artifactId>jakarta.servlet.jsp-api</artifactId>
<version>${jakarta.servlet.jsp-api.version}</version>
</dependency>
<!-- Jakarta Persistence -->
<dependency>
<groupId>jakarta.persistence</groupId>
<artifactId>jakarta.persistence-api</artifactId>
<version>${jakarta.persistence-api.version}</version>
</dependency>
<!-- Jakarta REST -->
<dependency>
<groupId>jakarta.ws.rs</groupId>
<artifactId>jakarta.ws.rs-api</artifactId>
<version>${jakarta.ws.rs-api.version}</version>
</dependency>
<!-- Jakarta Security -->
<dependency>
<groupId>jakarta.security.enterprise</groupId>
<artifactId>jakarta.security.enterprise-api</artifactId>
<version>${jakarta.security.enterprise-api.version}</version>
</dependency>
<!-- Jakarta Servlet -->
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>${jakarta.servlet-api.version}</version>
</dependency>
<!-- Jakarta Standard Tag Library -->
<dependency>
<groupId>jakarta.servlet.jsp.jstl</groupId>
<artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
<version>${jakarta.servlet.jsp.jstl-api.version}</version>
</dependency>
<!-- Jakarta Transactions -->
<dependency>
<groupId>jakarta.transaction</groupId>
<artifactId>jakarta.transaction-api</artifactId>
<version>${jakarta.transaction-api.version}</version>
</dependency>
<!-- Jakarta Validation -->
<dependency>
<groupId>jakarta.validation</groupId>
<artifactId>jakarta.validation-api</artifactId>
<version>${jakarta.validation-api.version}</version>
</dependency>
<!-- Jakarta WebSocket -->
<dependency>
<groupId>jakarta.websocket</groupId>
<artifactId>jakarta.websocket-api</artifactId>
<version>${jakarta.websocket-api.version}</version>
</dependency>
<dependency>
<groupId>jakarta.websocket</groupId>
<artifactId>jakarta.websocket-client-api</artifactId>
<version>${jakarta.websocket-api.version}</version>
</dependency>
<!-- Jakarta XML Binding -->
<dependency>
<groupId>jakarta.xml.bind</groupId>
<artifactId>jakarta.xml.bind-api</artifactId>
<version>${jakarta.xml.bind-api.version}</version>
</dependency>
<!-- MicroProfile Config -->
<dependency>
<groupId>org.eclipse.microprofile.config</groupId>
<artifactId>microprofile-config-api</artifactId>
<version>${microprofile-config-api.version}</version>
</dependency>
<!-- MicroProfile JWT Auth -->
<dependency>
<groupId>org.eclipse.microprofile.jwt</groupId>
<artifactId>microprofile-jwt-auth-api</artifactId>
<version>${microprofile-jwt-auth-api.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<distributionManagement>
<site>
<id>default</id>
<url>file:///tmp/piranha/bom/</url>
</site>
</distributionManagement>
</project>
================================================
FILE: core/api/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>cloud.piranha.core</groupId>
<artifactId>project</artifactId>
<version>25.4.0-SNAPSHOT</version>
</parent>
<artifactId>piranha-core-api</artifactId>
<packaging>jar</packaging>
<name>Piranha - Core - API</name>
<dependencies>
<!-- compile -->
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>cloud.piranha.resource</groupId>
<artifactId>piranha-resource-api</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
</dependency>
</dependencies>
<distributionManagement>
<site>
<id>default</id>
<url>file:///tmp/piranha/core/api/</url>
</site>
</distributionManagement>
</project>
================================================
FILE: core/api/src/main/java/cloud/piranha/core/api/AnnotationInfo.java
================================================
/*
* Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package cloud.piranha.core.api;
import java.lang.reflect.AnnotatedElement;
/**
* The annotation information.
*
* @param <T> the type.
* @author Manfred Riem (mriem@manorrock.com)
* @author Arjan Tijms
*/
public interface AnnotationInfo<T> {
/**
* {@return the instance}
*/
T getInstance();
/**
* {@return the target}
*/
AnnotatedElement getTarget();
/**
* Get the target.
*
* @return the class.
*/
default Class<?> getTargetType() {
Class<?> result = null;
AnnotatedElement element = getTarget();
if (element instanceof Class<?> clazz) {
result = clazz;
}
return result;
}
}
================================================
FILE: core/api/src/main/java/cloud/piranha/core/api/AnnotationManager.java
================================================
/*
* Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package cloud.piranha.core.api;
import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.util.List;
import java.util.Set;
/**
* The AnnotationManager API.
*
* @author Manfred Riem (mriem@manorrock.com)
* @author Arjan Tijms
*/
public interface AnnotationManager {
/**
* Add the annotation.
*
* @param annotationInfo the annotation info.
*/
void addAnnotation(AnnotationInfo<?> annotationInfo);
/**
* Add an instance.
*
* @param instanceClass the instance class.
* @param implementingClass the implementing class.
*/
void addInstance(Class<?> instanceClass, Class<?> implementingClass);
/**
* Get the annotations.
*
* @param <T> the type.
* @param annotationClass the annotation class.
* @return the typed list of annotations.
*/
<T> List<AnnotationInfo<T>> getAnnotations(Class<T> annotationClass);
/**
* Get the annotations.
*
* @param annotationClasses the annotation classes.
* @return the list of annotations.
*/
List<AnnotationInfo<?>> getAnnotations(Class<?>... annotationClasses);
/**
* Get the instances.
*
* @param <T> the type.
* @param instanceClass the instance class.
* @return the typed list of instances.
*/
<T> List<Class<T>> getInstances(Class<T> instanceClass);
/**
* Get the instances.
*
* @param instanceClasses the instance classes.
* @return the list of instances.
*/
List<Class<?>> getInstances(Class<?>... instanceClasses);
/**
* Get the annotation for the annotation class and annotated element type.
*
* @param <T> the type.
* @param annotationClass the annotation class.
* @param type the annotated element type.
* @return the list of annotations.
*/
<T> List<AnnotationInfo<T>> getAnnotationsByTarget(Class<T> annotationClass, AnnotatedElement type);
/**
* Add an annotated class.
*
* @param annotationClass the annotation class on the annotated class.
* @param clazz the annotated class.
*/
void addAnnotatedClass(Class<? extends Annotation> annotationClass, Class<?> clazz);
/**
* Get the annotated classes.
*
* @param annotationClass the annotation to inspect for.
* @return the classes annotated with the given annotation (if any).
*/
Set<Class<?>> getAnnotatedClass(Class<? extends Annotation> annotationClass);
/**
* Get annotated classes.
*
* @param annotationClasses the annotation classes to inspect for.
* @return the classes annotated with the given annotations (if any).
*/
Set<Class<?>> getAnnotatedClasses(Class<?>[] annotationClasses);
}
================================================
FILE: core/api/src/main/java/cloud/piranha/core/api/AsyncDispatcher.java
================================================
/*
* Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package cloud.piranha.core.api;
/**
* The AsyncDispatcher API.
*
* @author Manfred Riem (mriem@manorrock.com)
*/
public interface AsyncDispatcher {
/**
* Dispatch.
*/
void dispatch();
}
================================================
FILE: core/api/src/main/java/cloud/piranha/core/api/AsyncManager.java
================================================
/*
* Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package cloud.piranha.core.api;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.ServletResponse;
/**
* The AsyncManager API.
*
* @author Manfred Riem (mriem@manorrock.com)
*/
public interface AsyncManager {
/**
* {@return the async dispatcher}
* @param webApplication the web application.
* @param path the path.
* @param asyncStartRequest the servlet request coming from a call to request.asyncStart.
* @param asyncStartResponse the servlet response coming from a call to request.asyncStart.
*/
AsyncDispatcher getDispatcher(WebApplication webApplication, String path, ServletRequest asyncStartRequest, ServletResponse asyncStartResponse);
}
================================================
FILE: core/api/src/main/java/cloud/piranha/core/api/AttributeManager.java
================================================
/*
* Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package cloud.piranha.core.api;
import java.util.Enumeration;
/**
* The AttributeManager API.
*
* @author Manfred Riem (mriem@manorrock.com)
*/
public interface AttributeManager {
/**
* Get the attribute.
*
* @param name the name.
* @return the value.
*/
Object getAttribute(String name);
/**
* {@return the attribute names}
*/
Enumeration<String> getAttributeNames();
/**
* Remove the attribute.
*
* @param name the name.
*/
void removeAttribute(String name);
/**
* Set the attribute.
*
* @param name the name.
* @param value the value.
*/
void setAttribute(String name, Object value);
/**
* Checks if this manager has the given attribute
* @param name the name of the attribute to check for
* @return true if this manager contains the attribute, false otherwise
*/
default boolean containsAttribute(String name) {
return getAttribute(name) != null;
}
}
================================================
FILE: core/api/src/main/java/cloud/piranha/core/api/AuthenticatedIdentity.java
================================================
/*
* Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package cloud.piranha.core.api;
import java.security.Principal;
import java.util.Set;
/**
* This interface is implemented by classes that represent the current authenticated identity.
*
* <p>
* What current means here is context dependent. In a Jakarta Servlet application this refers
* to the caller (user) details during a single HTTP request.
*
* @author Arjan Tijms
*
*/
public interface AuthenticatedIdentity extends Principal {
@Override
default String getName() {
if (getCallerPrincipal() == null) {
return null;
}
return getCallerPrincipal().getName();
}
/**
* Returns the caller principal, which represents the primary name of the calling entity (aka the "caller")
* to a server.
*
* @return the caller principal, or null if authentication has not (yet) completed successfully.
*/
Principal getCallerPrincipal();
/**
* The groups the caller is in.
*
* <p>
* If group to role mapping is not active (the default) groups are equal to roles.
*
* @return the set of groups the caller is in, never null.
*/
Set<String> getGroups();
}
================================================
FILE: core/api/src/main/java/cloud/piranha/core/api/CurrentRequestHolder.java
================================================
/*
* Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package cloud.piranha.core.api;
import jakarta.servlet.http.HttpServletRequest;
/**
* A holder that references the current <code>HttpServletRequest </code>in the request processing
* pipeline.
*
* <p>
* This structure allows the runtime to set what constitutes this <em>current</em> at any given
* time.
*
* @author Arjan Tijms
*
*/
public interface CurrentRequestHolder {
/**
* The request attribute under a holder implementation is stored in the request
*/
String CURRENT_REQUEST_ATTRIBUTE = CurrentRequestHolder.class.getName();
/**
* Gets the current HttpServletRequest
*
* @param <T> the actual implementation of the current HttpServletRequest
* @return the current HttpServletRequest
*/
<T extends HttpServletRequest> T getRequest();
/**
* Sets the current HttpServletRequest
*
* @param request the current HttpServletRequest
*/
void setRequest(HttpServletRequest request);
}
================================================
FILE: core/api/src/main/java/cloud/piranha/core/api/DispatcherManager.java
================================================
/*
* Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package cloud.piranha.core.api;
import jakarta.servlet.RequestDispatcher;
/**
* The DispatcherManager API.
*
* @author Manfred Riem (mriem@manorrock.com)
*/
public interface DispatcherManager {
/**
* Get the named request dispatcher.
*
* @param name the name.
* @return the request dispatcher.
*/
RequestDispatcher getNamedDispatcher(String name);
/**
* Set the web application.
*
* @param webApplication the web application.
*/
void setWebApplication(WebApplication webApplication);
}
================================================
FILE: core/api/src/main/java/cloud/piranha/core/api/ErrorPageManager.java
================================================
/*
* Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package cloud.piranha.core.api;
import jakarta.servlet.http.HttpServletResponse;
/**
* The ErrorPageManager API.
*
* @author Manfred Riem (mriem@manorrock.com)
*/
public interface ErrorPageManager {
/**
* Add an error page.
*
* @param statusCode the status code.
* @param page the page.
*/
void addErrorPage(int statusCode, String page);
/**
* Add an error page.
*
* @param throwableClassName the throwable class name.
* @param page the page.
*/
void addErrorPage(String throwableClassName, String page);
/**
* {@return the error page}
*
* @param throwable the throwable.
* @param response the HTTP servlet response.
*/
String getErrorPage(Throwable throwable, HttpServletResponse response);
}
================================================
FILE: core/api/src/main/java/cloud/piranha/core/api/FilterEnvironment.java
================================================
/*
* Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package cloud.piranha.core.api;
import jakarta.servlet.Filter;
import jakarta.servlet.FilterConfig;
import jakarta.servlet.FilterRegistration.Dynamic;
import jakarta.servlet.ServletException;
/**
* The environment of a Filter.
*
* @author Manfred Riem (mriem@manorrock.com)
* @author Arjan Tijms
*/
public interface FilterEnvironment extends Dynamic, FilterConfig {
/**
* Defines the UNAVAILABLE constant.
*/
int UNAVAILABLE = -1;
/**
* {@return the filter}
*/
Filter getFilter();
/**
* Initialize the filter.
*
* @throws ServletException when a servlet error occurs.
*/
void initialize() throws ServletException;
/**
* Set the class name.
*
* @param className the class name.
*/
void setClassName(String className);
/**
* Set the filter name.
*
* @param filterName the filter name.
*/
void setFilterName(String filterName);
/**
* Set status.
*
* @param status the status.
*/
void setStatus(int status);
/**
* {@return the web application}
*/
WebApplication getWebApplication();
/**
* Set the web application.
*
* @param webApplication the web application.
*/
void setWebApplication(WebApplication webApplication);
/**
* Is async supported.
*
* @return true if it is, false otherwise.
*/
boolean isAsyncSupported();
}
================================================
FILE: core/api/src/main/java/cloud/piranha/core/api/FilterMapping.java
================================================
/*
* Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package cloud.piranha.core.api;
import jakarta.servlet.DispatcherType;
import static jakarta.servlet.DispatcherType.REQUEST;
/**
* The FilterMapping API.
*
* @author Manfred Riem (mriem@manorrock.com)
*/
public interface FilterMapping {
/**
* {@return the filter name}
*/
String getFilterName();
/**
* {@return the URL pattern}
*/
String getUrlPattern();
/**
* {@return the dispatcher type}
* <p>
* The dispatcher type is the kind of dispatch that the filter
* mapping applies to. Default is REQUEST, which represents
* the request from the user to the system.
* </p>
*/
default DispatcherType getDispatcherType() {
return REQUEST;
}
}
================================================
FILE: core/api/src/main/java/cloud/piranha/core/api/FilterPriority.java
================================================
/*
* Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package cloud.piranha.core.api;
/**
* The Filter Priority API allows filters that implement this interface to be given priority
* depending on their priority value.
*
* <p>
* Filters with a lower priority are called before filters with a higher priority. Filters
* with an explicit priority are called before filters with no priority at all.
*
* @author Arjan Tijms
*
*/
public interface FilterPriority {
/**
* Returns the priority of this filter in the filter chain.
*
* @return the priority value
*/
int getPriority();
}
================================================
FILE: core/api/src/main/java/cloud/piranha/core/api/HandlesTypesManager.java
================================================
/*
* Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package cloud.piranha.core.api;
import java.util.Set;
/**
* The manager that delivers support for the HandlesTypes annotation.
*
* <p>
* Whenever the onStartup method of a ServletContainerInitializer is called it
* gets passed a set of classes that it expressed interest in. This manager
* delivers the way a web application can vend that set of classes. See the
* JavaDoc of the ServletContainerInitializer for more information about the
* onStartup method.
* </p>
*
* @author Manfred Riem (mriem@manorrock.com)
*/
public interface HandlesTypesManager {
/**
* Add the annotated class.
*
* @param annotationClass the annotation class.
* @param annotatedClass the annotated class.
*/
void addAnnotatedClass(Class<?> annotationClass, Class<?> annotatedClass);
/**
* Add the extending class.
*
* @param baseClass the based class.
* @param extendingClass the extending class.
*/
void addExtendingClass(Class<?> baseClass, Class<?> extendingClass);
/**
* Add the implementing class.
*
* @param interfaceClass the interface.
* @param implementingClass the implementing class.
*/
void addImplementingClass(Class<?> interfaceClass, Class<?> implementingClass);
/**
* Get the annotated classes.
*
* @param annotationClass the annotation classes.
* @return the annotated classes.
*/
Set<Class<?>> getAnnotatedClasses(Class<?> annotationClass);
/**
* Get the extending classes.
*
* @param baseClass the base class.
* @return the set of extending classes.
*/
Set<Class<?>> getExtendingClasses(Class<?> baseClass);
/**
* Get the implementing classes.
*
* @param interfaceClass the interface class.
* @return the set of implementing classes.
*/
Set<Class<?>> getImplementingClasses(Class<?> interfaceClass);
/**
* Get the set of classes that either are annotated with the given classes,
* implement any of the given classes, or extend any of the given classes.
*
* @param classes the set of given classes.
* @return the set of classes or null if none found.
*/
Set<Class<?>> getClasses(Set<Class<?>> classes);
}
================================================
FILE: core/api/src/main/java/cloud/piranha/core/api/HttpHeader.java
================================================
/*
* Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package cloud.piranha.core.api;
import java.util.Enumeration;
/**
* The HttpHeader API.
*
* @author Manfred Riem (mriem@manorrock.com)
*/
public interface HttpHeader {
/**
* Add the value.
*
* @param value the value to add.
*/
void addValue(String value);
/**
* {@return the name}
*/
String getName();
/**
* {@return the value}
*/
String getValue();
/**
* {@return the values}
*/
Enumeration<String> getValues();
}
================================================
FILE: core/api/src/main/java/cloud/piranha/core/api/HttpHeaderManager.java
================================================
/*
* Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package cloud.piranha.core.api;
import java.util.Enumeration;
/**
* The HttpHeaderManager API.
*
* @author Manfred Riem (mriem@manorrock.com)
*/
public interface HttpHeaderManager {
/**
* Add the header.
*
* @param name the name.
* @param value the value.
*/
void addHeader(String name, String value);
/**
* Contains the given header.
*
* @param name the header name.
* @return true if there, false otherwise.
*/
boolean containsHeader(String name);
/**
* {@return the date header}
* @param name the header name.
* @throws IllegalArgumentException when the header could not be converted
* to a date.
*/
long getDateHeader(String name) throws IllegalArgumentException;
/**
* Get the header.
*
* @param name the header name.
* @return the header value.
*/
String getHeader(String name);
/**
* {@return the header names}
*/
Enumeration<String> getHeaderNames();
/**
* Get the headers.
*
* @param name the header name.
* @return the header values.
*/
Enumeration<String> getHeaders(String name);
/**
* Get the int header.
*
* @param name the header name.
* @return the int value.
* @throws NumberFormatException when the value could not be converted to an
* int.
*/
int getIntHeader(String name) throws NumberFormatException;
/**
* Remove the given header.
*
* @param name the header name.
*/
void removeHeader(String name);
/**
* Set the header.
*
* @param name the name.
* @param value the value (string).
*/
void setHeader(String name, String value);
}
================================================
FILE: core/api/src/main/java/cloud/piranha/core/api/HttpSessionManager.java
================================================
/*
* Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package cloud.piranha.core.api;
import java.util.EventListener;
import java.util.Set;
import jakarta.servlet.SessionCookieConfig;
import jakarta.servlet.SessionTrackingMode;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
/**
* The HttpSessionManager API.
*
* @author Manfred Riem (mriem@manorrock.com)
*/
public interface HttpSessionManager {
/**
* Add a listener.
*
* @param <T> the type.
* @param listener the listener.
*/
<T extends EventListener> void addListener(T listener);
/**
* Attribute added.
*
* @param session the HTTP session.
* @param name the name.
* @param value the value.
*/
void attributeAdded(HttpSession session, String name, Object value);
/**
* Attribute removed.
*
* @param session the HTTP session.
* @param name the name.
* @param value the value.
*/
void attributeRemoved(HttpSession session, String name, Object value);
/**
* Attribute replaced.
*
* @param session the HTTP session.
* @param name the name.
* @param oldValue the old value.
* @param newValue the new value.
*/
void attributeReplaced(HttpSession session, String name, Object oldValue, Object newValue);
/**
* Change the session id and return it.
*
* @param request the request.
* @return the session id.
*/
String changeSessionId(HttpServletRequest request);
/**
* Create a session.
*
* @param request the request.
* @return the session.
*/
HttpSession createSession(HttpServletRequest request);
/**
* Destroys a session.
*
* @param session the HTTP session.
*/
void destroySession(HttpSession session);
/**
* Encode the redirect URL.
*
* @param response the HTTP servlet response.
* @param url the URL.
* @return the encode URL.
*/
String encodeRedirectURL(HttpServletResponse response, String url);
/**
* Encode the URL.
*
* @param response the HTTP servlet response.
* @param url the URL.
* @return the encoded URL.
*/
String encodeURL(HttpServletResponse response, String url);
/**
* {@return the default session tracking modes}
*/
Set<SessionTrackingMode> getDefaultSessionTrackingModes();
/**
* {@return the effective session tracking modes}
*/
Set<SessionTrackingMode> getEffectiveSessionTrackingModes();
/**
* {@return the session}
* @param request the request.
* @param currentSessionId the current session id.
*/
HttpSession getSession(HttpServletRequest request, String currentSessionId);
/**
* {@return the session cookie config}
*/
SessionCookieConfig getSessionCookieConfig();
/**
* Get the session timeout (in minutes).
*
* @return the session timeout.
*/
int getSessionTimeout();
/**
* Is the session manager handling this session?
*
* @param sessionId the session id.
* @return true if there is a session with the given session id.
*/
boolean hasSession(String sessionId);
/**
* Set the session timeout (in minutes).
*
* @param timeout the timeout.
*/
void setSessionTimeout(int timeout);
/**
* Set the session tracking modes.
*
* @param sessionTrackingModes the session tracking modes.
*/
void setSessionTrackingModes(Set<SessionTrackingMode> sessionTrackingModes);
/**
* Set the web application.
*
* @param webApplication the web application.
*/
void setWebApplication(WebApplication webApplication);
}
================================================
FILE: core/api/src/main/java/cloud/piranha/core/api/JspManager.java
================================================
/*
* Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package cloud.piranha.core.api;
import jakarta.servlet.ServletRegistration;
import jakarta.servlet.descriptor.JspConfigDescriptor;
/**
* The JspManager API.
*
* @author Manfred Riem (mriem@manorrock.com)
*/
public interface JspManager {
/**
* Add the JSP file.
*
* @param webApplication the web application.
* @param servletName the servlet name.
* @param jspFile the jsp file.
* @return the servlet registration.
*/
ServletRegistration.Dynamic addJspFile(WebApplication webApplication, String servletName, String jspFile);
/**
* {@return the JSP config descriptor}
*/
JspConfigDescriptor getJspConfigDescriptor();
/**
* Set the JspConfigDescriptor.
*
* @param jspConfigDescriptor the JspConfigDescriptor.
*/
void setJspConfigDescriptor(JspConfigDescriptor jspConfigDescriptor);
}
================================================
FILE: core/api/src/main/java/cloud/piranha/core/api/LocaleEncodingManager.java
================================================
/*
* Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package cloud.piranha.core.api;
/**
* The LocaleEncodingManager API.
*
* @author Manfred Riem (mriem@manorrock.com)
*/
public interface LocaleEncodingManager {
/**
* Add a mapping between a locale and an encoding.
*
* @param locale the locale.
* @param encoding the encoding.
*/
void addCharacterEncoding(String locale, String encoding);
/**
* Get the encoding for the locale.
*
* @param locale the locale.
* @return the encoding, otherwise null.
*/
String getCharacterEncoding(String locale);
}
================================================
FILE: core/api/src/main/java/cloud/piranha/core/api/ModuleLayerProcessor.java
================================================
/*
* Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package cloud.piranha.core.api;
/**
* The module layer processor
* @author Thiago Henrique Hupner
*/
public interface ModuleLayerProcessor {
/**
* Process the module layer according to the properties
* @param controller the controller
*/
void processModuleLayerOptions(ModuleLayer.Controller controller);
}
================================================
FILE: core/api/src/main/java/cloud/piranha/core/api/MultiPartManager.java
================================================
/*
* Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package cloud.piranha.core.api;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.Part;
import java.util.Collection;
/**
* The multi-part manager API.
*
* @author Manfred Riem (mriem@manorrock.com)
*/
public interface MultiPartManager {
/**
* Get the parts.
*
* @param webApplication the web application.
* @param request the web application request.
* @return the parts.
* @throws ServletException when the request is not a multipart/form-data request.
*/
Collection<Part> getParts(WebApplication webApplication, WebApplicationRequest request) throws ServletException;
/**
* Get the part.
*
* @param webApplication the web application.
* @param request the web application request.
* @param name the name of the part.
* @return the part, or null if not found.
* @throws ServletException when the request is not a multipart/form-data request.
*/
Part getPart(WebApplication webApplication, WebApplicationRequest request, String name) throws ServletException;
}
================================================
FILE: core/api/src/main/java/cloud/piranha/core/api/ObjectInstanceManager.java
================================================
/*
* Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package cloud.piranha.core.api;
import jakarta.servlet.Filter;
import jakarta.servlet.Servlet;
import jakarta.servlet.ServletException;
import java.util.EventListener;
/**
* The object instance manager API.
*
* @author Manfred Riem (mriem@manorrock.com)
*/
public interface ObjectInstanceManager {
/**
* Create the filter.
*
* @param <T> the type.
* @param filterClass the Filter class.
* @return the Filter.
* @throws ServletException when a Servlet error occurs.
*/
<T extends Filter> T createFilter(Class<T> filterClass) throws ServletException;
/**
* Create the listener.
*
* @param <T> the type.
* @param clazz the class.
* @return the Listener.
* @throws ServletException when a Servlet error occurs.
*/
<T extends EventListener> T createListener(Class<T> clazz) throws ServletException;
/**
* Create the servlet.
*
* @param <T> the type.
* @param clazz the Servlet class.
* @return the Servlet.
* @throws ServletException when a Servlet error occurs.
*/
<T extends Servlet> T createServlet(Class<T> clazz) throws ServletException;
}
================================================
FILE: core/api/src/main/java/cloud/piranha/core/api/Piranha.java
================================================
/*
* Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package cloud.piranha.core.api;
/**
* The Piranha API.
*
* @author Manfred Riem (mriem@manorrock.com)
*/
public interface Piranha {
/**
* Get the configuration.
*
* @return the configuration.
*/
PiranhaConfiguration getConfiguration();
}
================================================
FILE: core/api/src/main/java/cloud/piranha/core/api/PiranhaBuilder.java
================================================
/*
* Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package cloud.piranha.core.api;
/**
* The PiranhaBuilder API.
*
* @author Manfred Riem (mriem@manorrock.com)
* @param <T> the concrete Piranha type.
*/
public interface PiranhaBuilder<T> {
/**
* Build the Piranha instance.
*
* @return the Piranha instance.
*/
public T build();
}
================================================
FILE: core/api/src/main/java/cloud/piranha/core/api/PiranhaConfiguration.java
================================================
/*
* Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package cloud.piranha.core.api;
import java.io.File;
/**
* Piranha configuration.
*
* @author Manfred Riem (mriem@manorrock.com)
*/
public interface PiranhaConfiguration {
/**
* Get the value as a boolean.
*
* @param key the key.
* @param defaultValue the default value if the key is not found.
* @return the value.
*/
boolean getBoolean(String key, boolean defaultValue);
/**
* Get the value as a class.
*
* @param key the key.
* @return the value.
*/
Class<?> getClass(String key);
/**
* Get the value as a File.
*
* @param key the key.
* @return the value.
*/
File getFile(String key);
/**
* Get the value as an int.
*
* @param key the key.
* @return the value.
*/
Integer getInteger(String key);
/**
* Get the value as a long.
*
* @param key the key.
* @return the value.
*/
Long getLong(String key);
/**
* Get the value as a string.
*
* @param key the key.
* @return the value (or null if not set).
*/
String getString(String key);
/**
* Set the boolean value.
*
* @param key the key.
* @param value the boolean value.
*/
void setBoolean(String key, Boolean value);
/**
* Set the class value.
*
* @param key the key.
* @param value the class value.
*/
void setClass(String key, Class<?> value);
/**
* Set the File value.
*
* @param key the key.
* @param value the value.
*/
void setFile(String key, File value);
/**
* Set the integer value.
*
* @param key the key.
* @param value the value.
*/
void setInteger(String key, Integer value);
/**
* Set the long value.
*
* @param key the key.
* @param value the value.
*/
void setLong(String key, Long value);
/**
* Set the string value.
*
* @param key the key.
* @param value the value.
*/
void setString(String key, String value);
}
================================================
FILE: core/api/src/main/java/cloud/piranha/core/api/SecurityConstraint.java
================================================
/*
* Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package cloud.piranha.core.api;
import java.util.ArrayList;
import java.util.List;
/**
* A security constraint.
*
* @author Manfred Riem (mriem@manorrock.com)
*/
public class SecurityConstraint {
/**
* Stores the role names.
*/
private List<String> roleNames;
/**
* Stores the security web resource collections.
*/
private List<SecurityWebResourceCollection> securityWebResourceCollections;
/**
* Stores the transport guarantee.
*/
private String transportGuarantee;
/**
* Constructor.
*/
public SecurityConstraint() {
roleNames = new ArrayList<>();
securityWebResourceCollections = new ArrayList<>();
transportGuarantee = "NONE";
}
/**
* Get the role names.
*
* @return the role names.
*/
public List<String> getRoleNames() {
return roleNames;
}
/**
* Get the security web resource collection.
*
* @return the security web resource collection.
*/
public List<SecurityWebResourceCollection> getSecurityWebResourceCollections() {
return securityWebResourceCollections;
}
/**
* Get the transport guarantee.
*
* @return the transport guarantee.
*/
public String getTransportGuarantee() {
return transportGuarantee;
}
/**
* Set the role names.
*
* @param roleNames the role names.
*/
public void setRoleNames(List<String> roleNames) {
this.roleNames = roleNames;
}
/**
* Set the security web resource collections.
*
* @param securityWebResourceCollections the security web resource collections.
*/
public void setSecurityWebResourceCollections(
List<SecurityWebResourceCollection> securityWebResourceCollections) {
this.securityWebResourceCollections = securityWebResourceCollections;
}
/**
* Set the transport guarantee.
*
* @param transportGuarantee the transport guarantee.
*/
public void setTransportGuarantee(String transportGuarantee) {
this.transportGuarantee = transportGuarantee;
}
}
================================================
FILE: core/api/src/main/java/cloud/piranha/core/api/SecurityManager.java
================================================
/*
* Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package cloud.piranha.core.api;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* The SecurityManager API.
*
* @author Manfred Riem (mriem@manorrock.com)
* @author Arjan Tijms
*/
public interface SecurityManager {
/**
* The enum that qualifies the source of the authentication.
*/
enum AuthenticateSource {
/**
* The container / runtime calls authenticate before a request
*/
PRE_REQUEST_CONTAINER,
/**
* The user (code) has programmatically called authenticate
*/
MID_REQUEST_USER
}
/**
* Method that bypasses the authentication mechanism installed by the
* authentication manager and directly invokes an identity store.
*/
interface UsernamePasswordLoginHandler {
/**
* Login.
*
* @param request the request.
* @param username the username.
* @param password the password.
* @return the authenticated identity.
*/
AuthenticatedIdentity login(HttpServletRequest request, String username, String password);
}
/**
* Authenticate the request.
*
* @param request the request.
* @param response the response.
* @return true if authenticated.
* @throws IOException when an I/O error occurs.
* @throws ServletException when a servlet error occurs.
*/
boolean authenticate(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException;
/**
* Authenticate the request.
*
* @param request the request.
* @param response the response.
* @param source the source or moment from where this authenticate method is
* called
* @return true if authenticated.
* @throws IOException when an I/O error occurs.
* @throws ServletException when a servlet error occurs.
*/
default boolean authenticate(HttpServletRequest request, HttpServletResponse response, AuthenticateSource source) throws IOException, ServletException {
// By default, source and mandatory directive are ignored, and semantics for the 2 parameter
// version hold.
// The 2 parameter version is expected to be essentially source = MID_REQUEST_USER
return authenticate(request, response);
}
/**
* Declare roles.
*
* @param roles the roles.
*/
void declareRoles(String[] roles);
/**
* Declare roles.
*
* @param roles the roles.
*/
default void declareRoles(Collection<String> roles) {
if (roles != null) {
declareRoles(roles.toArray(String[]::new));
}
}
/**
* Get the auth method.
*
* @return the auth method.
*/
default String getAuthMethod() {
return null;
}
/**
* Gets the request object the security system wants to put in place.
*
* <p>
* This method allows the security system (or authentication module being
* delegated to) a custom or, more likely, wrapped request.
*
* @param request the request.
* @param response the response.
* @return a request object that the runtime should put into service
*/
default HttpServletRequest getAuthenticatedRequest(HttpServletRequest request, HttpServletResponse response) {
return request;
}
/**
* Gets the response object the security system wants to put in place.
*
* <p>
* This method allows the security system (or authentication module being
* delegated to) a custom or, more likely, wrapped response.
*
* @param request the request.
* @param response the response.
* @return a response object that the runtime should put into service
*/
default HttpServletResponse getAuthenticatedResponse(HttpServletRequest request, HttpServletResponse response) {
return response;
}
/**
* Get if we are denying uncovered HTTP methods.
*
* @return true if we are, false otherwise.
*/
default boolean getDenyUncoveredHttpMethods() {
return false;
}
/**
* Get the form error page.
*
* @return the form error page.
*/
default String getFormErrorPage() {
return null;
}
/**
* Get the form login page.
*
* @return the form login page.
*/
default String getFormLoginPage() {
return null;
}
/**
* Get the realm name.
*
* @return the realm name.
*/
default String getRealmName() {
return null;
}
/**
* Get the declared roles
*
* @return the roles
*/
Set<String> getRoles();
/**
* Get the security constraints.
*
* @return the security constraints.
*/
List<SecurityConstraint> getSecurityConstraints();
/**
* Get the security role references.
*
* @return the security role references.
*/
Map<String, List<SecurityRoleReference>> getSecurityRoleReferences();
/**
* Get the handler that may be used by the login method to contact an
* identity store.
*
* @return the UsernamePasswordLoginHandler or null if not set.
*/
default UsernamePasswordLoginHandler getUsernamePasswordLoginHandler() {
return null;
}
/**
* Get the web application.
*
* @return the web application.
*/
WebApplication getWebApplication();
/**
* Check if the current caller (which can be the anonymous caller) is
* authorized to access the requested resource.
*
* <p>
* If th
gitextract_k7aup1uh/
├── .github/
│ ├── FUNDING.yml
│ ├── dependabot.yml
│ └── workflows/
│ ├── current.yml
│ ├── docs.yml
│ ├── experimental.yml
│ ├── pr.yml
│ ├── release.yml
│ ├── stale.yml
│ ├── tck-coreprofile.yml
│ └── trigger.yml
├── .gitignore
├── CODE_CONVENTIONS.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── RELEASE.md
├── SECURITY.md
├── arquillian/
│ ├── managed/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ ├── cloud/
│ │ │ │ │ └── piranha/
│ │ │ │ │ └── arquillian/
│ │ │ │ │ └── managed/
│ │ │ │ │ ├── ManagedPiranhaContainer.java
│ │ │ │ │ ├── ManagedPiranhaContainerConfiguration.java
│ │ │ │ │ └── ManagedPiranhaContainerExtension.java
│ │ │ │ └── module-info.java
│ │ │ └── resources/
│ │ │ └── META-INF/
│ │ │ └── services/
│ │ │ └── org.jboss.arquillian.core.spi.LoadableExtension
│ │ └── test/
│ │ ├── java/
│ │ │ └── cloud/
│ │ │ └── piranha/
│ │ │ └── arquillian/
│ │ │ └── managed/
│ │ │ ├── ManagedPiranhaContainerConfigurationTest.java
│ │ │ ├── ManagedPiranhaContainerExtensionTest.java
│ │ │ └── ManagedPiranhaContainerTest.java
│ │ └── webapp/
│ │ └── test/
│ │ └── WEB-INF/
│ │ └── web.xml
│ ├── pom.xml
│ └── server/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── arquillian/
│ │ │ └── server/
│ │ │ ├── PiranhaServerDeployableContainer.java
│ │ │ └── PiranhaServerLoadableExtension.java
│ │ └── module-info.java
│ └── resources/
│ └── META-INF/
│ └── services/
│ └── org.jboss.arquillian.core.spi.LoadableExtension
├── bom/
│ └── pom.xml
├── core/
│ ├── api/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── core/
│ │ │ │ └── api/
│ │ │ │ ├── AnnotationInfo.java
│ │ │ │ ├── AnnotationManager.java
│ │ │ │ ├── AsyncDispatcher.java
│ │ │ │ ├── AsyncManager.java
│ │ │ │ ├── AttributeManager.java
│ │ │ │ ├── AuthenticatedIdentity.java
│ │ │ │ ├── CurrentRequestHolder.java
│ │ │ │ ├── DispatcherManager.java
│ │ │ │ ├── ErrorPageManager.java
│ │ │ │ ├── FilterEnvironment.java
│ │ │ │ ├── FilterMapping.java
│ │ │ │ ├── FilterPriority.java
│ │ │ │ ├── HandlesTypesManager.java
│ │ │ │ ├── HttpHeader.java
│ │ │ │ ├── HttpHeaderManager.java
│ │ │ │ ├── HttpSessionManager.java
│ │ │ │ ├── JspManager.java
│ │ │ │ ├── LocaleEncodingManager.java
│ │ │ │ ├── ModuleLayerProcessor.java
│ │ │ │ ├── MultiPartManager.java
│ │ │ │ ├── ObjectInstanceManager.java
│ │ │ │ ├── Piranha.java
│ │ │ │ ├── PiranhaBuilder.java
│ │ │ │ ├── PiranhaConfiguration.java
│ │ │ │ ├── SecurityConstraint.java
│ │ │ │ ├── SecurityManager.java
│ │ │ │ ├── SecurityRoleReference.java
│ │ │ │ ├── SecurityWebResourceCollection.java
│ │ │ │ ├── ServletEnvironment.java
│ │ │ │ ├── ServletInvocation.java
│ │ │ │ ├── ServletRequestManager.java
│ │ │ │ ├── WebApplication.java
│ │ │ │ ├── WebApplicationClassLoader.java
│ │ │ │ ├── WebApplicationExtension.java
│ │ │ │ ├── WebApplicationExtensionContext.java
│ │ │ │ ├── WebApplicationInputStream.java
│ │ │ │ ├── WebApplicationManager.java
│ │ │ │ ├── WebApplicationOutputStream.java
│ │ │ │ ├── WebApplicationPrintWriter.java
│ │ │ │ ├── WebApplicationRequest.java
│ │ │ │ ├── WebApplicationRequestMapper.java
│ │ │ │ ├── WebApplicationRequestMapping.java
│ │ │ │ ├── WebApplicationResponse.java
│ │ │ │ ├── WebApplicationServer.java
│ │ │ │ ├── WebApplicationServerRequestMapper.java
│ │ │ │ └── WelcomeFileManager.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── core/
│ │ └── api/
│ │ └── AttributeManagerTest.java
│ ├── impl/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── core/
│ │ │ │ └── impl/
│ │ │ │ ├── AsyncHttpDispatchWrapper.java
│ │ │ │ ├── AsyncNonHttpDispatchWrapper.java
│ │ │ │ ├── CookieParser.java
│ │ │ │ ├── DefaultAnnotationManager.java
│ │ │ │ ├── DefaultAsyncContext.java
│ │ │ │ ├── DefaultAsyncDispatcher.java
│ │ │ │ ├── DefaultAsyncManager.java
│ │ │ │ ├── DefaultAttributeManager.java
│ │ │ │ ├── DefaultAuthenticatedIdentity.java
│ │ │ │ ├── DefaultCurrentRequestHolder.java
│ │ │ │ ├── DefaultDispatcherManager.java
│ │ │ │ ├── DefaultErrorPageManager.java
│ │ │ │ ├── DefaultFilterChain.java
│ │ │ │ ├── DefaultFilterEnvironment.java
│ │ │ │ ├── DefaultFilterMapping.java
│ │ │ │ ├── DefaultHttpHeader.java
│ │ │ │ ├── DefaultHttpHeaderManager.java
│ │ │ │ ├── DefaultHttpServletMapping.java
│ │ │ │ ├── DefaultHttpSession.java
│ │ │ │ ├── DefaultHttpSessionManager.java
│ │ │ │ ├── DefaultInvocationFinder.java
│ │ │ │ ├── DefaultJspConfigDescriptor.java
│ │ │ │ ├── DefaultJspManager.java
│ │ │ │ ├── DefaultLocaleEncodingManager.java
│ │ │ │ ├── DefaultModuleFinder.java
│ │ │ │ ├── DefaultModuleLayerProcessor.java
│ │ │ │ ├── DefaultModuleReader.java
│ │ │ │ ├── DefaultModuleReference.java
│ │ │ │ ├── DefaultMultiPartManager.java
│ │ │ │ ├── DefaultNamedRequestDispatcher.java
│ │ │ │ ├── DefaultObjectInstanceManager.java
│ │ │ │ ├── DefaultPiranha.java
│ │ │ │ ├── DefaultPiranhaBuilder.java
│ │ │ │ ├── DefaultPiranhaConfiguration.java
│ │ │ │ ├── DefaultPushBuilder.java
│ │ │ │ ├── DefaultSecurityManager.java
│ │ │ │ ├── DefaultServlet.java
│ │ │ │ ├── DefaultServletConnection.java
│ │ │ │ ├── DefaultServletEnvironment.java
│ │ │ │ ├── DefaultServletInvocation.java
│ │ │ │ ├── DefaultServletRequestDispatcher.java
│ │ │ │ ├── DefaultServletRequestManager.java
│ │ │ │ ├── DefaultTaglibDescriptor.java
│ │ │ │ ├── DefaultWebApplication.java
│ │ │ │ ├── DefaultWebApplicationBuilder.java
│ │ │ │ ├── DefaultWebApplicationClassLoader.java
│ │ │ │ ├── DefaultWebApplicationExtensionContext.java
│ │ │ │ ├── DefaultWebApplicationInputStream.java
│ │ │ │ ├── DefaultWebApplicationManager.java
│ │ │ │ ├── DefaultWebApplicationOutputStream.java
│ │ │ │ ├── DefaultWebApplicationPrintWriter.java
│ │ │ │ ├── DefaultWebApplicationRequest.java
│ │ │ │ ├── DefaultWebApplicationRequestBuilder.java
│ │ │ │ ├── DefaultWebApplicationRequestMapper.java
│ │ │ │ ├── DefaultWebApplicationRequestMapping.java
│ │ │ │ ├── DefaultWebApplicationResponse.java
│ │ │ │ ├── DefaultWebApplicationResponseBuilder.java
│ │ │ │ ├── DefaultWebConnection.java
│ │ │ │ └── WarFileExtractor.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ ├── java/
│ │ │ └── cloud/
│ │ │ └── piranha/
│ │ │ └── core/
│ │ │ └── impl/
│ │ │ ├── AsyncContextTest.java
│ │ │ ├── CookieParserTest.java
│ │ │ ├── DefaultAnnotationManagerTest.java
│ │ │ ├── DefaultErrorPageManagerTest.java
│ │ │ ├── DefaultFilterEnvironmentTest.java
│ │ │ ├── DefaultHttpHeaderManagerTest.java
│ │ │ ├── DefaultPiranhaConfigurationTest.java
│ │ │ ├── DefaultPushBuilderTest.java
│ │ │ ├── DefaultSecurityManagerTest.java
│ │ │ ├── DefaultServletEnvironmentTest.java
│ │ │ ├── DefaultWebApplicationBuilderTest.java
│ │ │ ├── DefaultWebApplicationClassLoaderTest.java
│ │ │ ├── DefaultWebApplicationExtensionContextTest.java
│ │ │ ├── DefaultWebApplicationManagerTest.java
│ │ │ ├── DefaultWebApplicationOutputStreamTest.java
│ │ │ ├── DefaultWebApplicationRequestMapperTest.java
│ │ │ ├── DefaultWebApplicationRequestMappingTest.java
│ │ │ ├── DefaultWebApplicationRequestTest.java
│ │ │ ├── DefaultWebApplicationResponseTest.java
│ │ │ ├── DefaultWebApplicationTest.java
│ │ │ ├── DefaultWebConnectionTest.java
│ │ │ ├── FilterTest.java
│ │ │ ├── HttpSessionTest.java
│ │ │ ├── ReadListenerTest.java
│ │ │ ├── RequestDispatcherTest.java
│ │ │ ├── ServletContextAttributeListenerTest.java
│ │ │ ├── ServletInputStreamTest.java
│ │ │ ├── ServletRegistrationTest.java
│ │ │ ├── ServletRequestAttributeListenerTest.java
│ │ │ ├── ServletTest.java
│ │ │ ├── TestChat1Servlet.java
│ │ │ ├── TestChat2Servlet.java
│ │ │ ├── TestEcho1Servlet.java
│ │ │ ├── TestEcho2Servlet.java
│ │ │ ├── TestHttpServerRequest.java
│ │ │ ├── TestHttpServerResponse.java
│ │ │ ├── TestIOExceptionServlet.java
│ │ │ ├── TestInclude2Servlet.java
│ │ │ ├── TestInclude3Servlet.java
│ │ │ ├── TestInclude4Servlet.java
│ │ │ ├── TestIncludeServlet.java
│ │ │ ├── TestRuntimeExceptionServlet.java
│ │ │ ├── TestSnoopServlet.java
│ │ │ ├── TestWebApplicationRequest.java
│ │ │ ├── TestWebApplicationResponse.java
│ │ │ └── WriteListenerTest.java
│ │ └── webapp/
│ │ └── resourcepaths/
│ │ ├── catalog/
│ │ │ ├── index.html
│ │ │ ├── offers/
│ │ │ │ ├── books.html
│ │ │ │ └── music.html
│ │ │ └── products.html
│ │ ├── customer/
│ │ │ └── login.jsp
│ │ └── welcome.html
│ └── pom.xml
├── debug/
│ ├── modules.sh
│ ├── pom.xml
│ └── src/
│ └── main/
│ └── java/
│ ├── cloud/
│ │ └── piranha/
│ │ └── debug/
│ │ └── Debug.java
│ └── module-info.java
├── dist/
│ ├── coreprofile/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── dist/
│ │ │ │ └── coreprofile/
│ │ │ │ └── CoreProfilePiranhaMain.java
│ │ │ └── module-info.java
│ │ └── site/
│ │ ├── markdown/
│ │ │ ├── create_a_json_rest_service.md
│ │ │ ├── create_a_rest_service.md
│ │ │ ├── debugging_a_rest_service_with_netbeans.md
│ │ │ ├── debugging_a_rest_service_with_vscode.md
│ │ │ ├── index.md
│ │ │ ├── testing_with_junit5_and_arquillian.md
│ │ │ └── using_project_crac.md
│ │ └── site.xml
│ ├── isolated/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── assembly/
│ │ │ │ └── zip.xml
│ │ │ ├── docker/
│ │ │ │ └── Dockerfile
│ │ │ ├── java/
│ │ │ │ ├── cloud/
│ │ │ │ │ └── piranha/
│ │ │ │ │ └── dist/
│ │ │ │ │ └── isolated/
│ │ │ │ │ └── IsolatedPiranha.java
│ │ │ │ └── module-info.java
│ │ │ └── zip/
│ │ │ ├── etc/
│ │ │ │ ├── keystore.jks
│ │ │ │ └── logging.properties
│ │ │ ├── tmp/
│ │ │ │ └── README
│ │ │ └── webapps/
│ │ │ └── README
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── dist/
│ │ └── isolated/
│ │ └── IsolatedPiranhaIT.java
│ ├── micro/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── docker/
│ │ │ │ └── Dockerfile
│ │ │ ├── java/
│ │ │ │ ├── cloud/
│ │ │ │ │ └── piranha/
│ │ │ │ │ └── dist/
│ │ │ │ │ └── micro/
│ │ │ │ │ ├── MicroBootstrap.java
│ │ │ │ │ └── package-info.java
│ │ │ │ └── module-info.java
│ │ │ └── javadoc/
│ │ │ └── cloud.piranha.dist.micro/
│ │ │ └── cloud/
│ │ │ └── piranha/
│ │ │ └── dist/
│ │ │ └── micro/
│ │ │ └── doc-files/
│ │ │ └── request-response.pptx
│ │ ├── site/
│ │ │ ├── markdown/
│ │ │ │ ├── create_a_hello_world_web_application.md
│ │ │ │ └── index.md
│ │ │ └── site.xml
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── dist/
│ │ └── micro/
│ │ └── MicroPiranhaIT.java
│ ├── microprofile/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── docker/
│ │ │ └── Dockerfile
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── dist/
│ │ │ └── microprofile/
│ │ │ └── MicroProfilePiranhaMain.java
│ │ └── module-info.java
│ ├── platform/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── assembly/
│ │ │ │ └── zip.xml
│ │ │ ├── docker/
│ │ │ │ └── Dockerfile
│ │ │ ├── java/
│ │ │ │ ├── cloud/
│ │ │ │ │ └── piranha/
│ │ │ │ │ └── dist/
│ │ │ │ │ └── platform/
│ │ │ │ │ ├── PlatformPiranhaMain.java
│ │ │ │ │ └── PlatformWebApplication.java
│ │ │ │ └── module-info.java
│ │ │ └── zip/
│ │ │ ├── etc/
│ │ │ │ ├── keystore.jks
│ │ │ │ ├── logging.properties
│ │ │ │ └── truststore.jks
│ │ │ ├── tmp/
│ │ │ │ └── README
│ │ │ └── webapps/
│ │ │ └── README
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── dist/
│ │ └── platform/
│ │ ├── PlatformPiranhaBuilderTest.java
│ │ └── PlatformPiranhaIT.java
│ ├── pom.xml
│ ├── server/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── assembly/
│ │ │ │ └── zip.xml
│ │ │ ├── docker/
│ │ │ │ └── Dockerfile
│ │ │ ├── java/
│ │ │ │ ├── cloud/
│ │ │ │ │ └── piranha/
│ │ │ │ │ └── dist/
│ │ │ │ │ └── server/
│ │ │ │ │ ├── ServerPiranhaMain.java
│ │ │ │ │ └── ServerWebApplication.java
│ │ │ │ └── module-info.java
│ │ │ └── zip/
│ │ │ ├── etc/
│ │ │ │ ├── keystore.jks
│ │ │ │ ├── logging.properties
│ │ │ │ └── truststore.jks
│ │ │ ├── tmp/
│ │ │ │ └── README
│ │ │ └── webapps/
│ │ │ └── README
│ │ ├── site/
│ │ │ ├── markdown/
│ │ │ │ ├── create_a_hello_world_web_application.md
│ │ │ │ └── index.md
│ │ │ └── site.xml
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── dist/
│ │ └── server/
│ │ ├── ServerPiranhaBuilderTest.java
│ │ └── ServerPiranhaIT.java
│ ├── servlet/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── docker/
│ │ │ │ └── Dockerfile
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── dist/
│ │ │ │ └── servlet/
│ │ │ │ └── ServletPiranhaMain.java
│ │ │ └── module-info.java
│ │ └── site/
│ │ ├── markdown/
│ │ │ ├── create_a_hello_world_web_application.md
│ │ │ ├── create_a_jakarta_pages_application.md
│ │ │ ├── create_a_websocket_application.md
│ │ │ ├── index.md
│ │ │ └── run_a_web_application_on_crac.md
│ │ └── site.xml
│ └── webprofile/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── docker/
│ │ │ └── Dockerfile
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── dist/
│ │ │ └── webprofile/
│ │ │ └── WebProfilePiranhaMain.java
│ │ └── module-info.java
│ └── site/
│ ├── markdown/
│ │ ├── create_a_faces_application.md
│ │ ├── create_a_hello_world_application.md
│ │ ├── create_a_jakarta_rest_service.md
│ │ ├── create_a_pages_application.md
│ │ ├── index.md
│ │ ├── testing_with_junit5_and_playwright.md
│ │ └── testing_with_our_container_image.md
│ └── site.xml
├── docker/
│ ├── coreprofile/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── docker/
│ │ │ └── Dockerfile
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── docker/
│ │ └── coreprofile/
│ │ └── CoreProfileIT.java
│ └── pom.xml
├── embedded/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── embedded/
│ │ │ │ ├── EmbeddedPiranha.java
│ │ │ │ ├── EmbeddedPiranhaBuilder.java
│ │ │ │ ├── EmbeddedRequest.java
│ │ │ │ ├── EmbeddedRequestBuilder.java
│ │ │ │ ├── EmbeddedResponse.java
│ │ │ │ ├── EmbeddedResponseBuilder.java
│ │ │ │ └── package-info.java
│ │ │ └── module-info.java
│ │ └── javadoc/
│ │ └── cloud.piranha.embedded/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── embedded/
│ │ └── doc-files/
│ │ └── request-response.pptx
│ ├── site/
│ │ ├── markdown/
│ │ │ ├── create_a_hello_world_web_application.md
│ │ │ ├── create_a_piranha_embedded_graalvm_application.md
│ │ │ ├── create_an_embedded_jlink_application.md
│ │ │ ├── index.md
│ │ │ └── running_piranha_embedded_with_spring_boot.md
│ │ └── site.xml
│ └── test/
│ └── java/
│ └── cloud/
│ └── piranha/
│ └── embedded/
│ ├── EmbeddedPiranhaBuilderTest.java
│ ├── EmbeddedPiranhaTest.java
│ ├── EmbeddedRequestBuilderTest.java
│ ├── EmbeddedRequestTest.java
│ └── EmbeddedResponseBuilderTest.java
├── extension/
│ ├── angus/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── angus/
│ │ │ └── AngusExtension.java
│ │ └── module-info.java
│ ├── annotationscan/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── annotationscan/
│ │ │ │ ├── AnnotationScanExtension.java
│ │ │ │ ├── AnnotationScanInitializer.java
│ │ │ │ └── internal/
│ │ │ │ ├── InternalAnnotationScanAnnotationInfo.java
│ │ │ │ └── InternalAnnotationScanAnnotationManager.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── extension/
│ │ └── annotationscan/
│ │ ├── AnnotationScanExtensionTest.java
│ │ ├── TestAnnotation.java
│ │ ├── TestServlet.java
│ │ ├── TestWithHandlesTypesInitializer.java
│ │ └── internal/
│ │ └── InternalAnnotationScanAnnotationManagerTest.java
│ ├── annotationscan-classfile/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── annotationscan/
│ │ │ │ └── classfile/
│ │ │ │ ├── ClassfileAnnotationScanExtension.java
│ │ │ │ ├── ClassfileAnnotationScanInitializer.java
│ │ │ │ └── internal/
│ │ │ │ ├── InternalAnnotationScanAnnotationInfo.java
│ │ │ │ └── InternalAnnotationScanAnnotationManager.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── extension/
│ │ └── annotationscan/
│ │ └── classfile/
│ │ ├── AnnotationScanExtensionTest.java
│ │ ├── TestAnnotation.java
│ │ ├── TestServlet.java
│ │ ├── TestWithHandlesTypesInitializer.java
│ │ └── internal/
│ │ └── InternalAnnotationScanAnnotationManagerTest.java
│ ├── bytesstreamhandler/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── bytesstreamhandler/
│ │ │ │ ├── BytesStreamHandlerExtension.java
│ │ │ │ ├── BytesStreamHandlerServletContextListener.java
│ │ │ │ └── BytesStreamHandlerServletRequestListener.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── extension/
│ │ └── bytesstreamhandler/
│ │ └── BytesStreamHandlerExtensionTest.java
│ ├── concurro/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── concurro/
│ │ │ └── ConcurroExtension.java
│ │ └── module-info.java
│ ├── coreprofile/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── coreprofile/
│ │ │ └── CoreProfileExtension.java
│ │ └── module-info.java
│ ├── datasource/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── datasource/
│ │ │ │ ├── DataSourceWrapper.java
│ │ │ │ ├── DefaultDatasourceExtension.java
│ │ │ │ ├── DefaultDatasourceInitializer.java
│ │ │ │ ├── TxJoiningDataSource.java
│ │ │ │ └── XADataSourceWrapper.java
│ │ │ └── module-info.java
│ │ └── site/
│ │ ├── markdown/
│ │ │ └── index.md
│ │ └── site.xml
│ ├── declared/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── declared/
│ │ │ │ ├── DeclaredExtension.java
│ │ │ │ └── internal/
│ │ │ │ └── InternalDeclaredInitializer.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── extension/
│ │ ├── declared/
│ │ │ └── DeclaredExtensionTest.java
│ │ └── handlestypes/
│ │ └── internal/
│ │ └── InternalDeclaredInitializerTest.java
│ ├── eclipselink/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── eclipselink/
│ │ │ │ ├── EclipseLinkCdiExtension.java
│ │ │ │ ├── EclipseLinkExtension.java
│ │ │ │ ├── EclipseLinkInitializer.java
│ │ │ │ ├── EntityManagerFactoryCreator.java
│ │ │ │ ├── EntityManagerProducer.java
│ │ │ │ ├── NonTxEntityManagerHolder.java
│ │ │ │ ├── PiranhaEntityManager.java
│ │ │ │ ├── TxEntityManagerHolder.java
│ │ │ │ └── wrappers/
│ │ │ │ └── EntityManagerWrapper.java
│ │ │ └── module-info.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── services/
│ │ └── jakarta.enterprise.inject.spi.Extension
│ ├── epicyro/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── epicyro/
│ │ │ │ ├── AuthenticationFilter.java
│ │ │ │ ├── AuthenticationInitializer.java
│ │ │ │ └── DoNothingServerAuthModule.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── extension/
│ │ └── epicyro/
│ │ └── AuthenticationInitializerTest.java
│ ├── exousia/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── exousia/
│ │ │ ├── AuthorizationFilter.java
│ │ │ ├── AuthorizationInitializer.java
│ │ │ ├── AuthorizationPostInitializer.java
│ │ │ ├── AuthorizationPreFilter.java
│ │ │ ├── AuthorizationPreInitializer.java
│ │ │ ├── PiranhaPrincipalMapper.java
│ │ │ └── PiranhaToExousiaConverter.java
│ │ └── module-info.java
│ ├── expressly/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── expressly/
│ │ │ └── ExpresslyExtension.java
│ │ └── module-info.java
│ ├── fileupload/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── fileupload/
│ │ │ │ ├── FileUploadExtension.java
│ │ │ │ ├── FileUploadMultiPart.java
│ │ │ │ ├── FileUploadMultiPartInitializer.java
│ │ │ │ └── FileUploadMultiPartManager.java
│ │ │ └── module-info.java
│ │ ├── site/
│ │ │ ├── markdown/
│ │ │ │ └── index.md
│ │ │ └── site.xml
│ │ └── test/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── fileupload/
│ │ │ └── tests/
│ │ │ └── FileUploadMultiPartManagerTest.java
│ │ └── module-info.java
│ ├── handlestypes/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── handlestypes/
│ │ │ │ ├── HandlesTypesExtension.java
│ │ │ │ └── internal/
│ │ │ │ ├── InternalHandlesTypesInitializer.java
│ │ │ │ └── InternalHandlesTypesManager.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── extension/
│ │ └── handlestypes/
│ │ ├── HandlesTypesExtensionTest.java
│ │ └── internal/
│ │ ├── InternalHandlesTypesInitializerTest.java
│ │ ├── InternalHandlesTypesManagerTest.java
│ │ ├── TestA.java
│ │ ├── TestB.java
│ │ ├── TestC.java
│ │ ├── TestD.java
│ │ └── TestServletContainerInitializer.java
│ ├── hazelcast/
│ │ ├── README.md
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ ├── cloud/
│ │ │ │ │ └── piranha/
│ │ │ │ │ └── extension/
│ │ │ │ │ └── hazelcast/
│ │ │ │ │ ├── HazelcastHttpSession.java
│ │ │ │ │ ├── HazelcastHttpSessionManager.java
│ │ │ │ │ └── HazelcastInitializer.java
│ │ │ │ └── module-info.java
│ │ │ └── resources/
│ │ │ └── META-INF/
│ │ │ └── services/
│ │ │ └── jakarta.servlet.ServletContainerInitializer
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── extension/
│ │ └── hazelcast/
│ │ └── HazelcastInitializerTest.java
│ ├── herring/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── herring/
│ │ │ │ ├── HerringExtension.java
│ │ │ │ ├── HerringInitialContextFactory.java
│ │ │ │ └── HerringServletRequestListener.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── extension/
│ │ └── herring/
│ │ └── HerringExtensionTest.java
│ ├── hibernate-validator/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── hibernate/
│ │ │ └── validator/
│ │ │ └── HibernateValidatorExtension.java
│ │ └── module-info.java
│ ├── jaxb/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── jaxb/
│ │ │ └── JAXBExtension.java
│ │ └── module-info.java
│ ├── jersey/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── jersey/
│ │ │ │ ├── JerseyExtension.java
│ │ │ │ ├── JerseySourceBean.java
│ │ │ │ └── JerseyTargetBean.java
│ │ │ └── module-info.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── services/
│ │ └── jakarta.enterprise.inject.spi.Extension
│ ├── jstl/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── jstl/
│ │ │ └── JSTLExtension.java
│ │ └── module-info.java
│ ├── micro/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── micro/
│ │ │ │ └── MicroExtension.java
│ │ │ └── module-info.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── services/
│ │ └── cloud.piranha.core.api.WebApplicationExtension
│ ├── microprofile/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── microprofile/
│ │ │ └── MicroProfileExtension.java
│ │ └── module-info.java
│ ├── mojarra/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── mojarra/
│ │ │ └── MojarraExtension.java
│ │ └── module-info.java
│ ├── naming-cdi/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── naming/
│ │ │ │ └── cdi/
│ │ │ │ ├── DefaultInitialContextFactory.java
│ │ │ │ ├── NamingExtension.java
│ │ │ │ └── NamingServletRequestListener.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── extension/
│ │ └── naming/
│ │ └── NamingExtensionTest.java
│ ├── omnifaces-config/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── omnifaces/
│ │ │ └── config/
│ │ │ └── ConfigExtension.java
│ │ └── module-info.java
│ ├── omnifaces-microprofile-jwt-auth/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── omnifaces/
│ │ │ └── microprofile/
│ │ │ └── jwt/
│ │ │ └── auth/
│ │ │ └── MicroProfileJWTAuthExtension.java
│ │ └── module-info.java
│ ├── omnifaces-omniservices/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── omniservices/
│ │ │ └── OmniServicesExtension.java
│ │ └── module-info.java
│ ├── omnifaces-omniutils/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── omniutils/
│ │ │ └── OmniUtilsExtension.java
│ │ └── module-info.java
│ ├── omnifish-omnibeans/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── omnibeans/
│ │ │ └── OmniBeansExtension.java
│ │ └── module-info.java
│ ├── omnifish-transact/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── transact/
│ │ │ ├── TransactExtension.java
│ │ │ ├── TransactFilter.java
│ │ │ └── TransactInitializer.java
│ │ └── module-info.java
│ ├── parsson/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── parsson/
│ │ │ └── ParssonExtension.java
│ │ └── module-info.java
│ ├── platform/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── platform/
│ │ │ └── PlatformExtension.java
│ │ └── module-info.java
│ ├── policy/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── policy/
│ │ │ │ ├── PolicyExtension.java
│ │ │ │ └── internal/
│ │ │ │ ├── InternalPolicyServletContextListener.java
│ │ │ │ ├── InternalPolicyServletRequestListener.java
│ │ │ │ └── InternalPolicyThreadLocal.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── extension/
│ │ └── policy/
│ │ └── PolicyExtensionTest.java
│ ├── pom.xml
│ ├── scinitializer/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── scinitializer/
│ │ │ │ └── ServletContainerInitializerExtension.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── extension/
│ │ └── scinitializer/
│ │ └── ServletContainerInitializerExtensionTest.java
│ ├── security-jakarta/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── security/
│ │ │ └── jakarta/
│ │ │ ├── JakartaSecurityAllInitializer.java
│ │ │ └── JakartaSecurityExtension.java
│ │ └── module-info.java
│ ├── security-servlet/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── security/
│ │ │ │ └── servlet/
│ │ │ │ ├── ServletSecurityAllInitializer.java
│ │ │ │ ├── ServletSecurityExtension.java
│ │ │ │ ├── ServletSecurityManager.java
│ │ │ │ ├── ServletSecurityManagerExtension.java
│ │ │ │ ├── ServletSecurityManagerInitializer.java
│ │ │ │ └── ServletSecurityPrincipal.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── extension/
│ │ └── security/
│ │ └── servlet/
│ │ ├── ServletSecurityManagerExtensionTest.java
│ │ ├── ServletSecurityManagerInitializerTest.java
│ │ └── ServletSecurityManagerTest.java
│ ├── servlet/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── servlet/
│ │ │ └── ServletExtension.java
│ │ └── module-info.java
│ ├── servletannotations/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── servletannotations/
│ │ │ │ ├── ServletAnnotationsExtension.java
│ │ │ │ └── ServletAnnotationsInitializer.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ ├── java/
│ │ │ └── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── servletannotations/
│ │ │ ├── ServletAnnotationsExtensionTest.java
│ │ │ ├── Test2Filter.java
│ │ │ ├── Test2Servlet.java
│ │ │ ├── Test3Filter.java
│ │ │ ├── Test3Servlet.java
│ │ │ ├── Test4Filter.java
│ │ │ ├── Test4Servlet.java
│ │ │ ├── Test5Servlet.java
│ │ │ ├── TestFilter.java
│ │ │ ├── TestListener.java
│ │ │ ├── TestServlet.java
│ │ │ └── WebServletTest.java
│ │ └── webapp/
│ │ └── webservlet/
│ │ └── WEB-INF/
│ │ └── web.xml
│ ├── soteria/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── soteria/
│ │ │ │ ├── IdentityStoreLoginHandler.java
│ │ │ │ ├── SoteriaInitializer.java
│ │ │ │ └── SoteriaPreCDIInitializer.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ ├── java/
│ │ │ └── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── soteria/
│ │ │ ├── IdentityStoreLoginHandlerTest.java
│ │ │ ├── SoteriaInitializerNoCdiTest.java
│ │ │ ├── SoteriaInitializerTest.java
│ │ │ ├── SoteriaPreCDIInitializerTest.java
│ │ │ └── TestIdentityStore.java
│ │ └── webapp/
│ │ └── WEB-INF/
│ │ └── beans.xml
│ ├── tempdir/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── tempdir/
│ │ │ │ ├── TempDirExtension.java
│ │ │ │ └── TempDirServletContainerInitializer.java
│ │ │ └── module-info.java
│ │ ├── site/
│ │ │ ├── markdown/
│ │ │ │ └── index.md
│ │ │ └── site.xml
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── extension/
│ │ └── tempdir/
│ │ ├── TempDirExtensionTest.java
│ │ └── TempDirServletContainerInitializerTest.java
│ ├── tyrus/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── tyrus/
│ │ │ │ └── TyrusExtension.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── extension/
│ │ └── tyrus/
│ │ └── TyrusExtensionTest.java
│ ├── wasp/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── wasp/
│ │ │ │ ├── WaspExtension.java
│ │ │ │ ├── WaspInitializer.java
│ │ │ │ ├── WaspJspManager.java
│ │ │ │ ├── WaspJspManagerExtension.java
│ │ │ │ ├── WaspJspManagerInitializer.java
│ │ │ │ └── WaspServlet.java
│ │ │ └── module-info.java
│ │ ├── site/
│ │ │ └── site.xml
│ │ └── test/
│ │ ├── java/
│ │ │ └── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── wasp/
│ │ │ ├── JspDescriptorTest.java
│ │ │ ├── JspWriterTest.java
│ │ │ ├── WaspExtensionTest.java
│ │ │ ├── WaspInitializerTest.java
│ │ │ └── WaspJspManagerExtensionTest.java
│ │ └── webapp/
│ │ ├── jspwriter/
│ │ │ ├── clearBuffer.jsp
│ │ │ ├── close.jsp
│ │ │ ├── close2.jsp
│ │ │ ├── close3.jsp
│ │ │ └── close4.jsp
│ │ └── waspinitializer/
│ │ └── WEB-INF/
│ │ ├── classes/
│ │ │ └── KEEPME
│ │ └── lib/
│ │ └── KEEPME
│ ├── webprofile/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── webprofile/
│ │ │ └── WebProfileExtension.java
│ │ └── module-info.java
│ ├── webxml/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── webxml/
│ │ │ │ ├── WebXmlExtension.java
│ │ │ │ ├── WebXmlInitializer.java
│ │ │ │ └── internal/
│ │ │ │ ├── WebXml.java
│ │ │ │ ├── WebXmlContextParam.java
│ │ │ │ ├── WebXmlDataSource.java
│ │ │ │ ├── WebXmlErrorPage.java
│ │ │ │ ├── WebXmlFilter.java
│ │ │ │ ├── WebXmlFilterInitParam.java
│ │ │ │ ├── WebXmlFilterMapping.java
│ │ │ │ ├── WebXmlJspConfig.java
│ │ │ │ ├── WebXmlJspConfigTaglib.java
│ │ │ │ ├── WebXmlListener.java
│ │ │ │ ├── WebXmlLoginConfig.java
│ │ │ │ ├── WebXmlManager.java
│ │ │ │ ├── WebXmlMimeMapping.java
│ │ │ │ ├── WebXmlParser.java
│ │ │ │ ├── WebXmlProcessor.java
│ │ │ │ ├── WebXmlSecurityConstraint.java
│ │ │ │ ├── WebXmlServlet.java
│ │ │ │ ├── WebXmlServletInitParam.java
│ │ │ │ ├── WebXmlServletMapping.java
│ │ │ │ ├── WebXmlServletMultipartConfig.java
│ │ │ │ ├── WebXmlServletSecurityRoleRef.java
│ │ │ │ ├── WebXmlSessionConfig.java
│ │ │ │ └── WebXmlSessionConfigCookieConfig.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ ├── java/
│ │ │ └── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── webxml/
│ │ │ ├── TestFilter.java
│ │ │ ├── TestServlet.java
│ │ │ ├── WebXmlExtensionTest.java
│ │ │ ├── WebXmlInitializerTest.java
│ │ │ └── internal/
│ │ │ ├── ContextParamTest.java
│ │ │ ├── DataSourceTest.java
│ │ │ ├── DefaultContextPathTest.java
│ │ │ ├── DenyUncoveredMethodsTest.java
│ │ │ ├── EffectiveMajorVersionTest.java
│ │ │ ├── ErrorPageTest.java
│ │ │ ├── FilterMappingTest.java
│ │ │ ├── JspConfigTest.java
│ │ │ ├── MetadataCompleteTest.java
│ │ │ ├── MimeMappingTest.java
│ │ │ ├── TestWithoutLeadingSlashServlet.java
│ │ │ ├── WebXmlManagerTest.java
│ │ │ ├── WebXmlParserTest.java
│ │ │ ├── WebXmlProcessorTest.java
│ │ │ ├── WelcomeFileTest.java
│ │ │ └── WithoutLeadingSlashTest.java
│ │ └── webxml/
│ │ ├── contextParam/
│ │ │ └── WEB-INF/
│ │ │ └── web.xml
│ │ ├── dataSource/
│ │ │ └── WEB-INF/
│ │ │ └── web.xml
│ │ ├── defaultContextPath/
│ │ │ └── WEB-INF/
│ │ │ └── web.xml
│ │ ├── denyUncoveredMethods/
│ │ │ └── WEB-INF/
│ │ │ └── web.xml
│ │ ├── effectiveMajorVersion1/
│ │ │ └── WEB-INF/
│ │ │ └── web.xml
│ │ ├── errorPage/
│ │ │ └── WEB-INF/
│ │ │ └── web.xml
│ │ ├── filterMappings/
│ │ │ └── WEB-INF/
│ │ │ └── web.xml
│ │ ├── init/
│ │ │ └── WEB-INF/
│ │ │ └── web.xml
│ │ ├── init2/
│ │ │ └── WEB-INF/
│ │ │ └── web.xml
│ │ ├── init3/
│ │ │ └── WEB-INF/
│ │ │ └── classes/
│ │ │ └── META-INF/
│ │ │ └── web-fragment.xml
│ │ ├── jspConfig/
│ │ │ └── WEB-INF/
│ │ │ └── web.xml
│ │ ├── metadataComplete/
│ │ │ └── WEB-INF/
│ │ │ └── web.xml
│ │ ├── mimeMapping/
│ │ │ └── WEB-INF/
│ │ │ └── web.xml
│ │ ├── parse/
│ │ │ └── WEB-INF/
│ │ │ └── web.xml
│ │ ├── parse2/
│ │ │ └── WEB-INF/
│ │ │ └── web.xml
│ │ ├── parse3/
│ │ │ └── WEB-INF/
│ │ │ └── web.xml
│ │ ├── parse4/
│ │ │ └── WEB-INF/
│ │ │ └── web.xml
│ │ ├── welcomeFile/
│ │ │ └── WEB-INF/
│ │ │ └── web.xml
│ │ └── withoutLeadingSlash1/
│ │ └── WEB-INF/
│ │ └── web.xml
│ ├── welcomefile/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── welcomefile/
│ │ │ │ ├── WelcomeFileExtension.java
│ │ │ │ └── internal/
│ │ │ │ └── InternalWelcomeFileManager.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ ├── java/
│ │ │ └── cloud/
│ │ │ └── piranha/
│ │ │ └── extension/
│ │ │ └── welcomefile/
│ │ │ ├── WelcomeFileExtensionTest.java
│ │ │ └── internal/
│ │ │ └── InternalWelcomeFileManagerTest.java
│ │ └── webapp/
│ │ ├── welcomefile1/
│ │ │ └── index.html
│ │ └── welcomefile2/
│ │ └── custom.html
│ ├── weld/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── extension/
│ │ │ │ └── weld/
│ │ │ │ ├── RealtimeHttpServletRequestWrapper.java
│ │ │ │ ├── WeldCDI.java
│ │ │ │ ├── WeldContainer.java
│ │ │ │ ├── WeldExtension.java
│ │ │ │ ├── WeldHttpServletRequest.java
│ │ │ │ ├── WeldInitListener.java
│ │ │ │ ├── WeldInitializer.java
│ │ │ │ ├── WeldObjectInstanceManager.java
│ │ │ │ ├── WeldProvider.java
│ │ │ │ └── WeldSecurityService.java
│ │ │ └── module-info.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── services/
│ │ ├── org.jboss.weld.bootstrap.api.Service
│ │ └── org.jboss.weld.environment.servlet.Container
│ └── yasson/
│ ├── pom.xml
│ └── src/
│ └── main/
│ └── java/
│ ├── cloud/
│ │ └── piranha/
│ │ └── extension/
│ │ └── yasson/
│ │ └── YassonExtension.java
│ └── module-info.java
├── feature/
│ ├── api/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── feature/
│ │ │ └── api/
│ │ │ ├── Feature.java
│ │ │ └── FeatureManager.java
│ │ └── module-info.java
│ ├── crac/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── feature/
│ │ │ │ └── crac/
│ │ │ │ └── CracFeature.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── feature/
│ │ └── crac/
│ │ └── CracFeatureTest.java
│ ├── exitonstop/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── feature/
│ │ │ │ └── exitonstop/
│ │ │ │ └── ExitOnStopFeature.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── feature/
│ │ └── exitonstop/
│ │ └── ExitOnStopFeatureTest.java
│ ├── http/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── feature/
│ │ │ │ └── http/
│ │ │ │ └── HttpFeature.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── feature/
│ │ └── http/
│ │ └── HttpFeatureTest.java
│ ├── https/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── feature/
│ │ │ │ └── https/
│ │ │ │ └── HttpsFeature.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── feature/
│ │ └── https/
│ │ └── HttpsFeatureTest.java
│ ├── impl/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── feature/
│ │ │ │ └── impl/
│ │ │ │ ├── DefaultFeature.java
│ │ │ │ └── DefaultFeatureManager.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── feature/
│ │ └── impl/
│ │ ├── DefaultFeatureManagerTest.java
│ │ └── DefaultFeatureTest.java
│ ├── isolatedwebapp/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── feature/
│ │ │ └── isolatedwebapp/
│ │ │ └── IsolatedWebAppFeature.java
│ │ └── module-info.java
│ ├── logging/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── feature/
│ │ │ │ └── logging/
│ │ │ │ ├── LoggingFeature.java
│ │ │ │ └── LoggingHandler.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── feature/
│ │ └── logging/
│ │ └── LoggingFeatureTest.java
│ ├── pid/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── feature/
│ │ │ └── pid/
│ │ │ └── PidFeature.java
│ │ └── module-info.java
│ ├── pom.xml
│ ├── trace/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── feature/
│ │ │ │ └── trace/
│ │ │ │ └── TraceFeature.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── feature/
│ │ │ └── trace/
│ │ │ └── tests/
│ │ │ └── TraceFeatureTest.java
│ │ └── module-info.java
│ ├── webapp/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── feature/
│ │ │ │ └── webapp/
│ │ │ │ └── WebAppFeature.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── feature/
│ │ └── webapp/
│ │ └── WebAppFeatureTest.java
│ └── webapps/
│ ├── pom.xml
│ └── src/
│ └── main/
│ └── java/
│ ├── cloud/
│ │ └── piranha/
│ │ └── feature/
│ │ └── webapps/
│ │ └── WebAppsFeature.java
│ └── module-info.java
├── http/
│ ├── api/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── http/
│ │ │ └── api/
│ │ │ ├── HttpServer.java
│ │ │ ├── HttpServerProcessor.java
│ │ │ ├── HttpServerProcessorEndState.java
│ │ │ ├── HttpServerRequest.java
│ │ │ ├── HttpServerResponse.java
│ │ │ └── package-info.java
│ │ └── module-info.java
│ ├── crac/
│ │ ├── Dockerfile
│ │ ├── README.md
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── http/
│ │ │ └── crac/
│ │ │ └── CracHttpServer.java
│ │ └── module-info.java
│ ├── grizzly/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── http/
│ │ │ │ └── grizzly/
│ │ │ │ ├── GrizzlyHttpServer.java
│ │ │ │ ├── GrizzlyHttpServerRequest.java
│ │ │ │ ├── GrizzlyHttpServerResponse.java
│ │ │ │ └── package-info.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── http/
│ │ └── grizzly/
│ │ ├── GrizzlyHttpServerRequestTest.java
│ │ └── GrizzlyHttpServerTest.java
│ ├── impl/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── http/
│ │ │ │ └── impl/
│ │ │ │ ├── DefaultHttpServer.java
│ │ │ │ ├── DefaultHttpServerAcceptorThread.java
│ │ │ │ ├── DefaultHttpServerProcessingThread.java
│ │ │ │ ├── DefaultHttpServerProcessor.java
│ │ │ │ ├── DefaultHttpServerRequest.java
│ │ │ │ ├── DefaultHttpServerResponse.java
│ │ │ │ ├── DefaultHttpServerThreadFactory.java
│ │ │ │ └── package-info.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── http/
│ │ └── impl/
│ │ ├── DefaultHttpServerRequestTest.java
│ │ └── DefaultHttpServerTest.java
│ ├── jdk/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── http/
│ │ │ │ └── jdk/
│ │ │ │ ├── JdkHttpHandler.java
│ │ │ │ ├── JdkHttpRequest.java
│ │ │ │ ├── JdkHttpResponse.java
│ │ │ │ ├── JdkHttpServer.java
│ │ │ │ └── package-info.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── http/
│ │ └── jdk/
│ │ └── JdkHttpServerTest.java
│ ├── netty/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── http/
│ │ │ │ └── netty/
│ │ │ │ ├── NettyHttpServer.java
│ │ │ │ ├── NettyHttpServerHandler.java
│ │ │ │ ├── NettyHttpServerInitializer.java
│ │ │ │ ├── NettyHttpServerRequest.java
│ │ │ │ ├── NettyHttpServerResponse.java
│ │ │ │ └── package-info.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── http/
│ │ └── netty/
│ │ └── NettyHttpServerTest.java
│ ├── pom.xml
│ ├── tests/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── http/
│ │ │ └── tests/
│ │ │ ├── HttpServerRequestTest.java
│ │ │ ├── HttpServerTest.java
│ │ │ └── TestHttpServerProcessor.java
│ │ └── module-info.java
│ ├── undertow/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── http/
│ │ │ │ └── undertow/
│ │ │ │ ├── UndertowHttpHandler.java
│ │ │ │ ├── UndertowHttpRequest.java
│ │ │ │ ├── UndertowHttpResponse.java
│ │ │ │ ├── UndertowHttpServer.java
│ │ │ │ └── package-info.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── http/
│ │ └── undertow/
│ │ └── UndertowHttpServerTest.java
│ ├── virtual/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── http/
│ │ │ │ └── virtual/
│ │ │ │ └── VirtualHttpServer.java
│ │ │ └── module-info.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── http/
│ │ └── virtual/
│ │ └── VirtualHttpServerTest.java
│ └── webapp/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── http/
│ │ │ └── webapp/
│ │ │ ├── HttpWebApplicationOutputStream.java
│ │ │ ├── HttpWebApplicationRequest.java
│ │ │ ├── HttpWebApplicationResponse.java
│ │ │ ├── HttpWebApplicationServer.java
│ │ │ └── HttpWebApplicationServerRequestMapper.java
│ │ └── module-info.java
│ └── test/
│ └── java/
│ └── cloud/
│ └── piranha/
│ └── http/
│ └── webapp/
│ ├── HttpWebApplicationRequestTest.java
│ ├── HttpWebApplicationResponseTest.java
│ ├── HttpWebApplicationServerTest.java
│ └── TestSnoopServlet.java
├── maven/
│ ├── archetypes/
│ │ └── pom.xml
│ ├── plugin/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── maven/
│ │ │ │ └── plugin/
│ │ │ │ ├── BaseMojo.java
│ │ │ │ ├── RunMojo.java
│ │ │ │ ├── StartMojo.java
│ │ │ │ └── StopMojo.java
│ │ │ └── module-info.java
│ │ └── site/
│ │ └── site.xml
│ └── pom.xml
├── micro/
│ ├── builder/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── micro/
│ │ │ └── builder/
│ │ │ ├── MicroEmbeddedPiranha.java
│ │ │ ├── MicroEmbeddedPiranhaBuilder.java
│ │ │ ├── MicroWebApplication.java
│ │ │ └── package-info.java
│ │ └── module-info.java
│ ├── core/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── micro/
│ │ │ │ └── core/
│ │ │ │ ├── CdiExtension.java
│ │ │ │ ├── DefaultAnnotationInfo.java
│ │ │ │ ├── InMemoryIdentityStore.java
│ │ │ │ ├── MicroInnerApplication.java
│ │ │ │ ├── MicroInnerDeployer.java
│ │ │ │ └── PiranhaBeanArchiveHandler.java
│ │ │ └── module-info.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── services/
│ │ ├── jakarta.enterprise.inject.spi.Extension
│ │ └── org.jboss.weld.environment.deployment.discovery.BeanArchiveHandler
│ ├── loader/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── micro/
│ │ │ └── loader/
│ │ │ ├── MicroConfiguration.java
│ │ │ ├── MicroDeployOutcome.java
│ │ │ ├── MicroInfo.java
│ │ │ ├── MicroOuterDeployer.java
│ │ │ ├── StaticStreamHandler.java
│ │ │ ├── StaticURLStreamHandlerFactory.java
│ │ │ └── package-info.java
│ │ └── module-info.java
│ └── pom.xml
├── multi/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── assembly/
│ │ │ └── zip.xml
│ │ ├── docker/
│ │ │ └── Dockerfile
│ │ ├── java/
│ │ │ ├── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── multi/
│ │ │ │ ├── MultiPiranha.java
│ │ │ │ ├── MultiPiranhaBuilder.java
│ │ │ │ ├── MultiPiranhaMain.java
│ │ │ │ └── MultiWebApplication.java
│ │ │ └── module-info.java
│ │ └── zip/
│ │ ├── etc/
│ │ │ ├── keystore.jks
│ │ │ ├── logging.properties
│ │ │ └── truststore.jks
│ │ ├── tmp/
│ │ │ └── README
│ │ └── webapps/
│ │ └── README
│ └── test/
│ └── java/
│ └── cloud/
│ └── piranha/
│ └── multi/
│ ├── MultiPiranhaBuilderTest.java
│ └── MultiPiranhaIT.java
├── pom.xml
├── resource/
│ ├── api/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── resource/
│ │ │ └── api/
│ │ │ ├── Resource.java
│ │ │ ├── ResourceManager.java
│ │ │ ├── ResourceManagerClassLoader.java
│ │ │ └── package-info.java
│ │ └── module-info.java
│ ├── impl/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ ├── cloud/
│ │ │ │ │ └── piranha/
│ │ │ │ │ └── resource/
│ │ │ │ │ └── impl/
│ │ │ │ │ ├── AliasedDirectoryResource.java
│ │ │ │ │ ├── AliasedNamedResource.java
│ │ │ │ │ ├── ByteArrayResource.java
│ │ │ │ │ ├── ByteArrayResourceStreamHandlerProvider.java
│ │ │ │ │ ├── ByteArrayResourceURLConnection.java
│ │ │ │ │ ├── ByteArrayResourceURLStreamHandler.java
│ │ │ │ │ ├── ClassResource.java
│ │ │ │ │ ├── DefaultResourceManager.java
│ │ │ │ │ ├── DefaultResourceManagerClassLoader.java
│ │ │ │ │ ├── DirectoryResource.java
│ │ │ │ │ ├── JarResource.java
│ │ │ │ │ ├── MultiReleaseResource.java
│ │ │ │ │ ├── PrefixJarResource.java
│ │ │ │ │ └── StringResource.java
│ │ │ │ └── module-info.java
│ │ │ └── resources/
│ │ │ └── META-INF/
│ │ │ └── services/
│ │ │ └── java.net.spi.URLStreamHandlerProvider
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── resource/
│ │ └── impl/
│ │ ├── AliasedDirectoryResourceTest.java
│ │ ├── AliasedNamedResourceTest.java
│ │ ├── ByteArrayResourceTest.java
│ │ ├── DefaultResourceManagerTest.java
│ │ ├── DirectoryResourceTest.java
│ │ ├── JarResourceTest.java
│ │ ├── MultiReleaseResourceTest.java
│ │ └── PrefixJarResourceTest.java
│ ├── pom.xml
│ └── shrinkwrap/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── resource/
│ │ │ └── shrinkwrap/
│ │ │ ├── ArchiveURLStreamHandler.java
│ │ │ ├── GlobalArchiveStreamHandler.java
│ │ │ ├── IsolatingResourceManagerClassLoader.java
│ │ │ ├── NodeURLStreamHandler.java
│ │ │ ├── ShrinkWrapDirectoryInputStream.java
│ │ │ ├── ShrinkWrapResource.java
│ │ │ └── StreamConnection.java
│ │ └── module-info.java
│ └── test/
│ └── java/
│ └── cloud/
│ └── piranha/
│ └── resource/
│ └── shrinkwrap/
│ ├── DefaultResourceManagerTest.java
│ └── DefaultWebApplicationClassLoaderTest.java
├── single/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ └── java/
│ │ ├── cloud/
│ │ │ └── piranha/
│ │ │ └── single/
│ │ │ ├── SingleMain.java
│ │ │ ├── SinglePiranha.java
│ │ │ └── SinglePiranhaBuilder.java
│ │ └── module-info.java
│ └── test/
│ └── java/
│ └── cloud/
│ └── piranha/
│ └── single/
│ ├── SinglePiranhaBuilderTest.java
│ └── SinglePiranhaTest.java
├── spring/
│ ├── pom.xml
│ └── spring-boot-starter-piranha-embedded/
│ ├── pom.xml
│ └── src/
│ └── main/
│ └── java/
│ ├── cloud/
│ │ └── piranha/
│ │ └── spring/
│ │ └── starter/
│ │ └── embedded/
│ │ ├── EmbeddedPiranhaServletWebServerFactory.java
│ │ └── EmbeddedPiranhaWebServer.java
│ └── module-info.java
├── src/
│ └── site/
│ ├── markdown/
│ │ └── index.md
│ └── site.xml
└── test/
├── common/
│ ├── pom.xml
│ └── src/
│ └── main/
│ └── java/
│ ├── cloud/
│ │ └── piranha/
│ │ └── test/
│ │ └── common/
│ │ └── PiranhaStartup.java
│ └── module-info.java
├── coreprofile/
│ ├── arquillian/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ └── arquillian/
│ │ │ ├── HelloArquillianApplication.java
│ │ │ └── HelloArquillianBean.java
│ │ └── test/
│ │ └── java/
│ │ └── helloarquillian/
│ │ └── HelloArquillianIT.java
│ ├── integration/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── test/
│ │ │ │ └── coreprofile/
│ │ │ │ └── distribution/
│ │ │ │ ├── AsyncBean.java
│ │ │ │ ├── BeanParamBean.java
│ │ │ │ ├── BeanParamInput.java
│ │ │ │ ├── ContainerRequestContextBean.java
│ │ │ │ ├── ContainerRequestContextFilter.java
│ │ │ │ ├── DependencyInjectionBean.java
│ │ │ │ ├── IntegrationApplication.java
│ │ │ │ ├── InterceptInterceptor.java
│ │ │ │ ├── InterceptedBean.java
│ │ │ │ ├── Jsonb.java
│ │ │ │ ├── ProducesBean.java
│ │ │ │ ├── RestBean.java
│ │ │ │ ├── SseBean.java
│ │ │ │ ├── SseBroadcastBean.java
│ │ │ │ └── TRACE.java
│ │ │ └── webapp/
│ │ │ └── WEB-INF/
│ │ │ └── beans.xml
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── test/
│ │ └── coreprofile/
│ │ └── distribution/
│ │ ├── AsyncIT.java
│ │ ├── BeanParamIT.java
│ │ ├── ContainerRequestContextIT.java
│ │ ├── DependencyInjectionIT.java
│ │ ├── ITBase.java
│ │ ├── InterceptorIT.java
│ │ ├── JsonBindingIT.java
│ │ ├── JsonProcessingIT.java
│ │ ├── ProducesIT.java
│ │ ├── RestIT.java
│ │ └── SseIT.java
│ ├── json/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ └── temperature/
│ │ │ ├── Temperature.java
│ │ │ ├── TemperatureApplication.java
│ │ │ └── TemperatureBean.java
│ │ └── test/
│ │ └── java/
│ │ └── temperature/
│ │ └── TemperatureIT.java
│ ├── no_servlet_class/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── test/
│ │ │ │ └── coreprofile/
│ │ │ │ └── no_servlet_class/
│ │ │ │ ├── EchoApplication.java
│ │ │ │ └── EchoBean.java
│ │ │ └── webapp/
│ │ │ └── WEB-INF/
│ │ │ └── web.xml
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── test/
│ │ └── coreprofile/
│ │ └── no_servlet_class/
│ │ └── EchoIT.java
│ ├── pom.xml
│ └── rest/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── cloud/
│ │ │ └── piranha/
│ │ │ └── test/
│ │ │ └── coreprofile/
│ │ │ └── rest/
│ │ │ ├── RestApplication.java
│ │ │ └── RestBean.java
│ │ └── webapp/
│ │ └── WEB-INF/
│ │ └── web.xml
│ └── test/
│ └── java/
│ └── cloud/
│ └── piranha/
│ └── test/
│ └── coreprofile/
│ └── rest/
│ └── RestIT.java
├── embedded/
│ ├── classloader/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── classloader/
│ │ │ └── ClassLoaderServlet.java
│ │ └── webapp/
│ │ └── META-INF/
│ │ └── context.xml
│ ├── classloader2/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── test/
│ │ └── java/
│ │ └── classloader/
│ │ └── ClassLoaderIT.java
│ ├── eclipselink/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── eclipselink/
│ │ │ │ ├── EclipseLinkBean.java
│ │ │ │ └── EclipseLinkTable.java
│ │ │ ├── resources/
│ │ │ │ └── META-INF/
│ │ │ │ └── persistence.xml
│ │ │ └── webapp/
│ │ │ ├── WEB-INF/
│ │ │ │ ├── beans.xml
│ │ │ │ ├── faces-config.xml
│ │ │ │ └── web.xml
│ │ │ └── index.xhtml
│ │ └── test/
│ │ └── java/
│ │ └── eclipselink/
│ │ └── EclipseLinkTest.java
│ ├── exousia/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── test/
│ │ └── java/
│ │ └── exousia/
│ │ ├── ExousiaTest.java
│ │ └── PublicServlet.java
│ ├── hazelcast/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── hazelcast/
│ │ │ │ └── HazelcastBean.java
│ │ │ └── webapp/
│ │ │ ├── WEB-INF/
│ │ │ │ ├── beans.xml
│ │ │ │ └── web.xml
│ │ │ └── index.xhtml
│ │ └── test/
│ │ └── java/
│ │ └── hazelcast/
│ │ └── HazelcastTest.java
│ ├── helloworld/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── helloworld/
│ │ │ │ ├── HelloWorldApplication.java
│ │ │ │ └── HelloWorldServlet.java
│ │ │ └── webapp/
│ │ │ └── WEB-INF/
│ │ │ └── web.xml
│ │ └── test/
│ │ └── java/
│ │ └── helloworld/
│ │ └── HelloWorldTest.java
│ ├── pom.xml
│ ├── soteria-basic/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── test/
│ │ ├── java/
│ │ │ └── basic/
│ │ │ ├── BasicTest.java
│ │ │ ├── DynamicInitialContextFactory.java
│ │ │ ├── ProtectedServlet.java
│ │ │ ├── PublicServlet.java
│ │ │ └── TestIdentityStore.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── beans.xml
│ ├── soteria-form/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── test/
│ │ ├── java/
│ │ │ └── form/
│ │ │ ├── DynamicInitialContextFactory.java
│ │ │ ├── ErrorPageServlet.java
│ │ │ ├── FormTest.java
│ │ │ ├── LoginPageServlet.java
│ │ │ ├── ProtectedServlet.java
│ │ │ └── TestIdentityStore.java
│ │ └── resources/
│ │ └── META-INF/
│ │ └── beans.xml
│ ├── springboot/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── test1/
│ │ │ ├── Test1Application.java
│ │ │ └── Test1Controller.java
│ │ └── resources/
│ │ └── application.properties
│ ├── springboot-virtualthreads/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ └── test/
│ │ └── custom/
│ │ └── http/
│ │ ├── Main.java
│ │ └── MyController.java
│ ├── web-fragment-in-jar/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── resources/
│ │ └── META-INF/
│ │ └── web-fragment.xml
│ ├── web-fragment-in-jar-test/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── test/
│ │ └── java/
│ │ └── webfragmentinjar/
│ │ └── WebFragmentInJar1IT.java
│ ├── web-fragment-in-jar-webapp/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── webapp/
│ │ ├── META-INF/
│ │ │ └── context.xml
│ │ └── index.html
│ └── weld/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── weld/
│ │ │ └── WeldRequestBean.java
│ │ └── webapp/
│ │ ├── WEB-INF/
│ │ │ ├── beans.xml
│ │ │ ├── faces-config.xml
│ │ │ └── web.xml
│ │ └── index.xhtml
│ └── test/
│ └── java/
│ └── weld/
│ └── WeldTest.java
├── jpms/
│ ├── pom.xml
│ └── src/
│ └── test/
│ └── java/
│ ├── jpms/
│ │ └── ModuleFinderTest.java
│ ├── package1/
│ │ ├── Library.java
│ │ ├── Service.java
│ │ ├── Servlet.java
│ │ └── Utils.java
│ ├── package2/
│ │ ├── Library.java
│ │ └── Listener.java
│ └── package3/
│ ├── DefaultService.java
│ ├── Filter.java
│ └── Library.java
├── micro/
│ ├── helloworld/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── helloworld/
│ │ │ │ └── HelloWorldServlet.java
│ │ │ └── webapp/
│ │ │ └── WEB-INF/
│ │ │ └── web.xml
│ │ └── test/
│ │ └── java/
│ │ └── helloworld/
│ │ └── HelloWorldServletIT.java
│ ├── microprofile-config/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── config/
│ │ │ │ ├── ConfigApplicationBean.java
│ │ │ │ └── ConfigServlet.java
│ │ │ └── resources/
│ │ │ └── META-INF/
│ │ │ └── microprofile-config.properties
│ │ └── test/
│ │ └── java/
│ │ └── config/
│ │ └── ConfigTest.java
│ ├── pom.xml
│ ├── protected-servlet/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── protectedservlet/
│ │ │ │ ├── ProtectedBean.java
│ │ │ │ └── ProtectedServlet.java
│ │ │ └── webapp/
│ │ │ └── WEB-INF/
│ │ │ ├── beans.xml
│ │ │ └── web.xml
│ │ └── test/
│ │ └── java/
│ │ └── protectedservlet/
│ │ └── ProtectedServletIT.java
│ └── snoop/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── snoop/
│ │ │ └── SnoopServlet.java
│ │ └── webapp/
│ │ └── WEB-INF/
│ │ ├── beans.xml
│ │ └── web.xml
│ └── test/
│ └── java/
│ └── snoop/
│ └── SnoopIT.java
├── pom.xml
├── server/
│ ├── helloworld/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── webapp/
│ │ │ └── helloworld.html
│ │ └── test/
│ │ └── java/
│ │ └── helloworld/
│ │ └── HelloWorldIT.java
│ ├── pom.xml
│ ├── programmatic/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── programmatic/
│ │ │ │ └── ProgrammaticServlet.java
│ │ │ └── webapp/
│ │ │ └── WEB-INF/
│ │ │ └── web.xml
│ │ └── test/
│ │ └── java/
│ │ └── programmatic/
│ │ └── ProgrammaticIT.java
│ ├── wasp/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── wasp/
│ │ │ │ └── HelloTldTag.java
│ │ │ └── webapp/
│ │ │ ├── WEB-INF/
│ │ │ │ ├── tags/
│ │ │ │ │ └── hellotag.tag
│ │ │ │ ├── tld/
│ │ │ │ │ ├── hellotag.tld
│ │ │ │ │ └── hellotld.tld
│ │ │ │ └── web.xml
│ │ │ ├── hellotag.jsp
│ │ │ ├── hellotag2.jsp
│ │ │ ├── hellotld.jsp
│ │ │ ├── hellotld2.jsp
│ │ │ └── index.jsp
│ │ └── test/
│ │ └── java/
│ │ └── wasp/
│ │ ├── HelloTagJspIT.java
│ │ ├── HelloTld2JspIT.java
│ │ ├── HelloTldJspIT.java
│ │ └── IndexJspIT.java
│ └── wasp2/
│ ├── pom.xml
│ └── src/
│ └── main/
│ └── resources/
│ └── META-INF/
│ ├── hellotag2.tag
│ └── hellotag2.tld
├── servlet/
│ ├── crac/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── test/
│ │ │ │ └── servlet/
│ │ │ │ └── crac/
│ │ │ │ └── CracBean.java
│ │ │ └── webapp/
│ │ │ ├── WEB-INF/
│ │ │ │ ├── beans.xml
│ │ │ │ └── web.xml
│ │ │ └── crac.xhtml
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── test/
│ │ └── servlet/
│ │ └── crac/
│ │ └── CracIT.java
│ ├── hello/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── hello/
│ │ │ │ └── HelloServlet.java
│ │ │ └── webapp/
│ │ │ ├── WEB-INF/
│ │ │ │ └── web.xml
│ │ │ ├── helloel.jsp
│ │ │ ├── hellojsp.jsp
│ │ │ └── helloworld.html
│ │ └── test/
│ │ └── java/
│ │ └── hello/
│ │ └── HelloIT.java
│ ├── helloworld/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── webapp/
│ │ │ └── helloworld.html
│ │ └── test/
│ │ └── java/
│ │ └── helloworld/
│ │ └── HelloWorldIT.java
│ ├── integration/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ └── cloud/
│ │ │ └── piranha/
│ │ │ └── test/
│ │ │ └── servlet/
│ │ │ └── integration/
│ │ │ └── IntegrationServlet.java
│ │ └── test/
│ │ └── java/
│ │ └── cloud/
│ │ └── piranha/
│ │ └── test/
│ │ └── servlet/
│ │ └── integration/
│ │ └── IntegrationtIT.java
│ ├── pages/
│ │ ├── README.md
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── webapp/
│ │ │ └── hello.jsp
│ │ └── test/
│ │ └── java/
│ │ └── hello/
│ │ └── HelloIT.java
│ ├── pom.xml
│ └── websocket/
│ ├── pom.xml
│ └── src/
│ └── main/
│ └── java/
│ └── chat/
│ └── ChatEndpoint.java
├── tck/
│ ├── coreprofile/
│ │ ├── annotations/
│ │ │ ├── installer/
│ │ │ │ └── pom.xml
│ │ │ ├── pom.xml
│ │ │ └── runner/
│ │ │ └── pom.xml
│ │ ├── cdi/
│ │ │ ├── installer/
│ │ │ │ └── pom.xml
│ │ │ ├── pom.xml
│ │ │ └── runner/
│ │ │ ├── core/
│ │ │ │ ├── pom.xml
│ │ │ │ └── src/
│ │ │ │ └── test/
│ │ │ │ ├── java/
│ │ │ │ │ └── org/
│ │ │ │ │ └── jboss/
│ │ │ │ │ └── weld/
│ │ │ │ │ └── tck/
│ │ │ │ │ └── piranha/
│ │ │ │ │ ├── PiranhaDeploymentExceptionTransformer.java
│ │ │ │ │ ├── PiranhaExtension.java
│ │ │ │ │ ├── WeldBeansImpl.java
│ │ │ │ │ ├── WeldContextImpl.java
│ │ │ │ │ └── WeldELImpl.java
│ │ │ │ └── resources/
│ │ │ │ ├── META-INF/
│ │ │ │ │ ├── cdi-tck.properties
│ │ │ │ │ └── services/
│ │ │ │ │ └── org.jboss.arquillian.core.spi.LoadableExtension
│ │ │ │ └── arquillian.xml
│ │ │ ├── model/
│ │ │ │ ├── pom.xml
│ │ │ │ └── src/
│ │ │ │ └── test/
│ │ │ │ └── java/
│ │ │ │ └── org/
│ │ │ │ └── glassfish/
│ │ │ │ └── tck/
│ │ │ │ └── cdi/
│ │ │ │ └── lang/
│ │ │ │ └── model/
│ │ │ │ ├── CDILangModelTCKRunner.java
│ │ │ │ └── LangModelVerifierBuildCompatibleExtension.java
│ │ │ ├── pom.xml
│ │ │ └── signature/
│ │ │ └── pom.xml
│ │ ├── coreprofile/
│ │ │ ├── installer/
│ │ │ │ └── pom.xml
│ │ │ ├── pom.xml
│ │ │ └── runner/
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ └── test/
│ │ │ ├── java/
│ │ │ │ └── cloud/
│ │ │ │ └── piranha/
│ │ │ │ └── tck/
│ │ │ │ └── core/
│ │ │ │ └── CustomJsonbSerializationITFix.java
│ │ │ └── resources/
│ │ │ ├── META-INF/
│ │ │ │ └── services/
│ │ │ │ └── org.jboss.arquillian.core.spi.LoadableExtension
│ │ │ └── arquillian.xml
│ │ ├── inject/
│ │ │ ├── installer/
│ │ │ │ └── pom.xml
│ │ │ ├── pom.xml
│ │ │ └── runner/
│ │ │ └── pom.xml
│ │ ├── jsonb/
│ │ │ ├── installer/
│ │ │ │ └── pom.xml
│ │ │ ├── pom.xml
│ │ │ └── runner/
│ │ │ └── pom.xml
│ │ ├── jsonp/
│ │ │ ├── installer/
│ │ │ │ └── pom.xml
│ │ │ ├── pom.xml
│ │ │ └── runner/
│ │ │ └── pom.xml
│ │ ├── pom.xml
│ │ └── rest/
│ │ ├── installer/
│ │ │ └── pom.xml
│ │ ├── pom.xml
│ │ └── runner/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── test/
│ │ └── resources/
│ │ └── arquillian.xml
│ └── pom.xml
└── webprofile/
├── helloworld/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── helloworld/
│ │ │ └── ApplicationBean.java
│ │ └── webapp/
│ │ ├── WEB-INF/
│ │ │ └── beans.xml
│ │ ├── helloworld.jsp
│ │ └── index.html
│ └── test/
│ └── java/
│ └── helloworld/
│ └── HelloWorldIT.java
├── integration/
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── integration/
│ │ │ ├── DependencyInjectionBean.java
│ │ │ ├── ExpressionBean.java
│ │ │ ├── FacesBean.java
│ │ │ ├── IntegrationApplication.java
│ │ │ ├── IntegrationBean.java
│ │ │ ├── IntegrationServlet.java
│ │ │ ├── InterceptBean.java
│ │ │ ├── InterceptInterceptor.java
│ │ │ └── Jsonb.java
│ │ └── webapp/
│ │ ├── WEB-INF/
│ │ │ ├── beans.xml
│ │ │ └── web.xml
│ │ ├── expression.jsp
│ │ ├── faces.xhtml
│ │ ├── jstl.jsp
│ │ └── pages.jsp
│ └── test/
│ └── java/
│ └── integration/
│ └── IntegrationIT.java
└── pom.xml
Showing preview only (416K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (5074 symbols across 663 files)
FILE: arquillian/managed/src/main/java/cloud/piranha/arquillian/managed/ManagedPiranhaContainer.java
class ManagedPiranhaContainer (line 58) | public class ManagedPiranhaContainer implements DeployableContainer<Mana...
method ManagedPiranhaContainer (line 98) | public ManagedPiranhaContainer() {
method getConfigurationClass (line 101) | @Override
method setup (line 106) | @Override
method getDefaultProtocol (line 111) | @SuppressWarnings("exports")
method deploy (line 117) | @SuppressWarnings("exports")
method undeploy (line 161) | @Override
method toWarFilename (line 210) | private String toWarFilename(Archive<?> archive) {
method toAppName (line 220) | private String toAppName(String warFileName) {
method toAppName (line 224) | private String toAppName(Archive<?> archive) {
method getPiranhaJarFile (line 235) | private File getPiranhaJarFile(String version) throws IOException {
method createArtifactPath (line 274) | private String createArtifactPath(String groupId, String artifactId, S...
method convertGroupIdToPath (line 291) | private String convertGroupIdToPath(String groupId) {
method createMavenCentralArtifactUrl (line 305) | @SuppressWarnings("deprecation")
method determineVersionToUse (line 315) | private String determineVersionToUse() {
method killProcessOnPort (line 324) | private void killProcessOnPort(int port) {
method startPiranha (line 356) | private void startPiranha(File runtimeDirectory, File warFile) throws ...
method copyPiranhaJarFile (line 497) | private void copyPiranhaJarFile(File runtimeDirectory, File zipFile) t...
method isEmpty (line 513) | private boolean isEmpty(String string) {
FILE: arquillian/managed/src/main/java/cloud/piranha/arquillian/managed/ManagedPiranhaContainerConfiguration.java
class ManagedPiranhaContainerConfiguration (line 99) | public class ManagedPiranhaContainerConfiguration implements ContainerCo...
method ManagedPiranhaContainerConfiguration (line 154) | public ManagedPiranhaContainerConfiguration() {
method getCallerGroups (line 162) | public String getCallerGroups() {
method getCallerName (line 171) | public String getCallerName() {
method getCallerPassword (line 180) | public String getCallerPassword() {
method getDistribution (line 189) | public String getDistribution() {
method getHttpPort (line 198) | public int getHttpPort() {
method getJvmArguments (line 210) | public String getJvmArguments() {
method getProtocol (line 219) | public String getProtocol() {
method isDebug (line 228) | public boolean isDebug() {
method isSuspend (line 237) | public boolean isSuspend() {
method setCallerGroups (line 246) | public void setCallerGroups(String callerGroups) {
method setCallerName (line 255) | public void setCallerName(String callerName) {
method setCallerPassword (line 264) | public void setCallerPassword(String callerPassword) {
method setDebug (line 273) | public void setDebug(boolean debug) {
method setDistribution (line 282) | public void setDistribution(String distribution) {
method setHttpPort (line 291) | public void setHttpPort(int httpPort) {
method setJvmArguments (line 300) | public void setJvmArguments(String jvmArguments) {
method setProtocol (line 309) | public void setProtocol(String protocol) {
method setSuspend (line 318) | public void setSuspend(boolean suspend) {
method validate (line 322) | @Override
FILE: arquillian/managed/src/main/java/cloud/piranha/arquillian/managed/ManagedPiranhaContainerExtension.java
class ManagedPiranhaContainerExtension (line 38) | public class ManagedPiranhaContainerExtension implements LoadableExtensi...
method ManagedPiranhaContainerExtension (line 43) | public ManagedPiranhaContainerExtension() {
method register (line 46) | @SuppressWarnings("exports")
FILE: arquillian/managed/src/test/java/cloud/piranha/arquillian/managed/ManagedPiranhaContainerConfigurationTest.java
class ManagedPiranhaContainerConfigurationTest (line 38) | class ManagedPiranhaContainerConfigurationTest {
method testGetHttpPortDefault (line 40) | @Test
method testGetHttpPortSet (line 49) | @Test
method testGetHttpPortInvalid (line 58) | @Test
method testGetDistribution (line 68) | @Test
method testSetDistribution (line 74) | @Test
method testGetHttpPort (line 81) | @Test
method testSetHttpPort (line 87) | @Test
method testGetJvmArguments (line 94) | @Test
method testSetJvmArguments (line 100) | @Test
method testGetProtocol (line 107) | @Test
method testSetProtocol (line 113) | @Test
method testIsDebug (line 120) | @Test
method testSetDebug (line 126) | @Test
method testIsSuspend (line 133) | @Test
method testSetSuspend (line 139) | @Test
method testValidate (line 146) | @Test
FILE: arquillian/managed/src/test/java/cloud/piranha/arquillian/managed/ManagedPiranhaContainerExtensionTest.java
class ManagedPiranhaContainerExtensionTest (line 39) | class ManagedPiranhaContainerExtensionTest {
method testRegister (line 41) | @Test
FILE: arquillian/managed/src/test/java/cloud/piranha/arquillian/managed/ManagedPiranhaContainerTest.java
class ManagedPiranhaContainerTest (line 19) | class ManagedPiranhaContainerTest {
method testGetConfigurationClass (line 24) | @Test
method testGetDefaultProtocol (line 33) | @Test
FILE: arquillian/server/src/main/java/cloud/piranha/arquillian/server/PiranhaServerDeployableContainer.java
class PiranhaServerDeployableContainer (line 52) | public class PiranhaServerDeployableContainer extends PiranhaServerLoada...
method PiranhaServerDeployableContainer (line 72) | public PiranhaServerDeployableContainer() {
method setup (line 75) | @Override
method deploy (line 81) | @Override
method undeploy (line 106) | @Override
FILE: arquillian/server/src/main/java/cloud/piranha/arquillian/server/PiranhaServerLoadableExtension.java
class PiranhaServerLoadableExtension (line 49) | public class PiranhaServerLoadableExtension implements LoadableExtension {
method PiranhaServerLoadableExtension (line 54) | public PiranhaServerLoadableExtension() {
method register (line 60) | @Override
class PiranhaServerContainerBase (line 75) | public abstract static class PiranhaServerContainerBase implements Dep...
method PiranhaServerContainerBase (line 80) | public PiranhaServerContainerBase() {
method getConfigurationClass (line 83) | @Override
method getDefaultProtocol (line 88) | @Override
class PiranhaServerContainerConfiguration (line 103) | public static class PiranhaServerContainerConfiguration extends MicroC...
method PiranhaServerContainerConfiguration (line 128) | public PiranhaServerContainerConfiguration() {
method validate (line 142) | @Override
method postConstruct (line 153) | @Override
method isAutoPort (line 167) | public boolean isAutoPort() {
method setAutoPort (line 176) | public void setAutoPort(boolean autoPort) {
class PortFinder (line 180) | private class PortFinder {
method findFreePort (line 191) | public int findFreePort(int initialPort) {
method isFreePort (line 217) | private boolean isFreePort(int portCandidate) {
FILE: core/api/src/main/java/cloud/piranha/core/api/AnnotationInfo.java
type AnnotationInfo (line 39) | public interface AnnotationInfo<T> {
method getInstance (line 44) | T getInstance();
method getTarget (line 49) | AnnotatedElement getTarget();
method getTargetType (line 56) | default Class<?> getTargetType() {
FILE: core/api/src/main/java/cloud/piranha/core/api/AnnotationManager.java
type AnnotationManager (line 41) | public interface AnnotationManager {
method addAnnotation (line 48) | void addAnnotation(AnnotationInfo<?> annotationInfo);
method addInstance (line 56) | void addInstance(Class<?> instanceClass, Class<?> implementingClass);
method getAnnotations (line 65) | <T> List<AnnotationInfo<T>> getAnnotations(Class<T> annotationClass);
method getAnnotations (line 73) | List<AnnotationInfo<?>> getAnnotations(Class<?>... annotationClasses);
method getInstances (line 82) | <T> List<Class<T>> getInstances(Class<T> instanceClass);
method getInstances (line 90) | List<Class<?>> getInstances(Class<?>... instanceClasses);
method getAnnotationsByTarget (line 100) | <T> List<AnnotationInfo<T>> getAnnotationsByTarget(Class<T> annotation...
method addAnnotatedClass (line 108) | void addAnnotatedClass(Class<? extends Annotation> annotationClass, Cl...
method getAnnotatedClass (line 116) | Set<Class<?>> getAnnotatedClass(Class<? extends Annotation> annotation...
method getAnnotatedClasses (line 124) | Set<Class<?>> getAnnotatedClasses(Class<?>[] annotationClasses);
FILE: core/api/src/main/java/cloud/piranha/core/api/AsyncDispatcher.java
type AsyncDispatcher (line 35) | public interface AsyncDispatcher {
method dispatch (line 40) | void dispatch();
FILE: core/api/src/main/java/cloud/piranha/core/api/AsyncManager.java
type AsyncManager (line 38) | public interface AsyncManager {
method getDispatcher (line 47) | AsyncDispatcher getDispatcher(WebApplication webApplication, String pa...
FILE: core/api/src/main/java/cloud/piranha/core/api/AttributeManager.java
type AttributeManager (line 37) | public interface AttributeManager {
method getAttribute (line 45) | Object getAttribute(String name);
method getAttributeNames (line 50) | Enumeration<String> getAttributeNames();
method removeAttribute (line 57) | void removeAttribute(String name);
method setAttribute (line 65) | void setAttribute(String name, Object value);
method containsAttribute (line 72) | default boolean containsAttribute(String name) {
FILE: core/api/src/main/java/cloud/piranha/core/api/AuthenticatedIdentity.java
type AuthenticatedIdentity (line 43) | public interface AuthenticatedIdentity extends Principal {
method getName (line 45) | @Override
method getCallerPrincipal (line 60) | Principal getCallerPrincipal();
method getGroups (line 70) | Set<String> getGroups();
FILE: core/api/src/main/java/cloud/piranha/core/api/CurrentRequestHolder.java
type CurrentRequestHolder (line 43) | public interface CurrentRequestHolder {
method getRequest (line 56) | <T extends HttpServletRequest> T getRequest();
method setRequest (line 63) | void setRequest(HttpServletRequest request);
FILE: core/api/src/main/java/cloud/piranha/core/api/DispatcherManager.java
type DispatcherManager (line 37) | public interface DispatcherManager {
method getNamedDispatcher (line 45) | RequestDispatcher getNamedDispatcher(String name);
method setWebApplication (line 52) | void setWebApplication(WebApplication webApplication);
FILE: core/api/src/main/java/cloud/piranha/core/api/ErrorPageManager.java
type ErrorPageManager (line 37) | public interface ErrorPageManager {
method addErrorPage (line 45) | void addErrorPage(int statusCode, String page);
method addErrorPage (line 53) | void addErrorPage(String throwableClassName, String page);
method getErrorPage (line 61) | String getErrorPage(Throwable throwable, HttpServletResponse response);
FILE: core/api/src/main/java/cloud/piranha/core/api/FilterEnvironment.java
type FilterEnvironment (line 41) | public interface FilterEnvironment extends Dynamic, FilterConfig {
method getFilter (line 51) | Filter getFilter();
method initialize (line 58) | void initialize() throws ServletException;
method setClassName (line 65) | void setClassName(String className);
method setFilterName (line 72) | void setFilterName(String filterName);
method setStatus (line 79) | void setStatus(int status);
method getWebApplication (line 84) | WebApplication getWebApplication();
method setWebApplication (line 91) | void setWebApplication(WebApplication webApplication);
method isAsyncSupported (line 98) | boolean isAsyncSupported();
FILE: core/api/src/main/java/cloud/piranha/core/api/FilterMapping.java
type FilterMapping (line 38) | public interface FilterMapping {
method getFilterName (line 43) | String getFilterName();
method getUrlPattern (line 48) | String getUrlPattern();
method getDispatcherType (line 58) | default DispatcherType getDispatcherType() {
FILE: core/api/src/main/java/cloud/piranha/core/api/FilterPriority.java
type FilterPriority (line 41) | public interface FilterPriority {
method getPriority (line 48) | int getPriority();
FILE: core/api/src/main/java/cloud/piranha/core/api/HandlesTypesManager.java
type HandlesTypesManager (line 45) | public interface HandlesTypesManager {
method addAnnotatedClass (line 53) | void addAnnotatedClass(Class<?> annotationClass, Class<?> annotatedCla...
method addExtendingClass (line 61) | void addExtendingClass(Class<?> baseClass, Class<?> extendingClass);
method addImplementingClass (line 69) | void addImplementingClass(Class<?> interfaceClass, Class<?> implementi...
method getAnnotatedClasses (line 77) | Set<Class<?>> getAnnotatedClasses(Class<?> annotationClass);
method getExtendingClasses (line 85) | Set<Class<?>> getExtendingClasses(Class<?> baseClass);
method getImplementingClasses (line 93) | Set<Class<?>> getImplementingClasses(Class<?> interfaceClass);
method getClasses (line 102) | Set<Class<?>> getClasses(Set<Class<?>> classes);
FILE: core/api/src/main/java/cloud/piranha/core/api/HttpHeader.java
type HttpHeader (line 37) | public interface HttpHeader {
method addValue (line 44) | void addValue(String value);
method getName (line 49) | String getName();
method getValue (line 54) | String getValue();
method getValues (line 59) | Enumeration<String> getValues();
FILE: core/api/src/main/java/cloud/piranha/core/api/HttpHeaderManager.java
type HttpHeaderManager (line 37) | public interface HttpHeaderManager {
method addHeader (line 45) | void addHeader(String name, String value);
method containsHeader (line 53) | boolean containsHeader(String name);
method getDateHeader (line 61) | long getDateHeader(String name) throws IllegalArgumentException;
method getHeader (line 69) | String getHeader(String name);
method getHeaderNames (line 74) | Enumeration<String> getHeaderNames();
method getHeaders (line 82) | Enumeration<String> getHeaders(String name);
method getIntHeader (line 92) | int getIntHeader(String name) throws NumberFormatException;
method removeHeader (line 99) | void removeHeader(String name);
method setHeader (line 107) | void setHeader(String name, String value);
FILE: core/api/src/main/java/cloud/piranha/core/api/HttpSessionManager.java
type HttpSessionManager (line 43) | public interface HttpSessionManager {
method addListener (line 51) | <T extends EventListener> void addListener(T listener);
method attributeAdded (line 60) | void attributeAdded(HttpSession session, String name, Object value);
method attributeRemoved (line 69) | void attributeRemoved(HttpSession session, String name, Object value);
method attributeReplaced (line 79) | void attributeReplaced(HttpSession session, String name, Object oldVal...
method changeSessionId (line 87) | String changeSessionId(HttpServletRequest request);
method createSession (line 95) | HttpSession createSession(HttpServletRequest request);
method destroySession (line 102) | void destroySession(HttpSession session);
method encodeRedirectURL (line 111) | String encodeRedirectURL(HttpServletResponse response, String url);
method encodeURL (line 120) | String encodeURL(HttpServletResponse response, String url);
method getDefaultSessionTrackingModes (line 125) | Set<SessionTrackingMode> getDefaultSessionTrackingModes();
method getEffectiveSessionTrackingModes (line 130) | Set<SessionTrackingMode> getEffectiveSessionTrackingModes();
method getSession (line 137) | HttpSession getSession(HttpServletRequest request, String currentSessi...
method getSessionCookieConfig (line 142) | SessionCookieConfig getSessionCookieConfig();
method getSessionTimeout (line 149) | int getSessionTimeout();
method hasSession (line 157) | boolean hasSession(String sessionId);
method setSessionTimeout (line 164) | void setSessionTimeout(int timeout);
method setSessionTrackingModes (line 171) | void setSessionTrackingModes(Set<SessionTrackingMode> sessionTrackingM...
method setWebApplication (line 178) | void setWebApplication(WebApplication webApplication);
FILE: core/api/src/main/java/cloud/piranha/core/api/JspManager.java
type JspManager (line 38) | public interface JspManager {
method addJspFile (line 48) | ServletRegistration.Dynamic addJspFile(WebApplication webApplication, ...
method getJspConfigDescriptor (line 53) | JspConfigDescriptor getJspConfigDescriptor();
method setJspConfigDescriptor (line 60) | void setJspConfigDescriptor(JspConfigDescriptor jspConfigDescriptor);
FILE: core/api/src/main/java/cloud/piranha/core/api/LocaleEncodingManager.java
type LocaleEncodingManager (line 35) | public interface LocaleEncodingManager {
method addCharacterEncoding (line 43) | void addCharacterEncoding(String locale, String encoding);
method getCharacterEncoding (line 51) | String getCharacterEncoding(String locale);
FILE: core/api/src/main/java/cloud/piranha/core/api/ModuleLayerProcessor.java
type ModuleLayerProcessor (line 34) | public interface ModuleLayerProcessor {
method processModuleLayerOptions (line 40) | void processModuleLayerOptions(ModuleLayer.Controller controller);
FILE: core/api/src/main/java/cloud/piranha/core/api/MultiPartManager.java
type MultiPartManager (line 39) | public interface MultiPartManager {
method getParts (line 49) | Collection<Part> getParts(WebApplication webApplication, WebApplicatio...
method getPart (line 60) | Part getPart(WebApplication webApplication, WebApplicationRequest requ...
FILE: core/api/src/main/java/cloud/piranha/core/api/ObjectInstanceManager.java
type ObjectInstanceManager (line 40) | public interface ObjectInstanceManager {
method createFilter (line 50) | <T extends Filter> T createFilter(Class<T> filterClass) throws Servlet...
method createListener (line 60) | <T extends EventListener> T createListener(Class<T> clazz) throws Serv...
method createServlet (line 70) | <T extends Servlet> T createServlet(Class<T> clazz) throws ServletExce...
FILE: core/api/src/main/java/cloud/piranha/core/api/Piranha.java
type Piranha (line 35) | public interface Piranha {
method getConfiguration (line 42) | PiranhaConfiguration getConfiguration();
FILE: core/api/src/main/java/cloud/piranha/core/api/PiranhaBuilder.java
type PiranhaBuilder (line 36) | public interface PiranhaBuilder<T> {
method build (line 43) | public T build();
FILE: core/api/src/main/java/cloud/piranha/core/api/PiranhaConfiguration.java
type PiranhaConfiguration (line 37) | public interface PiranhaConfiguration {
method getBoolean (line 46) | boolean getBoolean(String key, boolean defaultValue);
method getClass (line 54) | Class<?> getClass(String key);
method getFile (line 62) | File getFile(String key);
method getInteger (line 70) | Integer getInteger(String key);
method getLong (line 78) | Long getLong(String key);
method getString (line 86) | String getString(String key);
method setBoolean (line 94) | void setBoolean(String key, Boolean value);
method setClass (line 102) | void setClass(String key, Class<?> value);
method setFile (line 110) | void setFile(String key, File value);
method setInteger (line 118) | void setInteger(String key, Integer value);
method setLong (line 126) | void setLong(String key, Long value);
method setString (line 134) | void setString(String key, String value);
FILE: core/api/src/main/java/cloud/piranha/core/api/SecurityConstraint.java
class SecurityConstraint (line 38) | public class SecurityConstraint {
method SecurityConstraint (line 58) | public SecurityConstraint() {
method getRoleNames (line 69) | public List<String> getRoleNames() {
method getSecurityWebResourceCollections (line 78) | public List<SecurityWebResourceCollection> getSecurityWebResourceColle...
method getTransportGuarantee (line 87) | public String getTransportGuarantee() {
method setRoleNames (line 96) | public void setRoleNames(List<String> roleNames) {
method setSecurityWebResourceCollections (line 105) | public void setSecurityWebResourceCollections(
method setTransportGuarantee (line 115) | public void setTransportGuarantee(String transportGuarantee) {
FILE: core/api/src/main/java/cloud/piranha/core/api/SecurityManager.java
type SecurityManager (line 45) | public interface SecurityManager {
type AuthenticateSource (line 50) | enum AuthenticateSource {
type UsernamePasswordLoginHandler (line 65) | interface UsernamePasswordLoginHandler {
method login (line 75) | AuthenticatedIdentity login(HttpServletRequest request, String usern...
method authenticate (line 87) | boolean authenticate(HttpServletRequest request, HttpServletResponse r...
method authenticate (line 100) | default boolean authenticate(HttpServletRequest request, HttpServletRe...
method declareRoles (line 112) | void declareRoles(String[] roles);
method declareRoles (line 119) | default void declareRoles(Collection<String> roles) {
method getAuthMethod (line 130) | default String getAuthMethod() {
method getAuthenticatedRequest (line 145) | default HttpServletRequest getAuthenticatedRequest(HttpServletRequest ...
method getAuthenticatedResponse (line 160) | default HttpServletResponse getAuthenticatedResponse(HttpServletReques...
method getDenyUncoveredHttpMethods (line 169) | default boolean getDenyUncoveredHttpMethods() {
method getFormErrorPage (line 178) | default String getFormErrorPage() {
method getFormLoginPage (line 187) | default String getFormLoginPage() {
method getRealmName (line 196) | default String getRealmName() {
method getRoles (line 205) | Set<String> getRoles();
method getSecurityConstraints (line 212) | List<SecurityConstraint> getSecurityConstraints();
method getSecurityRoleReferences (line 219) | Map<String, List<SecurityRoleReference>> getSecurityRoleReferences();
method getUsernamePasswordLoginHandler (line 227) | default UsernamePasswordLoginHandler getUsernamePasswordLoginHandler() {
method getWebApplication (line 236) | WebApplication getWebApplication();
method isCallerAuthorizedForResource (line 253) | default boolean isCallerAuthorizedForResource(HttpServletRequest reque...
method isRequestSecurityAsRequired (line 270) | default boolean isRequestSecurityAsRequired(HttpServletRequest request...
method isRequestedResourcePublic (line 282) | default boolean isRequestedResourcePublic(HttpServletRequest request) {
method isUserInRole (line 293) | boolean isUserInRole(HttpServletRequest request, String role);
method login (line 303) | void login(HttpServletRequest request, String username, String passwor...
method logout (line 312) | void logout(HttpServletRequest request, HttpServletResponse response) ...
method postRequestProcess (line 327) | default void postRequestProcess(HttpServletRequest request, HttpServle...
method setAuthMethod (line 335) | default void setAuthMethod(String authMethod) {
method setDenyUncoveredHttpMethods (line 343) | default void setDenyUncoveredHttpMethods(boolean denyUncoveredHttpMeth...
method setFormErrorPage (line 351) | default void setFormErrorPage(String formErrorPage) {
method setFormLoginPage (line 359) | default void setFormLoginPage(String formLoginPage) {
method setRealmName (line 367) | default void setRealmName(String realmName) {
method setSecurityConstraints (line 375) | void setSecurityConstraints(List<SecurityConstraint> securityConstrain...
method setSecurityRoleReferences (line 382) | void setSecurityRoleReferences(Map<String, List<SecurityRoleReference>...
method setUsernamePasswordLoginHandler (line 390) | default void setUsernamePasswordLoginHandler(UsernamePasswordLoginHand...
method setWebApplication (line 399) | void setWebApplication(WebApplication webApplication);
FILE: core/api/src/main/java/cloud/piranha/core/api/SecurityRoleReference.java
class SecurityRoleReference (line 35) | public class SecurityRoleReference {
method SecurityRoleReference (line 50) | public SecurityRoleReference() {
method getRoleLink (line 58) | public String getRoleLink() {
method getRoleName (line 67) | public String getRoleName() {
method setRoleLink (line 76) | public void setRoleLink(String roleLink) {
method setRoleName (line 85) | public void setRoleName(String roleName) {
FILE: core/api/src/main/java/cloud/piranha/core/api/SecurityWebResourceCollection.java
class SecurityWebResourceCollection (line 39) | public class SecurityWebResourceCollection {
method SecurityWebResourceCollection (line 59) | public SecurityWebResourceCollection() {
method getHttpMethods (line 70) | public List<String> getHttpMethods() {
method getHttpMethodOmissions (line 79) | public List<String> getHttpMethodOmissions() {
method getUrlPatterns (line 88) | public List<String> getUrlPatterns() {
method setHttpMethods (line 97) | public void setHttpMethods(List<String> httpMethods) {
method setHttpMethodOmissions (line 106) | public void setHttpMethodOmissions(List<String> httpMethodOmissions) {
method setUrlPatterns (line 115) | public void setUrlPatterns(List<String> urlPatterns) {
FILE: core/api/src/main/java/cloud/piranha/core/api/ServletEnvironment.java
type ServletEnvironment (line 40) | public interface ServletEnvironment extends Dynamic, ServletConfig {
method getLoadOnStartup (line 51) | int getLoadOnStartup();
method getMultipartConfig (line 56) | MultipartConfigElement getMultipartConfig();
method getServlet (line 61) | Servlet getServlet();
method getServletClass (line 67) | Class<? extends Servlet> getServletClass();
method getStatus (line 72) | int getStatus();
method getWebApplication (line 77) | WebApplication getWebApplication();
method isAsyncSupported (line 84) | boolean isAsyncSupported();
method setClassName (line 92) | void setClassName(String className);
method setServlet (line 99) | void setServlet(Servlet servlet);
method setStatus (line 106) | void setStatus(int status);
method getUnavailableException (line 113) | Throwable getUnavailableException();
method setUnavailableException (line 120) | void setUnavailableException(Throwable unavailableException);
FILE: core/api/src/main/java/cloud/piranha/core/api/ServletInvocation.java
type ServletInvocation (line 45) | public interface ServletInvocation {
method getInvocationPath (line 52) | String getInvocationPath();
method getServletName (line 57) | String getServletName();
method getServletPath (line 62) | String getServletPath();
method getOriginalServletPath (line 74) | default String getOriginalServletPath() {
method getPathInfo (line 81) | String getPathInfo();
method getApplicationRequestMapping (line 86) | WebApplicationRequestMapping getApplicationRequestMapping();
method getServletEnvironment (line 91) | ServletEnvironment getServletEnvironment();
method getFilterEnvironments (line 96) | List<FilterEnvironment> getFilterEnvironments();
method getFilterChain (line 101) | FilterChain getFilterChain();
method isFromNamed (line 106) | default boolean isFromNamed() {
method setFromNamed (line 115) | default void setFromNamed(boolean fromNamed) {
method hasServlet (line 124) | default boolean hasServlet() {
method hasFilter (line 133) | default boolean hasFilter() {
method isServletUnavailable (line 142) | default boolean isServletUnavailable() {
method canInvoke (line 151) | default boolean canInvoke() {
method getServletConfig (line 158) | default ServletConfig getServletConfig() {
FILE: core/api/src/main/java/cloud/piranha/core/api/ServletRequestManager.java
type ServletRequestManager (line 40) | public interface ServletRequestManager {
method addListener (line 48) | <T extends EventListener> void addListener(T listener);
method attributeAdded (line 57) | void attributeAdded(HttpServletRequest request, String name, Object va...
method attributeRemoved (line 66) | void attributeRemoved(HttpServletRequest request, String name, Object ...
method attributeReplaced (line 75) | void attributeReplaced(HttpServletRequest request, String name, Object...
method requestDestroyed (line 82) | void requestDestroyed(ServletRequest request);
method requestInitialized (line 89) | void requestInitialized(ServletRequest request);
FILE: core/api/src/main/java/cloud/piranha/core/api/WebApplication.java
type WebApplication (line 52) | public interface WebApplication extends ServletContext {
type Status (line 57) | enum Status {
method addFilterMapping (line 95) | default Set<String> addFilterMapping(String filterName, String... urlP...
method addFilterMapping (line 110) | default Set<String> addFilterMapping(String filterName, boolean isMatc...
method addFilterMapping (line 127) | Set<String> addFilterMapping(Set<DispatcherType> dispatcherTypes, Stri...
method addInitializer (line 134) | void addInitializer(String className);
method addInitializer (line 142) | void addInitializer(ServletContainerInitializer servletContainerInitia...
method addMimeType (line 150) | void addMimeType(String extension, String mimeType);
method addResource (line 157) | void addResource(Resource resource);
method addServletMapping (line 167) | Set<String> addServletMapping(String servletName, String... urlPatterns);
method destroy (line 174) | WebApplication destroy();
method getDefaultServlet (line 181) | Servlet getDefaultServlet();
method getInitializers (line 188) | List<ServletContainerInitializer> getInitializers();
method getManager (line 195) | WebApplicationManager getManager();
method getMappings (line 204) | Collection<String> getMappings(String servletName);
method getRequest (line 212) | ServletRequest getRequest(ServletResponse response);
method getResponse (line 220) | ServletResponse getResponse(ServletRequest request);
method getServletContextId (line 228) | default String getServletContextId() {
method getStatus (line 237) | Status getStatus();
method initialize (line 244) | WebApplication initialize();
method isDistributable (line 251) | boolean isDistributable();
method isInitialized (line 258) | boolean isInitialized();
method isMetadataComplete (line 265) | boolean isMetadataComplete();
method isServicing (line 272) | boolean isServicing();
method linkRequestAndResponse (line 280) | void linkRequestAndResponse(ServletRequest request, ServletResponse re...
method removeServletMapping (line 289) | String removeServletMapping(String urlPattern);
method service (line 299) | void service(ServletRequest request, ServletResponse response)
method setClassLoader (line 307) | void setClassLoader(ClassLoader classLoader);
method setContextPath (line 314) | void setContextPath(String contextPath);
method setDefaultServlet (line 321) | void setDefaultServlet(Servlet defaultServlet);
method setDistributable (line 328) | void setDistributable(boolean distributable);
method setEffectiveMajorVersion (line 335) | void setEffectiveMajorVersion(int version);
method setEffectiveMinorVersion (line 342) | void setEffectiveMinorVersion(int version);
method setJspConfigDescriptor (line 349) | void setJspConfigDescriptor(JspConfigDescriptor descriptor);
method setMetadataComplete (line 356) | void setMetadataComplete(boolean metadataComplete);
method setServletContextName (line 363) | void setServletContextName(String servletContextName);
method setStatus (line 370) | void setStatus(Status status);
method setVirtualServerName (line 377) | void setVirtualServerName(String virtualServerName);
method setWebApplicationRequestMapper (line 384) | void setWebApplicationRequestMapper(WebApplicationRequestMapper webApp...
method start (line 391) | WebApplication start();
method stop (line 398) | WebApplication stop();
method unlinkRequestAndResponse (line 406) | void unlinkRequestAndResponse(ServletRequest request, ServletResponse ...
FILE: core/api/src/main/java/cloud/piranha/core/api/WebApplicationClassLoader.java
type WebApplicationClassLoader (line 37) | public interface WebApplicationClassLoader extends ResourceManagerClassL...
FILE: core/api/src/main/java/cloud/piranha/core/api/WebApplicationExtension.java
type WebApplicationExtension (line 41) | public interface WebApplicationExtension {
method configure (line 48) | default void configure(WebApplication webApplication) {
method extend (line 56) | default void extend(WebApplicationExtensionContext context) {
FILE: core/api/src/main/java/cloud/piranha/core/api/WebApplicationExtensionContext.java
type WebApplicationExtensionContext (line 35) | public interface WebApplicationExtensionContext {
method add (line 47) | void add(Class<? extends WebApplicationExtension> extension);
method add (line 59) | void add(WebApplicationExtension extension);
method remove (line 76) | void remove(Class<? extends WebApplicationExtension> extension);
FILE: core/api/src/main/java/cloud/piranha/core/api/WebApplicationInputStream.java
class WebApplicationInputStream (line 50) | public abstract class WebApplicationInputStream extends ServletInputStre...
method WebApplicationInputStream (line 85) | public WebApplicationInputStream() {
method close (line 89) | @Override
method getReadListener (line 100) | public ReadListener getReadListener() {
method isFinished (line 104) | @Override
method isReady (line 109) | @Override
method read (line 123) | @Override
method readWithTimeout (line 147) | private int readWithTimeout() {
method run (line 173) | @Override
method setInputStream (line 213) | public void setInputStream(InputStream inputStream) {
method setReadListener (line 217) | @Override
method setWebApplicationRequest (line 238) | public void setWebApplicationRequest(WebApplicationRequest webApplicat...
FILE: core/api/src/main/java/cloud/piranha/core/api/WebApplicationManager.java
type WebApplicationManager (line 42) | public interface WebApplicationManager {
method getAnnotationManager (line 49) | AnnotationManager getAnnotationManager();
method getAsyncManager (line 56) | AsyncManager getAsyncManager();
method getErrorPageManager (line 63) | ErrorPageManager getErrorPageManager();
method getDispatcherManager (line 70) | DispatcherManager getDispatcherManager();
method getHandlesTypesManager (line 77) | HandlesTypesManager getHandlesTypesManager();
method getHttpSessionManager (line 84) | HttpSessionManager getHttpSessionManager();
method getJspManager (line 91) | JspManager getJspManager();
method getLocaleEncodingManager (line 98) | LocaleEncodingManager getLocaleEncodingManager();
method getMultiPartManager (line 105) | MultiPartManager getMultiPartManager();
method getObjectInstanceManager (line 112) | ObjectInstanceManager getObjectInstanceManager();
method getResourceManager (line 119) | ResourceManager getResourceManager();
method getSecurityManager (line 126) | SecurityManager getSecurityManager();
method getServletRequestManager (line 133) | ServletRequestManager getServletRequestManager();
method getWelcomeFileManager (line 140) | WelcomeFileManager getWelcomeFileManager();
method setAnnotationManager (line 147) | void setAnnotationManager(AnnotationManager annotationManager);
method setAsyncManager (line 154) | void setAsyncManager(AsyncManager asyncManager);
method setErrorPageManager (line 161) | void setErrorPageManager(ErrorPageManager errorPageManager);
method setHandlesTypesManager (line 168) | void setHandlesTypesManager(HandlesTypesManager handlesTypesManager);
method setHttpSessionManager (line 175) | void setHttpSessionManager(HttpSessionManager httpSessionManager);
method setJspManager (line 182) | void setJspManager(JspManager jspManager);
method setLocaleEncodingManager (line 189) | void setLocaleEncodingManager(LocaleEncodingManager localeEncodingMana...
method setMultiPartManager (line 196) | void setMultiPartManager(MultiPartManager multiPartManager);
method setObjectInstanceManager (line 203) | void setObjectInstanceManager(ObjectInstanceManager objectInstanceMana...
method setResourceManager (line 210) | void setResourceManager(ResourceManager resourceManager);
method setSecurityManager (line 217) | void setSecurityManager(SecurityManager securityManager);
method setServletRequestManager (line 224) | void setServletRequestManager(ServletRequestManager servletRequestMana...
method setWelcomeFileManager (line 231) | void setWelcomeFileManager(WelcomeFileManager welcomeFileManager);
FILE: core/api/src/main/java/cloud/piranha/core/api/WebApplicationOutputStream.java
class WebApplicationOutputStream (line 40) | public abstract class WebApplicationOutputStream extends ServletOutputSt...
method WebApplicationOutputStream (line 45) | protected WebApplicationOutputStream() {
method flushBuffer (line 53) | public abstract void flushBuffer() throws IOException;
method getBufferSize (line 60) | public abstract int getBufferSize();
method getOutputStream (line 67) | public abstract OutputStream getOutputStream();
method getResponse (line 74) | public abstract WebApplicationResponse getResponse();
method getWriteListener (line 81) | public abstract WriteListener getWriteListener();
method resetBuffer (line 86) | public abstract void resetBuffer();
method setBufferSize (line 93) | public abstract void setBufferSize(int bufferSize);
method setOutputStream (line 100) | public abstract void setOutputStream(OutputStream outputStream);
method setResponse (line 107) | public abstract void setResponse(WebApplicationResponse response);
FILE: core/api/src/main/java/cloud/piranha/core/api/WebApplicationPrintWriter.java
class WebApplicationPrintWriter (line 38) | public class WebApplicationPrintWriter extends PrintWriter {
method WebApplicationPrintWriter (line 52) | public WebApplicationPrintWriter(WebApplicationResponse response, Writ...
FILE: core/api/src/main/java/cloud/piranha/core/api/WebApplicationRequest.java
type WebApplicationRequest (line 42) | public interface WebApplicationRequest extends HttpServletRequest {
method getModifiableParameterMap (line 49) | Map<String, String[]> getModifiableParameterMap();
method getMultipartConfig (line 54) | default MultipartConfigElement getMultipartConfig() {
method getUpgradeHandler (line 61) | default HttpUpgradeHandler getUpgradeHandler() {
method getWebApplicationInputStream (line 70) | default WebApplicationInputStream getWebApplicationInputStream() {
method isUpgraded (line 77) | default boolean isUpgraded() {
method setAsyncSupported (line 86) | void setAsyncSupported(boolean asyncSupported);
method setAuthType (line 93) | void setAuthType(String authType);
method setContextPath (line 100) | void setContextPath(String contextPath);
method setDispatcherType (line 107) | void setDispatcherType(DispatcherType dispatcherType);
method setRequestedSessionId (line 114) | default void setRequestedSessionId(String requestedSessionId) {
method setServletPath (line 122) | void setServletPath(String servletPath);
method setUserPrincipal (line 129) | void setUserPrincipal(Principal userPrincipal);
method setWebApplication (line 136) | void setWebApplication(WebApplication webApplication);
method setPathInfo (line 143) | default void setPathInfo(String pathInfo) {
method setQueryString (line 151) | default void setQueryString(String queryString) {
method setWebApplicationInputStream (line 159) | default void setWebApplicationInputStream(
FILE: core/api/src/main/java/cloud/piranha/core/api/WebApplicationRequestMapper.java
type WebApplicationRequestMapper (line 40) | public interface WebApplicationRequestMapper {
method addServletMapping (line 59) | Set<String> addServletMapping(String servletName, String... urlPatterns);
method removeServletMapping (line 67) | String removeServletMapping(String urlPattern);
method addFilterMapping (line 79) | default Set<String> addFilterMapping(String filterName, String... urlP...
method addFilterMapping (line 94) | Set<String> addFilterMapping(Set<DispatcherType> dispatcherTypes, Stri...
method addFilterMappingBeforeExisting (line 107) | default Set<String> addFilterMappingBeforeExisting(String filterName, ...
method addFilterMappingBeforeExisting (line 123) | Set<String> addFilterMappingBeforeExisting(Set<DispatcherType> dispatc...
method findFilterMappings (line 132) | default Collection<String> findFilterMappings(String path) {
method findFilterMappings (line 143) | Collection<String> findFilterMappings(DispatcherType dispatcherType, S...
method findServletMapping (line 151) | WebApplicationRequestMapping findServletMapping(String path);
method getServletMappings (line 159) | Collection<String> getServletMappings(String servletName);
method getDefaultServlet (line 166) | default String getDefaultServlet() {
method getServletName (line 176) | String getServletName(String mapping);
FILE: core/api/src/main/java/cloud/piranha/core/api/WebApplicationRequestMapping.java
type WebApplicationRequestMapping (line 35) | public interface WebApplicationRequestMapping {
method getMatchValue (line 40) | String getMatchValue();
method getPattern (line 45) | String getPattern();
method isExact (line 52) | boolean isExact();
method isExtension (line 59) | boolean isExtension();
FILE: core/api/src/main/java/cloud/piranha/core/api/WebApplicationResponse.java
type WebApplicationResponse (line 39) | public interface WebApplicationResponse extends HttpServletResponse {
method closeAsyncResponse (line 44) | void closeAsyncResponse();
method getContentLanguage (line 51) | String getContentLanguage();
method getContentLength (line 58) | long getContentLength();
method getCookies (line 63) | Collection<Cookie> getCookies();
method getResponseCloser (line 68) | Runnable getResponseCloser();
method getStatusMessage (line 75) | String getStatusMessage();
method getWebApplication (line 82) | WebApplication getWebApplication();
method getWebApplicationOutputStream (line 87) | WebApplicationOutputStream getWebApplicationOutputStream();
method isBodyOnly (line 94) | boolean isBodyOnly();
method isBufferResetting (line 101) | boolean isBufferResetting();
method isWriterAcquired (line 108) | boolean isWriterAcquired();
method setCommitted (line 115) | void setCommitted(boolean committed);
method setBodyOnly (line 122) | void setBodyOnly(boolean bodyOnly);
method setResponseCloser (line 129) | void setResponseCloser(Runnable responseCloser);
method setWebApplication (line 136) | void setWebApplication(WebApplication webApplication);
method setWebApplicationOutputStream (line 143) | void setWebApplicationOutputStream(WebApplicationOutputStream outputSt...
FILE: core/api/src/main/java/cloud/piranha/core/api/WebApplicationServer.java
type WebApplicationServer (line 38) | public interface WebApplicationServer {
method addWebApplication (line 45) | void addWebApplication(WebApplication webApplication);
method getRequestMapper (line 50) | WebApplicationServerRequestMapper getRequestMapper();
method service (line 60) | void service(WebApplicationRequest request, WebApplicationResponse res...
method initialize (line 66) | void initialize();
method setRequestMapper (line 73) | void setRequestMapper(WebApplicationServerRequestMapper requestMapper);
method start (line 78) | void start();
method stop (line 83) | void stop();
FILE: core/api/src/main/java/cloud/piranha/core/api/WebApplicationServerRequestMapper.java
type WebApplicationServerRequestMapper (line 37) | public interface WebApplicationServerRequestMapper {
method addMapping (line 46) | Set<String> addMapping(WebApplication webApplication, String... urlPat...
method findMapping (line 54) | WebApplication findMapping(String path);
FILE: core/api/src/main/java/cloud/piranha/core/api/WelcomeFileManager.java
type WelcomeFileManager (line 37) | public interface WelcomeFileManager {
method addWelcomeFile (line 44) | void addWelcomeFile(String welcomeFile);
method getWelcomeFileList (line 49) | List<String> getWelcomeFileList();
FILE: core/api/src/test/java/cloud/piranha/core/api/AttributeManagerTest.java
class AttributeManagerTest (line 42) | class AttributeManagerTest {
method setUp (line 47) | @BeforeEach
method testGetAttribute (line 73) | @Test
method testGetAttributeNames (line 79) | @Test
method testRemoveAttribute (line 89) | @Test
method testSetAttribute (line 96) | @Test
method testContainsAttribute (line 102) | @Test
FILE: core/impl/src/main/java/cloud/piranha/core/impl/AsyncHttpDispatchWrapper.java
class AsyncHttpDispatchWrapper (line 59) | public class AsyncHttpDispatchWrapper extends HttpServletRequestWrapper ...
method AsyncHttpDispatchWrapper (line 111) | public AsyncHttpDispatchWrapper(HttpServletRequest request) {
method getModifiableParameterMap (line 116) | @Override
method getRequest (line 121) | @Override
method getDispatcherType (line 126) | @Override
method getServletPath (line 131) | @Override
method getPathInfo (line 136) | @Override
method setPathInfo (line 141) | @Override
method getRequestURI (line 146) | @Override
method setRequestURI (line 156) | public void setRequestURI(String requestURI) {
method getQueryString (line 160) | @Override
method startAsync (line 165) | @Override
method startAsync (line 170) | @Override
method isAsyncStarted (line 183) | @Override
method getAttributeNames (line 188) | @Override
method getAttribute (line 197) | @Override
method setAttribute (line 206) | @Override
method removeAttribute (line 215) | @Override
method getParameter (line 230) | @Override
method getParameterMap (line 242) | @Override
method getParameterNames (line 254) | @Override
method getParameterValues (line 267) | @Override
method setQueryString (line 276) | @Override
method setAsWrapperAttribute (line 287) | public void setAsWrapperAttribute(String name, Object value) {
method getWrapperAttributes (line 294) | public List<String> getWrapperAttributes() {
method getWrapperParameters (line 301) | public Map<String, String[]> getWrapperParameters() {
method setDispatcherType (line 305) | @Override
method toString (line 310) | @Override
method getRequestURIWithQueryString (line 318) | public String getRequestURIWithQueryString() {
method setContextPath (line 327) | @Override
method setServletPath (line 332) | @Override
method setAuthType (line 337) | @Override
method setUserPrincipal (line 342) | @Override
method setWebApplication (line 347) | @Override
method getMultipartConfig (line 352) | @Override
method setAsyncSupported (line 357) | @Override
FILE: core/impl/src/main/java/cloud/piranha/core/impl/AsyncNonHttpDispatchWrapper.java
class AsyncNonHttpDispatchWrapper (line 40) | public class AsyncNonHttpDispatchWrapper extends ServletRequestWrapper {
method AsyncNonHttpDispatchWrapper (line 47) | public AsyncNonHttpDispatchWrapper(ServletRequest request) {
method getDispatcherType (line 51) | @Override
FILE: core/impl/src/main/java/cloud/piranha/core/impl/CookieParser.java
class CookieParser (line 39) | public class CookieParser {
method CookieParser (line 46) | private CookieParser() {
method parse (line 58) | public static Cookie[] parse(String cookieValues) {
method parseNetscape (line 66) | private static Cookie[] parseNetscape(String cookiesValue) {
method parseRFC2109 (line 84) | @SuppressWarnings({"removal"})
method removeQuotes (line 117) | private static String removeQuotes(String value) {
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultAnnotationManager.java
class DefaultAnnotationManager (line 45) | public class DefaultAnnotationManager implements AnnotationManager {
method DefaultAnnotationManager (line 55) | public DefaultAnnotationManager() {
method addAnnotatedClass (line 58) | @Override
method addAnnotation (line 74) | @Override
method addInstance (line 81) | @Override
method getAnnotations (line 88) | @Override
method getAnnotations (line 93) | @Override
method getInstances (line 98) | @Override
method getInstances (line 103) | @Override
method getAnnotationsByTarget (line 108) | @Override
method getAnnotatedClass (line 113) | @Override
method getAnnotatedClasses (line 118) | @SuppressWarnings("unchecked")
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultAsyncContext.java
class DefaultAsyncContext (line 59) | public class DefaultAsyncContext implements AsyncContext {
method DefaultAsyncContext (line 139) | public DefaultAsyncContext(ServletRequest asyncStartRequest, ServletRe...
method addListener (line 149) | @Override
method addListener (line 154) | @Override
method createListener (line 159) | @Override
method dispatch (line 172) | @Override
method dispatch (line 186) | @Override
method dispatch (line 197) | @Override
method complete (line 210) | @Override
method onTimeOut (line 241) | public void onTimeOut() {
method getRequest (line 267) | @Override
method getResponse (line 272) | @Override
method getTimeout (line 277) | @Override
method hasOriginalRequestAndResponse (line 282) | @Override
method setTimeout (line 287) | @Override
method start (line 297) | @Override
method unwrapFully (line 311) | @SuppressWarnings("unchecked")
method unwrapFully (line 327) | @SuppressWarnings("unchecked")
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultAsyncDispatcher.java
class DefaultAsyncDispatcher (line 45) | public class DefaultAsyncDispatcher implements AsyncDispatcher {
method DefaultAsyncDispatcher (line 80) | public DefaultAsyncDispatcher(WebApplication webApplication, String pa...
method dispatch (line 87) | @Override
method addAsyncWrapper (line 109) | private ServletRequest addAsyncWrapper(ServletRequest request) {
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultAsyncManager.java
class DefaultAsyncManager (line 41) | public class DefaultAsyncManager implements AsyncManager {
method DefaultAsyncManager (line 46) | public DefaultAsyncManager() {
method getDispatcher (line 49) | @Override
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultAttributeManager.java
class DefaultAttributeManager (line 41) | public class DefaultAttributeManager implements AttributeManager {
method DefaultAttributeManager (line 51) | public DefaultAttributeManager() {
method getAttribute (line 55) | @Override
method getAttributeNames (line 60) | @Override
method removeAttribute (line 65) | @Override
method setAttribute (line 70) | @Override
method containsAttribute (line 79) | @Override
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultAuthenticatedIdentity.java
class DefaultAuthenticatedIdentity (line 54) | public class DefaultAuthenticatedIdentity implements AuthenticatedIdenti...
method DefaultAuthenticatedIdentity (line 82) | public DefaultAuthenticatedIdentity(Principal callerPrincipal, Set<Str...
method setCurrentIdentity (line 93) | public static void setCurrentIdentity(Principal callerPrincipal, Set<S...
method setCurrentIdentity (line 102) | public static void setCurrentIdentity(AuthenticatedIdentity identity) {
method getCurrentSubject (line 116) | public static Subject getCurrentSubject() {
method getCurrentIdentity (line 123) | public static AuthenticatedIdentity getCurrentIdentity() {
method clear (line 130) | public static void clear() {
method getCallerPrincipal (line 135) | @Override
method getGroups (line 140) | @Override
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultCurrentRequestHolder.java
class DefaultCurrentRequestHolder (line 39) | public class DefaultCurrentRequestHolder implements CurrentRequestHolder {
method DefaultCurrentRequestHolder (line 51) | public DefaultCurrentRequestHolder(HttpServletRequest request) {
method getRequest (line 55) | @SuppressWarnings("unchecked")
method setRequest (line 61) | @Override
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultDispatcherManager.java
class DefaultDispatcherManager (line 40) | public class DefaultDispatcherManager implements DispatcherManager {
method DefaultDispatcherManager (line 50) | public DefaultDispatcherManager() {
method getNamedDispatcher (line 53) | @Override
method setWebApplication (line 64) | @Override
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultErrorPageManager.java
class DefaultErrorPageManager (line 42) | public class DefaultErrorPageManager implements ErrorPageManager {
method DefaultErrorPageManager (line 57) | public DefaultErrorPageManager() {
method addErrorPage (line 60) | @Override
method addErrorPage (line 65) | @Override
method getErrorPage (line 70) | @Override
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultFilterChain.java
class DefaultFilterChain (line 49) | public class DefaultFilterChain implements FilterChain {
method DefaultFilterChain (line 80) | public DefaultFilterChain() {
method DefaultFilterChain (line 89) | public DefaultFilterChain(ServletInvocation servletInvocation, Servlet...
method DefaultFilterChain (line 100) | public DefaultFilterChain(Filter filter, FilterChain nextFilterChain) {
method doFilter (line 113) | @Override
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultFilterEnvironment.java
class DefaultFilterEnvironment (line 53) | public class DefaultFilterEnvironment implements FilterEnvironment {
method DefaultFilterEnvironment (line 101) | public DefaultFilterEnvironment() {
method DefaultFilterEnvironment (line 114) | public DefaultFilterEnvironment(WebApplication webApp, String filterNa...
method addMappingForServletNames (line 122) | @Override
method addMappingForUrlPatterns (line 129) | @Override
method getClassName (line 135) | @Override
method getFilter (line 140) | @Override
method getFilterName (line 145) | @Override
method getInitParameter (line 150) | @Override
method getInitParameterNames (line 155) | @Override
method getInitParameters (line 160) | @Override
method getName (line 165) | @Override
method getServletContext (line 170) | @Override
method getServletNameMappings (line 175) | @Override
method getStatus (line 185) | public int getStatus() {
method getUrlPatternMappings (line 189) | @Override
method getWebApplication (line 194) | @Override
method initialize (line 199) | @Override
method isAsyncSupported (line 211) | @Override
method setAsyncSupported (line 216) | @Override
method setClassName (line 221) | @Override
method setFilterName (line 226) | @Override
method setInitParameter (line 231) | @Override
method setInitParameters (line 241) | @Override
method setStatus (line 262) | @Override
method setWebApplication (line 267) | @Override
method toString (line 272) | @Override
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultFilterMapping.java
class DefaultFilterMapping (line 40) | public class DefaultFilterMapping implements FilterMapping {
method DefaultFilterMapping (line 63) | public DefaultFilterMapping(String filterName, String urlPattern) {
method DefaultFilterMapping (line 74) | public DefaultFilterMapping(DispatcherType dispatcherType, String filt...
method equals (line 80) | @Override
method getDispatcherType (line 94) | @Override
method getFilterName (line 99) | @Override
method getUrlPattern (line 104) | @Override
method hashCode (line 109) | @Override
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultHttpHeader.java
class DefaultHttpHeader (line 40) | public class DefaultHttpHeader implements HttpHeader {
method DefaultHttpHeader (line 57) | public DefaultHttpHeader(String name, String value) {
method addValue (line 67) | @Override
method getName (line 75) | @Override
method getValue (line 83) | @Override
method getValues (line 91) | @Override
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultHttpHeaderManager.java
class DefaultHttpHeaderManager (line 45) | public class DefaultHttpHeaderManager implements HttpHeaderManager {
method DefaultHttpHeaderManager (line 60) | @SuppressWarnings("deprecation")
method addHeader (line 66) | @Override
method containsHeader (line 76) | @Override
method getDateHeader (line 81) | @Override
method getHeader (line 98) | @Override
method getHeaderNames (line 107) | @Override
method getHeaders (line 116) | @Override
method getIntHeader (line 125) | @Override
method removeHeader (line 140) | @Override
method setHeader (line 145) | @Override
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultHttpServletMapping.java
class DefaultHttpServletMapping (line 38) | public class DefaultHttpServletMapping implements HttpServletMapping {
method DefaultHttpServletMapping (line 64) | public DefaultHttpServletMapping() {
method getMappingMatch (line 67) | @Override
method setMappingMatch (line 77) | public void setMappingMatch(MappingMatch mappingMatch) {
method getMatchValue (line 81) | @Override
method setMatchValue (line 91) | public void setMatchValue(String matchValue) {
method getPattern (line 96) | @Override
method setPattern (line 106) | public void setPattern(String pattern) {
method getServletName (line 111) | @Override
method setServletName (line 121) | public void setServletName(String servletName) {
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultHttpSession.java
class DefaultHttpSession (line 43) | public class DefaultHttpSession implements HttpSession {
method DefaultHttpSession (line 95) | public DefaultHttpSession(ServletContext servletContext) {
method DefaultHttpSession (line 110) | public DefaultHttpSession(ServletContext servletContext, String id, bo...
method getAttribute (line 119) | @Override
method getAttributeNames (line 125) | @Override
method getCreationTime (line 131) | @Override
method getId (line 137) | @Override
method getLastAccessedTime (line 142) | @Override
method getMaxInactiveInterval (line 148) | @Override
method getServletContext (line 153) | @Override
method invalidate (line 158) | @Override
method isNew (line 165) | @Override
method removeAttribute (line 171) | @Override
method setAttribute (line 177) | @Override
method setId (line 201) | public void setId(String id) {
method setMaxInactiveInterval (line 205) | @Override
method setNew (line 215) | public void setNew(boolean newFlag) {
method setSessionManager (line 225) | public void setSessionManager(HttpSessionManager sessionManager) {
method verifyValid (line 234) | private void verifyValid(String methodName) {
method setLastAccessedTime (line 245) | public void setLastAccessedTime(long lastAccessedTime) {
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultHttpSessionManager.java
class DefaultHttpSessionManager (line 72) | public class DefaultHttpSessionManager implements HttpSessionManager, Se...
method DefaultHttpSessionManager (line 162) | public DefaultHttpSessionManager() {
method addListener (line 182) | @Override
method attributeAdded (line 195) | @Override
method attributeRemoved (line 203) | @Override
method attributeReplaced (line 211) | @Override
method changeSessionId (line 222) | @Override
method createSession (line 238) | @Override
method destroySession (line 266) | @Override
method encodeRedirectURL (line 280) | @Override
method encodeURL (line 285) | @Override
method getComment (line 290) | @Override
method getDefaultSessionTrackingModes (line 296) | @Override
method getDomain (line 301) | @Override
method getEffectiveSessionTrackingModes (line 306) | @Override
method getMaxAge (line 311) | @Override
method getName (line 316) | @Override
method getPath (line 321) | @Override
method getSession (line 326) | @Override
method getSessionCookieConfig (line 331) | @Override
method getSessionTimeout (line 336) | @Override
method hasSession (line 341) | @Override
method isHttpOnly (line 350) | @Override
method isSecure (line 355) | @Override
method reapSessions (line 363) | protected void reapSessions() {
method setComment (line 384) | @Override
method setDomain (line 392) | @Override
method setHttpOnly (line 400) | @Override
method setMaxAge (line 408) | @Override
method setName (line 416) | @Override
method setPath (line 424) | @Override
method setSecure (line 432) | @Override
method setSessionTimeout (line 440) | @Override
method setSessionTrackingModes (line 445) | @Override
method setWebApplication (line 453) | @Override
method requestInitialized (line 458) | @Override
method requestDestroyed (line 473) | @Override
method setAttribute (line 492) | @Override
method getAttribute (line 517) | @Override
method getAttributes (line 532) | @Override
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultInvocationFinder.java
class DefaultInvocationFinder (line 64) | public class DefaultInvocationFinder {
method DefaultInvocationFinder (line 82) | public DefaultInvocationFinder(DefaultWebApplication webApplication) {
method findServletInvocationByPath (line 95) | public DefaultServletInvocation findServletInvocationByPath(String ser...
method findServletInvocationByPath (line 109) | public DefaultServletInvocation findServletInvocationByPath(Dispatcher...
method addFilters (line 151) | public DefaultServletInvocation addFilters(DispatcherType dispatcherTy...
method findServletInvocationByName (line 187) | public DefaultServletInvocation findServletInvocationByName(String ser...
method getDirectServletInvocationByPath (line 203) | private DefaultServletInvocation getDirectServletInvocationByPath(Stri...
method getWelcomeFileServletInvocation (line 252) | private DefaultServletInvocation getWelcomeFileServletInvocation(Strin...
method isStaticResource (line 289) | private boolean isStaticResource(String servletPath, String pathInfo) ...
method isJsp (line 293) | private static boolean isJsp(String welcomeFile) {
method addOrRemoveSlashIfNeeded (line 297) | private String addOrRemoveSlashIfNeeded(String string) {
method getDefaultServletInvocation (line 309) | private DefaultServletInvocation getDefaultServletInvocation(String se...
method findFilterEnvironments (line 356) | protected List<FilterEnvironment> findFilterEnvironments(DispatcherTyp...
method findFilterChain (line 379) | private FilterChain findFilterChain(List<FilterEnvironment> filterEnvi...
method sortOnPriority (line 405) | private int sortOnPriority(FilterEnvironment x, FilterEnvironment y) {
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultJspConfigDescriptor.java
class DefaultJspConfigDescriptor (line 42) | public class DefaultJspConfigDescriptor implements JspConfigDescriptor {
method DefaultJspConfigDescriptor (line 52) | public DefaultJspConfigDescriptor() {
method getTaglibs (line 55) | @Override
method getJspPropertyGroups (line 60) | @Override
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultJspManager.java
class DefaultJspManager (line 40) | public class DefaultJspManager implements JspManager {
method DefaultJspManager (line 50) | public DefaultJspManager() {
method addJspFile (line 53) | @Override
method getJspConfigDescriptor (line 58) | @Override
method setJspConfigDescriptor (line 63) | @Override
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultLocaleEncodingManager.java
class DefaultLocaleEncodingManager (line 39) | public class DefaultLocaleEncodingManager implements LocaleEncodingManag...
method DefaultLocaleEncodingManager (line 49) | public DefaultLocaleEncodingManager() {
method addCharacterEncoding (line 62) | @Override
method getCharacterEncoding (line 67) | @Override
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultModuleFinder.java
class DefaultModuleFinder (line 62) | public class DefaultModuleFinder implements ModuleFinder {
method DefaultModuleFinder (line 119) | public DefaultModuleFinder(List<Resource> resources) {
method find (line 123) | @Override
method getModuleName (line 136) | private String getModuleName(Resource resource, String resourceName) {
method moduleDescriptorFromResource (line 142) | private ModuleDescriptor moduleDescriptorFromResource(Resource resourc...
method addProviders (line 194) | private void addProviders(ModuleDescriptor.Builder builder, Resource r...
method packages (line 217) | private Set<String> packages(Resource resource) {
method normalizeModuleName (line 228) | private String normalizeModuleName(String module) {
method toPackageName (line 241) | private Optional<String> toPackageName(String name) {
method moduleInfo (line 251) | private ModuleDescriptor moduleInfo(Resource resource) {
method deriveAutomaticModuleNameFromManifest (line 264) | private String deriveAutomaticModuleNameFromManifest(Resource resource) {
method searchAllModules (line 281) | private void searchAllModules() {
method hasSplitPackages (line 301) | private boolean hasSplitPackages(Map<String, String> packageToExporter...
method findAll (line 318) | @Override
method cleanModuleName (line 330) | private static String cleanModuleName(String mn) {
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultModuleLayerProcessor.java
type DefaultModuleLayerProcessor (line 40) | public enum DefaultModuleLayerProcessor implements ModuleLayerProcessor {
method processModuleLayerOptions (line 75) | @Override
method logModuleNotFound (line 96) | private static void logModuleNotFound(String option, String module) {
method addReads (line 100) | private static void addReads(String property, ModuleLayer moduleLayer,...
method addExportsOrOpens (line 123) | private static void addExportsOrOpens(String property, ModuleLayer mod...
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultModuleReader.java
class DefaultModuleReader (line 45) | public class DefaultModuleReader implements ModuleReader {
method DefaultModuleReader (line 56) | public DefaultModuleReader(Resource resource) {
method find (line 60) | @Override
method open (line 69) | @Override
method list (line 81) | @Override
method close (line 86) | @Override
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultModuleReference.java
class DefaultModuleReference (line 43) | public class DefaultModuleReference extends ModuleReference {
method DefaultModuleReference (line 57) | public DefaultModuleReference(ModuleDescriptor descriptor, URI locatio...
method open (line 62) | @Override
method getResource (line 67) | Resource getResource() {
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultMultiPartManager.java
class DefaultMultiPartManager (line 47) | public class DefaultMultiPartManager implements MultiPartManager {
method DefaultMultiPartManager (line 52) | public DefaultMultiPartManager() {
method getParts (line 55) | @Override
method getPart (line 60) | @Override
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultNamedRequestDispatcher.java
class DefaultNamedRequestDispatcher (line 50) | public class DefaultNamedRequestDispatcher implements RequestDispatcher {
method DefaultNamedRequestDispatcher (line 62) | public DefaultNamedRequestDispatcher(ServletEnvironment environment) {
method forward (line 66) | @Override
method include (line 109) | @Override
method unwrap (line 133) | private WebApplicationRequest unwrap(ServletRequest servletRequest) {
method unwrap (line 147) | private WebApplicationResponse unwrap(ServletResponse servletResponse) {
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultObjectInstanceManager.java
class DefaultObjectInstanceManager (line 47) | public class DefaultObjectInstanceManager implements ObjectInstanceManag...
method DefaultObjectInstanceManager (line 52) | public DefaultObjectInstanceManager() {
method createFilter (line 63) | @Override
method createListener (line 82) | @Override
method createServlet (line 101) | @Override
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultPiranha.java
class DefaultPiranha (line 38) | public class DefaultPiranha implements Piranha {
method DefaultPiranha (line 48) | public DefaultPiranha() {
method getConfiguration (line 52) | @Override
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultPiranhaBuilder.java
class DefaultPiranhaBuilder (line 41) | public class DefaultPiranhaBuilder<T> implements PiranhaBuilder<T> {
method DefaultPiranhaBuilder (line 56) | public DefaultPiranhaBuilder() {
method build (line 59) | @Override
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultPiranhaConfiguration.java
class DefaultPiranhaConfiguration (line 40) | public class DefaultPiranhaConfiguration implements PiranhaConfiguration {
method DefaultPiranhaConfiguration (line 50) | public DefaultPiranhaConfiguration() {
method getBoolean (line 53) | @Override
method getClass (line 61) | @Override
method getFile (line 66) | @Override
method getInteger (line 71) | @Override
method getLong (line 76) | @Override
method getString (line 81) | @Override
method setBoolean (line 86) | @Override
method setClass (line 91) | @Override
method setFile (line 96) | @Override
method setInteger (line 101) | @Override
method setLong (line 106) | @Override
method setString (line 111) | @Override
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultPushBuilder.java
class DefaultPushBuilder (line 40) | @SuppressWarnings("deprecation")
method DefaultPushBuilder (line 79) | public DefaultPushBuilder(WebApplicationRequest request) {
method method (line 83) | @Override
method queryString (line 89) | @Override
method sessionId (line 95) | @Override
method setHeader (line 101) | @Override
method addHeader (line 107) | @Override
method removeHeader (line 113) | @Override
method path (line 119) | @Override
method push (line 125) | @Override
method getMethod (line 130) | @Override
method getQueryString (line 135) | @Override
method getSessionId (line 140) | @Override
method getHeaderNames (line 145) | @Override
method getHeader (line 154) | @Override
method getPath (line 159) | @Override
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultSecurityManager.java
class DefaultSecurityManager (line 53) | public class DefaultSecurityManager implements cloud.piranha.core.api.Se...
method DefaultSecurityManager (line 68) | public DefaultSecurityManager() {
method authenticate (line 73) | @Override
method declareRoles (line 78) | @Override
method getRoles (line 82) | @Override
method getSecurityConstraints (line 87) | @Override
method getSecurityRoleReferences (line 92) | @Override
method getWebApplication (line 97) | @Override
method isUserInRole (line 102) | @Override
method login (line 107) | @Override
method logout (line 112) | @Override
method setSecurityConstraints (line 116) | @Override
method setSecurityRoleReferences (line 121) | @Override
method setWebApplication (line 126) | @Override
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultServlet.java
class DefaultServlet (line 49) | public class DefaultServlet extends HttpServlet {
method DefaultServlet (line 56) | public DefaultServlet() {
method doGet (line 67) | @Override
method getResource (line 91) | private InputStream getResource(HttpServletRequest request) {
method getPath (line 99) | private String getPath(HttpServletRequest request) {
method setContentType (line 114) | private void setContentType(HttpServletRequest request, HttpServletRes...
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultServletConnection.java
class DefaultServletConnection (line 37) | public class DefaultServletConnection implements ServletConnection {
method DefaultServletConnection (line 42) | public DefaultServletConnection() {
method getConnectionId (line 45) | @Override
method getProtocol (line 50) | @Override
method getProtocolConnectionId (line 55) | @Override
method isSecure (line 60) | @Override
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultServletEnvironment.java
class DefaultServletEnvironment (line 50) | public class DefaultServletEnvironment implements ServletEnvironment {
method DefaultServletEnvironment (line 118) | public DefaultServletEnvironment(DefaultWebApplication webApp, String ...
method DefaultServletEnvironment (line 133) | public DefaultServletEnvironment(DefaultWebApplication webApp, String ...
method addMapping (line 139) | @Override
method getClassName (line 144) | @Override
method getInitParameter (line 149) | @Override
method getInitParameterNames (line 154) | @Override
method getInitParameters (line 159) | @Override
method getLoadOnStartup (line 164) | @Override
method getMappings (line 169) | @Override
method getMultipartConfig (line 179) | @Override
method getName (line 184) | @Override
method getRunAsRole (line 189) | @Override
method getServlet (line 194) | @Override
method getServletContext (line 199) | @Override
method getServletClass (line 204) | @Override
method getServletName (line 209) | @Override
method getStatus (line 214) | @Override
method getWebApplication (line 219) | @Override
method isAsyncSupported (line 224) | @Override
method setAsyncSupported (line 229) | @Override
method setClassName (line 234) | @Override
method setInitParameter (line 239) | @Override
method setInitParameters (line 249) | @Override
method setLoadOnStartup (line 270) | @Override
method setMultipartConfig (line 275) | @Override
method setRunAsRole (line 280) | @Override
method setServlet (line 285) | @Override
method setServletSecurity (line 290) | @Override
method setStatus (line 295) | @Override
method getUnavailableException (line 300) | @Override
method setUnavailableException (line 305) | @Override
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultServletInvocation.java
class DefaultServletInvocation (line 43) | public class DefaultServletInvocation implements ServletInvocation {
method DefaultServletInvocation (line 107) | public DefaultServletInvocation() {
method getInvocationPath (line 110) | @Override
method setInvocationPath (line 120) | public void setInvocationPath(String invocationPath) {
method getServletName (line 124) | @Override
method setServletName (line 134) | public void setServletName(String servletName) {
method getServletPath (line 138) | @Override
method setServletPath (line 148) | public void setServletPath(String servletPath) {
method getOriginalServletPath (line 152) | @Override
method setOriginalServletPath (line 162) | public void setOriginalServletPath(String originalServletPath) {
method getPathInfo (line 166) | @Override
method setPathInfo (line 176) | public void setPathInfo(String pathInfo) {
method getApplicationRequestMapping (line 180) | @Override
method setApplicationRequestMapping (line 190) | public void setApplicationRequestMapping(WebApplicationRequestMapping ...
method getHttpServletMapping (line 199) | public DefaultHttpServletMapping getHttpServletMapping() {
method getServletEnvironment (line 203) | @Override
method setServletEnvironment (line 213) | public void setServletEnvironment(ServletEnvironment servletEnvironmen...
method getFilterEnvironments (line 217) | @Override
method setFilterEnvironments (line 227) | public void setFilterEnvironments(List<FilterEnvironment> filterEnviro...
method getFilterChain (line 231) | @Override
method setFilterChain (line 241) | public void setFilterChain(FilterChain filterChain) {
method isFromNamed (line 245) | @Override
method setFromNamed (line 250) | @Override
method seedFilterChain (line 258) | public void seedFilterChain() {
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultServletRequestDispatcher.java
class DefaultServletRequestDispatcher (line 75) | public class DefaultServletRequestDispatcher implements RequestDispatcher {
method DefaultServletRequestDispatcher (line 129) | public DefaultServletRequestDispatcher(DefaultServletInvocation servle...
method request (line 147) | public void request(DefaultWebApplicationRequest webappRequest, Defaul...
method forward (line 236) | @Override
method include (line 258) | @Override
method error (line 364) | public void error(String servletName, ServletRequest servletRequest, S...
method isAsyncSupportedInChain (line 437) | private boolean isAsyncSupportedInChain() {
method setForwardAttributes (line 443) | private void setForwardAttributes(HttpServletRequest originalRequest, ...
method setForwardAttribute (line 456) | private void setForwardAttribute(HttpServletRequest originalRequest, H...
method updateCurrentRequest (line 482) | private CurrentRequestHolder updateCurrentRequest(HttpServletRequest o...
method copyAttributesFromRequest (line 494) | private void copyAttributesFromRequest(ServletRequest fromRequest, Ser...
method restoreCurrentRequest (line 501) | private void restoreCurrentRequest(CurrentRequestHolder currentRequest...
method asyncForward (line 508) | private void asyncForward(ServletRequest servletRequest, ServletRespon...
method asyncHttpForward (line 526) | private void asyncHttpForward(AsyncHttpDispatchWrapper asyncHttpDispat...
method asyncNonHttpForward (line 557) | private void asyncNonHttpForward(AsyncNonHttpDispatchWrapper asyncNonH...
method invokeTargetAsyncServlet (line 585) | private void invokeTargetAsyncServlet(AsyncHttpDispatchWrapper asyncHt...
method invokeTargetAsyncServlet (line 589) | private void invokeTargetAsyncServlet(HttpServletRequest invokeServlet...
method invokeTargetAsyncServlet (line 593) | private void invokeTargetAsyncServlet(ServletRequest invokeServletRequ...
method setAsyncAttributes (line 622) | private void setAsyncAttributes(HttpServletRequest asyncStartRequest, ...
method setAsyncAttribute (line 629) | private void setAsyncAttribute(HttpServletRequest originalRequest, Asy...
method setRequestParameters (line 655) | private void setRequestParameters(String queryString, AsyncHttpDispatc...
method getServletPath (line 681) | private String getServletPath(String path) {
method getQueryString (line 685) | private String getQueryString(String path) {
method findHttpServletRequestInChain (line 689) | private HttpServletRequest findHttpServletRequestInChain(ServletReques...
method rethrow (line 701) | private void rethrow(Throwable exception) throws ServletException, IOE...
method dispatchSyncForward (line 723) | private void dispatchSyncForward(
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultServletRequestManager.java
class DefaultServletRequestManager (line 49) | public class DefaultServletRequestManager implements ServletRequestManag...
method DefaultServletRequestManager (line 70) | public DefaultServletRequestManager() {
method addListener (line 73) | @Override
method attributeAdded (line 89) | @Override
method attributeRemoved (line 99) | @Override
method attributeReplaced (line 109) | @Override
method requestDestroyed (line 119) | @Override
method requestInitialized (line 129) | @Override
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultTaglibDescriptor.java
class DefaultTaglibDescriptor (line 37) | public class DefaultTaglibDescriptor implements TaglibDescriptor {
method DefaultTaglibDescriptor (line 52) | public DefaultTaglibDescriptor() {
method getTaglibLocation (line 55) | @Override
method getTaglibURI (line 60) | @Override
method setTaglibLocation (line 70) | public void setTaglibLocation(String taglibLocation) {
method setTaglibURI (line 79) | public void setTaglibURI(String taglibURI) {
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultWebApplication.java
class DefaultWebApplication (line 121) | public class DefaultWebApplication implements WebApplication {
method DefaultWebApplication (line 288) | public DefaultWebApplication() {
method addFilter (line 320) | @Override
method addFilter (line 325) | @Override
method addFilter (line 349) | @Override
method addFilterMapping (line 365) | @Override
method addInitializer (line 373) | @Override
method addInitializer (line 385) | @Override
method addJspFile (line 390) | @Override
method addListener (line 401) | @SuppressWarnings("unchecked")
method addListener (line 417) | @Override
method addListener (line 430) | @Override
method addMimeType (line 467) | @Override
method addResource (line 472) | @Override
method addServlet (line 477) | @Override
method addServlet (line 482) | @Override
method addServlet (line 505) | @Override
method addServletMapping (line 521) | @Override
method attributeAdded (line 532) | private void attributeAdded(String name, Object value) {
method attributeRemoved (line 542) | private void attributeRemoved(String name, Object previousValue) {
method attributeReplaced (line 552) | private void attributeReplaced(String name, Object value) {
method checkServicing (line 559) | private void checkServicing() {
method checkTainted (line 568) | private void checkTainted() {
method createFilter (line 575) | @Override
method createListener (line 581) | @Override
method createServlet (line 601) | @Override
method declareRoles (line 607) | @Override
method destroy (line 612) | @Override
method getAttribute (line 630) | @Override
method getAttributeNames (line 636) | @Override
method getClassLoader (line 641) | @Override
method getContext (line 646) | @Override
method getContextPath (line 651) | @Override
method getDefaultServlet (line 656) | @Override
method getDefaultSessionTrackingModes (line 661) | @Override
method getEffectiveMajorVersion (line 666) | @Override
method getEffectiveMinorVersion (line 674) | @Override
method getEffectiveSessionTrackingModes (line 682) | @Override
method getFileOrFirstFolder (line 710) | private String getFileOrFirstFolder(String path, String resource) {
method getFilterRegistration (line 721) | @Override
method getFilterRegistrations (line 727) | @Override
method getInitParameter (line 733) | @Override
method getInitParameterNames (line 738) | @Override
method getInitializers (line 743) | @Override
method getInvocationDispatcher (line 754) | private DefaultServletRequestDispatcher getInvocationDispatcher(Defaul...
method getJspConfigDescriptor (line 758) | @Override
method getMajorVersion (line 764) | @Override
method getManager (line 769) | @Override
method getMappings (line 774) | @Override
method getMimeType (line 779) | @Override
method getMinorVersion (line 788) | @Override
method getNamedDispatcher (line 793) | @Override
method getRealPath (line 798) | @Override
method getRequest (line 815) | @Override
method getRequestCharacterEncoding (line 820) | @Override
method getRequestDispatcher (line 825) | @Override
method getResource (line 839) | @Override
method getResourceAsStream (line 847) | @Override
method getResourcePaths (line 852) | @Override
method getResourcePathsImpl (line 873) | private Set<String> getResourcePathsImpl(String path) {
method getResponse (line 888) | @Override
method getResponseCharacterEncoding (line 893) | @Override
method getServerInfo (line 898) | @Override
method getServletContextName (line 903) | @Override
method getServletRegistration (line 908) | @Override
method getServletRegistrations (line 914) | @Override
method getSessionCookieConfig (line 920) | @Override
method getSessionTimeout (line 926) | @Override
method getStatus (line 931) | @Override
method getVirtualServerName (line 936) | @Override
method initialize (line 941) | @Override
method initializeFilters (line 963) | protected void initializeFilters() {
method initializeFinish (line 987) | protected void initializeFinish() {
method initializeInitializers (line 1002) | protected void initializeInitializers() {
method initializeServlet (line 1094) | protected void initializeServlet(DefaultServletEnvironment environment) {
method initializeServlets (line 1140) | protected void initializeServlets() {
method isDistributable (line 1161) | @Override
method isEmpty (line 1172) | private boolean isEmpty(String string) {
method isInitialized (line 1176) | @Override
method isMetadataComplete (line 1182) | @Override
method isPermanentlyUnavailable (line 1193) | private boolean isPermanentlyUnavailable(DefaultServletEnvironment env...
method isServicing (line 1201) | @Override
method linkRequestAndResponse (line 1206) | @Override
method log (line 1212) | @Override
method log (line 1217) | @Override
method removeAttribute (line 1222) | @Override
method removeServletMapping (line 1227) | @Override
method service (line 1232) | @Override
method setAttribute (line 1271) | @Override
method setClassLoader (line 1290) | @Override
method setContextPath (line 1295) | @Override
method setDefaultServlet (line 1301) | @Override
method setDistributable (line 1306) | @Override
method setEffectiveMajorVersion (line 1311) | @Override
method setEffectiveMinorVersion (line 1316) | @Override
method setInitParameter (line 1321) | @Override
method setJspConfigDescriptor (line 1337) | @Override
method setMetadataComplete (line 1342) | @Override
method setRequestCharacterEncoding (line 1347) | @Override
method setResponseCharacterEncoding (line 1352) | @Override
method setSessionTimeout (line 1357) | @Override
method setServletContextName (line 1366) | @Override
method setSessionTrackingModes (line 1371) | @Override
method setStatus (line 1378) | @Override
method setVirtualServerName (line 1383) | @Override
method setWebApplicationRequestMapper (line 1388) | @Override
method start (line 1393) | @Override
method stop (line 1406) | @Override
method unlinkRequestAndResponse (line 1419) | @Override
method verifyRequestResponseTypes (line 1432) | protected void verifyRequestResponseTypes(ServletRequest request, Serv...
method verifyState (line 1444) | protected void verifyState(Status desiredStatus, String message) {
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultWebApplicationBuilder.java
class DefaultWebApplicationBuilder (line 48) | public class DefaultWebApplicationBuilder {
method DefaultWebApplicationBuilder (line 93) | public DefaultWebApplicationBuilder() {
method build (line 101) | @SuppressWarnings("unchecked")
method directoryResource (line 173) | public DefaultWebApplicationBuilder directoryResource(String directory) {
method filter (line 185) | public DefaultWebApplicationBuilder filter(String name, String classNa...
method filter (line 197) | public DefaultWebApplicationBuilder filter(String name, Class<? extend...
method filter (line 209) | public DefaultWebApplicationBuilder filter(String name, Filter filter) {
method filterInitParam (line 222) | public DefaultWebApplicationBuilder filterInitParam(String filterName,...
method initParam (line 239) | public DefaultWebApplicationBuilder initParam(String name, String valu...
method servlet (line 251) | public DefaultWebApplicationBuilder servlet(String name, String classN...
method servlet (line 263) | public DefaultWebApplicationBuilder servlet(String name, Class<? exten...
method servlet (line 275) | public DefaultWebApplicationBuilder servlet(String name, Servlet servl...
method servletInitParam (line 288) | public DefaultWebApplicationBuilder servletInitParam(String servletNam...
method servletMapping (line 305) | public DefaultWebApplicationBuilder servletMapping(String servletName,...
method sessionTrackingModes (line 316) | public DefaultWebApplicationBuilder sessionTrackingModes(Set<SessionTr...
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultWebApplicationClassLoader.java
class DefaultWebApplicationClassLoader (line 45) | public class DefaultWebApplicationClassLoader extends DefaultResourceMan...
method DefaultWebApplicationClassLoader (line 50) | public DefaultWebApplicationClassLoader() {
method DefaultWebApplicationClassLoader (line 58) | public DefaultWebApplicationClassLoader(File baseDirectory) {
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultWebApplicationExtensionContext.java
class DefaultWebApplicationExtensionContext (line 43) | public class DefaultWebApplicationExtensionContext implements WebApplica...
method DefaultWebApplicationExtensionContext (line 63) | public DefaultWebApplicationExtensionContext() {
method add (line 73) | @Override
method add (line 90) | @Override
method configure (line 102) | public void configure(WebApplication webApplication) {
method remove (line 113) | @Override
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultWebApplicationInputStream.java
class DefaultWebApplicationInputStream (line 40) | public class DefaultWebApplicationInputStream extends WebApplicationInpu...
method DefaultWebApplicationInputStream (line 51) | public DefaultWebApplicationInputStream() {
method close (line 55) | @Override
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultWebApplicationManager.java
class DefaultWebApplicationManager (line 52) | public class DefaultWebApplicationManager implements WebApplicationManag...
method DefaultWebApplicationManager (line 127) | public DefaultWebApplicationManager() {
method getAnnotationManager (line 130) | @Override
method getAsyncManager (line 135) | @Override
method getDispatcherManager (line 140) | @Override
method getErrorPageManager (line 145) | @Override
method getHandlesTypesManager (line 150) | @Override
method getHttpSessionManager (line 155) | @Override
method getJspManager (line 160) | @Override
method getLocaleEncodingManager (line 165) | @Override
method getMultiPartManager (line 170) | @Override
method getObjectInstanceManager (line 175) | @Override
method getResourceManager (line 180) | @Override
method getSecurityManager (line 185) | @Override
method getServletRequestManager (line 190) | @Override
method getWelcomeFileManager (line 195) | @Override
method setAnnotationManager (line 200) | @Override
method setAsyncManager (line 205) | @Override
method setErrorPageManager (line 210) | @Override
method setHandlesTypesManager (line 215) | @Override
method setHttpSessionManager (line 220) | @Override
method setJspManager (line 225) | @Override
method setLocaleEncodingManager (line 230) | @Override
method setMultiPartManager (line 235) | @Override
method setObjectInstanceManager (line 240) | @Override
method setResourceManager (line 245) | @Override
method setSecurityManager (line 250) | @Override
method setServletRequestManager (line 255) | @Override
method setWelcomeFileManager (line 260) | @Override
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultWebApplicationOutputStream.java
class DefaultWebApplicationOutputStream (line 52) | public class DefaultWebApplicationOutputStream extends WebApplicationOut...
method DefaultWebApplicationOutputStream (line 98) | public DefaultWebApplicationOutputStream() {
method close (line 103) | @Override
method flush (line 115) | @Override
method flushBuffer (line 146) | @Override
method formatDateToGMT (line 168) | private String formatDateToGMT(long timestamp) {
method getBufferSize (line 173) | @Override
method getOutputStream (line 178) | @Override
method getWriteListener (line 183) | @Override
method getResponse (line 188) | @Override
method isReady (line 193) | @Override
method resetBuffer (line 203) | @Override
method run (line 211) | @Override
method setBufferSize (line 238) | @Override
method setOutputStream (line 246) | @Override
method setResponse (line 251) | @Override
method setWriteListener (line 256) | @Override
method write (line 276) | @Override
method writeContentLanguage (line 336) | private void writeContentLanguage() throws IOException {
method writeContentType (line 353) | private void writeContentType() throws IOException {
method writeCookie (line 381) | @SuppressWarnings({"removal"})
method writeCookies (line 436) | private void writeCookies() throws IOException {
method writeHeader (line 451) | private void writeHeader(String name) throws IOException {
method writeHeaders (line 475) | public void writeHeaders() throws IOException {
method writeStatusLine (line 493) | public void writeStatusLine() throws IOException {
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultWebApplicationPrintWriter.java
class DefaultWebApplicationPrintWriter (line 40) | public class DefaultWebApplicationPrintWriter extends WebApplicationPrin...
method DefaultWebApplicationPrintWriter (line 59) | public DefaultWebApplicationPrintWriter(WebApplicationResponse respons...
method write (line 64) | @Override
method write (line 73) | @Override
method write (line 80) | @Override
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultWebApplicationRequest.java
class DefaultWebApplicationRequest (line 88) | public class DefaultWebApplicationRequest implements WebApplicationReque...
method DefaultWebApplicationRequest (line 343) | public DefaultWebApplicationRequest() {
method addHeader (line 377) | public void addHeader(String name, String value) {
method addOrRemoveSlashIfNeeded (line 387) | private String addOrRemoveSlashIfNeeded(String string) {
method authenticate (line 398) | @Override
method changeSessionId (line 407) | @Override
method coalesce (line 415) | @SafeVarargs
method getAsyncContext (line 426) | @Override
method getAttribute (line 434) | @Override
method getAttributeNames (line 439) | @Override
method getAuthType (line 444) | @Override
method getCharacterEncoding (line 449) | @Override
method getContentLength (line 454) | @Override
method getContentLengthLong (line 459) | @Override
method getContentType (line 464) | @Override
method getContextPath (line 469) | @Override
method getCookies (line 474) | @Override
method getCurrentSessionId (line 489) | public String getCurrentSessionId() {
method getDateHeader (line 493) | @Override
method getDispatcherType (line 498) | @Override
method getHeader (line 503) | @Override
method getHeaderNames (line 508) | @Override
method getHeaders (line 513) | @Override
method getHttpServletMapping (line 518) | @Override
method getInputStream (line 526) | @Override
method getIntHeader (line 539) | @Override
method getLocalAddr (line 544) | @Override
method getLocalName (line 549) | @Override
method getLocalPort (line 554) | @Override
method getLocale (line 559) | @SuppressWarnings("deprecation")
method getLocales (line 577) | @SuppressWarnings("deprecation")
method getMethod (line 600) | @Override
method getModifiableParameterMap (line 605) | @Override
method getMultipartConfig (line 610) | @Override
method getOriginalServletPath (line 620) | public String getOriginalServletPath() {
method getParameter (line 624) | @Override
method getParameterMap (line 634) | @Override
method getParameterNames (line 640) | @Override
method getParameterValues (line 646) | @Override
method getParametersFromRequest (line 655) | protected void getParametersFromRequest() {
method getPart (line 736) | @Override
method getParts (line 743) | @Override
method getPathInfo (line 750) | @Override
method getPathTranslated (line 755) | @Override
method getProtocol (line 760) | @Override
method getProtocolRequestId (line 765) | @Override
method getQueryString (line 770) | @Override
method getReader (line 775) | @Override
method getRemoteAddr (line 794) | @Override
method getRemoteHost (line 799) | @Override
method getRemotePort (line 804) | @Override
method getRemoteUser (line 809) | @Override
method getRequestDispatcher (line 818) | @Override
method getRequestId (line 829) | @Override
method getRequestURI (line 834) | @Override
method getRequestURIWithQueryString (line 845) | public String getRequestURIWithQueryString() {
method getRequestURL (line 851) | @Override
method getRequestedSessionId (line 863) | @Override
method getScheme (line 868) | @Override
method getServerName (line 873) | @Override
method getServerPort (line 878) | @Override
method getServletConnection (line 883) | @Override
method getServletContext (line 888) | @Override
method getServletPath (line 893) | @Override
method getSession (line 898) | @Override
method getSession (line 903) | @Override
method getUpgradeHandler (line 925) | @Override
method getUserPrincipal (line 930) | @Override
method getWebApplicationInputStream (line 935) | @Override
method isAsyncStarted (line 940) | @Override
method isAsyncSupported (line 945) | @Override
method isRequestedSessionIdFromCookie (line 950) | @Override
method isRequestedSessionIdFromURL (line 955) | @Override
method isRequestedSessionIdValid (line 960) | @Override
method isSecure (line 970) | @Override
method isSupported (line 975) | private boolean isSupported(String csn) {
method isUpgraded (line 983) | @Override
method isUserInRole (line 988) | @Override
method login (line 997) | @Override
method logout (line 1006) | @Override
method mergeQueryFromAttributes (line 1021) | private String mergeQueryFromAttributes() {
method removeAttribute (line 1034) | @Override
method setAsyncStarted (line 1048) | public void setAsyncStarted(boolean asyncStarted) {
method setAsyncSupported (line 1052) | @Override
method setAttribute (line 1057) | @Override
method setAuthType (line 1083) | @Override
method setCharacterEncoding (line 1088) | @Override
method setContentLength (line 1109) | public void setContentLength(int contentLength) {
method setContentType (line 1120) | public void setContentType(String contentType) {
method setContextPath (line 1143) | @Override
method setCookies (line 1153) | public void setCookies(Cookie[] cookies) {
method setCurrentSessionId (line 1169) | public void setCurrentSessionId(String currentSessionId) {
method setDispatcherType (line 1173) | @Override
method setHeader (line 1184) | public void setHeader(String name, String value) {
method setHttpServletMapping (line 1203) | public void setHttpServletMapping(HttpServletMapping httpServletMappin...
method setLocalAddr (line 1212) | public void setLocalAddr(String localAddress) {
method setLocalName (line 1221) | public void setLocalName(String localName) {
method setLocalPort (line 1230) | public void setLocalPort(int localPort) {
method setMethod (line 1239) | public void setMethod(String method) {
method setMultipartConfig (line 1248) | public void setMultipartConfig(MultipartConfigElement multipartConfig) {
method setOriginalServletPath (line 1257) | public void setOriginalServletPath(String originalServletPath) {
method setParameter (line 1267) | public void setParameter(String name, String[] values) {
method setPathInfo (line 1271) | @Override
method setProtocol (line 1281) | public void setProtocol(String protocol) {
method setQueryString (line 1285) | @Override
method setRemoteAddr (line 1295) | public void setRemoteAddr(String remoteAddr) {
method setRemoteHost (line 1304) | public void setRemoteHost(String remoteHost) {
method setRemotePort (line 1313) | public void setRemotePort(int remotePort) {
method setRequestedSessionId (line 1317) | @Override
method setRequestedSessionIdFromCookie (line 1327) | public void setRequestedSessionIdFromCookie(boolean requestedSessionId...
method setRequestedSessionIdFromURL (line 1336) | public void setRequestedSessionIdFromURL(boolean requestedSessionIdFro...
method setScheme (line 1345) | public void setScheme(String scheme) {
method setServerName (line 1354) | public void setServerName(String serverName) {
method setServerPort (line 1363) | public void setServerPort(int serverPort) {
method setServletPath (line 1367) | @Override
method setUpgraded (line 1377) | public void setUpgraded(boolean upgraded) {
method setUserPrincipal (line 1381) | @Override
method setWebApplication (line 1386) | @Override
method setWebApplicationInputStream (line 1391) | @Override
method startAsync (line 1397) | @Override
method startAsync (line 1406) | @Override
method unwrap (line 1448) | public static <T> T unwrap(ServletRequest request, Class<T> type) {
method upgrade (line 1456) | @SuppressWarnings("unchecked")
method verifyMultipartFormData (line 1473) | protected void verifyMultipartFormData() throws ServletException {
method toString (line 1479) | @Override
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultWebApplicationRequestBuilder.java
class DefaultWebApplicationRequestBuilder (line 37) | public class DefaultWebApplicationRequestBuilder {
method DefaultWebApplicationRequestBuilder (line 57) | public DefaultWebApplicationRequestBuilder() {
method build (line 65) | public DefaultWebApplicationRequest build() {
method queryString (line 79) | public DefaultWebApplicationRequestBuilder queryString(String queryStr...
method servletPath (line 90) | public DefaultWebApplicationRequestBuilder servletPath(String servletP...
method webApplication (line 101) | public DefaultWebApplicationRequestBuilder webApplication(WebApplicati...
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultWebApplicationRequestMapper.java
class DefaultWebApplicationRequestMapper (line 52) | public class DefaultWebApplicationRequestMapper implements WebApplicatio...
method DefaultWebApplicationRequestMapper (line 72) | public DefaultWebApplicationRequestMapper() {
method addFilterMapping (line 75) | @Override
method addFilterMappingBeforeExisting (line 80) | @Override
method addServletMapping (line 85) | @Override
method removeServletMapping (line 118) | @Override
method findFilterMappings (line 129) | @Override
method doAddFilterMapping (line 167) | private Set<String> doAddFilterMapping(Set<DispatcherType> dispatcherT...
method doAddFilterMappingBeforeExisting (line 184) | private Set<String> doAddFilterMappingBeforeExisting(Set<DispatcherTyp...
method findServletExactMatch (line 207) | private DefaultWebApplicationRequestMapping findServletExactMatch(Stri...
method findServletExtensionMatch (line 229) | private DefaultWebApplicationRequestMapping findServletExtensionMatch(...
method findServletMapping (line 258) | @Override
method findServletPrefixMatch (line 279) | private DefaultWebApplicationRequestMapping findServletPrefixMatch(Str...
method findServletPrefixMatch (line 304) | private DefaultWebApplicationRequestMapping findServletPrefixMatch(Str...
method getServletMappings (line 333) | @Override
method getServletName (line 347) | @Override
method getDefaultServlet (line 352) | @Override
method isEmpty (line 357) | private boolean isEmpty(Collection<?> collection) {
method isEmpty (line 361) | private boolean isEmpty(String[] strings) {
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultWebApplicationRequestMapping.java
class DefaultWebApplicationRequestMapping (line 37) | public class DefaultWebApplicationRequestMapping implements WebApplicati...
method DefaultWebApplicationRequestMapping (line 65) | public DefaultWebApplicationRequestMapping(String pattern) {
method getMatchValue (line 73) | @Override
method getPattern (line 81) | @Override
method isExact (line 91) | @Override
method isExtension (line 101) | @Override
method setExact (line 111) | public void setExact(boolean exact) {
method setExtension (line 120) | public void setExtension(boolean extension) {
method setMatchValue (line 129) | public void setMatchValue(String matchValue) {
method setPattern (line 138) | public void setPattern(String pattern) {
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultWebApplicationResponse.java
class DefaultWebApplicationResponse (line 62) | public class DefaultWebApplicationResponse implements WebApplicationResp...
method DefaultWebApplicationResponse (line 182) | public DefaultWebApplicationResponse() {
method addCookie (line 207) | @Override
method addDateHeader (line 216) | @Override
method addHeader (line 221) | @Override
method addIntHeader (line 243) | @Override
method closeAsyncResponse (line 248) | @Override
method containsHeader (line 253) | @Override
method encodeRedirectURL (line 258) | @Override
method encodeURL (line 267) | @Override
method flushBuffer (line 276) | @Override
method formatDateToGMT (line 296) | private String formatDateToGMT(long timestamp) {
method getBufferSize (line 301) | @Override
method getCharacterEncoding (line 306) | @Override
method getContentLanguage (line 315) | @Override
method getContentLength (line 320) | @Override
method getContentType (line 325) | @Override
method getCookies (line 334) | @Override
method getHeader (line 339) | @Override
method getHeaderNames (line 344) | @Override
method getHeaders (line 354) | @Override
method getLocale (line 364) | @Override
method getOutputStream (line 369) | @Override
method getResponseCloser (line 378) | @Override
method getStatus (line 383) | @Override
method getStatusMessage (line 388) | @Override
method getTrailerFields (line 393) | @Override
method getWebApplication (line 398) | @Override
method getWebApplicationOutputStream (line 403) | @Override
method getWriter (line 408) | @Override
method isBodyOnly (line 426) | @Override
method isBufferResetting (line 431) | @Override
method isCommitted (line 436) | @Override
method isInclude (line 446) | private boolean isInclude() {
method isWriterAcquired (line 454) | @Override
method reset (line 459) | @Override
method resetBuffer (line 479) | @Override
method sendError (line 501) | @Override
method sendError (line 516) | @Override
method sendRedirect (line 533) | @Override
method sendRedirect (line 538) | @SuppressWarnings("deprecation")
method setBodyOnly (line 567) | @Override
method setBufferSize (line 572) | @Override
method setCharacterEncoding (line 578) | @Override
method setCommitted (line 592) | @Override
method setContentLength (line 597) | @Override
method setContentLengthLong (line 602) | @Override
method setContentType (line 614) | @Override
method setDateHeader (line 643) | @Override
method setErrorMessageAttribute (line 651) | private void setErrorMessageAttribute() {
method setHeader (line 660) | @Override
method setIntHeader (line 679) | @Override
method setLocale (line 684) | @Override
method setResponseCloser (line 708) | @Override
method setStatus (line 713) | @Override
method setTrailerFields (line 726) | @Override
method setWebApplication (line 741) | @Override
method setWebApplicationOutputStream (line 746) | @Override
method verifyNotCommitted (line 756) | protected void verifyNotCommitted(String methodName) {
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultWebApplicationResponseBuilder.java
class DefaultWebApplicationResponseBuilder (line 38) | public class DefaultWebApplicationResponseBuilder {
method DefaultWebApplicationResponseBuilder (line 58) | public DefaultWebApplicationResponseBuilder() {
method bodyOnly (line 67) | public DefaultWebApplicationResponseBuilder bodyOnly(boolean bodyOnly) {
method build (line 77) | public DefaultWebApplicationResponse build() {
method underlyingOutputStream (line 95) | public DefaultWebApplicationResponseBuilder underlyingOutputStream(Out...
method webApplication (line 106) | public DefaultWebApplicationResponseBuilder webApplication(WebApplicat...
FILE: core/impl/src/main/java/cloud/piranha/core/impl/DefaultWebConnection.java
class DefaultWebConnection (line 42) | public class DefaultWebConnection implements WebConnection {
method DefaultWebConnection (line 60) | public DefaultWebConnection(
method getInputStream (line 66) | @Override
method getOutputStream (line 71) | @Override
method close (line 76) | @Override
FILE: core/impl/src/main/java/cloud/piranha/core/impl/WarFileExtractor.java
class WarFileExtractor (line 44) | public class WarFileExtractor {
method WarFileExtractor (line 54) | private WarFileExtractor() {
method extractWarFile (line 63) | public static void extractWarFile(File warFile, File directory) {
method extractZipInputStream (line 93) | private static void extractZipInputStream(ZipInputStream zipInput, Str...
FILE: core/impl/src/test/java/cloud/piranha/core/impl/AsyncContextTest.java
class AsyncContextTest (line 54) | class AsyncContextTest {
method createWebApplication (line 56) | private WebApplication createWebApplication() {
method createWebApplicationRequest (line 60) | private WebApplicationRequest createWebApplicationRequest() {
method createWebApplicationResponse (line 64) | private WebApplicationResponse createWebApplicationResponse() {
method testAddListener (line 71) | @Test
method testComplete (line 106) | @Test
method testCreateListener (line 125) | @Test
method testCreateListener2 (line 143) | @Test
method testDispatch (line 162) | @Test
method testGetRequest (line 191) | @Test
method testGetResponse (line 207) | @Test
method testGetTimeout (line 223) | @Test
method testHasOriginalRequestAndResponse (line 239) | @Test
method testSetTimeout (line 257) | @Test
class TestCreateListenerListener (line 274) | public static class TestCreateListenerListener implements AsyncListener {
method TestCreateListenerListener (line 279) | public TestCreateListenerListener() {
method onComplete (line 282) | @Override
method onTimeout (line 286) | @Override
method onError (line 290) | @Override
method onStartAsync (line 294) | @Override
class TestCreateListener2Listener (line 302) | public static class TestCreateListener2Listener implements AsyncListen...
method TestCreateListener2Listener (line 309) | public TestCreateListener2Listener() throws ServletException {
method onComplete (line 313) | @Override
method onTimeout (line 317) | @Override
method onError (line 321) | @Override
method onStartAsync (line 325) | @Override
FILE: core/impl/src/test/java/cloud/piranha/core/impl/CookieParserTest.java
class CookieParserTest (line 37) | class CookieParserTest {
class Netscape (line 77) | @Nested
method parseSingleCookie (line 80) | @Test
method parseMultipleCookies (line 91) | @Test
FILE: core/impl/src/test/java/cloud/piranha/core/impl/DefaultAnnotationManagerTest.java
class DefaultAnnotationManagerTest (line 41) | class DefaultAnnotationManagerTest {
method testAddAnnotatedClass (line 47) | @Test
method testAddAnnotatedClass2 (line 61) | @Test
method testAddAnnotation (line 78) | @Test
method testAddInstance (line 92) | @Test
method testGetAnnotations (line 106) | @Test
method testGetAnnotations2 (line 115) | @Test
method testGetInstances (line 124) | @Test
method testGetInstances2 (line 133) | @Test
method testGetAnnotationsByTarget (line 142) | @Test
method testGetAnnotatedClass (line 151) | @Test
method testGetAnnotatedClasses (line 160) | @Test
method testGetAnnotatedClasses2 (line 169) | @Test
FILE: core/impl/src/test/java/cloud/piranha/core/impl/DefaultErrorPageManagerTest.java
class DefaultErrorPageManagerTest (line 37) | class DefaultErrorPageManagerTest {
method testPagesByCode (line 38) | @Test
method testPagesByCode2 (line 58) | @Test
method testPagesByCode3 (line 75) | @Test
method testPagesByException (line 92) | @Test
method testPagesByException2 (line 99) | @Test
method testPagesByException3 (line 106) | @Test
method testPagesByException4 (line 113) | @Test
FILE: core/impl/src/test/java/cloud/piranha/core/impl/DefaultFilterEnvironmentTest.java
class DefaultFilterEnvironmentTest (line 52) | class DefaultFilterEnvironmentTest {
method createNoopFilter (line 59) | private Filter createNoopFilter() {
method createWebApplication (line 78) | private WebApplication createWebApplication() {
method testGetName (line 85) | @Test
method testGetClassName (line 97) | @Test
method testGetInitParameterNames (line 110) | @Test
method testGetInitParameters (line 125) | @Test
method testGetUrlPatternMappings (line 137) | @Test
method testSetInitParameters (line 149) | @Test
method testSetInitParameters2 (line 162) | @Test
method testSetInitParameters3 (line 176) | @Test
method testSetInitParameters4 (line 190) | @Test
method testSetInitParameters5 (line 204) | @Test
class TestGetClassNameFilter (line 219) | public class TestGetClassNameFilter implements Filter {
method doFilter (line 221) | @Override
FILE: core/impl/src/test/java/cloud/piranha/core/impl/DefaultHttpHeaderManagerTest.java
class DefaultHttpHeaderManagerTest (line 41) | class DefaultHttpHeaderManagerTest {
method testAddHeader (line 46) | @Test
method testAddHeader2 (line 56) | @Test
method testContainsHeader (line 73) | @Test
method testGetDateHeader (line 84) | @Test
method testGetDateHeader2 (line 95) | @Test
method testGetDateHeader3 (line 104) | @Test
method testGetHeader (line 114) | @Test
method testGetHeaderNames (line 123) | @Test
method testGetHeaders (line 135) | @Test
method testGetIntHeader (line 145) | @Test
method testGetIntHeader2 (line 155) | @Test
method testGetIntHeader3 (line 165) | @Test
FILE: core/impl/src/test/java/cloud/piranha/core/impl/DefaultPiranhaConfigurationTest.java
class DefaultPiranhaConfigurationTest (line 40) | public class DefaultPiranhaConfigurationTest {
method testGetBoolean (line 45) | @Test
method testGetClass (line 57) | @Test
method testGetFile (line 69) | @Test
method testGetInteger (line 81) | @Test
method testGetLong (line 93) | @Test
method testGetString (line 105) | @Test
FILE: core/impl/src/test/java/cloud/piranha/core/impl/DefaultPushBuilderTest.java
class DefaultPushBuilderTest (line 43) | public class DefaultPushBuilderTest {
method testAddHeader (line 48) | @Test
method testGetHeaderNames (line 61) | @Test
method testMethod (line 74) | @Test
method testPath (line 85) | @Test
method testPush (line 96) | @Test
method testQueryString (line 109) | @Test
method testSessionId (line 120) | @Test
method testSetHeader (line 131) | @Test
FILE: core/impl/src/test/java/cloud/piranha/core/impl/DefaultSecurityManagerTest.java
class DefaultSecurityManagerTest (line 38) | public class DefaultSecurityManagerTest {
method testGetSecurityConstraints (line 43) | @Test
FILE: core/impl/src/test/java/cloud/piranha/core/impl/DefaultServletEnvironmentTest.java
class DefaultServletEnvironmentTest (line 43) | class DefaultServletEnvironmentTest {
method testGetLoadOnStartup (line 48) | @Test
method testSetAsyncSupported (line 59) | @Test
method testMultipartConfig (line 71) | @Test
FILE: core/impl/src/test/java/cloud/piranha/core/impl/DefaultWebApplicationBuilderTest.java
class DefaultWebApplicationBuilderTest (line 50) | class DefaultWebApplicationBuilderTest {
method testBuild (line 55) | @Test
method testDirectoryResource (line 63) | @Test
method testFilter (line 75) | @Test
method testFilter2 (line 87) | @Test
method testFilter3 (line 99) | @Test
method testFilterInitParam (line 111) | @Test
method testInitParam (line 124) | @Test
method testServlet (line 135) | @Test
method testServlet2 (line 147) | @Test
method testServlet3 (line 159) | @Test
method testServletInitParam (line 171) | @Test
method testServletMapping (line 184) | @Test
class TestFilter (line 197) | public class TestFilter implements Filter {
method doFilter (line 199) | @Override
class TestServlet (line 208) | public class TestServlet extends HttpServlet {
FILE: core/impl/src/test/java/cloud/piranha/core/impl/DefaultWebApplicationClassLoaderTest.java
class DefaultWebApplicationClassLoaderTest (line 40) | class DefaultWebApplicationClassLoaderTest {
method testLoadClass (line 47) | @Test
method testLoadClass2 (line 58) | @Test
FILE: core/impl/src/test/java/cloud/piranha/core/impl/DefaultWebApplicationExtensionContextTest.java
class DefaultWebApplicationExtensionContextTest (line 50) | class DefaultWebApplicationExtensionContextTest {
method testAdd (line 55) | @Test
method testRemove (line 68) | @Test
class TestExtension (line 81) | public static class TestExtension implements WebApplicationExtension {
method configure (line 83) | @Override
class Test2Extension (line 92) | public static class Test2Extension implements WebApplicationExtension {
method extend (line 99) | @Override
class Test3Extension (line 108) | public static class Test3Extension implements WebApplicationExtension {
method extend (line 115) | @Override
class TestInitializer (line 125) | public static class TestInitializer implements ServletContainerInitial...
method TestInitializer (line 127) | public TestInitializer() {
method onStartup (line 130) | @Override
FILE: core/impl/src/test/java/cloud/piranha/core/impl/DefaultWebApplicationManagerTest.java
class DefaultWebApplicationManagerTest (line 40) | class DefaultWebApplicationManagerTest {
method testGetAnnotationManager (line 45) | @Test
method testGetAsyncManager (line 56) | @Test
method testGetDispatcherManager (line 67) | @Test
method testGetErrorPageManager (line 76) | @Test
method testGetHttpSessionManager (line 87) | @Test
method testGetHttpSessionManager2 (line 97) | @Test
method testGetJspManager (line 106) | @Test
method testGetLocaleEncodingManager (line 117) | @Test
method testGetMultiPartManager (line 128) | @Test
method testGetObjectInstanceManager (line 139) | @Test
method testGetResourceManager (line 150) | @Test
method testGetSecurityManager (line 161) | @Test
method testGetServletRequestManager (line 172) | @Test
method testGetWelcomeFileManager (line 183) | @Test
FILE: core/impl/src/test/java/cloud/piranha/core/impl/DefaultWebApplicationOutputStreamTest.java
class DefaultWebApplicationOutputStreamTest (line 43) | class DefaultWebApplicationOutputStreamTest {
method testIsReady (line 50) | @Test
method testWriteListener (line 60) | @Test
FILE: core/impl/src/test/java/cloud/piranha/core/impl/DefaultWebApplicationRequestMapperTest.java
class DefaultWebApplicationRequestMapperTest (line 45) | class DefaultWebApplicationRequestMapperTest {
method testAddServletMapping2 (line 54) | @Test
method testAddServletMapping3 (line 69) | @Test
method testAddServletMapping4 (line 84) | @Test
method testAddServletMapping5 (line 98) | @Test
method testFindServletMapping (line 112) | @Test
method testFindExactServletMatch2 (line 125) | @Test
method testFindExtensionServletMatch (line 149) | @Test
method testFindPrefixServletMatch3 (line 176) | @Test
method testFindPrefixServletMatch4 (line 203) | @Test
method testFindPrefixServletMatch5 (line 225) | @Test
method testFindExtensionServletMatch2 (line 252) | @Test
method testFindPrefixServletMatch (line 279) | @Test
method testFindPrefixServletMatch2 (line 307) | @Test
method testAddFilterMapping (line 332) | @Test
method testAddFilterMapping2 (line 344) | @Test
method testAddFilterMapping3 (line 356) | @Test
method testAddFilterMapping4 (line 368) | @Test
method testAddFilterMapping5 (line 382) | @Test
method testAddServletMapping (line 396) | @Test
FILE: core/impl/src/test/java/cloud/piranha/core/impl/DefaultWebApplicationRequestMappingTest.java
class DefaultWebApplicationRequestMappingTest (line 38) | class DefaultWebApplicationRequestMappingTest {
method testGetMatchValue (line 43) | @Test
method testGetPattern (line 54) | @Test
method testIsExact (line 63) | @Test
method testIsExtension (line 74) | @Test
method testSetPattern (line 85) | @Test
FILE: core/impl/src/test/java/cloud/piranha/core/impl/DefaultWebApplicationRequestTest.java
class DefaultWebApplicationRequestTest (line 67) | class DefaultWebApplicationRequestTest {
method testAuthenticate (line 72) | @Test
method testAuthenticate2 (line 88) | @Test
method testGetAsyncContext (line 104) | @Test
method testGetAsyncContext2 (line 114) | @Test
method testGetAttribute (line 130) | @Test
method testGetAttributeNames (line 142) | @Test
method testGetAuthType (line 159) | @Test
method testGetCharacterEncoding (line 170) | @Test
method testGetContentLength (line 181) | @Test
method testGetContentLength2 (line 190) | @Test
method testGetContentLengthLong (line 201) | @Test
method testGetContentType (line 210) | @Test
method testGetContentType2 (line 219) | @Test
method testGetContextPath (line 230) | @Test
method testGetCookies (line 239) | @Test
method testGetDateHeader (line 248) | @Test
method testGetDispatcherType (line 257) | @Test
method testGetHeader (line 266) | @Test
method testGetHeaderNames (line 275) | @Test
method testGetHeaders (line 284) | @Test
method testGetHttpServletMapping (line 293) | @Test
method testGetInputStream (line 304) | @Test
method testGetInputStream2 (line 315) | @Test
method testGetIntHeader (line 326) | @Test
method testGetLocalAddr (line 335) | @Test
method testGetLocalName (line 344) | @Test
method testGetLocalPort (line 353) | @Test
method testGetLocale (line 362) | @Test
method testGetLocale2 (line 372) | @Test
method testGetLocales (line 381) | @Test
method testGetLocales2 (line 391) | @Test
method testGetMethod (line 400) | @Test
method testGetMultipartConfig (line 409) | @Test
method testGetParameter (line 418) | @Test
method testGetParameterMap (line 427) | @Test
method testGetParameterMap2 (line 441) | @Test
method testGetParameterMap3 (line 455) | @Test
method testGetParameterNames (line 464) | @Test
method testGetParameterValues (line 473) | @Test
method testGetPart (line 482) | @Test
method testGetPart2 (line 495) | @Test
method testGetPart3 (line 507) | @Test
method testGetParts (line 520) | @Test
method testGetPathInfo (line 531) | @Test
method testGetPathTranslated (line 540) | @Test
method testGetProtocol (line 549) | @Test
method testGetProtocolRequestId (line 558) | @Test
method testGetQueryString (line 567) | @Test
method testGetReader (line 578) | @Test
method testGetReader2 (line 589) | @Test
method testGetRemoteAddr (line 600) | @Test
method testGetRemoteHost (line 609) | @Test
method testGetRemotePort (line 618) | @Test
method testGetRemoteUser (line 627) | @Test
method testGetRequestId (line 636) | @Test
method testGetRequestURI (line 645) | @Test
method testGetRequestURL (line 654) | @Test
method testGetRequestedSessionId (line 663) | @Test
method testGetScheme (line 672) | @Test
method testGetServerName (line 681) | @Test
method testGetServerPort (line 690) | @Test
method testGetServletConnection (line 699) | @Test
method testGetServletContext (line 708) | @Test
method testGetServletPath (line 719) | @Test
method testGetTrailerFields (line 728) | @Test
method testGetUpgradeHandler (line 738) | @Test
method testGetUserPrincipal (line 747) | @Test
method testIsAsyncStarted (line 756) | @Test
method testIsAsyncSupported (line 765) | @Test
method testIsSecure (line 774) | @Test
method testIsSecure2 (line 783) | @Test
method testIsTrailerFieldsReady (line 793) | @Test
method testIsUpgraded (line 802) | @Test
method testIsUserInRole (line 811) | @Test
method testLogin (line 822) | @Test
method testLogout (line 837) | @Test
method testNewPushBuilder (line 855) | @SuppressWarnings("deprecation")
method testRemoveAttribute (line 865) | @Test
method testSetAttribute (line 879) | @Test
method testSetAuthType (line 891) | @Test
method testSetCharacterEncoding (line 905) | @Test
method testSetCharacterEncoding2 (line 918) | @Test
method testSetCharacterEncoding3 (line 931) | @Test
method testSetCharacterEncoding4 (line 942) | @Test
method testSetContextPath (line 952) | @Test
method testSetCookies (line 962) | @Test
method testSetDispatcherType (line 979) | @Test
method testSetLocalAddr (line 989) | @Test
method testSetLocalName (line 1000) | @Test
method testSetLocalPort (line 1011) | @Test
method testSetProtocol (line 1022) | @Test
method testSetRemoteAddr (line 1033) | @Test
method testSetRemoteHost (line 1044) | @Test
method testSetRemotePort (line 1055) | @Test
method testSetServerName (line 1066) | @Test
method testSetServerPort (line 1077) | @Test
method testSetServletPath (line 1088) | @Test
method testSetUserPrincipal (line 1098) | @Test
method testSetWebApplication (line 1110) | @Test
method testStartAsync (line 1121) | @Test
method testStartAsync2 (line 1130) | @Test
method testStartAsync3 (line 1142) | @Test
method testStartAsync4 (line 1157) | @Test
method testUpgrade (line 1173) | @Test
method testUpgrade2 (line 1212) | @Test
method testUpgrade3 (line 1221) | @Test
class TestUpgrade2HttpUpgradeHandler (line 1231) | public static class TestUpgrade2HttpUpgradeHandler implements HttpUpgr...
method TestUpgrade2HttpUpgradeHandler (line 1236) | public TestUpgrade2HttpUpgradeHandler() {
method destroy (line 1239) | @Override
method init (line 1243) | @Override
class TestUpgrade3HttpUpgradeHandler (line 1260) | public static class TestUpgrade3HttpUpgradeHandler implements HttpUpgr...
method TestUpgrade3HttpUpgradeHandler (line 1267) | public TestUpgrade3HttpUpgradeHandler() throws IllegalAccessException {
method init (line 1271) | @Override
method destroy (line 1275) | @Override
class TestUpgradeHttpUpgradeHandler (line 1283) | public static class TestUpgradeHttpUpgradeHandler implements HttpUpgra...
method TestUpgradeHttpUpgradeHandler (line 1288) | public TestUpgradeHttpUpgradeHandler() {
method init (line 1291) | @Override
method destroy (line 1295) | @Override
class TestUpgradeReadListener (line 1303) | public static class TestUpgradeReadListener implements ReadListener {
method TestUpgradeReadListener (line 1326) | public TestUpgradeReadListener(ServletInputStream inputStream, Servl...
method onDataAvailable (line 1331) | @Override
method onAllDataRead (line 1348) | @Override
method onError (line 1357) | @Override
FILE: core/impl/src/test/java/cloud/piranha/core/impl/DefaultWebApplicationResponseTest.java
class DefaultWebApplicationResponseTest (line 55) | class DefaultWebApplicationResponseTest {
method testAddCookie (line 60) | @Test
method testAddDateHeader (line 70) | @Test
method testAddHeader (line 85) | @Test
method testAddIntHeader (line 102) | @Test
method testAddIntHeader2 (line 117) | @Test
method testCloseAsyncResponse (line 137) | @Test
method testContainsHeader (line 148) | @Test
method testEncodeRedirectUrl (line 164) | @Test
method testEncodeUrl (line 175) | @Test
method testFlushBuffer (line 186) | @Test
method testFlushBuffer2 (line 201) | @Test
method testGetBufferSize (line 218) | @Test
method testGetCharacterEncoding (line 227) | @Test
method testGetContentLanguage (line 243) | @Test
method testGetContentType (line 252) | @Test
method testGetContentType2 (line 268) | @Test
method testGetCookies (line 285) | @Test
method testGetHeader (line 295) | @Test
method testGetHeaderNames (line 310) | @Test
method testGetHeaders (line 327) | @Test
method testGetLocale (line 344) | @Test
method testGetOutputStream (line 357) | @Test
method testGetOutputStream2 (line 368) | @Test
method testGetResponseCloser (line 384) | @Test
method testGetStatus (line 393) | @Test
method testGetStatusMessage (line 402) | @Test
method testGetTrailerFields (line 411) | @Test
method testGetWebApplication (line 420) | @Test
method testGetWebApplicationOutputStream (line 429) | @Test
method testGetWriter (line 440) | @Test
method testGetWriter2 (line 456) | @Test
method testIsBodyOnly (line 467) | @Test
method testIsBufferResetting (line 478) | @Test
method testIsCommitted (line 489) | @Test
method testReset (line 500) | @Test
method testReset2 (line 511) | @Test
method testResetBuffer (line 531) | @Test
method testSendError (line 555) | @Test
method testSendError2 (line 574) | @Test
method testSendRedirect (line 592) | @Test
method testSendRedirect2 (line 623) | @Test
method testRedirect3 (line 664) | @Test
method testSendRedirect4 (line 693) | @Test
method testSendRedirect5 (line 723) | @Test
method testSetBodyOnly (line 766) | @Test
method testSetBufferSize (line 779) | @Test
method testSetCharacterEncoding (line 791) | @Test
method testSetCharacterEncoding2 (line 810) | @Test
method testSetCharacterEncoding3 (line 829) | @Test
method testSetCharacterEncoding4 (line 845) | @Test
method testSetCharacterEncoding5 (line 864) | @Test
method testSetCharacterEncoding6 (line 895) | @SuppressWarnings("deprecation")
method testSetCommitted (line 911) | @Test
method testSetContentLength (line 922) | @Test
method testSetContentLengthLong (line 937) | @Test
method testSetContentType (line 952) | @Test
method testSetContentType2 (line 967) | @Test
method testSetContentType3 (line 983) | @Test
method testSetDateHeader (line 999) | @Test
method testSetDateHeader2 (line 1016) | @Test
method testSetHeader (line 1031) | @Test
method testSetHeader2 (line 1048) | @Test
method testSetHeader3 (line 1064) | @Test
method testSetIntHeader (line 1079) | @Test
method testSetLocale (line 1094) | @Test
method testSetResponseCloser (line 1104) | @Test
method testSetStatus (line 1115) | @Test
method testSetTrailerFields (line 1130) | @Test
method testSetWebApplication (line 1145) | @Test
method testSetWebAplicationOutputStream (line 1156) | @Test
method testVerifyNotCommitted (line 1226) | @Test
FILE: core/impl/src/test/java/cloud/piranha/core/impl/DefaultWebApplicationTest.java
class DefaultWebApplicationTest (line 83) | class DefaultWebApplicationTest {
method testAddFilter (line 88) | @Test
method testAddFilter2 (line 98) | @Test
method testAddFilter3 (line 123) | @Test
method testAddFilter4 (line 176) | @Test
method testAddFilter5 (line 201) | @Test
method testAddFilter6 (line 213) | @Test
method testAddFilter7 (line 222) | @Test
method testAddFilter8 (line 234) | @Test
method testAddFilter9 (line 245) | @Test
method testAddFilter10 (line 256) | @Test
method testAddFilter11 (line 267) | @Test
method testAddFilter12 (line 277) | @Test
method testAddFilter13 (line 287) | @Test
method testAddFilterMapping (line 307) | @Test
method testAddInitializer (line 333) | @Test
method testAddInitializer2 (line 346) | @Test
method testAddInitializer3 (line 357) | @Test
method testAddJspFile (line 375) | @Test
method testAddJspFile2 (line 384) | @Test
method testAddJspFile3 (line 396) | @Test
method testAddMimeType (line 406) | @Test
method testAddListener (line 417) | @Test
method testAddListener2 (line 428) | @Test
method testAddListener3 (line 445) | @Test
method testAddListener4 (line 474) | @Test
method testAddListener5 (line 501) | @Test
method testAddListener6 (line 523) | @Test
method testAddMapping (line 540) | @Test
method testAddMapping2 (line 557) | @Test
method testAddResource (line 572) | @Test
method testAddServlet (line 584) | @Test
method testAddServlet2 (line 613) | @Test
method testAddServlet3 (line 638) | @Test
method testAddServlet4 (line 649) | @Test
method testAddServletMapping (line 662) | @Test
method testCreateFilter (line 690) | @Test
method testCreateListener (line 699) | @Test
method testCreateListener2 (line 709) | @Test
method testCreateListener3 (line 721) | @Test
method testCreateServlet (line 731) | @Test
method testDeclareRoles (line 740) | @Test
method testDestroy (line 751) | @Test
method testGetAsync (line 772) | @Test
method testGetAsync2 (line 824) | @Test
method testGetAttribute (line 871) | @Test
method testGetAttributeNames (line 880) | @Test
method testGetContext (line 889) | @Test
method testGetContextPath (line 898) | @Test
method testGetDefaultServlet (line 907) | @Test
method testGetDefaultSessionTrackingModes (line 916) | @Test
method testGetEffectiveMajorVersion (line 925) | @Test
method testGetEffectiveMinorVersion (line 934) | @Test
method testGetEffectiveSessionTrackingMode (line 943) | @Test
method testGetEffectiveSessionTrackingModes2 (line 952) | @Test
method testGetFilterRegistration (line 963) | @Test
method testGetFilterRegistration2 (line 978) | @Test
method testGetFilterRegistrations (line 988) | @Test
method testGetInitParameter (line 998) | @Test
method testGetInitParameterNames (line 1008) | @Test
method testGetInitializers (line 1020) | @Test
method testGetJspConfigDescriptor (line 1032) | @Test
method testGetMajorVersion (line 1041) | @Test
method testGetManager (line 1050) | @Test
method testGetMappings (line 1059) | @Test
method testGetMimeType (line 1069) | @Test
method testGetMimeType2 (line 1079) | @Test
method testGetMimeType3 (line 1089) | @Test
method testGetMimeType4 (line 1098) | @Test
method testGetMimeType5 (line 1108) | @Test
method testGetMinorVersion (line 1117) | @Test
method testGetRealPath (line 1126) | @Test
method testGetRealPath2 (line 1135) | @Test
method testGetRequest (line 1145) | @Test
method testGetRequestCharacterEncoding (line 1157) | @Test
method testGetResource (line 1170) | @Test
method testGetResourceAsStream (line 1179) | @Test
method testGetResourcePaths (line 1189) | @Test
method testGetResourcePaths2 (line 1203) | @Test
method testGetResourcePaths3 (line 1228) | @Test
method testGetResourcePaths4 (line 1237) | @Test
method testGetResponse (line 1251) | @Test
method testGetResponseCharacterEncoding (line 1263) | @Test
method testGetSecurityManager (line 1276) | @Test
method testGetServerInfo (line 1285) | @Test
method testGetServletContextId (line 1295) | @Test
method testGetServletContextName (line 1304) | @Test
method testGetServletRegistration (line 1313) | @Test
method testGetServletRegistration2 (line 1323) | @Test
method testGetServletRegistrations (line 1334) | @Test
method testGetServletRegistrations2 (line 1344) | @Test
method testGetVirtualServerName (line 1354) | @Test
method testInclude2 (line 1367) | @Test
method testInclude3 (line 1398) | @Test
method testInitialize (line 1427) | @Test
method testInitializeFilters (line 1437) | @Test
method testInitializeFinish (line 1447) | @Test
method testInitializeInitializers (line 1457) | @Test
method testInitializeServlets (line 1467) | @Test
method testIsDistributable (line 1477) | @Test
method testIsInitialized (line 1486) | @Test
method testIsMetadataComplete (line 1497) | @Test
method testLinkRequestAndResponse (line 1506) | @Test
method testLog (line 1521) | @Test
method testLog2 (line 1530) | @Test
method testService (line 1541) | @Test
method testService2 (line 1568) | @Test
method testService3 (line 1594) | @Test
method testSetAttribute (line 1617) | @Test
method testSetAttribute2 (line 1627) | @Test
method testSetClassLoader (line 1636) | @Test
method testSetContextPath (line 1647) | @Test
method testSetDefaultServlet (line 1657) | @Test
method testSetDistributable (line 1669) | @Test
method testSetEffectiveMajorVersion (line 1680) | @Test
method testSetEffectiveMinorVersion (line 1691) | @Test
method testSetEffectiveSessionTrackingModes (line 1702) | @Test
method testSetInitParameter (line 1715) | @Test
method testSetInitParameter2 (line 1725) | @Test
method testSetInitParameter3 (line 1737) | @Test
method testSetInitParameter4 (line 1747) | @Test
method testSetJspConfigDescriptor (line 1759) | @Test
method testSetMetadataComplete (line 1780) | @Test
method testSetRequestCharacterEncoding (line 1791) | @Test
method testSetResponseCharacterEncoding (line 1802) | @Test
method testSetServletContextName (line 1813) | @Test
method testSetVirtualServerName (line 1824) | @Test
method testSetWebApplicationRequestMapper (line 1836) | @Test
method testStart (line 1851) | @Test
method testStart2 (line 1862) | @Test
method testStop (line 1879) | @Test
method testRemoveAttribute (line 1892) | @Test
method testRemoveServletMapping (line 1904) | @Test
method testUnlinkRequestAndResponse (line 1919) | @Test
class TestAddFilterFilter (line 1935) | class TestAddFilterFilter implements Filter {
method doFilter (line 1937) | @Override
class TestAddFilter5Filter (line 1945) | class TestAddFilter5Filter implements Filter {
method doFilter (line 1947) | @Override
class TestAddInitializer2Initializer (line 1956) | public static class TestAddInitializer2Initializer implements ServletC...
method onStartup (line 1958) | @Override
class TestAddInitializer3Initializer (line 1967) | public static class TestAddInitializer3Initializer implements ServletC...
method TestAddInitializer3Initializer (line 1974) | public TestAddInitializer3Initializer() throws IOException {
method onStartup (line 1978) | @Override
class TestAddListener2Listener (line 1986) | public static class TestAddListener2Listener implements EventListener {
class TestCreateListenerEventListener (line 1992) | public static class TestCreateListenerEventListener implements EventLi...
class TestCreateListener2ServletContextListener (line 1998) | public static class TestCreateListener2ServletContextListener implemen...
class TestCreateListener3ServletRequestListener (line 2004) | public static class TestCreateListener3ServletRequestListener implemen...
class TestGetServletRegistration2Servlet (line 2010) | public static class TestGetServletRegistration2Servlet extends HttpSer...
class TestGetServletRegistrationsServlet (line 2016) | public static class TestGetServletRegistrationsServlet extends HttpSer...
FILE: core/impl/src/test/java/cloud/piranha/core/impl/DefaultWebConnectionTest.java
class DefaultWebConnectionTest (line 39) | class DefaultWebConnectionTest {
method testClose (line 44) | @Test
method testGetInputStream (line 57) | @Test
method testGetOutputStream (line 68) | @Test
FILE: core/impl/src/test/java/cloud/piranha/core/impl/FilterTest.java
class FilterTest (line 55) | class FilterTest {
method setUp (line 67) | @BeforeEach
method testDoFilter (line 77) | @Test
method testAddFilterGetClassName (line 94) | @Test
class TestMultiple1Filter (line 104) | class TestMultiple1Filter implements Filter {
method destroy (line 109) | @Override
method doFilter (line 122) | @Override
method init (line 134) | @Override
class TestMultiple2Filter (line 142) | class TestMultiple2Filter implements Filter {
method destroy (line 147) | @Override
method doFilter (line 160) | @Override
method init (line 172) | @Override
class TestEndServlet (line 180) | class TestEndServlet extends HttpServlet {
method doGet (line 192) | @Override
FILE: core/impl/src/test/java/cloud/piranha/core/impl/HttpSessionTest.java
class HttpSessionTest (line 70) | public class HttpSessionTest {
method testAttributeAdded (line 77) | @Test
method testAttributeRemoved (line 116) | @Test
method testAttributeReplaced (line 156) | @Test
method testSessionCreated (line 197) | @Test
method testSessionDestroyed (line 235) | @Test
method testSessionIdChanged (line 273) | @Test
method testValueBound (line 315) | @Test
method testValueUnbound (line 338) | @Test
method testValueBoundUnbound (line 365) | @Test
method testGetAttribute (line 390) | @Test
method testGetAttributeNames (line 404) | @Test
method testGetCookies (line 415) | @SuppressWarnings({"removal"})
method testGetCreationTime (line 449) | @Test
method testGetId (line 460) | @Test
method testGetLastAccessedTime (line 471) | @Test
method testGetMaxInactiveInterval (line 482) | @Test
method testGetServletContext (line 494) | @Test
method testInvalidate (line 506) | @Test
method testInvalidate2 (line 524) | @Test
method testIsNew (line 537) | @Test
method testRemoveAttribute (line 551) | @Test
method testSetAttribute (line 565) | @Test
method testSetAttribute2 (line 577) | @Test
method testSetMaxInactiveInterval (line 590) | @Test
class TestSetCommentListener (line 603) | public static class TestSetCommentListener implements ServletContextLi...
method contextInitialized (line 605) | @SuppressWarnings({"removal"})
class TestSetCommentServlet (line 616) | public static class TestSetCommentServlet extends HttpServlet {
method service (line 618) | @SuppressWarnings({"removal"})
method testCreateSession (line 632) | @Test
method testDestroySession (line 642) | @Test
method testEncodeRedirectURL (line 662) | @Test
method testEncodeURL (line 671) | @Test
method testGetComment (line 680) | @Test
method testGetDomain (line 692) | @Test
method testGetEffectiveSessionTrackingModes (line 704) | @Test
method testGetMaxAge (line 714) | @Test
method testGetName (line 727) | @Test
method testGetPath (line 739) | @Test
method testGetSession (line 751) | @Test
method testGetSession2 (line 761) | @Test
method testGetSessionCookieConfig (line 777) | @Test
method testGetSessionTimeout (line 786) | @Test
method testIsHttpOnly (line 799) | @Test
method testIsSecure (line 812) | @Test
method testSetComment (line 827) | @SuppressWarnings({"removal"})
method testSetComment2 (line 839) | @SuppressWarnings({"removal"})
method testSetDomain (line 859) | @Test
method testSetHttpOnly (line 878) | @Test
method testSetMaxAge (line 897) | @Test
method testSetName (line 916) | @Test
method testSetPath (line 935) | @Test
method testSetSecure (line 954) | @Test
method testSetSessionTrackingModes (line 968) | @Test
method testChangeSessionId (line 982) | @Test
method testChangeSessionId2 (line 1000) | @Test
method testChangeSessionId3 (line 1018) | @Test
method testChangeSessionId4 (line 1033) | @Test
method testGetSession3 (line 1051) | @Test
method testGetSession4 (line 1067) | @Test
method testCreateListenerWithHttpSessionListener (line 1084) | @Test
method testGetSessionCookieConfigIsNotNull (line 1096) | @Test
method testGetSessionTimeoutToSeeIfValueIsGreaterThanZero (line 1107) | @Test
method testGetSessionWhenPassingInFalseReturnsNull (line 1118) | @Test
method testGetSessionWhenPassingInTrueAndFalseReturnsNotNull (line 1140) | @Test
method testGetSessionWhenPassingInTrueReturnNotNull (line 1162) | @Test
method testGetSessionWithoutParameters (line 1186) | @Test
method testIsRequestedSessionIdFromCookie (line 1230) | @Test
method testIsRequestedSessionIdFromURLReturnsFalseByDefault (line 1242) | @Test
method testIsRequestedSessionIdValidReturnsFalseByDefault (line 1253) | @Test
method testIsRequestedSessionIdValidReturnsTrue (line 1265) | @Test
method testSetRequestedSessionIdFromCookieToTrue (line 1287) | @Test
method testSetRequestedSessionIdFromURLToTrue (line 1300) | @Test
method testSetSessionTimeoutThrowsIllegalStateExceptionAfterStart (line 1314) | @Test
method testSetSessionTimeoutWithMultipleTimeouts (line 1328) | @Test
method testSetSessionTrackingModesWithEmptyHashSet (line 1342) | @Test
class TestCreateListenerWithHttpSessionListener (line 1355) | public static class TestCreateListenerWithHttpSessionListener implemen...
FILE: core/impl/src/test/java/cloud/piranha/core/impl/ReadListenerTest.java
class ReadListenerTest (line 45) | public class ReadListenerTest {
method createWebApplication (line 47) | private WebApplication createWebApplication() {
method createWebApplicationRequest (line 51) | private WebApplicationRequest createWebApplicationRequest() {
method createWebApplicationResponse (line 55) | private WebApplicationResponse createWebApplicationResponse() {
method testOnAllDataRead (line 64) | @Test
method testOnDataAvailable (line 91) | @Test
class TestOnAllDataReadReadListener (line 111) | public static class TestOnAllDataReadReadListener implements ReadListe...
method TestOnAllDataReadReadListener (line 123) | public TestOnAllDataReadReadListener(WebApplication webApplication) {
method onAllDataRead (line 127) | @Override
method onDataAvailable (line 132) | @Override
method onError (line 136) | @Override
class TestOnDataAvailableReadListener (line 144) | public static class TestOnDataAvailableReadListener implements ReadLis...
method TestOnDataAvailableReadListener (line 156) | public TestOnDataAvailableReadListener(WebApplication webApplication) {
method onAllDataRead (line 160) | @Override
method onDataAvailable (line 164) | @Override
method onError (line 169) | @Override
FILE: core/impl/src/test/java/cloud/piranha/core/impl/RequestDispatcherTest.java
class RequestDispatcherTest (line 65) | class RequestDispatcherTest {
method testForwardWithNamedDispatcher (line 78) | @Test
method testNamedForward2 (line 135) | @Test
method testNamedForward3 (line 176) | @Test
method testNamedForward4 (line 212) | @Test
method testNamedInclude (line 255) | @Test
method testForward (line 297) | @Test
method testForward3 (line 336) | @Test
method testForward4 (line 367) | @Test
method testForwardNoWrapping (line 399) | @Test
method testForwardWithNamedDispatcher2 (line 434) | @Test
method testForwardWithQueryString (line 472) | @Test
method testGetExistingNamedDispatcher (line 526) | @Test
method testGetNonExistingNamedDispatcher (line 542) | @Test
method testInclude (line 557) | @Test
method testIncludeOutputStream (line 593) | @Test
method testIncludeNoWrapping (line 628) | @Test
method testIncludeWitNamedRequestDispatcherAndIllegalStateException (line 676) | @Test
method testIncludeWitNamedRequestDispatcherAndBufferSize (line 721) | @Test
method testIncludeWithQueryString (line 768) | @Test
method testErrorDispatcher (line 818) | @Test
method testErrorDispatcher2 (line 857) | @Test
method testGetRequestDispatcher (line 897) | @Test
method testGetRequestDispatcher2 (line 914) | @Test
method testInclude2 (line 932) | @Test
FILE: core/impl/src/test/java/cloud/piranha/core/impl/ServletContextAttributeListenerTest.java
class ServletContextAttributeListenerTest (line 50) | class ServletContextAttributeListenerTest {
method createWebApplication (line 52) | private WebApplication createWebApplication() {
method createWebApplicationRequest (line 56) | private WebApplicationRequest createWebApplicationRequest() {
method createWebApplicationResponse (line 60) | private WebApplicationResponse createWebApplicationResponse() {
method testAttributeAdded (line 71) | @Test
method testAttributeRemoved (line 106) | @Test
method testAttributeReplaced (line 143) | @Test
FILE: core/impl/src/test/java/cloud/piranha/core/impl/ServletInputStreamTest.java
class ServletInputStreamTest (line 47) | public class ServletInputStreamTest {
method createWebApplication (line 49) | private WebApplication createWebApplication() {
method createWebApplicationRequest (line 53) | private WebApplicationRequest createWebApplicationRequest() {
method createWebApplicationResponse (line 57) | private WebApplicationResponse createWebApplicationResponse() {
method testIsFinished (line 66) | void testIsFinished() throws Exception {
method testIsReady (line 77) | void testIsReady() throws Exception {
method testRead (line 88) | @Test
method testSetReadListener (line 103) | @Test
FILE: core/impl/src/test/java/cloud/piranha/core/impl/ServletRegistrationTest.java
class ServletRegistrationTest (line 47) | class ServletRegistrationTest {
method createWebApplication (line 49) | private WebApplication createWebApplication() {
method testGetClassName (line 56) | @Test
method testGetInitParameter (line 67) | @Test
method testGetInitParameters (line 78) | @Test
method testGetName (line 89) | @Test
method testGetRunAsRole (line 99) | @Test
method testGetServletRegistration2 (line 113) | @Test
method testSetInitParameters (line 123) | @Test
method testSetInitParameters2 (line 135) | @Test
method testSetInitParameters3 (line 148) | @Test
method testSetInitParameters4 (line 161) | @Test
method testSetInitParameters5 (line 174) | @Test
class TestGetClassNameServlet (line 188) | public static class TestGetClassNameServlet extends HttpServlet {
FILE: core/impl/src/test/java/cloud/piranha/core/impl/ServletRequestAttributeListenerTest.java
class ServletRequestAttributeListenerTest (line 49) | class ServletRequestAttributeListenerTest {
method createWebApplication (line 51) | private WebApplication createWebApplication() {
method createWebApplicationRequest (line 55) | private WebApplicationRequest createWebApplicationRequest() {
method createWebApplicationResponse (line 59) | private WebApplicationResponse createWebApplicationResponse() {
method testAttributeAdded (line 70) | @Test
method testAttributeRemoved (line 103) | @Test
method testAttributeReplaced (line 137) | @Test
FILE: core/impl/src/test/java/cloud/piranha/core/impl/ServletTest.java
class ServletTest (line 50) | class ServletTest {
method setUp (line 62) | @BeforeEach
method testService (line 72) | @Test
class TestServlet (line 95) | public static class TestServlet extends HttpServlet {
method TestServlet (line 99) | public TestServlet() {
method doGet (line 102) | @Override
FILE: core/impl/src/test/java/cloud/piranha/core/impl/TestChat1Servlet.java
class TestChat1Servlet (line 48) | public class TestChat1Servlet extends HttpServlet {
method init (line 76) | @Override
method doGet (line 113) | @Override
method doPost (line 174) | @Override
method destroy (line 206) | @Override
method notify (line 218) | private void notify(String message) throws IOException {
FILE: core/impl/src/test/java/cloud/piranha/core/impl/TestChat2Servlet.java
class TestChat2Servlet (line 48) | public class TestChat2Servlet extends HttpServlet {
method init (line 76) | @Override
method doGet (line 113) | @Override
method doPost (line 174) | @Override
method destroy (line 206) | @Override
method notify (line 218) | private void notify(String message) throws IOException {
FILE: core/impl/src/test/java/cloud/piranha/core/impl/TestEcho1Servlet.java
class TestEcho1Servlet (line 41) | public class TestEcho1Servlet extends HttpServlet {
method doGet (line 56) | @Override
FILE: core/impl/src/test/java/cloud/piranha/core/impl/TestEcho2Servlet.java
class TestEcho2Servlet (line 41) | public class TestEcho2Servlet extends HttpServlet {
method doGet (line 56) | @Override
FILE: core/impl/src/test/java/cloud/piranha/core/impl/TestHttpServerRequest.java
class TestHttpServerRequest (line 41) | public class TestHttpServerRequest implements HttpServerRequest {
method getHeader (line 43) | @Override
method getHeaders (line 48) | @Override
method isSecure (line 53) | @Override
method TestHttpServerRequest (line 117) | public TestHttpServerRequest() {
method getHeaderNames (line 133) | @Override
method getInputStream (line 141) | @Override
method getLocalAddress (line 149) | @Override
method getLocalHostname (line 157) | @Override
method getLocalPort (line 165) | @Override
method getMethod (line 173) | @Override
method getRemoteAddress (line 181) | @Override
method getRemoteHostname (line 189) | @Override
method getRemotePort (line 197) | @Override
method getRequestTarget (line 205) | @Override
method setMethod (line 215) | public void setMethod(String method) {
method setInputStream (line 224) | public void setInputStream(InputStream inputStream) {
method setLocalAddress (line 233) | public void setLocalAddress(String localAddress) {
method setLocalHostname (line 242) | public void setLocalHostname(String localHostname) {
method setLocalPort (line 251) | public void setLocalPort(int localPort) {
method setQueryString (line 260) | public void setQueryString(String queryString) {
method setRemoteAddress (line 269) | public void setRemoteAddress(String remoteAddress) {
method setRemoteHostname (line 278) | public void setRemoteHostname(String remoteHostname) {
method setRemotePort (line 287) | public void setRemotePort(int remotePort) {
method setRequestTarget (line 296) | public void setRequestTarget(String requestTarget) {
FILE: core/impl/src/test/java/cloud/piranha/core/impl/TestHttpServerResponse.java
class TestHttpServerResponse (line 40) | public class TestHttpServerResponse implements HttpServerResponse {
method TestHttpServerResponse (line 50) | public TestHttpServerResponse() {
method getByteArrayOutputStream (line 57) | public ByteArrayOutputStream getByteArrayOutputStream() {
method addHeader (line 61) | @Override
method getHeader (line 65) | @Override
method getOutputStream (line 70) | @Override
method setHeader (line 75) | @Override
method setStatus (line 79) | @Override
method writeHeaders (line 83) | @Override
method writeStatusLine (line 87) | @Override
FILE: core/impl/src/test/java/cloud/piranha/core/impl/TestIOExceptionServlet.java
class TestIOExceptionServlet (line 41) | public class TestIOExceptionServlet extends HttpServlet {
method doGet (line 56) | @Override
FILE: core/impl/src/test/java/cloud/piranha/core/impl/TestInclude2Servlet.java
class TestInclude2Servlet (line 42) | public class TestInclude2Servlet extends HttpServlet {
method init (line 50) | @Override
method doGet (line 62) | @Override
method destroy (line 72) | @Override
FILE: core/impl/src/test/java/cloud/piranha/core/impl/TestInclude3Servlet.java
class TestInclude3Servlet (line 43) | public class TestInclude3Servlet extends HttpServlet {
method init (line 51) | @Override
method doGet (line 63) | @Override
method destroy (line 73) | @Override
FILE: core/impl/src/test/java/cloud/piranha/core/impl/TestInclude4Servlet.java
class TestInclude4Servlet (line 43) | public class TestInclude4Servlet extends HttpServlet {
method init (line 51) | @Override
method doGet (line 63) | @Override
method destroy (line 75) | @Override
FILE: core/impl/src/test/java/cloud/piranha/core/impl/TestIncludeServlet.java
class TestIncludeServlet (line 43) | public class TestIncludeServlet extends HttpServlet {
method init (line 51) | @Override
method doGet (line 63) | @Override
method destroy (line 73) | @Override
FILE: core/impl/src/test/java/cloud/piranha/core/impl/TestRuntimeExceptionServlet.java
class TestRuntimeExceptionServlet (line 41) | public class TestRuntimeExceptionServlet extends HttpServlet {
method doGet (line 56) | @Override
FILE: core/impl/src/test/java/cloud/piranha/core/impl/TestSnoopServlet.java
class TestSnoopServlet (line 46) | public class TestSnoopServlet extends HttpServlet {
method processRequest (line 61) | protected void processRequest(HttpServletRequest request, HttpServletR...
method doGet (line 175) | @Override
method doPost (line 188) | @Override
FILE: core/impl/src/test/java/cloud/piranha/core/impl/TestWebApplicationRequest.java
class TestWebApplicationRequest (line 35) | public class TestWebApplicationRequest extends DefaultWebApplicationRequ...
FILE: core/impl/src/test/java/cloud/piranha/core/impl/TestWebApplicationResponse.java
class TestWebApplicationResponse (line 37) | public class TestWebApplicationResponse extends DefaultWebApplicationRes...
method TestWebApplicationResponse (line 42) | public TestWebApplicationResponse() {
method getResponseBytes (line 50) | public byte[] getResponseBytes() {
FILE: core/impl/src/test/java/cloud/piranha/core/impl/WriteListenerTest.java
class WriteListenerTest (line 45) | public class WriteListenerTest {
method createWebApplication (line 47) | private WebApplication createWebApplication() {
method createWebApplicationRequest (line 51) | private WebApplicationRequest createWebApplicationRequest() {
method createWebApplicationResponse (line 55) | private WebApplicationResponse createWebApplicationResponse() {
method testOnWritePossible (line 64) | @Test
class TestOnWritePossibleWriteListener (line 84) | public static class TestOnWritePossibleWriteListener implements WriteL...
method TestOnWritePossibleWriteListener (line 96) | public TestOnWritePossibleWriteListener(WebApplication webApplicatio...
method onWritePossible (line 100) | @Override
method onError (line 105) | @Override
FILE: debug/src/main/java/cloud/piranha/debug/Debug.java
class Debug (line 34) | public class Debug {
method Debug (line 39) | public Debug() {
method main (line 46) | public static void main(String[] args) {
FILE: dist/coreprofile/src/main/java/cloud/piranha/dist/coreprofile/CoreProfilePiranhaMain.java
class CoreProfilePiranhaMain (line 49) | public class CoreProfilePiranhaMain extends SingleMain {
method CoreProfilePiranhaMain (line 54) | public CoreProfilePiranhaMain() {
method main (line 63) | public static void main(String[] arguments) {
FILE: dist/isolated/src/main/java/cloud/piranha/dist/isolated/IsolatedPiranha.java
class IsolatedPiranha (line 65) | public class IsolatedPiranha implements Piranha, Runnable {
method IsolatedPiranha (line 105) | public IsolatedPiranha() {
method getConfiguration (line 112) | @Override
method get (line 122) | public static IsolatedPiranha get() {
method main (line 131) | public static void main(String[] arguments) {
method processArguments (line 143) | private void processArguments(String[] arguments) {
method run (line 168) | @Override
method deploy (line 277) | private void deploy(File warFile, HttpWebApplicationServer webApplicat...
method getContextPath (line 298) | private String getContextPath(File warFile) {
method createDeployingFile (line 310) | private File createDeployingFile() {
method createStartedFile (line 322) | private File createStartedFile() {
FILE: dist/isolated/src/test/java/cloud/piranha/dist/isolated/IsolatedPiranhaIT.java
class IsolatedPiranhaIT (line 45) | class IsolatedPiranhaIT {
method extractZipInputStream (line 54) | private void extractZipInputStream(ZipInputStream zipInput, String fil...
method extractServer (line 67) | private void extractServer(File zipFile) {
method testRun (line 91) | @Test
FILE: dist/micro/src/main/java/cloud/piranha/dist/micro/MicroBootstrap.java
class MicroBootstrap (line 51) | public class MicroBootstrap implements Runnable {
method MicroBootstrap (line 81) | public MicroBootstrap() {
method main (line 92) | public static void main(String[] arguments) {
method configure (line 110) | public void configure(String[] arguments) {
method run (line 154) | @Override
method stop (line 181) | public void stop() {
FILE: dist/micro/src/test/java/cloud/piranha/dist/micro/MicroPiranhaIT.java
class MicroPiranhaIT (line 43) | class MicroPiranhaIT {
method testCommandLine (line 50) | @Disabled
FILE: dist/microprofile/src/main/java/cloud/piranha/dist/microprofile/MicroProfilePiranhaMain.java
class MicroProfilePiranhaMain (line 44) | public class MicroProfilePiranhaMain extends SingleMain {
method MicroProfilePiranhaMain (line 49) | public MicroProfilePiranhaMain() {
method main (line 58) | public static void main(String[] arguments) {
FILE: dist/platform/src/main/java/cloud/piranha/dist/platform/PlatformPiranhaMain.java
class PlatformPiranhaMain (line 39) | public class PlatformPiranhaMain extends MultiPiranhaMain {
method PlatformPiranhaMain (line 44) | public PlatformPiranhaMain() {
method main (line 53) | public static void main(String[] arguments) {
FILE: dist/platform/src/main/java/cloud/piranha/dist/platform/PlatformWebApplication.java
class PlatformWebApplication (line 39) | public class PlatformWebApplication extends DefaultWebApplication {
method PlatformWebApplication (line 51) | public PlatformWebApplication(WebApplicationServerRequestMapper reques...
method getContext (line 55) | @Override
FILE: dist/platform/src/test/java/cloud/piranha/dist/platform/PlatformPiranhaBuilderTest.java
class PlatformPiranhaBuilderTest (line 48) | class PlatformPiranhaBuilderTest {
method testHttpPort (line 55) | @Test
method testHttpPort2 (line 75) | @Test
method testHttpsPort2 (line 98) | @Test
method testDefaultExtensionClass (line 124) | @Test
FILE: dist/platform/src/test/java/cloud/piranha/dist/platform/PlatformPiranhaIT.java
class PlatformPiranhaIT (line 47) | class PlatformPiranhaIT {
method extractZipInputStream (line 56) | private void extractZipInputStream(ZipInputStream zipInput, String fil...
method extractServer (line 69) | private void extractServer(File zipFile) {
method testRun (line 93) | @Test
FILE: dist/server/src/main/java/cloud/piranha/dist/server/ServerPiranhaMain.java
class ServerPiranhaMain (line 39) | public class ServerPiranhaMain extends MultiPiranhaMain {
method ServerPiranhaMain (line 44) | public ServerPiranhaMain() {
method main (line 53) | public static void main(String[] arguments) {
FILE: dist/server/src/main/java/cloud/piranha/dist/server/ServerWebApplication.java
class ServerWebApplication (line 39) | public class ServerWebApplication extends DefaultWebApplication {
method ServerWebApplication (line 51) | public ServerWebApplication(WebApplicationServerRequestMapper requestM...
method getContext (line 55) | @Override
FILE: dist/server/src/test/java/cloud/piranha/dist/server/ServerPiranhaBuilderTest.java
class ServerPiranhaBuilderTest (line 48) | class ServerPiranhaBuilderTest {
method testHttpPort (line 55) | @Test
method testHttpPort2 (line 75) | @Test
method testHttpsPort2 (line 98) | @Test
method testDefaultExtensionClass (line 124) | @Test
FILE: dist/server/src/test/java/cloud/piranha/dist/server/ServerPiranhaIT.java
class ServerPiranhaIT (line 47) | class ServerPiranhaIT {
method extractZipInputStream (line 56) | private void extractZipInputStream(ZipInputStream zipInput, String fil...
method extractServer (line 69) | private void extractServer(File zipFile) {
method testRun (line 93) | @Test
FILE: dist/servlet/src/main/java/cloud/piranha/dist/servlet/ServletPiranhaMain.java
class ServletPiranhaMain (line 44) | public class ServletPiranhaMain extends SingleMain {
method main (line 51) | public static void main(String[] arguments) {
FILE: dist/webprofile/src/main/java/cloud/piranha/dist/webprofile/WebProfilePiranhaMain.java
class WebProfilePiranhaMain (line 44) | public class WebProfilePiranhaMain extends SingleMain {
method WebProfilePiranhaMain (line 49) | public WebProfilePiranhaMain() {
method main (line 58) | public static void main(String[] arguments) {
FILE: docker/coreprofile/src/test/java/cloud/piranha/docker/coreprofile/CoreProfileIT.java
class CoreProfileIT (line 16) | public class CoreProfileIT {
method testBasicFunctionality (line 24) | @Test
FILE: embedded/src/main/java/cloud/piranha/embedded/EmbeddedPiranha.java
class EmbeddedPiranha (line 48) | public class EmbeddedPiranha implements Piranha {
method EmbeddedPiranha (line 63) | public EmbeddedPiranha() {
method EmbeddedPiranha (line 73) | public EmbeddedPiranha(WebApplication webApplication) {
method destroy (line 82) | public EmbeddedPiranha destroy() {
method getConfiguration (line 87) | @Override
method getWebApplication (line 95) | public WebApplication getWebApplication() {
method initialize (line 104) | public EmbeddedPiranha initialize() {
method service (line 120) | public EmbeddedResponse service(String servletPath, String... paramete...
method service (line 152) | public EmbeddedResponse service(WebApplicationRequest request) throws ...
method service (line 166) | public void service(WebApplicationRequest request, WebApplicationRespo...
method start (line 184) | public EmbeddedPiranha start() {
method stop (line 194) | public EmbeddedPiranha stop() {
FILE: embedded/src/main/java/cloud/piranha/embedded/EmbeddedPiranhaBuilder.java
class EmbeddedPiranhaBuilder (line 56) | public class EmbeddedPiranhaBuilder implements PiranhaBuilder<EmbeddedPi...
method EmbeddedPiranhaBuilder (line 136) | public EmbeddedPiranhaBuilder() {
method aliasedDirectoryResource (line 158) | public EmbeddedPiranhaBuilder aliasedDirectoryResource(String path, St...
method attribute (line 170) | public EmbeddedPiranhaBuilder attribute(String name, Object value) {
method build (line 180) | @Override
method buildAndStart (line 271) | public EmbeddedPiranha buildAndStart() {
method classLoader (line 282) | public EmbeddedPiranhaBuilder classLoader(ClassLoader classLoader) {
method directoryResource (line 293) | public EmbeddedPiranhaBuilder directoryResource(String path) {
method extension (line 304) | public EmbeddedPiranhaBuilder extension(Class<? extends WebApplication...
method extensions (line 315) | @SafeVarargs
method filter (line 330) | public EmbeddedPiranhaBuilder filter(String filterName, Class<?> filte...
method filter (line 342) | public EmbeddedPiranhaBuilder filter(String filterName, String classNa...
method filterInitParam (line 355) | public EmbeddedPiranhaBuilder filterInitParam(String filterName, Strin...
method filterMapping (line 372) | public EmbeddedPiranhaBuilder filterMapping(String filterName, String....
method httpSessionManager (line 383) | public EmbeddedPiranhaBuilder httpSessionManager(HttpSessionManager ht...
method initializer (line 394) | public EmbeddedPiranhaBuilder initializer(Class<?> initializerClass) {
method initializer (line 405) | public EmbeddedPiranhaBuilder initializer(String className) {
method initializers (line 416) | public EmbeddedPiranhaBuilder initializers(Class<?>... initializerClas...
method listener (line 429) | public EmbeddedPiranhaBuilder listener(String className) {
method processServletsMapped (line 434) | private EmbeddedPiranhaBuilder processServletsMapped(Object... objects) {
method servlet (line 451) | public EmbeddedPiranhaBuilder servlet(String servletName, Class<?> ser...
method servlet (line 462) | public EmbeddedPiranhaBuilder servlet(String servletName, String class...
method servlet (line 474) | public EmbeddedPiranhaBuilder servlet(String servletName, Class<?> ser...
method servlet (line 486) | public EmbeddedPiranhaBuilder servlet(String servletName, String class...
method servletInitParam (line 500) | public EmbeddedPiranhaBuilder servletInitParam(String servletName, Str...
method servletMapped (line 517) | public EmbeddedPiranhaBuilder servletMapped(Class<?> servletClass, Str...
method servletMapped (line 530) | public EmbeddedPiranhaBuilder servletMapped(Class<?> servletClass, boo...
method servletMapping (line 542) | public EmbeddedPiranhaBuilder servletMapping(String servletName, Strin...
method servletsMapped (line 554) | public EmbeddedPiranhaBuilder servletsMapped(Class<?> servletClass1, S...
method servletsMapped (line 568) | public EmbeddedPiranhaBuilder servletsMapped(Class<?> servletClass1, S...
method servletsMapped (line 584) | public EmbeddedPiranhaBuilder servletsMapped(Class<?> servletClass1, S...
method servletsMapped (line 603) | public EmbeddedPiranhaBuilder servletsMapped(Class<?> servletClass1, S...
method servletsMapped (line 624) | public EmbeddedPiranhaBuilder servletsMapped(Class<?> servletClass1, S...
method stringResource (line 637) | public EmbeddedPiranhaBuilder stringResource(String path, String value) {
method webApplication (line 648) | public EmbeddedPiranhaBuilder webApplication(WebApplication webApplica...
FILE: embedded/src/main/java/cloud/piranha/embedded/EmbeddedRequest.java
class EmbeddedRequest (line 41) | public class EmbeddedRequest extends DefaultWebApplicationRequest {
method EmbeddedRequest (line 49) | public EmbeddedRequest(String servletPath) {
method EmbeddedRequest (line 58) | public EmbeddedRequest() {
method getWebApplication (line 73) | public WebApplication getWebApplication() {
FILE: embedded/src/main/java/cloud/piranha/embedded/EmbeddedRequestBuilder.java
class EmbeddedRequestBuilder (line 41) | public class EmbeddedRequestBuilder {
method EmbeddedRequestBuilder (line 51) | public EmbeddedRequestBuilder() {
method attribute (line 62) | public EmbeddedRequestBuilder attribute(String name, Object value) {
method build (line 72) | public EmbeddedRequest build() {
method contextPath (line 85) | public EmbeddedRequestBuilder contextPath(String contextPath) {
method cookie (line 96) | public EmbeddedRequestBuilder cookie(Cookie cookie) {
method header (line 119) | public EmbeddedRequestBuilder header(String name, String value) {
method method (line 130) | public EmbeddedRequestBuilder method(String method) {
method parameter (line 142) | public EmbeddedRequestBuilder parameter(String name, String... values) {
method pathInfo (line 153) | public EmbeddedRequestBuilder pathInfo(String pathInfo) {
method requestedSessionId (line 164) | public EmbeddedRequestBuilder requestedSessionId(String requestedSessi...
method requestedSessionIdFromCookie (line 175) | public EmbeddedRequestBuilder requestedSessionIdFromCookie(boolean req...
method scheme (line 186) | public EmbeddedRequestBuilder scheme(String scheme) {
method servletPath (line 197) | public EmbeddedRequestBuilder servletPath(String servletPath) {
method webApplication (line 208) | public EmbeddedRequestBuilder webApplication(WebApplication webApp) {
FILE: embedded/src/main/java/cloud/piranha/embedded/EmbeddedResponse.java
class EmbeddedResponse (line 41) | public class EmbeddedResponse extends DefaultWebApplicationResponse {
method EmbeddedResponse (line 46) | public EmbeddedResponse() {
method getResponseAsByteArray (line 57) | public byte[] getResponseAsByteArray() {
method getResponseAsString (line 65) | public String getResponseAsString() {
FILE: embedded/src/main/java/cloud/piranha/embedded/EmbeddedResponseBuilder.java
class EmbeddedResponseBuilder (line 39) | public class EmbeddedResponseBuilder {
method EmbeddedResponseBuilder (line 49) | public EmbeddedResponseBuilder() {
method bodyOnly (line 59) | public EmbeddedResponseBuilder bodyOnly(boolean bodyOnly) {
method build (line 69) | public EmbeddedResponse build() {
method webApplication (line 79) | public EmbeddedResponseBuilder webApplication(WebApplication webApplic...
FILE: embedded/src/test/java/cloud/piranha/embedded/EmbeddedPiranhaBuilderTest.java
class EmbeddedPiranhaBuilderTest (line 59) | class EmbeddedPiranhaBuilderTest {
method testAliasedDirectoryResource (line 67) | @Test
method testAttribute (line 78) | @Test
method testDirectoryResource (line 91) | @Test
method testClassLoader (line 104) | @Test
method testExtension (line 116) | @Test
method testExtensions (line 127) | @Test
method testFilter (line 138) | @Test
method testFilter2 (line 149) | @Test
method testFilterInitParam (line 160) | @Test
method testFilterMapping (line 173) | @Test
method testHttpSessionManager (line 187) | @Test
method testInitializer (line 200) | @Test
method testInitializer2 (line 211) | @Test
method testInitializers (line 222) | @Test
method testListener (line 235) | @Test
method testServlet (line 251) | @Test
method testServlet2 (line 262) | @Test
method testServlet3 (line 273) | @Test
method testServlet4 (line 287) | @Test
method testServletInitParam (line 301) | @Test
method testServletMapping (line 314) | @Test
method testServletMapped (line 328) | @Test
method testServletMapped2 (line 341) | @Test
method testServletsMapped (line 355) | @Test
method testServletsMapped2 (line 368) | @Test
method testServletsMapped3 (line 384) | @Test
method testServletsMapped4 (line 406) | @Test
method testServletsMapped5 (line 432) | @Test
method testStringResource (line 464) | @Test
method testWebApplication (line 475) | @Test
class TestExtension (line 487) | public static class TestExtension implements WebApplicationExtension {
method configure (line 489) | @Override
class TestFilter (line 498) | public static class TestFilter implements Filter {
method doFilter (line 500) | @Override
class TestInitializer (line 509) | public static class TestInitializer implements ServletContainerInitial...
method onStartup (line 511) | @Override
class TestServlet (line 521) | public static class TestServlet extends HttpServlet {
class Test2Servlet (line 527) | public static class Test2Servlet extends HttpServlet {
class Test3Servlet (line 533) | public static class Test3Servlet extends HttpServlet {
class Test4Servlet (line 539) | public static class Test4Servlet extends HttpServlet {
class Test5Servlet (line 545) | public static class Test5Servlet extends HttpServlet {
class TestServletRequestListener (line 551) | public static class TestServletRequestListener implements ServletReque...
method TestServletRequestListener (line 553) | public TestServletRequestListener() {
method requestInitialized (line 556) | @Override
FILE: embedded/src/test/java/cloud/piranha/embedded/EmbeddedPiranhaTest.java
class EmbeddedPiranhaTest (line 52) | class EmbeddedPiranhaTest {
method testExtension (line 59) | @Test
method testService (line 70) | @Test
method testService2 (line 88) | @Test
method testService3 (line 106) | @Test
method testService4 (line 125) | @Test
method testService5 (line 144) | @Test
class TestExtension (line 165) | public static class TestExtension implements WebApplicationExtension {
method configure (line 172) | @Override
class TestInitializer (line 181) | public static class TestInitializer implements ServletContainerInitial...
method onStartup (line 190) | @Override
class TestServlet (line 199) | public static class TestServlet extends HttpServlet {
method doGet (line 201) | @Override
FILE: embedded/src/test/java/cloud/piranha/embedded/EmbeddedRequestBuilderTest.java
class EmbeddedRequestBuilderTest (line 44) | class EmbeddedRequestBuilderTest {
method testAttribute (line 49) | @Test
method testContextPath (line 60) | @Test
method testContextPath2 (line 71) | @Test
method testCookie (line 82) | @Test
method testHeader (line 97) | @Test
method testMethod (line 108) | @Test
method testParameter (line 119) | @Test
method testParameter2 (line 130) | @Test
method testPathInfo (line 141) | @Test
method testPathInfo2 (line 151) | @Test
method testRequestedSessionId (line 162) | @Test
method testRequestedSessionIdFromCookie (line 173) | @Test
method testScheme (line 185) | @Test
method testServletPath (line 197) | @Test
method testWebApplication (line 210) | @Test
FILE: embedded/src/test/java/cloud/piranha/embedded/EmbeddedRequestTest.java
class EmbeddedRequestTest (line 38) | class EmbeddedRequestTest {
method testConstructor (line 43) | @Test
FILE: embedded/src/test/java/cloud/piranha/embedded/EmbeddedResponseBuilderTest.java
class EmbeddedResponseBuilderTest (line 43) | class EmbeddedResponseBuilderTest {
method testBodyOnly (line 50) | @Test
method testBodyOnly2 (line 75) | @Test
method testWebApplication (line 99) | @Test
FILE: extension/angus/src/main/java/cloud/piranha/extension/angus/AngusExtension.java
class AngusExtension (line 40) | public class AngusExtension implements WebApplicationExtension {
method AngusExtension (line 50) | public AngusExtension() {
method configure (line 58) | @Override
FILE: extension/annotationscan-classfile/src/main/java/cloud/piranha/extension/annotationscan/classfile/ClassfileAnnotationScanExtension.java
class ClassfileAnnotationScanExtension (line 38) | public class ClassfileAnnotationScanExtension implements WebApplicationE...
method ClassfileAnnotationScanExtension (line 48) | public ClassfileAnnotationScanExtension() {
method configure (line 56) | @Override
FILE: extension/annotationscan-classfile/src/main/java/cloud/piranha/extension/annotationscan/classfile/ClassfileAnnotationScanInitializer.java
class ClassfileAnnotationScanInitializer (line 69) | public class ClassfileAnnotationScanInitializer implements ServletContai...
method ClassfileAnnotationScanInitializer (line 79) | public ClassfileAnnotationScanInitializer() {
method onStartup (line 89) | @Override
method loadClass (line 124) | private Class<?> loadClass(ClassLoader classLoader, String className) {
method getJakartaAnnotations (line 140) | private Stream<Annotation> getJakartaAnnotations(Class<?> clazz) {
method isJakartaAnnotation (line 145) | private boolean isJakartaAnnotation(Annotation clazz) {
method isJakartaAnnotation (line 149) | private boolean isJakartaAnnotation(ClassDesc annotation) {
method readResource (line 153) | private byte[] readResource(String resourceName, ResourceManager resou...
method classFileHasJakartaAnnotations (line 161) | private boolean classFileHasJakartaAnnotations(byte[] classFileBytes) {
class Holder (line 196) | class Holder {
method Holder (line 228) | private Holder() {
method getLookup (line 259) | @SuppressWarnings("deprecation")
FILE: extension/annotationscan-classfile/src/main/java/cloud/piranha/extension/annotationscan/classfile/internal/InternalAnnotationScanAnnotationInfo.java
class InternalAnnotationScanAnnotationInfo (line 40) | public class InternalAnnotationScanAnnotationInfo<T> implements Annotati...
method InternalAnnotationScanAnnotationInfo (line 58) | public InternalAnnotationScanAnnotationInfo(T instance, AnnotatedEleme...
method getInstance (line 63) | @Override
method getTarget (line 68) | @Override
FILE: extension/annotationscan-classfile/src/main/java/cloud/piranha/extension/annotationscan/classfile/internal/InternalAnnotationScanAnnotationManager.java
class InternalAnnotationScanAnnotationManager (line 50) | public class InternalAnnotationScanAnnotationManager implements Annotati...
method InternalAnnotationScanAnnotationManager (line 65) | public InternalAnnotationScanAnnotationManager() {
method addAnnotation (line 68) | @Override
method addInstance (line 82) | @Override
method getAnnotationStream (line 90) | @SuppressWarnings("unchecked")
method getAnnotations (line 97) | @Override
method getAnnotations (line 104) | @Override
method getAnnotationsByTarget (line 109) | @Override
method getInstanceStream (line 115) | @SuppressWarnings("unchecked")
method getInstances (line 122) | @Override
method getInstances (line 129) | @Override
method addAnnotatedClass (line 134) | @Override
method getAnnotatedClass (line 138) | @Override
method getAnnotatedClasses (line 143) | @Override
FILE: extension/annotationscan-classfile/src/test/java/cloud/piranha/extension/annotationscan/classfile/AnnotationScanExtensionTest.java
class AnnotationScanExtensionTest (line 49) | class AnnotationScanExtensionTest {
method testConfigure (line 54) | @Test
method testConfigure2 (line 71) | @Test
FILE: extension/annotationscan-classfile/src/test/java/cloud/piranha/extension/annotationscan/classfile/TestServlet.java
class TestServlet (line 38) | @WebServlet(urlPatterns = {"/test"})
FILE: extension/annotationscan-classfile/src/test/java/cloud/piranha/extension/annotationscan/classfile/TestWithHandlesTypesInitializer.java
class TestWithHandlesTypesInitializer (line 42) | @HandlesTypes({Set.class, TestAnnotation.class})
method TestWithHandlesTypesInitializer (line 48) | public TestWithHandlesTypesInitializer() {
method onStartup (line 51) | @Override
FILE: extension/annotationscan-classfile/src/test/java/cloud/piranha/extension/annotationscan/classfile/internal/InternalAnnotationScanAnnotationManagerTest.java
class InternalAnnotationScanAnnotationManagerTest (line 45) | class InternalAnnotationScanAnnotationManagerTest {
method testInitializerWithHandlesTypes (line 47) | @Test
method testInitializerWithHandlesTypes2 (line 59) | @Test
class ClassAnnotated (line 79) | @TestAnnotation
FILE: extension/annotationscan/src/main/java/cloud/piranha/extension/annotationscan/AnnotationScanExtension.java
class AnnotationScanExtension (line 42) | public class AnnotationScanExtension implements WebApplicationExtension {
method AnnotationScanExtension (line 52) | public AnnotationScanExtension() {
method configure (line 60) | @Override
FILE: extension/annotationscan/src/main/java/cloud/piranha/extension/annotationscan/AnnotationScanInitializer.java
class AnnotationScanInitializer (line 59) | public class AnnotationScanInitializer implements ServletContainerInitia...
method AnnotationScanInitializer (line 69) | public AnnotationScanInitializer() {
method onStartup (line 79) | @Override
method loadClass (line 135) | public Class<?> loadClass(ClassLoader classLoader, String className) {
method getWebAnnotations (line 153) | private Stream<Annotation> getWebAnnotations(Class<?> clazz) {
method hasWebAnnotation (line 164) | private boolean hasWebAnnotation(Class<?> clazz) {
method isWebAnnotation (line 176) | private boolean isWebAnnotation(Annotation annotation) {
FILE: extension/annotationscan/src/main/java/cloud/piranha/extension/annotationscan/internal/InternalAnnotationScanAnnotationInfo.java
class InternalAnnotationScanAnnotationInfo (line 40) | public class InternalAnnotationScanAnnotationInfo<T> implements Annotati...
method InternalAnnotationScanAnnotationInfo (line 58) | public InternalAnnotationScanAnnotationInfo(T instance, AnnotatedEleme...
method getInstance (line 63) | @Override
method getTarget (line 68) | @Override
FILE: extension/annotationscan/src/main/java/cloud/piranha/extension/annotationscan/internal/InternalAnnotationScanAnnotationManager.java
class InternalAnnotationScanAnnotationManager (line 50) | public class InternalAnnotationScanAnnotationManager implements Annotati...
method InternalAnnotationScanAnnotationManager (line 65) | public InternalAnnotationScanAnnotationManager() {
method addAnnotation (line 68) | @Override
method addInstance (line 82) | @Override
method getAnnotationStream (line 90) | @SuppressWarnings("unchecked")
method getAnnotations (line 97) | @Override
method getAnnotations (line 104) | @Override
method getAnnotationsByTarget (line 109) | @Override
method getInstanceStream (line 115) | @SuppressWarnings("unchecked")
method getInstances (line 122) | @Override
method getInstances (line 129) | @Override
method addAnnotatedClass (line 134) | @Override
method getAnnotatedClass (line 138) | @Override
method getAnnotatedClasses (line 143) | @Override
FILE: extension/annotationscan/src/test/java/cloud/piranha/extension/annotationscan/AnnotationScanExtensionTest.java
class AnnotationScanExtensionTest (line 46) | class AnnotationScanExtensionTest {
method testConfigure (line 51) | @Test
method testConfigure2 (line 68) | @Test
FILE: extension/annotationscan/src/test/java/cloud/piranha/extension/annotationscan/TestServlet.java
class TestServlet (line 38) | @WebServlet(urlPatterns = {"/test"})
FILE: extension/annotationscan/src/test/java/cloud/piranha/extension/annotationscan/TestWithHandlesTypesInitializer.java
class TestWithHandlesTypesInitializer (line 42) | @HandlesTypes({Set.class, TestAnnotation.class})
method TestWithHandlesTypesInitializer (line 48) | public TestWithHandlesTypesInitializer() {
method onStartup (line 51) | @Override
FILE: extension/annotationscan/src/test/java/cloud/piranha/extension/annotationscan/internal/InternalAnnotationScanAnnotationManagerTest.java
class InternalAnnotationScanAnnotationManagerTest (line 45) | class InternalAnnotationScanAnnotationManagerTest {
method testInitializerWithHandlesTypes (line 47) | @Test
method testInitializerWithHandlesTypes2 (line 59) | @Test
class ClassAnnotated (line 79) | @TestAnnotation
FILE: extension/bytesstreamhandler/src/main/java/cloud/piranha/extension/bytesstreamhandler/BytesStreamHandlerExtension.java
class BytesStreamHandlerExtension (line 41) | public class BytesStreamHandlerExtension implements WebApplicationExtens...
method BytesStreamHandlerExtension (line 51) | public BytesStreamHandlerExtension() {
method configure (line 54) | @Override
FILE: extension/bytesstreamhandler/src/main/java/cloud/piranha/extension/bytesstreamhandler/BytesStreamHandlerServletContextListener.java
class BytesStreamHandlerServletContextListener (line 41) | public class BytesStreamHandlerServletContextListener implements Servlet...
method BytesStreamHandlerServletContextListener (line 51) | public BytesStreamHandlerServletContextListener() {
method contextInitialized (line 54) | @Override
FILE: extension/bytesstreamhandler/src/main/java/cloud/piranha/extension/bytesstreamhandler/BytesStreamHandlerServletRequestListener.java
class BytesStreamHandlerServletRequestListener (line 42) | public class BytesStreamHandlerServletRequestListener implements Servlet...
method BytesStreamHandlerServletRequestListener (line 52) | public BytesStreamHandlerServletRequestListener() {
method requestDestroyed (line 55) | @Override
method requestInitialized (line 61) | @Override
FILE: extension/bytesstreamhandler/src/test/java/cloud/piranha/extension/bytesstreamhandler/BytesStreamHandlerExtensionTest.java
class BytesStreamHandlerExtensionTest (line 45) | class BytesStreamHandlerExtensionTest {
method testConfigure (line 52) | @Test
class TestServletRequestListener (line 65) | public static class TestServletRequestListener implements ServletReque...
method TestServletRequestListener (line 70) | public TestServletRequestListener() {
method requestInitialized (line 73) | @Override
FILE: extension/concurro/src/main/java/cloud/piranha/extension/concurro/ConcurroExtension.java
class ConcurroExtension (line 40) | public class ConcurroExtension implements WebApplicationExtension {
method ConcurroExtension (line 51) | public ConcurroExtension() {
method configure (line 59) | @Override
FILE: extension/coreprofile/src/main/java/cloud/piranha/extension/coreprofile/CoreProfileExtension.java
class CoreProfileExtension (line 48) | public class CoreProfileExtension implements WebApplicationExtension {
method CoreProfileExtension (line 53) | public CoreProfileExtension() {
method extend (line 56) | @Override
method getAnnotationScanExtensionClass (line 69) | private static Class<? extends WebApplicationExtension> getAnnotationS...
FILE: extension/datasource/src/main/java/cloud/piranha/extension/datasource/DataSourceWrapper.java
class DataSourceWrapper (line 46) | public class DataSourceWrapper implements DataSource {
method DataSourceWrapper (line 58) | public DataSourceWrapper(DataSource wrapped) {
method getWrapped (line 66) | public DataSource getWrapped() {
method unwrap (line 70) | @Override
method isWrapperFor (line 75) | @Override
method getConnection (line 80) | @Override
method getConnection (line 85) | @Override
method getParentLogger (line 90) | @Override
method getLogWriter (line 95) | @Override
method setLogWriter (line 100) | @Override
method setLoginTimeout (line 105) | @Override
method getLoginTimeout (line 110) | @Override
method createConnectionBuilder (line 115) | @Override
method createShardingKeyBuilder (line 120) | @Override
FILE: extension/datasource/src/main/java/cloud/piranha/extension/datasource/DefaultDatasourceExtension.java
class DefaultDatasourceExtension (line 43) | public class DefaultDatasourceExtension implements WebApplicationExtensi...
method DefaultDatasourceExtension (line 53) | public DefaultDatasourceExtension() {
method configure (line 56) | @Override
FILE: extension/datasource/src/main/java/cloud/piranha/extension/datasource/DefaultDatasourceInitializer.java
class DefaultDatasourceInitializer (line 47) | public class DefaultDatasourceInitializer implements ServletContainerIni...
method DefaultDatasourceInitializer (line 57) | public DefaultDatasourceInitializer() {
method onStartup (line 60) | @Override
method createDataSource (line 68) | private void createDataSource(String name, String className, String ur...
FILE: extension/datasource/src/main/java/cloud/piranha/extension/datasource/TxJoiningDataSource.java
class TxJoiningDataSource (line 49) | public class TxJoiningDataSource extends DataSourceWrapper {
method TxJoiningDataSource (line 61) | public TxJoiningDataSource(DataSource dataSource) {
method getConnection (line 65) | @Override
method getConnection (line 88) | @Override
method getNonTxConnection (line 116) | public Connection getNonTxConnection() throws SQLException {
method getNonTxConnection (line 128) | public Connection getNonTxConnection(String username, String password)...
method getTransactionManager (line 132) | private TransactionManager getTransactionManager() {
FILE: extension/datasource/src/main/java/cloud/piranha/extension/datasource/XADataSourceWrapper.java
class XADataSourceWrapper (line 51) | public class XADataSourceWrapper implements DataSource, XADataSource {
method XADataSourceWrapper (line 63) | public XADataSourceWrapper(XADataSource wrapped) {
method getWrapped (line 71) | public XADataSource getWrapped() {
method unwrap (line 75) | @Override
method isWrapperFor (line 84) | @Override
method getConnection (line 89) | @Override
method getConnection (line 94) | @Override
method getParentLogger (line 99) | @Override
method getLogWriter (line 104) | @Override
method setLogWriter (line 109) | @Override
method setLoginTimeout (line 114) | @Override
method getLoginTimeout (line 119) | @Override
method createShardingKeyBuilder (line 124) | @Override
method getXAConnection (line 129) | @Override
method getXAConnection (line 134) | @Override
FILE: extension/declared/src/main/java/cloud/piranha/extension/declared/DeclaredExtension.java
class DeclaredExtension (line 39) | public class DeclaredExtension implements WebApplicationExtension {
method DeclaredExtension (line 44) | public DeclaredExtension() {
method configure (line 52) | @Override
FILE: extension/declared/src/main/java/cloud/piranha/extension/declared/internal/InternalDeclaredInitializer.java
class InternalDeclaredInitializer (line 43) | public class InternalDeclaredInitializer implements ServletContainerInit...
method onStartup (line 45) | @Override
FILE: extension/declared/src/test/java/cloud/piranha/extension/declared/DeclaredExtensionTest.java
class DeclaredExtensionTest (line 40) | public class DeclaredExtensionTest {
method testConfigure (line 45) | @Test
FILE: extension/declared/src/test/java/cloud/piranha/extension/handlestypes/internal/InternalDeclaredInitializerTest.java
class InternalDeclaredInitializerTest (line 41) | public class InternalDeclaredInitializerTest {
method testOnStartup (line 46) | @Test
FILE: extension/eclipselink/src/main/java/cloud/piranha/extension/eclipselink/EclipseLinkCdiExtension.java
class EclipseLinkCdiExtension (line 46) | public class EclipseLinkCdiExtension implements Extension {
method EclipseLinkCdiExtension (line 51) | public EclipseLinkCdiExtension() {
method register (line 60) | public void register(@Observes BeforeBeanDiscovery beforeBean, BeanMan...
method processAnnotatedType (line 74) | public <T> void processAnnotatedType(@Observes ProcessAnnotatedType<T>...
method shouldInjectionAnnotationBeAdded (line 84) | private static <X> boolean shouldInjectionAnnotationBeAdded(AnnotatedM...
method addAnnotatedTypes (line 88) | private static void addAnnotatedTypes(BeforeBeanDiscovery beforeBean, ...
FILE: extension/eclipselink/src/main/java/cloud/piranha/extension/eclipselink/EclipseLinkExtension.java
class EclipseLinkExtension (line 43) | public class EclipseLinkExtension implements WebApplicationExtension {
method EclipseLinkExtension (line 53) | public EclipseLinkExtension() {
method configure (line 61) | @Override
FILE: extension/eclipselink/src/main/java/cloud/piranha/extension/eclipselink/EclipseLinkInitializer.java
class EclipseLinkInitializer (line 47) | public class EclipseLinkInitializer implements ServletContainerInitializ...
method EclipseLinkInitializer (line 57) | public EclipseLinkInitializer() {
method onStartup (line 67) | @Override
method isCDIEnabled (line 85) | private boolean isCDIEnabled() {
FILE: extension/eclipselink/src/main/java/cloud/piranha/extension/eclipselink/EntityManagerFactoryCreator.java
class EntityManagerFactoryCreator (line 65) | @ApplicationScoped
method EntityManagerFactoryCreator (line 81) | public EntityManagerFactoryCreator() {
method getAnnotationManager (line 89) | public AnnotationManager getAnnotationManager() {
method setAnnotationManager (line 98) | public void setAnnotationManager(AnnotationManager annotationManager) {
method get (line 107) | public EntityManagerFactory get(String unitName) {
method create (line 111) | @SuppressWarnings("removal")
method getDefaultPersistenceUnit (line 184) | private SEPersistenceUnitInfo getDefaultPersistenceUnit(JPAInitializer...
method getPersistenceUnitNames (line 196) | private Set<String> getPersistenceUnitNames(JPAInitializer persistence...
method lookupAsDataSource (line 215) | private DataSource lookupAsDataSource(String name) throws NamingExcept...
method getDefaultDataSource (line 229) | private DataSource getDefaultDataSource() {
FILE: extension/eclipselink/src/main/java/cloud/piranha/extension/eclipselink/EntityManagerProducer.java
class EntityManagerProducer (line 49) | public class EntityManagerProducer {
method EntityManagerProducer (line 54) | public EntityManagerProducer() {
method produce (line 62) | @Produces
method propertiesToMap (line 79) | private Map<Object, Object> propertiesToMap(PersistenceProperty[] prop...
FILE: extension/eclipselink/src/main/java/cloud/piranha/extension/eclipselink/NonTxEntityManagerHolder.java
class NonTxEntityManagerHolder (line 46) | @RequestScoped
method NonTxEntityManagerHolder (line 59) | public NonTxEntityManagerHolder() {
method computeIfAbsent (line 68) | public EntityManager computeIfAbsent(Supplier<EntityManager> entityMan...
FILE: extension/eclipselink/src/main/java/cloud/piranha/extension/eclipselink/PiranhaEntityManager.java
class PiranhaEntityManager (line 64) | public class PiranhaEntityManager extends EntityManagerWrapper implement...
method PiranhaEntityManager (line 111) | public PiranhaEntityManager(String unitName, PersistenceContextType co...
method getWrapped (line 118) | @Override
method persist (line 155) | @Override
method merge (line 162) | @Override
method remove (line 169) | @Override
method flush (line 176) | @Override
method refresh (line 183) | @Override
method refresh (
Condensed preview — 1176 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (4,717K chars).
[
{
"path": ".github/FUNDING.yml",
"chars": 15,
"preview": "github: mnriem\n"
},
{
"path": ".github/dependabot.yml",
"chars": 357,
"preview": "version: 2\nupdates:\n # Enable version updates for Maven\n - package-ecosystem: \"maven\"\n directory: \"/\"\n schedule:"
},
{
"path": ".github/workflows/current.yml",
"chars": 5085,
"preview": "name: current\non: \n push:\n branches:\n - 'current'\n tags-ignore:\n - 'v*'\n workflow_dispatch:\njobs:\n bu"
},
{
"path": ".github/workflows/docs.yml",
"chars": 1254,
"preview": "name: docs\non: \n workflow_dispatch:\n inputs:\n version:\n description: 'Release version'\n required:"
},
{
"path": ".github/workflows/experimental.yml",
"chars": 1159,
"preview": "name: experimental\non: \n schedule:\n - cron: \"0 0 * * 0\"\n workflow_dispatch:\njobs:\n build:\n if: github.repositor"
},
{
"path": ".github/workflows/pr.yml",
"chars": 1603,
"preview": "name: pr\non: \n pull_request:\n branches:\n - '*'\njobs:\n build:\n runs-on: ${{ matrix.os }}\n strategy:\n "
},
{
"path": ".github/workflows/release.yml",
"chars": 3293,
"preview": "name: release\non:\n push:\n tags: \n - v*\njobs:\n build:\n runs-on: ubuntu-latest\n steps:\n - name: "
},
{
"path": ".github/workflows/stale.yml",
"chars": 655,
"preview": "name: stale\non:\n schedule:\n - cron: \"0 0 * * *\"\n workflow_dispatch:\njobs:\n stale:\n if: github.repository == 'pira"
},
{
"path": ".github/workflows/tck-coreprofile.yml",
"chars": 6529,
"preview": "name: tck-coreprofile\non: \n schedule:\n - cron: \"0 0 * * *\"\n workflow_dispatch:\n inputs:\n branch:\n desc"
},
{
"path": ".github/workflows/trigger.yml",
"chars": 1194,
"preview": "name: trigger\non: \n workflow_dispatch:\n inputs:\n branch:\n description: 'Branch to release from'\n "
},
{
"path": ".gitignore",
"chars": 239,
"preview": ".classpath\n.factorypath\n.DS_Store\n.project\n.settings/\n.vscode\ndependency-reduced-pom.xml\nnb-configuration.xml\nnbactions."
},
{
"path": "CODE_CONVENTIONS.md",
"chars": 3342,
"preview": "Eclipse/Sun code conventions with\n* Spaces only\n* Indentation size 4 spaces\n* Maximum line width 160\n* Maximum width for"
},
{
"path": "CONTRIBUTING.md",
"chars": 1827,
"preview": "# Contributing\n\nHow can I contribute to Piranha? Well it all depends on the level of \ninvolvement you are aiming for. Th"
},
{
"path": "LICENSE",
"chars": 1596,
"preview": "\n Copyright (c) 2002-2021 Manorrock.com. All Rights Reserved.\n\n Redistribution and use in source and binary forms, w"
},
{
"path": "README.md",
"chars": 1001,
"preview": "\n\n# Piranha Project\n\n 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "arquillian/managed/src/main/java/cloud/piranha/arquillian/managed/ManagedPiranhaContainerConfiguration.java",
"chars": 9046,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "arquillian/managed/src/main/java/cloud/piranha/arquillian/managed/ManagedPiranhaContainerExtension.java",
"chars": 2265,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "arquillian/managed/src/main/java/module-info.java",
"chars": 2203,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "arquillian/managed/src/main/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension",
"chars": 66,
"preview": "cloud.piranha.arquillian.managed.ManagedPiranhaContainerExtension\n"
},
{
"path": "arquillian/managed/src/test/java/cloud/piranha/arquillian/managed/ManagedPiranhaContainerConfigurationTest.java",
"chars": 5856,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "arquillian/managed/src/test/java/cloud/piranha/arquillian/managed/ManagedPiranhaContainerExtensionTest.java",
"chars": 3086,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "arquillian/managed/src/test/java/cloud/piranha/arquillian/managed/ManagedPiranhaContainerTest.java",
"chars": 1371,
"preview": "package cloud.piranha.arquillian.managed;\n\nimport java.io.File;\nimport org.jboss.arquillian.container.spi.client.contain"
},
{
"path": "arquillian/managed/src/test/webapp/test/WEB-INF/web.xml",
"chars": 307,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<web-app xmlns=\"https://jakarta.ee/xml/ns/jakartaee\"\n xmlns:xsi=\"http://w"
},
{
"path": "arquillian/pom.xml",
"chars": 2730,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/"
},
{
"path": "arquillian/server/pom.xml",
"chars": 5442,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
},
{
"path": "arquillian/server/src/main/java/cloud/piranha/arquillian/server/PiranhaServerDeployableContainer.java",
"chars": 4371,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "arquillian/server/src/main/java/cloud/piranha/arquillian/server/PiranhaServerLoadableExtension.java",
"chars": 8345,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "arquillian/server/src/main/java/module-info.java",
"chars": 2130,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "arquillian/server/src/main/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension",
"chars": 62,
"preview": "cloud.piranha.arquillian.server.PiranhaServerLoadableExtension"
},
{
"path": "bom/pom.xml",
"chars": 11425,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project\n xmlns=\"http://maven.apache.org/POM/4.0.0\"\n xmlns:xsi=\"http://www"
},
{
"path": "core/api/pom.xml",
"chars": 1238,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/AnnotationInfo.java",
"chars": 2303,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/AnnotationManager.java",
"chars": 4418,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/AsyncDispatcher.java",
"chars": 1807,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/AsyncManager.java",
"chars": 2299,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/AttributeManager.java",
"chars": 2619,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/AuthenticatedIdentity.java",
"chars": 2774,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/CurrentRequestHolder.java",
"chars": 2575,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/DispatcherManager.java",
"chars": 2152,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/ErrorPageManager.java",
"chars": 2401,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/FilterEnvironment.java",
"chars": 3054,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/FilterMapping.java",
"chars": 2333,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/FilterPriority.java",
"chars": 2161,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/HandlesTypesManager.java",
"chars": 3894,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/HttpHeader.java",
"chars": 2104,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/HttpHeaderManager.java",
"chars": 3356,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/HttpSessionManager.java",
"chars": 5378,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/JspManager.java",
"chars": 2477,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/LocaleEncodingManager.java",
"chars": 2169,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/ModuleLayerProcessor.java",
"chars": 1932,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/MultiPartManager.java",
"chars": 2676,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/ObjectInstanceManager.java",
"chars": 2775,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/Piranha.java",
"chars": 1870,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/PiranhaBuilder.java",
"chars": 1913,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/PiranhaConfiguration.java",
"chars": 3753,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/SecurityConstraint.java",
"chars": 3773,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/SecurityManager.java",
"chars": 12295,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/SecurityRoleReference.java",
"chars": 2645,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/SecurityWebResourceCollection.java",
"chars": 3548,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/ServletEnvironment.java",
"chars": 3452,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/ServletInvocation.java",
"chars": 4716,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/ServletRequestManager.java",
"chars": 3110,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/WebApplication.java",
"chars": 11510,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/WebApplicationClassLoader.java",
"chars": 1871,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/WebApplicationExtension.java",
"chars": 2360,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/WebApplicationExtensionContext.java",
"chars": 3017,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/WebApplicationInputStream.java",
"chars": 7656,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/WebApplicationManager.java",
"chars": 6542,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/WebApplicationOutputStream.java",
"chars": 3392,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/WebApplicationPrintWriter.java",
"chars": 2295,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/WebApplicationRequest.java",
"chars": 4654,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/WebApplicationRequestMapper.java",
"chars": 6265,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/WebApplicationRequestMapping.java",
"chars": 2186,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/WebApplicationResponse.java",
"chars": 4079,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/WebApplicationServer.java",
"chars": 2862,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/WebApplicationServerRequestMapper.java",
"chars": 2284,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/cloud/piranha/core/api/WelcomeFileManager.java",
"chars": 2021,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/main/java/module-info.java",
"chars": 1904,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/api/src/test/java/cloud/piranha/core/api/AttributeManagerTest.java",
"chars": 4135,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/pom.xml",
"chars": 3959,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/AsyncHttpDispatchWrapper.java",
"chars": 9965,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/AsyncNonHttpDispatchWrapper.java",
"chars": 2253,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/CookieParser.java",
"chars": 4791,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultAnnotationManager.java",
"chars": 4817,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultAsyncContext.java",
"chars": 11731,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultAsyncDispatcher.java",
"chars": 4321,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultAsyncManager.java",
"chars": 2382,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultAttributeManager.java",
"chars": 2866,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultAuthenticatedIdentity.java",
"chars": 4637,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultCurrentRequestHolder.java",
"chars": 2463,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultDispatcherManager.java",
"chars": 2696,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultErrorPageManager.java",
"chars": 3487,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultFilterChain.java",
"chars": 6347,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultFilterEnvironment.java",
"chars": 8465,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultFilterMapping.java",
"chars": 3762,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultHttpHeader.java",
"chars": 2876,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultHttpHeaderManager.java",
"chars": 5396,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultHttpServletMapping.java",
"chars": 3435,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultHttpSession.java",
"chars": 6880,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultHttpSessionManager.java",
"chars": 18973,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultInvocationFinder.java",
"chars": 18013,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultJspConfigDescriptor.java",
"chars": 2476,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultJspManager.java",
"chars": 2537,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultLocaleEncodingManager.java",
"chars": 2861,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultModuleFinder.java",
"chars": 12743,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultModuleLayerProcessor.java",
"chars": 6182,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultModuleReader.java",
"chars": 3286,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultModuleReference.java",
"chars": 2644,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultMultiPartManager.java",
"chars": 2563,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultNamedRequestDispatcher.java",
"chars": 5901,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultObjectInstanceManager.java",
"chars": 4106,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultPiranha.java",
"chars": 2210,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultPiranhaBuilder.java",
"chars": 2800,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultPiranhaConfiguration.java",
"chars": 3601,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultPushBuilder.java",
"chars": 4441,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultSecurityManager.java",
"chars": 4347,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultServlet.java",
"chars": 4925,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultServletConnection.java",
"chars": 2438,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultServletEnvironment.java",
"chars": 8343,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultServletInvocation.java",
"chars": 7109,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultServletRequestDispatcher.java",
"chars": 36998,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultServletRequestManager.java",
"chars": 5755,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultTaglibDescriptor.java",
"chars": 2669,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultWebApplication.java",
"chars": 50996,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultWebApplicationBuilder.java",
"chars": 11115,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultWebApplicationClassLoader.java",
"chars": 3391,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultWebApplicationExtensionContext.java",
"chars": 4408,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultWebApplicationInputStream.java",
"chars": 2553,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultWebApplicationManager.java",
"chars": 7983,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultWebApplicationOutputStream.java",
"chars": 16927,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultWebApplicationPrintWriter.java",
"chars": 3285,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultWebApplicationRequest.java",
"chars": 42342,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultWebApplicationRequestBuilder.java",
"chars": 3484,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultWebApplicationRequestMapper.java",
"chars": 13676,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultWebApplicationRequestMapping.java",
"chars": 3735,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultWebApplicationResponse.java",
"chars": 21918,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultWebApplicationResponseBuilder.java",
"chars": 3749,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/DefaultWebConnection.java",
"chars": 2959,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/cloud/piranha/core/impl/WarFileExtractor.java",
"chars": 4029,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/main/java/module-info.java",
"chars": 1939,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/AsyncContextTest.java",
"chars": 12463,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/CookieParserTest.java",
"chars": 4551,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/DefaultAnnotationManagerTest.java",
"chars": 6148,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/DefaultErrorPageManagerTest.java",
"chars": 5487,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/DefaultFilterEnvironmentTest.java",
"chars": 9469,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/DefaultHttpHeaderManagerTest.java",
"chars": 5730,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/DefaultPiranhaConfigurationTest.java",
"chars": 4158,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/DefaultPushBuilderTest.java",
"chars": 5207,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/DefaultSecurityManagerTest.java",
"chars": 2231,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/DefaultServletEnvironmentTest.java",
"chars": 3405,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/DefaultWebApplicationBuilderTest.java",
"chars": 7262,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/DefaultWebApplicationClassLoaderTest.java",
"chars": 2671,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/DefaultWebApplicationExtensionContextTest.java",
"chars": 4729,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/DefaultWebApplicationManagerTest.java",
"chars": 6814,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/DefaultWebApplicationOutputStreamTest.java",
"chars": 3540,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/DefaultWebApplicationRequestMapperTest.java",
"chars": 16293,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/DefaultWebApplicationRequestMappingTest.java",
"chars": 3463,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/DefaultWebApplicationRequestTest.java",
"chars": 42286,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/DefaultWebApplicationResponseTest.java",
"chars": 47836,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/DefaultWebApplicationTest.java",
"chars": 72471,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/DefaultWebConnectionTest.java",
"chars": 3198,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/FilterTest.java",
"chars": 6763,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/HttpSessionTest.java",
"chars": 52204,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/ReadListenerTest.java",
"chars": 6367,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/RequestDispatcherTest.java",
"chars": 40682,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/ServletContextAttributeListenerTest.java",
"chars": 7754,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/ServletInputStreamTest.java",
"chars": 5208,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/ServletRegistrationTest.java",
"chars": 8062,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/ServletRequestAttributeListenerTest.java",
"chars": 7407,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/ServletTest.java",
"chars": 3909,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/TestChat1Servlet.java",
"chars": 7743,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/TestChat2Servlet.java",
"chars": 7760,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/TestEcho1Servlet.java",
"chars": 2544,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/TestEcho2Servlet.java",
"chars": 2567,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/TestHttpServerRequest.java",
"chars": 7146,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/TestHttpServerResponse.java",
"chars": 2891,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/TestIOExceptionServlet.java",
"chars": 2510,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/TestInclude2Servlet.java",
"chars": 2880,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/TestInclude3Servlet.java",
"chars": 2959,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/TestInclude4Servlet.java",
"chars": 3074,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/TestIncludeServlet.java",
"chars": 2927,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/TestRuntimeExceptionServlet.java",
"chars": 2540,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/TestSnoopServlet.java",
"chars": 10476,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/TestWebApplicationRequest.java",
"chars": 1801,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/TestWebApplicationResponse.java",
"chars": 2229,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/java/cloud/piranha/core/impl/WriteListenerTest.java",
"chars": 4267,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
},
{
"path": "core/impl/src/test/webapp/resourcepaths/catalog/index.html",
"chars": 0,
"preview": ""
},
{
"path": "core/impl/src/test/webapp/resourcepaths/catalog/offers/books.html",
"chars": 0,
"preview": ""
},
{
"path": "core/impl/src/test/webapp/resourcepaths/catalog/offers/music.html",
"chars": 0,
"preview": ""
},
{
"path": "core/impl/src/test/webapp/resourcepaths/catalog/products.html",
"chars": 0,
"preview": ""
},
{
"path": "core/impl/src/test/webapp/resourcepaths/customer/login.jsp",
"chars": 0,
"preview": ""
},
{
"path": "core/impl/src/test/webapp/resourcepaths/welcome.html",
"chars": 0,
"preview": ""
},
{
"path": "core/pom.xml",
"chars": 1835,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/"
},
{
"path": "debug/modules.sh",
"chars": 220,
"preview": "mvn --also-make dependency:tree | grep \"cloud.piranha\" | grep -v \"cloud.piranha.test\" | sed -E 's|.*(cloud)|cloud|' | s"
},
{
"path": "debug/pom.xml",
"chars": 29658,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/"
},
{
"path": "debug/src/main/java/cloud/piranha/debug/Debug.java",
"chars": 1868,
"preview": "/*\n * Copyright (c) 2002-2025 Manorrock.com. All Rights Reserved.\n *\n * Redistribution and use in source and binary form"
}
]
// ... and 976 more files (download for full content)
About this extraction
This page contains the full source code of the piranhacloud/piranha GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1176 files (4.3 MB), approximately 1.2M tokens, and a symbol index with 5074 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.