/* (non-Javadoc) * @see org.apache.cocoon.portal.profile.ProfileManager#getPortalLayout(java.lang.String, java.lang.String) */ public Layout getPortalLayout(String layoutKey, String layoutID) { PortalService service = null; ServiceSelector adapterSelector = null; try { service = (PortalService) this.manager.lookup(PortalService.ROLE); LayoutFactory factory = service.getComponentManager().getLayoutFactory(); CopletFactory copletFactory = service.getComponentManager().getCopletFactory(); adapterSelector = (ServiceSelector) this.manager.lookup(CopletAdapter.ROLE + "Selector"); if (null == layoutKey) { layoutKey = service.getDefaultLayoutKey(); } final String layoutAttributeKey = "Layout:" + layoutKey; final String layoutObjectsAttributeKey = "Layout-Map:" + layoutKey; Layout layout = (Layout) service.getAttribute(layoutAttributeKey); if (layout == null) { layout = this.loadProfile(layoutKey, service, copletFactory, factory, adapterSelector); } if (layoutID != null) { // now search for a layout Map layoutMap = (Map) service.getAttribute(layoutObjectsAttributeKey); if (layoutMap == null) { layoutMap = new HashMap(); this.cacheLayouts(layoutMap, layout); service.setAttribute(layoutObjectsAttributeKey, layoutMap); } if (layoutMap != null) { return (Layout) layoutMap.get(layoutID); } } return layout; } catch (Exception ce) { throw new CascadingRuntimeException("Exception during loading of profile.", ce); } finally { this.manager.release(service); this.manager.release(adapterSelector); } }