From 73b0c4ea8116c4b1088dcd84cb2f4d7181baf7ab Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Mon, 30 Apr 2018 05:00:51 +0200 Subject: TunnelEditorFragment: rewrite and simplify This should remove some null pointer dereferences and overall make the thing more robust. Signed-off-by: Jason A. Donenfeld --- app/src/main/java/com/wireguard/config/Peer.java | 82 +++++++++++------------- 1 file changed, 37 insertions(+), 45 deletions(-) (limited to 'app/src/main/java/com/wireguard/config/Peer.java') diff --git a/app/src/main/java/com/wireguard/config/Peer.java b/app/src/main/java/com/wireguard/config/Peer.java index 28495f46..327365b3 100644 --- a/app/src/main/java/com/wireguard/config/Peer.java +++ b/app/src/main/java/com/wireguard/config/Peer.java @@ -21,27 +21,14 @@ import java.util.Locale; * Represents the configuration for a WireGuard peer (a [Peer] block). */ -public class Peer implements Parcelable { - public static final Creator CREATOR = new Creator() { - @Override - public Peer createFromParcel(final Parcel in) { - return new Peer(in); - } - - @Override - public Peer[] newArray(final int size) { - return new Peer[size]; - } - }; - - public static class Observable extends BaseObservable { +public class Peer { + public static class Observable extends BaseObservable implements Parcelable { private String allowedIPs; private String endpoint; private String persistentKeepalive; private String preSharedKey; private String publicKey; - public Observable(Peer parent) { loadData(parent); } @@ -118,6 +105,41 @@ public class Peer implements Parcelable { this.publicKey = publicKey; notifyPropertyChanged(BR.publicKey); } + + + public static final Creator CREATOR = new Creator() { + @Override + public Observable createFromParcel(final Parcel in) { + return new Observable(in); + } + + @Override + public Observable[] newArray(final int size) { + return new Observable[size]; + } + }; + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(final Parcel dest, final int flags) { + dest.writeString(allowedIPs); + dest.writeString(endpoint); + dest.writeString(persistentKeepalive); + dest.writeString(preSharedKey); + dest.writeString(publicKey); + } + + private Observable(final Parcel in) { + allowedIPs = in.readString(); + endpoint = in.readString(); + persistentKeepalive = in.readString(); + preSharedKey = in.readString(); + publicKey = in.readString(); + } } private List allowedIPsList; @@ -130,26 +152,6 @@ public class Peer implements Parcelable { allowedIPsList = new LinkedList<>(); } - private Peer(final Parcel in) { - allowedIPsList = in.createTypedArrayList(IPCidr.CREATOR); - String host = in.readString(); - int port = in.readInt(); - if (host != null && !host.isEmpty() && port > 0) - endpoint = InetSocketAddress.createUnresolved(host, port); - persistentKeepalive = in.readInt(); - preSharedKey = in.readString(); - if (preSharedKey != null && preSharedKey.isEmpty()) - preSharedKey = null; - publicKey = in.readString(); - if (publicKey != null && publicKey.isEmpty()) - publicKey = null; - } - - @Override - public int describeContents() { - return 0; - } - private String getAllowedIPsString() { if (allowedIPsList.isEmpty()) @@ -299,14 +301,4 @@ public class Peer implements Parcelable { sb.append(Attribute.PUBLIC_KEY.composeWith(publicKey)); return sb.toString(); } - - @Override - public void writeToParcel(final Parcel dest, final int flags) { - dest.writeTypedList(allowedIPsList); - dest.writeString(endpoint == null ? null : endpoint.getHostString()); - dest.writeInt(endpoint == null ? 0 : endpoint.getPort()); - dest.writeInt(persistentKeepalive); - dest.writeString(preSharedKey); - dest.writeString(publicKey); - } } -- cgit v1.2.3