Your SlideShare is downloading. ×
0
Good GateIn Stuff
Good GateIn Stuff
Good GateIn Stuff
Good GateIn Stuff
Good GateIn Stuff
Good GateIn Stuff
Good GateIn Stuff
Good GateIn Stuff
Good GateIn Stuff
Good GateIn Stuff
Good GateIn Stuff
Good GateIn Stuff
Good GateIn Stuff
Good GateIn Stuff
Good GateIn Stuff
Good GateIn Stuff
Good GateIn Stuff
Good GateIn Stuff
Good GateIn Stuff
Good GateIn Stuff
Good GateIn Stuff
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Good GateIn Stuff

2,524

Published on

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

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

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,524
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
50
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Good GateIn stuff<br />Disclaimer : this will not be about visual things <br />
  • 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. 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. Content customization<br />Content<br />State<br />Customization<br />Context<br />Customization<br />Clone<br />Specialization<br />&lt;&lt;inheritance&gt;&gt;<br />
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Other stuff<br />Identity integration via JBoss Picket Link<br />Open source SSO support (CAS, Josso, OpenSSO)<br />

×