mirror of
https://github.com/LukeHagar/plexjava.git
synced 2025-12-06 12:37:47 +00:00
ci: regenerated with OpenAPI Doc , Speakeasy CLI 1.535.1
This commit is contained in:
@@ -3,39 +3,186 @@
|
||||
*/
|
||||
package dev.plexapi.sdk.models.operations;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonValue;
|
||||
import com.fasterxml.jackson.core.JacksonException;
|
||||
import com.fasterxml.jackson.core.JsonGenerator;
|
||||
import com.fasterxml.jackson.core.JsonParser;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.DeserializationContext;
|
||||
import com.fasterxml.jackson.databind.SerializerProvider;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
|
||||
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
|
||||
import java.io.IOException;
|
||||
import java.lang.Override;
|
||||
import java.lang.String;
|
||||
import java.lang.SuppressWarnings;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* <p>Wrapper class for an "open" enum. "Open" enums are those that are expected
|
||||
* to evolve (particularly with the addition of enum members over time). If an
|
||||
* open enum is used then the appearance of unexpected enum values (say in a
|
||||
* response from an updated an API) will not bring about a runtime error thus
|
||||
* ensuring that non-updated client versions can continue to work without error.
|
||||
*
|
||||
* <p>Note that instances are immutable and are singletons (an internal thread-safe
|
||||
* cache is maintained to ensure that). As a consequence instances created with the
|
||||
* same value will satisfy reference equality (via {@code ==}).
|
||||
*
|
||||
* <p>This class is intended to emulate an enum (in terms of common usage and with
|
||||
* reference equality) but with the ability to carry unknown values. Unfortunately
|
||||
* Java does not permit the use of an instance in a switch expression but you can
|
||||
* use the {@code asEnum()} method (after dealing with the `Optional` appropriately).
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* State
|
||||
*
|
||||
* <p>The state of the media item
|
||||
*/
|
||||
public enum State {
|
||||
PLAYING("playing"),
|
||||
PAUSED("paused"),
|
||||
STOPPED("stopped");
|
||||
@JsonDeserialize(using = State._Deserializer.class)
|
||||
@JsonSerialize(using = State._Serializer.class)
|
||||
public class State {
|
||||
|
||||
public static final State PLAYING = new State("playing");
|
||||
public static final State PAUSED = new State("paused");
|
||||
public static final State STOPPED = new State("stopped");
|
||||
|
||||
// This map will grow whenever a Color gets created with a new
|
||||
// unrecognized value (a potential memory leak if the user is not
|
||||
// careful). Keep this field lower case to avoid clashing with
|
||||
// generated member names which will always be upper cased (Java
|
||||
// convention)
|
||||
private static final Map<String, State> values = createValuesMap();
|
||||
private static final Map<String, StateEnum> enums = createEnumsMap();
|
||||
|
||||
@JsonValue
|
||||
private final String value;
|
||||
|
||||
private State(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns a State with the given value. For a specific value the
|
||||
* returned object will always be a singleton so reference equality
|
||||
* is satisfied when the values are the same.
|
||||
*
|
||||
* @param value value to be wrapped as State
|
||||
*/
|
||||
public static State of(String value) {
|
||||
synchronized (State.class) {
|
||||
return values.computeIfAbsent(value, v -> new State(v));
|
||||
}
|
||||
}
|
||||
|
||||
public String value() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public static Optional<State> fromValue(String value) {
|
||||
for (State o: State.values()) {
|
||||
if (Objects.deepEquals(o.value, value)) {
|
||||
return Optional.of(o);
|
||||
}
|
||||
|
||||
public Optional<StateEnum> asEnum() {
|
||||
return Optional.ofNullable(enums.getOrDefault(value, null));
|
||||
}
|
||||
|
||||
public boolean isKnown() {
|
||||
return asEnum().isPresent();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(java.lang.Object obj) {
|
||||
if (this == obj)
|
||||
return true;
|
||||
if (obj == null)
|
||||
return false;
|
||||
if (getClass() != obj.getClass())
|
||||
return false;
|
||||
State other = (State) obj;
|
||||
return Objects.equals(value, other.value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "State [value=" + value + "]";
|
||||
}
|
||||
|
||||
// return an array just like an enum
|
||||
public static State[] values() {
|
||||
synchronized (State.class) {
|
||||
return values.values().toArray(new State[] {});
|
||||
}
|
||||
}
|
||||
|
||||
private static final Map<String, State> createValuesMap() {
|
||||
Map<String, State> map = new LinkedHashMap<>();
|
||||
map.put("playing", PLAYING);
|
||||
map.put("paused", PAUSED);
|
||||
map.put("stopped", STOPPED);
|
||||
return map;
|
||||
}
|
||||
|
||||
private static final Map<String, StateEnum> createEnumsMap() {
|
||||
Map<String, StateEnum> map = new HashMap<>();
|
||||
map.put("playing", StateEnum.PLAYING);
|
||||
map.put("paused", StateEnum.PAUSED);
|
||||
map.put("stopped", StateEnum.STOPPED);
|
||||
return map;
|
||||
}
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
public static final class _Serializer extends StdSerializer<State> {
|
||||
|
||||
protected _Serializer() {
|
||||
super(State.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void serialize(State value, JsonGenerator g, SerializerProvider provider)
|
||||
throws IOException, JsonProcessingException {
|
||||
g.writeObject(value.value);
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
public static final class _Deserializer extends StdDeserializer<State> {
|
||||
|
||||
protected _Deserializer() {
|
||||
super(State.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public State deserialize(JsonParser p, DeserializationContext ctxt)
|
||||
throws IOException, JacksonException {
|
||||
String v = p.readValueAs(new TypeReference<String>() {});
|
||||
// use the factory method to ensure we get singletons
|
||||
return State.of(v);
|
||||
}
|
||||
}
|
||||
|
||||
public enum StateEnum {
|
||||
|
||||
PLAYING("playing"),
|
||||
PAUSED("paused"),
|
||||
STOPPED("stopped"),;
|
||||
|
||||
private final String value;
|
||||
|
||||
private StateEnum(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public String value() {
|
||||
return value;
|
||||
}
|
||||
return Optional.empty();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user