Skip to content
Snippets Groups Projects
Commit 92ba16c3 authored by Janne Mareike Koschinski's avatar Janne Mareike Koschinski
Browse files

Improved code, refactored it a bit, implemented full null safety

parent 146177e8
No related branches found
No related tags found
No related merge requests found
Showing
with 239 additions and 77 deletions
package de.kuschku.libquassel.functions.types;
import android.support.annotation.NonNull;
import java.util.Map;
import de.kuschku.libquassel.primitives.types.QVariant;
public interface UnpackedFunction extends SerializedFunction<Map<String, QVariant>> {
@NonNull
Map<String, QVariant> getData();
}
package de.kuschku.libquassel.functions.types;
import android.support.annotation.NonNull;
import java.util.Map;
import de.kuschku.libquassel.primitives.types.QVariant;
public class UnpackedInitDataFunction extends InitDataFunction implements UnpackedFunction {
@NonNull
private final Map<String, QVariant> data;
public UnpackedInitDataFunction(String className, String objectName, Map<String, QVariant> data) {
public UnpackedInitDataFunction(@NonNull String className, @NonNull String objectName, @NonNull Map<String, QVariant> data) {
this.className = className;
this.objectName = objectName;
this.data = data;
}
@NonNull
@Override
public Map<String, QVariant> getData() {
return data;
}
@NonNull
@Override
public String toString() {
return "UnpackedInitDataFunction{" +
......
package de.kuschku.libquassel.localtypes;
import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import de.kuschku.libquassel.primitives.types.BufferInfo;
public interface Buffer {
@NonNull
BufferInfo getInfo();
@Nullable
String getName();
}
package de.kuschku.libquassel.localtypes;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import de.kuschku.libquassel.primitives.types.BufferInfo;
import de.kuschku.libquassel.syncables.types.Network;
import de.kuschku.util.AndroidAssert;
import static de.kuschku.util.AndroidAssert.*;
public class Buffers {
private Buffers() {
}
public static Buffer fromType(BufferInfo info, Network network) {
@Nullable
public static Buffer fromType(@NonNull BufferInfo info, @NonNull Network network) {
Buffer result;
switch (info.type) {
case QUERY:
assertNotNull(info.name);
result = new QueryBuffer(info, network.getUser(info.name));
break;
case CHANNEL:
......
package de.kuschku.libquassel.localtypes;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import de.kuschku.libquassel.primitives.types.BufferInfo;
import de.kuschku.libquassel.syncables.types.IrcChannel;
public class ChannelBuffer implements Buffer {
@NonNull
private final BufferInfo info;
private IrcChannel channel;
@NonNull
private final IrcChannel channel;
public ChannelBuffer(BufferInfo info, IrcChannel channel) {
public ChannelBuffer(@NonNull BufferInfo info, @NonNull IrcChannel channel) {
this.info = info;
this.channel = channel;
}
@NonNull
@Override
public BufferInfo getInfo() {
return info;
}
@Nullable
@Override
public String getName() {
return getInfo().name;
}
@NonNull
public IrcChannel getChannel() {
return channel;
}
@NonNull
@Override
public String toString() {
return "ChannelBuffer{" +
......
package de.kuschku.libquassel.localtypes;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import de.kuschku.libquassel.primitives.types.BufferInfo;
import de.kuschku.libquassel.syncables.types.IrcUser;
public class QueryBuffer implements Buffer {
@NonNull
private final BufferInfo info;
private IrcUser user;
@Nullable
private final IrcUser user;
public QueryBuffer(BufferInfo info, IrcUser user) {
public QueryBuffer(@NonNull BufferInfo info, @Nullable IrcUser user) {
this.info = info;
this.user = user;
}
@NonNull
@Override
public BufferInfo getInfo() {
return info;
}
@Nullable
@Override
public String getName() {
return getInfo().name;
}
@Nullable
public IrcUser getUser() {
return user;
}
@NonNull
@Override
public String toString() {
return "QueryBuffer{" +
......
package de.kuschku.libquassel.localtypes;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import de.kuschku.libquassel.primitives.types.BufferInfo;
import de.kuschku.libquassel.syncables.types.Network;
public class StatusBuffer implements Buffer {
@NonNull
private final BufferInfo info;
@NonNull
private final Network network;
public StatusBuffer(BufferInfo info, Network network) {
public StatusBuffer(@NonNull BufferInfo info, @NonNull Network network) {
this.info = info;
this.network = network;
}
@NonNull
@Override
public BufferInfo getInfo() {
return info;
}
@Nullable
@Override
public String getName() {
return network.getNetworkName();
}
@NonNull
@Override
public String toString() {
return "StatusBuffer{" +
......
package de.kuschku.libquassel.message;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import org.joda.time.DateTime;
......@@ -12,15 +13,21 @@ import de.kuschku.util.observables.ContentComparable;
public class Message implements ContentComparable<Message> {
public final int messageId;
@NonNull
public final DateTime time;
@NonNull
public final Type type;
@NonNull
public final Flags flags;
@NonNull
public final BufferInfo bufferInfo;
@NonNull
public final String sender;
@NonNull
public final String content;
public Message(int messageId, DateTime time, Type type, Flags flags, BufferInfo bufferInfo, String sender,
String content) {
public Message(int messageId, @NonNull DateTime time, @NonNull Type type, @NonNull Flags flags, @NonNull BufferInfo bufferInfo, @NonNull String sender,
@NonNull String content) {
this.messageId = messageId;
this.time = time;
this.type = type;
......@@ -30,6 +37,7 @@ public class Message implements ContentComparable<Message> {
this.content = content;
}
@NonNull
@Override
public String toString() {
return "Message{" +
......@@ -44,22 +52,20 @@ public class Message implements ContentComparable<Message> {
}
@Override
public boolean equalsContent(Message message) {
public boolean equalsContent(@NonNull Message message) {
return messageId == message.messageId &&
!(time != null ? !time.equals(message.time) : message.time != null) &&
time.equals(message.time) &&
type == message.type &&
!(flags != null ? !flags.equals(message.flags) : message.flags != null) &&
!(bufferInfo != null ? !bufferInfo.equals(message.bufferInfo) : message.bufferInfo != null) &&
!(sender != null ? !sender.equals(message.sender) : message.sender != null) &&
!(content != null ? !content.equals(message.content) : message.content != null);
flags.equals(message.flags) &&
bufferInfo.equals(message.bufferInfo) &&
sender.equals(message.sender) &&
content.equals(message.content);
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
public boolean equals(@Nullable Object o) {
return this == o || !(o == null || getClass() != o.getClass()) && messageId == ((Message) o).messageId;
return messageId == ((Message) o).messageId;
}
@Override
......@@ -98,6 +104,7 @@ public class Message implements ContentComparable<Message> {
this.value = value;
}
@NonNull
public static Type fromId(int id) {
switch (id) {
case 0x00001:
......@@ -174,6 +181,7 @@ public class Message implements ContentComparable<Message> {
Backlog = (0 != (flags & 0x80));
}
@NonNull
@Override
public String toString() {
final StringBuilder output = new StringBuilder("Flags[, ");
......@@ -191,12 +199,12 @@ public class Message implements ContentComparable<Message> {
public static class MessageComparator implements Comparator<Message>, Serializable {
@Override
public int compare(Message o1, Message o2) {
public int compare(@NonNull Message o1, @NonNull Message o2) {
return o1.messageId - o2.messageId;
}
@Override
public boolean equals(Object obj) {
public boolean equals(@Nullable Object obj) {
return obj == this;
}
}
......
package de.kuschku.libquassel.objects;
import android.support.annotation.NonNull;
import java.util.HashMap;
import java.util.Map;
......@@ -16,8 +18,12 @@ import de.kuschku.libquassel.objects.serializers.ObjectSerializer;
import de.kuschku.libquassel.objects.serializers.SessionInitSerializer;
import de.kuschku.libquassel.primitives.types.QVariant;
import static de.kuschku.util.AndroidAssert.*;
@SuppressWarnings({"unchecked", "ConstantConditions"})
public class MessageTypeRegistry {
private static Map<String, ObjectSerializer> serializerMap = new HashMap<String, ObjectSerializer>();
@NonNull
private static final Map<String, ObjectSerializer> serializerMap = new HashMap<>();
static {
serializerMap.put("ClientInit", ClientInitSerializer.get());
......@@ -37,7 +43,8 @@ public class MessageTypeRegistry {
}
public static <T> T from(final Map<String, QVariant> function) {
@NonNull
public static <T> T from(@NonNull final Map<String, QVariant> function) {
final String msgType = (String) function.get("MsgType").data;
if (serializerMap.containsKey(msgType))
return (T) serializerMap.get(msgType).fromLegacy(function);
......@@ -45,12 +52,12 @@ public class MessageTypeRegistry {
throw new IllegalArgumentException(String.format("Unknown MessageType: %s", msgType));
}
public static <T> QVariant<Map<String, QVariant>> toVariantMap(final T data) {
if (serializerMap.containsKey(data.getClass().getSimpleName())) {
@NonNull
public static <T> QVariant<Map<String, QVariant>> toVariantMap(@NonNull final T data) {
assertTrue(serializerMap.containsKey(data.getClass().getSimpleName()));
final QVariant<Map<String, QVariant>> map = (QVariant<Map<String, QVariant>>) serializerMap.get(data.getClass().getSimpleName()).toVariantMap(data);
map.data.put("MsgType", new QVariant(data.getClass().getSimpleName()));
return map;
} else
throw new IllegalArgumentException(String.format("Unknown MessageType: %s", data.getClass().getSimpleName()));
}
}
package de.kuschku.libquassel.objects.serializers;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import java.util.ArrayList;
......@@ -14,20 +15,25 @@ import de.kuschku.libquassel.objects.types.ClientInitAck;
import de.kuschku.libquassel.objects.types.StorageBackend;
import de.kuschku.libquassel.primitives.types.QVariant;
@SuppressWarnings({"unchecked", "ConstantConditions"})
public class ClientInitAckSerializer implements ObjectSerializer<ClientInitAck> {
private static ClientInitAckSerializer serializer = new ClientInitAckSerializer();
@NonNull
private static final ClientInitAckSerializer serializer = new ClientInitAckSerializer();
private ClientInitAckSerializer() {
}
@NonNull
public static ClientInitAckSerializer get() {
return serializer;
}
@NonNull
@Override
public QVariant<Map<String, QVariant>> toVariantMap(final ClientInitAck data) {
public QVariant<Map<String, QVariant>> toVariantMap(@NonNull final ClientInitAck data) {
final List<Map<String, QVariant>> storageBackends = new ArrayList<>();
final StorageBackendSerializer storageBackendSerializer = StorageBackendSerializer.get();
if (data.StorageBackends != null)
for (StorageBackend backend : data.StorageBackends) {
storageBackends.add((Map<String, QVariant>) storageBackendSerializer.toVariantMap(backend));
}
......@@ -40,14 +46,16 @@ public class ClientInitAckSerializer implements ObjectSerializer<ClientInitAck>
return map;
}
@NonNull
@Override
public ClientInitAck fromDatastream(Map<String, QVariant> map) {
public ClientInitAck fromDatastream(@NonNull Map<String, QVariant> map) {
return fromLegacy(map);
}
@NonNull
@Override
public ClientInitAck fromLegacy(Map<String, QVariant> map) {
final List<StorageBackend> storageBackends = new ArrayList<StorageBackend>();
public ClientInitAck fromLegacy(@NonNull Map<String, QVariant> map) {
final List<StorageBackend> storageBackends = new ArrayList<>();
if (map.containsKey("StorageBackends")) {
final StorageBackendSerializer storageBackendSerializer = StorageBackendSerializer.get();
for (Map<String, QVariant> backend : (List<Map<String, QVariant>>) map.get("StorageBackends").data) {
......@@ -65,7 +73,7 @@ public class ClientInitAckSerializer implements ObjectSerializer<ClientInitAck>
@Nullable
@Override
public ClientInitAck from(SerializedFunction function) {
public ClientInitAck from(@NonNull SerializedFunction function) {
if (function instanceof PackedFunction)
return fromLegacy(((PackedFunction) function).getData());
else if (function instanceof UnpackedFunction)
......
package de.kuschku.libquassel.objects.serializers;
import android.support.annotation.NonNull;
import java.util.HashMap;
import java.util.Map;
......@@ -9,37 +11,43 @@ import de.kuschku.libquassel.functions.types.UnpackedFunction;
import de.kuschku.libquassel.objects.types.ClientInitReject;
import de.kuschku.libquassel.primitives.types.QVariant;
@SuppressWarnings({"unchecked", "ConstantConditions"})
public class ClientInitRejectSerializer implements ObjectSerializer<ClientInitReject> {
@NonNull
private static final ClientInitRejectSerializer serializer = new ClientInitRejectSerializer();
private ClientInitRejectSerializer() {
}
@NonNull
public static ClientInitRejectSerializer get() {
return serializer;
}
@NonNull
@Override
public QVariant<Map<String, QVariant>> toVariantMap(final ClientInitReject data) {
public QVariant<Map<String, QVariant>> toVariantMap(@NonNull final ClientInitReject data) {
final QVariant<Map<String, QVariant>> map = new QVariant<>(new HashMap<>());
map.data.put("Error", new QVariant<>(data.Error));
return map;
}
@NonNull
@Override
public ClientInitReject fromDatastream(Map<String, QVariant> map) {
public ClientInitReject fromDatastream(@NonNull Map<String, QVariant> map) {
return fromLegacy(map);
}
@NonNull
@Override
public ClientInitReject fromLegacy(Map<String, QVariant> map) {
public ClientInitReject fromLegacy(@NonNull Map<String, QVariant> map) {
return new ClientInitReject(
(String) map.get("Error").data
);
}
@Override
public ClientInitReject from(SerializedFunction function) {
public ClientInitReject from(@NonNull SerializedFunction function) {
if (function instanceof PackedFunction)
return fromLegacy(((PackedFunction) function).getData());
else if (function instanceof UnpackedFunction)
......
package de.kuschku.libquassel.objects.serializers;
import android.support.annotation.NonNull;
import java.util.HashMap;
import java.util.Map;
......@@ -9,18 +11,22 @@ import de.kuschku.libquassel.functions.types.UnpackedFunction;
import de.kuschku.libquassel.objects.types.ClientInit;
import de.kuschku.libquassel.primitives.types.QVariant;
@SuppressWarnings({"unchecked", "ConstantConditions"})
public class ClientInitSerializer implements ObjectSerializer<ClientInit> {
@NonNull
private static final ClientInitSerializer serializer = new ClientInitSerializer();
private ClientInitSerializer() {
}
@NonNull
public static ClientInitSerializer get() {
return serializer;
}
@NonNull
@Override
public QVariant<Map<String, QVariant>> toVariantMap(final ClientInit data) {
public QVariant<Map<String, QVariant>> toVariantMap(@NonNull final ClientInit data) {
final QVariant<Map<String, QVariant>> map = new QVariant<>(new HashMap<>());
map.data.put("ClientDate", new QVariant<>(data.ClientDate));
map.data.put("UseSsl", new QVariant<>(data.UseSsl));
......@@ -30,13 +36,15 @@ public class ClientInitSerializer implements ObjectSerializer<ClientInit> {
return map;
}
@NonNull
@Override
public ClientInit fromDatastream(Map<String, QVariant> map) {
public ClientInit fromDatastream(@NonNull Map<String, QVariant> map) {
return fromLegacy(map);
}
@NonNull
@Override
public ClientInit fromLegacy(final Map<String, QVariant> map) {
public ClientInit fromLegacy(@NonNull final Map<String, QVariant> map) {
return new ClientInit(
((QVariant<String>) map.get("ClientDate")).data,
((QVariant<Boolean>) map.get("UseSsl")).data,
......@@ -47,7 +55,7 @@ public class ClientInitSerializer implements ObjectSerializer<ClientInit> {
}
@Override
public ClientInit from(SerializedFunction function) {
public ClientInit from(@NonNull SerializedFunction function) {
if (function instanceof PackedFunction)
return fromLegacy(((PackedFunction) function).getData());
else if (function instanceof UnpackedFunction)
......
package de.kuschku.libquassel.objects.serializers;
import android.support.annotation.NonNull;
import java.util.HashMap;
import java.util.Map;
......@@ -10,32 +12,37 @@ import de.kuschku.libquassel.objects.types.ClientLoginAck;
import de.kuschku.libquassel.primitives.types.QVariant;
public class ClientLoginAckSerializer implements ObjectSerializer<ClientLoginAck> {
@NonNull
private static final ClientLoginAckSerializer serializer = new ClientLoginAckSerializer();
private ClientLoginAckSerializer() {
}
@NonNull
public static ClientLoginAckSerializer get() {
return serializer;
}
@NonNull
@Override
public QVariant<Map<String, QVariant>> toVariantMap(final ClientLoginAck data) {
public QVariant<Map<String, QVariant>> toVariantMap(@NonNull final ClientLoginAck data) {
return new QVariant<>(new HashMap<>());
}
@NonNull
@Override
public ClientLoginAck fromDatastream(Map<String, QVariant> map) {
public ClientLoginAck fromDatastream(@NonNull Map<String, QVariant> map) {
return fromLegacy(map);
}
@NonNull
@Override
public ClientLoginAck fromLegacy(final Map<String, QVariant> map) {
public ClientLoginAck fromLegacy(@NonNull final Map<String, QVariant> map) {
return new ClientLoginAck();
}
@Override
public ClientLoginAck from(SerializedFunction function) {
public ClientLoginAck from(@NonNull SerializedFunction function) {
if (function instanceof PackedFunction)
return fromLegacy(((PackedFunction) function).getData());
else if (function instanceof UnpackedFunction)
......
package de.kuschku.libquassel.objects.serializers;
import android.support.annotation.NonNull;
import java.util.HashMap;
import java.util.Map;
......@@ -9,37 +11,47 @@ import de.kuschku.libquassel.functions.types.UnpackedFunction;
import de.kuschku.libquassel.objects.types.ClientLoginReject;
import de.kuschku.libquassel.primitives.types.QVariant;
import static de.kuschku.util.AndroidAssert.*;
@SuppressWarnings({"unchecked", "ConstantConditions"})
public class ClientLoginRejectSerializer implements ObjectSerializer<ClientLoginReject> {
@NonNull
private static final ClientLoginRejectSerializer serializer = new ClientLoginRejectSerializer();
private ClientLoginRejectSerializer() {
}
@NonNull
public static ClientLoginRejectSerializer get() {
return serializer;
}
@NonNull
@Override
public QVariant<Map<String, QVariant>> toVariantMap(final ClientLoginReject data) {
public QVariant<Map<String, QVariant>> toVariantMap(@NonNull final ClientLoginReject data) {
final QVariant<Map<String, QVariant>> map = new QVariant<>(new HashMap<>());
assertNotNull(map.data);
map.data.put("Error", new QVariant<>(data.Error));
return map;
}
@NonNull
@Override
public ClientLoginReject fromDatastream(Map<String, QVariant> map) {
public ClientLoginReject fromDatastream(@NonNull Map<String, QVariant> map) {
return fromLegacy(map);
}
@NonNull
@Override
public ClientLoginReject fromLegacy(Map<String, QVariant> map) {
public ClientLoginReject fromLegacy(@NonNull Map<String, QVariant> map) {
return new ClientLoginReject(
(String) map.get("Error").data
);
}
@Override
public ClientLoginReject from(SerializedFunction function) {
public ClientLoginReject from(@NonNull SerializedFunction function) {
if (function instanceof PackedFunction)
return fromLegacy(((PackedFunction) function).getData());
else if (function instanceof UnpackedFunction)
......
package de.kuschku.libquassel.objects.serializers;
import android.support.annotation.NonNull;
import java.util.HashMap;
import java.util.Map;
......@@ -9,31 +11,41 @@ import de.kuschku.libquassel.functions.types.UnpackedFunction;
import de.kuschku.libquassel.objects.types.ClientLogin;
import de.kuschku.libquassel.primitives.types.QVariant;
import static de.kuschku.util.AndroidAssert.*;
@SuppressWarnings({"unchecked", "ConstantConditions"})
public class ClientLoginSerializer implements ObjectSerializer<ClientLogin> {
@NonNull
private static final ClientLoginSerializer serializer = new ClientLoginSerializer();
private ClientLoginSerializer() {
}
@NonNull
public static ClientLoginSerializer get() {
return serializer;
}
@NonNull
@Override
public QVariant<Map<String, QVariant>> toVariantMap(final ClientLogin data) {
public QVariant<Map<String, QVariant>> toVariantMap(@NonNull final ClientLogin data) {
final QVariant<Map<String, QVariant>> map = new QVariant<>(new HashMap<>());
assertNotNull(map.data);
map.data.put("User", new QVariant<>(data.User));
map.data.put("Password", new QVariant<>(data.Password));
return map;
}
@NonNull
@Override
public ClientLogin fromDatastream(Map<String, QVariant> map) {
public ClientLogin fromDatastream(@NonNull Map<String, QVariant> map) {
return fromLegacy(map);
}
@NonNull
@Override
public ClientLogin fromLegacy(Map<String, QVariant> map) {
public ClientLogin fromLegacy(@NonNull Map<String, QVariant> map) {
return new ClientLogin(
(String) map.get("User").data,
(String) map.get("Password").data
......@@ -41,7 +53,7 @@ public class ClientLoginSerializer implements ObjectSerializer<ClientLogin> {
}
@Override
public ClientLogin from(SerializedFunction function) {
public ClientLogin from(@NonNull SerializedFunction function) {
if (function instanceof PackedFunction)
return fromLegacy(((PackedFunction) function).getData());
else if (function instanceof UnpackedFunction)
......
package de.kuschku.libquassel.objects.serializers;
import android.support.annotation.NonNull;
import java.util.HashMap;
import java.util.Map;
......@@ -10,32 +12,37 @@ import de.kuschku.libquassel.objects.types.CoreSetupAck;
import de.kuschku.libquassel.primitives.types.QVariant;
public class CoreSetupAckSerializer implements ObjectSerializer<CoreSetupAck> {
@NonNull
private static final CoreSetupAckSerializer serializer = new CoreSetupAckSerializer();
private CoreSetupAckSerializer() {
}
@NonNull
public static CoreSetupAckSerializer get() {
return serializer;
}
@NonNull
@Override
public QVariant<Map<String, QVariant>> toVariantMap(final CoreSetupAck data) {
public QVariant<Map<String, QVariant>> toVariantMap(@NonNull final CoreSetupAck data) {
return new QVariant<>(new HashMap<>());
}
@NonNull
@Override
public CoreSetupAck fromDatastream(Map<String, QVariant> map) {
public CoreSetupAck fromDatastream(@NonNull Map<String, QVariant> map) {
return fromLegacy(map);
}
@NonNull
@Override
public CoreSetupAck fromLegacy(Map<String, QVariant> map) {
public CoreSetupAck fromLegacy(@NonNull Map<String, QVariant> map) {
return new CoreSetupAck();
}
@Override
public CoreSetupAck from(SerializedFunction function) {
public CoreSetupAck from(@NonNull SerializedFunction function) {
if (function instanceof PackedFunction)
return fromLegacy(((PackedFunction) function).getData());
else if (function instanceof UnpackedFunction)
......
package de.kuschku.libquassel.objects.serializers;
import android.support.annotation.NonNull;
import java.util.HashMap;
import java.util.Map;
......@@ -9,37 +11,47 @@ import de.kuschku.libquassel.functions.types.UnpackedFunction;
import de.kuschku.libquassel.objects.types.CoreSetupData;
import de.kuschku.libquassel.primitives.types.QVariant;
import static de.kuschku.util.AndroidAssert.*;
@SuppressWarnings({"unchecked", "ConstantConditions"})
public class CoreSetupDataSerializer implements ObjectSerializer<CoreSetupData> {
@NonNull
private static final CoreSetupDataSerializer serializer = new CoreSetupDataSerializer();
private CoreSetupDataSerializer() {
}
@NonNull
public static CoreSetupDataSerializer get() {
return serializer;
}
@NonNull
@Override
public QVariant<Map<String, QVariant>> toVariantMap(final CoreSetupData data) {
public QVariant<Map<String, QVariant>> toVariantMap(@NonNull final CoreSetupData data) {
final QVariant<Map<String, QVariant>> map = new QVariant<>(new HashMap<>());
assertNotNull(map.data);
map.data.put("SetupData", SetupDataInitializer.get().toVariantMap(data.SetupData));
return map;
}
@NonNull
@Override
public CoreSetupData fromDatastream(Map<String, QVariant> map) {
public CoreSetupData fromDatastream(@NonNull Map<String, QVariant> map) {
return fromLegacy(map);
}
@NonNull
@Override
public CoreSetupData fromLegacy(Map<String, QVariant> map) {
public CoreSetupData fromLegacy(@NonNull Map<String, QVariant> map) {
return new CoreSetupData(
SetupDataInitializer.get().fromLegacy((Map<String, QVariant>) map.get("SetupData").data)
);
}
@Override
public CoreSetupData from(SerializedFunction function) {
public CoreSetupData from(@NonNull SerializedFunction function) {
if (function instanceof PackedFunction)
return fromLegacy(((PackedFunction) function).getData());
else if (function instanceof UnpackedFunction)
......
package de.kuschku.libquassel.objects.serializers;
import android.support.annotation.NonNull;
import java.util.HashMap;
import java.util.Map;
......@@ -9,37 +11,47 @@ import de.kuschku.libquassel.functions.types.UnpackedFunction;
import de.kuschku.libquassel.objects.types.CoreSetupReject;
import de.kuschku.libquassel.primitives.types.QVariant;
import static de.kuschku.util.AndroidAssert.*;
@SuppressWarnings({"unchecked", "ConstantConditions"})
public class CoreSetupRejectSerializer implements ObjectSerializer<CoreSetupReject> {
@NonNull
private static final CoreSetupRejectSerializer serializer = new CoreSetupRejectSerializer();
private CoreSetupRejectSerializer() {
}
@NonNull
public static CoreSetupRejectSerializer get() {
return serializer;
}
@NonNull
@Override
public QVariant<Map<String, QVariant>> toVariantMap(final CoreSetupReject data) {
public QVariant<Map<String, QVariant>> toVariantMap(@NonNull final CoreSetupReject data) {
final QVariant<Map<String, QVariant>> map = new QVariant<>(new HashMap<>());
assertNotNull(map.data);
map.data.put("Error", new QVariant<>(data.Error));
return map;
}
@NonNull
@Override
public CoreSetupReject fromDatastream(Map<String, QVariant> map) {
public CoreSetupReject fromDatastream(@NonNull Map<String, QVariant> map) {
return fromLegacy(map);
}
@NonNull
@Override
public CoreSetupReject fromLegacy(Map<String, QVariant> map) {
public CoreSetupReject fromLegacy(@NonNull Map<String, QVariant> map) {
return new CoreSetupReject(
(String) map.get("Error").data
);
}
@Override
public CoreSetupReject from(SerializedFunction function) {
public CoreSetupReject from(@NonNull SerializedFunction function) {
if (function instanceof PackedFunction)
return fromLegacy(((PackedFunction) function).getData());
else if (function instanceof UnpackedFunction)
......
package de.kuschku.libquassel.objects.serializers;
import android.support.annotation.NonNull;
import java.util.HashMap;
import java.util.Map;
......@@ -9,19 +11,27 @@ import de.kuschku.libquassel.functions.types.UnpackedFunction;
import de.kuschku.libquassel.objects.types.NetworkServer;
import de.kuschku.libquassel.primitives.types.QVariant;
import static de.kuschku.util.AndroidAssert.*;
@SuppressWarnings({"unchecked", "ConstantConditions"})
public class NetworkServerSerializer implements ObjectSerializer<NetworkServer> {
@NonNull
private static final NetworkServerSerializer serializer = new NetworkServerSerializer();
private NetworkServerSerializer() {
}
@NonNull
public static NetworkServerSerializer get() {
return serializer;
}
@NonNull
@Override
public QVariant<Map<String, QVariant>> toVariantMap(NetworkServer data) {
public QVariant<Map<String, QVariant>> toVariantMap(@NonNull NetworkServer data) {
final QVariant<Map<String, QVariant>> map = new QVariant<>(new HashMap<>());
assertNotNull(map.data);
map.data.put("UseSSL", new QVariant<>(data.UseSSL));
map.data.put("sslVersion", new QVariant<>(data.sslVersion));
map.data.put("Host", new QVariant<>(data.Host));
......@@ -36,13 +46,15 @@ public class NetworkServerSerializer implements ObjectSerializer<NetworkServer>
return map;
}
@NonNull
@Override
public NetworkServer fromDatastream(Map<String, QVariant> map) {
public NetworkServer fromDatastream(@NonNull Map<String, QVariant> map) {
return fromLegacy(map);
}
@NonNull
@Override
public NetworkServer fromLegacy(Map<String, QVariant> map) {
public NetworkServer fromLegacy(@NonNull Map<String, QVariant> map) {
return new NetworkServer(
(boolean) map.get("UseSSL").data,
(int) map.get("sslVersion").data,
......@@ -59,7 +71,7 @@ public class NetworkServerSerializer implements ObjectSerializer<NetworkServer>
}
@Override
public NetworkServer from(SerializedFunction function) {
public NetworkServer from(@NonNull SerializedFunction function) {
if (function instanceof PackedFunction)
return fromLegacy(((PackedFunction) function).getData());
else if (function instanceof UnpackedFunction)
......
package de.kuschku.libquassel.objects.serializers;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import java.util.Map;
......@@ -8,12 +9,15 @@ import de.kuschku.libquassel.functions.types.SerializedFunction;
import de.kuschku.libquassel.primitives.types.QVariant;
public interface ObjectSerializer<T> {
QVariant<Map<String, QVariant>> toVariantMap(T data);
@Nullable
QVariant<Map<String, QVariant>> toVariantMap(@NonNull T data);
T fromDatastream(Map<String, QVariant> map);
@NonNull
T fromDatastream(@NonNull Map<String, QVariant> map);
T fromLegacy(Map<String, QVariant> map);
@NonNull
T fromLegacy(@NonNull Map<String, QVariant> map);
@Nullable
T from(SerializedFunction function);
T from(@NonNull SerializedFunction function);
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment