Commit 61f5d800 authored by Brian Major's avatar Brian Major
Browse files

added profiling to augment user path

parent 9385e1e6
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -74,6 +74,7 @@ import ca.nrc.cadc.ac.server.web.users.UserActionFactory;
import ca.nrc.cadc.ac.server.web.users.UserLogInfo;
import ca.nrc.cadc.auth.AuthenticationUtil;
import ca.nrc.cadc.auth.ServletPrincipalExtractor;
import ca.nrc.cadc.profiler.Profiler;
import ca.nrc.cadc.util.StringUtil;
import org.apache.log4j.Logger;

@@ -96,6 +97,8 @@ public class UserServlet extends HttpServlet
    private static final long serialVersionUID = 5289130885807305288L;
    private static final Logger log = Logger.getLogger(UserServlet.class);

    private Profiler profiler = new Profiler(UserServlet.class);

    private String notAugmentedX500User;

    @Override
@@ -129,20 +132,24 @@ public class UserServlet extends HttpServlet
            AbstractUserAction action = factory.createAction(request);
            action.setAcceptedContentType(getAcceptedContentType(request));
            log.debug("content-type: " + getAcceptedContentType(request));
            profiler.checkpoint("created action");

            // Special case: if the calling subject has a servops X500Principal,
            // AND it is a GET request, do not augment the subject.
            Subject subject;
            if (action instanceof GetUserAction && isNotAugmentedSubject(request))
            {
                profiler.checkpoint("check not augmented user");
                subject = Subject.getSubject(AccessController.getContext());
                log.debug("subject not augmented: " + subject);
                action.setAugmentUser(true);
                profiler.checkpoint("set not augmented user");
            }
            else
            {
                subject = AuthenticationUtil.getSubject(request);
                log.debug("augmented subject: " + subject);
                profiler.checkpoint("augment subject");
            }
            logInfo.setSubject(subject);

@@ -175,6 +182,10 @@ public class UserServlet extends HttpServlet
                }
                throw e;
            }
            finally
            {
                profiler.checkpoint("Executed action");
            }
        }
        catch (IllegalArgumentException e)
        {
+12 −0
Original line number Diff line number Diff line
@@ -71,6 +71,8 @@ import ca.nrc.cadc.ac.PersonalDetails;
import ca.nrc.cadc.ac.User;
import ca.nrc.cadc.ac.UserNotFoundException;
import ca.nrc.cadc.ac.server.UserPersistence;
import ca.nrc.cadc.profiler.Profiler;

import org.apache.log4j.Logger;

import javax.security.auth.Subject;
@@ -83,6 +85,8 @@ public class GetUserAction extends AbstractUserAction
{
    private static final Logger log = Logger.getLogger(GetUserAction.class);

    private Profiler profiler = new Profiler(GetUserAction.class);

    private final Principal userID;
    private final String detail;

@@ -96,7 +100,9 @@ public class GetUserAction extends AbstractUserAction
	public void doAction() throws Exception
    {
        User<Principal> user = getUser(this.userID);
        profiler.checkpoint("getUser");
        writeUser(user);
        profiler.checkpoint("writeUser");
    }

    protected User<Principal> getUser(Principal principal) throws Exception
@@ -113,6 +119,7 @@ public class GetUserAction extends AbstractUserAction
        {
            log.debug("getting augmented user " + principal.getName());
            user = userPersistence.getAugmentedUser(principal);
            profiler.checkpoint("getAugmentedUser");
        }

        /**
@@ -129,6 +136,7 @@ public class GetUserAction extends AbstractUserAction
            Subject subject = Subject.getSubject(AccessController.getContext());
            user = new User<Principal>(principal);
            user.getIdentities().addAll(subject.getPrincipals());
            profiler.checkpoint("added identities");
        }
        else
        {
@@ -136,10 +144,12 @@ public class GetUserAction extends AbstractUserAction
            try
            {
                user = userPersistence.getUser(principal);
                profiler.checkpoint("getUser");
            }
            catch (UserNotFoundException e)
            {
                user = userPersistence.getPendingUser(principal);
                profiler.checkpoint("getPendingUser");
            }

            // Only return user profile info, first and last name.
@@ -155,6 +165,7 @@ public class GetUserAction extends AbstractUserAction
                PersonalDetails pd = details.iterator().next();
                user.details.clear();
                user.details.add(new PersonalDetails(pd.getFirstName(), pd.getLastName()));
                profiler.checkpoint("addUserDetails");
            }
        }

@@ -176,6 +187,7 @@ public class GetUserAction extends AbstractUserAction
        		}
        	}
        }
        profiler.checkpoint("isSubjectUser");
        return isSubjectUser;
    }
}
+4 −0
Original line number Diff line number Diff line
@@ -94,6 +94,8 @@ public class AuthenticatorImpl implements Authenticator
{
    private static final Logger log = Logger.getLogger(AuthenticatorImpl.class);

    private Profiler profiler = new Profiler(AuthenticatorImpl.class);

    public AuthenticatorImpl() { }

    /**
@@ -124,6 +126,7 @@ public class AuthenticatorImpl implements Authenticator
                subject = AuthenticationUtil.getAnonSubject();
            }
        }
        profiler.checkpoint("getSubject");

        return subject;
    }
@@ -143,6 +146,7 @@ public class AuthenticatorImpl implements Authenticator
                log.debug("Null identities after augment");
            }
            subject.getPrincipals().addAll(user.getIdentities());
            profiler.checkpoint("augmentSubject");
        }
        catch (UserNotFoundException e)
        {