exceptionfactory commented on code in PR #8484:
URL: https://github.com/apache/nifi/pull/8484#discussion_r1546313115


##########
nifi-nar-bundles/nifi-standard-services/nifi-lookup-services-bundle/nifi-lookup-services/src/main/java/org/apache/nifi/lookup/RestLookupService.java:
##########
@@ -251,6 +264,8 @@ public void onEnabled(final ConfigurationContext context) {
         buildHeaders(context);
 
         urlTemplate = context.getProperty(URL);
+
+        responseHandler = context.getProperty(PROP_RESPONSE_CODE_HANDLING);

Review Comment:
   After changing the member variable type, the `asAllowableValue()` method can 
be used to resolve the `enum` value from the property value.



##########
nifi-nar-bundles/nifi-standard-services/nifi-lookup-services-bundle/nifi-lookup-services/src/main/java/org/apache/nifi/lookup/RestLookupService.java:
##########
@@ -214,6 +226,7 @@ protected List<PropertyDescriptor> 
getSupportedPropertyDescriptors() {
     private volatile String basicUser;
     private volatile String basicPass;
     private volatile boolean isDigest;
+    private volatile PropertyValue responseHandler;

Review Comment:
   This can be changed to use the `ResponseHandlingStrategy` enum:
   ```suggestion
       private volatile ResponseHandlingStrategy responseHandlingStrategy;
   ```



##########
nifi-nar-bundles/nifi-standard-services/nifi-lookup-services-bundle/nifi-lookup-services/src/main/java/org/apache/nifi/lookup/RestLookupService.java:
##########
@@ -320,13 +335,20 @@ public Optional<Record> lookup(Map<String, Object> 
coordinates, Map<String, Stri
         Request request = buildRequest(mimeType, method, body, endpoint, 
context);
         try {
             Response response = executeRequest(request);
+            final ResponseBody responseBody = response.body();
 
             if (getLogger().isDebugEnabled()) {
                 getLogger().debug("Response code {} was returned for 
coordinate {}",
                         new Object[]{response.code(), coordinates});
             }
 
-            final ResponseBody responseBody = response.body();
+            if (!response.isSuccessful()
+                    && 
ResponseHandlingStrategy.EVALUATED.equals(responseHandler.asAllowableValue(ResponseHandlingStrategy.class)))
 {
+                final String responseText = responseBody == null ? "<No 
Message Received from Server>" : responseBody.string();
+                throw new IOException("Failed to download content from URL " + 
request.url() +
+                        ": Response code was " + response.code() + ": " + 
responseText);

Review Comment:
   Recommend using String formatting instead of concatenation for readability:
   ```suggestion
                   throw new IOException("Request failed with HTTP %d for [%s]: 
%s".formatted(response.code(), request.url(), responseText));
   ```



##########
nifi-nar-bundles/nifi-standard-services/nifi-lookup-services-bundle/nifi-lookup-services/src/main/java/org/apache/nifi/lookup/RestLookupService.java:
##########
@@ -320,13 +335,20 @@ public Optional<Record> lookup(Map<String, Object> 
coordinates, Map<String, Stri
         Request request = buildRequest(mimeType, method, body, endpoint, 
context);
         try {
             Response response = executeRequest(request);
+            final ResponseBody responseBody = response.body();
 
             if (getLogger().isDebugEnabled()) {
                 getLogger().debug("Response code {} was returned for 
coordinate {}",
                         new Object[]{response.code(), coordinates});
             }
 
-            final ResponseBody responseBody = response.body();
+            if (!response.isSuccessful()
+                    && 
ResponseHandlingStrategy.EVALUATED.equals(responseHandler.asAllowableValue(ResponseHandlingStrategy.class)))
 {

Review Comment:
   After changing the member variable, this comparison can be simplified.



##########
nifi-nar-bundles/nifi-standard-services/nifi-lookup-services-bundle/nifi-lookup-services/src/main/java/org/apache/nifi/lookup/RestLookupService.java:
##########
@@ -172,6 +172,17 @@ public class RestLookupService extends 
AbstractControllerService implements Reco
         .addValidator(StandardValidators.TIME_PERIOD_VALIDATOR)
         .build();
 
+
+    public static final PropertyDescriptor PROP_RESPONSE_CODE_HANDLING = new 
PropertyDescriptor.Builder()

Review Comment:
   Recommend removing the `PROP_` prefix:
   ```suggestion
       public static final PropertyDescriptor RESPONSE_HANDLING_STRATEGY = new 
PropertyDescriptor.Builder()
   ```



##########
nifi-nar-bundles/nifi-standard-services/nifi-lookup-services-bundle/nifi-lookup-services/src/main/java/org/apache/nifi/lookup/RestLookupService.java:
##########
@@ -320,13 +335,20 @@ public Optional<Record> lookup(Map<String, Object> 
coordinates, Map<String, Stri
         Request request = buildRequest(mimeType, method, body, endpoint, 
context);
         try {
             Response response = executeRequest(request);
+            final ResponseBody responseBody = response.body();
 
             if (getLogger().isDebugEnabled()) {
                 getLogger().debug("Response code {} was returned for 
coordinate {}",
                         new Object[]{response.code(), coordinates});
             }
 
-            final ResponseBody responseBody = response.body();
+            if (!response.isSuccessful()
+                    && 
ResponseHandlingStrategy.EVALUATED.equals(responseHandler.asAllowableValue(ResponseHandlingStrategy.class)))
 {
+                final String responseText = responseBody == null ? "<No 
Message Received from Server>" : responseBody.string();

Review Comment:
   Recommend replacing  angle brackets with square brackets in the placeholder 
message:
   ```suggestion
                   final String responseText = responseBody == null ? "[No 
Message Received]" : responseBody.string();
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@nifi.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to