+public abstract class AbstractUntypedActor extends AbstractActor implements ExecuteInSelfActor {
+ // The member name should be lower case but it's referenced in many subclasses. Suppressing the CS warning for now.
+ @SuppressWarnings("checkstyle:MemberName")
+ @SuppressFBWarnings(value = "SLF4J_LOGGER_SHOULD_BE_PRIVATE", justification = "Class identity is required")
+ protected final Logger LOG = LoggerFactory.getLogger(getClass());
+
+ @SuppressFBWarnings(value = "MC_OVERRIDABLE_METHOD_CALL_IN_CONSTRUCTOR", justification = "Akka class design")
+ protected AbstractUntypedActor() {
+ LOG.debug("Actor created {}", getSelf());
+ getContext().system().actorSelection("user/termination-monitor").tell(new Monitor(getSelf()), getSelf());
+ }
+
+ @Override
+ public final void executeInSelf(@NonNull final Runnable runnable) {
+ final ExecuteInSelfMessage message = new ExecuteInSelfMessage(runnable);
+ self().tell(message, ActorRef.noSender());