in src/main/java/org/apache/sling/discovery/base/connectors/announcement/AnnouncementRegistryImpl.java [92:134]
public synchronized void unregisterAnnouncement(final String ownerId) {
if (ownerId==null || ownerId.length()==0) {
throw new IllegalArgumentException("ownerId must not be null or empty");
}
// remove from the cache - even if there's an error afterwards
ownAnnouncementsCache.remove(ownerId);
if (resourceResolverFactory == null) {
logger.error("unregisterAnnouncement: resourceResolverFactory is null");
return;
}
ResourceResolver resourceResolver = null;
try {
resourceResolver = resourceResolverFactory
.getServiceResourceResolver(null);
final String path = config.getClusterInstancesPath()
+ "/"
+ slingId
+ "/announcements/" + ownerId;
final Resource announcementsResource = resourceResolver.getResource(path);
if (announcementsResource!=null) {
resourceResolver.delete(announcementsResource);
resourceResolver.commit();
}
} catch (LoginException e) {
logger.error(
"unregisterAnnouncement: could not log in administratively: "
+ e, e);
throw new RuntimeException("Could not log in to repository (" + e
+ ")", e);
} catch (PersistenceException e) {
logger.error("unregisterAnnouncement: got a PersistenceException: "
+ e, e);
throw new RuntimeException(
"Exception while talking to repository (" + e + ")", e);
} finally {
if (resourceResolver != null) {
resourceResolver.close();
}
}
}