Finatra v17.10.0 Release Notes

  • ➕ Added

    
    * 🚚 inject-core: Remove deprecated ``c.t.inject.TestMixin#resetMocks``.
      Properly
      use ``c.t.inject.Mockito`` trait in tests. Deprecate resetting of
      mocks and
      resettables in ``c.t.inject.IntegrationTestMixin``.
      ``PHAB_ID=D93876``
    
    * finatra-http: Parameterize
      ``@RouteParam``,\ ``@QueryParam``,\ ``@FormParam``, and
      ``@Header`` to allow specifying the field name to read from the
      params or
      header map. Previously these annotations only looked for values by
      the
      case class field name leading to possible ugliness when defining
      case
      class fields (especially with ``@Header``).
      \`\ ``PHAB_ID=``\ D94220\`
    
    * 👍 finatra: Add support for using a
      ``java.lang.annotation.Annotation`` instance
      with the ``#bind[T]`` testing DSL. This adds a way to bind
      instances in tests
      that use the @Named binding annotation. ``PHAB_ID=D91330``
    
    * finatra-http: Allow setting the content type of a Mustache view.
      ``PHAB_ID=D91949``
    
    🔄 Changed
    
    • 🚚 finatra-http: Move FileResolver to finatra/utils. PHAB_ID=D103536

    • 🚚 finatra-utils: Move ResponseUtils to finatra/http. PHAB_ID=D103507

    • 🚀 From now on, release versions will be based on release date in the format of YY.MM.x where x is a patch number. PHAB_ID=D101244

    • 🚚 finatra-utils: Remove deprecated ExternalServiceExceptionMatcher. PHAB_ID=D98343

    • finatra-jackson: ScalaType's isMap and isCollection methods now check that the given object's class is a subclass of scala.collection.Map[Any, Any] and scala.collection.Iterable[Any], respectively. Previously the superclasses' packages were unspecified. This is a runtime behavior change. PHAB_ID=D93104

    • 🛠 finatra-http: Require that route URIs and prefixes begin with forward slash (/). PHAB_ID=D90895

    • inject-utils: (BREAKING API CHANGE) RichOption toFutureOrFail, toTryOrFail, and toFutureOrElse signature changed to take the fail or else parameter by name. PHAB_ID=D89544

    • 🚚 inject-server: Remove usage of deprecated c.t.inject.logging.Slf4jBridgeUtility. Change usages to c.t.util.logging.Slf4jBridgeUtility. PHAB_ID=D88095

    • 🚚 finatra-http, inject-thrift-client: Remove netty3 specific types and dependency. In finatra-http, the code using these types is deprecated and can be removed allowing us to remove netty3-specific dependencies. In inject-thrift-client we can default to use the DefaultTimer for the backupRequestFilter method param instead of the HashedWheelTimer. PHAB_ID=D88025

    🛠 Fixed

    
    * finatra-http: Parameterized route callback inputs fail because the
      lookup of a
      corresponding ``MessageBodyManager`` reader lookup does not
      properly handle parameterized
      types such as collections. This change updates the
      ``MessageBodyManager`` ``MessageBodyReader``
      lookup to take into account parameterized types. This allows for a
      user to parse a
      ``Seq[T]``, or ``Map[K, V]`` as a route callback input type using
      the default Finatra
      ``MessageBodyReader``. ``PHAB_ID=D104277``
    
    * finatra-jackson: Fix issue causing ``IllegalArgumentException``
      from Validations to
      be swallowed. A catch clause in the
      ``c.t.finatra.json.internal.caseclass.jackson.FinatraCaseClassDeserializer``
      is too broad as it catches thrown ``IllegalArgumentException``\ s
      from field validations
      when the annotation is applied to a field of the incorrect type,
      e.g., when ``@Max`` is
      applied to a String field. ``PHAB_ID=D95306``
    
    Closed