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]