Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
173 changes: 173 additions & 0 deletions src/main/java/com/adyen/model/balancewebhooks/Amount.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,173 @@
/*
* Balance webhook
*
* The version of the OpenAPI document: 1
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/

package com.adyen.model.balancewebhooks;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import com.fasterxml.jackson.core.JsonProcessingException;
import java.util.*;

/** Amount */
@JsonPropertyOrder({Amount.JSON_PROPERTY_CURRENCY, Amount.JSON_PROPERTY_VALUE})
public class Amount {
public static final String JSON_PROPERTY_CURRENCY = "currency";
private String currency;

public static final String JSON_PROPERTY_VALUE = "value";
private Long value;

public Amount() {}

/**
* The three-character [ISO currency
* code](https://docs.adyen.com/development-resources/currency-codes#currency-codes) of the
* amount.
*
* @param currency The three-character [ISO currency
* code](https://docs.adyen.com/development-resources/currency-codes#currency-codes) of the
* amount.
* @return the current {@code Amount} instance, allowing for method chaining
*/
public Amount currency(String currency) {
this.currency = currency;
return this;
}

/**
* The three-character [ISO currency
* code](https://docs.adyen.com/development-resources/currency-codes#currency-codes) of the
* amount.
*
* @return currency The three-character [ISO currency
* code](https://docs.adyen.com/development-resources/currency-codes#currency-codes) of the
* amount.
*/
@JsonProperty(JSON_PROPERTY_CURRENCY)
@JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
public String getCurrency() {
return currency;
}

/**
* The three-character [ISO currency
* code](https://docs.adyen.com/development-resources/currency-codes#currency-codes) of the
* amount.
*
* @param currency The three-character [ISO currency
* code](https://docs.adyen.com/development-resources/currency-codes#currency-codes) of the
* amount.
*/
@JsonProperty(JSON_PROPERTY_CURRENCY)
@JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
public void setCurrency(String currency) {
this.currency = currency;
}

/**
* The numeric value of the amount, in [minor
* units](https://docs.adyen.com/development-resources/currency-codes#minor-units).
*
* @param value The numeric value of the amount, in [minor
* units](https://docs.adyen.com/development-resources/currency-codes#minor-units).
* @return the current {@code Amount} instance, allowing for method chaining
*/
public Amount value(Long value) {
this.value = value;
return this;
}

/**
* The numeric value of the amount, in [minor
* units](https://docs.adyen.com/development-resources/currency-codes#minor-units).
*
* @return value The numeric value of the amount, in [minor
* units](https://docs.adyen.com/development-resources/currency-codes#minor-units).
*/
@JsonProperty(JSON_PROPERTY_VALUE)
@JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
public Long getValue() {
return value;
}

/**
* The numeric value of the amount, in [minor
* units](https://docs.adyen.com/development-resources/currency-codes#minor-units).
*
* @param value The numeric value of the amount, in [minor
* units](https://docs.adyen.com/development-resources/currency-codes#minor-units).
*/
@JsonProperty(JSON_PROPERTY_VALUE)
@JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
public void setValue(Long value) {
this.value = value;
}

/** Return true if this Amount object is equal to o. */
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
Amount amount = (Amount) o;
return Objects.equals(this.currency, amount.currency)
&& Objects.equals(this.value, amount.value);
}

@Override
public int hashCode() {
return Objects.hash(currency, value);
}

@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("class Amount {\n");
sb.append(" currency: ").append(toIndentedString(currency)).append("\n");
sb.append(" value: ").append(toIndentedString(value)).append("\n");
sb.append("}");
return sb.toString();
}

/**
* Convert the given object to string with each line indented by 4 spaces (except the first line).
*/
private String toIndentedString(Object o) {
if (o == null) {
return "null";
}
return o.toString().replace("\n", "\n ");
}

/**
* Create an instance of Amount given an JSON string
*
* @param jsonString JSON string
* @return An instance of Amount
* @throws JsonProcessingException if the JSON string is invalid with respect to Amount
*/
public static Amount fromJson(String jsonString) throws JsonProcessingException {
return JSON.getMapper().readValue(jsonString, Amount.class);
}

/**
* Convert an instance of Amount to an JSON string
*
* @return JSON string
*/
public String toJson() throws JsonProcessingException {
return JSON.getMapper().writeValueAsString(this);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,30 @@ public BalanceWebhooksHandler(String payload) {
return Optional.empty();
}

/**
* Attempts to deserialize the webhook payload into a ReleasedBlockedBalanceNotificationRequest
*
* @return an Optional containing the deserialized object, or empty if deserialization fails
*/
public Optional<ReleasedBlockedBalanceNotificationRequest>
getReleasedBlockedBalanceNotificationRequest() {

var optionalReleasedBlockedBalanceNotificationRequest =
getOptionalField(ReleasedBlockedBalanceNotificationRequest.class);

if (optionalReleasedBlockedBalanceNotificationRequest.isPresent()) {
// verify event type
for (var value : ReleasedBlockedBalanceNotificationRequest.TypeEnum.values()) {
if (value.equals(optionalReleasedBlockedBalanceNotificationRequest.get().getType())) {
// found matching event type
return optionalReleasedBlockedBalanceNotificationRequest;
}
}
}

return Optional.empty();
}
Comment on lines +66 to +83
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The logic in this new method getReleasedBlockedBalanceNotificationRequest is a bit verbose and includes a redundant loop to verify the event type. During deserialization, Jackson uses the fromValue method in the TypeEnum, which returns null for an invalid type from the JSON payload. Therefore, a simple null check on getType() is sufficient.

This can be simplified significantly using Optional.filter. Since this code is likely auto-generated from a template (webhook_handler.mustache), I recommend updating the template to generate more concise and efficient code for all such handler methods. This would also help reduce code duplication with getBalanceAccountBalanceNotificationRequest.

  public Optional<ReleasedBlockedBalanceNotificationRequest>
      getReleasedBlockedBalanceNotificationRequest() {
    return getOptionalField(ReleasedBlockedBalanceNotificationRequest.class)
        .filter(req -> req.getType() != null);
  }

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added to the backlog


/**
* Deserializes the payload into the specified class type.
*
Expand Down
Loading