Fixup checkstyle
[controller.git] / opendaylight / md-sal / cds-access-client / src / main / java / org / opendaylight / controller / cluster / access / client / AbstractClientActorBehavior.java
1 /*
2  * Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.controller.cluster.access.client;
9
10 import static java.util.Objects.requireNonNull;
11
12 import akka.actor.ActorRef;
13 import com.google.common.annotations.Beta;
14 import org.eclipse.jdt.annotation.NonNull;
15 import org.eclipse.jdt.annotation.Nullable;
16
17 /**
18  * Base behavior attached to {@link AbstractClientActor}.
19  *
20  * @param <C> Type of associated context
21  *
22  * @author Robert Varga
23  */
24 @Beta
25 public abstract class AbstractClientActorBehavior<C extends AbstractClientActorContext> implements AutoCloseable {
26     private final @NonNull C context;
27
28     AbstractClientActorBehavior(final @NonNull C context) {
29         // Hidden to prevent outside subclasses. Users instantiated this via ClientActorBehavior
30         this.context = requireNonNull(context);
31     }
32
33     /**
34      * Return an {@link AbstractClientActorContext} associated with this {@link AbstractClientActor}.
35      *
36      * @return A client actor context instance.
37      */
38     protected final @NonNull C context() {
39         return context;
40     }
41
42     /**
43      * Return the persistence identifier associated with this {@link AbstractClientActor}. This identifier should be
44      * used in logging to identify this actor.
45      *
46      * @return Persistence identifier
47      */
48     protected final @NonNull String persistenceId() {
49         return context.persistenceId();
50     }
51
52     /**
53      * Return an {@link ActorRef} of this ClientActor.
54      *
55      * @return Actor associated with this behavior
56      */
57     public final @NonNull ActorRef self() {
58         return context.self();
59     }
60
61     @Override
62     public void close() {
63     }
64
65     /**
66      * Implementation-internal method for handling an incoming command message.
67      *
68      * @param command Command message
69      * @return Behavior which should be used with the next message. Return null if this actor should shut down.
70      */
71     abstract @Nullable AbstractClientActorBehavior<?> onReceiveCommand(@NonNull Object command);
72
73     /**
74      * Implementation-internal method for handling an incoming recovery message coming from persistence.
75      *
76      * @param recover Recover message
77      * @return Behavior which should be used with the next message. Return null if this actor should shut down.
78      */
79     abstract @Nullable AbstractClientActorBehavior<?> onReceiveRecover(@NonNull Object recover);
80 }