Override Object methods in TrustUpdateJob, establish identity on Identity objects.
[Sone.git] / src / main / java / net / pterodactylus / sone / core / TrustUpdater.java
index 6221d39..d122235 100644 (file)
@@ -173,6 +173,38 @@ public class TrustUpdater extends AbstractService {
                        /* does nothing. */
                }
 
+               //
+               // OBJECT METHODS
+               //
+
+               /**
+                * {@inheritDoc}
+                */
+               @Override
+               public boolean equals(Object object) {
+                       if ((object == null) || !object.getClass().equals(getClass())) {
+                               return false;
+                       }
+                       TrustUpdateJob updateJob = (TrustUpdateJob) object;
+                       return ((truster == null) ? (updateJob.truster == null) : updateJob.truster.equals(truster)) && ((trustee == null) ? (updateJob.trustee == null) : updateJob.trustee.equals(trustee));
+               }
+
+               /**
+                * {@inheritDoc}
+                */
+               @Override
+               public int hashCode() {
+                       return ((truster == null) ? 0 : truster.hashCode()) ^ ((trustee == null) ? 0 : trustee.hashCode());
+               }
+
+               /**
+                * {@inheritDoc}
+                */
+               @Override
+               public String toString() {
+                       return String.format("%s[truster=%s,trustee=%s]", getClass().getSimpleName(), (truster == null) ? null : truster.getId(), (trustee == null) ? null : trustee.getId());
+               }
+
        }
 
        /**
@@ -180,7 +212,7 @@ public class TrustUpdater extends AbstractService {
         *
         * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
         */
-       private static class SetTrustJob extends TrustUpdateJob {
+       private class SetTrustJob extends TrustUpdateJob {
 
                /** The score of the relation. */
                private final Integer score;
@@ -215,9 +247,15 @@ public class TrustUpdater extends AbstractService {
                public void run() {
                        try {
                                if (score != null) {
-                                       truster.setTrust(trustee, score, comment);
+                                       if (trustee instanceof DefaultIdentity) {
+                                               ((DefaultIdentity) trustee).setTrust(truster, new Trust(score, null, 0));
+                                       }
+                                       webOfTrustConnector.setTrust(truster, trustee, score, comment);
                                } else {
-                                       truster.removeTrust(trustee);
+                                       if (trustee instanceof DefaultIdentity) {
+                                               ((DefaultIdentity) trustee).setTrust(truster, null);
+                                       }
+                                       webOfTrustConnector.removeTrust(truster, trustee);
                                }
                        } catch (WebOfTrustException wote1) {
                                logger.log(Level.WARNING, "Could not set Trust value for " + truster + " -> " + trustee + " to " + score + " (" + comment + ")!", wote1);