Author: taylor
Date: Fri Jan 29 03:54:27 2010
New Revision: 904370

URL: http://svn.apache.org/viewvc?rev=904370&view=rev
Log:
implementing space maintenance with security refs only

Modified:
    
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/PageNavigator.java
    
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/SpaceBean.java
    
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/SpaceNavigator.java
    
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/SpacesList.java
    
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/SpacesManager.java
    
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/toolbox/ThemeBean.java
    
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/spaces/page-navigator.jsp
    
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/spaces/spaces-list.jsp
    
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/spaces/spaces-manager.jsp
    
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/spaces/SpaceImpl.java
    
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/spaces/SpacesServiceImpl.java
    
portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/spaces/Space.java

Modified: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/PageNavigator.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/PageNavigator.java?rev=904370&r1=904369&r2=904370&view=diff
==============================================================================
--- 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/PageNavigator.java
 (original)
+++ 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/PageNavigator.java
 Fri Jan 29 03:54:27 2010
@@ -130,18 +130,18 @@
     public void doView(RenderRequest request, RenderResponse response)
             throws PortletException, IOException
     {    
-        String newSpace = 
(String)PortletMessaging.consume(request,"PageNavigator", "spaceChange");
+        String newSpace = (String)PortletMessaging.consume(request, 
SpacesManager.MSG_TOPIC_PAGE_NAV, SpacesManager.MSG_SPACE_CHANGE);
         if (newSpace != null)
         {
-            request.getPortletSession().removeAttribute("spaces");
+            
request.getPortletSession().removeAttribute(SpaceNavigator.ATTRIBUTE_SPACES);
             request.getPortletSession().removeAttribute("pages");
             request.getPortletSession().removeAttribute("links");
-            request.getPortletSession().removeAttribute("space");
+            
request.getPortletSession().removeAttribute(SpaceNavigator.ATTRIBUTE_SPACE);
         }
         SpaceChangeContext scc = SpaceNavigator.changeSpace(request, 
spacesService, newSpace);      
-        request.setAttribute("space", scc.getSpace());
-        request.setAttribute("spaces", scc.getSpaces());        
-        request.setAttribute("pageNavigator", this);        
+        request.setAttribute(SpaceNavigator.ATTRIBUTE_SPACE, scc.getSpace());
+        request.setAttribute(SpaceNavigator.ATTRIBUTE_SPACES, 
scc.getSpaces());        
+        request.setAttribute(SpacesManager.MSG_TOPIC_PAGE_NAV, this);        
         request.setAttribute("spaceMenuElements", 
getSpaceMenuElements(scc.getSpace(), request));
         request.setAttribute("spaceLinkElements", 
getSpaceLinkMenuElements(scc.getSpace(), request));        
         super.doView(request, response);
@@ -154,7 +154,7 @@
         
         if (addPage != null)
         {
-            SpaceBean space = 
(SpaceBean)actionRequest.getPortletSession().getAttribute("space");
+            SpaceBean space = 
(SpaceBean)actionRequest.getPortletSession().getAttribute(SpaceNavigator.ATTRIBUTE_SPACE);
             
             if (space != null)
             {

Modified: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/SpaceBean.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/SpaceBean.java?rev=904370&r1=904369&r2=904370&view=diff
==============================================================================
--- 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/SpaceBean.java
 (original)
+++ 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/SpaceBean.java
 Fri Jan 29 03:54:27 2010
@@ -30,7 +30,16 @@
        private String title;
        private String description;
        private String theme;
+       private String constraint;
+       private boolean persisted = false;
        
+       public SpaceBean(String name, String owner)
+       {
+               this.name = name;
+               this.owner = owner;
+               this.path = "";
+       }
+
        public SpaceBean(Space s)
        {
                setName(s.getName());
@@ -38,7 +47,14 @@
        setOwner(s.getOwner());
        setTitle(s.getTitle());
        setDescription(s.getDescription());
-       setTheme(s.getTheme());         
+       setTheme(s.getTheme());
+       setSecurityConstraint(s.getSecurityConstraint());
+       persisted = true;
+       }
+       
+       public boolean isPersisted()
+       {
+               return persisted;
        }
        
        public String getName() {
@@ -77,4 +93,10 @@
        public void setTheme(String theme) {
                this.theme = theme;
        }
+       public String getSecurityConstraint() {
+               return constraint;
+       }
+       public void setSecurityConstraint(String constraint) {
+               this.constraint = constraint;
+       }       
 }

Modified: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/SpaceNavigator.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/SpaceNavigator.java?rev=904370&r1=904369&r2=904370&view=diff
==============================================================================
--- 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/SpaceNavigator.java
 (original)
+++ 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/SpaceNavigator.java
 Fri Jan 29 03:54:27 2010
@@ -45,6 +45,8 @@
  */
 public class SpaceNavigator extends GenericServletPortlet
 {
+    public static final String ATTRIBUTE_SPACES = "spaces";
+    public static final String ATTRIBUTE_SPACE = "space";
     public static final String NEW_SPACE_PATH_PREF = "newSpacePath";
     public static final String NEW_SPACE_PATH_DEFAULT = "/spaces.psml";
 
@@ -69,30 +71,30 @@
     public void doView(RenderRequest request, RenderResponse response)
             throws PortletException, IOException
     {    
-        String spaceName = 
(String)PortletMessaging.consume(request,"SpaceNavigator", "spaceChange");
+        String spaceName = (String)PortletMessaging.consume(request, 
SpacesManager.MSG_TOPIC_SPACE_NAV, SpacesManager.MSG_SPACE_CHANGE);
         if (spaceName != null)
         {
-            request.getPortletSession().removeAttribute("spaces");
-            request.getPortletSession().removeAttribute("space");
+            
request.getPortletSession().removeAttribute(SpaceNavigator.ATTRIBUTE_SPACES);
+            
request.getPortletSession().removeAttribute(SpaceNavigator.ATTRIBUTE_SPACE);
         }
         SpaceChangeContext scc = changeSpace(request, spacesService, 
spaceName);
-        request.setAttribute("space", scc.getSpace());
-        request.setAttribute("spaces", scc.getSpaces());
+        request.setAttribute(SpaceNavigator.ATTRIBUTE_SPACE, scc.getSpace());
+        request.setAttribute(SpaceNavigator.ATTRIBUTE_SPACES, scc.getSpaces());
         super.doView(request, response);
     }
         
     public void processAction(ActionRequest actionRequest, ActionResponse 
actionResponse) throws PortletException,
     IOException
     {
-        String spaceName = actionRequest.getParameter("space");
+        String spaceName = 
actionRequest.getParameter(SpaceNavigator.ATTRIBUTE_SPACE);
         if (spaceName != null)
         {
             Space space = getSpaceFromName(spaceName);
             if (space != null)
             {
                 String path = admin.getPortalURL(actionRequest, 
actionResponse, space.getPath());
-                actionRequest.getPortletSession().setAttribute("space", new 
SpaceBean(space));     
-                PortletMessaging.publish(actionRequest, "PageNavigator", 
"spaceChange", spaceName);
+                
actionRequest.getPortletSession().setAttribute(SpaceNavigator.ATTRIBUTE_SPACE, 
new SpaceBean(space));     
+                PortletMessaging.publish(actionRequest, 
SpacesManager.MSG_TOPIC_PAGE_NAV, SpacesManager.MSG_SPACE_CHANGE, spaceName);
                 actionResponse.sendRedirect(path);
             }
             return;
@@ -101,7 +103,7 @@
         if (navAction != null)
         {
             // TODO: make this link configurable. We need JetspeedLinks like 
in Jetspeed-1
-            PortletMessaging.cancel(actionRequest, "SpaceList", "spaceChange");
+            PortletMessaging.cancel(actionRequest, 
SpacesManager.MSG_TOPIC_SPACE_LIST, SpacesManager.MSG_SPACE_CHANGE);
             String newSpacePath = 
actionRequest.getPreferences().getValue(NEW_SPACE_PATH_PREF, 
NEW_SPACE_PATH_DEFAULT);                           
             String path = admin.getPortalURL(actionRequest, actionResponse, 
newSpacePath);
             actionResponse.sendRedirect(path);
@@ -150,7 +152,7 @@
     
     protected static SpaceChangeContext changeSpace(RenderRequest request, 
Spaces spacesService, String spaceName )
     {
-        List<SpaceBean> spaces = 
(List<SpaceBean>)request.getPortletSession().getAttribute("spaces");
+        List<SpaceBean> spaces = 
(List<SpaceBean>)request.getPortletSession().getAttribute(SpaceNavigator.ATTRIBUTE_SPACES);
         if (spaces == null)
         {
             // TODO: use environment
@@ -160,10 +162,10 @@
             {
                spaces.add(new SpaceBean(s));
             }
-            request.getPortletSession().setAttribute("spaces", spaces);        
+            
request.getPortletSession().setAttribute(SpaceNavigator.ATTRIBUTE_SPACES, 
spaces);        
         }        
         boolean changed = false;
-        SpaceBean space = 
(SpaceBean)request.getPortletSession().getAttribute("space");                
+        SpaceBean space = 
(SpaceBean)request.getPortletSession().getAttribute(SpaceNavigator.ATTRIBUTE_SPACE);
                
         if (space == null && spaceName != null)
         {
                space = findSpace(spaces, spaceName);
@@ -187,7 +189,7 @@
                changed = true;            
         }
         if (changed)
-            request.getPortletSession().setAttribute("space", space);
+            
request.getPortletSession().setAttribute(SpaceNavigator.ATTRIBUTE_SPACE, space);
        return new SpaceChangeContext(space, spaces);
     }
     

Modified: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/SpacesList.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/SpacesList.java?rev=904370&r1=904369&r2=904370&view=diff
==============================================================================
--- 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/SpacesList.java
 (original)
+++ 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/SpacesList.java
 Fri Jan 29 03:54:27 2010
@@ -29,8 +29,10 @@
 import javax.portlet.RenderResponse;
 
 import org.apache.jetspeed.CommonPortletServices;
+import org.apache.jetspeed.portlets.toolbox.ThemeBean;
 import org.apache.jetspeed.spaces.Space;
 import org.apache.jetspeed.spaces.Spaces;
+import org.apache.jetspeed.spaces.SpacesException;
 import org.apache.portals.bridges.common.GenericServletPortlet;
 import org.apache.portals.messaging.PortletMessaging;
 
@@ -60,7 +62,7 @@
     public void doView(RenderRequest request, RenderResponse response)
             throws PortletException, IOException
     {    
-        List<SpaceBean> spaces = 
(List<SpaceBean>)request.getPortletSession().getAttribute("spaces");
+        List<SpaceBean> spaces = 
(List<SpaceBean>)request.getPortletSession().getAttribute(SpaceNavigator.ATTRIBUTE_SPACES);
         if (spaces == null)
         {
             List<Space> sl = spacesService.listSpaces();
@@ -69,11 +71,11 @@
             {
                spaces.add(new SpaceBean(s));
             }            
-            request.getPortletSession().setAttribute("spaces", spaces);        
+            
request.getPortletSession().setAttribute(SpaceNavigator.ATTRIBUTE_SPACES, 
spaces);        
         }       
-        request.setAttribute("spaces", spaces);
-        String space = 
(String)request.getPortletSession().getAttribute("space");        
-        request.setAttribute("space", space);
+        request.setAttribute(SpaceNavigator.ATTRIBUTE_SPACES, spaces);
+        String space = 
(String)request.getPortletSession().getAttribute(SpaceNavigator.ATTRIBUTE_SPACE);
        
+        request.setAttribute(SpaceNavigator.ATTRIBUTE_SPACE, space);
         try
         {
             super.doView(request, response);
@@ -88,18 +90,46 @@
        public void processAction(ActionRequest request, ActionResponse 
response)
                        throws PortletException, IOException 
        {
-               String target = request.getParameter("edit");
-               if (target != null)
+               String spaceName = request.getParameter("edit");
+               if (spaceName != null)
                {
-            PortletMessaging.publish(request, "SpaceList", "spaceChange", 
target);                                     
+            PortletMessaging.publish(request, 
SpacesManager.MSG_TOPIC_SPACE_LIST, SpacesManager.MSG_SPACE_CHANGE, spaceName);
+               ThemeBean.clearThemesSession(request);            
                }
                else
                {
-                       target = request.getParameter("delete");
-                       if (target != null)
+                       spaceName = request.getParameter("delete");
+                       if (spaceName != null)
                        {
-                               //spacesService.removeSpace(null, target);
-                       }               
+                               Space space = 
spacesService.lookupSpace(spaceName);
+                               if (space != null)
+                               {
+                                       try
+                                       {
+                                               
spacesService.deleteSpace(space);
+                                               
request.getPortletSession().removeAttribute(SpaceNavigator.ATTRIBUTE_SPACES);
+                                   PortletMessaging.cancel(request, 
SpacesManager.MSG_TOPIC_SPACE_LIST, SpacesManager.MSG_SPACE_CHANGE);
+                               PortletMessaging.cancel(request, 
SpacesManager.MSG_TOPIC_SPACE_NAV, SpacesManager.MSG_SPACE_CHANGE);
+                               PortletMessaging.cancel(request, 
SpacesManager.MSG_TOPIC_PAGE_NAV, SpacesManager.MSG_SPACE_CHANGE);
+                               
request.getPortletSession().removeAttribute(SpaceNavigator.ATTRIBUTE_SPACES);
+                               
request.getPortletSession().removeAttribute(SpaceNavigator.ATTRIBUTE_SPACE);
+                               ThemeBean.clearThemesSession(request);          
                
+                                       }
+                                       catch (SpacesException e)
+                                       {
+                                               throw new PortletException(e);
+                                       }
+                               }
+                       }
+                       else
+                       {
+                               String add = request.getParameter("addspace");
+                               if (add != null)
+                               {
+                           PortletMessaging.cancel(request, 
SpacesManager.MSG_TOPIC_SPACE_LIST, SpacesManager.MSG_SPACE_CHANGE);
+                               ThemeBean.clearThemesSession(request);          
            
+                               }
+                       }
                }
        }
     

Modified: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/SpacesManager.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/SpacesManager.java?rev=904370&r1=904369&r2=904370&view=diff
==============================================================================
--- 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/SpacesManager.java
 (original)
+++ 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/SpacesManager.java
 Fri Jan 29 03:54:27 2010
@@ -17,13 +17,15 @@
 package org.apache.jetspeed.portlets.spaces;
 
 import java.io.IOException;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
 
 import javax.portlet.ActionRequest;
 import javax.portlet.ActionResponse;
 import javax.portlet.PortletConfig;
 import javax.portlet.PortletContext;
 import javax.portlet.PortletException;
-import javax.portlet.PortletSession;
 import javax.portlet.RenderRequest;
 import javax.portlet.RenderResponse;
 
@@ -31,6 +33,7 @@
 import org.apache.jetspeed.administration.PortalAdministration;
 import org.apache.jetspeed.decoration.DecorationFactory;
 import org.apache.jetspeed.om.folder.Folder;
+import org.apache.jetspeed.om.page.SecurityConstraintsDef;
 import org.apache.jetspeed.page.PageManager;
 import org.apache.jetspeed.portlets.toolbox.ThemeBean;
 import org.apache.jetspeed.spaces.Space;
@@ -40,6 +43,7 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+
 /**
  * Spaces Manager
  *
@@ -48,6 +52,10 @@
  */
 public class SpacesManager extends GenericServletPortlet 
 {
+    public static final String MSG_TOPIC_SPACE_LIST = "SpaceList";
+    public static final String MSG_TOPIC_SPACE_NAV =  "SpaceNavigator";
+    public static final String MSG_TOPIC_PAGE_NAV =  "PageNavigator";
+    public static final String MSG_SPACE_CHANGE = "spaceChange";
     
     private static final String DEFAULT_SPACE_TEMPLATE = "/_template/space";
     private static final String SPACE_TEMPLATE = "spaceTemplate";
@@ -94,46 +102,121 @@
             throws PortletException, IOException
     {
        Space space = null;
-        String current = (String)PortletMessaging.receive(request, 
"SpaceList", "spaceChange");                
+       SpaceBean spaceBean = null;
+        String current = (String)PortletMessaging.receive(request, 
SpacesManager.MSG_TOPIC_SPACE_LIST, SpacesManager.MSG_SPACE_CHANGE);            
    
         if (current != null)
         {
-               space = this.spacesService.lookupSpace(current);
+               space = spacesService.lookupSpace(current);
+               spaceBean = new SpaceBean(space);
         }
-        request.setAttribute("themes", ThemeBean.retrieveThemes(request, 
decorationFactory));
-        request.setAttribute("space", space);
+        if (space == null)
+        {
+               spaceBean = new SpaceBean("", "");
+               spaceBean.setDescription("");
+               spaceBean.setTitle("");
+               spaceBean.setSecurityConstraint("");
+               spaceBean.setTheme(ThemeBean.getDefaultTheme(request, 
decorationFactory));
+        }        
+        request.setAttribute("constraints", retrieveConstraints(request));
+        request.setAttribute("themes", ThemeBean.retrieveThemes(request, 
decorationFactory, spaceBean.getTheme()));
+        request.setAttribute(SpaceNavigator.ATTRIBUTE_SPACE, spaceBean);
         super.doView(request, response);        
     }
     
+    protected List<String> retrieveConstraints(RenderRequest request) throws 
PortletException
+    {
+       
+       List<String> result = 
(List<String>)request.getPortletSession().getAttribute("constraints");
+       if (result != null)
+               return result;          
+       result = new LinkedList<String>();
+       result.add("");
+        Iterator i;
+               try 
+               {                       
+                       i = 
this.pageManager.getPageSecurity().getSecurityConstraintsDefs().iterator();
+               } catch (Exception e) 
+               {
+                       throw new PortletException(e);
+               }
+        while (i.hasNext())
+        {
+               SecurityConstraintsDef def = (SecurityConstraintsDef)i.next();
+               result.add(def.getName());
+        }
+        request.getPortletSession().setAttribute("constraints", result);
+       return result;
+    }
+    
     public void processAction(ActionRequest actionRequest, ActionResponse 
actionResponse) throws PortletException,
     IOException
     {
+       String persisted = scrapeParameter(actionRequest, "spacePersisted");
+       boolean isNew = (persisted == null || persisted.equals("0") || 
persisted.equalsIgnoreCase("false"));
         String name = scrapeParameter(actionRequest, "spaceName");
         String title = scrapeParameter(actionRequest, "spaceTitle");
         String description = scrapeParameter(actionRequest, 
"spaceDescription");
-        String theme = scrapeParameter(actionRequest, "theme");        
+        String theme = scrapeParameter(actionRequest, "theme");
+        String constraint = scrapeParameter(actionRequest, 
"securityConstraintRef");
         if (name.length() > 0)
         {
             try
             {
-               String spaceName = name.replace(' ', '_');                
-                String templateFolderPath = 
actionRequest.getPreferences().getValue(SPACE_TEMPLATE, 
DEFAULT_SPACE_TEMPLATE);               
-                if (!pageManager.folderExists(templateFolderPath))
-                {
-                    throw new PortletException("Space template folder does not 
exist: " + templateFolderPath);
-                }                
-                Folder templateFolder = 
pageManager.getFolder(templateFolderPath);
-                String owner = actionRequest.getUserPrincipal().getName();
-                Space space = spacesService.newSpace(spaceName, owner);
-                space.setTheme(theme);
-                space.setTitle((title == null) ? name : title);                
-                space.setDescription((description == null) ? "" : description);
-                space = spacesService.storeSpaceFromTemplate(space, 
templateFolder);                
-                PortletMessaging.publish(actionRequest, "SpaceList", 
"spaceChange", name);                
-                PortletMessaging.publish(actionRequest, "SpaceNavigator", 
"spaceChange", name);
-                PortletMessaging.publish(actionRequest, "PageNavigator", 
"spaceChange", name);               
-                // redirect
-                String path = admin.getPortalURL(actionRequest, 
actionResponse, space.getPath());
-                actionResponse.sendRedirect(path);                        
+               if (isNew)
+               {
+                       // TODO: better validation
+                       String spaceName = name.replace(' ', '_');              
  
+                    String templateFolderPath = 
actionRequest.getPreferences().getValue(SPACE_TEMPLATE, 
DEFAULT_SPACE_TEMPLATE);               
+                    if (!pageManager.folderExists(templateFolderPath))
+                    {
+                        throw new PortletException("Space template folder does 
not exist: " + templateFolderPath);
+                    }                
+                    Folder templateFolder = 
pageManager.getFolder(templateFolderPath);
+                       String owner = 
actionRequest.getUserPrincipal().getName();
+                       Space space = spacesService.newSpace(spaceName, owner);
+                       space.setTheme(theme);
+                       space.setTitle((title == null) ? name : title);         
       
+                       space.setDescription((description == null) ? "" : 
description);
+                       if (!constraint.equals(""))
+                       {
+                               space.setSecurityConstraint(constraint);
+                       }
+                       space = spacesService.storeSpaceFromTemplate(space, 
templateFolder);                
+                       // redirect
+                       String path = admin.getPortalURL(actionRequest, 
actionResponse, space.getPath());
+                       actionResponse.sendRedirect(path);
+               }
+               else
+               {
+                    String owner = scrapeParameter(actionRequest, 
"spaceOwner");
+                    Space space = spacesService.lookupSpace(name);
+                    if (space != null)
+                    {
+                               space.setDescription(description);
+                               space.setTitle(title);
+                               space.setTheme(theme);
+                               if (constraint.equals(""))
+                               {
+                                       String old = 
space.getSecurityConstraint();
+                                       if (old != null)
+                                       {
+                                               if (!"".equals(old))
+                                                       
space.setSecurityConstraint(constraint);                                        
        
+                                       }
+                                               
+                               }
+                               else
+                               {
+                                       space.setSecurityConstraint(constraint);
+                               }                               
+                               spacesService.storeSpace(space);
+                    }
+               }
+                PortletMessaging.publish(actionRequest, 
SpacesManager.MSG_TOPIC_SPACE_LIST, SpacesManager.MSG_SPACE_CHANGE, name);      
          
+                PortletMessaging.publish(actionRequest, 
SpacesManager.MSG_TOPIC_SPACE_NAV, SpacesManager.MSG_SPACE_CHANGE, name);
+                PortletMessaging.publish(actionRequest, 
SpacesManager.MSG_TOPIC_PAGE_NAV, SpacesManager.MSG_SPACE_CHANGE, name);
+                
actionRequest.getPortletSession().removeAttribute(SpaceNavigator.ATTRIBUTE_SPACES);
+                
actionRequest.getPortletSession().removeAttribute(SpaceNavigator.ATTRIBUTE_SPACE);
             
             }
             catch (Exception e)
             {

Modified: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/toolbox/ThemeBean.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/toolbox/ThemeBean.java?rev=904370&r1=904369&r2=904370&view=diff
==============================================================================
--- 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/toolbox/ThemeBean.java
 (original)
+++ 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/toolbox/ThemeBean.java
 Fri Jan 29 03:54:27 2010
@@ -32,6 +32,7 @@
 public class ThemeBean implements Serializable
 {
     private static final long serialVersionUID = 1L;
+    public static final String ATTRIBUTE_THEMES = "jsThemes";
 
     private String name;
     private String title;
@@ -84,10 +85,19 @@
     {
         this.selected = selected;
     }
-    
+        
+    public static void clearThemesSession(PortletRequest request)
+    {
+        request.getPortletSession().removeAttribute(ATTRIBUTE_THEMES);         
+    }
+
     public static List<ThemeBean> retrieveThemes(PortletRequest request, 
DecorationFactory decorationFactory)
     {
-        List<ThemeBean> themes = 
(List<ThemeBean>)request.getPortletSession().getAttribute("themes");
+       return retrieveThemes(request, decorationFactory, null);
+    }
+    public static List<ThemeBean> retrieveThemes(PortletRequest request, 
DecorationFactory decorationFactory, String overrideTheme)
+    {
+        List<ThemeBean> themes = 
(List<ThemeBean>)request.getPortletSession().getAttribute(ATTRIBUTE_THEMES);
         if (themes != null)
         {
             return themes;
@@ -116,9 +126,11 @@
                 {
                     icon = "";
                 }
-                ThemeBean theme = new ThemeBean(decor.getName(), title, icon);
+                ThemeBean theme = new ThemeBean(decor.getName(), title, icon); 
               
                 Theme pageTheme = 
(Theme)rc.getRequest().getAttribute("org.apache.jetspeed.theme");
-                if 
(pageTheme.getPageLayoutDecoration().getName().equals(decor.getName()))
+                if (overrideTheme == null)
+                       overrideTheme = 
pageTheme.getPageLayoutDecoration().getName(); 
+                if (overrideTheme.equals(decor.getName()))
                     theme.setSelected(true);
                 themes.add(theme);
             }
@@ -126,5 +138,20 @@
         request.getPortletSession().setAttribute("themes", themes);
         return themes;
     }
-     
+
+    public static String getDefaultTheme(PortletRequest request, 
DecorationFactory decorationFactory)
+    {
+        RequestContext rc = (RequestContext) 
request.getAttribute(RequestContext.REQUEST_PORTALENV);            
+       Set<String> decorators = 
(Set<String>)decorationFactory.getPageDecorations(rc);
+        for (String name : decorators)
+        {
+            LayoutDecoration decor = 
decorationFactory.getLayoutDecoration(name, rc);
+            String compatibility = decor.getProperty("compatibility");
+            if (compatibility != null && compatibility.compareTo("2.2.1") >= 0)
+            {
+               return decor.getName();
+            }
+        }
+        return "jetspeed";
+    }
 }

Modified: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/spaces/page-navigator.jsp
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/spaces/page-navigator.jsp?rev=904370&r1=904369&r2=904370&view=diff
==============================================================================
--- 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/spaces/page-navigator.jsp
 (original)
+++ 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/spaces/page-navigator.jsp
 Fri Jan 29 03:54:27 2010
@@ -109,7 +109,7 @@
 }
 SpaceBean space = (SpaceBean) renderRequest.getAttribute("space");
 Locale locale = renderRequest.getLocale();
-PageNavigator pageNavigator = (PageNavigator) 
renderRequest.getAttribute("pageNavigator");
+PageNavigator pageNavigator = (PageNavigator) 
renderRequest.getAttribute("PageNavigator");
 List<MenuElement> menuElements = (List<MenuElement>) 
renderRequest.getAttribute("spaceMenuElements");
 List<MenuElement> linkElements = (List<MenuElement>) 
renderRequest.getAttribute("spaceLinkElements");
 %>

Modified: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/spaces/spaces-list.jsp
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/spaces/spaces-list.jsp?rev=904370&r1=904369&r2=904370&view=diff
==============================================================================
--- 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/spaces/spaces-list.jsp
 (original)
+++ 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/spaces/spaces-list.jsp
 Fri Jan 29 03:54:27 2010
@@ -26,6 +26,7 @@
        String current = ((String)renderRequest.getAttribute("space"));
        List<SpaceBean> spaces = 
(List<SpaceBean>)renderRequest.getAttribute("spaces");
 %>
+<form id='jsSpacesList' method="POST" action='<portlet:actionURL/>'>
 <table width='100%'>
      <tr>
       <th class="portlet-section-subheader"><fmt:message 
key="spaces.label.title"/></th>
@@ -43,7 +44,13 @@
        <td class="<%=style%>">&nbsp;</td>
           <td class="<%=style%>"><a href="<portlet:actionURL><portlet:param 
name='edit' value='<%=space.getName()%>'/></portlet:actionURL>"><fmt:message 
key="spaces.label.edit"/></a></td>
        <td class="<%=style%>">&nbsp;</td>
+<% 
+if (space.getPath().equals("/") || space.getPath().equals("/Administrative")) {
+%>
+          <td class="<%=style%>"></td>
+<% } else {  %>
           <td class="<%=style%>"><a href="<portlet:actionURL><portlet:param 
name='delete' value='<%=space.getName()%>'/></portlet:actionURL>"><fmt:message 
key="spaces.label.delete"/></a></td>
+<% } %>
      </tr>
 <%
 }
@@ -51,5 +58,9 @@
        <tr>
                <th class="portlet-section-header" colspan="6"></th>
        </tr>
+       <tr>
+       <td><input name='addspace' type="submit" value="Add Space" /></td>
+       </tr>
 </table>
+</form>
     

Modified: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/spaces/spaces-manager.jsp
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/spaces/spaces-manager.jsp?rev=904370&r1=904369&r2=904370&view=diff
==============================================================================
--- 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/spaces/spaces-manager.jsp
 (original)
+++ 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/spaces/spaces-manager.jsp
 Fri Jan 29 03:54:27 2010
@@ -19,6 +19,7 @@
 <%...@page import="org.apache.jetspeed.request.RequestContext"%>
 
 <%@ page contentType="text/html" %>
+<%...@page import="org.apache.jetspeed.portlets.spaces.SpaceBean"%>
 <%...@taglib uri="http://java.sun.com/jsp/jstl/core"; prefix="c"%>
 <%...@taglib uri="http://java.sun.com/jstl/core_rt"; prefix="c_rt"%>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"; prefix="fmt" %>
@@ -31,38 +32,57 @@
   <c:set var="portalContextPath" value="/"/>
 </c:if>
 
+<%
+       SpaceBean space = ((SpaceBean)renderRequest.getAttribute("space"));
+       String readonly = (space.isPersisted()) ? "readonly" : "";
+       String actionString = (space.isPersisted()) ? "Update Space" : "Add 
Space";
+       String persisted = (space.isPersisted()) ? "true" : "false";
+%>
+
 <form id='jsSpacesManagement' method="POST" action='<portlet:actionURL/>'>
+<input type='hidden' name='spacePersisted' value='<%=persisted%>'/>
 <table width="100%">
        <tr>
        <td>
        <table>
     <tr>
        <td class="portlet-section-subheader">Name:</td>
-       <td class="portlet-section-subheader"><input type="text" 
name="spaceName" size="30" value="" /></td>
+       <td class="portlet-section-subheader"><input type="text" <%=readonly%> 
name="spaceName" size="30" value="${space.name}" /></td>
+       </tr>
+<% if (space.isPersisted()) { %>
+    <tr>
+       <td class="portlet-section-subheader">Owner:</td>
+       <td class="portlet-section-subheader"><input type="text" readonly 
name="spaceOwner" size="30" value="${space.owner}" /></td>
        </tr>
+<% } %>
     <tr>
        <td class="portlet-section-subheader">Title:</td>
-       <td class="portlet-section-subheader"><input type="text" 
name="spaceTitle" size="30" value="" /></td>
+       <td class="portlet-section-subheader"><input type="text" 
name="spaceTitle" size="30" value="${space.title}" /></td>
        </tr>
     <tr>
        <td class="portlet-section-subheader">Description:</td>
-       <td class="portlet-section-subheader"><input type="text" 
name="spaceDescription" size="30" value="" /></td>
+       <td class="portlet-section-subheader"><input type="text" 
name="spaceDescription" size="30" value="${space.description}" /></td>
        </tr>
-    <tr>
-       <td class="portlet-section-subheader">URL Domain :</td>
-       <td class="portlet-section-subheader"><input type="text" 
name="spaceURL" size="30" value="" /></td>
+       <tr>
+       <td class="portlet-section-subheader">Security:</td>
+       <td class="portlet-section-subheader">
+          <select name="securityConstraintRef">
+   <c:forEach items="${constraints}" var="constraint">
+          <option value="${constraint}" <c:if test="${space.securityConstraint 
== constraint}"> selected </c:if>>${constraint}</option>
+       </c:forEach>                 
+          </select>
+               </td>
        </tr>
     <tr>
        <td class="portlet-section-subheader">Theme :</td>
        <td class="portlet-section-subheader"></td>
        </tr>
        <tr>
-
        <td colspan='2'>        
                <table>
                    <c:forEach var="theme" items="${themes}">   
                        <tr>
-                        <td><img src='<c:url context="${portalContextPath}" 
value="/decorations/layout/${theme.name}/${theme.image}"/>'></td>
+                        <td><img src='<c:url context="${portalContextPath}" 
value="/decorations/layout/${theme.name}/${theme.image}"/>'></td>               
    
                                 <td style="vertical-align: middle"><input 
type="radio" <c:if test="${theme.selected}"> checked </c:if> name="theme" 
value="${theme.name}" /> ${theme.title}</td>
                        </tr>
                        </c:forEach>
@@ -71,55 +91,9 @@
        </tr>
        </table>
        </td>
-    <td>
-       <table width="100%">
-    <tr>
-       <td class="portlet-section-subheader">Share this space with:</td>
-       <td class="portlet-section-subheader"></td>
-       </tr>
-
-    <tr>
-               <td colspan='2' style="vertical-align: middle"><input 
type="radio" checked name="share" value="everyone" /> Everyone</td>
-       </tr>
-    <tr>
-               <td colspan='2'></td>
-       <tr>
-       <tr>
-               <td style="vertical-align: middle"><input type="radio" 
name="share" value="groups" /> Selected Groups:</td>
-               <td>
-          <input type="checkbox" name="accounting" value="accounting"  /> 
Accounting<br/>
-          <input type="checkbox" name="engineering" value="engineering"  /> 
Engineering<br/>
-          <input type="checkbox" name="marketing" value="marketing"  /> 
Marketing<br/>
-          <input type="checkbox" name="auditing" value="auditing"  /> 
Auditing<br/>
-          </td>
-       </tr>
-    <tr>
-               <td colspan='2'></td>
-       <tr>
-       <tr>
-               <td style="vertical-align: middle"><input type="radio" 
name="share" value="roles" /> Selected Roles:</td>
-               <td>
-          <input type="checkbox" name="admin" value="admin"  /> 
Administrator<br/>
-          <input type="checkbox" name="dev" value="dev"  /> Developer<br/>
-          <input type="checkbox" name="editor" value="editor"  /> Editor<br/>
-          <input type="checkbox" name="manager" value="manager"  /> 
Manager<br/>
-          </td>
-       </tr>
-    <tr>
-               <td colspan='2'></td>
-       <tr>
-    <tr>
-               <td colspan='2'></td>
-       <tr>
-       <tr>
-               <td style="vertical-align: middle"><input type="radio" 
name="share" value="users" /> Selected Users:</td>
-               <td><input type="submit" value="Search..." /></td>
-       </tr>
-       </table>
-       </td> 
        </tr>
        <tr>
-    <td colspan='2' style="text-align: center" 
class="portlet-section-subheader"><input type="submit" value="Add Space" /></td>
+    <td colspan='2' style="text-align: center" 
class="portlet-section-subheader"><input type="submit" 
value="<%=actionString%>" /></td>
        </tr>
        <tr>
                <th class="portlet-section-header" colspan="2"></th>

Modified: 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/spaces/SpaceImpl.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/spaces/SpaceImpl.java?rev=904370&r1=904369&r2=904370&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/spaces/SpaceImpl.java
 (original)
+++ 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/spaces/SpaceImpl.java
 Fri Jan 29 03:54:27 2010
@@ -20,6 +20,7 @@
 import java.util.List;
 import java.util.Locale;
 
+import org.apache.jetspeed.om.common.SecurityConstraints;
 import org.apache.jetspeed.om.folder.Folder;
 import org.apache.jetspeed.om.page.Fragment;
 
@@ -142,4 +143,33 @@
         
     }
     
+    @SuppressWarnings("unchecked")
+       public String getSecurityConstraint()
+    {
+       if (backingFolder.getSecurityConstraints() == null)
+               return "";
+       List<String> refs = 
(List<String>)backingFolder.getSecurityConstraints().getSecurityConstraintsRefs();
+       if (refs == null || refs.isEmpty())
+               return "";
+       return refs.get(0); // TODO: support 0..n constraints
+    }
+
+    public void setSecurityConstraint(String constraint)
+    {
+       if (backingFolder.getSecurityConstraints() == null)
+       {
+            SecurityConstraints cons = backingFolder.newSecurityConstraints();
+            backingFolder.setSecurityConstraints(cons);                
+       }
+       List<String> refs = 
(List<String>)backingFolder.getSecurityConstraints().getSecurityConstraintsRefs();
+       if (refs.size() == 0)
+       {
+               refs.add(constraint); 
+       }
+       else
+       {
+               refs.set(0, constraint);
+       }
+    }
+    
  }

Modified: 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/spaces/SpacesServiceImpl.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/spaces/SpacesServiceImpl.java?rev=904370&r1=904369&r2=904370&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/spaces/SpacesServiceImpl.java
 (original)
+++ 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/spaces/SpacesServiceImpl.java
 Fri Jan 29 03:54:27 2010
@@ -453,7 +453,10 @@
                 LocalizedField field = it.next();
                 if (locale == null || field.getLocale().equals(locale))
                 {                
-                    return field.getValue();
+                       if (field.getName().equals(name))
+                       {
+                               return field.getValue();
+                       }
                 }
             }
         }

Modified: 
portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/spaces/Space.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/spaces/Space.java?rev=904370&r1=904369&r2=904370&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/spaces/Space.java
 (original)
+++ 
portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/spaces/Space.java
 Fri Jan 29 03:54:27 2010
@@ -257,5 +257,14 @@
      * @param template
      */
 //    void removeTemplate(String template);    
-    
+
+    /**
+     * Get the security constraint on this space
+     */
+    String getSecurityConstraint();
+
+    /**
+     * Set the security constraint on this space
+     */
+    void setSecurityConstraint(String constraint);
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to