Clone Tools
  • last updated a few seconds ago
Constraints: committers
Constraints: files
Constraints: dates

Fix setter selection in presence of multiple setters (#2386)

  1. … 5 more files in changeset.
Removed some indirection.

  1. … 2 more files in changeset.
Moved ObjectInstantiationException to public API

This avoids leaking an internal exception type through the

ObjectFactory.newInstance API.

    • -29
    • +0
  1. … 24 more files in changeset.
Fixed handling for setters that return non-void types.

  1. … 2 more files in changeset.
Reused the property detection logic that is used for object decoration and task annotation handling also for determining whether a convention mapping can be applied to a decorated object.

The logic is shared but the actual work isn't shared, so this inspection can happen several times per decorated type (but no more than once per build).

  1. … 3 more files in changeset.
Use the same logic to decide whether a method is a property getter or not when decorating a task and when processing the annotations attached to the task's properties, so that this behaviour is consistent.

  1. … 3 more files in changeset.
Remove guava from worker process path

  1. … 15 more files in changeset.
Replaced all direct usages of `DependencyInjectingInstantiator` with a global `InstantiatorFactory` service.

  1. … 15 more files in changeset.
Use a consistent chain of exceptions on failure to create an instance of the action implementation, for worker actions, artifact transforms, attribute compatibility rules, attribute disambiguation rules and metadata supplier rules.

  1. … 7 more files in changeset.
Replace `TypeToken<T>` by `ModelType<T>` in `TypeOf<T>`

And introduce `TypeOf.Visitor`.

  1. … 6 more files in changeset.
Add coverage for Types.getGenericSimpleName(Type)

And fix basic wildcard type case, e.g. List<?>

  1. … 1 more file in changeset.
Allow extension public types to be specified via “type token”

and by being so, faithfully represent generic types.

  1. … 9 more files in changeset.
Avoid usage of `EqualsBuilder`

Calling `getGenericParameterTypes` is very expensive, and usage of `EqualsBuilder` implies calling the methods

even if they shouldn't be. This reworks the algorithm to avoid use of equals builder, and also changes the

generated hash code to use parameter types instead of generic parameter types.

This shaves a few ms for cold daemon startup (first use case, or `--no-daemon`).

Remove logging as it doesn't bring much value and log4j is not always available

There was an error in `buildSrc` compilation for some performance tests due to missing log4j dependency.

Signed-off-by: Cedric Champeau <>

Avoid the creation of a `Factory<T>` for each call to `get`

Rework the reflection cache

The reflection cache is now safer, because we use a hierarchical cache where

the node entries are weakly referenced `Class` instances. Typically the first

level of the cache would be the receiver, while lower levels would be the

argument types. If those types are collected, the weak hash maps that we use

internally would automatically clean the entries. Eventually, the value associated

with this "path" of `Class` itself references a `Method` or a `Constructor`

with additional, computed, data.

The advantage of this approach is that typically for the instantiator case,

we no longer need to match the argument types (`isMatch`) for each call: instead,

we go through the tree using subsequent argument types, and if a match is found,

we know it's the right one.

  1. … 4 more files in changeset.
Attempt to implement faster `stat` using JDK 7 attributes

  1. … 6 more files in changeset.
Reuse the same infrastructure for cached constructors and cached methods

  1. … 2 more files in changeset.
Fix GC possibly collecting cached entries when using only weak references: values need to be validated

  1. … 1 more file in changeset.
Do not wrap values in `WeakReference`

It's not the cache which should wrap values into weak references, but the value itself that should

do whatever is necessary to avoid the `Class` from being un-collectable.

Small optimization : wrapped types need not be wrapped into weak references since they will never be collected

Fix unit test

  1. … 1 more file in changeset.
Re-use the same infrastructure for `DirectInstantiator` and `MapNotationConverter` caches

This makes the cache in `MapNotationConverter` thread-safe. It's not yet externalized though.

    • -0
    • +50
  1. … 1 more file in changeset.
Make `CachedConstructor` safer by wrapping parameter types in `WeakReferences`

Impact on performance is yet to be checked...

Fix initial match not found in service registry candidate list

  1. … 1 more file in changeset.
Slightly optimize `DirectInstantiator`

This commit reworks the direct instantiator cache, by avoiding to recompute the parameter types of the

constructor each time, as well as wrapped parameter types. The reason is that `getParameterTypes` clones

the underlying parameter type array, which creates garbage immediately collected, for each constructor

we test, for each instantiation.

  1. … 1 more file in changeset.
Remove unnecessary parameter

+review REVIEW-6090

  1. … 5 more files in changeset.
Move type hierarchy walker to `base-services`

We'll need it in other places, too.

+review REVIEW-5989

  1. … 6 more files in changeset.
Move `PropertyAccessorType` to `base-services`

    • -0
    • +149
  1. … 18 more files in changeset.