Lean & powerful HTTP apps

Overview

Build Status codecov.io Revved up by Gradle Enterprise

Ratpack.io

What is Ratpack?

Ratpack is a simple, capable, toolkit for creating high performance web applications.

Ratpack is built on Java and the Netty event-driven networking engine. The API is optimized for Groovy and Java 8.

Optional Google Guice integration provides a foundation for scaling your application in size in a managed way.

Optional Gradle build time support makes building and testing applications a breeze.

http://www.ratpack.io

Looking to contribute?

Please see CONTRIBUTING.md

Comments
  • Deploy Ratpack application on Heroku

    Deploy Ratpack application on Heroku

    In order to deploy on Heroku, a buildpack is required to release your application.

    The official Gradle buildpack is stuck on Gradle 1.0-milestone-5 and jdk6. Besides that, it is very brittle and quite broken. I decided to set up a brand new buildpack that runs Gradle 1.5 with jdk1.7. You can find the preliminary version under heroku-buildpack-gradle-jdk7.

    I've managed to get the groovy-console example app up on Heroku, although it runs out of memory on invocation of gradle run. Seems like the quota is 512M on Heroku, so will look into tweaking the heap size on command invocation.

    Another problem that needs to be resolved: Heroku seeks to set the port dynamically on bootstrapping of the app. It expects the app to pick up environment variable PORT and dynamically configure itself to use it at runtime. Heroku then routes all requests to the application through the port that it provided earlier.

    I was looking at #5 and noticed some mentions of AddressConfig. We would probably need to inject the result of PORT into the port field of this object on startup of the app as part of the application lifecycle. Since this still seems to be under discussion at the moment, I will wait until it's better defined.

    opened by marc0der 33
  • Create preliminary user manual

    Create preliminary user manual

    (this issue is for creating the very first public version of the manua – it doesn't need to be comprehensive)

    Ratpack needs a basic user manual covering:

    1. Introduction
    2. Quick start
    3. Basic mechanics
    4. Scripts vs apps
    5. Sync vs async
    6. Extensions (modules)
    opened by pledbrook 30
  • Unable to do the gradle build due to jruby problem

    Unable to do the gradle build due to jruby problem

    I cloned the ratpack repo from ratpack/ratpack and am trying to do a gradle build using the supplied script. The result is:

    ./gradlew build ... lots of output ... :ratpack-manual:compileSass jruby: No such file or directory -- compass (LoadError) :ratpack-manual:compileSass FAILED

    FAILURE: Build failed with an exception.

    • What went wrong: Execution failed for task ':ratpack-manual:compileSass'.

      Process 'command '/Library/Java/JavaVirtualMachines/jdk1.7.0_11.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1

    I'm running on OS X 10.8.4. Let me know if I should supply any more information.

    I tried installing jruby (through homebrew) and adding the sass and compass gems, but that didn't do anything. I'm not a Ruby person, so I don't know what else to do.

    opened by kousen 29
  • adjustments to filtering asset paths (#214)

    adjustments to filtering asset paths (#214)

    What do you think about these adjustments for filtering asset paths?

    Basically, I need the ability to do:

    getText "/swearengen/E.B./Al" == " .... "
    

    Right now, it's interpreting that as an asset because of the dots, when it's really dynamic content. I think this commit satisfies asset recognition.

    opened by danveloper 26
  • Support setting Ratpack's port through environment variables

    Support setting Ratpack's port through environment variables

    Ratpack can read the port variable with -Dratpack.port=80, but for easier integration with certain cloud environments (in my case, Cloud Foundry), it'd be easier for cloud deployments to be able to set the Ratpack port with an environment variable, for example:

    export RATPACK_PORT=80
    

    It might avoid creating a dedicated buildpack for Cloud Foundry, for instance.

    opened by glaforge 25
  • Pac4j documentation

    Pac4j documentation

    Hi,

    ratpack-pac4j is a module which handles authentication on various providers: it deserves a documentation. Where do you want me to put the chapter on this topic? As chapter 18 or 36? Thanks. Best regards, Jérôme

    opened by leleuj 23
  • Websockets support

    Websockets support

    It would be nice to be able to enable websockets within ratpack.

    This could probably be done by specifying a flag within the launchConfig of the application.

    There is a fairly good example of a SimpleChannelInboundHandler that is websocket aware within netty src -

    https://github.com/netty/netty/blob/master/example/src/main/java/io/netty/example/http/websocketx/server/WebSocketServerHandler.java

    Enabling websocket ping and close requests would would be a matter of changing the NettyHandlerAdapter within ratpack core to allow both FullHttpRequest and WebSocketFrame.

    The main question here would be how would handler syntax and the ratpack context be different with web sockets.

    opened by tomaslin 22
  • ratpack-hystrix:test hangs

    ratpack-hystrix:test hangs

    Hi,

    I did a clone, and then ran gradle check as per CONTRIBUTING.md

    the only difference is I'm running gradle 2.1. It runs fine till :ratpack-hystrix:test phase

    :ratpack-hystrix:processTestResources UP-TO-DATE :ratpack-hystrix:testClasses UP-TO-DATE :ratpack-hystrix:test

    Building 68% > :ratpack-hystrix:test

    then it just hangs. cpu load is very low. So I don't think the test is running.

    is the test broken?

    opened by wmacgyver 19
  • Some documentation for WebSockets class

    Some documentation for WebSockets class

    I'm brand new to Ratpack and I was exploring it to see if I could make a microservice with websockets. I found the documentation very lacking and it took me a very long time to figure out, so I thought I'd contribute what I found out to the Javadoc.

    I manually tested the Java code in the JavaDoc, but I think it's supposed to be automatically tested somehow. I tried my best to get gradlew openManual to run but it would not run compass due to #607.

    There are two methods I didn't document. I still haven't figured out what they do or how to use them, but I figure they must have to do with receiving data from the clients.

    opened by gillius 18
  • Shutting down via Runtime.shutdownHook

    Shutting down via Runtime.shutdownHook

    can you add configuration for ratpack.server.internal.DefaultRatpackServer so start method is not adding shutdown hook. It could be just a system property with current behavior as default.

    I need have better control over starting and stopping the server. Right now server is shutting down itself before other services close. Or maybe there is something I can use?

    opened by pawel-kaminski-krk 16
  • ISSUE-1244: Expose some metrics on HttpClient

    ISSUE-1244: Expose some metrics on HttpClient

    Attempt at adding some metric reporting on the HttpClient channel pools.

    • Adds new flag to HttpClient to enable metric collection.
      • When flag is false HttpClient behaves same as today (default behavior)
      • When flag is true HttpClient will use instrumented channel pool handlers to track channel pool usage.
    • Adds a new HttpClientMetrics class to ratpack-dropwizard-metrics to report on channel pool usage. Default behavior is for it to be disabled.

    This change is Reviewable

    opened by jeff-blaisdell 16
  • Add SOCKS proxy support

    Add SOCKS proxy support

    This change adds support for SOCKS4 and SOCKS5 proxies. The use case I have is to test Ratpack services as if they are part of a test environment network. SOCKS proxies offer remote DNS resolution capabilities that allow the service to resolve internal hostnames for the target network/environment. I saw that Netty already has support for SOCKS proxies, but Ratpack was not exposing it.

    Example usage:

    HttpClient.of(spec ->
        spec.proxy(proxySpec ->
            proxySpec.host("localhost").port(7777).type(Proxy.Type.SOCKS5)
        )
    );
    

    I explored a few other options here as well. Instead of a SOCKS proxy you can just use local port forwarding, but if there are a lot of different upstreams then it can be quite tedious to forward all the ports and reconfigure the app to use the proper ports for each upstream. The JVM also has socksProxyHost and socksProxyPort flags, but unfortunately there is a bug in the JVM that prevents remote DNS from working properly when using those, so this was the next best approach.


    This change is Reviewable

    opened by mrobinet 0
  • Static content is not always available with the Spring Boot plugin

    Static content is not always available with the Spring Boot plugin

    According to the documentation:

    TIP: Ratpack will register handlers automatically for static content in the classpath under “/public” or “/static” (just like a regular Spring Boot application).

    If I embed Ratpack in a Spring Boot app, the static content is available only if I start the app from my IDE or via Gradle (./gradlew bootRun). But if I build the jar and execute it (./gradlew assemble; java -jar build/libs/<jarfile>) , static content is not available.

    I assume there is no difference in registering the handlers for the public/static folder but since in the jar these folders will be inside of BOOT-INF/classes, I think the base dir is not right. I tried to set it by adding a .ratpack into my resources folder and override the base dir with a RatpackServerCustomizer (return ServerConfigBuilder::findBaseDir;) but it did not work.

    An ugly workaround I found was registering a handler for the BOOT-INF/classes/public folder too:

    .files(f -> f.dir("BOOT-INF/classes/public").indexFiles("index.html"))
    
    opened by jonatan-ivanov 0
  • Section numbering seems backwards in the docs

    Section numbering seems backwards in the docs

    Right now this is in the docs:

    1 Introduction
      1.1 Goals
      2.1 About this documentation
        1.2.1 Code samples
          1.1.2.1 Java 8 style
    

    But it should be:

    1 Introduction
      1.1 Goals
      1.2 About this documentation
        1.2.1 Code samples
          1.2.1.1 Java 8 style
    

    and so on.

    opened by jonatan-ivanov 0
  • Update docs for JacksonConverterFactory usage

    Update docs for JacksonConverterFactory usage

    The docs suggests using JacksonConverterFactory and also provides an example. This example is somewhat incomplete since com.squareup.retrofit2:converter-jackson (that contains this class) is a runtime-only dependency, compile-time can't be used as the docs shows. I think calling this out in the docs and showing how to declare it as a compile-time dependency would be helpful for the users.

    opened by jonatan-ivanov 0
  • ratpack-spring-boot-starter transitively depends on ratpack-guice

    ratpack-spring-boot-starter transitively depends on ratpack-guice

    ratpack-spring-boot-starter transitively depends on ratpack-guice through ratpack-core. This is somewhat unexpected since in this case (I assume) users would use Spring instead of Guice.

    opened by jonatan-ivanov 0
  • Add more Gradle/Maven dependency examples to the docs

    Add more Gradle/Maven dependency examples to the docs

    It would mean better user experience since people can copy the the dependency definitions which are not always straightforward. E.g.: ratpack-spring-boot-starter must be defined as a platform dependency.

    opened by jonatan-ivanov 0
Releases(v1.9.0)
  • v1.8.2(Feb 11, 2021)

  • v1.8.1(Jan 19, 2021)

  • v1.8.0(Apr 27, 2020)

    Ratpack 1.8.0 is now available!

    This release adds support for configuring a proxy to utilize with the HttpClient for outgoing requests, additional convenience methods for Promise.retry, a number of dependency updates, and other improvements .

    The following core dependencies have been upgraded:

    • Netty 4.1.37.Final → 4.1.48.Final
    • Netty TCNative 2.0.25.Final → 2.0.30.Final
    • Jackson 2.9.8 → 2.10.3
    • Slf4j 1.7.25 → 1.7.30
    • Guava 21.0 → 28.2-jre
    • Dropwizard Metrics 4.0.5 → 4.1.6
    • Log4j 2.6.2 → 2.13.1
    • Caffeine 2.6.2 → 2.8.1
    • Retrofit 2.4.0 → 2.8.1

    Ratpack's HttpClient can now be configured to utilize a proxy server when sending requests using the HttpClientSpec. proxy method. Configuring the proxy requires specifying the host and port of the proxy. Optionally, the configured proxy can be bypassed for a set of destinations. This set uses the same pattern matching utilized by the core Java libraries and specified here: https://docs.oracle.com/javase/8/docs/technotes/guides/net/proxies.html. It should be noted that the HttpClient does not respect the http.proxyHost, http.proxyPort, and http.nonProxyHosts system properties.

    In this release, Promise.retry has been extended to allow for specifying a Predicate to indicate when the RetryPolicy should be evaluated.

    There are also a few other new convenience methods added to support easier development and testing of Ratpack applications. Thanks to all who contributed.

    We hope you enjoy Ratpack 1.8.

    --

    Team Ratpack

    Source code(tar.gz)
    Source code(zip)
  • v1.7.6(Jan 25, 2020)

    This release includes a fix for a security vulnerability. This upgrade is recommended for all Ratpack users.

    Versions of Ratpack 0.9.10 through and including 1.7.5 are vulnerable to CWE-79: Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting') (aka. XSS), in the development error handler. An attacker can utilize this to perform XSS when an exception message contains untrusted data.

    This vulnerability only exists in the handler that renders an internal server error as a readable HTML page which is activates when Ratpack is running in development mode. This mode is only activate by user request (i.e. setting development(true) in the ServerConfig, setting RATPACK_DEVELOPMENT=true in the environment), or when Ratpack detects it is running in an IDE (i.e. IntelliJ), being run by the Groovy shell, or attached to a debugger. By default, Ratpack sets development(false) when packaged as a Jar.

    Users should verify that they are not running Ratpack with development mode activated in production environments.

    We would like to thank Jonathan Leitschuh for reporting this vulnerability.

    Please see the security advisory for this issue for more information.

    Source code(tar.gz)
    Source code(zip)
  • v1.7.5(Oct 17, 2019)

    This release includes several minor bug fixes, and a fix for a security vulnerability. This upgrade is recommended for everyone using 1.7.x.

    Versions of Ratpack 0.9.1 through and including 1.7.4 are vulnerable to HTTP Response Splitting, if untrusted and unsanitized data is used to populate the headers of a HTTP response. An attacker can utilize this vulnerability to have the server issue any HTTP response they specify.

    If your application uses arbitrary user input as the value of a response header it is vulnerable. If your application does not use arbitrary values as response header values, it is not vulnerable.

    Previously, Ratpack did not validate response header values. Now, adding a header value that contains the header value termination characters produces a runtime exception. As there is no mechanism for escaping or encoding the termination characters in a value, a runtime exception is necessary.

    As potentially dangerous values now cause runtime exceptions, it is a good idea to continue to validate and sanitize any user supplied values being used as response headers.

    We would like to thank Jonathan Leitschuh for reporting this vulnerability.

    Please see the security advisory for this issue for more information.

    Source code(tar.gz)
    Source code(zip)
  • v1.7.4(Oct 17, 2019)

    This release includes a fix for using Gradle's continuous build functionality when running on Java 9 or later. This upgrade is recommended for everyone using 1.7.x.

    Source code(tar.gz)
    Source code(zip)
  • v1.7.3(Aug 18, 2019)

    This release includes a fix for HttpClient idle timeout that was introduced in Ratpack 1.7.0. Specifically, this timeout was incorrectly applying to in-use HTTP connections from the pool that were idle waiting for a server response. This fixes this behavior and clarifies that idleTimeout applies only to connections that are not currently acquired from the pool. This upgrade is recommended for everyone using 1.7.x.

    Source code(tar.gz)
    Source code(zip)
  • v1.7.2(Aug 3, 2019)

    This release includes a fix for a regression introduced in 1.7.0 that resulted in double URL encoded query parameters in redirect responses. Please see the issue list below for details. This upgrade is recommended for everyone using 1.7.x.

    Source code(tar.gz)
    Source code(zip)
  • v1.7.1(Jul 20, 2019)

    Ratpack 1.7.1 is now available! This patch release fixes a bug with idle connection timeouts for Ratpack's HttpClient (introduced in 1.7.0) which prevented timeouts larger than 1 second to be specified. No other changes were introduced.

    --

    Team Ratpack

    Source code(tar.gz)
    Source code(zip)
  • v1.7.0(Jul 14, 2019)

    Ratpack 1.7.0 is now available! This release adds support of idle timeouts when using connection pooling in HttpClient, an improved Promise.retry interface, a few dependency updates, deprecation of the ratpack-pac4j, ratpack-rx, and ratpack-thymeleaf modules and other improvements and bug fixes.

    The following core dependencies have been upgraded:

    • Netty 4.1.32.Final → 4.1.37.Final
    • Gradle 4.10 → 5.1.1
    • Groovy 2.4.15 → 2.5.4
    • Dropwizard Metrics 3.1.1 → 4.0.5
    • Spock 1.1-groovy-2.4 → 1.3-groovy-2.5
    • Handlebars 4.0.7 → 4.1.2

    The idle timeout for Ratpack's HttpClient can now be configured using the HttpClientSpec.idleTimeout method. Specifying a non-zero value for this timeout will allow Ratpack to close unused connections.

    The new Promise.retry method provides a mechanism for encoding complex retry logic in Promise behavior. With the addition of this method, the previous retry methods have been deprecated.

    Ratpack will now use the native OpenSSL libraries if available on the runtime system.

    The new MockApi and HandlerFactory classes provided additional fixtures for writing tests for Ratpack applications. Combined with a mocking framework such as Spock, they allow for declaring remote API behaviors for an application, inline to a test.

    As of this release the ratpack-pac4j library that is released as part of this project is officially deprecated and will be removed in Ratpack 2.0. Support for the latest version of Pac4j are provided via the ratpack-pac4j module maintained by the Pac4j team.

    As of this release the ratpack-rx and ratpack-thymeleaf libraries that are released as part of this project are officially deprecated and will be removed in Ratpack 2.0. Users should migrate to the ratpack-rx2 and ratpack-thymeleaf3 libraries.

    There are also many other new convenience methods, bug fixes and generally cool stuff added in this release. Thanks to all who contributed.

    We hope you enjoy Ratpack 1.7.

    --

    Team Ratpack

    Source code(tar.gz)
    Source code(zip)
  • v1.6.1(Apr 24, 2019)

    This release fixes a security vulnerability around session ID generation and is recommended for all users.

    The issue stems from the default session ID generator using a cryptographically weak pseudo random number generator in the JDK's ThreadLocalRandom. This means that if an attacker can determine a small window for the server start time and obtain a session ID value, they can theoretically determine the sequence of session IDs. 1.6.1 uses system entropy when generating values to make the values non determinable.

    If you are using client side sessions, your application is not vulnerable as the session ID is not used.

    If you are using a version earlier than 1.6, you can fix the the issue by binding a custom SessionIdGenerator implementation based on the new version.

    Special thanks to Jonathan Leitschuh for discovering and reporting this vulnerability.

    Source code(tar.gz)
    Source code(zip)
  • v1.6.0(Dec 21, 2018)

    Just in time to ring in 2019, Ratpack 1.6.0 is now available! This release adds integration with additional reactive programming libraries and many improvements that allow Ratpack to integrate more seamlessly with external libraries.

    The following core dependencies have been upgraded:

    • Netty 4.1.22.Final → 4.1.32.Final
    • Jackson 2.9.4 → 2.9.8
    • ReactiveStreams 1.0.0.final → 1.0.2
    • Caffeine 2.4.0 → 2.6.2
    • SnakeYAML 1.18 → 1.23
    • Handlebars 4.0.6 → 4.0.7

    The new ratpack-reactor module adds support for integrating Ratpack with Project Reactor types.

    The new ratpack-rx2 module adds support for integrating Ratpack with version 2 of RxJava. This is a new module to support the new types introduced in RxJava 2.0.

    The new ratpack-thymeleaf3 module adds support for integrating Ratpack with version 3 of Thymeleaf templating.

    The new ratpack-gson module adds support for parsing request bodies and rendering responses using Google's Gson library.

    The new Promise.flatOp method allows for mapping a Promise directly into an `Operation.

    The new Promise.mapError and Promise.flatMapError which allow for providing a conditional Predicate for the mapping.

    The ability to configure request and response interceptors for Ratpack's HttpClient through the HttpClientSpec.requestIntercept, HttpClientSpec.responseIntercept(Action), HttpClientSpec.responseIntercept(Operation), and HttpClientSpec.errorIntercept methods.

    Create a new HttpClient instance by by inheriting from another instance using the HttpClient.copyWith method.

    Improvements in Ratpack's integration with Retrofit by allowing the underlying HttpClient to be specified with the RatpackRetrofit.Builder.httpClient method. This allows for utilizing Retrofit outside of a Ratpack HTTP request (e.g. from a background service)

    Forked executions can now obtain references to their parent executions through the Execution.getParent() and [Execution.maybeParent()] (https://ratpack.io/manual/1.6.0/api/ratpack/exec/Execution.html#maybeParent--) methods.

    Applications can now register their own JVM shutdown hook to perform custom behaviors instead of Ratpack's default hook. Applications using a custom hook can disabled the default hook by setting ServerConfigBuilder.registerShutdownHook(false)

    The ratpack-dropwizard-metrics module now supports exporting metrics to Prometheus (DropwizardMetricsConfig.prometheusCollection(true)) and collecting metrics on ByteBuf (DropwizardMetricsConfig.byteBufAllocator(Action)) and HttpClient (DropwizardMetricsConfig.httpClient(Action))

    There are also many other new convenience methods, bug fixes and generally cool stuff added in this release. Thanks to all who contributed.

    We hope you enjoy Ratpack 1.6.

    --

    Team Ratpack

    Source code(tar.gz)
    Source code(zip)
  • v1.6.0-rc-4(Dec 20, 2018)

  • v1.6.0-rc-3(Dec 19, 2018)

    These are the release notes for a Ratpack 1.6.0 release candidate. Please see the pending release notes for the final release for the complete list of closed issues.

    This third release candidate of Ratpack 1.6 fixes:

    • #1424, optimize transmitting files
    • #1423, Response finalizers cannot be added when streaming or sending files
    • Removes the deprecation from TypedData.getBytes() and fixes the implementation to return only valid bytes from the buffer. Removes the previously added TypedData.copyBytes() method, removes the deprecation from `TypedData.
    • Handle closed connections when streaming responses.
    • Adds support for KQueue transport in Netty
    • Update to Netty 4.1.32.FINAL
    • Update to Jackson 2.9.8
    • Update to Snakeyaml 1.23
    Source code(tar.gz)
    Source code(zip)
  • v1.6.0-rc-2(Dec 1, 2018)

  • 1.6.0-rc-1(Nov 17, 2018)

    These are the release notes for a Ratpack 1.6.0 release candidate. Please see the pending release notes for the final release for the complete list of closed issues.

    A little over a year from our last minor release, and 6 months since our last patch, Ratpack 1.6.0 is now available. This release adds integration with additional reactive programming libraries and many improvements that allow Ratpack to integrate more seamlessly with external libraries.

    The following core dependencies have been upgraded:

    • Netty 4.1.22.Final → 4.1.31.Final
    • Jackson 2.9.4 → 2.9.5
    • ReactiveStreams 1.0.0.final → 1.0.2
    • Caffeine 2.4.0 → 2.6.2
    • SnakeYAML 1.18 → 1.20

    The new ratpack-reactor module adds support for integrating Ratpack with Project Reactor types.

    The new ratpack-rx2 module adds support for integrating Ratpack with version 2 of RxJava. This is a new module to support the new types introduced in RxJava 2.0.

    The new ratpack-thymeleaf3 module adds support for integrating Ratpack with version 3 of Thymeleaf templating.

    The new ratpack-gson module adds support for parsing request bodies and rendering responses using Google's Gson library.

    The new Promise.flatOp method allows for mapping a Promise directly into an `Operation.

    The new Promise.mapError and Promise.flatMapError which allow for providing a conditional Predicate for the mapping.

    The ability to configure request and response interceptors for Ratpack's HttpClient through the HttpClientSpec.requestIntercept, HttpClientSpec.responseIntercept(Action), HttpClientSpec.responseIntercept(Operation), and HttpClientSpec.errorIntercept methods.

    Create a new HttpClient instance by by inheriting from another instance using the HttpClient.copyWith method.

    Improvements in Ratpack's integration with Retrofit by allowing the underlying HttpClient to be specified with the RatpackRetrofit.Builder.httpClient method. This allows for utilizing Retrofit outside of a Ratpack HTTP request (e.g. from a background service)

    Forked executions can now obtain references to their parent executions through the Execution.getParent() and [Execution.maybeParent()] (https://ratpack.io/manual/1.6.0/api/ratpack/exec/Execution.html#maybeParent--) methods.

    Applications can now register their own JVM shutdown hook to perform custom behaviors instead of Ratpack's default hook. Applications using a custom hook can disabled the default hook by setting ServerConfigBuilder.registerShutdownHook(false)

    The ratpack-dropwizard-metrics module now supports exporting metrics to Prometheus (DropwizardMetricsConfig.prometheusCollection(true)) and collecting metrics on ByteBuf (DropwizardMetricsConfig.byteBufAllocator(Action)) and HttpClient (DropwizardMetricsConfig.httpClient(Action))

    There are also many other new convenience methods, bug fixes and generally cool stuff added in this release. Thanks to all who contributed.

    We hope you enjoy Ratpack 1.6.

    --

    Team Ratpack

    Source code(tar.gz)
    Source code(zip)
  • v1.5.4(Sep 17, 2018)

    This release includes some minor bug fixes and performance improvements. Please see the issue list below for details. This upgrade is recommended for everyone using 1.5.x.

    Source code(tar.gz)
    Source code(zip)
  • v1.5.3(Sep 17, 2018)

    This release includes some minor bug fixes and performance improvements. Please see the issue list below for details. This upgrade is recommended for everyone using 1.5.x.

    Source code(tar.gz)
    Source code(zip)
  • v1.5.2(Sep 17, 2018)

    This release includes some minor bug fixes and performance improvements.

    Please see the issue list below for details. This upgrade is recommended for everyone using 1.5.0.

    Source code(tar.gz)
    Source code(zip)
  • v1.5.1(Sep 17, 2018)

    This release squashes a few bugs, updates some key libraries and most importantly brings compatibility with Gradle 4.2 and higher.

    Please see the issue list below for details. This upgrade is recommended for everyone using 1.5.0.

    Source code(tar.gz)
    Source code(zip)
  • v1.5.0(Sep 17, 2018)

    A little over 6 months in the making, Ratpack 1.5.0 is now available. This release adds many new features and capabilities, squashes copious bugs and refines and optimizes many internals. Ratpack 1.5.0 is bigger, badder and faster.

    The following core dependencies have been upgraded:

    • Jackson 2.7.5 → 2.8.7
    • Netty 4.1.4.Final → 4.1.9.Final
    • Guava 19.0 → 21.0
    • Caffeine 2.3.1 → 2.4.0
    • Slf4j 1.7.21 → 1.7.28

    The new ratpack-jdbc-tx module adds support for Promise based JDBC transactions. It centers around the new ratpack.jdbctx.Transaction type.

    The new ratpack-consul modules provides the ratpack.consul.RatpackConsulConfig factory for creating configuration sources backed by Consul. This is a convenient way to centralize configuration for your app and separate it from deployment.

    The new Promise.mapIf and Promise.flatMapIf methods allowing supplying an “else” to a promise transform.

    The new Promise.retry methods allowing retrying a failed promise with various strategies.

    The new Promise.defer methods make it more convenient to delay yielding a promise.

    The new Promise.cacheResultFor method (and friends) make it easier to have more sophisticated caching policies for async values.

    The new Promise.close method makes it easier to perform async cleanup/disposal.

    Various new utilities have been added to the Streams class such as fork(), take(), concat(), batch() and flatten(). These utilities enable more patterns for working with async data streams.

    The new ByteBufStreams class provides utilities for dealing with streams of Netty ByteBuf.

    The new Execution.sleep() methods provide a non blocking analog to Thread.sleep().

    You can now specify an idle timeout for server connections. This affects active connections and inactive connections (i.e. keepalive). It can also be overridden on a per request basis, which is particularly useful when streaming a lot of data, or streaming eternally.

    Ratpack's HTTP client now supports SSL connections leveraging SNI. No extra config is required.

    The new ReadWriteAccess utility is an analog of the JDK's ReadWriteLock.

    The new FileIo utility provides non blocking filesystem read/write access.

    It is now possible to use Netty's SSL support via ServerConfigBuilder.ssl. Netty's SSL implementation is far more efficient in environments where OpenSSL is available. All users currently using SSL with Ratpack should migrate to using this new method.

    If the client connecting to the server identified itself, you can now obtain its certificate via Request.getClientCertificate.

    There are also many other new convenience methods, bug fixes and generally cool stuff added in this release. Thanks to all who contributed.

    We hope you enjoy Ratpack 1.5.

    --

    Team Ratpack

    Source code(tar.gz)
    Source code(zip)
  • v1.5.0-rc-3(Sep 17, 2018)

    These are the release notes for a Ratpack 1.5.0 release candidate. Please see the pending release notes for the final release for the complete list of closed issues.

    After an unfortunately long hiatus, we are back with 1.5.0-rc-3.

    This RC fixes the following issues raised with 1.5.0-rc-2:

    • [1254] - HTTP client incorrectly follows 301 and 302 redirects with original verb
    • [1253] - Warning is always logged at debug about error draining request body
    • [1219] - NotInRegistryException thrown in ratpack.pac4j.internal.RatpackWebContext
    • [1230] - Provide configurable default connect timeout for http client
    • [1190] - Upgrade to Handlebars.java 4.0.x

    Please try it out with your apps. The target date for 1.5.0 final is now Mon 28th of August.

    Source code(tar.gz)
    Source code(zip)
  • v1.5.0-rc-2(Sep 17, 2018)

  • v1.5.0-rc-1(Sep 17, 2018)

    These are the release notes for a Ratpack 1.5.0 release candidate. Please see the pending release notes for the final release for the complete list of closed issues.

    A little over 6 months in the making, Ratpack 1.5.0 is now available. This release adds many new features and capabilities, squashes copious bugs and refines and optimizes many internals. Ratpack 1.5.0 is bigger, badder and faster.

    The following core dependencies have been upgraded:

    • Jackson 2.7.5 → 2.8.7
    • Netty 4.1.4.Final → 4.1.9.Final
    • Guava 19.0 → 21.0
    • Caffeine 2.3.1 → 2.4.0
    • Slf4j 1.7.21 → 1.7.28

    The new ratpack-jdbc-tx module adds support for Promise based JDBC transactions. It centers around the new ratpack.jdbctx.Transaction type.

    The new ratpack-consul modules provides the ratpack.consul.RatpackConsulConfig factory for creating configuration sources backed by Consul. This is a convenient way to centralize configuration for your app and separate it from deployment.

    The new Promise.mapIf and Promise.flatMapIf methods allowing supplying an “else” to a promise transform.

    The new Promise.retry methods allowing retrying a failed promise with various strategies.

    The new Promise.defer methods make it more convenient to delay yielding a promise.

    The new Promise.cacheResultFor method (and friends) make it easier to have more sophisticated caching policies for async values.

    The new Promise.close method makes it easier to perform async cleanup/disposal.

    Various new utilities have been added to the Streams class such as fork(), take(), concat(), batch() and flatten(). These utilities enable more patterns for working with async data streams.

    The new ByteBufStreams class provides utilities for dealing with streams of Netty ByteBuf.

    The new Execution.sleep() methods provide a non blocking analog to Thread.sleep().

    You can now specify an idle timeout for server connections. This affects active connections and inactive connections (i.e. keepalive). It can also be overridden on a per request basis, which is particularly useful when streaming a lot of data, or streaming eternally.

    Ratpack's HTTP client now supports SSL connections leveraging SNI. No extra config is required.

    The new ReadWriteAccess utility is an analog of the JDK's ReadWriteLock.

    The new FileIo utility provides non blocking filesystem read/write access.

    It is now possible to use Netty's SSL support via ServerConfigBuilder.ssl. Netty's SSL implementation is far more efficient in environments where OpenSSL is available. All users currently using SSL with Ratpack should migrate to using this new method.

    If the client connecting to the server identified itself, you can now obtain its certificate via Request.getClientCertificate.

    There are also many other new convenience methods, bug fixes and generally cool stuff added in this release. Thanks to all who contributed.

    We hope you enjoy Ratpack 1.5.

    --

    Team Ratpack

    Source code(tar.gz)
    Source code(zip)
  • v1.4.6(Sep 17, 2018)

    This patch release fixes a serious issue where Ratpack's HTTP client would not validate connections to HTTPS servers correctly (#1181). The certificate's domain name was not validated against the used connection address, meaning that any connection would be trusted as long as it had a trusted certificate.

    This fix will not be backported to Ratpack 1.3.x or earlier. It is strongly recommended that all Ratpack users upgrade to 1.4.6.

    Please see the release notes for 1.4.0 for changes since 1.3.x.

    Source code(tar.gz)
    Source code(zip)
  • v1.4.5(Sep 17, 2018)

  • v1.4.4(Sep 17, 2018)

  • v1.4.3(Sep 17, 2018)

    This patch release fixes issues with direct memory leaks in several error conditions, and an issue with incorrect decryption of client side session values.

    It is strongly recommended that all 1.4.x users upgrade to 1.4.3.

    Please see the release notes for 1.4.0 for changes since 1.3.x.

    Source code(tar.gz)
    Source code(zip)
  • v1.4.2(Sep 17, 2018)

    This patch release fixes several issues with the HTTP client and Server Sent Events. Please see the issue list below for details.

    It is strongly recommended that all 1.4.x users upgrade to 1.4.2.

    Please see the release notes for 1.4.0 for changes since 1.3.x.

    Source code(tar.gz)
    Source code(zip)
RESTKit is a powerful toolkit for restful services development

RESTKit is a powerful toolkit for restful services development. This plugin is committed to enhancing development efficiency with useful

Mr.Hu 25 Dec 22, 2022
Tiny, easily embeddable HTTP server in Java.

NanoHTTPD – a tiny web server in Java NanoHTTPD is a light-weight HTTP server designed for embedding in other applications, released under a Modified

NanoHttpd 6.5k Jan 1, 2023
A powerful open source test automation platform for Web Apps, Mobile Apps, and APIs

A powerful open source test automation platform for Web Apps, Mobile Apps, and APIs. Build stable and reliable end-to-end tests @ DevOps speed.

Testsigma Technologies Inc 466 Dec 31, 2022
Android Auto Apps Downloader (AAAD) is an app for Android Phones that downloads popular Android Auto 3rd party apps and installs them in the correct way to have them in Android Auto.

Android Auto Apps Downloader (AAAD) is an app for Android Phones that downloads popular Android Auto 3rd party apps and installs them in the correct way to have them in Android Auto.

Gabriele Rizzo 865 Jan 2, 2023
Lean JSON Library for Java, with a compact, elegant API.

mJson is an extremely lightweight Java JSON library with a very concise API. The source code is a single Java file. The license is Apache 2.0. Because

Borislav Iordanov 77 Dec 25, 2022
Eclipse Jetty® - Web Container & Clients - supports HTTP/2, HTTP/1.1, HTTP/1.0, websocket, servlets, and more

Eclipse Jetty Canonical Repository This is the canonical repository for the Jetty project, feel free to fork and contribute now! Submitting a patch or

Eclipse Foundation 3.5k Dec 28, 2022
Rapidoid - Extremely Fast, Simple and Powerful Java Web Framework and HTTP Server!

Rapidoid - Simple. Powerful. Secure. Fast! Rapidoid is an extremely fast HTTP server and modern Java web framework / application container, with a str

null 1.6k Dec 30, 2022
http-kit is a minimalist, event-driven, high-performance Clojure HTTP server/client library with WebSocket and asynchronous support

HTTP Kit A simple, high-performance event-driven HTTP client+server for Clojure CHANGELOG | API | current Break Version: [http-kit "2.5.3"] ; Publish

HTTP Client/Server for Clojure 2.3k Dec 31, 2022
A high-level and lightweight HTTP client framework for Java. it makes sending HTTP requests in Java easier.

A high-level and lightweight HTTP client framework for Java. it makes sending HTTP requests in Java easier.

dromara 1.2k Jan 8, 2023
httpx - CLI to test HTTP/gRPC/RSocket/Kafka... services by HTTP DSL

httpx: CLI for run http file httpx is a CLI to execute requests from JetBrains Http File. Request types supported by httpx HTTP REST PUB/SUB - Apache

servicex-sh 105 Dec 15, 2022
Modern configuration library for distributed apps written in Java.

Overview cfg4j ("configuration for Java") is a configuration library for Java distributed apps (and more). Features: Open source Easy to use Auto-relo

cfg4j 544 Nov 23, 2022
Dead-Simple Packaging and Deployment for JVM Apps

Capsule Dead-Simple Packaging and Deployment for JVM Applications Capsule is a packaging and deployment tool for JVM applications. A capsule is a sing

Parallel Universe 1.1k Sep 16, 2022
Bootique is a minimally opinionated platform for modern runnable Java apps.

Bootique is a minimally opinionated java launcher and integration technology. It is intended for building container-less runnable Java applications. W

Bootique Project 1.4k Dec 29, 2022
Dead-Simple Packaging and Deployment for JVM Apps

Capsule Dead-Simple Packaging and Deployment for JVM Applications Capsule is a packaging and deployment tool for JVM applications. A capsule is a sing

Parallel Universe 1.1k Sep 16, 2022
this project is a checker for virus's and token loggers in java apps

Rat checker this project is a checker for virus's and token loggers in java apps this project is not finished and when it is it will never be perfect.

max! 40 Sep 30, 2021
A Gradle plugin that improves the experience when developing Android apps, especially system tools, that use hidden APIs.

HiddenApiRefinePlugin A Gradle plugin that improves the experience when developing Android apps, especially system tools, that use hidden APIs. Backgr

Rikka apps 125 Jan 5, 2023
🟪 TommyBox is a single-file executable that makes it possible to launch web apps on a desktop.

?? TommyBox About: TommyBox is a standalone executable container that makes it possible to launch static and dynamic web apps on a desktop by providin

null 19 May 28, 2022
Anthos Edge Use Cases for bringing apps and computation closer to the location where the action is, to improve response times and save bandwidth.

Anthos Bare Metal Edge Use Cases Edge computing is a distributed computing paradigm that brings computation and data storage closer to the location wh

Google Cloud Platform 27 Dec 20, 2022