[jboss-svn-commits] JBL Code SVN: r11191 - in labs/jbosslabs/trunk/portal-extensions: forge-ejb3/src/java/org/jboss/forge/ejb3/projectpages and 3 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sat Apr 21 13:39:43 EDT 2007


Author: adamw
Date: 2007-04-21 13:39:43 -0400 (Sat, 21 Apr 2007)
New Revision: 11191

Modified:
   labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsDescriptor.java
   labs/jbosslabs/trunk/portal-extensions/forge-ejb3/src/java/org/jboss/forge/ejb3/projectpages/ProjectPagesServiceBean.java
   labs/jbosslabs/trunk/portal-extensions/forge-portlets/src/java/org/jboss/forge/projects/info/ProjectInfoBean.java
   labs/jbosslabs/trunk/portal-extensions/forge-portlets/src/web/WEB-INF/jboss-portlet.xml
   labs/jbosslabs/trunk/portal-extensions/portal-default/src/web/WEB-INF/default-object.xml
Log:
Various fixes

Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsDescriptor.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsDescriptor.java	2007-04-21 14:38:18 UTC (rev 11190)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsDescriptor.java	2007-04-21 17:39:43 UTC (rev 11191)
@@ -30,10 +30,6 @@
 import org.jboss.forge.common.exceptions.ServiceRetrievalException;
 import org.jboss.forge.common.ejb3.LabsServices;
 import org.jboss.forge.common.projects.permissions.PermissionsChecker;
-import org.jboss.forge.common.projects.project.Categories;
-import org.jboss.forge.common.projects.project.Category;
-import org.jboss.forge.common.projects.project.Downloads;
-import org.jboss.forge.common.projects.project.File;
 import org.jboss.forge.common.projects.project.Project;
 import org.jboss.forge.common.projects.project.rw.CategoryRW;
 import org.jboss.forge.common.projects.project.rw.DownloadsRW;
@@ -263,7 +259,7 @@
 		}
 
 		String permission = prjConf.getEditPermission();
-		return permission == null || pc.hasPermission(permission);
+		return permission != null && pc.hasPermission(permission);
 	}
 
 	public Map<String, String> getProjectsNameId() {

Modified: labs/jbosslabs/trunk/portal-extensions/forge-ejb3/src/java/org/jboss/forge/ejb3/projectpages/ProjectPagesServiceBean.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-ejb3/src/java/org/jboss/forge/ejb3/projectpages/ProjectPagesServiceBean.java	2007-04-21 14:38:18 UTC (rev 11190)
+++ labs/jbosslabs/trunk/portal-extensions/forge-ejb3/src/java/org/jboss/forge/ejb3/projectpages/ProjectPagesServiceBean.java	2007-04-21 17:39:43 UTC (rev 11191)
@@ -152,12 +152,25 @@
      * To the specified portal object, binds permissions, which allow unlogged
      * users to view the object.
      * @param po Portal object, to which permissions should be bound.
+     * @param allowedRoles A set of role names, which are allowed to view the object.
      */
-    private void setSecurityBindings(PortalObject po) {
+    private void setSecurityBindings(PortalObject po, Set<String> allowedRoles) {
         DomainConfigurator configurator = adr.getDomain("portalobject").getConfigurator();
-        Set constraints = Collections.singleton(
-                new RoleSecurityBinding(PortalObjectPermission.VIEW_RECURSIVE_ACTION,
-                        SecurityConstants.UNCHECKED_ROLE_NAME));
+        Set<RoleSecurityBinding> constraints;
+
+        if (allowedRoles == null) {
+            constraints = Collections.singleton(new RoleSecurityBinding(
+                    PortalObjectPermission.VIEW_RECURSIVE_ACTION,
+                    SecurityConstants.UNCHECKED_ROLE_NAME));
+        } else {
+            constraints = new HashSet<RoleSecurityBinding>();
+            for (String role : allowedRoles) {
+                constraints.add(new RoleSecurityBinding(
+                        PortalObjectPermission.VIEW_RECURSIVE_ACTION,
+                        role));
+            }
+        }
+        
         configurator.setSecurityBindings(po.getId().toString(PortalObjectId.CANONICAL_FORMAT), constraints);
     }
 
@@ -281,36 +294,37 @@
      * @param pageName Name of the page.
      * @param portalObjIds A set where the id of the page should be added, for
      * later cleanup.
+     * @param allowedRoles A set of roles, which are allowed to view the page.
      * @return A specified page for this project.
      * @throws UnknownPortalException In case of a portal exception.
      */
     private Page getPage(PortalObject parent, String projectId, String pageName,
-                         Set<PortalObjectId> portalObjIds) throws UnknownPortalException {
+                         Set<PortalObjectId> portalObjIds, Set<String> allowedRoles) throws UnknownPortalException {
         // Checking if the page already exists.
         Page page = (Page) parent.getChild(pageName);
         if (page != null) {
             portalObjIds.add(page.getId());
-            return page;
-        }
+        } else {
+            try {
+                // Trying to create a new page.
+                page = ((PageContainer) parent).createPage(pageName);
 
-        try {
-            // Trying to create a new page.
-            page = ((PageContainer) parent).createPage(pageName);
+                // Marking this page as belonging to this project.
+                markAsLabsObject(page, projectId);
 
-            // Marking this page as belonging to this project.
-            markAsLabsObject(page, projectId);
+                // Setting the layout information.
+                page.setDeclaredProperty("layout.id", "projectDetails");
 
-            // Allowing users to view the page.
-            setSecurityBindings(page);
+                portalObjIds.add(page.getId());
+            } catch (DuplicatePortalObjectException e) {
+                throw new UnknownPortalException(e);
+            }
+        }
 
-            // Setting the layout information.
-            page.setDeclaredProperty("layout.id", "projectDetails");
+        // Allowing users to view the page.
+        setSecurityBindings(page, allowedRoles);
 
-            portalObjIds.add(page.getId());
-            return page;
-        } catch (DuplicatePortalObjectException e) {
-            throw new UnknownPortalException(e);
-        }
+        return page;
     }
 
     /**
@@ -321,14 +335,16 @@
      * @param pageName Name of the subpage.
      * @param portalObjIds A set where the id of the page should be added, for
      * later cleanup.
+     * @param allowedRoles A set of roles, which are allowed to view the page.
      * @return A specified page for this project.
      * @throws UnknownPortalException In case of a portal exception.
      */
-    private Page getProjectPage(String projectId, String pageName, Set<PortalObjectId> portalObjIds)
+    private Page getProjectPage(String projectId, String pageName, Set<PortalObjectId> portalObjIds,
+                                Set<String> allowedRoles)
             throws UnknownPortalException {
-        Page page = getPage(getLabsPortal(), projectId, projectId, portalObjIds);
+        Page page = getPage(getLabsPortal(), projectId, projectId, portalObjIds, allowedRoles);
         if (!Tools.isEmpty(pageName)) {
-            page = getPage(page, projectId, pageName, portalObjIds);
+            page = getPage(page, projectId, pageName, portalObjIds, allowedRoles);
         }
 
         return page;
@@ -460,10 +476,12 @@
      * @param projectPage Page descriptor.
      * @param portalObjIds Set where ids of used portal objects should be added.
      * @param portletIds Set where ids of portlet instances objects should be added.
+     * @param allowedRoles A set of roles, which are allowed to view the page.
      */
     private void updateProjectPage(String projectId,
                                    org.jboss.forge.common.projects.project.Page projectPage,
-                                   Set<PortalObjectId> portalObjIds, Set<String> portletIds) {
+                                   Set<PortalObjectId> portalObjIds, Set<String> portletIds,
+                                   Set<String> allowedRoles) {
         String pageName = projectPage.getName();
 
         // Counting the number of occurences of each portlet on the page.
@@ -475,7 +493,7 @@
         }
 
         try {
-            Page page = getProjectPage(projectId, pageName, portalObjIds);
+            Page page = getProjectPage(projectId, pageName, portalObjIds, allowedRoles);
 
             // A counter for numbering portlet windows occuring more than once,
             // which don't have a unique id preference set.
@@ -551,7 +569,7 @@
 
         // Updating each page.
         for (org.jboss.forge.common.projects.project.Page page : pages.getPages()) {
-            updateProjectPage(projectId, page, portalObjIds, portletIds);
+            updateProjectPage(projectId, page, portalObjIds, portletIds, null);
         }
 
         // Adding the admin page.
@@ -564,10 +582,14 @@
         adminPage.setName("admin");
         adminPage.getPortlets().add(adminPortlet);
 
-        updateProjectPage(projectId, adminPage, portalObjIds, portletIds);
+        Set<String> allowedRoles = new HashSet<String>();
+        allowedRoles.add("Admin");
+        allowedRoles.add(projectId + "-admin");
+
+        updateProjectPage(projectId, adminPage, portalObjIds, portletIds, allowedRoles);
     }
 
-    public void updatePages(Collection<? extends Project> projects) {
+    public synchronized void updatePages(Collection<? extends Project> projects) {
         String ejbContextID = PolicyContext.getContextID();
         try {
             PolicyContext.setContextID("portal-server.war");

Modified: labs/jbosslabs/trunk/portal-extensions/forge-portlets/src/java/org/jboss/forge/projects/info/ProjectInfoBean.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-portlets/src/java/org/jboss/forge/projects/info/ProjectInfoBean.java	2007-04-21 14:38:18 UTC (rev 11190)
+++ labs/jbosslabs/trunk/portal-extensions/forge-portlets/src/java/org/jboss/forge/projects/info/ProjectInfoBean.java	2007-04-21 17:39:43 UTC (rev 11191)
@@ -29,6 +29,7 @@
 import org.jboss.forge.common.exceptions.ServiceRetrievalException;
 import org.jboss.forge.common.projects.ProjectsHelper;
 import org.jboss.forge.common.projects.project.Project;
+import org.jboss.forge.common.projects.project.rw.ProjectRW;
 import org.jboss.forge.common.ejb3.LabsServices;
 import org.jboss.forge.common.ejb3.ProjectsService;
 import org.jboss.logging.Logger;
@@ -59,12 +60,16 @@
 
         if (request instanceof PortletRequest) {        
         		PortletRequest req = (PortletRequest) request;
-        		String projectId = ProjectsHelper.getSelectedProjectId(req);
+        		String projectId = ProjectsHelper.getSelectedProjectId(req, true);
 
                 project = getProjectById(projectId);
 
-    			projectURL = "/" + project.getId();
+                if (project == null) {
+                    project = new ProjectRW();
+                }
 
+                projectURL = "/" + project.getId();
+
                 username = FacesTools.getRemoteUser();
         }
 	}

Modified: labs/jbosslabs/trunk/portal-extensions/forge-portlets/src/web/WEB-INF/jboss-portlet.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-portlets/src/web/WEB-INF/jboss-portlet.xml	2007-04-21 14:38:18 UTC (rev 11190)
+++ labs/jbosslabs/trunk/portal-extensions/forge-portlets/src/web/WEB-INF/jboss-portlet.xml	2007-04-21 17:39:43 UTC (rev 11191)
@@ -29,4 +29,10 @@
             <trans-attribute>Required</trans-attribute>
         </transaction>
     </portlet>
+    <portlet>
+        <portlet-name>ProjectHeaderPortlet</portlet-name>
+        <transaction>
+            <trans-attribute>Required</trans-attribute>
+        </transaction>
+    </portlet>
 </portlet-app>
\ No newline at end of file

Modified: labs/jbosslabs/trunk/portal-extensions/portal-default/src/web/WEB-INF/default-object.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/portal-default/src/web/WEB-INF/default-object.xml	2007-04-21 14:38:18 UTC (rev 11190)
+++ labs/jbosslabs/trunk/portal-extensions/portal-default/src/web/WEB-INF/default-object.xml	2007-04-21 17:39:43 UTC (rev 11191)
@@ -333,18 +333,6 @@
 		<page>
 			<page-name>admin</page-name>
 			<window>
-				<window-name>AdminPortletWindow</window-name>
-				<instance-ref>AdminPortletInstance</instance-ref>
-				<region>center</region>
-				<height>0</height>
-			</window>
-			<window>
-				<window-name>CatalogPortletWindow</window-name>
-				<instance-ref>CatalogPortletInstance</instance-ref>
-				<region>left</region>
-				<height>0</height>
-			</window>
-			<window>
 				<window-name>UserPortletWindow</window-name>
 				<instance-ref>UserPortletInstance</instance-ref>
 				<region>center</region>
@@ -356,6 +344,12 @@
 				<region>left</region>
 				<height>0</height>
 			</window>
+			<window>
+				<window-name>AdminPortletWindow</window-name>
+				<instance-ref>AdminPortletInstance</instance-ref>
+				<region>center</region>
+				<height>1</height>
+			</window>
 			<security-constraint>
 				<policy-permission>
 					<action-name>viewrecursive</action-name>




More information about the jboss-svn-commits mailing list