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]

Reply via email to