package com.fernandocejas.frodo.annotation; import java.lang.annotation.Retention; import java.lang.annotation.Target; import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.RetentionPolicy.RUNTIME; /** * <br>Annotated methods which return rx.Observables will print the following information on * android logcat when emitting items. * A {@link Scope} option can be passed to choose different logging scopes.<br> * * <br>OUTPUT EXAMPLE:<br> * * <br>Frodo => [@Observable :: @InClass -> ObservableSample :: @Method -> names()] * <br>Frodo => [@Observable#names -> onSubscribe()] * <br>Frodo => [@Observable#names -> onNext() -> Fernando] * <br>Frodo => [@Observable#names -> onNext() -> Silvia] * <br>Frodo => [@Observable#names -> onCompleted()] * <br>Frodo => [@Observable#names -> onTerminate()] * <br>Frodo => [@Observable#names -> @Emitted -> 2 elements :: @Time -> 1 ms] * <br>Frodo => [@Observable#names -> @SubscribeOn -> RxNewThreadScheduler-8 :: @ObserveOn -> main] * <br>Frodo => [@Observable#names -> onUnsubscribe()]<br> * * @see <a href="https://github.com/android10/frodo/wiki">Frodo Documentation</a> */ @Retention(RUNTIME) @Target({ METHOD }) public @interface RxLogObservable { Scope value() default Scope.EVERYTHING; /** * Logging scope of the current annotated rx.Observable.<br> * * <li>{@link #EVERYTHING}: Logs stream data, schedulers and rx.Observable events. Default.</li> * <li>{@link #STREAM}: Logs rx.Observable emitted items plus total execution time.</li> * <li>{@link #SCHEDULERS}: Logs schedulers where the annotated rx.Observable operates on.</li> * <li>{@link #EVENTS}: Logs rx.Observable events only.</li> * <li>{@link #NOTHING}: Turns off logging for the annotated rx.Observable.</li> */ enum Scope { EVERYTHING, STREAM, SCHEDULERS, EVENTS, NOTHING } }