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 extends TypeConverter, ?>> 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()
{