Firefly is an asynchronous web framework for rapid development of high-performance web application.

Overview

What is Firefly?

GitHub Workflow Status Maven Central License

Firefly framework is an asynchronous Java web framework. It helps you create a web application Easy and Quickly. It provides asynchronous HTTP, Websocket, TCP Server/Client, and many other useful components for developing web applications, protocol servers, etc. That means you can easy deploy your web without any other java web containers, in short, it's containerless. Using Kotlin coroutines, Firefly is truly asynchronous and highly scalable. It taps into the fullest potential of hardware. Use the power of non-blocking development without the callback nightmare.

Firefly core provides functionality for things like:

  • HTTP server and client
  • WebSocket server and client
  • HTTP, Socks proxy
  • HTTP Gateway
  • TCP server and client
  • UDP server and client

Event driven

The Firefly APIs are largely event-driven. It means that when things happen in Firefly that you are interested in, Firefly will call you by sending you events.

Some example events are:

  • some data has arrived on a socket
  • an HTTP server has received a request

Firefly handles a lot of concurrencies using just a small number of threads, so don't block Firefly thread, you must manage blocking call in the standalone thread pool.

With a conventional blocking API the calling thread might block when:

  • Thread.sleep()
  • Waiting on a Lock
  • Waiting on a mutex or monitor
  • Doing a long-lived database operation and waiting for a result
  • Call blocking I/O APIs

In all the above cases, when your thread is waiting for a result it can’t do anything else - it’s effectively useless.

It means that if you want a lot of concurrencies using blocking APIs, then you need a lot of threads to prevent your application grinding to a halt.

Threads have overhead regarding the memory they require (e.g. for their stack) and in context switching.

For the levels of concurrency required in many modern applications, a blocking approach just doesn’t scale.

Quick start

Add maven dependency in your pom.xml.

<dependencics>
    <dependency>
        <groupId>com.fireflysource</groupId>
        <artifactId>firefly</artifactId>
        <version>5.0.0</version>
    </dependency>

    <dependency>
        <groupId>com.fireflysource</groupId>
        <artifactId>firefly-slf4j</artifactId>
        <version>5.0.0</version>
    </dependency>
</dependencics>

Add log configuration file "firefly-log.xml" to the classpath.

<?xml version="1.0" encoding="UTF-8"?>
<loggers xmlns="http://www.fireflysource.com/loggers"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://www.fireflysource.com/loggers http://www.fireflysource.com/loggers.xsd">
    <logger>
        <name>firefly-system</name>
        <level>INFO</level>
        <path>logs</path>
    </logger>
</loggers>

HTTP server and client example:

fun main() {
    `$`.httpServer()
        .router().get("/").handler { ctx -> ctx.end("Hello http! ") }
        .listen("localhost", 8090)

    `$`.httpClient().get("http://localhost:8090/").submit()
        .thenAccept { response -> println(response.stringBody) }
}

WebSocket server and client example:

fun main() {
    `$`.httpServer().websocket("/websocket/hello")
        .onServerMessageAsync { frame, _ -> onMessage(frame) }
        .onAcceptAsync { connection -> sendMessage("Server", connection) }
        .listen("localhost", 8090)

    val url = "ws://localhost:8090"
    `$`.httpClient().websocket("$url/websocket/hello")
        .onClientMessageAsync { frame, _ -> onMessage(frame) }
        .connectAsync { connection -> sendMessage("Client", connection) }
}

private suspend fun sendMessage(data: String, connection: WebSocketConnection) = connection.useAwait {
    (1..10).forEach {
        connection.sendText("WebSocket ${data}. count: $it, time: ${Date()}")
        delay(1000)
    }
}

private fun onMessage(frame: Frame) {
    if (frame is TextFrame) {
        println(frame.payloadAsUTF8)
    }
}

TCP server and client example:

fun main() {
    `$`.tcpServer().onAcceptAsync { connection ->
        launch { writeLoop("Server", connection) }
        launch { readLoop(connection) }
    }.listen("localhost", 8090)

    `$`.tcpClient().connectAsync("localhost", 8090) { connection ->
        launch { writeLoop("Client", connection) }
        launch { readLoop(connection) }
    }
}

private suspend fun readLoop(connection: TcpConnection) = connection.useAwait {
    while (true) {
        try {
            val buffer = connection.read().await()
            println(BufferUtils.toString(buffer))
        } catch (e: Exception) {
            println("Connection closed.")
            break
        }
    }
}

private suspend fun writeLoop(data: String, connection: TcpConnection) = connection.useAwait {
    (1..10).forEach {
        connection.write(toBuffer("TCP ${data}. count: $it, time: ${Date()}"))
        delay(1000)
    }
}

Contact information

Comments
  • 为firefly执行mvn install命令报错

    为firefly执行mvn install命令报错


    Test set: test.http.TestMultipartParser

    Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0 sec <<< FAILURE! testMultipartParser(test.http.TestMultipartParser) Time elapsed: 0 sec <<< ERROR! java.lang.NullPointerException at test.http.TestMultipartParser.testMultipartParser(TestMultipartParser.java:26) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) at org.junit.runners.ParentRunner.run(ParentRunner.java:309) at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:53) at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:123) at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:104) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:164) at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:110) at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:175) at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcessWhenForked(SurefireStarter.java:107) at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:68)

    opened by zidafone 3
  • Bump jackson.version from 2.9.7 to 2.10.0

    Bump jackson.version from 2.9.7 to 2.10.0

    Bumps jackson.version from 2.9.7 to 2.10.0.

    Updates jackson-databind from 2.9.7 to 2.10.0

    Commits

    Updates jackson-core from 2.9.7 to 2.10.0

    Commits
    • 2ce8890 [maven-release-plugin] prepare release jackson-core-2.10.0
    • 0e59212 Prepare for 2.10.0
    • e8c9f22 Merge branch '2.9' into 2.10
    • 4899c28 [maven-release-plugin] prepare for next development iteration
    • d4bfe20 [maven-release-plugin] prepare release jackson-core-2.9.10
    • b17e3f1 Prepare for 2.9.10
    • fc73bee Fix #563 (async parser, location for array values)
    • ce70782 Start work on #563
    • 1c852df ...
    • 8a0df82 Minor test change
    • Additional commits viewable in compare view

    Updates jackson-annotations from 2.9.7 to 2.10.0

    Commits

    Updates jackson-dataformat-yaml from 2.9.7 to 2.10.0

    Commits
    • 653a521 [maven-release-plugin] prepare release jackson-dataformats-text-2.10.0
    • c867e7c Prepare for 2.10.0
    • a2108d6 Merge branch '2.9' into 2.10
    • c925161 [maven-release-plugin] prepare for next development iteration
    • 75c139c [maven-release-plugin] prepare release jackson-dataformats-text-2.9.10
    • 38a70b4 prepare for 2.9.10
    • f4a9b24 ...
    • 9b66b14 [maven-release-plugin] prepare for next development iteration
    • 28aeb99 [maven-release-plugin] prepare release jackson-dataformats-text-2.10.0.pr3
    • b762986 prepare for 2.10.0.pr3
    • Additional commits viewable in compare view

    Updates jackson-dataformat-xml from 2.9.7 to 2.10.0

    Commits
    • 3734729 [maven-release-plugin] prepare release jackson-dataformat-xml-2.10.0
    • cc495ab Prepare for 2.10.0
    • b5ae1e8 Fix #325
    • 2bc25e4 Merge branch '2.9' into 2.10
    • 944835d [maven-release-plugin] prepare for next development iteration
    • 2a65f5f [maven-release-plugin] prepare release jackson-dataformat-xml-2.9.10
    • 75e9608 preapre for 2.9.10
    • b40a078 ...
    • 7d9ff0c [maven-release-plugin] prepare for next development iteration
    • 63d7c3e [maven-release-plugin] prepare release jackson-dataformat-xml-2.10.0.pr3
    • Additional commits viewable in compare view

    Updates jackson-dataformat-ion from 2.9.7 to 2.10.0

    Commits

    Updates jackson-dataformat-protobuf from 2.9.7 to 2.10.0

    Commits
    • ef604bd [maven-release-plugin] prepare release jackson-dataformats-binary-2.10.0
    • 4effd61 Prepare for 2.10.0
    • 44e63ed Merge branch '2.9' into 2.10
    • e476326 [maven-release-plugin] prepare for next development iteration
    • 4269350 [maven-release-plugin] prepare release jackson-dataformats-binary-2.9.10
    • e2d638c ...
    • a752141 prepare for 2.9.10
    • 57f33c9 ...
    • da96681 [maven-release-plugin] prepare for next development iteration
    • 2212be7 [maven-release-plugin] prepare release jackson-dataformats-binary-2.10.0.pr3
    • Additional commits viewable in compare view

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot ignore this [patch|minor|major] version will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 2
  • Bump jackson-databind from 2.13.4 to 2.13.4.1

    Bump jackson-databind from 2.13.4 to 2.13.4.1

    Bumps jackson-databind from 2.13.4 to 2.13.4.1.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Artifact mismatch from documentation

    Artifact mismatch from documentation

    The current readme has:

    <dependency>
        <groupId>com.fireflysource</groupId>
        <artifactId>firefly</artifactId>
        <version>5.0.2</version>
    </dependency>
    

    however, the artifact is not available in Maven Central, only 5.0.0-dev6 is the latest available.

    opened by rrmcguinness 1
  • Bump jackson-databind from 2.13.1 to 2.13.2.1

    Bump jackson-databind from 2.13.1 to 2.13.2.1

    Bumps jackson-databind from 2.13.1 to 2.13.2.1.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Bump jackson.version from 2.9.7 to 2.11.0

    Bump jackson.version from 2.9.7 to 2.11.0

    Bumps jackson.version from 2.9.7 to 2.11.0. Updates jackson-databind from 2.9.7 to 2.11.0

    Commits

    Updates jackson-core from 2.9.7 to 2.11.0

    Commits

    Updates jackson-annotations from 2.9.7 to 2.11.0

    Commits

    Updates jackson-dataformat-yaml from 2.9.7 to 2.11.0

    Commits

    Updates jackson-dataformat-xml from 2.9.7 to 2.11.0

    Commits
    • 6178408 [maven-release-plugin] prepare release jackson-dataformat-xml-2.11.0
    • 97c9e58 minor javadoc fixes
    • cc3f54d Prepare for 2.11.0 release
    • 54ac0ab Merge branch '2.10' into 2.11
    • 0d09d17 Upgrade woodstox dep to 6.2.0
    • efa8e3a ...
    • 5e14644 [maven-release-plugin] prepare for next development iteration
    • ba745ba [maven-release-plugin] prepare release jackson-dataformat-xml-2.11.0.rc1
    • 05faf56 prepare for 2.11.0.rc1
    • f886eda move to 2.11.0.rc1-SNAPSHOT
    • Additional commits viewable in compare view

    Updates jackson-dataformat-ion from 2.9.7 to 2.11.0

    Commits

    Updates jackson-dataformat-protobuf from 2.9.7 to 2.11.0

    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Bump jackson.version from 2.9.7 to 2.10.3

    Bump jackson.version from 2.9.7 to 2.10.3

    Bumps jackson.version from 2.9.7 to 2.10.3.

    Updates jackson-databind from 2.9.7 to 2.10.3

    Commits

    Updates jackson-core from 2.9.7 to 2.10.3

    Commits
    • 7cf88c8 [maven-release-plugin] prepare release jackson-core-2.10.3
    • d71a09c Prepare for 2.10.3
    • 18819b1 Backport #603 fix, update release notes
    • b2be2c4 minor add to dataformat match test
    • 18c5398 Update release notes wrt #592 fix
    • e9998bf Fix NPE in DataFormatMatcher#getMatchedFormatName when no match exists (#591)
    • dc9c40c move to 2.10.3-SNAPSHOT deps
    • 8f6d905 [maven-release-plugin] prepare for next development iteration
    • 35541ca [maven-release-plugin] prepare release jackson-core-2.10.2
    • ef009f0 Merge branch '2.10' of github.com:FasterXML/jackson-core into 2.10
    • Additional commits viewable in compare view

    Updates jackson-annotations from 2.9.7 to 2.10.3

    Commits

    Updates jackson-dataformat-yaml from 2.9.7 to 2.10.3

    Commits
    • 2effbce [maven-release-plugin] prepare release jackson-dataformats-text-2.10.3
    • 2e190ea Prepare for 2.10.3 release
    • 000c860 back to snapshots
    • 0660110 [maven-release-plugin] prepare for next development iteration
    • e6cf4f9 [maven-release-plugin] prepare release jackson-dataformats-text-2.10.2
    • 745847f prepare for 2.10.2
    • 3d8ed0d ...
    • 3a839ce Fix #163
    • 65a0693 Adding failing test for #163
    • 26c5b56 warnings, javadoc cleanup
    • Additional commits viewable in compare view

    Updates jackson-dataformat-xml from 2.9.7 to 2.10.3

    Commits
    • 21869b4 [maven-release-plugin] prepare release jackson-dataformat-xml-2.10.3
    • 60443a7 prepare for 2.10.3 release
    • 4cdf2e9 Update Woodstox dependency to 6.1.1
    • dcb7451 ...
    • bb793ed [maven-release-plugin] prepare for next development iteration
    • 28ee8a5 [maven-release-plugin] prepare release jackson-dataformat-xml-2.10.2
    • 083eaba Prepare for 2.10.2 release
    • f45aefc Fix #366
    • c2fe22f Refactoring test
    • 4f5fb6b Fix #378
    • Additional commits viewable in compare view

    Updates jackson-dataformat-ion from 2.9.7 to 2.10.3

    Commits

    Updates jackson-dataformat-protobuf from 2.9.7 to 2.10.3

    Commits
    • f90cd22 [maven-release-plugin] prepare release jackson-dataformats-binary-2.10.3
    • 82c1080 Prepare for 2.10.3 release
    • 94f69e4 ...
    • 794b8d6 [maven-release-plugin] prepare for next development iteration
    • 5470ac0 [maven-release-plugin] prepare release jackson-dataformats-binary-2.10.2
    • 7e4672f prepare for 2.10.2
    • bc79f9d Update release notes
    • 5f4ec0e Allow IonWriters to be reused.
    • 312fc6a ...
    • 7d1cfa2 [maven-release-plugin] prepare for next development iteration
    • Additional commits viewable in compare view

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Bump jackson.version from 2.9.7 to 2.10.1

    Bump jackson.version from 2.9.7 to 2.10.1

    Bumps jackson.version from 2.9.7 to 2.10.1.

    Updates jackson-databind from 2.9.7 to 2.10.1

    Commits

    Updates jackson-core from 2.9.7 to 2.10.1

    Commits

    Updates jackson-annotations from 2.9.7 to 2.10.1

    Commits

    Updates jackson-dataformat-yaml from 2.9.7 to 2.10.1

    Commits
    • 773ceee [maven-release-plugin] prepare release jackson-dataformats-text-2.10.1
    • edd6d5c prepare for 2.10.1
    • d39071a Git one last test failure wrt #15 on 2.x
    • 32437c0 Fix #15: Implement CsvParser.Feature.SKIP_EMPTY_LINES
    • 4eff590 Remove unnecessary method override
    • 571170d Clean up: remove unneeded csv override, remove call to deprecated JavaPropsPa...
    • 077432c ...
    • bcf53dc add 2.10 javadocs
    • e785fce [maven-release-plugin] prepare for next development iteration
    • 653a521 [maven-release-plugin] prepare release jackson-dataformats-text-2.10.0
    • Additional commits viewable in compare view

    Updates jackson-dataformat-xml from 2.9.7 to 2.10.1

    Commits
    • 5db5ec2 [maven-release-plugin] prepare release jackson-dataformat-xml-2.10.1
    • 1d8fb77 prepare for 2.10.1
    • ad85f0b Refactor backported failing test for #366
    • 521b8df Add test for xsi:nil hierarchy bug (#366)
    • 2778e1f update parent pom ref
    • a3a5fec Update woodstox dep to 6.0.2
    • 8d18b78 Add some more failing tests (#318 and #319)
    • 85823f4 Move now passing #325 to proper place
    • e1e8414 Add javadocs for 2.10
    • b099856 [maven-release-plugin] prepare for next development iteration
    • Additional commits viewable in compare view

    Updates jackson-dataformat-ion from 2.9.7 to 2.10.1

    Commits

    Updates jackson-dataformat-protobuf from 2.9.7 to 2.10.1

    Commits
    • ff60ae5 [maven-release-plugin] prepare release jackson-dataformats-binary-2.10.1
    • 4c53cec prepare for 2.10.1
    • dd79fab Fix #188 (actual fix in jackson-databind; tests for cbor however to verify)
    • 14ac5b2 Add failing tests for #188
    • 3487af1 One minor change needed for #185
    • 3fc5bb0 Merge branch '2.10' of https://github.com/FasterXML/jackson-dataformats-binar...
    • eafae59 fix #185 (possible stackoverflow decoding crafted nested tagged arrays)
    • 21f8159 fix travis settings
    • ccd0fc4 Add a failing test for #185
    • 148e93c Add javadocs for 2.10
    • Additional commits viewable in compare view

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot ignore this [patch|minor|major] version will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Http2 supported?

    Http2 supported?

    from https://github.com/http2/http2-spec/wiki/Implementations

    It was said firefly supports http/2 over TCP, i.e. h2c. is this true?

    when I looked at the source code, I did not see any http/2 related stuff, so I doubt it.

    jack

    opened by jackzhp 1
  • template file parse error

    template file parse error

    ...\page\template_compiled_view_bidding_pandect.java:10: 错误: 代码过长 public _bidding_pandect(TemplateFactory templateFactory){this.templateFactory = templateFactory;} ^ ...\page\template_compiled_view_bidding_pandect.java:8: 错误: 常量过多 public class _bidding_pandect extends AbstractView { ^ 2 个错误 com.firefly.template.exception.TemplateFileReadException: template file parse error at com.firefly.template.parser.ViewFileReader.(ViewFileReader.java:27) at com.firefly.template.TemplateFactory.init(TemplateFactory.java:53) at com.firefly.mvc.web.view.TemplateView.init(TemplateView.java:32) at com.firefly.server.ServerAnnotationWebContext.viewInit(ServerAnnotationWebContext.java:41) at com.firefly.server.ServerAnnotationWebContext.(ServerAnnotationWebContext.java:32) at com.firefly.server.ServerBootstrap.start(ServerBootstrap.java:38) ......

    opened by sojava-code 1
  • 偶尔会报java.nio.channels.CancelledKeyException

    偶尔会报java.nio.channels.CancelledKeyException

    $err_start java.nio.channels.CancelledKeyException at sun.nio.ch.SelectionKeyImpl.ensureValid(SelectionKeyImpl.java:55) at sun.nio.ch.SelectionKeyImpl.readyOps(SelectionKeyImpl.java:69) at com.firefly.net.tcp.TcpWorker.processSelectedKeys(TcpWorker.java:140) at com.firefly.net.tcp.TcpWorker.run(TcpWorker.java:103) at java.lang.Thread.run(Thread.java:662) $err_end

    opened by boomya 1
Releases(firefly-5.0.1)
  • firefly-5.0.1(Apr 18, 2022)

    Firefly v5.0.1 updates the Kotlin version to 1.6.20, Kotlin coroutine version to 1.6.1. Fix the jackson security vulnerabilities.

    Update log:

    1. Updates Kotlin version to 1.6.20.
    2. Updates Kotlin coroutine version to 1.6.1.
    3. Updates jackson data bind version to 2.13.2.2.
    Source code(tar.gz)
    Source code(zip)
  • firefly-5.0.0-final(Dec 23, 2021)

    Firefly v5.0.0 updates the Kotlin version to 1.6.10, Kotlin coroutine version to 1.6.0.

    Update log:

    1. Updates Kotlin version to 1.6.10.
    2. Updates Kotlin coroutine version to 1.6.0.
    Source code(tar.gz)
    Source code(zip)
  • firefly-5.0.0-alpha15(Dec 8, 2021)

  • firefly-5.0.0-alpha13(Jul 19, 2021)

    1. Update Kotlin version to 1.5.21
    2. Update dokka version to 1.5.0 and add dokka build config for jdk8 and jdk11
    3. Add read, write, close timeout parameter extension function for TcpConnection.
    4. Add JNI helper module
    Source code(tar.gz)
    Source code(zip)
  • firefly-5.0.0-alpha9(Feb 19, 2021)

  • firefly-5.0.0-alpha8(Feb 10, 2021)

  • firefly-5.0.0-alpha7_release(Feb 1, 2021)

    1. Refactor the net framework based on Kotlin coroutine.
    2. Optimize performance over 50%.
    3. The newest JDK is compatible. e.g. JDK15.
    4. A new API design that is scalable.
    Source code(tar.gz)
    Source code(zip)
  • firefly-4.9.5_release(Nov 23, 2018)

    Update log:

    1. Add time-based log file split configuration.
    2. Fix the JDBC connection thread safe problem.
    3. Remove ALPN boot dependency.
    4. Update Kotlin version to 1.3.10.
    Source code(tar.gz)
    Source code(zip)
  • firefly_4.9.3(Nov 10, 2018)

Owner
Alvin Qiu
I'm a developer, from China, focus network, and database technology. Enjoy table tennis. Pen-holder, Loop with quick-attack.
Alvin Qiu
Retracer is a high performance, and near realtime REST API which used for Java/Android stack trace retracing by R8

Retracer is a high performance, and near realtime REST API which used for Java/Android stack trace retracing by R8 Getting Started docker

Johnson Lee 3 Aug 21, 2022
This application was created internally for Aseman Company to evaluate the performance of its employee

AsemanTile-HRM This application was created internally for Aseman Company to evaluate the performance of its employees Uses Each of the managers of th

yasinrezaei 2 Mar 23, 2022
Powerful, comprehensice application performance management platform of Android

OutSiderAPM移动性能监控平台(持续开发中) 项目优势 实时掌控应用性能 降低性能定位成本 有效提升用户体验 监控模块 OutSiderAPM目前支持如下性能指标: 交互分析:分析Activity生命周期耗时,帮助提升页面打开速度,优化用户UI体验 网络请求分析:监控流量使用情况,发现并定位

jinx 336 Jan 3, 2023
Asynchronous Yandex.Predictor API wrapper for Kotlin/JVM.

Asynchronous Yandex.Predictor API wrapper for Kotlin/JVM.

Mikhail Titov 2 Jun 27, 2022
A High Copy WeChat ,SNS APP (高仿微信)

WeChat Social apps are popular all over the world, such as Facebook, Line, Whatsapp, and Kakao. Do you still worry about their own social project modu

Juns Allen 5.2k Dec 29, 2022
A distribution of performance-oriented Bukkit patches that aims to keep stability and vanilla behaviour

Patina A distribution of performance-oriented Bukkit patches that aims to keep stability and vanilla behaviour. You can find explanation of configurat

null 107 Dec 26, 2022
A sussy 1.17.1 Airplane fork that (hopefully) has better performance and relatively stable

Fiadelity A sussy Minecraft server software This project is experimental, its usage in production environment is discouraged if you are not ready to f

null 5 Dec 17, 2022
weiV(pronounced the same as wave), a new declarative UI development framework based on the Android View system.

weiV(pronounced the same as wave) 简体中文 if ("weiV" == "View".reversed()) { Log.d( "weiV", "It means Inversion of Control, you shoul

fangbing chen 69 Nov 22, 2022
The Android Trivia application is an application that asks the user trivia questions about Android development

The Android Trivia application is an application that asks the user trivia questions about Android development. It makes use of the Navigation component within Jetpack to move the user between different screens. Each screen is implemented as a Fragment. The app navigates using buttons, the Action Bar, and the Navigation Drawer.

Srihitha Tadiparthi 1 Feb 10, 2022
📒 NotyKT is a complete 💎Kotlin-stack (Backend + Android) 📱 application built to demonstrate the use of Modern development tools with best practices implementation🦸.

NotyKT ??️ NotyKT is the complete Kotlin-stack note taking ??️ application ?? built to demonstrate a use of Kotlin programming language in server-side

Shreyas Patil 1.4k Jan 8, 2023
Shreyas Patil 2.1k Dec 30, 2022
Chat is a sample project that presents a modern, 2021 approach to Android application development.

Chat for Android Chat is a sample project that presents a modern, 2021 approach to Android application development. Screenshots ??

Cenk Gun 10 Nov 6, 2022
Alkaa is a to-do application project to study the latest components, architecture and tools for Android development

Alkaa (begin, start in Finnish) is a to-do application project to study the latest components, architecture and tools for Android development. The project evolved a lot since the beginning is available on Google Play! ❤️

Igor Escodro 851 Jan 9, 2023
A Simple and Minimal Quotes Android Application to demonstrate the Modern Android Development tools

Quotee Android ?? A Simple and Minimal Quotes Android Application to demonstrate the Modern Android Development tools. Developed with ❤️ by Aminullah

null 12 Aug 24, 2022
🎥 A Simple and Minimal Movies Android Application to demonstrate the Modern Android Development and Jetpack Compose.

ComposeMovie Android ?? A Simple and Minimal Movies Android Application to demonstrate the Modern Android Development and Jetpack Compose. Built with

null 13 Oct 1, 2022
This is a sample Android project that presents a modern approach to Android application development.

Movies It is a sample app that shows information about movies and series. The goal is build a scalable, maintainable and testable app, implementing go

Matias 0 Dec 24, 2021
Note-app - A sample project that presents a modern approach to Android application development

Note-app - A sample project that presents a modern approach to Android application development

null 3 Aug 19, 2022
This is a food donation android application designed to reduce food wastage by donating excess food to poor or needy people. Based on Kotlin and currently under development

FOODONOR This is a food donation android application designed to reduce food wastage by donating excess food to poor or needy people. Based on Kotlin

Robert Muriithi 8 Oct 12, 2022