/* * Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com * The software in this package is published under the terms of the CPAL v1.0 * license, a copy of which has been included with this distribution in the * LICENSE.txt file. */ package org.mule.runtime.core.util.queue; import org.mule.runtime.core.api.MuleContext; import org.mule.runtime.api.exception.MuleException; import org.mule.runtime.core.api.context.MuleContextAware; import org.mule.runtime.api.lifecycle.Disposable; import org.mule.runtime.api.lifecycle.Initialisable; import org.mule.runtime.api.lifecycle.InitialisationException; import org.mule.runtime.api.lifecycle.Lifecycle; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Delegates every call to the real QueueManager. * * If there's a system property with mule.queue.objectstoremode=true then the old version of the QueueManager will be used. This * is to maintain backward compatibility in case a customer is relaying on ObjectStore for queue store customization. */ public class DelegateQueueManager implements QueueManager, Lifecycle, MuleContextAware { public static final String MULE_QUEUE_OLD_MODE_KEY = "mule.queue.objectstoremode"; protected final Logger logger = LoggerFactory.getLogger(this.getClass()); private QueueManager delegate; public DelegateQueueManager() { if (isOldModeEnabled()) { logger.info("Using old QueueManager implementation"); delegate = new org.mule.runtime.core.util.queue.objectstore.TransactionalQueueManager(); } else { delegate = new TransactionalQueueManager(); } } @Override public QueueSession getQueueSession() { return delegate.getQueueSession(); } @Override public void setDefaultQueueConfiguration(QueueConfiguration config) { delegate.setDefaultQueueConfiguration(config); } @Override public void setQueueConfiguration(String queueName, QueueConfiguration config) { delegate.setQueueConfiguration(queueName, config); } @Override public void start() throws MuleException { this.delegate.start(); } @Override public void stop() throws MuleException { this.delegate.stop(); } @Override public void dispose() { if (this.delegate instanceof Disposable) { ((Disposable) this.delegate).dispose(); } } @Override public void initialise() throws InitialisationException { if (this.delegate instanceof Initialisable) { ((Initialisable) this.delegate).initialise(); } } @Override public void setMuleContext(MuleContext context) { if (this.delegate instanceof MuleContextAware) { ((MuleContextAware) this.delegate).setMuleContext(context); } } public static boolean isOldModeEnabled() { return Boolean.getBoolean(MULE_QUEUE_OLD_MODE_KEY); } QueueManager getDelegate() { return delegate; } }