Add ProviderContext.

Adds a ProviderContext type which is passed to LabelProvider#getLabels
and StructuredParameterProvider#getParameter and which carries some
information from ExtLogRecord that is not taken care of by Formatter.

ProviderContext is designed to be extended in the future.

Change-Id: Ib29b7032ae42e0f9e86c75b7404c25cd75b20011
diff --git a/core/src/main/java/eu/mulk/quarkus/googlecloud/jsonlogging/ProviderContext.java b/core/src/main/java/eu/mulk/quarkus/googlecloud/jsonlogging/ProviderContext.java
new file mode 100644
index 0000000..08b399a
--- /dev/null
+++ b/core/src/main/java/eu/mulk/quarkus/googlecloud/jsonlogging/ProviderContext.java
@@ -0,0 +1,38 @@
+// SPDX-FileCopyrightText: © 2022 Matthias Andreas Benkard <code@mail.matthias.benkard.de>
+//
+// SPDX-License-Identifier: LGPL-3.0-or-later
+
+package eu.mulk.quarkus.googlecloud.jsonlogging;
+
+import org.jboss.logmanager.ExtLogRecord;
+
+/**
+ * Contextual data available to {@link StructuredParameterProvider} and {@link LabelProvider}.
+ *
+ * <p>Provides access to information carried by the {@link ExtLogRecord} that is being formatted and
+ * that is not taken care of by {@link Formatter} by default.
+ */
+public interface ProviderContext {
+
+  /**
+   * The {@link ExtLogRecord#getLoggerName()} property of the log record that is being formatted.
+   *
+   * @return {@link ExtLogRecord#getLoggerName()}.
+   */
+  String loggerName();
+
+  /**
+   * The {@link ExtLogRecord#getSequenceNumber()} property of the log record that is being
+   * formatted.
+   *
+   * @return {@link ExtLogRecord#getSequenceNumber()}.
+   */
+  long sequenceNumber();
+
+  /**
+   * The {@link ExtLogRecord#getThreadName()} property of the log record that is being formatted.
+   *
+   * @return {@link ExtLogRecord#getThreadName()}.
+   */
+  String threadName();
+}