@@ -19,11 +19,11 @@ trait CreateQueueDirectives { this: ElasticMQDirectives with QueueURLModule with
1919 queueNameFromParams(p) { queueName =>
2020 val attributes = attributeNameAndValuesReader.read(p)
2121
22- val secondsVisibilityTimeout = attributes.parseOptionalLong(VisibilityTimeoutParameter )
23- .getOrElse(DefaultVisibilityTimeout )
22+ val secondsVisibilityTimeoutOpt = attributes.parseOptionalLong(VisibilityTimeoutParameter )
23+ val secondsVisibilityTimeout = secondsVisibilityTimeoutOpt .getOrElse(DefaultVisibilityTimeout )
2424
25- val secondsDelay = attributes.parseOptionalLong(DelaySecondsAttribute )
26- .getOrElse(DefaultDelay )
25+ val secondsDelayOpt = attributes.parseOptionalLong(DelaySecondsAttribute )
26+ val secondsDelay = secondsDelayOpt .getOrElse(DefaultDelay )
2727
2828 val secondsReceiveMessageWaitTimeOpt = attributes.parseOptionalLong(ReceiveMessageWaitTimeSecondsAttribute )
2929 val secondsReceiveMessageWaitTime = secondsReceiveMessageWaitTimeOpt
@@ -44,9 +44,12 @@ trait CreateQueueDirectives { this: ElasticMQDirectives with QueueURLModule with
4444
4545 val queueData = await(lookupOrCreateQueue(newQueueData))
4646
47- if ((queueData.delay.getStandardSeconds != secondsDelay) ||
48- (queueData.receiveMessageWait.getStandardSeconds != secondsReceiveMessageWaitTime) ||
49- (queueData.defaultVisibilityTimeout.seconds != secondsVisibilityTimeout)) {
47+ // if the request set the attributes compare them against the queue
48+ if ((! secondsDelayOpt.isEmpty && queueData.delay.getStandardSeconds != secondsDelay) ||
49+ (! secondsReceiveMessageWaitTimeOpt.isEmpty
50+ && queueData.receiveMessageWait.getStandardSeconds != secondsReceiveMessageWaitTime) ||
51+ (! secondsVisibilityTimeoutOpt.isEmpty
52+ && queueData.defaultVisibilityTimeout.seconds != secondsVisibilityTimeout)) {
5053 // Special case: the queue existed, but has different attributes
5154 throw new SQSException (" AWS.SimpleQueueService.QueueNameExists" )
5255 }
0 commit comments