<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-34458181</id><updated>2012-03-11T21:40:34.071+01:00</updated><category term='woko'/><category term='appengine'/><category term='jfacets'/><title type='text'>Bloko</title><subtitle type='html'>Bloko: The Woko / JFacets weblog</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://jfacets.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34458181/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://jfacets.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Remi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>15</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-34458181.post-7472171730359712193</id><published>2011-10-08T15:23:00.010+02:00</published><updated>2012-03-11T21:40:34.084+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='woko'/><category scheme='http://www.blogger.com/atom/ns#' term='appengine'/><title type='text'>POJOs in the Kloud !</title><content type='html'>As far as I can remember, deployment of Java webapps on the internet has always been painful. Since the early days of the servlet spec, it's been almost impossible to find cheap and reliable hosting for Servlet/JSP applications.&lt;br /&gt;&lt;br /&gt;Good news : those days might be over soon !&lt;br /&gt;&lt;br /&gt;With the rise of the Cloud Computing movement, several platforms now exist where you can deploy Java webapps, with various backend services, and pricing models. One of them caught my eye a few months ago, the one from Google, called &lt;a href="http://appengine.google.com/"&gt;App Engine&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;It's basically a JEE web container (to run your servlets) plus some back-end services for various stuff, from persistence to user management etc.&lt;br /&gt;&lt;br /&gt;Rings a bell ?&lt;br /&gt;&lt;br /&gt;Looking at the spec, and taking it out for a quick spin, it became immediately apparent that we could actually deploy Woko-based webapps there.&lt;br /&gt;&lt;br /&gt;As GAE supports JPA, all we needed was to implement a dedicated ObjectStore backed by Google's JPA provider. And a Stripes interceptor that manages the lifecycle of the EntityManager, a replacement for the OSIV mechanism we already have for Hibernate.&lt;br /&gt;&lt;br /&gt;Those were implemented in an hour or so : JPA is very similar to Hibernate for the client API, so writing the base components was really easy.&lt;br /&gt;&lt;br /&gt;Then, a bit of fight with the maven pom and &lt;a href="http://code.google.com/p/maven-gae-plugin/"&gt;maven-gae-plugin&lt;/a&gt;. I had to configure a few things as usual, and eventually I had my Woko/GAE project ready. I could run it on my dev server :&lt;br /&gt;&lt;br /&gt;&amp;gt; mvn gae:run&lt;br /&gt;&lt;br /&gt;And even deploy in GAE :&lt;br /&gt;&lt;br /&gt;&amp;gt; mvn gae:deploy&lt;br /&gt;&lt;br /&gt;Nothing more to do : the webapp is pushed to Google's infrastructure, and ready to serve requests :&lt;a href="http://test.wokotestbabz.appspot.com/home"&gt;&lt;br /&gt;http://test.wokotestbabz.appspot.com/home&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I could use the developer role (wdevel/wdevel) in order to create instances of a test POJO and browse them. Stripes, JPA persistence, everything seems to work just fine... Yikes !&lt;br /&gt;&lt;br /&gt;Of course, there is room for improvement (full text search, Google user accounts, etc.) but overall it's very encouraging. Deploying Woko apps to GAE is definitly easy, and provides a really cool solution for hosting your apps on the internet at a very low cost (free for small apps), without sysadmin hassles, in an infrastructre that is supposed to scale.&lt;br /&gt;&lt;br /&gt;Our next slogan will probably look like "Woko : POJOs in the Kloud !"&lt;br /&gt;&lt;br /&gt;Everything is detailed here:&lt;br /&gt;https://github.com/vankeisb/woko2/wiki/GoogleAppEngine&lt;br /&gt;&lt;br /&gt;Enjoy,&lt;br /&gt;&lt;br /&gt;Remi&lt;br /&gt;&lt;br /&gt;PS : for those who have not followed recent developments, we have moved to &lt;a href="https://github.com/vankeisb/woko2"&gt;GitHub&lt;/a&gt; for the next release (Woko 2).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34458181-7472171730359712193?l=jfacets.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jfacets.blogspot.com/feeds/7472171730359712193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34458181&amp;postID=7472171730359712193' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34458181/posts/default/7472171730359712193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34458181/posts/default/7472171730359712193'/><link rel='alternate' type='text/html' href='http://jfacets.blogspot.com/2011/10/pojos-in-kloud.html' title='POJOs in the Kloud !'/><author><name>Remi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34458181.post-7518973291949151053</id><published>2009-04-12T19:50:00.004+02:00</published><updated>2009-04-12T20:00:13.357+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jfacets'/><title type='text'>JFacets 3.0 is out</title><content type='html'>JFacets 3.0 has just been released. Changes include :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Complete rework of the project's structure and dependencies : No third party dependencies are required for Java/XML and Annotated facets. This is great as it allows using JFacets easily without Spring...&lt;/li&gt;&lt;li&gt;Removal of IExecutable interface and executable facets : the use case was too detailed, and can be implemented very easily if you need it, so this feature has been removed from the framework.&lt;/li&gt;&lt;li&gt;Removal of JFacets.get(...) factory methods. They were tightly coupled with Spring, and as we don't depend on Spring any more, the factory methods are not necessary, and the lifecycle of the JFacets instances is now to be handled by the user.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;New JFacetsBuilder class for creating instances of JFacets easily, useful e.g. when you don't use Spring or any other D.I. framework.&lt;/li&gt;&lt;/ul&gt;A tag has been created for this 3.0 version in the SVN repository, and the maven bundles have been submitted for upload in the central maven repository. For now the easiest way to start using JFacets 3.0 is just to checkout the code from the tag, and compile/install it in your maven repository (mvn clean install).&lt;br /&gt;&lt;br /&gt;Enjoy !&lt;br /&gt;&lt;br /&gt;Rémi&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34458181-7518973291949151053?l=jfacets.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jfacets.blogspot.com/feeds/7518973291949151053/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34458181&amp;postID=7518973291949151053' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34458181/posts/default/7518973291949151053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34458181/posts/default/7518973291949151053'/><link rel='alternate' type='text/html' href='http://jfacets.blogspot.com/2009/04/jfacets-30-is-out.html' title='JFacets 3.0 is out'/><author><name>Remi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34458181.post-3516075407797504901</id><published>2007-10-28T17:24:00.000+01:00</published><updated>2007-10-28T19:23:12.620+01:00</updated><title type='text'>Rich Internet Applications, Woko Style !</title><content type='html'>For a while, the idea of exporting Woko managed POJOs into processable formats has been floating around. This way, the data could be accessed not only by human beings, but also by "third party" code easily...&lt;br /&gt;&lt;br /&gt;With the growing integration of AJAX and RIA technologies into web applications, the idea has transformed into a requirement.  Dynamicity inside the browser has a price : in addition to HTML, you need your webapp to serve some processable infos for your AJAX or RIA client-side technology. Also, beyond export of objects, client applications might need to access more advanced features, like CRUD, search, or custom biz logic.&lt;br /&gt;&lt;br /&gt;But wait...&lt;br /&gt;&lt;br /&gt;Woko already serves your POJOs as HTML... why wouldn't it serve them as XML, or JSON ?&lt;br /&gt;Woko already allows a human being to access the application's business logic... why wouldn't it allow another program to do it as well ?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;XML/JSON POJO Exports&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is now an out-of-the-box feature ! You can now easily export your POJOs to XML or JSON, via the&lt;span style="font-family: courier new;"&gt; &lt;/span&gt;&lt;span style="font-family: courier new;font-size:85%;" &gt;(xml, profileId, targetType)&lt;/span&gt; facet.&lt;br /&gt;It's a command facet, so it can be invoked remotely just be sending an HTTP request to the appropriate URL, like :&lt;br /&gt;&lt;br /&gt;http://.../myapp/command/Book/123/xml&lt;br /&gt;&lt;br /&gt;Default export is available for all Objects and ROLE_WOKO_DEVELOPER, but of course, you can reuse and tweak the output for your own profiles/objects... via facet override, as usual !&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;Fat Client API&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In addition to XML/JSON export, Woko also allows remote applications to access "functionalities" in the application. It proposes a RPC-style API for invocation of all the features in Woko : CRUD, search, and triggering of Command Facets. &lt;br /&gt;&lt;br /&gt;In short, a remote client can virtually do everything a human being can do with the application (depending of course of the facet assignation) !&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;The Killer AJAX/RIA Backend&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is pretty fat news, as you can guess. The "Fat Client API" enables fast and easy implementation of hybrid webapps, where regular HTML is mixed with AJAX widgets, Flash components, Applets etc.&lt;br /&gt;&lt;br /&gt;Last but not least, security isn't a problem either. As all the Fat Client API uses facets that you define, the whole system is consistent. Data and services are tailored to the caller's profile, so you hardly publish a service to the wrong clients without noticing it ! Moreover, the "user profiling" principle applies here too : you probably don't wanna provide the same level of features to everybody...&lt;br /&gt;&lt;br /&gt;This feature embraces Woko's Web 2.0 and simplicity principles, and makes it a first class choice for people building AJAX/RIA webapps. Forget about writing all those handlers for your XmlHttpRequest objects, they're already there ! You already have all the plumbing for exporting your data, and deploy new RPC services.&lt;br /&gt;&lt;br /&gt;Put your POJOs on the Web !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34458181-3516075407797504901?l=jfacets.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://woko.wiki.sourceforge.net/AjaxBackend' title='Rich Internet Applications, Woko Style !'/><link rel='replies' type='application/atom+xml' href='http://jfacets.blogspot.com/feeds/3516075407797504901/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34458181&amp;postID=3516075407797504901' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34458181/posts/default/3516075407797504901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34458181/posts/default/3516075407797504901'/><link rel='alternate' type='text/html' href='http://jfacets.blogspot.com/2007/10/rich-internet-applications-woko-style.html' title='Rich Internet Applications, Woko Style !'/><author><name>Remi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34458181.post-3145007225593194544</id><published>2007-05-21T12:20:00.000+02:00</published><updated>2007-05-21T12:28:45.775+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jfacets'/><title type='text'>JFacets 2.1 with Instance Facets !</title><content type='html'>JFacets 2.1 has just been released, with support for Instance Facets !&lt;br /&gt;&lt;br /&gt;Until now, facets were bound to &lt;i&gt;types&lt;/i&gt; (Class or Interface), but you could not easily attach a facet to an &lt;i&gt;instance&lt;/i&gt; of a given type... Well, now you can, using InstanceFacets !&lt;br /&gt;&lt;br /&gt;A new interface has been introduced (IInstanceFacet - javadocs &lt;a href="http://jfacets.rvkb.com/pub/javadocs/net/sourceforge/jfacets/IInstanceFacet.html"&gt;here&lt;/a&gt;), that defines a callback method that you have to implement in order to decide if the facet matches the target object or not.&lt;br /&gt;&lt;br /&gt;This new release is available for &lt;a href="https://sourceforge.net/project/showfiles.php?group_id=154666"&gt;download on sf.net&lt;/a&gt;. It doesn't break compatibility, so you can upgrade your jfacets jar without breaking anything to your app.&lt;br /&gt;&lt;br /&gt;Enjoy !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34458181-3145007225593194544?l=jfacets.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='https://sourceforge.net/project/showfiles.php?group_id=154666' title='JFacets 2.1 with Instance Facets !'/><link rel='replies' type='application/atom+xml' href='http://jfacets.blogspot.com/feeds/3145007225593194544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34458181&amp;postID=3145007225593194544' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34458181/posts/default/3145007225593194544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34458181/posts/default/3145007225593194544'/><link rel='alternate' type='text/html' href='http://jfacets.blogspot.com/2007/05/jfacets-21-with-instance-facets.html' title='JFacets 2.1 with Instance Facets !'/><author><name>Remi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34458181.post-5831681368203516990</id><published>2007-05-20T16:26:00.000+02:00</published><updated>2007-05-20T16:33:41.006+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='woko'/><title type='text'>WokoTracker demo available</title><content type='html'>WokoTracker, a full blown Woko demo, has just been released on sf.net. &lt;br /&gt;&lt;br /&gt;It's a simple but functional issue tracker with 3 different roles, that demonstrates some advanced features of Woko, such as :&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Custom users (part of the Domain Model)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;CRUD features customization (instance-based permissions and the like)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Page Templates and Object Renderer extension&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Filtered search, extended results page&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Commands on objects&lt;/li&gt;&lt;br /&gt;&lt;li&gt;...and more !&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://woko.rvkb.com/index.php/Woko/WokoTracker"&gt;Read more...&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34458181-5831681368203516990?l=jfacets.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://woko.rvkb.com/index.php/Woko/WokoTracker' title='WokoTracker demo available'/><link rel='replies' type='application/atom+xml' href='http://jfacets.blogspot.com/feeds/5831681368203516990/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34458181&amp;postID=5831681368203516990' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34458181/posts/default/5831681368203516990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34458181/posts/default/5831681368203516990'/><link rel='alternate' type='text/html' href='http://jfacets.blogspot.com/2007/05/wokotracker-demo-available.html' title='WokoTracker demo available'/><author><name>Remi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34458181.post-7337471890146197276</id><published>2007-04-14T22:19:00.000+02:00</published><updated>2007-04-15T13:02:15.988+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jfacets'/><title type='text'>JFacets 2.0 released</title><content type='html'>JFacets 2.0 has just been released. &lt;br /&gt;&lt;br /&gt;Here's the change list :&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt; enabled use of &lt;span style="font-weight:bold;"&gt;plain POJOs&lt;/span&gt; : facets don't even need to implement the &lt;span style="font-style:italic;"&gt;IFacet&lt;/span&gt; interface any more !&lt;/li&gt;&lt;br /&gt;&lt;li&gt; Added a &lt;span style="font-style:italic;"&gt;getFacet(facetName, profileId)&lt;/span&gt; method to JFacets : allows easier use when you don't need any target object&lt;/li&gt;&lt;br /&gt;&lt;li&gt; Added access to the &lt;span style="font-style:italic;"&gt;FacetDescriptor&lt;/span&gt; used for retrieving the facets from the facet context (deprecated one method in &lt;span style="font-style:italic;"&gt;IFacetContextFactory&lt;/span&gt; and added a new one)&lt;/li&gt;&lt;br /&gt;&lt;li&gt; Added &lt;span style="font-style:italic;"&gt;INavigableProfileRepository&lt;/span&gt; (and upgraded Acegi integration layer) : enables full nav on the Profiles Graph from IDEs, tools etc.&lt;/li&gt;&lt;br /&gt;&lt;li&gt; Refactored &lt;span style="font-style:italic;"&gt;WebFacets&lt;/span&gt; for greater flexibility (now you can obtain request-scoped JFacets beans from the Spring context, in your Spring apps)&lt;/li&gt;&lt;br /&gt;&lt;li&gt; Upgraded Spring version, now uses 2.0.2, but still compatible with earlier versions&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Those changes should not break backward compatibility (unless you have developed custom facet context factories etc.), so don't hesitate to upgrade to this new release !&lt;br /&gt;&lt;br /&gt;Full sources + maven2 build is available (in a zip) as well as a compiled jar on &lt;a href="http://sourceforge.net/project/showfiles.php?group_id=154666&amp;package_id=171921&amp;release_id=501156"&gt;sf.net downloads&lt;/a&gt; (plus demos of &lt;i&gt;WebFacets&lt;/i&gt; and &lt;i&gt;Acegi&lt;/i&gt; integration).&lt;br /&gt;&lt;br /&gt;Also, the core JFacets project is now managed with SVN on sf.net (moved from the CVS).&lt;br /&gt;&lt;br /&gt;Enjoy !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34458181-7337471890146197276?l=jfacets.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://sourceforge.net/project/showfiles.php?group_id=154666&amp;package_id=171921&amp;release_id=501156' title='JFacets 2.0 released'/><link rel='replies' type='application/atom+xml' href='http://jfacets.blogspot.com/feeds/7337471890146197276/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34458181&amp;postID=7337471890146197276' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34458181/posts/default/7337471890146197276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34458181/posts/default/7337471890146197276'/><link rel='alternate' type='text/html' href='http://jfacets.blogspot.com/2007/04/jfacets-20-released.html' title='JFacets 2.0 released'/><author><name>Remi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34458181.post-7059860960517714482</id><published>2007-03-08T18:07:00.000+01:00</published><updated>2007-03-08T18:24:50.110+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='woko'/><title type='text'>Woko 0.5 released</title><content type='html'>I've just released a 0.5 of the &lt;a href="http://jfacets.rvkb.com/index.php/Woko/ProjectTemplate"&gt;Woko project template&lt;/a&gt;. It includes several enhancements :&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Merged ROLE_READ and ROLE_WRITE into a single ROLE_USER&lt;/b&gt; as this makes the overall stuff simpler. ROLE_USER is appropriate for demos, or really simple apps only. For more advanced stuff, it's better to extend the profiles graph as you want !&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Improved association editing&lt;/b&gt; : now you can create new objects and associate them directly to other objects. This is much more user friendly than the previous version where you had to create objects separatly and then associate them.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Localized all messages and texts&lt;/b&gt;, and provided a French translation. More languages could be supported easily just by creating new resource files.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Improved search page&lt;/b&gt; : now search results are grouped by class, and the score is shown.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Fixed property specific overriding&lt;/b&gt; : now it's really easy, and reliable :-)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Included a &lt;b&gt;calendar widget for date properties&lt;/b&gt; by default (uses &lt;a href="http://www.dynarch.com/projects/calendar/"&gt;jscalendar&lt;/a&gt;)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Fixed some bugs and made small improvements here and there...&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;The docs in &lt;a href="http://jfacets.rvkb.com/index.php/Woko/HomePage"&gt;the wiki&lt;/a&gt; will be updated soon to reflect the current status of development.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sourceforge.net/project/showfiles.php?group_id=154666&amp;package_id=219173&amp;release_id=492172"&gt;Grab the project template from sourceforge&lt;/a&gt;, and enjoy the ride !&lt;br /&gt;&lt;br /&gt;Cheers&lt;br /&gt;&lt;br /&gt;Remi&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34458181-7059860960517714482?l=jfacets.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://sourceforge.net/project/showfiles.php?group_id=154666&amp;package_id=219173&amp;release_id=492172' title='Woko 0.5 released'/><link rel='replies' type='application/atom+xml' href='http://jfacets.blogspot.com/feeds/7059860960517714482/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34458181&amp;postID=7059860960517714482' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34458181/posts/default/7059860960517714482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34458181/posts/default/7059860960517714482'/><link rel='alternate' type='text/html' href='http://jfacets.blogspot.com/2007/03/woko-05-released.html' title='Woko 0.5 released'/><author><name>Remi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34458181.post-8390943171416973582</id><published>2007-01-07T21:56:00.000+01:00</published><updated>2007-04-15T12:54:21.205+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jfacets'/><title type='text'>JFacets 1.3.6 released</title><content type='html'>JFacets v1.3.6 has just been released. It's a minor evolution that includes "behind-the-scenes" enhancements, and  maven2-based build.&lt;br /&gt;&lt;br /&gt;You can &lt;a href="http://sourceforge.net/project/showfiles.php?group_id=154666&amp;package_id=171921&amp;amp;release_id=476668"&gt;get it from sourceforge&lt;/a&gt;, or use maven2 dependencies (thanks to the maven team for uploading the bundle !).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Change list :&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://maven.apache.org/"&gt;Maven2&lt;/a&gt; used for the build in replacement of ant&lt;/li&gt;&lt;li&gt;Profiles cache in the JFacets bean : profiles can be kept in a map for avoiding calls on the ProfileRepository and gain lots of performance (e.g. if your Profile Repository is making calls on some DB). Configurable via Spring using the "useProfilesCache" property. &lt;/li&gt;&lt;li&gt;Lowered some logs (too many INFOs !)&lt;/li&gt;&lt;li&gt;added "dumpFacetsAsXml()" method in JFacets : allows to retrieve a list of all descriptors as XML (can be useful in order to know about active facets and/or to reassign them to other profiles/object types)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;MetaFacetDescriptorManager : removed caching of descriptors, this allows to have dynamic facets easier (see &lt;a href="http://jfacets.rvkb.com/index.php/Woko/HomePage"&gt;Woko&lt;/a&gt;'s Dynamic DB facets)&lt;/li&gt;&lt;li&gt;Finally created a few unit tests (to be continued) !&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Enjoy !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34458181-8390943171416973582?l=jfacets.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://sourceforge.net/project/showfiles.php?group_id=154666&amp;package_id=171921&amp;release_id=476668' title='JFacets 1.3.6 released'/><link rel='replies' type='application/atom+xml' href='http://jfacets.blogspot.com/feeds/8390943171416973582/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34458181&amp;postID=8390943171416973582' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34458181/posts/default/8390943171416973582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34458181/posts/default/8390943171416973582'/><link rel='alternate' type='text/html' href='http://jfacets.blogspot.com/2007/01/jfacets-136-released.html' title='JFacets 1.3.6 released'/><author><name>Remi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34458181.post-37908041823052132</id><published>2006-12-17T11:25:00.000+01:00</published><updated>2007-04-15T12:58:53.117+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='woko'/><title type='text'>Woko : POJOs on the Web !</title><content type='html'>&lt;span style="font-weight: bold;font-size:130%;" &gt;Get Displayed : What's a GUI ?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;GUI developement is simple in the concept. Basically, it's all about &lt;span style="font-weight: bold;"&gt;presenting objects to the end-user&lt;/span&gt;, and &lt;span style="font-weight: bold;"&gt;allowing to interact with them&lt;/span&gt;. You typically show a product, show a cart, allow to add products to the cart etc. In the end, if you think about it, the GUI can be seen as a set of &lt;span style="font-style: italic;"&gt;views&lt;/span&gt; of, and &lt;span style="font-style: italic;"&gt;interactions&lt;/span&gt; with &lt;span style="font-style: italic;"&gt;objects&lt;/span&gt;. &lt;span style="font-style: italic;"&gt;Views&lt;/span&gt; present the objects, and &lt;span style="font-style: italic;"&gt;interactions&lt;/span&gt; allow to trigger some processes (collaborations between objects) in the Domain Model.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Get Into Troubles : GUI developement is often chaotic...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In practise, it's very often a repetitive and boring task. You usually feel like you reinvent wheels all the time just to get things displayed on the screen... annoying, huh ? OK, you have frameworks and tools that help a lot now, but there's almost no really consistent &lt;span style="font-style: italic;"&gt;methodology&lt;/span&gt; behind them ! Take RCPs for example : they offer a lot of attractive and useful features to build interfaces, but no-one really tells you how to use these tools in order to build an application. You rarely see the concept of &lt;span style="font-style: italic;"&gt;views on objects&lt;/span&gt; in such tools, they're ingredients, but you still do the cooking yourself ! Not to mention so called "web frameworks" which mostly have their "proprietary" vision and tools, and all require you to learn a new language and concepts just to get started...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Get Organized : Domain Driven Developement&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Let's climb a bit in the abstraction levels, and we find much more interesting stuff, like &lt;a href="http://nakedobjects.org/"&gt;Naked Objects&lt;/a&gt; and other frameworks gravitating around the &lt;a href="http://nakedobjects.org/wiki/Naked_Objects_Pattern"&gt;Naked Objects Pattern&lt;/a&gt; (&lt;a href="http://jmatter.org/"&gt;JMatter&lt;/a&gt;, &lt;a href="http://www.romaframework.org/"&gt;RomaFramework&lt;/a&gt;, &lt;a href="http://blogs.opensymphony.com/plightbo/2006/08/project_able_a_complete_java_w.html"&gt;Able&lt;/a&gt;, etc.).&lt;br /&gt;Basically, the idea is that&lt;span style="font-style: italic;"&gt; objects should be self-descriptive to such an extent that GUIs can be completely generated for them&lt;/span&gt; ! You feed the system with some Domain Objects, and you've got the GUI for free ! Doesn't thet sound like a dream ??? It's reality !&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Get Profiled : The &lt;span style="font-style: italic;"&gt;Woko&lt;/span&gt; Way !&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Woko&lt;/span&gt; inspires from this concept too. It's an &lt;span style="font-weight: bold;"&gt;Object-Oriented Wiki&lt;/span&gt; : it allows to &lt;span style="font-style: italic;"&gt;put your objects on the web&lt;/span&gt; without the hassle of writing UI code. It heavily relies on &lt;span style="font-style: italic;"&gt;facets&lt;/span&gt; in order to allow &lt;span style="font-weight: bold;"&gt;profilized browsing of persistent POJOs&lt;/span&gt; without effort.&lt;br /&gt;You simply develop your Domain Model using annotations and POJOs, and &lt;span style="font-style: italic;"&gt;Woko&lt;/span&gt; displays them out-of-the-box in web pages ! Kinda Wiki-style CRUD : you can browse, create, edit and associate objects together directly in an intuitive and easy approach... You can also search in your objects "a la Google" directly, and have RSS feeds for them !!!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Woko&lt;/span&gt; is all about presenting some &lt;span style="font-style: italic;"&gt;facets of your objects&lt;/span&gt; to end-users based on their &lt;span style="font-style: italic;"&gt;profile&lt;/span&gt;. This is its major difference with other Domain-Driven frameworks. In &lt;span style="font-style: italic;"&gt;Woko&lt;/span&gt;, almost everything is &lt;span style="font-style: italic;"&gt;facet-driven&lt;/span&gt;, which means that you can customize the default rendering of some Domain Objects for some particular user profiles ! And that's what all web application developement is about today : you want information to be shared in a personalized fashion !&lt;br /&gt;Last but not least, you don't "scaffold" or generate code in &lt;span style="font-style: italic;"&gt;Woko&lt;/span&gt; : you &lt;span style="font-style: italic;"&gt;extend it&lt;/span&gt; ! You don't have any round-tripping issues, you never overwrite the wrong file... you simply add what you want by &lt;span style="font-style: italic;"&gt;extending the appropriate facets&lt;/span&gt; for the appropriate&lt;span style="font-style: italic;"&gt; Domain Object&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;User Profile&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Woko&lt;/span&gt; is more than an framework, it's a &lt;span style="font-style: italic;"&gt;full-stack application skeleton&lt;/span&gt;, which bundles a bunch of technologies and frameworks together :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Hibernate + Annotations&lt;/span&gt; : Persistence and Domain Model ;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Stripes + Stripernate&lt;/span&gt; : Web MVC, FORMs &amp; validation, Hibernate integration ;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;JFacets&lt;/span&gt; : User profiling ;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Acegi&lt;/span&gt; : User authentication, long-term sessions, ACLs ;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Compass&lt;/span&gt; : Object-Oriented search engine.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;The integration between all these components is almost transparent for the developpers. Of course, you have to understand Hibernate Annotations and JEE webapps to develop &lt;span style="font-style: italic;"&gt;Woko&lt;/span&gt; apps, but as for the rest, complexity is encapsulated so you often have a very simple answer to your problems.&lt;br /&gt;Developing in Woko is simple : you write Domain Objects, and &lt;span style="font-style: italic;"&gt;facetize&lt;/span&gt; them for your user's roles !&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;br /&gt;Get Involved !&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Woko is &lt;span style="font-style: italic;"&gt;fun&lt;/span&gt; : the way you get your objects on the screen in a few seconds is still kinda magic :-)&lt;br /&gt;Woko is &lt;span style="font-style: italic;"&gt;disruptive&lt;/span&gt; : it completely breaks the model and proposes a new way of building multi-profile, object-and-profile-driven webapps.&lt;br /&gt;Woko is &lt;span style="font-style: italic;"&gt;easy&lt;/span&gt; : it leverages complex technologies by allowing to use them in a simple way, without even noticing it.&lt;br /&gt;&lt;br /&gt;For the moment, it's only a prototype, but it's really promising. We're open to new ideas and contributions, so feel free to speak up !&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jfacets.rvkb.com/index.php/Woko/HomePage"&gt;Try it, and tell us what you think !&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34458181-37908041823052132?l=jfacets.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://jfacets.rvkb.com/index.php/Woko/HomePage' title='Woko : POJOs on the Web !'/><link rel='replies' type='application/atom+xml' href='http://jfacets.blogspot.com/feeds/37908041823052132/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34458181&amp;postID=37908041823052132' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34458181/posts/default/37908041823052132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34458181/posts/default/37908041823052132'/><link rel='alternate' type='text/html' href='http://jfacets.blogspot.com/2006/12/woko-pojos-on-web.html' title='Woko : POJOs on the Web !'/><author><name>Remi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34458181.post-640313637583418123</id><published>2006-12-06T20:28:00.000+01:00</published><updated>2007-04-15T12:54:39.546+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jfacets'/><title type='text'>JFacets 1.3.5 released...</title><content type='html'>&lt;span style="font-style: italic;"&gt;JFacets&lt;/span&gt; v1.3.5 is &lt;a href="http://sourceforge.net/project/showfiles.php?group_id=154666&amp;package_id=171921&amp;amp;release_id=469207"&gt;available for download&lt;/a&gt; on sf.net !&lt;br /&gt;&lt;br /&gt;It includes some pretty cool improvements that have been tested in  several applications recently.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Change List&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt; &lt;span style="font-weight: bold;"&gt;Acegi integration&lt;/span&gt; : the &lt;span style="font-style: italic;"&gt;JFacets&lt;/span&gt; core now includes the &lt;a href="http://jfacets.rvkb.com/index.php/WebFacets/Acegi"&gt;Acegi integration layer&lt;/a&gt;. It revealed very efficient and easy to use, and has now been in use for months without problems. It's now bundled with the &lt;span style="font-style: italic;"&gt;JFacets&lt;/span&gt; jar for easier use.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;fallback profile&lt;/span&gt; : &lt;span style="font-style: italic;"&gt;JFacets&lt;/span&gt; can now default to a &lt;span style="font-style: italic;"&gt;fallback profile&lt;/span&gt; in case supplied profile is null. For a while, invoking facets for unauthenticated (or guest) users has been painful. You had to manyally check if there was a profile, and decide what to do in this situation (otherwise you had a nice NPE !). With the more and more common use of Acegi as the authentication system, we needed automation there ! So now the JFacets bean can be configured with a &lt;span style="font-family:courier new;"&gt;fallbackProfileId&lt;/span&gt; property, and it'll handle all the null-checks etc ! No profile for the current request ? Fallback profile used :-) This allows to use facets even in the "public" sections of the application without any coding !&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;@FacetKeyList&lt;/span&gt; : you can now have several assignations for the same facet class, when using annotated facets. The @FacetKeyList annotation allows to have several @FacetKey for the same class.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Plus some small improvements here and there, and doc writing (don't get mad, it's still pretty messy in there, sorry for that).&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Powered by JFacets !&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;JFacets&lt;/span&gt; has been intensively tested recently, in various situations...&lt;br /&gt;&lt;br /&gt;We now use it at work in a WebStarted &lt;span style="font-style: italic; font-weight: bold;"&gt;Swing&lt;/span&gt; &lt;span style="font-style: italic; font-weight: bold;"&gt;application&lt;/span&gt; where &lt;span style="font-style: italic;"&gt;facets&lt;/span&gt; are used to create a fully profiled UI (actually some JPanels implement IFacet and own a @FacetKey annotation ! we just load them when creating the UI for the current profile). This was the first real attempt at writing &lt;span style="font-style: italic;"&gt;facet-based Swing apps&lt;/span&gt;, and it's a really successful one. The programmer (a colleague at CSTB) was amazed with the ease of use of the facets, and I think it saved him a few months of work !&lt;br /&gt;Also, &lt;span style="font-style: italic;"&gt;JFacets&lt;/span&gt; continues to grow in the web tier, and to power more and more webapps, little by little. The integration with Acegi is really a bless, and the full annotations/taglibs makes facet-based web developement really easy.&lt;br /&gt;Last but not least, on a parallel note, &lt;a href="http://jfacets.rvkb.com/index.php/Woko/HomePage"&gt;Woko&lt;/a&gt; gets really serious now, and opens pretty awesome perspectives in Agile Web Developement ! I'm currently trying to set up a flash demo so that you see it in action, it's really cool stuff, kind of "the stack of your dreams" ??? Stay tuned...&lt;br /&gt;&lt;br /&gt;Enjoy this new release !&lt;br /&gt;&lt;br /&gt;Remi&lt;br /&gt;&lt;br /&gt;PS : I've shut the Sourceforge ML since nobody was using it. A forum should be up and running soon, I'm on it...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34458181-640313637583418123?l=jfacets.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jfacets.blogspot.com/feeds/640313637583418123/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34458181&amp;postID=640313637583418123' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34458181/posts/default/640313637583418123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34458181/posts/default/640313637583418123'/><link rel='alternate' type='text/html' href='http://jfacets.blogspot.com/2006/12/jfacets-135-released.html' title='JFacets 1.3.5 released...'/><author><name>Remi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34458181.post-116377582786447443</id><published>2006-11-17T15:56:00.000+01:00</published><updated>2006-11-17T16:05:55.583+01:00</updated><title type='text'>Automatic discovery of annotated facets</title><content type='html'>As of v1.3.3, &lt;span style="font-style: italic;"&gt;JFacets&lt;/span&gt; has a new way of writing facets. After &lt;span style="font-style: italic;"&gt;Java/XML&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;Groovy&lt;/span&gt; facets, here comes &lt;span style="font-style: italic;"&gt;annotated&lt;/span&gt; facets !&lt;br /&gt;&lt;br /&gt;The aim of this solution is to enable pure Java facets without any external configuration file (let's get rid of the XML facets descriptor). Basically, you can now annotate some Java classes that implement &lt;span style="font-style: italic;"&gt;IFacet&lt;/span&gt;, with the &lt;span style="font-style: italic;"&gt;@FacetKey&lt;/span&gt; annotation. You simply specify the facet assignation parameters as attributes of the annotation. A  dedicated Facet Descriptor Manager can be configured so that annotated facet classes are loaded from the classpath at startup.&lt;br /&gt;&lt;br /&gt;It's a good tradeoff for people who want anto-discovery but don't want to use groovy.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jfacets.rvkb.com/index.php/JFacets/WritingFacets"&gt;Read more on the wiki&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34458181-116377582786447443?l=jfacets.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jfacets.blogspot.com/feeds/116377582786447443/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34458181&amp;postID=116377582786447443' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34458181/posts/default/116377582786447443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34458181/posts/default/116377582786447443'/><link rel='alternate' type='text/html' href='http://jfacets.blogspot.com/2006/11/automatic-discovery-of-annotated.html' title='Automatic discovery of annotated facets'/><author><name>Remi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34458181.post-115859475328519726</id><published>2006-09-18T17:45:00.000+02:00</published><updated>2006-09-18T17:52:34.086+02:00</updated><title type='text'>Acegi Authentication</title><content type='html'>While working on CMS, I've had a look to Acegi and I really found it simple and nice. So I decided to begin testing with it before going deeper in JAAS...&lt;br /&gt;&lt;br /&gt;Since JFacets and Acegi are fully Spring-based, integration has been pretty easy and makes sense ! A single component can be used in order to implement both the &lt;span style="font-style: italic;"&gt;ProfileRepository&lt;/span&gt; and the &lt;span style="font-style: italic;"&gt;UserDetailsService&lt;/span&gt;, and both flat and hierarchical roles can be handled.&lt;br /&gt;&lt;br /&gt;I've checked a new &lt;a href="http://jfacets.cvs.sourceforge.net/jfacets/JFacets2-acegi/"&gt;&lt;span style="font-style: italic;"&gt;JFacets2-acegi&lt;/span&gt; module&lt;/a&gt; in &lt;a href="http://sourceforge.net/cvs/?group_id=154666"&gt;the CVS&lt;/a&gt; (an eclipse project) and added a &lt;a href="http://jfacets.rvkb.com/index.php/WebFacets/Acegi"&gt;page in the wiki&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Check it out !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34458181-115859475328519726?l=jfacets.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jfacets.blogspot.com/feeds/115859475328519726/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34458181&amp;postID=115859475328519726' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34458181/posts/default/115859475328519726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34458181/posts/default/115859475328519726'/><link rel='alternate' type='text/html' href='http://jfacets.blogspot.com/2006/09/acegi-authentication.html' title='Acegi Authentication'/><author><name>Remi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34458181.post-115839573936640112</id><published>2006-09-16T10:17:00.000+02:00</published><updated>2006-09-16T10:35:39.383+02:00</updated><title type='text'>Container Managed Security part 2 : exploring users and roles</title><content type='html'>I've went again through &lt;span style="font-style: italic;"&gt;JAAS&lt;/span&gt; docs, and apparently there is no standard API for exploring the users and roles "database" :-/&lt;br /&gt;&lt;br /&gt;This is similar with &lt;span style="font-style: italic;"&gt;Acegi&lt;/span&gt;... You can, from a user principal, get a list of "roles" (bottom-up), but you can't get a list of all roles, get all the users in a given role, etc. (I have posted a &lt;a href="http://forum.springframework.org/showthread.php?t=28769"&gt;question&lt;/a&gt; on the Acegi forum but got no answer).&lt;br /&gt;&lt;br /&gt;Last but not least, realms have to be configured at the App Server level, and so it's not portable from a container to another...&lt;br /&gt;&lt;br /&gt;All this just sucks ! Not only the roles/users structure is flat, moreover you can't get the informations in a standard way !&lt;br /&gt;Man, maybe I should propose the &lt;span style="font-style: italic;"&gt;Profile Repository&lt;/span&gt; concept to the JCP ;-P&lt;br /&gt;&lt;br /&gt;So, for using facets with CMS, one has to implement a specific &lt;span style="font-style: italic;"&gt;Profile Repository&lt;/span&gt; from scratch, that relies on his own stuff...&lt;br /&gt;&lt;br /&gt;Today I'll try to work on a base class that already implements most of the stuff for managing &lt;span style="font-style: italic;"&gt;Users&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;Roles&lt;/span&gt;, with a higher abstraction level than the base &lt;span style="font-style: italic;"&gt;IProfileRepository&lt;/span&gt; interface. This should allow easier implementation of the &lt;span style="font-style: italic;"&gt;Profile Repository&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;This base class will be used for testing with regular CMS (e.g. JAAS &lt;span style="font-style: italic;"&gt;Login Module&lt;/span&gt; in Tomcat) and Acegi (custom &lt;span style="font-style: italic;"&gt;UserDetailsService&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;If testing is successful, I'll include the CMS stuff in 1.3.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34458181-115839573936640112?l=jfacets.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jfacets.blogspot.com/feeds/115839573936640112/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34458181&amp;postID=115839573936640112' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34458181/posts/default/115839573936640112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34458181/posts/default/115839573936640112'/><link rel='alternate' type='text/html' href='http://jfacets.blogspot.com/2006/09/container-managed-security-part-2.html' title='Container Managed Security part 2 : exploring users and roles'/><author><name>Remi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34458181.post-115834097102987167</id><published>2006-09-15T19:12:00.000+02:00</published><updated>2006-09-15T19:31:05.936+02:00</updated><title type='text'>Container Managed Security part 1 : authentication</title><content type='html'>It's no secret, J2EE webapps can (and should) rely on &lt;span style="font-style: italic;"&gt;Container Managed Security&lt;/span&gt; (CMS) in order to perform &lt;span style="font-style: italic;"&gt;authentication &lt;/span&gt;and &lt;span style="font-style: italic;"&gt;authorization&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;From anywhere in the application, you are able to retrieve the user name :&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;String userName = request.getRemoteUser();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;In typical WebFacets applications, the user profiles are identified by the user's login name... see where we're coming to ? We could use this user name in order to use facets...&lt;br /&gt;An utility class could be used to retrieve the current user's profile, something like :&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;public IProfile getCMSProfile(HttpServletRequest request) {&lt;br /&gt;  String userName = request.getRemoteUser();&lt;br /&gt;  if (userName==null)&lt;br /&gt;    return null;&lt;br /&gt;  else &lt;br /&gt;    return profileRepository.getProfileById(userName);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;And we could also have a filter that  automatically loads the profile, for each incoming request.&lt;br /&gt;&lt;br /&gt;Here it is for the authentication part. Next to come : mapping the CMS roles to profiles...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34458181-115834097102987167?l=jfacets.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jfacets.blogspot.com/feeds/115834097102987167/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34458181&amp;postID=115834097102987167' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34458181/posts/default/115834097102987167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34458181/posts/default/115834097102987167'/><link rel='alternate' type='text/html' href='http://jfacets.blogspot.com/2006/09/container-managed-security-part-1.html' title='Container Managed Security part 1 : authentication'/><author><name>Remi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-34458181.post-115832584142215580</id><published>2006-09-15T15:09:00.000+02:00</published><updated>2006-09-15T15:10:50.163+02:00</updated><title type='text'>Blog Opened</title><content type='html'>I've decided to set-up this blog in order to broadcast some infos about my work with (and on) the framework.&lt;br /&gt;&lt;br /&gt;More to come soon...&lt;br /&gt;&lt;br /&gt;Have fun&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/34458181-115832584142215580?l=jfacets.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jfacets.blogspot.com/feeds/115832584142215580/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=34458181&amp;postID=115832584142215580' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/34458181/posts/default/115832584142215580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/34458181/posts/default/115832584142215580'/><link rel='alternate' type='text/html' href='http://jfacets.blogspot.com/2006/09/blog-opened.html' title='Blog Opened'/><author><name>Remi</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
