├── .gitignore ├── .project ├── .settings └── org.eclipse.m2e.core.prefs ├── LICENSE ├── README.md ├── docs ├── .hidden ├── 404.md ├── CNAME ├── Gemfile ├── _config.yml ├── _data │ ├── alerts.yml │ ├── glossary.yml │ ├── samplelist.yml │ ├── sidebars │ │ ├── home_sidebar.yml │ │ ├── mydoc_sidebar.yml │ │ ├── other.yml │ │ ├── product1_sidebar.yml │ │ └── product2_sidebar.yml │ ├── strings.yml │ ├── tags.yml │ ├── terms.yml │ └── topnav.yml ├── _includes │ ├── archive.html │ ├── callout.html │ ├── custom │ │ ├── getting_started_series.html │ │ ├── getting_started_series_next.html │ │ ├── series_acme.html │ │ ├── series_acme_next.html │ │ ├── usermap.html │ │ └── usermapcomplex.html │ ├── disqus.html │ ├── feedback.html │ ├── footer.html │ ├── google_analytics.html │ ├── head.html │ ├── head_print.html │ ├── image.html │ ├── important.html │ ├── initialize_shuffle.html │ ├── inline_image.html │ ├── links.html │ ├── note.html │ ├── sidebar.html │ ├── taglogic.html │ ├── tip.html │ ├── toc.html │ ├── topnav.html │ └── warning.html ├── _layouts │ ├── default.html │ ├── default_print.html │ ├── none.html │ ├── page.html │ ├── page_print.html │ └── post.html ├── css │ ├── bootstrap.min.css │ ├── boxshadowproperties.css │ ├── customstyles.css │ ├── font-awesome.min.css │ ├── fonts │ │ ├── FontAwesome.otf │ │ ├── fontawesome-webfont.eot │ │ ├── fontawesome-webfont.svg │ │ ├── fontawesome-webfont.ttf │ │ ├── fontawesome-webfont.woff │ │ └── fontawesome-webfont.woff2 │ ├── modern-business.css │ ├── printstyles.css │ ├── syntax.css │ ├── theme-blue.css │ ├── theme-green.css │ └── theme-red.css ├── feed.xml ├── fonts │ ├── FontAwesome.otf │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.svg │ ├── fontawesome-webfont.ttf │ ├── fontawesome-webfont.woff │ ├── glyphicons-halflings-regular.eot │ ├── glyphicons-halflings-regular.svg │ ├── glyphicons-halflings-regular.ttf │ ├── glyphicons-halflings-regular.woff │ └── glyphicons-halflings-regular.woff2 ├── images │ ├── androidsdkmanagericon.png │ ├── authorizegithubscreen2.png │ ├── authorizeongithub.png │ ├── company_logo.png │ ├── company_logo_big.png │ ├── favicon.ico │ ├── helpapi-01.png │ ├── helpapi.svg │ ├── illustratoroptions.png │ ├── itermexample.png │ ├── jekyll.png │ ├── killalljekyll.png │ ├── liningup.png │ ├── redpipe-600.png │ └── workflowarrow.png ├── index.md ├── js │ ├── customscripts.js │ ├── jekyll-search.js │ ├── jquery.ba-throttle-debounce.min.js │ ├── jquery.navgoco.min.js │ ├── jquery.shuffle.min.js │ └── toc.js ├── search.json └── sitemap.xml ├── pom.xml ├── redpipe-cdi ├── .classpath ├── .project ├── .settings │ ├── org.eclipse.core.resources.prefs │ ├── org.eclipse.jdt.core.prefs │ └── org.eclipse.m2e.core.prefs ├── pom.xml └── src │ ├── main │ ├── java │ │ └── net │ │ │ └── redpipe │ │ │ └── cdi │ │ │ ├── App.java │ │ │ ├── CdiGlobalProvider.java │ │ │ └── CdiPlugin.java │ └── resources │ │ └── META-INF │ │ ├── beans.xml │ │ └── services │ │ └── net.redpipe.engine.spi.Plugin │ └── test │ ├── java │ └── net │ │ └── redpipe │ │ └── cdi │ │ ├── AppTest.java │ │ └── CdiResource.java │ └── resources │ └── META-INF │ └── beans.xml ├── redpipe-engine ├── .classpath ├── .project ├── .settings │ ├── org.eclipse.jdt.core.prefs │ └── org.eclipse.m2e.core.prefs ├── pom.xml └── src │ ├── main │ ├── java │ │ └── net │ │ │ └── redpipe │ │ │ └── engine │ │ │ ├── context │ │ │ └── AppGlobalsContextProvider.java │ │ │ ├── core │ │ │ ├── AppGlobals.java │ │ │ ├── MainResource.java │ │ │ ├── Mode.java │ │ │ ├── MyBeanConfig.java │ │ │ └── Server.java │ │ │ ├── db │ │ │ └── SQLUtil.java │ │ │ ├── dispatcher │ │ │ ├── PluginRequestDispatcher.java │ │ │ ├── VertxHttpResponseWithWorkaround.java │ │ │ └── VertxPluginRequestHandler.java │ │ │ ├── mail │ │ │ ├── Mail.java │ │ │ ├── Mailer.java │ │ │ ├── MockMailer.java │ │ │ └── ProdMailer.java │ │ │ ├── resteasy │ │ │ ├── BufferBodyWriter.java │ │ │ ├── DefaultExceptionMapper.java │ │ │ ├── FileResource.java │ │ │ ├── JsonObjectBodyReader.java │ │ │ ├── JsonObjectBodyWriter.java │ │ │ ├── PermissionInjector.java │ │ │ ├── RedpipeServletContext.java │ │ │ ├── ResteasyFilterContext.java │ │ │ ├── RxVertxProvider.java │ │ │ └── SQLConnectionInjector.java │ │ │ ├── rxjava │ │ │ └── CompletableProvider.java │ │ │ ├── rxjava2 │ │ │ ├── CompletableProvider.java │ │ │ └── MaybeProvider.java │ │ │ ├── security │ │ │ ├── AuthenticationException.java │ │ │ ├── AuthenticationExceptionMapper.java │ │ │ ├── AuthorizationException.java │ │ │ ├── AuthorizationExceptionMapper.java │ │ │ ├── AuthorizationFilter.java │ │ │ ├── AuthorizationFilterFeature.java │ │ │ ├── AuthorizingAnnotationHandler.java │ │ │ ├── BaseSecurityResource.java │ │ │ ├── HasPermission.java │ │ │ ├── LoginRedirectFilter.java │ │ │ ├── NoAuthFilter.java │ │ │ ├── NoAuthRedirect.java │ │ │ ├── RequiresPermissions.java │ │ │ ├── RequiresUser.java │ │ │ ├── VertxPermissionAnnotationHandler.java │ │ │ └── VertxUserAnnotationHandler.java │ │ │ ├── spi │ │ │ ├── Plugin.java │ │ │ └── RunnableWithException.java │ │ │ ├── swagger │ │ │ └── RxModelConverter.java │ │ │ ├── template │ │ │ ├── AbstractTemplate.java │ │ │ ├── Template.java │ │ │ ├── TemplateRenderer.java │ │ │ └── TemplateResponseFilter.java │ │ │ └── util │ │ │ └── RedpipeUtil.java │ └── resources │ │ └── META-INF │ │ ├── beans.xml │ │ └── services │ │ ├── io.reactiverse.reactivecontexts.core.ContextProvider │ │ └── javax.ws.rs.ext.Providers │ └── test │ ├── java │ └── net │ │ └── redpipe │ │ └── engine │ │ ├── ApiTest.java │ │ ├── ServerExtendableTest.java │ │ ├── TestResource.java │ │ ├── TestResourceRxJava1.java │ │ └── swagger │ │ ├── ReactiveController.java │ │ └── SwaggerApiTest.java │ └── resources │ └── vertx-users.properties ├── redpipe-example-helloworld ├── .classpath ├── .project ├── .settings │ ├── org.eclipse.core.resources.prefs │ ├── org.eclipse.jdt.core.prefs │ └── org.eclipse.m2e.core.prefs ├── pom.xml └── src │ ├── main │ ├── java │ │ └── net │ │ │ └── redpipe │ │ │ └── example │ │ │ └── helloworld │ │ │ ├── HelloResource.java │ │ │ └── Main.java │ └── resources │ │ └── templates │ │ └── index.ftl │ └── test │ └── java │ └── net │ └── redpipe │ └── example │ └── helloworld │ └── AppTest.java ├── redpipe-example-kafka ├── .classpath ├── .project ├── .settings │ ├── org.eclipse.core.resources.prefs │ ├── org.eclipse.jdt.core.prefs │ └── org.eclipse.m2e.core.prefs ├── README.md ├── pom.xml └── src │ ├── main │ ├── java │ │ └── net │ │ │ └── redpipe │ │ │ └── example │ │ │ └── kafka │ │ │ ├── AppResource.java │ │ │ ├── KafkaResource.java │ │ │ ├── Main.java │ │ │ └── MetricsVerticle.java │ └── resources │ │ └── webroot │ │ ├── charts.js │ │ ├── highcharts.js │ │ ├── index.html │ │ ├── jquery-1.11.2.min.js │ │ ├── jquery.min.js │ │ └── standalone-framework.js │ └── test │ └── java │ └── net │ └── redpipe │ └── example │ └── kafka │ └── AppTest.java ├── redpipe-example-wiki-keycloak-jooq ├── .classpath ├── .project ├── .settings │ ├── org.eclipse.core.resources.prefs │ ├── org.eclipse.jdt.core.prefs │ └── org.eclipse.m2e.core.prefs ├── README.md ├── conf │ └── config.json ├── db.sql ├── keystore.jceks ├── pom.xml └── src │ ├── main │ ├── java │ │ └── net │ │ │ └── redpipe │ │ │ └── example │ │ │ └── wiki │ │ │ └── keycloakJooq │ │ │ ├── ApiException.java │ │ │ ├── ApiExceptionMapper.java │ │ │ ├── ApiResource.java │ │ │ ├── ApiUpdateValid.java │ │ │ ├── ApiUpdateValidator.java │ │ │ ├── ApiValidationExceptionMapper.java │ │ │ ├── AppResource.java │ │ │ ├── Main.java │ │ │ ├── SecurityResource.java │ │ │ ├── WikiResource.java │ │ │ ├── WikiServer.java │ │ │ └── jooq │ │ │ ├── DefaultCatalog.java │ │ │ ├── Indexes.java │ │ │ ├── Keys.java │ │ │ ├── Public.java │ │ │ ├── Sequences.java │ │ │ ├── Tables.java │ │ │ └── tables │ │ │ ├── Pages.java │ │ │ ├── daos │ │ │ └── PagesDao.java │ │ │ ├── interfaces │ │ │ └── IPages.java │ │ │ ├── pojos │ │ │ └── Pages.java │ │ │ └── records │ │ │ └── PagesRecord.java │ └── resources │ │ ├── META-INF │ │ └── beans.xml │ │ ├── templates │ │ ├── footer.ftl │ │ ├── githubLogin.ftl │ │ ├── header.ftl │ │ ├── index.ftl │ │ ├── login.ftl │ │ └── page.ftl │ │ ├── webroot │ │ ├── github1.png │ │ ├── github2.png │ │ ├── index.html │ │ └── wiki.js │ │ └── wiki-users.properties │ └── test │ └── java │ └── net │ └── redpipe │ └── example │ └── wiki │ └── keycloakJooq │ └── ApiTest.java ├── redpipe-example-wiki-shiro-jdbc ├── .classpath ├── .project ├── .settings │ ├── org.eclipse.core.resources.prefs │ ├── org.eclipse.jdt.core.prefs │ └── org.eclipse.m2e.core.prefs ├── README.md ├── conf │ └── config.json ├── keystore.jceks ├── pom.xml └── src │ ├── main │ ├── java │ │ └── net │ │ │ └── redpipe │ │ │ └── example │ │ │ └── wiki │ │ │ └── shiroJdbc │ │ │ ├── ApiException.java │ │ │ ├── ApiExceptionMapper.java │ │ │ ├── ApiResource.java │ │ │ ├── ApiUpdateValid.java │ │ │ ├── ApiUpdateValidator.java │ │ │ ├── ApiValidationExceptionMapper.java │ │ │ ├── AppResource.java │ │ │ ├── Main.java │ │ │ ├── SQL.java │ │ │ ├── SecurityResource.java │ │ │ ├── WikiResource.java │ │ │ └── WikiServer.java │ └── resources │ │ ├── META-INF │ │ └── beans.xml │ │ ├── templates │ │ ├── footer.ftl │ │ ├── githubLogin.ftl │ │ ├── header.ftl │ │ ├── index.ftl │ │ ├── login.ftl │ │ └── page.ftl │ │ ├── webroot │ │ ├── github1.png │ │ ├── github2.png │ │ ├── index.html │ │ └── wiki.js │ │ └── wiki-users.properties │ └── test │ └── java │ └── net │ └── redpipe │ └── example │ └── wiki │ └── shiroJdbc │ └── ApiTest.java ├── redpipe-fast-classpath-scanner ├── .classpath ├── .project ├── .settings │ ├── org.eclipse.core.resources.prefs │ ├── org.eclipse.jdt.core.prefs │ └── org.eclipse.m2e.core.prefs ├── pom.xml └── src │ ├── main │ ├── java │ │ └── net │ │ │ └── redpipe │ │ │ └── fastclasspathscanner │ │ │ └── FCSPlugin.java │ └── resources │ │ └── META-INF │ │ └── services │ │ └── net.redpipe.engine.spi.Plugin │ └── test │ └── java │ └── net │ └── redpipe │ └── fastclasspathscanner │ └── AppTest.java ├── redpipe-fibers ├── .classpath ├── .project ├── .settings │ ├── org.eclipse.core.resources.prefs │ ├── org.eclipse.jdt.core.prefs │ └── org.eclipse.m2e.core.prefs ├── pom.xml └── src │ └── main │ └── java │ └── net │ └── redpipe │ └── fibers │ ├── Fibers.java │ ├── JdkFibers.java │ └── QuasiFibers.java ├── redpipe-prototyping ├── .classpath ├── .project ├── .settings │ ├── org.eclipse.core.resources.prefs │ ├── org.eclipse.jdt.core.prefs │ └── org.eclipse.m2e.core.prefs ├── pom.xml └── src │ └── main │ ├── java │ └── net │ │ └── redpipe │ │ └── prototyping │ │ ├── DataClass.java │ │ ├── Main.java │ │ ├── MyException.java │ │ ├── MyExceptionMapper.java │ │ └── MyResource.java │ └── resources │ └── META-INF │ └── beans.xml ├── redpipe-router ├── .classpath ├── .project ├── .settings │ ├── org.eclipse.core.resources.prefs │ ├── org.eclipse.jdt.core.prefs │ └── org.eclipse.m2e.core.prefs ├── pom.xml └── src │ ├── main │ └── java │ │ └── net │ │ └── redpipe │ │ └── router │ │ ├── Method0.java │ │ ├── Method1.java │ │ ├── Method10.java │ │ ├── Method2.java │ │ ├── Method3.java │ │ ├── Method4.java │ │ ├── Method5.java │ │ ├── Method6.java │ │ ├── Method7.java │ │ ├── Method8.java │ │ ├── Method9.java │ │ ├── MethodFinder.java │ │ └── Router.java │ └── test │ └── java │ └── net │ └── redpipe │ └── router │ └── AppTest.java ├── redpipe-service-discovery ├── .classpath ├── .project ├── .settings │ ├── org.eclipse.core.resources.prefs │ ├── org.eclipse.jdt.core.prefs │ └── org.eclipse.m2e.core.prefs ├── pom.xml └── src │ ├── main │ ├── java │ │ └── net │ │ │ └── redpipe │ │ │ └── discovery │ │ │ ├── DiscoveryPlugin.java │ │ │ ├── DiscoveryRecordInjector.java │ │ │ ├── DiscoveryWebClientInjector.java │ │ │ └── ServiceName.java │ └── resources │ │ └── META-INF │ │ └── services │ │ ├── javax.ws.rs.ext.Providers │ │ └── net.redpipe.engine.spi.Plugin │ └── test │ └── java │ └── net │ └── redpipe │ └── discovery │ ├── DiscoveryTest.java │ └── TestResource.java ├── redpipe-templating-freemarker ├── .classpath ├── .project ├── .settings │ ├── org.eclipse.core.resources.prefs │ ├── org.eclipse.jdt.core.prefs │ └── org.eclipse.m2e.core.prefs ├── pom.xml └── src │ ├── main │ ├── java │ │ └── net │ │ │ └── redpipe │ │ │ └── templating │ │ │ └── freemarker │ │ │ ├── FreeMarkerTemplateRenderer.java │ │ │ └── RouterFunction.java │ └── resources │ │ └── META-INF │ │ └── services │ │ └── net.redpipe.engine.template.TemplateRenderer │ └── test │ ├── java │ └── net │ │ └── redpipe │ │ └── templating │ │ └── freemarker │ │ ├── ApiTest.java │ │ └── TestResource.java │ └── resources │ └── templates │ ├── TestResource │ └── defaultTemplate.html.ftl │ ├── index.ftl │ ├── mail.ftl │ ├── mail2.html.ftl │ ├── mail2.txt.ftl │ ├── nego.html.ftl │ ├── nego.txt.ftl │ └── negoSingle.html.ftl └── todo.txt /.gitignore: -------------------------------------------------------------------------------- 1 | /docs/_site 2 | /docs/Gemfile.lock 3 | /docs/.sass-cache 4 | /db 5 | /*/db 6 | /*/target 7 | .testcontainers-tmp* 8 | **/*.iml 9 | .idea 10 | /*/bin 11 | -------------------------------------------------------------------------------- /.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | redpipe 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.m2e.core.maven2Builder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.m2e.core.maven2Nature 16 | 17 | 18 | -------------------------------------------------------------------------------- /.settings/org.eclipse.m2e.core.prefs: -------------------------------------------------------------------------------- 1 | activeProfiles= 2 | eclipse.preferences.version=1 3 | resolveWorkspaceProjects=true 4 | version=1 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Redpipe is a Web Framework that unites the power and versatility of Eclipse Vert.x, 2 | the conciseness of JAX-RS (with Resteasy), and the non-blocking reactive composition 3 | of RxJava. 4 | 5 | The main idea is that with Redpipe you write your endpoints in JAX-RS, using RxJava 6 | composition if you want, and underneath it all, Vert.x is running the show and you 7 | can always access it if you need it. 8 | 9 | Redpipe is opinionated, favors convention over configuration, and lets you combine the 10 | following technologies easily to write reactive web applications: 11 | 12 | - Eclipse Vert.x and Netty, for all the low-level plumbing, 13 | - JAX-RS (Resteasy), for all your web endpoints, 14 | - RxJava for your reactive code, 15 | - Vert.x Web for all existing filters, templating support, 16 | - Swagger to describe your web endpoints, 17 | - CDI (Weld) for JAX-RS discovery and injection (optional), 18 | - Bean Validation (Hibernate Validator) to validate your web endpoints’ input (optional), 19 | - Coroutines (Quasar) to write synchronous-looking reactive code (optional). 20 | 21 | More info at http://redpipe.net 22 | 23 | ## Serving docs locally 24 | 25 | ``` 26 | $ cd docs 27 | $ bundle exec jekyll serve 28 | ``` 29 | 30 | ## Release 31 | 32 | ``` 33 | $ mvn -Prelease release:clean release:prepare release:perform 34 | ``` 35 | -------------------------------------------------------------------------------- /docs/.hidden: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FroMage/redpipe/0aff891d6befdf0dcc2bdbfda22262cdf82ac66f/docs/.hidden -------------------------------------------------------------------------------- /docs/404.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Page Not Found" 3 | search: exclude 4 | --- 5 | 6 | Sorry, but the page you were trying to view does not exist. Try searching for it or looking at the URL to see if it looks correct. 7 | -------------------------------------------------------------------------------- /docs/CNAME: -------------------------------------------------------------------------------- 1 | redpipe.net -------------------------------------------------------------------------------- /docs/Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | 3 | gem 'github-pages' 4 | -------------------------------------------------------------------------------- /docs/_data/alerts.yml: -------------------------------------------------------------------------------- 1 | tip: '