@Override public void remove(Endpoint endpoint) { lock.writeLock().lock(); try { endpointsById.remove(endpoint.id()); endpointsByPath.remove(endpoint.path()); endpointsByResourceName.remove(endpoint.resourceId()); } finally { lock.writeLock().unlock(); } }
@Override public void add(Endpoint endpoint) { lock.writeLock().lock(); try { if (endpointsById.containsKey(endpoint.id())) { throw new IllegalArgumentException( "An endpoint with id '" + endpoint.id() + "' already exists"); } if (endpointsByPath.containsKey(endpoint.path())) { throw new IllegalArgumentException( "An endpoint with path '" + endpoint.path() + "' already exists"); } if (endpointsByResourceName.containsKey(endpoint.resourceId())) { throw new IllegalArgumentException( "An endpoint with resource name '" + endpoint.resourceId() + "' already exists"); } endpointsById.put(endpoint.id(), endpoint); endpointsByPath.put(endpoint.path(), endpoint.id()); endpointsByResourceName.put(endpoint.resourceId(), endpoint.id()); } finally { lock.writeLock().unlock(); } }