cffu icon indicating copy to clipboard operation
cffu copied to clipboard

v1.0 project management

Open oldratlee opened this issue 2 years ago • 2 comments

📚 Documentation

🦮 CompletableFuture Guide

  • 📌 design patterns of biz usage
  • 📌 best practice and traps
  • [ ] write English doc, and English first

see README.md

🎪 CompletableFuture Usage Showcase

  • [x] timeout control showcase(6386d9b83828904ab988fd323164150852ab3e8c)
  • [x] delay execution showcase(6386d9b83828904ab988fd323164150852ab3e8c)

see CompletableFutureUsageShowcaseTest.kt

🇨🇳 Translations

📦 Library

see

✨ Support the missing convenient new methods

  • [x] new methods CffuFactory.cffuAllOf(...)(7acfa4d36b7b58805013e2fb35fb168b4b411dc5) with results version of CompletableFuture.allof
  • [x] new methods CffuFactory.cffuAnyOf(...)(d9df93fdcb354575dd844f2487e949bd139ed084) type safe version of CompletableFuture.anyOf Method
  • [x] new methods Cffu.cffuCombine(...) same as CffuFactory.cffuAllOf(...), providing this method is convenient for method chaining.
  • [x] new method Cffu.cffuJoin support timeout join ⏳ (323e14ad27e77f09b40ac7b9180aafe9250e15c8)

🚗 Customizable CF

  • [x] sticky default executor for *Async methods

🔮 backport CF methods from high java versions to Java 8

  • Cffu.java
    • [x] timeout control methods orTimeout(...)/completeOnTimeout(...)
    • [x] exceptionallyAsync()
    • [x] exceptionallyCompose(...)/exceptionallyComposeAsync(...)
    • [x] resultNow()/exceptionNow()
    • [x] backport Future#state()
      • [x] and add a new method cffuState() to works on Java 8
    • [x] completeAsync(...)
    • [x] minimalCompletionStage()
    • [x] copy()
    • [x] newIncompleteFuture()
  • CffuFactory.java
    • [x] delay execution methods defaultExecutor(...)
    • [x] completedStage(...)/failedStage(...)
    • [x] failedFuture(...)

🍩 Kotlin support

  • [x] extension methods of java implemented methods

🙌 Mics

  • [x] make lib 0-dependence(optional Kotlin runtime is ok) implement tuple instead of common-lang3 dependency

☔️ Testing

👷 Chore

  • CI build/Github Action
    • [x] support build by Java 19 and test by low version java(e.g. Java 8) (3a0c8e387ee78f24cc8b4e6f6c86a7b885d0e42b) because the implementation used high java version api of CF
    • 📌 release maven SNAPSHOT to repo when main branch integration_test pass

oldratlee avatar Feb 21 '23 07:02 oldratlee

cancelled/holden actions

  • ✋ improve the Exception message, for example TimeoutException of orTimeout because only take effect for Cffu compatibility logic but add complex codes, low ROI
  • ⏸️ excluding empty arguments overloaded methods(allof/cffuAnyOf/...) from generated javadoc
    • it seems impossible for official javadoc!
    • https://www.oracle.com/java/technologies/javase/javadoc-faq.html#exclude
    • https://stackoverflow.com/questions/1120455/how-do-i-exclude-a-specific-method-constructor-from-the-results-of-the-javadoc-a

oldratlee avatar Mar 20 '23 13:03 oldratlee

Image Gallery

(images are generated from docs file)

task stauts transition

task flow

oldratlee avatar Apr 09 '23 05:04 oldratlee