diff --git a/provider/notification-azure/src/main/java/org/opengroup/osdu/notification/provider/azure/di/SubscriptionAPIConfigBean.java b/provider/notification-azure/src/main/java/org/opengroup/osdu/notification/provider/azure/di/SubscriptionAPIConfigBean.java new file mode 100644 index 0000000000000000000000000000000000000000..defba2e99c441ea726bade6f38f4bdcb7df23a01 --- /dev/null +++ b/provider/notification-azure/src/main/java/org/opengroup/osdu/notification/provider/azure/di/SubscriptionAPIConfigBean.java @@ -0,0 +1,34 @@ +package org.opengroup.osdu.notification.provider.azure.di; + +import lombok.Data; +import org.opengroup.osdu.core.common.notification.SubscriptionAPIConfig; +import org.opengroup.osdu.notification.provider.interfaces.IAppProperties; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.config.AbstractFactoryBean; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Data +@Component +@ConfigurationProperties +public class SubscriptionAPIConfigBean extends AbstractFactoryBean<SubscriptionAPIConfig> { + + @Autowired + private IAppProperties config; + + private String apiKey; + + @Override + public Class<?> getObjectType() { + return SubscriptionAPIConfig.class; + } + + @Override + protected SubscriptionAPIConfig createInstance() throws Exception { + return SubscriptionAPIConfig + .builder() + .rootUrl(config.getRegisterAPI()) + .apiKey(apiKey) + .build(); + } +} diff --git a/provider/notification-azure/src/main/java/org/opengroup/osdu/notification/provider/azure/di/SubscriptionFactoryAzure.java b/provider/notification-azure/src/main/java/org/opengroup/osdu/notification/provider/azure/di/SubscriptionFactoryAzure.java new file mode 100644 index 0000000000000000000000000000000000000000..aba2a2ee4f0e25e308ed6a0cc38165f850c3e8d7 --- /dev/null +++ b/provider/notification-azure/src/main/java/org/opengroup/osdu/notification/provider/azure/di/SubscriptionFactoryAzure.java @@ -0,0 +1,36 @@ +package org.opengroup.osdu.notification.provider.azure.di; + +import org.opengroup.osdu.core.common.http.IHttpClient; +import org.opengroup.osdu.core.common.model.http.DpsHeaders; +import org.opengroup.osdu.core.common.notification.ISubscriptionFactory; +import org.opengroup.osdu.core.common.notification.ISubscriptionService; +import org.opengroup.osdu.core.common.notification.SubscriptionAPIConfig; +import org.opengroup.osdu.core.common.notification.SubscriptionService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.context.annotation.Primary; +import org.springframework.stereotype.Component; + +import java.util.Objects; + +@Component +@Primary +@ConditionalOnProperty(value = "azure.entitlements.factory.enabled", havingValue = "true", matchIfMissing = true) +public class SubscriptionFactoryAzure implements ISubscriptionFactory { + + private final SubscriptionAPIConfig config; + private final IHttpClient client; + + @Autowired + public SubscriptionFactoryAzure(final SubscriptionAPIConfig subscriptionConfig, final IHttpClient httpClient) { + Objects.requireNonNull(subscriptionConfig, "SubscriptionAPIConfig cannot be null"); + this.config = subscriptionConfig; + this.client = httpClient; + } + + @Override + public ISubscriptionService create(final DpsHeaders dpsHeaders) { + Objects.requireNonNull(dpsHeaders, "headers cannot be null"); + return new SubscriptionService(this.config, this.client, dpsHeaders); + } +}