All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.ebay.jetstream.event.processor.esper.EsperWrappedEventConverter Maven / Gradle / Ivy

The newest version!
/*
Pulsar
Copyright (C) 2013-2015 eBay Software Foundation
Licensed under the GPL v2 license.  See LICENSE for full terms.
*/
package com.ebay.jetstream.event.processor.esper;

import com.ebay.jetstream.event.EventException;
import com.ebay.jetstream.event.JetstreamEvent;
import com.espertech.esper.client.EventBean;
import com.espertech.esper.event.WrapperEventBean;
import com.espertech.esper.event.WrapperEventType;

/**
 * This converter serves cases like
 *
 * INSERT INTO metricUpdate SELECT Guid, EntityType, ate.* FROM metricsDb, applyTransaction ate GROUP BY Guid;
 *
 * SELECT * FROM metricUpdate;
 *
 * @author snikolaev
 *
 */
public class EsperWrappedEventConverter extends EsperDefaultEventConverter {

  @SuppressWarnings("unchecked")
  @Override
  public JetstreamEvent getJetstreamEvent(EventBean bean) throws EventException {
    JetstreamEvent event = super.getJetstreamEvent(bean);
    if (event == null && bean instanceof WrapperEventBean) { // trying to unwrap it
      WrapperEventBean wrappedBean = (WrapperEventBean) bean;
      WrapperEventType eventType = (WrapperEventType) wrappedBean.getEventType();
      JetstreamEvent nestedEvent = super.getJetstreamEvent(wrappedBean.getUnderlyingEvent());
      if (nestedEvent != null) {
        nestedEvent.putAll(wrappedBean.getUnderlyingMap()); // outer map has priority, i.e. it overrides similar fields
        event = new JetstreamEvent(eventType.getName(), null, nestedEvent); // and we keep original event type
      }
      else {
        event = new JetstreamEvent(eventType.getName(), null, wrappedBean.getUnderlyingMap());
      }
    }
    return event;
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy