選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

SomeEventsAspect.aj 1.3KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package test;
  2. import java.util.ArrayList;
  3. import java.util.Collection;
  4. /**
  5. * Events for test.Some.
  6. *
  7. * @author test.SimpleProcessor
  8. */
  9. @javax.annotation.Generated("test.SimpleProcessor")
  10. final aspect SomeEventsAspect {
  11. public static final class SomeOnMethod1Event {
  12. private Collection<SomeCallbacks.OnMethod1> callbacks = null;
  13. SomeOnMethod1Event() {
  14. }
  15. public void add(SomeCallbacks.OnMethod1 callback) {
  16. Collection<SomeCallbacks.OnMethod1> callbacksSafe = callbacks;
  17. if (callbacksSafe == null) {
  18. callbacksSafe = new ArrayList<>(1);
  19. callbacks = callbacksSafe;
  20. }
  21. callbacksSafe.add(callback);
  22. }
  23. public void clean() {
  24. callbacks = null;
  25. }
  26. }
  27. private static void emit(SomeOnMethod1Event event, Some emmiter) {
  28. final Collection<SomeCallbacks.OnMethod1> callbacksSafe = event.callbacks;
  29. if (callbacksSafe == null)
  30. return;
  31. for (final SomeCallbacks.OnMethod1 callback : new ArrayList<>(callbacksSafe))
  32. callback.changed(emmiter);
  33. }
  34. @SuppressWarnings("PublicField")
  35. public final SomeOnMethod1Event test.Some.OnMethod1Event = new SomeOnMethod1Event();
  36. before(): execution(void test.Some.method1()) {
  37. final test.Some emmiter = (test.Some) thisJoinPoint.getThis();
  38. emit(emmiter.OnMethod1Event, emmiter);
  39. }
  40. }