Skip to content

ashdavies/auto

Repository files navigation

Auto

Build Status Coverage License

Auto: Decorator

core compiler

Usage

dependencies {
  compile 'io.ashdavies.auto:auto-decorator:{current-version}'
  annotationProcessor 'io.ashdavies.auto:auto-decorator-compiler:{current-version}'
}

Normal Usage

Generate decorated implementations for interfaces or abstract classes.

@AutoDecorator
interface Listener {

  void onError(Throwable throwable);
}
listener = new ListenerDecorator(decorated);

Inner Class Usage

If you annotate an inner class its name will be prefixed with the outer class.

class Presenter {

  @AutoDecorator
  interface Listener {

    void onError(Throwable throwable);
  }
}
listener = new Presenter$ListenerDecorator(decorated);

Iterable Usage

Optionally you can generate an implementation that accepts multiple decorated classes. This only works for methods without a return type since the correct return cannot be distinguished. Return types will be supported with the implementation of merge strategies.

@AutoDecorator(iterable = true)
interface Listener {

  void onError(Throwable throwable)
}
listener = new ListenerDecorator(first, second, third);

Auto: No-Op

core compiler

Usage

dependencies {
  compile 'io.ashdavies.auto:auto-no-op:{current-version}'
  annotationProcessor 'io.ashdavies.auto:auto-no-op-compiler:{current-version}'
}

Normal Usage

Generate non operational implementations for interfaces or abstract classes.

@AutoNoOp
interface Listener {

  void onError(Throwable throwable);
}
listener = new ListenerNoOp();

Instance Usage

Optionally, you can instruct the processor to generate a static instance for repeated usage.

@AutoNoOp(instance = true)
interface Listener {

  void onError(Throwable throwable);
}
listener = ListenerNoOp.instance();

Auto: Value

core

Deprecated
Please use JakeWharton/AutoValueAnnotations instead

Usage

dependencies {
  compile 'io.ashdavies.auto:auto-value:{current-version}'
}