taylor      2003/12/03 20:52:10

  Modified:    portal/src/sql/hsql create-db-phase2.sql
                        populate-db-default.sql
               portal/src/test/org/apache/jetspeed/aggregator
                        TestAggregator.java
               portal/src/test/org/apache/jetspeed/pipeline
                        TestPipeline.java
               portal/src/test/org/apache/jetspeed/profiler
                        TestProfiler.java
               portal/src/webapp/WEB-INF/conf jetspeed-pipeline.xml
                        jetspeed.properties
               portal/src/webapp/WEB-INF/conf/ojb repository_page.xml
               portal/src/webapp/WEB-INF/db/hsql Registry.script
  Added:       portal/src/test/org/apache/jetspeed/security
                        TestSecurityHelper.java
               portal/src/webapp/WEB-INF/conf old-profiler.properties
               portal/src/webapp/WEB-INF/pages default-page.psml
  Log:
  - More code coverage tests for Profiler and Security
  - removed old profiler properties from jetspeed.properties and moved them to 
old-profiler.properties
  
  Revision  Changes    Path
  1.6       +3 -2      jakarta-jetspeed-2/portal/src/sql/hsql/create-db-phase2.sql
  
  Index: create-db-phase2.sql
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed-2/portal/src/sql/hsql/create-db-phase2.sql,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- create-db-phase2.sql      28 Nov 2003 21:51:50 -0000      1.5
  +++ create-db-phase2.sql      4 Dec 2003 04:52:09 -0000       1.6
  @@ -120,10 +120,11 @@
   (
       CRITERION_ID VARCHAR(80) PRIMARY KEY,
       RULE_ID VARCHAR(80) NOT NULL,        
  -    FALLBACK_ORDER INTEGER,
  +    FALLBACK_ORDER INTEGER NOT NULL,
       REQUEST_TYPE VARCHAR(40) NOT NULL,
       NAME VARCHAR(80) NOT NULL,
  -    VALUE VARCHAR(128)
  +    VALUE VARCHAR(128),
  +    FALLBACK_TYPE  INTEGER default 1
   );
   
   CREATE INDEX IX_RULE_CRITERION_1 ON RULE_CRITERION(RULE_ID, FALLBACK_ORDER);
  
  
  
  1.3       +17 -10    jakarta-jetspeed-2/portal/src/sql/hsql/populate-db-default.sql
  
  Index: populate-db-default.sql
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed-2/portal/src/sql/hsql/populate-db-default.sql,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- populate-db-default.sql   28 Nov 2003 21:51:50 -0000      1.2
  +++ populate-db-default.sql   4 Dec 2003 04:52:09 -0000       1.3
  @@ -1,17 +1,24 @@
   insert into PROFILING_RULE values ('j1', 
      'org.apache.jetspeed.profiler.rules.impl.StandardProfilingRule',
      'The default profiling rule following the Jetspeed-1 hard-coded profiler 
fallback algorithm.');
  -insert into RULE_CRITERION values (1, 'j1', 0, 'request', 'name', 'default');
  -insert into RULE_CRITERION values (2, 'j1', 1, 'standard', 'user', null);
  -insert into RULE_CRITERION values (3, 'j1', 2, 'standard', 'mediatype', null);
  -insert into RULE_CRITERION values (4, 'j1', 3, 'standard', 'language', null);
  -insert into RULE_CRITERION values (5, 'j1', 4, 'standard', 'country', null);
  +insert into RULE_CRITERION values (1, 'j1', 0, 'standard', 'desktop', 
'default-desktop', 0);
  +insert into RULE_CRITERION values (2, 'j1', 1, 'standard', 'page', 'default-page', 
0);
  +insert into RULE_CRITERION values (3, 'j1', 2, 'standard', 'group.role.user', null, 
0);
  +insert into RULE_CRITERION values (4, 'j1', 3, 'standard', 'mediatype', null, 1);
  +insert into RULE_CRITERION values (5, 'j1', 4, 'standard', 'language', null, 1);
  +insert into RULE_CRITERION values (6, 'j1', 5, 'standard', 'country', null, 1);
   
   insert into PROFILING_RULE values ('role-fallback', 
        'org.apache.jetspeed.profiler.rules.impl.RoleFallbackProfilingRule',
        'A role based fallback algorithm based on Jetspeed-1 role-based fallback');
  -insert into RULE_CRITERION values (6, 'role-fallback', 0, 'request', 'name', 
'default');
  -insert into RULE_CRITERION values (7, 'role-fallback', 1, 'standard', 'role-based', 
null);
  -insert into RULE_CRITERION values (8, 'role-fallback', 2, 'standard', 'mediatype', 
null);
  -insert into RULE_CRITERION values (9, 'role-fallback', 3, 'standard', 'language', 
null);
  -insert into RULE_CRITERION values (10, 'role-fallback', 4, 'standard', 'country', 
null);
  +insert into RULE_CRITERION values (7, 'role-fallback', 0, 'standard', 'desktop', 
'default-desktop', 0);
  +insert into RULE_CRITERION values (8, 'role-fallback', 1, 'standard', 'page', 
'default-page', 0);
  +insert into RULE_CRITERION values (9, 'role-fallback', 2, 'standard', 'roles', 
null, 2);
  +insert into RULE_CRITERION values (10, 'role-fallback', 3, 'standard', 'mediatype', 
null, 1);
  +insert into RULE_CRITERION values (11, 'role-fallback', 4, 'standard', 'language', 
null, 1);
  +insert into RULE_CRITERION values (12, 'role-fallback', 5, 'standard', 'country', 
null, 1);
  +
  +insert into PRINCIPAL_RULE_ASSOC values ( 'anon', 'j1' );
  +
  +
  +
  
  
  
  1.3       +58 -5     
jakarta-jetspeed-2/portal/src/test/org/apache/jetspeed/aggregator/TestAggregator.java
  
  Index: TestAggregator.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed-2/portal/src/test/org/apache/jetspeed/aggregator/TestAggregator.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- TestAggregator.java       18 Oct 2003 20:48:42 -0000      1.2
  +++ TestAggregator.java       4 Dec 2003 04:52:09 -0000       1.3
  @@ -1,3 +1,56 @@
  +/* ====================================================================
  + * The Apache Software License, Version 1.1
  + *
  + * Copyright (c) 2000-2003 The Apache Software Foundation.  All rights
  + * reserved.
  + *
  + * Redistribution and use in source and binary forms, with or without
  + * modification, are permitted provided that the following conditions
  + * are met:
  + *
  + * 1. Redistributions of source code must retain the above copyright
  + *    notice, this list of conditions and the following disclaimer.
  + *
  + * 2. Redistributions in binary form must reproduce the above copyright
  + *    notice, this list of conditions and the following disclaimer in
  + *    the documentation and/or other materials provided with the
  + *    distribution.
  + *
  + * 3. The end-user documentation included with the redistribution,
  + *    if any, must include the following acknowledgment:
  + *       "This product includes software developed by the
  + *        Apache Software Foundation (http://www.apache.org/)."
  + *    Alternately, this acknowledgment may appear in the software itself,
  + *    if and wherever such third-party acknowledgments normally appear.
  + *
  + * 4. The names "Apache" and "Apache Software Foundation" and
  + *    "Apache Jetspeed" must not be used to endorse or promote products
  + *    derived from this software without prior written permission. For
  + *    written permission, please contact [EMAIL PROTECTED]
  + *
  + * 5. Products derived from this software may not be called "Apache",
  + *    "Apache Jetspeed", nor may "Apache" appear in their name, without
  + *    prior written permission of the Apache Software Foundation.
  + *
  + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  + * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  + * SUCH DAMAGE.
  + * ====================================================================
  + *
  + * This software consists of voluntary contributions made by many
  + * individuals on behalf of the Apache Software Foundation.  For more
  + * information on the Apache Software Foundation, please see
  + * <http://www.apache.org/>.
  + */
   package org.apache.jetspeed.aggregator;
   
   import junit.framework.Test;
  @@ -7,9 +60,9 @@
   
   import org.apache.jetspeed.request.RequestContext;
   import org.apache.jetspeed.request.RequestContextFactory;
  -import org.apache.jetspeed.services.profiler.Profiler;
  +import org.apache.jetspeed.profiler.Profiler;
   import org.apache.jetspeed.cps.CommonPortletServices;
  -import org.apache.jetspeed.om.profile.Profile;
  +import org.apache.jetspeed.profiler.ProfileLocator;
   
   /**
    * <P>Test the aggregation service</P>
  @@ -57,8 +110,8 @@
   
           RequestContext request = RequestContextFactory.getInstance(null, null, 
null);
   
  -        Profile profile = Profiler.getProfile(request);
  -        request.setProfile(profile);
  +        ProfileLocator locator = Profiler.getProfile(request);
  +        request.setProfileLocator(locator);
   
           aggregator.build(request);
   
  
  
  
  1.4       +10 -8     
jakarta-jetspeed-2/portal/src/test/org/apache/jetspeed/pipeline/TestPipeline.java
  
  Index: TestPipeline.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed-2/portal/src/test/org/apache/jetspeed/pipeline/TestPipeline.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- TestPipeline.java 12 Aug 2003 18:29:03 -0000      1.3
  +++ TestPipeline.java 4 Dec 2003 04:52:09 -0000       1.4
  @@ -115,12 +115,14 @@
           Pipeline pipeline = engine.getPipeline();
           assertNotNull(pipeline);
           Valve[] valves = pipeline.getValves();
  -        assertTrue(valves[0].toString().equals("CapabilityValveImpl"));
  -        assertTrue(valves[1].toString().equals("ContainerValve"));
  -        assertTrue(valves[2].toString().equals("ProfilerValve"));
  -        assertTrue(valves[3].toString().equals("ActionValveImpl"));
  -        assertTrue(valves[4].toString().equals("VerySimpleLayoutValveImpl"));
  -        assertTrue(valves[5].toString().equals("AggregatorValve"));
  -        assertTrue(valves[6].toString().equals("CleanupValveImpl"));
  +        assertTrue(valves[0].toString().equals("LocalizationValve"));
  +        assertTrue(valves[1].toString().equals("CapabilityValveImpl"));        
  +        assertTrue(valves[2].toString().equals("ContainerValve"));
  +        assertTrue(valves[3].toString().equals("SecurityValve"));        
  +        assertTrue(valves[4].toString().equals("ProfilerValve"));
  +        assertTrue(valves[5].toString().equals("ActionValveImpl"));
  +        assertTrue(valves[6].toString().equals("VerySimpleLayoutValveImpl"));
  +        assertTrue(valves[7].toString().equals("AggregatorValve"));
  +        assertTrue(valves[8].toString().equals("CleanupValveImpl"));
       }
   }
  
  
  
  1.2       +244 -15   
jakarta-jetspeed-2/portal/src/test/org/apache/jetspeed/profiler/TestProfiler.java
  
  Index: TestProfiler.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed-2/portal/src/test/org/apache/jetspeed/profiler/TestProfiler.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- TestProfiler.java 28 Nov 2003 21:51:50 -0000      1.1
  +++ TestProfiler.java 4 Dec 2003 04:52:09 -0000       1.2
  @@ -53,17 +53,30 @@
    */
   package org.apache.jetspeed.profiler;
   
  +import java.security.Principal;
   import java.util.Collection;
  +import java.util.HashSet;
   import java.util.Iterator;
  +import java.util.Locale;
  +import java.util.Map;
  +import java.util.Set;
  +
  +import javax.security.auth.Subject;
   
   import junit.framework.Test;
   import junit.framework.TestSuite;
   
  +import org.apache.jetspeed.Jetspeed;
  +import org.apache.jetspeed.PortalContext;
   import org.apache.jetspeed.cps.CommonPortletServices;
  +import org.apache.jetspeed.mockobjects.request.MockRequestContext;
  +import org.apache.jetspeed.om.page.Page;
   import org.apache.jetspeed.profiler.rules.ProfilingRule;
   import org.apache.jetspeed.profiler.rules.RuleCriterion;
   import org.apache.jetspeed.profiler.rules.impl.RoleFallbackProfilingRule;
   import org.apache.jetspeed.profiler.rules.impl.StandardProfilingRule;
  +import org.apache.jetspeed.request.RequestContext;
  +import org.apache.jetspeed.security.impl.UserPrincipalImpl;
   import org.apache.jetspeed.test.JetspeedTest;
   
   /**
  @@ -126,7 +139,10 @@
       private static final String FALLBACK_RULE = "role-fallback";
       private static final int EXPECTED_STANDARD = 1;
       private static final int EXPECTED_FALLBACK = 1;
  +    private static final String DEFAULT_PAGE = "default-page";
  +    private static final String DEFAULT_DESKTOP = "default-desktop";
       
  +        
       /**
        * Tests
        *
  @@ -139,11 +155,15 @@
           
           // Test Default Rule        
           ProfilingRule rule = service.getDefaultRule();
  -        System.out.println("default rule = " + rule.getId());
           assertNotNull("Default profiling rule is null", rule);
           assertTrue("default rule unexpected, = " + rule.getId(), 
rule.getId().equals(DEFAULT_RULE));
           assertTrue("default rule class not mapped", rule instanceof 
StandardProfilingRule);
   
  +        // Test anonymous principal-rule
  +        ProfilingRule anonRule = service.getRuleForPrincipal(new 
UserPrincipalImpl("anon"));
  +        assertNotNull("anonymous rule is null", anonRule);
  +        assertTrue("anonymous rule is j1", anonRule.getId().equals(DEFAULT_RULE));
  +        
           // Test Retrieving All Rules
           int standardCount = 0;
           int fallbackCount = 0;        
  @@ -154,33 +174,242 @@
               if (rule.getId().equals(DEFAULT_RULE))                                  
     
               {
                   assertTrue("standard rule class not mapped", rule instanceof 
StandardProfilingRule);
  +                checkStandardCriteria(rule);
                   standardCount++;                                 
               }
               else if (rule.getId().equals(FALLBACK_RULE))                            
           
               {
                   assertTrue("role fallback rule class not mapped", rule instanceof 
RoleFallbackProfilingRule);
  +                checkFallbackCriteria(rule);                
                   fallbackCount++;             
               }
               else
               {
                   assertTrue("Unknown rule encountered: " + rule.getId(), false);     
       
               }
  -            
  -            // criteria
  -            Collection criteriaCollection = rule.getRuleCriteria();
  -            assertNotNull("Criteria is null", criteriaCollection);
  -            Iterator criteria = criteriaCollection.iterator();
  -            while (criteria.hasNext())
  -            {
  -                RuleCriterion criterion = (RuleCriterion)criteria.next();
  -                System.out.println("criteria = " + 
  -                                    criterion.getRuleId() + " - " + 
  -                                    criterion.getName());                           
                                         
  -            }
  -            
  +                        
           }
           assertTrue("didnt find expected number of standard rules, expected = " + 
EXPECTED_STANDARD, standardCount == 1);
           assertTrue("didnt find expected number of fallback rules, expected = " + 
EXPECTED_FALLBACK, fallbackCount == 1);
           
       }    
  +    
  +    private void checkStandardCriteria(ProfilingRule rule)
  +    {
  +        Collection criteriaCollection = rule.getRuleCriteria();
  +        assertNotNull("Criteria is null", criteriaCollection);
  +        Iterator criteria = criteriaCollection.iterator();
  +        int count = 0;
  +        while (criteria.hasNext())
  +        {
  +            RuleCriterion criterion = (RuleCriterion)criteria.next();
  +            assertTrue("standard criteria type", 
criterion.getType().equals("standard"));
  +            System.out.println("criteria name = " + criterion.getName());           
 
  +            switch (count)
  +            {
  +                case 0:
  +                    assertTrue("standard criteria name " + criterion.getName(), 
  +                                
criterion.getName().equals(ProfilingRule.STANDARD_DESKTOP));
  +                    assertNotNull("standard criteria value", criterion.getValue());
  +                    assertTrue("standard criteria value", 
criterion.getValue().equals(DEFAULT_DESKTOP));
  +                    assertTrue("fallback type", criterion.getFallbackType() == 
RuleCriterion.FALLBACK_STOP);
  +                    break;                
  +                case 1:
  +                    assertTrue("standard criteria name " + criterion.getName(), 
  +                                
criterion.getName().equals(ProfilingRule.STANDARD_PAGE));
  +                    assertNotNull("standard criteria value", criterion.getValue());
  +                    assertTrue("standard criteria value", 
criterion.getValue().equals(DEFAULT_PAGE));
  +                    assertTrue("fallback type", criterion.getFallbackType() == 
RuleCriterion.FALLBACK_STOP);
  +                    break;
  +                case 2:
  +                    assertTrue("standard criteria name", 
criterion.getName().equals(ProfilingRule.STANDARD_GROUP_ROLE_USER));
  +                    assertNull("standard criteria value", criterion.getValue());
  +                    assertTrue("fallback type", criterion.getFallbackType() == 
RuleCriterion.FALLBACK_STOP);
  +                    break;
  +                case 3:
  +                    assertTrue("standard criteria name", 
criterion.getName().equals(ProfilingRule.STANDARD_MEDIATYPE));
  +                    assertNull("standard criteria value", criterion.getValue());
  +                    assertTrue("fallback type", criterion.getFallbackType() == 
RuleCriterion.FALLBACK_CONTINUE);
  +                    break;
  +                case 4:
  +                    assertTrue("standard criteria name", 
criterion.getName().equals(ProfilingRule.STANDARD_LANGUAGE));
  +                    assertNull("standard criteria value", criterion.getValue());
  +                    assertTrue("fallback type", criterion.getFallbackType() == 
RuleCriterion.FALLBACK_CONTINUE);
  +                    break;
  +                case 5:
  +                    assertTrue("standard criteria name", 
criterion.getName().equals(ProfilingRule.STANDARD_COUNTRY));
  +                    assertNull("standard criteria value", criterion.getValue());
  +                    assertTrue("fallback type", criterion.getFallbackType() == 
RuleCriterion.FALLBACK_CONTINUE);
  +                    break;                                    
  +            }   
  +            count++;
  +        }        
  +    }
  +    
  +    private void checkFallbackCriteria(ProfilingRule rule)
  +    {
  +        Collection criteriaCollection = rule.getRuleCriteria();
  +        assertNotNull("Criteria is null", criteriaCollection);
  +        Iterator criteria = criteriaCollection.iterator();
  +        int count = 0;
  +        while (criteria.hasNext())
  +        {
  +            RuleCriterion criterion = (RuleCriterion)criteria.next();
  +            assertTrue("fallback criteria type", 
criterion.getType().equals("standard"));
  +            
  +            switch (count)
  +            {
  +                case 0:
  +                    assertTrue("fallback criteria name", 
criterion.getName().equals(ProfilingRule.STANDARD_DESKTOP));
  +                    assertNotNull("fallback criteria value", criterion.getValue());
  +                    assertTrue("fallback criteria value", 
criterion.getValue().equals(DEFAULT_DESKTOP));
  +                    assertTrue("fallback type", criterion.getFallbackType() == 
RuleCriterion.FALLBACK_STOP);
  +                    break;
  +                case 1:
  +                    assertTrue("fallback criteria name", 
criterion.getName().equals(ProfilingRule.STANDARD_PAGE));
  +                    assertNotNull("fallback criteria value", criterion.getValue());
  +                    assertTrue("fallback criteria value", 
criterion.getValue().equals(DEFAULT_PAGE));
  +                    assertTrue("fallback type", criterion.getFallbackType() == 
RuleCriterion.FALLBACK_STOP);
  +                    break;                    
  +                case 2:
  +                    assertTrue("fallback criteria name", 
criterion.getName().equals(ProfilingRule.STANDARD_ROLE_FALLBACK));
  +                    assertNull("fallback criteria value", criterion.getValue());
  +                    assertTrue("fallback type", criterion.getFallbackType() == 
RuleCriterion.FALLBACK_LOOP);                    
  +                    break;
  +                case 3:
  +                    assertTrue("fallback criteria name", 
criterion.getName().equals(ProfilingRule.STANDARD_MEDIATYPE));
  +                    assertNull("fallback criteria value", criterion.getValue());
  +                    assertTrue("fallback type", criterion.getFallbackType() == 
RuleCriterion.FALLBACK_CONTINUE);                    
  +                    break;
  +                case 4:
  +                    assertTrue("fallback criteria name", 
criterion.getName().equals(ProfilingRule.STANDARD_LANGUAGE));
  +                    assertNull("fallback criteria value", criterion.getValue());
  +                    assertTrue("fallback type", criterion.getFallbackType() == 
RuleCriterion.FALLBACK_CONTINUE);
  +                    break;
  +                case 5:
  +                    assertTrue("fallback criteria name", 
criterion.getName().equals(ProfilingRule.STANDARD_COUNTRY));
  +                    assertNull("fallback criteria value", criterion.getValue());
  +                    assertTrue("fallback type", criterion.getFallbackType() == 
RuleCriterion.FALLBACK_CONTINUE);
  +                    break;                                    
  +            }
  +            count++;               
  +        }        
  +    }
  +
  +    public void testStandardRule()
  +        throws Exception
  +    {
  +        service = getService();               
  +        assertNotNull("profiler service is null", service);
  +
  +        PortalContext pc = Jetspeed.getContext();
  +        RequestContext request = new MockRequestContext(pc);
  +        
  +        request.setSubject(createSubject("anon"));
  +        request.setLocale(new Locale("en", "US"));        
  +        request.setMediaType("HTML");
  +        request.setMimeType("text/html");
  +        Map params = request.getParameterMap();
  +        params.put("page", "default-other");
  +        
  +        ProfileLocator locator = service.getProfile(request);
  +        assertNotNull("standard rule test on getProfile returned null", locator);
  +        String path = locator.getLocatorPath();
  +        System.out.println("locator = " + path);        
  +        assertTrue("locator key value unexpected: " + path, 
  +                    path.equals(
  +              
"desktop/default-desktop/page/default-other/user/anon/mediatype/HTML/language/en/country/US"));
  +
  +        // test fallback
  +        Iterator fallback = locator.iterator();
  +        int count = 0;
  +        while (fallback.hasNext())
  +        {
  +            String locatorPath = (String)fallback.next();
  +            switch (count)
  +            {
  +                case 0:
  +                    assertTrue("locatorPath[0]: " + locatorPath, 
  +                                locatorPath.equals(
  +                        
"desktop/default-desktop/page/default-other/user/anon/mediatype/HTML/language/en/country/US"));
  +                    break;
  +                case 1:
  +                    assertTrue("locatorPath[1]: " + locatorPath, 
  +                                locatorPath.equals(
  +                         
"desktop/default-desktop/page/default-other/user/anon/mediatype/HTML/language/en"));
  +                    break;                
  +                case 2:
  +                    assertTrue("locatorPath[2]: " + locatorPath, 
  +                                
locatorPath.equals("desktop/default-desktop/page/default-other/user/anon/mediatype/HTML"));
  +                    break;                
  +                case 3:
  +                    assertTrue("locatorPath[3]: " + locatorPath, 
  +                                
locatorPath.equals("desktop/default-desktop/page/default-other/user/anon"));
  +                    break;                
  +                
  +            }
  +            count++;
  +            System.out.println("path = " + locatorPath);                            
 
  +        }
  +        assertTrue("fallback count = 4, " + count, count == 4);
  +        
  +        // create a simple locator
  +        ProfileLocator locator2 = service.createLocator();
  +        locator2.add("page", "test");
  +        fallback = locator2.iterator();
  +        count = 0;
  +        while (fallback.hasNext())
  +        {
  +            String locatorPath = (String)fallback.next();
  +            assertTrue("locatorPath: " + locatorPath, 
  +                        locatorPath.equals("page/test"));
  +            
  +            System.out.println("Simple Test: path = " + locatorPath);
  +            count++;            
  +        }
  +        assertTrue("fallback count = 1, " + count, count == 1);
  +
  +        // create an empty locator
  +        ProfileLocator locator3 = service.createLocator();
  +        fallback = locator3.iterator();
  +        count = 0;
  +        while (fallback.hasNext())
  +        {
  +            String locatorPath = (String)fallback.next();
  +            count++;            
  +        }
  +        assertTrue("fallback count = 0, " + count, count == 0);
  +                
  +    }
  +    
  +    private Subject createSubject(String principalName)
  +    {
  +        Principal principal = new UserPrincipalImpl(principalName);
  +        Set principals = new HashSet();
  +        principals.add(principal);
  +        return new Subject(true, principals, new HashSet(), new HashSet());        
  +    }
  +
  +    public void testPage() throws Exception
  +    {
  +        service = getService();               
  +        assertNotNull("profiler service is null", service);
  +
  +        PortalContext pc = Jetspeed.getContext();
  +        RequestContext request = new MockRequestContext(pc);
  +    
  +        request.setSubject(createSubject("anon"));
  +        request.setLocale(new Locale("en", "US"));        
  +        request.setMediaType("HTML");
  +        request.setMimeType("text/html");
  +        Map params = request.getParameterMap();
  +        // params.put("page", "default");
  +    
  +        ProfileLocator locator = service.getProfile(request);
  +        assertNotNull("standard rule test on getProfile returned null", locator);
  +        System.out.println("page = " + locator.getValue("page"));
  +        
  +        Page page = service.getPage(locator);
  +        assertNotNull("page is null", page);                
  +    }
   }
  
  
  
  1.1                  
jakarta-jetspeed-2/portal/src/test/org/apache/jetspeed/security/TestSecurityHelper.java
  
  Index: TestSecurityHelper.java
  ===================================================================
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2000-2003 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and
   *    "Apache Jetspeed" must not be used to endorse or promote products
   *    derived from this software without prior written permission. For
   *    written permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache",
   *    "Apache Jetspeed", nor may "Apache" appear in their name, without
   *    prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  package org.apache.jetspeed.security;
  
  import java.security.Principal;
  import java.util.HashSet;
  import java.util.Set;
  
  import javax.security.auth.Subject;
  
  import junit.framework.Test;
  import junit.framework.TestSuite;
  
  import org.apache.jetspeed.profiler.Profiler;
  import org.apache.jetspeed.security.impl.UserPrincipalImpl;
  import org.apache.jetspeed.test.JetspeedTest;
  
  /**
   * TestSecurityHelper
   *
   * @author <a href="mailto:[EMAIL PROTECTED]">David Sean Taylor</a>
   * @version $Id: TestSecurityHelper.java,v 1.1 2003/12/04 04:52:09 taylor Exp $
   */
  public class TestSecurityHelper extends JetspeedTest
  {
      /**
       * Defines the testcase name for JUnit.
       *
       * @param name the testcase's name.
       */
      public TestSecurityHelper(String name)
      {
          super(name);
      }
  
      /**
       * Start the tests.
       *
       * @param args the arguments. Not used
       */
      public static void main(String args[])
      {
          junit.awtui.TestRunner.main(new String[] { 
TestSecurityHelper.class.getName()});
      }
  
  
      /**
       * Creates the test suite.
       *
       * @return a test suite (<code>TestSuite</code>) that includes all methods
       *         starting with "test"
       */
      public static Test suite()
      {
          // All methods starting with "test" will be executed in the test suite.
          return new TestSuite(TestSecurityHelper.class);
      }
      
      public void testHelpers() throws Exception
      {
          Principal principal = new UserPrincipalImpl("anon");
          Set principals = new HashSet();
          principals.add(principal);
          Subject subject = new Subject(true, principals, new HashSet(), new 
HashSet());
          System.out.println("subject = " + subject);
          
          Principal found = SecurityHelper.getBestPrincipal(subject, 
UserPrincipal.class);
          assertNotNull("found principal is null", found);
          assertTrue("found principal should be anon", found.getName().equals("anon"));
          System.out.println("found = " + found.getName());
          String defaultAnon = Profiler.getAnonymousUser();
          System.out.println("default anon = " + defaultAnon);
      }
      
  }
  
  
  
  1.4       +7 -1      
jakarta-jetspeed-2/portal/src/webapp/WEB-INF/conf/jetspeed-pipeline.xml
  
  Index: jetspeed-pipeline.xml
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed-2/portal/src/webapp/WEB-INF/conf/jetspeed-pipeline.xml,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- jetspeed-pipeline.xml     12 Aug 2003 18:29:03 -0000      1.3
  +++ jetspeed-pipeline.xml     4 Dec 2003 04:52:09 -0000       1.4
  @@ -2,13 +2,19 @@
     <name>JetspeedPipeline</name>
     <valveDescriptors>
       <valveDescriptor>
  +      
<className>org.apache.jetspeed.localization.impl.LocalizationValveImpl</className>
  +    </valveDescriptor>
  +    <valveDescriptor>
         <className>org.apache.jetspeed.capability.CapabilityValveImpl</className>
       </valveDescriptor>
       <valveDescriptor>
         <className>org.apache.jetspeed.container.ContainerValve</className>
       </valveDescriptor>
       <valveDescriptor>
  -      <className>org.apache.jetspeed.services.profiler.ProfilerValve</className>
  +      <className>org.apache.jetspeed.security.impl.SecurityValveImpl</className>
  +    </valveDescriptor>
  +    <valveDescriptor>
  +      <className>org.apache.jetspeed.profiler.impl.ProfilerValveImpl</className>
       </valveDescriptor>
        <valveDescriptor>
         <className>org.apache.jetspeed.pipeline.valve.impl.ActionValveImpl</className>
  
  
  
  1.12      +1 -48     
jakarta-jetspeed-2/portal/src/webapp/WEB-INF/conf/jetspeed.properties
  
  Index: jetspeed.properties
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed-2/portal/src/webapp/WEB-INF/conf/jetspeed.properties,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- jetspeed.properties       28 Nov 2003 21:51:50 -0000      1.11
  +++ jetspeed.properties       4 Dec 2003 04:52:09 -0000       1.12
  @@ -208,53 +208,6 @@
   # services.profiler.ruletype.handler.name = request-parameter
   # services.profiler.ruletype.handler.impl = 
org.apache.jetspeed.profiler.impl.RequestParameterHandler
   
  -# -------------------------------------------------------------------
  -# O L D P R O F I L E R
  -# -------------------------------------------------------------------
  
-services.Profiler.classname=org.apache.jetspeed.services.profiler.JetspeedProfilerService
  -
  -# The default resource filename
  -services.Profiler.resource.default=default
  -
  -# The default resource filename extension 
  -services.Profiler.resource.ext=.psml
  -
  -# When a new user is created, this account's psml is cloned to the new account psml
  -# Setting this account to nothing configures role-based psml as the default method 
for new users
  -services.Profiler.newuser.template=turbine
  -
  -# Media types template to create for user. (comma separated)
  -services.Profiler.newuser.media_types=html,wml
  -
  -#
  -# Profiler Fallback options
  -#
  -# use Role-based PSML fallback
  -services.Profiler.rolefallback=true
  -
  -# Consider the language as part of the fallback?
  -services.Profiler.fallback.language=true
  -
  -# Consider the country code as part of the fallback?
  -services.Profiler.fallback.country=true
  -
  -# If resource is not found under mediatype, keep searching?
  -services.Profiler.fallback.to.root=false
  -
  -#
  -# Profiler Role-based merge fallback options
  -#
  -# When rolefallback is true and rolemerge is true, new user's profile will 
  -# be an aggregate of psml from each role the user is part of.
  -services.Profiler.rolemerge=false
  -
  -# Controller to use in merged profile
  -services.Profiler.rolemerge.controller=TabController
  -
  -# Control to use in merged profile
  -services.Profiler.rolemerge.control=TabControl
  -
  -
   #--------------------------------------------------------------------
   # P O R T L E T  D E P L O Y M E N T  D E S C R I P T O R
   #--------------------------------------------------------------------
  
  
  
  1.1                  
jakarta-jetspeed-2/portal/src/webapp/WEB-INF/conf/old-profiler.properties
  
  Index: old-profiler.properties
  ===================================================================
  # -------------------------------------------------------------------
  # P R O F I L E R
  # -------------------------------------------------------------------
  
services.Profiler.classname=org.apache.jetspeed.services.profiler.JetspeedProfilerService
  
  # The default resource filename
  services.Profiler.resource.default=default
  
  # The default resource filename extension 
  services.Profiler.resource.ext=.psml
  
  # When a new user is created, this account's psml is cloned to the new account psml
  # Setting this account to nothing configures role-based psml as the default method 
for new users
  services.Profiler.newuser.template=turbine
  
  # Media types template to create for user. (comma separated)
  services.Profiler.newuser.media_types=html,wml
  
  #
  # Profiler Fallback options
  #
  # use Role-based PSML fallback
  services.Profiler.rolefallback=true
  
  # Consider the language as part of the fallback?
  services.Profiler.fallback.language=true
  
  # Consider the country code as part of the fallback?
  services.Profiler.fallback.country=true
  
  # If resource is not found under mediatype, keep searching?
  services.Profiler.fallback.to.root=false
  
  #
  # Profiler Role-based merge fallback options
  #
  # When rolefallback is true and rolemerge is true, new user's profile will 
  # be an aggregate of psml from each role the user is part of.
  services.Profiler.rolemerge=false
  
  # Controller to use in merged profile
  services.Profiler.rolemerge.controller=TabController
  
  # Control to use in merged profile
  services.Profiler.rolemerge.control=TabControl
  
  
  
  1.5       +8 -1      
jakarta-jetspeed-2/portal/src/webapp/WEB-INF/conf/ojb/repository_page.xml
  
  Index: repository_page.xml
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed-2/portal/src/webapp/WEB-INF/conf/ojb/repository_page.xml,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- repository_page.xml       28 Nov 2003 21:51:51 -0000      1.4
  +++ repository_page.xml       4 Dec 2003 04:52:09 -0000       1.5
  @@ -98,7 +98,7 @@
        jdbc-type="VARCHAR"
       />    
       <field-descriptor
  -     name="name"
  +     name="resolverName"
        column="NAME"
        jdbc-type="VARCHAR"
       />    
  @@ -107,6 +107,11 @@
        column="VALUE"
        jdbc-type="VARCHAR"
       />    
  +    <field-descriptor 
  +        name="fallbackType" 
  +        jdbc-type="INTEGER"
  +        column="FALLBACK_TYPE" 
  +    />
   
   </class-descriptor>
   
  @@ -122,6 +127,8 @@
        name="principalName"
        column="PRINCIPAL_NAME"
        jdbc-type="VARCHAR"
  +     primarykey="true"
  +     autoincrement="false"           
       />
       <field-descriptor
        name="ruleId"
  
  
  
  1.10      +14 -11    
jakarta-jetspeed-2/portal/src/webapp/WEB-INF/db/hsql/Registry.script
  
  Index: Registry.script
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed-2/portal/src/webapp/WEB-INF/db/hsql/Registry.script,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- Registry.script   28 Nov 2003 21:51:51 -0000      1.9
  +++ Registry.script   4 Dec 2003 04:52:09 -0000       1.10
  @@ -43,7 +43,7 @@
   CREATE TABLE FRAGMENT_REF(FRAGMENT_REF_ID VARCHAR(80) NOT NULL PRIMARY 
KEY,FRAGMENT_ID VARCHAR(80) NOT NULL,NAME VARCHAR(80) NOT NULL,TITLE VARCHAR(100))
   CREATE TABLE FRAGMENT_REFS(FRAGMENT_REF_ID VARCHAR(80) NOT NULL,FRAGMENT_ID 
VARCHAR(80) NOT NULL)
   CREATE TABLE PROFILING_RULE(RULE_ID VARCHAR(80) NOT NULL PRIMARY KEY,CLASS_NAME 
VARCHAR(100) NOT NULL,TITLE VARCHAR(100))
  -CREATE TABLE RULE_CRITERION(CRITERION_ID VARCHAR(80) NOT NULL PRIMARY KEY,RULE_ID 
VARCHAR(80) NOT NULL,FALLBACK_ORDER INTEGER,REQUEST_TYPE VARCHAR(40) NOT NULL,NAME 
VARCHAR(80) NOT NULL,VALUE VARCHAR(128))
  +CREATE TABLE RULE_CRITERION(CRITERION_ID VARCHAR(80) NOT NULL PRIMARY KEY,RULE_ID 
VARCHAR(80) NOT NULL,FALLBACK_ORDER INTEGER NOT NULL,REQUEST_TYPE VARCHAR(40) NOT 
NULL,NAME VARCHAR(80) NOT NULL,VALUE VARCHAR(128),FALLBACK_TYPE INTEGER DEFAULT '1')
   CREATE INDEX IX_RULE_CRITERION_1 ON RULE_CRITERION(RULE_ID,FALLBACK_ORDER)
   CREATE TABLE PRINCIPAL_RULE_ASSOC(PRINCIPAL_NAME VARCHAR(80) NOT NULL,RULE_ID 
VARCHAR(80) NOT NULL,CONSTRAINT SYS_CT_5 UNIQUE(PRINCIPAL_NAME))
   CREATE TABLE PROFILE_DESKTOP_ASSOC(LOCATOR_HASH VARCHAR(40) NOT NULL,DESKTOP_ID 
VARCHAR(80) NOT NULL)
  @@ -123,13 +123,16 @@
   CREATE ALIAS REPLACE FOR "org.hsqldb.Library.replace"
   INSERT INTO PROFILING_RULE 
VALUES('j1','org.apache.jetspeed.profiler.rules.impl.StandardProfilingRule','The 
default profiling rule following the Jetspeed-1 hard-coded profiler fallback 
algorithm.')
   INSERT INTO PROFILING_RULE 
VALUES('role-fallback','org.apache.jetspeed.profiler.rules.impl.RoleFallbackProfilingRule','A
 role based fallback algorithm based on Jetspeed-1 role-based fallback')
  -INSERT INTO RULE_CRITERION VALUES('1','j1',0,'request','name','default')
  -INSERT INTO RULE_CRITERION VALUES('10','role-fallback',4,'standard','country',NULL)
  -INSERT INTO RULE_CRITERION VALUES('2','j1',1,'standard','user',NULL)
  -INSERT INTO RULE_CRITERION VALUES('3','j1',2,'standard','mediatype',NULL)
  -INSERT INTO RULE_CRITERION VALUES('4','j1',3,'standard','language',NULL)
  -INSERT INTO RULE_CRITERION VALUES('5','j1',4,'standard','country',NULL)
  -INSERT INTO RULE_CRITERION VALUES('6','role-fallback',0,'request','name','default')
  -INSERT INTO RULE_CRITERION 
VALUES('7','role-fallback',1,'standard','role-based',NULL)
  -INSERT INTO RULE_CRITERION VALUES('8','role-fallback',2,'standard','mediatype',NULL)
  -INSERT INTO RULE_CRITERION VALUES('9','role-fallback',3,'standard','language',NULL)
  +INSERT INTO RULE_CRITERION 
VALUES('1','j1',0,'standard','desktop','default-desktop',0)
  +INSERT INTO RULE_CRITERION 
VALUES('10','role-fallback',3,'standard','mediatype',NULL,1)
  +INSERT INTO RULE_CRITERION 
VALUES('11','role-fallback',4,'standard','language',NULL,1)
  +INSERT INTO RULE_CRITERION 
VALUES('12','role-fallback',5,'standard','country',NULL,1)
  +INSERT INTO RULE_CRITERION VALUES('2','j1',1,'standard','page','default-page',0)
  +INSERT INTO RULE_CRITERION VALUES('3','j1',2,'standard','group.role.user',NULL,0)
  +INSERT INTO RULE_CRITERION VALUES('4','j1',3,'standard','mediatype',NULL,1)
  +INSERT INTO RULE_CRITERION VALUES('5','j1',4,'standard','language',NULL,1)
  +INSERT INTO RULE_CRITERION VALUES('6','j1',5,'standard','country',NULL,1)
  +INSERT INTO RULE_CRITERION 
VALUES('7','role-fallback',0,'standard','desktop','default-desktop',0)
  +INSERT INTO RULE_CRITERION 
VALUES('8','role-fallback',1,'standard','page','default-page',0)
  +INSERT INTO RULE_CRITERION VALUES('9','role-fallback',2,'standard','roles',NULL,2)
  +INSERT INTO PRINCIPAL_RULE_ASSOC VALUES('anon','j1')
  
  
  
  1.1                  
jakarta-jetspeed-2/portal/src/webapp/WEB-INF/pages/default-page.psml
  
  Index: default-page.psml
  ===================================================================
  <?xml version="1.0" encoding="UTF-8"?>
  <page id="p001">
    <defaults
       skin="light-blue"
       layout-decorator="clear"
       portlet-decorator="box-titled"
    />
    <title>My First PSML Page</title>
    <fragment id="f001" type="layout" name="TwoColumns">
      <fragment id="pe001" type="portlet" name="HelloPortlet">
        <property layout="TwoColumns" name="row" value="0" />
        <property layout="TwoColumns" name="column" value="0" />      
      </fragment>
      <fragment id="pe002" type="portlet" name="JMXPortlet">
        <property layout="TwoColumns" name="row" value="0" />
        <property layout="TwoColumns" name="column" value="1" />      
      </fragment>
      <fragment id="pe003" type="portlet" name="CustomerList">
        <property layout="TwoColumns" name="row" value="1" />
        <property layout="TwoColumns" name="column" value="0" />      
      </fragment>
      <fragment id="pe004" type="portlet" name="CustomerInfo">
        <property layout="TwoColumns" name="row" value="1" />
        <property layout="TwoColumns" name="column" value="1" />      
      </fragment>
    </fragment>
  </page>
  
  
  

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

Reply via email to