package com.example.puree.logs.plugins; import com.google.gson.JsonObject; import com.cookpad.puree.outputs.OutputConfiguration; import com.cookpad.puree.outputs.PureeOutput; import java.lang.ref.WeakReference; import javax.annotation.Nonnull; import javax.annotation.ParametersAreNonnullByDefault; @ParametersAreNonnullByDefault public class OutDisplay extends PureeOutput { public static final String TYPE = "display"; private static WeakReference<Callback> callbackRef = new WeakReference<>(null); public static void register(Callback callback) { callbackRef = new WeakReference<>(callback); } public static void unregister() { callbackRef.clear(); } @Override public String type() { return "display"; } @Nonnull @Override public OutputConfiguration configure(OutputConfiguration conf) { return conf; } @Override public void emit(JsonObject jsonLog) { Callback callback = callbackRef.get(); if (callback == null) { return; } callback.onEmit(jsonLog); } public interface Callback { void onEmit(JsonObject jsonLog); } }