import org.opendaylight.mdsal.eos.binding.api.EntityOwnershipListener;
import org.opendaylight.mdsal.eos.common.api.CandidateAlreadyRegisteredException;
import org.opendaylight.mdsal.eos.common.api.EntityOwnershipChange;
-import org.opendaylight.mdsal.eos.common.api.EntityOwnershipChangeState;
import org.opendaylight.mdsal.eos.common.api.EntityOwnershipState;
+import org.opendaylight.mdsal.eos.common.api.EntityOwnershipStateChange;
import org.opendaylight.mdsal.eos.dom.api.DOMEntity;
import org.opendaylight.mdsal.eos.dom.api.DOMEntityOwnershipListener;
import org.opendaylight.mdsal.eos.dom.api.DOMEntityOwnershipService;
verify(mockDOMService).registerListener(eq(DOM_ENTITY.getType()), domListenerCaptor.capture());
final var domOwnershipChange = new EntityOwnershipChange<>(DOM_ENTITY,
- EntityOwnershipChangeState.LOCAL_OWNERSHIP_GRANTED, true);
+ EntityOwnershipStateChange.LOCAL_OWNERSHIP_GRANTED, true);
domListenerCaptor.getValue().ownershipChanged(domOwnershipChange);
final var ownershipChangeCaptor = ArgumentCaptor.forClass(EntityOwnershipChange.class);
final var change = ownershipChangeCaptor.getValue();
assertEquals("getEntity", BINDING_ENTITY, change.getEntity());
- assertEquals("getState", EntityOwnershipChangeState.LOCAL_OWNERSHIP_GRANTED, change.getState());
+ assertEquals("getState", EntityOwnershipStateChange.LOCAL_OWNERSHIP_GRANTED, change.getState());
}
verify(mockDOMReg).close();
}
final var domEntityOwnershipListenerAdapter = new DOMEntityOwnershipListenerAdapter(listener,
new ConstantAdapterContext(mockCodecRegistry));
final var domOwnershipChange = new EntityOwnershipChange<>(DOM_ENTITY,
- EntityOwnershipChangeState.LOCAL_OWNERSHIP_GRANTED);
+ EntityOwnershipStateChange.LOCAL_OWNERSHIP_GRANTED);
domEntityOwnershipListenerAdapter.ownershipChanged(domOwnershipChange);
}
*/
public final class EntityOwnershipChange<E extends GenericEntity<?>> {
private final @NonNull E entity;
- private final @NonNull EntityOwnershipChangeState state;
+ private final @NonNull EntityOwnershipStateChange state;
private final boolean inJeopardy;
- public EntityOwnershipChange(final @NonNull E entity, final @NonNull EntityOwnershipChangeState state) {
+ public EntityOwnershipChange(final @NonNull E entity, final @NonNull EntityOwnershipStateChange state) {
this(entity, state, false);
}
- public EntityOwnershipChange(final @NonNull E entity, final @NonNull EntityOwnershipChangeState state,
+ public EntityOwnershipChange(final @NonNull E entity, final @NonNull EntityOwnershipStateChange state,
final boolean inJeopardy) {
this.entity = requireNonNull(entity, "entity can't be null");
this.state = requireNonNull(state, "state can't be null");
/**
* Returns the ownership change state.
- * @return an EntityOwnershipChangeState enum
+ * @return an EntityOwnershipStateChange enum
*/
- public @NonNull EntityOwnershipChangeState getState() {
+ public @NonNull EntityOwnershipStateChange getState() {
return state;
}
*
* @author Thomas Pantelis
*/
-public enum EntityOwnershipChangeState {
+public enum EntityOwnershipStateChange {
/**
* The local process instance has been granted ownership.
*/
*/
REMOTE_OWNERSHIP_LOST_NO_OWNER(false, false, false);
- private static final ImmutableMap<Key, EntityOwnershipChangeState> BY_KEY;
+ private static final ImmutableMap<Key, EntityOwnershipStateChange> BY_KEY;
static {
- final var builder = ImmutableMap.<Key, EntityOwnershipChangeState>builder();
+ final var builder = ImmutableMap.<Key, EntityOwnershipStateChange>builder();
for (var e : values()) {
builder.put(new Key(e.wasOwner, e.isOwner, e.hasOwner), e);
}
private final boolean isOwner;
private final boolean hasOwner;
- EntityOwnershipChangeState(final boolean wasOwner, final boolean isOwner, final boolean hasOwner) {
+ EntityOwnershipStateChange(final boolean wasOwner, final boolean isOwner, final boolean hasOwner) {
this.wasOwner = wasOwner;
this.isOwner = isOwner;
this.hasOwner = hasOwner;
return name() + " [wasOwner=" + wasOwner + ", isOwner=" + isOwner + ", hasOwner=" + hasOwner + "]";
}
- public static @NonNull EntityOwnershipChangeState from(final boolean wasOwner, final boolean isOwner,
+ public static @NonNull EntityOwnershipStateChange from(final boolean wasOwner, final boolean isOwner,
final boolean hasOwner) {
final var state = BY_KEY.get(new Key(wasOwner, isOwner, hasOwner));
if (state != null) {
import org.junit.Test;
/**
- * Unit tests for EntityOwnershipChangeState.
+ * Unit tests for EntityOwnershipStateChange.
*
* @author Thomas Pantelis
*/
-public class EntityOwnershipChangeStateTest {
+public class EntityOwnershipStateChangeTest {
@Test
public void testFromWithValid() {
- assertEquals("from(false, true, true)", EntityOwnershipChangeState.LOCAL_OWNERSHIP_GRANTED,
- EntityOwnershipChangeState.from(false, true, true));
- assertEquals("from(true, false, true)", EntityOwnershipChangeState.LOCAL_OWNERSHIP_LOST_NEW_OWNER,
- EntityOwnershipChangeState.from(true, false, true));
- assertEquals("from(true, false, false)", EntityOwnershipChangeState.LOCAL_OWNERSHIP_LOST_NO_OWNER,
- EntityOwnershipChangeState.from(true, false, false));
- assertEquals("from(false, false, true)", EntityOwnershipChangeState.REMOTE_OWNERSHIP_CHANGED,
- EntityOwnershipChangeState.from(false, false, true));
- assertEquals("from(false, false, false)", EntityOwnershipChangeState.REMOTE_OWNERSHIP_LOST_NO_OWNER,
- EntityOwnershipChangeState.from(false, false, false));
- assertEquals("from(true, true, true)", EntityOwnershipChangeState.LOCAL_OWNERSHIP_RETAINED_WITH_NO_CHANGE,
- EntityOwnershipChangeState.from(true, true, true));
+ assertEquals("from(false, true, true)", EntityOwnershipStateChange.LOCAL_OWNERSHIP_GRANTED,
+ EntityOwnershipStateChange.from(false, true, true));
+ assertEquals("from(true, false, true)", EntityOwnershipStateChange.LOCAL_OWNERSHIP_LOST_NEW_OWNER,
+ EntityOwnershipStateChange.from(true, false, true));
+ assertEquals("from(true, false, false)", EntityOwnershipStateChange.LOCAL_OWNERSHIP_LOST_NO_OWNER,
+ EntityOwnershipStateChange.from(true, false, false));
+ assertEquals("from(false, false, true)", EntityOwnershipStateChange.REMOTE_OWNERSHIP_CHANGED,
+ EntityOwnershipStateChange.from(false, false, true));
+ assertEquals("from(false, false, false)", EntityOwnershipStateChange.REMOTE_OWNERSHIP_LOST_NO_OWNER,
+ EntityOwnershipStateChange.from(false, false, false));
+ assertEquals("from(true, true, true)", EntityOwnershipStateChange.LOCAL_OWNERSHIP_RETAINED_WITH_NO_CHANGE,
+ EntityOwnershipStateChange.from(true, true, true));
}
@Test
public void testFromWithInvalidFalseTrueFalse() {
- assertThrows(IllegalArgumentException.class, () -> EntityOwnershipChangeState.from(false, true, false));
+ assertThrows(IllegalArgumentException.class, () -> EntityOwnershipStateChange.from(false, true, false));
}
@Test
public void testFromWithInvalidTrueTrueFalse() {
- assertThrows(IllegalArgumentException.class, () -> EntityOwnershipChangeState.from(true, true, false));
+ assertThrows(IllegalArgumentException.class, () -> EntityOwnershipStateChange.from(true, true, false));
}
@Test
public void basicTest() {
- final var entityOwnershipChangeState = EntityOwnershipChangeState.from(false, true, true);
+ final var entityOwnershipChangeState = EntityOwnershipStateChange.from(false, true, true);
assertTrue(entityOwnershipChangeState.hasOwner());
assertTrue(entityOwnershipChangeState.isOwner());
assertFalse(entityOwnershipChangeState.wasOwner());
void basicTest() {
doReturn("testEntity").when(genericEntity).toString();
final var genericEntityOwnershipChange = new EntityOwnershipChange<>(genericEntity,
- EntityOwnershipChangeState.LOCAL_OWNERSHIP_GRANTED);
+ EntityOwnershipStateChange.LOCAL_OWNERSHIP_GRANTED);
assertEquals(genericEntity, genericEntityOwnershipChange.getEntity());
- assertEquals(EntityOwnershipChangeState.LOCAL_OWNERSHIP_GRANTED, genericEntityOwnershipChange.getState());
+ assertEquals(EntityOwnershipStateChange.LOCAL_OWNERSHIP_GRANTED, genericEntityOwnershipChange.getState());
assertFalse(genericEntityOwnershipChange.inJeopardy());
assertTrue(genericEntityOwnershipChange.toString().contains("testEntity"));
}
import org.junit.Test;
import org.opendaylight.mdsal.eos.common.api.EntityOwnershipChange;
-import org.opendaylight.mdsal.eos.common.api.EntityOwnershipChangeState;
+import org.opendaylight.mdsal.eos.common.api.EntityOwnershipStateChange;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
@Test
public void createTest() {
- assertNotNull(new EntityOwnershipChange<>(ENTITY, EntityOwnershipChangeState.LOCAL_OWNERSHIP_GRANTED));
- assertNotNull(new EntityOwnershipChange<>(ENTITY, EntityOwnershipChangeState.LOCAL_OWNERSHIP_GRANTED, false));
+ assertNotNull(new EntityOwnershipChange<>(ENTITY, EntityOwnershipStateChange.LOCAL_OWNERSHIP_GRANTED));
+ assertNotNull(new EntityOwnershipChange<>(ENTITY, EntityOwnershipStateChange.LOCAL_OWNERSHIP_GRANTED, false));
}
}
\ No newline at end of file
package org.opendaylight.mdsal.eos.dom.simple;
import static java.util.Objects.requireNonNull;
-import static org.opendaylight.mdsal.eos.common.api.EntityOwnershipChangeState.LOCAL_OWNERSHIP_GRANTED;
-import static org.opendaylight.mdsal.eos.common.api.EntityOwnershipChangeState.LOCAL_OWNERSHIP_LOST_NO_OWNER;
+import static org.opendaylight.mdsal.eos.common.api.EntityOwnershipStateChange.LOCAL_OWNERSHIP_GRANTED;
+import static org.opendaylight.mdsal.eos.common.api.EntityOwnershipStateChange.LOCAL_OWNERSHIP_LOST_NO_OWNER;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.MoreObjects;
import org.kohsuke.MetaInfServices;
import org.opendaylight.mdsal.eos.common.api.CandidateAlreadyRegisteredException;
import org.opendaylight.mdsal.eos.common.api.EntityOwnershipChange;
-import org.opendaylight.mdsal.eos.common.api.EntityOwnershipChangeState;
import org.opendaylight.mdsal.eos.common.api.EntityOwnershipState;
+import org.opendaylight.mdsal.eos.common.api.EntityOwnershipStateChange;
import org.opendaylight.mdsal.eos.dom.api.DOMEntity;
import org.opendaylight.mdsal.eos.dom.api.DOMEntityOwnershipListener;
import org.opendaylight.mdsal.eos.dom.api.DOMEntityOwnershipService;
}
}
- private void notifyListeners(final DOMEntity entity, final EntityOwnershipChangeState state) {
+ private void notifyListeners(final DOMEntity entity, final EntityOwnershipStateChange state) {
final Collection<DOMEntityOwnershipListener> snap;
import org.mockito.junit.jupiter.MockitoExtension;
import org.opendaylight.mdsal.eos.common.api.CandidateAlreadyRegisteredException;
import org.opendaylight.mdsal.eos.common.api.EntityOwnershipChange;
-import org.opendaylight.mdsal.eos.common.api.EntityOwnershipChangeState;
import org.opendaylight.mdsal.eos.common.api.EntityOwnershipState;
+import org.opendaylight.mdsal.eos.common.api.EntityOwnershipStateChange;
import org.opendaylight.mdsal.eos.dom.api.DOMEntity;
import org.opendaylight.mdsal.eos.dom.api.DOMEntityOwnershipListener;
import org.opendaylight.mdsal.eos.dom.api.DOMEntityOwnershipService;
var fooChange = fooCaptor.getValue();
assertEquals(FOO_FOO_ENTITY, fooChange.getEntity());
- assertEquals(EntityOwnershipChangeState.LOCAL_OWNERSHIP_GRANTED, fooChange.getState());
+ assertEquals(EntityOwnershipStateChange.LOCAL_OWNERSHIP_GRANTED, fooChange.getState());
reset(fooListener);
doNothing().when(fooListener).ownershipChanged(any(EntityOwnershipChange.class));
verify(fooListener).ownershipChanged(fooCaptor.capture());
fooChange = fooCaptor.getValue();
assertEquals(FOO_FOO_ENTITY, fooChange.getEntity());
- assertEquals(EntityOwnershipChangeState.LOCAL_OWNERSHIP_LOST_NO_OWNER, fooChange.getState());
+ assertEquals(EntityOwnershipStateChange.LOCAL_OWNERSHIP_LOST_NO_OWNER, fooChange.getState());
}
}
}
import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.mdsal.eos.common.api.CandidateAlreadyRegisteredException;
import org.opendaylight.mdsal.eos.common.api.EntityOwnershipChange;
-import org.opendaylight.mdsal.eos.common.api.EntityOwnershipChangeState;
+import org.opendaylight.mdsal.eos.common.api.EntityOwnershipStateChange;
import org.opendaylight.mdsal.eos.common.api.GenericEntity;
import org.opendaylight.mdsal.eos.common.api.GenericEntityOwnershipListener;
import org.opendaylight.mdsal.eos.common.api.GenericEntityOwnershipService;
}
@Holding("this")
- private void cleanupCandidateOwnershipChanged(final EntityOwnershipChangeState state, final boolean jeopardy) {
+ private void cleanupCandidateOwnershipChanged(final EntityOwnershipStateChange state, final boolean jeopardy) {
if (jeopardy) {
cleanupEntityState = switch (state) {
case LOCAL_OWNERSHIP_GRANTED, LOCAL_OWNERSHIP_RETAINED_WITH_NO_CHANGE -> {
}
@Holding("this")
- private void serviceOwnershipChanged(final EntityOwnershipChangeState state, final boolean jeopardy) {
+ private void serviceOwnershipChanged(final EntityOwnershipStateChange state, final boolean jeopardy) {
if (jeopardy) {
LOG.info("Service group {} service entity ownership uncertain", identifier);
serviceEntityState = switch (state) {
import org.mockito.Mock;
import org.opendaylight.mdsal.eos.common.api.CandidateAlreadyRegisteredException;
import org.opendaylight.mdsal.eos.common.api.EntityOwnershipChange;
-import org.opendaylight.mdsal.eos.common.api.EntityOwnershipChangeState;
+import org.opendaylight.mdsal.eos.common.api.EntityOwnershipStateChange;
import org.opendaylight.mdsal.eos.dom.api.DOMEntity;
import org.opendaylight.mdsal.eos.dom.api.DOMEntityOwnershipService;
import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonService;
}
static final EntityOwnershipChange<DOMEntity> getEntityToMaster() {
- return new EntityOwnershipChange(ENTITY, EntityOwnershipChangeState.LOCAL_OWNERSHIP_GRANTED);
+ return new EntityOwnershipChange(ENTITY, EntityOwnershipStateChange.LOCAL_OWNERSHIP_GRANTED);
}
static final EntityOwnershipChange<DOMEntity> getEntityToSlave() {
- return new EntityOwnershipChange(ENTITY, EntityOwnershipChangeState.LOCAL_OWNERSHIP_LOST_NEW_OWNER);
+ return new EntityOwnershipChange(ENTITY, EntityOwnershipStateChange.LOCAL_OWNERSHIP_LOST_NEW_OWNER);
}
static final EntityOwnershipChange<DOMEntity> getInitEntityToSlave() {
- return new EntityOwnershipChange(ENTITY, EntityOwnershipChangeState.REMOTE_OWNERSHIP_CHANGED);
+ return new EntityOwnershipChange(ENTITY, EntityOwnershipStateChange.REMOTE_OWNERSHIP_CHANGED);
}
static final EntityOwnershipChange<DOMEntity> getInitEntityToSlaveNoMaster() {
- return new EntityOwnershipChange<>(ENTITY, EntityOwnershipChangeState.REMOTE_OWNERSHIP_LOST_NO_OWNER);
+ return new EntityOwnershipChange<>(ENTITY, EntityOwnershipStateChange.REMOTE_OWNERSHIP_LOST_NO_OWNER);
}
static final EntityOwnershipChange<DOMEntity> getEntityToJeopardy() {
- return new EntityOwnershipChange<>(ENTITY, EntityOwnershipChangeState.REMOTE_OWNERSHIP_LOST_NO_OWNER, true);
+ return new EntityOwnershipChange<>(ENTITY, EntityOwnershipStateChange.REMOTE_OWNERSHIP_LOST_NO_OWNER, true);
}
static final EntityOwnershipChange<DOMEntity> getEntityMasterJeopardy() {
- return new EntityOwnershipChange<>(ENTITY, EntityOwnershipChangeState.LOCAL_OWNERSHIP_RETAINED_WITH_NO_CHANGE,
+ return new EntityOwnershipChange<>(ENTITY, EntityOwnershipStateChange.LOCAL_OWNERSHIP_RETAINED_WITH_NO_CHANGE,
true);
}
static final EntityOwnershipChange<DOMEntity> getDoubleEntityToMaster() {
- return new EntityOwnershipChange<>(DOUBLE_ENTITY, EntityOwnershipChangeState.LOCAL_OWNERSHIP_GRANTED);
+ return new EntityOwnershipChange<>(DOUBLE_ENTITY, EntityOwnershipStateChange.LOCAL_OWNERSHIP_GRANTED);
}
static final EntityOwnershipChange<DOMEntity> getInitDoubleEntityToSlave() {
- return new EntityOwnershipChange<>(DOUBLE_ENTITY, EntityOwnershipChangeState.REMOTE_OWNERSHIP_CHANGED);
+ return new EntityOwnershipChange<>(DOUBLE_ENTITY, EntityOwnershipStateChange.REMOTE_OWNERSHIP_CHANGED);
}
static final EntityOwnershipChange<DOMEntity> getDoubleEntityToSlave() {
- return new EntityOwnershipChange<>(DOUBLE_ENTITY, EntityOwnershipChangeState.LOCAL_OWNERSHIP_LOST_NEW_OWNER);
+ return new EntityOwnershipChange<>(DOUBLE_ENTITY, EntityOwnershipStateChange.LOCAL_OWNERSHIP_LOST_NEW_OWNER);
}
static final EntityOwnershipChange<DOMEntity> getDoubleEntityToJeopardy() {
- return new EntityOwnershipChange<>(DOUBLE_ENTITY, EntityOwnershipChangeState.REMOTE_OWNERSHIP_LOST_NO_OWNER,
+ return new EntityOwnershipChange<>(DOUBLE_ENTITY, EntityOwnershipStateChange.REMOTE_OWNERSHIP_LOST_NO_OWNER,
true);
}
static final EntityOwnershipChange<DOMEntity> getDoubleEntityMasterJeopardy() {
return new EntityOwnershipChange<>(DOUBLE_ENTITY,
- EntityOwnershipChangeState.LOCAL_OWNERSHIP_RETAINED_WITH_NO_CHANGE, true);
+ EntityOwnershipStateChange.LOCAL_OWNERSHIP_RETAINED_WITH_NO_CHANGE, true);
}
/**
import org.mockito.junit.MockitoJUnitRunner;
import org.opendaylight.mdsal.eos.common.api.CandidateAlreadyRegisteredException;
import org.opendaylight.mdsal.eos.common.api.EntityOwnershipChange;
-import org.opendaylight.mdsal.eos.common.api.EntityOwnershipChangeState;
+import org.opendaylight.mdsal.eos.common.api.EntityOwnershipStateChange;
import org.opendaylight.mdsal.eos.common.api.GenericEntityOwnershipListener;
import org.opendaylight.mdsal.eos.common.api.GenericEntityOwnershipService;
import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonService;
}
private static EntityOwnershipChange<TestEntity> getEntityToMaster() {
- return new EntityOwnershipChange<>(MAIN_ENTITY, EntityOwnershipChangeState.LOCAL_OWNERSHIP_GRANTED);
+ return new EntityOwnershipChange<>(MAIN_ENTITY, EntityOwnershipStateChange.LOCAL_OWNERSHIP_GRANTED);
}
private static EntityOwnershipChange<TestEntity> getEntityToSlave() {
- return new EntityOwnershipChange<>(MAIN_ENTITY, EntityOwnershipChangeState.LOCAL_OWNERSHIP_LOST_NEW_OWNER);
+ return new EntityOwnershipChange<>(MAIN_ENTITY, EntityOwnershipStateChange.LOCAL_OWNERSHIP_LOST_NEW_OWNER);
}
private static EntityOwnershipChange<TestEntity> getEntityToSlaveNoMaster() {
- return new EntityOwnershipChange<>(MAIN_ENTITY, EntityOwnershipChangeState.LOCAL_OWNERSHIP_LOST_NO_OWNER);
+ return new EntityOwnershipChange<>(MAIN_ENTITY, EntityOwnershipStateChange.LOCAL_OWNERSHIP_LOST_NO_OWNER);
}
private static EntityOwnershipChange<TestEntity> getEntityToMasterJeopardy() {
- return new EntityOwnershipChange<>(MAIN_ENTITY, EntityOwnershipChangeState.LOCAL_OWNERSHIP_GRANTED, true);
+ return new EntityOwnershipChange<>(MAIN_ENTITY, EntityOwnershipStateChange.LOCAL_OWNERSHIP_GRANTED, true);
}
private static EntityOwnershipChange<TestEntity> getEntityToJeopardy() {
- return new EntityOwnershipChange<>(MAIN_ENTITY, EntityOwnershipChangeState.REMOTE_OWNERSHIP_LOST_NO_OWNER,
+ return new EntityOwnershipChange<>(MAIN_ENTITY, EntityOwnershipStateChange.REMOTE_OWNERSHIP_LOST_NO_OWNER,
true);
}
private static EntityOwnershipChange<TestEntity> getDoubleEntityToMaster() {
- return new EntityOwnershipChange<>(CLOSE_ENTITY, EntityOwnershipChangeState.LOCAL_OWNERSHIP_GRANTED);
+ return new EntityOwnershipChange<>(CLOSE_ENTITY, EntityOwnershipStateChange.LOCAL_OWNERSHIP_GRANTED);
}
private static EntityOwnershipChange<TestEntity> getDoubleEntityToSlave() {
- return new EntityOwnershipChange<>(CLOSE_ENTITY, EntityOwnershipChangeState.LOCAL_OWNERSHIP_LOST_NEW_OWNER);
+ return new EntityOwnershipChange<>(CLOSE_ENTITY, EntityOwnershipStateChange.LOCAL_OWNERSHIP_LOST_NEW_OWNER);
}
private static EntityOwnershipChange<TestEntity> getInitDoubleEntityToSlave() {
- return new EntityOwnershipChange<>(CLOSE_ENTITY, EntityOwnershipChangeState.REMOTE_OWNERSHIP_CHANGED);
+ return new EntityOwnershipChange<>(CLOSE_ENTITY, EntityOwnershipStateChange.REMOTE_OWNERSHIP_CHANGED);
}
private static EntityOwnershipChange<TestEntity> getDoubleEntityToJeopardy() {
- return new EntityOwnershipChange<>(CLOSE_ENTITY, EntityOwnershipChangeState.REMOTE_OWNERSHIP_LOST_NO_OWNER,
+ return new EntityOwnershipChange<>(CLOSE_ENTITY, EntityOwnershipStateChange.REMOTE_OWNERSHIP_LOST_NO_OWNER,
true);
}
}