Как сделать слушатель события в Nuxeo IDE

Я хочу запланировать событие в IDE nuxeo, но я получаю сообщение об ошибке java.lang.ClassCastException:

org.nuxeo.ecm.core.event.impl.EventContextImpl нельзя привести к org.nuxeo.ecm.core.event.impl.DocumentEventContext.

Мой вклад планировщика:

<?xml version="1.0"?>

<component name="org.nuxeo.sample.ScheduleCall" version="1.0">
<extension target="org.nuxeo.ecm.core.scheduler.SchedulerService"
 point="schedule">
 <schedule id="testschedule">
 <username>Administrator</username>
 <eventId>user_created</eventId>
 <eventCategory>default</eventCategory>

 <cronExpression>0 1 * * * ?</cronExpression>
 </schedule>
 </extension>  

</component>

Мой вклад слушателя:

<component name="org.nuxeo.sample.listener.contrib.ScheduleListener">

  <extension target="org.nuxeo.ecm.core.event.EventServiceComponent"
    point="listener">

    <listener name="schedulelistener" async="false" postCommit="true"
      class="org.nuxeo.sample.ScheduleListener" priority="140">
      <event>user_created</event>
    </listener>
  </extension>

</component>

Мой Java-класс для слушателя:

/**
 * 
 */

package org.nuxeo.sample;

import org.nuxeo.ecm.core.event.EventListener;
import org.nuxeo.ecm.core.event.Event;





/**
 * @author Parul.Puri01
 */


public class ScheduleListener implements EventListener {

    public void handleEvent(Event event){
        try{
            if(event!=null && event.getName().equals("user_created")){
                System.out.println("parul");
            }
            System.out.println("not an event");
       }
        catch (Exception e){
            e.printStackTrace();

        }


    }

}

Ошибка:

java.lang.ClassCastException: org.nuxeo.ecm.core.event.impl.EventContextImpl cannot be cast to org.nuxeo.ecm.core.event.impl.DocumentEventContext
    at org.nuxeo.ecm.user.center.profile.localeProvider.UserLocaleSelectorListener.handleEvent(UserLocaleSelectorListener.java:43)
    at org.nuxeo.ecm.core.event.impl.EventServiceImpl.fireEvent(EventServiceImpl.java:200)
    at org.nuxeo.ecm.core.scheduler.EventJob.execute(EventJob.java:119)
    at org.nuxeo.ecm.core.scheduler.EventJob.execute(EventJob.java:65)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
2016-06-02 12:13:01,047 WARN  [Nuxeo-Work-default-3] [org.nuxeo.ecm.platform.ec.notification.NotificationEventListener] Can not handle notification on a event that is not bound to a DocumentEventContext

Пожалуйста, дайте мне знать, как создать точку расширения слушателя в IDE nuxeo. Я создаю это как слушатель документа. Как устранить ошибку?

1 ответ

Идентификатор события user_created используется платформой Nuxeo внутри контекста документа.

Поэтому вы не можете запустить это же событие с планировщиком, у которого нет контекста Document.

Если вы хотите, чтобы ваш пример работал, просто переименуйте user_created в my_user_created или что-то еще.

Лучший,

Другие вопросы по тегам