Rework own identity selection algorithm to always find the best result.
[WoTNS.git] / src / main / java / net / pterodactylus / wotns / main / Resolver.java
index 63123b2..94a098e 100644 (file)
@@ -90,22 +90,18 @@ public class Resolver {
                        identityName = shortName.substring(0, atSign);
                        keyStart = shortName.substring(atSign + 1);
                }
-               @SuppressWarnings("hiding")
                final OwnIdentity ownIdentity;
-               if ((this.ownIdentityId != null) && (identityManager.getOwnIdentity(this.ownIdentityId) != null)) {
-                       ownIdentity = identityManager.getOwnIdentity(this.ownIdentityId);
-               } else if (this.ownIdentityId == null) {
-                       Set<OwnIdentity> ownIdentities = identityManager.getAllOwnIdentities();
-                       if (!ownIdentities.isEmpty()) {
-                               ownIdentity = ownIdentities.iterator().next();
+               if (this.ownIdentityId != null) {
+                       if (identityManager.getOwnIdentity(this.ownIdentityId) != null) {
+                               ownIdentity = identityManager.getOwnIdentity(this.ownIdentityId);
                        } else {
-                               ownIdentity = null;
+                               ownIdentity = getFirstOwnIdentity();
                        }
                } else {
-                       logger.log(Level.SEVERE, "Can not resolve “" + shortName + "” without a Web of Trust Identity!");
-                       ownIdentity = null;
+                       ownIdentity = getFirstOwnIdentity();
                }
                if (ownIdentity == null) {
+                       logger.log(Level.SEVERE, "Can not resolve “" + shortName + "” without a Web of Trust Identity!");
                        return null;
                }
                System.out.println("using own identity " + ownIdentity + " to resolve " + shortName);
@@ -134,4 +130,12 @@ public class Resolver {
                return matchingIdentities.get(0);
        }
 
+       private OwnIdentity getFirstOwnIdentity() {
+               Set<OwnIdentity> ownIdentities = identityManager.getAllOwnIdentities();
+               if (!ownIdentities.isEmpty()) {
+                       return ownIdentities.iterator().next();
+               }
+               return null;
+       }
+
 }