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 ta...@apache.org on 2010/01/28 23:42:50 UTC

svn commit: r904286 - in /portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces: PageNavigator.java SpaceChangeContext.java SpaceNavigator.java

Author: taylor
Date: Thu Jan 28 22:42:50 2010
New Revision: 904286

URL: http://svn.apache.org/viewvc?rev=904286&view=rev
Log:
refine space context change detection

Added:
    portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/SpaceChangeContext.java   (with props)
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/SpaceNavigator.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=904286&r1=904285&r2=904286&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 Thu Jan 28 22:42:50 2010
@@ -138,60 +138,12 @@
             request.getPortletSession().removeAttribute("links");
             request.getPortletSession().removeAttribute("space");
         }
-        List<SpaceBean> spaces = (List<SpaceBean>)request.getPortletSession().getAttribute("spaces");
-        if (spaces == null)
-        {
-            // TODO: use environment
-            List<Space> sl = spacesService.listSpaces();
-            spaces = new LinkedList<SpaceBean>();
-            for (Space s : sl)
-            {
-            	spaces.add(new SpaceBean(s));
-            }
-        }              
-        request.getPortletSession().setAttribute("spaces", spaces);        
-        SpaceBean space = (SpaceBean) request.getPortletSession().getAttribute("space");        
-        if (space != null)
-        {
-            // check if this space matches the current portal page path.
-            RequestContext rc = (RequestContext) request.getAttribute(RequestContext.REQUEST_PORTALENV);
-            String portalPagePath = rc.getPortalURL().getPath();
-            
-            if (portalPagePath == null || "".equals(portalPagePath))
-            {
-                portalPagePath = "/";
-            }
-            
-            if (!portalPagePath.startsWith(space.getPath()))
-            {
-                space = null;
-            }
-        }
-        
-        if (space == null)
-        {                
-            space = spaces.get(0);
-            
-            if (newSpace != null)
-            {
-                for (SpaceBean sp : spaces)
-                {
-                    if (sp.getName().equals(newSpace))
-                    {
-                        space = sp;
-                        break;
-                    }
-                }
-            }
-            
-            request.getPortletSession().setAttribute("space", space);        
-        }                    
-        request.setAttribute("space", space);
-        request.setAttribute("pageNavigator", this);
-        
-        request.setAttribute("spaceMenuElements", getSpaceMenuElements(space, request));
-        request.setAttribute("spaceLinkElements", getSpaceLinkMenuElements(space, request));
-        
+        SpaceChangeContext scc = SpaceNavigator.changeSpace(request, spacesService, newSpace);      
+        request.setAttribute("space", scc.getSpace());
+        request.setAttribute("spaces", scc.getSpaces());        
+        request.setAttribute("pageNavigator", this);        
+        request.setAttribute("spaceMenuElements", getSpaceMenuElements(scc.getSpace(), request));
+        request.setAttribute("spaceLinkElements", getSpaceLinkMenuElements(scc.getSpace(), request));        
         super.doView(request, response);
     }
     

Added: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/SpaceChangeContext.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/SpaceChangeContext.java?rev=904286&view=auto
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/SpaceChangeContext.java (added)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/SpaceChangeContext.java Thu Jan 28 22:42:50 2010
@@ -0,0 +1,47 @@
+/*
+ * 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.portlets.spaces;
+
+import java.util.List;
+
+public class SpaceChangeContext
+{
+	private SpaceBean space;
+	private List<SpaceBean> spaces;
+
+	public SpaceChangeContext(SpaceBean space, List<SpaceBean> spaces)
+	{
+		this.space = space;
+		this.spaces = spaces;
+	}
+
+	public SpaceBean getSpace() {
+		return space;
+	}
+
+	public void setSpace(SpaceBean space) {
+		this.space = space;
+	}
+
+	public List<SpaceBean> getSpaces() {
+		return spaces;
+	}
+
+	public void setSpaces(List<SpaceBean> spaces) {
+		this.spaces = spaces;
+	}
+}

Propchange: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/SpaceChangeContext.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/SpaceChangeContext.java
------------------------------------------------------------------------------
    svn:keywords = Id

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=904286&r1=904285&r2=904286&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 Thu Jan 28 22:42:50 2010
@@ -30,6 +30,7 @@
 
 import org.apache.jetspeed.CommonPortletServices;
 import org.apache.jetspeed.administration.PortalAdministration;
+import org.apache.jetspeed.om.folder.Folder;
 import org.apache.jetspeed.request.RequestContext;
 import org.apache.jetspeed.spaces.Space;
 import org.apache.jetspeed.spaces.Spaces;
@@ -74,49 +75,12 @@
             request.getPortletSession().removeAttribute("spaces");
             request.getPortletSession().removeAttribute("space");
         }
-        List<SpaceBean> spaces = (List<SpaceBean>)request.getPortletSession().getAttribute("spaces");
-        if (spaces == null)
-        {
-            // TODO: use environment
-            List<Space> sl = spacesService.listSpaces();
-            spaces = new LinkedList<SpaceBean>();
-            for (Space s : sl)
-            {
-            	spaces.add(new SpaceBean(s));
-            }
-            request.getPortletSession().setAttribute("spaces", spaces);        
-        }        
-        boolean changed = false;
-        SpaceBean space = (SpaceBean)request.getPortletSession().getAttribute("space");                
-        if (space == null && spaceName != null)
-        {
-        	space = findSpace(spaces, spaceName);
-        	changed = true;
-        }
-        // check if this space matches the current portal page path.
-        RequestContext rc = (RequestContext) request.getAttribute(RequestContext.REQUEST_PORTALENV);
-        String portalPagePath = rc.getPortalURL().getPath();
-        if (portalPagePath == null || "".equals(portalPagePath))
-        {
-            portalPagePath = "/";
-        }
-        if (space == null || !portalPagePath.startsWith(space.getPath()))
-        {
-        	space = findSpaceByPath(spaces, portalPagePath);
-        	changed = true;        	
-        }        
-        if (space== null)
-        {
-            space = spaces.get(0);
-        	changed = true;            
-        }
-        if (changed)
-            request.getPortletSession().setAttribute("space", space);        	
-        request.setAttribute("space", space);        
-        request.setAttribute("spaces", spaces);
+        SpaceChangeContext scc = changeSpace(request, spacesService, spaceName);
+        request.setAttribute("space", scc.getSpace());
+        request.setAttribute("spaces", scc.getSpaces());
         super.doView(request, response);
     }
-    
+        
     public void processAction(ActionRequest actionRequest, ActionResponse actionResponse) throws PortletException,
     IOException
     {
@@ -160,7 +124,7 @@
         return space;
     }
  
-    protected SpaceBean findSpace(List<SpaceBean> spaces, String spaceName)
+    protected static SpaceBean findSpace(List<SpaceBean> spaces, String spaceName)
     {
         for (SpaceBean s : spaces)
         {
@@ -172,15 +136,80 @@
         return null;
     }
     
-    protected SpaceBean findSpaceByPath(List<SpaceBean> spaces, String spacePath)
+    protected static SpaceBean findSpaceByPath(List<SpaceBean> spaces, String spacePath)
     {
         for (SpaceBean s : spaces)
         {
-        	if (s.getPath().equals(spacePath))
+        	if (pathsEqual(s.getPath(), spacePath))
         	{
         		return s;
         	}
         }            	
         return null;
-    }    
+    }
+    
+    protected static SpaceChangeContext changeSpace(RenderRequest request, Spaces spacesService, String spaceName )
+    {
+        List<SpaceBean> spaces = (List<SpaceBean>)request.getPortletSession().getAttribute("spaces");
+        if (spaces == null)
+        {
+            // TODO: use environment
+            List<Space> sl = spacesService.listSpaces();
+            spaces = new LinkedList<SpaceBean>();
+            for (Space s : sl)
+            {
+            	spaces.add(new SpaceBean(s));
+            }
+            request.getPortletSession().setAttribute("spaces", spaces);        
+        }        
+        boolean changed = false;
+        SpaceBean space = (SpaceBean)request.getPortletSession().getAttribute("space");                
+        if (space == null && spaceName != null)
+        {
+        	space = findSpace(spaces, spaceName);
+        	changed = true;
+        }
+        // check if this space matches the current portal page path.
+        RequestContext rc = (RequestContext) request.getAttribute(RequestContext.REQUEST_PORTALENV);
+        String portalPagePath = rc.getPortalURL().getPath();
+        if (portalPagePath == null || "".equals(portalPagePath))
+        {
+            portalPagePath = Folder.PATH_SEPARATOR;
+        }
+        if (space == null || !pathsEqual(portalPagePath, space.getPath()))
+        {
+        	space = findSpaceByPath(spaces, portalPagePath);
+        	changed = true;        	
+        }        
+        if (space== null)
+        {
+            space = spaces.get(0);
+        	changed = true;            
+        }
+        if (changed)
+            request.getPortletSession().setAttribute("space", space);
+    	return new SpaceChangeContext(space, spaces);
+    }
+    
+    protected static boolean pathsEqual(String p1, String p2)
+    {
+    	String s1 = new String (p1);
+    	String s2 = new String (p2);
+    	if (s1 == null || s2 == null)
+    		return false;
+    	int start = s1.indexOf(Folder.PATH_SEPARATOR);
+    	int end = s1.lastIndexOf(Folder.PATH_SEPARATOR);
+    	if (end > start)
+    		s1 = s1.substring(start, end);
+    	start = s2.indexOf(Folder.PATH_SEPARATOR);
+     	end = s2.lastIndexOf(Folder.PATH_SEPARATOR);
+     	if (end > start)
+     		s2 = s2.substring(start, end);    	
+    	if (!s1.endsWith(Folder.PATH_SEPARATOR))
+    		s1 = s1 + Folder.PATH_SEPARATOR;
+    	if (!s2.endsWith(Folder.PATH_SEPARATOR))
+    		s2 = s2 + Folder.PATH_SEPARATOR;
+    	return s1.equals(s2);
+    }
+    
 }
\ No newline at end of file



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