diff --git a/apache-geode-extensions/src/main/java/org/springframework/geode/distributed/event/support/MemberJoinedEvent.java b/apache-geode-extensions/src/main/java/org/springframework/geode/distributed/event/support/MemberJoinedEvent.java new file mode 100644 index 00000000..9e1acfa5 --- /dev/null +++ b/apache-geode-extensions/src/main/java/org/springframework/geode/distributed/event/support/MemberJoinedEvent.java @@ -0,0 +1,54 @@ +/* + * Copyright 2020 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ +package org.springframework.geode.distributed.event.support; + +import org.apache.geode.distributed.DistributedMember; +import org.apache.geode.distributed.DistributedSystem; +import org.apache.geode.distributed.internal.DistributionManager; + +import org.springframework.geode.distributed.event.MembershipEvent; + +/** + * {@link MembershipEvent} fired when a {@link DistributedMember} joins the {@link DistributedSystem}. + * + * @author John Blum + * @see org.apache.geode.distributed.DistributedMember + * @see org.apache.geode.distributed.DistributedSystem + * @see org.springframework.geode.distributed.event.MembershipEvent + * @since 1.3.0 + */ +public class MemberJoinedEvent extends MembershipEvent { + + /** + * Constructs a new instance of {@link MemberJoinedEvent} initialized with the given {@link DistributionManager}. + * + * @param distributionManager {@link DistributionManager} used as the {@link #getSource() source} of this event; + * must not be {@literal null}. + * @throws IllegalArgumentException if {@link DistributionManager} is {@literal null}. + * @see org.apache.geode.distributed.internal.DistributionManager + */ + public MemberJoinedEvent(DistributionManager distributionManager) { + super(distributionManager); + } + + /** + * @inheritDoc + */ + @Override + public Type getType() { + return Type.MEMBER_JOINED; + } +} diff --git a/apache-geode-extensions/src/test/java/org/springframework/geode/distributed/event/support/MemberJoinedEventUnitTests.java b/apache-geode-extensions/src/test/java/org/springframework/geode/distributed/event/support/MemberJoinedEventUnitTests.java new file mode 100644 index 00000000..6e6efd11 --- /dev/null +++ b/apache-geode-extensions/src/test/java/org/springframework/geode/distributed/event/support/MemberJoinedEventUnitTests.java @@ -0,0 +1,50 @@ +/* + * Copyright 2020 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ +package org.springframework.geode.distributed.event.support; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; + +import org.junit.Test; + +import org.apache.geode.distributed.internal.DistributionManager; + +import org.springframework.geode.distributed.event.MembershipEvent; + +/** + * Unit Tests for {@link MemberJoinedEvent}. + * + * @author John Blum + * @see org.junit.Test + * @see org.mockito.Mockito + * @see org.springframework.geode.distributed.event.MembershipEvent + * @see org.springframework.geode.distributed.event.support.MemberJoinedEvent + * @since 1.3.0 + */ +public class MemberJoinedEventUnitTests { + + @Test + public void constructsMemberJoinedEvent() { + + DistributionManager mockDistributionManager = mock(DistributionManager.class); + + MemberJoinedEvent event = new MemberJoinedEvent(mockDistributionManager); + + assertThat(event).isNotNull(); + assertThat(event.getDistributionManager()).isEqualTo(mockDistributionManager); + assertThat(event.getType()).isEqualTo(MembershipEvent.Type.MEMBER_JOINED); + } +}