On Thu, Apr 10, 2008 at 1:59 PM, James Carman
<[EMAIL PROTECTED]> wrote:
> On Thu, Apr 10, 2008 at 1:46 PM, James Carman
>  <[EMAIL PROTECTED]> wrote:
>  >  If people feel that [expression] isn't the right name for what I've
>  >  come up with, I don't really care (as I said, what's in a name).  But,
>  >  the idea of an expression just fit in my mind.  I'll try to come up
>  >  with something else if you're really that opposed to me using the name
>  >  "expression".  The term "macro" came to mind when I was thinking about
>  >  a name for this thing, since the builders are essentially recording
>  >  something from the user (on a proxy) that will later be played back
>  >  (on some other object).
>  >
>
>  Other words that convey a similar idea:
>
>  variable - the "expression" is really a variable (a value that can be
>  modified or retrieved).
>  value - the "expression" represents a settable/gettable "value"
>  shortcut - the "expression" is a shortcut for calling a (potentially)
>  chained series of method calls
>  flatten - the "expression" flattens the chained series of method calls
>

To spell out the "macro" API, it would be:

public interface Macro<R,V>
{
    public V getValue(R root);
    public void setValue(R root, V value);
}

public interface Recorder<R>
{
    public R template();
    public <V> Macro<R,V> record(V value);
}

A usage would look like:

Recorder<Person> recorder = ...;
Macro<Person,String> addressCityMacro =
recorder.record(recorder.template().getAddress().getCity());
Person p = ...;
String city = addressCityMacro.getValue(p);

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

Reply via email to