Author: taylor
Date: Tue Feb  6 00:03:44 2007
New Revision: 504018

URL: http://svn.apache.org/viewvc?view=rev&rev=504018
Log:
* refine portlet security checks during portlet selection
* introduce abstraction to security checks with Security Access Controller 
component
   which delegates to either Permission or Constraint checks based on Spring 
config
* make portlet security checks optional via new Security Access Controller 
component's Spring configuration
* rework category portlet selector to properly work in /portal mode, tested 
with several differet users to test non-profiled paths to full page paths
* added requestContext.locatePage functionality
* cleanup on old code

Added:
    
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/security/impl/SecurityAccessControllerImpl.java
    
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/security/SecurityAccessController.java
Removed:
    
portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/customizer/
    
portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/view/customizer/
Modified:
    
portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/pam/PortletApplicationBean.java
    
portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/pam/beans/PortletApplicationBean.java
    
portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/selector/CategoryPortletSelector.java
    
portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/selector/PortletSelector.java
    
portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/jetspeed-portlet.xml
    
portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/ContentFragmentImpl.java
    
portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/ContentPageImpl.java
    
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/decoration/PageActionAccess.java
    
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/layout/impl/AddPortletAction.java
    
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/layout/impl/GetPortletsAction.java
    
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/request/JetspeedRequestContext.java
    
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/request/JetspeedRequestContextComponent.java
    
portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/om/portlet/impl/PortletApplicationDefinitionImpl.java
    
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/CommonPortletServices.java
    
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/mockobjects/request/MockRequestContext.java
    
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/common/portlet/PortletApplication.java
    
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/request/RequestContext.java
    
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/security/PermissionManager.java
    
portals/jetspeed-2/trunk/layout-portlets/src/webapp/WEB-INF/jetspeed-portlet.xml
    portals/jetspeed-2/trunk/src/webapp/WEB-INF/assembly/administration.xml
    portals/jetspeed-2/trunk/src/webapp/WEB-INF/assembly/ajax-layout.xml
    portals/jetspeed-2/trunk/src/webapp/WEB-INF/assembly/jetspeed-services.xml

Modified: 
portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/pam/PortletApplicationBean.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/pam/PortletApplicationBean.java?view=diff&rev=504018&r1=504017&r2=504018
==============================================================================
--- 
portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/pam/PortletApplicationBean.java
 (original)
+++ 
portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/pam/PortletApplicationBean.java
 Tue Feb  6 00:03:44 2007
@@ -196,4 +196,8 @@
     {
         return pa.getJetspeedSecurityConstraint();
     }    
+    public boolean isLayoutApplication()
+    {
+        return pa.isLayoutApplication();
+    }
 }

Modified: 
portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/pam/beans/PortletApplicationBean.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/pam/beans/PortletApplicationBean.java?view=diff&rev=504018&r1=504017&r2=504018
==============================================================================
--- 
portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/pam/beans/PortletApplicationBean.java
 (original)
+++ 
portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/pam/beans/PortletApplicationBean.java
 Tue Feb  6 00:03:44 2007
@@ -197,5 +197,8 @@
     {
         return pa.getJetspeedSecurityConstraint();
     }
-    
+    public boolean isLayoutApplication()
+    {
+        return pa.isLayoutApplication();
+    }       
 }

Modified: 
portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/selector/CategoryPortletSelector.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/selector/CategoryPortletSelector.java?view=diff&rev=504018&r1=504017&r2=504018
==============================================================================
--- 
portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/selector/CategoryPortletSelector.java
 (original)
+++ 
portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/selector/CategoryPortletSelector.java
 Tue Feb  6 00:03:44 2007
@@ -16,8 +16,6 @@
 package org.apache.jetspeed.portlets.selector;
 
 import java.io.IOException;
-import java.security.AccessControlException;
-import java.security.AccessController;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -45,21 +43,22 @@
 import org.apache.commons.logging.LogFactory;
 import org.apache.jetspeed.CommonPortletServices;
 import org.apache.jetspeed.JetspeedActions;
+import org.apache.jetspeed.PortalReservedParameters;
 import org.apache.jetspeed.components.portletregistry.PortletRegistry;
 import org.apache.jetspeed.headerresource.HeaderResource;
 import org.apache.jetspeed.om.common.portlet.MutablePortletApplication;
 import org.apache.jetspeed.om.common.portlet.PortletDefinitionComposite;
 import org.apache.jetspeed.om.common.preference.PreferenceComposite;
-import org.apache.jetspeed.om.folder.Folder;
 import org.apache.jetspeed.om.page.Fragment;
 import org.apache.jetspeed.om.page.Page;
 import org.apache.jetspeed.page.PageManager;
-import org.apache.jetspeed.page.document.Node;
 import org.apache.jetspeed.portlets.CategoryInfo;
 import org.apache.jetspeed.portlets.PortletInfo;
+import org.apache.jetspeed.profiler.Profiler;
+import org.apache.jetspeed.request.RequestContext;
 import org.apache.jetspeed.search.ParsedObject;
 import org.apache.jetspeed.search.SearchEngine;
-import org.apache.jetspeed.security.PortletPermission;
+import org.apache.jetspeed.security.SecurityAccessController;
 import org.apache.pluto.om.common.Parameter;
 import org.apache.portals.gems.dojo.AbstractDojoVelocityPortlet;
 import org.apache.velocity.context.Context;
@@ -84,7 +83,8 @@
     protected final static String PORTLETS = "category.selector.portlets";
     protected final static String CATEGORIES = "category.selector.categories";
     protected final static String PAGE = "category.selector.page";
-    private final  String JSPAGE = "jspage";
+    
+    private final String JSPAGE = "jspage";
        private final String CATEGORY = "category";
        private final String PAGENUMNER = "pageNumber";
        private final String FILTER = "filter";
@@ -92,6 +92,8 @@
     protected PortletRegistry registry;
     protected SearchEngine searchEngine;
     protected PageManager pageManager;
+    protected Profiler profiler;
+    protected SecurityAccessController securityAccessController;
     protected Random rand;
     
     public void init(PortletConfig config)
@@ -114,6 +116,16 @@
         {
             throw new PortletException("Failed to find the Page Manager on 
portlet initialization");
         }        
+        securityAccessController = 
(SecurityAccessController)context.getAttribute(CommonPortletServices.CPS_SECURITY_ACCESS_CONTROLLER);
+        if (null == securityAccessController)
+        {
+            throw new PortletException("Failed to find the Security Access 
Controller on portlet initialization");
+        }
+        profiler = 
(Profiler)context.getAttribute(CommonPortletServices.CPS_PROFILER_COMPONENT);
+        if (null == profiler)
+        {
+            throw new PortletException("Failed to find the Profiler on portlet 
initialization");
+        }        
         rand = new Random( 19580427 );
     }
     
@@ -146,7 +158,15 @@
         processPage(request);
         super.doView(request, response);
     }
-
+    
+    protected Page getPage(RenderRequest request) throws Exception
+    {
+        String path = request.getParameter(JSPAGE);
+        RequestContext requestContext = (RequestContext) 
+            
request.getAttribute(PortalReservedParameters.REQUEST_CONTEXT_ATTRIBUTE);       
 
+        return requestContext.locatePage(profiler, path);
+    }    
+    
     protected void processPage(RenderRequest request)
     {
         String page = request.getParameter(JSPAGE);
@@ -297,16 +317,15 @@
         if (portlet == null)
             return null;
         
-        MutablePortletApplication muta = 
(MutablePortletApplication)portlet.getPortletApplicationDefinition();
-        String appName = muta.getName();
-        if (appName != null && appName.equals("jetspeed-layouts"))
-            return null;                
+        // Do not display Jetspeed Layout Applications
+        MutablePortletApplication pa = 
(MutablePortletApplication)portlet.getPortletApplicationDefinition();
+        if (pa.isLayoutApplication())
+            return null;
         
         // SECURITY filtering
-        String uniqueName = appName + "::" + portlet.getName();
-        try
+        String uniqueName = pa.getName() + "::" + portlet.getName();
+        if (securityAccessController.checkPortletAccess(portlet, 
JetspeedActions.MASK_VIEW))
         {
-            AccessController.checkPermission(new 
PortletPermission(portlet.getUniqueName(), JetspeedActions.MASK_VIEW));
             Parameter param = portlet.getInitParameterSet().get(PORTLET_ICON);
             String image;
             if (param != null)
@@ -333,11 +352,7 @@
             }
             return new PortletInfo(uniqueName, 
cleanup(portlet.getDisplayNameText(locale)), 
cleanup(portlet.getDescriptionText(locale)), image);
         }
-        catch (AccessControlException ace)
-        {
-            return null;
-        }
-        
+        return null;
     }
     
     protected String cleanup(String str)
@@ -716,23 +731,8 @@
                }
                return map;
        }
-       private Page getPage(RenderRequest request) throws Exception
-       {
-               String user = request.getUserPrincipal().getName();
-               String page = request.getParameter("jspage");
-               String path;
-               if (page.equals("/")) page= Node.PATH_SEPARATOR + 
Folder.FALLBACK_DEFAULT_PAGE;
-               if (user.equals("admin"))
-               {
-                       path  = page;
-               }else
-               {
-                       path  = Folder.USER_FOLDER  + user + page;
-               }
-               return pageManager.getPage(path);                 
 
-       }
-       class CategoryResult {
+    class CategoryResult {
                List list;
 
                int resultSize;

Modified: 
portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/selector/PortletSelector.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/selector/PortletSelector.java?view=diff&rev=504018&r1=504017&r2=504018
==============================================================================
--- 
portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/selector/PortletSelector.java
 (original)
+++ 
portals/jetspeed-2/trunk/applications/j2-admin/src/java/org/apache/jetspeed/portlets/selector/PortletSelector.java
 Tue Feb  6 00:03:44 2007
@@ -15,8 +15,6 @@
 package org.apache.jetspeed.portlets.selector;
 
 import java.io.IOException;
-import java.security.AccessControlException;
-import java.security.AccessController;
 import java.sql.Types;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -44,7 +42,7 @@
 import org.apache.jetspeed.portlets.pam.PortletApplicationResources;
 import org.apache.jetspeed.search.ParsedObject;
 import org.apache.jetspeed.search.SearchEngine;
-import org.apache.jetspeed.security.PortletPermission;
+import org.apache.jetspeed.security.SecurityAccessController;
 import org.apache.portals.gems.browser.BrowserIterator;
 import org.apache.portals.gems.browser.BrowserPortlet;
 import org.apache.portals.gems.util.StatusMessage;
@@ -62,7 +60,7 @@
     protected static final String CHECKEDSET = "checkedSet";
     protected static final String UNCHECKEDSET = "unCheckedSet";
    
-
+    protected SecurityAccessController securityAccessController;
     protected PortletRegistry registry;
     protected SearchEngine searchEngine;
     
@@ -81,7 +79,11 @@
         {
             throw new PortletException("Failed to find the Search Engine on 
portlet initialization");
         }        
-        
+        securityAccessController = 
(SecurityAccessController)context.getAttribute(CommonPortletServices.CPS_SECURITY_ACCESS_CONTROLLER);
+        if (null == securityAccessController)
+        {
+            throw new PortletException("Failed to find the Security Access 
Controller on portlet initialization");
+        }        
     }
           
     public void doView(RenderRequest request, RenderResponse response)
@@ -113,7 +115,6 @@
         String selectedPortletsString = getAsString(selectedCheckBoxes);
         this.getContext(request).put("selectedPortletsString", 
selectedPortletsString);
         
-        
         super.doView(request, response);
     }
 
@@ -240,26 +241,21 @@
                 if (portlet == null)
                     continue;
                 
-                MutablePortletApplication muta = 
(MutablePortletApplication)portlet.getPortletApplicationDefinition();
-                String appName = muta.getName();
-                if (appName != null && appName.equals("jetspeed-layouts"))
-                    continue;                
-                
+                // Do not display Jetspeed Layout Applications
+                MutablePortletApplication pa = 
(MutablePortletApplication)portlet.getPortletApplicationDefinition();
+                if (pa.isLayoutApplication())
+                    continue;
+                         
                 // SECURITY filtering
-                String uniqueName = appName + "::" + portlet.getName();
-                try
+                String uniqueName = pa.getName() + "::" + portlet.getName();
+                if (securityAccessController.checkPortletAccess(portlet, 
JetspeedActions.MASK_VIEW))
                 {
-                    AccessController.checkPermission(new 
PortletPermission(portlet.getUniqueName(), JetspeedActions.MASK_VIEW));
                     String name = portlet.getDisplayNameText(locale);
                     if (name == null)
                     {
                         name = portlet.getName();
                     }
                     list.add(new PortletInfo(uniqueName, name, 
portlet.getDescriptionText(locale)));
-                }
-                catch (AccessControlException ace)
-                {
-                    //continue
                 }
             }            
             BrowserIterator iterator = new PortletIterator(

Modified: 
portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/jetspeed-portlet.xml
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/jetspeed-portlet.xml?view=diff&rev=504018&r1=504017&r2=504018
==============================================================================
--- 
portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/jetspeed-portlet.xml
 (original)
+++ 
portals/jetspeed-2/trunk/applications/j2-admin/src/webapp/WEB-INF/jetspeed-portlet.xml
 Tue Feb  6 00:03:44 2007
@@ -20,23 +20,47 @@
     xmlns:dc="http://www.purl.org/dc";
     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/jetspeed-portlet.xsd";>
-
+
+   <js:security-constraint-ref>admin</js:security-constraint-ref>
+ 
     <dc:title>Jetspeed-2 Administration Portlets</dc:title>
     <dc:title xml:lang="en">Jetspeed-2 Administration Portlets</dc:title>
     <dc:creator>J2 Team</dc:creator>
-
+ 
     <portlet>
-        <portlet-name>LoginPortlet</portlet-name>
+        <portlet-name>LoginPortlet</portlet-name>
+        <js:security-constraint-ref>public-view</js:security-constraint-ref>   
    
         <dc:title>Login Portlet</dc:title>
         <dc:creator>J2 Team</dc:creator>
     </portlet>
 
     <portlet>
         <portlet-name>LocaleSelector</portlet-name>
+        <js:security-constraint-ref>public-view</js:security-constraint-ref>   
    
         <dc:title>Locale Selector Portlet</dc:title>
         <dc:creator>J2 Team</dc:creator>
     </portlet>
-
+
+    <portlet>
+         <portlet-name>DateTimePortlet</portlet-name>
+         <js:security-constraint-ref>public-view</js:security-constraint-ref>
+    </portlet>
+
+    <portlet>
+         <portlet-name>ForgottenPasswordPortlet</portlet-name>
+         <js:security-constraint-ref>public-view</js:security-constraint-ref>
+    </portlet>
+
+    <portlet>
+         <portlet-name>UserRegistrationPortlet</portlet-name>
+         <js:security-constraint-ref>public-view</js:security-constraint-ref>
+    </portlet>
+
+    <portlet>
+         <portlet-name>CategoryPortletSelector</portlet-name>
+         <js:security-constraint-ref>AEUV</js:security-constraint-ref>
+    </portlet>   
+       
        <js:services>        
         <js:service name='ApplicationServerManager'/>
         <js:service name='DeploymentManager'/>
@@ -54,7 +78,8 @@
            <js:service name='SearchComponent'/>                
         <js:service name="SSO" />                 
         <js:service name='UserManager'/>     
-        <js:service name='DecorationFactory'/>        
+        <js:service name='DecorationFactory'/> 
+        <js:service name='SecurityAccessController'/>       
        </js:services>
 
 </portlet-app>

Modified: 
portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/ContentFragmentImpl.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/ContentFragmentImpl.java?view=diff&rev=504018&r1=504017&r2=504018
==============================================================================
--- 
portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/ContentFragmentImpl.java
 (original)
+++ 
portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/ContentFragmentImpl.java
 Tue Feb  6 00:03:44 2007
@@ -1,3 +1,17 @@
+/* Copyright 2004 Apache Software Foundation
+*
+* Licensed 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.om.page;
 
 import java.io.Serializable;

Modified: 
portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/ContentPageImpl.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/ContentPageImpl.java?view=diff&rev=504018&r1=504017&r2=504018
==============================================================================
--- 
portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/ContentPageImpl.java
 (original)
+++ 
portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/ContentPageImpl.java
 Tue Feb  6 00:03:44 2007
@@ -1,3 +1,18 @@
+/* Copyright 2004 Apache Software Foundation
+*
+* Licensed 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.om.page;
 
 import java.util.HashMap;

Modified: 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/decoration/PageActionAccess.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/decoration/PageActionAccess.java?view=diff&rev=504018&r1=504017&r2=504018
==============================================================================
--- 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/decoration/PageActionAccess.java
 (original)
+++ 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/decoration/PageActionAccess.java
 Tue Feb  6 00:03:44 2007
@@ -16,8 +16,6 @@
 package org.apache.jetspeed.decoration;
 
 import java.io.Serializable;
-import java.security.AccessControlException;
-import java.security.AccessController;
 import java.util.HashMap;
 
 import javax.portlet.PortletMode;
@@ -27,7 +25,6 @@
 import org.apache.commons.logging.LogFactory;
 import org.apache.jetspeed.JetspeedActions;
 import org.apache.jetspeed.om.page.Page;
-import org.apache.jetspeed.security.PortletPermission;
 
 /**
  * PageActionAccess
@@ -133,36 +130,7 @@
             return false;
         }
     }
-    
-    /**
-     * Determines whether the access request indicated by the specified
-     * permission should be allowed or denied, based on the security policy
-     * currently in effect.
-     * 
-     * @param resource
-     *                  The fully qualified resource name of the portlet
-     *                  (PA::portletName)
-     * @param action
-     *                  The action to perform on this resource (i.e. view, 
edit, help,
-     *                  max, min...)
-     * @return true if the action is allowed, false if it is not
-     */
-    protected boolean checkPermission( String resource, String action )
-    {
-        try
-        {
-            // TODO: it may be better to check the PagePermission for the outer
-            // most
-            // fragment (i.e. the PSML page)
-            AccessController.checkPermission(new PortletPermission(resource, 
action));
-        }
-        catch (AccessControlException e)
-        {
-            return false;
-        }
-        return true;
-    }
-    
+        
     protected boolean checkEditPage(Page page)
     {
         boolean allowed = false;

Modified: 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/layout/impl/AddPortletAction.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/layout/impl/AddPortletAction.java?view=diff&rev=504018&r1=504017&r2=504018
==============================================================================
--- 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/layout/impl/AddPortletAction.java
 (original)
+++ 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/layout/impl/AddPortletAction.java
 Tue Feb  6 00:03:44 2007
@@ -24,9 +24,7 @@
 import org.apache.jetspeed.ajax.AJAXException;
 import org.apache.jetspeed.ajax.AjaxAction;
 import org.apache.jetspeed.ajax.AjaxBuilder;
-import org.apache.jetspeed.layout.Coordinate;
 import org.apache.jetspeed.layout.PortletActionSecurityBehavior;
-import org.apache.jetspeed.layout.PortletPlacementContext;
 import org.apache.jetspeed.om.page.Fragment;
 import org.apache.jetspeed.om.page.Page;
 import org.apache.jetspeed.page.PageManager;

Modified: 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/layout/impl/GetPortletsAction.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/layout/impl/GetPortletsAction.java?view=diff&rev=504018&r1=504017&r2=504018
==============================================================================
--- 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/layout/impl/GetPortletsAction.java
 (original)
+++ 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/layout/impl/GetPortletsAction.java
 Tue Feb  6 00:03:44 2007
@@ -15,8 +15,6 @@
  */
 package org.apache.jetspeed.layout.impl;
 
-import java.security.AccessControlException;
-import java.security.AccessController;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -39,8 +37,7 @@
 import org.apache.jetspeed.request.RequestContext;
 import org.apache.jetspeed.search.ParsedObject;
 import org.apache.jetspeed.search.SearchEngine;
-import org.apache.jetspeed.security.PermissionManager;
-import org.apache.jetspeed.security.PortletPermission;
+import org.apache.jetspeed.security.SecurityAccessController;
 import org.apache.pluto.om.common.Parameter;
 
 /**
@@ -60,6 +57,8 @@
     protected Log log = LogFactory.getLog(GetPortletsAction.class);
     private PortletRegistry registry = null;
     private SearchEngine searchEngine = null;
+    private SecurityAccessController securityAccessController;
+    
     public final static String PORTLET_ICON = "portlet-icon";
     
     public GetPortletsAction(String template, String errorTemplate)
@@ -72,12 +71,13 @@
                              PageManager pageManager,
                              PortletRegistry registry,
                              SearchEngine searchEngine,
-                             PermissionManager permissionManager,
+                             SecurityAccessController securityAccessController,
                              PortletActionSecurityBehavior securityBehavior)
     {
         super(template, errorTemplate, pageManager, securityBehavior);
         this.registry = registry;
         this.searchEngine = searchEngine;
+        this.securityAccessController = securityAccessController;
     }
 
     public boolean run(RequestContext requestContext, Map resultMap)
@@ -136,17 +136,15 @@
             if (portlet == null)
                 continue;
             
-            MutablePortletApplication muta = 
-                
(MutablePortletApplication)portlet.getPortletApplicationDefinition();
-            String appName = muta.getName();
-            if (appName != null && appName.equals("jetspeed-layouts"))
-                continue;                
-            
+            // Do not display Jetspeed Layout Applications
+            MutablePortletApplication pa = 
(MutablePortletApplication)portlet.getPortletApplicationDefinition();
+            if (pa.isLayoutApplication())
+                continue;
+                 
             // SECURITY filtering
-            String uniqueName = appName + "::" + portlet.getName();
-            try
+            String uniqueName = pa.getName() + "::" + portlet.getName();
+            if (securityAccessController.checkPortletAccess(portlet, 
JetspeedActions.MASK_VIEW))
             {
-                AccessController.checkPermission(new 
PortletPermission(portlet.getUniqueName(), JetspeedActions.MASK_VIEW));
                 Parameter param = 
portlet.getInitParameterSet().get(PORTLET_ICON);
                 String image;
                 if (param != null)
@@ -161,10 +159,6 @@
                     image = "images/portlets/applications-internet.png";
                 }                
                 list.add(new PortletInfo(uniqueName, 
portlet.getDisplayNameText(locale), portlet.getDescriptionText(locale), image));
-            }
-            catch (AccessControlException ace)
-            {
-                //continue
             }
         }            
         Collections.sort(list, this);

Modified: 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/request/JetspeedRequestContext.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/request/JetspeedRequestContext.java?view=diff&rev=504018&r1=504017&r2=504018
==============================================================================
--- 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/request/JetspeedRequestContext.java
 (original)
+++ 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/request/JetspeedRequestContext.java
 Tue Feb  6 00:03:44 2007
@@ -40,7 +40,13 @@
 import org.apache.jetspeed.om.common.MutableLanguage;
 import org.apache.jetspeed.om.impl.LanguageImpl;
 import org.apache.jetspeed.om.page.ContentPage;
+import org.apache.jetspeed.om.page.ContentPageImpl;
 import org.apache.jetspeed.pipeline.Pipeline;
+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.impl.ProfilerValveImpl;
 import org.apache.jetspeed.security.SecurityHelper;
 import org.apache.jetspeed.security.UserPrincipal;
 import org.apache.jetspeed.userinfo.UserInfoManager;
@@ -632,5 +638,35 @@
     {
         this.response = response;
     }
+    
+    public ContentPage locatePage(Profiler profiler, String nonProfiledPath)
+    {
+        try
+        {
+            String pathSave = this.getPath();           
+            this.setPath(nonProfiledPath);
+            ContentPage realPage = this.getPage();
+            this.setPage(null);                
+            Map locators = null;
+            ProfileLocator locator = profiler.getProfile(this, 
ProfileLocator.PAGE_LOCATOR);
+            if ( locator != null )
+            {
+                locators = new HashMap();
+                locators.put(ProfileLocator.PAGE_LOCATOR, locator);
+            }               
+            PortalSiteSessionContext sessionContext = 
(PortalSiteSessionContext)getSessionAttribute(ProfilerValveImpl.PORTAL_SITE_SESSION_CONTEXT_ATTR_KEY);
+            PortalSiteRequestContext requestContext = 
sessionContext.newRequestContext(locators, true, true);
+            ContentPage cpage = new 
ContentPageImpl(requestContext.getManagedPage());
+            System.out.println("page is " + cpage.getPath());
+            this.setPage(realPage);            
+            this.setPath(pathSave);
+            return cpage;
+        }
+        catch (Throwable t)
+        {
+            t.printStackTrace();
+        }
+        return null;
+    }    
 
 }

Modified: 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/request/JetspeedRequestContextComponent.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/request/JetspeedRequestContextComponent.java?view=diff&rev=504018&r1=504017&r2=504018
==============================================================================
--- 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/request/JetspeedRequestContextComponent.java
 (original)
+++ 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/request/JetspeedRequestContextComponent.java
 Tue Feb  6 00:03:44 2007
@@ -23,11 +23,10 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-
 import org.apache.jetspeed.PortalReservedParameters;
-import org.apache.jetspeed.userinfo.UserInfoManager;
-import org.apache.jetspeed.aggregator.Worker;
 import org.apache.jetspeed.aggregator.CurrentWorkerContext;
+import org.apache.jetspeed.aggregator.Worker;
+import org.apache.jetspeed.userinfo.UserInfoManager;
 
 /**
  * JetspeedRequestContextComponent
@@ -68,7 +67,6 @@
                 contextClass = Class.forName(contextClassName);
             }
 
-            // TODO: we could use a pooled object implementation here
             Constructor constructor =
                 contextClass.getConstructor(
                     new Class[] {

Added: 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/security/impl/SecurityAccessControllerImpl.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/security/impl/SecurityAccessControllerImpl.java?view=auto&rev=504018
==============================================================================
--- 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/security/impl/SecurityAccessControllerImpl.java
 (added)
+++ 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/security/impl/SecurityAccessControllerImpl.java
 Tue Feb  6 00:03:44 2007
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2000-2004 The Apache Software Foundation.
+ * 
+ * Licensed 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.security.impl;
+
+
+import java.security.AccessControlException;
+import java.security.AccessController;
+
+import org.apache.jetspeed.om.common.portlet.MutablePortletApplication;
+import org.apache.jetspeed.om.common.portlet.PortletDefinitionComposite;
+import org.apache.jetspeed.page.PageManager;
+import org.apache.jetspeed.security.PortletPermission;
+import org.apache.jetspeed.security.SecurityAccessController;
+
+/**
+ * SecurityAccessorImpl implements SecurityAccessor component abstracting
+ * access to either Security Permission or Security Constraint implementations
+ * 
+ * @author <a href="mailto:[EMAIL PROTECTED]">David Sean Taylor </a>
+ * @version $Id: $
+ */
+public class SecurityAccessControllerImpl implements SecurityAccessController
+{
+    protected PageManager pageManager;
+    protected int securityMode = SecurityAccessController.PERMISSIONS;
+    
+    public SecurityAccessControllerImpl(PageManager pageManager, int 
securityMode)
+    {
+        this.pageManager = pageManager;
+        this.securityMode = securityMode;
+    }
+    
+    public int getSecurityMode()
+    {
+        return securityMode;
+    }
+    
+    public boolean checkPortletAccess(PortletDefinitionComposite portlet, int 
mask)
+    {
+        if (securityMode == SecurityAccessController.CONSTRAINTS)
+        {
+            String constraintRef = portlet.getJetspeedSecurityConstraint();
+            if (constraintRef == null)
+            {
+                constraintRef = 
((MutablePortletApplication)portlet.getPortletApplicationDefinition()).getJetspeedSecurityConstraint();
                
+                if (constraintRef == null)
+                {
+                    return true; // allow access
+                }
+            }
+            // TODO: mask to list
+            return pageManager.checkConstraint(constraintRef, "view");         
       
+        }
+        else
+        {
+            try
+            {
+                AccessController.checkPermission(new 
PortletPermission(portlet.getUniqueName(), mask));
+            }
+            catch (AccessControlException ace)
+            {
+                return false;
+            }
+            return true;
+        }
+    
+    }
+}

Modified: 
portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/om/portlet/impl/PortletApplicationDefinitionImpl.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/om/portlet/impl/PortletApplicationDefinitionImpl.java?view=diff&rev=504018&r1=504017&r2=504018
==============================================================================
--- 
portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/om/portlet/impl/PortletApplicationDefinitionImpl.java
 (original)
+++ 
portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/om/portlet/impl/PortletApplicationDefinitionImpl.java
 Tue Feb  6 00:03:44 2007
@@ -607,4 +607,19 @@
         this.jetspeedSecurityConstraint = constraint;
     }
     
+    public boolean isLayoutApplication()
+    {
+        if (this.getMetadata() != null)
+        {
+            Collection c = this.getMetadata().getFields("layout-app");
+            if (c != null)
+            {
+                if (!c.isEmpty())
+                {
+                   return true;
+                }
+            }
+        }
+        return false;
+     }
 }

Modified: 
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/CommonPortletServices.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/CommonPortletServices.java?view=diff&rev=504018&r1=504017&r2=504018
==============================================================================
--- 
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/CommonPortletServices.java
 (original)
+++ 
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/CommonPortletServices.java
 Tue Feb  6 00:03:44 2007
@@ -45,4 +45,5 @@
     public final static String CPS_PREFERENCES_PROVIDER = 
"cps:PreferencesProvider";
     public final static String CPS_DECORATION_FACTORY = 
"cps:DecorationFactory";
     public final static String CPS_PASSWORD_ENCODER_COMPONENT = 
"cps:PasswordEncodingService";
+    public final static String CPS_SECURITY_ACCESS_CONTROLLER = 
"cps:SecurityAccessController";
 }

Modified: 
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/mockobjects/request/MockRequestContext.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/mockobjects/request/MockRequestContext.java?view=diff&rev=504018&r1=504017&r2=504018
==============================================================================
--- 
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/mockobjects/request/MockRequestContext.java
 (original)
+++ 
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/mockobjects/request/MockRequestContext.java
 Tue Feb  6 00:03:44 2007
@@ -32,6 +32,7 @@
 import org.apache.jetspeed.mockobjects.MockHttpServletRequest;
 import org.apache.jetspeed.om.page.ContentPage;
 import org.apache.jetspeed.pipeline.Pipeline;
+import org.apache.jetspeed.profiler.Profiler;
 import org.apache.jetspeed.request.RequestContext;
 import org.apache.pluto.om.common.Language;
 import org.apache.pluto.om.common.ObjectID;
@@ -549,5 +550,9 @@
     {
         this.response = response;
     }
-    
+
+    public ContentPage locatePage(Profiler profiler, String nonProfiledPath)
+    {
+        return null;
+    }
 }

Modified: 
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/common/portlet/PortletApplication.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/common/portlet/PortletApplication.java?view=diff&rev=504018&r1=504017&r2=504018
==============================================================================
--- 
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/common/portlet/PortletApplication.java
 (original)
+++ 
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/common/portlet/PortletApplication.java
 Tue Feb  6 00:03:44 2007
@@ -133,4 +133,14 @@
      *                  the Jetspeed Security Constraints 
      */    
     String getJetspeedSecurityConstraint();    
+    
+    /**
+     * Returns true if the portlet application is a layout application
+     * Layouts are not "general" portlets, but instead used to group together
+     * other layouts and portlet fragments
+     * 
+     * @return true when this app is a Jetspeed layout application
+     */
+    boolean isLayoutApplication();
+    
 }

Modified: 
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/request/RequestContext.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/request/RequestContext.java?view=diff&rev=504018&r1=504017&r2=504018
==============================================================================
--- 
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/request/RequestContext.java
 (original)
+++ 
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/request/RequestContext.java
 Tue Feb  6 00:03:44 2007
@@ -30,6 +30,7 @@
 import org.apache.jetspeed.container.url.PortalURL;
 import org.apache.jetspeed.om.page.ContentPage;
 import org.apache.jetspeed.pipeline.Pipeline;
+import org.apache.jetspeed.profiler.Profiler;
 import org.apache.pluto.om.common.Language;
 import org.apache.pluto.om.common.ObjectID;
 import org.apache.pluto.om.portlet.PortletDefinition;
@@ -429,5 +430,13 @@
      */
     Principal getUserPrincipal();
     
+    /**
+     * Locates a specific page using the profiler and site manager location 
algorithms
+     * from a generalized non-profiled path to the first page matching the path
+     * 
+     *  @param profiler The profiler component to use in the search
+     *  @return A Content Page located by the profiler, or null if not found
+     */
+    ContentPage locatePage(Profiler profiler, String nonProfiledPath);
 }
 

Modified: 
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/security/PermissionManager.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/security/PermissionManager.java?view=diff&rev=504018&r1=504017&r2=504018
==============================================================================
--- 
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/security/PermissionManager.java
 (original)
+++ 
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/security/PermissionManager.java
 Tue Feb  6 00:03:44 2007
@@ -18,8 +18,6 @@
 import java.security.Permissions;
 import java.security.Principal;
 import java.util.Collection;
-import java.util.Iterator;
-
 import javax.security.auth.Subject;
 
 /**
@@ -133,7 +131,7 @@
      * <p>
      * Check permission for the given subject's access to the resource 
protected by the permission
      * This is an abstraction introduced in M4 for Permission Manager 
implementations NOT
-     * founded upon the a Java security policy.
+     * founded upon the a Java security policy.</p>
      * 
      * @param subject The Java subject.
      * @param permission The permission, usually a portlet, page or folder 
type permission.
@@ -141,7 +139,7 @@
      *         if the subject does not have access.
      */
     boolean checkPermission(Subject subject, Permission permission);
-    
+       
     /**
      * Retrieve a collection of all Permissions in the system ordered by 
Permission Type, resource
      * Note that we return a collection of <code>InternalPrincipal</code>

Added: 
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/security/SecurityAccessController.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/security/SecurityAccessController.java?view=auto&rev=504018
==============================================================================
--- 
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/security/SecurityAccessController.java
 (added)
+++ 
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/security/SecurityAccessController.java
 Tue Feb  6 00:03:44 2007
@@ -0,0 +1,67 @@
+/* Copyright 2004 Apache Software Foundation
+ *
+ * Licensed 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.security;
+
+import org.apache.jetspeed.om.common.portlet.PortletDefinitionComposite;
+
+/**
+ * <p>
+ * This component abstracts access to security checks.
+ * Jetspeed supports two kinds of secured access:
+ * <ul>
+ * <li>Permissions</li>
+ * <li>Constraints</li>
+ * </ul>
+ * Permissions are checked via Java Security. Jetspeed implements its own 
security policy.
+ * Constrainted are checked via the Page Manager's constraints.
+ * Either way, the implicit Jetspeed Security Subject is applied to the 
security access check.
+ * </p>
+ * 
+ * @author <a href="mailto:[EMAIL PROTECTED]">David Sean Taylor</a>
+ * @version $Id: $
+ */
+public interface SecurityAccessController
+{   
+    /**
+     * Use the Java Security Policy (Permissions) to make secure access checks
+     */
+    final int PERMISSIONS = 1;
+    /**
+     * Use the Jetspeed Security Constraints to make secure access checks
+     */
+    final int CONSTRAINTS = 2;
+    
+    /**
+     * <p>
+     * Checks access for the implicit active subject's access to the resource 
protected by the portlet permission
+     * This is an abstraction introduced in 2.1 for Permission Manager 
implementations NOT
+     * founded upon the a Java security policy. If the Permission Manager is 
configured to 
+     * run with Security Constraints, then a security constraint check is 
made. Otherwise, 
+     * a standard Java Security permission check is made.</p>
+     * 
+     * @param portlet The portlet to be checked
+     * @param mask A mask <code>JetspeedActions</code> such as view, edit
+     * @return true if access is granted, false if access denied based on 
policy or constraints
+     */
+    boolean checkPortletAccess(PortletDefinitionComposite portlet, int mask);
+    
+    /**
+     * Returns the configured security mode for this accessor
+     * This component can be configured to make Java Security Policy 
permission checks
+     * or Jetspeed Security Constraint checks
+     * @return either PERMISSIONS or CONSTRAINTS
+     */
+    int getSecurityMode();
+}
\ No newline at end of file

Modified: 
portals/jetspeed-2/trunk/layout-portlets/src/webapp/WEB-INF/jetspeed-portlet.xml
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/layout-portlets/src/webapp/WEB-INF/jetspeed-portlet.xml?view=diff&rev=504018&r1=504017&r2=504018
==============================================================================
--- 
portals/jetspeed-2/trunk/layout-portlets/src/webapp/WEB-INF/jetspeed-portlet.xml
 (original)
+++ 
portals/jetspeed-2/trunk/layout-portlets/src/webapp/WEB-INF/jetspeed-portlet.xml
 Tue Feb  6 00:03:44 2007
@@ -24,7 +24,7 @@
     <dc:title>Jetspeed Layout Portlets</dc:title>
     <dc:title xml:lang="en">Layout Portlets</dc:title>
     <dc:creator>J2 Team</dc:creator>
-    
+    <js:metadata name="layout-app">true</js:metadata>    
 
        <js:services>
            <js:service name='IdGenerator'/>

Modified: 
portals/jetspeed-2/trunk/src/webapp/WEB-INF/assembly/administration.xml
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/src/webapp/WEB-INF/assembly/administration.xml?view=diff&rev=504018&r1=504017&r2=504018
==============================================================================
--- portals/jetspeed-2/trunk/src/webapp/WEB-INF/assembly/administration.xml 
(original)
+++ portals/jetspeed-2/trunk/src/webapp/WEB-INF/assembly/administration.xml Tue 
Feb  6 00:03:44 2007
@@ -83,6 +83,21 @@
                 <prop 
key="register*">PROPAGATION_REQUIRED,-org.apache.jetspeed.administration.RegistrationException</prop>
             </props>
         </property>
+</bean>
+
+<bean id="org.apache.jetspeed.security.SecurityAccessController"
+      class='org.apache.jetspeed.security.impl.SecurityAccessControllerImpl'>
+       <constructor-arg index='0'>
+               <ref bean="org.apache.jetspeed.page.PageManager"/> 
+       </constructor-arg>
+       <!--
+          Security Mode:
+             1 = Permissions = use Jetspeed Java Security Policy
+             2 = Constraints = use Jetspeed (PageManager) Constraint-based 
Security  
+        -->
+        <constructor-arg index="1">
+            <value>2</value>
+        </constructor-arg>
 </bean>
     
 </beans>

Modified: portals/jetspeed-2/trunk/src/webapp/WEB-INF/assembly/ajax-layout.xml
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/src/webapp/WEB-INF/assembly/ajax-layout.xml?view=diff&rev=504018&r1=504017&r2=504018
==============================================================================
--- portals/jetspeed-2/trunk/src/webapp/WEB-INF/assembly/ajax-layout.xml 
(original)
+++ portals/jetspeed-2/trunk/src/webapp/WEB-INF/assembly/ajax-layout.xml Tue 
Feb  6 00:03:44 2007
@@ -212,7 +212,7 @@
         <ref bean="org.apache.jetspeed.search.SearchEngine"/>        
     </constructor-arg>              
     <constructor-arg index='5'>
-        <ref bean="org.apache.jetspeed.security.PermissionManager"/>        
+        <ref bean="org.apache.jetspeed.security.SecurityAccessController"/>    
    
     </constructor-arg>       
     <constructor-arg index='6'>
         <ref bean="PortletActionSecurityBehavior"/>        

Modified: 
portals/jetspeed-2/trunk/src/webapp/WEB-INF/assembly/jetspeed-services.xml
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/src/webapp/WEB-INF/assembly/jetspeed-services.xml?view=diff&rev=504018&r1=504017&r2=504018
==============================================================================
--- portals/jetspeed-2/trunk/src/webapp/WEB-INF/assembly/jetspeed-services.xml 
(original)
+++ portals/jetspeed-2/trunk/src/webapp/WEB-INF/assembly/jetspeed-services.xml 
Tue Feb  6 00:03:44 2007
@@ -98,6 +98,9 @@
           <entry 
key="org.apache.jetspeed.container.session.PortalSessionsManager">
             <bean 
class="org.apache.jetspeed.container.session.PortalSessionsManagerImpl"/>
           </entry>
+          <entry key="SecurityAccessController">
+            <ref bean="org.apache.jetspeed.security.SecurityAccessController"/>
+          </entry>
           
 <!-- first uncomment the below service bean in security-spi-atn.xml
          <entry key="PasswordEncodingService">



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to