Fixed some bugs and some tests
This commit is contained in:
@ -254,7 +254,10 @@ public class BitmessageContext {
|
||||
public void addContact(BitmessageAddress contact) {
|
||||
ctx.getAddressRepository().save(contact);
|
||||
if (contact.getPubkey() == null) {
|
||||
ctx.requestPubkey(contact);
|
||||
BitmessageAddress stored = ctx.getAddressRepository().getAddress(contact.getAddress());
|
||||
if (stored.getPubkey() == null) {
|
||||
ctx.requestPubkey(contact);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -377,6 +377,18 @@ public class Plaintext implements Streamable {
|
||||
return extendedData;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public <T extends ExtendedEncoding.ExtendedType> T getExtendedData(Class<T> type) {
|
||||
ExtendedEncoding extendedData = getExtendedData();
|
||||
if (extendedData == null) {
|
||||
return null;
|
||||
}
|
||||
if (type == null || type.isInstance(extendedData.getContent())) {
|
||||
return (T) extendedData.getContent();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public List<InventoryVector> getParents() {
|
||||
if (Message.TYPE.equals(getExtendedData().getType())) {
|
||||
return ((Message) extendedData.getContent()).getParents();
|
||||
|
@ -37,15 +37,28 @@ public abstract class AbstractMessageRepository implements MessageRepository, In
|
||||
this.ctx = context;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated use {@link #saveContactIfNecessary(BitmessageAddress)} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
protected void safeSenderIfNecessary(Plaintext message) {
|
||||
if (message.getId() == null) {
|
||||
BitmessageAddress savedAddress = ctx.getAddressRepository().getAddress(message.getFrom().getAddress());
|
||||
saveContactIfNecessary(message.getFrom());
|
||||
}
|
||||
}
|
||||
|
||||
protected void saveContactIfNecessary(BitmessageAddress contact) {
|
||||
if (contact != null) {
|
||||
BitmessageAddress savedAddress = ctx.getAddressRepository().getAddress(contact.getAddress());
|
||||
if (savedAddress == null) {
|
||||
ctx.getAddressRepository().save(message.getFrom());
|
||||
} else if (savedAddress.getPubkey() == null && message.getFrom().getPubkey() != null) {
|
||||
savedAddress.setPubkey(message.getFrom().getPubkey());
|
||||
ctx.getAddressRepository().save(contact);
|
||||
} else if (savedAddress.getPubkey() == null && contact.getPubkey() != null) {
|
||||
savedAddress.setPubkey(contact.getPubkey());
|
||||
ctx.getAddressRepository().save(savedAddress);
|
||||
}
|
||||
if (savedAddress != null) {
|
||||
contact.setAlias(savedAddress.getAlias());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -95,7 +108,7 @@ public abstract class AbstractMessageRepository implements MessageRepository, In
|
||||
@Override
|
||||
public List<Plaintext> findMessagesToResend() {
|
||||
return find("status='" + Plaintext.Status.SENT.name() + "'" +
|
||||
" AND next_try < " + UnixTime.now());
|
||||
" AND next_try < " + UnixTime.now());
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -119,7 +132,7 @@ public abstract class AbstractMessageRepository implements MessageRepository, In
|
||||
return collection.iterator().next();
|
||||
default:
|
||||
throw new ApplicationException("This shouldn't happen, found " + collection.size() +
|
||||
" items, one or none was expected");
|
||||
" items, one or none was expected");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -52,6 +52,11 @@ public interface AddressRepository {
|
||||
*/
|
||||
List<BitmessageAddress> getContacts();
|
||||
|
||||
/**
|
||||
* Implementations must not delete cryptographic keys if they're not provided by <code>address</code>.
|
||||
*
|
||||
* @param address to save or update
|
||||
*/
|
||||
void save(BitmessageAddress address);
|
||||
|
||||
void remove(BitmessageAddress address);
|
||||
|
Reference in New Issue
Block a user