Skip to content

Commit

Permalink
MPLUG-21: Add status field on MonitoredService
Browse files Browse the repository at this point in the history
  • Loading branch information
cgorantla committed Sep 25, 2024
1 parent 10fbbdf commit 8529155
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,16 @@

package org.opennms.integration.api.v1.model;

import java.util.List;

import org.opennms.integration.api.v1.annotations.Model;

import java.util.List;

@Model
public interface MonitoredService {

String getName();

List<MetaData> getMetaData();

boolean getStatus();
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,42 +28,42 @@

package org.opennms.integration.api.v1.model.immutables;

import java.net.InetAddress;
import java.util.LinkedList;
import java.util.List;
import java.util.Objects;
import java.util.Optional;

import org.opennms.integration.api.v1.model.IpInterface;
import org.opennms.integration.api.v1.model.MetaData;
import org.opennms.integration.api.v1.model.MonitoredService;
import org.opennms.integration.api.v1.model.SnmpInterface;
import org.opennms.integration.api.v1.util.ImmutableCollections;
import org.opennms.integration.api.v1.util.MutableCollections;

import java.util.LinkedList;
import java.util.List;
import java.util.Objects;

/**
* An immutable implementation of {@link IpInterface} that enforces deep immutability.
*/
public final class ImmutableMonitoredService implements MonitoredService {
private final String name;
private final List<MetaData> metaData;

private ImmutableMonitoredService(final String name, final List<MetaData> metaData) {
private final boolean status;

private ImmutableMonitoredService(final String name, final boolean status, final List<MetaData> metaData) {
this.name = name;
this.status = status;
this.metaData = ImmutableCollections.with(ImmutableMetaData::immutableCopy)
.newList(metaData);
}

public static ImmutableMonitoredService newInstance(final String name, final List<MetaData> metaData) {
return new ImmutableMonitoredService(Objects.requireNonNull(name),
public static ImmutableMonitoredService newInstance(final String name, final boolean status, final List<MetaData> metaData) {
return new ImmutableMonitoredService(Objects.requireNonNull(name), status,
metaData);
}

public static MonitoredService immutableCopy(MonitoredService monitoredService) {
if (monitoredService == null || monitoredService instanceof ImmutableMonitoredService) {
return monitoredService;
}
return newInstance(monitoredService.getName(), monitoredService.getMetaData());
return newInstance(monitoredService.getName(), monitoredService.getStatus(), monitoredService.getMetaData());
}

public static Builder newBuilder() {
Expand All @@ -78,11 +78,14 @@ public static final class Builder {
private String name;
private List<MetaData> metaData;

private boolean status;

private Builder() {
}

private Builder(final MonitoredService monitoredService) {
this.name = monitoredService.getName();
this.status = monitoredService.getStatus();
this.metaData = MutableCollections.copyListFromNullable(monitoredService.getMetaData(), LinkedList::new);
}

Expand All @@ -91,6 +94,11 @@ public Builder setName(final String name) {
return this;
}

public Builder setStatus(final boolean status) {
this.status = status;
return this;
}

public Builder setMetaData(List<MetaData> metaData) {
this.metaData = metaData;
return this;
Expand All @@ -105,7 +113,7 @@ public Builder addMetaData(MetaData metaData) {
}

public ImmutableMonitoredService build() {
return ImmutableMonitoredService.newInstance(this.name, this.metaData);
return ImmutableMonitoredService.newInstance(this.name, this.status, this.metaData);
}
}

Expand All @@ -119,25 +127,32 @@ public List<MetaData> getMetaData() {
return metaData;
}

@Override
public boolean getStatus() {
return this.status;
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
ImmutableMonitoredService that = (ImmutableMonitoredService) o;
return Objects.equals(this.name, that.name) &&
Objects.equals(this.metaData, that.metaData);
Objects.equals(this.metaData, that.metaData) &&
Objects.equals(this.status, that.status);
}

@Override
public int hashCode() {
return Objects.hash(this.name, this.metaData);
return Objects.hash(this.name, this.metaData, this.status);
}

@Override
public String toString() {
return "ImmutableIpInterface{" +
"name=" + this.name +
", metaData=" + metaData +
", status=" + status +
'}';
}
}

0 comments on commit 8529155

Please sign in to comment.