Skip to content

Commit 2bddb0c

Browse files
authored
Add initial architecture rules (#5741)
* Add initial architecture tests * Address feedback * Update version * Allowlist new violations * Update test code to log error message
1 parent d6296b2 commit 2bddb0c

File tree

63 files changed

+1548
-106
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+1548
-106
lines changed

.brazil.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,8 @@
109109
"third-party-slf4j-api": { "skipImport": true },
110110
"v2-migration-tests": {"skipImport": true},
111111
"crt-unavailable-tests": { "skipImport": true },
112-
"bundle-shading-tests": { "skipImport": true }
112+
"bundle-shading-tests": { "skipImport": true },
113+
"architecture-tests": {"skipImport": true}
113114
},
114115

115116
"dependencies": {

bom-internal/pom.xml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -354,6 +354,18 @@
354354
<version>${reactive-streams.version}</version>
355355
<scope>test</scope>
356356
</dependency>
357+
<dependency>
358+
<groupId>com.tngtech.archunit</groupId>
359+
<artifactId>archunit</artifactId>
360+
<version>${archunit.version}</version>
361+
<scope>test</scope>
362+
</dependency>
363+
<dependency>
364+
<groupId>com.tngtech.archunit</groupId>
365+
<artifactId>archunit-junit5</artifactId>
366+
<version>${archunit.version}</version>
367+
<scope>test</scope>
368+
</dependency>
357369
<dependency>
358370
<groupId>com.google.jimfs</groupId>
359371
<artifactId>jimfs</artifactId>

buildspecs/release-javadoc.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ phases:
1818
commands:
1919
- python ./scripts/doc_crosslinks/generate_cross_link_data.py --apiDefinitionsBasePath ./services/ --apiDefinitionsRelativeFilePath src/main/resources/codegen-resources/service-2.json --templateFilePath ./scripts/doc_crosslinks/crosslink_redirect.html --outputFilePath ./scripts/crosslink_redirect.html
2020
- mvn install -P quick -T1C
21-
- mvn clean install javadoc:aggregate -B -Ppublic-javadoc -Dcheckstyle.skip -Dspotbugs.skip -DskipTests -Ddoclint=none -pl '!:protocol-tests,!:protocol-tests-core,!:codegen-generated-classes-test,!:sdk-benchmarks,!:s3-benchmarks,!:module-path-tests,!:test-utils,!:http-client-tests,!:tests-coverage-reporting,!:sdk-native-image-test,!:ruleset-testing-core,!:old-client-version-compatibility-test,!:crt-unavailable-tests,!:bundle-shading-tests,!:v2-migration,!:v2-migration-tests'
21+
- mvn clean install javadoc:aggregate -B -Ppublic-javadoc -Dcheckstyle.skip -Dspotbugs.skip -DskipTests -Ddoclint=none -pl '!:protocol-tests,!:protocol-tests-core,!:codegen-generated-classes-test,!:sdk-benchmarks,!:s3-benchmarks,!:module-path-tests,!:test-utils,!:http-client-tests,!:tests-coverage-reporting,!:sdk-native-image-test,!:ruleset-testing-core,!:old-client-version-compatibility-test,!:crt-unavailable-tests,!:bundle-shading-tests,!:v2-migration,!:v2-migration-tests,!:architecture-tests'
2222
- RELEASE_VERSION=`mvn -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec`
2323
-
2424
- aws s3 sync target/site/apidocs/ $DOC_PATH/$RELEASE_VERSION/ --acl="public-read"

buildspecs/release-to-maven.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ phases:
3737
awk 'BEGIN { var=ENVIRON["SDK_SIGNING_GPG_KEYNAME"] } { gsub("\\$SDK_SIGNING_GPG_KEYNAME", var, $0); print }' > \
3838
$SETTINGS_XML
3939
40-
mvn clean deploy -B -s $SETTINGS_XML -Ppublishing -DperformRelease -Dspotbugs.skip -DskipTests -Dcheckstyle.skip -Djapicmp.skip -Ddoclint=none -pl !:protocol-tests,!:protocol-tests-core,!:codegen-generated-classes-test,!:sdk-benchmarks,!:module-path-tests,!:tests-coverage-reporting,!:stability-tests,!:sdk-native-image-test,!:auth-tests,!:s3-benchmarks,!:region-testing,!:old-client-version-compatibility-test,!:crt-unavailable-tests,!:bundle-shading-tests,!:v2-migration-tests -DautoReleaseAfterClose=true -DstagingProgressTimeoutMinutes=30 -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 -Dmaven.wagon.http.retryHandler.requestSentEnabled=true
40+
mvn clean deploy -B -s $SETTINGS_XML -Ppublishing -DperformRelease -Dspotbugs.skip -DskipTests -Dcheckstyle.skip -Djapicmp.skip -Ddoclint=none -pl !:protocol-tests,!:protocol-tests-core,!:codegen-generated-classes-test,!:sdk-benchmarks,!:module-path-tests,!:tests-coverage-reporting,!:stability-tests,!:sdk-native-image-test,!:auth-tests,!:s3-benchmarks,!:region-testing,!:old-client-version-compatibility-test,!:crt-unavailable-tests,!:bundle-shading-tests,!:v2-migration-tests,!:architecture-tests -DautoReleaseAfterClose=true -DstagingProgressTimeoutMinutes=30 -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 -Dmaven.wagon.http.retryHandler.requestSentEnabled=true
4141
else
4242
echo "This version was already released."
4343
fi

core/aws-core/src/main/java/software/amazon/awssdk/awscore/endpoints/AccountIdEndpointModeResolver.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,13 @@
1717

1818
import java.util.Optional;
1919
import java.util.function.Supplier;
20-
import software.amazon.awssdk.annotations.SdkInternalApi;
20+
import software.amazon.awssdk.annotations.SdkProtectedApi;
2121
import software.amazon.awssdk.core.SdkSystemSetting;
2222
import software.amazon.awssdk.profiles.ProfileFile;
2323
import software.amazon.awssdk.profiles.ProfileProperty;
2424
import software.amazon.awssdk.utils.OptionalUtils;
2525

26-
@SdkInternalApi
26+
@SdkProtectedApi
2727
public final class AccountIdEndpointModeResolver {
2828

2929
private static final AccountIdEndpointMode SDK_DEFAULT_MODE = AccountIdEndpointMode.PREFERRED;

core/aws-core/src/main/java/software/amazon/awssdk/awscore/interceptor/HelpfulUnknownHostExceptionInterceptor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import java.util.List;
2020
import java.util.Optional;
2121
import java.util.stream.Collectors;
22-
import software.amazon.awssdk.annotations.SdkInternalApi;
22+
import software.amazon.awssdk.annotations.SdkProtectedApi;
2323
import software.amazon.awssdk.awscore.AwsExecutionAttribute;
2424
import software.amazon.awssdk.core.exception.SdkClientException;
2525
import software.amazon.awssdk.core.interceptor.Context;
@@ -35,7 +35,7 @@
3535
* This interceptor will monitor for {@link UnknownHostException}s and provide the customer with additional information they can
3636
* use to debug or fix the problem.
3737
*/
38-
@SdkInternalApi
38+
@SdkProtectedApi
3939
public final class HelpfulUnknownHostExceptionInterceptor implements ExecutionInterceptor {
4040
@Override
4141
public Throwable modifyException(Context.FailedExecution context, ExecutionAttributes executionAttributes) {

core/aws-core/src/main/java/software/amazon/awssdk/awscore/interceptor/TraceIdExecutionInterceptor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
package software.amazon.awssdk.awscore.interceptor;
1717

1818
import java.util.Optional;
19-
import software.amazon.awssdk.annotations.SdkInternalApi;
19+
import software.amazon.awssdk.annotations.SdkProtectedApi;
2020
import software.amazon.awssdk.awscore.internal.interceptor.TracingSystemSetting;
2121
import software.amazon.awssdk.core.interceptor.Context;
2222
import software.amazon.awssdk.core.interceptor.ExecutionAttributes;
@@ -28,7 +28,7 @@
2828
* The {@code TraceIdExecutionInterceptor} copies the trace details to the {@link #TRACE_ID_HEADER} header, assuming we seem to
2929
* be running in a lambda environment.
3030
*/
31-
@SdkInternalApi
31+
@SdkProtectedApi
3232
public class TraceIdExecutionInterceptor implements ExecutionInterceptor {
3333
private static final String TRACE_ID_HEADER = "X-Amzn-Trace-Id";
3434
private static final String LAMBDA_FUNCTION_NAME_ENVIRONMENT_VARIABLE = "AWS_LAMBDA_FUNCTION_NAME";

core/aws-core/src/main/java/software/amazon/awssdk/awscore/internal/AwsProtocolMetadata.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,20 @@
1515

1616
package software.amazon.awssdk.awscore.internal;
1717

18-
import software.amazon.awssdk.annotations.SdkInternalApi;
18+
import software.amazon.awssdk.annotations.SdkProtectedApi;
1919
import software.amazon.awssdk.core.SdkProtocolMetadata;
2020
import software.amazon.awssdk.utils.ToString;
2121
import software.amazon.awssdk.utils.builder.CopyableBuilder;
2222
import software.amazon.awssdk.utils.builder.ToCopyableBuilder;
2323

2424
/**
2525
* Contains AWS-specific protocol metadata. Implementation of {@link SdkProtocolMetadata}.
26+
*
27+
* <p>
28+
* Implementation notes: this class should've been outside internal package,
29+
* but we can't fix it due to backwards compatibility reasons.
2630
*/
27-
@SdkInternalApi
31+
@SdkProtectedApi
2832
public final class AwsProtocolMetadata implements SdkProtocolMetadata, ToCopyableBuilder<AwsProtocolMetadata.Builder,
2933
AwsProtocolMetadata> {
3034

core/aws-core/src/main/java/software/amazon/awssdk/awscore/internal/AwsServiceProtocol.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,13 @@
1515

1616
package software.amazon.awssdk.awscore.internal;
1717

18-
import software.amazon.awssdk.annotations.SdkInternalApi;
18+
import software.amazon.awssdk.annotations.SdkProtectedApi;
1919

20-
@SdkInternalApi
20+
/**
21+
* Implementation notes: this class should've been outside internal package,
22+
* but we can't fix it due to backwards compatibility reasons.
23+
*/
24+
@SdkProtectedApi
2125
public enum AwsServiceProtocol {
2226
EC2("ec2"),
2327
AWS_JSON("json"),

core/aws-core/src/main/java/software/amazon/awssdk/awscore/internal/defaultsmode/AutoDefaultsModeDiscovery.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
package software.amazon.awssdk.awscore.internal.defaultsmode;
1717

1818
import java.util.Optional;
19-
import software.amazon.awssdk.annotations.SdkInternalApi;
19+
import software.amazon.awssdk.annotations.SdkProtectedApi;
2020
import software.amazon.awssdk.awscore.defaultsmode.DefaultsMode;
2121
import software.amazon.awssdk.core.SdkSystemSetting;
2222
import software.amazon.awssdk.regions.Region;
@@ -29,8 +29,12 @@
2929
/**
3030
* This class attempts to discover the appropriate {@link DefaultsMode} by inspecting the environment. It falls
3131
* back to the {@link DefaultsMode#STANDARD} mode if the target mode cannot be determined.
32+
*
33+
* <p>
34+
* Implementation notes: this class should've been outside internal package,
35+
* but we can't fix it due to backwards compatibility reasons.
3236
*/
33-
@SdkInternalApi
37+
@SdkProtectedApi
3438
public class AutoDefaultsModeDiscovery {
3539
private static final String EC2_METADATA_REGION_PATH = "/latest/meta-data/placement/region";
3640
private static final DefaultsMode FALLBACK_DEFAULTS_MODE = DefaultsMode.STANDARD;

0 commit comments

Comments
 (0)