Search in sources :

Example 1 with Message

use of org.pentaho.di.engine.api.remote.Message in project pentaho-kettle by pentaho.

the class MessageEventService method getHandlersFor.

public List<MessageEventHandler> getHandlersFor(final Message eventType) {
    List<MessageEventHandler> toRet = null;
    if (eventType == null || registeredHandlers.isEmpty()) {
        return toRet;
    }
    MessageComparator msgComparator = new MessageComparator();
    for (Message e : registeredHandlers.keySet()) {
        if (msgComparator.compare(e, eventType) == 0) {
            toRet = registeredHandlers.get(e);
        }
    }
    return toRet;
}
Also used : StopMessage(org.pentaho.di.engine.api.remote.StopMessage) Message(org.pentaho.di.engine.api.remote.Message) MessageEventHandler(org.pentaho.di.trans.ael.websocket.handler.MessageEventHandler)

Example 2 with Message

use of org.pentaho.di.engine.api.remote.Message in project pentaho-kettle by pentaho.

the class TransWebSocketEngineAdapter method wireStatusToTransListeners.

private void wireStatusToTransListeners() throws KettleException {
    messageEventService.addHandler(Util.getTransformationStatusEvent(), new MessageEventHandler() {

        @Override
        public void execute(Message message) throws MessageEventHandlerExecutionException {
            PDIEvent<RemoteSource, Status> transStatusEvent = (PDIEvent<RemoteSource, Status>) message;
            addStepPerformanceSnapShot();
            getTransListeners().forEach(l -> {
                try {
                    switch(transStatusEvent.getData()) {
                        case RUNNING:
                            l.transStarted(TransWebSocketEngineAdapter.this);
                            l.transActive(TransWebSocketEngineAdapter.this);
                            break;
                        case PAUSED:
                            break;
                        case STOPPED:
                            break;
                        case FAILED:
                        case FINISHED:
                            l.transFinished(TransWebSocketEngineAdapter.this);
                            setFinished(true);
                            break;
                    }
                } catch (KettleException e) {
                    throw new RuntimeException(e);
                }
            });
        }

        @Override
        public String getIdentifier() {
            return TRANSFORMATION_STATUS;
        }
    });
    messageEventService.addHandler(Util.getTransformationErrorEvent(), new MessageEventHandler() {

        @Override
        public void execute(Message message) throws MessageEventHandlerExecutionException {
            Throwable throwable = ((PDIEvent<RemoteSource, LogEntry>) message).getData().getThrowable();
            getLogChannel().logError("Error Executing Transformation", throwable);
            errors.incrementAndGet();
            finishProcess(true);
        }

        @Override
        public String getIdentifier() {
            return TRANSFORMATION_ERROR;
        }
    });
    messageEventService.addHandler(Util.getStopMessage(), new MessageEventHandler() {

        @Override
        public void execute(Message message) throws MessageEventHandlerExecutionException {
            StopMessage stopMessage = (StopMessage) message;
            if (stopMessage.sessionWasKilled() || stopMessage.operationFailed()) {
                getLogChannel().logError("Finalizing execution: " + stopMessage.getReasonPhrase());
            } else {
                getLogChannel().logBasic("Finalizing execution: " + stopMessage.getReasonPhrase());
            }
            finishProcess(false);
            try {
                getDaemonEndpoint().close(stopMessage.getReasonPhrase());
            } catch (KettleException e) {
                getLogChannel().logError("Error finalizing", e);
            }
            // let's shutdown the session monitor thread
            closeSessionMonitor();
            // Signal for the the waitUntilFinished blocker...
            transFinishedSignal.countDown();
        }

        @Override
        public String getIdentifier() {
            return TRANSFORMATION_STOP;
        }
    });
}
Also used : Status(org.pentaho.di.engine.api.reporting.Status) Transformation(org.pentaho.di.engine.api.model.Transformation) Result(org.pentaho.di.core.Result) Trans(org.pentaho.di.trans.Trans) TransMetaConverter(org.pentaho.di.trans.ael.adapters.TransMetaConverter) Arrays(java.util.Arrays) LogLevel(org.pentaho.di.engine.api.reporting.LogLevel) KettleException(org.pentaho.di.core.exception.KettleException) HashMap(java.util.HashMap) Operation(org.pentaho.di.engine.api.model.Operation) Function(java.util.function.Function) ArrayList(java.util.ArrayList) MessageEventHandler(org.pentaho.di.trans.ael.websocket.handler.MessageEventHandler) LogEntry(org.pentaho.di.engine.api.reporting.LogEntry) TransMeta(org.pentaho.di.trans.TransMeta) Collectors.toMap(java.util.stream.Collectors.toMap) Status(org.pentaho.di.engine.api.reporting.Status) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) MessageEventHandlerExecutionException(org.pentaho.di.trans.ael.websocket.exception.MessageEventHandlerExecutionException) Map(java.util.Map) ExecutorService(java.util.concurrent.ExecutorService) StepInterface(org.pentaho.di.trans.step.StepInterface) StepMeta(org.pentaho.di.trans.step.StepMeta) StepMetaInterface(org.pentaho.di.trans.step.StepMetaInterface) StopMessage(org.pentaho.di.engine.api.remote.StopMessage) ExecutionRequest(org.pentaho.di.engine.api.remote.ExecutionRequest) ResourceEntry(org.pentaho.di.resource.ResourceEntry) LogChannelInterface(org.pentaho.di.core.logging.LogChannelInterface) Maps(com.google.common.collect.Maps) Collectors(java.util.stream.Collectors) Executors(java.util.concurrent.Executors) TimeUnit(java.util.concurrent.TimeUnit) RemoteSource(org.pentaho.di.engine.api.remote.RemoteSource) CountDownLatch(java.util.concurrent.CountDownLatch) StepMetaDataCombi(org.pentaho.di.trans.step.StepMetaDataCombi) List(java.util.List) Principal(java.security.Principal) HandlerRegistrationException(org.pentaho.di.trans.ael.websocket.exception.HandlerRegistrationException) PDIEvent(org.pentaho.di.engine.api.events.PDIEvent) Optional(java.util.Optional) Message(org.pentaho.di.engine.api.remote.Message) ActingPrincipal(org.pentaho.di.engine.model.ActingPrincipal) RowProducer(org.pentaho.di.trans.RowProducer) KettleException(org.pentaho.di.core.exception.KettleException) StopMessage(org.pentaho.di.engine.api.remote.StopMessage) Message(org.pentaho.di.engine.api.remote.Message) RemoteSource(org.pentaho.di.engine.api.remote.RemoteSource) StopMessage(org.pentaho.di.engine.api.remote.StopMessage) MessageEventHandlerExecutionException(org.pentaho.di.trans.ael.websocket.exception.MessageEventHandlerExecutionException) MessageEventHandler(org.pentaho.di.trans.ael.websocket.handler.MessageEventHandler) PDIEvent(org.pentaho.di.engine.api.events.PDIEvent)

Aggregations

Message (org.pentaho.di.engine.api.remote.Message)2 StopMessage (org.pentaho.di.engine.api.remote.StopMessage)2 MessageEventHandler (org.pentaho.di.trans.ael.websocket.handler.MessageEventHandler)2 Maps (com.google.common.collect.Maps)1 Principal (java.security.Principal)1 ArrayList (java.util.ArrayList)1 Arrays (java.util.Arrays)1 HashMap (java.util.HashMap)1 List (java.util.List)1 Map (java.util.Map)1 Optional (java.util.Optional)1 CountDownLatch (java.util.concurrent.CountDownLatch)1 ExecutorService (java.util.concurrent.ExecutorService)1 Executors (java.util.concurrent.Executors)1 TimeUnit (java.util.concurrent.TimeUnit)1 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)1 Function (java.util.function.Function)1 Collectors (java.util.stream.Collectors)1 Collectors.toMap (java.util.stream.Collectors.toMap)1 Result (org.pentaho.di.core.Result)1