📍Use lombok, reformat, and optimize the code (#1560)
* Use lombok, reformat, and optimize the code * Fix merge conflicts and some sonar issues Co-authored-by: va1m <va1m@email.com>
This commit is contained in:
		@@ -46,20 +46,18 @@ public interface WeatherObserver {
 | 
			
		||||
  void update(WeatherType currentWeather);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@Slf4j
 | 
			
		||||
public class Orcs implements WeatherObserver {
 | 
			
		||||
 | 
			
		||||
  private static final Logger LOGGER = LoggerFactory.getLogger(Orcs.class);
 | 
			
		||||
 | 
			
		||||
  @Override
 | 
			
		||||
  public void update(WeatherType currentWeather) {
 | 
			
		||||
    LOGGER.info("The orcs are facing " + currentWeather.getDescription() + " weather now");
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@Slf4j
 | 
			
		||||
public class Hobbits implements WeatherObserver {
 | 
			
		||||
 | 
			
		||||
  private static final Logger LOGGER = LoggerFactory.getLogger(Hobbits.class);
 | 
			
		||||
 | 
			
		||||
  @Override
 | 
			
		||||
  public void update(WeatherType currentWeather) {
 | 
			
		||||
    switch (currentWeather) {
 | 
			
		||||
@@ -72,10 +70,9 @@ public class Hobbits implements WeatherObserver {
 | 
			
		||||
Then here's the `Weather` that is constantly changing.
 | 
			
		||||
 | 
			
		||||
```java
 | 
			
		||||
@Slf4j
 | 
			
		||||
public class Weather {
 | 
			
		||||
 | 
			
		||||
  private static final Logger LOGGER = LoggerFactory.getLogger(Weather.class);
 | 
			
		||||
 | 
			
		||||
  private WeatherType currentWeather;
 | 
			
		||||
  private final List<WeatherObserver> observers;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -26,8 +26,7 @@ package com.iluwatar.observer;
 | 
			
		||||
import com.iluwatar.observer.generic.GHobbits;
 | 
			
		||||
import com.iluwatar.observer.generic.GOrcs;
 | 
			
		||||
import com.iluwatar.observer.generic.GWeather;
 | 
			
		||||
import org.slf4j.Logger;
 | 
			
		||||
import org.slf4j.LoggerFactory;
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * The Observer pattern is a software design pattern in which an object, called the subject,
 | 
			
		||||
@@ -40,10 +39,9 @@ import org.slf4j.LoggerFactory;
 | 
			
		||||
 * <p>In this example {@link Weather} has a state that can be observed. The {@link Orcs} and {@link
 | 
			
		||||
 * Hobbits} register as observers and receive notifications when the {@link Weather} changes.
 | 
			
		||||
 */
 | 
			
		||||
@Slf4j
 | 
			
		||||
public class App {
 | 
			
		||||
 | 
			
		||||
  private static final Logger LOGGER = LoggerFactory.getLogger(App.class);
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Program entry point.
 | 
			
		||||
   *
 | 
			
		||||
 
 | 
			
		||||
@@ -23,18 +23,16 @@
 | 
			
		||||
 | 
			
		||||
package com.iluwatar.observer;
 | 
			
		||||
 | 
			
		||||
import org.slf4j.Logger;
 | 
			
		||||
import org.slf4j.LoggerFactory;
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Hobbits.
 | 
			
		||||
 */
 | 
			
		||||
@Slf4j
 | 
			
		||||
public class Hobbits implements WeatherObserver {
 | 
			
		||||
 | 
			
		||||
  private static final Logger LOGGER = LoggerFactory.getLogger(Hobbits.class);
 | 
			
		||||
 | 
			
		||||
  @Override
 | 
			
		||||
  public void update(WeatherType currentWeather) {
 | 
			
		||||
    LOGGER.info("The hobbits are facing " + currentWeather.getDescription() + " weather now");
 | 
			
		||||
    LOGGER.info("The hobbits are facing {} weather now", currentWeather.getDescription());
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -23,16 +23,14 @@
 | 
			
		||||
 | 
			
		||||
package com.iluwatar.observer;
 | 
			
		||||
 | 
			
		||||
import org.slf4j.Logger;
 | 
			
		||||
import org.slf4j.LoggerFactory;
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Orcs.
 | 
			
		||||
 */
 | 
			
		||||
@Slf4j
 | 
			
		||||
public class Orcs implements WeatherObserver {
 | 
			
		||||
 | 
			
		||||
  private static final Logger LOGGER = LoggerFactory.getLogger(Orcs.class);
 | 
			
		||||
 | 
			
		||||
  @Override
 | 
			
		||||
  public void update(WeatherType currentWeather) {
 | 
			
		||||
    LOGGER.info("The orcs are facing " + currentWeather.getDescription() + " weather now");
 | 
			
		||||
 
 | 
			
		||||
@@ -25,17 +25,15 @@ package com.iluwatar.observer;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import org.slf4j.Logger;
 | 
			
		||||
import org.slf4j.LoggerFactory;
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Weather can be observed by implementing {@link WeatherObserver} interface and registering as
 | 
			
		||||
 * listener.
 | 
			
		||||
 */
 | 
			
		||||
@Slf4j
 | 
			
		||||
public class Weather {
 | 
			
		||||
 | 
			
		||||
  private static final Logger LOGGER = LoggerFactory.getLogger(Weather.class);
 | 
			
		||||
 | 
			
		||||
  private WeatherType currentWeather;
 | 
			
		||||
  private final List<WeatherObserver> observers;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -24,16 +24,14 @@
 | 
			
		||||
package com.iluwatar.observer.generic;
 | 
			
		||||
 | 
			
		||||
import com.iluwatar.observer.WeatherType;
 | 
			
		||||
import org.slf4j.Logger;
 | 
			
		||||
import org.slf4j.LoggerFactory;
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * GHobbits.
 | 
			
		||||
 */
 | 
			
		||||
@Slf4j
 | 
			
		||||
public class GHobbits implements Race {
 | 
			
		||||
 | 
			
		||||
  private static final Logger LOGGER = LoggerFactory.getLogger(GHobbits.class);
 | 
			
		||||
 | 
			
		||||
  @Override
 | 
			
		||||
  public void update(GWeather weather, WeatherType weatherType) {
 | 
			
		||||
    LOGGER.info("The hobbits are facing " + weatherType.getDescription() + " weather now");
 | 
			
		||||
 
 | 
			
		||||
@@ -24,16 +24,14 @@
 | 
			
		||||
package com.iluwatar.observer.generic;
 | 
			
		||||
 | 
			
		||||
import com.iluwatar.observer.WeatherType;
 | 
			
		||||
import org.slf4j.Logger;
 | 
			
		||||
import org.slf4j.LoggerFactory;
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * GOrcs.
 | 
			
		||||
 */
 | 
			
		||||
@Slf4j
 | 
			
		||||
public class GOrcs implements Race {
 | 
			
		||||
 | 
			
		||||
  private static final Logger LOGGER = LoggerFactory.getLogger(GOrcs.class);
 | 
			
		||||
 | 
			
		||||
  @Override
 | 
			
		||||
  public void update(GWeather weather, WeatherType weatherType) {
 | 
			
		||||
    LOGGER.info("The orcs are facing " + weatherType.getDescription() + " weather now");
 | 
			
		||||
 
 | 
			
		||||
@@ -24,16 +24,14 @@
 | 
			
		||||
package com.iluwatar.observer.generic;
 | 
			
		||||
 | 
			
		||||
import com.iluwatar.observer.WeatherType;
 | 
			
		||||
import org.slf4j.Logger;
 | 
			
		||||
import org.slf4j.LoggerFactory;
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * GWeather.
 | 
			
		||||
 */
 | 
			
		||||
@Slf4j
 | 
			
		||||
public class GWeather extends Observable<GWeather, Race, WeatherType> {
 | 
			
		||||
 | 
			
		||||
  private static final Logger LOGGER = LoggerFactory.getLogger(GWeather.class);
 | 
			
		||||
 | 
			
		||||
  private WeatherType currentWeather;
 | 
			
		||||
 | 
			
		||||
  public GWeather() {
 | 
			
		||||
 
 | 
			
		||||
@@ -23,12 +23,12 @@
 | 
			
		||||
 | 
			
		||||
package com.iluwatar.observer;
 | 
			
		||||
 | 
			
		||||
import org.junit.jupiter.api.Test;
 | 
			
		||||
 | 
			
		||||
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
 | 
			
		||||
 | 
			
		||||
import org.junit.jupiter.api.Test;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 
 | 
			
		||||
 *
 | 
			
		||||
 * Application test
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 
 | 
			
		||||
@@ -36,10 +36,10 @@ public class HobbitsTest extends WeatherObserverTest<Hobbits> {
 | 
			
		||||
  @Override
 | 
			
		||||
  public Collection<Object[]> dataProvider() {
 | 
			
		||||
    return List.of(
 | 
			
		||||
            new Object[]{WeatherType.SUNNY, "The hobbits are facing Sunny weather now"},
 | 
			
		||||
            new Object[]{WeatherType.RAINY, "The hobbits are facing Rainy weather now"},
 | 
			
		||||
            new Object[]{WeatherType.WINDY, "The hobbits are facing Windy weather now"},
 | 
			
		||||
            new Object[]{WeatherType.COLD, "The hobbits are facing Cold weather now"});
 | 
			
		||||
        new Object[]{WeatherType.SUNNY, "The hobbits are facing Sunny weather now"},
 | 
			
		||||
        new Object[]{WeatherType.RAINY, "The hobbits are facing Rainy weather now"},
 | 
			
		||||
        new Object[]{WeatherType.WINDY, "The hobbits are facing Windy weather now"},
 | 
			
		||||
        new Object[]{WeatherType.COLD, "The hobbits are facing Cold weather now"});
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
 
 | 
			
		||||
@@ -36,10 +36,10 @@ public class OrcsTest extends WeatherObserverTest<Orcs> {
 | 
			
		||||
  @Override
 | 
			
		||||
  public Collection<Object[]> dataProvider() {
 | 
			
		||||
    return List.of(
 | 
			
		||||
            new Object[]{WeatherType.SUNNY, "The orcs are facing Sunny weather now"},
 | 
			
		||||
            new Object[]{WeatherType.RAINY, "The orcs are facing Rainy weather now"},
 | 
			
		||||
            new Object[]{WeatherType.WINDY, "The orcs are facing Windy weather now"},
 | 
			
		||||
            new Object[]{WeatherType.COLD, "The orcs are facing Cold weather now"});
 | 
			
		||||
        new Object[]{WeatherType.SUNNY, "The orcs are facing Sunny weather now"},
 | 
			
		||||
        new Object[]{WeatherType.RAINY, "The orcs are facing Rainy weather now"},
 | 
			
		||||
        new Object[]{WeatherType.WINDY, "The orcs are facing Windy weather now"},
 | 
			
		||||
        new Object[]{WeatherType.COLD, "The orcs are facing Cold weather now"});
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
 
 | 
			
		||||
@@ -23,12 +23,6 @@
 | 
			
		||||
 | 
			
		||||
package com.iluwatar.observer;
 | 
			
		||||
 | 
			
		||||
import com.iluwatar.observer.utils.InMemoryAppender;
 | 
			
		||||
import org.junit.jupiter.api.AfterEach;
 | 
			
		||||
import org.junit.jupiter.api.BeforeEach;
 | 
			
		||||
import org.junit.jupiter.api.Test;
 | 
			
		||||
import org.mockito.InOrder;
 | 
			
		||||
 | 
			
		||||
import static org.junit.jupiter.api.Assertions.assertEquals;
 | 
			
		||||
import static org.mockito.Mockito.inOrder;
 | 
			
		||||
import static org.mockito.Mockito.mock;
 | 
			
		||||
@@ -36,6 +30,11 @@ import static org.mockito.Mockito.verify;
 | 
			
		||||
import static org.mockito.Mockito.verifyNoMoreInteractions;
 | 
			
		||||
import static org.mockito.Mockito.verifyZeroInteractions;
 | 
			
		||||
 | 
			
		||||
import com.iluwatar.observer.utils.InMemoryAppender;
 | 
			
		||||
import org.junit.jupiter.api.AfterEach;
 | 
			
		||||
import org.junit.jupiter.api.BeforeEach;
 | 
			
		||||
import org.junit.jupiter.api.Test;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Date: 12/27/15 - 11:08 AM
 | 
			
		||||
 *
 | 
			
		||||
@@ -60,7 +59,7 @@ public class WeatherTest {
 | 
			
		||||
   * observer again and verify that there are no more notifications.
 | 
			
		||||
   */
 | 
			
		||||
  @Test
 | 
			
		||||
  public void testAddRemoveObserver() {
 | 
			
		||||
  void testAddRemoveObserver() {
 | 
			
		||||
    final var observer = mock(WeatherObserver.class);
 | 
			
		||||
 | 
			
		||||
    final var weather = new Weather();
 | 
			
		||||
@@ -83,7 +82,7 @@ public class WeatherTest {
 | 
			
		||||
   * Verify if the weather passes in the order of the {@link WeatherType}s
 | 
			
		||||
   */
 | 
			
		||||
  @Test
 | 
			
		||||
  public void testTimePasses() {
 | 
			
		||||
  void testTimePasses() {
 | 
			
		||||
    final var observer = mock(WeatherObserver.class);
 | 
			
		||||
    final var weather = new Weather();
 | 
			
		||||
    weather.addObserver(observer);
 | 
			
		||||
 
 | 
			
		||||
@@ -38,10 +38,10 @@ public class GHobbitsTest extends ObserverTest<GHobbits> {
 | 
			
		||||
  @Override
 | 
			
		||||
  public Collection<Object[]> dataProvider() {
 | 
			
		||||
    return List.of(
 | 
			
		||||
            new Object[]{WeatherType.SUNNY, "The hobbits are facing Sunny weather now"},
 | 
			
		||||
            new Object[]{WeatherType.RAINY, "The hobbits are facing Rainy weather now"},
 | 
			
		||||
            new Object[]{WeatherType.WINDY, "The hobbits are facing Windy weather now"},
 | 
			
		||||
            new Object[]{WeatherType.COLD, "The hobbits are facing Cold weather now"}
 | 
			
		||||
        new Object[]{WeatherType.SUNNY, "The hobbits are facing Sunny weather now"},
 | 
			
		||||
        new Object[]{WeatherType.RAINY, "The hobbits are facing Rainy weather now"},
 | 
			
		||||
        new Object[]{WeatherType.WINDY, "The hobbits are facing Windy weather now"},
 | 
			
		||||
        new Object[]{WeatherType.COLD, "The hobbits are facing Cold weather now"}
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -23,16 +23,19 @@
 | 
			
		||||
 | 
			
		||||
package com.iluwatar.observer.generic;
 | 
			
		||||
 | 
			
		||||
import static org.junit.jupiter.api.Assertions.assertEquals;
 | 
			
		||||
import static org.mockito.Mockito.inOrder;
 | 
			
		||||
import static org.mockito.Mockito.mock;
 | 
			
		||||
import static org.mockito.Mockito.verify;
 | 
			
		||||
import static org.mockito.Mockito.verifyNoMoreInteractions;
 | 
			
		||||
import static org.mockito.Mockito.verifyZeroInteractions;
 | 
			
		||||
 | 
			
		||||
import com.iluwatar.observer.WeatherObserver;
 | 
			
		||||
import com.iluwatar.observer.WeatherType;
 | 
			
		||||
import com.iluwatar.observer.utils.InMemoryAppender;
 | 
			
		||||
import org.junit.jupiter.api.AfterEach;
 | 
			
		||||
import org.junit.jupiter.api.BeforeEach;
 | 
			
		||||
import org.junit.jupiter.api.Test;
 | 
			
		||||
import org.mockito.InOrder;
 | 
			
		||||
 | 
			
		||||
import static org.junit.jupiter.api.Assertions.assertEquals;
 | 
			
		||||
import static org.mockito.Mockito.*;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Date: 12/27/15 - 11:08 AM
 | 
			
		||||
@@ -58,7 +61,7 @@ public class GWeatherTest {
 | 
			
		||||
   * observer again and verify that there are no more notifications.
 | 
			
		||||
   */
 | 
			
		||||
  @Test
 | 
			
		||||
  public void testAddRemoveObserver() {
 | 
			
		||||
  void testAddRemoveObserver() {
 | 
			
		||||
    final var observer = mock(Race.class);
 | 
			
		||||
 | 
			
		||||
    final var weather = new GWeather();
 | 
			
		||||
@@ -81,7 +84,7 @@ public class GWeatherTest {
 | 
			
		||||
   * Verify if the weather passes in the order of the {@link WeatherType}s
 | 
			
		||||
   */
 | 
			
		||||
  @Test
 | 
			
		||||
  public void testTimePasses() {
 | 
			
		||||
  void testTimePasses() {
 | 
			
		||||
    final var observer = mock(Race.class);
 | 
			
		||||
    final var weather = new GWeather();
 | 
			
		||||
    weather.addObserver(observer);
 | 
			
		||||
 
 | 
			
		||||
@@ -38,10 +38,10 @@ public class OrcsTest extends ObserverTest<GOrcs> {
 | 
			
		||||
  @Override
 | 
			
		||||
  public Collection<Object[]> dataProvider() {
 | 
			
		||||
    return List.of(
 | 
			
		||||
            new Object[]{WeatherType.SUNNY, "The orcs are facing Sunny weather now"},
 | 
			
		||||
            new Object[]{WeatherType.RAINY, "The orcs are facing Rainy weather now"},
 | 
			
		||||
            new Object[]{WeatherType.WINDY, "The orcs are facing Windy weather now"},
 | 
			
		||||
            new Object[]{WeatherType.COLD, "The orcs are facing Cold weather now"}
 | 
			
		||||
        new Object[]{WeatherType.SUNNY, "The orcs are facing Sunny weather now"},
 | 
			
		||||
        new Object[]{WeatherType.RAINY, "The orcs are facing Rainy weather now"},
 | 
			
		||||
        new Object[]{WeatherType.WINDY, "The orcs are facing Windy weather now"},
 | 
			
		||||
        new Object[]{WeatherType.COLD, "The orcs are facing Cold weather now"}
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user