package rocks.inspectit.server.instrumentation.classcache.events;
import java.util.ArrayList;
import java.util.List;
/**
* Data structure to hold a list of change events. Note that the structure is not synchronized and
* can only be used in non parallel access.
*
* @author Stefan Siegl
*/
public class Events {
/**
* List of node changes.
*/
private final List<NodeEvent> nodeEvents = new ArrayList<>(0);
/**
* List of reference changes.
*/
private final List<ReferenceEvent> referenceEvents = new ArrayList<>(0);
/**
* adds a node event to the cache.
*
* @param nodeEvent
* the node event to add.
*/
public void addEvent(NodeEvent nodeEvent) {
nodeEvents.add(nodeEvent);
}
/**
* adds a reference to the events.
*
* @param referenceEvent
* the reference event to add.
*/
public void addEvent(ReferenceEvent referenceEvent) {
referenceEvents.add(referenceEvent);
}
/**
* Gets {@link #nodeEvents}.
*
* @return {@link #nodeEvents}
*/
public List<NodeEvent> getNodeEvents() {
return nodeEvents;
}
/**
* Gets {@link #referenceEvents}.
*
* @return {@link #referenceEvents}
*/
public List<ReferenceEvent> getReferenceEvents() {
return referenceEvents;
}
/**
* {@inheritDoc}
*/
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = (prime * result) + ((nodeEvents == null) ? 0 : nodeEvents.hashCode());
result = (prime * result) + ((referenceEvents == null) ? 0 : referenceEvents.hashCode());
return result;
}
/**
* {@inheritDoc}
*/
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
Events other = (Events) obj;
if (nodeEvents == null) {
if (other.nodeEvents != null) {
return false;
}
} else if (!nodeEvents.equals(other.nodeEvents)) {
return false;
}
if (referenceEvents == null) {
if (other.referenceEvents != null) {
return false;
}
} else if (!referenceEvents.equals(other.referenceEvents)) {
return false;
}
return true;
}
/**
* {@inheritDoc}
*/
@Override
public String toString() {
return "EventCache [nodeEvents=" + nodeEvents + ", referenceEvents=" + referenceEvents + "]";
}
}