package quickfix;


/**
 * Simple wrapper to standard message factory class which returns a synchronized
 * version of a message store upon each <code>create()</code> request.
 *
 */
public class SynchronizedMessageStoreFactory implements MessageStoreFactory {
    
    private final MessageStoreFactory messageStoreFactory;


    public SynchronizedMessageStoreFactory(final MessageStoreFactory messageStoreFactory) {
       
        if (messageStoreFactory == null)
            throw new NullPointerException("messageStoreFactory");
        
        this.messageStoreFactory = messageStoreFactory;
    }
                
    @Override
    public MessageStore create(final SessionID sessionID) {
        return new SynchronizedMessageStore(getMessageStoreFactory().create(sessionID));
    }
    
    public MessageStoreFactory getMessageStoreFactory() {
        return messageStoreFactory;
    }

}

