RESTHeart Hooks - не работает

Я добавил свой собственный код следующим образом

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

Но все же я не могу напечатать это в журнале, я уверен, что мне не хватает части добавления крючков в коллекцию. Как мы добавим это, т.е. Как мы это сделаем: «Крючки свойств метаданных коллекции позволяют объявить хуки, которые будут применяться к запросам, связанным с коллекцией и ее документами», который взят из документа.


person Kumarasamy Mani    schedule 04.11.2017    source источник


Ответы (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");

person Andrea Di Cesare    schedule 07.11.2017