+ @Override
+ public Optional<Sone> getSone(String soneId) {
+ lock.readLock().lock();
+ try {
+ return fromNullable(sones.get(soneId));
+ } finally {
+ lock.readLock().unlock();
+ }
+ }
+
+ @Override
+ public Collection<Sone> getSones() {
+ lock.readLock().lock();
+ try {
+ return Collections.unmodifiableCollection(sones.values());
+ } finally {
+ lock.readLock().unlock();
+ }
+ }
+
+ @Override
+ public Collection<Sone> getLocalSones() {
+ lock.readLock().lock();
+ try {
+ return from(getSones()).filter(LOCAL_SONE_FILTER).toSet();
+ } finally {
+ lock.readLock().unlock();
+ }
+ }
+
+ @Override
+ public Collection<Sone> getRemoteSones() {
+ lock.readLock().lock();
+ try {
+ return from(getSones()).filter(not(LOCAL_SONE_FILTER)).toSet();
+ } finally {
+ lock.readLock().unlock();
+ }
+ }
+
+ @Override
+ public SoneBuilder newSoneBuilder() {
+ return null;
+ }
+