Skip to content

Commit

Permalink
Extract more Jackson to mixins
Browse files Browse the repository at this point in the history
sfuhrm committed Jan 11, 2024
1 parent a1f746f commit 4b34bf8
Showing 5 changed files with 92 additions and 16 deletions.
Original file line number Diff line number Diff line change
@@ -24,6 +24,8 @@ class ObjectMapperResolver implements ContextResolver<ObjectMapper> {
mapper.setDateFormat(df);
Map<Class<?>, Class<?>> mixIns = new HashMap<>();
mixIns.put(Station.class, StationMixin.class);
mixIns.put(UrlResponse.class, UrlResponseMixin.class);
mixIns.put(Stats.class, StationMixin.class);
mapper.setMixIns(mixIns);
}

Original file line number Diff line number Diff line change
@@ -15,31 +15,25 @@
*/
package de.sfuhrm.radiobrowser4j;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter;
import lombok.Setter;

/**
* Representation of an api endpoint statistic.
* @author Stephan Fuhrmann
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public final class Stats {

/** The supported version. */
@Getter @Setter
@JsonProperty("supported_version")
private Integer supportedVersion;

/** The version of the API. */
@Getter @Setter
@JsonProperty("software_version")
private String softwareVersion;

/** The status, should be "OK". */
@Getter @Setter
@JsonProperty("status")
private String status;

/** The number of stations stored on the server. */
@@ -48,7 +42,6 @@ public final class Stats {

/** The number of broken stations. */
@Getter @Setter
@JsonProperty("stations_broken")
private Integer stationsBroken;

/** The number of tags. */
@@ -57,12 +50,10 @@ public final class Stats {

/** The number of clicks in the last hour. */
@Getter @Setter
@JsonProperty("clicks_last_hour")
private Integer clicksLastHour;

/** The number of clicks in the last 24 hours. */
@Getter @Setter
@JsonProperty("clicks_last_day")
private Integer clicksLastDay;

/** The number of languages. */
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
/*
* Copyright 2017 Stephan Fuhrmann
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package de.sfuhrm.radiobrowser4j;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;

/**
* Mix-ins for the Stats for Jackson mapping.
* @author Stephan Fuhrmann
*/
@JsonIgnoreProperties(ignoreUnknown = true)
abstract class StatsMixin {

/** The supported version.
* @return does not matter.
* */
@JsonProperty("supported_version")
abstract Integer getSupportedVersion();

/** The version of the API.
* @return does not matter.
* */
@JsonProperty("software_version")
abstract String getSoftwareVersion();

/** The status, should be "OK".
* @return does not matter.
* */
@JsonProperty("status")
abstract String getStatus();

/** The number of broken stations.
* @return does not matter.
* */
@JsonProperty("stations_broken")
abstract Integer getStationsBroken();

/** The number of clicks in the last hour.
* @return does not matter.
* */
@JsonProperty("clicks_last_hour")
abstract Integer getClicksLastHour();

/** The number of clicks in the last 24 hours.
* @return does not matter.
* */
@JsonProperty("clicks_last_day")
abstract Integer getClicksLastDay();
}
Original file line number Diff line number Diff line change
@@ -15,7 +15,6 @@
*/
package de.sfuhrm.radiobrowser4j;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Getter;

import java.util.UUID;
@@ -25,26 +24,21 @@
* API response from the radio browser API.
* @author Stephan Fuhrmann
*/
@JsonIgnoreProperties(ignoreUnknown = true)
@Getter
class UrlResponse {
/** Whether this operation went ok. */
@Getter
private boolean ok;

/** The error message of this operation. */
@Getter
private String message;

/** The uuid of the referenced entity. */
@Getter
private UUID uuid;

/** The name of the referenced entity. */
@Getter
private String name;

/** The url of the referenced entity. */
@Getter
private String url;

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
/*
* Copyright 2017 Stephan Fuhrmann
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package de.sfuhrm.radiobrowser4j;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

/**
* Mixin for UrlResponse.
* @author Stephan Fuhrmann
*/
@JsonIgnoreProperties(ignoreUnknown = true)
abstract class UrlResponseMixin {
}

0 comments on commit 4b34bf8

Please sign in to comment.