UriSubstitution.java

package io.vanillabp.integration.runtime.util;

import java.net.URI;
import java.net.URISyntaxException;

import io.quarkus.runtime.ObjectSubstitution;

/**
 * Object substitution for {@link URI}.
 */
public class UriSubstitution implements ObjectSubstitution<URI, UriSubstitute> {

  /**
   * Serialize {@link URI} to {@link UriSubstitute}.
   *
   * @param uri The {@link URI} to serialize
   * @return The serialized {@link URI}
   */
  @Override
  public UriSubstitute serialize(
      final URI uri) {

    final var substitute = new UriSubstitute();
    if (uri != null) {
      substitute.setUri(uri.toString());
    }
    return substitute;

  }

  /**
   * Deserialize {@link UriSubstitute} to {@link URI}.
   *
   * @param substitute The serialized {@link URI}
   * @return The deserialized {@link URI}
   */
  @Override
  public URI deserialize(
      final UriSubstitute substitute) {

    if ((substitute == null) || (substitute.getUri() == null)) {
      return null;
    }

    try {
      return new URI(substitute.getUri());
    } catch (URISyntaxException e) {
      throw new RuntimeException("Invalid URI in substitution", e);
    }

  }

}