[430536] Add a new TP with bleeding-edge versions of all our dependencies

The new sirius_canary.target (and the corresponding .targetplatform)
reference the latest nightly or last successful build of all the Eclipse
projects we depend on. The goal is to use this as an early warning
system of breaking changes, to avoid discovering them in the rush of a
release (the canary in the coal mine).

Note that most of the dependencies have a version="0.0.0" (version=lazy
in the .targetplatform file) constraint so that we really always get the
very latest available. There is one exception and one issue with this:
* the exception is the platform itself. It seems that the way its
  update-site is structured, setting a version="0.0.0" causes all kinds
  of problems when resolving the target. This means the .target file is
  always bound to a specific platform build, and we must regularly
  refresh it from the .targetplatform definition to be sure we use the
  latest I-build.
* the other issue is that it means we always get the version with the
  maximum version number, which is generally fine but does not always
  correspond to the latest in the rare cases where a project reverts its
  current version number (like GEF did recently, going back to version
  3.9.x for master after publishing builds versioned as 3.10 from that
  branch).

Bug: 430536
Change-Id: Ia24f7ee68680e83dce140740f4054f00a5bdd7df
Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr>
[427247] Remove ContainerMapping.createContainer()

Remove the EOperation from the metamodel, and inline the actual
implementation (2 lines of code) at the call points (there were only 2).

Bug: 427247
Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr>
Change-Id: Ic583b0e52832ef6e2fbd10ec604c5995fddae3cb
[427247] Remove ContainerMapping.updateContainer()

Remove the EOperation from the metamodel, and inline the actual
implementation (2 lines of code) at the call points.

Bug: 427247
Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr>
Change-Id: I903113fb185e7d2b451a614dedb3edb019eff2a0
[427247] Remove ContainerMapping.getNodesCandidates()

Remove both ContainerMapping.getNodesCandidates() EOperations. The
actual implementation was inlined in the callers.

Bug: 427247
Change-Id: I02dd45a9db1c464102e172b8e6ad850db39487a1
Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr>
[427247] Remove AbstractNodeMapping.getDNodesDone()

Bug: 427247
Change-Id: I1b6be26a4594969ff13d2b2144e99c694b618e63
Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr>
[427247] Remove NodeMapping.getBestStyle()

Bug: 427247
Change-Id: If7eb1141aae3266d96af9491b61c93a9ef3d7aa6
Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr>
[427247] Remove NodeMapping.createListElement()

Remove the EOperation and inline the implementation at call sites.

Bug: 427247
Change-Id: I8b7c98bf786b39ca26c3e4482182d52b181abd22
Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr>
[427247] Remove EObjectLink

Remove the EObjectLink from the metamodel: it was not used anywhere.

Bug: 427247
Change-Id: I7808c57bbd7997b1be6b43a99a6313956b395ecc
Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr>
[430579] Use a better default candidates expression for tree items

The default value for TreeItemMapping's semanticCandidatesExpression was
the empty string, which means "any compatible element in the
ResourceSet" and can be very costly on large models. Use the same value
as for node mappings by default, feature:eAllContents (see
ContainerMappingItemProvider.collectNewChildDescriptors()).

The change only applies when using the VSM editor, and does not change
the default value in the metamodel. It does not impact existing VSMs and
thus requires no migration. Users who want the old behavior can simply
remove the automatically filled expression in the properties view.

Bug: 430579
Change-Id: Iea7a48f9c23d0799fcae1dfaa7dac2c84c90e7df
Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr>
[432021] Do not try to layout non-Sirius diagrams

Sirius relies on the generic GMF mechanisms and extension point to
provide its own layout logic ("Arrange All"), which means our algorithms
are registered globally and potentially called for all GMF-based
diagrams (including e.g. Papyrus, GMF Logic example, etc.), where they
cause at best exceptions, at worst random non-expected behaviors.

Use a more restrictive condition in our layout provider so that the
Sirius-specific layout algorithms are only executed for actual Sirius
diagrams.

Bug: 432021
Change-Id: Ibb70fd8b9be7d238c0011c0716ef52a5f3200b29
Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr>
[425170] Avoid CCE when the expression returns a non-List collection

Bug: 425170
Change-Id: I3be55b06257d51913e87930c1b2a6d99a80ac65c
Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr>
[429682] Do not use a Function for IInterpretedExpressionTargetSwitch.getFirstRelevantContainer()

Replace the getFirstRelevantContainerFinder() method, which returned a
Function<EObject, EObject> with getFirstRelevantContainer(EObject),
which directly returns the result of applying the previously returned
function.

Bug: 429682
Change-Id: Ic06b5af56ed5835947686da8b875aab114b6d774
Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr>
[cleanup] Fix potential NPEs

Change-Id: Ia38e77b43df086793018a16862b5ab47a060dd39
Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr>
[429682] Remove a constructor which exposed a Guava Function

Remove the DefaultInterpretedExpressionTargetSwitch constructor which
took a Function as argument. Sub-classes which called it with a non-null
Function can override getFirstRelevantContainer() to return the result
of that function instead, as was done in
DiagramInterpretedExpressionQuery$DiagramGlobalInterpretedTargetSwitch.

Bug: 429682
Change-Id: I992f0ee6a23dda2a588224069edb99553d54b7de
Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr>
[429682] Change EclipseUtil.getExtensionPlugins() API to avoid using a Predicate

The method getExtensionPlugins(Class<T>, String, String, String,
Predicate<String>) has been removed from API to avoid exposing a
Guava-specific Predicate. The new method getExtensionPluginsByKey()
returns all the extensions organized by some specified key, that client
code can then select or ignore using whatever criteria the Predicate
used to test.

Bug: 429682
Change-Id: I8e2260a57376d8e9a54ce0e47d88a2bec667607a
Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr>
[429682] Remove usage of Predicate in IDiagramDescriptionProvider

Several methods in IDiagramDescriptionProvider used to return a
Predicate<DDiagramElement> that the client code then had to invoke.
Change this to directly take the DDiagramElement to test and return the
resulting boolean.

Also change the related PinHelper in the same way.

The resulting code is a little awkward in places as I tried to reduce
the amount of changes in order to facilitate the review (i.e. sometimes
predicates are still created internally for no good reason). If this is
accepted, some cleanup should then be done.

Bug: 429682
Change-Id: I8d951c0ae8f837e63776f542fa4dcbb2c3503e21
Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr>
[429682] Introduce EReferencePredicate to replace Predicate<EReference>

Introduce a new interface EReferencePredicate, functionally equivalent
to Guava's Predicate<EReference>, and replace all instances of the Guava
type in our APIs with the new type.

The new interface is voluntarily ad-hoc and not a generic Predicate<T>
to avoid going in the direction of reproducing parts of Guava in our own
code base.

Bug: 429682
Change-Id: Iaea4f112f58c23f4a755542528c3072a2a40cac3
Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr>
[429682] Use NotificationFilter instead of Predicate<Notification> in SessionEventBroker

Change the signature of SessionEventBroker.addLocalTrigger() to use EMF
Tx's NotificationFilter instead a the Guava-specific Predicate<Notification>.

Bug: 429682
Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr>
Change-Id: I752146deb104260ccc7a48bf70379a8d376262af
[429682] Remove from API a class which inherited from Guava

The MappingHiearchy.HiearchyIterator internal class was visible from API
for no good reason and inherited from a Guava-specific type.

Bug: 429682
Change-Id: I2c286b9b3631145d5cc5765aae238bd8cc23d4b1
Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr>
[427278] Setup branding plug-in explicitly for all features

Bug: 427278
Change-Id: I1fa65490e7cba5827a020790403e3f2b35900ea7
Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr>