You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by rw...@apache.org on 2009/11/18 19:24:53 UTC

svn commit: r881862 [2/16] - in /portals/jetspeed-2/portal/trunk: ./ applications/jetspeed/src/main/webapp/WEB-INF/jetui/yui/ applications/jetspeed/src/main/webapp/WEB-INF/templates/ applications/jetspeed/src/main/webapp/decorations/layout/greenearth/ ...

Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-layout-portlets/src/main/java/org/apache/jetspeed/portlets/layout/MultiColumnPortlet.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-layout-portlets/src/main/java/org/apache/jetspeed/portlets/layout/MultiColumnPortlet.java?rev=881862&r1=881861&r2=881862&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-layout-portlets/src/main/java/org/apache/jetspeed/portlets/layout/MultiColumnPortlet.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-layout-portlets/src/main/java/org/apache/jetspeed/portlets/layout/MultiColumnPortlet.java Wed Nov 18 18:24:48 2009
@@ -32,8 +32,6 @@
 import javax.portlet.RenderRequest;
 import javax.portlet.RenderResponse;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.apache.jetspeed.CommonPortletServices;
 import org.apache.jetspeed.PortalReservedParameters;
 import org.apache.jetspeed.cache.JetspeedContentCache;
@@ -46,10 +44,14 @@
 import org.apache.jetspeed.om.page.Fragment;
 import org.apache.jetspeed.om.page.Page;
 import org.apache.jetspeed.page.FolderNotUpdatedException;
+import org.apache.jetspeed.page.PageManager;
 import org.apache.jetspeed.page.document.NodeException;
 import org.apache.jetspeed.request.RequestContext;
 import org.apache.jetspeed.container.PortletWindow;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 /**
  */
 public class MultiColumnPortlet extends LayoutPortlet
@@ -72,6 +74,7 @@
     protected DecorationFactory decorators;
     protected JetspeedDesktop desktop;
     protected JetspeedContentCache decoratorCache;
+    protected PageManager pageManager;
 
     public void init( PortletConfig config ) throws PortletException
     {
@@ -113,6 +116,12 @@
         this.desktop = (JetspeedDesktop)getPortletContext().getAttribute(CommonPortletServices.CPS_DESKTOP);
         
         this.decoratorCache = (JetspeedContentCache)getPortletContext().getAttribute(CommonPortletServices.CPS_DECORATOR_CACHE);
+        
+        pageManager = (PageManager)getPortletContext().getAttribute(CommonPortletServices.CPS_PAGE_MANAGER_COMPONENT);
+        if (null == pageManager)
+        {
+            throw new PortletException("Failed to find the Page Manager on portlet initialization");
+        }        
     }
 
     public void doView( RenderRequest request, RenderResponse response ) throws PortletException, IOException
@@ -123,12 +132,12 @@
         PageEditAccess pageEditAccess = (PageEditAccess)context.getAttribute(PortalReservedParameters.PAGE_EDIT_ACCESS_ATTRIBUTE);
         if ( requestPage == null)
         {
-            // Targetting this portlet REQUIRES that the ProfilerValve has been invoked!
+            // Targeting this portlet REQUIRES that the ProfilerValve has been invoked!
             throw new PortletException("Current request page not available.");
         }
         if (pageEditAccess == null)
         {
-            // Targetting this portlet REQUIRES that the ProfilerValve has been invoked!
+            // Targeting this portlet REQUIRES that the ProfilerValve has been invoked!
             throw new PortletException("Current PageEditAccess not available.");            
         }
         
@@ -145,7 +154,7 @@
         }
         
         // get fragment column sizes
-        Fragment f = getFragment(request, false);
+        ContentFragment f = getFragment(request, false);
         String fragmentColumnSizes = columnSizes;
         String fragmentColumnSizesProperty = f.getProperty(Fragment.SIZES_PROPERTY_NAME);
         if (fragmentColumnSizesProperty != null)
@@ -164,7 +173,7 @@
         try
         {
             layout = new ColumnLayout(numColumns, layoutType, f.getFragments(), fragmentColumnSizesArray);
-            layout.addLayoutEventListener(new PageManagerLayoutEventListener(pageManager, context.getPage(), layoutType));
+            layout.addLayoutEventListener(new PageLayoutEventListener(layoutType));
         }
         catch (LayoutEventException e1)
         {
@@ -177,7 +186,7 @@
         request.setAttribute("decorationFactory", this.decorators);
         request.setAttribute("columnSizes", fragmentColumnSizesList);
         request.setAttribute("editing",editing);
-        request.setAttribute("fragmentNestingLevel",new Integer(getFragmentNestingLevel(requestPage,f.getId())));
+        request.setAttribute("fragmentNestingLevel",new Integer(requestPage.getFragmentNestingLevel(f.getId())));
         super.doView(request, response);
         request.removeAttribute("decorationFactory");
         request.removeAttribute("columnLayout");
@@ -189,13 +198,13 @@
 
     public void processAction(ActionRequest request, ActionResponse response) throws PortletException, IOException
     {
-        RequestContext requestContext = (RequestContext)request.getAttribute(PortalReservedParameters.REQUEST_CONTEXT_ATTRIBUTE);
+        RequestContext requestContext = getRequestContext(request);
         
         ContentPage requestPage = requestContext.getPage();       
         PageEditAccess pageEditAccess = (PageEditAccess)requestContext.getAttribute(PortalReservedParameters.PAGE_EDIT_ACCESS_ATTRIBUTE);
         if ( requestPage == null || pageEditAccess == null )
         {
-            // Targetting this portlet with an ActionRequest REQUIRES that the ProfilerValve has been invoked!
+            // Targeting this portlet with an ActionRequest REQUIRES that the ProfilerValve has been invoked!
             throw new PortletException("Current request page or PageEditAccess not available.");
         }
 
@@ -235,43 +244,34 @@
                 if ( layout != null && layout.length() > 0 )
                 {
                     PortletWindow window = requestContext.getActionWindow();
-                    ContentFragment targetFragment = requestPage.getContentFragmentById(window.getId().toString());
-                    
-                    if ( targetFragment == null )
+                    ContentFragment targetFragment = requestPage.getFragmentById(window.getId().toString());
+                    if ( targetFragment != null )
                     {
-                        // ignore no longer consistent page definition
-                        return;
-                    }
-                    
-                    if ( addLayout )
-                    {
-                        try
-                        {
-                            Fragment fragment = pageManager.newFragment();
-                            fragment.setType(Fragment.LAYOUT);
-                            fragment.setName(layout);                            
-                            targetFragment.getFragments().add(fragment);
-                            pageManager.updatePage(requestPage);
-                            clearLayoutAttributes(request);                            
-                        }
-                        catch (Exception e)
+                        if ( addLayout )
                         {
-                            throw new PortletException("failed to add portlet " + layout + " to page: " + requestPage+": "+e.getMessage(), e);
-                        }
-                    }
-                    else if ( !layout.equals(targetFragment.getName()) )
-                    {
-                        try
-                        {
-                            // layout portlet change
-                            targetFragment.setName(layout);
-                            pageManager.updatePage(requestPage);
-                            clearLayoutAttributes(request);
-                            return;
+                            try
+                            {
+                                targetFragment.addPortlet(Fragment.LAYOUT, layout);
+                                clearLayoutAttributes(request);                            
+                            }
+                            catch (Exception e)
+                            {
+                                throw new PortletException("failed to add portlet " + layout + " to page: " + requestPage+": "+e.getMessage(), e);
+                            }
                         }
-                        catch (Exception e)
+                        else if ( !layout.equals(targetFragment.getName()) )
                         {
-                            throw new PortletException("Unable to update page: "+e.getMessage(), e);
+                            try
+                            {
+                                // layout portlet change
+                                targetFragment.updateName(layout);
+                                clearLayoutAttributes(request);
+                                return;
+                            }
+                            catch (Exception e)
+                            {
+                                throw new PortletException("Unable to update page: "+e.getMessage(), e);
+                            }
                         }
                     }
                 }
@@ -283,49 +283,16 @@
                 String jsPageName = request.getParameter("jsPageName");
                 String jsPageTitle = request.getParameter("jsPageTitle");
                 String jsPageShortTitle = request.getParameter("jsPageShortTitle");
+                layout = request.getParameter("layout");
+                if ( ( layout == null ) || ( layout.length() == 0 ) )
+                {
+                    layout = requestPage.getRootFragment().getName();
+                }
                 if ( jsPageName != null && jsPageName.length() > 0 && jsPageName.indexOf(Folder.PATH_SEPARATOR) == -1 )
                 {
                     try
-                    {                
-                        Folder parent = (Folder)requestPage.getParent();
-                        if (parent != null)
-                        {
-                            String path = parent.getPath();
-                            if (path.endsWith(Folder.PATH_SEPARATOR))
-                            {
-                                path = path + getEscapedName(jsPageName);
-                            }
-                            else
-                            {
-                                path = path + Folder.PATH_SEPARATOR
-                                        + getEscapedName(jsPageName);
-                            }
-                            Page page = pageManager.newPage(path);
-                            if ( layout == null || layout.length() == 0 )
-                            {
-                                layout = requestPage.getRootFragment().getName();
-                            }
-                            page.getRootFragment().setName(layout);
-                            page.setDefaultDecorator(requestPage.getDefaultDecorator(Fragment.LAYOUT), Fragment.LAYOUT);
-                            page.setDefaultDecorator(requestPage.getDefaultDecorator(Fragment.PORTLET), Fragment.PORTLET);
-                            page.setTitle(jsPageTitle != null && !jsPageTitle.equals("") ? jsPageTitle : jsPageName);
-                            page.setShortTitle(jsPageShortTitle != null
-                                            && !jsPageShortTitle.equals("") ? jsPageShortTitle
-                                            : jsPageName);
-                            pageManager.updatePage(page);
-                            clearLayoutAttributes(request);                            
-                            List orderList = parent.getDocumentOrder();
-                            if (orderList != null)
-                            {
-                                String name = page.getName();
-                                if (orderList.indexOf(name) < 0)
-                                {
-                                    orderList.add(name);
-                                    parent.setDocumentOrder(orderList);
-                                    pageManager.updateFolder(parent);
-                                }
-                            }
-                        }
+                    {
+                        requestPage.newSiblingPage(getEscapedName(jsPageName), layout, jsPageTitle, jsPageShortTitle);
                     }
                     catch (Exception e)
                     {
@@ -342,16 +309,7 @@
                         .getParameter("jsPageShortTitle");
                 try
                 {
-                    if (jsPageTitle != null && !jsPageTitle.equals(""))
-                    {
-                        requestPage.setTitle(jsPageTitle);
-                    }
-                    if (jsPageShortTitle != null
-                            && !jsPageShortTitle.equals(""))
-                    {
-                        requestPage.setShortTitle(jsPageShortTitle);
-                    }
-                    pageManager.updatePage(requestPage);
+                    requestPage.updateTitles(jsPageTitle, jsPageShortTitle);
                 }
                 catch (Exception e)
                 {
@@ -366,23 +324,7 @@
             {
                 try
                 {
-                    Folder parent = (Folder)requestPage.getParent();
-                    pageManager.removePage(requestPage);
-                    
-                    if (parent != null)
-                    {
-                        List orderList = parent.getDocumentOrder();
-                        if (orderList != null)
-                        {
-                            String name = requestPage.getName();
-                            if (orderList.indexOf(name) > -1)
-                            {
-                                orderList.remove(name);
-                                parent.setDocumentOrder(orderList);
-                                pageManager.updateFolder(parent);
-                            }
-                        }
-                    }
+                    requestPage.remove();
                 }
                 catch (Exception e)
                 {
@@ -395,47 +337,7 @@
             {
                 try
                 {
-                    Folder parent = (Folder) requestPage.getParent();
-                    if (parent != null)
-                    {
-                        List orderList = parent.getDocumentOrder();
-                        String name = requestPage.getName();
-                        if (orderList != null)
-                        {
-                            int index = orderList.indexOf(name);
-                            if (index > -1)
-                            {
-                                String type = requestPage.getType();
-                                int i = index - 1;
-                                while (i >= 0)
-                                {
-                                    String value = (String) orderList.get(i);
-                                    if (value.endsWith(type))
-                                    {
-                                        orderList.remove(index);
-                                        orderList.add(i, name);
-                                        parent.setDocumentOrder(orderList);
-                                        pageManager.updateFolder(parent);
-                                        break;
-                                    }
-                                    i--;
-                                }
-                            }
-                            else
-                            {
-                                orderList.add(name);
-                                parent.setDocumentOrder(orderList);
-                                pageManager.updateFolder(parent);
-                            }
-                        }
-                        else
-                        {
-                            orderList = new ArrayList(4);
-                            orderList.add(name);
-                            parent.setDocumentOrder(orderList);
-                            pageManager.updateFolder(parent);
-                        }
-                    }
+                    requestPage.decrementInDocumentOrder();
                 }
                 catch (Exception e)
                 {
@@ -450,47 +352,7 @@
             {
                 try
                 {
-                    Folder parent = (Folder) requestPage.getParent();
-                    if (parent != null)
-                    {
-                        List orderList = parent.getDocumentOrder();
-                        String name = requestPage.getName();
-                        if (orderList != null)
-                        {
-                            int index = orderList.indexOf(name);
-                            if (index > -1)
-                            {
-                                String type = requestPage.getType();
-                                int i = index + 1;
-                                while (i < orderList.size())
-                                {
-                                    String value = (String) orderList.get(i);
-                                    if (value.endsWith(type))
-                                    {
-                                        orderList.remove(index);
-                                        orderList.add(i, name);
-                                        parent.setDocumentOrder(orderList);
-                                        pageManager.updateFolder(parent);
-                                        break;
-                                    }
-                                    i++;
-                                }
-                            }
-                            else
-                            {
-                                orderList.add(name);
-                                parent.setDocumentOrder(orderList);
-                                pageManager.updateFolder(parent);
-                            }
-                        }
-                        else
-                        {
-                            orderList = new ArrayList(4);
-                            orderList.add(name);
-                            parent.setDocumentOrder(orderList);
-                            pageManager.updateFolder(parent);
-                        }
-                    }
+                    requestPage.incrementInDocumentOrder();
                 }
                 catch (Exception e)
                 {
@@ -506,97 +368,17 @@
                 String jsFolderName = request.getParameter("jsFolderName");
                 String jsFolderTitle = request.getParameter("jsFolderTitle");
                 String jsFolderShortTitle = request.getParameter("jsFolderShortTitle");
+                layout = request.getParameter("layout");
+                if ( ( layout == null ) || ( layout.length() == 0 ) )
+                {
+                    layout = requestPage.getRootFragment().getName();
+                }
                 if (jsFolderName != null && jsFolderName.length() > 0
                         && jsFolderName.indexOf(Folder.PATH_SEPARATOR) == -1)
                 {
                     try
                     {
-                        Folder parent = (Folder) requestPage.getParent();
-                        if (parent != null)
-                        {
-                            String path = parent.getPath();
-                            if (path.endsWith(Folder.PATH_SEPARATOR))
-                            {
-                                path = path + getEscapedName(jsFolderName);
-                            }
-                            else
-                            {
-                                path = path + Folder.PATH_SEPARATOR
-                                        + getEscapedName(jsFolderName);
-                            }
-                            Folder folder = pageManager.newFolder(path);
-                            if (layout == null || layout.length() == 0)
-                            {
-                                layout = requestPage.getRootFragment()
-                                        .getName();
-                            }
-                            folder.setDefaultDecorator(requestPage
-                                    .getDefaultDecorator(Fragment.LAYOUT),
-                                    Fragment.LAYOUT);
-                            folder.setDefaultDecorator(requestPage
-                                    .getDefaultDecorator(Fragment.PORTLET),
-                                    Fragment.PORTLET);
-                            folder
-                                    .setTitle(jsFolderTitle != null
-                                            && !jsFolderTitle.equals("") ? jsFolderTitle
-                                            : jsFolderName);
-                            folder
-                                    .setShortTitle(jsFolderShortTitle != null
-                                            && !jsFolderShortTitle.equals("") ? jsFolderShortTitle
-                                            : jsFolderName);
-                            pageManager.updateFolder(folder);
-
-                            List orderList = parent.getDocumentOrder();
-                            if (orderList != null)
-                            {
-                                String name = folder.getName();
-                                if (orderList.indexOf(name) < 0)
-                                {
-                                    orderList.add(name);
-                                    parent.setDocumentOrder(orderList);
-                                    pageManager.updateFolder(parent);
-                                }
-                            }
-
-                            // add default page
-                            path = folder.getPath();
-                            if (path.endsWith(Folder.PATH_SEPARATOR))
-                            {
-                                path = path + getEscapedName("default-page");
-                            }
-                            else
-                            {
-                                path = path + Folder.PATH_SEPARATOR
-                                        + getEscapedName("default-page");
-                            }
-                            Page page = pageManager.newPage(path);
-                            if (layout == null || layout.length() == 0)
-                            {
-                                layout = requestPage.getRootFragment()
-                                        .getName();
-                            }
-                            page.getRootFragment().setName(layout);
-                            page.setDefaultDecorator(requestPage
-                                    .getDefaultDecorator(Fragment.LAYOUT),
-                                    Fragment.LAYOUT);
-                            page.setDefaultDecorator(requestPage
-                                    .getDefaultDecorator(Fragment.PORTLET),
-                                    Fragment.PORTLET);
-                            page.setTitle(jsFolderName);
-                            pageManager.updatePage(page);
-
-                            orderList = folder.getDocumentOrder();
-                            if (orderList != null)
-                            {
-                                String name = page.getName();
-                                if (orderList.indexOf(name) < 0)
-                                {
-                                    orderList.add(name);
-                                    folder.setDocumentOrder(orderList);
-                                    pageManager.updateFolder(folder);
-                                }
-                            }
-                        }
+                        requestPage.newSiblingFolder(getEscapedName(jsFolderName), jsFolderTitle, jsFolderShortTitle, layout);
                     }
                     catch (Exception e)
                     {
@@ -615,21 +397,7 @@
                         .getParameter("jsFolderShortTitle");
                 try
                 {
-                    Folder parent = (Folder) requestPage.getParent();
-                    if (parent != null)
-                    {
-                        if (jsFolderTitle != null && !jsFolderTitle.equals(""))
-                        {
-                            parent.setTitle(jsFolderTitle);
-                        }
-                        if (jsFolderShortTitle != null
-                                && !jsFolderShortTitle.equals(""))
-                        {
-                            parent.setShortTitle(jsFolderShortTitle);
-                        }
-                        pageManager.updateFolder(parent);
-                    }
-
+                    requestPage.updateFolderTitles(jsFolderTitle, jsFolderShortTitle);
                 }
                 catch (Exception e)
                 {
@@ -644,25 +412,7 @@
             {
                 try
                 {
-                    Folder targetFolder = (Folder) requestPage.getParent();
-                    Folder parent = (Folder) targetFolder.getParent();
-                    if (parent != null)
-                    {
-                        List orderList = parent.getDocumentOrder();
-                        if (orderList != null)
-                        {
-                            String name = targetFolder.getName();
-                            if (orderList.indexOf(name) > -1)
-                            {
-                                orderList.remove(name);
-                                parent.setDocumentOrder(orderList);
-                                pageManager.updateFolder(parent);
-                            }
-                        }
-
-                        // do not remove if the folder is root.
-                        pageManager.removeFolder(targetFolder);
-                    }
+                    requestPage.removeFolder();
                 }
                 catch (Exception e)
                 {
@@ -677,48 +427,7 @@
             {
                 try
                 {
-                    Folder targetFolder = (Folder) requestPage.getParent();
-                    Folder parent = (Folder) targetFolder.getParent();
-                    if (parent != null)
-                    {
-                        List orderList = parent.getDocumentOrder();
-                        String name = targetFolder.getName();
-                        if (orderList != null)
-                        {
-                            int index = orderList.indexOf(name);
-                            if (index > -1)
-                            {
-                                int i = index - 1;
-                                while (i >= 0)
-                                {
-                                    String value = (String) orderList.get(i);
-                                    if (!value.endsWith(".psml")
-                                            && !value.endsWith(".link"))
-                                    {
-                                        orderList.remove(index);
-                                        orderList.add(i, name);
-                                        parent.setDocumentOrder(orderList);
-                                        pageManager.updateFolder(parent);
-                                        break;
-                                    }
-                                    i--;
-                                }
-                            }
-                            else
-                            {
-                                orderList.add(name);
-                                parent.setDocumentOrder(orderList);
-                                pageManager.updateFolder(parent);
-                            }
-                        }
-                        else
-                        {
-                            orderList = new ArrayList(4);
-                            orderList.add(name);
-                            parent.setDocumentOrder(orderList);
-                            pageManager.updateFolder(parent);
-                        }
-                    }
+                    requestPage.decrementFolderInDocumentOrder();
                 }
                 catch (Exception e)
                 {
@@ -733,48 +442,7 @@
             {
                 try
                 {
-                    Folder targetFolder = (Folder) requestPage.getParent();
-                    Folder parent = (Folder) targetFolder.getParent();
-                    if (parent != null)
-                    {
-                        List orderList = parent.getDocumentOrder();
-                        String name = targetFolder.getName();
-                        if (orderList != null)
-                        {
-                            int index = orderList.indexOf(name);
-                            if (index > -1)
-                            {
-                                int i = index + 1;
-                                while (i < orderList.size())
-                                {
-                                    String value = (String) orderList.get(i);
-                                    if (!value.endsWith(".psml")
-                                            && !value.endsWith(".link"))
-                                    {
-                                        orderList.remove(index);
-                                        orderList.add(i, name);
-                                        parent.setDocumentOrder(orderList);
-                                        pageManager.updateFolder(parent);
-                                        break;
-                                    }
-                                    i++;
-                                }
-                            }
-                            else
-                            {
-                                orderList.add(name);
-                                parent.setDocumentOrder(orderList);
-                                pageManager.updateFolder(parent);
-                            }
-                        }
-                        else
-                        {
-                            orderList = new ArrayList(4);
-                            orderList.add(name);
-                            parent.setDocumentOrder(orderList);
-                            pageManager.updateFolder(parent);
-                        }
-                    }
+                    requestPage.incrementFolderInDocumentOrder();
                 }
                 catch (Exception e)
                 {
@@ -786,12 +454,11 @@
             }
 
             String theme = request.getParameter("theme");
-            if ( theme != null && theme.length() > 0 && !theme.equals(requestPage.getDefaultDecorator(Fragment.LAYOUT)) )
+            if ( theme != null && theme.length() > 0 )
             {
-                requestPage.setDefaultDecorator(theme, Fragment.LAYOUT);
                 try
                 {
-                    pageManager.updatePage(requestPage);
+                    requestPage.updateDefaultDecorator(theme, Fragment.LAYOUT);
                 }
                 catch (Exception e)
                 {
@@ -808,114 +475,89 @@
                 {
                     int moveCode = Integer.parseInt(move);                    
                     PortletWindow window = requestContext.getActionWindow();
-                    Fragment currentFragment = requestPage.getFragmentById(window.getId().toString());
-                    Fragment fragmentToMove = requestPage.getFragmentById(fragmentId);
-                    
-                    if ( currentFragment == null || fragmentToMove == null )
+                    ContentFragment currentFragment = requestPage.getFragmentById(window.getId().toString());
+                    ContentFragment fragmentToMove = requestPage.getFragmentById(fragmentId);                    
+                    if ( currentFragment != null && fragmentToMove != null )
                     {
-                        // ignore no longer consistent page definition
-                        return;
-                    }
-                    
-                    ColumnLayout columnLayout;
-                    try
-                    {
-                        columnLayout = new ColumnLayout(numColumns, layoutType, currentFragment.getFragments(), null);
-                        columnLayout.addLayoutEventListener(new PageManagerLayoutEventListener(pageManager, requestPage, layoutType));
-                    }
-                    catch (LayoutEventException e1)
-                    {
-                        throw new PortletException("Failed to build ColumnLayout "+e1.getMessage(), e1);
-                    }
-
-                    try
-                    {                
-                        switch (moveCode)
+                        ColumnLayout columnLayout;
+                        try
                         {
-                        case LayoutEvent.MOVED_UP:
-                            columnLayout.moveUp(fragmentToMove);
-                            break;
-                        case LayoutEvent.MOVED_DOWN:
-                            columnLayout.moveDown(fragmentToMove);
-                            break;
-                        case LayoutEvent.MOVED_RIGHT:
-                            columnLayout.moveRight(fragmentToMove);
-                            break;
-                        case LayoutEvent.MOVED_LEFT:
-                            columnLayout.moveLeft(fragmentToMove);
-                            break;
-                        default:
-                            throw new PortletException("Invalid movement code " + moveCode);
+                            columnLayout = new ColumnLayout(numColumns, layoutType, currentFragment.getFragments(), null);
+                            columnLayout.addLayoutEventListener(new PageLayoutEventListener(layoutType));
                         }
-                       
-                    }
-                    catch (SecurityException se)
-                    {
-                        // ignore page security constraint violations, only
-                        // permitted users can edit managed pages; page
-                        // update will remain transient
-                        log.info("Unable to update page " + requestPage.getId() + " layout due to security permission/constraint.", se);
-                    }
-                    catch (Exception e)
-                    {
-                        if (e instanceof PortletException)
+                        catch (LayoutEventException e1)
                         {
-                            throw (PortletException)e;
+                            throw new PortletException("Failed to build ColumnLayout "+e1.getMessage(), e1);
+                        }
+
+                        try
+                        {                
+                            switch (moveCode)
+                            {
+                            case LayoutEvent.MOVED_UP:
+                                columnLayout.moveUp(fragmentToMove);
+                                break;
+                            case LayoutEvent.MOVED_DOWN:
+                                columnLayout.moveDown(fragmentToMove);
+                                break;
+                            case LayoutEvent.MOVED_RIGHT:
+                                columnLayout.moveRight(fragmentToMove);
+                                break;
+                            case LayoutEvent.MOVED_LEFT:
+                                columnLayout.moveLeft(fragmentToMove);
+                                break;
+                            default:
+                                throw new PortletException("Invalid movement code " + moveCode);
+                            }
+                           
+                        }
+                        catch (SecurityException se)
+                        {
+                            // ignore page security constraint violations, only
+                            // permitted users can edit managed pages; page
+                            // update will remain transient
+                            log.info("Unable to update page " + requestPage.getId() + " layout due to security permission/constraint.", se);
                         }
-                        else
+                        catch (Exception e)
                         {
-                            throw new PortletException("Unable to process layout for page " + requestPage.getId() + " layout: " + e.toString(), e);
+                            if (e instanceof PortletException)
+                            {
+                                throw (PortletException)e;
+                            }
+                            else
+                            {
+                                throw new PortletException("Unable to process layout for page " + requestPage.getId() + " layout: " + e.toString(), e);
+                            }
                         }
                     }
+                    
                     return;
                 }
                 
                 String remove = request.getParameter("remove");
                 if ( remove != null && remove.length() > 0 )
                 {
-                    Page page = null;
                     try
                     {
-                        // TODO: for now retrieve the real Page instead of ContentPage
-                        //       because removing fragments isn't working through the ContentFragment wrapping
-                        page = pageManager.getPage(requestPage.getPath());
+                        requestPage.removeFragment(fragmentId);
                     }
                     catch (Exception e)
                     {
-                        throw new PortletException("Unable to retrieve page "+requestPage.getId(),e);
-                    }
-
-                    PortletWindow window = requestContext.getActionWindow();
-                    Fragment currentFragment = page.getFragmentById(window.getId().toString());
-
-                    if ( currentFragment == null )
-                    {
-                        // ignore no longer consistent page definition
-                        return;
+                        throw new PortletException("Unable to update page to remove fragment: "+e.getMessage(), e);
                     }
-                    
-                    removeFragment(page, currentFragment, fragmentId);
                     return;
                 }
                 
                 String decorator = request.getParameter("decorator");
                 if ( decorator != null )
                 {
-                    Fragment fragment = requestPage.getFragmentById(fragmentId);
-
-                    if ( fragment == null )
-                    {
-                        // ignore no longer consistent page definition
-                        return;
-                    }
-                    
-                    if (decorator.trim().length() == 0)
-                        fragment.setDecorator(null);
-                    else
-                        fragment.setDecorator(decorator);
                     try
                     {
-                        pageManager.updatePage(requestPage);
+                        ContentFragment fragment = requestPage.getFragmentById(fragmentId);
+                        if ( fragment != null )
+                        {
+                            fragment.updateDecorator(decorator);
+                        }
                     }
                     catch (Exception e)
                     {
@@ -929,8 +571,8 @@
             String jsChangeUserPagesTheme = request.getParameter("jsChangeUserPagesTheme");
             if ( jsChangeUserPagesTheme != null )
             {
-               String user_pages_theme = request.getParameter("user_pages_theme");
-               try
+                String user_pages_theme = request.getParameter("user_pages_theme");
+                try
                 {
                    Folder f = pageManager.getUserFolder(request.getRemoteUser());
                    applyStyle(f,user_pages_theme,Fragment.LAYOUT);
@@ -940,50 +582,48 @@
                    throw new PortletException("Unable to update folder for defUserLayoutDeco decorator: "+e.getMessage(), e);
                 }
                 return;
-            }                
+            }
+            
             String jsChangeUserPortletsDeco = request.getParameter("jsChangeUserPortletsDeco");
             if ( jsChangeUserPortletsDeco != null )
             {                  
-               String user_portlets_deco = request.getParameter("user_portlets_deco");
-               try
+                String user_portlets_deco = request.getParameter("user_portlets_deco");
+                try
                 {
                    Folder f = pageManager.getUserFolder(request.getRemoteUser());
                    applyStyle(f,user_portlets_deco,Fragment.PORTLET);
                 }
-               catch (Exception e)
+                catch (Exception e)
                 {
                     throw new PortletException("Unable to update folder for defUserPortletDeco decorator: "+e.getMessage(), e);
                 }
                return;
-            }                                
+            }
             
             String jsChangeThemeAll = request.getParameter("jsChangeThemeAll");
             if (jsChangeThemeAll != null)
             {
                 String decorators = request.getParameter("decorators");                
-                String fragment_Id = request.getParameter("fragment");
-                Iterator fragmentsIter = requestPage.getFragmentById(fragment_Id).getFragments().iterator();
-                while(fragmentsIter.hasNext())
+                String targetFragmentId = request.getParameter("fragment");
+                ContentFragment targetFragment = requestPage.getFragmentById(targetFragmentId);
+                if (targetFragment != null)
                 {
-                    Fragment fragment = (Fragment) fragmentsIter.next();
-                    if ( fragment == null )
+                    Iterator fragmentsIter = targetFragment.getFragments().iterator();
+                    while (fragmentsIter.hasNext())
                     {
-                        // ignore no longer consistent page definition
-                        return;
+                        ContentFragment fragment = (ContentFragment) fragmentsIter.next();
+                        if (fragment != null )
+                        {
+                            try
+                            {
+                                fragment.updateDecorator(decorators);
+                            }
+                            catch (Exception e)
+                            {
+                                throw new PortletException("Unable to update page for fragment decorator: "+e.getMessage(), e);
+                            }
+                        }
                     }
-                    
-                    if (decorators.trim().length() == 0)
-                        fragment.setDecorator(null);
-                    else
-                        fragment.setDecorator(decorators);
-                }
-                try
-                {
-                    pageManager.updatePage(requestPage);
-                }
-                catch (Exception e)
-                {
-                    throw new PortletException("Unable to update page for fragment decorator: "+e.getMessage(), e);
                 }
                 return;
             }                
@@ -992,22 +632,25 @@
             if ( portlets != null && portlets.length() > 0 )
             {
                 PortletWindow window = requestContext.getActionWindow();
-                Fragment targetFragment = requestPage.getFragmentById(window.getId().toString());
-
-                if ( targetFragment == null )
+                ContentFragment targetFragment = requestPage.getFragmentById(window.getId().toString());
+                if ( targetFragment != null )
                 {
-                    // ignore no longer consistent page definition
-                    return;
-                }
-                
-                StringTokenizer tokenizer = new StringTokenizer(portlets, ",");            
-                while (tokenizer.hasMoreTokens())
-                {
-                    String portlet = tokenizer.nextToken();
-                    if (portlet.startsWith("box_"))
+                    StringTokenizer tokenizer = new StringTokenizer(portlets, ",");            
+                    while (tokenizer.hasMoreTokens())
                     {
-                        portlet = portlet.substring("box_".length());                        
-                        addPortletToPage(requestPage, targetFragment, portlet);
+                        String portlet = tokenizer.nextToken();
+                        if (portlet.startsWith("box_"))
+                        {
+                            portlet = portlet.substring("box_".length());                        
+                            try
+                            {
+                                targetFragment.addPortlet(ContentFragment.PORTLET, portlet);
+                            }
+                            catch (Exception e)
+                            {
+                                throw new PortletException("Unable to add portlet fragment to page: "+e.getMessage(), e);
+                            }
+                        }
                     }
                 }
                 return;
@@ -1023,43 +666,6 @@
         request.getPortletSession().removeAttribute(PortalReservedParameters.PAGE_LAYOUT_HELP);
     }
 
-    protected int getFragmentNestingLevel(Page page, String fragmentId)
-    {
-        Fragment root = page.getRootFragment();
-        if ( root.getId().equals(fragmentId) )
-        {
-            return 0;
-        }
-        else
-        {
-            return getFragmentNestingLevel(root, 1, fragmentId);
-        }
-    }
-    
-    protected int getFragmentNestingLevel(Fragment parent, int level, String fragmentId)
-    {
-        Iterator iter = parent.getFragments().iterator();
-        Fragment child;
-        int childLevel;
-        while ( iter.hasNext() )
-        {
-            child = (Fragment)iter.next();
-            if (child.getId().equals(fragmentId))
-            {
-                return level;
-            }
-            else
-            {
-                childLevel = getFragmentNestingLevel(child, level+1, fragmentId);
-                if ( childLevel != -1 )
-                {
-                    return childLevel;
-                }
-            }
-        }
-        return -1;
-    }
-
     protected String getEscapedName(String pageName)
     {
         try

Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-layout-portlets/src/test/java/org/apache/jetspeed/portlets/layout/TestColumnLayout.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-layout-portlets/src/test/java/org/apache/jetspeed/portlets/layout/TestColumnLayout.java?rev=881862&r1=881861&r2=881862&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-layout-portlets/src/test/java/org/apache/jetspeed/portlets/layout/TestColumnLayout.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-layout-portlets/src/test/java/org/apache/jetspeed/portlets/layout/TestColumnLayout.java Wed Nov 18 18:24:48 2009
@@ -18,8 +18,8 @@
 
 import java.util.Iterator;
 
-import org.apache.jetspeed.om.page.Fragment;
-import org.apache.jetspeed.om.page.psml.FragmentImpl;
+import org.apache.jetspeed.om.page.ContentFragment;
+import org.apache.jetspeed.om.page.impl.ContentFragmentImpl;
 import org.jmock.Mock;
 import org.jmock.MockObjectTestCase;
 
@@ -29,19 +29,19 @@
     
     private ColumnLayout layout;
 
-    private FragmentImpl f1;
+    private ContentFragmentImpl f1;
 
-    private FragmentImpl f2;
+    private ContentFragmentImpl f2;
 
-    private FragmentImpl f3;
+    private ContentFragmentImpl f3;
 
-    private FragmentImpl f4;
+    private ContentFragmentImpl f4;
 
-    private FragmentImpl f5;
+    private ContentFragmentImpl f5;
 
-    private FragmentImpl f6;
+    private ContentFragmentImpl f6;
     
-    private FragmentImpl f8;
+    private ContentFragmentImpl f8;
 
     public void testBasics() throws Exception
     {
@@ -61,7 +61,7 @@
         while (column0.hasNext())
         {
             idx++;
-            Fragment fragment = (Fragment) column0.next();
+            ContentFragment fragment = (ContentFragment) column0.next();
             assertEquals("f" + idx, fragment.getId());
         }
 
@@ -71,7 +71,7 @@
         assertEquals(f5, column1.next());
         assertEquals(f6, column1.next());
 
-        Fragment testFragment = layout.getFragmentAt(new LayoutCoordinate(0, 0));
+        ContentFragment testFragment = layout.getFragmentAt(new LayoutCoordinate(0, 0));
         assertNotNull(testFragment);
         assertEquals(f1, testFragment);
 
@@ -102,14 +102,12 @@
 
     public void testSameRowSameColumn() throws Exception
     {
-        FragmentImpl f1 = new FragmentImpl();
-        f1.setId("f1");
+        ContentFragmentImpl f1 = new ContentFragmentImpl("f1");
         f1.setName("test");
         f1.setLayoutRow(0);
         f1.setLayoutColumn(0);
 
-        FragmentImpl f2 = new FragmentImpl();
-        f2.setId("f2");
+        ContentFragmentImpl f2 = new ContentFragmentImpl("f2");
         f2.setName("test");
         f2.setLayoutRow(0);
         f2.setLayoutColumn(0);
@@ -124,7 +122,7 @@
         assertEquals(f2, column0.next());
         assertEquals(f1, column0.next());
 
-        Fragment testFragment = layout.getFragmentAt(0, 1);
+        ContentFragment testFragment = layout.getFragmentAt(0, 1);
         assertNotNull(testFragment);
         assertEquals(f1, testFragment);
 
@@ -136,14 +134,12 @@
 
     public void testColumnNotSet() throws Exception
     {
-        FragmentImpl f1 = new FragmentImpl();
-        f1.setId("f1");
+        ContentFragmentImpl f1 = new ContentFragmentImpl("f1");
         f1.setName("test");
         f1.setLayoutRow(0);
         f1.setLayoutColumn(0);
 
-        FragmentImpl f2 = new FragmentImpl();
-        f2.setId("f2");
+        ContentFragmentImpl f2 = new ContentFragmentImpl("f2");
         f2.setName("test");
         f2.setLayoutRow(0);
 
@@ -151,7 +147,7 @@
         layout.addFragment(f1);
         layout.addFragment(f2);
 
-        Fragment testFragment = layout.getFragmentAt(0, 0);
+        ContentFragment testFragment = layout.getFragmentAt(0, 0);
         assertNotNull(testFragment);
         assertEquals(f1, testFragment);
 
@@ -165,14 +161,12 @@
 
     public void testRowNotSet() throws Exception
     {
-        FragmentImpl f1 = new FragmentImpl();
-        f1.setId("f1");
+        ContentFragmentImpl f1 = new ContentFragmentImpl("f1");
         f1.setName("test");
         f1.setLayoutRow(0);
         f1.setLayoutColumn(0);
 
-        FragmentImpl f2 = new FragmentImpl();
-        f2.setId("f2");
+        ContentFragmentImpl f2 = new ContentFragmentImpl("f2");
         f2.setName("test");
         f2.setLayoutColumn(0);
 
@@ -180,7 +174,7 @@
         layout.addFragment(f1);
         layout.addFragment(f2);
 
-        Fragment testFragment = layout.getFragmentAt(0, 0);
+        ContentFragment testFragment = layout.getFragmentAt(0, 0);
         assertNotNull(testFragment);
         assertEquals(f1, testFragment);
 
@@ -191,8 +185,7 @@
 
     public void testColumnLimitExceeded() throws Exception
     {
-        FragmentImpl f1 = new FragmentImpl();
-        f1.setId("f1");
+        ContentFragmentImpl f1 = new ContentFragmentImpl("f1");
         f1.setLayoutRow(0);
         f1.setLayoutColumn(5);
 
@@ -200,15 +193,14 @@
         layout.addFragment(f1);
 
         // Exceeded columns just get dumped into the last column
-        Fragment testFragment = layout.getFragmentAt(2, 0);
+        ContentFragment testFragment = layout.getFragmentAt(2, 0);
         assertNotNull(testFragment);
         assertEquals(f1, testFragment);
     }
 
     public void testMovingRight() throws Exception
     {
-
-        Fragment movingFragment = layout.getFragmentAt(new LayoutCoordinate(0, 0));
+        ContentFragment movingFragment = layout.getFragmentAt(new LayoutCoordinate(0, 0));
         assertEquals(f1, movingFragment);
         assertEquals(f4, layout.getFragmentAt(new LayoutCoordinate(1, 0)));
 
@@ -235,7 +227,7 @@
 
     public void testMovingLeft() throws Exception
     {
-        Fragment movingFragment = layout.getFragmentAt(new LayoutCoordinate(1, 0));
+        ContentFragment movingFragment = layout.getFragmentAt(new LayoutCoordinate(1, 0));
         assertEquals(f4, movingFragment);
         assertEquals(f1, layout.getFragmentAt(new LayoutCoordinate(0, 0)));
         
@@ -293,8 +285,7 @@
 
         // This is a test to make sure the next row pointer is being decremented
         // correctly
-        FragmentImpl f7 = new FragmentImpl();
-        f7.setId("f7");
+        ContentFragmentImpl f7 = new ContentFragmentImpl("f7");
         f7.setName("test");
         f7.setLayoutRow(0);
         f7.setLayoutColumn(1);
@@ -314,7 +305,7 @@
         assertEquals(f6, layout.getFragmentAt(new LayoutCoordinate(0, 2)));
         assertEquals(f7, layout.getFragmentAt(new LayoutCoordinate(1, 0)));
 
-        // test that column consistency is maitained
+        // test that column consistency is maintained
         Iterator itr1 = layout.getColumn(1).iterator();
 
         itr1.next().equals(f7);
@@ -331,7 +322,7 @@
 
     public void testInvalidOperations() throws Exception
     {
-        // Create a mock that veridies events are NOT being fired on invalid operations
+        // Create a mock that verifies events are NOT being fired on invalid operations
         Mock listenerMock = mock(LayoutEventListener.class);
         layout.addLayoutEventListener((LayoutEventListener) listenerMock.proxy());
         listenerMock.expects(never()).method("handleEvent").withAnyArguments();
@@ -420,44 +411,37 @@
 
     protected void setUp() throws Exception
     {
-        f1 = new FragmentImpl();
-        f1.setId("f1");
+        f1 = new ContentFragmentImpl("f1");
         f1.setName("test");
         f1.setLayoutRow(0);
         f1.setLayoutColumn(0);
 
-        f2 = new FragmentImpl();
-        f2.setId("f2");
+        f2 = new ContentFragmentImpl("f2");
         f2.setName("test");
         f2.setLayoutRow(1);
         f2.setLayoutColumn(0);
 
-        f3 = new FragmentImpl();
-        f3.setId("f3");
+        f3 = new ContentFragmentImpl("f3");
         f3.setName("test");
         f3.setLayoutRow(2);
         f3.setLayoutColumn(0);
         
-        f4 = new FragmentImpl();
-        f4.setId("f4");
+        f4 = new ContentFragmentImpl("f4");
         f4.setName("test");
         f4.setLayoutRow(0);
         f4.setLayoutColumn(1);
         
-        f5 = new FragmentImpl();
-        f5.setId("f5");
+        f5 = new ContentFragmentImpl("f5");
         f5.setName("test");
         f5.setLayoutRow(1);
         f5.setLayoutColumn(1);
 
-        f6 = new FragmentImpl();
-        f6.setId("f6");
+        f6 = new ContentFragmentImpl("f6");
         f6.setName("test");
         f6.setLayoutRow(2);
         f6.setLayoutColumn(1);
         
-        f8 = new FragmentImpl();
-        f8.setId("f8");
+        f8 = new ContentFragmentImpl("f8");
         f8.setName("test");
         f8.setLayoutRow(1);
         f8.setLayoutColumn(2);
@@ -472,7 +456,7 @@
         layout.addFragment(f8);
     }
 
-    protected LayoutEvent createEvent(Fragment fragment, ColumnLayout layout, int eventType) throws Exception
+    protected LayoutEvent createEvent(ContentFragment fragment, ColumnLayout layout, int eventType) throws Exception
     {
         LayoutCoordinate fragmentOriginal = layout.getCoordinate(fragment);
         LayoutCoordinate fragmentNew;

Propchange: portals/jetspeed-2/portal/trunk/components/jetspeed-page-layout/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Nov 18 18:24:48 2009
@@ -0,0 +1,4 @@
+.project
+.settings
+target
+.classpath

Added: portals/jetspeed-2/portal/trunk/components/jetspeed-page-layout/pom.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-page-layout/pom.xml?rev=881862&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-page-layout/pom.xml (added)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-layout/pom.xml Wed Nov 18 18:24:48 2009
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+    
+    http://www.apache.org/licenses/LICENSE-2.0
+    
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+    
+    $Id: pom.xml 777775 2009-05-23 02:41:18Z taylor $
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    
+    <modelVersion>4.0.0</modelVersion>
+    <prerequisites>
+        <maven>2.0.9</maven>
+    </prerequisites>
+    
+    <artifactId>jetspeed-page-layout</artifactId>
+    <name>Jetspeed-2 Page Layout</name>
+    <description>Portal Page Layout component implementation.</description>
+    <parent>
+        <groupId>org.apache.portals.jetspeed-2</groupId>
+        <artifactId>components</artifactId>
+        <version>2.2.1-SNAPSHOT</version>
+    </parent>
+    <packaging>jar</packaging>
+
+    <!-- Dependencies -->
+
+    <dependencies>
+
+        <!-- Build Dependencies -->
+        <dependency>
+            <groupId>${pom.groupId}</groupId>
+            <artifactId>jetspeed-api</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>${pom.groupId}</groupId>
+            <artifactId>jetspeed-commons</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>${pom.groupId}</groupId>
+            <artifactId>jetspeed-page-manager</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+        </dependency>
+        
+        <!-- Test Dependencies -->
+        <dependency>
+          <groupId>org.slf4j</groupId>
+          <artifactId>slf4j-log4j12</artifactId>
+          <scope>test</scope>
+        </dependency>
+
+    </dependencies>
+
+</project>

Added: portals/jetspeed-2/portal/trunk/components/jetspeed-page-layout/src/main/java/org/apache/jetspeed/layout/impl/PageLayoutComponentException.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-page-layout/src/main/java/org/apache/jetspeed/layout/impl/PageLayoutComponentException.java?rev=881862&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-page-layout/src/main/java/org/apache/jetspeed/layout/impl/PageLayoutComponentException.java (added)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-layout/src/main/java/org/apache/jetspeed/layout/impl/PageLayoutComponentException.java Wed Nov 18 18:24:48 2009
@@ -0,0 +1,43 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jetspeed.layout.impl;
+
+public class PageLayoutComponentException extends RuntimeException
+{
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * Create page layout component runtime exception with message.
+     * 
+     * @param message exception message
+     */
+    public PageLayoutComponentException(String message)
+    {
+        super(message);
+    }
+
+    /**
+     * Create page layout component exception with message.
+     * 
+     * @param message exception message
+     * @param cause exception cause
+     */
+    public PageLayoutComponentException(String message, Throwable cause)
+    {
+        super(message, cause);
+    }
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org