@Override
  public AnonymousUser getAnonymousUser(HttpServletRequest request, long userId)
      throws PortalException, SystemException {

    long companyId = PortalUtil.getCompanyId(request);

    ServiceContext serviceContext = new ServiceContext();

    serviceContext.setCompanyId(companyId);

    AnonymousUser anonymousUser = AnonymousUserLocalServiceUtil.fetchAnonymousUserByUserId(userId);

    if (anonymousUser == null) {
      anonymousUser = getAnonymousUserFromCookie(request);

      if ((anonymousUser == null)
          || ((anonymousUser.getUserId() != 0) && (anonymousUser.getUserId() != userId))) {

        anonymousUser =
            AnonymousUserLocalServiceUtil.addAnonymousUser(
                userId, request.getRemoteAddr(), null, serviceContext);
      } else {
        anonymousUser =
            AnonymousUserLocalServiceUtil.updateAnonymousUser(
                anonymousUser.getAnonymousUserId(),
                userId,
                request.getRemoteAddr(),
                anonymousUser.getTypeSettings(),
                serviceContext);
      }
    }

    return anonymousUser;
  }