I should add a final note... I haven't tested this, but it may not be the builder vs non-builder that is at fault here, but hierachical (since builder uses this via combined configuration) vs non- hierachical (since the test case uses this - via BaseConfiguration)

On 11/02/2007, at 11:54 PM, Brett Porter wrote:

Well, it has become even more confusing :) My assessment is that it should be left as it is currently for 1.4 (see below).

I've attached some unit tests to the issue.

I've found that under 1.3, the same configurations constructed using a builder behave differently to those constructed by hand. This meant that: - using a builder, you could resolve a key within the subset when interpolating in that subset, but that you could not do this when not using a builder - using a builder, you could not resolve a key from the parent in a subset (this is what CONFIGURATION-242 fixes), but you could outside.

Under 1.4, everything behaves consistently, between builder and non- builder. This is achieved by changing the first point above so that it doesn't work under either scenario (which is what I considered a regression).

You could consider this the correct behaviour, though - it is now consistent, and if it did work as before (even if it were under both builder and non-builder), there was another inconsistency: under both 1.3 and 1.4 if you lookup the same key from the parent, the variable is resolved against the parent only, causing an inconsistency when you look it up.

So...
* the behaviour is now consistent, and I think that's worthwhile retaining for a 1.4 release. The changes should be noted in the release notes - ie, you can no longer lookup within a subset. * it *may* be worth filing an future enhancement to restore this behaviour, in such a way that it applies to both builder and non- builder, and so that if looked up from the parent it still resolves the same (by remembering which subset the interpolation belongs to - perhaps by automatically adding an optional prefix to any expressions inside subsets such that the interpolator first looks inside the subset, then into the root if not found)

I hope that makes sense - it's rather difficult to explain, but hopefully the attached sample does a better job :)

- Brett

On 11/02/2007, at 3:13 AM, Oliver Heger wrote:

Brett Porter wrote:
Hi,

I tested out 1.4 on some code I have using 1.3, which has some
expressions that resolve within the same configuration, but which is
located at a different prefix (via config-at). This broke under 1.4, as
it now assumes all interpolations need to happen in the parent.

The feature is definitely useful - but should it first look inside the subset, and then go to the parent if not found, rather than skipping
the subset altogether?

Cheers,
Brett


Brett,

can you provide a short example code fragment (or even better a unit
test) that demonstrates this behavior? I will have a look.

Thank you.
Oliver

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to