EventHubConsumerGroupManager.java

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

package com.microsoft.azure.spring.cloud.context.core.impl;

import com.microsoft.azure.management.Azure;
import com.microsoft.azure.management.eventhub.EventHub;
import com.microsoft.azure.management.eventhub.EventHubConsumerGroup;
import com.microsoft.azure.spring.cloud.context.core.config.AzureProperties;
import com.microsoft.azure.spring.cloud.context.core.util.Tuple;

public class EventHubConsumerGroupManager extends AzureManager<EventHubConsumerGroup, Tuple<EventHub, String>> {

    public EventHubConsumerGroupManager(Azure azure, AzureProperties azureProperties) {
        super(azure, azureProperties);
    }

    @Override
    String getResourceName(Tuple<EventHub, String> key) {
        return key.getSecond();
    }

    @Override
    String getResourceType() {
        return EventHubConsumerGroup.class.getSimpleName();
    }

    @Override
    public EventHubConsumerGroup internalGet(Tuple<EventHub, String> eventHubAndGroup) {
        return eventHubAndGroup.getFirst().listConsumerGroups().stream()
            .filter(c -> c.name().equals(eventHubAndGroup.getSecond())).findAny().orElse(null);
    }

    @Override
    public EventHubConsumerGroup internalCreate(Tuple<EventHub, String> eventHubAndGroup) {
        return azure.eventHubs().consumerGroups().define(eventHubAndGroup.getSecond())
            .withExistingEventHub(eventHubAndGroup.getFirst()).create();
    }
}