package org.jentrata.ebms.messaging;
import org.apache.camel.Body;
import org.apache.camel.Exchange;
import org.apache.camel.Header;
import org.jentrata.ebms.EbmsConstants;
import org.jentrata.ebms.MessageStatusType;
import java.io.InputStream;
import java.util.List;
/**
* A ebMS MessageStore interface
*
* @author aaronwalker
*/
public interface MessageStore {
public static final String DEFAULT_MESSAGE_STORE_ENDPOINT = "direct:storeMessage";
public static final String DEFAULT_MESSAGE_INSERT_ENDPOINT = "direct:insertMessage";
public static final String DEFAULT_MESSAGE_UPDATE_ENDPOINT = "direct:updateMessage";
public static final String MESSAGE_STORE_REF = "JentrataMessageStoreRef";
public static final String JENTRATA_MESSAGE_ID = "JentrataMessageId";
void store(@Body InputStream message, Exchange exchange);
void storeMessage(Exchange exchange);
void updateMessage(@Header(EbmsConstants.MESSAGE_ID)String messageId,
@Header(EbmsConstants.MESSAGE_DIRECTION)String messageDirection,
@Header(EbmsConstants.MESSAGE_STATUS)MessageStatusType status,
@Header(EbmsConstants.MESSAGE_STATUS_DESCRIPTION)String statusDescription);
Message findByMessageId(@Header(EbmsConstants.MESSAGE_ID)String messageId, @Header(EbmsConstants.MESSAGE_DIRECTION) String messageDirection);
InputStream findPayloadById(@Header(EbmsConstants.MESSAGE_ID)String messageId);
List<Message> findByMessageStatus(@Header(EbmsConstants.MESSAGE_DIRECTION)String messageDirection, @Header(EbmsConstants.MESSAGE_STATUS)String status);
}