Class CompletableFutureUsageCondition

java.lang.Object
com.tngtech.archunit.lang.ArchCondition<com.tngtech.archunit.core.domain.JavaClass>
com.hazelcast.test.archunit.CompletableFutureUsageCondition

public class CompletableFutureUsageCondition extends com.tngtech.archunit.lang.ArchCondition<com.tngtech.archunit.core.domain.JavaClass>
Hazelcast internal callbacks shouldn't use the ForkJoinPool#commonPool, due to the risk of blocking Hazelcast progress by other misbehaving applications/libraries.
The following rules should enforce to use of a separate executor for executing dependent stages in a Hazelcast code:
  • from CompletionStage create a list of methods that have an Async counterpart
  • based on this list, filtering all their calls on the CompletableFuture instanceof objects
  • checking that no non-Async methods versions are used
  • checking that for Async methods the Executor service is specified
  • skipping methods that override CompletableFuture base class methods
  • Nested Class Summary

    Nested classes/interfaces inherited from class com.tngtech.archunit.lang.ArchCondition

    com.tngtech.archunit.lang.ArchCondition.ConditionByPredicate<T extends com.tngtech.archunit.base.HasDescription & com.tngtech.archunit.core.domain.properties.HasSourceCodeLocation>
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    check(com.tngtech.archunit.core.domain.JavaClass item, com.tngtech.archunit.lang.ConditionEvents events)
     

    Methods inherited from class com.tngtech.archunit.lang.ArchCondition

    and, as, finish, forSubtype, from, getDescription, init, or, toString

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Method Details

    • check

      public void check(com.tngtech.archunit.core.domain.JavaClass item, com.tngtech.archunit.lang.ConditionEvents events)
      Specified by:
      check in class com.tngtech.archunit.lang.ArchCondition<com.tngtech.archunit.core.domain.JavaClass>