From 4b575ff855d1091a628e7d982ba2cd3b71ce0709 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20D=C3=BCmont?= <22489773+newtork@users.noreply.github.com> Date: Mon, 29 Jul 2024 15:55:32 +0200 Subject: [PATCH] Fix custom PMD rules (#513) --- .../connectivity/AuthenticationType.java | 1 + .../connectivity/DestinationType.java | 5 +- .../cloudplatform/connectivity/ProxyType.java | 5 +- .../SecurityConfigurationStrategy.java | 2 + .../connectivity/HttpClientWrapper.java | 1 + .../DestinationServiceRetrievalStrategy.java | 1 + ...stinationServiceTokenExchangeStrategy.java | 1 + codestyle/sdk_specific_pmd_rules.xml | 144 +++++------------- .../generator/MetadataApiSpecificUsage.java | 2 + .../com/sap/cloud/sdk/result/ElementName.java | 3 + .../odata/client/request/ODataFormat.java | 1 + .../datamodel/odata/adapter/ODataField.java | 4 + .../openapi/generator/model/ApiMaturity.java | 1 + .../connectivity/rfc/ParameterKind.java | 1 + .../connectivity/rfc/SoapNamespace.java | 3 + .../sdk/s4hana/serialization/MessageType.java | 1 + 16 files changed, 62 insertions(+), 114 deletions(-) diff --git a/cloudplatform/cloudplatform-connectivity/src/main/java/com/sap/cloud/sdk/cloudplatform/connectivity/AuthenticationType.java b/cloudplatform/cloudplatform-connectivity/src/main/java/com/sap/cloud/sdk/cloudplatform/connectivity/AuthenticationType.java index 4f4111902..e424e8df0 100644 --- a/cloudplatform/cloudplatform-connectivity/src/main/java/com/sap/cloud/sdk/cloudplatform/connectivity/AuthenticationType.java +++ b/cloudplatform/cloudplatform-connectivity/src/main/java/com/sap/cloud/sdk/cloudplatform/connectivity/AuthenticationType.java @@ -92,6 +92,7 @@ public enum AuthenticationType @Getter private final String identifier; + @Nonnull @Override public String toString() { diff --git a/cloudplatform/cloudplatform-connectivity/src/main/java/com/sap/cloud/sdk/cloudplatform/connectivity/DestinationType.java b/cloudplatform/cloudplatform-connectivity/src/main/java/com/sap/cloud/sdk/cloudplatform/connectivity/DestinationType.java index d59d0467b..081632b8a 100644 --- a/cloudplatform/cloudplatform-connectivity/src/main/java/com/sap/cloud/sdk/cloudplatform/connectivity/DestinationType.java +++ b/cloudplatform/cloudplatform-connectivity/src/main/java/com/sap/cloud/sdk/cloudplatform/connectivity/DestinationType.java @@ -45,6 +45,7 @@ public enum DestinationType this.identifier = identifier; } + @Nonnull @Override public String toString() { @@ -100,9 +101,7 @@ public static DestinationType ofIdentifierOrDefault( return ofIdentifier(identifier); } catch( final IllegalArgumentException e ) { - if( log.isWarnEnabled() ) { - log.warn("Identifier '{}' is not supported. Falling back to {}.", identifier, defaultDestinationType); - } + log.warn("Identifier '{}' is not supported. Falling back to {}.", identifier, defaultDestinationType); return defaultDestinationType; } } diff --git a/cloudplatform/cloudplatform-connectivity/src/main/java/com/sap/cloud/sdk/cloudplatform/connectivity/ProxyType.java b/cloudplatform/cloudplatform-connectivity/src/main/java/com/sap/cloud/sdk/cloudplatform/connectivity/ProxyType.java index d759efbd3..b75baf31f 100644 --- a/cloudplatform/cloudplatform-connectivity/src/main/java/com/sap/cloud/sdk/cloudplatform/connectivity/ProxyType.java +++ b/cloudplatform/cloudplatform-connectivity/src/main/java/com/sap/cloud/sdk/cloudplatform/connectivity/ProxyType.java @@ -62,9 +62,7 @@ public enum ProxyType return ofIdentifier(identifier); } catch( final IllegalArgumentException e ) { - if( log.isWarnEnabled() ) { - log.warn("Identifier '{}' is not supported. Falling back to {}.", identifier, defaultProxyType); - } + log.warn("Identifier '{}' is not supported. Falling back to {}.", identifier, defaultProxyType); return defaultProxyType; } } @@ -133,6 +131,7 @@ public static ProxyType ofIdentifierSensitive( @Nonnull final String identifier throw new IllegalArgumentException("Unknown " + ProxyType.class.getSimpleName() + ": " + identifier + "."); } + @Nonnull @Override public String toString() { diff --git a/cloudplatform/cloudplatform-connectivity/src/main/java/com/sap/cloud/sdk/cloudplatform/connectivity/SecurityConfigurationStrategy.java b/cloudplatform/cloudplatform-connectivity/src/main/java/com/sap/cloud/sdk/cloudplatform/connectivity/SecurityConfigurationStrategy.java index 469c941b5..ece1e64c3 100644 --- a/cloudplatform/cloudplatform-connectivity/src/main/java/com/sap/cloud/sdk/cloudplatform/connectivity/SecurityConfigurationStrategy.java +++ b/cloudplatform/cloudplatform-connectivity/src/main/java/com/sap/cloud/sdk/cloudplatform/connectivity/SecurityConfigurationStrategy.java @@ -43,6 +43,7 @@ public enum SecurityConfigurationStrategy * * @return The default value */ + @Nonnull public static SecurityConfigurationStrategy getDefault() { return FROM_DESTINATION; @@ -76,6 +77,7 @@ public static SecurityConfigurationStrategy ofIdentifierOrDefault( @Nullable fin throw new IllegalArgumentException("No SecurityConfigurationStrategy found for identifier: " + identifier); } + @Nonnull @Override public String toString() { diff --git a/cloudplatform/connectivity-apache-httpclient4/src/main/java/com/sap/cloud/sdk/cloudplatform/connectivity/HttpClientWrapper.java b/cloudplatform/connectivity-apache-httpclient4/src/main/java/com/sap/cloud/sdk/cloudplatform/connectivity/HttpClientWrapper.java index 59f812237..426785faf 100644 --- a/cloudplatform/connectivity-apache-httpclient4/src/main/java/com/sap/cloud/sdk/cloudplatform/connectivity/HttpClientWrapper.java +++ b/cloudplatform/connectivity-apache-httpclient4/src/main/java/com/sap/cloud/sdk/cloudplatform/connectivity/HttpClientWrapper.java @@ -73,6 +73,7 @@ public HeaderElement[] getElements() return new HeaderElement[0]; } + @Nonnull @Override public String toString() { diff --git a/cloudplatform/connectivity-destination-service/src/main/java/com/sap/cloud/sdk/cloudplatform/connectivity/DestinationServiceRetrievalStrategy.java b/cloudplatform/connectivity-destination-service/src/main/java/com/sap/cloud/sdk/cloudplatform/connectivity/DestinationServiceRetrievalStrategy.java index 21f4907f1..593a7459d 100644 --- a/cloudplatform/connectivity-destination-service/src/main/java/com/sap/cloud/sdk/cloudplatform/connectivity/DestinationServiceRetrievalStrategy.java +++ b/cloudplatform/connectivity-destination-service/src/main/java/com/sap/cloud/sdk/cloudplatform/connectivity/DestinationServiceRetrievalStrategy.java @@ -52,6 +52,7 @@ public enum DestinationServiceRetrievalStrategy this.identifier = identifier; } + @Nonnull @Override public String toString() { diff --git a/cloudplatform/connectivity-destination-service/src/main/java/com/sap/cloud/sdk/cloudplatform/connectivity/DestinationServiceTokenExchangeStrategy.java b/cloudplatform/connectivity-destination-service/src/main/java/com/sap/cloud/sdk/cloudplatform/connectivity/DestinationServiceTokenExchangeStrategy.java index 246717ae8..b9be185f4 100644 --- a/cloudplatform/connectivity-destination-service/src/main/java/com/sap/cloud/sdk/cloudplatform/connectivity/DestinationServiceTokenExchangeStrategy.java +++ b/cloudplatform/connectivity-destination-service/src/main/java/com/sap/cloud/sdk/cloudplatform/connectivity/DestinationServiceTokenExchangeStrategy.java @@ -72,6 +72,7 @@ public enum DestinationServiceTokenExchangeStrategy this.identifier = identifier; } + @Nonnull @Override public String toString() { diff --git a/codestyle/sdk_specific_pmd_rules.xml b/codestyle/sdk_specific_pmd_rules.xml index 7c6ab587a..d76530fab 100644 --- a/codestyle/sdk_specific_pmd_rules.xml +++ b/codestyle/sdk_specific_pmd_rules.xml @@ -20,12 +20,9 @@ @@ -63,10 +60,10 @@ @@ -111,7 +108,7 @@ @@ -134,12 +131,9 @@ @@ -182,7 +176,7 @@ message="Parameter type of public method is not annotated with @Nonnull or @Nullable." class="net.sourceforge.pmd.lang.rule.xpath.XPathRule"> - Parameter type of public method is not annotated with @Nonnull or @Nullable. + Missing @Nonnull or @Nullable annotation on parameter of public method or constructor. This is beneficial to communicate a clear API contract and it allows for effective argument constraint validation in the IDE. 5 @@ -190,60 +184,14 @@ - - - - - - - - - - Parameter type of public constructor is not annotated with @Nonnull or @Nullable. - This is beneficial to communicate a clear API contract and it allows for effective argument constraint validation in the IDE. - - 5 - - - - @@ -267,56 +215,39 @@ ]]> - - - Do not unnecessarily compute code in advance, when it's not needed. - Avoid premature instantiation. - Instead of direct constructor call, use lambda notation or constructor reference, e.g. TargetType::new - - 2 - - - - - - - - Do not unnecessarily compute code in advance, when it's not needed. - Instead of invoking the fallback function, reference it as lambda or function reference, e.g. this::fallback + Avoid premature instantiation. + Instead of direct constructor call, use lambda notation or constructor reference, e.g. TargetType::new 2 + + "foo" + bar()); + + // Not okay + Option.of(variable).getOrElse(bar()); + Optional.of(variable).orElse("foo" + bar()); + } + ]]> + @@ -425,11 +356,8 @@ diff --git a/datamodel/datamodel-metadata-generator/src/main/java/com/sap/cloud/sdk/datamodel/metadata/generator/MetadataApiSpecificUsage.java b/datamodel/datamodel-metadata-generator/src/main/java/com/sap/cloud/sdk/datamodel/metadata/generator/MetadataApiSpecificUsage.java index 402e3d86d..eca672a5f 100644 --- a/datamodel/datamodel-metadata-generator/src/main/java/com/sap/cloud/sdk/datamodel/metadata/generator/MetadataApiSpecificUsage.java +++ b/datamodel/datamodel-metadata-generator/src/main/java/com/sap/cloud/sdk/datamodel/metadata/generator/MetadataApiSpecificUsage.java @@ -171,6 +171,8 @@ static class Declaration @Nullable String value; + @Nonnull + @Override public String toString() { final String typeUnqualified = getUnqualified(type); diff --git a/datamodel/fluent-result/src/main/java/com/sap/cloud/sdk/result/ElementName.java b/datamodel/fluent-result/src/main/java/com/sap/cloud/sdk/result/ElementName.java index 021bc7717..4b09f3ce1 100644 --- a/datamodel/fluent-result/src/main/java/com/sap/cloud/sdk/result/ElementName.java +++ b/datamodel/fluent-result/src/main/java/com/sap/cloud/sdk/result/ElementName.java @@ -9,6 +9,8 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +import javax.annotation.Nonnull; + /** * Annotation indicating the name of an element. */ @@ -21,5 +23,6 @@ * * @return The identifiable name of the field. */ + @Nonnull String value(); } diff --git a/datamodel/odata-client/src/main/java/com/sap/cloud/sdk/datamodel/odata/client/request/ODataFormat.java b/datamodel/odata-client/src/main/java/com/sap/cloud/sdk/datamodel/odata/client/request/ODataFormat.java index b61da0531..68259c1d4 100644 --- a/datamodel/odata-client/src/main/java/com/sap/cloud/sdk/datamodel/odata/client/request/ODataFormat.java +++ b/datamodel/odata-client/src/main/java/com/sap/cloud/sdk/datamodel/odata/client/request/ODataFormat.java @@ -32,6 +32,7 @@ enum ODataFormat @Nonnull private final String httpAccept; + @Nonnull @Override public String toString() { diff --git a/datamodel/odata/odata-core/src/main/java/com/sap/cloud/sdk/s4hana/datamodel/odata/adapter/ODataField.java b/datamodel/odata/odata-core/src/main/java/com/sap/cloud/sdk/s4hana/datamodel/odata/adapter/ODataField.java index 8fdba88ec..70489f2aa 100644 --- a/datamodel/odata/odata-core/src/main/java/com/sap/cloud/sdk/s4hana/datamodel/odata/adapter/ODataField.java +++ b/datamodel/odata/odata-core/src/main/java/com/sap/cloud/sdk/s4hana/datamodel/odata/adapter/ODataField.java @@ -10,6 +10,8 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +import javax.annotation.Nonnull; + import com.sap.cloud.sdk.typeconverter.TypeConverter; /** @@ -25,6 +27,7 @@ * * @return The name of the corresponding OData property. */ + @Nonnull String odataName(); /** @@ -32,5 +35,6 @@ * * @return The type of the converter to use for the annotated field. */ + @Nonnull Class> converter() default IdentityConverter.class; } diff --git a/datamodel/openapi/openapi-generator/src/main/java/com/sap/cloud/sdk/datamodel/openapi/generator/model/ApiMaturity.java b/datamodel/openapi/openapi-generator/src/main/java/com/sap/cloud/sdk/datamodel/openapi/generator/model/ApiMaturity.java index dfceb979b..745f8cdd4 100644 --- a/datamodel/openapi/openapi-generator/src/main/java/com/sap/cloud/sdk/datamodel/openapi/generator/model/ApiMaturity.java +++ b/datamodel/openapi/openapi-generator/src/main/java/com/sap/cloud/sdk/datamodel/openapi/generator/model/ApiMaturity.java @@ -67,6 +67,7 @@ public static ApiMaturity getValueOrDefault( @Nullable final String identifier ) BETA.identifier)); } + @Nonnull @Override public String toString() { diff --git a/s4hana/rfc/src/main/java/com/sap/cloud/sdk/s4hana/connectivity/rfc/ParameterKind.java b/s4hana/rfc/src/main/java/com/sap/cloud/sdk/s4hana/connectivity/rfc/ParameterKind.java index fa228093a..eeedeaf9e 100644 --- a/s4hana/rfc/src/main/java/com/sap/cloud/sdk/s4hana/connectivity/rfc/ParameterKind.java +++ b/s4hana/rfc/src/main/java/com/sap/cloud/sdk/s4hana/connectivity/rfc/ParameterKind.java @@ -30,6 +30,7 @@ enum ParameterKind * @deprecated This module will be discontinued, along with its classes and methods. */ @Deprecated + @Nonnull @Override public String toString() { diff --git a/s4hana/rfc/src/main/java/com/sap/cloud/sdk/s4hana/connectivity/rfc/SoapNamespace.java b/s4hana/rfc/src/main/java/com/sap/cloud/sdk/s4hana/connectivity/rfc/SoapNamespace.java index 84b4ffdf0..0b8eb6acd 100644 --- a/s4hana/rfc/src/main/java/com/sap/cloud/sdk/s4hana/connectivity/rfc/SoapNamespace.java +++ b/s4hana/rfc/src/main/java/com/sap/cloud/sdk/s4hana/connectivity/rfc/SoapNamespace.java @@ -4,6 +4,8 @@ package com.sap.cloud.sdk.s4hana.connectivity.rfc; +import javax.annotation.Nonnull; + import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Setter; @@ -31,6 +33,7 @@ public enum SoapNamespace @Setter( AccessLevel.PUBLIC ) private String label; + @Nonnull @Override public String toString() { diff --git a/s4hana/s4hana-core/src/main/java/com/sap/cloud/sdk/s4hana/serialization/MessageType.java b/s4hana/s4hana-core/src/main/java/com/sap/cloud/sdk/s4hana/serialization/MessageType.java index 8c5ae89f7..be67733a3 100644 --- a/s4hana/s4hana-core/src/main/java/com/sap/cloud/sdk/s4hana/serialization/MessageType.java +++ b/s4hana/s4hana-core/src/main/java/com/sap/cloud/sdk/s4hana/serialization/MessageType.java @@ -55,6 +55,7 @@ public enum MessageType implements ErpType this.identifier = identifier; } + @Nonnull @Override public String toString() {