Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [buckminster-dev] How to improve mapping rules in the Aggregator

On 2009-12-09 11:56, Filip Hrbek wrote:
Thomas Hallgren wrote:
The advice to rewrite the URI resolution comes from Ed Merks. I'm not
an expert, but he is.


OK, I'll talk to Ed about this to learn more.
Before I do, I'd like to ensure that I understand your thought:

If the proxy URI is resolved according to its version range, then mapping
the same IU twice (at different places) with different upper version range
bounds makes the whole model unresolvable - even though a solution exists
in fact. Is that assumption correct? If so, is it acceptable for users?

Example:

Mapping 1: a.b.c#[1.0.0,2.0.0] resolves to a.b.c#2.0.0
Mapping 2: a.b.c#[1.0.0,1.5.0] resolves to a.b.c#1.5.0


No, that assumption is wrong. The aggregator should use the intersection of the ranges. There must be a way to advice the proxy rewrite when situations like this occur. I.e. the proxy rewrite must have access to other mappings using the same id.

In addition to this, there may be a transitive request to include
a.b.c#[0.0.2,1.2.0] (from a dependency of something else).

If we resolve each of the two mappings using EMF proxy URI resolution
one by one (before we run the resolution of all contributed content),
we'll get a conflict.

If two different features cause a transitive conflict, then we cannot solve that automatically unless we do a full plan of everything at all times. That takes too long for us to do it everytime a mapping is added or modified.

What we could do, is to let the engine make a renewed attempt in case it fails, using the ranges instead of the appointed features and if it succeeds, give some feedback to the user about the changes that were made. I.e. the differences between what he sees in the aggregator and the actual selected feature. Perhaps that could also generate some advice that would be applied when refreshing the current view of the model.

They are transient. There are some examples in the book on how to do
this.


And where are they? On the InstallableUnitReference which refers to the
actual IU?
Or anywhere else?

That seems like the natural place for it, yes.

- thomas



Back to the top