Successfully reported this slideshow.
 Good GateIn stuff<br />Disclaimer : this will not be about visual things <br />
Model Object for Portal<br />Workspace: the global object<br />Site: three kind of sites portal, group, user<br />Navigati...
Object structure<br />Workpace<br />Site<br />Navigation<br />Link<br />&lt;&lt;layout&gt;&gt;<br />Page<br />Page Link<br...
Content customization<br />Content<br />State<br />Customization<br />Context<br />Customization<br />Clone<br />Specializ...
Portal customization context<br />Several levels are potentially available<br />Shared by workspace objects<br />Workspace...
Customization inheritance<br />Basic use case supported in 3.0<br />Application dropped from composer in page<br />The win...
Additional customization context<br />Window context<br />MOP Framework Only<br />Customization<br />Identity Context<br /...
Content plugability<br />Native support for content<br />Statefull <br />Portlet: Map&lt;String, String[]&gt;<br />Gadget:...
Layouting<br />Three nested layouts<br />Shared layout<br />Shared by all sites and not editable/persisted at the moment<b...
Model extension<br />Each entity has a set of generic properties<br />Useful for driving the behavior<br />Possiblity to a...
Content extension<br />Content type plugin<br />MOP plugin<br />manages the content customization<br />manages import / ex...
Chromattic and GateIn<br />An object / JCR mapping engine<br />Not perfect yet<br />But heavily tested<br />Enable develop...
Type safe and simple access to data<br />public Integer getFooOfBar(Bar bar /* type safe */)<br />{<br />  return bar.getF...
List support for ordering<br />List&lt;Foo&gt; foos= bar.getFoos();<br />foos.add(0, foos.get(2));<br />throw new Unsuppor...
Find references by UUID (or Path)<br />// Find the bar node pointing to foo<br />Bar bar = foo.getBar();<br />// With<br /...
Chromattic work to do<br />Detach / attach entity graph<br />Embeddable object support<br />Nodetypes.xml generation<br />...
Web Container Integration<br />Deployment is based on Web Container Integration framework (aka WCI)<br />GateIn component ...
GateIn descriptors<br />Based on WCI events<br />/WEB-INF/gatein-resources.xml<br />Declares CSS, skins and javascript<br ...
Groovy template<br />Groovy template engine was rewritten<br />Increased performances<br />Provides contextual exceptions ...
Gadget unification<br />Dashboard container is now stored in the containing MOP page instead of having a portlet that poin...
Other stuff<br />Identity integration via JBoss Picket Link<br />Open source SSO support (CAS, Josso, OpenSSO)<br />
Upcoming SlideShare
Loading in …5
×

Good GateIn Stuff

2,940 views

Published on

Some slides I presented to eXo folks about GateIn stuff to give an overview

Published in: Technology
  • Be the first to comment

Good GateIn Stuff

  1. 1. Good GateIn stuff<br />Disclaimer : this will not be about visual things <br />
  2. 2. Model Object for Portal<br />Workspace: the global object<br />Site: three kind of sites portal, group, user<br />Navigations: a tree of links<br />Link : page link, URL link<br />Each navigation points to a layout reduced to using the navigation of the root<br />Pages: a tree of pages<br />The tree structure provides inheritance for page state reduced to a flat set of named pages<br />Each page points to a root UI container<br />
  3. 3. Object structure<br />Workpace<br />Site<br />Navigation<br />Link<br />&lt;&lt;layout&gt;&gt;<br />Page<br />Page Link<br />&lt;&lt;shows&gt;&gt;<br />UI Container<br />URL Link<br />… Link<br />
  4. 4. Content customization<br />Content<br />State<br />Customization<br />Context<br />Customization<br />Clone<br />Specialization<br />&lt;&lt;inheritance&gt;&gt;<br />
  5. 5. Portal customization context<br />Several levels are potentially available<br />Shared by workspace objects<br />Workspace: used by application registry<br />Site: declared in portlet-preferences.xml<br />Page: usedfor page deep cloning<br />Non shared: window<br />
  6. 6. Customization inheritance<br />Basic use case supported in 3.0<br />Application dropped from composer in page<br />The window customization references a workspace customization<br />
  7. 7. Additional customization context<br />Window context<br />MOP Framework Only<br />Customization<br />Identity Context<br />Navigation Context<br />Julien<br />Tug<br />Nav 1<br />Nav 2<br />
  8. 8. Content plugability<br />Native support for content<br />Statefull <br />Portlet: Map&lt;String, String[]&gt;<br />Gadget: Map&lt;String, Object&gt;<br />WSRP: byte[]<br />Stateless<br />Current status<br />Persistence : supported by adding new node type<br />GateIn level : partially supported<br />
  9. 9. Layouting<br />Three nested layouts<br />Shared layout<br />Shared by all sites and not editable/persisted at the moment<br />Site layout<br />Portal: the classic portal layout<br />Group layout: useful for adding group logo<br />User layout: shows the dashboard tab<br />Todo: per navigation node layout to provide different layout of a navigation subtree<br />Page layout<br />Layouts are pages in an hidden space<br />
  10. 10. Model extension<br />Each entity has a set of generic properties<br />Useful for driving the behavior<br />Possiblity to add mixin to mop node types<br />Need to make mixin available at the object level (Chromattic and MOP support)<br />Use case : add mixin to Site to add contain additional resources <br />
  11. 11. Content extension<br />Content type plugin<br />MOP plugin<br />manages the content customization<br />manages import / export of the content<br />manages versionning of the content<br />UI plugin<br />Show the content visually in the UI composer<br />Manage content in the application content registry<br />
  12. 12. Chromattic and GateIn<br />An object / JCR mapping engine<br />Not perfect yet<br />But heavily tested<br />Enable development rich models<br />Efficient lazy loading<br />Controls the flow of your code (get rid of hasNode/hasProperty/RepotoryException)<br />
  13. 13. Type safe and simple access to data<br />public Integer getFooOfBar(Bar bar /* type safe */)<br />{<br /> return bar.getFoo(); // simple and typed<br />}<br />public Integer getFooOfBar(Node bar) throws RepositoryException /* WTF? */ {<br /> // Is it the right node? Should check its type…<br /> Integer size = null;<br /> if (node.hasProperty(“foo”)) // Is it here ?<br /> return (int)node.getProperty(“foo”).getLong();<br /> return null;<br />}<br />
  14. 14. List support for ordering<br />List&lt;Foo&gt; foos= bar.getFoos();<br />foos.add(0, foos.get(2));<br />throw new UnsupportedOperationException(“need to find someone to implement element order change as the nobody understands the API to do it”);<br />
  15. 15. Find references by UUID (or Path)<br />// Find the bar node pointing to foo<br />Bar bar = foo.getBar();<br />// With<br />@OneToMany(type = RelationshipType.REFERENCE)<br />@MappedBy(“foo”);<br />public abstract Foo getFoo();<br />PropertyIterator i = foo.getReferences();<br />while (i.hasNext()) {<br /> Property p = i.nextProperty();<br /> Node referent = p.getParent();<br /> if (isTypeOfNode(reference, “foo”)) {<br /> return referent;<br /> }<br />}<br />return null;<br />
  16. 16. Chromattic work to do<br />Detach / attach entity graph<br />Embeddable object support<br />Nodetypes.xml generation<br />Finalize 1.0 public API<br />
  17. 17. Web Container Integration<br />Deployment is based on Web Container Integration framework (aka WCI)<br />GateIn component that focus on integrating the web container deployment and runtime<br />Easily be aware of web application life cycle<br />Removes the need of ServletContextListener intrusion in web.xml<br />One listener to rule them all<br />
  18. 18. GateIn descriptors<br />Based on WCI events<br />/WEB-INF/gatein-resources.xml<br />Declares CSS, skins and javascript<br />/WEB-INF/gadgets.xml<br />Was already existing but now with a XSD<br />
  19. 19. Groovy template<br />Groovy template engine was rewritten<br />Increased performances<br />Provides contextual exceptions with template name, line of code and even an excerpt of the failing code<br />
  20. 20. Gadget unification<br />Dashboard container is now stored in the containing MOP page instead of having a portlet that pointed to another container<br />Use native gadget support<br />Avoid data federation<br />Simplify data life cycle (i.e page deletion transitively deletes the dashboard)<br />
  21. 21. Other stuff<br />Identity integration via JBoss Picket Link<br />Open source SSO support (CAS, Josso, OpenSSO)<br />

×