Крючки RESTHeart - не работают
Я добавил свой код следующим образом
public class StatusUpdateHook implements Hook {
private static final Logger LOGGER = LoggerFactory.getLogger(StatusUpdateHook.class);
@Override
public boolean hook(HttpServerExchange exchange, RequestContext context, BsonValue args, BsonDocument confArgs) {
LOGGER.info("Hook is Called");
return true;
}
@Override
public boolean doesSupportRequests(RequestContext rc) {
return true;
}
}
также добавил следующую строку в мой конфиг,
- group: hooks
interface: org.restheart.metadata.hooks.Hook
singletons:
- name: snooper
class: org.restheart.metadata.hooks.SnooperHook
- name: statusChecker
class: com.techmaddy.rh.hook.StatuspdateHook
Но все же я не могу напечатать это в журнале, я уверен, что упускаю часть добавления хуков в коллекцию. Как мы добавляем это, т.е. как мы делаем это "Хуки свойств метаданных коллекции позволяют объявлять хуки, которые будут применены к запросам, связанным с коллекцией и ее документами", то есть из документа.
1 ответ
Вы создали класс ловушек, присвоив ему имя в файле конфигурации. Для того, чтобы это применимо к вашей коллекции, вам нужно определить hooks
коллекционная собственность.
PATCH /db/coll { "hooks" : [ { "name": "statusChecker", "args": null } ]}
Теперь, когда коллекция coll
имеет hooks
массив с вашей ловушкой, RESTHeart будет вызывать его на запросы, связанные с этой коллекцией.
Обратите внимание, что конфигурация регистрации по умолчанию выводит только сообщения, классифицированные в дочерних пакетах org.restheart
, Так что либо вы меняете конфигурацию (определяя системное свойство logback.configurationFile
см. https://logback.qos.ch/manual/configuration.html) или создайте экземпляр своего регистратора следующим образом:
private static final Logger LOGGER = LoggerFactory.getLogger("org.restheart.custom.StatuspdateHook");