Turn AttachmentReader into a proper class

and inject it where needed
This commit is contained in:
Torsten Grote
2020-11-26 11:20:05 -03:00
parent 5aa041f9e1
commit fe7121b4ec
31 changed files with 166 additions and 135 deletions

View File

@@ -49,6 +49,7 @@ import org.briarproject.briar.api.forum.ForumManager;
import org.briarproject.briar.api.forum.ForumSharingManager;
import org.briarproject.briar.api.identity.AuthorManager;
import org.briarproject.briar.api.introduction.IntroductionManager;
import org.briarproject.briar.api.media.AttachmentReader;
import org.briarproject.briar.api.messaging.MessagingManager;
import org.briarproject.briar.api.messaging.PrivateMessageFactory;
import org.briarproject.briar.api.privategroup.GroupMessageFactory;
@@ -95,6 +96,8 @@ public interface AndroidComponent
IdentityManager identityManager();
AttachmentReader attachmentReader();
AuthorManager authorManager();
PluginManager pluginManager();

View File

@@ -35,7 +35,7 @@ import static org.briarproject.bramble.util.IoUtils.tryToClose;
import static org.briarproject.bramble.util.LogUtils.logDuration;
import static org.briarproject.bramble.util.LogUtils.logException;
import static org.briarproject.bramble.util.LogUtils.now;
import static org.briarproject.briar.api.messaging.MessagingConstants.MAX_IMAGE_SIZE;
import static org.briarproject.briar.api.media.MediaConstants.MAX_IMAGE_SIZE;
@NotNullByDefault
class AttachmentCreationTask {

View File

@@ -36,7 +36,7 @@ import static java.util.logging.Logger.getLogger;
import static org.briarproject.bramble.util.LogUtils.logException;
import static org.briarproject.briar.android.attachment.AttachmentItem.State.ERROR;
import static org.briarproject.briar.android.util.UiUtils.observeForeverOnce;
import static org.briarproject.briar.api.messaging.MessagingConstants.MAX_IMAGE_SIZE;
import static org.briarproject.briar.api.media.MediaConstants.MAX_IMAGE_SIZE;
@NotNullByDefault
class AttachmentCreatorImpl implements AttachmentCreator {

View File

@@ -8,7 +8,7 @@ import org.briarproject.bramble.api.sync.MessageId;
import org.briarproject.briar.android.attachment.AttachmentItem.State;
import org.briarproject.briar.api.media.Attachment;
import org.briarproject.briar.api.media.AttachmentHeader;
import org.briarproject.briar.api.messaging.MessagingManager;
import org.briarproject.briar.api.media.AttachmentReader;
import org.briarproject.briar.api.messaging.PrivateMessageHeader;
import java.io.BufferedInputStream;
@@ -43,7 +43,7 @@ class AttachmentRetrieverImpl implements AttachmentRetriever {
@DatabaseExecutor
private final Executor dbExecutor;
private final MessagingManager messagingManager;
private final AttachmentReader attachmentReader;
private final ImageHelper imageHelper;
private final ImageSizeCalculator imageSizeCalculator;
private final int defaultSize;
@@ -57,11 +57,10 @@ class AttachmentRetrieverImpl implements AttachmentRetriever {
@Inject
AttachmentRetrieverImpl(@DatabaseExecutor Executor dbExecutor,
MessagingManager messagingManager,
AttachmentDimensions dimensions, ImageHelper imageHelper,
ImageSizeCalculator imageSizeCalculator) {
AttachmentReader attachmentReader, AttachmentDimensions dimensions,
ImageHelper imageHelper, ImageSizeCalculator imageSizeCalculator) {
this.dbExecutor = dbExecutor;
this.messagingManager = messagingManager;
this.attachmentReader = attachmentReader;
this.imageHelper = imageHelper;
this.imageSizeCalculator = imageSizeCalculator;
defaultSize = dimensions.defaultSize;
@@ -75,7 +74,7 @@ class AttachmentRetrieverImpl implements AttachmentRetriever {
@DatabaseExecutor
public Attachment getMessageAttachment(AttachmentHeader h)
throws DbException {
return messagingManager.getAttachment(h);
return attachmentReader.getAttachment(h);
}
@Override
@@ -86,13 +85,11 @@ class AttachmentRetrieverImpl implements AttachmentRetriever {
boolean needsSize = headers.size() == 1;
for (AttachmentHeader h : headers) {
// try cache for existing item live data
MutableLiveData<AttachmentItem> liveData;
if (needsSize) liveData = itemsWithSize.get(h.getMessageId());
else {
// try items with size first, as they work as well
liveData = itemsWithSize.get(h.getMessageId());
if (liveData == null)
liveData = itemsWithoutSize.get(h.getMessageId());
MutableLiveData<AttachmentItem> liveData =
itemsWithSize.get(h.getMessageId());
if (!needsSize && liveData == null) {
// check cache for items that don't need the size
liveData = itemsWithoutSize.get(h.getMessageId());
}
// create new live data with LOADING item if cache miss
@@ -131,7 +128,7 @@ class AttachmentRetrieverImpl implements AttachmentRetriever {
// If a live data is already cached we don't need to do anything
if (itemsWithSize.containsKey(h.getMessageId())) return;
try {
Attachment a = messagingManager.getAttachment(h);
Attachment a = attachmentReader.getAttachment(h);
AttachmentItem item = createAttachmentItem(a, true);
MutableLiveData<AttachmentItem> liveData =
new MutableLiveData<>(item);
@@ -173,7 +170,7 @@ class AttachmentRetrieverImpl implements AttachmentRetriever {
Attachment a;
AttachmentItem item;
try {
a = messagingManager.getAttachment(h);
a = attachmentReader.getAttachment(h);
item = createAttachmentItem(a, needsSize);
} catch (NoSuchMessageException e) {
LOG.info("Attachment not received yet");

View File

@@ -21,7 +21,7 @@ import org.briarproject.briar.android.viewmodel.DbViewModel;
import org.briarproject.briar.android.viewmodel.LiveEvent;
import org.briarproject.briar.android.viewmodel.MutableLiveEvent;
import org.briarproject.briar.api.media.Attachment;
import org.briarproject.briar.api.messaging.MessagingManager;
import org.briarproject.briar.api.media.AttachmentReader;
import org.briarproject.briar.api.messaging.event.AttachmentReceivedEvent;
import java.io.File;
@@ -56,7 +56,7 @@ public class ImageViewModel extends DbViewModel implements EventListener {
private static final Logger LOG = getLogger(ImageViewModel.class.getName());
private final MessagingManager messagingManager;
private final AttachmentReader attachmentReader;
private final EventBus eventBus;
@IoExecutor
private final Executor ioExecutor;
@@ -75,16 +75,13 @@ public class ImageViewModel extends DbViewModel implements EventListener {
private int toolbarTop, toolbarBottom;
@Inject
ImageViewModel(Application application,
MessagingManager messagingManager,
EventBus eventBus,
@DatabaseExecutor Executor dbExecutor,
LifecycleManager lifecycleManager,
ImageViewModel(Application application, AttachmentReader attachmentReader,
EventBus eventBus, @DatabaseExecutor Executor dbExecutor,LifecycleManager lifecycleManager,
TransactionManager db,
AndroidExecutor androidExecutor,
@IoExecutor Executor ioExecutor) {
super(application, dbExecutor, lifecycleManager, db, androidExecutor);
this.messagingManager = messagingManager;
this.attachmentReader = attachmentReader;
this.eventBus = eventBus;
this.ioExecutor = ioExecutor;
@@ -202,7 +199,7 @@ public class ImageViewModel extends DbViewModel implements EventListener {
runOnDbThread(() -> {
try {
Attachment a =
messagingManager.getAttachment(attachment.getHeader());
attachmentReader.getAttachment(attachment.getHeader());
copyImageFromDb(a, osp, afterCopy);
} catch (DbException e) {
logException(LOG, WARNING, e);

View File

@@ -4,13 +4,12 @@ import com.bumptech.glide.Priority;
import com.bumptech.glide.load.DataSource;
import com.bumptech.glide.load.data.DataFetcher;
import org.briarproject.bramble.api.client.ClientHelper;
import org.briarproject.bramble.api.db.DatabaseExecutor;
import org.briarproject.bramble.api.db.DbException;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.briar.android.attachment.AttachmentItem;
import org.briarproject.briar.api.media.Attachment;
import org.briarproject.briar.media.AttachmentReader;
import org.briarproject.briar.api.media.AttachmentReader;
import java.io.InputStream;
import java.util.concurrent.Executor;
@@ -31,7 +30,7 @@ class BriarDataFetcher implements DataFetcher<InputStream> {
private final static Logger LOG =
getLogger(BriarDataFetcher.class.getName());
private final ClientHelper clientHelper;
private final AttachmentReader attachmentReader;
@DatabaseExecutor
private final Executor dbExecutor;
private final AttachmentItem attachment;
@@ -41,9 +40,9 @@ class BriarDataFetcher implements DataFetcher<InputStream> {
private volatile boolean cancel = false;
@Inject
BriarDataFetcher(ClientHelper clientHelper,
BriarDataFetcher(AttachmentReader attachmentReader,
@DatabaseExecutor Executor dbExecutor, AttachmentItem attachment) {
this.clientHelper = clientHelper;
this.attachmentReader = attachmentReader;
this.dbExecutor = dbExecutor;
this.attachment = attachment;
}
@@ -54,8 +53,8 @@ class BriarDataFetcher implements DataFetcher<InputStream> {
dbExecutor.execute(() -> {
if (cancel) return;
try {
Attachment a = AttachmentReader
.getAttachment(clientHelper, attachment.getHeader());
Attachment a =
attachmentReader.getAttachment(attachment.getHeader());
inputStream = a.getStream();
callback.onDataReady(inputStream);
} catch (DbException e) {

View File

@@ -1,9 +1,9 @@
package org.briarproject.briar.android.conversation.glide;
import org.briarproject.bramble.api.client.ClientHelper;
import org.briarproject.bramble.api.db.DatabaseExecutor;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.briar.android.attachment.AttachmentItem;
import org.briarproject.briar.api.media.AttachmentReader;
import java.util.concurrent.Executor;
@@ -12,19 +12,19 @@ import javax.inject.Inject;
@NotNullByDefault
public class BriarDataFetcherFactory {
private final ClientHelper clientHelper;
private final AttachmentReader attachmentReader;
@DatabaseExecutor
private final Executor dbExecutor;
@Inject
public BriarDataFetcherFactory(ClientHelper clientHelper,
public BriarDataFetcherFactory(AttachmentReader attachmentReader,
@DatabaseExecutor Executor dbExecutor) {
this.clientHelper = clientHelper;
this.attachmentReader = attachmentReader;
this.dbExecutor = dbExecutor;
}
BriarDataFetcher createBriarDataFetcher(AttachmentItem model) {
return new BriarDataFetcher(clientHelper, dbExecutor, model);
return new BriarDataFetcher(attachmentReader, dbExecutor, model);
}
}

View File

@@ -5,7 +5,7 @@ import org.briarproject.bramble.test.BrambleMockTestCase;
import org.briarproject.bramble.test.ImmediateExecutor;
import org.briarproject.briar.api.media.Attachment;
import org.briarproject.briar.api.media.AttachmentHeader;
import org.briarproject.briar.api.messaging.MessagingManager;
import org.briarproject.briar.api.media.AttachmentReader;
import org.jmock.Expectations;
import org.jmock.lib.legacy.ClassImposteriser;
import org.junit.Test;
@@ -32,11 +32,11 @@ public class AttachmentRetrieverTest extends BrambleMockTestCase {
public AttachmentRetrieverTest() {
context.setImposteriser(ClassImposteriser.INSTANCE);
MessagingManager messagingManager =
context.mock(MessagingManager.class);
AttachmentReader attachmentReader =
context.mock(AttachmentReader.class);
imageSizeCalculator = context.mock(ImageSizeCalculator.class);
Executor dbExecutor = new ImmediateExecutor();
retriever = new AttachmentRetrieverImpl(dbExecutor, messagingManager,
retriever = new AttachmentRetrieverImpl(dbExecutor, attachmentReader,
dimensions, imageHelper, imageSizeCalculator);
}

View File

@@ -5,7 +5,6 @@ import org.briarproject.bramble.api.db.DbException;
import org.briarproject.bramble.api.db.Transaction;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.sync.ClientId;
import org.briarproject.briar.api.media.Attachment;
import org.briarproject.briar.api.media.AttachmentHeader;
import java.io.IOException;
@@ -51,9 +50,4 @@ public interface AvatarManager {
*/
@Nullable
AttachmentHeader getMyAvatarHeader(Transaction txn) throws DbException;
/**
* Returns the profile image attachment for the given header.
*/
Attachment getAvatar(AttachmentHeader h) throws DbException;
}

View File

@@ -0,0 +1,16 @@
package org.briarproject.briar.api.media;
import org.briarproject.bramble.api.db.DbException;
public interface AttachmentReader {
/**
* Returns the attachment with the given attachment header.
*
* @throws InvalidAttachmentException If the header refers to a message
* that is not an attachment, or to an attachment that does not have the
* expected content type
*/
Attachment getAttachment(AttachmentHeader h) throws DbException;
}

View File

@@ -11,4 +11,11 @@ import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
*/
@NotNullByDefault
public class InvalidAttachmentException extends DbException {
public InvalidAttachmentException() {
super();
}
public InvalidAttachmentException(Throwable t) {
super(t);
}
}

View File

@@ -0,0 +1,21 @@
package org.briarproject.briar.api.media;
import static org.briarproject.bramble.api.sync.SyncConstants.MAX_MESSAGE_BODY_LENGTH;
public interface MediaConstants {
// Metadata keys for messages
String MSG_KEY_CONTENT_TYPE = "contentType";
String MSG_KEY_DESCRIPTOR_LENGTH = "descriptorLength";
/**
* The maximum length of an attachment's content type in UTF-8 bytes.
*/
int MAX_CONTENT_TYPE_BYTES = 50;
/**
* The maximum allowed size of image attachments.
* TODO: Different limit for GIFs?
*/
int MAX_IMAGE_SIZE = MAX_MESSAGE_BODY_LENGTH - 100; // 6 * 1024 * 1024;
}

View File

@@ -14,15 +14,4 @@ public interface MessagingConstants {
*/
int MAX_ATTACHMENTS_PER_MESSAGE = 10;
/**
* The maximum length of an attachment's content type in UTF-8 bytes.
*/
int MAX_CONTENT_TYPE_BYTES = 50;
/**
* The maximum allowed size of image attachments.
* TODO: Different limit for GIFs?
*/
int MAX_IMAGE_SIZE = MAX_MESSAGE_BODY_LENGTH - 100; // 6 * 1024 * 1024;
}

View File

@@ -8,10 +8,8 @@ import org.briarproject.bramble.api.sync.ClientId;
import org.briarproject.bramble.api.sync.GroupId;
import org.briarproject.bramble.api.sync.MessageId;
import org.briarproject.briar.api.conversation.ConversationManager.ConversationClient;
import org.briarproject.briar.api.media.Attachment;
import org.briarproject.briar.api.media.AttachmentHeader;
import org.briarproject.briar.api.media.FileTooBigException;
import org.briarproject.briar.api.media.InvalidAttachmentException;
import java.io.IOException;
import java.io.InputStream;
@@ -71,15 +69,6 @@ public interface MessagingManager extends ConversationClient {
@Nullable
String getMessageText(MessageId m) throws DbException;
/**
* Returns the attachment with the given attachment header.
*
* @throws InvalidAttachmentException If the header refers to a message
* that is not an attachment, or to an attachment that does not have the
* expected content type
*/
Attachment getAttachment(AttachmentHeader h) throws DbException;
/**
* Returns true if the contact with the given {@link ContactId} does support
* image attachments.

View File

@@ -9,7 +9,7 @@ import static org.briarproject.bramble.test.TestUtils.getRandomId;
import static org.briarproject.bramble.util.StringUtils.getRandomString;
import static org.briarproject.briar.api.identity.AuthorInfo.Status.NONE;
import static org.briarproject.briar.api.identity.AuthorInfo.Status.VERIFIED;
import static org.briarproject.briar.api.messaging.MessagingConstants.MAX_CONTENT_TYPE_BYTES;
import static org.briarproject.briar.api.media.MediaConstants.MAX_CONTENT_TYPE_BYTES;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;

View File

@@ -8,6 +8,7 @@ import org.briarproject.briar.feed.FeedModule;
import org.briarproject.briar.forum.ForumModule;
import org.briarproject.briar.identity.IdentityModule;
import org.briarproject.briar.introduction.IntroductionModule;
import org.briarproject.briar.media.MediaModule;
import org.briarproject.briar.messaging.MessagingModule;
import org.briarproject.briar.privategroup.PrivateGroupModule;
import org.briarproject.briar.privategroup.invitation.GroupInvitationModule;
@@ -26,6 +27,7 @@ import dagger.Module;
GroupInvitationModule.class,
IdentityModule.class,
IntroductionModule.class,
MediaModule.class,
MessagingModule.class,
PrivateGroupModule.class,
SharingModule.class,

View File

@@ -30,10 +30,8 @@ import org.briarproject.bramble.api.versioning.ClientVersioningManager;
import org.briarproject.bramble.api.versioning.ClientVersioningManager.ClientVersioningHook;
import org.briarproject.briar.api.avatar.AvatarManager;
import org.briarproject.briar.api.avatar.event.AvatarUpdatedEvent;
import org.briarproject.briar.api.media.Attachment;
import org.briarproject.briar.api.media.AttachmentHeader;
import org.briarproject.briar.api.media.FileTooBigException;
import org.briarproject.briar.media.AttachmentReader;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@@ -49,8 +47,8 @@ import static org.briarproject.bramble.util.IoUtils.copyAndClose;
import static org.briarproject.briar.avatar.AvatarConstants.GROUP_KEY_CONTACT_ID;
import static org.briarproject.briar.avatar.AvatarConstants.MSG_KEY_VERSION;
import static org.briarproject.briar.avatar.AvatarConstants.MSG_TYPE_UPDATE;
import static org.briarproject.briar.media.MediaConstants.MSG_KEY_CONTENT_TYPE;
import static org.briarproject.briar.media.MediaConstants.MSG_KEY_DESCRIPTOR_LENGTH;
import static org.briarproject.briar.api.media.MediaConstants.MSG_KEY_CONTENT_TYPE;
import static org.briarproject.briar.api.media.MediaConstants.MSG_KEY_DESCRIPTOR_LENGTH;
@Immutable
@NotNullByDefault
@@ -249,11 +247,6 @@ class AvatarManagerImpl implements AvatarManager, OpenDatabaseHook, ContactHook,
return new AttachmentHeader(latest.messageId, latest.contentType);
}
@Override
public Attachment getAvatar(AttachmentHeader h) throws DbException {
return AttachmentReader.getAttachment(clientHelper, h);
}
@Nullable
private LatestUpdate findLatest(Transaction txn, GroupId g)
throws DbException, FormatException {

View File

@@ -26,11 +26,11 @@ import static org.briarproject.bramble.api.sync.SyncConstants.MAX_MESSAGE_BODY_L
import static org.briarproject.bramble.api.transport.TransportConstants.MAX_CLOCK_DIFFERENCE;
import static org.briarproject.bramble.util.ValidationUtils.checkLength;
import static org.briarproject.bramble.util.ValidationUtils.checkSize;
import static org.briarproject.briar.api.messaging.MessagingConstants.MAX_CONTENT_TYPE_BYTES;
import static org.briarproject.briar.api.media.MediaConstants.MAX_CONTENT_TYPE_BYTES;
import static org.briarproject.briar.avatar.AvatarConstants.MSG_KEY_VERSION;
import static org.briarproject.briar.avatar.AvatarConstants.MSG_TYPE_UPDATE;
import static org.briarproject.briar.media.MediaConstants.MSG_KEY_CONTENT_TYPE;
import static org.briarproject.briar.media.MediaConstants.MSG_KEY_DESCRIPTOR_LENGTH;
import static org.briarproject.briar.api.media.MediaConstants.MSG_KEY_CONTENT_TYPE;
import static org.briarproject.briar.api.media.MediaConstants.MSG_KEY_DESCRIPTOR_LENGTH;
@Immutable
@NotNullByDefault

View File

@@ -7,18 +7,28 @@ import org.briarproject.bramble.api.db.DbException;
import org.briarproject.bramble.api.sync.MessageId;
import org.briarproject.briar.api.media.Attachment;
import org.briarproject.briar.api.media.AttachmentHeader;
import org.briarproject.briar.api.media.AttachmentReader;
import org.briarproject.briar.api.media.InvalidAttachmentException;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import static org.briarproject.briar.media.MediaConstants.MSG_KEY_CONTENT_TYPE;
import static org.briarproject.briar.media.MediaConstants.MSG_KEY_DESCRIPTOR_LENGTH;
import javax.inject.Inject;
public class AttachmentReader {
import static org.briarproject.briar.api.media.MediaConstants.MSG_KEY_CONTENT_TYPE;
import static org.briarproject.briar.api.media.MediaConstants.MSG_KEY_DESCRIPTOR_LENGTH;
public static Attachment getAttachment(ClientHelper clientHelper,
AttachmentHeader h) throws DbException {
public class AttachmentReaderImpl implements AttachmentReader {
private final ClientHelper clientHelper;
@Inject
public AttachmentReaderImpl(ClientHelper clientHelper) {
this.clientHelper = clientHelper;
}
@Override
public Attachment getAttachment(AttachmentHeader h) throws DbException {
// TODO: Support large messages
MessageId m = h.getMessageId();
byte[] body = clientHelper.getMessage(m).getBody();
@@ -27,17 +37,12 @@ public class AttachmentReader {
String contentType = meta.getString(MSG_KEY_CONTENT_TYPE);
if (!contentType.equals(h.getContentType()))
throw new InvalidAttachmentException();
int offset;
try {
offset = meta.getLong(MSG_KEY_DESCRIPTOR_LENGTH).intValue();
} catch (FormatException e) {
throw new InvalidAttachmentException();
}
int offset = meta.getLong(MSG_KEY_DESCRIPTOR_LENGTH).intValue();
InputStream stream = new ByteArrayInputStream(body, offset,
body.length - offset);
return new Attachment(h, stream);
} catch (FormatException e) {
throw new DbException(e);
throw new InvalidAttachmentException(e);
}
}

View File

@@ -1,8 +0,0 @@
package org.briarproject.briar.media;
public interface MediaConstants {
// Metadata keys for messages
String MSG_KEY_CONTENT_TYPE = "contentType";
String MSG_KEY_DESCRIPTOR_LENGTH = "descriptorLength";
}

View File

@@ -0,0 +1,20 @@
package org.briarproject.briar.media;
import org.briarproject.briar.api.media.AttachmentReader;
import javax.inject.Singleton;
import dagger.Module;
import dagger.Provides;
@Module
public class MediaModule {
@Provides
@Singleton
AttachmentReader provideAttachmentReader(
AttachmentReaderImpl attachmentReader) {
return attachmentReader;
}
}

View File

@@ -32,7 +32,6 @@ import org.briarproject.briar.api.client.MessageTracker.GroupCount;
import org.briarproject.briar.api.conversation.ConversationManager.ConversationClient;
import org.briarproject.briar.api.conversation.ConversationMessageHeader;
import org.briarproject.briar.api.conversation.DeletionResult;
import org.briarproject.briar.api.media.Attachment;
import org.briarproject.briar.api.media.AttachmentHeader;
import org.briarproject.briar.api.media.FileTooBigException;
import org.briarproject.briar.api.messaging.MessagingManager;
@@ -40,7 +39,6 @@ import org.briarproject.briar.api.messaging.PrivateMessage;
import org.briarproject.briar.api.messaging.PrivateMessageHeader;
import org.briarproject.briar.api.messaging.event.AttachmentReceivedEvent;
import org.briarproject.briar.api.messaging.event.PrivateMessageReceivedEvent;
import org.briarproject.briar.media.AttachmentReader;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@@ -60,8 +58,8 @@ import static org.briarproject.bramble.api.sync.SyncConstants.MAX_MESSAGE_BODY_L
import static org.briarproject.bramble.api.sync.validation.MessageState.DELIVERED;
import static org.briarproject.bramble.util.IoUtils.copyAndClose;
import static org.briarproject.briar.client.MessageTrackerConstants.MSG_KEY_READ;
import static org.briarproject.briar.media.MediaConstants.MSG_KEY_CONTENT_TYPE;
import static org.briarproject.briar.media.MediaConstants.MSG_KEY_DESCRIPTOR_LENGTH;
import static org.briarproject.briar.api.media.MediaConstants.MSG_KEY_CONTENT_TYPE;
import static org.briarproject.briar.api.media.MediaConstants.MSG_KEY_DESCRIPTOR_LENGTH;
import static org.briarproject.briar.messaging.MessageTypes.ATTACHMENT;
import static org.briarproject.briar.messaging.MessageTypes.PRIVATE_MESSAGE;
import static org.briarproject.briar.messaging.MessagingConstants.GROUP_KEY_CONTACT_ID;
@@ -399,11 +397,6 @@ class MessagingManagerImpl implements MessagingManager, IncomingMessageHook,
}
}
@Override
public Attachment getAttachment(AttachmentHeader h) throws DbException {
return AttachmentReader.getAttachment(clientHelper, h);
}
@Override
public boolean contactSupportsImages(Transaction txn, ContactId c)
throws DbException {

View File

@@ -29,11 +29,11 @@ import static org.briarproject.bramble.api.transport.TransportConstants.MAX_CLOC
import static org.briarproject.bramble.util.ValidationUtils.checkLength;
import static org.briarproject.bramble.util.ValidationUtils.checkSize;
import static org.briarproject.briar.api.messaging.MessagingConstants.MAX_ATTACHMENTS_PER_MESSAGE;
import static org.briarproject.briar.api.messaging.MessagingConstants.MAX_CONTENT_TYPE_BYTES;
import static org.briarproject.briar.api.media.MediaConstants.MAX_CONTENT_TYPE_BYTES;
import static org.briarproject.briar.api.messaging.MessagingConstants.MAX_PRIVATE_MESSAGE_TEXT_LENGTH;
import static org.briarproject.briar.client.MessageTrackerConstants.MSG_KEY_READ;
import static org.briarproject.briar.media.MediaConstants.MSG_KEY_CONTENT_TYPE;
import static org.briarproject.briar.media.MediaConstants.MSG_KEY_DESCRIPTOR_LENGTH;
import static org.briarproject.briar.api.media.MediaConstants.MSG_KEY_CONTENT_TYPE;
import static org.briarproject.briar.api.media.MediaConstants.MSG_KEY_DESCRIPTOR_LENGTH;
import static org.briarproject.briar.messaging.MessageTypes.ATTACHMENT;
import static org.briarproject.briar.messaging.MessageTypes.PRIVATE_MESSAGE;
import static org.briarproject.briar.messaging.MessagingConstants.MSG_KEY_ATTACHMENT_HEADERS;

View File

@@ -53,12 +53,12 @@ import static org.briarproject.bramble.test.TestUtils.getRandomId;
import static org.briarproject.bramble.util.StringUtils.getRandomString;
import static org.briarproject.briar.api.avatar.AvatarManager.CLIENT_ID;
import static org.briarproject.briar.api.avatar.AvatarManager.MAJOR_VERSION;
import static org.briarproject.briar.api.messaging.MessagingConstants.MAX_CONTENT_TYPE_BYTES;
import static org.briarproject.briar.api.media.MediaConstants.MAX_CONTENT_TYPE_BYTES;
import static org.briarproject.briar.avatar.AvatarConstants.GROUP_KEY_CONTACT_ID;
import static org.briarproject.briar.avatar.AvatarConstants.MSG_KEY_VERSION;
import static org.briarproject.briar.avatar.AvatarConstants.MSG_TYPE_UPDATE;
import static org.briarproject.briar.media.MediaConstants.MSG_KEY_CONTENT_TYPE;
import static org.briarproject.briar.media.MediaConstants.MSG_KEY_DESCRIPTOR_LENGTH;
import static org.briarproject.briar.api.media.MediaConstants.MSG_KEY_CONTENT_TYPE;
import static org.briarproject.briar.api.media.MediaConstants.MSG_KEY_DESCRIPTOR_LENGTH;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;

View File

@@ -4,6 +4,7 @@ import org.briarproject.bramble.test.TestDatabaseConfigModule;
import org.briarproject.briar.api.avatar.AvatarManager;
import org.briarproject.briar.api.media.Attachment;
import org.briarproject.briar.api.media.AttachmentHeader;
import org.briarproject.briar.api.media.AttachmentReader;
import org.briarproject.briar.test.BriarIntegrationTest;
import org.briarproject.briar.test.BriarIntegrationTestComponent;
import org.briarproject.briar.test.DaggerBriarIntegrationTestComponent;
@@ -17,7 +18,7 @@ import java.io.InputStream;
import static org.briarproject.bramble.test.TestUtils.getRandomBytes;
import static org.briarproject.bramble.util.IoUtils.copyAndClose;
import static org.briarproject.bramble.util.StringUtils.getRandomString;
import static org.briarproject.briar.api.messaging.MessagingConstants.MAX_CONTENT_TYPE_BYTES;
import static org.briarproject.briar.api.media.MediaConstants.MAX_CONTENT_TYPE_BYTES;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
@@ -27,6 +28,7 @@ public class AvatarManagerIntegrationTest
extends BriarIntegrationTest<BriarIntegrationTestComponent> {
private AvatarManager avatarManager0, avatarManager1;
private AttachmentReader attachmentReader0, attachmentReader1;
private final String contentType = getRandomString(MAX_CONTENT_TYPE_BYTES);
@@ -36,6 +38,8 @@ public class AvatarManagerIntegrationTest
super.setUp();
avatarManager0 = c0.getAvatarManager();
avatarManager1 = c1.getAvatarManager();
attachmentReader0 = c0.getAttachmentReader();
attachmentReader1 = c1.getAttachmentReader();
}
@Override
@@ -90,7 +94,7 @@ public class AvatarManagerIntegrationTest
assertNotNull(header0.getMessageId());
// 0 can retrieve their own avatar
Attachment attachment0 = avatarManager0.getAvatar(header0);
Attachment attachment0 = attachmentReader0.getAttachment(header0);
assertEquals(contentType, attachment0.getHeader().getContentType());
assertStreamMatches(avatar0bytes, attachment0.getStream());
@@ -105,7 +109,8 @@ public class AvatarManagerIntegrationTest
assertNotNull(header0From1.getMessageId());
// 1 can retrieve 0's avatar
Attachment attachment0From1 = avatarManager1.getAvatar(header0From1);
Attachment attachment0From1 =
attachmentReader1.getAttachment(header0From1);
assertEquals(contentType,
attachment0From1.getHeader().getContentType());
assertStreamMatches(avatar0bytes, attachment0From1.getStream());
@@ -127,7 +132,8 @@ public class AvatarManagerIntegrationTest
assertNotNull(header1From0.getMessageId());
// 0 can retrieve 1's avatar
Attachment attachment1From0 = avatarManager0.getAvatar(header1From0);
Attachment attachment1From0 =
attachmentReader0.getAttachment(header1From0);
assertEquals(contentType1,
attachment1From0.getHeader().getContentType());
assertStreamMatches(avatar1bytes, attachment1From0.getStream());
@@ -144,7 +150,7 @@ public class AvatarManagerIntegrationTest
AttachmentHeader header0 = db0.transactionWithResult(true,
txn -> avatarManager0.getMyAvatarHeader(txn));
assertNotNull(header0);
Attachment attachment0 = avatarManager0.getAvatar(header0);
Attachment attachment0 = attachmentReader0.getAttachment(header0);
assertStreamMatches(avatar0bytes, attachment0.getStream());
// send the avatar from 0 to 1
@@ -154,7 +160,8 @@ public class AvatarManagerIntegrationTest
AttachmentHeader header0From1 = db1.transactionWithNullableResult(true,
txn -> avatarManager1.getAvatarHeader(txn, contact0From1));
assertNotNull(header0From1);
Attachment attachment0From1 = avatarManager1.getAvatar(header0From1);
Attachment attachment0From1 =
attachmentReader1.getAttachment(header0From1);
assertStreamMatches(avatar0bytes, attachment0From1.getStream());
// 0 adds a new avatar
@@ -167,7 +174,7 @@ public class AvatarManagerIntegrationTest
header0 = db0.transactionWithResult(true,
txn -> avatarManager0.getMyAvatarHeader(txn));
assertNotNull(header0);
attachment0 = avatarManager0.getAvatar(header0);
attachment0 = attachmentReader0.getAttachment(header0);
assertStreamMatches(avatar0bytes2, attachment0.getStream());
// send the new avatar from 0 to 1
@@ -177,7 +184,7 @@ public class AvatarManagerIntegrationTest
header0From1 = db1.transactionWithNullableResult(true,
txn -> avatarManager1.getAvatarHeader(txn, contact0From1));
assertNotNull(header0From1);
attachment0From1 = avatarManager1.getAvatar(header0From1);
attachment0From1 = attachmentReader1.getAttachment(header0From1);
assertStreamMatches(avatar0bytes2, attachment0From1.getStream());
}

View File

@@ -23,11 +23,11 @@ import static org.briarproject.bramble.test.TestUtils.getClientId;
import static org.briarproject.bramble.test.TestUtils.getGroup;
import static org.briarproject.bramble.test.TestUtils.getMessage;
import static org.briarproject.bramble.util.StringUtils.getRandomString;
import static org.briarproject.briar.api.messaging.MessagingConstants.MAX_CONTENT_TYPE_BYTES;
import static org.briarproject.briar.api.media.MediaConstants.MAX_CONTENT_TYPE_BYTES;
import static org.briarproject.briar.avatar.AvatarConstants.MSG_KEY_VERSION;
import static org.briarproject.briar.avatar.AvatarConstants.MSG_TYPE_UPDATE;
import static org.briarproject.briar.media.MediaConstants.MSG_KEY_CONTENT_TYPE;
import static org.briarproject.briar.media.MediaConstants.MSG_KEY_DESCRIPTOR_LENGTH;
import static org.briarproject.briar.api.media.MediaConstants.MSG_KEY_CONTENT_TYPE;
import static org.briarproject.briar.api.media.MediaConstants.MSG_KEY_DESCRIPTOR_LENGTH;
import static org.junit.Assert.assertEquals;
public class AvatarValidatorTest extends BrambleMockTestCase {

View File

@@ -30,7 +30,7 @@ import static org.briarproject.briar.api.identity.AuthorInfo.Status.OURSELVES;
import static org.briarproject.briar.api.identity.AuthorInfo.Status.UNKNOWN;
import static org.briarproject.briar.api.identity.AuthorInfo.Status.UNVERIFIED;
import static org.briarproject.briar.api.identity.AuthorInfo.Status.VERIFIED;
import static org.briarproject.briar.api.messaging.MessagingConstants.MAX_CONTENT_TYPE_BYTES;
import static org.briarproject.briar.api.media.MediaConstants.MAX_CONTENT_TYPE_BYTES;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;

View File

@@ -7,6 +7,7 @@ import org.briarproject.briar.blog.BlogModule;
import org.briarproject.briar.client.BriarClientModule;
import org.briarproject.briar.forum.ForumModule;
import org.briarproject.briar.identity.IdentityModule;
import org.briarproject.briar.media.MediaModule;
import org.briarproject.briar.messaging.MessagingModule;
import org.briarproject.briar.privategroup.PrivateGroupModule;
import org.briarproject.briar.privategroup.invitation.GroupInvitationModule;
@@ -28,6 +29,7 @@ import dagger.Component;
GroupInvitationModule.class,
IdentityModule.class,
IntroductionModule.class,
MediaModule.class,
MessagingModule.class,
PrivateGroupModule.class,
SharingModule.class

View File

@@ -26,7 +26,7 @@ import static org.briarproject.bramble.test.TestUtils.getRandomId;
import static org.briarproject.bramble.util.StringUtils.getRandomString;
import static org.briarproject.briar.api.forum.ForumConstants.MAX_FORUM_POST_TEXT_LENGTH;
import static org.briarproject.briar.api.messaging.MessagingConstants.MAX_ATTACHMENTS_PER_MESSAGE;
import static org.briarproject.briar.api.messaging.MessagingConstants.MAX_CONTENT_TYPE_BYTES;
import static org.briarproject.briar.api.media.MediaConstants.MAX_CONTENT_TYPE_BYTES;
import static org.briarproject.briar.api.messaging.MessagingConstants.MAX_PRIVATE_MESSAGE_TEXT_LENGTH;
import static org.junit.Assert.assertTrue;

View File

@@ -28,11 +28,11 @@ import static org.briarproject.bramble.test.TestUtils.getRandomBytes;
import static org.briarproject.bramble.test.TestUtils.getRandomId;
import static org.briarproject.bramble.util.StringUtils.getRandomString;
import static org.briarproject.briar.api.messaging.MessagingConstants.MAX_ATTACHMENTS_PER_MESSAGE;
import static org.briarproject.briar.api.messaging.MessagingConstants.MAX_CONTENT_TYPE_BYTES;
import static org.briarproject.briar.api.media.MediaConstants.MAX_CONTENT_TYPE_BYTES;
import static org.briarproject.briar.api.messaging.MessagingConstants.MAX_PRIVATE_MESSAGE_TEXT_LENGTH;
import static org.briarproject.briar.client.MessageTrackerConstants.MSG_KEY_READ;
import static org.briarproject.briar.media.MediaConstants.MSG_KEY_CONTENT_TYPE;
import static org.briarproject.briar.media.MediaConstants.MSG_KEY_DESCRIPTOR_LENGTH;
import static org.briarproject.briar.api.media.MediaConstants.MSG_KEY_CONTENT_TYPE;
import static org.briarproject.briar.api.media.MediaConstants.MSG_KEY_DESCRIPTOR_LENGTH;
import static org.briarproject.briar.messaging.MessageTypes.ATTACHMENT;
import static org.briarproject.briar.messaging.MessageTypes.PRIVATE_MESSAGE;
import static org.briarproject.briar.messaging.MessagingConstants.MSG_KEY_ATTACHMENT_HEADERS;

View File

@@ -21,6 +21,7 @@ import org.briarproject.briar.api.conversation.ConversationManager;
import org.briarproject.briar.api.forum.ForumManager;
import org.briarproject.briar.api.forum.ForumSharingManager;
import org.briarproject.briar.api.introduction.IntroductionManager;
import org.briarproject.briar.api.media.AttachmentReader;
import org.briarproject.briar.api.messaging.MessagingManager;
import org.briarproject.briar.api.messaging.PrivateMessageFactory;
import org.briarproject.briar.api.privategroup.PrivateGroupManager;
@@ -31,6 +32,7 @@ import org.briarproject.briar.client.BriarClientModule;
import org.briarproject.briar.forum.ForumModule;
import org.briarproject.briar.identity.IdentityModule;
import org.briarproject.briar.introduction.IntroductionModule;
import org.briarproject.briar.media.MediaModule;
import org.briarproject.briar.messaging.MessagingModule;
import org.briarproject.briar.privategroup.PrivateGroupModule;
import org.briarproject.briar.privategroup.invitation.GroupInvitationModule;
@@ -51,6 +53,7 @@ import dagger.Component;
GroupInvitationModule.class,
IdentityModule.class,
IntroductionModule.class,
MediaModule.class,
MessagingModule.class,
PrivateGroupModule.class,
SharingModule.class
@@ -84,6 +87,8 @@ public interface BriarIntegrationTestComponent
IdentityManager getIdentityManager();
AttachmentReader getAttachmentReader();
AvatarManager getAvatarManager();
ClientHelper getClientHelper();