/**
* Copyright (C) 2011 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.transport.jms;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.fudgemsg.FudgeContext;
import org.fudgemsg.FudgeMsg;
import org.fudgemsg.MutableFudgeMsg;
import com.opengamma.transport.EndPointDescriptionProvider;
/**
* An implementation of {@link EndPointDescriptionProvider} that describes a JMS topic.
*/
public class JmsEndPointDescriptionProvider implements EndPointDescriptionProvider {
/**
* Type of connection. Always {@link #TYPE_VALUE}.
*/
public static final String TYPE_KEY = "type";
/**
* Value of the type of connection.
*/
public static final String TYPE_VALUE = "Jms";
/**
* Topic name(s).
*/
public static final String TOPIC_KEY = "topic";
private final List<String> _topics;
public JmsEndPointDescriptionProvider(final String topic) {
_topics = Collections.singletonList(topic);
}
public JmsEndPointDescriptionProvider(final List<String> topics) {
_topics = new ArrayList<String>(topics);
}
@Override
public FudgeMsg getEndPointDescription(final FudgeContext fudgeContext) {
final MutableFudgeMsg msg = fudgeContext.newMessage();
msg.add(TYPE_KEY, TYPE_VALUE);
for (String topic : _topics) {
msg.add(TOPIC_KEY, topic);
}
return msg;
}
/**
* Default message production allows simple use in a configuration resource.
*
* @param fudgeContext the Fudge context
* @return the end point description message, as returned by {@link #getEndPointDescription}
*/
public FudgeMsg toFudgeMsg(final FudgeContext fudgeContext) {
return getEndPointDescription(fudgeContext);
}
}