taylor      2004/10/07 23:49:38

  Modified:    src/sql  populate-db-default.sql
               src/schema phase2-schema.xml
               jetspeed-api/src/java/org/apache/jetspeed/profiler
                        ProfileLocator.java Profiler.java
               applications/pam/src/java/org/apache/jetspeed/portlets/security
                        UserDetailsPortlet.java
               components/profiler/src/test/org/apache/jetspeed/profiler
                        TestProfiler.java
               components/profiler/src/java/META-INF ojb_repository.xml
               portal/src/java/org/apache/jetspeed/profiler/impl
                        ProfilerValveImpl.java
               components/profiler/src/java/org/apache/jetspeed/profiler/impl
                        JetspeedProfiler.java
               jetspeed-api/src/java/org/apache/jetspeed/profiler/rules
                        PrincipalRule.java
               components/profiler/src/java/org/apache/jetspeed/profiler/rules/impl
                        PrincipalRuleImpl.java
  Log:
  added locatorName parameter to several Profiler APIs
  before this change, the profiler only looked up pages
  now it has the capability to lookup other resources such as docsets
  note: this commit requires changing your db schema
  
  Revision  Changes    Path
  1.5       +2 -2      jakarta-jetspeed-2/src/sql/populate-db-default.sql
  
  Index: populate-db-default.sql
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed-2/src/sql/populate-db-default.sql,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- populate-db-default.sql   23 Sep 2004 22:46:45 -0000      1.4
  +++ populate-db-default.sql   8 Oct 2004 06:49:37 -0000       1.5
  @@ -305,8 +305,8 @@
   insert into RULE_CRITERION values (12, 'role-group', 1, 'group', 'group', null, 2);
   insert into RULE_CRITERION values (13, 'role-group', 1, 'request.session', 'page', 
'default-page', 0);
   
  -insert into PRINCIPAL_RULE_ASSOC values ( 'guest', 'j1' );
  -insert into PRINCIPAL_RULE_ASSOC values ( 'jetspeed', 'role-fallback' );
  +insert into PRINCIPAL_RULE_ASSOC values ( 'guest', 'page', 'j1' );
  +insert into PRINCIPAL_RULE_ASSOC values ( 'jetspeed', 'page', 'role-fallback' );
   
   
   
  
  
  
  1.5       +2 -1      jakarta-jetspeed-2/src/schema/phase2-schema.xml
  
  Index: phase2-schema.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed-2/src/schema/phase2-schema.xml,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- phase2-schema.xml 23 Sep 2004 22:30:21 -0000      1.4
  +++ phase2-schema.xml 8 Oct 2004 06:49:37 -0000       1.5
  @@ -131,9 +131,10 @@
       
       <table name="PRINCIPAL_RULE_ASSOC">
           <column name="PRINCIPAL_NAME" primaryKey="true" required="true" size="80" 
type="VARCHAR"/>
  +        <column name="LOCATOR_NAME" primaryKey="true" required="true" size="80" 
type="VARCHAR"/>
           <column name="RULE_ID" required="true" size="80" type="VARCHAR"/>
       </table>
  -        
  +                 
       <table name="PROFILE_PAGE_ASSOC">
           <column name="LOCATOR_HASH" required="true" size="40" type="VARCHAR"/>
           <column name="PAGE_ID" required="true" size="80" type="VARCHAR"/>
  
  
  
  1.4       +5 -2      
jakarta-jetspeed-2/jetspeed-api/src/java/org/apache/jetspeed/profiler/ProfileLocator.java
  
  Index: ProfileLocator.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed-2/jetspeed-api/src/java/org/apache/jetspeed/profiler/ProfileLocator.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ProfileLocator.java       23 Sep 2004 22:30:03 -0000      1.3
  +++ ProfileLocator.java       8 Oct 2004 06:49:37 -0000       1.4
  @@ -40,8 +40,11 @@
    */
   public interface ProfileLocator 
   {
  +    public final static String PAGE_LOCATOR = "page";
  +    public final static String DOCSET_LOCATOR = "docset";
  +
       public final static String PATH_SEPARATOR = ":";
  -        
  +    
       /**
        * Initialize this page context.
        *
  
  
  
  1.7       +8 -5      
jakarta-jetspeed-2/jetspeed-api/src/java/org/apache/jetspeed/profiler/Profiler.java
  
  Index: Profiler.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed-2/jetspeed-api/src/java/org/apache/jetspeed/profiler/Profiler.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- Profiler.java     23 Sep 2004 22:30:03 -0000      1.6
  +++ Profiler.java     8 Oct 2004 06:49:37 -0000       1.7
  @@ -45,9 +45,10 @@
        *  Get the Profile object using the request parameters.
        *
        * @param context The request context
  +     * @param locatorName The name of the profile locator to find i.e. "page", 
"docset", ...
        * @return a new Profile Locator object or null if failed to find a appropriate 
locator.
        */
  -    ProfileLocator getProfile(RequestContext context) throws ProfilerException;
  +    ProfileLocator getProfile(RequestContext context, String locatorName) throws 
ProfilerException;
   
       /**
        *  Get the Profile object using the request parameters and the rule.
  @@ -80,18 +81,20 @@
        * For a given principal, lookup the associated profiling rule to that 
principal name.
        * 
        * @param principal Lookup the profiling rule based on this principal. 
  +     * @param locatorName the unique name of a locator for this 
principal/rule/locator 
        * @return The rule found or null if not found
        */
  -    ProfilingRule getRuleForPrincipal(Principal principal);
  +    ProfilingRule getRuleForPrincipal(Principal principal, String locatorName);
   
       /**
        * For a given principal, associate a profiling rule to that principal name.
        * TODO: this API should be secured and require admin role
        * 
  -     * @param principal Lookup the profiling rule based on this principal. 
  +     * @param principal Lookup the profiling rule based on this principal.
  +     * @param locatorName the unique name of a locator for this 
principal/rule/locator 
        * @param The rule used to find profiles for this user
        */
  -    void setRuleForPrincipal(Principal principal, ProfilingRule rule);
  +    void setRuleForPrincipal(Principal principal, ProfilingRule rule, String 
locatorName);
       
       /**
        * Lookup the portal's default profiling rule.
  
  
  
  1.9       +11 -4     
jakarta-jetspeed-2/applications/pam/src/java/org/apache/jetspeed/portlets/security/UserDetailsPortlet.java
  
  Index: UserDetailsPortlet.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed-2/applications/pam/src/java/org/apache/jetspeed/portlets/security/UserDetailsPortlet.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- UserDetailsPortlet.java   6 Oct 2004 23:45:05 -0000       1.8
  +++ UserDetailsPortlet.java   8 Oct 2004 06:49:37 -0000       1.9
  @@ -37,6 +37,7 @@
   import org.apache.jetspeed.portlets.pam.beans.TabBean;
   import org.apache.jetspeed.portlets.security.users.JetspeedUserBean;
   import org.apache.jetspeed.portlets.security.users.JetspeedUserBean.StringAttribute;
  +import org.apache.jetspeed.profiler.ProfileLocator;
   import org.apache.jetspeed.profiler.Profiler;
   import org.apache.jetspeed.profiler.rules.ProfilingRule;
   import org.apache.jetspeed.security.GroupManager;
  @@ -161,7 +162,8 @@
               else if (selectedTab.getId().equals(TAB_PROFILE))
               {
                   Principal userPrincipal = createPrincipal(user.getSubject(), 
UserPrincipal.class);      
  -                ProfilingRule rule = profiler.getRuleForPrincipal(userPrincipal);
  +                // TODO: incorporate locator_name
  +                ProfilingRule rule = profiler.getRuleForPrincipal(userPrincipal, 
ProfileLocator.PAGE_LOCATOR);
                   if (rule != null)
                   {
                       request.setAttribute(VIEW_SELECTED_RULE, rule.getId());
  @@ -514,11 +516,16 @@
                       {
                           if (rule == null)
                           {
  -                            profiler.setRuleForPrincipal(userPrincipal, 
profiler.getDefaultRule());
  +                            profiler.setRuleForPrincipal(userPrincipal, 
  +                                                         profiler.getDefaultRule(),
  +                                                         
ProfileLocator.PAGE_LOCATOR);                                                         
                           }
                           else
                           {
  -                            profiler.setRuleForPrincipal(userPrincipal, rule);
  +                            // TODO: only support the page locator for now
  +                            profiler.setRuleForPrincipal(userPrincipal,
  +                                                         rule,
  +                                                         
ProfileLocator.PAGE_LOCATOR);
                           }
                       }
                   }
  
  
  
  1.4       +4 -4      
jakarta-jetspeed-2/components/profiler/src/test/org/apache/jetspeed/profiler/TestProfiler.java
  
  Index: TestProfiler.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed-2/components/profiler/src/test/org/apache/jetspeed/profiler/TestProfiler.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- TestProfiler.java 23 Sep 2004 19:47:29 -0000      1.3
  +++ TestProfiler.java 8 Oct 2004 06:49:37 -0000       1.4
  @@ -117,7 +117,7 @@
           assertTrue("default rule class not mapped", rule instanceof 
StandardProfilingRule);
   
           // Test anonymous principal-rule
  -        ProfilingRule anonRule = profiler.getRuleForPrincipal(new 
UserPrincipalImpl("anon"));
  +        ProfilingRule anonRule = profiler.getRuleForPrincipal(new 
UserPrincipalImpl("anon"), ProfileLocator.PAGE_LOCATOR);
           assertNotNull("anonymous rule is null", anonRule);
           assertTrue("anonymous rule is j1", anonRule.getId().equals(DEFAULT_RULE));
           
  @@ -255,7 +255,7 @@
           params.put("page", "default-other");
           params.put("path", "/sports/football/nfl/chiefs");
           
  -        ProfileLocator locator = profiler.getProfile(request);
  +        ProfileLocator locator = profiler.getProfile(request, 
ProfileLocator.PAGE_LOCATOR);
           assertNotNull("rule test on getProfile returned null", locator);
           String path = locator.getLocatorPath();
           System.out.println("locator = " + path);        
  @@ -344,7 +344,7 @@
           Map params = request.getParameterMap();
           // params.put("page", "default");
       
  -        ProfileLocator locator = profiler.getProfile(request);
  +        ProfileLocator locator = profiler.getProfile(request, 
ProfileLocator.PAGE_LOCATOR);
           assertNotNull("rule test on getProfile returned null", locator);
           System.out.println("page = " + locator.getValue("page"));
       }
  
  
  
  1.3       +7 -0      
jakarta-jetspeed-2/components/profiler/src/java/META-INF/ojb_repository.xml
  
  Index: ojb_repository.xml
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed-2/components/profiler/src/java/META-INF/ojb_repository.xml,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ojb_repository.xml        17 Sep 2004 20:03:23 -0000      1.2
  +++ ojb_repository.xml        8 Oct 2004 06:49:37 -0000       1.3
  @@ -147,6 +147,13 @@
        autoincrement="false"           
       />
       <field-descriptor
  +     name="locatorName"
  +     column="LOCATOR_NAME"
  +     jdbc-type="VARCHAR"
  +     primarykey="true"
  +     autoincrement="false"           
  +    />    
  +    <field-descriptor
        name="ruleId"
        column="RULE_ID"
        jdbc-type="VARCHAR"
  
  
  
  1.15      +2 -2      
jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/profiler/impl/ProfilerValveImpl.java
  
  Index: ProfilerValveImpl.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/profiler/impl/ProfilerValveImpl.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- ProfilerValveImpl.java    23 Sep 2004 22:35:11 -0000      1.14
  +++ ProfilerValveImpl.java    8 Oct 2004 06:49:37 -0000       1.15
  @@ -65,7 +65,7 @@
           {
               // perform profiling to get profiled page context using
               // the profiler and page manager
  -            ProfileLocator locator = profiler.getProfile(request);
  +            ProfileLocator locator = profiler.getProfile(request, 
ProfileLocator.PAGE_LOCATOR);
               ProfiledPageContext profiledPageContext = 
pageManager.getProfiledPageContext(locator);
               if ((profiledPageContext == null) || (profiledPageContext.getPage() == 
null) || (profiledPageContext.getLocator() == null)) 
                   throw new NodeNotFoundException("Unable to profile request: " + 
request.getPath());
  
  
  
  1.5       +12 -18    
jakarta-jetspeed-2/components/profiler/src/java/org/apache/jetspeed/profiler/impl/JetspeedProfiler.java
  
  Index: JetspeedProfiler.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed-2/components/profiler/src/java/org/apache/jetspeed/profiler/impl/JetspeedProfiler.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- JetspeedProfiler.java     23 Sep 2004 22:34:21 -0000      1.4
  +++ JetspeedProfiler.java     8 Oct 2004 06:49:38 -0000       1.5
  @@ -125,12 +125,8 @@
   
       }
   
  -    /*
  -     * (non-Javadoc)
  -     * 
  -     * @see 
org.apache.jetspeed.profiler.ProfilerService#getProfile(org.apache.jetspeed.request.RequestContext)
  -     */
  -    public ProfileLocator getProfile( RequestContext context ) throws 
ProfilerException
  +    public ProfileLocator getProfile(RequestContext context, String locatorName) 
  +    throws ProfilerException
       {
           // get the principal representing the currently logged on user
           Subject subject = context.getSubject();
  @@ -151,7 +147,7 @@
           }
   
           // find a profiling rule for this principal
  -        ProfilingRule rule = getRuleForPrincipal(principal);
  +        ProfilingRule rule = getRuleForPrincipal(principal, locatorName);
           if (null == rule)
           {
               log.warn("Could not find profiling rule for principal: " + principal);
  @@ -190,15 +186,10 @@
           return lookupProfilingRule(this.defaultRule);
       }
   
  -    /*
  -     * (non-Javadoc)
  -     * 
  -     * @see 
org.apache.jetspeed.profiler.ProfilerService#getRuleForPrincipal(java.security.Principal)
  -     */
  -    public ProfilingRule getRuleForPrincipal( Principal principal )
  +    public ProfilingRule getRuleForPrincipal(Principal principal, String 
locatorName)
       {
           // lookup the rule for the given principal in our user/rule table
  -        PrincipalRule pr = lookupPrincipalRule(principal.getName());
  +        PrincipalRule pr = lookupPrincipalRule(principal.getName(), locatorName);
   
           // if not found, fallback to the system wide rule
           if (pr == null)
  @@ -211,19 +202,21 @@
       }
       
       
  -    public void setRuleForPrincipal(Principal principal, ProfilingRule rule)
  +    public void setRuleForPrincipal(Principal principal, ProfilingRule rule, String 
locatorName)
       {
           Transaction tx = persistentStore.getTransaction();
           tx.begin();
     
           Filter filter = persistentStore.newFilter();
           filter.addEqualTo("principalName", principal);
  +        filter.addEqualTo("locatorName", locatorName);
           Object query = persistentStore.newQuery(principalRuleClass, filter);
           PrincipalRule pr = (PrincipalRule) persistentStore.getObjectByQuery(query);
           if (pr == null)
           {
               pr = new PrincipalRuleImpl(); // TODO: factory
               pr.setPrincipalName(principal.getName());
  +            pr.setLocatorName(locatorName);
               pr.setProfilingRule(rule);
           }
           try
  @@ -249,15 +242,16 @@
        * @return The found PrincipalRule associated with the principal key or null
        *         if not found.
        */
  -    private PrincipalRule lookupPrincipalRule( String principal )
  +    private PrincipalRule lookupPrincipalRule(String principal, String locatorName)
       {
           PrincipalRule pr = (PrincipalRule) principalRules.get(principal);
           if (pr != null)
           {
               return pr;
           }
  -        Filter filter = persistentStore.newFilter();
  +        Filter filter = persistentStore.newFilter();        
           filter.addEqualTo("principalName", principal);
  +        filter.addEqualTo("locatorName", locatorName);        
           Object query = persistentStore.newQuery(principalRuleClass, filter);
           pr = (PrincipalRule) persistentStore.getObjectByQuery(query);
           principalRules.put(principal, pr);
  
  
  
  1.2       +23 -3     
jakarta-jetspeed-2/jetspeed-api/src/java/org/apache/jetspeed/profiler/rules/PrincipalRule.java
  
  Index: PrincipalRule.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed-2/jetspeed-api/src/java/org/apache/jetspeed/profiler/rules/PrincipalRule.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- PrincipalRule.java        28 May 2004 18:51:56 -0000      1.1
  +++ PrincipalRule.java        8 Oct 2004 06:49:38 -0000       1.2
  @@ -27,7 +27,7 @@
   public interface PrincipalRule
   {
       /**
  -     * Gets the name of the principal in this principal/rule pair association.
  +     * Gets the name of the principal in this principal/rule/locator pair 
association.
        * The principal name identifies the uniqueness of the relationship.
        * It is used for keyed lookups to find the rule associated with this 
principal. 
        *  
  @@ -36,13 +36,33 @@
       String getPrincipalName();
   
       /**
  -     * Sets the name of the principal in this principal/rule pair association.
  +     * Sets the name of the principal in this principal/rule/locator pair 
association.
        * The principal name identifies the uniqueness of the relationship.
        * It is used for keyed lookups to find the rule associated with this 
principal. 
        *  
        * @param name The name of the principal in this association.
        */        
       void setPrincipalName(String name);
  +
  +    /**
  +     * Gets the name of the locator in this principal/rule/locator pair association.
  +     * The principal + locator name identifies the uniqueness of the relationship.
  +     * It is used for keyed lookups to find the rule associated with this principal 
 
  +     * for a given locator 
  +     *  
  +     * @return The name of the locator in this association.
  +     */    
  +    String getLocatorName();
  +
  +    /**
  +     * Sets the name of the locator in this principal/locator/rule pair association.
  +     * The principal name + locator name identifies the uniqueness of the 
relationship.
  +     * It is used for keyed lookups to find the rule associated with this principal
  +     * for a given locator 
  +     *  
  +     * @param name The name of the locator in this association.
  +     */        
  +    void setLocatorName(String name);
       
           
       /**
  
  
  
  1.4       +16 -1     
jakarta-jetspeed-2/components/profiler/src/java/org/apache/jetspeed/profiler/rules/impl/PrincipalRuleImpl.java
  
  Index: PrincipalRuleImpl.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed-2/components/profiler/src/java/org/apache/jetspeed/profiler/rules/impl/PrincipalRuleImpl.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- PrincipalRuleImpl.java    20 Sep 2004 17:17:03 -0000      1.3
  +++ PrincipalRuleImpl.java    8 Oct 2004 06:49:38 -0000       1.4
  @@ -29,6 +29,7 @@
       private String principalName;
       private String ruleId;
       private ProfilingRule profilingRule;
  +    private String locatorName;
       
       /* (non-Javadoc)
        * @see org.apache.jetspeed.profiler.rules.PrincipalRule#getPrincipalName()
  @@ -64,4 +65,18 @@
           this.ruleId = rule.getId();
       }
       
  +    /**
  +     * @return Returns the locatorName.
  +     */
  +    public String getLocatorName()
  +    {
  +        return locatorName;
  +    }
  +    /**
  +     * @param locatorName The locatorName to set.
  +     */
  +    public void setLocatorName(String locatorName)
  +    {
  +        this.locatorName = locatorName;
  +    }
   }
  
  
  

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

Reply via email to