Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #18571

Re: Wormholes

From Steven Simpson <ss@domain.invalid>
Newsgroups comp.lang.java.programmer
Subject Re: Wormholes
Date 2012-09-06 11:47 +0100
Organization A noiseless patient Spider
Message-ID <libmh9-9h7.ln1@s.simpson148.btinternet.com> (permalink)
References <0ska4895k2mp2j5fb5p4qnue7lsbdpoeoo@4ax.com> <9mbhh9-mce.ln1@s.simpson148.btinternet.com> <aapoq4F75iU1@mid.individual.net> <u40lh9-726.ln1@s.simpson148.btinternet.com> <slrnk4grd8.u9l.avl@gamma.logic.tuwien.ac.at>

Show all headers | View raw


On 06/09/12 10:32, Andreas Leitgeb wrote:
> Steven Simpson <ss@domain.invalid> wrote:
>> So, we throw in a ThreadLocal:
>>
>>     static ThreadLocal<Context> context = ...;
>>
>>     class MyAppSpecBox extends Box {
>>       InputStream getFieldContent() {
>>         Context ctxt = context.get();
>>         ...
>>       }
>>     }
>>
>> We set it before invoking the hierarchy:
>>
>>     Box root = cache.fetch(key);
>>     Context ctxt = new Context(...);
>>     context.set(ctxt);
>>     InputStream in = root.getContent();
> What strikes me odd in this scenario is the coincidence of
> two things:
>     There's *only one* specific Box-subclass, that requires
>        specific extra information
>     The code that kicks off processing of the object tree does
>        know about this specific need and does know how to
>        cater to it specifically (and the specific piece of
>        information is even available at that place).

The odd part is that the custom box is lost in the structure before a 
context can be supplied to it, which is the result of caching the 
structure, and only knowing the context just when recovering the 
structure from the cache.  That means you either find the custom box to 
inform it of the context, or you leave the context somewhere the box 
will look.

> Then either you end up with "invoking" code, that sets up
> a number of different ThreadLocal<...>s for those specific
> Boxes (that may or may not actually show up in the tree),
> or you still set up only one such ThreadLocal<Context>,
> and a couple of specific Boxes use it.
>
> in the former case it seems like the Box abstraction
> completely missed the point.

I don't get what you mean, but the point of the Box abstraction is just 
to handle the aspects common to all boxes: they have some 
box-type-specific fields, followed by zero or more nested boxes. It's 
not aware of the application-specific Context.

> In the latter case, it seems as if it might then turn out to
> be reasonable to modify the Box baseclass to pass along the
> Context directly (even if some Boxes still don't need it):
>
> class Box {
>         InputStream getContent(Context ctx) {

This is out of the question - the library to which Box belongs knows 
nothing about the application that defines Context.


Cheers!

-- 
ss at comp dot lancs dot ac dot uk

Back to comp.lang.java.programmer | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


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