Phil - to be clear, I think your underlying implementation is great - it 
provides a great building block.

However, just as with databases, when you build something higher level on top - 
the question comes up about how much you hide that retrieval mechanism. The 
GTInspector argument is an interesting one from a pure domain understanding - 
and possibly armed with the underlying piping you have provided, it is then up 
to me to layer my understanding of the higher level model on top.

I perhaps should look at glorp a bit more carefully as maybe there is 
inspiration there.


Tim

> On 12 Jun 2017, at 20:53, p...@highoctane.be wrote:
> 
> A dynamic variable could work too.
> 
> But domain objects are somewhat hard to do in my view because we are dealing 
> with an API that has tons of options and customizability in its results + 
> people can define their own types and fields.
> 
> That's why I went for a JiraBuilder thing that has a reference to a Jira 
> instance.
> That builder is allowing one to make higher level queries for the users (like 
> doing Epics, Stories, links, custom fields resolution, meta data grabbing, 
> prototype creation etc).
> 
> I didn't want to have an Epic class, a Story class, etc. Because my idea of 
> an Epic may not be your idea, so we may end up with a PluggableEpic etc and 
> it will never end.
> 
> My take is that it is better to use the vocabulary of the domain in the 
> method names but still work with dynamic structures like dictionaries and 
> some helpers.
> 
> I am still curious to see those domain objects because I understand that they 
> would ease inspection etc.
> 
> Maybe we should have a generator for these so that we can regenerate the 
> classes based on the metadata provided by Jira.
> 
> Phil
> 
> On Mon, Jun 12, 2017 at 9:28 PM, Esteban A. Maringolo <emaring...@gmail.com 
> <mailto:emaring...@gmail.com>> wrote:
> Hello Tim,
> 
> 2017-06-12 16:15 GMT-03:00 Tim Mackinnon <tim@testit.works>:
> > Hi - I’m after some ideas or maybe previous examples that might guide me in 
> > the best approach of wrapping a low level library (essentially the Jira 
> > connector that Phil demo’d at Pharo days this year).
> >
> > There are some low level commands that will fetch json arrays for you given 
> > a “lira” instance- e.g:
> >
> > board := JiraBoard fromJira: jira named: ‘Project'.
> > sprints := board sprintsFrom: jira.
> >
> > My question is related to building on top of this - and its a style 
> > question.
> >
> > I want model objects that wrap the json arrays and let me navigate things a 
> > bit more simply, and query details more naturally - however I can’t decide 
> > whether my model objects should “contain” a jira when you instantiate them 
> > - which can be re-used for subsequent queries - OR - whether I should view 
> > jira as a from of context, and keep passing it to methods when I need to 
> > retrieve more details, or child objects?
> >
> > e.g.
> > myBoard := ModelBoard fromJira: jira named: ‘Project’.
> > mySprints := myBoard sprints. “No need to pass the jira again”.
> >
> > vs.
> >
> > mySprints :- myBoard sprintsIn: jira.
> >
> >
> > I’m wondering if anything might guide me one way or the other? Is one more 
> > tasteful/elegant than the other?
> 
> 
> I'd go for the first option. It is, every JIRA object knows the "jira"
> it belongs to.
> 
> Although the second option is better for decoupling, not having to
> pass objects around to obtain properties allows you to better
> integrate with the tools (think GTInspector with specific inspector
> for cards).
> 
> I don't understand what the "jira" is exactly, if a whole JSON object
> (a Dictionary) containing everything, a connection to JIRA API, or
> just the JSON object/Dictionary branch containing the attributes
> specific of the "wraping" object (the board, in this case).
> 
> Regards!
> 
> Esteban A. Maringolo
> 
> 
> 

Reply via email to