113 lines
2.0 KiB
Java
113 lines
2.0 KiB
Java
package org.warp.commonutils.type;
|
|
|
|
import it.unimi.dsi.fastutil.objects.ObjectSet;
|
|
import java.util.Optional;
|
|
import java.util.Set;
|
|
|
|
public final class SynchronizedAssociation<T, U> implements Association<T, U> {
|
|
|
|
private final Association<T,U> association;
|
|
private final Object lock;
|
|
|
|
SynchronizedAssociation(Association<T, U> association) {
|
|
this.association = association;
|
|
this.lock = new Object();
|
|
}
|
|
|
|
SynchronizedAssociation(Association<T, U> association, Object lock) {
|
|
this.association = association;
|
|
this.lock = lock;
|
|
}
|
|
|
|
@Override
|
|
public boolean link(T src, U dest) {
|
|
synchronized (lock) {
|
|
return association.link(src, dest);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public boolean unlink(T src, U dest) {
|
|
synchronized (lock) {
|
|
return association.unlink(src, dest);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public Set<U> unlink(T src) {
|
|
synchronized (lock) {
|
|
return association.unlink(src);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public Optional<T> unlinkFromSource(U dest) {
|
|
synchronized (lock) {
|
|
return association.unlinkFromSource(dest);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public boolean hasAnyLink(T src) {
|
|
synchronized (lock) {
|
|
return association.hasAnyLink(src);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public boolean hasLinkSource(U dest) {
|
|
synchronized (lock) {
|
|
return association.hasLinkSource(dest);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public boolean hasLink(T src, U dest) {
|
|
synchronized (lock) {
|
|
return association.hasLink(src, dest);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public Set<U> getLinks(T src) {
|
|
synchronized (lock) {
|
|
return association.getLinks(src);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public Optional<T> getLinkSource(U dest) {
|
|
synchronized (lock) {
|
|
return association.getLinkSource(dest);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void clear() {
|
|
synchronized (lock) {
|
|
association.clear();
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public int size() {
|
|
synchronized (lock) {
|
|
return association.size();
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public ObjectSet<T> getSources() {
|
|
synchronized (lock) {
|
|
return association.getSources();
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public ObjectSet<U> getDestinations() {
|
|
synchronized (lock) {
|
|
return association.getDestinations();
|
|
}
|
|
}
|
|
}
|