/*******************************************************************************
* Copyright (c) 2009, 2010 Progress Software Corporation.
* 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
******************************************************************************/
package org.fusesource.tools.messaging.jms;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import org.fusesource.tools.messaging.DestinationType;
import org.fusesource.tools.messaging.core.IDestinationType;
import org.fusesource.tools.messaging.core.IProvider;
/**
* Abstract implementation of IProvider for JMS. All JMS Providers can extend this class to add
* provider specific functionality
*/
public abstract class JMSProvider implements IProvider, JMSConstants {
private final String providerId;
private final String providerName;
protected List<IDestinationType> supportedTypes = Collections.emptyList();
protected Map<String, String> connectParams = Collections.emptyMap();
protected JMSConnection connection;
public JMSProvider(String providerId, String providerName) {
this.providerId = providerId;
this.providerName = providerName;
init();
}
/**
* Initialize connection parameters and destination types
*/
protected void init() {
initConnectParams();
initTypes();
}
/**
* Clients should override this method to populate the map with provider specific parameters
* like Connection Factory Class etc.,
*/
protected abstract void initConnectParams();
/**
* Clients can override this method to add any additional destination types. Currently
* supporting Queue and Topics
*/
protected void initTypes() {
String destinationTypes[] = { QUEUE_TYPE, TOPIC_TYPE };
supportedTypes = new ArrayList<IDestinationType>();
for (String destinationType : destinationTypes) {
supportedTypes.add(new DestinationType(destinationType));
}
}
public JMSConnection getConnection() {
return connection;
}
public Map<String, String> getConnectionParams() {
return connectParams;
}
public List<IDestinationType> getDestinationTypes() {
return supportedTypes;
}
public String getId() {
return providerId;
}
public String getName() {
return providerName;
}
}