/* * Copyright(c) 2005 Center for E-Commerce Infrastructure Development, The * University of Hong Kong (HKU). All Rights Reserved. * * This software is licensed under the GNU GENERAL PUBLIC LICENSE Version 2.0 [1] * * [1] http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt */ package hk.hku.cecid.edi.as2.module; import hk.hku.cecid.edi.as2.dao.MessageDVO; import hk.hku.cecid.edi.as2.pkg.AS2Message; import java.io.FileOutputStream; import java.io.InputStream; /** * MessageRepository * * @author Hugo Y. K. Lam * */ public class MessageRepository extends PayloadRepository { private final String DEFAULT_AS2_MESSAGE_TYPE = "as2"; private final String DEFAULT_AS2_RECEIPT_TYPE = "mdn"; private final String PARAMETER_IS_DISABLED = "is-disabled"; private boolean isDisabled = false; /** * */ public MessageRepository() { super(); } protected void init() throws Exception { super.init(); isDisabled = new Boolean(getParameters().getProperty(PARAMETER_IS_DISABLED)).booleanValue(); } public void persistMessage(AS2Message message) { if (!isDisabled && message!=null) { try { String type = message.isDispositionNotification()? DEFAULT_AS2_RECEIPT_TYPE:DEFAULT_AS2_MESSAGE_TYPE; PayloadCache cache = createPayloadCache( message.getMessageID(), message.getFromPartyID(), message.getToPartyID(), type); FileOutputStream fos = new FileOutputStream(cache.getCache()); message.writeTo(fos); fos.close(); cache.checkIn(); } catch (Exception e) { getModule().getLogger().warn("Unable to persist message to local repository", e); } } } public void persistMessage(MessageDVO message, InputStream content) { if (!isDisabled && message!=null && content!=null) { try { String type = message.isReceipt()? DEFAULT_AS2_RECEIPT_TYPE:DEFAULT_AS2_MESSAGE_TYPE; PayloadCache cache = createPayloadCache( message.getMessageId(), message.getAs2From(), message.getAs2To(), type); cache.save(content); cache.checkIn(); } catch (Exception e) { getModule().getLogger().warn("Unable to persist message to local repository", e); } } } }