* The identity receiving the trust
*/
public void getTrust(OwnIdentity truster, Identity trustee) {
- updateJobs.add(new GetTrustJob(truster, trustee));
+ GetTrustJob getTrustJob = new GetTrustJob(truster, trustee);
+ if (!updateJobs.contains(getTrustJob)) {
+ logger.log(Level.FINER, "Adding Trust Update Job: " + getTrustJob);
+ try {
+ updateJobs.put(getTrustJob);
+ } catch (InterruptedException ie1) {
+ /* the queue is unbounded so it should never block. */
+ }
+ }
}
/**
* The comment of the trust relation
*/
public void setTrust(OwnIdentity truster, Identity trustee, Integer score, String comment) {
- updateJobs.add(new SetTrustJob(truster, trustee, score, comment));
+ SetTrustJob setTrustJob = new SetTrustJob(truster, trustee, score, comment);
+ if (updateJobs.contains(setTrustJob)) {
+ updateJobs.remove(setTrustJob);
+ }
+ logger.log(Level.FINER, "Adding Trust Update Job: " + setTrustJob);
+ try {
+ updateJobs.put(setTrustJob);
+ } catch (InterruptedException e) {
+ /* the queue is unbounded so it should never block. */
+ }
}
//
if (shouldStop() || (updateJob == stopJob)) {
break;
}
+ logger.log(Level.FINE, "Running Trust Update Job: " + updateJob);
+ long startTime = System.currentTimeMillis();
updateJob.run();
+ long endTime = System.currentTimeMillis();
+ logger.log(Level.FINE, "Trust Update Job finished, took " + (endTime - startTime) + " ms.");
} catch (InterruptedException ie1) {
/* happens, ignore, loop. */
}
/* 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());
+ }
+
}
/**
*
* @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;
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);