package pluginbase.config.examples;
import pluginbase.config.annotation.Comment;
import pluginbase.config.annotation.SerializeWith;
import pluginbase.config.serializers.CustomSerializer;
import pluginbase.logging.ObjectStringifier;
import java.util.Arrays;
@SerializeWith(CustomSerializer.class)
public class Custom {
@Comment("A name")
public String name;
@Comment("Some data")
public Data data = new Data();
public Custom(String name) {
this.name = name;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Custom)) return false;
final Custom custom = (Custom) o;
if (!name.equals(custom.name)) return false;
return data.equals(custom.data);
}
@Override
public int hashCode() {
int result = name.hashCode();
result = 31 * result + data.hashCode();
return result;
}
@Override
public String toString() {
return ObjectStringifier.toString(this, true);
}
public static class Data {
public Object[] array = new Object[] {1, 2, 3};
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Data)) return false;
final Data data = (Data) o;
if (array == null && data.array == null) return true;
if (array == null || data.array == null) return false;
if (array.length != data.array.length) return false;
for (int i = 0; i < array.length; i++) {
if (!array[i].equals(data.array[i])) {
return false;
}
}
return true;
}
@Override
public int hashCode() {
return Arrays.hashCode(array);
}
@Override
public String toString() {
return ObjectStringifier.toString(this, true);
}
}
}