Always return copies of own identities.
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Sun, 13 Nov 2011 11:56:37 +0000 (12:56 +0100)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Sun, 13 Nov 2011 11:56:37 +0000 (12:56 +0100)
src/main/java/net/pterodactylus/sone/freenet/wot/IdentityManager.java

index 065aa47..69af0ca 100644 (file)
@@ -26,6 +26,8 @@ import java.util.logging.Level;
 import java.util.logging.Logger;
 
 import net.pterodactylus.sone.freenet.plugin.PluginException;
+import net.pterodactylus.util.collection.Mapper;
+import net.pterodactylus.util.collection.Mappers;
 import net.pterodactylus.util.logging.Logging;
 import net.pterodactylus.util.service.AbstractService;
 
@@ -140,7 +142,7 @@ public class IdentityManager extends AbstractService {
                Set<OwnIdentity> allOwnIdentities = getAllOwnIdentities();
                for (OwnIdentity ownIdentity : allOwnIdentities) {
                        if (ownIdentity.getId().equals(id)) {
-                               return ownIdentity;
+                               return new DefaultOwnIdentity(webOfTrustConnector, ownIdentity);
                        }
                }
                return null;
@@ -159,7 +161,17 @@ public class IdentityManager extends AbstractService {
                                newOwnIdentities.put(ownIdentity.getId(), ownIdentity);
                        }
                        checkOwnIdentities(newOwnIdentities);
-                       return ownIdentities;
+                       return Mappers.mappedSet(ownIdentities, new Mapper<OwnIdentity, OwnIdentity>() {
+
+                               /**
+                                * {@inheritDoc}
+                                */
+                               @Override
+                               @SuppressWarnings("synthetic-access")
+                               public OwnIdentity map(OwnIdentity input) {
+                                       return new DefaultOwnIdentity(webOfTrustConnector, input);
+                               }
+                       });
                } catch (WebOfTrustException wote1) {
                        logger.log(Level.WARNING, "Could not load all own identities!", wote1);
                        return Collections.emptySet();