Я не думаю, что есть простое решение связать такое поведение с одним типом ресурса. вам нужно будет проверить новый ресурс и при необходимости применить изменения.
Я думаю, что двумя лучшими вариантами являются упомянутый вами SlingPostProcessor и Наблюдение за ресурсами .
Наблюдение за ресурсами позволяет вам «прослушивать» изменения в ресурсах и выполнять любые операции, которые вы считаете подходящими.
Реализация также довольно проста. Создайте новый сервис OSGi, который реализует интерфейс ResourceChangeListener, и добавьте некоторые свойства, чтобы отфильтровать, какие изменения вас интересуют. Это похоже на использование событий JCR и задания, но гораздо более простое.
Преимущество этого заключается в том, что это не зависит от любого почтового запроса. недостаток в том, что вам нужно использовать новый сеанс для внесения изменений. (Вы можете использовать ResourceResolverFactory.getServiceResourceResolver
)
Например.
@Component(property = {
ResourceChangeListener.CHANGES + "=ADDED",
ResourceChangeListener.PATHS + "=glob:/content/*",
})
public class ResourceObserver implements ResourceChangeListener {
@Override
public void onChange(@Nonnull List<ResourceChange> changes) {
//go through the list of changes and do what you need to do.
}
}