+
+ private class ProfileUpdateIntervalListener implements Listener<Long> {
+
+ private Resource runtimeDiagram;
+ private Resource entry;
+ private Resource item;
+
+ public ProfileUpdateIntervalListener(Resource runtimeDiagram, Resource entry, Resource item) {
+ this.runtimeDiagram = runtimeDiagram;
+ this.entry = entry;
+ this.item = item;
+ }
+
+ @Override
+ public void execute(Long result) {
+ interval.set(result);
+ }
+
+ @Override
+ public void exception(Throwable t) {
+ LOGGER.error("Could not listen interval from runtime diagram {}", runtimeDiagram, t);
+ }
+
+ @Override
+ public boolean isDisposed() {
+ return resultListener.isDisposed();
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + getEnclosingInstance().hashCode();
+ result = prime * result + ((entry == null) ? 0 : entry.hashCode());
+ result = prime * result + ((item == null) ? 0 : item.hashCode());
+ result = prime * result + ((runtimeDiagram == null) ? 0 : runtimeDiagram.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ ProfileUpdateIntervalListener other = (ProfileUpdateIntervalListener) obj;
+ if (!getEnclosingInstance().equals(other.getEnclosingInstance()))
+ return false;
+ if (entry == null) {
+ if (other.entry != null)
+ return false;
+ } else if (!entry.equals(other.entry))
+ return false;
+ if (item == null) {
+ if (other.item != null)
+ return false;
+ } else if (!item.equals(other.item))
+ return false;
+ if (runtimeDiagram == null) {
+ if (other.runtimeDiagram != null)
+ return false;
+ } else if (!runtimeDiagram.equals(other.runtimeDiagram))
+ return false;
+ return true;
+ }
+
+ private ThrottledStyleBase<Result> getEnclosingInstance() {
+ return ThrottledStyleBase.this;
+ }
+ }
+