More introspection inside InternalRegistryImpl could be useful for handling
some awkward edge cases, such as preventing recursion when a decorator
service is accidentally employed to decorate itself.


On Sun, Dec 2, 2012 at 7:53 AM, Alessio Gambi <[email protected]>wrote:

> Hi,
>
> no rush.
>
> At the moment, I am going deeper inside the IoC modules to see where the
> data I would like to extract are.
>
> My solution at the moment is to patch RegistryImpl to persist some
> interesting data about services, modules, configurations and their
> inter-relation.
> It's a brute force approach that does not taste good, but at the moment is
> the simplest to implement (or at least it seams to be so).
>
> Moreover, the tapestry Lazy approach to service instantiation, which is
> perfect for performant production app and short startup application time,
> for my case study is tricky, as I need to forcefully instantiate all the
> services
> in order to get their "actual" configurations.
>
> Right now I miss only two pieces in my puzzle: How can I get the actual
> configured objects for a given service (identified by serviceID) ?
>         Registry has getOrder/getUnord/getMapp Configuration methods but I
> totally miss the way I can invoke them in a clean way.
>         I prefer to avoid String matching on ServiceDef3 objects to link
> Map-Mapped, List-Ordered, Collection-Unordered.
>         It is also not clear to me how can I provide the second parameter
> to the get*Configuration method (the "GenericType").
>
>
> As a case study, I am working on "Symbols". I am trying to answer
> questions like the following ones:
>
> - What is the complete list of symbols available in the application ?
>
> - What values do they have ? What type is contributed  ?
>
> - Where are they contributed ?
>
> - Where are they overwritten ?
>
> - Where a given symbol is used/injected ?
>
> - What SymbolProviders are contributed ? In what order (using ordering
> constraints) ? Is there a conflict somewhere (like two services contributed
> with before:* ?)
>
> - ...
>
> -- Alessio
>
>
> On Nov 30, 2012, at 12:02 AM, Howard Lewis Ship wrote:
>
> > I hope to respond to your post soon; quite busy with multiple clients
> right
> > now.
> >
> > I know in the past I have made specific decisions to simplify manual
> > coding, even though it made IDE support more complex.
> >
> > In addition, I think some features I've introduced made certain edge
> cases
> > of Tapestry more "concise", but not necessarily better (*) and probably
> > harder to support in an IDE.
> >
> > (*) What I've found is that some of the very concise features made it
> much
> > more complicated to explain what Tapestry is doing at any point in time.
> > Everything becomes a checklist.
> >
> >
> > On Thu, Nov 22, 2012 at 7:37 AM, Alessio Gambi <[email protected]>
> wrote:
> >
> >> Gentlemen,
> >>
> >> my name is Alessio Gambi, I have a PhD in Informatics from the
> University
> >> of Lugano (Switzerland), a M.Sc. from the Politecnico of Milan (Italy)
> and
> >> another M.Sc. form the University of Illinois at Chicago (USA).
> >>
> >> As you guessed, I am also a huge fan of T5; therefore, I would like to
> >> contribute to the community.
> >>
> >> Differently from many of you, I do not want (at least for the moment :)
> )
> >> became an active developer *of* the framework itself.
> >> And I plan to contribute by developing, or better, formalizing high
> level
> >> knowledge about development of T5 applications, and also by developing
> tools
> >> that support the programmers and the other actors involved in this (fun)
> >> process of making T5-based applications.
> >>
> >> I go straight to the point so I do not take much of your time.
> >>
> >> Goals
> >>
> >> Goal n1
> >> Define a methodology that is tailored on and specific to Tapestry5. The
> >> framework offers a great deal of functionalities and features that must
> be
> >> used at the right time, for precise purposes, and in the intended way.
> >> In other words, develop according to the T5 way of doing things, while
> >> avoiding as much as possible "The Hard Way"®
> >>
> >> Goal n2
> >> Design and implement as set of tools that support such a specific
> >> development process. Here, I am talking about means to improve the
> quality
> >> of the design, not to ease the implementation by automate activities,
> and
> >> not
> >> to reduce the time to produce code.
> >>
> >>
> >> Some motivating examples just to stimulate further discussion:
> >>
> >>        Example: You are just arrived in a company where they have plenty
> >> of T5 modules (aka Library and Application Modules) and you are asked to
> >> find or define the best datatype (hint: this is a keyword) to use in a
> >> brand new requirement.
> >>                        How do you proceed? Note: You do not have access
> >> to the code of such modules.
> >>
> >>
> >>        Example: You are given an Library Module that was developed by a
> >> colleague that left the company, the module is 1K LOC and makes a lot
> >> (hint: A LOT) of contributions, service definitions, customizations.
> >>                        Your boss asks you to explain how that module
> fits
> >> in the main application.  How do proceed ? Note: some services override
> T5
> >> default behavior, there are ClassTransformationWorkers-here and there.
> >>
> >>
> >> How can you help ?
> >>
> >> Do not blow up the dev-list with flames-like mail... contact me in
> >> private, unless you feel it is better to share your thoughts/experiences
> >> with the dev community.
> >>
> >>
> >> For Goal 1 I need stories (as sort as possible, but not shorter !) that
> >> tells me your experiences as developers of T5 applications, and as
> >> developers of the framework itself.
> >> Dev apps with T5:
> >>        - How do you usually organize your work ? Agile vs Waterfall ?
> >>        - How do you plan pages/components/services?
> >>        - Do you evolve your code? I start by putting everything in a
> >> page, then I realize there's a change for a component, then I evolve the
> >> component by adding some AJAX, ...
> >>        - Do you adopt some specific pattern ? I like to define a
> >> Service*Source that will create instances of * because then I can
> >> contribute to that **
> >>        - How do you approach the integration with other frameworks ?
> >>        - Common Use Case and Scenarios?
> >>        - ...
> >>
> >> Dev T5 itself:
> >>        - I am interesting to understand your
> >> motivations/assumptions/requirements about the different features of the
> >> framework that you developed somehow.
> >>        - Can you list if there are new roles that developers cover with
> >> T5 ? Tester -> Page tester, component tester, service tester, service
> >> integration tester ? Component development ? Datatype designer ?
> Validator
> >> designer ?
> >>        - ...
> >>
> >> Do not be shy, I will not just you, and I do not assume that everything
> >> MUST be in favor of Tapestry... I would like also to see also
>  weaknesses
> >> of T5 and its limitations.
> >>
> >> For Goal 2 I need requirements and helps with the code.
> >> Requirements:
> >>        - What king of activity of you process do you like to be
> supported
> >> ? Any suggestions on how you plan to do that ?
> >>
> >> Help with the code:
> >>        - The first step is to extract the info from the framework
> itself.
> >> How do you do that without patching or touching core, internals and ioc
> ?
> >>        Simple example: How can I recover the configuration of a service
> >> after everything is initialized ?
> >>
> >>        - The second step is in organize the information. Are these info
> >> about validation? Are that related to TypeCoercion ?
> BeanEditing/Displaying
> >> ?
> >>        BTW: what are the main area of knowledge that you can identify in
> >> Tapestry ? Services, Data, DataTransformation, Pages, Navigation,
> >> Components?
> >>
> >>
> >>
> >> If I can get enough things I plan to start writing down and disseminate.
> >> If you like to contribute we can setup a mini-task-force. If you like to
> >> review and comments on the various
> >> outcome that is fine anyway.
> >>
> >>
> >>
> >> Cheers
> >>
> >> -- Alessio
> >>
> >>
> >>
> >
> >
> > --
> > Howard M. Lewis Ship
> >
> > Creator of Apache Tapestry
> >
> > The source for Tapestry training, mentoring and support. Contact me to
> > learn how I can get you up and productive in Tapestry fast!
> >
> > (971) 678-5210
> > http://howardlewisship.com
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>


-- 
Howard M. Lewis Ship

Creator of Apache Tapestry

The source for Tapestry training, mentoring and support. Contact me to
learn how I can get you up and productive in Tapestry fast!

(971) 678-5210
http://howardlewisship.com

Reply via email to