All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.windowsazure.samples.queue.AzureQueueManager Maven / Gradle / Ivy

package com.windowsazure.samples.queue;

import java.util.Date;

import com.windowsazure.samples.MetadataCollection;
import com.windowsazure.samples.authentication.AuthenticationToken;
import com.windowsazure.samples.internal.AzureManager;
import com.windowsazure.samples.internal.AzureOperation;
import com.windowsazure.samples.internal.AzureStrategy;
import com.windowsazure.samples.internal.AzureStrategyContext;
import com.windowsazure.samples.internal.UnableToBuildStrategyException;
import com.windowsazure.samples.internal.authentication.DirectConnectToken;
import com.windowsazure.samples.internal.authentication.MockToken;
import com.windowsazure.samples.internal.authentication.ProxyToken;
import com.windowsazure.samples.internal.mock.MockQueueStrategy;
import com.windowsazure.samples.internal.queue.AzureQueueMetadataBuilder;
import com.windowsazure.samples.internal.queue.DirectConnectQueueStrategy;
import com.windowsazure.samples.internal.queue.ProxyQueueStrategy;
import com.windowsazure.samples.internal.queue.PutMessageDOMBuilder;
import com.windowsazure.samples.internal.queue.QueueCollectionDOMAdapter;
import com.windowsazure.samples.internal.queue.QueueMessageCollectionDOMAdapter;
import com.windowsazure.samples.internal.queue.QueueOperationResponseAdapter;


public class AzureQueueManager extends AzureManager implements QueueReader, QueueWriter {

	public AzureQueueManager(AuthenticationToken token)
		throws Exception {
		
		super(token);
	}
	
	@Override
	public QueueOperationResponse clearMessages(String queueName) {
		try
		{
			AzureStrategyContext context = new AzureStrategyContext()
				.setOperation(AzureOperation.ClearMessages)
				.setDate(new Date())
				.setQueueName(queueName);
			
			return strategy.execute(context, QueueOperationResponseAdapter.class);
		}
		catch (Exception e)
		{
			QueueOperationResponse response = new QueueOperationResponse();
			response.setException(e);
			return response;
		}
	}
	
	@Override
	public QueueOperationResponse createQueue(String queueName) {
		return createQueue(queueName, null);
	}

	@Override
	public QueueOperationResponse createQueue(String queueName, MetadataCollection metadata) {
		try
		{
			AzureStrategyContext context = new AzureStrategyContext()
				.setOperation(AzureOperation.CreateQueue)
				.setDate(new Date())
				.setMetadata(metadata)
				.setQueueName(queueName);
			
			return strategy.execute(context, QueueOperationResponseAdapter.class);
		}
		catch (Exception e)
		{
			QueueOperationResponse response = new QueueOperationResponse();
			response.setException(e);
			return response;
		}
	}
	
	@Override
	public QueueOperationResponse deleteMessage(String queueName, String messageId, String popReceipt) {
		try
		{
			AzureStrategyContext context = new AzureStrategyContext()
				.setOperation(AzureOperation.DeleteMessage)
				.setDate(new Date())
				.setMessageId(messageId)
				.setPopReceipt(popReceipt)
				.setQueueName(queueName);
			
			return strategy.execute(context, QueueOperationResponseAdapter.class);
		}
		catch (Exception e)
		{
			QueueOperationResponse response = new QueueOperationResponse();
			response.setException(e);
			return response;
		}
	}

	@Override
	public QueueOperationResponse deleteQueue(String queueName) {
		try
		{
			AzureStrategyContext context = new AzureStrategyContext()
				.setOperation(AzureOperation.DeleteQueue)
				.setDate(new Date())
				.setQueueName(queueName);
			
			return strategy.execute(context, QueueOperationResponseAdapter.class);
		}
		catch (Exception e)
		{
			QueueOperationResponse response = new QueueOperationResponse();
			response.setException(e);
			return response;
		}
	}
	
	@Override
	public AzureQueueMessageCollection getMessages(String queueName, Integer numberOfMessages, Integer visibilityTimeout) {
		try
		{
			AzureStrategyContext context = new AzureStrategyContext()
				.setOperation(AzureOperation.GetMessages)
				.setDate(new Date())
				.setNumberOfMessages((numberOfMessages != null) ? numberOfMessages : NUMBER_OF_MESSAGES_DEFAULT)
				.setQueueName(queueName)
				.setVisibilityTimeout((visibilityTimeout != null) ? visibilityTimeout : VISIBILITY_TIMEOUT_DEFAULT);
			
			return strategy.execute(context, QueueMessageCollectionDOMAdapter.class);
		}
		catch (Exception e)
		{
			AzureQueueMessageCollection collection = new AzureQueueMessageCollection();
			collection.setException(e);
			return collection;
		}
	}
	
	@Override
	public AzureQueueMetadata getQueueMetadata(String queueName) {
		try
		{
			AzureStrategyContext context = new AzureStrategyContext()
				.setOperation(AzureOperation.GetQueueMetadata)
				.setDate(new Date())
				.setQueueName(queueName);
			
			AzureQueueMetadata metadata =  strategy.execute(context, AzureQueueMetadataBuilder.class);
			metadata.setQueueName(queueName);
			return metadata;
		}
		catch (Exception e)
		{
			AzureQueueMetadata metadata = new AzureQueueMetadata();
			metadata.setException(e);
			return metadata;
		}
	}
	
	@Override
	public AzureQueueCollection listAllQueues() {
		return listQueues(null, null, null);
	}
	
	@Override
	public AzureQueueCollection listQueues(String prefix, String marker, Integer maxResults) {
		try
		{
			if (maxResults == null)
				maxResults = 5000;
			
			AzureStrategyContext context = new AzureStrategyContext()
				.setOperation(AzureOperation.ListQueues)
				.setDate(new Date())
				.setMaxResults(maxResults);
			
			return strategy.execute(context, QueueCollectionDOMAdapter.class);
		}
		catch (Exception e)
		{
			AzureQueueCollection collection = new AzureQueueCollection();
			collection.setException(e);
			return collection;
		}
	}
	
	@Override
	public AzureQueueMessageCollection peekMessages(String queueName, Integer numberOfMessages) {
		try
		{
			AzureStrategyContext context = new AzureStrategyContext()
				.setOperation(AzureOperation.PeekMessages)
				.setDate(new Date())
				.setNumberOfMessages((numberOfMessages != null) ? numberOfMessages : NUMBER_OF_MESSAGES_DEFAULT)
				.setQueueName(queueName);
			
			return strategy.execute(context, QueueMessageCollectionDOMAdapter.class);
		}
		catch (Exception e)
		{
			AzureQueueMessageCollection collection = new AzureQueueMessageCollection();
			collection.setException(e);
			return collection;
		}
	}
	
	@Override
	public QueueOperationResponse putMessage(String queueName, String messageText, Integer timeToLiveInterval) {
		try
		{
			String httpBody = new PutMessageDOMBuilder(messageText).getXmlString(false);
			
			AzureStrategyContext context = new AzureStrategyContext()
				.setOperation(AzureOperation.PutMessage)
				.setDate(new Date())
				.setHttpBody(httpBody)
				.setQueueName(queueName)
				.setTimeToLiveInterval((timeToLiveInterval != null) ? timeToLiveInterval : TIME_TO_LIVE_INTERVAL_DEFAULT);
			
			return strategy.execute(context, QueueOperationResponseAdapter.class);
		}
		catch (Exception e)
		{
			QueueOperationResponse response = new QueueOperationResponse();
			response.setException(e);
			return response;
		}
	}
	
	@Override
	public QueueOperationResponse setQueueMetadata(String queueName, MetadataCollection metadata) {
		try
		{
			AzureStrategyContext context = new AzureStrategyContext()
				.setOperation(AzureOperation.SetQueueMetadata)
				.setDate(new Date())
				.setMetadata(metadata)
				.setQueueName(queueName);
			
			return  strategy.execute(context, QueueOperationResponseAdapter.class);
		}
		catch (Exception e)
		{
			QueueOperationResponse response = new QueueOperationResponse();
			response.setException(e);
			return response;
		}
	}

	@Override
	protected AzureStrategy buildStrategy(AuthenticationToken token)
		throws UnableToBuildStrategyException {
		
		if (token instanceof DirectConnectToken)
			return new DirectConnectQueueStrategy((DirectConnectToken) token);
		
		if (token instanceof ProxyToken)
			return new ProxyQueueStrategy((ProxyToken) token);
		
		if (token instanceof MockToken)
			return new MockQueueStrategy((MockToken) token);
		
		throw new UnableToBuildStrategyException();
	}

	private static final int NUMBER_OF_MESSAGES_DEFAULT = 1;
	private static final int TIME_TO_LIVE_INTERVAL_DEFAULT = /* 7 days (in seconds) */ 7 * 24 * 60 * 60;
	private static final int VISIBILITY_TIMEOUT_DEFAULT = /* in seconds */ 30;
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy