├── modules ├── jooby-cli │ ├── .gitignore │ └── src │ │ └── main │ │ └── resources │ │ ├── cli │ │ ├── gradle │ │ │ ├── settings.gradle.hbs │ │ │ └── gradle │ │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── conf │ │ │ ├── application.conf │ │ │ └── logback.xml │ │ ├── gradle.properties.hbs │ │ ├── Controller.kt.hbs │ │ ├── Controller.java.hbs │ │ ├── docker.gradle.hbs │ │ ├── README.md.hbs │ │ ├── App.kt.hbs │ │ └── docker.maven.hbs │ │ └── logback.xml ├── jooby-freemarker │ └── src │ │ ├── test │ │ └── resources │ │ │ ├── foo │ │ │ └── index.ftl │ │ │ └── views │ │ │ ├── locales.ftl │ │ │ └── index.ftl │ │ └── main │ │ └── java │ │ ├── io │ │ └── jooby │ │ │ └── freemarker │ │ │ └── package-info.java │ │ └── module-info.java ├── jooby-pebble │ └── src │ │ ├── test │ │ └── resources │ │ │ ├── messages.properties │ │ │ ├── messages_en_GB.properties │ │ │ ├── messages_de_AT.properties │ │ │ ├── messages_de.properties │ │ │ └── views │ │ │ ├── locales.peb │ │ │ └── index.peb │ │ └── main │ │ └── java │ │ ├── io │ │ └── jooby │ │ │ └── pebble │ │ │ └── package-info.java │ │ └── module-info.java ├── jooby-gradle-plugin │ ├── gradle.properties │ ├── settings.gradle │ ├── src │ │ └── main │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── gradle-plugins │ │ │ └── jooby.properties │ └── gradle │ │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── jooby-jetty │ └── src │ │ └── main │ │ ├── resources │ │ └── META-INF │ │ │ └── services │ │ │ └── io.jooby.Server │ │ └── java │ │ └── io │ │ └── jooby │ │ ├── jetty │ │ └── package-info.java │ │ └── internal │ │ └── jetty │ │ └── JettyStopPipeline.java ├── jooby-netty │ └── src │ │ └── main │ │ ├── resources │ │ └── META-INF │ │ │ └── services │ │ │ └── io.jooby.Server │ │ └── java │ │ └── io │ │ └── jooby │ │ └── netty │ │ └── package-info.java ├── jooby-vertx │ └── src │ │ └── main │ │ ├── resources │ │ └── META-INF │ │ │ └── services │ │ │ └── io.jooby.Server │ │ └── java │ │ ├── io │ │ └── jooby │ │ │ └── vertx │ │ │ └── package-info.java │ │ └── module-info.java ├── jooby-whoops │ ├── src │ │ ├── etc │ │ │ └── module-info.activator │ │ ├── main │ │ │ ├── resources │ │ │ │ └── io │ │ │ │ │ └── jooby │ │ │ │ │ └── whoops │ │ │ │ │ └── views │ │ │ │ │ ├── header_outer.html │ │ │ │ │ ├── panel_details.html │ │ │ │ │ ├── panel_details_outer.html │ │ │ │ │ ├── frames_container.html │ │ │ │ │ ├── panel_left.html │ │ │ │ │ └── panel_left_outer.html │ │ │ └── java │ │ │ │ ├── io │ │ │ │ └── jooby │ │ │ │ │ └── whoops │ │ │ │ │ └── package-info.java │ │ │ │ └── module-info.java │ │ └── test │ │ │ ├── resources │ │ │ └── whoops │ │ │ │ └── views │ │ │ │ ├── header_outer.html.php │ │ │ │ ├── panel_details.html.php │ │ │ │ ├── panel_details_outer.html.php │ │ │ │ ├── panel_left.html.php │ │ │ │ ├── panel_left_outer.html.php │ │ │ │ └── frames_container.html.php │ │ │ └── java │ │ │ └── examples │ │ │ └── utils │ │ │ └── Utils.java │ └── NOTE.md ├── jooby-log4j │ └── src │ │ └── main │ │ ├── resources │ │ └── META-INF │ │ │ └── services │ │ │ └── io.jooby.LoggingService │ │ └── java │ │ ├── io │ │ └── jooby │ │ │ └── log4j │ │ │ └── package-info.java │ │ └── module-info.java ├── jooby-undertow │ └── src │ │ └── main │ │ ├── resources │ │ └── META-INF │ │ │ └── services │ │ │ ├── io.jooby.Server │ │ │ └── io.undertow.protocols.alpn.ALPNProvider │ │ └── java │ │ ├── io │ │ └── jooby │ │ │ └── undertow │ │ │ └── package-info.java │ │ └── module-info.java ├── jooby-logback │ └── src │ │ └── main │ │ ├── resources │ │ └── META-INF │ │ │ └── services │ │ │ └── io.jooby.LoggingService │ │ └── java │ │ ├── io │ │ └── jooby │ │ │ └── logback │ │ │ └── package-info.java │ │ └── module-info.java ├── jooby-apt │ └── src │ │ ├── main │ │ └── resources │ │ │ └── META-INF │ │ │ ├── gradle │ │ │ └── incremental.annotation.processors │ │ │ └── services │ │ │ └── javax.annotation.processing.Processor │ │ └── test │ │ └── java │ │ ├── source │ │ ├── SomeInterface.java │ │ ├── CustomGenericType.java │ │ ├── EnumParam.java │ │ ├── TopEnum.java │ │ ├── EmptySubClassController.java │ │ ├── PrimitiveReturnType.java │ │ ├── MinRoute.java │ │ ├── VoidRoute.java │ │ ├── ArrayAnnotation.java │ │ ├── ClassAnnotation.java │ │ ├── SourceAnnotation.java │ │ ├── SubController.java │ │ ├── RoleAnnotation.java │ │ ├── RouteInjection.java │ │ ├── LinkAnnotation.java │ │ ├── JavaBeanParam.java │ │ ├── NoPathRoute.java │ │ ├── SuspendRoute.java │ │ ├── Controller1552Empty.java │ │ ├── RouteClassAttributes.java │ │ ├── Controller1786.java │ │ ├── TopAnnotation.java │ │ ├── Controller1786b.java │ │ ├── RouteDispatch.java │ │ └── StringArrayAnnotation.java │ │ ├── tests │ │ ├── i1807 │ │ │ ├── Word1807.java │ │ │ └── C1807.java │ │ ├── i3804 │ │ │ ├── Service3804.java │ │ │ ├── Base3804.java │ │ │ ├── C3804.java │ │ │ └── C3804b.java │ │ ├── i3472 │ │ │ ├── BindController.java │ │ │ ├── CustomBind.java │ │ │ ├── C3472e.java │ │ │ ├── BindBean.java │ │ │ ├── BeanMapping.java │ │ │ └── BindBeanConstructor.java │ │ ├── i3756 │ │ │ ├── S3756.java │ │ │ └── C3756.java │ │ ├── i3656 │ │ │ ├── B3656.java │ │ │ ├── C3656.java │ │ │ └── Issue3656.java │ │ ├── i3469 │ │ │ ├── Bar3469.java │ │ │ ├── Foo3469.java │ │ │ └── C3469FieldInject.java │ │ ├── i3539 │ │ │ ├── C3539.java │ │ │ └── Secured3525.java │ │ ├── i3476 │ │ │ └── Box.java │ │ ├── verifyarg │ │ │ ├── ControllerFlash.java │ │ │ ├── ControllerCookie.java │ │ │ ├── ControllerHeader.java │ │ │ ├── ControllerSession.java │ │ │ └── ControllerFlashOpt.java │ │ ├── CustomRouterName.java │ │ ├── i3468 │ │ │ └── C3468.java │ │ ├── i2026 │ │ │ └── C2026.java │ │ ├── i1814 │ │ │ └── U1814.java │ │ ├── i2325 │ │ │ ├── C2325.java │ │ │ └── MyID2325.java │ │ ├── i2405 │ │ │ ├── Bean2405.java │ │ │ └── C2405.java │ │ ├── i1806 │ │ │ └── C1806.java │ │ ├── i2417 │ │ │ └── C2417.java │ │ ├── i3737 │ │ │ └── C3737.java │ │ ├── i3507 │ │ │ └── C3507.java │ │ ├── completablefuture │ │ │ └── CCompletableFuture.java │ │ ├── i1859 │ │ │ └── C1859.java │ │ ├── i2525 │ │ │ └── MyID2525.java │ │ ├── i3455 │ │ │ └── Schema.java │ │ ├── validation │ │ │ └── Bean.java │ │ ├── i2629 │ │ │ └── C2629.java │ │ └── i3582 │ │ │ └── C3582.java │ │ └── io │ │ └── jooby │ │ └── apt │ │ └── validator │ │ └── FakeValidatorModule.java ├── jooby-conscrypt │ └── src │ │ └── main │ │ ├── resources │ │ └── META-INF │ │ │ └── services │ │ │ └── io.jooby.SslProvider │ │ └── java │ │ ├── io │ │ └── jooby │ │ │ └── conscrypt │ │ │ └── package-info.java │ │ └── module-info.java ├── jooby-handlebars │ └── src │ │ ├── test │ │ └── resources │ │ │ └── views │ │ │ └── index.hbs │ │ └── main │ │ └── java │ │ ├── module-info.java │ │ └── io │ │ └── jooby │ │ └── handlebars │ │ └── package-info.java ├── jooby-openapi │ └── src │ │ ├── test │ │ ├── resources │ │ │ ├── issues │ │ │ │ ├── i3820 │ │ │ │ │ └── schema.adoc │ │ │ │ ├── i2403 │ │ │ │ │ └── App2403 │ │ │ │ ├── i2594 │ │ │ │ │ └── App2594 │ │ │ │ └── i3578 │ │ │ │ │ ├── fail-unknown.yaml │ │ │ │ │ └── keep.yaml │ │ │ └── examples │ │ │ │ └── minapp.yaml │ │ ├── java │ │ │ ├── issues │ │ │ │ ├── i3729 │ │ │ │ │ ├── museum │ │ │ │ │ │ └── Tickets.java │ │ │ │ │ ├── App3729.java │ │ │ │ │ └── api │ │ │ │ │ │ ├── AppDemoLibrary.java │ │ │ │ │ │ ├── BookQuery.java │ │ │ │ │ │ ├── MountedRouter.java │ │ │ │ │ │ └── InstalledRouter.java │ │ │ │ ├── i1580 │ │ │ │ │ ├── Data1580.java │ │ │ │ │ ├── App1580.java │ │ │ │ │ └── Controller1580.java │ │ │ │ ├── i1581 │ │ │ │ │ ├── DaggerBuilder.java │ │ │ │ │ ├── DaggerAppComponent.java │ │ │ │ │ ├── AppComponent.java │ │ │ │ │ └── App1581.java │ │ │ │ ├── i2968 │ │ │ │ │ ├── App2968.java │ │ │ │ │ └── C2968.java │ │ │ │ ├── i1905 │ │ │ │ │ └── SubApp1905.java │ │ │ │ ├── i2046 │ │ │ │ │ ├── App2046b.java │ │ │ │ │ └── App2046.java │ │ │ │ ├── i1592 │ │ │ │ │ ├── App1592.java │ │ │ │ │ └── FairEmissionData.java │ │ │ │ ├── i2594 │ │ │ │ │ ├── WelcomeService2594.java │ │ │ │ │ ├── ControllersAppV12594.java │ │ │ │ │ ├── ControllersAppV22594.java │ │ │ │ │ └── ControllerV22594.java │ │ │ │ ├── i3578 │ │ │ │ │ └── MergePaths.java │ │ │ │ ├── i3059 │ │ │ │ │ ├── ControllerC3059.java │ │ │ │ │ ├── ControllerB3059.java │ │ │ │ │ ├── ControllerA3059.java │ │ │ │ │ ├── App3059A.java │ │ │ │ │ └── App3059B.java │ │ │ │ ├── i1794 │ │ │ │ │ ├── TestSuite.java │ │ │ │ │ └── App1794.java │ │ │ │ ├── i1805 │ │ │ │ │ └── App1805.java │ │ │ │ ├── i3760 │ │ │ │ │ ├── App3760.java │ │ │ │ │ └── Q3760.java │ │ │ │ ├── i3835 │ │ │ │ │ └── App3835.java │ │ │ │ ├── i1601 │ │ │ │ │ └── Controller1601.java │ │ │ │ ├── i1768 │ │ │ │ │ └── App1768.java │ │ │ │ ├── i1855 │ │ │ │ │ └── App1855.java │ │ │ │ ├── i1934 │ │ │ │ │ ├── App1934.java │ │ │ │ │ └── Controller1934.java │ │ │ │ ├── i2505 │ │ │ │ │ └── App2505.java │ │ │ │ ├── i2542 │ │ │ │ │ └── App2542.java │ │ │ │ ├── i3652 │ │ │ │ │ └── App3652.java │ │ │ │ ├── i3654 │ │ │ │ │ └── App3654.java │ │ │ │ ├── i1795 │ │ │ │ │ └── App1795.java │ │ │ │ ├── i3397 │ │ │ │ │ └── Controller3397.java │ │ │ │ ├── App1586.java │ │ │ │ ├── i1596 │ │ │ │ │ └── ClassLevelTagApp.java │ │ │ │ ├── i3820 │ │ │ │ │ └── App3820a.java │ │ │ │ ├── App1586b.java │ │ │ │ ├── App1586c.java │ │ │ │ ├── i3575 │ │ │ │ │ └── Controller3575.java │ │ │ │ ├── App1585.java │ │ │ │ └── i1573 │ │ │ │ │ ├── App1573.java │ │ │ │ │ └── Controller1573.java │ │ │ ├── examples │ │ │ │ ├── Bean.java │ │ │ │ ├── Letter.java │ │ │ │ ├── EmptySubClassController.java │ │ │ │ ├── RouteA.java │ │ │ │ ├── SubController.java │ │ │ │ ├── Person.java │ │ │ │ ├── BBean.java │ │ │ │ ├── MvcApp.java │ │ │ │ ├── OpenApiApp.java │ │ │ │ ├── FormMvcApp.java │ │ │ │ ├── MvcInstanceApp.java │ │ │ │ ├── RouteInline.java │ │ │ │ ├── MvcAppWithRoutes.java │ │ │ │ ├── ABean.java │ │ │ │ ├── ExternalReference.java │ │ │ │ ├── HandlerA.java │ │ │ │ ├── RouteImportReferences.java │ │ │ │ ├── PetRepo.java │ │ │ │ └── Pet.java │ │ │ └── javadoc │ │ │ │ └── input │ │ │ │ ├── EnumDoc.java │ │ │ │ ├── InterfaceDoc.java │ │ │ │ ├── RequestHandler.java │ │ │ │ ├── RecordBeanDoc.java │ │ │ │ ├── sub │ │ │ │ └── SubPackageHandler.java │ │ │ │ └── NoDoc.java │ │ └── kotlin │ │ │ └── kt │ │ │ ├── i3217 │ │ │ └── SomeBean3217.kt │ │ │ ├── i3746 │ │ │ ├── App3746.kt │ │ │ ├── RunAppWithServer.kt │ │ │ ├── RunAppInlineWithServer.kt │ │ │ ├── RunAppWithServerMode.kt │ │ │ └── RunAppInlineWithServerMode.kt │ │ │ ├── i1905 │ │ │ └── SubApp1905.kt │ │ │ ├── KtMvcApp.kt │ │ │ ├── KtMvcInstanceApp.kt │ │ │ ├── KtMvcObjectApp.kt │ │ │ ├── i2121 │ │ │ └── App2121.kt │ │ │ ├── KtMvcAppWithRoutes.kt │ │ │ ├── issues │ │ │ └── i2004 │ │ │ │ └── App2004.kt │ │ │ ├── KtAppWithMain.kt │ │ │ ├── i2598 │ │ │ └── App2598.kt │ │ │ ├── KtRouteIdioms.kt │ │ │ ├── i3230 │ │ │ └── App3230.kt │ │ │ ├── KtPathOperatorWithTags.kt │ │ │ ├── KtNoAppClass.kt │ │ │ └── KtRouteImport.kt │ │ └── main │ │ └── java │ │ └── io │ │ └── jooby │ │ └── internal │ │ └── openapi │ │ ├── asciidoc │ │ ├── ToSnippet.java │ │ └── ToAsciiDoc.java │ │ ├── javadoc │ │ └── PathDoc.java │ │ └── ResolvedSchemaExt.java ├── jooby-jte │ └── src │ │ └── main │ │ └── java │ │ ├── io │ │ └── jooby │ │ │ └── jte │ │ │ └── package-info.java │ │ └── module-info.java ├── jooby-jwt │ └── src │ │ └── main │ │ └── java │ │ └── io │ │ └── jooby │ │ └── jwt │ │ └── package-info.java ├── jooby-camel │ └── src │ │ └── main │ │ └── java │ │ ├── io │ │ └── jooby │ │ │ ├── camel │ │ │ └── package-info.java │ │ │ └── internal │ │ │ └── camel │ │ │ └── CamelBeans.java │ │ └── module-info.java ├── jooby-gson │ └── src │ │ ├── main │ │ └── java │ │ │ ├── io │ │ │ └── jooby │ │ │ │ └── gson │ │ │ │ └── package-info.java │ │ │ └── module-info.java │ │ └── test │ │ └── java │ │ └── io │ │ └── jooby │ │ └── gson │ │ └── Bean3434.java ├── jooby-guice │ └── src │ │ └── main │ │ └── java │ │ ├── io │ │ └── jooby │ │ │ └── guice │ │ │ └── package-info.java │ │ └── module-info.java ├── jooby-kafka │ └── src │ │ └── main │ │ └── java │ │ └── io │ │ └── jooby │ │ └── kafka │ │ └── package-info.java ├── jooby-redis │ └── src │ │ └── main │ │ └── java │ │ ├── io │ │ └── jooby │ │ │ └── redis │ │ │ └── package-info.java │ │ └── module-info.java ├── jooby-jasypt │ └── src │ │ └── main │ │ └── java │ │ └── io │ │ └── jooby │ │ └── jasypt │ │ └── package-info.java ├── jooby-mutiny │ └── src │ │ └── main │ │ └── java │ │ ├── io │ │ └── jooby │ │ │ └── mutiny │ │ │ └── package-info.java │ │ └── module-info.java ├── jooby-quartz │ └── src │ │ └── main │ │ └── java │ │ └── io │ │ └── jooby │ │ ├── quartz │ │ ├── package-info.java │ │ └── ExtendedJobExecutionContext.java │ │ └── internal │ │ └── quartz │ │ ├── DisallowConcurrentJobDelegate.java │ │ ├── PersistJobDataAfterJobDelegate.java │ │ └── StatefulJobDelegate.java ├── jooby-rocker │ └── src │ │ └── main │ │ └── java │ │ └── io │ │ └── jooby │ │ └── rocker │ │ └── package-info.java ├── jooby-yasson │ └── src │ │ └── main │ │ └── java │ │ ├── io │ │ └── jooby │ │ │ └── yasson │ │ │ └── package-info.java │ │ └── module-info.java ├── jooby-awssdk-v1 │ └── src │ │ └── main │ │ └── java │ │ └── io │ │ └── jooby │ │ └── awssdkv1 │ │ └── package-info.java ├── jooby-caffeine │ └── src │ │ └── main │ │ └── java │ │ ├── io │ │ └── jooby │ │ │ └── caffeine │ │ │ └── package-info.java │ │ └── module-info.java ├── jooby-graphiql │ └── src │ │ └── main │ │ └── java │ │ ├── io │ │ └── jooby │ │ │ └── graphiql │ │ │ └── package-info.java │ │ └── module-info.java ├── jooby-graphql │ └── src │ │ └── main │ │ └── java │ │ ├── io │ │ └── jooby │ │ │ └── graphql │ │ │ └── package-info.java │ │ └── module-info.java ├── jooby-jackson │ └── src │ │ └── main │ │ └── java │ │ └── io │ │ └── jooby │ │ └── jackson │ │ └── package-info.java ├── jooby-jstachio │ └── src │ │ └── main │ │ └── java │ │ └── io │ │ └── jooby │ │ └── jstachio │ │ └── package-info.java ├── jooby-metrics │ └── src │ │ └── main │ │ └── java │ │ ├── io │ │ └── jooby │ │ │ └── metrics │ │ │ └── package-info.java │ │ └── module-info.java ├── jooby-reactor │ └── src │ │ └── main │ │ └── java │ │ ├── io │ │ └── jooby │ │ │ └── reactor │ │ │ └── package-info.java │ │ └── module-info.java ├── jooby-rxjava3 │ └── src │ │ └── main │ │ └── java │ │ ├── io │ │ └── jooby │ │ │ └── rxjava3 │ │ │ └── package-info.java │ │ └── module-info.java ├── jooby-thymeleaf │ └── src │ │ └── main │ │ └── java │ │ ├── io │ │ └── jooby │ │ │ └── thymeleaf │ │ │ └── package-info.java │ │ └── module-info.java ├── jooby-avaje-jsonb │ └── src │ │ └── main │ │ └── java │ │ ├── io │ │ └── jooby │ │ │ └── avaje │ │ │ └── jsonb │ │ │ └── package-info.java │ │ └── module-info.java ├── jooby-avaje-inject │ └── src │ │ └── main │ │ └── java │ │ ├── io │ │ └── jooby │ │ │ └── avaje │ │ │ └── inject │ │ │ └── package-info.java │ │ └── module-info.java ├── jooby-commons-email │ └── src │ │ └── main │ │ └── java │ │ └── io │ │ └── jooby │ │ └── commons │ │ └── mail │ │ └── package-info.java ├── jooby-ebean │ └── src │ │ └── main │ │ └── java │ │ ├── io │ │ └── jooby │ │ │ └── ebean │ │ │ └── package-info.java │ │ └── module-info.java ├── jooby-jdbi │ └── src │ │ └── main │ │ └── java │ │ ├── io │ │ └── jooby │ │ │ └── jdbi │ │ │ └── package-info.java │ │ └── module-info.java ├── jooby-pac4j │ └── src │ │ └── main │ │ └── java │ │ ├── io │ │ └── jooby │ │ │ └── pac4j │ │ │ └── package-info.java │ │ └── module-info.java ├── jooby-flyway │ └── src │ │ └── main │ │ └── java │ │ ├── io │ │ └── jooby │ │ │ └── flyway │ │ │ └── package-info.java │ │ └── module-info.java ├── jooby-hikari │ └── src │ │ └── main │ │ └── java │ │ ├── io │ │ └── jooby │ │ │ └── hikari │ │ │ └── package-info.java │ │ └── module-info.java ├── jooby-test │ └── src │ │ ├── main │ │ └── java │ │ │ ├── io │ │ │ └── jooby │ │ │ │ └── test │ │ │ │ └── package-info.java │ │ │ └── module-info.java │ │ └── test │ │ ├── java │ │ └── io │ │ │ └── jooby │ │ │ └── test │ │ │ ├── PojoBody.java │ │ │ └── TestArgApp.java │ │ └── resources │ │ └── logback.xml ├── jooby-hibernate │ └── src │ │ └── main │ │ └── java │ │ ├── io │ │ └── jooby │ │ │ └── hibernate │ │ │ └── package-info.java │ │ └── module-info.java ├── jooby-kotlin │ └── src │ │ └── test │ │ └── kotlin │ │ └── io │ │ └── jooby │ │ └── kt │ │ └── SubApp.kt ├── jooby-swagger-ui │ └── package.json ├── jooby-db-scheduler │ └── src │ │ └── main │ │ └── java │ │ └── module-info.java ├── jooby-awssdk-v2 │ └── src │ │ └── main │ │ └── java │ │ └── module-info.java ├── jooby-redoc │ └── build.xml ├── jooby-avaje-validator │ └── src │ │ └── main │ │ └── java │ │ └── module-info.java └── jooby-hibernate-validator │ └── src │ └── main │ └── java │ └── module-info.java ├── .github └── FUNDING.yml ├── tests └── src │ ├── test │ ├── resources │ │ ├── singleroot │ │ ├── io │ │ │ └── jooby │ │ │ │ └── i3070 │ │ │ │ ├── test.txt │ │ │ │ └── tést.txt │ │ ├── www │ │ │ ├── about.html │ │ │ ├── index.html │ │ │ ├── note │ │ │ │ └── index.html │ │ │ ├── fallback.html │ │ │ └── foo.js │ │ ├── views │ │ │ ├── error.hbs │ │ │ ├── index.ftl │ │ │ ├── index.hbs │ │ │ ├── index.pebble │ │ │ ├── flash.hbs │ │ │ └── index.html │ │ ├── static │ │ │ └── js │ │ │ │ └── index.js │ │ ├── files │ │ │ └── fileupload.js │ │ └── logback.xml │ ├── www │ │ ├── note │ │ │ └── index.html │ │ ├── js │ │ │ └── index.js │ │ ├── css │ │ │ └── styles.css │ │ └── index.html │ ├── java │ │ ├── io │ │ │ └── jooby │ │ │ │ ├── i1905 │ │ │ │ ├── AService1905.java │ │ │ │ └── BService1905.java │ │ │ │ ├── i2923 │ │ │ │ └── Person2923.java │ │ │ │ ├── i3756 │ │ │ │ ├── S3756.java │ │ │ │ └── C3756.java │ │ │ │ ├── i2240 │ │ │ │ ├── Service2240.java │ │ │ │ └── ChildApp2240.java │ │ │ │ ├── i3418 │ │ │ │ ├── Bar3418.java │ │ │ │ └── Foo3418.java │ │ │ │ ├── i1292 │ │ │ │ └── Controller1292.java │ │ │ │ ├── i3508 │ │ │ │ └── data │ │ │ │ │ ├── HbvNewAccountRequest.java │ │ │ │ │ └── AvajeNewAccountRequest.java │ │ │ │ ├── problem │ │ │ │ └── data │ │ │ │ │ ├── MyCustomException.java │ │ │ │ │ ├── MyCustomExceptionToPropagate.java │ │ │ │ │ └── CustomError.java │ │ │ │ ├── i2457 │ │ │ │ ├── WelcomeService2457.java │ │ │ │ ├── ControllersAppV12457.java │ │ │ │ ├── ControllersAppV22457.java │ │ │ │ └── ControllerV22457.java │ │ │ │ ├── i3500 │ │ │ │ └── Widget.java │ │ │ │ ├── i1792 │ │ │ │ └── Controller1792.java │ │ │ │ ├── i2325 │ │ │ │ ├── C2325.java │ │ │ │ └── MyID2325.java │ │ │ │ ├── i3530 │ │ │ │ ├── Controller3530.java │ │ │ │ └── Bean3530.java │ │ │ │ ├── i1806 │ │ │ │ └── C1806.java │ │ │ │ ├── i2069 │ │ │ │ └── Bean2069.java │ │ │ │ ├── i3551 │ │ │ │ ├── Service3551.java │ │ │ │ ├── GuiceService3551.java │ │ │ │ └── JacksonModule3551.java │ │ │ │ ├── i3474 │ │ │ │ └── App3474.java │ │ │ │ ├── test │ │ │ │ ├── ByteCodePrinter.java │ │ │ │ ├── MyValue.java │ │ │ │ └── TestSupport.java │ │ │ │ ├── i2525 │ │ │ │ ├── Controller2525.java │ │ │ │ └── Foo2525.java │ │ │ │ ├── i2529 │ │ │ │ └── Controller2529.java │ │ │ │ ├── i1573 │ │ │ │ └── Controller1573.java │ │ │ │ ├── i1859 │ │ │ │ └── C1859.java │ │ │ │ ├── i2068 │ │ │ │ └── Bean2068.java │ │ │ │ ├── i3751 │ │ │ │ └── User3721.java │ │ │ │ ├── i1786 │ │ │ │ └── Controller1786.java │ │ │ │ ├── i3764 │ │ │ │ └── C3764.java │ │ │ │ └── i2477 │ │ │ │ └── Controller2477.java │ │ └── examples │ │ │ ├── multiapp │ │ │ ├── BarService.java │ │ │ └── FooService.java │ │ │ ├── JAXRS.java │ │ │ ├── Message.java │ │ │ ├── AppNoInstallServer.java │ │ │ ├── MyValueRouter.java │ │ │ ├── NoTopLevelPath.java │ │ │ ├── Role.java │ │ │ └── LoopDispatch.java │ └── kotlin │ │ ├── NoPckg.kt │ │ ├── i3476 │ │ └── C3476.kt │ │ ├── i3477 │ │ └── C3477.kt │ │ ├── io │ │ └── jooby │ │ │ └── App.kt │ │ ├── i2465 │ │ └── C2465.kt │ │ ├── i2598 │ │ └── App2598.kt │ │ └── i3490 │ │ └── Issue3490.kt │ └── main │ └── java │ └── io │ └── jooby │ └── Dummy.java ├── docs ├── .gitignore ├── asciidoc │ ├── modules.adoc │ ├── dependency-injection.adoc │ ├── modules │ │ ├── vertx-pg-client.adoc │ │ └── vertx-mysql-client.adoc │ └── handlers.adoc ├── images │ ├── logo.jpg │ ├── whoops.png │ ├── favicon96.png │ ├── self-signed-not-secure.png │ └── clippy.svg ├── README.md └── src │ └── main │ └── resources │ ├── META-INF │ └── services │ │ └── org.asciidoctor.jruby.extension.spi.ExtensionRegistry │ └── logback.xml ├── jooby └── src │ ├── test │ └── resources │ │ ├── env │ │ └── foo │ │ │ ├── application.prod.conf │ │ │ ├── application.test.conf │ │ │ ├── application.bar.conf │ │ │ └── application.conf │ │ ├── ssl │ │ ├── test.p12 │ │ └── trust.p12 │ │ ├── logback.xml │ │ └── log │ │ └── logback.xml │ └── main │ ├── resources │ └── io │ │ └── jooby │ │ └── ssl │ │ └── localhost.p12 │ └── java │ └── io │ └── jooby │ ├── handler │ └── package-info.java │ ├── annotation │ └── package-info.java │ ├── exception │ └── package-info.java │ ├── internal │ ├── output │ │ └── package-info.java │ ├── RouteTree.java │ ├── ContextInitializer.java │ └── RegistryRef.java │ ├── output │ └── package-info.java │ └── package-info.java ├── .dockerignore ├── .gitattributes ├── etc ├── source │ └── LICENSE ├── javadoc.sh └── build.sh ├── TODO ├── .editorconfig ├── .envrc └── .gitignore /modules/jooby-cli/.gitignore: -------------------------------------------------------------------------------- 1 | tmp 2 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: [jknack] 2 | -------------------------------------------------------------------------------- /tests/src/test/resources/singleroot: -------------------------------------------------------------------------------- 1 | abcd 2 | -------------------------------------------------------------------------------- /tests/src/test/www/note/index.html: -------------------------------------------------------------------------------- 1 | note.html 2 | -------------------------------------------------------------------------------- /docs/.gitignore: -------------------------------------------------------------------------------- 1 | out 2 | target 3 | site 4 | v1 5 | -------------------------------------------------------------------------------- /tests/src/test/resources/io/jooby/i3070/test.txt: -------------------------------------------------------------------------------- 1 | ASCII 2 | -------------------------------------------------------------------------------- /tests/src/test/resources/www/about.html: -------------------------------------------------------------------------------- 1 | about.html 2 | -------------------------------------------------------------------------------- /tests/src/test/resources/www/index.html: -------------------------------------------------------------------------------- 1 | index.html 2 | -------------------------------------------------------------------------------- /tests/src/test/resources/www/note/index.html: -------------------------------------------------------------------------------- 1 | note.html 2 | -------------------------------------------------------------------------------- /tests/src/test/www/js/index.js: -------------------------------------------------------------------------------- 1 | document.write(5 + 6); 2 | -------------------------------------------------------------------------------- /docs/asciidoc/modules.adoc: -------------------------------------------------------------------------------- 1 | include::modules/modules.adoc[] 2 | -------------------------------------------------------------------------------- /tests/src/test/resources/io/jooby/i3070/tést.txt: -------------------------------------------------------------------------------- 1 | NónASCII 2 | -------------------------------------------------------------------------------- /tests/src/test/resources/views/error.hbs: -------------------------------------------------------------------------------- 1 | {{statusCode}} 2 | -------------------------------------------------------------------------------- /tests/src/test/resources/views/index.ftl: -------------------------------------------------------------------------------- 1 | Hello ${name}! 2 | -------------------------------------------------------------------------------- /tests/src/test/resources/views/index.hbs: -------------------------------------------------------------------------------- 1 | Hello {{name}}! 2 | -------------------------------------------------------------------------------- /tests/src/test/resources/views/index.pebble: -------------------------------------------------------------------------------- 1 | Hello {{name}}! 2 | -------------------------------------------------------------------------------- /tests/src/test/resources/www/fallback.html: -------------------------------------------------------------------------------- 1 | fallback.html 2 | -------------------------------------------------------------------------------- /jooby/src/test/resources/env/foo/application.prod.conf: -------------------------------------------------------------------------------- 1 | foo=bazz 2 | -------------------------------------------------------------------------------- /jooby/src/test/resources/env/foo/application.test.conf: -------------------------------------------------------------------------------- 1 | foo=test 2 | -------------------------------------------------------------------------------- /tests/src/test/resources/views/flash.hbs: -------------------------------------------------------------------------------- 1 | Hello {{flash.name}}! 2 | -------------------------------------------------------------------------------- /jooby/src/test/resources/env/foo/application.bar.conf: -------------------------------------------------------------------------------- 1 | letters=[d] 2 | -------------------------------------------------------------------------------- /modules/jooby-freemarker/src/test/resources/foo/index.ftl: -------------------------------------------------------------------------------- 1 | ${local} 2 | -------------------------------------------------------------------------------- /jooby/src/test/resources/env/foo/application.conf: -------------------------------------------------------------------------------- 1 | foo=bar 2 | letters=[a, b, c] 3 | -------------------------------------------------------------------------------- /modules/jooby-pebble/src/test/resources/messages.properties: -------------------------------------------------------------------------------- 1 | greeting=Greetings! 2 | -------------------------------------------------------------------------------- /modules/jooby-pebble/src/test/resources/messages_en_GB.properties: -------------------------------------------------------------------------------- 1 | greeting=Hi! 2 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | **/node 2 | **/node_modules 3 | **/target 4 | **/package-lock.json 5 | -------------------------------------------------------------------------------- /modules/jooby-gradle-plugin/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.configuration-cache=true 2 | -------------------------------------------------------------------------------- /modules/jooby-gradle-plugin/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'jooby-gradle-plugin' 2 | -------------------------------------------------------------------------------- /modules/jooby-pebble/src/test/resources/messages_de_AT.properties: -------------------------------------------------------------------------------- 1 | greeting=Servus! 2 | -------------------------------------------------------------------------------- /tests/src/test/resources/www/foo.js: -------------------------------------------------------------------------------- 1 | (function () { 2 | console.log('...'); 3 | }); 4 | -------------------------------------------------------------------------------- /modules/jooby-freemarker/src/test/resources/views/locales.ftl: -------------------------------------------------------------------------------- 1 | ${someDate?string["EEEE"]} 2 | -------------------------------------------------------------------------------- /tests/src/test/resources/static/js/index.js: -------------------------------------------------------------------------------- 1 | (function () { console.log('index.js');}); 2 | -------------------------------------------------------------------------------- /docs/images/logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jooby-project/jooby/HEAD/docs/images/logo.jpg -------------------------------------------------------------------------------- /modules/jooby-pebble/src/test/resources/messages_de.properties: -------------------------------------------------------------------------------- 1 | greeting=Gr\u00fc\u00df Gott! 2 | -------------------------------------------------------------------------------- /modules/jooby-pebble/src/test/resources/views/locales.peb: -------------------------------------------------------------------------------- 1 | {{ i18n("messages","greeting") }} 2 | -------------------------------------------------------------------------------- /docs/images/whoops.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jooby-project/jooby/HEAD/docs/images/whoops.png -------------------------------------------------------------------------------- /modules/jooby-jetty/src/main/resources/META-INF/services/io.jooby.Server: -------------------------------------------------------------------------------- 1 | io.jooby.jetty.JettyServer 2 | -------------------------------------------------------------------------------- /modules/jooby-netty/src/main/resources/META-INF/services/io.jooby.Server: -------------------------------------------------------------------------------- 1 | io.jooby.netty.NettyServer 2 | -------------------------------------------------------------------------------- /modules/jooby-vertx/src/main/resources/META-INF/services/io.jooby.Server: -------------------------------------------------------------------------------- 1 | io.jooby.vertx.VertxServer 2 | -------------------------------------------------------------------------------- /tests/src/test/resources/files/fileupload.js: -------------------------------------------------------------------------------- 1 | (function () { 2 | console.log('ready'); 3 | })(); 4 | -------------------------------------------------------------------------------- /docs/images/favicon96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jooby-project/jooby/HEAD/docs/images/favicon96.png -------------------------------------------------------------------------------- /modules/jooby-cli/src/main/resources/cli/gradle/settings.gradle.hbs: -------------------------------------------------------------------------------- 1 | rootProject.name = '{{artifactId}}' 2 | -------------------------------------------------------------------------------- /modules/jooby-whoops/src/etc/module-info.activator: -------------------------------------------------------------------------------- 1 | Remove from module-info all content after: // SHADED: 2 | -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | doc generator 2 | ==== 3 | 4 | Jooby documentation generator 5 | 6 | mvn clean package 7 | -------------------------------------------------------------------------------- /modules/jooby-log4j/src/main/resources/META-INF/services/io.jooby.LoggingService: -------------------------------------------------------------------------------- 1 | io.jooby.log4j.Log4jService 2 | -------------------------------------------------------------------------------- /modules/jooby-undertow/src/main/resources/META-INF/services/io.jooby.Server: -------------------------------------------------------------------------------- 1 | io.jooby.undertow.UndertowServer 2 | -------------------------------------------------------------------------------- /modules/jooby-logback/src/main/resources/META-INF/services/io.jooby.LoggingService: -------------------------------------------------------------------------------- 1 | io.jooby.logback.LogbackService 2 | -------------------------------------------------------------------------------- /modules/jooby-freemarker/src/test/resources/views/index.ftl: -------------------------------------------------------------------------------- 1 | Hello ${user.firstname} ${user.lastname} ${local}${sign} 2 | -------------------------------------------------------------------------------- /modules/jooby-pebble/src/test/resources/views/index.peb: -------------------------------------------------------------------------------- 1 | Hello {{user.firstname}} {{user.lastname}} {{local}}{{sign}} 2 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.rb linguist-vendored 2 | *.gemspec linguist-vendored 3 | *.js linguist-vendored 4 | *.css linguist-vendored 5 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/main/resources/META-INF/gradle/incremental.annotation.processors: -------------------------------------------------------------------------------- 1 | io.jooby.apt.JoobyProcessor,dynamic 2 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/main/resources/META-INF/services/javax.annotation.processing.Processor: -------------------------------------------------------------------------------- 1 | io.jooby.apt.JoobyProcessor 2 | -------------------------------------------------------------------------------- /modules/jooby-conscrypt/src/main/resources/META-INF/services/io.jooby.SslProvider: -------------------------------------------------------------------------------- 1 | io.jooby.conscrypt.ConscryptSslProvider 2 | -------------------------------------------------------------------------------- /modules/jooby-handlebars/src/test/resources/views/index.hbs: -------------------------------------------------------------------------------- 1 | Hello {{user.firstname}} {{user.lastname}} {{local}}{{sign}} 2 | -------------------------------------------------------------------------------- /docs/images/self-signed-not-secure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jooby-project/jooby/HEAD/docs/images/self-signed-not-secure.png -------------------------------------------------------------------------------- /jooby/src/test/resources/ssl/test.p12: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jooby-project/jooby/HEAD/jooby/src/test/resources/ssl/test.p12 -------------------------------------------------------------------------------- /jooby/src/test/resources/ssl/trust.p12: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jooby-project/jooby/HEAD/jooby/src/test/resources/ssl/trust.p12 -------------------------------------------------------------------------------- /docs/src/main/resources/META-INF/services/org.asciidoctor.jruby.extension.spi.ExtensionRegistry: -------------------------------------------------------------------------------- 1 | io.jooby.adoc.JoobyExtensionRegistry 2 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/resources/issues/i3820/schema.adoc: -------------------------------------------------------------------------------- 1 | {{operation("POST", "/library/books") | request | body | json }} 2 | -------------------------------------------------------------------------------- /modules/jooby-whoops/src/main/resources/io/jooby/whoops/views/header_outer.html: -------------------------------------------------------------------------------- 1 |
2 | {% include "header" %} 3 |
4 | -------------------------------------------------------------------------------- /modules/jooby-whoops/src/test/resources/whoops/views/header_outer.html.php: -------------------------------------------------------------------------------- 1 |
2 | render($header) ?> 3 |
4 | -------------------------------------------------------------------------------- /modules/jooby-gradle-plugin/src/main/resources/META-INF/gradle-plugins/jooby.properties: -------------------------------------------------------------------------------- 1 | implementation-class=io.jooby.gradle.JoobyPlugin 2 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/resources/issues/i2403/App2403: -------------------------------------------------------------------------------- 1 | issues.i2403.Controller2403$Module 2 | issues.i2403.Controller2403Copy$Module 3 | -------------------------------------------------------------------------------- /modules/jooby-whoops/src/main/resources/io/jooby/whoops/views/panel_details.html: -------------------------------------------------------------------------------- 1 | {% include "frame_code" %} 2 | {% include "env_details" %} 3 | -------------------------------------------------------------------------------- /modules/jooby-undertow/src/main/resources/META-INF/services/io.undertow.protocols.alpn.ALPNProvider: -------------------------------------------------------------------------------- 1 | io.jooby.internal.undertow.ConscriptAlpnProvider 2 | -------------------------------------------------------------------------------- /modules/jooby-whoops/src/test/resources/whoops/views/panel_details.html.php: -------------------------------------------------------------------------------- 1 | render($frame_code) ?> 2 | render($env_details) ?> -------------------------------------------------------------------------------- /jooby/src/main/resources/io/jooby/ssl/localhost.p12: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jooby-project/jooby/HEAD/jooby/src/main/resources/io/jooby/ssl/localhost.p12 -------------------------------------------------------------------------------- /modules/jooby-jte/src/main/java/io/jooby/jte/package-info.java: -------------------------------------------------------------------------------- 1 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 2 | package io.jooby.jte; 3 | -------------------------------------------------------------------------------- /modules/jooby-jwt/src/main/java/io/jooby/jwt/package-info.java: -------------------------------------------------------------------------------- 1 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 2 | package io.jooby.jwt; 3 | -------------------------------------------------------------------------------- /etc/source/LICENSE: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | -------------------------------------------------------------------------------- /modules/jooby-camel/src/main/java/io/jooby/camel/package-info.java: -------------------------------------------------------------------------------- 1 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 2 | package io.jooby.camel; 3 | -------------------------------------------------------------------------------- /modules/jooby-gson/src/main/java/io/jooby/gson/package-info.java: -------------------------------------------------------------------------------- 1 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 2 | package io.jooby.gson; 3 | -------------------------------------------------------------------------------- /modules/jooby-guice/src/main/java/io/jooby/guice/package-info.java: -------------------------------------------------------------------------------- 1 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 2 | package io.jooby.guice; 3 | -------------------------------------------------------------------------------- /modules/jooby-kafka/src/main/java/io/jooby/kafka/package-info.java: -------------------------------------------------------------------------------- 1 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 2 | package io.jooby.kafka; 3 | -------------------------------------------------------------------------------- /modules/jooby-redis/src/main/java/io/jooby/redis/package-info.java: -------------------------------------------------------------------------------- 1 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 2 | package io.jooby.redis; 3 | -------------------------------------------------------------------------------- /modules/jooby-jasypt/src/main/java/io/jooby/jasypt/package-info.java: -------------------------------------------------------------------------------- 1 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 2 | package io.jooby.jasypt; 3 | -------------------------------------------------------------------------------- /modules/jooby-mutiny/src/main/java/io/jooby/mutiny/package-info.java: -------------------------------------------------------------------------------- 1 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 2 | package io.jooby.mutiny; 3 | -------------------------------------------------------------------------------- /modules/jooby-pebble/src/main/java/io/jooby/pebble/package-info.java: -------------------------------------------------------------------------------- 1 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 2 | package io.jooby.pebble; 3 | -------------------------------------------------------------------------------- /modules/jooby-quartz/src/main/java/io/jooby/quartz/package-info.java: -------------------------------------------------------------------------------- 1 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 2 | package io.jooby.quartz; 3 | -------------------------------------------------------------------------------- /modules/jooby-rocker/src/main/java/io/jooby/rocker/package-info.java: -------------------------------------------------------------------------------- 1 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 2 | package io.jooby.rocker; 3 | -------------------------------------------------------------------------------- /modules/jooby-whoops/src/main/java/io/jooby/whoops/package-info.java: -------------------------------------------------------------------------------- 1 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 2 | package io.jooby.whoops; 3 | -------------------------------------------------------------------------------- /modules/jooby-yasson/src/main/java/io/jooby/yasson/package-info.java: -------------------------------------------------------------------------------- 1 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 2 | package io.jooby.yasson; 3 | -------------------------------------------------------------------------------- /modules/jooby-awssdk-v1/src/main/java/io/jooby/awssdkv1/package-info.java: -------------------------------------------------------------------------------- 1 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 2 | package io.jooby.awssdkv1; 3 | -------------------------------------------------------------------------------- /modules/jooby-caffeine/src/main/java/io/jooby/caffeine/package-info.java: -------------------------------------------------------------------------------- 1 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 2 | package io.jooby.caffeine; 3 | -------------------------------------------------------------------------------- /modules/jooby-graphiql/src/main/java/io/jooby/graphiql/package-info.java: -------------------------------------------------------------------------------- 1 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 2 | package io.jooby.graphiql; 3 | -------------------------------------------------------------------------------- /modules/jooby-graphql/src/main/java/io/jooby/graphql/package-info.java: -------------------------------------------------------------------------------- 1 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 2 | package io.jooby.graphql; 3 | -------------------------------------------------------------------------------- /modules/jooby-jackson/src/main/java/io/jooby/jackson/package-info.java: -------------------------------------------------------------------------------- 1 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 2 | package io.jooby.jackson; 3 | -------------------------------------------------------------------------------- /modules/jooby-jstachio/src/main/java/io/jooby/jstachio/package-info.java: -------------------------------------------------------------------------------- 1 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 2 | package io.jooby.jstachio; 3 | -------------------------------------------------------------------------------- /modules/jooby-metrics/src/main/java/io/jooby/metrics/package-info.java: -------------------------------------------------------------------------------- 1 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 2 | package io.jooby.metrics; 3 | -------------------------------------------------------------------------------- /modules/jooby-reactor/src/main/java/io/jooby/reactor/package-info.java: -------------------------------------------------------------------------------- 1 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 2 | package io.jooby.reactor; 3 | -------------------------------------------------------------------------------- /modules/jooby-rxjava3/src/main/java/io/jooby/rxjava3/package-info.java: -------------------------------------------------------------------------------- 1 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 2 | package io.jooby.rxjava3; 3 | -------------------------------------------------------------------------------- /modules/jooby-freemarker/src/main/java/io/jooby/freemarker/package-info.java: -------------------------------------------------------------------------------- 1 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 2 | package io.jooby.freemarker; 3 | -------------------------------------------------------------------------------- /modules/jooby-gradle-plugin/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jooby-project/jooby/HEAD/modules/jooby-gradle-plugin/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /modules/jooby-thymeleaf/src/main/java/io/jooby/thymeleaf/package-info.java: -------------------------------------------------------------------------------- 1 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 2 | package io.jooby.thymeleaf; 3 | -------------------------------------------------------------------------------- /modules/jooby-whoops/src/main/resources/io/jooby/whoops/views/panel_details_outer.html: -------------------------------------------------------------------------------- 1 |
2 | {% include "panel_details" %} 3 |
4 | -------------------------------------------------------------------------------- /modules/jooby-whoops/src/test/resources/whoops/views/panel_details_outer.html.php: -------------------------------------------------------------------------------- 1 |
2 | render($panel_details) ?> 3 |
-------------------------------------------------------------------------------- /modules/jooby-avaje-jsonb/src/main/java/io/jooby/avaje/jsonb/package-info.java: -------------------------------------------------------------------------------- 1 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 2 | package io.jooby.avaje.jsonb; 3 | -------------------------------------------------------------------------------- /modules/jooby-cli/src/main/resources/cli/conf/application.conf: -------------------------------------------------------------------------------- 1 | # Application configuration file. See https://github.com/typesafehub/config/blob/master/HOCON.md for more details 2 | -------------------------------------------------------------------------------- /modules/jooby-whoops/src/main/resources/io/jooby/whoops/views/frames_container.html: -------------------------------------------------------------------------------- 1 |
2 | {% include "frame_list" %} 3 |
4 | -------------------------------------------------------------------------------- /docs/asciidoc/dependency-injection.adoc: -------------------------------------------------------------------------------- 1 | === Dependency Injection 2 | 3 | include::modules/avaje-inject.adoc[] 4 | 5 | include::di-dagger.adoc[] 6 | 7 | include::modules/guice.adoc[] 8 | -------------------------------------------------------------------------------- /jooby/src/main/java/io/jooby/handler/package-info.java: -------------------------------------------------------------------------------- 1 | /** Built-in middleware. */ 2 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 3 | package io.jooby.handler; 4 | -------------------------------------------------------------------------------- /modules/jooby-avaje-inject/src/main/java/io/jooby/avaje/inject/package-info.java: -------------------------------------------------------------------------------- 1 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 2 | package io.jooby.avaje.inject; 3 | -------------------------------------------------------------------------------- /modules/jooby-commons-email/src/main/java/io/jooby/commons/mail/package-info.java: -------------------------------------------------------------------------------- 1 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 2 | package io.jooby.commons.mail; 3 | -------------------------------------------------------------------------------- /modules/jooby-ebean/src/main/java/io/jooby/ebean/package-info.java: -------------------------------------------------------------------------------- 1 | /** Ebean module. */ 2 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 3 | package io.jooby.ebean; 4 | -------------------------------------------------------------------------------- /modules/jooby-jdbi/src/main/java/io/jooby/jdbi/package-info.java: -------------------------------------------------------------------------------- 1 | /** Jdbi module. */ 2 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 3 | package io.jooby.jdbi; 4 | -------------------------------------------------------------------------------- /modules/jooby-pac4j/src/main/java/io/jooby/pac4j/package-info.java: -------------------------------------------------------------------------------- 1 | /** Pac4j module. */ 2 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 3 | package io.jooby.pac4j; 4 | -------------------------------------------------------------------------------- /modules/jooby-whoops/src/main/resources/io/jooby/whoops/views/panel_left.html: -------------------------------------------------------------------------------- 1 | {% include "header_outer" %} 2 | {% include "frames_description" %} 3 | {% include "frames_container" %} 4 | -------------------------------------------------------------------------------- /modules/jooby-flyway/src/main/java/io/jooby/flyway/package-info.java: -------------------------------------------------------------------------------- 1 | /** Flyway module. */ 2 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 3 | package io.jooby.flyway; 4 | -------------------------------------------------------------------------------- /modules/jooby-hikari/src/main/java/io/jooby/hikari/package-info.java: -------------------------------------------------------------------------------- 1 | /** Hikari module. */ 2 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 3 | package io.jooby.hikari; 4 | -------------------------------------------------------------------------------- /modules/jooby-jetty/src/main/java/io/jooby/jetty/package-info.java: -------------------------------------------------------------------------------- 1 | /** Jetty Web Server. */ 2 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 3 | package io.jooby.jetty; 4 | -------------------------------------------------------------------------------- /modules/jooby-netty/src/main/java/io/jooby/netty/package-info.java: -------------------------------------------------------------------------------- 1 | /** Netty Web Server. */ 2 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 3 | package io.jooby.netty; 4 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/resources/issues/i2594/App2594: -------------------------------------------------------------------------------- 1 | issues.i2594.ControllerV12594$Module 2 | issues.i2594.ControllerV22594$Module 3 | issues.i2594.HealthController2594$Module 4 | 5 | -------------------------------------------------------------------------------- /modules/jooby-vertx/src/main/java/io/jooby/vertx/package-info.java: -------------------------------------------------------------------------------- 1 | /** Vertx Web Server. */ 2 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 3 | package io.jooby.vertx; 4 | -------------------------------------------------------------------------------- /modules/jooby-whoops/src/test/resources/whoops/views/panel_left.html.php: -------------------------------------------------------------------------------- 1 | render($header_outer); 3 | $tpl->render($frames_description); 4 | $tpl->render($frames_container); 5 | -------------------------------------------------------------------------------- /modules/jooby-cli/src/main/resources/cli/gradle.properties.hbs: -------------------------------------------------------------------------------- 1 | javaVersion=21 2 | {{#if kotlin}}systemProp.kotlinVersion={{kotlinVersion}}{{/if}} 3 | systemProp.joobyVersion={{joobyVersion}} 4 | -------------------------------------------------------------------------------- /modules/jooby-log4j/src/main/java/io/jooby/log4j/package-info.java: -------------------------------------------------------------------------------- 1 | /** Log4j logging system. */ 2 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 3 | package io.jooby.log4j; 4 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i3729/museum/Tickets.java: -------------------------------------------------------------------------------- 1 | package issues.i3729.museum; 2 | 3 | import io.jooby.annotation.Path; 4 | 5 | @Path("/tickets") 6 | public class Tickets { 7 | } 8 | -------------------------------------------------------------------------------- /modules/jooby-test/src/main/java/io/jooby/test/package-info.java: -------------------------------------------------------------------------------- 1 | /** Unit test support for Jooby. */ 2 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 3 | package io.jooby.test; 4 | -------------------------------------------------------------------------------- /modules/jooby-hibernate/src/main/java/io/jooby/hibernate/package-info.java: -------------------------------------------------------------------------------- 1 | /** Hibernate module. */ 2 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 3 | package io.jooby.hibernate; 4 | -------------------------------------------------------------------------------- /modules/jooby-undertow/src/main/java/io/jooby/undertow/package-info.java: -------------------------------------------------------------------------------- 1 | /** Undertow Web Server. */ 2 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 3 | package io.jooby.undertow; 4 | -------------------------------------------------------------------------------- /modules/jooby-whoops/src/test/resources/whoops/views/panel_left_outer.html.php: -------------------------------------------------------------------------------- 1 |
2 | render($panel_left) ?> 3 |
-------------------------------------------------------------------------------- /modules/jooby-whoops/src/main/resources/io/jooby/whoops/views/panel_left_outer.html: -------------------------------------------------------------------------------- 1 |
2 | {% include "panel_left" %} 3 |
4 | -------------------------------------------------------------------------------- /tests/src/test/resources/views/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |

5 | Hello World 6 |

7 | 8 | 9 | -------------------------------------------------------------------------------- /etc/javadoc.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | DIR=$(cd "$(dirname "$0")"; pwd) 4 | 5 | mvn javadoc:javadoc -P source -Dmaven.plugin.validation=VERBOSE -Dmaven.javadoc.failOnError=true -Dmaven.javadoc.failOnWarnings=true 6 | -------------------------------------------------------------------------------- /jooby/src/main/java/io/jooby/annotation/package-info.java: -------------------------------------------------------------------------------- 1 | /** Supported annotations for creating MVC routes. */ 2 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 3 | package io.jooby.annotation; 4 | -------------------------------------------------------------------------------- /jooby/src/main/java/io/jooby/exception/package-info.java: -------------------------------------------------------------------------------- 1 | /** Built-in exceptions for common HTTP error codes. */ 2 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 3 | package io.jooby.exception; 4 | -------------------------------------------------------------------------------- /jooby/src/main/java/io/jooby/internal/output/package-info.java: -------------------------------------------------------------------------------- 1 | @ReturnValuesAreNonnullByDefault 2 | package io.jooby.internal.output; 3 | 4 | import edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault; 5 | -------------------------------------------------------------------------------- /modules/jooby-cli/src/main/resources/cli/gradle/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jooby-project/jooby/HEAD/modules/jooby-cli/src/main/resources/cli/gradle/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /modules/jooby-conscrypt/src/main/java/io/jooby/conscrypt/package-info.java: -------------------------------------------------------------------------------- 1 | /** SSL support with conscrypt. */ 2 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 3 | package io.jooby.conscrypt; 4 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/resources/examples/minapp.yaml: -------------------------------------------------------------------------------- 1 | openapi: 3.0.1 2 | info: 3 | title: Base Yaml API 4 | description: Min API description 5 | version: "1.0" 6 | servers: 7 | - url: /myapp/path 8 | -------------------------------------------------------------------------------- /etc/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | DIR=$(cd "$(dirname "$0")"; pwd) 4 | 5 | if [ -x "$(command -v mvnd)" ]; then 6 | mvnd clean -P gradlePlugin package 7 | else 8 | mvn clean -P gradlePlugin package 9 | fi 10 | -------------------------------------------------------------------------------- /tests/src/main/java/io/jooby/Dummy.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby; 7 | 8 | public class Dummy {} 9 | -------------------------------------------------------------------------------- /tests/src/test/www/css/styles.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: lightblue; 3 | } 4 | 5 | h1 { 6 | color: white; 7 | text-align: center; 8 | } 9 | 10 | p { 11 | font-family: verdana; 12 | font-size: 20px; 13 | } 14 | -------------------------------------------------------------------------------- /tests/src/test/www/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Title of the document 6 | 7 | 8 | Content of the document...... 9 | 10 | 11 | -------------------------------------------------------------------------------- /modules/jooby-whoops/src/test/resources/whoops/views/frames_container.html.php: -------------------------------------------------------------------------------- 1 |
2 | render($frame_list) ?> 3 |
-------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/examples/Bean.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package examples; 7 | 8 | public class Bean {} 9 | -------------------------------------------------------------------------------- /jooby/src/main/java/io/jooby/output/package-info.java: -------------------------------------------------------------------------------- 1 | /** Output used to support multiple implementations like byte array, byte buffer, netty buffers. */ 2 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 3 | package io.jooby.output; 4 | -------------------------------------------------------------------------------- /modules/jooby-logback/src/main/java/io/jooby/logback/package-info.java: -------------------------------------------------------------------------------- 1 | /** Logback as logging service. */ 2 | @ReturnValuesAreNonnullByDefault 3 | package io.jooby.logback; 4 | 5 | import edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault; 6 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/source/SomeInterface.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package source; 7 | 8 | public interface SomeInterface {} 9 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/i1807/Word1807.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.i1807; 7 | 8 | public class Word1807 {} 9 | -------------------------------------------------------------------------------- /modules/jooby-handlebars/src/main/java/module-info.java: -------------------------------------------------------------------------------- 1 | module io.jooby.handlebars { 2 | exports io.jooby.handlebars; 3 | 4 | requires static com.github.spotbugs.annotations; 5 | requires io.jooby; 6 | requires com.github.jknack.handlebars; 7 | } 8 | -------------------------------------------------------------------------------- /tests/src/test/java/io/jooby/i1905/AService1905.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.i1905; 7 | 8 | public class AService1905 {} 9 | -------------------------------------------------------------------------------- /tests/src/test/java/io/jooby/i1905/BService1905.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.i1905; 7 | 8 | public class BService1905 {} 9 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/i3804/Service3804.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.i3804; 7 | 8 | public class Service3804 {} 9 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i1580/Data1580.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i1580; 7 | 8 | public class Data1580 {} 9 | -------------------------------------------------------------------------------- /modules/jooby-test/src/test/java/io/jooby/test/PojoBody.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.test; 7 | 8 | public class PojoBody {} 9 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/source/CustomGenericType.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package source; 7 | 8 | public class CustomGenericType {} 9 | -------------------------------------------------------------------------------- /modules/jooby-cli/src/main/resources/cli/Controller.kt.hbs: -------------------------------------------------------------------------------- 1 | package {{package}} 2 | 3 | import io.jooby.annotation.* 4 | 5 | @Path("/") 6 | class Controller { 7 | 8 | @GET 9 | fun sayHi(): String { 10 | return "Welcome to Jooby!" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /modules/jooby-gson/src/test/java/io/jooby/gson/Bean3434.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.gson; 7 | 8 | public record Bean3434(String text) {} 9 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/kotlin/kt/i3217/SomeBean3217.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package kt.i3217 7 | 8 | data class SomeBean3217(val name: String) 9 | -------------------------------------------------------------------------------- /modules/jooby-cli/src/main/resources/cli/Controller.java.hbs: -------------------------------------------------------------------------------- 1 | package {{package}}; 2 | 3 | import io.jooby.annotation.*; 4 | 5 | @Path("/") 6 | public class Controller { 7 | 8 | @GET 9 | public String sayHi() { 10 | return "Welcome to Jooby!"; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /modules/jooby-kotlin/src/test/kotlin/io/jooby/kt/SubApp.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.kt 7 | 8 | class SubApp : Kooby({ get("/") { "Kotlin" } }) 9 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/source/EnumParam.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package source; 7 | 8 | public enum EnumParam { 9 | A, 10 | B 11 | } 12 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/source/TopEnum.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package source; 7 | 8 | public enum TopEnum { 9 | FOO, 10 | BAR 11 | } 12 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/i3472/BindController.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.i3472; 7 | 8 | public record BindController(String value) {} 9 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/examples/Letter.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package examples; 7 | 8 | public enum Letter { 9 | A, 10 | 11 | B 12 | } 13 | -------------------------------------------------------------------------------- /tests/src/test/java/io/jooby/i2923/Person2923.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.i2923; 7 | 8 | public record Person2923(String firstname, String lastname) {} 9 | -------------------------------------------------------------------------------- /modules/jooby-swagger-ui/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jooby-swagger-ui", 3 | "version": "4.0.0", 4 | "private": true, 5 | "license": "ASF", 6 | "dependencies": { 7 | "swagger-ui-dist": "^5.31.0" 8 | }, 9 | "scarfSettings": { 10 | "enabled": false 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /tests/src/test/java/io/jooby/i3756/S3756.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.i3756; 7 | 8 | public interface S3756 { 9 | void accept(String s); 10 | } 11 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/i3756/S3756.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.i3756; 7 | 8 | public interface S3756 { 9 | void accept(String s); 10 | } 11 | -------------------------------------------------------------------------------- /modules/jooby-cli/src/main/resources/cli/gradle/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | zipStoreBase=GRADLE_USER_HOME 4 | zipStorePath=wrapper/dists 5 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip 6 | -------------------------------------------------------------------------------- /modules/jooby-whoops/NOTE.md: -------------------------------------------------------------------------------- 1 | To make a new release: 2 | 3 | - https://github.com/filp/whoops/tags 4 | - This repo used 2.15.4 5 | - Unzip the release 6 | - copy *.php files to test/resources/whoops/views 7 | - Run GenerateHTML 8 | - Verify all php lines were converted (manually) 9 | - Run WhoopsTest 10 | -------------------------------------------------------------------------------- /TODO: -------------------------------------------------------------------------------- 1 | 4.x 2 | 3 | - review onComplete, the relationship with thread-locals variables. Where onComplete must run?? event-loop? separated thread? It depends on task 4 | - review save session, similar to previous point. It depends on the kind of session where must run 5 | - review requestCompleted, similar to previous point 6 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/i3656/B3656.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.i3656; 7 | 8 | import io.jooby.annotation.Path; 9 | 10 | @Path("/b3656") 11 | public class B3656 {} 12 | -------------------------------------------------------------------------------- /modules/jooby-jetty/src/main/java/io/jooby/internal/jetty/JettyStopPipeline.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.internal.jetty; 7 | 8 | public class JettyStopPipeline extends RuntimeException {} 9 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/i3469/Bar3469.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.i3469; 7 | 8 | public class Bar3469 { 9 | public String bar() { 10 | return "bar"; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/i3469/Foo3469.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.i3469; 7 | 8 | public class Foo3469 { 9 | public String foo() { 10 | return "foo"; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /modules/jooby-test/src/main/java/module-info.java: -------------------------------------------------------------------------------- 1 | /** Jooby test module. */ 2 | module io.jooby.test { 3 | exports io.jooby.test; 4 | 5 | requires io.jooby; 6 | requires static com.github.spotbugs.annotations; 7 | requires typesafe.config; 8 | requires org.slf4j; 9 | requires org.junit.jupiter.api; 10 | } 11 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/kotlin/kt/i3746/App3746.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package kt.i3746 7 | 8 | import io.jooby.kt.Kooby 9 | 10 | class App3746 : Kooby({ get("/3746") { ctx.requestPath } }) 11 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/i3656/C3656.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.i3656; 7 | 8 | import io.jooby.annotation.Path; 9 | 10 | @Path("/c3656") 11 | public class C3656 extends B3656 {} 12 | -------------------------------------------------------------------------------- /tests/src/test/java/io/jooby/i2240/Service2240.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.i2240; 7 | 8 | public class Service2240 { 9 | 10 | public String foo() { 11 | return "OK"; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /modules/jooby-gradle-plugin/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/i3472/CustomBind.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.i3472; 7 | 8 | import io.jooby.annotation.BindParam; 9 | 10 | @BindParam(BeanMapping.class) 11 | public @interface CustomBind {} 12 | -------------------------------------------------------------------------------- /modules/jooby-db-scheduler/src/main/java/module-info.java: -------------------------------------------------------------------------------- 1 | module io.jooby.dbscheduler { 2 | exports io.jooby.dbscheduler; 3 | 4 | requires io.jooby; 5 | requires static com.github.spotbugs.annotations; 6 | requires typesafe.config; 7 | requires java.sql; 8 | requires com.github.kagkarlsson.scheduler; 9 | requires org.slf4j; 10 | } 11 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/io/jooby/apt/validator/FakeValidatorModule.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.apt.validator; 7 | 8 | // keep it so we make BeanValidator test to run OK 9 | public class FakeValidatorModule {} 10 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/i3804/Base3804.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.i3804; 7 | 8 | import jakarta.inject.Inject; 9 | 10 | public class Base3804 { 11 | @Inject protected Service3804 paramDecoder; 12 | } 13 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i1581/DaggerBuilder.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i1581; 7 | 8 | public class DaggerBuilder { 9 | public AppComponent build() { 10 | return new AppComponent(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/kotlin/kt/i3746/RunAppWithServer.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package kt.i3746 7 | 8 | import io.jooby.kt.runApp 9 | 10 | fun main(args: Array) { 11 | runApp(args, Server3746(), ::App3746) 12 | } 13 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 2 6 | end_of_line = lf 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | continuation_indent_size = 4 11 | max_line_length = 100 12 | 13 | [*.md] 14 | trim_trailing_whitespace = false 15 | 16 | [*.adoc] 17 | trim_trailing_whitespace = false -------------------------------------------------------------------------------- /modules/jooby-awssdk-v2/src/main/java/module-info.java: -------------------------------------------------------------------------------- 1 | module io.jooby.awssdkv2 { 2 | exports io.jooby.awssdkv2; 3 | 4 | requires io.jooby; 5 | requires typesafe.config; 6 | requires com.github.spotbugs.annotations; 7 | requires software.amazon.awssdk.core; 8 | requires software.amazon.awssdk.auth; 9 | requires software.amazon.awssdk.utils; 10 | } 11 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i2968/App2968.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i2968; 7 | 8 | import io.jooby.Jooby; 9 | 10 | public class App2968 extends Jooby { 11 | 12 | { 13 | mvc(new C2968_()); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/source/EmptySubClassController.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package source; 7 | 8 | import io.jooby.annotation.Path; 9 | 10 | @Path("/override") 11 | public class EmptySubClassController extends BaseController {} 12 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/kotlin/kt/i1905/SubApp1905.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package kt.i1905 7 | 8 | import io.jooby.Context 9 | import io.jooby.kt.Kooby 10 | 11 | class SubApp1905 : Kooby({ get("/sub") { _: Context? -> "null context" } }) 12 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/i3539/C3539.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.i3539; 7 | 8 | import io.jooby.annotation.GET; 9 | 10 | public class C3539 { 11 | @GET("/3539") 12 | @Secured3525 13 | public void secured() {} 14 | } 15 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/examples/EmptySubClassController.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package examples; 7 | 8 | import io.jooby.annotation.Path; 9 | 10 | @Path("/override") 11 | public class EmptySubClassController extends BaseController {} 12 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i1905/SubApp1905.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i1905; 7 | 8 | import io.jooby.Jooby; 9 | 10 | public class SubApp1905 extends Jooby { 11 | { 12 | get("/sub", ctx -> "OK"); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i1581/DaggerAppComponent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i1581; 7 | 8 | public class DaggerAppComponent { 9 | public static DaggerBuilder builder() { 10 | return new DaggerBuilder(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i2046/App2046b.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i2046; 7 | 8 | import io.jooby.Jooby; 9 | 10 | public class App2046b extends Jooby { 11 | 12 | { 13 | get("/2046b", ctx -> ".."); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/javadoc/input/EnumDoc.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package javadoc.input; 7 | 8 | /** Enum summary. Enum desc. */ 9 | public enum EnumDoc { 10 | /** Foo doc. */ 11 | Foo, 12 | 13 | /** Bar doc. */ 14 | Bar 15 | } 16 | -------------------------------------------------------------------------------- /tests/src/test/java/io/jooby/i3418/Bar3418.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.i3418; 7 | 8 | import io.jooby.Jooby; 9 | 10 | public class Bar3418 extends Jooby { 11 | { 12 | get("/app", ctx -> getClass().getSimpleName()); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /tests/src/test/java/io/jooby/i3418/Foo3418.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.i3418; 7 | 8 | import io.jooby.Jooby; 9 | 10 | public class Foo3418 extends Jooby { 11 | { 12 | get("/app", ctx -> getClass().getSimpleName()); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/i3476/Box.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.i3476; 7 | 8 | public class Box { 9 | private T value; 10 | 11 | public Box(T value) {} 12 | 13 | public T getValue() { 14 | return value; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /modules/jooby-whoops/src/test/java/examples/utils/Utils.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package examples.utils; 7 | 8 | public class Utils { 9 | public static Object fail(Object id) { 10 | throw new IllegalArgumentException("Something Broke!"); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /tests/src/test/java/examples/multiapp/BarService.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package examples.multiapp; 7 | 8 | public class BarService { 9 | public BarService() {} 10 | 11 | public String hello(String name) { 12 | return "Bar: " + name; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /tests/src/test/java/examples/multiapp/FooService.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package examples.multiapp; 7 | 8 | public class FooService { 9 | public FooService() {} 10 | 11 | public String hello(String name) { 12 | return "Foo: " + name; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/source/PrimitiveReturnType.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package source; 7 | 8 | import io.jooby.annotation.GET; 9 | 10 | public class PrimitiveReturnType { 11 | @GET 12 | public int returnType() { 13 | return 0; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/kotlin/kt/i3746/RunAppInlineWithServer.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package kt.i3746 7 | 8 | import io.jooby.kt.runApp 9 | 10 | fun main(args: Array) { 11 | runApp(args, Server3746()) { get("/3746") { ctx.requestPath } } 12 | } 13 | -------------------------------------------------------------------------------- /tests/src/test/java/io/jooby/i1292/Controller1292.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.i1292; 7 | 8 | import io.jooby.annotation.GET; 9 | 10 | public class Controller1292 { 11 | @GET 12 | public String response() { 13 | return "mvc"; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /tests/src/test/java/io/jooby/i3508/data/HbvNewAccountRequest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.i3508.data; 7 | 8 | import jakarta.validation.Valid; 9 | 10 | @Valid @HbvPasswordsShouldMatch 11 | public class HbvNewAccountRequest extends NewAccountRequest {} 12 | -------------------------------------------------------------------------------- /tests/src/test/java/io/jooby/problem/data/MyCustomException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.problem.data; 7 | 8 | class MyCustomException extends RuntimeException { 9 | public MyCustomException(String message) { 10 | super(message); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/source/MinRoute.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package source; 7 | 8 | import io.jooby.annotation.GET; 9 | 10 | public class MinRoute { 11 | @GET("/mypath") 12 | public String controllerMethod() { 13 | return "/mypath"; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/kotlin/kt/KtMvcApp.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package kt 7 | 8 | import io.jooby.kt.Kooby 9 | import io.jooby.openapi.MvcExtensionGenerator.toMvcExtension 10 | 11 | class KtMvcApp : Kooby({ mvc(toMvcExtension(KtController::class.java)) }) 12 | -------------------------------------------------------------------------------- /tests/src/test/java/io/jooby/i2457/WelcomeService2457.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.i2457; 7 | 8 | public class WelcomeService2457 { 9 | 10 | public String welcome(String version) { 11 | return "[API " + version + "] Welcome Jooby!"; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /jooby/src/test/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | %-5p [%d{ISO8601}] [%thread] %msg%n 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i1592/App1592.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i1592; 7 | 8 | import io.jooby.Jooby; 9 | 10 | public class App1592 extends Jooby { 11 | 12 | { 13 | post("/nested", ctx -> ctx.body(FairData.class)); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /tests/src/test/java/io/jooby/i2240/ChildApp2240.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.i2240; 7 | 8 | import io.jooby.Jooby; 9 | 10 | public class ChildApp2240 extends Jooby { 11 | 12 | { 13 | get("/child", ctx -> require(Service2240.class).foo()); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /tests/src/test/java/io/jooby/i3508/data/AvajeNewAccountRequest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.i3508.data; 7 | 8 | import jakarta.validation.Valid; 9 | 10 | @Valid @AvajePasswordsShouldMatch 11 | public class AvajeNewAccountRequest extends NewAccountRequest {} 12 | -------------------------------------------------------------------------------- /jooby/src/test/resources/log/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | %-5p [%d{ISO8601}] [%thread] %msg%n 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/main/java/io/jooby/internal/openapi/asciidoc/ToSnippet.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.internal.openapi.asciidoc; 7 | 8 | import java.util.Map; 9 | 10 | public interface ToSnippet { 11 | String render(Map options); 12 | } 13 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/examples/RouteA.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package examples; 7 | 8 | import io.jooby.Context; 9 | import io.jooby.Jooby; 10 | 11 | public class RouteA extends Jooby { 12 | 13 | { 14 | get("/a/1", Context::getRequestPath); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i2594/WelcomeService2594.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i2594; 7 | 8 | public class WelcomeService2594 { 9 | 10 | public String welcome(String version) { 11 | return "[API " + version + "] Welcome Jooby!"; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /tests/src/test/kotlin/NoPckg.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | import io.jooby.ExecutionMode 7 | import io.jooby.kt.runApp 8 | 9 | data class SearchQuery(val q: String) 10 | 11 | fun main(args: Array) { 12 | runApp(args, ExecutionMode.EVENT_LOOP) { get("/") { ":+1" } } 13 | } 14 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/kotlin/kt/KtMvcInstanceApp.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package kt 7 | 8 | import io.jooby.kt.Kooby 9 | import io.jooby.openapi.MvcExtensionGenerator.toMvcExtension 10 | 11 | class KtMvcInstanceApp : Kooby({ mvc(toMvcExtension(KtController::class.java)) }) 12 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/kotlin/kt/KtMvcObjectApp.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package kt 7 | 8 | import io.jooby.kt.Kooby 9 | import io.jooby.openapi.MvcExtensionGenerator.toMvcExtension 10 | 11 | class KtMvcObjectApp : Kooby({ mvc(toMvcExtension(KtObjectController::class.java)) }) 12 | -------------------------------------------------------------------------------- /modules/jooby-test/src/test/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | %-5p [%d{ISO8601}] [%thread] %msg%n 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /tests/src/test/java/io/jooby/i3500/Widget.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.i3500; 7 | 8 | public class Widget { 9 | private int id; 10 | 11 | public int getId() { 12 | return id; 13 | } 14 | 15 | public void setId(int id) { 16 | this.id = id; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /tests/src/test/kotlin/i3476/C3476.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package i3476 7 | 8 | import io.jooby.annotation.GET 9 | import io.jooby.annotation.QueryParam 10 | 11 | class C3476 { 12 | @GET("/3476") fun shouldGenerateGenerics(@QueryParam bean: List): List = listOf() 13 | } 14 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/source/VoidRoute.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package source; 7 | 8 | import io.jooby.annotation.DELETE; 9 | import io.jooby.annotation.Path; 10 | 11 | @Path("/void") 12 | public class VoidRoute { 13 | 14 | @DELETE 15 | public void noContent() {} 16 | } 17 | -------------------------------------------------------------------------------- /modules/jooby-graphiql/src/main/java/module-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | /** GraphQL module. */ 7 | module io.jooby.graphiql { 8 | exports io.jooby.graphiql; 9 | 10 | requires io.jooby; 11 | requires static com.github.spotbugs.annotations; 12 | requires typesafe.config; 13 | } 14 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i1581/AppComponent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i1581; 7 | 8 | import issues.i1580.Controller1580; 9 | 10 | public class AppComponent { 11 | public Controller1580 myController() { 12 | return new Controller1580(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i2046/App2046.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i2046; 7 | 8 | import io.jooby.Jooby; 9 | 10 | public class App2046 extends Jooby { 11 | { 12 | get("/2046", ctx -> ".."); 13 | 14 | mount("/b", new App2046b()); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /tests/src/test/java/examples/JAXRS.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package examples; 7 | 8 | import jakarta.ws.rs.GET; 9 | import jakarta.ws.rs.Path; 10 | 11 | @Path("/jaxrs") 12 | public class JAXRS { 13 | 14 | @GET 15 | public String getIt() { 16 | return "Got it!"; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /docs/asciidoc/modules/vertx-pg-client.adoc: -------------------------------------------------------------------------------- 1 | == Sql Client 2 | 3 | A https://github.com/eclipse-vertx/vertx-sql-client[reactive SQL Client]. Supported databases: 4 | 5 | - PostgreSQL 6 | 7 | These modules require a Vertx instance available in the service registry. 8 | 9 | include::vertx-sql-client.template[artifactId="jooby-vertx-pg-client" sqlClient="Postgres" moduleName="VertxPgModule" builderName="PgBuilder"] 10 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i3578/MergePaths.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i3578; 7 | 8 | import io.jooby.Context; 9 | import io.jooby.Jooby; 10 | 11 | public class MergePaths extends Jooby { 12 | { 13 | get("/app-path", Context::getRequestPath); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/kotlin/kt/i2121/App2121.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package kt.i2121 7 | 8 | import io.jooby.kt.Kooby 9 | import io.jooby.openapi.MvcExtensionGenerator.toMvcExtension 10 | 11 | class App2121 : Kooby({ coroutine { mvc(toMvcExtension(Controller2121::class.java)) } }) 12 | -------------------------------------------------------------------------------- /tests/src/test/java/io/jooby/i2457/ControllersAppV12457.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.i2457; 7 | 8 | import io.jooby.Jooby; 9 | 10 | public class ControllersAppV12457 extends Jooby { 11 | 12 | public ControllersAppV12457() { 13 | mvc(new ControllerV12457_()); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /tests/src/test/java/io/jooby/i2457/ControllersAppV22457.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.i2457; 7 | 8 | import io.jooby.Jooby; 9 | 10 | public class ControllersAppV22457 extends Jooby { 11 | 12 | public ControllersAppV22457() { 13 | mvc(new ControllerV22457_()); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /docs/asciidoc/modules/vertx-mysql-client.adoc: -------------------------------------------------------------------------------- 1 | == Sql Client 2 | 3 | A https://github.com/eclipse-vertx/vertx-sql-client[reactive SQL Client]. Supported databases: 4 | 5 | - MySQL 6 | 7 | These modules require a Vertx instance available in the service registry. 8 | 9 | include::vertx-sql-client.template[artifactId="jooby-vertx-mysql-client" sqlClient="MySQL" moduleName="VertxMySQLModule" builderName="MySQLBuilder"] 10 | -------------------------------------------------------------------------------- /modules/jooby-avaje-jsonb/src/main/java/module-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | /** Avaje jsonb module. */ 7 | module io.jooby.avaje.jsonb { 8 | exports io.jooby.avaje.jsonb; 9 | 10 | requires io.jooby; 11 | requires static com.github.spotbugs.annotations; 12 | requires io.avaje.jsonb; 13 | } 14 | -------------------------------------------------------------------------------- /modules/jooby-caffeine/src/main/java/module-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | /** Caffeine module. */ 7 | module io.jooby.caffeine { 8 | exports io.jooby.caffeine; 9 | 10 | requires io.jooby; 11 | requires static com.github.spotbugs.annotations; 12 | requires com.github.benmanes.caffeine; 13 | } 14 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i3059/ControllerC3059.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i3059; 7 | 8 | import io.jooby.annotation.PUT; 9 | import io.jooby.annotation.Path; 10 | 11 | @Path("/mvc/c") 12 | public class ControllerC3059 { 13 | @PUT 14 | public void pathC() {} 15 | } 16 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/javadoc/input/InterfaceDoc.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package javadoc.input; 7 | 8 | /** Interface documentation. */ 9 | public interface InterfaceDoc { 10 | 11 | /** 12 | * Name. 13 | * 14 | * @return name. 15 | */ 16 | String getName(); 17 | } 18 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/kotlin/kt/KtMvcAppWithRoutes.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package kt 7 | 8 | import io.jooby.kt.Kooby 9 | import io.jooby.openapi.MvcExtensionGenerator.toMvcExtension 10 | 11 | class KtMvcAppWithRoutes : Kooby({ routes { mvc(toMvcExtension(KtController::class.java)) } }) 12 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/kotlin/kt/i3746/RunAppWithServerMode.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package kt.i3746 7 | 8 | import io.jooby.ExecutionMode 9 | import io.jooby.kt.runApp 10 | 11 | fun main(args: Array) { 12 | runApp(args, Server3746(), ExecutionMode.EVENT_LOOP, ::App3746) 13 | } 14 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/kotlin/kt/issues/i2004/App2004.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package kt.issues.i2004 7 | 8 | import io.jooby.kt.Kooby 9 | import io.jooby.openapi.MvcExtensionGenerator 10 | 11 | class App2004 : Kooby({ mvc(MvcExtensionGenerator.toMvcExtension(Controller2004::class.java)) }) 12 | -------------------------------------------------------------------------------- /tests/src/test/java/io/jooby/problem/data/MyCustomExceptionToPropagate.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.problem.data; 7 | 8 | class MyCustomExceptionToPropagate extends RuntimeException { 9 | public MyCustomExceptionToPropagate(String message) { 10 | super(message); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/i3472/C3472e.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.i3472; 7 | 8 | import io.jooby.annotation.GET; 9 | 10 | public class C3472e { 11 | 12 | @GET("/3472/custom-bind") 13 | public BindBean bind(@CustomBind BindBean bean) { 14 | return bean; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/verifyarg/ControllerFlash.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.verifyarg; 7 | 8 | import io.jooby.annotation.FlashParam; 9 | import io.jooby.annotation.GET; 10 | 11 | class ControllerFlash { 12 | @GET 13 | public void param(@FlashParam Object param) {} 14 | } 15 | -------------------------------------------------------------------------------- /modules/jooby-ebean/src/main/java/module-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | /** Ebean module. */ 7 | module io.jooby.ebean { 8 | exports io.jooby.ebean; 9 | 10 | requires io.jooby; 11 | requires static com.github.spotbugs.annotations; 12 | requires typesafe.config; 13 | requires io.ebean; 14 | } 15 | -------------------------------------------------------------------------------- /modules/jooby-gson/src/main/java/module-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | /** Gson module. */ 7 | module io.jooby.gson { 8 | exports io.jooby.gson; 9 | 10 | requires io.jooby; 11 | requires static com.github.spotbugs.annotations; 12 | requires typesafe.config; 13 | requires com.google.gson; 14 | } 15 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i3059/ControllerB3059.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i3059; 7 | 8 | import io.jooby.annotation.POST; 9 | import io.jooby.annotation.Path; 10 | 11 | @Path("/mvc/b") 12 | public class ControllerB3059 { 13 | @POST 14 | public void pathB() {} 15 | } 16 | -------------------------------------------------------------------------------- /docs/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | %-5level - %msg%n 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/CustomRouterName.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests; 7 | 8 | import io.jooby.annotation.GET; 9 | import io.jooby.annotation.QueryParam; 10 | 11 | public class CustomRouterName { 12 | 13 | @GET("/hello") 14 | public void hello(@QueryParam String name) {} 15 | } 16 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/verifyarg/ControllerCookie.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.verifyarg; 7 | 8 | import io.jooby.annotation.CookieParam; 9 | import io.jooby.annotation.GET; 10 | 11 | class ControllerCookie { 12 | @GET 13 | public void param(@CookieParam Object param) {} 14 | } 15 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/verifyarg/ControllerHeader.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.verifyarg; 7 | 8 | import io.jooby.annotation.GET; 9 | import jakarta.ws.rs.HeaderParam; 10 | 11 | class ControllerHeader { 12 | @GET 13 | public void param(@HeaderParam("test") Object param) {} 14 | } 15 | -------------------------------------------------------------------------------- /modules/jooby-mutiny/src/main/java/module-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | /** Mutiny module. */ 7 | module io.jooby.mutiny { 8 | exports io.jooby.mutiny; 9 | 10 | requires io.jooby; 11 | requires static com.github.spotbugs.annotations; 12 | requires io.smallrye.mutiny; 13 | requires org.slf4j; 14 | } 15 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/examples/SubController.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package examples; 7 | 8 | import io.jooby.annotation.GET; 9 | 10 | public class SubController extends BaseController { 11 | 12 | @GET("/subPath") 13 | public String subPath() { 14 | return "subPath"; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/verifyarg/ControllerSession.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.verifyarg; 7 | 8 | import io.jooby.annotation.GET; 9 | import io.jooby.annotation.SessionParam; 10 | 11 | class ControllerSession { 12 | @GET 13 | public void param(@SessionParam Object param) {} 14 | } 15 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/examples/Person.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package examples; 7 | 8 | public class Person { 9 | private String name; 10 | 11 | public String getName() { 12 | return name; 13 | } 14 | 15 | public void setName(String name) { 16 | this.name = name; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /modules/jooby-pebble/src/main/java/module-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | /** Pebble module */ 7 | module io.jooby.pebble { 8 | exports io.jooby.pebble; 9 | 10 | requires io.jooby; 11 | requires static com.github.spotbugs.annotations; 12 | requires typesafe.config; 13 | requires io.pebbletemplates; 14 | } 15 | -------------------------------------------------------------------------------- /modules/jooby-quartz/src/main/java/io/jooby/internal/quartz/DisallowConcurrentJobDelegate.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.internal.quartz; 7 | 8 | import org.quartz.DisallowConcurrentExecution; 9 | 10 | @DisallowConcurrentExecution 11 | public class DisallowConcurrentJobDelegate extends JobDelegate {} 12 | -------------------------------------------------------------------------------- /tests/src/test/kotlin/i3477/C3477.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package i3477 7 | 8 | import io.jooby.Context 9 | import io.jooby.annotation.GET 10 | import io.jooby.annotation.Transactional 11 | 12 | class C3477 { 13 | @GET("/3477") @Transactional(false) fun generateToken(ctx: Context) = ctx.route.attributes 14 | } 15 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/source/ArrayAnnotation.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package source; 7 | 8 | import java.lang.annotation.Retention; 9 | import java.lang.annotation.RetentionPolicy; 10 | 11 | @Retention(RetentionPolicy.RUNTIME) 12 | public @interface ArrayAnnotation { 13 | String value() default ""; 14 | } 15 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/i3468/C3468.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.i3468; 7 | 8 | import io.jooby.Context; 9 | import io.jooby.annotation.GET; 10 | 11 | public class C3468 { 12 | 13 | @GET("test") 14 | public String test(Context ctx) { 15 | return ctx.getRequestPath(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/examples/BBean.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package examples; 7 | 8 | public class BBean extends Bean { 9 | private String foo; 10 | 11 | public String getFoo() { 12 | return foo; 13 | } 14 | 15 | public void setFoo(String foo) { 16 | this.foo = foo; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i1794/TestSuite.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i1794; 7 | 8 | public class TestSuite { 9 | private String foo; 10 | 11 | public String getFoo() { 12 | return foo; 13 | } 14 | 15 | public void setFoo(String foo) { 16 | this.foo = foo; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /modules/jooby-quartz/src/main/java/io/jooby/internal/quartz/PersistJobDataAfterJobDelegate.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.internal.quartz; 7 | 8 | import org.quartz.PersistJobDataAfterExecution; 9 | 10 | @PersistJobDataAfterExecution 11 | public class PersistJobDataAfterJobDelegate extends JobDelegate {} 12 | -------------------------------------------------------------------------------- /modules/jooby-yasson/src/main/java/module-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | 7 | /** Yasson module. */ 8 | module io.jooby.yasson { 9 | exports io.jooby.yasson; 10 | 11 | requires io.jooby; 12 | requires static com.github.spotbugs.annotations; 13 | requires typesafe.config; 14 | requires jakarta.json.bind; 15 | } 16 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/i2026/C2026.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.i2026; 7 | 8 | import io.jooby.annotation.GET; 9 | import io.jooby.annotation.Path; 10 | 11 | @Path("/api/todo") 12 | public class C2026 { 13 | 14 | @GET 15 | public String handle() { 16 | return "TODO..."; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /modules/jooby-freemarker/src/main/java/module-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | /** Freemarker module. */ 7 | module io.jooby.freemarker { 8 | exports io.jooby.freemarker; 9 | 10 | requires io.jooby; 11 | requires static com.github.spotbugs.annotations; 12 | requires typesafe.config; 13 | requires freemarker; 14 | } 15 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/kotlin/kt/i3746/RunAppInlineWithServerMode.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package kt.i3746 7 | 8 | import io.jooby.ExecutionMode 9 | import io.jooby.kt.runApp 10 | 11 | fun main(args: Array) { 12 | runApp(args, Server3746(), ExecutionMode.WORKER) { get("/3746") { ctx.requestPath } } 13 | } 14 | -------------------------------------------------------------------------------- /modules/jooby-thymeleaf/src/main/java/module-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | 7 | /** Thymeleaf module. */ 8 | module io.jooby.thymeleaf { 9 | exports io.jooby.thymeleaf; 10 | 11 | requires io.jooby; 12 | requires static com.github.spotbugs.annotations; 13 | requires typesafe.config; 14 | requires thymeleaf; 15 | } 16 | -------------------------------------------------------------------------------- /tests/src/test/java/examples/Message.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package examples; 7 | 8 | public class Message { 9 | private final String value; 10 | 11 | public Message(String value) { 12 | this.value = value; 13 | } 14 | 15 | @Override 16 | public String toString() { 17 | return value; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/source/ClassAnnotation.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package source; 7 | 8 | import java.lang.annotation.Retention; 9 | import java.lang.annotation.RetentionPolicy; 10 | 11 | @Retention(RetentionPolicy.CLASS) 12 | public @interface ClassAnnotation { 13 | 14 | String key() default "value"; 15 | } 16 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/source/SourceAnnotation.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package source; 7 | 8 | import java.lang.annotation.Retention; 9 | import java.lang.annotation.RetentionPolicy; 10 | 11 | @Retention(RetentionPolicy.SOURCE) 12 | public @interface SourceAnnotation { 13 | 14 | String key() default "value"; 15 | } 16 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/source/SubController.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package source; 7 | 8 | import io.jooby.annotation.GET; 9 | 10 | public class SubController extends BaseController implements SomeInterface { 11 | 12 | @GET("/subPath") 13 | public String subPath() { 14 | return "subPath"; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/i1814/U1814.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.i1814; 7 | 8 | public class U1814 { 9 | private final String type; 10 | 11 | public U1814(String type) { 12 | this.type = type; 13 | } 14 | 15 | @Override 16 | public String toString() { 17 | return type; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i1805/App1805.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i1805; 7 | 8 | import static io.jooby.openapi.MvcExtensionGenerator.toMvcExtension; 9 | 10 | import io.jooby.Jooby; 11 | 12 | public class App1805 extends Jooby { 13 | { 14 | mvc(toMvcExtension(C1805.class)); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i2968/C2968.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i2968; 7 | 8 | import io.jooby.annotation.GET; 9 | import io.jooby.annotation.QueryParam; 10 | 11 | public class C2968 { 12 | @GET("/hello") 13 | public String hello(@QueryParam String name) { 14 | return name; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i3760/App3760.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i3760; 7 | 8 | import static io.jooby.openapi.MvcExtensionGenerator.toMvcExtension; 9 | 10 | import io.jooby.Jooby; 11 | 12 | public class App3760 extends Jooby { 13 | { 14 | mvc(toMvcExtension(C3760.class)); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i3835/App3835.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i3835; 7 | 8 | import static io.jooby.openapi.MvcExtensionGenerator.toMvcExtension; 9 | 10 | import io.jooby.Jooby; 11 | 12 | public class App3835 extends Jooby { 13 | { 14 | mvc(toMvcExtension(C3835.class)); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /tests/src/test/java/io/jooby/i1792/Controller1792.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.i1792; 7 | 8 | import io.jooby.StatusCode; 9 | import io.jooby.annotation.POST; 10 | 11 | public class Controller1792 { 12 | 13 | @POST("/c/1792") 14 | public StatusCode create() { 15 | return StatusCode.CREATED; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /tests/src/test/java/io/jooby/i2325/C2325.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.i2325; 7 | 8 | import io.jooby.annotation.GET; 9 | import io.jooby.annotation.QueryParam; 10 | 11 | public class C2325 { 12 | @GET("/2325") 13 | public String getMy(@QueryParam MyID2325 id) { 14 | return id.toString(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /docs/asciidoc/handlers.adoc: -------------------------------------------------------------------------------- 1 | == Handlers 2 | 3 | This section describes some built-in handler provided by Jooby. 4 | 5 | include::handlers/access-log.adoc[] 6 | 7 | include::handlers/cors.adoc[] 8 | 9 | include::handlers/csrf.adoc[] 10 | 11 | include::handlers/graceful-shutdown.adoc[] 12 | 13 | include::handlers/head.adoc[] 14 | 15 | include::handlers/rate-limit.adoc[] 16 | 17 | include::handlers/ssl.adoc[] 18 | 19 | include::handlers/trace.adoc[] 20 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/i3472/BindBean.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.i3472; 7 | 8 | import io.jooby.Context; 9 | 10 | public record BindBean(String value) { 11 | 12 | public static BindBean of(Context ctx) { 13 | return new BindBean("bean-factory-method:" + ctx.query("value").value()); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /modules/jooby-cli/src/main/resources/cli/docker.gradle.hbs: -------------------------------------------------------------------------------- 1 | FROM gradle:8-jdk17 as build 2 | WORKDIR /{{artifactId}} 3 | COPY build.gradle build.gradle 4 | COPY settings.gradle settings.gradle 5 | COPY src src 6 | COPY conf conf 7 | RUN gradle shadowJar 8 | 9 | FROM eclipse-temurin:17-jdk 10 | WORKDIR /{{artifactId}} 11 | COPY --from=build /{{artifactId}}/{{finalArtifactId}} app.jar 12 | COPY conf conf 13 | EXPOSE 8080 14 | CMD ["java", "-jar", "app.jar"] 15 | -------------------------------------------------------------------------------- /modules/jooby-flyway/src/main/java/module-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | /** Flyway module. */ 7 | module io.jooby.flyway { 8 | exports io.jooby.flyway; 9 | 10 | requires io.jooby; 11 | requires static com.github.spotbugs.annotations; 12 | requires typesafe.config; 13 | requires java.sql; 14 | requires flyway.core; 15 | } 16 | -------------------------------------------------------------------------------- /modules/jooby-logback/src/main/java/module-info.java: -------------------------------------------------------------------------------- 1 | import io.jooby.LoggingService; 2 | import io.jooby.logback.LogbackService; 3 | 4 | /** Logback logging system. */ 5 | module io.jooby.logback { 6 | exports io.jooby.logback; 7 | 8 | requires io.jooby; 9 | requires static com.github.spotbugs.annotations; 10 | requires org.slf4j; 11 | requires ch.qos.logback.classic; 12 | 13 | provides LoggingService with 14 | LogbackService; 15 | } 16 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/main/java/io/jooby/internal/openapi/asciidoc/ToAsciiDoc.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.internal.openapi.asciidoc; 7 | 8 | import java.util.Map; 9 | 10 | public interface ToAsciiDoc { 11 | String list(Map options); 12 | 13 | String table(Map options); 14 | } 15 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i1601/Controller1601.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i1601; 7 | 8 | import io.jooby.annotation.GET; 9 | import io.jooby.annotation.Path; 10 | 11 | @Path("/1601") 12 | public class Controller1601 { 13 | @GET 14 | public String doSomething() { 15 | return ".."; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/i2325/C2325.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.i2325; 7 | 8 | import io.jooby.annotation.GET; 9 | import io.jooby.annotation.QueryParam; 10 | 11 | public class C2325 { 12 | @GET("/2325") 13 | public String getMy(@QueryParam MyID2325 myId) { 14 | return myId.toString(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /modules/jooby-cli/src/main/resources/cli/README.md.hbs: -------------------------------------------------------------------------------- 1 | # {{artifactId}} 2 | 3 | Welcome to {{artifactId}}!! 4 | 5 | ## running 6 | 7 | {{#if gradle}}./gradlew joobyRun{{else}}mvn clean jooby:run{{/if}} 8 | 9 | ## building 10 | 11 | {{#if gradle}}./gradlew build{{else}}mvn clean package{{/if}} 12 | 13 | {{#if docker}} 14 | ## docker 15 | 16 | docker build . -t {{artifactId}} 17 | docker run -p 8080:8080 -it {{artifactId}} 18 | {{/if}} 19 | -------------------------------------------------------------------------------- /modules/jooby-jte/src/main/java/module-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | /** JTE module. */ 7 | module io.jooby.jte { 8 | exports io.jooby.jte; 9 | 10 | requires transitive io.jooby; 11 | requires static com.github.spotbugs.annotations; 12 | requires gg.jte; 13 | requires gg.jte.runtime; 14 | requires static gg.jte.models; 15 | } 16 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/examples/MvcApp.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package examples; 7 | 8 | import static io.jooby.openapi.MvcExtensionGenerator.toMvcExtension; 9 | 10 | import io.jooby.Jooby; 11 | 12 | public class MvcApp extends Jooby { 13 | 14 | { 15 | mvc(toMvcExtension(ControllerExample.class)); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/examples/OpenApiApp.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package examples; 7 | 8 | import static io.jooby.openapi.MvcExtensionGenerator.toMvcExtension; 9 | 10 | import io.jooby.Jooby; 11 | 12 | public class OpenApiApp extends Jooby { 13 | { 14 | mvc(toMvcExtension(OpenApiController.class)); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i1580/App1580.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i1580; 7 | 8 | import static io.jooby.openapi.MvcExtensionGenerator.toMvcExtension; 9 | 10 | import io.jooby.Jooby; 11 | 12 | public class App1580 extends Jooby { 13 | { 14 | mvc(toMvcExtension(Controller1580.class)); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i1768/App1768.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i1768; 7 | 8 | import static io.jooby.openapi.MvcExtensionGenerator.toMvcExtension; 9 | 10 | import io.jooby.Jooby; 11 | 12 | public class App1768 extends Jooby { 13 | { 14 | mvc(toMvcExtension(Controller1768.class)); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i1855/App1855.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i1855; 7 | 8 | import static io.jooby.openapi.MvcExtensionGenerator.toMvcExtension; 9 | 10 | import io.jooby.Jooby; 11 | 12 | public class App1855 extends Jooby { 13 | { 14 | mvc(toMvcExtension(Controller1855.class)); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i1934/App1934.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i1934; 7 | 8 | import static io.jooby.openapi.MvcExtensionGenerator.toMvcExtension; 9 | 10 | import io.jooby.Jooby; 11 | 12 | public class App1934 extends Jooby { 13 | { 14 | mvc(toMvcExtension(Controller1934.class)); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i2505/App2505.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i2505; 7 | 8 | import static io.jooby.openapi.MvcExtensionGenerator.toMvcExtension; 9 | 10 | import io.jooby.Jooby; 11 | 12 | public class App2505 extends Jooby { 13 | { 14 | mvc(toMvcExtension(Controller2505.class)); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i2542/App2542.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i2542; 7 | 8 | import static io.jooby.openapi.MvcExtensionGenerator.toMvcExtension; 9 | 10 | import io.jooby.Jooby; 11 | 12 | public class App2542 extends Jooby { 13 | { 14 | mvc(toMvcExtension(Controller2542.class)); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i3059/ControllerA3059.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i3059; 7 | 8 | import io.jooby.annotation.GET; 9 | import io.jooby.annotation.Path; 10 | 11 | @Path("/mvc/a") 12 | public class ControllerA3059 { 13 | @GET 14 | public String pathA() { 15 | return "Hello!"; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i3652/App3652.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i3652; 7 | 8 | import static io.jooby.openapi.MvcExtensionGenerator.toMvcExtension; 9 | 10 | import io.jooby.Jooby; 11 | 12 | public class App3652 extends Jooby { 13 | { 14 | mvc(toMvcExtension(Controller3652.class)); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i3654/App3654.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i3654; 7 | 8 | import static io.jooby.openapi.MvcExtensionGenerator.toMvcExtension; 9 | 10 | import io.jooby.Jooby; 11 | 12 | public class App3654 extends Jooby { 13 | { 14 | mvc(toMvcExtension(Controller3654.class)); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i3729/App3729.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i3729; 7 | 8 | import static io.jooby.openapi.MvcExtensionGenerator.toMvcExtension; 9 | 10 | import io.jooby.Jooby; 11 | 12 | public class App3729 extends Jooby { 13 | { 14 | mvc(toMvcExtension(Controller3729.class)); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /modules/jooby-undertow/src/main/java/module-info.java: -------------------------------------------------------------------------------- 1 | /** Undertow Web Server. */ 2 | module io.jooby.undertow { 3 | exports io.jooby.undertow; 4 | 5 | requires io.jooby; 6 | requires static com.github.spotbugs.annotations; 7 | requires typesafe.config; 8 | requires org.slf4j; 9 | requires java.logging; 10 | // All these are jar named modules :S 11 | requires undertow.core; 12 | requires xnio.api; 13 | requires static org.conscrypt; 14 | } 15 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/i2405/Bean2405.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.i2405; 7 | 8 | public class Bean2405 { 9 | 10 | private String value; 11 | 12 | public Bean2405(String value) { 13 | this.value = value; 14 | } 15 | 16 | @Override 17 | public String toString() { 18 | return value; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /modules/jooby-guice/src/main/java/module-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | /** Guice module. */ 7 | module io.jooby.guice { 8 | exports io.jooby.guice; 9 | 10 | requires io.jooby; 11 | requires static com.github.spotbugs.annotations; 12 | requires typesafe.config; 13 | requires com.google.guice; 14 | requires jakarta.inject; 15 | } 16 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/examples/FormMvcApp.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package examples; 7 | 8 | import static io.jooby.openapi.MvcExtensionGenerator.toMvcExtension; 9 | 10 | import io.jooby.Jooby; 11 | 12 | public class FormMvcApp extends Jooby { 13 | 14 | { 15 | mvc(toMvcExtension(FormController.class)); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i1794/App1794.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i1794; 7 | 8 | import static io.jooby.openapi.MvcExtensionGenerator.toMvcExtension; 9 | 10 | import io.jooby.Jooby; 11 | 12 | public class App1794 extends Jooby { 13 | 14 | { 15 | mvc(toMvcExtension(Controller1794.class)); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i1795/App1795.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i1795; 7 | 8 | import static io.jooby.openapi.MvcExtensionGenerator.toMvcExtension; 9 | 10 | import io.jooby.Jooby; 11 | 12 | public class App1795 extends Jooby { 13 | 14 | { 15 | mvc(toMvcExtension(Controller1795.class)); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i3397/Controller3397.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i3397; 7 | 8 | import io.jooby.annotation.GET; 9 | import io.jooby.annotation.Path; 10 | 11 | @Path("/") 12 | public class Controller3397 { 13 | 14 | @GET("/welcome") 15 | public String sayHi() { 16 | return "hi"; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/source/RoleAnnotation.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package source; 7 | 8 | import java.lang.annotation.Retention; 9 | import java.lang.annotation.RetentionPolicy; 10 | 11 | @Retention(RetentionPolicy.RUNTIME) 12 | public @interface RoleAnnotation { 13 | String value(); 14 | 15 | String level() default "one"; 16 | } 17 | -------------------------------------------------------------------------------- /modules/jooby-cli/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | [%d{ISO8601}]-[%thread] %-5level %logger - %msg%n 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /modules/jooby-graphql/src/main/java/module-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | /** GraphQL module. */ 7 | module io.jooby.graphql { 8 | exports io.jooby.graphql; 9 | 10 | requires io.jooby; 11 | requires static com.github.spotbugs.annotations; 12 | requires typesafe.config; 13 | requires com.graphqljava; 14 | requires com.google.gson; 15 | } 16 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/javadoc/input/RequestHandler.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package javadoc.input; 7 | 8 | import io.jooby.Context; 9 | 10 | public class RequestHandler { 11 | 12 | /* 13 | * External doc. 14 | */ 15 | public static String external(Context ctx) { 16 | return ctx.path("external").value(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /modules/jooby-reactor/src/main/java/module-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | 7 | /** Reactor module */ 8 | module io.jooby.reactor { 9 | exports io.jooby.reactor; 10 | 11 | requires io.jooby; 12 | requires static com.github.spotbugs.annotations; 13 | requires reactor.core; 14 | requires org.reactivestreams; 15 | requires org.slf4j; 16 | } 17 | -------------------------------------------------------------------------------- /tests/src/test/java/io/jooby/i3530/Controller3530.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.i3530; 7 | 8 | import io.jooby.annotation.POST; 9 | import jakarta.validation.Valid; 10 | 11 | public class Controller3530 { 12 | 13 | @POST("/3530/controller") 14 | public Bean3530 create(@Valid Bean3530 value) { 15 | return value; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /.envrc: -------------------------------------------------------------------------------- 1 | function setjdk() { 2 | if [ $# -ne 0 ]; then 3 | removeFromPath '/System/Library/Frameworks/JavaVM.framework/Home/bin' 4 | if [ -n "${JAVA_HOME+x}" ]; then 5 | removeFromPath $JAVA_HOME/bin 6 | fi 7 | export JAVA_HOME=`/usr/libexec/java_home -v $@` 8 | export PATH=$JAVA_HOME/bin:$PATH 9 | fi 10 | } 11 | function removeFromPath() { 12 | export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;") 13 | } 14 | setjdk 21 15 | -------------------------------------------------------------------------------- /modules/jooby-avaje-inject/src/main/java/module-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | /** Avaje Inject module. */ 7 | module io.jooby.avaje.inject { 8 | exports io.jooby.avaje.inject; 9 | 10 | requires transitive io.jooby; 11 | requires com.github.spotbugs.annotations; 12 | requires typesafe.config; 13 | requires transitive io.avaje.inject; 14 | } 15 | -------------------------------------------------------------------------------- /modules/jooby-camel/src/main/java/module-info.java: -------------------------------------------------------------------------------- 1 | module io.jooby.camel { 2 | exports io.jooby.camel; 3 | 4 | requires io.jooby; 5 | requires typesafe.config; 6 | requires jakarta.inject; 7 | requires static com.github.spotbugs.annotations; 8 | requires camel.core.model; 9 | requires camel.core.engine; 10 | requires camel.base; 11 | requires camel.base.engine; 12 | requires camel.api; 13 | requires camel.support; 14 | requires camel.main; 15 | } 16 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/examples/MvcInstanceApp.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package examples; 7 | 8 | import static io.jooby.openapi.MvcExtensionGenerator.toMvcExtension; 9 | 10 | import io.jooby.Jooby; 11 | 12 | public class MvcInstanceApp extends Jooby { 13 | 14 | { 15 | mvc(toMvcExtension(ControllerExample.class)); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /modules/jooby-rxjava3/src/main/java/module-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | 7 | /** Rx module. */ 8 | module io.jooby.rxjava3 { 9 | exports io.jooby.rxjava3; 10 | 11 | requires io.jooby; 12 | requires static com.github.spotbugs.annotations; 13 | requires io.reactivex.rxjava3; 14 | requires org.reactivestreams; 15 | requires org.slf4j; 16 | } 17 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/source/RouteInjection.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package source; 7 | 8 | import io.jooby.Route; 9 | import io.jooby.annotation.GET; 10 | import io.jooby.annotation.Path; 11 | 12 | @Path("/route") 13 | public class RouteInjection { 14 | 15 | @GET 16 | public Route route(Route route) { 17 | return route; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/verifyarg/ControllerFlashOpt.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.verifyarg; 7 | 8 | import java.util.Optional; 9 | 10 | import io.jooby.annotation.FlashParam; 11 | import io.jooby.annotation.GET; 12 | 13 | class ControllerFlashOpt { 14 | @GET 15 | public void param(@FlashParam Optional param) {} 16 | } 17 | -------------------------------------------------------------------------------- /modules/jooby-camel/src/main/java/io/jooby/internal/camel/CamelBeans.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.internal.camel; 7 | 8 | public class CamelBeans { 9 | public static String camelBeanId(Class type) { 10 | String beanId = type.getSimpleName(); 11 | return Character.toLowerCase(beanId.charAt(0)) + beanId.substring(1); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /modules/jooby-cli/src/main/resources/cli/conf/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | [%d{ISO8601}]-[%thread] %-5level %logger - %msg%n 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /modules/jooby-redoc/build.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/src/test/java/examples/AppNoInstallServer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package examples; 7 | 8 | import io.jooby.Jooby; 9 | import io.jooby.jetty.JettyServer; 10 | 11 | public class AppNoInstallServer extends Jooby { 12 | 13 | public static void main(String[] args) { 14 | runApp(args, new JettyServer(), AppNoInstallServer::new); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /tests/src/test/kotlin/io/jooby/App.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby 7 | 8 | import io.jooby.kt.getValue 9 | import io.jooby.kt.runApp 10 | 11 | data class SearchQuery(val q: String) 12 | 13 | fun main(args: Array) { 14 | runApp(args) { 15 | get("/") { 16 | val q: List by ctx.query() 17 | q 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /modules/jooby-jdbi/src/main/java/module-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | /** Jdbi module. */ 7 | module io.jooby.jdbi { 8 | exports io.jooby.jdbi; 9 | 10 | requires io.jooby; 11 | requires static com.github.spotbugs.annotations; 12 | requires typesafe.config; 13 | requires java.sql; 14 | requires org.jdbi.v3.core; 15 | requires jakarta.inject; 16 | } 17 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/App1586.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues; 7 | 8 | import static io.jooby.openapi.MvcExtensionGenerator.toMvcExtension; 9 | 10 | import examples.SubController; 11 | import io.jooby.Jooby; 12 | 13 | public class App1586 extends Jooby { 14 | { 15 | mvc(toMvcExtension(SubController.class)); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i1596/ClassLevelTagApp.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i1596; 7 | 8 | import static io.jooby.openapi.MvcExtensionGenerator.toMvcExtension; 9 | 10 | import io.jooby.Jooby; 11 | 12 | public class ClassLevelTagApp extends Jooby { 13 | { 14 | mvc(toMvcExtension(ClassLevelController.class)); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/source/LinkAnnotation.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package source; 7 | 8 | import java.lang.annotation.Retention; 9 | import java.lang.annotation.RetentionPolicy; 10 | 11 | @Retention(RetentionPolicy.RUNTIME) 12 | public @interface LinkAnnotation { 13 | String value() default ""; 14 | 15 | ArrayAnnotation[] array() default {}; 16 | } 17 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/i3469/C3469FieldInject.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.i3469; 7 | 8 | import io.jooby.annotation.GET; 9 | import jakarta.inject.Inject; 10 | 11 | public class C3469FieldInject { 12 | 13 | @Inject private Foo3469 foo; 14 | 15 | @GET("/3469") 16 | public String method() { 17 | return foo.foo(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /modules/jooby-hikari/src/main/java/module-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | /** Hikari module. */ 7 | module io.jooby.hikari { 8 | exports io.jooby.hikari; 9 | 10 | requires io.jooby; 11 | requires org.slf4j; 12 | requires static com.github.spotbugs.annotations; 13 | requires typesafe.config; 14 | requires java.sql; 15 | requires com.zaxxer.hikari; 16 | } 17 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/examples/RouteInline.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package examples; 7 | 8 | import io.jooby.Jooby; 9 | 10 | public class RouteInline { 11 | 12 | public static void main(String[] args) { 13 | Jooby.runApp( 14 | args, 15 | app -> { 16 | app.get("/inline", ctx -> "..."); 17 | }); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i3729/api/AppDemoLibrary.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i3729.api; 7 | 8 | import static io.jooby.openapi.MvcExtensionGenerator.toMvcExtension; 9 | 10 | import io.jooby.Jooby; 11 | 12 | public class AppDemoLibrary extends Jooby { 13 | 14 | { 15 | mvc(toMvcExtension(LibraryDemoApi.class)); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /tests/src/test/java/io/jooby/i1806/C1806.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.i1806; 7 | 8 | import java.util.List; 9 | 10 | import io.jooby.annotation.GET; 11 | import io.jooby.annotation.QueryParam; 12 | 13 | public class C1806 { 14 | @GET("/1806/c") 15 | public List sayHi(@QueryParam List names) { 16 | return names; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/i1806/C1806.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.i1806; 7 | 8 | import java.util.List; 9 | 10 | import io.jooby.annotation.GET; 11 | import io.jooby.annotation.QueryParam; 12 | 13 | public class C1806 { 14 | @GET("/1806/c") 15 | public List sayHi(@QueryParam List names) { 16 | return names; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/examples/MvcAppWithRoutes.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package examples; 7 | 8 | import static io.jooby.openapi.MvcExtensionGenerator.toMvcExtension; 9 | 10 | import io.jooby.Jooby; 11 | 12 | public class MvcAppWithRoutes extends Jooby { 13 | 14 | { 15 | routes(() -> mvc(toMvcExtension(ControllerExample.class))); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i3820/App3820a.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i3820; 7 | 8 | import io.jooby.Jooby; 9 | import issues.i3820.model.Book; 10 | 11 | public class App3820a extends Jooby { 12 | { 13 | post( 14 | "/library/books", 15 | ctx -> { 16 | return ctx.body(Book.class); 17 | }); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /tests/src/test/java/examples/MyValueRouter.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package examples; 7 | 8 | import io.jooby.annotation.GET; 9 | import io.jooby.annotation.QueryParam; 10 | import io.jooby.test.MyValue; 11 | 12 | public class MyValueRouter { 13 | 14 | @GET("/myvalue") 15 | public MyValue beanConverter(@QueryParam MyValue bean) { 16 | return bean; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /tests/src/test/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | %-5p [%d{ISO8601}] [%thread] %msg %ex{0}%n 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/i2417/C2417.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.i2417; 7 | 8 | import io.jooby.annotation.GET; 9 | import io.jooby.annotation.QueryParam; 10 | 11 | public class C2417 { 12 | 13 | @io.swagger.v3.oas.annotations.Operation 14 | @GET("/2417") 15 | public String i2417(@QueryParam String name) { 16 | return name; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/i3737/C3737.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.i3737; 7 | 8 | import io.jooby.annotation.GET; 9 | import io.jooby.annotation.Path; 10 | 11 | @Path("/3737") 12 | public class C3737 { 13 | 14 | public C3737() throws Exception {} 15 | 16 | @GET("/hello") 17 | public String hello() { 18 | return "hello world"; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /modules/jooby-quartz/src/main/java/io/jooby/quartz/ExtendedJobExecutionContext.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.quartz; 7 | 8 | import org.quartz.JobExecutionContext; 9 | 10 | import io.jooby.Registry; 11 | 12 | /** Like {@link JobExecutionContext} plus {@link Registry}. */ 13 | public interface ExtendedJobExecutionContext extends JobExecutionContext, Registry {} 14 | -------------------------------------------------------------------------------- /modules/jooby-redis/src/main/java/module-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | 7 | /** Redis module. */ 8 | module io.jooby.redis { 9 | exports io.jooby.redis; 10 | 11 | requires io.jooby; 12 | requires static com.github.spotbugs.annotations; 13 | requires typesafe.config; 14 | requires org.slf4j; 15 | requires org.apache.commons.pool2; 16 | requires lettuce.core; 17 | } 18 | -------------------------------------------------------------------------------- /tests/src/test/java/io/jooby/i2069/Bean2069.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.i2069; 7 | 8 | import java.util.Collection; 9 | 10 | public class Bean2069 { 11 | 12 | private Collection id; 13 | 14 | public Collection getId() { 15 | return id; 16 | } 17 | 18 | public void setId(Collection id) { 19 | this.id = id; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /tests/src/test/java/io/jooby/i3551/Service3551.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.i3551; 7 | 8 | import com.fasterxml.jackson.databind.module.SimpleModule; 9 | import io.jooby.Environment; 10 | 11 | public class Service3551 extends SimpleModule { 12 | private Environment env; 13 | 14 | public Service3551(Environment env) { 15 | this.env = env; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/examples/ABean.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package examples; 7 | 8 | import edu.umd.cs.findbugs.annotations.NonNull; 9 | 10 | public class ABean extends Bean { 11 | @NonNull private String foo; 12 | 13 | public String getFoo() { 14 | return foo; 15 | } 16 | 17 | public void setFoo(String foo) { 18 | this.foo = foo; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/App1586b.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues; 7 | 8 | import static io.jooby.openapi.MvcExtensionGenerator.toMvcExtension; 9 | 10 | import examples.EmptySubClassController; 11 | import io.jooby.Jooby; 12 | 13 | public class App1586b extends Jooby { 14 | { 15 | mvc(toMvcExtension(EmptySubClassController.class)); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /modules/jooby-pac4j/src/main/java/module-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | /** Pac4j module */ 7 | module io.jooby.pac4j { 8 | exports io.jooby.pac4j; 9 | 10 | requires io.jooby; 11 | requires static com.github.spotbugs.annotations; 12 | requires typesafe.config; 13 | requires org.slf4j; 14 | requires pac4j.core; 15 | requires pac4j.http; 16 | requires jsr305; 17 | } 18 | -------------------------------------------------------------------------------- /modules/jooby-quartz/src/main/java/io/jooby/internal/quartz/StatefulJobDelegate.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.internal.quartz; 7 | 8 | import org.quartz.DisallowConcurrentExecution; 9 | import org.quartz.PersistJobDataAfterExecution; 10 | 11 | @PersistJobDataAfterExecution 12 | @DisallowConcurrentExecution 13 | public class StatefulJobDelegate extends JobDelegate {} 14 | -------------------------------------------------------------------------------- /tests/src/test/java/io/jooby/i3474/App3474.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.i3474; 7 | 8 | import io.jooby.Jooby; 9 | 10 | public class App3474 extends Jooby { 11 | { 12 | get( 13 | "", 14 | ctx -> { 15 | var test = ctx.pathMap(); 16 | String id = ctx.path("id").value(); 17 | return id; 18 | }); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /tests/src/test/java/io/jooby/test/ByteCodePrinter.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.test; 7 | 8 | import java.io.IOException; 9 | 10 | import org.objectweb.asm.util.ASMifier; 11 | 12 | public class ByteCodePrinter { 13 | public static void main(String[] args) throws IOException { 14 | ASMifier.main(new String[] {"io.jooby.internal.mvc.KotlinMvc"}); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/i3507/C3507.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.i3507; 7 | 8 | import edu.umd.cs.findbugs.annotations.Nullable; 9 | import io.jooby.annotation.GET; 10 | import io.jooby.annotation.QueryParam; 11 | 12 | public class C3507 { 13 | @GET("/3507") 14 | @Nullable public String get(@QueryParam String query) { 15 | return null; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/main/java/io/jooby/internal/openapi/javadoc/PathDoc.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.internal.openapi.javadoc; 7 | 8 | import com.puppycrawl.tools.checkstyle.api.DetailAST; 9 | 10 | public class PathDoc extends JavaDocNode { 11 | public PathDoc(JavaDocParser ctx, DetailAST node, DetailAST comment) { 12 | super(ctx, node, comment); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /tests/src/test/java/io/jooby/i2525/Controller2525.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.i2525; 7 | 8 | import java.util.List; 9 | 10 | import io.jooby.annotation.GET; 11 | import io.jooby.annotation.QueryParam; 12 | 13 | public class Controller2525 { 14 | @GET("/2525") 15 | public String something(@QueryParam List foo) { 16 | return foo.toString(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/i3804/C3804.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.i3804; 7 | 8 | import io.jooby.Context; 9 | import io.jooby.annotation.GET; 10 | import io.jooby.annotation.Path; 11 | 12 | @Path("/3804") 13 | public class C3804 extends Base3804 { 14 | @GET 15 | public Object list(Context ctx) { 16 | return paramDecoder; // paramDecoder is null 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/source/JavaBeanParam.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package source; 7 | 8 | public class JavaBeanParam { 9 | private String foo; 10 | 11 | public String getFoo() { 12 | return foo; 13 | } 14 | 15 | public void setFoo(String foo) { 16 | this.foo = foo; 17 | } 18 | 19 | @Override 20 | public String toString() { 21 | return foo; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /modules/jooby-log4j/src/main/java/module-info.java: -------------------------------------------------------------------------------- 1 | import io.jooby.LoggingService; 2 | import io.jooby.log4j.Log4jService; 3 | 4 | /** Log4j logging system. */ 5 | module io.jooby.log4j { 6 | exports io.jooby.log4j; 7 | 8 | requires io.jooby; 9 | requires static com.github.spotbugs.annotations; 10 | requires org.slf4j; 11 | requires org.apache.logging.log4j; 12 | requires org.apache.logging.log4j.core; 13 | requires org.jspecify; 14 | 15 | provides LoggingService with 16 | Log4jService; 17 | } 18 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/examples/ExternalReference.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package examples; 7 | 8 | import io.jooby.Context; 9 | 10 | public class ExternalReference { 11 | 12 | public String routeReference(Context ctx) { 13 | return ctx.toString(); 14 | } 15 | 16 | public static String externalStaticReference(Context ctx) { 17 | return ctx.toString(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/kotlin/kt/KtAppWithMain.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package kt 7 | 8 | import io.jooby.OpenAPIModule 9 | import io.jooby.kt.Kooby 10 | import io.jooby.kt.runApp 11 | 12 | class App : 13 | Kooby({ 14 | install(OpenAPIModule()) 15 | 16 | get("/welcome") { "Welcome to Jooby!" } 17 | }) 18 | 19 | fun main(args: Array) { 20 | runApp(args, ::App) 21 | } 22 | -------------------------------------------------------------------------------- /tests/src/test/java/examples/NoTopLevelPath.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package examples; 7 | 8 | import io.jooby.annotation.GET; 9 | import io.jooby.annotation.Path; 10 | 11 | public class NoTopLevelPath { 12 | @GET 13 | public String root() { 14 | return "root"; 15 | } 16 | 17 | @GET 18 | @Path("/subpath") 19 | public String subpath() { 20 | return "subpath"; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /tests/src/test/java/io/jooby/i2525/Foo2525.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.i2525; 7 | 8 | import java.util.Objects; 9 | 10 | public class Foo2525 { 11 | public Integer a; 12 | public Integer b; 13 | 14 | public Foo2525(Integer a, Integer b) { 15 | Objects.requireNonNull(a); 16 | Objects.requireNonNull(b); 17 | 18 | this.a = a; 19 | this.b = b; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /tests/src/test/kotlin/i2465/C2465.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package i2465 7 | 8 | import io.jooby.Context 9 | import io.jooby.annotation.GET 10 | import io.jooby.annotation.Path 11 | import kotlinx.coroutines.delay 12 | 13 | class C2465 { 14 | @GET 15 | @Path("/fun/2465") 16 | suspend fun delayed(ctx: Context): String { 17 | delay(100) 18 | return ctx.getRequestPath() 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /tests/src/test/kotlin/i2598/App2598.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package i2598 7 | 8 | import io.jooby.kt.Kooby 9 | 10 | class App2598 : 11 | Kooby({ 12 | get("/2598") { 13 | val sign = mutableListOf() 14 | ctx.send("{\"success\":\"true\"}") 15 | // some imaginary long running operation here 16 | sign.removeIf { it == 1 } 17 | return@get ctx 18 | } 19 | }) 20 | -------------------------------------------------------------------------------- /modules/jooby-avaje-validator/src/main/java/module-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | /** Avaje Validator Module. */ 7 | module io.jooby.avaje.validator { 8 | exports io.jooby.avaje.validator; 9 | 10 | requires transitive io.jooby; 11 | requires static com.github.spotbugs.annotations; 12 | requires typesafe.config; 13 | requires transitive io.avaje.validation; 14 | requires org.slf4j; 15 | } 16 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/examples/HandlerA.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package examples; 7 | 8 | import edu.umd.cs.findbugs.annotations.NonNull; 9 | import io.jooby.Context; 10 | import io.jooby.Route; 11 | 12 | public class HandlerA implements Route.Handler { 13 | @NonNull @Override 14 | public Object apply(@NonNull Context ctx) throws Exception { 15 | return null; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/App1586c.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues; 7 | 8 | import static io.jooby.openapi.MvcExtensionGenerator.toMvcExtension; 9 | 10 | import examples.OverrideMethodSubClassController; 11 | import io.jooby.Jooby; 12 | 13 | public class App1586c extends Jooby { 14 | { 15 | mvc(toMvcExtension(OverrideMethodSubClassController.class)); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i2594/ControllersAppV12594.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i2594; 7 | 8 | import static io.jooby.openapi.MvcExtensionGenerator.toMvcExtension; 9 | 10 | import io.jooby.Jooby; 11 | 12 | public class ControllersAppV12594 extends Jooby { 13 | 14 | public ControllersAppV12594() { 15 | mvc(toMvcExtension(ControllerV12594.class)); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i2594/ControllersAppV22594.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i2594; 7 | 8 | import static io.jooby.openapi.MvcExtensionGenerator.toMvcExtension; 9 | 10 | import io.jooby.Jooby; 11 | 12 | public class ControllersAppV22594 extends Jooby { 13 | 14 | public ControllersAppV22594() { 15 | mvc(toMvcExtension(ControllerV22594.class)); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/javadoc/input/RecordBeanDoc.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package javadoc.input; 7 | 8 | import jakarta.validation.constraints.NotEmpty; 9 | 10 | /** 11 | * Record documentation. 12 | * 13 | * @param id Person id. Unique person identifier. 14 | * @param name Person name. Example: edgar. 15 | */ 16 | public record RecordBeanDoc(String id, @NotEmpty String name) {} 17 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/resources/issues/i3578/fail-unknown.yaml: -------------------------------------------------------------------------------- 1 | openapi: 3.0.1 2 | info: 3 | title: Pets API 4 | description: Nunc fermentum ipsum id bibendum blandit. Praesent sagittis est ut. 5 | version: "1.0" 6 | x-merge-policy: fail 7 | paths: 8 | /app-path/pets: 9 | get: 10 | operationId: listPets 11 | responses: 12 | "200": 13 | description: Success 14 | content: 15 | application/json: 16 | schema: 17 | type: string 18 | -------------------------------------------------------------------------------- /modules/jooby-test/src/test/java/io/jooby/test/TestArgApp.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.test; 7 | 8 | import java.util.List; 9 | 10 | import io.jooby.Jooby; 11 | import io.jooby.StartupSummary; 12 | 13 | public class TestArgApp extends Jooby { 14 | public TestArgApp(String name) { 15 | setStartupSummary(List.of(StartupSummary.NONE)); 16 | get("/", ctx -> name); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /tests/src/test/java/io/jooby/i2325/MyID2325.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.i2325; 7 | 8 | import jakarta.inject.Inject; 9 | 10 | public class MyID2325 { 11 | 12 | private String value; 13 | 14 | @Inject 15 | public MyID2325(String value) { 16 | this.value = value; 17 | } 18 | 19 | @Override 20 | public String toString() { 21 | return "MyID:" + value; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /tests/src/test/java/io/jooby/i2529/Controller2529.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.i2529; 7 | 8 | import io.jooby.annotation.GET; 9 | import io.jooby.annotation.Path; 10 | import io.jooby.annotation.Produces; 11 | 12 | public class Controller2529 { 13 | @GET 14 | @Path("/2529") 15 | @Produces("text/plain") 16 | public String hello() { 17 | return "Hello world"; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /tests/src/test/java/io/jooby/i3530/Bean3530.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.i3530; 7 | 8 | import jakarta.validation.constraints.NotEmpty; 9 | 10 | public class Bean3530 { 11 | @NotEmpty private String name; 12 | 13 | public @NotEmpty String getName() { 14 | return name; 15 | } 16 | 17 | public void setName(@NotEmpty String name) { 18 | this.name = name; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /jooby/src/main/java/io/jooby/internal/RouteTree.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.internal; 7 | 8 | import io.jooby.Route; 9 | import io.jooby.Router; 10 | 11 | interface RouteTree { 12 | void insert(String method, String pattern, Route route); 13 | 14 | boolean exists(String method, String path); 15 | 16 | Router.Match find(String method, String path); 17 | 18 | void destroy(); 19 | } 20 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/source/NoPathRoute.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package source; 7 | 8 | import io.jooby.annotation.GET; 9 | import io.jooby.annotation.Path; 10 | 11 | public class NoPathRoute { 12 | 13 | @GET 14 | public String root() { 15 | return "root"; 16 | } 17 | 18 | @GET 19 | @Path("/subpath") 20 | public String subpath() { 21 | return "subpath"; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/source/SuspendRoute.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package source; 7 | 8 | import io.jooby.annotation.GET; 9 | import io.jooby.annotation.Path; 10 | import kotlin.coroutines.Continuation; 11 | 12 | @Path("/suspend") 13 | public class SuspendRoute { 14 | 15 | @GET 16 | public Continuation suspendFun(Continuation continuation) { 17 | return continuation; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i3575/Controller3575.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i3575; 7 | 8 | import io.jooby.annotation.GET; 9 | import io.jooby.annotation.Path; 10 | import io.swagger.v3.oas.annotations.Hidden; 11 | 12 | @Path("/3575") 13 | public class Controller3575 { 14 | 15 | @GET("/mvc") 16 | @Hidden 17 | public String sayHi() { 18 | return "hi"; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i3760/Q3760.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i3760; 7 | 8 | import jakarta.validation.constraints.Size; 9 | 10 | public class Q3760 { 11 | 12 | private String text; 13 | 14 | @Size(min = 10, max = 1000) public String getText() { 15 | return text; 16 | } 17 | 18 | public void setText(String text) { 19 | this.text = text; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /tests/src/test/java/io/jooby/i1573/Controller1573.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.i1573; 7 | 8 | import java.util.Optional; 9 | 10 | import io.jooby.annotation.GET; 11 | import io.jooby.annotation.PathParam; 12 | 13 | public class Controller1573 { 14 | 15 | @GET("/profile/{id}?") 16 | public String profile(@PathParam Optional id) { 17 | return id.orElse("self"); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /tests/src/test/java/io/jooby/i1859/C1859.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.i1859; 7 | 8 | import java.util.Optional; 9 | 10 | import io.jooby.annotation.POST; 11 | import io.jooby.annotation.Path; 12 | 13 | @Path(("/c")) 14 | public class C1859 { 15 | @POST("/i1859") 16 | public String foo(String theBodyParam) { 17 | return Optional.ofNullable(theBodyParam).orElse("empty"); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /docs/images/clippy.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/source/Controller1552Empty.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package source; 7 | 8 | import io.jooby.Context; 9 | import io.jooby.annotation.GET; 10 | import io.jooby.annotation.Path; 11 | 12 | @Path("/inherit_empty") 13 | public class Controller1552Empty extends Controller1552Base { 14 | @GET 15 | public String fake(Context ctx) { 16 | return ctx.getRequestPath(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i1581/App1581.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i1581; 7 | 8 | import static io.jooby.openapi.MvcExtensionGenerator.toMvcExtension; 9 | 10 | import io.jooby.Jooby; 11 | 12 | public class App1581 extends Jooby { 13 | { 14 | AppComponent dagger = DaggerAppComponent.builder().build(); 15 | 16 | mvc(toMvcExtension(dagger.myController())); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /tests/src/test/java/io/jooby/test/MyValue.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.test; 7 | 8 | public class MyValue { 9 | private String string; 10 | 11 | public String getString() { 12 | return string; 13 | } 14 | 15 | public void setString(String string) { 16 | this.string = string; 17 | } 18 | 19 | @Override 20 | public String toString() { 21 | return string; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/completablefuture/CCompletableFuture.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.completablefuture; 7 | 8 | import java.util.concurrent.CompletableFuture; 9 | 10 | import io.jooby.annotation.GET; 11 | 12 | public class CCompletableFuture { 13 | @GET("/future") 14 | public CompletableFuture future() { 15 | return CompletableFuture.completedFuture("c"); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/i1859/C1859.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.i1859; 7 | 8 | import java.util.Optional; 9 | 10 | import io.jooby.annotation.POST; 11 | import io.jooby.annotation.Path; 12 | 13 | @Path(("/c")) 14 | public class C1859 { 15 | @POST("/i1859") 16 | public String foo(String theBodyParam) { 17 | return Optional.ofNullable(theBodyParam).orElse("empty"); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /modules/jooby-conscrypt/src/main/java/module-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | import io.jooby.SslProvider; 7 | import io.jooby.conscrypt.ConscryptSslProvider; 8 | 9 | /** SSL Conscrypt module. */ 10 | module io.jooby.conscrypt { 11 | requires io.jooby; 12 | requires static com.github.spotbugs.annotations; 13 | requires org.conscrypt; 14 | 15 | provides SslProvider with 16 | ConscryptSslProvider; 17 | } 18 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i3729/api/BookQuery.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i3729.api; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * Query books by complex filters. 12 | * 13 | * @param title Book's title. 14 | * @param author Book's author. Optional. 15 | * @param isbn Book's isbn. Optional. 16 | */ 17 | public record BookQuery(String title, String author, List isbn) {} 18 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/i2325/MyID2325.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.i2325; 7 | 8 | import java.util.Optional; 9 | 10 | public class MyID2325 { 11 | 12 | private String value; 13 | 14 | public MyID2325(String value) { 15 | this.value = value; 16 | } 17 | 18 | @Override 19 | public String toString() { 20 | return "MyID:" + Optional.ofNullable(value).orElse("{}"); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/i2525/MyID2525.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.i2525; 7 | 8 | import java.util.Optional; 9 | 10 | public class MyID2525 { 11 | 12 | private String value; 13 | 14 | public MyID2525(String value) { 15 | this.value = value; 16 | } 17 | 18 | @Override 19 | public String toString() { 20 | return "MyID:" + Optional.ofNullable(value).orElse("{}"); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/javadoc/input/sub/SubPackageHandler.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package javadoc.input.sub; 7 | 8 | import io.jooby.Context; 9 | 10 | public class SubPackageHandler { 11 | 12 | /* 13 | * Sub package doc. 14 | * 15 | * @param external External parameter. 16 | */ 17 | public static String subPackage(Context ctx) { 18 | return ctx.path("external").value(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/kotlin/kt/i2598/App2598.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package kt.i2598 7 | 8 | import io.jooby.kt.Kooby 9 | 10 | class App2598 : 11 | Kooby({ 12 | get("/2598") { 13 | val sign = mutableListOf() 14 | ctx.send("{\"success\":\"true\"}") 15 | // some imaginary long running operation here 16 | sign.removeIf { it == 1 } 17 | return@get ctx 18 | } 19 | }) 20 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.class 2 | 3 | # Package Files # 4 | *.jar 5 | *.war 6 | *.ear 7 | target 8 | .classpath 9 | .project 10 | .settings 11 | .factorypath 12 | dependency-reduced-pom.xml 13 | bin 14 | 15 | # OSX 16 | *.DS_Store 17 | 18 | # IntelliJ IDE Project Files # 19 | *.iml 20 | *.idea 21 | *.versionsBackup 22 | pom.xml.versionsBackup 23 | jacoco.exec 24 | .*.md.html 25 | node 26 | dump 27 | TODO 28 | .interp 29 | tmp 30 | checkstyle 31 | *.mv.db 32 | versions 33 | out 34 | node 35 | node_modules 36 | build 37 | .gradle 38 | !gradle-wrapper.jar 39 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/source/RouteClassAttributes.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package source; 7 | 8 | import io.jooby.annotation.GET; 9 | 10 | @RoleAnnotation("User") 11 | public class RouteClassAttributes { 12 | @RoleAnnotation("Admin") 13 | @GET("/admin") 14 | public String admin() { 15 | return "..."; 16 | } 17 | 18 | @GET("/user") 19 | public String user() { 20 | return "..."; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/source/Controller1786.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package source; 7 | 8 | import edu.umd.cs.findbugs.annotations.NonNull; 9 | import io.jooby.annotation.GET; 10 | import io.jooby.annotation.QueryParam; 11 | 12 | public class Controller1786 { 13 | 14 | @GET("/required-string-param") 15 | public String requiredStringParam(@QueryParam @NonNull String value) { 16 | return value; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /tests/src/test/java/io/jooby/i2068/Bean2068.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.i2068; 7 | 8 | public class Bean2068 { 9 | 10 | private String name; 11 | 12 | public Bean2068(String name) { 13 | this.name = name; 14 | } 15 | 16 | public Bean2068() {} 17 | 18 | public String getName() { 19 | return name; 20 | } 21 | 22 | public void setName(String name) { 23 | this.name = name; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /tests/src/test/kotlin/i3490/Issue3490.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package i3490 7 | 8 | import io.jooby.junit.ServerTest 9 | import io.jooby.junit.ServerTestRunner 10 | import io.jooby.kt.Kooby 11 | 12 | class Issue3490 { 13 | @ServerTest 14 | fun shouldBootComplexGenericTypes(runner: ServerTestRunner) = 15 | runner 16 | .use { Kooby { mvc(C3490_()) } } 17 | .ready { _ -> 18 | // NOOP 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/i3455/Schema.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.i3455; 7 | 8 | import java.lang.annotation.ElementType; 9 | import java.lang.annotation.Retention; 10 | import java.lang.annotation.RetentionPolicy; 11 | import java.lang.annotation.Target; 12 | 13 | @Retention(RetentionPolicy.RUNTIME) 14 | @Target(ElementType.METHOD) 15 | public @interface Schema { 16 | String description() default ""; 17 | } 18 | -------------------------------------------------------------------------------- /modules/jooby-vertx/src/main/java/module-info.java: -------------------------------------------------------------------------------- 1 | import io.jooby.Server; 2 | import io.jooby.vertx.VertxServer; 3 | 4 | /** Vertx integration and Web Server */ 5 | module io.jooby.vertx { 6 | exports io.jooby.vertx; 7 | 8 | requires io.jooby; 9 | requires io.jooby.netty; 10 | requires io.vertx.core; 11 | requires io.netty.transport; 12 | requires org.slf4j; 13 | requires static com.github.spotbugs.annotations; 14 | requires jakarta.inject; 15 | requires io.netty.common; 16 | 17 | provides Server with 18 | VertxServer; 19 | } 20 | -------------------------------------------------------------------------------- /tests/src/test/java/io/jooby/i2457/ControllerV22457.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.i2457; 7 | 8 | import io.jooby.annotation.GET; 9 | import io.jooby.annotation.Path; 10 | 11 | @Path("/") 12 | public class ControllerV22457 { 13 | 14 | @jakarta.inject.Inject private WelcomeService2457 welcomeService; 15 | 16 | @GET("/welcome") 17 | public String sayHi() { 18 | return welcomeService.welcome("v2"); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /jooby/src/main/java/io/jooby/internal/ContextInitializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.internal; 7 | 8 | import io.jooby.Context; 9 | 10 | public interface ContextInitializer { 11 | ContextInitializer PROXY_PEER_ADDRESS = ctx -> ProxyPeerAddress.parse(ctx).set(ctx); 12 | 13 | void apply(Context ctx); 14 | 15 | default ContextInitializer add(ContextInitializer initializer) { 16 | return initializer; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /jooby/src/main/java/io/jooby/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Welcome to Jooby! 3 | * 4 | *

Hello World: 5 | * 6 | *

{@code
 7 |  * public class App extends Jooby {
 8 |  *
 9 |  *   {
10 |  *     get("/", ctx -> "Hello World!");
11 |  *   }
12 |  *
13 |  *   public static void main(String[] args) {
14 |  *     runApp(args, App::new);
15 |  *   }
16 |  * }
17 |  *
18 |  * }
19 | * 20 | * More documentation at jooby.io 21 | */ 22 | @edu.umd.cs.findbugs.annotations.ReturnValuesAreNonnullByDefault 23 | package io.jooby; 24 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i3729/api/MountedRouter.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i3729.api; 7 | 8 | import io.jooby.Context; 9 | import io.jooby.Jooby; 10 | 11 | public class MountedRouter extends Jooby { 12 | 13 | { 14 | get("/mounted", this::mountedOp); 15 | } 16 | 17 | /* 18 | * Mounted operation. 19 | */ 20 | private String mountedOp(Context context) { 21 | return ""; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /tests/src/test/java/examples/Role.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package examples; 7 | 8 | import java.lang.annotation.ElementType; 9 | import java.lang.annotation.Retention; 10 | import java.lang.annotation.RetentionPolicy; 11 | import java.lang.annotation.Target; 12 | 13 | @Retention(RetentionPolicy.RUNTIME) 14 | @Target(ElementType.METHOD) 15 | public @interface Role { 16 | String value(); 17 | 18 | String level() default "one"; 19 | } 20 | -------------------------------------------------------------------------------- /tests/src/test/java/io/jooby/i3551/GuiceService3551.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.i3551; 7 | 8 | import com.fasterxml.jackson.databind.module.SimpleModule; 9 | import io.jooby.Environment; 10 | import jakarta.inject.Inject; 11 | 12 | public class GuiceService3551 extends SimpleModule { 13 | private Environment env; 14 | 15 | @Inject 16 | public GuiceService3551(Environment env) { 17 | this.env = env; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /tests/src/test/java/io/jooby/i3751/User3721.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.i3751; 7 | 8 | import jakarta.validation.constraints.NotBlank; 9 | 10 | public class User3721 { 11 | @NotBlank(message = "password can not empty") private String password; 12 | 13 | public String getPassword() { 14 | return password; 15 | } 16 | 17 | public void setPassword(String password) { 18 | this.password = password; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/source/TopAnnotation.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package source; 7 | 8 | import java.lang.annotation.ElementType; 9 | import java.lang.annotation.Retention; 10 | import java.lang.annotation.RetentionPolicy; 11 | import java.lang.annotation.Target; 12 | 13 | @Target({ElementType.METHOD, ElementType.TYPE}) 14 | @Retention(RetentionPolicy.RUNTIME) 15 | public @interface TopAnnotation { 16 | TopEnum[] value(); 17 | } 18 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/i1807/C1807.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.i1807; 7 | 8 | import edu.umd.cs.findbugs.annotations.NonNull; 9 | import io.jooby.annotation.FormParam; 10 | import io.jooby.annotation.POST; 11 | import io.jooby.annotation.Path; 12 | 13 | public class C1807 { 14 | @Path("/test/{word}") 15 | @POST 16 | public Word1807 hello(@FormParam @NonNull Word1807 data) { 17 | return data; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/i3472/BeanMapping.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.i3472; 7 | 8 | import io.jooby.Context; 9 | 10 | public class BeanMapping { 11 | public static BindBean map(Context ctx) { 12 | return new BindBean("mapping:" + ctx.query("value").value()); 13 | } 14 | 15 | public static BindBean withName(Context ctx) { 16 | return new BindBean("withName:" + ctx.query("value").value()); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/i3539/Secured3525.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.i3539; 7 | 8 | import java.lang.annotation.ElementType; 9 | import java.lang.annotation.Retention; 10 | import java.lang.annotation.RetentionPolicy; 11 | import java.lang.annotation.Target; 12 | 13 | @Target({ElementType.METHOD}) 14 | @Retention(RetentionPolicy.RUNTIME) 15 | public @interface Secured3525 { 16 | boolean value() default true; 17 | } 18 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/validation/Bean.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.validation; 7 | 8 | import io.jooby.Context; 9 | 10 | class Bean { 11 | private String name; 12 | 13 | public String getName() { 14 | return name; 15 | } 16 | 17 | public void setName(String name) { 18 | this.name = name; 19 | } 20 | 21 | public static Bean map(Context ctx) { 22 | return ctx.body(Bean.class); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /modules/jooby-hibernate-validator/src/main/java/module-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | /** Hibernate Validator Module. */ 7 | module io.jooby.hibernate.validator { 8 | exports io.jooby.hibernate.validator; 9 | 10 | requires transitive io.jooby; 11 | requires static com.github.spotbugs.annotations; 12 | requires typesafe.config; 13 | requires org.hibernate.validator; 14 | requires jakarta.validation; 15 | requires org.slf4j; 16 | } 17 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/main/java/io/jooby/internal/openapi/ResolvedSchemaExt.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.internal.openapi; 7 | 8 | import java.lang.reflect.Type; 9 | import java.util.Map; 10 | 11 | import io.swagger.v3.core.converter.ResolvedSchema; 12 | import io.swagger.v3.oas.models.media.Schema; 13 | 14 | public class ResolvedSchemaExt extends ResolvedSchema { 15 | public Map referencedSchemasByType; 16 | } 17 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i1592/FairEmissionData.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i1592; 7 | 8 | import java.util.List; 9 | 10 | public class FairEmissionData { 11 | private List co2Emissions; 12 | 13 | public List getCo2Emissions() { 14 | return co2Emissions; 15 | } 16 | 17 | public void setCo2Emissions(List co2Emissions) { 18 | this.co2Emissions = co2Emissions; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/javadoc/input/NoDoc.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package javadoc.input; 7 | 8 | import edu.umd.cs.findbugs.annotations.NonNull; 9 | import io.jooby.annotation.GET; 10 | import io.jooby.annotation.Path; 11 | import io.jooby.annotation.QueryParam; 12 | 13 | @Path("/api") 14 | public class NoDoc { 15 | 16 | @NonNull @GET 17 | public String hello(@QueryParam String name) { 18 | return "hello"; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /tests/src/test/java/io/jooby/i3551/JacksonModule3551.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.i3551; 7 | 8 | import com.fasterxml.jackson.databind.module.SimpleModule; 9 | import io.jooby.Environment; 10 | import jakarta.inject.Inject; 11 | 12 | public class JacksonModule3551 extends SimpleModule { 13 | private Environment env; 14 | 15 | @Inject 16 | public JacksonModule3551(Environment env) { 17 | this.env = env; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/source/Controller1786b.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package source; 7 | 8 | import java.util.UUID; 9 | 10 | import edu.umd.cs.findbugs.annotations.NonNull; 11 | import io.jooby.annotation.GET; 12 | import io.jooby.annotation.QueryParam; 13 | 14 | public class Controller1786b { 15 | 16 | @GET("/required-param") 17 | public UUID requiredParam(@QueryParam @NonNull UUID value) { 18 | return value; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i1580/Controller1580.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i1580; 7 | 8 | import io.jooby.annotation.PUT; 9 | import io.jooby.annotation.Path; 10 | import io.jooby.annotation.PathParam; 11 | 12 | @Path("/pets") 13 | public class Controller1580 { 14 | @PUT 15 | @Path("/{id}") 16 | public Data1580 updatePet(Data1580 body, @PathParam String id) { // -> leads to NPE 17 | return body; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/kotlin/kt/KtRouteIdioms.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package kt 7 | 8 | import io.jooby.kt.Kooby 9 | 10 | class KtRouteIdioms : 11 | Kooby({ 12 | get("/implicitContext") { "implicit" } 13 | 14 | get("/explicitContext") { ctx -> ctx.requestPath } 15 | 16 | path("/api") { 17 | path("/people") { get("/") { ctx.requestPath } } 18 | 19 | get("/version") { ctx -> ctx.requestPath } 20 | } 21 | }) 22 | -------------------------------------------------------------------------------- /tests/src/test/java/io/jooby/i1786/Controller1786.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.i1786; 7 | 8 | import java.util.UUID; 9 | 10 | import edu.umd.cs.findbugs.annotations.NonNull; 11 | import io.jooby.annotation.GET; 12 | import io.jooby.annotation.QueryParam; 13 | 14 | public class Controller1786 { 15 | @GET("/1786/nonnull") 16 | public UUID followNonnullAnnotation(@QueryParam @NonNull UUID key) { 17 | return key; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /tests/src/test/java/io/jooby/i3756/C3756.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.i3756; 7 | 8 | import io.jooby.annotation.GET; 9 | import io.jooby.annotation.Path; 10 | 11 | @Path("/3756") 12 | public class C3756 { 13 | private final S3756 s3756; 14 | 15 | public C3756(S3756 s3756) { 16 | this.s3756 = s3756; 17 | } 18 | 19 | @GET 20 | public String handle() { 21 | s3756.accept("hello"); 22 | return "hello"; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/i3472/BindBeanConstructor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.i3472; 7 | 8 | import io.jooby.Context; 9 | 10 | public class BindBeanConstructor { 11 | 12 | private final String value; 13 | 14 | public BindBeanConstructor(Context ctx) { 15 | this.value = "bean-constructor:" + ctx.query("value").value(); 16 | } 17 | 18 | @Override 19 | public String toString() { 20 | return value; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/i3656/Issue3656.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.i3656; 7 | 8 | import org.junit.jupiter.api.Assertions; 9 | import org.junit.jupiter.api.Test; 10 | 11 | import io.jooby.apt.ProcessorRunner; 12 | 13 | public class Issue3656 { 14 | @Test 15 | public void shouldNotThrowErrorOnEmptyController() throws Exception { 16 | new ProcessorRunner(new C3656()).withSourceCode(Assertions::assertNull); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/resources/issues/i3578/keep.yaml: -------------------------------------------------------------------------------- 1 | openapi: 3.0.1 2 | info: 3 | title: Pets API 4 | description: Nunc fermentum ipsum id bibendum blandit. Praesent sagittis est ut. 5 | version: "1.0" 6 | x-merge-policy: keep 7 | paths: 8 | /app-path: 9 | get: 10 | operationId: home 11 | /app-path/pets: 12 | get: 13 | operationId: listPets 14 | responses: 15 | "200": 16 | description: Success 17 | content: 18 | application/json: 19 | schema: 20 | type: string 21 | -------------------------------------------------------------------------------- /modules/jooby-whoops/src/main/java/module-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | /** Whoops module. */ 7 | module io.jooby.whoops { 8 | exports io.jooby.whoops; 9 | 10 | requires io.jooby; 11 | requires static com.github.spotbugs.annotations; 12 | requires typesafe.config; 13 | requires org.slf4j; 14 | requires unbescape; 15 | 16 | // SHADED: All content after this line will be removed at build time 17 | requires static io.pebbletemplates; 18 | } 19 | -------------------------------------------------------------------------------- /tests/src/test/java/io/jooby/test/TestSupport.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.test; 7 | 8 | import java.nio.file.Path; 9 | import java.nio.file.Paths; 10 | 11 | public class TestSupport { 12 | 13 | public static Path userdir(String... segments) { 14 | Path path = Paths.get(System.getProperty("user.dir")); 15 | for (String segment : segments) { 16 | path = path.resolve(segment); 17 | } 18 | return path; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/source/RouteDispatch.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package source; 7 | 8 | import io.jooby.annotation.Dispatch; 9 | import io.jooby.annotation.GET; 10 | import io.jooby.annotation.Path; 11 | 12 | @Dispatch 13 | public class RouteDispatch { 14 | 15 | @Path("/toplevel") 16 | @GET 17 | public void toplevel() {} 18 | 19 | @Path("/methodlevel") 20 | @GET 21 | @Dispatch("single") 22 | public void methodlevel() {} 23 | } 24 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/source/StringArrayAnnotation.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package source; 7 | 8 | import java.lang.annotation.ElementType; 9 | import java.lang.annotation.Retention; 10 | import java.lang.annotation.RetentionPolicy; 11 | import java.lang.annotation.Target; 12 | 13 | @Target({ElementType.METHOD, ElementType.TYPE}) 14 | @Retention(RetentionPolicy.RUNTIME) 15 | public @interface StringArrayAnnotation { 16 | String[] value(); 17 | } 18 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/i2629/C2629.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.i2629; 7 | 8 | import java.util.List; 9 | 10 | import io.jooby.annotation.GET; 11 | import io.jooby.annotation.QueryParam; 12 | 13 | public class C2629 { 14 | @GET("/2629") 15 | public String queryUsers( 16 | @QueryParam String type, @QueryParam List number, @QueryParam boolean bool) { 17 | return type + ":" + number + ":" + bool; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/i3582/C3582.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.i3582; 7 | 8 | import com.google.inject.Inject; 9 | import io.jooby.annotation.GET; 10 | import io.jooby.annotation.QueryParam; 11 | 12 | @Annotation3582 13 | public class C3582 { 14 | 15 | @Inject 16 | public C3582() {} 17 | 18 | @GET("/hello") 19 | public String helloWorld(@QueryParam String property) { 20 | return "hello world" + property; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /modules/jooby-handlebars/src/main/java/io/jooby/handlebars/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Handlebars templates for jooby: 3 | * 4 | *
 5 |  * import io.jooby.handlebars.HandlebarsModule;
 6 |  *
 7 |  * {
 8 |  *   install(new HandlebarsModule());
 9 |  *
10 |  *   get("/", ctx -> {
11 |  *     return new MapModelAndView("index.hbs")
12 |  *         .put("name", "Jooby");
13 |  *   });
14 |  * }
15 |  * 
16 | * 17 | *

views/index.hbs 18 | * 19 | *

20 |  *   Hello {{name}}!
21 |  * 
22 | * 23 | * @author edgar 24 | */ 25 | package io.jooby.handlebars; 26 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/examples/RouteImportReferences.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package examples; 7 | 8 | import io.jooby.Jooby; 9 | import io.jooby.Router; 10 | 11 | public class RouteImportReferences extends Jooby { 12 | 13 | { 14 | Router routeA = new RouteA(); 15 | mount(routeA); 16 | 17 | mount("/require", require(RouteA.class)); 18 | 19 | Router route2 = new RouteA(); 20 | mount("/prefix", route2); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /jooby/src/main/java/io/jooby/internal/RegistryRef.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.internal; 7 | 8 | import io.jooby.Registry; 9 | 10 | public class RegistryRef { 11 | 12 | private Registry registry; 13 | 14 | public boolean isSet() { 15 | return registry != null; 16 | } 17 | 18 | public Registry get() { 19 | return registry; 20 | } 21 | 22 | public void set(Registry registry) { 23 | this.registry = registry; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /modules/jooby-cli/src/main/resources/cli/App.kt.hbs: -------------------------------------------------------------------------------- 1 | package {{package}} 2 | 3 | import io.jooby.kt.Kooby 4 | import io.jooby.kt.runApp 5 | import io.jooby.{{serverPackageName}}.{{serverClassName}} 6 | {{#if openapi}} 7 | import io.jooby.OpenAPIModule 8 | {{/if}} 9 | 10 | class App: Kooby({ 11 | {{#if openapi}} 12 | install(OpenAPIModule()) 13 | {{/if}} 14 | {{#if mvc}} 15 | mvc(Controller_()) 16 | {{else}} 17 | get("/") { 18 | "Welcome to Jooby!" 19 | } 20 | {{/if}} 21 | }) 22 | 23 | fun main(args: Array) { 24 | runApp(args, {{serverClassName}}(), ::App) 25 | } 26 | -------------------------------------------------------------------------------- /modules/jooby-metrics/src/main/java/module-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | /** Metrics module. */ 7 | module io.jooby.metrics { 8 | exports io.jooby.metrics; 9 | 10 | requires io.jooby; 11 | requires static com.github.spotbugs.annotations; 12 | requires typesafe.config; 13 | requires org.slf4j; 14 | requires com.codahale.metrics; 15 | requires com.codahale.metrics.health; 16 | requires com.codahale.metrics.jvm; 17 | requires java.management; 18 | } 19 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/examples/PetRepo.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package examples; 7 | 8 | import java.util.List; 9 | 10 | import edu.umd.cs.findbugs.annotations.NonNull; 11 | 12 | public interface PetRepo { 13 | 14 | @NonNull List pets(PetQuery query); 15 | 16 | @NonNull Pet findById(long id); 17 | 18 | @NonNull Pet save(@NonNull Pet pet); 19 | 20 | @NonNull Pet update(@NonNull Pet pet); 21 | 22 | void deleteById(long id); 23 | } 24 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/App1585.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues; 7 | 8 | import io.jooby.Jooby; 9 | 10 | public class App1585 extends Jooby { 11 | { 12 | get("/user/{id:[0-9]+}", ctx -> ctx.path("id").intValue()); 13 | 14 | get("/company/{id}", ctx -> ctx.path("id").intValue()); 15 | 16 | get("/file/*", ctx -> ctx.path("*").value()); 17 | 18 | get("/resources/*path", ctx -> ctx.path("path").value()); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i1934/Controller1934.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i1934; 7 | 8 | import examples.Person; 9 | import io.jooby.annotation.ContextParam; 10 | import io.jooby.annotation.GET; 11 | import io.jooby.annotation.Path; 12 | 13 | @Path("/openapi") 14 | public class Controller1934 { 15 | 16 | @GET 17 | @Path("me") 18 | public Person getUserInformation(@ContextParam Person user) { 19 | return user; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i2594/ControllerV22594.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i2594; 7 | 8 | import io.jooby.annotation.GET; 9 | import io.jooby.annotation.Path; 10 | import jakarta.inject.Inject; 11 | 12 | @Path("/") 13 | public class ControllerV22594 { 14 | 15 | @Inject private WelcomeService2594 welcomeService; 16 | 17 | @GET("/welcome") 18 | public String sayHi() { 19 | return welcomeService.welcome("v2"); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i3729/api/InstalledRouter.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i3729.api; 7 | 8 | import io.jooby.Context; 9 | import io.jooby.Jooby; 10 | 11 | public class InstalledRouter extends Jooby { 12 | 13 | { 14 | /* 15 | * Installed operation. 16 | * 17 | * @operationId installedOp 18 | */ 19 | get("/installed", Context::getRequestPath); 20 | 21 | mount(new MountedRouter()); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /tests/src/test/java/io/jooby/i3764/C3764.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.i3764; 7 | 8 | import io.jooby.Context; 9 | import io.jooby.annotation.GET; 10 | import jakarta.inject.Inject; 11 | 12 | public class C3764 { 13 | 14 | private final Context ctx; 15 | 16 | @Inject 17 | public C3764(Context ctx) { 18 | this.ctx = ctx; 19 | } 20 | 21 | @GET("/3764") 22 | public String path() { 23 | return ctx.getRequestPath(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /tests/src/test/java/io/jooby/problem/data/CustomError.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.problem.data; 7 | 8 | import io.jooby.problem.HttpProblem; 9 | 10 | class CustomError extends HttpProblem.Error { 11 | private final String type; 12 | 13 | public CustomError(String detail, String pointer, String type) { 14 | super(detail, pointer); 15 | this.type = type; 16 | } 17 | 18 | public String getType() { 19 | return type; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/i2405/C2405.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.i2405; 7 | 8 | import io.jooby.annotation.GET; 9 | import io.jooby.annotation.QueryParam; 10 | 11 | public class C2405 { 12 | @GET("/2405/blah") 13 | public String blah(@QueryParam Bean2405 blah) { 14 | return blah.toString(); 15 | } 16 | 17 | @GET("/2405/blah2") 18 | public String blah2(@QueryParam Bean2405 blah) { 19 | return blah.toString(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/i3804/C3804b.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.i3804; 7 | 8 | import io.jooby.Context; 9 | import io.jooby.annotation.GET; 10 | import io.jooby.annotation.Path; 11 | import jakarta.inject.Inject; 12 | 13 | @Path("/3804") 14 | public class C3804b { 15 | @Inject protected Service3804 paramDecoder; 16 | 17 | @GET 18 | public Object list(Context ctx) { 19 | return paramDecoder; // paramDecoder is null 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/kotlin/kt/i3230/App3230.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package kt.i3230 7 | 8 | import io.jooby.kt.Kooby 9 | import io.jooby.kt.runApp 10 | 11 | // an extension method that creates some routes 12 | fun Kooby.helloRoute() { 13 | get("/hello") { "world" } 14 | 15 | post("/create") { "world" } 16 | } 17 | 18 | fun main(args: Array) { 19 | runApp(args) { 20 | // calling the extension method 21 | helloRoute() 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /tests/src/test/java/examples/LoopDispatch.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package examples; 7 | 8 | import io.jooby.annotation.Dispatch; 9 | import io.jooby.annotation.GET; 10 | 11 | public class LoopDispatch { 12 | @GET("/") 13 | public String classlevel() { 14 | return Thread.currentThread().getName(); 15 | } 16 | 17 | @GET("/method") 18 | @Dispatch("single") 19 | public String methodlevel() { 20 | return Thread.currentThread().getName(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /modules/jooby-apt/src/test/java/tests/i3756/C3756.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package tests.i3756; 7 | 8 | import io.jooby.annotation.GET; 9 | import io.jooby.annotation.Path; 10 | 11 | @Path("/C3756") 12 | public class C3756 { 13 | private final S3756 s3756; 14 | 15 | public C3756(S3756 s3756) { 16 | super(); 17 | this.s3756 = s3756; 18 | } 19 | 20 | @GET 21 | public String handle() { 22 | s3756.accept("hello"); 23 | return "hello"; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/examples/Pet.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package examples; 7 | 8 | public class Pet { 9 | 10 | private long id; 11 | 12 | private String name; 13 | 14 | public long getId() { 15 | return id; 16 | } 17 | 18 | public void setId(long id) { 19 | this.id = id; 20 | } 21 | 22 | public String getName() { 23 | return name; 24 | } 25 | 26 | public void setName(String name) { 27 | this.name = name; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i1573/App1573.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i1573; 7 | 8 | import static io.jooby.openapi.MvcExtensionGenerator.toMvcExtension; 9 | 10 | import io.jooby.Jooby; 11 | 12 | public class App1573 extends Jooby { 13 | { 14 | get( 15 | "/profile/{id}?", 16 | ctx -> { 17 | return ctx.path("id").value("self"); 18 | }); 19 | 20 | mvc(toMvcExtension(Controller1573.class)); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i1573/Controller1573.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i1573; 7 | 8 | import java.util.Optional; 9 | 10 | import io.jooby.annotation.GET; 11 | import io.jooby.annotation.Path; 12 | import io.jooby.annotation.PathParam; 13 | 14 | @Path("/c") 15 | public class Controller1573 { 16 | 17 | @GET("/profile/{id}?") 18 | public String profile(@PathParam Optional id) { 19 | return id.orElse("self"); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/kotlin/kt/KtPathOperatorWithTags.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package kt 7 | 8 | import io.jooby.kt.Kooby 9 | import io.swagger.v3.oas.annotations.tags.Tag 10 | 11 | @Tag(name = "super") 12 | class KtPathOperatorWithTags : 13 | Kooby({ 14 | path("/pets") { get("/") { "..." }.tags("local").summary("List pets").description("Pets ...") } 15 | .tags("top") 16 | .summary("API summary") 17 | .description("API description") 18 | }) 19 | -------------------------------------------------------------------------------- /tests/src/test/java/io/jooby/i2477/Controller2477.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package io.jooby.i2477; 7 | 8 | import io.jooby.StatusCode; 9 | import io.jooby.annotation.POST; 10 | import io.jooby.annotation.PUT; 11 | import io.jooby.annotation.Path; 12 | 13 | public class Controller2477 { 14 | @PUT 15 | @Path("/2477") 16 | public void doPut() {} 17 | 18 | @POST 19 | @Path("/2477") 20 | public StatusCode doPost() { 21 | return StatusCode.CREATED; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /modules/jooby-cli/src/main/resources/cli/docker.maven.hbs: -------------------------------------------------------------------------------- 1 | FROM maven:3-eclipse-temurin-21 as build 2 | WORKDIR /{{artifactId}} 3 | COPY pom.xml pom.xml 4 | COPY src src 5 | COPY conf conf 6 | RUN mvn package 7 | 8 | FROM eclipse-temurin:21-jdk 9 | WORKDIR /{{artifactId}} 10 | {{#if stork}} 11 | COPY --from=build /{{artifactId}}/target/stork . 12 | {{else}} 13 | COPY --from=build /{{artifactId}}/target/{{finalArtifactId}} app.jar 14 | COPY conf conf 15 | {{/if}} 16 | EXPOSE 8080 17 | {{#if stork}} 18 | CMD ["bin/{{artifactId}}", "--run"] 19 | {{else}} 20 | CMD ["java", "-jar", "app.jar"] 21 | {{/if}} 22 | -------------------------------------------------------------------------------- /modules/jooby-hibernate/src/main/java/module-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | /** Hibernate module. */ 7 | module io.jooby.hibernate { 8 | exports io.jooby.hibernate; 9 | 10 | requires io.jooby; 11 | requires static com.github.spotbugs.annotations; 12 | requires typesafe.config; 13 | requires org.slf4j; 14 | requires org.hibernate.orm.core; 15 | requires java.sql; 16 | requires jakarta.inject; 17 | requires jakarta.persistence; 18 | requires java.naming; 19 | } 20 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i3059/App3059A.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i3059; 7 | 8 | import io.jooby.Jooby; 9 | import io.jooby.annotation.OpenApiRegister; 10 | 11 | @OpenApiRegister({ControllerA3059.class, ControllerB3059.class}) 12 | public class App3059A extends Jooby { 13 | { 14 | IndirectRunner.create() 15 | .bindResource(new ControllerA3059()) 16 | .bindResource(new ControllerB3059()) 17 | .run(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/java/issues/i3059/App3059B.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package issues.i3059; 7 | 8 | import io.jooby.Jooby; 9 | import io.jooby.annotation.OpenApiRegister; 10 | 11 | @OpenApiRegister({ControllerA3059.class, ControllerC3059.class}) 12 | public class App3059B extends Jooby { 13 | { 14 | IndirectRunner.create() 15 | .bindResource(new ControllerA3059()) 16 | .bindResource(new ControllerC3059()) 17 | .run(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/kotlin/kt/KtNoAppClass.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package kt 7 | 8 | import io.jooby.Context 9 | import io.jooby.kt.runApp 10 | import io.swagger.v3.oas.annotations.Operation 11 | 12 | @Operation(summary = "function reference") 13 | fun fnRef(ctx: Context): Int { 14 | println(ctx) 15 | return 0 16 | } 17 | 18 | fun main(args: Array) { 19 | runApp(args) { 20 | get("/path") { "Foo" } 21 | 22 | get("/fn", ::fnRef) 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /modules/jooby-openapi/src/test/kotlin/kt/KtRouteImport.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Jooby https://jooby.io 3 | * Apache License Version 2.0 https://jooby.io/LICENSE.txt 4 | * Copyright 2014 Edgar Espina 5 | */ 6 | package kt 7 | 8 | import examples.RouteA 9 | import io.jooby.kt.Kooby 10 | import io.jooby.kt.require 11 | 12 | class KtRouteImport : 13 | Kooby({ 14 | mount(RouteA()) 15 | path("/main") { 16 | mount(RouteA()) 17 | mount("/submain", RouteA()) 18 | } 19 | 20 | mount(RouteA()) 21 | mount("/require", require(RouteA::class)) 22 | mount("/subroute", RouteA()) 23 | }) 24 | --------------------------------------------------------------------------------