finatra

Fast, testable, Scala services built on TwitterServer and Finagle

APACHE-2.0 License

Stars
2.3K
Committers
248

Bot releases are hidden (Show)

finatra - Finatra 22.12.0 Latest Release

Published by finaglehelper almost 2 years ago

22.12.0

Changed

  • inject-app: (BREAKING CHANGE) EmbeddedApp now sets com.google.inject.Stage to DEVELOPMENT
    117f36b6

Runtime Behavior Changes

  • util: Bump version of logback to 1.2.11. 7df56d38
finatra - Finatra 22.7.0

Published by finaglehelper about 2 years ago

22.7.0

Changed

  • inject-utils|inject-thrift: Move package private methods PossiblyRetryable#isCancellation and
    PossibleRetryable#isNonRetryable in inject-thrift to inject-utils ExceptionUtils as publicly
    usable methods. These methods are generally useful when processing interrupts on Futures.
    3d351450

Runtime Behavior Changes

  • inject-server: Remove deprecated c.t.inject.server.DeprecatedLogging trait. This trait was
    introduced as a placeholder shim to ensure that JUL util-logging Flags were still defined within
    a Finatra server such that servers did not fail upon startup if Flag values were being set.
    The default behavior during Flag parsing is to error if a Flag value is passed for a Flag not
    defined within the application.

    We have removed the shim and the trait (and thus the Flag definitions), as it is not expected
    that users use util-logging JUL Flags for logging configuration with Finatra servers since Finatra
    uses the SLF4J-API. Logging configuration should be done on the choosen SLF4J-API logging
    implementation. If your server fails to start after this change, please ensure you are not passing
    values for the JUL util-logging Flags. 5b5ccf4f

Changed

  • finatra: Removed kafka and kafka-streams modules from finatra core library.

    Note: We published a stand-alone finatra-kafka client
    with deprecation announcement to serve as exit pathway for current users.

    Announcement: finagle blog
    27e2c9c4

Added

  • finatra: Introduce InMemoryTracer for inspecting Trace information via tests. 0755b77e

Runtime Behavior Changes

finatra: Update Jackson library to version 2.13.3 a4065f19

finatra - Finatra 22.4.0

Published by finaglehelper over 2 years ago

22.4.0

No Changes

finatra - Finatra 22.3.0

Published by finaglehelper over 2 years ago

22.3.0

Runtime Behavior Changes

  • inject-app: Remove the SLF4J-API logging bridges as dependencies. These were originally
    added as the framework was expressly opionated that users should use Logback as an SLF4J-API
    implementation, however specifying the bridges on the Finatra inject/inject-app library
    causes many issues with code that must use a different SLF4J-API logging implementation
    but still uses the Finatra framework. Users should note that if they do not include these
    bridges in some other manner that they may lose logging if they have any libraries which
    log with one of the formerly bridged implementations. Also note that servers using a
    TwitterServer logging implementation to support dynamically changing log levels will get the proper bridges as dependencies.
    a73a2957

Runtime Behavior Changes

  • inject-server: Throw an UnsupportedOperationException when access to the c.t.inject.server.DeprecatedLogging#log
    instance is attempted. This is a JUL Logger instance which was provided only as a backward-compatible
    shim for Finatra services when the c.t.server.TwitterServer framework was moved to the SLF4J-API.
    The instance was marked @deprecated in hopes of alerting users to not use it. We have now updated
    it to throw an exception when accessed. Please refer to the Finatra documentation for more information
    on using the SLF4J-API for logging with the Finatra framework: https://twitter.github.io/finatra/user-guide/logging/index.html.
    e2f26752

Added

  • inject-app: Introduce test-friendly c.t.inject.app.console.ConsoleWriter and
    c.t.inject.app.TestConsoleWriter, which can be used to inspect the output of a command-line
    style c.t.inject.app.App. 404f7eeb

Changed

  • inject-modules: Remove deprecated c.t.inject.modules.LoggerModule. 4fa62a88
  • finatra: Bump version of Jackson to 2.13.2 3e0bd999
  • inject-thrift-client: Deprecate c.t.inject.thrift.AndThenService, c.t.inject.thrift.modules.AndThenServiceModule,
    and c.t.inject.thrift.internal.DefaultAndThenServiceImpl. These were plumbing for unreleased
    experimental record/replay functionality and currently do nothing with no plan for implementation.
    887c2ffb
finatra - Finatra 22.2.0

Published by finaglehelper over 2 years ago

22.2.0

  • inject-modules: Deprecate c.t.inject.modules.LoggerModule. Update c.t.inject.app.App to
    mix in the util/util-slf4j-jul-bridge Slf4jBridge trait. The LoggerModule does
    not provide a solution inline with the best practices for bridging JUL to the SLF4J-API
    and users are encouraged to instead mix in the c.t.util.logging.Slf4jBridge into the
    main class of their application if necessary. The updates to c.t.inject.app.App will now
    properly bridge JUL to the SLF4J-API early in the constructor of the application catching any
    log messages emitted to JUL before where the bridging would have been attempted when using
    the LoggerModule.

    Note that Slf4jBridge trait is already mixed into the c.t.server.TwitterServer trait and
    thus no further action is necessary forbridging JUL to the SLF4J-API in extensions of
    c.t.server.TwitterServer. 83360745

  • inject-slf4j: Deprecate c.t.inject.logging.Logging trait and methods. Users are encouraged
    to use the c.t.util.logging.Logging trait directly. There are no replacements for
    c.t.inject.logging.Logging#debugFutureResult and c.t.inject.logging.Logging#time.
    084257a9

finatra - Finatra 22.1.0

Published by finaglehelper over 2 years ago

22.1.0

Added

  • http-server: (BREAKING API CHANGE) Allow for customization of the building of the HTTP and HTTPS
    ListeningServer constructs. This allows users to specify any additional configuration over the
    Finagle Service[-R, +R] that is constructed by the HttpRouter. The
    c.t.finatra.http.HttpServerTrait#build method has been replaced by two more specific versions:
    #buildHttpListeningServer and #buildHttpsListeningServer which are used in postWarmup to
    create the appropriate ListeningServer given it has a defined port value.

    We also update the EmbeddedHttpServer and EmbeddedHttpClient to allow for being able to run both
    the HTTP and HTTPS listening servers in tests. This is done by setting the httpsPortFlag to the
    value of https.port which will enable the binding of the HTTPS listening server to the ephemeral
    port in tests. 13a600ff

  • mysql-client: Add base client configuration in EmbeddedMysqlServer to enable for more robust
    testing setup. This would allow users to add configurations like charset.
    Added a overridable function createRichClient to MysqlClientModuleTrait to allow
    creating the mysql client in other ways like newRichClient(Finagle.Name, String).
    dc1de215

Changed

  • finatra: Bump version of Jackson to 2.13.1 79bd09c4
finatra - Finatra 21.12.0

Published by finaglehelper almost 3 years ago

21.12.0

Deprecations

  • finagle-zipkin-core: c.t.f.zipkin.core.Sampler.DefaultSampleRate is deprecated in
    favor of c.t.f.zipkin.core.DefaultSampler.sampleRate. bd04e1c9

Bug Fixes

  • finagle-zipkin-core: c.t.f.zipkin.core.Sampler would sample at 1/10,000
    rate when configured with a lower (but non-zero) rate. It can now sample
    at rates as low as 1/16,777,216. 17cfb580

Runtime Behavior Changes

  • finagle-zipkin-scribe: c.t.f.zipkin.thrift.ZipkinTracer uses
    c.t.f.zipkin.core.DefaultSampler.sampleRate as the default sample rate instead of
    deprecated c.t.f.zipkin.core.Sampler.DefaultSampleRate. This allows it to correctly
    observe user-configured overrides to the default sample rate. When a ZipkinTracer is
    constructed with default parameters and there are no user-configured overrides, the
    behavior is unchanged. bd04e1c9
finatra - Finatra 21.11.0

Published by finaglehelper almost 3 years ago

21.11.0

Added

  • inject-core: Introduce a runAfterAll hook in c.t.inject.IntegrationTestMixin to allow for
    running logic to clean-up test resources in the org.scalatest.BeforeAndAfterAll#afterAll without
    needing to 1) override org.scalatest.BeforeAndAfterAll#afterAll, 2) ensure super is called for
    other resources clean-up, and 3) ensure all resources get cleaned up, regardless of non-fatal
    exceptions thrown as part of the clean-up logic and otherwise fail the TestSuite run.
    42c17b87

Changed

finatra - Finatra 21.10.0

Published by finaglehelper almost 3 years ago

21.10.0

  • http-server: Add versions of HttpRouter#filter which accept a Guice TypeLiteral to
    aid Java users in being able to apply generically typed Filters obtained from the object graph.
    46a45c4b
finatra - Finatra 21.9.0

Published by finaglehelper about 3 years ago

Breaking API Change

  • finatra-thrift: Removed c.t.finatra.thrift.ThriftClient#thriftClient, use
    #methodPerEndpoint. ed7ffac4

Runtime Behavior Changes

  • finatra: Bump version of Logback to 1.2.6. 42cb5fc3
  • finatra: Bump version of Jackson to 2.11.4. dff47602
  • finatra: Bump version of Joda-Time to 2.10.10. 4906eab1
  • finatra: Bump version of logback to 1.2.5. 9eaa5f9d
  • finatra: Bump version of json4s to 3.6.11. 496d0e7d
finatra - Finatra 21.8.0

Published by finaglehelper about 3 years ago

Fixed

  • inject-core: Fixed a bug where c.t.inject.TestMixin#assertFailedFuture would incorrectly pass
    for non-failed c.t.util.Future in some cases where the tested failure is a supertype of
    org.scalatest.exceptions.TestFailedException. b1f14ebb

Breaking API Change

  • inject-utils: Removed deprecated c.t.inject.conversions.string, use
    c.t.conversions.StringOps in the util/util-core project instead. ceed4f4a
  • inject-utils: Removed deprecated c.t.inject.conversions.tuple, use
    c.t.conversions.TupleOps in the util/util-core project instead. 0c95c240
  • inject-utils: Removed deprecated c.t.inject.conversions.seq, use
    c.t.conversions.SeqOps in the util/util-core project instead. 8bd42557
  • inject-utils: Removed implicit class RichMap from c.t.inject.conversions.map,
    use c.t.conversions.MapOps in the util/util-core project instead. 19ad496a

Changed

  • thrift: Update the test c.t.finatra.thrift.ThriftClient to close client and clean-up resources
    during the EmbeddedTwitterServer close. e6c792ed
  • finatra: Update ScalaCheck to version 1.15.4 f40869cd
finatra - Finatra 21.6.0

Published by finaglehelper over 3 years ago

Changed

  • inject-thrift-client (BREAKING API CHANGE): Removed the deprecated
    c.t.inject.thrift.modules.FilteredThriftClientModule. Please use its successor
    c.t.inject.thrift.modules.ThriftMethodBuilderClientModule for per-method configuration of a
    Thrift client. 008d8ca1

  • thrift: Add service_class to Finatra library thrift registry entry. c5159208

  • finatra (BREAKING API CHANGE): Update to use the new util/util-jackson ScalaObjectMapper for
    case class object mapping. We've removed the custom Finatra c.t.finatra.jackson.ScalaObjectMapper
    and instead now use the c.t.util.jackson.ScalaObjectMapper. Since the c.t.util.jackson.ScalaObjectMapper
    does not support Joda-Time, backwards compatibility is
    maintained through usage of the Finatra ScalaObjectMapperModule for obtaining a configured
    ScalaObjectMapper which will be created with Joda-Time support, though support for Joda-Time in
    Finatra is deprecated and users should expect for Joda-Time support to be removed in an upcoming release.
    Users should prefer to use the JDK 8 java.time classes or java.util.Date.

    The finatra/inject c.t.inject.domain.WrappedValue has been removed and users should update to the
    util/util-core c.t.util.WrappedValue instead.

    The finatra/jackson JsonDiff utility is also removed. Users should switch to the improved version
    in util/util-jackson: c.t.util.jackson.JsonDiff.

    With the move to the util/util-jackson ScalaObjectMapper we're also able to clean up some awkward
    directory structures in Finatra which were necessary because of dependencies. Specifically, the
    finatra/json-annotations library no longer exists, as @InjectableValue is now an annotation in
    util/util-jackson-annotations, and the remaining binding annotations @CamelCaseMapper and @SnakeCaseMapper
    have been moved into finatra/jackson.

    Using the util/util-jackson ScalaObjectMapper also brings Java 8 date/time
    (JSR310) support via inclusion of the Jackson JavaTimeModule
    by default.

    Lastly, we've also added the YamlScalaObjectMapperModule which can be used in place of the
    ScalaObjectMapperModule in order to provide a YAMLFactory configured ScalaObjectMapper.
    9a168a98

  • inject-utils: Remove deprecated c.t.inject.utils.StringUtils. Users should prefer to use
    the corresponding methods in com.twitter.conversions.StringOps from util/util-core, instead.
    3a063a9e

  • inject-utils: Remove deprecated c.t.inject.utils.AnnotationUtils. Users should instead prefer
    c.t.util.reflect.Annotations from util/util-reflect. 35b58d34

finatra - Finatra 21.5.0

Published by finaglehelper over 3 years ago

Fixed

  • finatra-jackson: Do not enforce CaseClassDeserializer deserialization semantics for a
    field until after any deserializer annotation has been resolved. This fully allows a deserializer
    to specify how to deserialize a field completely independent of the CaseClassDeserializer
    requirements for fields. For example, if a user wanted to allow parsing of a JSON null value
    into a null field instance value, they could define a custom deserializer to do so and annotate
    the case class field with @JsonDeserialize(using = classOf[CustomNullableDeserializer]).

    Additionally, we fix a bug in how String case class fields are handled when the incoming JSON is
    not a String-type. The current code incorrectly returns an empty string when the field value is
    parsed into Jackson ContainerNode or ObjectNode types and an incorrect toString representation
    for a PojoNode type. We now correctly represent the field value as a string in these cases to
    deserialize into the case class field. 715890a4

  • finatra-jackson: Properly handle Scala enumeration fields wrapped in an Option during
    deserialization failures in the CaseClassDeserializer#isScalaEnumerationType method.
    a6cb5a10

Changed

  • finatra-kafka: Deprecate c.t.finatra.kafka.consumers.TracingKafkaConsumer
    as it only produced single-span traces and there is no way to propagate the TraceId back to the
    caller without changing the entire API. Users should use the
    c.t.finatra.kafka.consumers.KafkaConsumerTracer.trace method instead to enable tracing for
    Kafka Consumers. Also added c.t.finatra.kafka.producers.KafkaProducerTraceAnnotator and
    c.t.finatra.kafka.consumers.KafkaConsumerTraceAnnotator services which will can be used to add
    custom trace annotations to the producer and consumer spans. bba748e6

  • finatra (BREAKING API CHANGE): Update to use the new util/util-validator ScalaValidator for case
    class field validations. We've removed the custom Finatra c.t.finatra.validation.Validator and
    instead now use the c.t.util.validation.ScalaValidator. Constraint annotations and validator
    implementations now use the standard jakarta.validation API interface classes instead of any
    custom Finatra types. We've deprecated the custom Finatra constraints as they are duplicative of
    already existing "standard" or otherwise provided constraints and validators. Additionally,
    c.t.finatra.validation.ErrorCode is deprecated with no replacement. The same data carried can be
    obtained via the standard jakarta.validation.ConstraintViolation[T].

    Adapting the Finatra framework to use the util/util-validator also includes the framework Jackson
    integration. We're also taking this opportunity to clean up the error reporting interface of
    the CaseClassFieldMappingException to define a CaseClassFieldMappingException.Reason type to
    replace the usage of the (removed) ValidationResult.Invalid type. The Reason carries a message
    String as well as a CaseClassFieldMappingException.Detail which can be one of several possible
    types including a CaseClassFieldMappingException.ValidationError which carries any failed validation
    information including the emitted ConstraintViolation[T].

    Lastly, we are deprecating support for JSON serialization/deserialization of JodaTime fields in
    case classes. This support will be dropped in an upcoming release. Users should prefer to use the
    JDK 8 java.time classes and we will be adding support for these types in the Finatra Jackson
    integration in the future. 0731782d

  • finatra-jackson: (BREAKING API CHANGE) JsonLogging should use the lazy Scala SLF4J logger
    and no longer return the passed in argument that's logged as JSON. 67252f30

finatra - Finatra 21.4.0

Published by finaglehelper over 3 years ago

Changed

  • http-core: Add support to build a multipart/form-data POST request in Finatra RequestBuilder.
    8d2d8c58
  • finatra-kafka-streams: Update AsyncTransformer to support threadpools. 0498a06a
  • finatra-kafka-streams: Set kafka.producer.acks=all by default cce382d9
finatra - Finatra 21.3.0

Published by finaglehelper over 3 years ago

Added

  • inject-thrift-client: Add per-method retry configuration withMaxRetries in
    com.twitter.inject.thrift.ThriftMethodBuilder for customizing configureServicePerEndpoint.
    be9f27c8

Breaking API Changes

  • finatra: Deprecate c.t.inject.utils.AnnotationUtils, users should instead use
    c.t.util.reflect.Annotations from com.twitter:util-reflect. Deprecate
    c.t.finatra.utils.ClassUtils, users should instead use either
    c.t.util.reflect.Classes#simpleName, c.t.util.reflect.Types#isCaseClass or
    c.t.util.reflect.Types#notCaseClass from com.twitter:util-reflect. 291d1b78
  • finatra: Builds are now only supported for Scala 2.12+ 5f08f469

Changed

  • finatra: Revert to scala version 2.12.12 due to https://github.com/scoverage/sbt-scoverage/issues/319
    6f74aedb
  • finatra: Bump scala version to 2.12.13 029c7500
  • finatra: Move com.twitter.finatra.http.{jsonpatch,request} from the finatra/http-server project to
    finatra/http-core project. Please update your build artifact references accordingly.
    f8a810b2
  • http-server,http-core,jackson,thrift,validation: Update to use c.t.util.reflect.Types
    in places for TypeTag reflection. c132a053
  • finatra: Move c.t.finatra.http.{context,exceptions,response} from the finatra/http-server project
    to finatra/http-core project. Please update your build artifact references accordingly.
    9f6c9405
  • finatra: Move c.t.finatra.http.streaming from the finatra/http-server project to
    finatra/http-core project. Please update your build artifact references accordingly.
    d454fd0e
  • http-core: Introduce c.t.finatra.http.marshalling.MessageBodyManager#builder for creating an immutable
    c.t.finatra.http.marshalling.MessageBodyManager. The MessageBodyManager's constructor is now private.
    d8886dab
  • http-server: Move c.t.finatra.http.modules.MessageBodyFlagsModule to
    c.t.finatra.http.marshalling.modules.MessageBodyFlagsModule. 0cd97c79
  • validation: Remove deprecated constraint type aliases under com.twitter.finatra.validation, users
    should prefer the actual constraint annotations at com.twitter.finatra.validation.constraints.
    498ebe4a
  • jackson: Remove deprecated com.twitter.finatra.json.utils.CamelCasePropertyNamingStrategy,
    users should prefer to use PropertyNamingStrategy#LOWER_CAMEL_CASE or an equivalent directly.
    Also remove the deprecated com.twitter.finatra.json.annotations.JsonCamelCase, users should
    use the @JsonProperty or @JsonNaming annotations or an appropriately configured
    Jackson PropertyNamingStrategy instead. da836c55
  • inject-core: (BREAKING API CHANGE) Rename c.t.inject.TwitterModule.closeOnExit to onExit so
    it mirrors the API from c.t.inject.App. b8f00879
  • http-client: Remove deprecated c.t.finatra.httpclient.modules.HttpClientModule.
    Use c.t.finatra.httpclient.modules.HttpClientModuleTrait instead.
    333c782a
  • http-client: Remove deprecated c.t.finatra.httpclient.RichHttpClient. Use c.t.finagle.Http.Client
    or c.t.finatra.httpclient.modules.HttpClientModuleTrait instead. Additionally,
    c.t.finatra.httpclient.modules.HttpClientModule.provideHttpService has been removed. Use
    c.t.finatra.httpclient.modules.HttpClientModuleTrait.newService(injector, statsReceiver)
    instead. 2af18ede
  • finatra: Move c.t.finatra.http.fileupload from the finatra/http-server project to
    finatra/http-core project. Please update your build artifact references accordingly.
    8b0ea169
  • http-client: Remove deprecated method get from c.t.finatra.httpclient.HttpClient.
    Use HttpClient's execute instead. eada0515
  • finatra: Create the finatra/http-core project, which is meant to contain common artifacts
    for the finatra/http-server and finatra/http-client project. As part of this
    change, the com.twitter.finatra.httpclient.RequestBuilder has been deprecated
    and should be updated to reference com.twitter.finatra.http.request.RequestBuilder.
    5e3da631
  • finatra: Rename the finatra/httpclient project to finatra/http-client. Please update your
    build artifact references (i.e. SBT, Maven) to use "finatra-http-client".
    c0b0ae61
  • kafkaStreams: Switch the default Kafka client and Kafka Stream client to version 2.4.1.
    d2367485
  • finatra: Rename the finatra/http project to finatra/http-server. Please update your
    build artifact references (i.e. SBT, Maven) to use "finatra-http-server". See the
    Finatra User's Guide
    2cb398e6
finatra - Finatra 21.2.0

Published by finaglehelper over 3 years ago

Changed

  • finatra: all subprojects cross-building with 2.13.1. 7deb1153
  • kafkaStreams: Enables cross-build for 2.13.1 for projects kafkaStreamsStaticPartitioning,
    kafkaStreamsPrerestore, and kafkaStreamsQueryableThrift. c9e5bda1
finatra - Finatra 21.1.0

Published by finaglehelper over 3 years ago

Changed

  • kafka: Enables cross-build for 2.13.1. Note that kafka 2.5 is bundled with scala 2.13+
    and kafka 2.2 is bundled with scala 2.12-. 7bdba713
  • kafkaStreams: Enables cross-build for 2.13.1. Note that kafka 2.5 is bundled with
    scala 2.13+ and kafka 2.2 is bundled with scala 2.12-. 7bdba713
  • benchmarks: Enables cross-build for 2.13.1. c811e18a
  • inject-thrift-client-http-mapper: Enables cross-build for 2.13.1. 7c3f13ba
  • http-mustache: Enables cross-build for 2.13.1. 7c3f13ba
  • thrift: (BREAKING API CHANGE) Removed JavaThriftRouter.add(controller, protocolFactory) method.
    Use AbstractThriftServer.configureThriftServer to override Thrift-specific stack params
    (including Thrift.param.ProtocolFactory). bc34aa7b
  • finatra-http: Remove deprecated c.t.finatra.http.response.StreamingResponse.
    Use c.t.finatra.http.streaming.StreamingResponse instead. 851a06a5
  • finatra-kafka-streams: (BREAKING API CHANGE) Changed the delayWithStore DSL call to ensure that
    the store name is consistent across shards. Requires a new storeName parameter to allow
    for multiple delays in a single topology. 7373b478

Fixed

  • finatra-kafka-streams: Renamed implicit Kafka Streams DSL classes in order to
    permit multiple DSL extensions to be used in the same Kafka Streams topology.
    b48d4c5c
  • thrift: Fixed a bug where Thrift stack params (i.e., protocol factory) that are passed to
    AbstractThriftServer.configureThriftServer are ignored in JavaThriftRouter.
    bc34aa7b
finatra - Finatra 20.12.0

Published by finaglehelper over 3 years ago

Added

  • finatra-kafka-streams: Add async map commands to Kafka Streams DSL (flatMapAsync,
    flatMapValuesAsync, mapAsync, and mapValuesAsync) 4922a984
  • finatra-kafka-streams: Allow String configuration to be null and set upgradefrom to null if it is running in 2.5 kafka client. 6703da53
  • finatra-http: Allow injecting filtered controllers in HttpRouter from Java. de2a8f78
  • inject-utils: Move deprecation warning from c.t.inject.conversions.map to
    c.t.inject.conversions.map.RichMap. 4364eb6e
  • kafka: Add an option includePartitionMetrics to KafkaFinagleMetricsReporter to not include
    metrics per partition of the FinagleKafkaConsumer. Defaults to true. 1f5a00ee
  • finatra: Enables cross-build for 2.13.1 for inject-logback. 0468a613
  • finatra-kafka-streams: Add delay DSL calls to insert a delay into a Kafka Streams topology.
  • finatra: Enables cross-build for 2.13.1 for inject-thrift-client. 82cf2830
  • finatra-kafka-streams: Add c.t.f.k.t.s.PersistentTimerValueStore which stores a value in the
    timerstore that can be used when the timer is triggered. 3cd8bfc0
  • inject-core: Add ability to call InMemoryStats#waitFor with a fixed timeout
    306b7196
  • finatra: Enables cross-build for 2.13.1 for httpclient, http, and jackson. d6dbc074

Changed

  • inject-utils: Deprecate all methods in c.t.inject.conversions.map.RichMap, and move
    functionality to c.t.conversions.MapOps in the util/util-core project. e765b5ae
  • inject-utils: Deprecate all methods in c.t.inject.conversions.tuple, and move functionality
    to c.t.conversions.TupleOps in the util/util-core project. 2bd6dbf6
  • inject-utils: Deprecate all methods in c.t.inject.conversions.seq, and move functionality
    to c.t.conversions.SeqOps in the util/util-core project. 0ad0d114
  • inject-utils: Remove deprecated camelify, pascalify, and snakify from
    c.t.inject.conversions.string.RichString. Additionally, deprecate toOption and
    getOrElse in c.t.inject.conversions.string.RichString, and move functionality to
    c.t.conversions.StringOps in the util/util-core project. b058e7f4
  • c.t.finatra.http.exceptions.ExceptionMapperCollection changed from Traversable to Iterable
    for cross-building 2.12 and 2.13. d6dbc074
  • inject-core: (BREAKING API CHANGE) Move the testing utility InMemoryStatsReceiverUtility
    and InMemoryStats into inject-core from inject-server. They can both be found under
    com.twitter.inject. fa5d5d69
  • validation: (BREAKING API CHANGE) Introduce new Validation Framework APIs which support
    cascading validation to nested case classes and other improvements which also closer align
    to JSR380. Validator#validate has changed from returning Unit and throwing an exception
    to model the JSR380 version that returns a Set of failed constraints. There is a new method
    which replicates the throwing behavior. 19008194
  • kafka: Split c.t.f.kafka.tracingEnabled flag into c.t.f.k.producers.producerTracingEnabled and
    c.t.f.k.consumers.consumerTracingEnabled to selectively enable/disable tracing for
    producers/consumers. Producer tracing is turned on by default and consumer tracing is turned off
    by default now. b95b8460

Fixed

  • inject-server: Wire through HTTP method in AdminHttpClient so that POST requests can be made to
    HTTPAdmin endpoints. 8d846128
finatra - Finatra 20.10.0

Published by finaglehelper almost 4 years ago

Added

  • finatra-kafka-streams: Add toCluster DSL call to publish to another Kafka cluster. 449eea1a

  • jackson: Add support for validating @JsonCreator annotated static (e.g., companion object defined apply methods) or secondary case class constructors. 1c1b55c9

  • inject-app: Allow injecting flags without default values as both scala.Option and java.util.Optional. b74fe9e9

Changed

  • utils: Undo usage of TypesApi for help in determining if a class is a Scala case class
    as this fails for generic case classes in Scala 2.11, failing some supported cases for
    Jackson processing. b1d43381
  • utils: Update ClassUtils#simpleName to handle when package names have underscores
    followed by a number which throws an InternalError. Add tests. bbc0cf7b
  • utils: Revamp ClassUtils#isCaseClass to use the TypesApi for help in determining
    if a class is a Scala case class. Add tests. bbc0cf7b
  • http: The http server did not properly log the bound address on server startup. Fix this
    and make the thrift server consistent. 4410ff38
  • utils: (BREAKING API CHANGE) Rename maybeIsCaseClass to notCaseClass in
    ClassUtils and change the scope of the method. 82ffb4be
  • http: Adding support for optionally passing chain in the TLS sever trait. 5bcce35c
  • finatra: Bump version of Joda-Time to 2.10.8. e2cbca30

Fixed

  • finatra-kafka-streams: Revert AsyncTransformer to still use ConcurrentHashMap. 7d5b3ccf

  • inject-thrift-client: The Singleton annotation has been removed from the DarkTrafficFilter and the JavaDarkTrafficFilter. It was there in error. 5efc1ab2

  • inject-thrift-client: When using RepRepServicePerEndpoint, Finatra's DarkTrafficFilter would throw a NoSuchMethodException when trying to lookup an inherited Thrift endpoint.
    697b2137

finatra - Finatra 20.9.0

Published by finaglehelper about 4 years ago

Added

  • finatra-inject: TestInjector has been reworked to allow users executing modules' lifecycle
    callbacks. Specifically, the TestInjector builder API has been moved under TestInjector.Builder
    to allow TestInjector extends Injector with two new methods: start() and close().
    07bf53fa

Changed

  • finatra-kafka-streams: Update and separate the Finatra kafka stream code base which has direct
    dependency on Kafka 2.2. Separate any code which cannot easily be upgraded to separate build
    target. 3c78c34d
  • inject-core: c.t.inject.Injector is now an abstract class. Use Injector.apply to create
    a new instance (versus the new Injector(...) before). 64ba51e9
  • http: Ensure HttpWarmer creates the request exactly the number of times requested and
    mutates the correct objects. 0a3be376
  • kafka: Replaced the com.twitter.finatra.kafka.TracingEnabled toggle with a GlobalFlag enabling
    Zipkin tracing for Kafka clients. 0e829aae
  • finatra: Bump version of Jackson to 2.11.2. 94bc773d

Fixed

  • jackson: Fix issue in the handling of unknown properties. The CaseClassDeserializer only
    considered the case where the incoming JSON contained more fields than the case class and
    not the case where the incoming JSON contained less fields than specified in the case class.
    This has been fixed to ensure that when the fields of the JSON do not line up to the
    non-ignored case class fields the handling of unknown properties is properly invoked.
    9762145d
  • validation: c.t.f.validation.Validator would throw an IndexOutOfBoundsException when
    trying to validate a case class which contained additional fields that are not included in the
    constructor parameters. bb342c09