Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT License. See License.txt in the project root for license information.
/** * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for * license information. */
package com.microsoft.azure.management.servicebus.implementation; import com.microsoft.azure.management.apigeneration.LangDefinition; import com.microsoft.azure.management.resources.fluentcore.arm.Region; import com.microsoft.azure.management.resources.fluentcore.arm.models.implementation.IndependentChildResourceImpl; import com.microsoft.azure.management.resources.fluentcore.utils.Utils; import com.microsoft.azure.management.servicebus.EntityStatus; import com.microsoft.azure.management.servicebus.ServiceBusSubscription; import com.microsoft.azure.management.servicebus.Topic; import org.joda.time.DateTime; import org.joda.time.Period; import rx.Observable; import rx.functions.Func1;
Implementation for Subscription.
/** * Implementation for Subscription. */
@LangDefinition class ServiceBusSubscriptionImpl extends IndependentChildResourceImpl<ServiceBusSubscription, Topic, SubscriptionInner, ServiceBusSubscriptionImpl, ServiceBusManager> implements ServiceBusSubscription, ServiceBusSubscription.Definition, ServiceBusSubscription.Update { private final String namespaceName; private final Region region; ServiceBusSubscriptionImpl(String resourceGroupName, String namespaceName, String topicName, String name, Region region, SubscriptionInner inner, ServiceBusManager manager) { super(name, inner, manager); this.namespaceName = namespaceName; this.region = region; this.withExistingParentResource(resourceGroupName, topicName); if (inner.location() == null) { inner.withLocation(this.region.toString()); } } @Override public DateTime createdAt() { return this.inner().createdAt(); } @Override public DateTime accessedAt() { return this.inner().accessedAt(); } @Override public DateTime updatedAt() { return this.inner().updatedAt(); } @Override public boolean isBatchedOperationsEnabled() { return Utils.toPrimitiveBoolean(this.inner().enableBatchedOperations()); } @Override public boolean isDeadLetteringEnabledForExpiredMessages() { return Utils.toPrimitiveBoolean(this.inner().deadLetteringOnMessageExpiration()); } @Override public boolean isSessionEnabled() { return Utils.toPrimitiveBoolean(this.inner().requiresSession()); } @Override public long lockDurationInSeconds() { if (this.inner().lockDuration() == null) { return 0; } TimeSpan timeSpan = TimeSpan.parse(this.inner().lockDuration()); return (long) timeSpan.totalSeconds(); } @Override public long deleteOnIdleDurationInMinutes() { if (this.inner().autoDeleteOnIdle() == null) { return 0; } TimeSpan timeSpan = TimeSpan.parse(this.inner().autoDeleteOnIdle()); return (long) timeSpan.totalMinutes(); } @Override public Period defaultMessageTtlDuration() { if (this.inner().defaultMessageTimeToLive() == null) { return null; } TimeSpan timeSpan = TimeSpan.parse(this.inner().defaultMessageTimeToLive()); return new Period() .withDays(timeSpan.days()) .withHours(timeSpan.hours()) .withMinutes(timeSpan.minutes()) .withSeconds(timeSpan.seconds()) .withMillis(timeSpan.milliseconds()); } @Override public int maxDeliveryCountBeforeDeadLetteringMessage() { return Utils.toPrimitiveInt(this.inner().maxDeliveryCount()); } @Override public long messageCount() { return Utils.toPrimitiveLong(this.inner().messageCount()); } @Override public long activeMessageCount() { if (this.inner().countDetails() == null || this.inner().countDetails().activeMessageCount() == null) { return 0; } return Utils.toPrimitiveLong(this.inner().countDetails().activeMessageCount()); } @Override public long deadLetterMessageCount() { if (this.inner().countDetails() == null || this.inner().countDetails().deadLetterMessageCount() == null) { return 0; } return Utils.toPrimitiveLong(this.inner().countDetails().deadLetterMessageCount()); } @Override public long scheduledMessageCount() { if (this.inner().countDetails() == null || this.inner().countDetails().scheduledMessageCount() == null) { return 0; } return Utils.toPrimitiveLong(this.inner().countDetails().scheduledMessageCount()); } @Override public long transferDeadLetterMessageCount() { if (this.inner().countDetails() == null || this.inner().countDetails().transferDeadLetterMessageCount() == null) { return 0; } return Utils.toPrimitiveLong(this.inner().countDetails().transferDeadLetterMessageCount()); } @Override public long transferMessageCount() { if (this.inner().countDetails() == null || this.inner().countDetails().transferMessageCount() == null) { return 0; } return Utils.toPrimitiveLong(this.inner().countDetails().transferMessageCount()); } @Override public EntityStatus status() { return this.inner().status(); } @Override public boolean isDeadLetteringEnabledForFilterEvaluationFailedMessages() { return Utils.toPrimitiveBoolean(this.inner().deadLetteringOnFilterEvaluationExceptions()); } @Override public ServiceBusSubscriptionImpl withDeleteOnIdleDurationInMinutes(int durationInMinutes) { TimeSpan timeSpan = new TimeSpan().withMinutes(durationInMinutes); this.inner().withAutoDeleteOnIdle(timeSpan.toString()); return this; } @Override public ServiceBusSubscriptionImpl withMessageLockDurationInSeconds(int durationInSeconds) { TimeSpan timeSpan = new TimeSpan().withSeconds(durationInSeconds); this.inner().withLockDuration(timeSpan.toString()); return this; } @Override public ServiceBusSubscriptionImpl withDefaultMessageTTL(Period ttl) { this.inner().withDefaultMessageTimeToLive(TimeSpan.fromPeriod(ttl).toString()); return this; } @Override public ServiceBusSubscriptionImpl withSession() { this.inner().withRequiresSession(true); return this; } @Override public ServiceBusSubscriptionImpl withoutSession() { this.inner().withRequiresSession(false); return this; } @Override public ServiceBusSubscriptionImpl withMessageBatching() { this.inner().withEnableBatchedOperations(true); return this; } @Override public ServiceBusSubscriptionImpl withoutMessageBatching() { this.inner().withEnableBatchedOperations(false); return this; } @Override public ServiceBusSubscriptionImpl withMessageMovedToDeadLetterSubscriptionOnMaxDeliveryCount(int deliveryCount) { this.inner().withMaxDeliveryCount(deliveryCount); return this; } @Override public ServiceBusSubscriptionImpl withMessageMovedToDeadLetterSubscriptionOnFilterEvaluationException() { this.inner().withDeadLetteringOnFilterEvaluationExceptions(true); return this; } @Override public ServiceBusSubscriptionImpl withoutMessageMovedToDeadLetterSubscriptionOnFilterEvaluationException() { this.inner().withDeadLetteringOnFilterEvaluationExceptions(false); return this; } @Override public ServiceBusSubscriptionImpl withExpiredMessageMovedToDeadLetterSubscription() { this.inner().withDeadLetteringOnMessageExpiration(true); return this; } @Override public ServiceBusSubscriptionImpl withoutExpiredMessageMovedToDeadLetterSubscription() { this.inner().withDeadLetteringOnMessageExpiration(false); return this; } @Override public ServiceBusSubscriptionImpl withMessageMovedToDeadLetterQueueOnMaxDeliveryCount(int deliveryCount) { this.inner().withMaxDeliveryCount(deliveryCount); return this; } @Override protected Observable<SubscriptionInner> getInnerAsync() { return this.manager().inner().subscriptions() .getAsync(this.resourceGroupName(), this.namespaceName, this.parentName, this.name()); } @Override protected Observable<ServiceBusSubscription> createChildResourceAsync() { final ServiceBusSubscription self = this; return this.manager().inner().subscriptions() .createOrUpdateAsync(this.resourceGroupName(), this.namespaceName, this.parentName, this.name(), this.inner()) .map(new Func1<SubscriptionInner, ServiceBusSubscription>() { @Override public ServiceBusSubscription call(SubscriptionInner inner) { setInner(inner); return self; } }); } }