Yep, that could be a nice motivating example. But I am still stuck on automatically extracting the object instances (or a copy of them) used as configurations for a given service.
Any other interesting case study other than "Symbols" is also welcome. On Dec 3, 2012, at 8:13 PM, Howard Lewis Ship wrote: > 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 --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
