awslabs / amazon-dynamodb-lock-client

The AmazonDynamoDBLockClient is a general purpose distributed locking library built on top of DynamoDB. It supports both coarse-grained and fine-grained locking.
Other
467 stars 85 forks source link

Package is the same as DynamoDB client #11

Open choeflake opened 5 years ago

choeflake commented 5 years ago

The core DynamoDB client classes are located in com.amazonaws.services.dynamodbv2 and sub packages. The Lock Client classes are also located in com.amazonaws.services.dynamodbv2. This causes difficulties when using the library in an OSGi environment. For OSGi environments each library has to define which packages are imported and exported. When the packages are the same, the Lock Client library could not define an import for that package because it provides classes by itself in the same library. This confuses the OSGi classloader.

Please move the Lock Client packages to a sub package like com.amazonaws.services.dynamodbv2.locking. Another solution is to embed the Lock Client in the Java SDK.

amcp commented 5 years ago

You can backport your dependency on the lock client as part of your build to change the package name on your side. The licenses of the lock client and the AWS SDK are different, and given that the lock client has a strong application layer component, I do not think the AWS SDK is the right place for the lock client. Please circle back if the solution I proposed worked, or if you found a different workaround.

choeflake commented 5 years ago

You can backport your dependency on the lock client as part of your build to change the package name on your side.

That is exactly how we solved it. But this results in extra maintenance when a new version is released.

The licenses of the lock client and the AWS SDK are different, and given that the lock client has a strong application layer component, I do not think the AWS SDK is the right place for the lock client.

I agree. But moving to another (sub)package - in the same project - would be still nice.