Getting started to contribute to MyFaces
Hi, I am a newbie to the MyFaces project and I need to know from which point I should start contributing to the project. Can anyone tell me what I should do first? thanks. -- Regards A.S.Thiwanka Somasiri Skype : executionerwild MSN : thi...@ymail.com thi...@ymail.com
Re: Getting started to contribute to MyFaces
Hi, There are several ways to contribute: - On the mailinglists, participating in discussions and answering questions. - By contributing bugfixes for issues in the Jira ( https://issues.apache.org/jira/browse/MYFACES), but this might be difficult, since most bugs have specification implications or other subtle consequences. Fixing one bug might cause other bugs. O.t.o.h. it's a good way to get to know the codebase. - By contributing new features, for example in CODI. - By contributing documentation enhancements. It all depends on where your interests are. I.e. do you like working on the core or are you more into the extensions? Regards, Jan-Kees 2011/2/1 Thiwanka Somasiri asthiwa...@gmail.com Hi, I am a newbie to the MyFaces project and I need to know from which point I should start contributing to the project. Can anyone tell me what I should do first? thanks. -- Regards A.S.Thiwanka Somasiri Skype : executionerwild MSN : thi...@ymail.com thi...@ymail.com
Re: best way to contribute?
Hi Jondean, best would be a JIRA ticket (+ patch). The discussion of the issue (and the patch) should be done here, on the DEV list. -Matthias On Sun, Jan 4, 2009 at 12:16 AM, Jondean Haley jondeanha...@gmail.com wrote: Hi, I just joined this d-list. What is the preferred way to raise bugs discovered in reading the code? Do you wish to have a JIRA ticket opened or a note sent to this d-list? Issue in 1.2.5: LifeCycleFactoryImpl is not thread-safe. _lifecycles Map must be locked for all read and write accesses and a race condition exists due to failure to lock in getLifecycleIds and purgeLifecycle. Similarly, 1.2.5 FactoryFinder is not thread-safe - the binary predicate on the 2 instance variables should be documented as below, and requires lock protection which the synch on either variable alone does not provide. /* * //JAH: _registeredFactoryNames and _factories are the only non-final instance variables and share a binary predicate: * The former is a map (classloader object, (string factoryname, List of strings of factory class names)) * The latter is a map (classloader object, (string factoryname, List of instances of the factory classes)) * The predicate is For each string factory class name in _registeredFactoryNames, there exists, at the same index in its list as the name, an instance of the * class in _factories. This binary predicate is in addition to the standard requirement to synch all read/writes to the non-threadsafe HashMaps. * Every predicate requires a unique lock for thread safety. Since these 2 instance variables are the ONLY mutable state of the object, all reads and writes can * be synch'd via the object monitor - use synchronized methods on all methods reading or writing from either variable, thereby making the object monitor the lock * for protection of all 3 predicates. */ A simple solution is to synchronize all 3 public methods: getFactory, setFactory and releaseFactories, then document the binary predicate over the instance variable and ensure the code is correctly honoring the predicate within the synch'd methods. Thanks in advance, Jondean. -- Matthias Wessendorf blog: http://matthiaswessendorf.wordpress.com/ sessions: http://www.slideshare.net/mwessendorf twitter: http://twitter.com/mwessendorf
best way to contribute?
Hi, I just joined this d-list. What is the preferred way to raise bugs discovered in reading the code? Do you wish to have a JIRA ticket opened or a note sent to this d-list? Issue in 1.2.5: LifeCycleFactoryImpl is not thread-safe. _lifecycles Map must be locked for all read and write accesses and a race condition exists due to failure to lock in getLifecycleIds and purgeLifecycle. Similarly, 1.2.5 FactoryFinder is not thread-safe - the binary predicate on the 2 instance variables should be documented as below, and requires lock protection which the synch on either variable alone does not provide. /* * //JAH: _registeredFactoryNames and _factories are the only non-final instance variables and share a binary predicate: * The former is a map (classloader object, (string factoryname, List of strings of factory class names)) * The latter is a map (classloader object, (string factoryname, List of instances of the factory classes)) * The predicate is For each string factory class name in _registeredFactoryNames, there exists, at the same index in its list as the name, an instance of the * class in _factories. This binary predicate is in addition to the standard requirement to synch all read/writes to the non-threadsafe HashMaps. * Every predicate requires a unique lock for thread safety. Since these 2 instance variables are the ONLY mutable state of the object, all reads and writes can * be synch'd via the object monitor - use synchronized methods on all methods reading or writing from either variable, thereby making the object monitor the lock * for protection of all 3 predicates. */ A simple solution is to synchronize all 3 public methods: getFactory, setFactory and releaseFactories, then document the binary predicate over the instance variable and ensure the code is correctly honoring the predicate within the synch'd methods. Thanks in advance, Jondean.
Contribute
Hello everyone, Im (very) new to the list, Just wanted to ask, How can I contribute to the myfaces project.. have looked around but havent found the right link.. thanks Santiago Gil Estudiante de Maestría Ingeniería de Sistemas y Computación Universidad de Los Andes Teléfonos: (+57 1) 2745263 (Bogotá) (+57) 310 800 1393 (Móvil) E-mails: [EMAIL PROTECTED] (MSN) mailto:[EMAIL PROTECTED] [EMAIL PROTECTED] -- Get a free email address with REAL anti-spam protection. http://www.bluebottle.com/tag/1
Re: Contribute
Hello Santiago I'm from Colombia too!. Is good to see people from my country work in this. I'm doing a work as part of Google Summer of Code with myfaces, but that is another history. You can start seeing the wiki page http://wiki.apache.org/myfaces Specially this pages: http://wiki.apache.org/myfaces/Building_With_Maven http://wiki.apache.org/myfaces/MyFaces_Developer_Notes http://wiki.apache.org/myfaces/Contributing_Patches http://wiki.apache.org/myfaces/How_to_Help http://wiki.apache.org/myfaces/Help_Wanted The issue tracker for myfaces is this. https://issues.apache.org/jira/secure/Dashboard.jspa You can register and take a look in myfaces projects. regards. Att: Leonardo Uribe Ingeniero de Sistemas Pontificia Universidad Javeriana Ingeniero Electronico Universidad Nacional de Colombia
Can I contribute to project ?
I have worked ( as alpha-alpha-alpha .. ) set of custom components for create AJAX-like user interfaces for Java Server Faces Applications. Main idea - in faces lifecicle, ve have view tree on server side and DOM tree in client browser ( at present, saving tree on client side don't used ). For ajax request, client send all user input of current form ( as normal submit request ). Request phases work as usual, but on render responce phase server send ONLY CHANGED parts of view ( i don't create full compare, but send only fo pre-defined parts, or submitted form ). For this I created special AjaxContainer component, wich render it's children ( or part of children ) components. List of clientId's for rendered components included in response for client-side part of framework. For other cases ( for example, such will work in-page Jabber client ) component can render updated xml in custom Listener, and set responseComplete to FacesContext. On client side, JavaScript get list of rendered parts and update page DOM Tree. In result, we have two-way communications between client browser and JSF view, and have sync tree's on client and server side. It's work like common desctop applications. Such arch don't need create special RenderKit or change most of components - for example, at present, I have only custom tag's-renderers for UICommand ( link Button ) components, and have worked all standart and most of custom ( tree2 and any other Myfaces components ) as AJAX ... On other hand, custom renderers based on usual Html renderers, and work also in non-JavaScript environment as simple html... For client side script use XMLHttpRequest object, and, if it don't exist, special JavaScriptHttpRequest. It's worked same as XMLHttpRequest ( designed with same properies and methods ), but use other idea. For perform request, It appended to page script tag. Browser load script ( url maked from form action url with query string as normal GET request ), but script produced by special Filter on server from Html code of JSF Response - as pseudo-Dom tree of objects. Loaded script call handler function for update page - same as XMLHttpRequest. Not need any iframe or other incompatible technologies for non XMLHttpRequest browsers. It can work in wide range of browsers, even in 4+ IE Netscape ??? ( in theory. At present tested with Mozilla Firefox and IE 5.5+ browsers. I need help for make JavaScript compatible with others. ) At present, XMLHttpRequest work only in Mozilla. Code for MS ActiveX was disabled since I don't can get any functionality of XML part for microsoft object ! Xml parsed withowt errors. ( For xml request, i use in servlet Filter nekkohtml parser, and make valid xml, with all declarations and mime-type headers ). It make responseXML Tree, but any methods for navigate/manipulate don't worked ! Also, elements from responseXML can't be inserted to page, don't produce event handlers etc. Current view of code repository - http://svn.demi.spb.ru/repository/myfaces-ajax/ Project created in Eclipse. Sorry for possible mistakes - my native language is Russian. Alexander J. Smirnov
Re: Can I contribute to project ?
Do you have a demo of this technology up and running? Can you start a discussion with code snippets on the mailing list how you implemented that? How many changes would it take to get MyFaces to use your approach? regards, MartinOn 8/2/05, Alexandr J. Smirnov [EMAIL PROTECTED] wrote: I have worked ( as alpha-alpha-alpha .. ) set of custom components forcreate AJAX-like user interfaces for Java Server Faces Applications. Mainidea - in faces lifecicle, ve have view tree on server side and DOM tree in client browser ( at present, saving tree on client side don't used ). Forajax request, client send all user input of current form ( as normal submitrequest ). Request phases work as usual, but on render responce phase server send ONLY CHANGED parts of view ( i don't create full compare, but send onlyfo pre-defined parts, or submitted form ). For this I created specialAjaxContainer component, wich render it's children ( or part of children ) components. List of clientId's for rendered components included in responsefor client-side part of framework.For other cases ( for example, such will work in-page Jabber client)component can render updated xml in custom Listener, and set responseCompleteto FacesContext.On client side, _javascript_ get list of rendered parts and update page DOMTree.In result, we have two-way communications between client browser and JSFview, and have sync tree's on client and server side. It's work like common desctop applications. Such arch don't need create special RenderKit or change most ofcomponents - for example, at present, I have only custom tag's-renderers forUICommand ( link Button ) components, and have worked all standart and most of custom ( tree2 and any other Myfaces components ) as AJAX ... Onother hand, custom renderersbased on usual Html renderers, and work alsoin non-_javascript_ environment as simple html...For client side script use XMLHttpRequest object, and, if it don't exist, special _javascript_HttpRequest. It's worked same as XMLHttpRequest (designed with same properies and methods ), but use other idea. For performrequest, It appended to page script tag. Browser load script ( url maked from form action url with query string as normal GET request ), but scriptproduced by special Filter on server from Html code of JSF Response - aspseudo-Dom tree of objects. Loaded script call handler function for update page - same as XMLHttpRequest. Not need any iframe or other incompatibletechnologies for non XMLHttpRequest browsers. It can work in wide range of browsers, even in 4+ IE Netscape???( in theory. At present tested with Mozilla Firefox and IE 5.5+ browsers. Ineed help for make _javascript_ compatible with others. )At present, XMLHttpRequest work only in Mozilla. Code for MS ActiveX wasdisabled since I don't can get any functionality of XML part for microsoft object ! Xml parsed withowt errors. ( For xml request, i use in servletFilter nekkohtml parser, and make valid xml, with all declarations andmime-type headers ). It make responseXML Tree, but any methods for navigate/manipulate don't worked ! Also, elements from responseXML can't beinserted to page, don't produce event handlers etc.Current view of code repository - http://svn.demi.spb.ru/repository/myfaces-ajax/ Project created in Eclipse.Sorry for possible mistakes - my native language is Russian.Alexander J. Smirnov
Re: Can I contribute to project ?
this all sounds very interesing, iwe're too working on an ajaxcomponent right now (datatable) and we were also thinking in making this a global attribute for all components. maybe have a look at the custom examples in the sandbox folder. we used a special javascript library (i think from ruby on rails) called prototype.js. and it is really very neat, it does a lot of the work for you and seems to have no compatibility problems. also we already defind an ajaxPhaseListener, which looks if an ajaxcomponent is to be rendered and then jumps out of the life-cycle. have a look, im sure it is of interest to you best wishes joerg I have worked ( as alpha-alpha-alpha .. ) set of custom components for create AJAX-like user interfaces for Java Server Faces Applications. Main idea - in faces lifecicle, ve have view tree on server side and DOM tree in client browser ( at present, saving tree on client side don't used ). For ajax request, client send all user input of current form ( as normal submit request ). Request phases work as usual, but on render responce phase server send ONLY CHANGED parts of view ( i don't create full compare, but send only fo pre-defined parts, or submitted form ). For this I created special AjaxContainer component, wich render it's children ( or part of children ) components. List of clientId's for rendered components included in response for client-side part of framework. For other cases ( for example, such will work in-page Jabber client ) component can render updated xml in custom Listener, and set responseComplete to FacesContext. On client side, JavaScript get list of rendered parts and update page DOM Tree. In result, we have two-way communications between client browser and JSF view, and have sync tree's on client and server side. It's work like common desctop applications. Such arch don't need create special RenderKit or change most of components - for example, at present, I have only custom tag's-renderers for UICommand ( link Button ) components, and have worked all standart and most of custom ( tree2 and any other Myfaces components ) as AJAX ... On other hand, custom renderers based on usual Html renderers, and work also in non-JavaScript environment as simple html... For client side script use XMLHttpRequest object, and, if it don't exist, special JavaScriptHttpRequest. It's worked same as XMLHttpRequest ( designed with same properies and methods ), but use other idea. For perform request, It appended to page script tag. Browser load script ( url maked from form action url with query string as normal GET request ), but script produced by special Filter on server from Html code of JSF Response - as pseudo-Dom tree of objects. Loaded script call handler function for update page - same as XMLHttpRequest. Not need any iframe or other incompatible technologies for non XMLHttpRequest browsers. It can work in wide range of browsers, even in 4+ IE Netscape ??? ( in theory. At present tested with Mozilla Firefox and IE 5.5+ browsers. I need help for make JavaScript compatible with others. ) At present, XMLHttpRequest work only in Mozilla. Code for MS ActiveX was disabled since I don't can get any functionality of XML part for microsoft object ! Xml parsed withowt errors. ( For xml request, i use in servlet Filter nekkohtml parser, and make valid xml, with all declarations and mime-type headers ). It make responseXML Tree, but any methods for navigate/manipulate don't worked ! Also, elements from responseXML can't be inserted to page, don't produce event handlers etc. Current view of code repository - http://svn.demi.spb.ru/repository/myfaces-ajax/ Project created in Eclipse. Sorry for possible mistakes - my native language is Russian. Alexander J. Smirnov
RE: Can I contribute to project ?
Do you have a demo of this technology up and running? Yes. I need any time to allow access from internet to my test server. Can you start a discussion with code snippets on the mailing list how you implemented that? Yes , of cource. How many changes would it take to get MyFaces to use your approach? No changes. Work with My Faces JSF RI without modifications. regards, Martin
RE: Can I contribute to project ?
-Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Sent: Tuesday, August 02, 2005 3:11 PM To: MyFaces Development Subject: Re: Can I contribute to project ? this all sounds very interesing, iwe're too working on an ajaxcomponent right now (datatable) and we were also thinking in making this a global attribute for all components. Main difference with sundbox : you create custom components with own lifecycle. My system support FULL JSF process, can use ALL standart and most of custom components. maybe have a look at the custom examples in the sandbox folder. we used a special javascript library (i think from ruby on rails) called prototype.js. and it is really very neat, it It also use MS ActiveX XmlHttpRequest. As I was write, it have lot of problem. Most important for me - trouble with manupulate with parts of responce. It not such important for one component, but produce troubles in my case, where I can get in response set of page parts to update. Second - MSXML don't can parse JSF html ! Even it transformed to valid XML. JSF use ':' as separator for ID's of components. MS XML parser don't allow such symbols in XML #IMPLIED attributes ! Third - user can turn off support of ActiveX in browser for security reason. the nearest example for me - my own company. ActiveX turn off by corporate policy. Forth - Opera, very limited support for XMLHttp, Pocket ... does a lot of the work for you and seems to have no compatibility problems. also we already defined an ajaxPhaseListener, which looks if an ajaxcomponent is to be rendered and then jumps out of the life-cycle. Yes. It good idea for single component, but not implemented for support of normal JSF life. Main target for me - lightweight internet client for corporate ERP system, we want get access for clients to control of orders, prices etc., and for sales managers with PocketPC communicators. ( Don't tested, but by specifications my library can work with Pocket PC 2003 ...) In this case, create special component for any updatable part of page very trouble ... have a look, im sure it is of interest to you best wishes joerg
Contribute a columns component to create crosstables
Hi, I have developed a jsf component which allows to have n-columns in a datatable to make cross tables. That component is currently implemented using the myfaces components as a base which is working fine. The component is working like this: x:dataTable value=#{data.rows} var=row !-- just a column -- h:column f:facet name=header h:outputText value=fixed column / /f:facet h:outputText value=#{row.attributeName} / /h:column !-- new columns component renders a column for each element in data.columns -- x:columns value=#{data.columns} var=column f:facet name=header !-- row is not available! -- h:outputText value=#{column.label} / /f:facet !-- row is also available -- h:outputText value=#{data.columnValue} / f:facet name=footer !-- row is not available! -- h:outputText value=#{column.footer} / /f:facet /x:columns /x:dataTable The x:columns component is based on UIData. The parent datatable must have a fixed count of columns so it is not possible to use x:columns value=#{row.columns} var=column. To get the value for the column in the row a managed bean must be used which calls DataModel.getRowData() from the rows datamodel and the columns datamodel to determine the current row and column. I would like to contribute this component to myfaces. Now to the tricky part which is the reason why I've not contributed the component yet. Currently the parent datatable component (which is doing the most work) contains a lot of code copied from the UIData class which handles the processing of the columns through private methods. The best place to integrate the new columns component would be the UIData class but that would generate dependencies to non standard components. I've also noticed that die myfaces HtmlDataTable uses a HtmlDataTableHack class which copies the code from UIData to make extended components work. I do not think that copying code is the best solution since the last change in UIData was not applied to HtmlDataTableHack. To prevent inconsistent code I suggest to introduce an abstract UIDataBase class in share which contains the implementation of UIData and make the private methods protected. UIData extends the UIDataBase with an empty implementation. Some of the renderers do that already. I don't think it violates the spec. Mathias