/* * Copyright (c) 2007-2009, 2011, 2012, 2015 Eike Stepper (Berlin, Germany) and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Eike Stepper - initial API and implementation */ package org.eclipse.net4j.jms.internal.server.store; import org.eclipse.net4j.internal.jms.MessageImpl; import org.eclipse.net4j.jms.internal.server.ServerConsumer; import org.eclipse.net4j.jms.internal.server.ServerDestination; import org.eclipse.net4j.jms.internal.server.bundle.OM; import org.eclipse.net4j.jms.server.IDestination; import org.eclipse.net4j.jms.server.IServerConsumer; import org.eclipse.net4j.jms.server.IStoreTransaction; import org.eclipse.net4j.util.om.trace.ContextTracer; import javax.jms.Message; /** * @author Eike Stepper */ public abstract class AbstractTransaction implements IStoreTransaction { public static final String[] NO_DESTINATION_NAMES = new String[0]; public static final long[] NO_CONSUMER_IDS = new long[0]; private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_STORE, AbstractTransaction.class); private AbstractStore store; public AbstractTransaction(AbstractStore store) { this.store = store; } public AbstractStore getStore() { return store; } public String[] getDestinationNames() { if (TRACER.isEnabled()) { TRACER.trace("Getting destination names"); //$NON-NLS-1$ } String[] names = doGetDestinationNames(); if (TRACER.isEnabled()) { TRACER.trace("Got destination names " + names); //$NON-NLS-1$ } return names; } public ServerDestination getDestination(String name) { if (TRACER.isEnabled()) { TRACER.trace("Getting destination " + name); //$NON-NLS-1$ } ServerDestination destination = doGetDestination(name); if (TRACER.isEnabled()) { TRACER.trace("Got destination " + destination); //$NON-NLS-1$ } return destination; } public long[] getConsumerIDs() { if (TRACER.isEnabled()) { TRACER.trace("Getting consumer IDs"); //$NON-NLS-1$ } long[] ids = doGetConsumerIDs(); if (TRACER.isEnabled()) { TRACER.trace("Got consumer IDs " + ids); //$NON-NLS-1$ } return ids; } public ServerConsumer getConsumer(long id) { if (TRACER.isEnabled()) { TRACER.trace("Getting consumer " + id); //$NON-NLS-1$ } ServerConsumer consumer = doGetConsumer(id); if (TRACER.isEnabled()) { TRACER.trace("Got consumer " + consumer); //$NON-NLS-1$ } return consumer; } public void destinationAdded(IDestination destination) { if (TRACER.isEnabled()) { TRACER.trace("Adding destination " + destination); //$NON-NLS-1$ } doDestinationAdded((ServerDestination)destination); if (TRACER.isEnabled()) { TRACER.trace("Added destination " + destination); //$NON-NLS-1$ } } public void destinationRemoved(IDestination destination) { if (TRACER.isEnabled()) { TRACER.trace("Removing destination " + destination); //$NON-NLS-1$ } doDestinationRemoved((ServerDestination)destination); if (TRACER.isEnabled()) { TRACER.trace("Removed destination " + destination); //$NON-NLS-1$ } } public void consumerAdded(IServerConsumer consumer) { if (TRACER.isEnabled()) { TRACER.trace("Adding consumer " + consumer); //$NON-NLS-1$ } doConsumerAdded((ServerConsumer)consumer); if (TRACER.isEnabled()) { TRACER.trace("Added consumer " + consumer); //$NON-NLS-1$ } } public void consumerRemoved(IServerConsumer consumer) { if (TRACER.isEnabled()) { TRACER.trace("Removing consumer " + consumer); //$NON-NLS-1$ } doConsumerRemoved((ServerConsumer)consumer); if (TRACER.isEnabled()) { TRACER.trace("Removed consumer " + consumer); //$NON-NLS-1$ } } public void messageReceived(Message message) { if (TRACER.isEnabled()) { TRACER.trace("Logging received message " + message); //$NON-NLS-1$ } doMessageReceived((MessageImpl)message); if (TRACER.isEnabled()) { TRACER.trace("Logged received message " + message); //$NON-NLS-1$ } } public void messageSent(Message message, long consumerID) { if (TRACER.isEnabled()) { TRACER.trace("Logging sent message " + message); //$NON-NLS-1$ } doMessageSent((MessageImpl)message, consumerID); if (TRACER.isEnabled()) { TRACER.trace("Logged sent message " + message); //$NON-NLS-1$ } } public void messageAcknowledged(Message message, long consumerID) { if (TRACER.isEnabled()) { TRACER.trace("Logging acknowledged message " + message); //$NON-NLS-1$ } doMessageAcknowledged((MessageImpl)message, consumerID); if (TRACER.isEnabled()) { TRACER.trace("Logged acknowledged message " + message); //$NON-NLS-1$ } } protected abstract String[] doGetDestinationNames(); protected abstract ServerDestination doGetDestination(String name); protected abstract long[] doGetConsumerIDs(); protected abstract ServerConsumer doGetConsumer(long id); protected abstract void doDestinationAdded(ServerDestination destination); protected abstract void doDestinationRemoved(ServerDestination destination); protected abstract void doConsumerAdded(ServerConsumer consumer); protected abstract void doConsumerRemoved(ServerConsumer consumer); protected abstract void doMessageReceived(MessageImpl message); protected abstract void doMessageSent(MessageImpl message, long consumerID); protected abstract void doMessageAcknowledged(MessageImpl message, long consumerID); }