You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by sn...@apache.org on 2007/11/26 16:52:16 UTC

svn commit: r598319 [5/12] - in /roller/trunk: ./ apps/planet/ apps/planet/testdata/ apps/weblogger/ apps/weblogger/custom/ apps/weblogger/nbproject/ apps/weblogger/src/java/META-INF/ apps/weblogger/src/java/org/apache/roller/weblogger/business/ apps/w...

Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/WeblogEntryTag.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/WeblogEntryTag.java?rev=598319&r1=598318&r2=598319&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/WeblogEntryTag.java (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/WeblogEntryTag.java Mon Nov 26 07:51:43 2007
@@ -22,22 +22,25 @@
 import java.sql.Timestamp;
 import org.apache.commons.lang.builder.EqualsBuilder;
 import org.apache.commons.lang.builder.HashCodeBuilder;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.roller.util.UUIDGenerator;
+import org.apache.roller.weblogger.business.WebloggerFactory;
 
 
 /**
  * Tag bean.
- *
  * @author Elias Torres
  */
 public class WeblogEntryTag implements Serializable {
+    private static Log log = LogFactory.getLog(WeblogEntryTag.class);    
     
     private static final long serialVersionUID = -2602052289337573384L;
     
     private String id = UUIDGenerator.generateUUID();
     private Weblog website = null;
     private WeblogEntry weblogEntry = null;
-    private User user = null;
+    private String userName = null;
     private String name = null;
     private Timestamp time = null;
     
@@ -45,14 +48,17 @@
     public WeblogEntryTag() {
     }
     
-    public WeblogEntryTag(String id,
-            Weblog website,WeblogEntry weblogEntry,
-            User user, String name,
+    public WeblogEntryTag(
+            String id,
+            Weblog website,
+            WeblogEntry weblogEntry,
+            User user, 
+            String name,
             Timestamp time) {
         //this.id = id;
         this.website = website;
         this.weblogEntry = weblogEntry;
-        this.user = user;
+        this.userName = user.getUserName();
         this.name = name;
         this.time = time;
     }
@@ -93,11 +99,20 @@
     
     
     public User getUser() {
-        return this.user;
+        try {
+            return WebloggerFactory.getWeblogger().getUserManager().getUserByUserName(getCreatorUserName());
+        } catch (Exception e) {
+            log.error("ERROR fetching user object for username: " + getCreatorUserName(), e);
+        }
+        return null;
     }
     
-    public void setUser( User user ) {
-        this.user = user;
+    public String getCreatorUserName() {
+        return userName;
+    }
+
+    public void setCreatorUserName(String userName) {
+        this.userName = userName;
     }
     
     /**
@@ -148,5 +163,5 @@
         .append(getWeblogEntry())
         .toHashCode();
     }
-    
+
 }

Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/WeblogEntryTag.orm.xml
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/WeblogEntryTag.orm.xml?rev=598319&r1=598318&r2=598319&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/WeblogEntryTag.orm.xml (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/WeblogEntryTag.orm.xml Mon Nov 26 07:51:43 2007
@@ -25,14 +25,14 @@
             <basic name="time">
                 <column name="time" insertable="true" updatable="true" unique="false"/>
             </basic>
+            <basic name="creatorUserName">
+                <column name="creator" insertable="true" updatable="true" unique="false"/>
+            </basic>
             <many-to-one name="weblog" target-entity="org.apache.roller.weblogger.pojos.Weblog">
                 <join-column name="websiteid" insertable="true" updatable="true" nullable="false"/>
             </many-to-one>
             <many-to-one name="weblogEntry" target-entity="org.apache.roller.weblogger.pojos.WeblogEntry">
                 <join-column name="entryid" insertable="true" updatable="true"/>
-            </many-to-one>
-            <many-to-one name="user" target-entity="org.apache.roller.weblogger.pojos.User">
-                <join-column name="userid" insertable="true" updatable="true"/>
             </many-to-one>
         </attributes>
     </entity>

Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/WeblogPermission.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/WeblogPermission.java?rev=598319&r1=598318&r2=598319&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/WeblogPermission.java (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/WeblogPermission.java Mon Nov 26 07:51:43 2007
@@ -1,8 +1,8 @@
 /*
- * Copyright 2005 Sun Microsystems, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  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
@@ -11,18 +11,21 @@
  * 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.
+ * limitations under the License.  For additional information regarding
+ * copyright in this work, please see the NOTICE file in the top level
+ * directory of this distribution.
  */
 
 package org.apache.roller.weblogger.pojos; 
 
-import org.apache.commons.lang.builder.EqualsBuilder;
-import org.apache.commons.lang.builder.HashCodeBuilder;
-import org.apache.roller.util.UUIDGenerator;
+import java.security.Permission;
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.roller.weblogger.WebloggerException;
+import org.apache.roller.weblogger.business.WebloggerFactory;
 
 /**
- * Represents a user's permissions within a website.
- *
+ * Permission for one specific weblog
  * @ejb:bean name="WeblogPermission"
  * @struts.form include-all="true"
  * @hibernate.class lazy="true" table="roller_user_permissions"
@@ -30,124 +33,100 @@
  *
  * @author Dave Johnson
  */
-public class WeblogPermission
-{
-    private String      id = UUIDGenerator.generateUUID();
-    private Weblog website = null;
-    private User    user = null;
-    private boolean     pending = true;
-    public static short LIMITED = 0x00; // 0000 
-    public static short AUTHOR  = 0x01; // 0001
-    public static short ADMIN   = 0x03; // 0011 
-    private short       permissionMask = LIMITED;
-    
-    /** Creates a new instance of PermissionsData */
-    public WeblogPermission() 
-    {
-    }
-
-    /**
-     * Check for specific permission.
-     */
-    public boolean has(short priv)
-    {
-        return (getPermissionMask() & priv) == priv;
-    }
-    /**
-     * @ejb:persistent-field
-     * @hibernate.id column="id"
-     *     generator-class="assigned"  
-     */
-    public String getId() 
-    {
-        return id;
-    }
-    /** @ejb:persistent-field */
-    public void setId(String id) 
-    {
-        // Form bean workaround: empty string is never a valid id
-        if (id != null && id.trim().length() == 0) return; 
-        this.id = id;
-    }
-    /** 
-     * @hibernate.many-to-one column="website_id" cascade="none" not-null="false"
-     */
-    public Weblog getWebsite() 
-    {
-        return website;
-    }
-    public void setWebsite(Weblog website) 
-    {
-        this.website = website;
-    }
-    /** 
-     * @hibernate.many-to-one column="user_id" cascade="none" not-null="false"
-     */
-    public User getUser() 
-    {
-        return user;
-    }
-    public void setUser(User user) 
-    {
-        this.user = user;
-    }
-    /**
-     * Bit mask that encodes user's permissions in website.
-     * @ejb:persistent-field
-     * @hibernate.property column="permission_mask" non-null="true" unique="false"
-     */
-    public short getPermissionMask() 
-    {
-        return permissionMask;
-    }
-    /** @ejb:persistent-field */
-    public void setPermissionMask(short permissionMask) 
-    {
-        this.permissionMask = permissionMask;
-    }
-    /**
-     * True if user has been invited to join site but has not yet accepted.
-     * And false if user is member of website.
-     * @ejb:persistent-field
-     * @hibernate.property column="pending" non-null="true" unique="false"
-     */
-    public boolean isPending() 
-    {
-        return pending;
-    }
-    /** @ejb:persistent-field */
-    public void setPending(boolean pending) 
-    {
-        this.pending = pending;
-    }
+public class WeblogPermission extends ObjectPermission { 
+    public static final String EDIT_DRAFT = "editdraft";
+    public static final String POST = "post";
+    public static final String ADMIN = "admin";
+    public static final List<String> ALL_ACTIONS = new ArrayList<String>();
     
-    //------------------------------------------------------- Good citizenship
+    static {
+        ALL_ACTIONS.add(EDIT_DRAFT);
+        ALL_ACTIONS.add(POST);
+        ALL_ACTIONS.add(ADMIN);
+    }
 
+    
+    public WeblogPermission(Weblog weblog, User user, String actions) {
+        super("WeblogPermission user: " + user.getUserName());
+        setActions(actions);
+        objectType = "Weblog";
+        objectId = weblog.getHandle();
+        userName = user.getUserName();
+    }
+    
+    public WeblogPermission(Weblog weblog, User user, List<String> actions) {
+        super("WeblogPermission user: " + user.getUserName());
+        setActionsAsList(actions); 
+        objectType = "Weblog";
+        objectId = weblog.getHandle();
+        userName = user.getUserName();
+    }
+    
+    public WeblogPermission(Weblog weblog, List<String> actions) {
+        super("WeblogPermission user: N/A");
+        setActionsAsList(actions); 
+        objectType = "Weblog";
+        objectId = weblog.getHandle();
+    }
+    
+    public Weblog getWeblog() throws WebloggerException {
+        if (objectId != null) {
+            return WebloggerFactory.getWeblogger().getWeblogManager().getWeblogByHandle(objectId, null);
+        }
+        return null;
+    }
+
+    public User getUser() throws WebloggerException {
+        if (userName != null) {
+            return WebloggerFactory.getWeblogger().getUserManager().getUserByUserName(userName);
+        }
+        return null;
+    }
+
+    public boolean equals(Object arg0) {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public int hashCode() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    public boolean implies(Permission perm) {
+        if (perm instanceof WeblogPermission) {
+            WeblogPermission rperm = (WeblogPermission)perm;
+            
+            if (hasAction(ADMIN)) {
+                // admin implies all other permissions
+                return true;
+                
+            } else if (hasAction(POST)) {
+                // Best we've got is POST, so make sure perm doesn't specify POST
+                for (String action : rperm.getActionsAsList()) {
+                    if (action.equals(ADMIN)) return false;
+                }
+                
+            } else if (hasAction(EDIT_DRAFT)) {
+                // Best we've got is EDIT_DRAFT, so make sure perm doesn't specify anything else
+                for (String action : rperm.getActionsAsList()) {
+                    if (action.equals(POST)) return false;
+                    if (action.equals(ADMIN)) return false;
+                }
+            }
+            return true;
+        }
+        return false;
+    }
+    
     public String toString() {
-        StringBuffer buf = new StringBuffer();
-        buf.append("{");
-        buf.append(this.id);
-        buf.append(", ").append(this.permissionMask);
-        buf.append(", ").append(this.pending);
-        buf.append("}");
-        return buf.toString();
-    }
-    
-    public boolean equals(Object other) {
-        if (other == this) return true;
-        if (other instanceof WeblogPermission != true) return false;
-        WeblogPermission o = (WeblogPermission)other;
-        return new EqualsBuilder()
-            .append(user, o.user) 
-            .append(website, o.website) 
-            .isEquals();
-    }
-    
-    public int hashCode() { 
-        return new HashCodeBuilder()
-            .append(user)
-            .append(website)
-            .toHashCode();
+        StringBuilder sb = new StringBuilder();
+        sb.append("GlobalPermission: ");
+        for (String action : getActionsAsList()) { 
+            sb.append(" ").append(action).append(" ");
+        }
+        return sb.toString();
     }
-
 }
+
+
+
+

Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/WeblogPermission.orm.xml
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/WeblogPermission.orm.xml?rev=598319&r1=598318&r2=598319&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/WeblogPermission.orm.xml (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/pojos/WeblogPermission.orm.xml Mon Nov 26 07:51:43 2007
@@ -6,37 +6,41 @@
     <persistence-unit-metadata>
         <persistence-unit-defaults>
             <access>PROPERTY</access>
-        </persistence-unit-defaults>
+        </persistence-unit-defaults> 
     </persistence-unit-metadata>
     <package>org.apache.roller.weblogger.pojos</package>
     <entity metadata-complete="true" name="WeblogPermission"
             class="org.apache.roller.weblogger.pojos.WeblogPermission">
-        <table name="roller_user_permissions"/>
-        <named-query name="WeblogPermission.getByWebsiteAndUser">
-            <query>SELECT p FROM WeblogPermission p WHERE p.website = ?1 AND p.user = ?2</query>
-        </named-query>
-        <named-query name="WeblogPermission.getByUserAndPending">
-            <query>SELECT p FROM WeblogPermission p WHERE p.user = ?1 AND p.pending = ?2</query>
-        </named-query>
-        <named-query name="WeblogPermission.getByWebsiteAndPending">
-            <query>SELECT p FROM WeblogPermission p WHERE p.website = ?1 AND p.pending = ?2</query>
-        </named-query>
-        <attributes>
-            <id name="id">
-                <column name="id"/>
-            </id>
-            <basic name="permissionMask">
-                <column name="permission_mask" insertable="true" updatable="true" unique="false"/>
-            </basic>
-            <basic name="pending">
-                <column name="pending" insertable="true" updatable="true" unique="false"/>
-            </basic>
-            <many-to-one name="website" target-entity="org.apache.roller.weblogger.pojos.Weblog">
-                <join-column name="website_id" insertable="true" updatable="true" nullable="true"/>
-            </many-to-one>
-            <many-to-one name="user" target-entity="org.apache.roller.weblogger.pojos.User">
-                <join-column name="user_id" insertable="true" updatable="true" nullable="true"/>
-            </many-to-one>
-        </attributes>
+        <discriminator-value>Weblog</discriminator-value>
+        
+        <named-query name="WeblogPermission.getAll">
+            <query>SELECT p FROM WeblogPermission p</query>
+        </named-query>
+        
+        <named-query name="WeblogPermission.getByUserName">
+            <query>SELECT p FROM WeblogPermission p WHERE p.userName = ?1 AND p.pending &lt;&gt; TRUE</query>
+        </named-query>
+        
+        <named-query name="WeblogPermission.getByWeblogId">
+            <query>SELECT p FROM WeblogPermission p WHERE p.objectId = ?1 AND p.pending &lt;&gt; TRUE</query>
+        </named-query>
+        
+        <named-query name="WeblogPermission.getByUserName&amp;WeblogId">
+            <query>SELECT p FROM WeblogPermission p WHERE p.userName = ?1 AND p.objectId = ?2</query>
+        </named-query>
+        
+        <named-query name="WeblogPermission.getByUserName&amp;WeblogId&amp;NotPending">
+            <query>SELECT p FROM WeblogPermission p WHERE p.userName = ?1 AND p.objectId = ?2 AND p.pending &lt;&gt; true</query>
+        </named-query>
+
+        
+        <named-query name="WeblogPermission.getByUserName&amp;Pending">
+            <query>SELECT p FROM WeblogPermission p WHERE p.userName = ?1 AND p.pending = TRUE</query>
+        </named-query>
+        
+        <named-query name="WeblogPermission.getByWeblogId&amp;Pending">
+            <query>SELECT p FROM WeblogPermission p WHERE p.objectId = ?1 AND p.pending = true</query>
+        </named-query>
+        
     </entity>
 </entity-mappings>

Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/RollerSession.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/RollerSession.java?rev=598319&r1=598318&r2=598319&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/RollerSession.java (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/RollerSession.java Mon Nov 26 07:51:43 2007
@@ -47,7 +47,7 @@
     static final long serialVersionUID = 5890132909166913727L;
     
     // the id of the user represented by this session
-    private String userId = null;
+    private String userName = null;
     
     private static Log log = LogFactory.getLog(RollerSession.class);
     
@@ -64,25 +64,34 @@
         HttpSession session = request.getSession(false);
         if (session != null) {
             rollerSession = (RollerSession)session.getAttribute(ROLLER_SESSION);
+            
             if (rollerSession == null) {
                 // HttpSession with no RollerSession?
                 // Must be a session that was de-serialized from a previous run.
                 rollerSession = new RollerSession();
                 session.setAttribute(ROLLER_SESSION, rollerSession);
             }
+            
             Principal principal = request.getUserPrincipal();
-            if (rollerSession.getAuthenticatedUser() == null && principal != null) {
+
+            // If we've got a principal but no user object, then attempt to get
+            // user object from user manager but *only* do this if we have been 
+            // bootstrapped because under an SSO scenario we may have a 
+            // principal even before we have been bootstrapped.
+            if (rollerSession.getAuthenticatedUser() == null && principal != null && WebloggerFactory.isBootstrapped()) { 
                 try {
+                    
                     UserManager umgr = WebloggerFactory.getWeblogger().getUserManager();
                     User user = umgr.getUserByUserName(principal.getName());
                     
                     // try one time to auto-provision, only happens if user==null
                     // which means installation has SSO-enabled in security.xml
-                    if(user == null && WebloggerConfig.getBooleanProperty("users.sso.autoProvision.enabled")) {
+                    if (user == null && WebloggerConfig.getBooleanProperty("users.sso.autoProvision.enabled")) {
+                        
                         // provisioning enabled, get provisioner and execute
                         AutoProvision provisioner = RollerContext.getAutoProvision();
                         if(provisioner != null) {
-                            boolean userProvisioned = provisioner.execute();
+                            boolean userProvisioned = provisioner.execute(request);
                             if(userProvisioned) {
                                 // try lookup again real quick
                                 user = umgr.getUserByUserName(principal.getName());
@@ -90,9 +99,10 @@
                         }
                     }
                     // only set authenticated user if user is enabled
-                    if(user != null && user.getEnabled().booleanValue()) {
+                    if (user != null && user.getEnabled().booleanValue()) {
                         rollerSession.setAuthenticatedUser(user);
                     }
+                    
                 } catch (WebloggerException e) {
                     log.error("ERROR: getting user object",e);
                 }
@@ -137,12 +147,12 @@
     public User getAuthenticatedUser() {
         
         User authenticUser = null;
-        if(userId != null) {
+        if(userName != null) {
             try {
                 UserManager mgr = WebloggerFactory.getWeblogger().getUserManager();
-                authenticUser = mgr.getUser(userId);
+                authenticUser = mgr.getUserByUserName(userName);
             } catch (WebloggerException ex) {
-                log.warn("Error looking up authenticated user "+userId, ex);
+                log.warn("Error looking up authenticated user "+userName, ex);
             }
         }
         
@@ -154,7 +164,7 @@
      * Authenticated user associated with this session.
      */
     public void setAuthenticatedUser(User authenticatedUser) {
-        this.userId = authenticatedUser.getId();
+        this.userName = authenticatedUser.getUserName();
     }
     
        

Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/security/AuthoritiesPopulator.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/security/AuthoritiesPopulator.java?rev=598319&r1=598318&r2=598319&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/security/AuthoritiesPopulator.java (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/security/AuthoritiesPopulator.java Mon Nov 26 07:51:43 2007
@@ -18,7 +18,7 @@
 package org.apache.roller.weblogger.ui.core.security;
 
 import java.util.Iterator;
-
+import java.util.List;
 import org.acegisecurity.GrantedAuthority;
 import org.acegisecurity.GrantedAuthorityImpl;
 import org.acegisecurity.ldap.LdapDataAccessException;
@@ -48,12 +48,14 @@
      */
     public GrantedAuthority[] getGrantedAuthorities(LdapUserDetails userDetails) throws LdapDataAccessException {
 
-
         User userData = null;
+        List roles = null;
         try {
             Weblogger roller = WebloggerFactory.getWeblogger();
             UserManager umgr = roller.getUserManager();
             userData = umgr.getUserByUserName(userDetails.getUsername(), Boolean.TRUE);
+            roles = umgr.getRoles(userData);
+            
         } catch (WebloggerException ex) {
             throw new LdapDataAccessException("ERROR in user lookup", ex);
         }
@@ -62,11 +64,12 @@
             throw new LdapDataAccessException("ERROR no user: " + userDetails.getUsername());
         }
 
-        int roleCount = userData.getRoles().size();
+        
+        int roleCount = roles.size();
         if (defaultRole != null) roleCount++;
         GrantedAuthority[] authorities = new GrantedAuthorityImpl[roleCount];
         int i = 0;
-        for (Iterator it = userData.getRoles().iterator(); it.hasNext();) {
+        for (Iterator it = roles.iterator(); it.hasNext();) {
             UserRole role = (UserRole) it.next();
             authorities[i++] = new GrantedAuthorityImpl(role.getRole());
         }

Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/security/AutoProvision.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/security/AutoProvision.java?rev=598319&r1=598318&r2=598319&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/security/AutoProvision.java (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/security/AutoProvision.java Mon Nov 26 07:51:43 2007
@@ -17,8 +17,10 @@
 */
 package org.apache.roller.weblogger.ui.core.security;
 
+import javax.servlet.http.HttpServletRequest;
+
 public interface AutoProvision {
 
-  public boolean execute();
+  public boolean execute(HttpServletRequest request);
   
 }

Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/security/BasicUserAutoProvision.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/security/BasicUserAutoProvision.java?rev=598319&r1=598318&r2=598319&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/security/BasicUserAutoProvision.java (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/security/BasicUserAutoProvision.java Mon Nov 26 07:51:43 2007
@@ -17,6 +17,8 @@
 */
 package org.apache.roller.weblogger.ui.core.security;
 
+import javax.servlet.http.HttpServletRequest;
+
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.roller.weblogger.WebloggerException;
@@ -37,8 +39,8 @@
    * 
    * @see org.apache.roller.weblogger.ui.core.security.AutoProvision#execute()
    */
-  public boolean execute() {
-    User ud = CustomUserRegistry.getUserDetailsFromAuthentication();
+  public boolean execute(HttpServletRequest request) {
+    User ud = CustomUserRegistry.getUserDetailsFromAuthentication(request);
     
     if(ud != null) {
       UserManager mgr;

Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/security/CustomUserRegistry.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/security/CustomUserRegistry.java?rev=598319&r1=598318&r2=598319&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/security/CustomUserRegistry.java (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/security/CustomUserRegistry.java Mon Nov 26 07:51:43 2007
@@ -18,11 +18,13 @@
 package org.apache.roller.weblogger.ui.core.security;
 
 import java.util.Locale;
+import java.util.Set;
 import java.util.TimeZone;
 
 import javax.naming.NamingException;
 import javax.naming.directory.Attribute;
 import javax.naming.directory.Attributes;
+import javax.servlet.http.HttpServletRequest;
 
 import org.acegisecurity.Authentication;
 import org.acegisecurity.context.SecurityContextHolder;
@@ -39,21 +41,24 @@
  */
 public class CustomUserRegistry {
     
-    private static Log log = LogFactory.getLog(CustomUserRegistry.class);
-    
-    private static String DEFAULT_SNAME_LDAP_ATTRIBUTE = "screenname";
-    private static String DEFAULT_NAME_LDAP_ATTRIBUTE = "cn";
-    private static String DEFAULT_EMAIL_LDAP_ATTRIBUTE = "mail";
-    private static String DEFAULT_LOCALE_LDAP_ATTRIBUTE = "locale";
-    private static String DEFAULT_TIMEZONE_LDAP_ATTRIBUTE = "timezone";
-    
-    private static String SNAME_LDAP_PROPERTY = "users.sso.registry.ldap.attributes.screenname";
-    private static String NAME_LDAP_PROPERTY = "users.sso.registry.ldap.attributes.name";
-    private static String EMAIL_LDAP_PROPERTY = "users.sso.registry.ldap.attributes.email";
-    private static String LOCALE_LDAP_PROPERTY = "users.sso.registry.ldap.attributes.locale";
-    private static String TIMEZONE_LDAP_PROPERTY = "users.sso.registry.ldap.attributes.timezone";
+    private static final Log log = LogFactory.getLog(CustomUserRegistry.class);
+
+    private static final String DEFAULT_SNAME_LDAP_ATTRIBUTE = "screenname";
+    private static final String DEFAULT_UID_LDAP_ATTRIBUTE = "uid";
+    private static final String DEFAULT_NAME_LDAP_ATTRIBUTE = "cn";
+    private static final String DEFAULT_EMAIL_LDAP_ATTRIBUTE = "mail";
+    private static final String DEFAULT_LOCALE_LDAP_ATTRIBUTE = "locale";
+    private static final String DEFAULT_TIMEZONE_LDAP_ATTRIBUTE = "timezone";
     
-    public static User getUserDetailsFromAuthentication() {
+    private static final String SNAME_LDAP_PROPERTY = "users.sso.registry.ldap.attributes.screenname";
+    private static final String UID_LDAP_PROPERTY = "users.sso.registry.ldap.attributes.uid";
+    private static final String NAME_LDAP_PROPERTY = "users.sso.registry.ldap.attributes.name";
+    private static final String EMAIL_LDAP_PROPERTY = "users.sso.registry.ldap.attributes.email";
+    private static final String LOCALE_LDAP_PROPERTY = "users.sso.registry.ldap.attributes.locale";
+    private static final String TIMEZONE_LDAP_PROPERTY = "users.sso.registry.ldap.attributes.timezone";
+
+    public static User getUserDetailsFromAuthentication(HttpServletRequest request) {
+
         boolean usingSSO = WebloggerConfig.getBooleanProperty("users.sso.enabled");
         if(!usingSSO) {
             log.info("SSO is not enabled. Skipping CustomUserRegistry functionality.");
@@ -62,82 +67,107 @@
         
         Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
         
+        User ud = new User();
+        // setting default
+        ud.setId(null);
+        ud.setLocale(Locale.getDefault().toString());
+        ud.setTimeZone(TimeZone.getDefault().getID());
+        ud.setDateCreated(new java.util.Date());
+
+        String userName = null;
+        String password = null;
+        String fullName = null;
+        String email = null;
+        String screenName = null;
+        String locale = null;
+        String timezone = null;
+        boolean enabled = false;
+
         if(authentication == null) {
-            log.warn("No Authentication found in SecurityContextHolder.");
-            return null;
-        }
+            // Try to get SSO data from HttpServletRequest
+            userName = getRequestAttribute(request, WebloggerConfig.getProperty(UID_LDAP_PROPERTY, DEFAULT_SNAME_LDAP_ATTRIBUTE));
+
+            screenName = getRequestAttribute(request, WebloggerConfig.getProperty(SNAME_LDAP_PROPERTY, DEFAULT_SNAME_LDAP_ATTRIBUTE));
+
+            fullName = getRequestAttribute(request, WebloggerConfig.getProperty(NAME_LDAP_PROPERTY, DEFAULT_NAME_LDAP_ATTRIBUTE));
+
+            email = getRequestAttribute(request, WebloggerConfig.getProperty(EMAIL_LDAP_PROPERTY, DEFAULT_EMAIL_LDAP_ATTRIBUTE));
+
+            locale = getRequestAttribute(request, WebloggerConfig.getProperty(LOCALE_LDAP_PROPERTY, DEFAULT_LOCALE_LDAP_ATTRIBUTE));
+
+            timezone = getRequestAttribute(request, WebloggerConfig.getProperty(TIMEZONE_LDAP_PROPERTY, DEFAULT_TIMEZONE_LDAP_ATTRIBUTE));
+
+ 
+            if (userName == null && fullName == null && screenName == null &&
+                    email == null && locale == null && timezone == null) {
+
+                log.warn("No Authentication found in SecurityContextHolder and HttpServletRequest.");
+                return null;
+            } else {
+                enabled = true;
+            }
+        } else {
         
-        Object oPrincipal = authentication.getPrincipal();
+            Object oPrincipal = authentication.getPrincipal();
         
-        if(oPrincipal == null) {
-            log.warn("Principal is null. Skipping auto-registration.");
-            return null;
-        }
+            if(oPrincipal == null) {
+                log.warn("Principal is null. Skipping auto-registration.");
+                return null;
+            }
         
-        if (!(oPrincipal instanceof UserDetails)) {
-            log.warn("Unsupported Principal type in Authentication. Skipping auto-registration.");
-            return null;
-        }
+            if (!(oPrincipal instanceof UserDetails)) {
+                log.warn("Unsupported Principal type in Authentication. Skipping auto-registration.");
+                return null;
+            }
         
-        UserDetails userDetails = (UserDetails) oPrincipal;
+            UserDetails userDetails = (UserDetails) oPrincipal;
         
-        String userName = userDetails.getUsername();
-        String password = userDetails.getPassword();
-        boolean enabled = userDetails.isEnabled();
+            userName = userDetails.getUsername();
+            password = userDetails.getPassword();
+            enabled = userDetails.isEnabled();
         
-        User ud = new User();
-        ud.setId(null);
-        ud.setUserName(userName);
         
+            if(userDetails instanceof RollerUserDetails) {
+                RollerUserDetails rollerDetails = (RollerUserDetails) userDetails;
+
+                screenName = rollerDetails.getScreenName();
+                fullName = rollerDetails.getFullName();
+                email = rollerDetails.getEmailAddress();
+                locale = rollerDetails.getLocale();
+                timezone = rollerDetails.getTimeZone();
+            
+            } else if(userDetails instanceof LdapUserDetails) {
+                LdapUserDetails ldapDetails = (LdapUserDetails) userDetails;
+
+                Attributes attributes = ldapDetails.getAttributes();
+                screenName = getLdapAttribute(attributes, WebloggerConfig.getProperty(SNAME_LDAP_PROPERTY, DEFAULT_SNAME_LDAP_ATTRIBUTE));
+                fullName = getLdapAttribute(attributes, WebloggerConfig.getProperty(NAME_LDAP_PROPERTY, DEFAULT_NAME_LDAP_ATTRIBUTE));
+                email = getLdapAttribute(attributes, WebloggerConfig.getProperty(EMAIL_LDAP_PROPERTY, DEFAULT_EMAIL_LDAP_ATTRIBUTE));
+                locale = getLdapAttribute(attributes, WebloggerConfig.getProperty(LOCALE_LDAP_PROPERTY, DEFAULT_LOCALE_LDAP_ATTRIBUTE));
+                timezone = getLdapAttribute(attributes, WebloggerConfig.getProperty(TIMEZONE_LDAP_PROPERTY, DEFAULT_TIMEZONE_LDAP_ATTRIBUTE));
+            
+            }
+        }
+
         boolean storePassword = WebloggerConfig.getBooleanProperty("users.sso.passwords.save");
         if(!storePassword) {
             password = WebloggerConfig.getProperty("users.sso.passwords.defaultValue","<unknown>");
         }
+
         ud.setPassword(password);
         ud.setEnabled(enabled ? Boolean.TRUE : Boolean.FALSE);
-        ud.setLocale(Locale.getDefault().toString());
-        ud.setTimeZone(TimeZone.getDefault().getID());
-        ud.setDateCreated(new java.util.Date());
-        
-        if(userDetails instanceof RollerUserDetails) {
-            RollerUserDetails rollerDetails = (RollerUserDetails) userDetails;
-            
-            ud.setScreenName(rollerDetails.getScreenName());
-            
-            ud.setFullName(rollerDetails.getFullName());
 
-            //TODO: Bug here as setting email addy to a full name value?
-            ud.setEmailAddress(rollerDetails.getFullName());
-            if(rollerDetails.getTimeZone() != null) {
-                ud.setTimeZone(rollerDetails.getTimeZone());
-            }
-            
-            if(rollerDetails.getLocale() != null) {
-                ud.setLocale(rollerDetails.getLocale());
-            }
-            
-        } else if(userDetails instanceof LdapUserDetails) {
-            LdapUserDetails ldapDetails = (LdapUserDetails) userDetails;
-            Attributes attributes = ldapDetails.getAttributes();
-            String sname = getLdapAttribute(attributes, WebloggerConfig.getProperty(SNAME_LDAP_PROPERTY, DEFAULT_SNAME_LDAP_ATTRIBUTE));
-            String name = getLdapAttribute(attributes, WebloggerConfig.getProperty(NAME_LDAP_PROPERTY, DEFAULT_NAME_LDAP_ATTRIBUTE));
-            String email = getLdapAttribute(attributes, WebloggerConfig.getProperty(EMAIL_LDAP_PROPERTY, DEFAULT_EMAIL_LDAP_ATTRIBUTE));
-
-            ud.setScreenName(sname);
-            ud.setFullName(name);
-            ud.setEmailAddress(email);
-            
-            String locale = getLdapAttribute(attributes, WebloggerConfig.getProperty(LOCALE_LDAP_PROPERTY, DEFAULT_LOCALE_LDAP_ATTRIBUTE));
-            String timezone = getLdapAttribute(attributes, WebloggerConfig.getProperty(TIMEZONE_LDAP_PROPERTY, DEFAULT_TIMEZONE_LDAP_ATTRIBUTE));
-            
-            if(locale != null) {
-                ud.setLocale(locale);
-            }
-            if(timezone != null) {
-                ud.setTimeZone(timezone);
-            }
+        ud.setUserName(userName);
+        ud.setFullName(fullName);
+        ud.setEmailAddress(email);
+        ud.setScreenName(screenName);
+        if (locale != null) {
+            ud.setLocale(locale);
         }
-        
+        if (timezone != null) {
+            ud.setTimeZone(timezone);
+        }
+
         return ud;
     }
     
@@ -164,6 +194,22 @@
         }
         
         return oValue.toString();
+    }
+
+    private static String getRequestAttribute(HttpServletRequest request, String attributeName) {
+
+        String attr = null;
+        Object attrObj = request.getAttribute(attributeName);
+        if (attrObj instanceof String) {
+            attr = (String)attrObj;
+        } else if (attrObj instanceof Set) {
+            Set attrSet = (Set)attrObj;           
+            if (!attrSet.isEmpty()) {
+                attr = (String)attrSet.iterator().next();
+            }
+        }
+
+        return attr;
     }
     
 }

Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/security/RollerUserDetailsService.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/security/RollerUserDetailsService.java?rev=598319&r1=598318&r2=598319&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/security/RollerUserDetailsService.java (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/security/RollerUserDetailsService.java Mon Nov 26 07:51:43 2007
@@ -1,6 +1,6 @@
 package org.apache.roller.weblogger.ui.core.security;
 
-import java.util.Iterator;
+import java.util.List;
 import org.acegisecurity.GrantedAuthority;
 import org.acegisecurity.GrantedAuthorityImpl;
 import org.acegisecurity.userdetails.UserDetails;
@@ -10,9 +10,9 @@
 import org.apache.roller.weblogger.business.Weblogger;
 import org.apache.roller.weblogger.business.WebloggerFactory;
 import org.apache.roller.weblogger.business.UserManager;
-import org.apache.roller.weblogger.pojos.UserRole;
 import org.apache.roller.weblogger.pojos.User;
 import org.springframework.dao.DataAccessException;
+import org.springframework.dao.DataAccessResourceFailureException;
 import org.springframework.dao.DataRetrievalFailureException;
 
 /**
@@ -21,31 +21,34 @@
 public class RollerUserDetailsService implements UserDetailsService {
 
     public UserDetails loadUserByUsername(String userName) 
-        throws UsernameNotFoundException, DataAccessException {
-        
-        User userData = null;
+            throws UsernameNotFoundException, DataAccessException {
         try {
+
             Weblogger roller = WebloggerFactory.getWeblogger();
             UserManager umgr = roller.getUserManager();
-            userData = umgr.getUserByUserName(userName, Boolean.TRUE); 
+            User userData = null;
+            try {
+                userData = umgr.getUserByUserName(userName, Boolean.TRUE);
+            } catch (WebloggerException ex) {
+                throw new DataRetrievalFailureException("ERROR in user lookup", ex);
+            }
+
+            if (userData == null) {
+                throw new UsernameNotFoundException("ERROR no user: " + userName);
+            }
+
+            List<String> roles = umgr.getRoles(userData);
+            GrantedAuthority[] authorities = new GrantedAuthorityImpl[roles.size()];
+            int i = 0;
+            for (String role : roles) {
+                authorities[i++] = new GrantedAuthorityImpl(role);
+            }
+
+            return new org.acegisecurity.userdetails.User(userData.getUserName(), userData.getPassword(), true, authorities);
+            
         } catch (WebloggerException ex) {
-            throw new DataRetrievalFailureException("ERROR in user lookup", ex);
-        } 
-        
-        if (userData == null) {
-            throw new UsernameNotFoundException("ERROR no user: " + userName);
-        }
-        
-        GrantedAuthority[] authorities = 
-            new GrantedAuthorityImpl[userData.getRoles().size()];
-        int i = 0;
-        for (Iterator it = userData.getRoles().iterator(); it.hasNext();) {
-            UserRole role = (UserRole)it.next();
-            authorities[i++] = new GrantedAuthorityImpl(role.getRole());
+            throw new DataAccessResourceFailureException("ERROR: fetching roles", ex);
         }
-        
-        return new org.acegisecurity.userdetails.User(
-            userData.getUserName(), userData.getPassword(), true, authorities);
     }
     
 }

Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/tags/calendar/BigWeblogCalendarModel.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/tags/calendar/BigWeblogCalendarModel.java?rev=598319&r1=598318&r2=598319&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/tags/calendar/BigWeblogCalendarModel.java (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/tags/calendar/BigWeblogCalendarModel.java Mon Nov 26 07:51:43 2007
@@ -26,7 +26,7 @@
 import org.apache.commons.logging.LogFactory;
 import org.apache.roller.weblogger.WebloggerException;
 import org.apache.roller.weblogger.business.WebloggerFactory;
-import org.apache.roller.weblogger.business.WeblogManager;
+import org.apache.roller.weblogger.business.WeblogEntryManager;
 import org.apache.roller.weblogger.pojos.WeblogEntry;
 import org.apache.roller.weblogger.ui.rendering.util.WeblogPageRequest;
 import org.apache.roller.util.DateUtil;
@@ -53,7 +53,7 @@
     
     protected void loadWeblogEntries(Date startDate, Date endDate, String catName) {
         try {
-            WeblogManager mgr = WebloggerFactory.getWeblogger().getWeblogManager();
+            WeblogEntryManager mgr = WebloggerFactory.getWeblogger().getWeblogEntryManager();
             monthMap = mgr.getWeblogEntryObjectMap(
                     
                     weblog,                  // website

Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/tags/calendar/WeblogCalendarModel.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/tags/calendar/WeblogCalendarModel.java?rev=598319&r1=598318&r2=598319&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/tags/calendar/WeblogCalendarModel.java (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/tags/calendar/WeblogCalendarModel.java Mon Nov 26 07:51:43 2007
@@ -33,7 +33,7 @@
 import org.apache.commons.logging.LogFactory;
 import org.apache.roller.weblogger.WebloggerException;
 import org.apache.roller.weblogger.business.WebloggerFactory;
-import org.apache.roller.weblogger.business.WeblogManager;
+import org.apache.roller.weblogger.business.WeblogEntryManager;
 import org.apache.roller.weblogger.pojos.WeblogEntry;
 import org.apache.roller.weblogger.pojos.Weblog;
 import org.apache.roller.weblogger.ui.rendering.util.WeblogPageRequest;
@@ -105,7 +105,7 @@
         // Get entries before startDate, using category restriction limit 1
         // Use entry's date as previous month
         try {
-            WeblogManager mgr = WebloggerFactory.getWeblogger().getWeblogManager();
+            WeblogEntryManager mgr = WebloggerFactory.getWeblogger().getWeblogEntryManager();
             List prevEntries = mgr.getWeblogEntries(
                     
                     weblog,                    // website
@@ -117,7 +117,7 @@
                     null,WeblogEntry.PUBLISHED, // status
                     null,                      // text
                     null,                      // sortby (null means pubTime)
-                    WeblogManager.DESCENDING,  // sortorder, null means DESCENDING
+                    WeblogEntryManager.DESCENDING,  // sortorder, null means DESCENDING
                     locale,                    // locale
                     0, 1);                     // offset, range
             if (prevEntries.size() > 0) {
@@ -132,7 +132,7 @@
         // Get entries after endDate, using category restriction limit 1
         // Use entry's date as next month
         try {
-            WeblogManager mgr = WebloggerFactory.getWeblogger().getWeblogManager();
+            WeblogEntryManager mgr = WebloggerFactory.getWeblogger().getWeblogEntryManager();
             List nextEntries = mgr.getWeblogEntries(
                     
                     weblog,                    // website
@@ -144,7 +144,7 @@
                     null,WeblogEntry.PUBLISHED, // status
                     null,                      // text
                     null,                      // sortby (null means pubTime)
-                    WeblogManager.ASCENDING,   // sortorder
+                    WeblogEntryManager.ASCENDING,   // sortorder
                     locale,                    // locale
                     0, 1);                     // offset, range
             if (nextEntries.size() > 0) {
@@ -167,7 +167,7 @@
     
     protected void loadWeblogEntries(Date startDate, Date endDate, String catName) {
         try {
-            WeblogManager mgr = WebloggerFactory.getWeblogger().getWeblogManager();
+            WeblogEntryManager mgr = WebloggerFactory.getWeblogger().getWeblogEntryManager();
             monthMap = mgr.getWeblogEntryStringMap(
                     
                     weblog,                  // website

Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/util/menu/MenuHelper.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/util/menu/MenuHelper.java?rev=598319&r1=598318&r2=598319&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/util/menu/MenuHelper.java (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/util/menu/MenuHelper.java Mon Nov 26 07:51:43 2007
@@ -25,10 +25,15 @@
 import java.util.List;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.roller.weblogger.WebloggerException;
+import org.apache.roller.weblogger.business.UserManager;
+import org.apache.roller.weblogger.business.WebloggerFactory;
 import org.apache.roller.weblogger.config.WebloggerConfig;
-import org.apache.roller.weblogger.pojos.WeblogPermission;
+import org.apache.roller.weblogger.pojos.GlobalPermission;
 import org.apache.roller.weblogger.pojos.User;
 import org.apache.roller.weblogger.pojos.Weblog;
+import org.apache.roller.weblogger.pojos.WeblogPermission;
+import org.apache.roller.weblogger.util.Utilities;
 import org.jdom.Document;
 import org.jdom.Element;
 import org.jdom.JDOMException;
@@ -49,10 +54,14 @@
         try {
             // parse menus and cache so we can efficiently reuse them
             // TODO: there is probably a better way than putting the whole path
-            ParsedMenu editorMenu = unmarshall(MenuHelper.class.getResourceAsStream("/org/apache/roller/weblogger/ui/struts2/editor/editor-menu.xml"));
+            ParsedMenu editorMenu = unmarshall(
+                MenuHelper.class.getResourceAsStream(
+                "/org/apache/roller/weblogger/ui/struts2/editor/editor-menu.xml"));
             menus.put("editor", editorMenu);
             
-            ParsedMenu adminMenu = unmarshall(MenuHelper.class.getResourceAsStream("/org/apache/roller/weblogger/ui/struts2/admin/admin-menu.xml"));
+            ParsedMenu adminMenu = unmarshall(
+                MenuHelper.class.getResourceAsStream(
+                "/org/apache/roller/weblogger/ui/struts2/admin/admin-menu.xml"));
             menus.put("admin", adminMenu);
             
         } catch (Exception ex) {
@@ -73,7 +82,11 @@
         // do we know the specified menu config?
         ParsedMenu menuConfig = (ParsedMenu) menus.get(menuId);
         if(menuConfig != null) {
-            menu = buildMenu(menuConfig, currentAction, user, weblog);
+            try {
+                menu = buildMenu(menuConfig, currentAction, user, weblog);
+            } catch (WebloggerException ex) {
+                log.debug("ERROR: fethcing user roles", ex);
+            }
         }
         
         return menu;
@@ -81,16 +94,17 @@
     
     
     private static Menu buildMenu(ParsedMenu menuConfig, String currentAction, 
-                                  User user, Weblog weblog) {
+                                  User user, Weblog weblog) throws WebloggerException {
         
         log.debug("creating menu for action - "+currentAction);
         
         Menu tabMenu = new Menu();
+        UserManager umgr = WebloggerFactory.getWeblogger().getUserManager();
         
         // iterate over tabs from parsed config
         ParsedTab configTab = null;
         Iterator tabsIter = menuConfig.getTabs().iterator();
-        while(tabsIter.hasNext()) {
+        while (tabsIter.hasNext()) {
             configTab = (ParsedTab) tabsIter.next();
             
             log.debug("config tab = "+configTab.getName());
@@ -103,21 +117,34 @@
                 includeTab = ! WebloggerConfig.getBooleanProperty(configTab.getDisabledProperty());
             }
             
-            if(includeTab) {
+            if (includeTab) {
                 // user roles check
-                if(configTab.getRole() != null) {
-                    if(!user.hasRole(configTab.getRole())) {
+                if (configTab.getGlobalPermissionActions() != null
+                        && !configTab.getGlobalPermissionActions().isEmpty()) {
+                    try {
+                        GlobalPermission perm = 
+                            new GlobalPermission(configTab.getGlobalPermissionActions());
+                        if (!umgr.checkPermission(perm, user)) {
+                            includeTab = false;
+                        }
+                    } catch (WebloggerException ex) {
+                        log.debug("ERROR: fetching user roles", ex);
                         includeTab = false;
                     }
                 }
             }
             
-            if(includeTab) {
+            if (includeTab) {
                 // weblog permissions check
-                includeTab = isPermitted(configTab.getPerm(), user, weblog);
+                if (configTab.getWeblogPermissionActions() != null 
+                        && !configTab.getWeblogPermissionActions().isEmpty()) {
+                    WeblogPermission perm = 
+                        new WeblogPermission(weblog, configTab.getWeblogPermissionActions());
+                    includeTab = umgr.checkPermission(perm, user);
+                }
             }
             
-            if(includeTab) {
+            if (includeTab) {
                 log.debug("tab allowed - "+configTab.getName());
                 
                 // all checks passed, tab should be included
@@ -128,33 +155,40 @@
                 boolean firstItem = true;
                 ParsedTabItem configTabItem = null;
                 Iterator itemsIter = configTab.getTabItems().iterator();
-                while(itemsIter.hasNext()) {
+                while (itemsIter.hasNext()) {
                     configTabItem = (ParsedTabItem) itemsIter.next();
                     
                     log.debug("config tab item = "+configTabItem.getName());
                     
                     boolean includeItem = true;
-                    if(configTabItem.getEnabledProperty() != null) {
+                    if (configTabItem.getEnabledProperty() != null) {
                         includeItem = WebloggerConfig.getBooleanProperty(configTabItem.getEnabledProperty());
-                    } else if(configTabItem.getDisabledProperty() != null) {
+                    } else if (configTabItem.getDisabledProperty() != null) {
                         includeItem = ! WebloggerConfig.getBooleanProperty(configTabItem.getDisabledProperty());
                     }
                     
-                    if(includeItem) {
+                    if (includeItem) {
                         // user roles check
-                        if(configTabItem.getRole() != null) {
-                            if(!user.hasRole(configTabItem.getRole())) {
+                        if (configTabItem.getGlobalPermissionActions() != null
+                                && !configTabItem.getGlobalPermissionActions().isEmpty()) {
+                            GlobalPermission perm = 
+                                new GlobalPermission(configTabItem.getGlobalPermissionActions());
+                            if (!umgr.checkPermission(perm, user)) {
                                 includeItem = false;
                             }
                         }
                     }
                     
-                    if(includeItem) {
+                    if (includeItem) {
                         // weblog permissions check
-                        includeItem = isPermitted(configTabItem.getPerm(), user, weblog);
+                        if (configTab.getWeblogPermissionActions() != null 
+                                && !configTab.getWeblogPermissionActions().isEmpty()) {                        
+                            WeblogPermission perm = new WeblogPermission(weblog, configTab.getWeblogPermissionActions());
+                            includeTab = umgr.checkPermission(perm, user);
+                        }
                     }
                     
-                    if(includeItem) {
+                    if (includeItem) {
                         log.debug("tab item allowed - "+configTabItem.getName());
                         
                         // all checks passed, item should be included
@@ -163,13 +197,13 @@
                         tabItem.setAction(configTabItem.getAction());
                         
                         // is this the selected item?
-                        if(isSelected(currentAction, configTabItem)) {
+                        if (isSelected(currentAction, configTabItem)) {
                             tabItem.setSelected(true);
                             tab.setSelected(true);
                         }
                         
                         // the url for the tab is the url of the first item of the tab
-                        if(firstItem) {
+                        if (firstItem) {
                             tab.setAction(tabItem.getAction());
                             firstItem = false;
                         }
@@ -185,41 +219,20 @@
         }
         
         return tabMenu;
-    }
-    
-    
-    private static boolean isPermitted(String perm, User user, Weblog weblog) {
-        
-        // convert permissions string to short
-        short permMask = -1;
-        if(perm == null) {
-            return true;
-        } else if("limited".equals(perm)) {
-            permMask = WeblogPermission.LIMITED;
-        } else if("author".equals(perm)) {
-            permMask = WeblogPermission.AUTHOR;
-        } else if("admin".equals(perm)) {
-            permMask = WeblogPermission.ADMIN;
-        } else {
-            // unknown perm
-            return false;
-        }
-        
-        return weblog.hasUserPermissions(user, permMask);
-    }
+    }    
     
     
     private static boolean isSelected(String currentAction, ParsedTabItem tabItem) {
         
-        if(currentAction.equals(tabItem.getAction())) {
+        if (currentAction.equals(tabItem.getAction())) {
             return true;
         }
         
         // an item is also considered selected if it's subforwards are the current action
         String[] subActions = tabItem.getSubActions();
-        if(subActions != null && subActions.length > 0) {
+        if (subActions != null && subActions.length > 0) {
             for(int i=0; i < subActions.length; i++) {
-                if(currentAction.equals(subActions[i])) {
+                if (currentAction.equals(subActions[i])) {
                     return true;
                 }
             }
@@ -236,7 +249,7 @@
     private static ParsedMenu unmarshall(InputStream instream) 
         throws IOException, JDOMException {
         
-        if(instream == null)
+        if (instream == null)
             throw new IOException("InputStream is null!");
         
         ParsedMenu config = new ParsedMenu();
@@ -261,8 +274,12 @@
         ParsedTab tab = new ParsedTab();
         
         tab.setName(element.getAttributeValue("name"));
-        tab.setPerm(element.getAttributeValue("perms"));
-        tab.setRole(element.getAttributeValue("roles"));
+        if (element.getAttributeValue("weblogPerms") != null) {
+            tab.setWeblogPermissionActions(Utilities.stringToStringList(element.getAttributeValue("weblogPerms"),","));
+        }
+        if (element.getAttributeValue("globalPerms") != null) {
+            tab.setGlobalPermissionActions(Utilities.stringToStringList(element.getAttributeValue("globalPerms"),","));
+        }
         tab.setEnabledProperty(element.getAttributeValue("enabledProperty"));
         tab.setDisabledProperty(element.getAttributeValue("disabledProperty"));
         
@@ -285,12 +302,16 @@
         tabItem.setAction(element.getAttributeValue("action"));
         
         String subActions = element.getAttributeValue("subactions");
-        if(subActions != null) {
+        if (subActions != null) {
             tabItem.setSubActions(subActions.split(","));
         }
         
-        tabItem.setPerm(element.getAttributeValue("perms"));
-        tabItem.setRole(element.getAttributeValue("roles"));
+        if (element.getAttributeValue("weblogPerms") != null) {
+            tabItem.setWeblogPermissionActions(Utilities.stringToStringList(element.getAttributeValue("weblogPerms"), ","));
+        }
+        if (element.getAttributeValue("globalPerms") != null) {
+            tabItem.setGlobalPermissionActions(Utilities.stringToStringList(element.getAttributeValue("globalPerms"), ","));
+        }
         tabItem.setEnabledProperty(element.getAttributeValue("enabledProperty"));
         tabItem.setDisabledProperty(element.getAttributeValue("disabledProperty"));
         
@@ -298,3 +319,4 @@
     }
     
 }
+

Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/util/menu/ParsedTab.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/util/menu/ParsedTab.java?rev=598319&r1=598318&r2=598319&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/util/menu/ParsedTab.java (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/util/menu/ParsedTab.java Mon Nov 26 07:51:43 2007
@@ -28,8 +28,8 @@
 public class ParsedTab {
     
     private String name = null;
-    private String perm = null;
-    private String role = null;
+    private List<String> weblogPermissionActions = null;
+    private List<String> globalPermissionActions = null;
     private String enabledProperty = null;
     private String disabledProperty = null;
     
@@ -49,20 +49,20 @@
         this.name = name;
     }
 
-    public String getPerm() {
-        return perm;
+    public List<String> getWeblogPermissionActions() {
+        return weblogPermissionActions;
     }
 
-    public void setPerm(String perm) {
-        this.perm = perm;
+    public void setWeblogPermissionActions(List<String> actions) {
+        this.weblogPermissionActions = actions;
     }
 
-    public String getRole() {
-        return role;
+    public List<String> getGlobalPermissionActions() {
+        return globalPermissionActions;
     }
 
-    public void setRole(String role) {
-        this.role = role;
+    public void setGlobalPermissionActions(List<String> actions) {
+        this.globalPermissionActions = actions;
     }
 
     public String getEnabledProperty() {

Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/util/menu/ParsedTabItem.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/util/menu/ParsedTabItem.java?rev=598319&r1=598318&r2=598319&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/util/menu/ParsedTabItem.java (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/util/menu/ParsedTabItem.java Mon Nov 26 07:51:43 2007
@@ -18,6 +18,8 @@
 
 package org.apache.roller.weblogger.ui.core.util.menu;
 
+import java.util.List;
+
 
 /**
  * A parsed "tab-item" from an xml defined menu config.
@@ -27,8 +29,8 @@
     private String name = null;
     private String action = null;
     private String[] subActions = null;
-    private String perm = null;
-    private String role = null;
+    private List<String> weblogPermissionActions = null;
+    private List<String> globalPermissionActions = null;
     private String enabledProperty = null;
     private String disabledProperty = null;
     
@@ -57,20 +59,20 @@
         this.subActions = subActions;
     }
 
-    public String getPerm() {
-        return perm;
+    public List<String> getWeblogPermissionActions() {
+        return weblogPermissionActions;
     }
 
-    public void setPerm(String perm) {
-        this.perm = perm;
+    public void setWeblogPermissionActions(List<String> perms) {
+        this.weblogPermissionActions = perms;
     }
 
-    public String getRole() {
-        return role;
+    public List<String> getGlobalPermissionActions() {
+        return globalPermissionActions;
     }
 
-    public void setRole(String role) {
-        this.role = role;
+    public void setGlobalPermissionActions(List<String> perms) {
+        this.globalPermissionActions = perms;
     }
 
     public String getEnabledProperty() {
@@ -87,6 +89,6 @@
 
     public void setDisabledProperty(String disabledProperty) {
         this.disabledProperty = disabledProperty;
-    }
-    
+    }    
 }
+

Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/WeblogRequestMapper.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/WeblogRequestMapper.java?rev=598319&r1=598318&r2=598319&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/WeblogRequestMapper.java (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/WeblogRequestMapper.java Mon Nov 26 07:51:43 2007
@@ -383,8 +383,8 @@
         boolean isWeblog = false;
         
         try {
-            UserManager mgr = WebloggerFactory.getWeblogger().getUserManager();
-            Weblog weblog = mgr.getWebsiteByHandle(potentialHandle);
+            Weblog weblog = WebloggerFactory.getWeblogger().getWeblogManager()
+                    .getWeblogByHandle(potentialHandle);
             
             if(weblog != null) {
                 isWeblog = true;

Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/model/MenuModel.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/model/MenuModel.java?rev=598319&r1=598318&r2=598319&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/model/MenuModel.java (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/model/MenuModel.java Mon Nov 26 07:51:43 2007
@@ -18,10 +18,13 @@
 
 package org.apache.roller.weblogger.ui.rendering.model;
 
+import java.util.Collections;
 import java.util.Map;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.roller.weblogger.WebloggerException;
+import org.apache.roller.weblogger.business.WebloggerFactory;
+import org.apache.roller.weblogger.pojos.GlobalPermission;
 import org.apache.roller.weblogger.ui.core.util.menu.Menu;
 import org.apache.roller.weblogger.ui.core.util.menu.MenuHelper;
 import org.apache.roller.weblogger.ui.rendering.util.WeblogPageRequest;
@@ -71,8 +74,16 @@
      * currently logged in and is an admin.
      */
     public Menu getAdminMenu() {
-        if(pageRequest.isLoggedIn() && pageRequest.getUser().hasRole("admin")) {
-            return MenuHelper.getMenu("admin", "noAction", pageRequest.getUser(), pageRequest.getWeblog());
+        try {
+            GlobalPermission adminPerm = 
+                new GlobalPermission(Collections.singletonList(GlobalPermission.ADMIN));
+            boolean hasAdmin = WebloggerFactory.getWeblogger().getUserManager()
+                    .checkPermission(adminPerm, pageRequest.getUser());            
+            if (pageRequest.isLoggedIn() && hasAdmin) {
+                return MenuHelper.getMenu("admin", "noAction", pageRequest.getUser(), pageRequest.getWeblog());
+            }
+        } catch (WebloggerException ex) {
+            logger.debug("ERROR: fetching user roles");
         }
         return null;
     }

Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/model/PlanetModel.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/model/PlanetModel.java?rev=598319&r1=598318&r2=598319&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/model/PlanetModel.java (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/model/PlanetModel.java Mon Nov 26 07:51:43 2007
@@ -22,6 +22,7 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.roller.weblogger.WebloggerException;
@@ -49,11 +50,13 @@
     private static Log log = LogFactory.getLog(PlanetModel.class);
     
     private WeblogRequest  weblogRequest = null;
-    private URLStrategy urlStrategy = null;
-    private String pageLink = null;
+    private String         pageLink = null;
     private int            pageNum = 0;
-    private Weblog    weblog = null;
+    private Weblog         weblog = null;
     
+    private URLStrategy    urlStrategy = null;
+    private org.apache.roller.planet.business.URLStrategy planetUrlStrategy = null;
+
     
     public String getModelName() {
         return "planet";
@@ -79,6 +82,8 @@
             urlStrategy = WebloggerFactory.getWeblogger().getUrlStrategy();
         }
         
+        planetUrlStrategy = PlanetFactory.getPlanet().getURLStrategy();
+        
         // extract weblog object
         weblog = weblogRequest.getWeblog();
     } 
@@ -192,4 +197,58 @@
         return list;
     }
     
+    
+    /**
+     * Get PlanetGroups defined.
+     * @return List of Planet groups defined.
+     */
+    public List<PlanetGroup> getGroups() {
+        List list = new ArrayList<PlanetGroup>();
+        try {
+            PlanetManager planetManager = PlanetFactory.getPlanet().getPlanetManager();
+            Planet defaultPlanet = planetManager.getPlanet(DEFAULT_PLANET_HANDLE);
+            Set<PlanetGroup> groups = (Set<PlanetGroup>)defaultPlanet.getGroups();
+            for (PlanetGroup group : groups) {
+                // TODO needs pojo wrapping from planet
+                list.add(group); 
+            }
+        } catch (Exception e) {
+            log.error("ERROR: getting groups", e);
+        }
+        return list;        
+    }
+    
+    
+    /**
+     * Get PlanetGroup by handle.
+     * @param groupHandle Handle of PlanetGroup to fetch.
+     * @return PlaneGroup specified by handle.
+     */
+    public PlanetGroup getGroup(String groupHandle) {
+        PlanetGroup group = null;
+        try {
+            PlanetManager planetManager = PlanetFactory.getPlanet().getPlanetManager();
+            Planet defaultPlanet = planetManager.getPlanet(DEFAULT_PLANET_HANDLE);            
+            // TODO needs pojo wrapping from planet
+            group = planetManager.getGroup(defaultPlanet, groupHandle);            
+        } catch (Exception e) {
+            log.error("ERROR: getting group", e);
+        }
+        return group;        
+    }
+    
+    
+    public String getPlanetURL() {
+        return planetUrlStrategy.getPlanetURL("ignored");
+    }
+
+    
+    public String getPlanetGroupURL(String group, int pageNum) {
+        return planetUrlStrategy.getPlanetGroupURL("ignored", group, pageNum);
+    }
+    
+    
+    public String getPlanetFeedURL(String group, String format) {
+        return planetUrlStrategy.getPlanetGroupFeedURL("ignored", group, format);
+    }
 }

Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/model/SearchResultsFeedModel.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/model/SearchResultsFeedModel.java?rev=598319&r1=598318&r2=598319&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/model/SearchResultsFeedModel.java (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/model/SearchResultsFeedModel.java Mon Nov 26 07:51:43 2007
@@ -36,7 +36,7 @@
 import org.apache.roller.weblogger.business.URLStrategy;
 import org.apache.roller.weblogger.business.Weblogger;
 import org.apache.roller.weblogger.business.WebloggerFactory;
-import org.apache.roller.weblogger.business.WeblogManager;
+import org.apache.roller.weblogger.business.WeblogEntryManager;
 import org.apache.roller.weblogger.business.search.FieldConstants;
 import org.apache.roller.weblogger.business.search.IndexManager;
 import org.apache.roller.weblogger.business.search.operations.SearchOperation;
@@ -177,7 +177,7 @@
         try {
             TreeSet categories = new TreeSet();
             Weblogger roller = WebloggerFactory.getWeblogger();
-            WeblogManager weblogMgr = roller.getWeblogManager();
+            WeblogEntryManager weblogMgr = roller.getWeblogEntryManager();
             
             WeblogEntry entry = null;
             Document doc = null;

Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/model/SearchResultsModel.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/model/SearchResultsModel.java?rev=598319&r1=598318&r2=598319&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/model/SearchResultsModel.java (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/model/SearchResultsModel.java Mon Nov 26 07:51:43 2007
@@ -36,7 +36,7 @@
 import org.apache.roller.weblogger.business.search.IndexManager;
 import org.apache.roller.weblogger.business.Weblogger;
 import org.apache.roller.weblogger.business.WebloggerFactory;
-import org.apache.roller.weblogger.business.WeblogManager;
+import org.apache.roller.weblogger.business.WeblogEntryManager;
 import org.apache.roller.weblogger.pojos.WeblogEntry;
 import org.apache.roller.weblogger.pojos.WeblogEntryWrapperComparator;
 import org.apache.roller.weblogger.pojos.wrapper.WeblogCategoryWrapper;
@@ -168,7 +168,7 @@
         try {
             TreeSet categories = new TreeSet();
             Weblogger roller = WebloggerFactory.getWeblogger();
-            WeblogManager weblogMgr = roller.getWeblogManager();
+            WeblogEntryManager weblogMgr = roller.getWeblogEntryManager();
             
             WeblogEntry entry = null;
             Document doc = null;

Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/model/SiteModel.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/model/SiteModel.java?rev=598319&r1=598318&r2=598319&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/model/SiteModel.java (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/model/SiteModel.java Mon Nov 26 07:51:43 2007
@@ -33,14 +33,14 @@
 import org.apache.roller.weblogger.business.Weblogger;
 import org.apache.roller.weblogger.business.WebloggerFactory;
 import org.apache.roller.weblogger.business.UserManager;
-import org.apache.roller.weblogger.business.WeblogManager;
+import org.apache.roller.weblogger.business.WeblogEntryManager;
 import org.apache.roller.weblogger.pojos.WeblogHitCount;
-import org.apache.roller.weblogger.pojos.WeblogPermission;
 import org.apache.roller.weblogger.pojos.StatCount;
 import org.apache.roller.weblogger.pojos.ThemeTemplate;
 import org.apache.roller.weblogger.pojos.User;
 import org.apache.roller.weblogger.pojos.WeblogEntry;
 import org.apache.roller.weblogger.pojos.Weblog;
+import org.apache.roller.weblogger.pojos.WeblogPermission;
 import org.apache.roller.weblogger.pojos.wrapper.UserWrapper;
 import org.apache.roller.weblogger.pojos.wrapper.WeblogEntryWrapper;
 import org.apache.roller.weblogger.pojos.wrapper.WeblogWrapper;
@@ -303,9 +303,7 @@
     public Map getWeblogHandleLetterMap() {
         Map results = new HashMap();
         try {            
-            Weblogger roller = WebloggerFactory.getWeblogger();
-            UserManager umgr = roller.getUserManager();
-            results = umgr.getWeblogHandleLetterMap();
+            results = WebloggerFactory.getWeblogger().getWeblogManager().getWeblogHandleLetterMap();
         } catch (Exception e) {
             log.error("ERROR: fetching weblog handle letter map", e);
         }
@@ -322,10 +320,9 @@
             Weblogger roller = WebloggerFactory.getWeblogger();
             UserManager umgr = roller.getUserManager();
             User user = umgr.getUserByUserName(userName);
-            List perms = umgr.getAllPermissions(user);
-            for (Iterator it = perms.iterator(); it.hasNext();) {
-                WeblogPermission perm = (WeblogPermission) it.next();
-                results.add(WeblogWrapper.wrap(perm.getWebsite(), urlStrategy));
+            List<WeblogPermission> perms = umgr.getWeblogPermissions(user);
+            for (WeblogPermission perm : perms) {
+                results.add(WeblogWrapper.wrap(perm.getWeblog(), urlStrategy));
             }
         } catch (Exception e) {
             log.error("ERROR: fetching weblog list", e);
@@ -342,10 +339,9 @@
         try {            
             Weblogger roller = WebloggerFactory.getWeblogger();
             UserManager umgr = roller.getUserManager();
-            Weblog website = umgr.getWebsiteByHandle(handle);
-            List perms = umgr.getAllPermissions(website);
-            for (Iterator it = perms.iterator(); it.hasNext();) {
-                WeblogPermission perm = (WeblogPermission) it.next();
+            Weblog website = WebloggerFactory.getWeblogger().getWeblogManager().getWeblogByHandle(handle);
+            List<WeblogPermission> perms = umgr.getWeblogPermissions(website);
+            for (WeblogPermission perm : perms) {
                 results.add(UserWrapper.wrap(perm.getUser()));
             }
         } catch (Exception e) {
@@ -375,9 +371,7 @@
     public WeblogWrapper getWeblog(String handle) {
         WeblogWrapper wrappedWebsite = null;
         try {            
-            Weblogger roller = WebloggerFactory.getWeblogger();
-            UserManager umgr = roller.getUserManager();
-            Weblog website = umgr.getWebsiteByHandle(handle);
+            Weblog website = WebloggerFactory.getWeblogger().getWeblogManager().getWeblogByHandle(handle);
             wrappedWebsite = WeblogWrapper.wrap(website, urlStrategy);
         } catch (Exception e) {
             log.error("ERROR: fetching users by letter", e);
@@ -401,10 +395,8 @@
         cal.add(Calendar.DATE, -1 * sinceDays);
         Date startDate = cal.getTime();
         try {            
-            Weblogger roller = WebloggerFactory.getWeblogger();
-            UserManager umgr = roller.getUserManager();
-            List weblogs = umgr.getWebsites(
-                null, Boolean.TRUE, Boolean.TRUE, startDate, null, 0, length);
+            List weblogs = WebloggerFactory.getWeblogger().getWeblogManager().getWeblogs(
+                Boolean.TRUE, Boolean.TRUE, startDate, null, 0, length);
             for (Iterator it = weblogs.iterator(); it.hasNext();) {
                 Weblog website = (Weblog) it.next();
                 results.add(WeblogWrapper.wrap(website, urlStrategy));
@@ -426,7 +418,7 @@
         try {            
             Weblogger roller = WebloggerFactory.getWeblogger();
             UserManager umgr = roller.getUserManager();
-            List users = umgr.getUsers(null, Boolean.TRUE, null, null, 0, length);
+            List users = umgr.getUsers(Boolean.TRUE, null, null, 0, length);
             for (Iterator it = users.iterator(); it.hasNext();) {
                 User user = (User) it.next();
                 results.add(UserWrapper.wrap(user));
@@ -447,7 +439,7 @@
         
         List results = new ArrayList();
         try {
-            WeblogManager mgr = WebloggerFactory.getWeblogger().getWeblogManager();
+            WeblogEntryManager mgr = WebloggerFactory.getWeblogger().getWeblogEntryManager();
             List hotBlogs = mgr.getHotWeblogs(sinceDays, 0, length);
             
             Iterator hitCounts = hotBlogs.iterator();
@@ -486,8 +478,7 @@
         Date startDate = cal.getTime();
         try {            
             Weblogger roller = WebloggerFactory.getWeblogger();
-            UserManager umgr = roller.getUserManager();
-            results = umgr.getMostCommentedWebsites(
+            results = WebloggerFactory.getWeblogger().getWeblogManager().getMostCommentedWeblogs(
                     startDate, new Date(), 0, length);
         } catch (Exception e) {
             log.error("ERROR: fetching commented weblog list", e);
@@ -512,7 +503,7 @@
         Date startDate = cal.getTime();
         try {            
             Weblogger roller = WebloggerFactory.getWeblogger();
-            WeblogManager wmgr = roller.getWeblogManager();
+            WeblogEntryManager wmgr = roller.getWeblogEntryManager();
             results = wmgr.getMostCommentedWeblogEntries(
                     null, startDate, new Date(), 0, length);
         } catch (Exception e) {
@@ -530,7 +521,7 @@
         List results = new ArrayList();
         try {            
             Weblogger roller = WebloggerFactory.getWeblogger();
-            WeblogManager wmgr = roller.getWeblogManager();
+            WeblogEntryManager wmgr = roller.getWeblogEntryManager();
             List weblogs = wmgr.getWeblogEntriesPinnedToMain(new Integer(length));
             for (Iterator it = weblogs.iterator(); it.hasNext();) {
                 WeblogEntry entry = (WeblogEntry) it.next();
@@ -560,8 +551,8 @@
         
         try {            
             Weblogger roller = WebloggerFactory.getWeblogger();
-            WeblogManager wmgr = roller.getWeblogManager();
-            results = wmgr.getPopularTags(null, startDate, length);
+            WeblogEntryManager wmgr = roller.getWeblogEntryManager();
+            results = wmgr.getPopularTags(null, startDate, 0, length);
         } catch (Exception e) {
             log.error("ERROR: fetching site tags list", e);
         }
@@ -573,7 +564,7 @@
         long count = 0;
         try {
             Weblogger roller = WebloggerFactory.getWeblogger();
-            WeblogManager mgr = roller.getWeblogManager();
+            WeblogEntryManager mgr = roller.getWeblogEntryManager();
             count = mgr.getCommentCount();            
         } catch (WebloggerException e) {
             log.error("Error getting comment count for site ", e);
@@ -586,7 +577,7 @@
         long count = 0;
         try {
             Weblogger roller = WebloggerFactory.getWeblogger();
-            WeblogManager mgr = roller.getWeblogManager();
+            WeblogEntryManager mgr = roller.getWeblogEntryManager();
             count = mgr.getEntryCount();            
         } catch (WebloggerException e) {
             log.error("Error getting entry count for site", e);
@@ -598,9 +589,7 @@
     public long getWeblogCount() {
         long count = 0;
         try {
-            Weblogger roller = WebloggerFactory.getWeblogger();
-            UserManager mgr = roller.getUserManager();
-            count = mgr.getWeblogCount();            
+            count = WebloggerFactory.getWeblogger().getWeblogManager().getWeblogCount();            
         } catch (WebloggerException e) {
             log.error("Error getting weblog count for site", e);
         }

Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/model/URLModel.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/model/URLModel.java?rev=598319&r1=598318&r2=598319&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/model/URLModel.java (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/model/URLModel.java Mon Nov 26 07:51:43 2007
@@ -26,7 +26,7 @@
 import org.apache.roller.weblogger.WebloggerException;
 import org.apache.roller.weblogger.business.URLStrategy;
 import org.apache.roller.weblogger.business.WebloggerFactory;
-import org.apache.roller.weblogger.business.WeblogManager;
+import org.apache.roller.weblogger.business.WeblogEntryManager;
 import org.apache.roller.weblogger.config.WebloggerRuntimeConfig;
 import org.apache.roller.weblogger.pojos.WeblogEntry;
 import org.apache.roller.weblogger.pojos.Weblog;
@@ -229,7 +229,6 @@
         return urlStrategy.getWeblogSearchURL(weblog, locale, null, null, -1, false);
     }
     
-    
     public String search(String query, int pageNum) {
         return urlStrategy.getWeblogSearchURL(weblog, locale, query, null, pageNum, false);
     }
@@ -243,6 +242,14 @@
         return urlStrategy.getWeblogSearchURL(weblog, locale, query, catPath, pageNum, true);
     }        
     
+    public String getOpenSearchSite() {
+        return urlStrategy.getOpenSearchSiteURL();
+    }
+        
+    public String getOpenSearchWeblog() {
+        return urlStrategy.getOpenSearchWeblogURL(weblog.getHandle());
+    }
+        
     public String page(String pageLink) {
         return urlStrategy.getWeblogPageURL(weblog, locale, pageLink, null, null, null, null, -1, true);
     }
@@ -272,7 +279,7 @@
     public String editEntry(String anchor) {
         try {
             // need to determine entryId from anchor
-            WeblogManager wmgr = WebloggerFactory.getWeblogger().getWeblogManager();
+            WeblogEntryManager wmgr = WebloggerFactory.getWeblogger().getWeblogEntryManager();
             WeblogEntry entry = wmgr.getWeblogEntryByAnchor(weblog, anchor);
             if(entry != null) {
                 return urlStrategy.getEntryEditURL(weblog.getHandle(), entry.getId(), false);

Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/model/UtilitiesModel.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/model/UtilitiesModel.java?rev=598319&r1=598318&r2=598319&view=diff
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/model/UtilitiesModel.java (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/rendering/model/UtilitiesModel.java Mon Nov 26 07:51:43 2007
@@ -29,13 +29,13 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.roller.weblogger.WebloggerException;
-import org.apache.roller.weblogger.pojos.WeblogPermission;
 import org.apache.roller.weblogger.pojos.wrapper.WeblogWrapper;
-import org.apache.roller.weblogger.ui.core.RollerSession;
 import org.apache.roller.weblogger.ui.rendering.util.WeblogRequest;
 import org.apache.roller.util.DateUtil;
 import org.apache.roller.util.RegexUtil;
 import org.apache.roller.weblogger.pojos.Weblog;
+import org.apache.roller.weblogger.pojos.WeblogPermission;
+import org.apache.roller.weblogger.pojos.wrapper.UserWrapper;
 import org.apache.roller.weblogger.ui.rendering.util.ParsedRequest;
 import org.apache.roller.weblogger.util.URLUtilities;
 import org.apache.roller.weblogger.util.Utilities;
@@ -122,8 +122,8 @@
     public boolean isUserAuthorizedToAuthor(WeblogWrapper weblog) {
         try {
             if (parsedRequest.getAuthenticUser() != null) {
-                return weblog.getPojo().hasUserPermissions(
-                        parsedRequest.getUser(), WeblogPermission.AUTHOR);
+                return weblog.getPojo().hasUserPermission(
+                        parsedRequest.getUser(), WeblogPermission.POST);
             }
         } catch (Exception e) {
             log.warn("ERROR: checking user authorization", e);
@@ -134,7 +134,7 @@
     public boolean isUserAuthorizedToAdmin(WeblogWrapper weblog) {
         try {
             if (parsedRequest.getAuthenticUser() != null) {
-                return weblog.getPojo().hasUserPermissions(
+                return weblog.getPojo().hasUserPermission(
                         parsedRequest.getUser(), WeblogPermission.ADMIN);
             }
         } catch (Exception e) {
@@ -142,11 +142,16 @@
         }
         return false;
     }
-    
+        
     public boolean isUserAuthenticated() {
         return (parsedRequest.getAuthenticUser() != null);
     }
-        
+       
+    public UserWrapper getAuthenticatedUser() {
+        return parsedRequest.getAuthenticUser() != null 
+                ? UserWrapper.wrap(parsedRequest.getUser()) : null;
+    }
+             
     //-------------------------------------------------------------- Date utils
     /**
      * Return date for current time.