package com.getsentry.raven.event.helper; import com.getsentry.raven.Raven; import com.getsentry.raven.context.Context; import com.getsentry.raven.event.Breadcrumb; import com.getsentry.raven.event.EventBuilder; import com.getsentry.raven.event.User; import com.getsentry.raven.event.interfaces.UserInterface; import java.util.ArrayList; import java.util.Iterator; import java.util.List; /** * {@link EventBuilderHelper} that extracts and sends any data attached to the * provided {@link Raven}'s {@link Context}. */ public class ContextBuilderHelper implements EventBuilderHelper { /** * Raven object where the Context comes from. */ private Raven raven; /** * {@link EventBuilderHelper} that extracts context data from the provided {@link Raven} client. * * @param raven Raven client which holds Context to be used. */ public ContextBuilderHelper(Raven raven) { this.raven = raven; } @Override public void helpBuildingEvent(EventBuilder eventBuilder) { List<Breadcrumb> breadcrumbs = new ArrayList<>(); Context context = raven.getContext(); Iterator<Breadcrumb> breadcrumbIterator = context.getBreadcrumbs(); while (breadcrumbIterator.hasNext()) { breadcrumbs.add(breadcrumbIterator.next()); } if (!breadcrumbs.isEmpty()) { eventBuilder.withBreadcrumbs(breadcrumbs); } if (context.getUser() != null) { eventBuilder.withSentryInterface(fromUser(context.getUser())); } } /** * Builds a {@link UserInterface} object from a {@link User} object. * @param user User * @return UserInterface */ private UserInterface fromUser(User user) { return new UserInterface(user.getId(), user.getUsername(), user.getIpAddress(), user.getEmail()); } }