MemoryDocumentIO implements DocumentWriter<MemoryType>,
		DocumentReader<MemoryType> { @Override public MemoryDocument getDocument(DatabaseQuery<MemoryType> q) { List<DatabaseDocument<MemoryType>> list = getDocuments(q, 1); if (list.size() == 0) { return null; } return (MemoryDocument) list.get(0); } MemoryDocumentIO(); @Override MemoryDocument getDocument(DatabaseQuery<MemoryType> q); @Override MemoryDocument getDocumentById(DocumentID<MemoryType> id); @Override DatabaseDocument<MemoryType> getDocumentById(DocumentID<MemoryType> id,
			boolean includeInactive); @Override TailableIterator<MemoryType> getInactiveIterator(); @SuppressWarnings("unchecked") @Override List<DatabaseDocument<MemoryType>> getDocuments(
			DatabaseQuery<MemoryType> q, int limit, int skip); @Override List<DatabaseDocument<MemoryType>> getDocuments(
			DatabaseQuery<MemoryType> q, int limit); @Override long getNumberOfDocuments(DatabaseQuery<MemoryType> q); @Override DocumentFile<MemoryType> getDocumentFile(
			DatabaseDocument<MemoryType> d, String fileName); @Override boolean deleteDocumentFile(DatabaseDocument<MemoryType> d,
			String fileName); @Override List<String> getDocumentFileNames(DatabaseDocument<MemoryType> d); @Override long getActiveDatabaseSize(); @Override long getInactiveDatabaseSize(); @Override MemoryDocument getAndTag(DatabaseQuery<MemoryType> query, String ... tag); @Override Collection<DatabaseDocument<MemoryType>> getAndTag(
			DatabaseQuery<MemoryType> query, int n, String ... tag); @Override boolean markTouched(DocumentID<MemoryType> id, String tag); @Override boolean markProcessed(DatabaseDocument<MemoryType> d, String stage); @Override boolean markDiscarded(DatabaseDocument<MemoryType> d, String stage); @Override boolean markFailed(DatabaseDocument<MemoryType> d, String stage); @Override boolean markPending(DatabaseDocument<MemoryType> d, String stage); @Override boolean insert(DatabaseDocument<MemoryType> d); @Override boolean insert(DatabaseDocument<MemoryType> d, List<DocumentFile<MemoryType>> attachments); @Override boolean update(DatabaseDocument<MemoryType> d); @Override void delete(DatabaseDocument<MemoryType> d); @Override void deleteAll(); @Override void write(DocumentFile<MemoryType> df); @Override void prepare(); @Override DocumentID<MemoryType> toDocumentId(Object jsonPrimitive); @Override DocumentID<MemoryType> toDocumentIdFromJson(String json); @Override TailableIterator<MemoryType> getInactiveIterator(
			DatabaseQuery<MemoryType> query); static final int inactiveSize; }
@Test public void testGetDocumentDatabaseQuery() { DatabaseQuery<MemoryType> dbq = new MemoryQuery(); dbq.requireContentFieldEquals("name", "test"); dbq.requireContentFieldEquals("number", 2); MemoryDocument d = io.getDocument(dbq); if (d == null) { fail("Did not find any documents matching query"); } if(d.isEqual(test) || !d.isEqual(test2)) { fail("Incorrect document returned"); } }