Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #18532
| From | Steven Simpson <ss@domain.invalid> |
|---|---|
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: Wormholes |
| Date | 2012-09-04 14:18 +0100 |
| Organization | A noiseless patient Spider |
| Message-ID | <9mbhh9-mce.ln1@s.simpson148.btinternet.com> (permalink) |
| References | <0ska4895k2mp2j5fb5p4qnue7lsbdpoeoo@4ax.com> |
On 04/09/12 02:12, Roedy Green wrote:
> Somehow I must pass information down the long chain from x to y. This
> means changing the signatures of all the intermediate methods, and
> adjusting code to the new way. This can cause ripples incommensurate
> with the triviality of the change.
Assuming that you can't improve your structure or refactor, a
ThreadLocal might be appropriate as your wormhole.
I've had to do this lately. The intermediate steps were recursive calls
through a hierarchy. y was a custom implementation of a node nested in
that hierarchy. x started off the recursive call.
If I was only using the hierarchy once, for one call by x, I would have
simply embedded the context in y. But the hierarchy was to be re-used,
and y needed a different context for each call by x. Also, calls by x
could be concurrent.
However, I could guarantee that any single call by x would invoke y by
the same thread. That allowed the context to be passed by a
ThreadLocal, set by x just before the call.
I suppose you could do something similar without threads, e.g.:
class Context {
Map<ContextLocal<?>, Object> items = new IdentityHashMap<>();
}
class ContextLocal<T> {
void set(Context ctxt, T val) {
ctxt.put(this, val);
}
T get(Content ctxt) {
return (T) ctxt.get(this);
}
}
Then you'd refactor once to pass Context through the chain. x creates a
static ContextLocal<MyContext> myContext, and one Context ctxt for each
call, and sets up myContext.set(ctxt, value) before the call. y calls
myContext.get(ctxt) to get the value.
--
ss at comp dot lancs dot ac dot uk
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Wormholes Roedy Green <see_website@mindprod.com.invalid> - 2012-09-03 18:12 -0700
Re: Wormholes eric@invalid.com (EricF) - 2012-09-04 02:06 +0000
Re: Wormholes Roedy Green <see_website@mindprod.com.invalid> - 2012-09-04 10:08 -0700
Re: Wormholes Wanja Gayk <brixomatic@yahoo.com> - 2012-09-09 13:55 +0200
Re: Wormholes Arne Vajhøj <arne@vajhoej.dk> - 2012-09-03 22:34 -0400
Re: Wormholes Stuart <DerTopper@web.de> - 2012-09-04 12:15 +0200
Re: Wormholes markspace <-@.> - 2012-09-03 21:00 -0700
Re: Wormholes Robert Klemme <shortcutter@googlemail.com> - 2012-09-04 07:08 +0200
Re: Wormholes Zermelo <zermelo@teletu.it.nospam.invalid> - 2012-09-04 08:47 +0200
Re: Wormholes Lew <noone@lewscanon.com> - 2012-09-04 03:10 -0700
Re: Wormholes Zermelo <zermelo@teletu.it.nospam.invalid> - 2012-09-04 16:09 +0200
Re: Wormholes Gene Wirchenko <genew@ocis.net> - 2012-09-04 08:34 -0700
Re: Wormholes Zermelo <zermelo@teletu.it.nospam.invalid> - 2012-09-04 17:46 +0200
Re: Wormholes Daniel Pitts <newsgroup.nospam@virtualinfinity.net> - 2012-09-04 09:31 -0700
Re: Wormholes Lew <lewbloch@gmail.com> - 2012-09-04 11:14 -0700
Re: Wormholes Arne Vajhøj <arne@vajhoej.dk> - 2012-09-04 19:59 -0400
Re: Wormholes Roedy Green <see_website@mindprod.com.invalid> - 2012-09-04 13:20 -0700
Re: Wormholes Arne Vajhøj <arne@vajhoej.dk> - 2012-09-04 20:00 -0400
Re: Wormholes Zermelo <zermelo@teletu.it.nospam.invalid> - 2012-09-05 09:01 +0200
Re: Wormholes Zermelo <zermelo@teletu.it.nospam.invalid> - 2012-09-05 09:02 +0200
Re: Wormholes Zermelo <zermelo@teletu.it.nospam.invalid> - 2012-09-05 09:02 +0200
Re: Wormholes Zermelo <zermelo@teletu.it.nospam.invalid> - 2012-09-05 09:03 +0200
Re: Wormholes markspace <-@.> - 2012-09-05 17:34 -0700
Re: Wormholes Steven Simpson <ss@domain.invalid> - 2012-09-04 14:18 +0100
Re: Wormholes Robert Klemme <shortcutter@googlemail.com> - 2012-09-05 21:51 +0200
Re: Wormholes Steven Simpson <ss@domain.invalid> - 2012-09-05 23:26 +0100
Re: Wormholes Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2012-09-06 09:32 +0000
Re: Wormholes Steven Simpson <ss@domain.invalid> - 2012-09-06 11:47 +0100
Re: Wormholes Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2012-09-06 15:10 +0000
Re: Wormholes Steven Simpson <ss@domain.invalid> - 2012-09-06 20:12 +0100
Re: Wormholes Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2012-09-06 21:08 +0000
Re: Wormholes Nigel Wade <nmw@ion.le.ac.uk> - 2012-09-04 17:26 +0100
Re: Wormholes Daniel Pitts <newsgroup.nospam@virtualinfinity.net> - 2012-09-04 09:28 -0700
Re: Wormholes David Lamb <dalamb@cs.queensu.ca> - 2012-09-04 16:54 -0400
csiph-web