Author: taylor
Date: Wed Mar  3 07:10:38 2010
New Revision: 918341

URL: http://svn.apache.org/viewvc?rev=918341&view=rev
Log:
jetui pipeline configured to use new PageValve, not ProfilerValve making all 
visible pages addressable

Added:
    
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/pipeline/valve/impl/PageValveImpl.java
   (with props)
Modified:
    
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/min-pages/_user/devmgr/folder.metadata
    
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/pages/_user/user/folder.metadata
    
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/administration/PortalAdministrationImpl.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/Spaces.java
    
portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/pipelines.xml

Modified: 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/min-pages/_user/devmgr/folder.metadata
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/min-pages/_user/devmgr/folder.metadata?rev=918341&r1=918340&r2=918341&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/min-pages/_user/devmgr/folder.metadata
 (original)
+++ 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/min-pages/_user/devmgr/folder.metadata
 Wed Mar  3 07:10:38 2010
@@ -17,12 +17,13 @@
     xmlns="http://portals.apache.org/jetspeed";
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
     xsi:schemaLocation="http://portals.apache.org/jetspeed 
http://portals.apache.org/jetspeed-2/2.1/schemas/folder-metadata.xsd";>
-  <title >Home</title>  
-
+  <title >Dev Manager Home</title>
+  <short-title>My Space</short-title>  
+  <metadata name='space-owner' xml:lang='en'>devmgr</metadata>  
   <document-order>default-page.psml</document-order>
   <document-order>account.psml</document-order>
-  
   <security-constraints>
     <owner>devmgr</owner>
-  </security-constraints>  
+  </security-constraints>
+    
 </folder>

Modified: 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/pages/_user/user/folder.metadata
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/pages/_user/user/folder.metadata?rev=918341&r1=918340&r2=918341&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/pages/_user/user/folder.metadata
 (original)
+++ 
portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/pages/_user/user/folder.metadata
 Wed Mar  3 07:10:38 2010
@@ -35,19 +35,21 @@
   <document-order>Google.link</document-order>
   <document-order>Jetspeed2.link</document-order>
 
-  <document-order>default-page.psml</document-order>
+<!--   <document-order>default-page.psml</document-order>  
   <document-order>p001.psml</document-order>
-  <document-order>p002.psml</document-order>
+  <document-order>p002.psml</document-order> -->
   <document-order>p003.psml</document-order>
+  <!-- 
   <document-order>p004.psml</document-order>
   <document-order>localeselector.psml</document-order>
   <document-order>jsf-demo.psml</document-order>
   <document-order>struts-demo.psml</document-order>
-
+ 
   <document-order>third-party</document-order>
   <document-order>non-java</document-order>
   <document-order>Administrative</document-order>
-
+ -->
+ 
   <menu name="page-navigations">
     <separator>
       <text>[USER] Top Pages</text>

Modified: 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/administration/PortalAdministrationImpl.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/administration/PortalAdministrationImpl.java?rev=918341&r1=918340&r2=918341&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/administration/PortalAdministrationImpl.java
 (original)
+++ 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/administration/PortalAdministrationImpl.java
 Wed Mar  3 07:10:38 2010
@@ -285,13 +285,10 @@
                             // deep copy from the default folder template 
tree, creating a deep-copy of the template
                             // in the new user's folder tree
                             Folder source = 
innerPageManager.getFolder(innerFolderTemplate);
-                            
-                            
                             innerPageManager.deepCopyFolder(source, 
innerSubsite, innerUserName);
                             Folder newFolder = 
pageManager.getFolder(innerSubsite);                            
-                            newFolder.setTitle("Home Folder");
-                            newFolder.setShortTitle("Home");
-                             
+                            newFolder.setTitle("My Home Space");
+                            newFolder.setShortTitle("My Space");               
              
                             return null;
                         }
                         catch (SecurityException s1)

Added: 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/pipeline/valve/impl/PageValveImpl.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/pipeline/valve/impl/PageValveImpl.java?rev=918341&view=auto
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/pipeline/valve/impl/PageValveImpl.java
 (added)
+++ 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/pipeline/valve/impl/PageValveImpl.java
 Wed Mar  3 07:10:38 2010
@@ -0,0 +1,296 @@
+/*
+ * 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.pipeline.valve.impl;
+
+import java.io.IOException;
+import java.security.Principal;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.security.auth.Subject;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.jetspeed.PortalReservedParameters;
+import org.apache.jetspeed.administration.AdminUtil;
+import org.apache.jetspeed.decoration.PageActionAccess;
+import org.apache.jetspeed.layout.PageLayoutComponent;
+import org.apache.jetspeed.om.folder.Folder;
+import org.apache.jetspeed.om.page.ContentPage;
+import org.apache.jetspeed.om.page.BaseConcretePageElement;
+import org.apache.jetspeed.om.page.Page;
+import org.apache.jetspeed.om.page.PageTemplate;
+import org.apache.jetspeed.page.PageManager;
+import org.apache.jetspeed.page.document.NodeException;
+import org.apache.jetspeed.page.document.NodeNotFoundException;
+import org.apache.jetspeed.page.document.NodeSet;
+import org.apache.jetspeed.pipeline.PipelineException;
+import org.apache.jetspeed.pipeline.valve.AbstractValve;
+import org.apache.jetspeed.pipeline.valve.PageProfilerValve;
+import org.apache.jetspeed.pipeline.valve.ValveContext;
+import org.apache.jetspeed.portalsite.PortalSite;
+import org.apache.jetspeed.portalsite.PortalSiteRequestContext;
+import org.apache.jetspeed.portalsite.PortalSiteSessionContext;
+import org.apache.jetspeed.profiler.ProfileLocator;
+import org.apache.jetspeed.profiler.Profiler;
+import org.apache.jetspeed.profiler.ProfilerException;
+import org.apache.jetspeed.request.RequestContext;
+import org.apache.jetspeed.security.SubjectHelper;
+import org.apache.jetspeed.security.User;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Page Valve locates the page from the portal request without profiling 
operations using a 1:1 URL:path location algorithm
+ * 
+ * @author <a href="mailto:[email protected]";>David Sean Taylor </a>
+ * @version $Id$
+ */
+public class PageValveImpl extends AbstractValve implements PageProfilerValve
+{
+    protected Logger log = LoggerFactory.getLogger(PageValveImpl.class);   
+
+   
+    /**
+     * pageLayoutComponent - component used to construct and maintain 
ContentPage from
+     *                       profiled PSML Pages and Fragments.
+     */
+    private PageLayoutComponent pageLayoutComponent;
+
+    /**
+     * 
+     */
+    private PageManager pageManager;
+    
+    public PageValveImpl(PageManager pageManager, PageLayoutComponent 
pageLayoutComponent)                            
+    {
+        this.pageManager = pageManager;
+       this.pageLayoutComponent = pageLayoutComponent;
+    }
+
+    public void invoke( RequestContext request, ValveContext context ) throws 
PipelineException
+    {
+        try
+        { 
+            String requestPath = request.getPath();
+            if (log.isDebugEnabled())
+            {
+                log.debug("Request path: "+requestPath);
+            }
+            if (requestPath == null)
+            {
+               requestPath = Folder.PATH_SEPARATOR;
+            }
+            if (!requestPath.endsWith(Page.DOCUMENT_TYPE)) // FIXME: handle 
dynamic pages, pages not ending with .psml
+            {
+                       Folder folder = pageManager.getFolder(requestPath);
+                       String defaultPage = folder.getDefaultPage();
+                       if (defaultPage == null)
+                       {
+                               List<String> docs = folder.getDocumentOrder();
+                               if (docs != null || docs.size() > 0)
+                               {
+                                       for (String doc: docs)
+                                       {
+                                               if 
(doc.endsWith(Page.DOCUMENT_TYPE))
+                                               {
+                                                       defaultPage = doc;
+                                                       break;
+                                               }
+                                       }
+                               }
+                               if (defaultPage == null)
+                                       defaultPage = 
Folder.FALLBACK_DEFAULT_PAGE;
+                       }
+                       requestPath = AdminUtil.concatenatePaths(requestPath, 
defaultPage); 
+            }
+            Page page = pageManager.getPage(requestPath);
+            
+            // get profiler locators for request subject/principal using the 
profiler
+            Subject subject = request.getSubject();
+            if (subject == null)
+            {
+                throw new ProfilerException("Missing subject for request: " + 
requestPath);
+            }            
+            Principal principal = SubjectHelper.getBestPrincipal(subject, 
User.class);
+            if (principal == null)
+            {
+                throw new ProfilerException("Missing principal for request: " 
+ requestPath);
+            }
+
+            BaseConcretePageElement managedPage = page; 
//requestContext.getManagedPage();
+            PageTemplate managedPageTemplate = this.getPageTemplate(page); 
//requestContext.getManagedPageTemplate();
+            Map managedFragmentDefinitions = null;  
//requestContext.getManagedFragmentDefinitions();
+            ContentPage contentPage = 
pageLayoutComponent.newContentPage(managedPage, managedPageTemplate, 
managedFragmentDefinitions);
+            request.setPage(contentPage);
+
+            request.setAttribute(PortalReservedParameters.PATH_ATTRIBUTE, 
requestPath);
+            
request.setAttribute(PortalReservedParameters.CONTENT_PATH_ATTRIBUTE, 
requestPath); //requestContext.getPageContentPath());
+//            
request.setAttribute(PortalReservedParameters.PAGE_EDIT_ACCESS_ATTRIBUTE,getPageActionAccess(request));
+
+                if (log.isDebugEnabled())
+                {
+                    log.debug("Page path: "+contentPage.getPath());
+                }
+            
+
+            // continue
+            if (context != null)
+            {
+                context.invokeNext(request);
+            }
+        }
+        catch (SecurityException se)
+        {
+            // fallback to root folder/default page
+            if (true) //requestFallback)
+            {
+                // fallback to portal root folder/default page if
+                // no user is available and request path is not
+                // already attempting to access the root folder;
+                // this is rarely the case since the anonymous
+                // user is normally defined unless the default
+                // security system has been replaced/overridden
+                if (request.getRequest().getUserPrincipal() == null &&
+                    request.getPath() != null &&
+                    !request.getPath().equals("/"))
+                {
+                    try 
+                    {
+                        
request.getResponse().sendRedirect(request.getRequest().getContextPath());
+                    }
+                    catch (IOException ioe){}
+                    return;
+                }
+            }
+
+            // return standard HTTP 403 - FORBIDDEN status
+            log.error(se.getMessage(), se);
+            try
+            {                
+                
request.getResponse().sendError(HttpServletResponse.SC_FORBIDDEN, 
se.getMessage());
+            }
+            catch (IOException ioe)
+            {
+                log.error("Failed to invoke HttpServletReponse.sendError: " + 
ioe.getMessage(), ioe);
+            }
+        }
+        catch (NodeNotFoundException nnfe)
+        {
+            // return standard HTTP 404 - NOT FOUND status
+            log.error(nnfe.getMessage(), nnfe);
+            try
+            {
+                
request.getResponse().sendError(HttpServletResponse.SC_NOT_FOUND, 
nnfe.getMessage());
+            }
+            catch (IOException ioe)
+            {
+                log.error("Failed to invoke HttpServletReponse.sendError: " + 
ioe.getMessage(), ioe);
+            }
+        }
+        catch (Exception e)
+        {
+            log.error("Exception in request pipeline: " + e.getMessage(), e);
+            throw new PipelineException(e.toString(), e);
+        }
+    }
+    
+    /**
+     * Returns the <code>PageActionAccess</code> for the current user request.
+     * @see PageActionAccess
+     * @param requestContext RequestContext of the current portal request.
+     * @return PageActionAccess for the current user request.
+     */
+//    protected PageActionAccess getPageActionAccess(RequestContext 
requestContext)
+//    { 
+//        ContentPage page = requestContext.getPage();
+//        String key = page.getId();
+//        boolean loggedOn = requestContext.getRequest().getUserPrincipal() != 
null;
+//        boolean anonymous = !loggedOn;
+//        PageActionAccess pageActionAccess = null;
+//
+//        Map sessionActions = null;
+//        synchronized (this)
+//        {
+//            sessionActions = (Map) 
requestContext.getSessionAttribute(PAGE_ACTION_ACCESS_MAP_SESSION_ATTR_KEY);
+//            if (sessionActions == null)
+//            {
+//                sessionActions = new HashMap();
+//                
requestContext.setSessionAttribute(PAGE_ACTION_ACCESS_MAP_SESSION_ATTR_KEY, 
sessionActions);
+//            }
+//            else
+//            {
+//                pageActionAccess = (PageActionAccess) 
sessionActions.get(key);
+//            }
+//        }
+//        synchronized (sessionActions)
+//        {
+//            if (pageActionAccess == null)
+//            {
+//                pageActionAccess = new PageActionAccess(anonymous, page);
+//                sessionActions.put(key, pageActionAccess);
+//            }
+//            else
+//            {
+//                pageActionAccess.checkReset(anonymous, page);
+//            }        
+//        }
+//        
+//        return pageActionAccess;
+//    }
+
+    public String toString()
+    {
+        return "PageValve";
+    }
+
+    public PageTemplate getPageTemplate(Page page2) throws 
NodeNotFoundException
+    {
+       PageTemplate requestPageTemplate = null;
+        BaseConcretePageElement page = page2;
+        if (page != null)
+        {
+            // scan through site looking for first page template
+            // up the folder hierarchy from the requested page
+            try
+            {
+                Folder folder = (Folder)page.getParent();
+                while ((folder != null) && (requestPageTemplate == null))
+                {
+                    NodeSet pageTemplates = folder.getPageTemplates();
+                    if ((pageTemplates != null) && !pageTemplates.isEmpty())
+                    {
+                        // return first page template found
+                        requestPageTemplate = 
(PageTemplate)pageTemplates.iterator().next();
+                    }
+                    else
+                    {
+                        // continue scan
+                        folder = (Folder)folder.getParent();
+                    }
+                }
+            }
+            catch (NodeException ne)
+            {
+            }
+        }
+        return requestPageTemplate;
+    }
+    
+    
+}

Propchange: 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/pipeline/valve/impl/PageValveImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/pipeline/valve/impl/PageValveImpl.java
------------------------------------------------------------------------------
    svn:keywords = Id

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=918341&r1=918340&r2=918341&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
 Wed Mar  3 07:10:38 2010
@@ -281,7 +281,7 @@
     {
        try 
        {
-                       Space space = new 
SpaceImpl(pageManager.getFolder(makeSpacePath(spaceName)));
+                       Space space = 
loadSpace(pageManager.getFolder(makeSpacePath(spaceName)));
                        return space;
                } 
        catch (FolderNotFoundException e) 
@@ -294,6 +294,26 @@
        return null;
     }
     
+    public Space lookupUserSpace(String username)
+    {
+       String spaceName = Folder.USER_FOLDER + username;
+       try 
+       {               
+                       Folder folder = 
pageManager.getFolder(makeSpacePath(spaceName));
+                       Space space = loadSpace(folder);
+                       return space;
+               } 
+       catch (FolderNotFoundException e) 
+       {
+               } 
+       catch (Exception e) 
+       {
+               log.error("lookupSpace", e);            
+               }
+       return null;
+    }
+
+    
     public void addSpaceToEnvironment(Space space, Environment env) throws 
SpacesException
     {
                try

Modified: 
portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/spaces/Spaces.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/spaces/Spaces.java?rev=918341&r1=918340&r2=918341&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/spaces/Spaces.java
 (original)
+++ 
portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/spaces/Spaces.java
 Wed Mar  3 07:10:38 2010
@@ -74,7 +74,6 @@
      */
     Environment lookupEnvironment(String envName);
     
-    
     /**
      * Lists all unique spaces in the portal, regardless of environment
      *  
@@ -135,6 +134,13 @@
     Space lookupSpace(String spaceName);
     
     /**
+     * Retrieve the user space for a user
+     * @param username
+     * @return the user space for a user
+     */
+    Space lookupUserSpace(String username);
+    
+    /**
      * Adds a space to the list of spaces for the given environment
      * A space can exist in zero or more environments
      * 

Modified: 
portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/pipelines.xml
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/pipelines.xml?rev=918341&r1=918340&r2=918341&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/pipelines.xml
 (original)
+++ 
portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/pipelines.xml
 Wed Mar  3 07:10:38 2010
@@ -138,6 +138,16 @@
     </constructor-arg>
   </bean>
 
+  <bean id="pageValve" 
class="org.apache.jetspeed.pipeline.valve.impl.PageValveImpl" 
init-method="initialize">
+    <meta key="j2:cat" value="default" />
+    <constructor-arg index="0">
+      <ref bean="org.apache.jetspeed.page.PageManager" />
+    </constructor-arg>
+    <constructor-arg index="1">
+      <ref bean="org.apache.jetspeed.layout.PageLayoutComponent" />
+    </constructor-arg>
+       </bean>
+       
   <!-- 
     To create a new page when a user first logs in from their roles,
     add this valve after each profilerValve entry in the pipeline configs 
@@ -924,7 +934,7 @@
         <ref bean="localizationValve" />
         <ref bean="passwordCredentialValve" />
         <ref bean="loginValidationValve" />
-        <ref bean="profilerValve" />
+        <ref bean="pageValve" />
         <ref bean="refreshUserHomepageValve" />
         <!--
           JS2-806  



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

Reply via email to