Skip to content
This repository has been archived by the owner on Mar 6, 2020. It is now read-only.

Commit

Permalink
fixed named configuration clashes
Browse files Browse the repository at this point in the history
  • Loading branch information
musketyr committed Sep 19, 2019
1 parent 122f21a commit 49d0a33
Show file tree
Hide file tree
Showing 20 changed files with 141 additions and 60 deletions.
10 changes: 5 additions & 5 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
version = 1.2.0
micronautVersion = 1.2.0
version = 1.2.2
micronautVersion = 1.2.2
gruVersion = 0.8.1
druVersion = 0.6.0
groovyVersion = 2.5.8
spockVersion = 1.3-groovy-2.5
awsSdkVersion = 1.11.615
awsSdk2Version = 2.7.28
testcontainersVersion = 1.12.0
awsSdkVersion = 1.11.633
awsSdk2Version = 2.9.1
testcontainersVersion = 1.12.1

# this should be aligned to Micronaut version
# required for AWS CBOR marshalling
Expand Down
Empty file modified gradlew.bat
100644 → 100755
Empty file.
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.agorapulse.micronaut.aws.kinesis

import com.amazonaws.services.kinesis.AmazonKinesis
import groovy.transform.CompileStatic
import io.micronaut.context.annotation.ConfigurationProperties
import io.micronaut.context.annotation.Requires

import javax.inject.Named

/**
* Default Kinesis configuration, published with <code>default</code> named qualifier.
*/
@Named('default')
@CompileStatic
@ConfigurationProperties('aws.kinesis')
@Requires(classes = AmazonKinesis)
class DefaultKinesisConfiguration extends KinesisConfiguration {

}
Original file line number Diff line number Diff line change
@@ -1,22 +1,16 @@
package com.agorapulse.micronaut.aws.kinesis

import com.agorapulse.micronaut.aws.DefaultRegionAndEndpointConfiguration
import com.amazonaws.services.kinesis.AmazonKinesis
import groovy.transform.CompileStatic
import io.micronaut.context.annotation.ConfigurationProperties
import io.micronaut.context.annotation.Requires

import javax.inject.Named
import javax.validation.constraints.NotEmpty

/**
* Default Kinesis configuration, published with <code>default</code> named qualifier.
*/
@Named('default')
@CompileStatic
@ConfigurationProperties('aws.kinesis')
@Requires(classes = AmazonKinesis)
class KinesisConfiguration extends DefaultRegionAndEndpointConfiguration {
@SuppressWarnings('AbstractClassWithoutAbstractMethod')
abstract class KinesisConfiguration extends DefaultRegionAndEndpointConfiguration {

@NotEmpty String stream = ''

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import com.amazonaws.services.kinesis.AmazonKinesisClientBuilder;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.micronaut.configuration.aws.AWSClientConfiguration;
import io.micronaut.context.annotation.Bean;
import io.micronaut.context.annotation.EachBean;
import io.micronaut.context.annotation.Factory;
import io.micronaut.context.annotation.Requires;
Expand All @@ -17,8 +16,8 @@
@Requires(classes = AmazonKinesis.class)
public class KinesisFactory {

@Bean
@Singleton
@EachBean(KinesisConfiguration.class)
AmazonKinesis kinesis(
AWSClientConfiguration clientConfiguration,
AWSCredentialsProvider credentialsProvider,
Expand All @@ -31,8 +30,13 @@ AmazonKinesis kinesis(
.build();
}

@Singleton
@EachBean(KinesisConfiguration.class)
KinesisService simpleQueueService(AmazonKinesis kinesis, KinesisConfiguration configuration, ObjectMapper mapper) {
KinesisService simpleQueueService(
AmazonKinesis kinesis,
KinesisConfiguration configuration,
ObjectMapper mapper
) {
return new DefaultKinesisService(kinesis, configuration, mapper);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.agorapulse.micronaut.aws.kinesis.worker

import com.amazonaws.services.kinesis.clientlibrary.lib.worker.KinesisClientLibConfiguration
import groovy.transform.CompileStatic
import io.micronaut.context.annotation.ConfigurationProperties
import io.micronaut.context.annotation.Requires
import io.micronaut.context.annotation.Value

import javax.inject.Named

/**
* Default configuration for Kinesis listener.
*/
@CompileStatic
@Named('default')
@ConfigurationProperties('aws.kinesis.listener')
@Requires(classes = KinesisClientLibConfiguration)
@SuppressWarnings('NoWildcardImports')
class DefaultKinesisClientConfiguration extends KinesisClientConfiguration {

DefaultKinesisClientConfiguration(
@Value('${aws.kinesis.application.name:}') String applicationName,
@Value('${aws.kinesis.worker.id:}') String workerId
) {
super(applicationName, workerId)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,7 @@ import com.amazonaws.services.kinesis.clientlibrary.lib.worker.KinesisClientLibC
import com.amazonaws.services.kinesis.clientlibrary.lib.worker.SimpleRecordsFetcherFactory
import com.amazonaws.services.kinesis.metrics.interfaces.MetricsLevel
import groovy.transform.CompileStatic
import io.micronaut.context.annotation.ConfigurationProperties
import io.micronaut.context.annotation.Requires
import io.micronaut.context.annotation.Value

import javax.inject.Named
import javax.validation.constraints.Min
import javax.validation.constraints.NotEmpty

Expand All @@ -21,11 +17,8 @@ import static com.amazonaws.services.kinesis.clientlibrary.lib.worker.KinesisCli
* Default configuration for Kinesis listener.
*/
@CompileStatic
@Named('default')
@ConfigurationProperties('aws.kinesis.listener')
@Requires(classes = KinesisClientLibConfiguration)
@SuppressWarnings('NoWildcardImports')
class KinesisClientConfiguration {
@SuppressWarnings(['NoWildcardImports', 'AbstractClassWithoutAbstractMethod'])
abstract class KinesisClientConfiguration {

@NotEmpty
String applicationName
Expand Down Expand Up @@ -77,10 +70,7 @@ class KinesisClientConfiguration {
long listShardsBackoffTimeInMillis = DEFAULT_LIST_SHARDS_BACKOFF_TIME_IN_MILLIS
int maxListShardsRetryAttempts = DEFAULT_MAX_LIST_SHARDS_RETRY_ATTEMPTS

KinesisClientConfiguration(
@Value('${aws.kinesis.application.name:}') String applicationName,
@Value('${aws.kinesis.worker.id:}') String workerId
) {
protected KinesisClientConfiguration(String applicationName, String workerId) {
this.applicationName = applicationName
if (workerId) {
this.workerId = workerId
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,14 @@
import io.micronaut.context.annotation.Requires;
import io.micronaut.context.annotation.Value;

import javax.inject.Singleton;
import java.util.Optional;

@Factory
@Requires(classes = KinesisClientLibConfiguration.class)
public class KinesisClientConfigurationFactory {

@Singleton
@Requires(property = "aws.kinesis")
@EachBean(KinesisClientConfiguration.class)
KinesisClientLibConfiguration kinesisClientLibConfiguration(
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.agorapulse.micronaut.aws.s3

import com.amazonaws.services.s3.AmazonS3
import groovy.transform.CompileStatic
import io.micronaut.context.annotation.ConfigurationProperties
import io.micronaut.context.annotation.Requires

import javax.inject.Named

/**
* Default simple storage service configuration.
*/
@Named('default')
@CompileStatic
@ConfigurationProperties('aws.s3')
@Requires(classes = AmazonS3)
class DefaultSimpleStorageServiceConfiguration extends SimpleStorageServiceConfiguration {

}
Original file line number Diff line number Diff line change
@@ -1,22 +1,16 @@
package com.agorapulse.micronaut.aws.s3

import com.agorapulse.micronaut.aws.DefaultRegionAndEndpointConfiguration
import com.amazonaws.services.s3.AmazonS3
import groovy.transform.CompileStatic
import io.micronaut.context.annotation.ConfigurationProperties
import io.micronaut.context.annotation.Requires

import javax.inject.Named
import javax.validation.constraints.NotEmpty

/**
* Default simple storage service configuration.
*/
@Named('default')
@CompileStatic
@ConfigurationProperties('aws.s3')
@Requires(classes = AmazonS3)
class SimpleStorageServiceConfiguration extends DefaultRegionAndEndpointConfiguration {
@SuppressWarnings('AbstractClassWithoutAbstractMethod')
abstract class SimpleStorageServiceConfiguration extends DefaultRegionAndEndpointConfiguration {

@NotEmpty String bucket = ''

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,18 @@
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import io.micronaut.configuration.aws.AWSClientConfiguration;
import io.micronaut.context.annotation.*;
import io.micronaut.context.annotation.EachBean;
import io.micronaut.context.annotation.Factory;
import io.micronaut.context.annotation.Requires;

import javax.inject.Singleton;

@Factory
@Requires(classes = AmazonS3.class)
public class SimpleStorageServiceFactory {

@Bean
@Singleton
@EachBean(SimpleStorageServiceConfiguration.class)
AmazonS3 amazonS3(
AWSClientConfiguration clientConfiguration,
AWSCredentialsProvider credentialsProvider,
Expand All @@ -27,6 +29,7 @@ AmazonS3 amazonS3(
.build();
}

@Singleton
@EachBean(SimpleStorageServiceConfiguration.class)
SimpleStorageService simpleStorageService(AmazonS3 s3, SimpleStorageServiceConfiguration configuration) {
return new DefaultSimpleStorageService(s3, configuration.getBucket());
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.agorapulse.micronaut.aws.sns

import com.amazonaws.services.sns.AmazonSNS
import groovy.transform.CompileStatic
import io.micronaut.context.annotation.ConfigurationProperties
import io.micronaut.context.annotation.Requires

import javax.inject.Named

/**
* Default simple queue service configuration.
*/
@Named('default')
@CompileStatic
@ConfigurationProperties('aws.sns')
@Requires(classes = AmazonSNS)
class DefaultSimpleNotificationServiceConfiguration extends SimpleNotificationServiceConfiguration {

}
Original file line number Diff line number Diff line change
@@ -1,22 +1,16 @@
package com.agorapulse.micronaut.aws.sns

import com.agorapulse.micronaut.aws.DefaultRegionAndEndpointConfiguration
import com.amazonaws.services.sns.AmazonSNS
import groovy.transform.CompileStatic
import io.micronaut.context.annotation.ConfigurationProperties
import io.micronaut.context.annotation.Requires

import javax.inject.Named
import javax.validation.constraints.NotEmpty

/**
* Default simple queue service configuration.
*/
@Named('default')
@CompileStatic
@ConfigurationProperties('aws.sns')
@Requires(classes = AmazonSNS)
class SimpleNotificationServiceConfiguration extends DefaultRegionAndEndpointConfiguration {
@SuppressWarnings('AbstractClassWithoutAbstractMethod')
abstract class SimpleNotificationServiceConfiguration extends DefaultRegionAndEndpointConfiguration {

static class Application {
@NotEmpty String arn
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import com.amazonaws.services.sns.AmazonSNSClientBuilder;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.micronaut.configuration.aws.AWSClientConfiguration;
import io.micronaut.context.annotation.Bean;
import io.micronaut.context.annotation.EachBean;
import io.micronaut.context.annotation.Factory;
import io.micronaut.context.annotation.Requires;
Expand All @@ -17,8 +16,8 @@
@Requires(classes = AmazonSNS.class)
public class SimpleNotificationServiceFactory {

@Bean
@Singleton
@EachBean(SimpleNotificationServiceConfiguration.class)
AmazonSNS amazonSNS(
AWSClientConfiguration clientConfiguration,
AWSCredentialsProvider credentialsProvider,
Expand All @@ -31,6 +30,7 @@ AmazonSNS amazonSNS(
.build();
}

@Singleton
@EachBean(SimpleNotificationServiceConfiguration.class)
SimpleNotificationService simpleQueueService(AmazonSNS sqs, SimpleNotificationServiceConfiguration configuration, ObjectMapper mapper) {
return new DefaultSimpleNotificationService(sqs, configuration, mapper);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.agorapulse.micronaut.aws.sqs

import com.amazonaws.services.sqs.AmazonSQS
import groovy.transform.CompileStatic
import io.micronaut.context.annotation.ConfigurationProperties
import io.micronaut.context.annotation.Requires

import javax.inject.Named

/**
* Default configuration for Simple Queue Service.
*/
@Named('default')
@CompileStatic
@ConfigurationProperties('aws.sqs')
@Requires(classes = AmazonSQS)
class DefaultSimpleQueueServiceConfiguration extends SimpleQueueServiceConfiguration {

}
Original file line number Diff line number Diff line change
@@ -1,22 +1,16 @@
package com.agorapulse.micronaut.aws.sqs

import com.agorapulse.micronaut.aws.RegionAndEndpointConfiguration
import com.amazonaws.services.sqs.AmazonSQS
import groovy.transform.CompileStatic
import io.micronaut.context.annotation.ConfigurationProperties
import io.micronaut.context.annotation.Requires

import javax.annotation.Nullable
import javax.inject.Named

/**
* Default configuration for Simple Queue Service.
*/
@Named('default')
@CompileStatic
@ConfigurationProperties('aws.sqs')
@Requires(classes = AmazonSQS)
class SimpleQueueServiceConfiguration extends QueueConfiguration implements RegionAndEndpointConfiguration {
@SuppressWarnings('AbstractClassWithoutAbstractMethod')
abstract class SimpleQueueServiceConfiguration extends QueueConfiguration implements RegionAndEndpointConfiguration {

String queueNamePrefix = ''
boolean autoCreateQueue = false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@
@Requires(classes = AmazonSQS.class)
public class SimpleQueueServiceFactory {

@Bean
@Singleton
@EachBean(SimpleQueueServiceConfiguration.class)
AmazonSQS amazonSQS(
AWSClientConfiguration clientConfiguration,
AWSCredentialsProvider credentialsProvider,
Expand All @@ -27,6 +27,7 @@ AmazonSQS amazonSQS(
.build();
}

@Singleton
@EachBean(SimpleQueueServiceConfiguration.class)
SimpleQueueService simpleQueueService(AmazonSQS sqs, SimpleQueueServiceConfiguration configuration) {
return new DefaultSimpleQueueService(sqs, configuration);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ class KinesisServiceSpec extends Specification {
.withCredentials(localstack.defaultCredentialsProvider)
.build()

service = new DefaultKinesisService(kinesis, new KinesisConfiguration(stream: STREAM, consumerFilterKey: 'test_'), MAPPER)
service = new DefaultKinesisService(kinesis, new DefaultKinesisConfiguration(stream: STREAM, consumerFilterKey: 'test_'), MAPPER)
}

void 'new default stream'() {
Expand Down
Loading

0 comments on commit 49d0a33

Please sign in to comment.