You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by ta...@apache.org on 2006/01/23 03:13:17 UTC
svn commit: r371439 - in /portals/jetspeed-2/trunk/components/profiler/src:
java/org/apache/jetspeed/profiler/rules/impl/
test/org/apache/jetspeed/profiler/
Author: taylor
Date: Sun Jan 22 18:13:12 2006
New Revision: 371439
URL: http://svn.apache.org/viewcvs?rev=371439&view=rev
Log:
New Criterion : Role combo resolver
Combines all roles into one rolename string
Example: roles = a,b,c
RoleCombo = a-b-c
Added:
portals/jetspeed-2/trunk/components/profiler/src/java/org/apache/jetspeed/profiler/rules/impl/RoleComboCriterionResolver.java
Modified:
portals/jetspeed-2/trunk/components/profiler/src/java/org/apache/jetspeed/profiler/rules/impl/StandardResolver.java
portals/jetspeed-2/trunk/components/profiler/src/test/org/apache/jetspeed/profiler/TestProfiler.java
Added: portals/jetspeed-2/trunk/components/profiler/src/java/org/apache/jetspeed/profiler/rules/impl/RoleComboCriterionResolver.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/profiler/src/java/org/apache/jetspeed/profiler/rules/impl/RoleComboCriterionResolver.java?rev=371439&view=auto
==============================================================================
--- portals/jetspeed-2/trunk/components/profiler/src/java/org/apache/jetspeed/profiler/rules/impl/RoleComboCriterionResolver.java (added)
+++ portals/jetspeed-2/trunk/components/profiler/src/java/org/apache/jetspeed/profiler/rules/impl/RoleComboCriterionResolver.java Sun Jan 22 18:13:12 2006
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2000-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jetspeed.profiler.rules.impl;
+
+import javax.security.auth.Subject;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.jetspeed.profiler.rules.RuleCriterion;
+import org.apache.jetspeed.profiler.rules.RuleCriterionResolver;
+import org.apache.jetspeed.request.RequestContext;
+import org.apache.jetspeed.security.RolePrincipal;
+
+/**
+ * Role combo resolver
+ * Combines all roles into one string
+ * Example: roles = a,b,c
+ * RoleCombo = a-b-c
+ *
+ * @author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
+ * @version $Id: RoleCriterionResolver.java 187756 2004-10-15 22:58:43Z ate $
+ */
+public class RoleComboCriterionResolver
+ extends StandardResolver
+ implements RuleCriterionResolver
+{
+ protected final static Log log = LogFactory.getLog(UserCriterionResolver.class);
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.profiler.rules.RuleCriterionResolver#resolve(org.apache.jetspeed.request.RequestContext, org.apache.jetspeed.profiler.rules.RuleCriterion)
+ */
+ public String resolve(RequestContext context, RuleCriterion criterion)
+ {
+ String value = super.resolve(context, criterion);
+ if (value != null)
+ {
+ return value;
+ }
+
+ Subject subject = context.getSubject();
+ if (subject == null)
+ {
+ String msg = "Invalid (null) Subject in request pipeline";
+ log.error(msg);
+ return null;
+ }
+
+ return combinePrincipals(context, criterion, subject, RolePrincipal.class);
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.profiler.rules.RuleCriterionResolver#isControl()
+ */
+ public boolean isControl(RuleCriterion criterion)
+ {
+ return true;
+ }
+
+
+}
Modified: portals/jetspeed-2/trunk/components/profiler/src/java/org/apache/jetspeed/profiler/rules/impl/StandardResolver.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/profiler/src/java/org/apache/jetspeed/profiler/rules/impl/StandardResolver.java?rev=371439&r1=371438&r2=371439&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/profiler/src/java/org/apache/jetspeed/profiler/rules/impl/StandardResolver.java (original)
+++ portals/jetspeed-2/trunk/components/profiler/src/java/org/apache/jetspeed/profiler/rules/impl/StandardResolver.java Sun Jan 22 18:13:12 2006
@@ -38,6 +38,7 @@
public class StandardResolver implements RuleCriterionResolver
{
public static final String VALUE_DELIMITER = ",";
+ public static final String COMBO_DELIMITER = "-";
/* (non-Javadoc)
* @see org.apache.jetspeed.profiler.rules.RuleCriterionResolver#resolve(org.apache.jetspeed.request.RequestContext, org.apache.jetspeed.profiler.rules.RuleCriterion)
@@ -89,7 +90,29 @@
{
return null;
}
- return result.toString();
-
+ return result.toString();
}
+
+ protected String combinePrincipals(RequestContext context, RuleCriterion criterion, Subject subject, Class classe)
+ {
+ StringBuffer result = new StringBuffer();
+ Iterator principals = SecurityHelper.getPrincipals(subject, classe).iterator();
+ int count = 0;
+ while (principals.hasNext())
+ {
+ Principal principal = (Principal)principals.next();
+ if (count > 0)
+ {
+ result.append(COMBO_DELIMITER);
+ }
+ result.append(principal.getName());
+ count++;
+ }
+ if (count == 0)
+ {
+ return null;
+ }
+ return result.toString();
+ }
+
}
Modified: portals/jetspeed-2/trunk/components/profiler/src/test/org/apache/jetspeed/profiler/TestProfiler.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/profiler/src/test/org/apache/jetspeed/profiler/TestProfiler.java?rev=371439&r1=371438&r2=371439&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/profiler/src/test/org/apache/jetspeed/profiler/TestProfiler.java (original)
+++ portals/jetspeed-2/trunk/components/profiler/src/test/org/apache/jetspeed/profiler/TestProfiler.java Sun Jan 22 18:13:12 2006
@@ -121,6 +121,14 @@
"path.session"
};
+ private static final String URCF_CRITERIA [] =
+ {
+ "user",
+ "navigation",
+ "rolecombo",
+ "path.session"
+ };
+
public void testUserRoleFallback()
throws Exception
{
@@ -151,6 +159,37 @@
System.out.println("COMPLETED: running test user role fallback.");
}
+
+ public void testUserRoleComboFallback()
+ throws Exception
+ {
+ assertNotNull("profiler service is null", profiler);
+ System.out.println("START: running test user rolecombo fallback...");
+
+ // make sure rule is set correctly
+ ProfilingRule rule = profiler.getRule("user-rolecombo-fallback");
+ assertNotNull("rule is null ", rule);
+ Iterator c = rule.getRuleCriteria().iterator();
+ int ix = 0;
+ while (c.hasNext())
+ {
+ RuleCriterion rc = (RuleCriterion)c.next();
+ assertTrue("criterion type check " + rc.getType(), rc.getType().equals(URCF_CRITERIA[ix]));
+ System.out.println(rc.getType());
+ ix++;
+ }
+
+ // test applying it
+ RequestContext context = new MockRequestContext();
+ Subject subject = createSubject2();
+ context.setPath("/homepage.psml");
+ context.setSubject(subject);
+ ProfileLocator locator = rule.apply(context, profiler);
+ System.out.println("locator = " + locator);
+ assertTrue("locator string " + locator.toString(), locator.toString().equals("/homepage.psml:user:david:navigation:/:role:ATP-NB:page:/homepage.psml"));
+
+ System.out.println("COMPLETED: running test user role fallback.");
+ }
protected Subject createSubject()
{
@@ -162,6 +201,19 @@
principals.add(new RolePrincipalImpl("ATP"));
principals.add(new RolePrincipalImpl("NB"));
principals.add(new RolePrincipalImpl("ATP-NB"));
+ Subject subject = new Subject(true, principals, publicCredentials, privateCredentials);
+ return subject;
+ }
+
+ protected Subject createSubject2()
+ {
+ Set principals = new PrincipalsSet();
+ Set publicCredentials = new HashSet();
+ Set privateCredentials = new HashSet();
+
+ principals.add(new UserPrincipalImpl("david"));
+ principals.add(new RolePrincipalImpl("ATP"));
+ principals.add(new RolePrincipalImpl("NB"));
Subject subject = new Subject(true, principals, publicCredentials, privateCredentials);
return subject;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org