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/11/02 21:28:31 UTC
svn commit: r470507 - in /portals/jetspeed-2/trunk/components/profiler/src:
java/org/apache/jetspeed/profiler/impl/
java/org/apache/jetspeed/profiler/rules/impl/
test/org/apache/jetspeed/profiler/
Author: taylor
Date: Thu Nov 2 12:28:30 2006
New Revision: 470507
URL: http://svn.apache.org/viewvc?view=rev&rev=470507
Log:
http://issues.apache.org/jira/browse/JS2-461 - Serializer component
patch from Hajo Birthelmer (hajo@bluesunrise.com)
phase 1 of 2 patches
* extended profiler to support factories for OM objects (rules, criterion,locator)
* factory create OM objects via spring
* change constructor for profiler to use factories
* added tests for 3 new factory apis
(sorry for the extra noise, the files were reformatted)
Modified:
portals/jetspeed-2/trunk/components/profiler/src/java/org/apache/jetspeed/profiler/impl/JetspeedProfilerImpl.java
portals/jetspeed-2/trunk/components/profiler/src/java/org/apache/jetspeed/profiler/rules/impl/ProfileResolversImpl.java
portals/jetspeed-2/trunk/components/profiler/src/java/org/apache/jetspeed/profiler/rules/impl/RoleFallbackProfilingRule.java
portals/jetspeed-2/trunk/components/profiler/src/java/org/apache/jetspeed/profiler/rules/impl/StandardProfilingRule.java
portals/jetspeed-2/trunk/components/profiler/src/test/org/apache/jetspeed/profiler/TestProfiler.java
Modified: portals/jetspeed-2/trunk/components/profiler/src/java/org/apache/jetspeed/profiler/impl/JetspeedProfilerImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/profiler/src/java/org/apache/jetspeed/profiler/impl/JetspeedProfilerImpl.java?view=diff&rev=470507&r1=470506&r2=470507
==============================================================================
--- portals/jetspeed-2/trunk/components/profiler/src/java/org/apache/jetspeed/profiler/impl/JetspeedProfilerImpl.java (original)
+++ portals/jetspeed-2/trunk/components/profiler/src/java/org/apache/jetspeed/profiler/impl/JetspeedProfilerImpl.java Thu Nov 2 12:28:30 2006
@@ -1,17 +1,17 @@
/*
* 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
+ * 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
+ * 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.
+ * 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.impl;
@@ -34,6 +34,7 @@
import org.apache.jetspeed.profiler.rules.PrincipalRule;
import org.apache.jetspeed.profiler.rules.ProfileResolvers;
import org.apache.jetspeed.profiler.rules.ProfilingRule;
+import org.apache.jetspeed.profiler.rules.RuleCriterion;
import org.apache.jetspeed.profiler.rules.impl.AbstractProfilingRule;
import org.apache.jetspeed.profiler.rules.impl.PrincipalRuleImpl;
import org.apache.jetspeed.request.RequestContext;
@@ -42,6 +43,9 @@
import org.apache.jetspeed.security.impl.UserPrincipalImpl;
import org.apache.ojb.broker.query.Criteria;
import org.apache.ojb.broker.query.QueryFactory;
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.BeanFactory;
+import org.springframework.beans.factory.BeanFactoryAware;
/**
* JetspeedTransactionalProfiler
@@ -49,7 +53,8 @@
* @author <a href="mailto:taylor@apache.org">David Sean Taylor </a>
* @version $Id$
*/
-public class JetspeedProfilerImpl extends InitablePersistenceBrokerDaoSupport implements Profiler
+public class JetspeedProfilerImpl extends InitablePersistenceBrokerDaoSupport
+ implements Profiler, BeanFactoryAware
{
/** The default rule. */
public final static String DEFAULT_RULE = "j1";
@@ -63,11 +68,19 @@
public final static Principal DEFAULT_RULE_PRINCIPAL = new UserPrincipalImpl("*");
/** The default locator class implementation */
- private Class locatorClass = JetspeedProfileLocator.class;
+ private String locatorBean = "ProfileLocator";
/** The default principalRule association class implementation */
- private Class principalRuleClass = PrincipalRuleImpl.class;
-
+ private Class prRuleClass;
+
+ private String principalRuleBean = "PrincipalRule";
+
+ /** The base (abstract) profilingRule class implementation */
+ private String profilingRuleStandardBean = "StandardProfilingRule";
+
+ /** The base (abstract) profilingRule class implementation */
+ private String profilingRuleFallbackBean = "RoleFallbackProfilingRule";
+
/** The base (abstract) profilingRule class implementation */
private Class profilingRuleClass = AbstractProfilingRule.class;
@@ -79,67 +92,100 @@
private Map rulesPerPrincipal = Collections.synchronizedMap(new HashMap());
private ProfileResolvers resolvers;
-
- public JetspeedProfilerImpl(String repositoryPath, ProfileResolvers resolvers)
+
+ /** the default criterion bean name */
+ private String ruleCriterionBean = "RuleCriterion";
+
+ /**
+ * added support for bean factory to create profile rules
+ */
+ private BeanFactory beanFactory;
+
+ public JetspeedProfilerImpl(String repositoryPath,
+ ProfileResolvers resolvers)
{
super(repositoryPath);
this.resolvers = resolvers;
}
/**
- * Create a JetspeedProfiler with properties. Expected properties are: defaultRule = the default profiling rule
- * anonymousUser = the name of the anonymous user storeName = The name of the persistence store component to connect
- * to services.profiler.locator.impl = the pluggable Profile Locator impl services.profiler.principalRule.impl = the
- * pluggable Principal Rule impl services.profiler.profilingRule.impl = the pluggable Profiling Rule impl
+ * Create a JetspeedProfiler with properties. Expected properties are:
+ * defaultRule = the default profiling rule anonymousUser = the name of the
+ * anonymous user storeName = The name of the persistence store component to
+ * connect to services.profiler.locator.impl = the pluggable Profile Locator
+ * impl services.profiler.principalRule.impl = the pluggable Principal Rule
+ * impl services.profiler.profilingRule.impl = the pluggable Profiling Rule
+ * impl
*
* @param properties
* Properties for this component described above
* @throws ClassNotFoundException
- * if any the implementation classes defined within the <code>properties</code> argument could not be
- * found.
+ * if any the implementation classes defined within the
+ * <code>properties</code> argument could not be found.
*/
- public JetspeedProfilerImpl(String repositoryPath, String defaultRule, ProfileResolvers resolvers)
- throws ClassNotFoundException
+ public JetspeedProfilerImpl(String repositoryPath, String defaultRule,
+ ProfileResolvers resolvers) throws ClassNotFoundException
{
this(repositoryPath, resolvers);
this.defaultRule = defaultRule;
}
- public JetspeedProfilerImpl(String repositoryPath, String defaultRule, Properties properties, ProfileResolvers resolvers)
+ /**
+ * @deprecated As of release 2.1, property-based class references replaced
+ * by container managed bean factory
+ */
+ public JetspeedProfilerImpl(String repositoryPath, String defaultRule,
+ Properties properties, ProfileResolvers resolvers)
throws ClassNotFoundException
{
this(repositoryPath, defaultRule, resolvers);
initModelClasses(properties); // TODO: move this to
// start()
}
-
+
/**
- * @param defaultRule The default rule to set.
+ * support passing of rule creation classes
+ */
+ public JetspeedProfilerImpl(String repositoryPath, String defaultRule,
+ ProfileResolvers resolvers, Map ruleConstructors,
+ String ruleCriterionBean) throws ClassNotFoundException
+ {
+ this(repositoryPath, defaultRule, resolvers);
+ this.ruleCriterionBean = ruleCriterionBean;
+ initRuleClasses(ruleConstructors);
+ }
+
+ /**
+ * @param defaultRule
+ * The default rule to set.
*/
public void setDefaultRule(String defaultRule)
{
this.defaultRule = defaultRule;
}
- private void initModelClasses(Properties properties) throws ClassNotFoundException
+ /**
+ * @deprecated As of release 2.1, property-based class references replaced
+ * by container managed bean factory
+ */
+ private void initModelClasses(Properties properties)
+ throws ClassNotFoundException
{
- String modelName = "";
- if ((modelName = properties.getProperty("locator.impl")) != null)
- {
- locatorClass = Class.forName(modelName);
- }
- if ((modelName = properties.getProperty("principalRule.impl")) != null)
- {
- principalRuleClass = Class.forName(modelName);
- }
- if ((modelName = properties.getProperty("profilingRule.impl")) != null)
- {
- profilingRuleClass = Class.forName(modelName);
- }
+ /**
+ * String modelName = "";
+ *
+ * if ((modelName = properties.getProperty("locator.impl")) != null) { //
+ * locatorClassName = modelName; } if ((modelName =
+ * properties.getProperty("principalRule.impl")) != null) {
+ * principalRuleClass = Class.forName(modelName); } if ((modelName =
+ * properties.getProperty("profilingRule.impl")) != null) {
+ * profilingRuleClass = Class.forName(modelName); }
+ */
}
- public ProfileLocator getProfile(RequestContext context, String locatorName) throws ProfilerException
+ public ProfileLocator getProfile(RequestContext context, String locatorName)
+ throws ProfilerException
{
// get the principal representing the currently logged on user
Subject subject = context.getSubject();
@@ -151,7 +197,8 @@
}
// get the UserPrincipal, finding the first UserPrincipal, or
// find the first principal if no UserPrincipal isn't available
- Principal principal = SecurityHelper.getBestPrincipal(subject, UserPrincipal.class);
+ Principal principal = SecurityHelper.getBestPrincipal(subject,
+ UserPrincipal.class);
if (principal == null)
{
String msg = "Could not find a principle for subject in request pipeline";
@@ -163,13 +210,15 @@
ProfilingRule rule = getRuleForPrincipal(principal, locatorName);
if (null == rule)
{
- log.warn("Could not find profiling rule for principal: " + principal);
+ log.warn("Could not find profiling rule for principal: "
+ + principal);
rule = this.getDefaultRule();
}
if (null == rule)
{
- String msg = "Couldn't find any profiling rules including default rule for principal " + principal;
+ String msg = "Couldn't find any profiling rules including default rule for principal "
+ + principal;
log.error(msg);
throw new ProfilerException(msg);
}
@@ -177,13 +226,16 @@
return rule.apply(context, this);
}
- public ProfileLocator getDefaultProfile(RequestContext context, String locatorName) throws ProfilerException
+ public ProfileLocator getDefaultProfile(RequestContext context,
+ String locatorName) throws ProfilerException
{
- ProfilingRule rule = getRuleForPrincipal(DEFAULT_RULE_PRINCIPAL, locatorName);
+ ProfilingRule rule = getRuleForPrincipal(DEFAULT_RULE_PRINCIPAL,
+ locatorName);
if (null == rule)
{
- log.warn("Could not find profiling rule for principal: " + DEFAULT_RULE_PRINCIPAL);
+ log.warn("Could not find profiling rule for principal: "
+ + DEFAULT_RULE_PRINCIPAL);
rule = this.getDefaultRule();
}
@@ -204,7 +256,8 @@
* @see org.apache.jetspeed.profiler.Profiler#getProfile(org.apache.jetspeed.request.RequestContext,
* org.apache.jetspeed.profiler.rules.ProfilingRule)
*/
- public ProfileLocator getProfile(RequestContext context, ProfilingRule rule) throws ProfilerException
+ public ProfileLocator getProfile(RequestContext context, ProfilingRule rule)
+ throws ProfilerException
{
// create a profile locator for given rule
return rule.apply(context, this);
@@ -213,29 +266,11 @@
/*
* (non-Javadoc)
*
- * @see org.apache.jetspeed.profiler.Profiler#createLocator(org.apache.jetspeed.request.RequestContext)
- */
- public ProfileLocator createLocator(RequestContext context)
- {
- try
- {
- ProfileLocator locator = (ProfileLocator) locatorClass.newInstance();
- locator.init(this, context.getPath());
- return locator;
- }
- catch (Exception e)
- {
- log.error("Failed to create locator for " + locatorClass);
- }
- return null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.apache.jetspeed.profiler.Profiler#getRuleForPrincipal(java.security.Principal, java.lang.String)
+ * @see org.apache.jetspeed.profiler.Profiler#getRuleForPrincipal(java.security.Principal,
+ * java.lang.String)
*/
- public ProfilingRule getRuleForPrincipal(Principal principal, String locatorName)
+ public ProfilingRule getRuleForPrincipal(Principal principal,
+ String locatorName)
{
ProfilingRule rule = null;
// lookup the rule for the given principal in our user/rule table
@@ -256,9 +291,9 @@
pr.setLocatorName(locatorName);
pr.setPrincipalName(principal.getName());
pr.setProfilingRule(rule);
- principalRules.put(makePrincipalRuleKey(principal.getName(), locatorName), pr);
- }
- else
+ principalRules.put(makePrincipalRuleKey(principal.getName(),
+ locatorName), pr);
+ } else
{
// Get the associated rule
rule = pr.getProfilingRule();
@@ -267,20 +302,42 @@
return rule;
}
+ /**
+ * Internal method to ensure we have a valid principalRule class for queries
+ *
+ * @return the class object for the principalRule
+ */
+ private Class getPrincipalRuleClass()
+ {
+ if (this.prRuleClass == null)
+ {
+ try
+ {
+ PrincipalRule tempRule = createPrincipalRule();
+ this.prRuleClass = tempRule.getClass();
+ } catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+ return this.prRuleClass;
+ }
+
/*
* (non-Javadoc)
*
* @see org.apache.jetspeed.profiler.Profiler#setRuleForPrincipal(java.security.Principal,
* org.apache.jetspeed.profiler.rules.ProfilingRule, java.lang.String)
*/
- public void setRuleForPrincipal(Principal principal, ProfilingRule rule, String locatorName)
+ public void setRuleForPrincipal(Principal principal, ProfilingRule rule,
+ String locatorName)
{
Criteria c = new Criteria();
c.addEqualTo("principalName", principal.getName());
c.addEqualTo("locatorName", locatorName);
-
- PrincipalRule pr = (PrincipalRule) getPersistenceBrokerTemplate().getObjectByQuery(
- QueryFactory.newQuery(principalRuleClass, c));
+ PrincipalRule pr = (PrincipalRule) getPersistenceBrokerTemplate()
+ .getObjectByQuery(
+ QueryFactory.newQuery(getPrincipalRuleClass(), c));
if (pr == null)
{
@@ -289,10 +346,11 @@
pr.setLocatorName(locatorName);
pr.setProfilingRule(rule);
}
- rule.setResolvers(resolvers);
+ rule.setResolvers(resolvers);
pr.setProfilingRule(rule);
getPersistenceBrokerTemplate().store(pr);
- principalRules.put(makePrincipalRuleKey(principal.getName(), locatorName), pr);
+ principalRules.put(makePrincipalRuleKey(principal.getName(),
+ locatorName), pr);
this.rulesPerPrincipal.remove(principal.getName());
}
@@ -306,25 +364,24 @@
*
* @param principal
* The string representation of the principal name.
- * @return The found PrincipalRule associated with the principal key or null if not found.
+ * @return The found PrincipalRule associated with the principal key or null
+ * if not found.
*/
- private PrincipalRule lookupPrincipalRule(String principal, String locatorName)
+ private PrincipalRule lookupPrincipalRule(String principal,
+ String locatorName)
{
- PrincipalRule pr = (PrincipalRule) principalRules.get(makePrincipalRuleKey(principal, locatorName));
- if (pr != null)
- {
- return pr;
- }
+ PrincipalRule pr = (PrincipalRule) principalRules
+ .get(makePrincipalRuleKey(principal, locatorName));
+ if (pr != null) { return pr; }
Criteria c = new Criteria();
c.addEqualTo("principalName", principal);
c.addEqualTo("locatorName", locatorName);
pr = (PrincipalRule) getPersistenceBrokerTemplate().getObjectByQuery(
- QueryFactory.newQuery(principalRuleClass, c));
-
+ QueryFactory.newQuery(getPrincipalRuleClass(), c));
+
principalRules.put(makePrincipalRuleKey(principal, locatorName), pr);
- if (pr != null)
- pr.getProfilingRule().setResolvers(resolvers);
+ if (pr != null) pr.getProfilingRule().setResolvers(resolvers);
return pr;
}
@@ -350,7 +407,7 @@
Iterator r = rules.iterator();
while (r.hasNext())
{
- ProfilingRule rule = (ProfilingRule)r.next();
+ ProfilingRule rule = (ProfilingRule) r.next();
rule.setResolvers(resolvers);
}
return rules;
@@ -366,8 +423,8 @@
Criteria c = new Criteria();
c.addEqualTo("id", id);
- ProfilingRule rule = (ProfilingRule)getPersistenceBrokerTemplate().getObjectByQuery(
- QueryFactory.newQuery(profilingRuleClass, c));
+ ProfilingRule rule = (ProfilingRule) getPersistenceBrokerTemplate()
+ .getObjectByQuery(QueryFactory.newQuery(profilingRuleClass, c));
if (rule != null)
{
rule.setResolvers(resolvers);
@@ -385,13 +442,11 @@
Criteria c = new Criteria();
c.addEqualTo("principalName", principal.getName());
- Collection result = getPersistenceBrokerTemplate().getCollectionByQuery(
- QueryFactory.newQuery(principalRuleClass, c));
- if (result.size() == 0)
- {
- return new String[]
- {};
- }
+ Collection result = getPersistenceBrokerTemplate()
+ .getCollectionByQuery(
+ QueryFactory.newQuery(getPrincipalRuleClass(), c));
+ if (result.size() == 0) { return new String[]
+ {}; }
String[] names = new String[result.size()];
Iterator it = result.iterator();
int ix = 0;
@@ -412,20 +467,21 @@
*/
public Collection getRulesForPrincipal(Principal principal)
{
- Collection rules = (Collection) this.rulesPerPrincipal.get(principal.getName());
- if (rules != null)
- return rules;
+
+ Collection rules = (Collection) this.rulesPerPrincipal.get(principal
+ .getName());
+ if (rules != null) return rules;
Criteria c = new Criteria();
c.addEqualTo("principalName", principal.getName());
- rules = getPersistenceBrokerTemplate().getCollectionByQuery(QueryFactory.newQuery(principalRuleClass, c));
+ rules = getPersistenceBrokerTemplate().getCollectionByQuery(
+ QueryFactory.newQuery(getPrincipalRuleClass(), c));
Iterator r = rules.iterator();
while (r.hasNext())
{
- PrincipalRule pr = (PrincipalRule)r.next();
+ PrincipalRule pr = (PrincipalRule) r.next();
ProfilingRule rule = pr.getProfilingRule();
- if (rule != null)
- rule.setResolvers(resolvers);
- }
+ if (rule != null) rule.setResolvers(resolvers);
+ }
this.rulesPerPrincipal.put(principal.getName(), rules);
return rules;
}
@@ -436,7 +492,8 @@
* @see org.apache.jetspeed.profiler.Profiler#getProfileLocators(org.apache.jetspeed.request.RequestContext,
* java.security.Principal)
*/
- public Map getProfileLocators(RequestContext context, Principal principal) throws ProfilerException
+ public Map getProfileLocators(RequestContext context, Principal principal)
+ throws ProfilerException
{
Map locators = new HashMap();
Collection rules = getRulesForPrincipal(principal);
@@ -445,12 +502,14 @@
while (it.hasNext())
{
PrincipalRule pr = (PrincipalRule) it.next();
- locators.put(pr.getLocatorName(), getProfile(context, pr.getLocatorName()));
+ locators.put(pr.getLocatorName(), getProfile(context, pr
+ .getLocatorName()));
}
return locators;
}
- public Map getDefaultProfileLocators(RequestContext context) throws ProfilerException
+ public Map getDefaultProfileLocators(RequestContext context)
+ throws ProfilerException
{
Map locators = new HashMap();
@@ -460,7 +519,8 @@
while (it.hasNext())
{
PrincipalRule pr = (PrincipalRule) it.next();
- locators.put(pr.getLocatorName(), getDefaultProfile(context, pr.getLocatorName()));
+ locators.put(pr.getLocatorName(), getDefaultProfile(context, pr
+ .getLocatorName()));
}
return locators;
}
@@ -480,7 +540,8 @@
*
* @see org.apache.jetspeed.profiler.Profiler#deleteProfilingRule(org.apache.jetspeed.profiler.rules.ProfilingRule)
*/
- public void deleteProfilingRule(ProfilingRule rule) throws ProfilerException
+ public void deleteProfilingRule(ProfilingRule rule)
+ throws ProfilerException
{
getPersistenceBrokerTemplate().delete(rule);
}
@@ -500,9 +561,173 @@
*
* @see org.apache.jetspeed.profiler.Profiler#deletePrincipalRule(org.apache.jetspeed.profiler.rules.PrincipalRule)
*/
- public void deletePrincipalRule(PrincipalRule rule) throws ProfilerException
+ public void deletePrincipalRule(PrincipalRule rule)
+ throws ProfilerException
{
getPersistenceBrokerTemplate().delete(rule);
+ }
+
+ /*
+ * Method called automatically by Spring container upon initialization
+ *
+ * @param beanFactory automatically provided by framework @throws
+ * BeansException
+ */
+ public void setBeanFactory(BeanFactory beanFactory) throws BeansException
+ {
+ this.beanFactory = beanFactory;
+ }
+
+ /**
+ * added logic to get the settings for creating the various rule related
+ * instances
+ *
+ * @param classes
+ * @throws ClassNotFoundException
+ */
+ private void initRuleClasses(Map beans) throws ClassNotFoundException
+ {
+
+ String beanName = "";
+ try
+ {
+ if ((beanName = (String) beans.get("locator")) != null)
+ {
+ this.locatorBean = beanName;
+ }
+ } catch (Exception e)
+ {
+ String msg = "Exception in setting locatorbeanName : "
+ + e.getLocalizedMessage();
+ log.error(msg);
+ }
+ try
+ {
+ if ((beanName = (String) beans.get("principal")) != null)
+ {
+ this.principalRuleBean = beanName;
+ }
+ } catch (Exception e)
+ {
+ String msg = "Exception in setting principalRulebeanName : "
+ + e.getLocalizedMessage();
+ log.error(msg);
+ }
+ try
+ {
+ if ((beanName = (String) beans.get("standard")) != null)
+ {
+ this.profilingRuleStandardBean = beanName;
+ }
+ } catch (Exception e)
+ {
+ String msg = "Exception in setting profilingRuleStandardbeanName : "
+ + e.getLocalizedMessage();
+ log.error(msg);
+ }
+ try
+ {
+ if ((beanName = (String) beans.get("fallback")) != null)
+ {
+ this.profilingRuleFallbackBean = beanName;
+ }
+ } catch (Exception e)
+ {
+ String msg = "Exception in setting profilingRuleFallback : "
+ + e.getLocalizedMessage();
+ log.error(msg);
+ }
+
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.jetspeed.profiler.Profiler#createProfilingRule(boolean)
+ */
+ public ProfilingRule createProfilingRule(boolean standard)
+ throws ClassNotFoundException
+ {
+ try
+ {
+ if (standard)
+ return (ProfilingRule) beanFactory.getBean(
+ this.profilingRuleStandardBean, ProfilingRule.class);
+ else
+ return (ProfilingRule) beanFactory.getBean(
+ this.profilingRuleFallbackBean, ProfilingRule.class);
+
+ } catch (BeansException e)
+ {
+ throw new ClassNotFoundException("Spring failed to create the "
+ + (standard ? "standard" : "fallback")
+ + " profiling rule bean.", e);
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.jetspeed.profiler.Profiler#createLocator(RequestContext)
+ */
+ public ProfileLocator createLocator(RequestContext context)
+ {
+ try
+ {
+ ProfileLocator locator = (ProfileLocator) beanFactory.getBean(
+ this.locatorBean, ProfileLocator.class);
+ locator.init(this, context.getPath());
+ return locator;
+ } catch (Exception e)
+ {
+ log.error("Failed to create locator for " + this.locatorBean
+ + " error : " + e.getLocalizedMessage());
+ }
+ return null;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.jetspeed.profiler.Profiler#createPrincipalRule()
+ */
+ public PrincipalRule createPrincipalRule() throws ClassNotFoundException
+ {
+ try
+ {
+ PrincipalRule principalRule = (PrincipalRule) beanFactory.getBean(
+ this.principalRuleBean, PrincipalRule.class);
+ return principalRule;
+ } catch (Exception e)
+ {
+ log.error("Failed to create principalRule for " + principalRuleBean
+ + " error : " + e.getLocalizedMessage());
+ throw new ClassNotFoundException("Spring failed to create the "
+ + " principal rule bean.", e);
+ }
+
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.jetspeed.profiler.Profiler#createRuleCriterion()
+ */
+ public RuleCriterion createRuleCriterion() throws ClassNotFoundException
+ {
+ try
+ {
+ RuleCriterion ruleCriterion = (RuleCriterion) beanFactory.getBean(
+ this.ruleCriterionBean, RuleCriterion.class);
+ return ruleCriterion;
+ } catch (Exception e)
+ {
+ log.error("Failed to create principalRule for " + ruleCriterionBean
+ + " error : " + e.getLocalizedMessage());
+ throw new ClassNotFoundException("Spring failed to create the "
+ + " rule criterion bean.", e);
+ }
+
}
}
Modified: portals/jetspeed-2/trunk/components/profiler/src/java/org/apache/jetspeed/profiler/rules/impl/ProfileResolversImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/profiler/src/java/org/apache/jetspeed/profiler/rules/impl/ProfileResolversImpl.java?view=diff&rev=470507&r1=470506&r2=470507
==============================================================================
--- portals/jetspeed-2/trunk/components/profiler/src/java/org/apache/jetspeed/profiler/rules/impl/ProfileResolversImpl.java (original)
+++ portals/jetspeed-2/trunk/components/profiler/src/java/org/apache/jetspeed/profiler/rules/impl/ProfileResolversImpl.java Thu Nov 2 12:28:30 2006
@@ -39,4 +39,12 @@
{
return (RuleCriterionResolver)resolvers.get(resolverName);
}
+
+ /**
+ * return the map of resolver
+ */
+ public Map getResolvers()
+ {
+ return resolvers;
+ }
}
Modified: portals/jetspeed-2/trunk/components/profiler/src/java/org/apache/jetspeed/profiler/rules/impl/RoleFallbackProfilingRule.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/profiler/src/java/org/apache/jetspeed/profiler/rules/impl/RoleFallbackProfilingRule.java?view=diff&rev=470507&r1=470506&r2=470507
==============================================================================
--- portals/jetspeed-2/trunk/components/profiler/src/java/org/apache/jetspeed/profiler/rules/impl/RoleFallbackProfilingRule.java (original)
+++ portals/jetspeed-2/trunk/components/profiler/src/java/org/apache/jetspeed/profiler/rules/impl/RoleFallbackProfilingRule.java Thu Nov 2 12:28:30 2006
@@ -42,12 +42,15 @@
private final static long serialVersionUID = 1L;
public RoleFallbackProfilingRule()
- {
+ {
+ this.setClassname(this.getClass().getName());
+
}
public RoleFallbackProfilingRule(ProfileResolvers resolvers)
{
super(resolvers);
+ this.setClassname(this.getClass().getName());
}
Modified: portals/jetspeed-2/trunk/components/profiler/src/java/org/apache/jetspeed/profiler/rules/impl/StandardProfilingRule.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/profiler/src/java/org/apache/jetspeed/profiler/rules/impl/StandardProfilingRule.java?view=diff&rev=470507&r1=470506&r2=470507
==============================================================================
--- portals/jetspeed-2/trunk/components/profiler/src/java/org/apache/jetspeed/profiler/rules/impl/StandardProfilingRule.java (original)
+++ portals/jetspeed-2/trunk/components/profiler/src/java/org/apache/jetspeed/profiler/rules/impl/StandardProfilingRule.java Thu Nov 2 12:28:30 2006
@@ -43,11 +43,13 @@
public StandardProfilingRule()
{
+ this.setClassname(this.getClass().getName());
}
public StandardProfilingRule(ProfileResolvers resolvers)
{
super(resolvers);
+ this.setClassname(this.getClass().getName());
}
/* (non-Javadoc)
Modified: portals/jetspeed-2/trunk/components/profiler/src/test/org/apache/jetspeed/profiler/TestProfiler.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/profiler/src/test/org/apache/jetspeed/profiler/TestProfiler.java?view=diff&rev=470507&r1=470506&r2=470507
==============================================================================
--- 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 Thu Nov 2 12:28:30 2006
@@ -15,6 +15,7 @@
*/
package org.apache.jetspeed.profiler;
+import java.io.File;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
@@ -38,9 +39,9 @@
import org.apache.jetspeed.profiler.rules.impl.StandardProfilingRule;
import org.apache.jetspeed.request.RequestContext;
import org.apache.jetspeed.security.SecurityHelper;
+import org.apache.jetspeed.security.impl.PrincipalsSet;
import org.apache.jetspeed.security.impl.RolePrincipalImpl;
import org.apache.jetspeed.security.impl.UserPrincipalImpl;
-import org.apache.jetspeed.security.impl.PrincipalsSet;
/**
* TestProfiler
@@ -86,6 +87,7 @@
{ TestProfiler.class.getName() });
}
+
protected void setUp() throws Exception
{
super.setUp();
@@ -128,7 +130,17 @@
"rolecombo",
"path.session"
};
+
+
+ private static final String URCF_CRITERIA_TEST [] =
+ {
+ "user-test",
+ "navigation",
+ "role",
+ "path.session"
+ };
+
public void testUserRoleFallback()
throws Exception
{
@@ -267,7 +279,8 @@
}
else
{
- // assertTrue("Unknown rule encountered: " + rule.getId(), false);
+ // assertTrue("Unknown rule encountered: " + rule.getId(),
+ // false);
}
}
@@ -320,6 +333,8 @@
count++;
}
}
+
+
private void checkFallbackCriteria(ProfilingRule rule)
{
@@ -418,7 +433,7 @@
}
assertTrue("fallback count = 4, " + count, count == 4);
- // create a simple locator
+ // create a Simple locator
RequestContext request2 = new MockRequestContext("/test");
ProfileLocator locator2 = profiler.createLocator(request2);
locator2.add("page", "test");
@@ -524,4 +539,190 @@
return new String[]{"profiler.xml", "transaction.xml"};
}
+
+
+ protected RuleCriterion addRuleCriterion(ProfilingRule rule,
+ String criterionName, String criterionType, String criterionValue,int fallbackOrder, int fallbackType)
+ throws Exception
+ {
+ assertTrue("ProfilingRule is not null", (rule != null));
+
+
+ RuleCriterion c = profiler.createRuleCriterion();
+ assertTrue("RuleCriterion is not null", (c != null));
+ c.setFallbackOrder(fallbackOrder);
+ c.setFallbackType(fallbackType);
+ c.setName(criterionName);
+ c.setType(criterionType);
+ c.setValue(criterionValue);
+ c.setRuleId(rule.getId());
+ rule.getRuleCriteria().add(c);
+ return c;
+ }
+
+
+
+ private void createStandardCriteria(ProfilingRule rule) throws Exception
+ {
+ RuleCriterion criterion;
+ assertNotNull("ProfilingRule is null", rule);
+
+ for (int count = 0; count < 5; count++)
+ {
+ switch (count)
+ {
+ case 0:
+
+ criterion = this.addRuleCriterion(rule,ProfilingRule.STANDARD_PAGE, "type-" + count, DEFAULT_PAGE, count, RuleCriterion.FALLBACK_STOP);
+ assertTrue("criteria name " + criterion.getName(), criterion.getName().equals(
+ ProfilingRule.STANDARD_PAGE));
+ assertNotNull("criteria value", criterion.getValue());
+ assertTrue("criteria value", criterion.getValue().equals(DEFAULT_PAGE));
+ assertTrue("fallback type", criterion.getFallbackType() == RuleCriterion.FALLBACK_STOP);
+ break;
+ case 1:
+ criterion = this.addRuleCriterion(rule,ProfilingRule.STANDARD_USER, "type-" + count, null, count, RuleCriterion.FALLBACK_STOP);
+ assertTrue("criteria name", criterion.getName().equals(ProfilingRule.STANDARD_USER));
+ assertNull("criteria value", criterion.getValue());
+ assertTrue("fallback type", criterion.getFallbackType() == RuleCriterion.FALLBACK_STOP);
+ break;
+ case 2:
+ criterion = this.addRuleCriterion(rule,ProfilingRule.STANDARD_MEDIATYPE, "type-" + count, null, count, RuleCriterion.FALLBACK_CONTINUE);
+ assertTrue("criteria name", criterion.getName().equals(ProfilingRule.STANDARD_MEDIATYPE));
+ assertNull("criteria value", criterion.getValue());
+ assertTrue("fallback type", criterion.getFallbackType() == RuleCriterion.FALLBACK_CONTINUE);
+ break;
+ case 3:
+ criterion = this.addRuleCriterion(rule,ProfilingRule.STANDARD_LANGUAGE, "type-" + count, null, count, RuleCriterion.FALLBACK_CONTINUE);
+ assertTrue("criteria name", criterion.getName().equals(ProfilingRule.STANDARD_LANGUAGE));
+ assertNull("criteria value", criterion.getValue());
+ assertTrue("fallback type", criterion.getFallbackType() == RuleCriterion.FALLBACK_CONTINUE);
+ break;
+ case 4:
+ criterion = this.addRuleCriterion(rule,ProfilingRule.STANDARD_COUNTRY, "type-" + count, null, count, RuleCriterion.FALLBACK_CONTINUE);
+ assertTrue("criteria name", criterion.getName().equals(ProfilingRule.STANDARD_COUNTRY));
+ assertNull("criteria value", criterion.getValue());
+ assertTrue("fallback type", criterion.getFallbackType() == RuleCriterion.FALLBACK_CONTINUE);
+ break;
+ }
+
+ }
+ }
+
+
+
+
+ private void createFallbackCriteria(ProfilingRule rule) throws Exception
+ {
+ RuleCriterion criterion;
+ assertNotNull("ProfilingRule is null", rule);
+
+ for (int count = 0; count < 5; count++)
+ {
+
+ switch (count)
+ {
+ case 0:
+ criterion = this.addRuleCriterion(rule,ProfilingRule.STANDARD_ROLE, "type-" + count, null, count, RuleCriterion.FALLBACK_LOOP);
+ assertTrue("fallback criteria name", criterion.getName().equals(ProfilingRule.STANDARD_ROLE));
+ assertNull("fallback criteria value", criterion.getValue());
+ assertTrue("fallback type", criterion.getFallbackType() == RuleCriterion.FALLBACK_LOOP);
+ break;
+ case 1:
+ criterion = this.addRuleCriterion(rule,ProfilingRule.STANDARD_PAGE, "type-" + count, DEFAULT_PAGE, count, RuleCriterion.FALLBACK_STOP);
+ 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:
+ criterion = this.addRuleCriterion(rule,ProfilingRule.STANDARD_MEDIATYPE, "type-" + count, null, count, RuleCriterion.FALLBACK_CONTINUE);
+ 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 3:
+ criterion = this.addRuleCriterion(rule,ProfilingRule.STANDARD_LANGUAGE, "type-" + count, null, count, RuleCriterion.FALLBACK_CONTINUE);
+ 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 4:
+ criterion = this.addRuleCriterion(rule,ProfilingRule.STANDARD_COUNTRY, "type-" + count, null, count, RuleCriterion.FALLBACK_CONTINUE);
+ 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;
+ }
+ }
+ }
+
+ /**
+ * Tests
+ *
+ * @throws Exception
+ */
+ public void testNewRules() throws Exception
+ {
+ assertNotNull("profiler service is null", profiler);
+ String ruleId1 = "j1-test";
+ String ruleId2 = "j2-test";
+
+
+ // create org.apache.jetspeed.profiler.rules.impl.StandardProfilingRule
+ ProfilingRule rule = profiler.createProfilingRule(true);
+ assertNotNull("rule is null ", rule);
+ rule.setId(ruleId1);
+ rule.setTitle("Test Rule 1");
+ this.createStandardCriteria(rule);
+
+ profiler.storeProfilingRule(rule);
+ //Check
+ ProfilingRule rule2 = profiler.getRule(ruleId1);
+ assertNotNull("default rule couldnt be added", rule2);
+ assertTrue("default rule id bad", rule.getId().equals(rule2.getId()));
+
+ rule = profiler.createProfilingRule(false);
+ assertNotNull("rule is null ", rule);
+ rule.setId(ruleId2);
+ rule.setTitle("Test Rule 2");
+
+ this.createFallbackCriteria(rule);
+
+ profiler.storeProfilingRule(rule);
+ //Check
+ rule2 = profiler.getRule(ruleId2);
+ assertNotNull("fallback rule couldnt be added", rule2);
+ assertTrue("fallback rule id bad", rule.getId().equals(rule2.getId()));
+
+ // Test Retrieving All Rules
+ int standardCount = 0;
+ int fallbackCount = 0;
+ Iterator rules = profiler.getRules().iterator();
+ while (rules.hasNext())
+ {
+ rule = (ProfilingRule) rules.next();
+ if (rule.getId().equals(ruleId1))
+ {
+ assertTrue("standard rule class not mapped", rule instanceof StandardProfilingRule);
+ checkStandardCriteria(rule);
+ standardCount++;
+ }
+ else if (rule.getId().equals(ruleId2))
+ {
+ assertTrue("role fallback rule class not mapped", rule instanceof RoleFallbackProfilingRule);
+ checkFallbackCriteria(rule);
+ fallbackCount++;
+ }
+ else
+ {
+ // assertTrue("Unknown rule encountered: " + rule.getId(),
+ // false);
+ }
+
+ }
+ 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);
+ }
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org