Update configuration for badges to use URL instead of String

This commit is contained in:
Ehren Kret 2021-09-08 18:15:50 -05:00
parent aa1c37fe26
commit 6478210330
3 changed files with 47 additions and 3 deletions

View File

@ -7,16 +7,19 @@ package org.whispersystems.textsecuregcm.configuration;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import java.net.URL;
import javax.validation.constraints.NotEmpty;
public class BadgeConfiguration {
private final String name;
private final String imageUrl;
private final URL imageUrl;
@JsonCreator
public BadgeConfiguration(
@JsonProperty("name") final String name,
@JsonProperty("imageUrl") final String imageUrl) {
@JsonProperty("imageUrl") @JsonDeserialize(converter = URLDeserializationConverter.class) final URL imageUrl) {
this.name = name;
this.imageUrl = imageUrl;
}
@ -27,7 +30,9 @@ public class BadgeConfiguration {
}
@NotEmpty
public String getImageUrl() {
@JsonSerialize(converter = URLSerializationConverter.class)
public URL getImageUrl() {
return imageUrl;
}
}

View File

@ -0,0 +1,22 @@
/*
* Copyright 2021 Signal Messenger, LLC
* SPDX-License-Identifier: AGPL-3.0-only
*/
package org.whispersystems.textsecuregcm.configuration;
import com.fasterxml.jackson.databind.util.StdConverter;
import java.net.MalformedURLException;
import java.net.URL;
final class URLDeserializationConverter extends StdConverter<String, URL> {
@Override
public URL convert(final String value) {
try {
return new URL(value);
} catch (MalformedURLException e) {
throw new IllegalArgumentException(e);
}
}
}

View File

@ -0,0 +1,17 @@
/*
* Copyright 2021 Signal Messenger, LLC
* SPDX-License-Identifier: AGPL-3.0-only
*/
package org.whispersystems.textsecuregcm.configuration;
import com.fasterxml.jackson.databind.util.StdConverter;
import java.net.URL;
final class URLSerializationConverter extends StdConverter<URL, String> {
@Override
public String convert(final URL value) {
return value.toString();
}
}