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]