taylor 2004/10/15 00:05:09
Modified: portal/src/java/org/apache/jetspeed/profiler/impl
ProfilerValveImpl.java
Log:
patch from Randy Watler
implementation of using a named profile locator specified in the docset metadata to
find 'docsets'
here we build the locator collections for finding pages and docsets and ...
Revision Changes Path
1.16 +29 -7
jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/profiler/impl/ProfilerValveImpl.java
Index: ProfilerValveImpl.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/profiler/impl/ProfilerValveImpl.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- ProfilerValveImpl.java 8 Oct 2004 06:49:37 -0000 1.15
+++ ProfilerValveImpl.java 15 Oct 2004 07:05:09 -0000 1.16
@@ -16,7 +16,11 @@
package org.apache.jetspeed.profiler.impl;
import java.io.IOException;
+import java.security.Principal;
+import java.util.HashMap;
+import java.util.Map;
+import javax.security.auth.Subject;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.logging.Log;
@@ -27,10 +31,14 @@
import org.apache.jetspeed.pipeline.valve.AbstractValve;
import org.apache.jetspeed.pipeline.valve.PageProfilerValve;
import org.apache.jetspeed.pipeline.valve.ValveContext;
+import org.apache.jetspeed.profiler.impl.JetspeedProfiledPageContext;
import org.apache.jetspeed.profiler.ProfileLocator;
import org.apache.jetspeed.profiler.ProfiledPageContext;
import org.apache.jetspeed.profiler.Profiler;
+import org.apache.jetspeed.profiler.ProfilerException;
import org.apache.jetspeed.request.RequestContext;
+import org.apache.jetspeed.security.SecurityHelper;
+import org.apache.jetspeed.security.UserPrincipal;
/**
* ProfilerValveImpl
@@ -63,16 +71,29 @@
{
try
{
- // perform profiling to get profiled page context using
- // the profiler and page manager
- ProfileLocator locator = profiler.getProfile(request,
ProfileLocator.PAGE_LOCATOR);
- ProfiledPageContext profiledPageContext =
pageManager.getProfiledPageContext(locator);
- if ((profiledPageContext == null) || (profiledPageContext.getPage() ==
null) || (profiledPageContext.getLocator() == null))
+ // get profiler locators for request subject/principal using the
profiler
+ Subject subject = request.getSubject();
+ if (subject == null)
+ throw new ProfilerException("Missing subject for request: " +
request.getPath());
+ Principal principal = SecurityHelper.getBestPrincipal(subject,
UserPrincipal.class);
+ if (principal == null)
+ throw new ProfilerException("Missing principal for request: " +
request.getPath());
+ String [] locatorNames =
profiler.getLocatorNamesForPrincipal(principal);
+ if ((locatorNames == null) || (locatorNames.length == 0))
+ locatorNames = new String[]{ProfileLocator.PAGE_LOCATOR};
+ Map locators = (Map) new HashMap(16);
+ for (int i = 0; (i < locatorNames.length); i++)
+ locators.put(locatorNames[i],
profiler.getProfile(request,locatorNames[i]));
+
+ // get profiled page context using the profiler and page manager
+ ProfiledPageContext profiledPageContext =
profiler.createProfiledPageContext(locators);
+ pageManager.computeProfiledPageContext(profiledPageContext);
+ if (profiledPageContext.getPage() == null)
throw new NodeNotFoundException("Unable to profile request: " +
request.getPath());
// set request page and profile locator
request.setPage(profiledPageContext.getPage());
- request.setProfileLocator(profiledPageContext.getLocator());
+ request.setProfileLocators(profiledPageContext.getLocators());
// return profiled page context in request attribute
HttpServletRequest httpRequest = request.getRequest();
@@ -95,6 +116,7 @@
}
catch (Exception e)
{
+ log.error("Exception in request pipeline: " + e.getMessage(), e);
throw new PipelineException(e.toString(), e);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]