diff --git a/lib/shared/internal/src/main/java/com/launchdarkly/sdk/internal/events/AggregatedEventSummarizer.java b/lib/shared/internal/src/main/java/com/launchdarkly/sdk/internal/events/AggregatedEventSummarizer.java index ec81c25e..710c8937 100644 --- a/lib/shared/internal/src/main/java/com/launchdarkly/sdk/internal/events/AggregatedEventSummarizer.java +++ b/lib/shared/internal/src/main/java/com/launchdarkly/sdk/internal/events/AggregatedEventSummarizer.java @@ -16,10 +16,10 @@ * Note that the methods of this class are deliberately not thread-safe, because they should * always be called from EventProcessor's single message-processing thread. */ -final class AggregatedEventSummarizer implements EventSummarizerInterface { +public final class AggregatedEventSummarizer implements EventSummarizerInterface { private final EventSummarizer summarizer; - AggregatedEventSummarizer() { + public AggregatedEventSummarizer() { this.summarizer = new EventSummarizer(); } diff --git a/lib/shared/internal/src/main/java/com/launchdarkly/sdk/internal/events/EventOutputFormatter.java b/lib/shared/internal/src/main/java/com/launchdarkly/sdk/internal/events/EventOutputFormatter.java index 4f5cf5b3..6815812d 100644 --- a/lib/shared/internal/src/main/java/com/launchdarkly/sdk/internal/events/EventOutputFormatter.java +++ b/lib/shared/internal/src/main/java/com/launchdarkly/sdk/internal/events/EventOutputFormatter.java @@ -25,18 +25,28 @@ * handling of context data and private attribute redaction is implemented in EventContextFormatter * and tested in more detail in EventContextFormatterTest. */ -final class EventOutputFormatter { +public final class EventOutputFormatter { private final EventContextFormatter contextFormatter; private final boolean redactAnonymousAllEvents; - EventOutputFormatter(EventsConfiguration config) { + public EventOutputFormatter(EventsConfiguration config) { this.contextFormatter = new EventContextFormatter( config.allAttributesPrivate, config.privateAttributes.toArray(new AttributeRef[config.privateAttributes.size()])); this.redactAnonymousAllEvents = config.redactAnonymousAllEvents; } - int writeOutputEvents(Event[] events, List summaries, Writer writer) throws IOException { + /** + * Writes events and summaries as the JSON array that makes up a request body. + * + * @param events the individual events to write + * @param summaries the summaries to write; empty ones are skipped + * @param writer where to write the JSON + * @return how many output events were written, counting each summary as one + * @throws IOException if the writer failed + */ + public int writeOutputEvents(Event[] events, List summaries, Writer writer) + throws IOException { int count = 0; JsonWriter jsonWriter = new JsonWriter(writer); jsonWriter.beginArray(); diff --git a/lib/shared/internal/src/main/java/com/launchdarkly/sdk/internal/events/EventSummarizer.java b/lib/shared/internal/src/main/java/com/launchdarkly/sdk/internal/events/EventSummarizer.java index 3b942d7e..e4a87daf 100644 --- a/lib/shared/internal/src/main/java/com/launchdarkly/sdk/internal/events/EventSummarizer.java +++ b/lib/shared/internal/src/main/java/com/launchdarkly/sdk/internal/events/EventSummarizer.java @@ -14,7 +14,7 @@ * methods of this class are deliberately not thread-safe, because they should always * be called from EventProcessor's single message-processing thread. */ -final class EventSummarizer { +public final class EventSummarizer { private EventSummary eventsState; private final LDContext context; // nullable - only set for per-context summarization @@ -85,7 +85,10 @@ void clear() { eventsState = new EventSummary(context); } - static final class EventSummary { + /** + * A snapshot of the evaluations counted since the last reset. + */ + public static final class EventSummary { final Map counters; long startDate; long endDate; diff --git a/lib/shared/internal/src/main/java/com/launchdarkly/sdk/internal/events/EventSummarizerInterface.java b/lib/shared/internal/src/main/java/com/launchdarkly/sdk/internal/events/EventSummarizerInterface.java index 6dcffba1..87a352f0 100644 --- a/lib/shared/internal/src/main/java/com/launchdarkly/sdk/internal/events/EventSummarizerInterface.java +++ b/lib/shared/internal/src/main/java/com/launchdarkly/sdk/internal/events/EventSummarizerInterface.java @@ -13,7 +13,7 @@ * Note that implementations are deliberately not thread-safe, as they should always * be called from EventProcessor's single message-processing thread. */ -interface EventSummarizerInterface { +public interface EventSummarizerInterface { /** * Adds information about an evaluation to the summary. * diff --git a/lib/shared/internal/src/main/java/com/launchdarkly/sdk/internal/events/PerContextEventSummarizer.java b/lib/shared/internal/src/main/java/com/launchdarkly/sdk/internal/events/PerContextEventSummarizer.java index b96d9f90..d621378c 100644 --- a/lib/shared/internal/src/main/java/com/launchdarkly/sdk/internal/events/PerContextEventSummarizer.java +++ b/lib/shared/internal/src/main/java/com/launchdarkly/sdk/internal/events/PerContextEventSummarizer.java @@ -19,10 +19,10 @@ * Note that the methods of this class are deliberately not thread-safe, because they should * always be called from EventProcessor's single message-processing thread. */ -final class PerContextEventSummarizer implements EventSummarizerInterface { +public final class PerContextEventSummarizer implements EventSummarizerInterface { private final Map summarizersByContext; - PerContextEventSummarizer() { + public PerContextEventSummarizer() { this.summarizersByContext = new HashMap<>(); }