package net.lr.karaf.jms.command; import net.lr.karaf.jms.service.JmsService; import org.apache.felix.gogo.commands.Action; import org.apache.felix.gogo.commands.Argument; import org.apache.felix.gogo.commands.Command; import org.apache.felix.gogo.commands.Option; import org.apache.felix.service.command.CommandSession; @Command(scope = "jms", name = "move", description = "move one or more messages from a queue to another destination") public class MoveCommand implements Action { @Argument(index = 0, name = "queueName", required = true, description = "queue name", multiValued = false) String queueName; @Argument(index = 1, name = "destName", required = true, description = "destination to send to", multiValued = false) String destName; @Argument(index = 2, name = "messageId", required = false, description = "Message ID", multiValued = false) String messageId; @Option(name = "-s", description = "JMS Selector for the messages to move") String selector; @Option(name = "-a", description = "Move all messages") boolean all; private JmsService jmsService; @Override public Object execute(CommandSession session) throws Exception { if (all) { selector = ""; } else if (messageId != null) { selector = String.format("JMSMessageID = '%s'", messageId); } else if (selector == null){ throw new RuntimeException("You have to use either -all, -sel or a message id"); } int numDeleted = jmsService.deleteMessages(queueName, selector); System.out.println(numDeleted + " messages deleted from queue " + queueName + " using selector " + selector); return null; } public void setJmsService(JmsService jmsService) { this.jmsService = jmsService; } }